[devel] Q: процесс работы над пакетами

Alexey Rusakov =?iso-8859-1?q?ktirf_=CE=C1_altlinux=2Eorg?=
Вт Фев 21 02:17:35 MSK 2006


Dmitry V. Levin wrote:

>Мне показалось, что устройство нашего репозитория несколько устарело
>и не вполне удовлетворяет нашим девелоперским потребностям.
>
>Чтобы улучшенный репозитарий действительно стал эффективнее, мне нужно
>понять, как построить процесс работы с ним таким образом, чтобы учесть
>workflow большинства разработчиков.
>
>Поэтому я прошу вас рассказать, как выглядит ваш процесс работы над
>пакетами.
>  
>
Средства и ресурсы: Sisyphus или его подходящее зеркало где-нибудь в 
инете; hasher с патчем из Bug #8121 (слегка обновлённым); 
etersoft-build-utils для упрощения жизни; пара самодельных скриптов; vim 
и сколько получится pty'ев.
Порядок работы: практически все спеки я держу в своём SPECS, из-за чего 
риск потери изменений при NMU (особенно о которых меня не известили 
личным письмом) весьма велик. Если же всё-таки требуется объединить 
изменения или я просто собираю чужой пакет (для NMU или будущий свой), то
1. (если нужно) apt-get source <имя>
2. (если нужно) Объединяются версии спека.
3. Увеличивается номер версии.
4. (если сменилась версия апстрима) rpmgs <имя>.spec (это из 
etersoft-build-utils, выкачивает тарболл с исходниками по %Url и 
добавляет "рыбу" в %changelog)
5. (опционально) Из тарболла берётся configure.in, просматривается на 
предмет очевидных зависимостей (напр., AC_CHECK_LIB и PKG_CHECK_MODULE).
6. (если нужно/хочется) В SOURCES кладутся/докладываются патчи.
7. Редактируется спек, вносятся все желаемые изменения, заполняется 
%changelog.
8. rpm -bs --sign --nodeps <имя>.spec
9. H <имя-версия>.src.rpm (H - скрипт, суть которого сводится к вызову 
hsh с нужными параметрами и выводу на экран наиболее интересных строк из 
лога сборки; кроме этого, линки на успешно собранные пакеты сбрасываются 
в специальный каталог good; всё не соберусь в него же засунуть пункт 7)
10. При необходимости (=вообще не собралось или собралось, но с 
подозрительными сообщениями) - investigation, по результатам которого 
возможен возврат к пункту 7.
11. sudo rpm -Uvh и первичное тестирование собранных rpm'ов (с возможным 
возвратом к пункту 6)
12. rsync -vP <имя-версия>.src.rpm (завёрнутый в скрипт, который берёт 
все пакеты из каталога good и синхронизирует их с /i/S, после чего удаляет)

На данный момент больше всего напрягают две вещи:
неполная автоматизация рутинных операций со спеком (в частности, сменил 
версию-rpmgs-упаковал .src.rpm-отправил собирать в hasher) и
невозможность работать с hasher как с build factory (в которую можно 
асинхронно со сборкой бросать пакеты, она их соберёт в порядке 
поступления и пришлёт по почте извещение о результатах сборки). 
Поскольку мой hsh работает напрямую с оригинальным Sisyphus (т.е. через 
сеть), сборка пакетов с большим количеством зависимостей может 
затянуться. Впрочем, тот же glib2 собирается ужасно долго безо всяких 
зависимостей.
Касаемо второго - думаю написать что-нибудь вроде hshd - демоническую 
обёртку для hsh. Пока на то, чтобы сесть и написать, времени не хватает.

-- 
  Alexey "Ktirf" Rusakov



Подробная информация о списке рассылки Devel