amarao (amarao_san) wrote,
amarao
amarao_san

Часть вторая, сборка

Я умно решил пока что пересобрать 1.0.0 (который и так есть в убунтовых репах для моего дистра), потому что я таким образом избегаю странных проблем с зависимостями и могу проверить свой гит на собираемость, не оглядываясь на зависимости.

sudo apt-get build-dep python-diskimage-builder -y
git checkout debian
gbp buildpackage
...
dpkg-source: error: aborting due to unexpected upstream changes, see /tmp/python-diskimage-builder_1.0.0-1.diff.RcPhAS
dpkg-source: info: you can integrate the local changes with dpkg-source --commit
dpkg-buildpackage: error: dpkg-source -i -I -b python-diskimage-builder-1.0.0 gave error exit status 2
debuild: fatal error at line 1376:
dpkg-buildpackage -rfakeroot -D -us -uc -i -I failed
gbp:error: 'debuild -i -I' failed: it exited with 29

Что-то я не так сделал. Думаем... Во-первых, почему оно не взяло правильную версию апстрима? Давайте попробуем.
gbp buildpackage
gbp:info: Creating python-diskimage-builder_1.0.0.orig.tar.xz from '1.0.0'
gbp:info: Exporting 'HEAD' to '/home/amarao/git/Packages/build-area/python-diskimage-builder-tmp'
gbp:info: Moving '/home/amarao/git/Packages/build-area/python-diskimage-builder-tmp' to '/home/amarao/git/Packages/build-area/python-diskimage-builder-1.0.0'

Почему тут head? С какой стати head? Ага, понятно. Потому что я сделал merge из upstream, а не из upstream/1.0.0.
Придётся переделывать. Чем мучать гит, проще повторить уже отработанную последовательность команд. На этот раз я сделаю мастер до того, как добавлять remote'ы, чтобы не было автотрекинга. Я на это надеюсь.

git init
git checkout -b master
git remote add openstack-upstream git://git.openstack.org/openstack/diskimage-builder
git fetch
git branch upstream --set-upstream openstack-upstream/master
git checkout master
git checkout -b debian
(т.к. master пустой, то и debian пустой, и это сделает мою историю более гладенькой)

Не сработало.
Удаляю бранчи
git checkout upstream
git branch -d master
git branch -d debian
git checkout --orphan debian
git reset --hard
git clean -f
tar -Jxvf /tmp/python-diskimage-builder_1.0.0-1.debian.tar.xz
git add debian
git commit -m "import frm python-diskimage-builder_1.0.0-1.debian.tar.xz"
исправляем gbp.conf
git add debian/gbp.conf
git commit -m "fix branches"
git merge 1.0.0 --allow-unrelated-histories # у нас есть тег из апстрима и мы его хотим
git checkout -b master # теперь у нас мастер не будет трекать что попало автоматом
git checkout debian
git tag debian/1.0.0

Пробуем собрать получившееся...


Почти. Спотыкаемся на
Now signing changes and any dsc files...
signfile python-diskimage-builder_1.0.0-1.dsc Thomas Goirand <zigo@debian.org>
gpg: skipped "Thomas Goirand <zigo@debian.org>": No secret key

Ага, надо менять мейнтейнера на себя.

Фиксим debian/control: выкидываем uploader, меняем maintainer на себя.

Двигаем тег:
git tag -d debian/1.0.0
dch -i, делаем nmu1
git add debian/control debian/changelog

запускем сборку...

Finished running lintian.
Now signing changes and any dsc files...
signfile python-diskimage-builder_1.0.0-1nmu1.dsc George Shuklin <george.shuklin@gmail.com>

signfile python-diskimage-builder_1.0.0-1nmu1_amd64.changes George Shuklin <george.shuklin@gmail.com>

Successfully signed dsc and changes files


Ура. Даже подписанные пакеты получаются. Надо будет научить jenkins расписываться за самого себя в пакетах.

Продолжение (с апдейтом версии и настройкой jenkins) - завтра.
Tags: deb, devops, dpkg
Subscribe

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 1 comment