Gear start

Материал из ALT Linux Wiki
Примечание: Обратите внимание, что это не официальная документация, а попытка начинающего разработчика объяснить материал начинающим разработчикам.
Официальная документация здесь


Gear - инструмент для git-репозиториев с исходным кодом и данными для сборки пакета. Используется системой сборки ALT Linux hasher.

gear-репозиторий — это git-репозиторий, содержащий файл .gear/rules. Этот файл (плюс несколько вспомогательных) описывают правила сборки содержимого git-репозитория в пакет формата pkg.tar или src.rpm.

pkg.tar — это основанный на tar формат для хранения пакета с исходным кодом, аналогичный src.rpm, но не требующий запуска rpmbuild для создания. hasher умеет собирать пакеты в формате pkg.tar.

Внимание! Не spec определяет имя в gear/rules, а gear/rules определяет имя в spec.
По умолчанию имя архива - %name-%version


Параметры Gear

Для правки параметров Gear правим файл .gear/rules.

Скопировать файл в дерево сборки

Параметр:

copy: rpm.macros.trinity.standalone

Структура каталога:

1-rpm-macros-trinity
├── .gear
│   └── rules
├── README.md
├── rpm-macros-trinity.spec
└── rpm.macros.trinity.standalone

Например, в репозитории с "исходниками" один файл, который нужно включить в rpm. В этом случае вам нужно прописать один параметр copy.

Скопировать в каталог сборки файлы, упаковать все в архив, указать спек

Параметры:

copy: cmake-trinity/modules/*.cmake
copy: cmake-trinity/modules/*.pl
copy: cmake-trinity/templates/*.cmake
copy: import.info
tar: cmake-trinity name=cmake-trinity-14.1.3
spec: cmake-trinity.spec

Структура каталога:

2-cmake-trinity
├── cmake-trinity
│   ├── CMakeLists.txt
│   ├── generate_apidox
│   ├── install_apidox
│   ├── modules
│   │   └── *.cmake
│   │    TDEVersion.cmake
│   └── templates
│       └── *.cmake
├── cmake-trinity.spec
├── .gear
│   └── rules
└── import.info

Например, в данной ситуации нужно "упаковать" cmake-скрипты, находящиеся в разных папках в один каталог чтобы система сборки свободно работала с ними будто они находятся все одном каталоге для сборки.

Для этого командой:

  • copy указываются файлы, которые будут скопированы в пакет
  • tar указывается архив, в который будет запакован каталог
  • spec указывается спек для сборки

Указать архив в который будет запакован каталог

Команду:

tar: cmake-trinity name=cmake-trinity-14.1.3

можно разделить на три части:

  • вид архива
    • tar
    • tar.gz
  • каталог для архива
    • каталог из корня (в нашем случае cmake-trinity)
    • все содержимое корня (.)
  • имя архива
    • имя присваивается после знака равно name=cmake-trinity-14.1.3, т.е. если нам нужно присвоить свое имя, например с именем и версией, то это можно указать здесь

Вариант gear/rules с тарболлом

sources <-ваш каталог с исходниками
└── bmpane-source <-один из каталогов с модулями
    └── bmpanel2 <-каталог, который указывается для упаковки

Если исходный код берут из тарболла (tar.gz), то его кладут в подкаталог, а выше его размещают .spec и патчи. Если используется апстримовый git, то добавляется .spec, .gear/rules (или .gear-rules) с правилом

tar.gz: . name=bmpanel2 base=bmpane-source

В src.rpm во время генерации будет создан:

  • тарболл bmpanel2-<version>.tar.gz
    • в котором будет создан каталог с именем bmpane-source
    • в котором будет каталог с исходниками под именем bmpanel2
    • так же будет упакован каталог bmpane-source со всем его содержимым

В спеке нужно прописать:

%setup -n bmpanel2

для правильного определения подкаталога.

Один каталог с исходниками

avahi-tqt <-ваш общий каталог с исходниками
└── avahi-tqt <-каталог содержащий исходники

Если у вас простой вариант, один каталог содержащий один-два *.h/*.cpp то gear/rules прописывается так:

tar.gz .