Etersoft-build-utils/extra sources

Материал из ALT Linux Wiki

Подготовка дополнительных исходных файлов

Современные языки разработки имеют множество подключаемых модулей, загружаемых из Интернета при подготовке проекта к сборке (установке). Как правило такие модули не поставляются в архиве с релизом. Также в проект могут быть подключены другие проекты средствами git submodules.

Примеры:

* .gitsubmodules
* npm install (NodeJS)
* nuget restore (.NET Core)
* compose install (php)
* cargo vendor (rust)
* go vendor (go)

Встроенные в инструмент получения исходного кода rpmgs из etersoft-build-utils возможности позволяют автоматически обновлять дополнительные исходные файлы и размещать их в пакете.

git submodules

При использовании .git репозитория можно упаковать submodules из .gitsubmodules в отдельный каталог.

Создать каталог

.gear/@name@-postsubmodules

и в rules вписать

tar:.*-postsubmodules

Поддерживается только для проектов, обновляемых из исходного git-репозитория. После обновления (merge) с апстримом выполняется подгрузка submodules и их размещение в отдельном каталоге.

Дополнительно можно создать скрипт, вызываемый после обновления submodules: .gear/source-postupdate-hook <версия пакета>

Предварительная загрузка модулей

Скрипт, вызываемый перед обновлением:

.gear/predownloaded-preinstall-hook <версия пакета>

Если создан каталог

.gear/predownloaded-development

или

.gear/predownloaded-production

и в rules вписано правило

tar: .gear/predownloaded-development

или

tar: .gear/predownloaded-production

для поддерживаемых репозиториев модулей выполняется скачивание и упаковка модулей в режиме development или production соответственно.

Скрипт, вызываемый после обновления:

.gear/predownloaded-postinstall-hook <версия пакета>

npm

Предварительная загрузка модулей через менеджер пакетов npm:

  • при наличии ./package.json вызывается npm install [--production]

Пример пакета: https://packages.altlinux.org/ru/sisyphus/srpms/node-canvas

composer

Предварительная загрузка модулей через менеджер пакетов composer:

  • при наличии ./composer.json вызывается composer install [--no-dev]

Пример пакета: https://packages.altlinux.org/ru/sisyphus/srpms/composer

go

Предварительная загрузка модулей через менеджер пакетов go:

  • при наличии ./go.mod вызывается go mod vendor

Пример пакета: https://packages.altlinux.org/ru/sisyphus/srpms/chisel

cargo

Предварительная загрузка модулей через менеджер пакетов cargo:

  • при наличии ./Cargo.lock вызывается cargo vendor

Пример пакета: https://packages.altlinux.org/ru/sisyphus/srpms/maturin

nuget

TODO: что ещё поддерживается? nuget

Любой исходный архив

Скрипт, вызываемый после загрузки и коммита архива:

.gear/source-postupdate-hook <версия пакета>