Сборка пакета с git submodule: различия между версиями
(Новая страница: «Описание проблемы. В последнее время в апстримах стало популярным использовать submodule в git ...») |
Нет описания правки |
||
(не показаны 2 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
Описание проблемы. В последнее время в апстримах стало популярным использовать submodule в git для подтягивания зависимостей. В ряде случаев использование системной библиотеки вообще не предусматривается или невозможно (из-за особенностей подключаемого модуля). Дело дошло до того, что тарболы, выпускаемые разработчиками, не содержат заполненных каталогов с submodule (что, на мой взгляд, является просто недоработкой). | Описание проблемы. В последнее время в апстримах стало популярным использовать submodule в git для подтягивания зависимостей. В ряде случаев использование системной библиотеки вообще не предусматривается или невозможно (из-за особенностей подключаемого модуля). Дело дошло до того, что тарболы, выпускаемые разработчиками, не содержат заполненных каталогов с submodule (что, на мой взгляд, является просто недоработкой). | ||
С другой стороны, система сборки в ALT не поддерживает submodule (прямая причина — поскольку submodule ориентированы на подгрузку из сети во время сборки). | С другой стороны, система сборки в ALT не поддерживает submodule (прямая причина — поскольку submodule ориентированы на подгрузку из сети во время сборки). Хотя git мог бы поддерживать механизм преобразования репозитория с submodule в полный репозиторий, содержащий весь код и все изменения со всех подрепозиториев. | ||
Есть различные способы обхода. | Есть различные способы обхода. | ||
Строка 7: | Строка 7: | ||
=== Поставка подпакетов отдельно === | === Поставка подпакетов отдельно === | ||
Самый | ==== Вручную ==== | ||
Самый простой вариант — это (вручную) закоммитить нужные тарболы в отдельные каталоги, создать в .gear/rules из них отдельные архивы и распаковать их в %setup -a1 -a2... | |||
Пример доведения этой идеи до абсурда: | |||
https://packages.altlinux.org/ru/sisyphus/srpms/clickhouse/specfiles/ | |||
==== Автоматически ==== | |||
Автоматический способ реализован в etersoft-build-utils. Он основан на сохранении полных, подготовленных к сборке исходников в репозитории. | |||
Примерная схема: | Примерная схема: | ||
# работает только при сборке из репозитория, обновляемого из git upstream | # работает только при сборке из репозитория, обновляемого из git upstream | ||
Строка 17: | Строка 23: | ||
== Ссылки == | == Ссылки == | ||
* [https://bugzilla.altlinux.org/show_bug.cgi?id=17914 Ошибка 17914 - | * [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 | ||
[[Категория: Сборка пакетов]] | [[Категория: Сборка пакетов]] |
Текущая версия от 22:16, 25 апреля 2024
Описание проблемы. В последнее время в апстримах стало популярным использовать submodule в git для подтягивания зависимостей. В ряде случаев использование системной библиотеки вообще не предусматривается или невозможно (из-за особенностей подключаемого модуля). Дело дошло до того, что тарболы, выпускаемые разработчиками, не содержат заполненных каталогов с submodule (что, на мой взгляд, является просто недоработкой).
С другой стороны, система сборки в ALT не поддерживает submodule (прямая причина — поскольку submodule ориентированы на подгрузку из сети во время сборки). Хотя git мог бы поддерживать механизм преобразования репозитория с submodule в полный репозиторий, содержащий весь код и все изменения со всех подрепозиториев.
Есть различные способы обхода.
Поставка подпакетов отдельно
Вручную
Самый простой вариант — это (вручную) закоммитить нужные тарболы в отдельные каталоги, создать в .gear/rules из них отдельные архивы и распаковать их в %setup -a1 -a2...
Пример доведения этой идеи до абсурда: https://packages.altlinux.org/ru/sisyphus/srpms/clickhouse/specfiles/
Автоматически
Автоматический способ реализован в etersoft-build-utils. Он основан на сохранении полных, подготовленных к сборке исходников в репозитории.
Примерная схема:
- работает только при сборке из репозитория, обновляемого из git upstream
- создаём каталог .gear/@name@-postsubmodules
- в .gear/rules записываем так: tar: .gear/@name@-postsubmodules name=@name@-@version@
- при обновлении (rpmgs -f) будет выполнена инициализация и обновление подмодулей, а результат скопирован и закоммичен в каталог .gear/@name@-postsubmodules, из которого и будет производиться сборка.