Package: dpkg-dev Version: 1.17.25 Severity: normal This is about "dpkg-source -x ..." for multiple upstream tarbells.
In short, if there are directories matching component names of secondary tarballs, dpkg-source should not warn them if such directories contain nothing. (I checked the pertinent part of the source in the git repo, too. I see no recent changes on this issue.) Here is a long story. For example, let's think about: fritzing_0.9.2b+dfsg.orig.tar.gz fritzing_0.9.2b+dfsg.orig-parts.tar.gz (In reality these are fritzing-app and fritzing-parts but renamed to fit Debian source package packaging scheme V3). The upstream uses git submodule to combine these 2 git archives. Naturally, fritzing_0.9.2b+dfsg.orig.tar.gz contains an *EMPTY* directory "parts" as the result... if packaged without repackaging(*) Currently, this happens (run under -d): | dpkg-source: info: unpacking fritzing_0.9.2b+dfsg.orig.tar.gz | dpkg-source: info: unpacking fritzing_0.9.2b+dfsg.orig-parts.tar.gz | dpkg-source: warning: required removal of `parts' installed by original tarball | at /usr/share/perl5/Dpkg/ErrorHandling.pm line 59. | Dpkg::ErrorHandling::warning("required removal of `%s' installed by orig | inal tarball", "parts") called at /usr/share/perl5/Dpkg/Source/Package/V2.pm lin | e 177 | Dpkg::Source::Package::V2::do_extract(Dpkg::Source::Package::V3::Quilt=H | ASH(0x2607968), "fritzing-0.9.2b+dfsg") called at /usr/share/perl5/Dpkg/Source/P | ackage.pm line 490 | eval {...} called at /usr/share/perl5/Dpkg/Source/Package.pm line 490 | Dpkg::Source::Package::extract(Dpkg::Source::Package::V3::Quilt=HASH(0x2 | 607968), "fritzing-0.9.2b+dfsg") called at /usr/bin/dpkg-source line 489 This is not a very critical problem but this warning should only be issued if the directory in question is non-empty. Removal of empty directories to put component in place should happen without warning. As I cloned dpkg git repo, the pertinent part is the same as the one in jessie. dpkg/scripts/Dpkg/Source/Package/V2.pm (Quote from line 171) | # Extract additional orig tarballs | foreach my $subdir (sort keys %addonfile) { | my $file = $addonfile{$subdir}; | info(g_('unpacking %s'), $file); | if (-e "$newdirectory/$subdir") { | warning(g_("required removal of '%s' installed by original tarball"), | $subdir); | erasedir("$newdirectory/$subdir"); | } | $tar = Dpkg::Source::Archive->new(filename => "$dscdir$file"); | $tar->extract("$newdirectory/$subdir", no_fixperms => 1); | } Here, script erases with erasedir which is defined in dpkg/scripts/Dpkg/Source/Functions.pm essentially as: system 'rm', '-rf', '--', $dir I think if $newdirectory/$subdir contains no files, subdirectories, symlinks, ..., then it should quietly remove $newdirectory/$subdir to cope with "git submodule ..." etc. and proceed to put the content of fritzing_0.9.2b+dfsg.orig-parts.tar.gz while renaming the first level directory from "fritzing-parts-0.9.2b" to "parts". Of course, if such directories have any files, dpkg-sourc3 should warn and do "rm -rf ...", fail, or, move newdirectory/$subdir to newdirectory/${subdir}.orig. So dpkg/scripts/Dpkg/Source/Package/V2.pm needs to check if $newdirectory/$subdir contain any thing in it or not. If nothing, remove it with "rmdir $newdirectory/$subdir" without warning first. Osamu (*) NOTE: The actual fritzing packages in our sid/experimental archive does not use this packaging scheme yet. -- System Information: Debian Release: 8.1 APT prefers stable-updates APT policy: (500, 'stable-updates'), (500, 'proposed-updates'), (500, 'stable'), (99, 'testing'), (98, 'unstable') Architecture: amd64 (x86_64) Kernel: Linux 3.16.0-4-amd64 (SMP w/4 CPU cores) Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) Versions of packages dpkg-dev depends on: ii base-files 8+deb8u1 ii binutils 2.25-5 ii bzip2 1.0.6-7+b3 ii libdpkg-perl 1.17.25 ii make-guile [make] 4.0-8.1 ii patch 2.7.5-1 ii xz-utils 5.1.1alpha+20120614-2+b3 Versions of packages dpkg-dev recommends: ii build-essential 11.7 ii fakeroot 1.20.2-1 ii gcc [c-compiler] 4:4.9.2-2 ii gcc-4.8 [c-compiler] 4.8.4-1 ii gcc-4.9 [c-compiler] 4.9.2-10 ii gnupg 1.4.18-7 ii gnupg2 2.0.26-6 ii gpgv 1.4.18-7 ii libalgorithm-merge-perl 0.08-2 Versions of packages dpkg-dev suggests: ii debian-keyring 2015.04.10 -- no debconf information