Сборка пакета с РЕАЛЬНОГО НУЛЯ: различия между версиями
мНет описания правки |
м (заметки на манжетах) |
||
(не показаны 4 промежуточные версии 2 участников) | |||
Строка 3: | Строка 3: | ||
Дано: | Дано: | ||
* [[Hasher]], [[gear]], [[git.alt]] и другие инструменты настроены должным образом. | |||
* готового src.rpm нет; | |||
* ветки на git.alt нет; | |||
* исходники - либо тарболл "где-то там, далеко-далеко", либо гитхаб, либо вообще снапшот с sourceforge. | |||
'''Вывод - веселья мало не будет.''' | '''Вывод - веселья мало не будет.''' | ||
Строка 18: | Строка 18: | ||
wget <ссылка на тарболл> | wget <ссылка на тарболл> | ||
или же скачиваем снапшот с того же sourceforge | или же скачиваем снапшот с того же sourceforge | ||
0.0. Распаковываем тарболл | |||
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. Причёсываем спек: | |||
cleanup_spec спек.spec | cleanup_spec спек.spec | ||
6.1. Правим спек: | |||
Source: %name-%version.tar.gz | Source: %name-%version.tar.gz | ||
%setup -n %name-%version | %setup -n %name-%version | ||
Строка 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 | ||
C. На удалённый репозиторий добавляется всё, что у нас есть, и закрепляется: | |||
git push origin master | git push origin master | ||
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 | ||
D. Создаём подписанный тэг | |||
git tag -s -m "ИмяПакета-0.1-alt1" ИмяПакета-0.1-alt1 | git tag -s -m "ИмяПакета-0.1-alt1" ИмяПакета-0.1-alt1 | ||
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> | ||
Читать до полного просветления | === Читать до полного просветления === | ||
[[О стратегии сборки 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