[debhelper-devel] Bug#875780: /usr/bin/dh_strip: dh_strip: perl -B incorrectly filters out some files

Ximin Luo infinity0 at debian.org
Thu Sep 14 13:06:12 UTC 2017


Package: debhelper
Version: 10.7.2
Severity: normal
File: /usr/bin/dh_strip

Dear Maintainer,

I'm working around #35733 and #468333 by renaming *.rlib to *.rlib.a before
running dh_strip(1). This works well, however one file is omitted by debhelper:

----
$ xxd debian/libstd-rust-dev/usr/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-b6402de156fe6ac9.rlib | head -n16
00000000: 213c 6172 6368 3e0a 2f20 2020 2020 2020  !<arch>./       
00000010: 2020 2020 2020 2020 3020 2020 2020 2020          0       
00000020: 2020 2020 3020 2020 2020 3020 2020 2020      0     0     
00000030: 3020 2020 2020 2020 3132 3037 3634 2020  0       120764  
00000040: 2020 600a 0000 0511 0001 d892 0001 d892    `.............
00000050: 0001 d892 0001 d892 0001 d892 0001 d892  ................
00000060: 0001 d892 0001 d892 0001 d892 0001 d892  ................
00000070: 0001 d892 0001 d892 0001 d892 0001 d892  ................
00000080: 0001 d892 0001 d892 0001 d892 0001 d892  ................
00000090: 0001 d892 0001 d892 0001 d892 0001 d892  ................
000000a0: 0001 d892 0001 d892 0001 d892 0001 d892  ................
000000b0: 0001 d892 0001 d892 0001 d892 0001 d892  ................
000000c0: 0001 d892 0001 d892 0001 d892 0001 d892  ................
000000d0: 0001 d892 0001 d892 0001 d892 0001 d892  ................
000000e0: 0001 d892 0001 d892 0001 d892 0001 d892  ................
000000f0: 0001 d892 0001 d892 0001 d892 0001 d892  ................
----

This is because dh_strip uses perl's -B check to filter out "text" files for stripping, see here:

----
	# Is it a static library, and not a debug library?
	if ($fn =~ m/\/lib[^\/]*\.a$/ && $fn !~ m/.*_g\.a$/) {
		# Is it a binary file, or something else (maybe a linker
		# script on Hurd, for example? I don't use file, because
		# file returns a variety of things on static libraries.
		if (-B $fn) {
			push @static_libs, $fn;
			return;
		}
	}
----

This fails for the libstd-*.rlib I just gave - but if I remove the -B check
everything works. Obviously I can't do that in the packaging files however. Is
there another way I can work around this issue, before it is fixed?

X

-- System Information:
Debian Release: buster/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable-debug'), (500, 'testing-debug'), (500, 'buildd-unstable'), (300, 'unstable'), (100, 'experimental'), (1, 'experimental-debug')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.11.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_GB.utf8, LC_CTYPE=en_GB.utf8 (charmap=UTF-8), LANGUAGE=en_GB:en (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages debhelper depends on:
ii  autotools-dev            20161112.1
ii  binutils                 2.29-8
ii  dh-autoreconf            14
ii  dh-strip-nondeterminism  0.038-1
ii  dpkg                     1.18.24
ii  dpkg-dev                 1.18.24
ii  file                     1:5.31-1
ii  libdpkg-perl             1.18.24
ii  man-db                   2.7.6.1-2
ii  perl                     5.26.0-5
ii  po-debconf               1.0.20

debhelper recommends no packages.

Versions of packages debhelper suggests:
ii  dh-make  2.201608

-- no debconf information

-- debsums errors found:
debsums: changed file /usr/bin/dh_strip (from debhelper package)




More information about the debhelper-devel mailing list