reprepro / multiversion / build recipe

reprepro / multiversion / build recipe

  • Written by
    Walter Doekes
  • Published on

We used to use reprepro (4.17) to manage our package repository. However, it did not support serving multiple versions of the same package. The Benjamin Drung version from GitHub/profitbricks/reprepro does. Here’s our recipe to build it.

$ git clone -b 5.1.1-multiple-versions https://github.com/profitbricks/reprepro.git
$ cd reprepro

It lacks a couple of tags, so we’ll add some lightweight ones.

$ git tag 4.17.1 2d93fa35dd917077e9248c7e564648da3a5f1fe3 &&
    git tag 4.17.1-1 0c9f0f44a84f67ee5f14bccf6507540d4f7f8e39 &&
    git tag 5.0.0 e7e4c1f1382d812c3759617d5f82b8a46ea0f096 &&
    git tag 5.0.0-1 297835acd73d1644bfee4544a0878a0c36c411a7 &&
    git tag 5.1.0 8db8e8af8fffe82ae46ca0ec776dfe357f329635 &&
    git tag 5.1.0-1 06adb356517ab3e3089706e29dfab43bba09f0a9 &&
    git tag 5.1.1-2.1 b6b28f04466851234b4a94aa33132082094e8780

Now git-describe works. With --tags because we didn’t tag -a them.

$ git log -1 --format=oneline
b37d8daba6bfb4c20241cf623a24e64532dd8868 Accept .ddeb files as dbgsym packages

$ git describe
fatal: No annotated tags can describe 'b37d8daba6bfb4c20241cf623a24e64532dd8868'.
However, there were unannotated tags: try --tags.

$ git describe --tags
5.1.1-2.1-59-gb37d8da

Good enough for us. We’ll need to alter that version a bit to make it debian-package friendly though. And since the tilde (~) means pre-relase, we’ll make use of the plus (+), turning the above into: 5.1.1+2.1+59.gb37d8da (optionally suffixed with a build version, like -0osso1)

We amend the appropriate lines in the debian changelog with the chosen version. For Ubuntu/Xenial we additionally had to replace libgpgme-dev with libgpgme11-dev in debian/control.

Lastly, commit our update control file and changelog in a throwaway commit, so gbp(1) won’t complain about untracked files. And then build, creating a source package of this exact build.

reprepro (5.1.1+2.1+59.gb37d8da-0osso1) stable; urgency=medium

  * OSSO build of b37d8daba6b (+59 since b6b28f0446)
  * gbp buildpackage --git-upstream-tree=HEAD \
      --git-debian-branch=5.1.1-multiple-versions [-us -uc] -sa

 -- Walter Doekes <wjdoekes+reprepro@osso.nl>  Thu, 30 Nov 2017 10:10:52 +0100
$ gbp buildpackage --git-upstream-tree=HEAD
    --git-debian-branch=5.1.1-multiple-versions [-us -uc] -sa

Omit the -us -uc if you can sign the build with gpg. And if you use gpg-agent forwarding with gpg2, make sure gpg(1) references gpg2 and not gpg1.

You should end up with these files:

reprepro_5.1.1+2.1+59.gb37d8da-0osso1_amd64.build
reprepro_5.1.1+2.1+59.gb37d8da-0osso1_amd64.changes
reprepro_5.1.1+2.1+59.gb37d8da-0osso1_amd64.deb
reprepro_5.1.1+2.1+59.gb37d8da-0osso1.debian.tar.xz
reprepro_5.1.1+2.1+59.gb37d8da-0osso1.dsc
reprepro_5.1.1+2.1+59.gb37d8da.orig.tar.gz

Back to overview Newer post: Availability during holiday December 2017 Older post: Maintenance network Mediacentrale Nov 1st 2017 - 22:00