Debian Bug report logs - #875780
/usr/bin/dh_strip: dh_strip: perl -B incorrectly filters out some files

version graph

Package: debhelper; Maintainer for debhelper is Debhelper Maintainers <debhelper@packages.debian.org>; Source for debhelper is src:debhelper (PTS, buildd, popcon).

Reported by: Ximin Luo <infinity0@debian.org>

Date: Thu, 14 Sep 2017 13:09:02 UTC

Severity: normal

Tags: patch

Merged with 982908

Found in versions debhelper/13.3.3, debhelper/10.7.2

Reply or subscribe to this bug.

Toggle useless messages

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to debian-bugs-dist@lists.debian.org, Debhelper Maintainers <debhelper-devel@lists.alioth.debian.org>:
Bug#875780; Package debhelper. (Thu, 14 Sep 2017 13:09:04 GMT) (full text, mbox, link).


Acknowledgement sent to Ximin Luo <infinity0@debian.org>:
New Bug report received and forwarded. Copy sent to Debhelper Maintainers <debhelper-devel@lists.alioth.debian.org>. (Thu, 14 Sep 2017 13:09:04 GMT) (full text, mbox, link).


Message #5 received at submit@bugs.debian.org (full text, mbox, reply):

From: Ximin Luo <infinity0@debian.org>
To: Debian Bug Tracking System <submit@bugs.debian.org>
Subject: /usr/bin/dh_strip: dh_strip: perl -B incorrectly filters out some files
Date: Thu, 14 Sep 2017 15:06:12 +0200
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)



Information forwarded to debian-bugs-dist@lists.debian.org, Debhelper Maintainers <debhelper-devel@lists.alioth.debian.org>:
Bug#875780; Package debhelper. (Thu, 14 Sep 2017 13:18:05 GMT) (full text, mbox, link).


Acknowledgement sent to Ximin Luo <infinity0@debian.org>:
Extra info received and forwarded to list. Copy sent to Debhelper Maintainers <debhelper-devel@lists.alioth.debian.org>. (Thu, 14 Sep 2017 13:18:05 GMT) (full text, mbox, link).


Message #10 received at 875780@bugs.debian.org (full text, mbox, reply):

From: Ximin Luo <infinity0@debian.org>
To: 875780@bugs.debian.org
Subject: Re: /usr/bin/dh_strip: dh_strip: perl -B incorrectly filters out some files
Date: Thu, 14 Sep 2017 13:15:00 +0000
[Message part 1 (text/plain, inline)]
Ximin Luo:
> ----
> $ 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  
> [,,]

Test cases are attached - the first 512 bytes of libstd.rlib and libcore.rlib respectively.

$ perl -e 'print((-B "libstd.head") ? "yes\n" : "no\n");'
no
$ perl -e 'print((-B "libcore.head") ? "yes\n" : "no\n");'
yes

More info here: https://eli.thegreenplace.net/2011/10/19/perls-guess-if-file-is-text-or-binary-implemented-in-python

X

-- 
GPG: ed25519/56034877E1F87C35
GPG: rsa4096/1318EFAC5FBBDBCE
https://github.com/infinity0/pubkeys.git
[libcore.head (application/octet-stream, attachment)]
[libstd.head (application/octet-stream, attachment)]

Information forwarded to debian-bugs-dist@lists.debian.org, Debhelper Maintainers <debhelper@packages.debian.org>:
Bug#875780; Package debhelper. (Fri, 27 Mar 2020 12:00:03 GMT) (full text, mbox, link).


Acknowledgement sent to Luca Boccassi <bluca@debian.org>:
Extra info received and forwarded to list. Copy sent to Debhelper Maintainers <debhelper@packages.debian.org>. (Fri, 27 Mar 2020 12:00:03 GMT) (full text, mbox, link).


Message #15 received at 875780@bugs.debian.org (full text, mbox, reply):

From: Luca Boccassi <bluca@debian.org>
To: 875780@bugs.debian.org
Cc: pkg-dpdk-devel@lists.alioth.debian.org
Subject: Re: /usr/bin/dh_strip: dh_strip: perl -B incorrectly filters out some files
Date: Fri, 27 Mar 2020 11:56:23 +0000
[Message part 1 (text/plain, inline)]
> 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

I face the same problem - a static library built on Jan 28th was
stripped correctly, but one built on March 26th is now ignored by
dh_strip because perl thinks it's a text file. The library has no diff
between the two builds.

Once manually stripped, diffoscope reports this difference between the
two libraries:

--- librte_pmd_virtio_crypto.a.old
+++ librte_pmd_virtio_crypto.a
├── nm -s {}
│ @@ -114,44 +114,44 @@
│  000000000000012c r .LC82
│  0000000000000143 r .LC83
│  000000000000015d r .LC84
│  0000000000000172 r .LC85
│  0000000000000187 r .LC86
│  00000000000000c8 r .LC9
│                   U _GLOBAL_OFFSET_TABLE_
│ -00000000000002d0 r __func__.37667
│ -00000000000002f0 r __func__.39290
│ -0000000000000170 r __func__.39787
│ -00000000000004a0 r __func__.39809
│ -0000000000000480 r __func__.39827
│ -0000000000000040 r __func__.39845
│ -0000000000000400 r __func__.39851
│ -00000000000000a0 r __func__.39865
│ -00000000000000c0 r __func__.39875
│ -00000000000000e0 r __func__.39881
│ -0000000000000100 r __func__.39895
│ -0000000000000120 r __func__.39901
│ -0000000000000000 r __func__.39907
│ -0000000000000020 r __func__.39915
│ -00000000000003c0 r __func__.39923
│ -0000000000000460 r __func__.39928
│ -0000000000000060 r __func__.39934
│ -0000000000000440 r __func__.39939
│ -0000000000000420 r __func__.39949
│ -0000000000000140 r __func__.39960
│ -0000000000000320 r __func__.39965
│ -0000000000000360 r __func__.39970
│ -00000000000003a0 r __func__.39988
│ -00000000000001e0 r __func__.40023
│ -00000000000001a0 r __func__.40038
│ -0000000000000220 r __func__.40053
│ -0000000000000260 r __func__.40061
│ -00000000000002a0 r __func__.40078
│ -0000000000000080 r __func__.40090
│ -00000000000003e0 r __func__.40097
│ +00000000000002d0 r __func__.37686
│ +00000000000002f0 r __func__.39309
│ +0000000000000170 r __func__.39806
│ +00000000000004a0 r __func__.39828
│ +0000000000000480 r __func__.39846
│ +0000000000000040 r __func__.39864
│ +0000000000000400 r __func__.39870
│ +00000000000000a0 r __func__.39884
│ +00000000000000c0 r __func__.39894
│ +00000000000000e0 r __func__.39900
│ +0000000000000100 r __func__.39914
│ +0000000000000120 r __func__.39920
│ +0000000000000000 r __func__.39926
│ +0000000000000020 r __func__.39934
│ +00000000000003c0 r __func__.39942
│ +0000000000000460 r __func__.39947
│ +0000000000000060 r __func__.39953
│ +0000000000000440 r __func__.39958
│ +0000000000000420 r __func__.39968
│ +0000000000000140 r __func__.39979
│ +0000000000000320 r __func__.39984
│ +0000000000000360 r __func__.39989
│ +00000000000003a0 r __func__.40007
│ +00000000000001e0 r __func__.40042
│ +00000000000001a0 r __func__.40057
│ +0000000000000220 r __func__.40072
│ +0000000000000260 r __func__.40080
│ +00000000000002a0 r __func__.40097
│ +0000000000000080 r __func__.40109
│ +00000000000003e0 r __func__.40116
│                   U __rte_panic
│                   U __snprintf_chk
│                   U __stack_chk_fail
│                   U __tls_get_addr
│                   U crypto_virtio_hw_internal
│  0000000000000fea t crypto_virtio_pci_probe
│  0000000000000050 t crypto_virtio_pci_remove
│ @@ -251,19 +251,19 @@
│  000000000000003c r .LC3
│  0000000000000028 r .LC4
│  0000000000000060 r .LC5
│  000000000000005a r .LC7
│  0000000000000098 r .LC8
│  00000000000000c8 r .LC9
│                   U _GLOBAL_OFFSET_TABLE_
│ -0000000000000050 r __func__.38928
│ -0000000000000070 r __func__.39003
│ -0000000000000000 r __func__.39054
│ -0000000000000010 r __func__.39062
│ -0000000000000030 r __func__.39077
│ +0000000000000050 r __func__.38949
│ +0000000000000070 r __func__.39024
│ +0000000000000000 r __func__.39075
│ +0000000000000010 r __func__.39083
│ +0000000000000030 r __func__.39098
│                   U __stack_chk_fail
│  0000000000000400 C crypto_virtio_hw_internal
│  000000000000002b t get_cfg_addr
│  0000000000000190 t modern_del_queue
│  0000000000000080 t modern_get_features
│  0000000000000120 t modern_get_isr
│  0000000000000170 t modern_get_queue_num
│ @@ -307,23 +307,23 @@
│  0000000000000010 r .LC2
│  0000000000000020 r .LC3
│  0000000000000060 r .LC4
│  0000000000000080 r .LC5
│  0000000000000110 r .LC7
│  0000000000000016 r .LC8
│                   U _GLOBAL_OFFSET_TABLE_
│ -00000000000000d0 r __func__.36564
│ -00000000000000f0 r __func__.38828
│ -0000000000000060 r __func__.38875
│ -0000000000000090 r __func__.38887
│ -0000000000000150 r __func__.38896
│ -0000000000000170 r __func__.38906
│ -0000000000000130 r __func__.38912
│ -0000000000000110 r __func__.38927
│ -00000000000000b0 r __func__.38936
│ +00000000000000d0 r __func__.36581
│ +00000000000000f0 r __func__.38845
│ +0000000000000060 r __func__.38892
│ +0000000000000090 r __func__.38904
│ +0000000000000150 r __func__.38913
│ +0000000000000170 r __func__.38923
│ +0000000000000130 r __func__.38929
│ +0000000000000110 r __func__.38944
│ +00000000000000b0 r __func__.38953
│                   U __rte_panic
│                   U __stack_chk_fail
│                   U __tls_get_addr
│                   U crypto_virtio_hw_internal
│                   U cryptodev_virtio_driver_id
│                   U per_lcore__lcore_id
│                   U rte_log
│ @@ -343,15 +343,15 @@
│                   U virtqueue_disable_intr
│  
│  crypto_virtio_virtqueue.c.o:
│  0000000000000000 r .LC0
│  0000000000000000 r .LC1
│  0000000000000040 r .LC2
│                   U _GLOBAL_OFFSET_TABLE_
│ -0000000000000000 r __func__.36474
│ +0000000000000000 r __func__.36491
│                   U __rte_panic
│                   U __stack_chk_fail
│                   U __tls_get_addr
│                   U per_lcore__lcore_id
│  0000000000000000 t rte_mempool_ops_enqueue_bulk.part.0
│                   U rte_mempool_ops_table
│  0000000000000000 t rte_pktmbuf_free
├── filetype from diffoscope
│ @@ -1 +1 @@
│ -ArFile
│ +StaticLibFile


Not sure how it detects the file type, and why it changes from ArFile
to StaticLibFile (or what's the difference between the two).

Old package with librte_pmd_virtio_crypto.a stripped correctly:

http://snapshot.debian.org/package/dpdk/19.11-3/#libdpdk-dev_19.11-3

New package with librte_pmd_virtio_crypto.a unstripped:

https://salsa.debian.org/paelzer-guest/dpdk/-/jobs/630625/artifacts/file/debian/output/libdpdk-dev_19.11.1-1+salsaci_amd64.deb

-- 
Kind regards,
Luca Boccassi
[signature.asc (application/pgp-signature, inline)]

Information forwarded to debian-bugs-dist@lists.debian.org, Debhelper Maintainers <debhelper@packages.debian.org>:
Bug#875780; Package debhelper. (Sat, 28 Mar 2020 12:21:05 GMT) (full text, mbox, link).


Acknowledgement sent to Luca Boccassi <bluca@debian.org>:
Extra info received and forwarded to list. Copy sent to Debhelper Maintainers <debhelper@packages.debian.org>. (Sat, 28 Mar 2020 12:21:05 GMT) (full text, mbox, link).


Message #20 received at 875780@bugs.debian.org (full text, mbox, reply):

From: Luca Boccassi <bluca@debian.org>
To: 875780@bugs.debian.org
Cc: pkg-dpdk-devel@lists.alioth.debian.org
Subject: Re: /usr/bin/dh_strip: dh_strip: perl -B incorrectly filters out some files
Date: Sat, 28 Mar 2020 12:16:28 +0000
[Message part 1 (text/plain, inline)]
Control: tags -1 patch

On Fri, 2020-03-27 at 11:56 +0000, Luca Boccassi wrote:
> > 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
> 
> I face the same problem - a static library built on Jan 28th was
> stripped correctly, but one built on March 26th is now ignored by
> dh_strip because perl thinks it's a text file. The library has no
> diff
> between the two builds.
> 
> Once manually stripped, diffoscope reports this difference between
> the
> two libraries:
> 
> --- librte_pmd_virtio_crypto.a.old
> +++ librte_pmd_virtio_crypto.a
> ├── nm -s {}
> │ @@ -114,44 +114,44 @@
> │  000000000000012c r .LC82
> │  0000000000000143 r .LC83
> │  000000000000015d r .LC84
> │  0000000000000172 r .LC85
> │  0000000000000187 r .LC86
> │  00000000000000c8 r .LC9
> │                   U _GLOBAL_OFFSET_TABLE_
> │ -00000000000002d0 r __func__.37667
> │ -00000000000002f0 r __func__.39290
> │ -0000000000000170 r __func__.39787
> │ -00000000000004a0 r __func__.39809
> │ -0000000000000480 r __func__.39827
> │ -0000000000000040 r __func__.39845
> │ -0000000000000400 r __func__.39851
> │ -00000000000000a0 r __func__.39865
> │ -00000000000000c0 r __func__.39875
> │ -00000000000000e0 r __func__.39881
> │ -0000000000000100 r __func__.39895
> │ -0000000000000120 r __func__.39901
> │ -0000000000000000 r __func__.39907
> │ -0000000000000020 r __func__.39915
> │ -00000000000003c0 r __func__.39923
> │ -0000000000000460 r __func__.39928
> │ -0000000000000060 r __func__.39934
> │ -0000000000000440 r __func__.39939
> │ -0000000000000420 r __func__.39949
> │ -0000000000000140 r __func__.39960
> │ -0000000000000320 r __func__.39965
> │ -0000000000000360 r __func__.39970
> │ -00000000000003a0 r __func__.39988
> │ -00000000000001e0 r __func__.40023
> │ -00000000000001a0 r __func__.40038
> │ -0000000000000220 r __func__.40053
> │ -0000000000000260 r __func__.40061
> │ -00000000000002a0 r __func__.40078
> │ -0000000000000080 r __func__.40090
> │ -00000000000003e0 r __func__.40097
> │ +00000000000002d0 r __func__.37686
> │ +00000000000002f0 r __func__.39309
> │ +0000000000000170 r __func__.39806
> │ +00000000000004a0 r __func__.39828
> │ +0000000000000480 r __func__.39846
> │ +0000000000000040 r __func__.39864
> │ +0000000000000400 r __func__.39870
> │ +00000000000000a0 r __func__.39884
> │ +00000000000000c0 r __func__.39894
> │ +00000000000000e0 r __func__.39900
> │ +0000000000000100 r __func__.39914
> │ +0000000000000120 r __func__.39920
> │ +0000000000000000 r __func__.39926
> │ +0000000000000020 r __func__.39934
> │ +00000000000003c0 r __func__.39942
> │ +0000000000000460 r __func__.39947
> │ +0000000000000060 r __func__.39953
> │ +0000000000000440 r __func__.39958
> │ +0000000000000420 r __func__.39968
> │ +0000000000000140 r __func__.39979
> │ +0000000000000320 r __func__.39984
> │ +0000000000000360 r __func__.39989
> │ +00000000000003a0 r __func__.40007
> │ +00000000000001e0 r __func__.40042
> │ +00000000000001a0 r __func__.40057
> │ +0000000000000220 r __func__.40072
> │ +0000000000000260 r __func__.40080
> │ +00000000000002a0 r __func__.40097
> │ +0000000000000080 r __func__.40109
> │ +00000000000003e0 r __func__.40116
> │                   U __rte_panic
> │                   U __snprintf_chk
> │                   U __stack_chk_fail
> │                   U __tls_get_addr
> │                   U crypto_virtio_hw_internal
> │  0000000000000fea t crypto_virtio_pci_probe
> │  0000000000000050 t crypto_virtio_pci_remove
> │ @@ -251,19 +251,19 @@
> │  000000000000003c r .LC3
> │  0000000000000028 r .LC4
> │  0000000000000060 r .LC5
> │  000000000000005a r .LC7
> │  0000000000000098 r .LC8
> │  00000000000000c8 r .LC9
> │                   U _GLOBAL_OFFSET_TABLE_
> │ -0000000000000050 r __func__.38928
> │ -0000000000000070 r __func__.39003
> │ -0000000000000000 r __func__.39054
> │ -0000000000000010 r __func__.39062
> │ -0000000000000030 r __func__.39077
> │ +0000000000000050 r __func__.38949
> │ +0000000000000070 r __func__.39024
> │ +0000000000000000 r __func__.39075
> │ +0000000000000010 r __func__.39083
> │ +0000000000000030 r __func__.39098
> │                   U __stack_chk_fail
> │  0000000000000400 C crypto_virtio_hw_internal
> │  000000000000002b t get_cfg_addr
> │  0000000000000190 t modern_del_queue
> │  0000000000000080 t modern_get_features
> │  0000000000000120 t modern_get_isr
> │  0000000000000170 t modern_get_queue_num
> │ @@ -307,23 +307,23 @@
> │  0000000000000010 r .LC2
> │  0000000000000020 r .LC3
> │  0000000000000060 r .LC4
> │  0000000000000080 r .LC5
> │  0000000000000110 r .LC7
> │  0000000000000016 r .LC8
> │                   U _GLOBAL_OFFSET_TABLE_
> │ -00000000000000d0 r __func__.36564
> │ -00000000000000f0 r __func__.38828
> │ -0000000000000060 r __func__.38875
> │ -0000000000000090 r __func__.38887
> │ -0000000000000150 r __func__.38896
> │ -0000000000000170 r __func__.38906
> │ -0000000000000130 r __func__.38912
> │ -0000000000000110 r __func__.38927
> │ -00000000000000b0 r __func__.38936
> │ +00000000000000d0 r __func__.36581
> │ +00000000000000f0 r __func__.38845
> │ +0000000000000060 r __func__.38892
> │ +0000000000000090 r __func__.38904
> │ +0000000000000150 r __func__.38913
> │ +0000000000000170 r __func__.38923
> │ +0000000000000130 r __func__.38929
> │ +0000000000000110 r __func__.38944
> │ +00000000000000b0 r __func__.38953
> │                   U __rte_panic
> │                   U __stack_chk_fail
> │                   U __tls_get_addr
> │                   U crypto_virtio_hw_internal
> │                   U cryptodev_virtio_driver_id
> │                   U per_lcore__lcore_id
> │                   U rte_log
> │ @@ -343,15 +343,15 @@
> │                   U virtqueue_disable_intr
> │  
> │  crypto_virtio_virtqueue.c.o:
> │  0000000000000000 r .LC0
> │  0000000000000000 r .LC1
> │  0000000000000040 r .LC2
> │                   U _GLOBAL_OFFSET_TABLE_
> │ -0000000000000000 r __func__.36474
> │ +0000000000000000 r __func__.36491
> │                   U __rte_panic
> │                   U __stack_chk_fail
> │                   U __tls_get_addr
> │                   U per_lcore__lcore_id
> │  0000000000000000 t rte_mempool_ops_enqueue_bulk.part.0
> │                   U rte_mempool_ops_table
> │  0000000000000000 t rte_pktmbuf_free
> ├── filetype from diffoscope
> │ @@ -1 +1 @@
> │ -ArFile
> │ +StaticLibFile
> 
> 
> Not sure how it detects the file type, and why it changes from ArFile
> to StaticLibFile (or what's the difference between the two).
> 
> Old package with librte_pmd_virtio_crypto.a stripped correctly:
> 
> http://snapshot.debian.org/package/dpdk/19.11-3/#libdpdk-dev_19.11-3
> 
> New package with librte_pmd_virtio_crypto.a unstripped:
> 
> https://salsa.debian.org/paelzer-guest/dpdk/-/jobs/630625/artifacts/file/debian/output/libdpdk-dev_19.11.1-1+salsaci_amd64.deb

Opened MR on Salsa to add a fallback on file --mime-type when perl -B
fails:

https://salsa.debian.org/debian/debhelper/-/merge_requests/37

-- 
Kind regards,
Luca Boccassi
[signature.asc (application/pgp-signature, inline)]

Added tag(s) patch. Request was from Luca Boccassi <bluca@debian.org> to 875780-submit@bugs.debian.org. (Sat, 28 Mar 2020 12:21:06 GMT) (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org, Debhelper Maintainers <debhelper@packages.debian.org>:
Bug#875780; Package debhelper. (Sun, 29 Mar 2020 12:24:07 GMT) (full text, mbox, link).


Acknowledgement sent to Niels Thykier <niels@thykier.net>:
Extra info received and forwarded to list. Copy sent to Debhelper Maintainers <debhelper@packages.debian.org>. (Sun, 29 Mar 2020 12:24:07 GMT) (full text, mbox, link).


Message #27 received at 875780@bugs.debian.org (full text, mbox, reply):

From: Niels Thykier <niels@thykier.net>
To: Luca Boccassi <bluca@debian.org>, 875780@bugs.debian.org
Cc: pkg-dpdk-devel@lists.alioth.debian.org
Subject: Re: Bug#875780: /usr/bin/dh_strip: dh_strip: perl -B incorrectly filters out some files
Date: Sun, 29 Mar 2020 14:21:05 +0200
Luca Boccassi:
> Control: tags -1 patch
> 
> On Fri, 2020-03-27 at 11:56 +0000, Luca Boccassi wrote:
>>> [...]
>>
>> I face the same problem - a static library built on Jan 28th was
>> stripped correctly, but one built on March 26th is now ignored by
>> dh_strip because perl thinks it's a text file. The library has no
>> diff
>> between the two builds.
>>
>> Once manually stripped, diffoscope reports this difference between
>> the
>> two libraries:
>>
>> [...]
>>
>>
>> Not sure how it detects the file type, and why it changes from ArFile
>> to StaticLibFile (or what's the difference between the two).
>>
>> Old package with librte_pmd_virtio_crypto.a stripped correctly:
>>
>> http://snapshot.debian.org/package/dpdk/19.11-3/#libdpdk-dev_19.11-3
>>
>> New package with librte_pmd_virtio_crypto.a unstripped:
>>
>> https://salsa.debian.org/paelzer-guest/dpdk/-/jobs/630625/artifacts/file/debian/output/libdpdk-dev_19.11.1-1+salsaci_amd64.deb
> 
> Opened MR on Salsa to add a fallback on file --mime-type when perl -B
> fails:
> 
> https://salsa.debian.org/debian/debhelper/-/merge_requests/37
> 

Hi Luca,

Thanks for the proposed patch.

At this point, I would rather slowly move away from the use of file(1)
and am more interested in a patch that avoided new uses of file.

The primary issue is that debhelper's design is not a good match with
programs with a "slow" upstart time.  This leads to "weird" work arounds
to avoid the "penality" for running the program (e.g. as was done with
ELF binaries until compat 12 where we finally started doing the right
thing).

~Niels



Information forwarded to debian-bugs-dist@lists.debian.org, Debhelper Maintainers <debhelper@packages.debian.org>:
Bug#875780; Package debhelper. (Sun, 29 Mar 2020 12:39:03 GMT) (full text, mbox, link).


Acknowledgement sent to Luca Boccassi <bluca@debian.org>:
Extra info received and forwarded to list. Copy sent to Debhelper Maintainers <debhelper@packages.debian.org>. (Sun, 29 Mar 2020 12:39:03 GMT) (full text, mbox, link).


Message #32 received at 875780@bugs.debian.org (full text, mbox, reply):

From: Luca Boccassi <bluca@debian.org>
To: Niels Thykier <niels@thykier.net>
Cc: 875780@bugs.debian.org, pkg-dpdk-devel@lists.alioth.debian.org
Subject: Re: [Pkg-dpdk-devel] Bug#875780: /usr/bin/dh_strip: dh_strip: perl -B incorrectly filters out some files
Date: Sun, 29 Mar 2020 13:35:34 +0100
On Sun, 29 Mar 2020 at 13:22, Niels Thykier <niels@thykier.net> wrote:
>
> Luca Boccassi:
> > Control: tags -1 patch
> >
> > On Fri, 2020-03-27 at 11:56 +0000, Luca Boccassi wrote:
> >>> [...]
> >>
> >> I face the same problem - a static library built on Jan 28th was
> >> stripped correctly, but one built on March 26th is now ignored by
> >> dh_strip because perl thinks it's a text file. The library has no
> >> diff
> >> between the two builds.
> >>
> >> Once manually stripped, diffoscope reports this difference between
> >> the
> >> two libraries:
> >>
> >> [...]
> >>
> >>
> >> Not sure how it detects the file type, and why it changes from ArFile
> >> to StaticLibFile (or what's the difference between the two).
> >>
> >> Old package with librte_pmd_virtio_crypto.a stripped correctly:
> >>
> >> http://snapshot.debian.org/package/dpdk/19.11-3/#libdpdk-dev_19.11-3
> >>
> >> New package with librte_pmd_virtio_crypto.a unstripped:
> >>
> >> https://salsa.debian.org/paelzer-guest/dpdk/-/jobs/630625/artifacts/file/debian/output/libdpdk-dev_19.11.1-1+salsaci_amd64.deb
> >
> > Opened MR on Salsa to add a fallback on file --mime-type when perl -B
> > fails:
> >
> > https://salsa.debian.org/debian/debhelper/-/merge_requests/37
> >
>
> Hi Luca,
>
> Thanks for the proposed patch.
>
> At this point, I would rather slowly move away from the use of file(1)
> and am more interested in a patch that avoided new uses of file.
>
> The primary issue is that debhelper's design is not a good match with
> programs with a "slow" upstart time.  This leads to "weird" work arounds
> to avoid the "penality" for running the program (e.g. as was done with
> ELF binaries until compat 12 where we finally started doing the right
> thing).
>
> ~Niels

Hi,

I understand, and fully agree with the goal. However I'm really not
sure how to go and fix Perl's broken heuristics - it sounds really
scary :-) And I can't think of any other way to fix it at the moment.
Should I avoid dh_strip in the affected package? Or is there any other
way?

Thanks!

Kind regards,
Luca Boccassi



Marked as found in versions debhelper/13.3.3. Request was from Niels Thykier <niels@thykier.net> to 982908-submit@bugs.debian.org. (Tue, 16 Feb 2021 20:48:03 GMT) (full text, mbox, link).


Merged 875780 982908 Request was from Niels Thykier <niels@thykier.net> to 982908-submit@bugs.debian.org. (Tue, 16 Feb 2021 20:48:05 GMT) (full text, mbox, link).


Information forwarded to debian-bugs-dist@lists.debian.org, Debhelper Maintainers <debhelper@packages.debian.org>:
Bug#875780; Package debhelper. (Sat, 21 Jan 2023 15:57:10 GMT) (full text, mbox, link).


Acknowledgement sent to Sven Joachim <svenjoac@gmx.de>:
Extra info received and forwarded to list. Copy sent to Debhelper Maintainers <debhelper@packages.debian.org>. (Sat, 21 Jan 2023 15:57:10 GMT) (full text, mbox, link).


Message #41 received at 875780@bugs.debian.org (full text, mbox, reply):

From: Sven Joachim <svenjoac@gmx.de>
To: Niels Thykier <niels@thykier.net>
Cc: Luca Boccassi <bluca@debian.org>, 875780@bugs.debian.org, pkg-dpdk-devel@lists.alioth.debian.org
Subject: Re: Bug#875780: /usr/bin/dh_strip: dh_strip: perl -B incorrectly filters out some files
Date: Sat, 21 Jan 2023 16:56:19 +0100
Chiming in here, as I am unfortunately affected by this relatively rare
problem.

On 2020-03-29 14:21 +0200, Niels Thykier wrote:

> Luca Boccassi:
>> Control: tags -1 patch
>>
>> On Fri, 2020-03-27 at 11:56 +0000, Luca Boccassi wrote:
>>>> [...]
>>>
>>> I face the same problem - a static library built on Jan 28th was
>>> stripped correctly, but one built on March 26th is now ignored by
>>> dh_strip because perl thinks it's a text file. The library has no
>>> diff
>>> between the two builds.
>>>
>>> Once manually stripped, diffoscope reports this difference between
>>> the
>>> two libraries:
>>>
>>> [...]
>>>
>>>
>>> Not sure how it detects the file type, and why it changes from ArFile
>>> to StaticLibFile (or what's the difference between the two).
>>>
>>> Old package with librte_pmd_virtio_crypto.a stripped correctly:
>>>
>>> http://snapshot.debian.org/package/dpdk/19.11-3/#libdpdk-dev_19.11-3
>>>
>>> New package with librte_pmd_virtio_crypto.a unstripped:
>>>
>>> https://salsa.debian.org/paelzer-guest/dpdk/-/jobs/630625/artifacts/file/debian/output/libdpdk-dev_19.11.1-1+salsaci_amd64.deb
>>
>> Opened MR on Salsa to add a fallback on file --mime-type when perl -B
>> fails:
>>
>> https://salsa.debian.org/debian/debhelper/-/merge_requests/37
>>
>
> Hi Luca,
>
> Thanks for the proposed patch.
>
> At this point, I would rather slowly move away from the use of file(1)
> and am more interested in a patch that avoided new uses of file.
>
> The primary issue is that debhelper's design is not a good match with
> programs with a "slow" upstart time.  This leads to "weird" work arounds
> to avoid the "penality" for running the program (e.g. as was done with
> ELF binaries until compat 12 where we finally started doing the right
> thing).

Would it be possible to use libfile-libmagic-perl here and in other
cases where debhelper currently uses file(1)?  At least that would save
the overhead of process creation.

Cheers,
       Sven



Send a report that this bug log contains spam.


Debian bug tracking system administrator <owner@bugs.debian.org>. Last modified: Fri Apr 19 15:36:11 2024; Machine Name: bembo

Debian Bug tracking system

Debbugs is free software and licensed under the terms of the GNU Public License version 2. The current version can be obtained from https://bugs.debian.org/debbugs-source/.

Copyright © 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson, 2005-2017 Don Armstrong, and many other contributors.