5.2. Gear by ALT Linux Team
Большим минусом разработки с использованием только hasher является постоянная пересборка не только файлов, связанных с предыдущими сборками, но и всего рабочего окружения разработчика, из-за чего постоянно необходимо настраивать «рабочее место». Решением этого выступает
Gear, использующий для хранения данных git-репозиторий. Gear позволяет единожды настроить локальное рабочее пространство для разработки, вести работу в git, а сборку осуществлять с использованием передачи пакета для сборки в hasher.
Создадим gear-окружение вокруг пакета. Для этого необходимо создать репозиторий и распаковать в него пакет. Для начала (аналогично настройке именования разработчика hasher) необходимо указать правильное именование git-разработчика:
@user
[user@VM ~]$ git config --global user.name 'UsamG1t'
[user@VM ~]$ git config --global user.email 'usamg1t@altlinux.org'
[user@VM ~]$
@user
[user@VM ~]$ mkdir todo-pkg
[user@VM ~]$ cd todo-pkg
[user@VM todo-pkg]$ git init
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
Initialized empty Git repository in /home/user/todo-pkg/.git/
[user@VM todo-pkg]$
Распаковка .src.rpm-пакета и формирование gear-окружения осуществляется с помощью специальной команды gear-srpmimport:
[user@VM todo-pkg]$ gear-srpmimport ../todo-pkg-1.0-alt1.src.rpm
[srpms (root-commit) 4c1a0a3] 1.0-alt1
3 files changed, 109 insertions(+)
create mode 100644 .gear/rules
create mode 100644 todo-pkg-1.0.sh
create mode 100644 todo-pkg.spec
gear-srpmimport: Imported /home/user/todo-pkg-1.0-alt1.src.rpm
gear-srpmimport: Created master branch
[user@VM todo-pkg]$
В Gear все исходники и spec-файл хранятся в едином пространстве. Для правильной компоновки файлов (в tarball или просто набор исходников) при сборке пакета или генерации .src.rpm-пакета используется специальный файл правил экспорта .gear/rules:
@user
[user@VM todo-pkg]$ tree -A
.
├── todo-pkg-1.0.sh
└── todo-pkg.spec
1 directory, 2 files
[user@VM todo-pkg]$ tree -Aa
.
├── .gear
│ └── rules
├── .git
│ ├── branches
...
│ └── refs
│ ├── heads
│ │ ├── master
│ │ └── srpms
│ └── tags
│ └── 1.0-alt1
├── todo-pkg-1.0.sh
└── todo-pkg.spec
22 directories, 37 files
[user@VM todo-pkg]$
Для сборки пакета с помощью hasher используется команда gear-hsh. При этом допустимы ключи, используемые в hasher:
@user
[user@VM todo-pkg]$ gear-hsh --lazy
<...>
Wrote: /usr/src/in/srpm/todo-pkg-1.0-alt1.src.rpm (w1.gzdio)
Installing todo-pkg-1.0-alt1.src.rpm
<...>
Wrote: /usr/src/RPM/SRPMS/todo-pkg-1.0-alt1.src.rpm (w2.lzdio)
Wrote: /usr/src/RPM/RPMS/x86_64/todo-pkg-1.0-alt1.x86_64.rpm (w2.lzdio)
0.89user 1.12system 0:03.79elapsed 53%CPU (0avgtext+0avgdata 7612maxresident)k
0inputs+264outputs (0major+90729minor)pagefaults 0swaps
[user@VM todo-pkg]$ hsh-shell
@builder
[builder@localhost .in]$ cd
[builder@localhost ~]$ ls RPM/SOURCES/ RPM/SPECS/
RPM/SOURCES/:
todo-pkg-1.0.sh
RPM/SPECS/:
todo-pkg.spec
[builder@localhost ~]$