Package: reprepro
Version: 4.16.0-1
Severity: important

Hi,

debhelper is now adding automatic -dbgsym packages to all packages in
sid that don't have a -dbg package yet. The problem with this in
combination with reprepro is that the .changes file produced will
contain a foo-dbgsym.deb file which isn't listed in the Binary: field.

The reasoning here is that Binary: is supposed to contain the list of
.debs from debian/control which is not necessarily the list of things
uploaded (e.g. d-i is uploading non-deb content using this way).

Unfortunately reprepro doesn't like this, even with
--ignore=surprisingbinary which should (according to the manpage)
allow exactly this situation:

$ reprepro --verbose --ignore=surprisingbinary processincoming pgdg
Name 'pgagent-dbgsym' of binary 'pgagent-dbgsym_3.4.1-1.pgdg+1_i386.deb' is not 
listed in Binaries header of 'pgagent_3.4.1-1.pgdg+1_i386.changes'!
Name 'pgagent-dbgsym' of binary 'pgagent-dbgsym_3.4.1-1.pgdg+1_amd64.deb' is 
not listed in Binaries header of 'pgagent_3.4.1-1.pgdg+1_amd64.changes'!
There have been errors!

$ cat pgagent_3.4.1-1.pgdg+1_amd64.changes
Format: 1.8
Date: Sun, 20 Dec 2015 10:29:52 +0100
Source: pgagent
Binary: pgagent
...
Files:
 b9f0f5130cb8093b5ff9fe4b368f8941 663372 debug extra 
pgagent-dbgsym_3.4.1-1.pgdg+1_amd64.deb
 30421be49e3669628c2cc75d14e53634 67068 database optional 
pgagent_3.4.1-1.pgdg+1_amd64.deb


Looking into the code, only checkindeb.c is evaluating
"surprisingbinary":

        if (!strlist_in(allowed_binaries, pkg->deb.name) &&
            !IGNORING(surprisingbinary,
"'%s' has packagename '%s' not listed in the .changes file!\n",
                                        debfilename, pkg->deb.name)) {
                deb_free(pkg);
                return RET_ERROR;
        }

... but incoming.c does not:

        if (! strlist_in(&c->binaries, file->deb.name)) {
                fprintf(stderr, 
"Name '%s' of binary '%s' is not listed in Binaries header of '%s'!\n",
                                file->deb.name, BASENAME(i, file->ofs),
                                BASENAME(i, c->ofs));
                return RET_ERROR;
        }

Thanks for maintaining reprepro,
Christoph
-- 
c...@df7cb.de | http://www.df7cb.de/

Attachment: signature.asc
Description: Digital signature

Reply via email to