Сборка пакета с git submodule: различия между версиями

Материал из ALT Linux Wiki
(Новая страница: «Описание проблемы. В последнее время в апстримах стало популярным использовать submodule в git ...»)
 
Нет описания правки
Строка 17: Строка 17:


== Ссылки ==
== Ссылки ==
* [https://bugzilla.altlinux.org/show_bug.cgi?id=17914 Ошибка 17914 - [FR] поддержка submodules]
* [https://bugzilla.altlinux.org/show_bug.cgi?id=17914 Ошибка 17914 - поддержка submodules]
* http://solo-oboroten.livejournal.com/91416.html
* http://solo-oboroten.livejournal.com/91416.html


[[Категория: Сборка пакетов]]
[[Категория: Сборка пакетов]]

Версия от 13:17, 15 марта 2017

Описание проблемы. В последнее время в апстримах стало популярным использовать submodule в git для подтягивания зависимостей. В ряде случаев использование системной библиотеки вообще не предусматривается или невозможно (из-за особенностей подключаемого модуля). Дело дошло до того, что тарболы, выпускаемые разработчиками, не содержат заполненных каталогов с submodule (что, на мой взгляд, является просто недоработкой).

С другой стороны, система сборки в ALT не поддерживает submodule (прямая причина — поскольку submodule ориентированы на подгрузку из сети во время сборки).

Есть различные способы обхода.

Поставка подпакетов отдельно

Самый просто вариант — это (вручную) закоммитить нужные тарболы в отдельные каталоги, создать в .gear/rules из них отдельные архивы и распаковать их в %setup -a1 -a2...

Более сложный, но автоматический способ реализован в etersoft-build-utils 2.5.8. Он основан на сохранении полных, подготовленных к сборке исходников в репозитории. Примерная схема:

  1. работает только при сборке из репозитория, обновляемого из git upstream
  2. создаём каталог .gear/@name@-postsubmodules
  3. в .gear/rules записываем так: tar: .gear/@name@-postsubmodules name=@name@-@version@
  4. при обновлении (rpmgs -f) будет выполнена инициализация и обновление подмодулей, а результат скопирован и закоммичен в каталог .gear/@name@-postsubmodules, из которого и будет производиться сборка.

Ссылки