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

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


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


'''Вывод - веселья мало не будет.'''
'''Вывод - веселья мало не будет.'''
Строка 18: Строка 18:
     wget <ссылка на тарболл>
     wget <ссылка на тарболл>
     или же скачиваем снапшот с того же sourceforge  
     или же скачиваем снапшот с того же sourceforge  
        0.0. Распаковываем тарболл
0.0. Распаковываем тарболл
        0.1. Приводим название каталога с исходниками к виду "ИмяПакета"
    tar xvzf ИмяАрхива.tar.gz / xz
0.1. Приводим название каталога с исходниками к виду "ИмяПакета"
 
1. Переходим в созданный репозиторий
1. Переходим в созданный репозиторий
     cd ИмяПакета
     cd ИмяПакета
Строка 29: Строка 31:
     touch .gear/rules
     touch .gear/rules
5. Заполняем созданный файл [[Gear/old|согласно]] [[Gear/tags|полиси]]
5. Заполняем созданный файл [[Gear/old|согласно]] [[Gear/tags|полиси]]
     nano .gear/rules. Самый простой вариант
     nano .gear/rules.
<br>
    Самый простой вариант
         tar.gz: . - исходники упаковываются со сжатием
         tar.gz: . - исходники упаковываются со сжатием
         copy: *.patch - скопировать в выходной тарболл патчи (по тому же принципу копируем и файлы локализации и пр.)
         copy: *.patch - скопировать в выходной тарболл патчи (по тому же принципу копируем и файлы локализации и пр.)
6. [[Общие правила написания спек файлов в ALT Linux|Создаём]] или кладём к исходникам спек-файл
6. [[Общие правила написания спек файлов в ALT Linux|Создаём]] или кладём к исходникам спек-файл
     cp ИмяПакета.spec ИмяПакета/ИмяПакета.spec
     cp ИмяПакета.spec ИмяПакета/ИмяПакета.spec
    6.0. Причёсываем спек:
6.0. Причёсываем спек:
         cleanup_spec спек.spec
         cleanup_spec спек.spec
    6.1. Правим спек:
6.1. Правим спек:
         Source: %name-version.tar.gz
         Source: %name-%version.tar.gz
         %setup -n %name-%version
         %setup -n %name-%version
7. Говорим git'у, что нужные файлы добавлены:
7. Говорим git'у, что нужные файлы добавлены:
Строка 45: Строка 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}}, о чём он в случае необходимости сообщит.}}


== См. также ==
== См. также ==
[[Git.alt/Путь пакета в сизиф]]
[[Git.alt/Путь пакета в сизиф]]
<br>
<br>
Читать до полного просветления:
=== Читать до полного просветления ===
<br>
[[О стратегии сборки RPM пакетов]]
[[О стратегии сборки RPM пакетов]]
<br>
<br>

Текущая версия от 14: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