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

Материал из ALT Linux Wiki
мНет описания правки
(Правки по оформлению)
Строка 18: Строка 18:
     wget <ссылка на тарболл>
     wget <ссылка на тарболл>
     или же скачиваем снапшот с того же sourceforge  
     или же скачиваем снапшот с того же sourceforge  
        0.0. Распаковываем тарболл
0.0. Распаковываем тарболл
        0.1. Приводим название каталога с исходниками к виду "ИмяПакета"
    tar xvzf ИмяАрхива.tar.gz / xz
0.1. Приводим название каталога с исходниками к виду "ИмяПакета"
1. Переходим в созданный репозиторий
1. Переходим в созданный репозиторий
     cd ИмяПакета
     cd ИмяПакета
Строка 29: Строка 30:
     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
Строка 50: Строка 53:
     git push origin master
     git push origin master


    B.0. '''ВНИМАНИЕ!''' Перед добавлением подписанного тэга стоит проверить, собирается ли пакет вообще.
B.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. Создаём подписанный тэг (см. "настройка по ключам и прочему")
C. Создаём подписанный тэг
     git tag -s -m "ИмяПакета-0.1-alt1" ИмяПакета-0.1-alt1
     git tag -s -m "ИмяПакета-0.1-alt1" ИмяПакета-0.1-alt1
D. Закрепляем тэг:
D. Закрепляем тэг:
Строка 64: Строка 66:
[[Git.alt/Путь пакета в сизиф]]
[[Git.alt/Путь пакета в сизиф]]
<br>
<br>
Читать до полного просветления:
=== Читать до полного просветления ===
<br>
[[О стратегии сборки RPM пакетов]]
[[О стратегии сборки RPM пакетов]]
<br>
<br>

Версия от 19:33, 4 сентября 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. Пробуем связаться с удалённым сервером (и получаем по лбу, ибо доступа пока что нету :-) )

   git remote add origin git.alt:packages/ИмяПакета.git

B. На удалённый репозиторий добавляется всё, что у нас есть, и закрепляется:

   git push origin master

B.0. ВНИМАНИЕ! Перед добавлением подписанного тэга стоит проверить, собирается ли пакет вообще. Для этого попробуем собрать пакет локально и без отправки в Сизиф (ключей-то нету...):

       gear --hasher -- hsh --no-sisyphus-check

Не собралось? Не беда, исправляем ошибку и запускаем сборку, но уже без необходимости собирать песочницу заново:

       gear --hasher -- hsh-rebuild --no-sisyphus-check

C. Создаём подписанный тэг

   git tag -s -m "ИмяПакета-0.1-alt1" ИмяПакета-0.1-alt1

D. Закрепляем тэг:

   git push origin --tags

См. также

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

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

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