[Debian GNUstep maintainers] Bug#1084465: lintian: GNUstep packages and package-contains-documentation-outside-usr-share-doc

Yavor Doganov yavor at gnu.org
Mon Oct 7 12:08:47 BST 2024


Package: lintian
Version: 2.119.0
Severity: normal
Tags: patch
X-Debbugs-Cc: pkg-gnustep-maintainers at lists.alioth.debian.org

There are two major ("major" for us where "us" == Debian GNUstep team)
issues with this tag and our packages.  They are completely unrelated
so on second thought, it seems it would have been better if I filed
two separate bugs...  I was initially planning to solve them in one
shot (because lintian takes ~5 hours to build on my machine and it's
the same code spot), but I just realized this is probably wrong from
the Lintian developers' perspective.  Please clone this bug if you
intend to fix only the first problem (a clear false positive) and the
second one requires additional thought and/or discussion (or
wontfix'ing, etc).  Apologies for the inconvenience caused.

The first problem we have is that lintian emits
package-contains-documentation-outside-usr-share-doc for all Gorm
files because it assumes that a file with an .info extension is an
Info file:

I: aclock.app: package-contains-documentation-outside-usr-share-doc [usr/share/GNUstep/AClock.app/AClock.gorm/data.info]

A Gorm file (it's actually a directory containing at least 3 files,
but it's called a "file" in GNUstep terminology) contains a GUI --
archived objects and their relationships which are loaded and
instantiated at runtime.  In spirit, it is similar to .glade/.ui files
in the GNOME world but it's binary:

$ dpkg -L aclock.app | grep gorm
/usr/share/GNUstep/AClock.app/AClock.gorm
/usr/share/GNUstep/AClock.app/AClock.gorm/data.classes
/usr/share/GNUstep/AClock.app/AClock.gorm/data.info
/usr/share/GNUstep/AClock.app/AClock.gorm/objects.gorm

$ file /usr/share/GNUstep/AClock.app/AClock.gorm/data.info 
/usr/share/GNUstep/AClock.app/AClock.gorm/data.info: data

$ strings /usr/share/GNUstep/AClock.app/AClock.gorm/data.info 
GNUstep archive0000300c:00000003:00000003:00000000:0
GormFilePrefsManager
NSObject
NSString
Latest Version0
Typed Stream

This is definitely not documentation, just a poor choice of a file
extension.  There are some packages with many .gorm files and some
with translations (.gorm files are translatable but you have to copy
the translated .gorm file to the appropriate .lproj directory, thus
doing a close duplicate) which makes lintian output rather noisy.
Furthermore, nearly every .app package ships .gorm files so we
experience this quite often.  Eyes learn to ignore, but it would be
best if this gets fixed.

The second issue is lintian complaining (same tag) about .html and
.pdf files in /usr/share/GNUstep/Documentation.  These are legitimate
at first glance, but I believe that the same rationale should be
applied here as explained perfectly by Simon McVittie in #970275 for
the GTK/GNOME case.  Pretty much all of what he said there is
applicable for GNUstep: in order to resolve the cross-manual links, we
Build-Depend(-Indep) on the appropriate -doc package.  It is impossible
to maintain those links if we ship documentation in /usr/share/doc.

The only difference is that gnustep-make (GNUstep's build system)
installs HTML and PDF output from Texinfo manuals in the same
directory (/usr/share/GNUstep/Documentation), and these fall under
lintian's radar as well.  We don't have a dedicated API reference
browser like devhelp so this directory is a common starting point for
many GNUstep users -- all of them use a generic browser both for user
manuals and library API reference documentation.  So I believe these
should be exempt too.  FTPmasters appear to be OK with it and compared
to other GNUstep formal FHS/Policy violations, this seems palatable.

We install symlinks in /usr/share/doc so Debian users with no GNUstep
background should find documentation in the non-standard location
easily (the doc-base entries also point to the /usr/share/doc symlinks
to avoid a lintian error).

I have tested the attached patch with some GNUstep packages.  Perhaps
this change is incomplete and needs adding a test or something like
that.  Please let me know how to improve it.

-- System Information:
Debian Release: trixie/sid
  APT prefers unstable-debug
  APT policy: (500, 'unstable-debug'), (500, 'testing-debug'), (500, 'unstable'), (500, 'testing')
Architecture: amd64 (x86_64)
Foreign Architectures: i386, x32

Kernel: Linux 6.10.12-amd64 (SMP w/2 CPU threads; PREEMPT)
Locale: LANG=bg_BG.UTF-8, LC_CTYPE=bg_BG.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  appstream                       1.0.3-1
ii  binutils                        2.43.1-5
ii  bzip2                           1.0.8-6
ii  diffstat                        1.66-1
ii  dpkg                            1.22.11
ii  dpkg-dev                        1.22.11
ii  file                            1:5.45-3
ii  gettext                         0.22.5-2
ii  gpg                             2.2.44-1
ii  intltool-debian                 0.35.0+20060710.6
ii  iso-codes                       4.17.0-1
ii  libapt-pkg-perl                 0.1.40+b5
ii  libarchive-zip-perl             1.68-1
ii  libberkeleydb-perl              0.64-2+b3
ii  libcapture-tiny-perl            0.48-2
ii  libclass-xsaccessor-perl        1.19-4+b3
ii  libclone-perl                   0.47-1
ii  libconfig-tiny-perl             2.30-1
ii  libconst-fast-perl              0.014-2
ii  libcpanel-json-xs-perl          4.38-1
ii  libdata-dpath-perl              0.60-1
ii  libdata-validate-domain-perl    0.15-1
ii  libdata-validate-uri-perl       0.07-3
ii  libdevel-size-perl              0.84-1
pn  libdigest-sha-perl              <none>
ii  libdpkg-perl                    1.22.11
ii  libemail-address-xs-perl        1.05-1+b3
ii  libencode-perl                  3.21-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.025-1
ii  libipc-run3-perl                0.049-1
ii  libjson-maybexs-perl            1.004008-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.146-1
ii  libperlio-gzip-perl             0.20-1+b3
ii  libperlio-utf8-strict-perl      0.010-1+b2
ii  libproc-processtable-perl       0.636-1+b2
ii  libregexp-wildcards-perl        1.05-3
ii  libsereal-decoder-perl          5.004+ds-1+b2
ii  libsereal-encoder-perl          5.004+ds-1+b2
ii  libsort-versions-perl           1.62-3
ii  libsyntax-keyword-try-perl      0.30-1
ii  libterm-readkey-perl            2.38-2+b3
ii  libtext-levenshteinxs-perl      0.03-5+b3
ii  libtext-markdown-discount-perl  0.16-1+b2
ii  libtext-xslate-perl             3.5.9-2
ii  libtime-duration-perl           1.21-2
ii  libtime-moment-perl             0.44-2+b3
ii  libtimedate-perl                2.3300-2
ii  libunicode-utf8-perl            0.62-2+b2
ii  liburi-perl                     5.29-1
ii  libwww-mechanize-perl           2.19-1
ii  libwww-perl                     6.77-1
ii  libxml-libxml-perl              2.0207+dfsg+really+2.0134-5
ii  libyaml-libyaml-perl            0.902.0+ds-2
ii  lzip [lzip-decompressor]        1.24.1-2
ii  lzop                            1.04-2
ii  man-db                          2.13.0-1
ii  patchutils                      0.4.2-1
ii  perl [libversion-perl]          5.38.2-5
ii  t1utils                         1.41-4
ii  unzip                           6.0-28
ii  xz-utils                        5.6.2-2

lintian recommends no packages.

Versions of packages lintian suggests:
ii  binutils-multiarch     2.43.1-5
ii  libtext-template-perl  1.61-1

-- no debconf information
-------------- next part --------------
diff --git a/lib/Lintian/Check/Documentation.pm b/lib/Lintian/Check/Documentation.pm
index 364ecde2f..4f997951c 100644
--- a/lib/Lintian/Check/Documentation.pm
+++ b/lib/Lintian/Check/Documentation.pm
@@ -150,7 +150,12 @@ sub visit_installed_files {
           # see Bug#1009679, not documentation, just an unlucky suffix
           || $item->name =~ m{^var/lib/ocaml/lintian/.+[.]info$}
           # see Bug#970275
-          || $item->name =~ m{^usr/share/gtk-doc/html/.+[.]html?$};
+          || $item->name =~ m{^usr/share/gtk-doc/html/.+[.]html?$}
+          # GNUstep documentation, same rationale as Bug#970275
+          || $item->name =~ m{^usr/share/GNUstep/Documentation/
+                              .+[.](html|pdf)$}x
+          # GNUstep Gorm files (not documentation)
+          || ($item->dirname =~ m{[.]gorm} && $item->basename eq 'data.info');
     }
 
     if ($item->name =~ m{^usr/share/doc/\S}) {


More information about the pkg-GNUstep-maintainers mailing list