Сборка пакета с РЕАЛЬНОГО НУЛЯ

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

Введение

Дано:

  • 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
Примечание: при последовательной доводке пакета может быть удобной команда gear-hsh --commit, которая оформляет из изменённых (но уже отслеживаемых после git add!) файлов временный коммит; может потребоваться настройка личных данных в git, о чём он в случае необходимости сообщит.


См. также

Git.alt/Путь пакета в сизиф

Читать до полного просветления

О стратегии сборки RPM пакетов
ALT Packaging HOWTO