--- Begin Message ---
- To: Debian Bug Tracking System <submit@bugs.debian.org>
- Subject: Allow rpaths in /usr/lib/ghc/
- From: Joachim Breitner <nomeata@debian.org>
- Date: Thu, 20 Nov 2014 21:03:12 +0100
- Message-id: <20141120200312.12210.17487.reportbug@kirk>
Package: lintian
Version: 2.5.30+deb8u2
Severity: important
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi,
I just tried to upload a Haskell package built with ghc-7.8, but it was
rejected:
libghc-mtl-dev: lintian output: 'binary-or-shlib-defines-rpath usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-7.8.3/mtl-2.1.3.1/libHSmtl-2.1.3.1-ghc7.8.3.so /usr/lib/ghc/ghc-prim-0.3.1.0', automatically rejected package.
libghc-mtl-dev: If you have a good reason, you may override this lintian tag.
libghc-mtl-dev: lintian output: 'binary-or-shlib-defines-rpath usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-7.8.3/mtl-2.1.3.1/libHSmtl-2.1.3.1-ghc7.8.3.so /usr/lib/ghc/integer-gmp-0.5.1.0', automatically rejected package.
libghc-mtl-dev: If you have a good reason, you may override this lintian tag.
libghc-mtl-dev: lintian output: 'binary-or-shlib-defines-rpath usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-7.8.3/mtl-2.1.3.1/libHSmtl-2.1.3.1-ghc7.8.3.so /usr/lib/ghc/transformers-0.3.0.0', automatically rejected package.
libghc-mtl-dev: If you have a good reason, you may override this lintian tag.
libghc-mtl-dev: lintian output: 'binary-or-shlib-defines-rpath usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-7.8.3/mtl-2.1.3.1/libHSmtl-2.1.3.1-ghc7.8.3.so /usr/lib/ghc/base-4.7.0.1', automatically rejected package.
libghc-mtl-dev: If you have a good reason, you may override this lintian tag.
libghc-mtl-dev: lintian output: 'binary-or-shlib-defines-rpath usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-7.8.3/mtl-2.1.3.1/libHSmtl-2.1.3.1-ghc7.8.3.so /usr/lib/ghc/rts-1.0', automatically rejected package.
libghc-mtl-dev: If you have a good reason, you may override this lintian tag.
GHC-7.8 (in experimental) started to also create shared libraries, but
these live in private paths, so it uses rpath allow the linker to find
them. It seems to me that this is a valid use of rpath.
I could start to create override files and add them to ~700 packages,
but it seems to make more sense to make lintian aware of this use, and
do not report this error for rpaths pointing to something in /usr/lib/ghc/.
I mark this as important as it prevents us from uploading further
Haskell packages to experimental (at least without temporary
work-arounds).
Thanks,
Joachim
- -- System Information:
Debian Release: jessie/sid
APT prefers unstable
APT policy: (500, 'unstable'), (101, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
armhf
Kernel: Linux 3.16.0-4-amd64 (SMP w/4 CPU cores)
Locale: LANG=de_DE.utf8, LC_CTYPE=de_DE.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages lintian depends on:
ii binutils 2.24.90.20141111-2
ii bzip2 1.0.6-7+b1
ii diffstat 1.58-1
ii file 1:5.20-2
ii gettext 0.19.3-1
ii hardening-includes 2.7
ii intltool-debian 0.35.0+20060710.1
ii libapt-pkg-perl 0.1.29+b2
ii libarchive-zip-perl 1.39-1
ii libclass-accessor-perl 0.34-1
ii libclone-perl 0.37-1+b1
ii libdpkg-perl 1.17.21
ii libemail-valid-perl 1.195-1
ii libfile-basedir-perl 0.03-1
ii libipc-run-perl 0.92-1
ii liblist-moreutils-perl 0.33-2+b1
ii libparse-debianchangelog-perl 1.2.0-1.1
ii libtext-levenshtein-perl 0.11-1
ii libtimedate-perl 2.3000-2
ii liburi-perl 1.64-1
ii man-db 2.7.0.2-3
ii patchutils 0.3.3-1
ii perl [libdigest-sha-perl] 5.20.1-3
ii t1utils 1.38-1
Versions of packages lintian recommends:
ii libautodie-perl 2.25-1
ii libperlio-gzip-perl 0.18-3+b1
ii perl 5.20.1-3
ii perl-modules [libautodie-perl] 5.20.1-3
Versions of packages lintian suggests:
pn binutils-multiarch <none>
ii dpkg-dev 1.17.21
ii libhtml-parser-perl 3.71-1+b3
ii libtext-template-perl 1.46-1
ii libyaml-perl 1.13-1
ii xz-utils 5.1.1alpha+20120614-2+b1
- -- no debconf information
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iEYEARECAAYFAlRuSP4ACgkQ9ijrk0dDIGz51wCgkQZOTfg3npjwFZfLAX0FNmP1
MCwAoJ4kDPK+Zj79/MUB67yDnar6vxSo
=D5ct
-----END PGP SIGNATURE-----
--- End Message ---
--- Begin Message ---
Hi,
> They are usually named "libghc-.*-dev", but I think it is safer to match
> on the target of the rpath: If it is in /usr/lib/ghc/, it is ok.
That is already Implemented.
The check was recently made separate and is now nice and manageable. [1]
The sources mentioned in the bug, haskell-mtl, is no longer in the
archive but I checked with haskell hledger. [2] The installation
package libghc-hledger-dev ships the following object files with
custom library search paths:
RPATH /usr/lib/ghc/pretty-1.1.3.6 in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
RPATH /usr/lib/ghc/transformers-0.5.6.2 in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
RPATH /usr/lib/ghc/ghc-prim-0.5.3 in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
RPATH /usr/lib/ghc/process-1.6.9.0 in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
RPATH /usr/lib/ghc/integer-gmp-1.0.2.0 in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
RPATH /usr/lib/ghc/unix-2.7.2.2 in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
RPATH /usr/lib/ghc/stm-2.5.0.0 in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
RPATH /usr/lib/ghc/base-4.13.0.0 in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
RPATH /usr/lib/ghc/time-1.9.3 in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
RPATH /usr/lib/ghc/haskeline-0.7.5.0 in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
RPATH /usr/lib/ghc/array-0.5.4.0 in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
RPATH /usr/lib/ghc/filepath-1.4.2.1 in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
RPATH /usr/lib/ghc/parsec-3.1.14.0 in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
RPATH /usr/lib/ghc/rts in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
RPATH /usr/lib/ghc/template-haskell-2.15.0.0 in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
RPATH /usr/lib/ghc/text-1.2.4.0 in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
RPATH /usr/lib/ghc/mtl-2.2.2 in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
RPATH /usr/lib/ghc/containers-0.6.2.1 in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
RPATH /usr/lib/ghc/deepseq-1.4.4.0 in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
RPATH /usr/lib/ghc/terminfo-0.4.1.4 in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
RPATH /usr/lib/ghc/ghc-boot-th-8.8.4 in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
RPATH /usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4 in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
RPATH /usr/lib/ghc/directory-1.3.6.0 in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
RPATH /usr/lib/ghc/bytestring-0.10.10.1 in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
RPATH /usr/lib/ghc/binary-0.8.7.0 in
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
At the same time, Lintian produces only one hint about it:
E: libghc-hledger-dev: missing-depends-on-sensible-utils
sensible-browser
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
I: libghc-hledger-dev: hardening-no-bindnow
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
I: libghc-hledger-dev: spelling-error-in-binary
usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so
ment meant
P: libghc-hledger-dev: renamed-tag binary-or-shlib-defines-rpath =>
custom-library-search-path in line 1
P: libghc-hledger-dev: repeated-path-segment lib
usr/lib/haskell-packages/ghc/lib/
O: libghc-hledger-dev: custom-library-search-path RUNPATH
/usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4
[usr/lib/haskell-packages/ghc/lib/x86_64-linux-ghc-8.8.4/libHShledger-1.19.1-DfDb19q3FdlIJW0KnhRJyq-ghc8.8.4.so]
That override is needed because the path /usr/lib/haskell-packages was
not identified as a package-private path. A lot of Haskell packages
have those overrides in the archive. [3] You probably added them
wholesale.
Lintian recently gained the ability to grant exemptions to package
groups. [4] We would be happy to deploy that facility on your behalf.
What is nowadays the most reliable way to tell that an object file was
probably built from the Haskell toolchain?
On a side note, Lintian's new website was just re-implemented in
Haskell. It is one of my favorite languages. Please ask for more
Haskell support from Lintian. Thanks!
Kind regards
Felix Lechner
[1] https://salsa.debian.org/lintian/lintian/-/tree/master/lib/Lintian/Check//Binaries/Rpath.pm
[2] https://tracker.debian.org/pkg/haskell-hledger
[3] https://lintian.debian.org/tags/custom-library-search-path
[4] https://lintian.debian.org/screens
--- End Message ---