Package: lintian Version: 2.2.17 Severity: wishlist Tags: patch per policy 5.6.8 Architecture: all must be used if package doesn't contain arch depentent files. I dont know how common this error is (noticed the error in the iwatch package). I though that this might be useful for lintian to catch, so I've tried to write a simple check for this. I don't know how many false positives it will generate, as it mearly checks if "file -i" says if the mime major is not "text".
-- System Information: Debian Release: squeeze/sid APT prefers unstable APT policy: (500, 'unstable'), (500, 'stable'), (1, 'experimental') Architecture: i386 (i686) Kernel: Linux 2.6.30-1-686 (SMP w/1 CPU core) Locale: LANG=sv_SE.UTF-8, LC_CTYPE=sv_SE.UTF-8 (charmap=UTF-8) (ignored: LC_ALL set to sv_SE.UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages lintian depends on: ii binutils 2.20-1 The GNU assembler, linker and bina ii diffstat 1.47-1 produces graph of changes introduc ii dpkg-dev 1.15.4.1 Debian package development tools ii file 5.03-2 Determines file type using "magic" ii gettext 0.17-8 GNU Internationalization utilities ii intltool-debian 0.35.0+20060710.1 Help i18n of RFC822 compliant conf ii libapt-pkg-perl 0.1.24 Perl interface to libapt-pkg ii libclass-accessor-perl 0.34-1 Perl module that automatically gen ii libipc-run-perl 0.84-1 Perl module for running processes ii libparse-debianchangel 1.1.1-2 parse Debian changelogs and output ii libtimedate-perl 1.1900-1 Time and date functions for Perl ii liburi-perl 1.37+dfsg-1 Manipulates and accesses URI strin ii man-db 2.5.6-3 on-line manual pager ii perl [libdigest-sha-pe 5.10.1-8 Larry Wall's Practical Extraction lintian recommends no packages. Versions of packages lintian suggests: ii binutils-multiarch 2.20-1 Binary utilities that support mult ii libtext-template-perl 1.45-1 Text::Template perl module ii man-db 2.5.6-3 on-line manual pager -- no debconf information
diff --git a/checks/arch-not-all b/checks/arch-not-all new file mode 100644 index 0000000..bb45a1a --- /dev/null +++ b/checks/arch-not-all @@ -0,0 +1,54 @@ +# binaries -- lintian check script -*- perl -*- + +# Copyright (C) 2009 Carl Fürstenberg +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, you can find it on the World Wide +# Web at http://www.gnu.org/copyleft/gpl.html, or write to the Free +# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, +# MA 02110-1301, USA. + +package Lintian::arch_any; +use strict; +use Tags; + +sub run { + + my $pkg = shift; + my $type = shift; + my $info = shift; + + $arch = $info->field('architecture') || ''; + + return 0 if $arch eq 'all'; + + my $got_arch_dependent_file = 0; + foreach my $entry (`find unpacked -type f -exec file --mime-type \\{\\} \\;`) { + + my($file, $major, $minor) = $entry =~ /(.*?):\s*(.*?)\/(.*)/; + if( $major ne 'text' ) { # XXX will that have too many false positives? + $got_arch_dependent_file = 1; + last; + } + } + + tag "non-arch-all-package-doesnt-contain-any-arch-dependent-file" unless $got_arch_dependent_file; +} + +1; + +# Local Variables: +# indent-tabs-mode: t +# cperl-indent-level: 4 +# End: +# vim: syntax=perl ts=8 sw=4 diff --git a/checks/arch-not-all.desc b/checks/arch-not-all.desc new file mode 100644 index 0000000..35495fc --- /dev/null +++ b/checks/arch-not-all.desc @@ -0,0 +1,16 @@ +Check-Script: arch-non-all +Author: Carl Fürstenberg <azat...@gamil.com> +Abbrev: ana +Type: binary, udeb +Unpack-Level: 2 +Info: This script checks whether an architecture-dependent package actually has any architecture + dependent code. + +Tag: non-arch-all-package-doesnt-contain-any-arch-dependent-file +Severity: serious +Certainty: possible +Info: The package is marked as architecture dependent in control file, + but all files shipped with the package is architecture independent and + should therefor in the control file be marked as "Architecture: all" instead. +Ref: policy 5.6.8 +