Сборка пакета с РЕАЛЬНОГО НУЛЯ: различия между версиями
(Дополнение про создание удалённого репозитория) |
м (заметки на манжетах) |
||
(не показаны 2 промежуточные версии этого же участника) | |||
Строка 3: | Строка 3: | ||
Дано: | Дано: | ||
* [[Hasher]], [[gear]], [[git.alt]] и другие инструменты настроены должным образом. | |||
* готового src.rpm нет; | |||
* ветки на git.alt нет; | |||
* исходники - либо тарболл "где-то там, далеко-далеко", либо гитхаб, либо вообще снапшот с sourceforge. | |||
'''Вывод - веселья мало не будет.''' | '''Вывод - веселья мало не будет.''' | ||
Строка 21: | Строка 21: | ||
tar xvzf ИмяАрхива.tar.gz / xz | tar xvzf ИмяАрхива.tar.gz / xz | ||
0.1. Приводим название каталога с исходниками к виду "ИмяПакета" | 0.1. Приводим название каталога с исходниками к виду "ИмяПакета" | ||
1. Переходим в созданный репозиторий | 1. Переходим в созданный репозиторий | ||
cd ИмяПакета | cd ИмяПакета | ||
Строка 64: | Строка 65: | ||
E. Закрепляем тэг: | E. Закрепляем тэг: | ||
git push origin --tags | git push origin --tags | ||
{{note|при последовательной доводке пакета может быть удобной команда {{cmd|gear-hsh --commit}}, которая оформляет из изменённых (но уже отслеживаемых после {{cmd|git add}}!) файлов временный коммит; может потребоваться настройка личных данных в {{cmd|git}}, о чём он в случае необходимости сообщит.}} | |||
== См. также == | == См. также == |
Текущая версия от 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