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

Материал из ALT Linux Wiki
(Правки по оформлению)
м (заметки на манжетах)
 
(не показаны 3 промежуточные версии 2 участников)
Строка 3: Строка 3:
Дано:
Дано:


- Hasher, gear, git.alt и другие инструменты настроены должным образом.
* [[Hasher]], [[gear]], [[git.alt]] и другие инструменты настроены должным образом.
- готового src.rpm нет;
* готового src.rpm нет;
- ветки на git.alt нет;
* ветки на git.alt нет;
- исходники - либо тарболл "где-то там, далеко-далеко", либо гитхаб, либо вообще снапшот с sourceforge.
* исходники - либо тарболл "где-то там, далеко-далеко", либо гитхаб, либо вообще снапшот с sourceforge.


'''Вывод - веселья мало не будет.'''
'''Вывод - веселья мало не будет.'''
Строка 21: Строка 21:
     tar xvzf ИмяАрхива.tar.gz / xz
     tar xvzf ИмяАрхива.tar.gz / xz
0.1. Приводим название каталога с исходниками к виду "ИмяПакета"
0.1. Приводим название каталога с исходниками к виду "ИмяПакета"
1. Переходим в созданный репозиторий
1. Переходим в созданный репозиторий
     cd ИмяПакета
     cd ИмяПакета
Строка 48: Строка 49:
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
{{note|при последовательной доводке пакета может быть удобной команда {{cmd|gear-hsh --commit}}, которая оформляет из изменённых (но уже отслеживаемых после {{cmd|git add}}!) файлов временный коммит; может потребоваться настройка личных данных в {{cmd|git}}, о чём он в случае необходимости сообщит.}}


== См. также ==
== См. также ==

Текущая версия от 11:03, 28 ноября 2023

Введение

Дано:

  • 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