Сборка пакета с РЕАЛЬНОГО НУЛЯ: различия между версиями

Материал из ALT Linux Wiki
(Правки по оформлению)
(Дополнение про создание удалённого репозитория)
Строка 48: Строка 48:
9. В открывшемся текстовом редакторе, в самом начале, пишем описание коммита:
9. В открывшемся текстовом редакторе, в самом начале, пишем описание коммита:
     "Initial commit"
     "Initial commit"
A. Пробуем связаться с удалённым сервером (и получаем по лбу, ибо доступа пока что нету :-) )
A. Создаём удалённый репозиторий:
    ssh git.alt init-db ИмяПакета
B. Пробуем связаться с удалённым сервером (и получаем по лбу, ибо доступа пока что нету :-) )
     git remote add origin git.alt:packages/ИмяПакета.git
     git remote add origin git.alt:packages/ИмяПакета.git
B. На удалённый репозиторий добавляется всё, что у нас есть, и закрепляется:
C. На удалённый репозиторий добавляется всё, что у нас есть, и закрепляется:
     git push origin master
     git push origin master


B.0. '''ВНИМАНИЕ!''' Перед добавлением подписанного тэга стоит проверить, собирается ли пакет вообще.
C.0. '''ВНИМАНИЕ!''' Перед добавлением подписанного тэга стоит проверить, собирается ли пакет вообще.
Для этого попробуем собрать пакет локально и без отправки в Сизиф (ключей-то нету...):
Для этого попробуем собрать пакет локально и без отправки в Сизиф (ключей-то нету...):
         gear --hasher -- hsh --no-sisyphus-check
         gear --hasher -- hsh --no-sisyphus-check
Не собралось? Не беда, исправляем ошибку и запускаем сборку, но уже без необходимости собирать песочницу заново:
Не собралось? Не беда, исправляем ошибку и запускаем сборку, но уже без необходимости собирать песочницу заново:
         gear --hasher -- hsh-rebuild --no-sisyphus-check
         gear --hasher -- hsh-rebuild --no-sisyphus-check
C. Создаём подписанный тэг
D. Создаём подписанный тэг
     git tag -s -m "ИмяПакета-0.1-alt1" ИмяПакета-0.1-alt1
     git tag -s -m "ИмяПакета-0.1-alt1" ИмяПакета-0.1-alt1
D. Закрепляем тэг:
E. Закрепляем тэг:
     git push origin --tags
     git push origin --tags



Версия от 16:31, 16 сентября 2019

Введение

Дано:

- 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

См. также

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

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

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