Сборка пакета с РЕАЛЬНОГО НУЛЯ
Введение
Дано:
- Hasher, gear, git.alt и другие инструменты настроены должным образом.
- готового src.rpm нет;
- ветки на git.alt нет;
- исходники - либо тарболл "где-то там, далеко-далеко", либо гитхаб, либо вообще снапшот с sourceforge.
Вывод - веселья мало не будет.
Приступим!
Общий алгоритм сборки
0. Лезем за исходниками - либо в тарболле, либо напрямик с гита:
git clone <адрес репозитория> wget <ссылка на тарболл> или же скачиваем снапшот с того же sourceforge
0.0. Распаковываем тарболл
tar xvzf ИмяАрхива.tar.gz / xz
0.1. Приводим название каталога с исходниками к виду "ИмяПакета"
1. Переходим в созданный репозиторий
cd ИмяПакета
2. Инициализируем локальный репозиторий:
git init
3. Создаём каталог для файла правил gear:
mkdir -pv .gear
4. Создаём файл с правилами для gear:
touch .gear/rules
5. Заполняем созданный файл согласно полиси
nano .gear/rules.
Самый простой вариант tar.gz: . - исходники упаковываются со сжатием copy: *.patch - скопировать в выходной тарболл патчи (по тому же принципу копируем и файлы локализации и пр.)
6. Создаём или кладём к исходникам спек-файл
cp ИмяПакета.spec ИмяПакета/ИмяПакета.spec
6.0. Причёсываем спек:
cleanup_spec спек.spec
6.1. Правим спек:
Source: %name-%version.tar.gz %setup -n %name-%version
7. Говорим git'у, что нужные файлы добавлены:
git add .
8. Зовём gear записать изменения
gear-commit -a
9. В открывшемся текстовом редакторе, в самом начале, пишем описание коммита:
"Initial commit"
A. Создаём удалённый репозиторий:
ssh git.alt init-db ИмяПакета
B. Пробуем связаться с удалённым сервером (и получаем по лбу, ибо доступа пока что нету :-) )
git remote add origin git.alt:packages/ИмяПакета.git
C. На удалённый репозиторий добавляется всё, что у нас есть, и закрепляется:
git push origin master
C.0. ВНИМАНИЕ! Перед добавлением подписанного тэга стоит проверить, собирается ли пакет вообще. Для этого попробуем собрать пакет локально и без отправки в Сизиф (ключей-то нету...):
gear --hasher -- hsh --no-sisyphus-check
Не собралось? Не беда, исправляем ошибку и запускаем сборку, но уже без необходимости собирать песочницу заново:
gear --hasher -- hsh-rebuild --no-sisyphus-check
D. Создаём подписанный тэг
git tag -s -m "ИмяПакета-0.1-alt1" ИмяПакета-0.1-alt1
E. Закрепляем тэг:
git push origin --tags