Building docker-ce .debs generates zero-length .changes file

Issue type

building docker

OS Version

Ubuntu 16.04

Steps to reproduce

$ git clone https://github.com/docker/docker-ce
$ cd docker-ce
$ git checkout 17.06
$ make deb

We need to roll new docker-ce packages that include some critical fixes for use on our infrastructure, but I’m having difficulty building the packages with all the necessary files.

I’ve applied the patch we need and bumped the version, but I end up with a zero-length .changes file. I also tried building the stock 17.06 branch but still ended up with a bad .changes file:

-rw-r--r-- 1 michael michael        0 Mar  1 12:46 docker-ce_17.06.2~ce-0~ubuntu_amd64.changes
-rw-r--r-- 1 michael michael 20510310 Mar  1 12:46 docker-ce_17.06.2~ce-0~ubuntu_amd64.deb
-rw-r--r-- 1 michael michael      660 Mar  1 12:44 docker-ce_17.06.2~ce-0~ubuntu.dsc
-rw-r--r-- 1 michael michael     6618 Mar  1 12:44 docker-ce_17.06.2~ce-0~ubuntu.tar.gz
-rw-r--r-- 1 michael michael        0 Mar  1 13:05 docker-ce_17.06.3~cediscourse-0~ubuntu_amd64.changes
-rw-r--r-- 1 michael michael 20508878 Mar  1 13:05 docker-ce_17.06.3~cediscourse-0~ubuntu_amd64.deb
-rw-r--r-- 1 michael michael      696 Mar  1 13:03 docker-ce_17.06.3~cediscourse-0~ubuntu.dsc
-rw-r--r-- 1 michael michael     6619 Mar  1 13:03 docker-ce_17.06.3~cediscourse-0~ubuntu.tar.gz

I’m building use make deb and it looks as though something is not generating the debian changelog correctly:

…
parsechangelog/debian: warning: 'since' option specifies non-existing version
parsechangelog/debian: warning: use newest entry that is earlier than the one specified
parsechangelog/debian: error: parsechangelog/debian: error:  is not a valid version

dpkg-genchanges: error: changelog parser /usr/lib/dpkg/parsechangelog/debian gave error exit status 255
dpkg-buildpackage: error: dpkg-genchanges gave error exit status 255
…

Am I doing something wrong in the build process? How do I fix this?


EDIT: my process works if I build 18.02, so I’m not sure what’s going wrong. The changelog files from the packages look good:

○ → tar xfz docker-ce_17.06.2~ce-0~ubuntu.tar.gz -O build-deb/debian/changelog
docker-ce (17.06.2~ce-0~ubuntu) trusty; urgency=low
  * Version: 17.06.2-ce
 -- Docker <support@docker.com>  Thu, 01 Mar 2018 20:38:12 +0000

○ → tar xfz docker-ce_17.06.3~cediscourse-0~ubuntu.tar.gz -O build-deb/debian/changelog
docker-ce (17.06.3~cediscourse-0~ubuntu) trusty; urgency=low
  * Version: 17.06.3-cediscourse
 -- Docker <support@docker.com>  Thu, 01 Mar 2018 20:00:45 +0000

○ → tar xfz docker-ce_18.02.0~ce-0~ubuntu.tar.gz -O build-deb/debian/changelog
docker-ce (18.02.0~ce-0~ubuntu) trusty; urgency=low
  * Version: 18.02.0-ce
 -- Docker <support@docker.com>  Thu, 01 Mar 2018 20:42:14 +0000

EDIT: looks the error is coming from dpkg-genchanges -v >../docker-ce_17.06.2~ce-0~debian_amd64.changes in the build - -v is specified without a version

Ah!

It was this erroneous -v on this line which should be removed.

Perhaps the dpkg-genchanges behaviour changed in between that release and now, perhaps it never worked? :ghost: