[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1031669: lintian: [false positive] shared-library-lacks-prerequisites



Package: lintian
Version: 2.116.3
Severity: normal
X-Debbugs-Cc: gs-bugs.debian.org@gluelogic.com

Dear Maintainer,

Problem: lintian: [false positive] shared-library-lacks-prerequisites

lighttpd is a modular application which dynamically loads (dlopen)
optional modules (.so) depending on user lighttpd.conf configuration.

On platforms which require shared libraries to resolve all symbols
at link time, lighttpd compiles a shared library against which each
lighttpd module (.so) is linked.

On platforms which allow shared libraries to access (exported) global
symbols from the base executable, lighttpd does not create a separate
shared library for these shared symbols; the symbols are in the base exe

shared-library-lacks-prerequisites is falsely reported for one lighttpd
shared module (mod_sockproxy.so) which has no dependencies besides the
symbols in the base executable.  (shared-library-lacks-prerequisites
fails to catch the same is true for mod_access.so and mod_staticfile.so)

**What is the goal of shared-library-lacks-prerequisites lintian tag?**
https://lintian.debian.org/tags/shared-library-lacks-prerequisites

Why does this lintian tag exist?  What does it identify and why?
Should it be applied only to packages which are marked as libraries?
Maybe it should be applied only to packages which have a -devel package?
Should it *not be applied* to applications?
If this lintian tag intends to catch errors on certain platforms,
then these lintian tests should be run only on those platforms.

My personal opinion is that shared-library-lacks-prerequisites
should be removed. 

At a mimimum, shared-library-lacks-prerequisites and other lintian
tags should attempt to explain *why* they exist and what problem(s)
they are trying to identify, rather than only giving a terse technical
explanation of *what* they check.

https://lintian.debian.org/tags/shared-library-lacks-prerequisites
suggests linking with -lc.  This workaround is unnecessary make-work.
lintian could already use `file` to detect a dynamically linked,
shared object, if lintian does not already know this by the extension
(.so).  What does explicit -lc do besides tell lintian to stfu?
Why should an upstream project make such changes to their build system?

Please help me to understand why I should not simply ignore the
lintian warning for shared-library-lacks-prerequisites.
  
Thank you.  Glenn

-- System Information:
Debian Release: bookworm/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 5.10.0-10-amd64 (SMP w/1 CPU thread)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages lintian depends on:
ii  binutils                        2.40-2
ii  bzip2                           1.0.8-5+b1
ii  diffstat                        1.65-1
ii  dpkg                            1.21.19
ii  dpkg-dev                        1.21.19
ii  file                            1:5.44-3
ii  gettext                         0.21-11
ii  gpg                             2.2.40-1
ii  intltool-debian                 0.35.0+20060710.6
ii  iso-codes                       4.12.0-1
ii  libapt-pkg-perl                 0.1.40+b2
ii  libarchive-zip-perl             1.68-1
ii  libberkeleydb-perl              0.64-2+b1
ii  libcapture-tiny-perl            0.48-2
ii  libclass-xsaccessor-perl        1.19-4+b1
ii  libclone-perl                   0.46-1
ii  libconfig-tiny-perl             2.28-2
ii  libconst-fast-perl              0.014-2
ii  libcpanel-json-xs-perl          4.32-1+b1
ii  libdata-dpath-perl              0.58-2
ii  libdata-validate-domain-perl    0.10-1.1
ii  libdata-validate-uri-perl       0.07-2
ii  libdevel-size-perl              0.83-2+b1
pn  libdigest-sha-perl              <none>
ii  libdpkg-perl                    1.21.19
ii  libemail-address-xs-perl        1.05-1+b1
ii  libfile-basedir-perl            0.09-2
ii  libfile-find-rule-perl          0.34-3
ii  libfont-ttf-perl                1.06-2
ii  libhtml-html5-entities-perl     0.004-3
ii  libhtml-tokeparser-simple-perl  3.16-4
ii  libio-interactive-perl          1.023-2
ii  libipc-run3-perl                0.048-3
ii  libjson-maybexs-perl            1.004004-1
ii  liblist-compare-perl            0.55-2
ii  liblist-someutils-perl          0.59-1
ii  liblist-utilsby-perl            0.12-2
ii  libmldbm-perl                   2.05-4
ii  libmoo-perl                     2.005005-1
ii  libmoox-aliases-perl            0.001006-2
ii  libnamespace-clean-perl         0.27-2
ii  libpath-tiny-perl               0.144-1
ii  libperlio-gzip-perl             0.20-1+b1
ii  libperlio-utf8-strict-perl      0.010-1
ii  libproc-processtable-perl       0.634-1+b2
ii  libregexp-wildcards-perl        1.05-3
ii  libsereal-decoder-perl          5.002+ds-1
ii  libsereal-encoder-perl          5.002+ds-1
ii  libsort-versions-perl           1.62-3
ii  libsyntax-keyword-try-perl      0.28-1
ii  libterm-readkey-perl            2.38-2+b1
ii  libtext-levenshteinxs-perl      0.03-5+b1
ii  libtext-markdown-discount-perl  0.16-1
ii  libtext-xslate-perl             3.5.9-1+b2
ii  libtime-duration-perl           1.21-2
ii  libtime-moment-perl             0.44-2+b1
ii  libtimedate-perl                2.3300-2
ii  libunicode-utf8-perl            0.62-2
ii  liburi-perl                     5.17-1
ii  libwww-mechanize-perl           2.15-1
ii  libwww-perl                     6.67-1
ii  libxml-libxml-perl              2.0207+dfsg+really+2.0134-1+b1
ii  libyaml-libyaml-perl            0.86+ds-1
ii  lzip [lzip-decompressor]        1.23-5
ii  lzop                            1.04-2
ii  man-db                          2.11.2-1
ii  patchutils                      0.4.2-1
ii  perl [libencode-perl]           5.36.0-7
ii  t1utils                         1.41-4
ii  unzip                           6.0-27
ii  xz-utils                        5.4.1-0.1

lintian recommends no packages.

Versions of packages lintian suggests:
pn  binutils-multiarch     <none>
pn  libtext-template-perl  <none>

-- no debconf information


Reply to: