Package: lintian Version: 2.119.0 Severity: normal Tags: patch X-Debbugs-Cc: pkg-gnustep-maintain...@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
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}) {