New lintian checks for X.Org 7 migration
I'd like to have lintian start helping with notifying packagers of the
X.Org 7 migration. However, I don't want to make matters worse by putting
in a bad check. If someone has a moment, could you look over the
following set of checks and ensure that they're accurate?
(I know more checks are probably needed; at the least, checks for the
versioned dependencies on debhelper and xutils-dev would be good. But
this seems like a good starting point.)
The three check descriptions are:
Tag: package-installs-font-to-usr-x11r6
Type: error
Info: The standard location for X fonts has moved to /usr/share/fonts/X11.
Packages providing X fonts must install them into the new path. Fonts
installed into the old /usr/X11R6/lib/X11/fonts path may not be seen by
the X server.
.
If the package uses imake, it must build-depend on xutils-dev (>=
1:1.0.2-1) for the correct paths. If it uses dh_installxfonts to handle X
font installation, it must build-depend on debhelper (>= 5.0.29).
Tag: package-installs-file-to-usr-x11r6-bin
Type: error
Info: Debian has switched to the modular X tree which now uses the regular
FHS paths, and all packages must follow. All packages installing binaries
must install them into /usr/bin (or some other appropriate location)
instead of /usr/X11R6/bin.
.
The x11-common package attempts to change /usr/X11R6/bin into a symlink
to /usr/bin, so if this migration has already occurred, a package
installing files into /usr/X11R6/bin may appear to install
successfully. However, such a package will be left in an inconsistent
state and may orphan files when the compatibility link goes away.
.
If the package uses imake, it must build-depend on xutils-dev (>=
1:1.0.2-1) for the correct paths.
Tag: package-installs-file-to-usr-x11r6
Type: error
Info: Packages using the X Window System should not be configured to install
files under the /usr/X11R6/ directory. Debian has switched to the modular
X tree which now uses regular FHS paths and all packages should follow.
.
Programs that use GNU autoconf and automake are usually easily configured
at compile time to use /usr/ instead of /usr/X11R6/. Packages that use
imake must build-depend on xutils-dev (>= 1:1.0.2-2) for the correct
paths.
Here is the current working lintian patch:
Index: checks/files
===================================================================
--- checks/files (revision 616)
+++ checks/files (working copy)
@@ -235,11 +235,15 @@
}
#----------------- /usr/X11R6/
+ elsif ($file =~ m,^usr/X11R6/bin,) {
+ tag "package-installs-file-to-usr-x11r6-bin", "$file";
+ }
+ elsif ($file =~ m,^usr/X11R6/lib/X11/fonts,) {
+ tag "package-installs-font-to-usr-x11r6", "$file";
+ }
elsif ($file =~ m,^usr/X11R6/, and
- $file !~ m,^usr/X11R6/lib/X11/fonts, and #font packages are allowed
- $perm !~ m,^l, and #links to FHS locations are encouraged
- $source_pkg ne "xfree86") { #The X Window System is allowed to do anything
- tag "packages-installs-file-to-usr-x11r6", "$file";
+ $perm !~ m,^l,) { #links to FHS locations are allowed
+ tag "package-installs-file-to-usr-x11r6", "$file";
}
# ---------------- /usr/lib/sgml
Index: checks/files.desc
===================================================================
--- checks/files.desc (revision 616)
+++ checks/files.desc (working copy)
@@ -29,17 +29,43 @@
/usr/bin/X11/, /usr/include/X11/ or /usr/lib/X11/.
Ref: policy 11.8.7
-Tag: packages-installs-file-to-usr-x11r6
-Type: warning
+Tag: package-installs-font-to-usr-x11r6
+Type: error
+Info: The standard location for X fonts has moved to /usr/share/fonts/X11.
+ Packages providing X fonts must install them into the new path. Fonts
+ installed into the old /usr/X11R6/lib/X11/fonts path may not be seen by
+ the X server.
+ .
+ If the package uses imake, it must build-depend on xutils-dev (>=
+ 1:1.0.2-1) for the correct paths. If it uses dh_installxfonts to handle X
+ font installation, it must build-depend on debhelper (>= 5.0.29).
+
+Tag: package-installs-file-to-usr-x11r6-bin
+Type: error
+Info: Debian has switched to the modular X tree which now uses the regular
+ FHS paths, and all packages must follow. All packages installing binaries
+ must install them into /usr/bin (or some other appropriate location)
+ instead of /usr/X11R6/bin.
+ .
+ The x11-common package attempts to change /usr/X11R6/bin into a symlink
+ to /usr/bin, so if this migration has already occurred, a package
+ installing files into /usr/X11R6/bin may appear to install
+ successfully. However, such a package will be left in an inconsistent
+ state and may orphan files when the compatibility link goes away.
+ .
+ If the package uses imake, it must build-depend on xutils-dev (>=
+ 1:1.0.2-1) for the correct paths.
+
+Tag: package-installs-file-to-usr-x11r6
+Type: error
Info: Packages using the X Window System should not be configured to install
- files under the /usr/X11R6/ directory unless they use imake. The /usr/X11R6/
- directory hierarchy should be regarded as deprecated for all packages except
- the X Window System itself.
+ files under the /usr/X11R6/ directory. Debian has switched to the modular
+ X tree which now uses regular FHS paths and all packages should follow.
.
- Programs that use GNU autoconf and automake are usually easily configured at
- compile time to use /usr/ instead of /usr/X11R6/, and this should be done
- whenever possible.
-Ref: policy 11.8.7
+ Programs that use GNU autoconf and automake are usually easily configured
+ at compile time to use /usr/ instead of /usr/X11R6/. Packages that use
+ imake must build-depend on xutils-dev (>= 1:1.0.2-2) for the correct
+ paths.
Tag: config-file-reserved $file
Type: error
Index: testset/tags.manpages
===================================================================
--- testset/tags.manpages (revision 616)
+++ testset/tags.manpages (working copy)
@@ -14,6 +14,14 @@
E: manpages: manpage-not-compressed-with-gzip usr/share/man/man1/usr-bin-binary-alt.1.gz
E: manpages: manpage-not-compressed-with-gzip usr/share/man/man1/usr-sbin-binary.1.gz
E: manpages: manpage-not-compressed-with-max-compression usr/share/man/man6/usr-games-binary.6.gz
+E: manpages: package-installs-file-to-usr-x11r6 usr/X11R6/
+E: manpages: package-installs-file-to-usr-x11r6 usr/X11R6/man/
+E: manpages: package-installs-file-to-usr-x11r6 usr/X11R6/man/man1/
+E: manpages: package-installs-file-to-usr-x11r6 usr/X11R6/man/man1/rstartd.1x.gz
+E: manpages: package-installs-file-to-usr-x11r6 usr/X11R6/man/man6/
+E: manpages: package-installs-file-to-usr-x11r6 usr/X11R6/man/man6/X11R6-binary.man
+E: manpages: package-installs-file-to-usr-x11r6-bin usr/X11R6/bin/
+E: manpages: package-installs-file-to-usr-x11r6-bin usr/X11R6/bin/rstartd
E: manpages: x11-games-should-be-in-usr-games usr/X11R6/man/man6/X11R6-binary.man
W: manpages source: ancient-standards-version 3.2.1
W: manpages source: binary-nmu-debian-revision-in-source 4-0.0.1
@@ -32,11 +40,3 @@
W: manpages: manpage-has-bad-whatis-entry usr/share/man/man1/usr-sbin-binary.1.gz
W: manpages: manpage-has-bad-whatis-entry usr/share/man/man6/usr-games-binary.6.gz
W: manpages: manpage-has-errors-from-man usr/share/man/man1/test-latin1-chars.1p.gz 9: warning: can't find numbered character 228
-W: manpages: packages-installs-file-to-usr-x11r6 usr/X11R6/
-W: manpages: packages-installs-file-to-usr-x11r6 usr/X11R6/bin/
-W: manpages: packages-installs-file-to-usr-x11r6 usr/X11R6/bin/rstartd
-W: manpages: packages-installs-file-to-usr-x11r6 usr/X11R6/man/
-W: manpages: packages-installs-file-to-usr-x11r6 usr/X11R6/man/man1/
-W: manpages: packages-installs-file-to-usr-x11r6 usr/X11R6/man/man1/rstartd.1x.gz
-W: manpages: packages-installs-file-to-usr-x11r6 usr/X11R6/man/man6/
-W: manpages: packages-installs-file-to-usr-x11r6 usr/X11R6/man/man6/X11R6-binary.man
Index: testset/tags.filenames
===================================================================
--- testset/tags.filenames (revision 616)
+++ testset/tags.filenames (working copy)
@@ -7,6 +7,9 @@
E: filenames: package-contains-ancient-file usr/lib/perl5/foo/ancient.pm 1975-01-01
E: filenames: package-installs-file-to-usr-something-x11 usr/bin/X11/
E: filenames: package-installs-file-to-usr-something-x11 usr/bin/X11/testxbin
+E: filenames: package-installs-file-to-usr-x11r6 usr/X11R6/
+E: filenames: package-installs-file-to-usr-x11r6-bin usr/X11R6/bin/
+E: filenames: package-installs-file-to-usr-x11r6-bin usr/X11R6/bin/testxbin2
E: filenames: package-installs-packlist usr/lib/perl5/foo/.packlist
E: filenames: postinst-does-not-call-updatemenus usr/share/menu/menu
E: filenames: postrm-does-not-call-updatemenus usr/share/menu/menu
@@ -63,9 +66,6 @@
W: filenames: package-contains-svn-control-dir usr/lib/perl5/.svn/
W: filenames: package-installs-nonbinary-perl-in-usr-lib-perl5 usr/lib/perl5/foo/ancient.pm
W: filenames: package-installs-nonbinary-perl-in-usr-lib-perl5 usr/lib/perl5/foo/bar.pm
-W: filenames: packages-installs-file-to-usr-x11r6 usr/X11R6/
-W: filenames: packages-installs-file-to-usr-x11r6 usr/X11R6/bin/
-W: filenames: packages-installs-file-to-usr-x11r6 usr/X11R6/bin/testxbin2
W: filenames: svn-commit-file-in-package files/svn-commit.tmp
W: filenames: symlink-is-self-recursive usr/lib/filenames/symlink10wrong ../../..
W: filenames: symlink-is-self-recursive usr/lib/filenames/symlink5ok+warn ..
--
Russ Allbery (rra@debian.org) <http://www.eyrie.org/~eagle/>
Reply to: