Skip to content

Latest commit

 

History

History
118 lines (89 loc) · 6.87 KB

deb-packaging-guideline.md

File metadata and controls

118 lines (89 loc) · 6.87 KB

Приоритеты

  • Поддержка убунты, выбраной нами в качестве платформы (сейчас natty).
  • Поддержка более новых убунт, вышедших после natty (сeйчас -- precise, oneiric).
  • Поддержка дебиан -- мы его не поддерживаем, но и не ломаем специально, если без этого можно обойтись.
  • Сборка в чистом чруте (в сборочнице) и при недоступной сети. (недоступность сети не enforced, но подразумевается, что в git с пакетом есть все что нужно для сборки. А то чего там нет -- должно приходить через сборочные зависимости)

Обычные пакеты

Workflow

Мы используем 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

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 они выходить не должны.

binary upload

В случае, когда после внесения правок после ревью с резолюцией ППЗ, либо в случаях, когда надо заменить пакет в репозитории без явных изменений debian/, допускается увеличение версии в iphonestudioN на единицу без дополнительного ревью (если это единственное изменение).

Если пакет пересобирается по причине обновления одной из сборочных зависимостей (баг в компиляторе, скриптах сборки, etc), делается "явное" увеличение версии с помощью команды dch -i и явным указанием причины пересборки в debian/changelog.

Камни LuaRocks, собраные в пакеты

Для рокспеков обязательно указывать в 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 
  исходные пакеты)

Рекомендованое чтение

  1. http://honk.sigxcpu.org/projects/git-buildpackage/manual-html/gbp.html
  2. http://lpenz.github.com/articles/debgit/index.html