- Поддержка убунты, выбраной нами в качестве платформы (сейчас
natty
). - Поддержка более новых убунт, вышедших после
natty
(сeйчас --precise
,oneiric
). - Поддержка дебиан -- мы его не поддерживаем, но и не ломаем специально, если без этого можно обойтись.
- Сборка в чистом чруте (в сборочнице) и при недоступной сети. (недоступность сети не enforced, но подразумевается, что в git с пакетом есть все что нужно для сборки. А то чего там нет -- должно приходить через сборочные зависимости)
Мы используем git-buildpackage
и "стандартное" именование веток/тегов:
ветки upstream и master, теги -- upstream/$version
и debian/$version
.
(Это имена веток git-buildpackage
по умолчанию, см документацию от GBP
:
http://honk.sigxcpu.org/projects/git-buildpackage/manual-html/gbp.intro.html)
Рабочие бранчи создаются по стандартной схеме xx/nnn/topic-name
, но пакет
собраный из такой ветки может попасть только в ubuntu-test
.
(cм схему именования topic branches в development-guidelines.md
)
Пакет вливается в ubuntu-dev
одновременно с вливанием ветки в мастер.
(кроме тех случав, когда в тикете явно оговорено собрать пакет в ubuntu-test
,
в этом случае ветка вливается в мастер после утверждения на ревью)
Ревью пакетов проводится в обязательном порядке AG, AN и IK.
В патчах на debian/control
в комментарии явно указываем, секции от каких
пакетов были затронуты изменениями, (если это не очевидно из самого диффа --
тогда в диффе должны быть видны строчки package: pkgname
)
ubuntu-test
внутренний тестовый репозиторий пакетов -- в него могут попадать
пакеты до ревью, чтобы протестировать их работоспособоность или если они
являются сборочной зависимостью от других пакетов.
Подключение тестового репозитория:
wget -O - http://ubuntu-test.iphonestudio.ru/key.asc | sudo apt-key add -
sudo add-apt-repository "http://ubuntu-test.iphonestudio.ru/ ubuntu-test main"
sudo apt-get update
(Подключать этот репозиторий вне сборочницы, или специально созданых для тестирования пакетов чрутов и виртуальных машин не рекомендуется.)
По умолчанию он не активирован, и надо использовать опцию -t ubuntu-test при установке. Пример -- установка redis-server из тестового репозитория:
apt-get install -t ubuntu-test redis-server
В тестовых целях допускается нумерация версий вида iphonestudioN.M
(c точкой).
Такие версии считать экспериментальными, за пределы ubuntu-test
они выходить
не должны.
В случае, когда после внесения правок после ревью с резолюцией ППЗ,
либо в случаях, когда надо заменить пакет в репозитории без явных
изменений debian/
, допускается увеличение версии в iphonestudioN
на единицу
без дополнительного ревью (если это единственное изменение).
Если пакет пересобирается по причине обновления одной из сборочных зависимостей
(баг в компиляторе, скриптах сборки, etc), делается "явное" увеличение версии
с помощью команды dch -i
и явным указанием причины пересборки в
debian/changelog
.
Для рокспеков обязательно указывать в debian/changelog их происхождение
(обычно -- url rockspec'а в репозитории на luarocks.org)
Также надо указать в debian/control
поля X-Rockspec-URL
и
X-Rockspec-Version
:
пример:
X-Rockspec-URL: http://www.luarocks.org/repositories/rocks/luasec-0.4-4.rockspec
X-Rockspec-Version: 0.4-4
Генерация (и перегенерация) содержимого debian/
оформляется отдельным коммитом.
Правки после генерации, если они были -- отдельным коммитом.
Рокспек, по которому сгенерирован debian/
тоже кладется внутрь.
Последовательность команд для сборки выглядит примерно так:
$ mkdir package
$ cd package
$ git init
$ git-import-orig ../package.tar.gz
(нас переспросят про имя пакета и версию)
$ wget http://luarocks.org/...../package.rockspec
$ pk-rockspec2deb package.rockspec
(тут нам сделают "красивый" debian/, его следует закоммитить со словами
Generate debian/ from package.rockspec. Так же рекомендуется посмотреть
на разумность того, что там нагенерилось)
$ debuild binary
(чтобы собрать локально, сборка в сборочнице -- тема отдельного гайдлайна,
с точки зрения сборочницы -- это обычные заточеные под git-buildpackage
исходные пакеты)