lintian-2.5.22ubuntu1/0000775000000000000000000000000012315530763011461 5ustar lintian-2.5.22ubuntu1/.perlcriticrc0000664000000000000000000000525512311317074014150 0ustar # -*- conf -*- # FIXME: the list of checks should probably be moved to # t/scripts/critic.pl. Line continuations are not supported here verbose = 1 # Severity is actually ignored for our main purposes, see below severity = 1 # Work based on a whitelist only = 1 # Our whitelist (ignores severity): include = ExplicitReturnUndef GlobFunction NegativeIndices PrivateVars UselessInitialization MatchVars NumberSeparators NullStatements LongChainsOfMethodCalls UseStrict UseWarnings EndWithOne ConditionalUseStatements PackageMatchesPodName JoinedReadline UnreachableCode TrailingWhitespace InterpolationOfLiterals ImplicitNewlines CommaSeparatedStatements UseStrict UseWarnings UnusedVariables UnusedCapture TwoArgOpen ProhibitHardTabs MismatchedOperators IndirectSyntax Modules:: BuiltinFunctions:: ClassHierarchies:: CommaSeparatedStatements QuotesAsQuotelikeOperatorDelimiters MixedBooleanOperators ProhibitBarewordFileHandles ConditionalUseStatements Tidy #include = MixedBooleanOperators InteractiveTest UpperCaseHeredoc ReusedNames PackageVars ConditionalDeclarations SingleCharAlternation FixedStringMatches ConditionalUseStatements QuotedWordLists exclude = RequireFilenameMatchesPackage RequireVersionVar ProhibitExcessMainComplexity ProhibitStringySplit ComplexMappings StringyEval # If you want to try some other stuff, uncomment the following # (exclude is an incomplete list of things we probably won't change) # theme = security || bugs || complexity || maintenance # exclude = ExtendedFormat LineBoundaryMatch DotMatchAnything AutomaticExportation BuiltinHomonyms FinalReturn PunctuationVars InitializationForLocalVars UnusualDelimiters RcsKeywords # even more stuff if theme is empty # Would be nice to fix at some point: # include = ProhibitBarewordFileHandles criticism-fatal = 1 color = 1 allow-unsafe = 1 [BuiltinFunctions::ProhibitBooleanGrep] [InputOutput::RequireCheckedSyscalls] functions = open opendir chdir read readdir readline closedir sysopen sysread sysclose mkdir link pipe readlink unlink rename symlink fork # possible TODO close # Checks and collections blow up [-Modules::RequireFilenameMatchesPackage] # We don't use package versions atm and even if we did, it probably # won't have full coverage anyway. [-Modules::RequireVersionVar] # Maybe some day... [-Modules::ProhibitExcessMainComplexity] [Subroutines::RequireFinalReturn] terminal_funcs = CORE::exec fail Lintian::Util::fail Die error [ValuesAndExpressions::ProhibitInterpolationOfLiterals] [ValuesAndExpressions::ProhibitCommaSeparatedStatements] allow_last_statement_to_be_comma_separated_in_map_and_grep = 1 [-ValuesAndExpressions::ProhibitConstantPragma] [Variables::RequireLocalizedPunctuationVars] allow = %ENV %SIG $! $? lintian-2.5.22ubuntu1/checks/0000775000000000000000000000000012314366011012711 5ustar lintian-2.5.22ubuntu1/checks/changes-file.desc0000664000000000000000000001026412153060143016077 0ustar Check-Script: changes-file Abbrev: chng Type: changes Info: This script checks for various problems with .changes files Tag: malformed-changes-file Severity: serious Certainty: certain Info: There is no "Format" field in your .changes file. This probably indicates some serious problem with the file. Perhaps it's not actually a changes file, or it's not in the proper format, or it's PGP-signed twice. . Since Lintian was unable to parse this .changes file, any further checks on it were skipped. Ref: policy 5.5 Tag: no-description-in-changes-file Severity: serious Certainty: certain Info: There is no "Description" field in your .changes file. A description is mandatory and is usually constructed from the descriptions in the control file of the package by the package build tools. Ref: policy 5.5 Tag: bad-distribution-in-changes-file Severity: important Certainty: certain Info: You've specified an unknown target distribution for your upload in the debian/changelog file. It is possible that you are uploading for a different distribution than the one Lintian is checking for. In that case, passing --profile $VENDOR may fix this warning. . Note that the distributions non-free and contrib are no longer valid. You'll have to use distribution unstable and Section: non-free/xxx or Section: contrib/xxx instead. Ref: policy 5.6.14 Tag: multiple-distributions-in-changes-file Severity: important Certainty: possible Info: You've specified more than one target distribution for your upload in the *.changes file, probably via the most recent entry in the debian/changelog file. . Although this syntax is valid, it is not accepted by the Debian archive management software. This may not be a problem if this upload is targeted at an archive other than Debian's. Ref: policy 5.6.14 Tag: no-urgency-in-changes-file Severity: normal Certainty: certain Info: There is no "Urgency" field in the .changes file. This field is recommended by policy and is usually derived from the first line of the most recent changelog entry by the package build tools. Ref: policy 5.5 Tag: bad-urgency-in-changes-file Severity: important Certainty: certain Info: The keyword value of the "Urgency" field in the .changes file is not one of the allowed values of low, medium, high, critical, and emergency (case-insensitive). This value normally taken from the first line of the most recent entry in debian/changelog, which is probably where the error is. Ref: policy 5.6.17 Tag: file-size-mismatch-in-changes-file Severity: serious Certainty: certain Info: The actual file size does not match what's listed in the .changes file. Ref: policy 5.6.21, policy 5.6.24 Tag: checksum-mismatch-in-changes-file Severity: serious Certainty: certain Info: The actual checksum does not match what's listed in the .changes file. Ref: policy 5.6.21, policy 5.6.24 Tag: bad-section-in-changes-file Severity: important Certainty: certain Info: The sections non-free and contrib are no longer valid. Please use section non-free/xxx or contrib/xxx instead. Ref: policy 2.4 Tag: changed-by-name-missing Severity: serious Certainty: certain Info: The Changed-By field seems to contain just an email address. It must contain the package maintainer's name and email address. Ref: policy 5.6.4 Tag: changed-by-address-missing Severity: serious Certainty: certain Info: The Changed-By field should contain the package builder's name and email address, with the name followed by the address inside angle brackets (< and >). The address seems to be missing. Ref: policy 5.6.4 Tag: changed-by-address-malformed Severity: important Certainty: certain Info: The Changed-By field could not be parsed according to the rules in the Policy Manual. Ref: policy 5.6.4 Tag: changed-by-address-looks-weird Severity: normal Certainty: possible Info: The Changed-By field does not have whitespace between the name and the email address. Tag: changed-by-address-is-on-localhost Severity: important Certainty: certain Info: The Changed-By address includes localhost(.localdomain), which is an invalid e-mail address. Ref: policy 5.6.2 lintian-2.5.22ubuntu1/checks/java.pm0000664000000000000000000002063312311317612014174 0ustar # java -- lintian check script -*- perl -*- # Copyright (C) 2011 Vincent Fourmond # # 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::java; use strict; use warnings; use autodie; use List::MoreUtils qw(any none); use Lintian::Tags qw(tag); use Lintian::Util qw(normalize_pkg_path); sub run { my ($pkg, undef, $info) = @_; my $java_info = $info->java_info; my $missing_jarwrapper = 0; my $need_cp = 0; my $has_public_jars = 0; my $has_jars = 0; my $jmajlow = '-'; my $depends = $info->relation('strong')->unparse(); # Remove all libX-java-doc packages to avoid thinking they are java libs # - note the result may not be a valid dependency listing $depends =~ s/lib[^\s,]+-java-doc//go; my @java_lib_depends = ($depends =~ m/\b(lib[^\s,]+-java)\b/og); $need_cp = 1 if @java_lib_depends; # We first loop over jar files to find problems for my $jar_file (sort keys %{$java_info}) { my $files = $java_info->{$jar_file}->{files}; my $manifest = $java_info->{$jar_file}->{manifest}; my $operm = $info->index($jar_file)->operm; my $jar_dir; my $classes = 0; my $datafiles = 1; my $cp = ''; my $bsname = ''; if (exists $java_info->{$jar_file}->{error}) { tag 'zip-parse-error', "$jar_file:", $java_info->{$jar_file}->{error}; next; } # The Java Policy says very little about requires for (jars in) JVMs next if $jar_file =~ m#usr/lib/jvm(?:-exports)?/[^/]++/#o; # Ignore Mozilla's jar files, see #635495 next if $jar_file =~ m#usr/lib/xul(?:-ext|runner[^/]*+)/#o; $jar_dir = $jar_file; $jar_dir =~ s,[^/]+$,,o; $has_jars = 1; if($jar_file =~ m#^usr/share/java/[^/]+\.jar$#o) { $has_public_jars = 1; } # check for common code files like .class or .clj (Clojure files) foreach my $class (grep { m/\.(?:class|clj)$/oi } sort keys %{$files}){ my $mver = $files->{$class}; $classes = 1; next if $class =~ m/\.clj$/; # .class but no major version? next if $mver eq '-'; if ($mver <= 44 or $mver >= 52) { # First public major version was 45 (Java1), latest # version is 51 (Java7). tag 'unknown-java-class-version', $jar_file, "($class -> $mver)"; # Skip the rest of this Jar. last; } # Collect the "lowest" Class version used. We assume that # mixed class formats implies special compat code for certain # JVM cases. if ($jmajlow eq '-') { # first; $jmajlow = $mver; } else { $jmajlow = $mver if $mver < $jmajlow; } } $datafiles = 0 if none { m/\.(?:xml|properties|x?html|xhp)$/io } keys %$files; if($operm & 0111) { # Executable ? tag 'executable-jar-without-main-class', $jar_file unless $manifest && $manifest->{'Main-Class'}; # Here, we need to check that the package depends on # jarwrapper. $missing_jarwrapper = 1 unless $info->relation('strong')->implies('jarwrapper'); } elsif ($jar_file !~ m#^usr/share/#) { tag 'jar-not-in-usr-share', $jar_file; } $cp = $manifest->{'Class-Path'}//'' if $manifest; $bsname = $manifest->{'Bundle-SymbolicName'}//'' if $manifest; if ($manifest) { if (!$classes) { # Eclipse / OSGi bundles are sometimes source bundles # these do not ship classes but java files and other sources. # Javadoc jars deployed in the Maven repository also do not ship # classes but HTML files, images and CSS files if (( $bsname !~ m/\.source$/o && $jar_file!~ m#^usr/share/maven-repo/.*-javadoc\.jar# ) || $cp ) { tag 'codeless-jar', $jar_file; } } } elsif ($classes) { tag 'missing-manifest', $jar_file; } if (!$cp) { # Do we have OSGi instead? $need_cp = 0 if $bsname; # Maybe it is a maven plugin? $need_cp = 0 if $need_cp && any { m,^META-INF/maven/plugin.xml$,io } keys %$files; } else { # Only run the tests when a classpath is present my @relative = (); my @paths = split(m/\s++/o, $cp); $need_cp = 0; for my $p (@paths) { if ($p) { # Strip leading ./ $p =~ s#^\./++##og; if ($p !~ m#^(?:file://)?/#o and $p =~ m#/#o) { my $target = normalize_pkg_path($jar_dir, $p); my $tinfo; # Can it be normalized? next unless defined($target); # Relative link to usr/share/java ? Works if # we are depending of a Java library. next if $target =~ m,^usr/share/java/[^/]+.jar$,o and @java_lib_depends; $tinfo = $info->index($target); # Points to file or link in this package, # which is sometimes easier than # re-writing the classpath. next if defined $tinfo and ($tinfo->is_symlink or $tinfo->is_file); # Relative path with subdirectories. push @relative, $p; } # @todo add an info tag for relative paths, to educate # maintainers ? } } tag 'classpath-contains-relative-path', "$jar_file: " . join(', ', @relative) if @relative; } } tag 'missing-dep-on-jarwrapper' if $missing_jarwrapper; if ($jmajlow ne '-') { # Byte code numbers: # 45-49 -> Java1 - Java5 (Always ok) # 50 -> Java6 # 51 -> Java7 my $bad = 0; # If the lowest version used is: $bad = 1 if $jmajlow == 51; # Java7 - consider bad per request. # Technically we ought to do some checks with Java6 class files and # dependencies/package types, but for now just skip that. (See #673276) if ($bad) { # Map the Class version to a Java version. my $v = $jmajlow - 44; tag 'incompatible-java-bytecode-format', "Java${v} version (Class format: $jmajlow)"; } } if ($has_jars && $need_cp) { # Only tag if there is at least one jar file and one strong # java dependency and no classpath/osgi. Technically there # should be no reason to have a strong relation with a java # library without having a jar file, but we ignore some jars # (e.g. in JVMs) so going safe here. tag 'missing-classpath', join(', ', @java_lib_depends); } if (!$has_public_jars && $pkg =~ /^lib[^\s,]+-java$/) { # Skip this if it installs a symlink in usr/share/java return if any { m@^usr/share/java/[^/]+\.jar$@o } $info->sorted_index; tag 'javalib-but-no-public-jars'; } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/standards-version.desc0000664000000000000000000000560212153060144017221 0ustar Check-Script: standards-version Author: Christian Schwarz Abbrev: std Type: source Info: This script checks if a source package contains a valid Standards-Version field. Needs-Info: debfiles Tag: no-standards-version-field Severity: important Certainty: certain Ref: policy 5.6.11 Info: The source package does not have a Standards-Version control field. Please update your package to latest Policy and set this control field appropriately. Tag: invalid-standards-version Severity: important Certainty: certain Info: The source package refers to a Standards-Version which never existed. Please update your package to latest Policy and set this control field appropriately. Tag: newer-standards-version Severity: normal Certainty: certain Info: The source package refers to a Standards-Version which is newer than the highest one lintian is programmed to check. If the source package is correct, then please upgrade lintian to the newest version. (If there is no newer lintian version, then please bug &maint; to make one.) Tag: ancient-standards-version Severity: normal Certainty: certain Ref: http://www.debian.org/doc/debian-policy/upgrading-checklist Info: The source package refers to a Standards-Version that has been obsolete for more than two years. Please update your package to latest Policy and set this control field appropriately. . If the package is already compliant with the current standards, you don't have to re-upload the package just to adjust the Standards-Version control field. However, please remember to update this field next time you upload the package. . See /usr/share/doc/debian-policy/upgrading-checklist.txt.gz in the debian-policy package for a summary of changes in newer versions of Policy. Tag: out-of-date-standards-version Severity: normal Certainty: certain Ref: http://www.debian.org/doc/debian-policy/upgrading-checklist Info: The source package refers to a Standards-Version older than the one that was current at the time the package was created (according to the timestamp of the latest debian/changelog entry). Please consider updating the package to current Policy and setting this control field appropriately. . If the package is already compliant with the current standards, you don't have to re-upload the package just to adjust the Standards-Version control field. However, please remember to update this field next time you upload the package. . See /usr/share/doc/debian-policy/upgrading-checklist.txt.gz in the debian-policy package for a summary of changes in newer versions of Policy. Tag: timewarp-standards-version Severity: normal Certainty: certain Info: The source package refers to a Standards-Version that was released after the date of the most recent debian/changelog entry. Perhaps you forgot to update the timestamp in debian/changelog before building the package? lintian-2.5.22ubuntu1/checks/group-checks.pm0000664000000000000000000002163612311317610015647 0ustar # group-checks -- lintian check script -*- perl -*- # Copyright (C) 2011 Niels Thykier # # 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::group_checks; use strict; use warnings; use autodie; use Lintian::Data; use Lintian::Relation; use Lintian::Tags qw(tag); my $KNOWN_PRIOS = Lintian::Data->new('common/priorities', qr/\s*=\s*/o); sub run { my (undef, undef, $info, undef, $group) = @_; ## To find circular dependencies, we will first generate Strongly ## Connected Components using Tarjan's algorithm ## ## We are not using DepMap, because it cannot tell how the circles ## are made - only that there exists at least 1 circle. # The packages a.k.a. nodes my @nodes = (); my %edges = (); my $sccs; my $ginfo = $group->info; my @procs = $group->get_processables('binary'); _check_file_overlap(@procs); foreach my $proc (@procs) { my $deps = $ginfo->direct_dependencies($proc); if (scalar @$deps > 0) { # it depends on another package - it can cause # a circular dependency my $pname = $proc->pkg_name; push @nodes, $pname; $edges{$pname} = [map { $_->pkg_name } @$deps]; _check_priorities($proc, $deps); _check_multiarch($proc, $deps); } } # Bail now if we do not have at least two packages depending # on some other package from this source. return if scalar @nodes < 2; $sccs = Lintian::group_checks::Graph->new(\@nodes, \%edges)->tarjans(); foreach my $comp (@$sccs) { # It takes two to tango... erh. make a circular dependency. next if scalar @$comp < 2; tag 'intra-source-package-circular-dependency', sort @$comp; } return; } # Check that $proc has a priority that is less than or equal to that # of its dependencies (Policy §2.5) sub _check_priorities { my ($proc, $deps) = @_; my $priority = $proc->info->field('priority'); my $pkg_name = $proc->pkg_name; if ($priority) { my $prival = $KNOWN_PRIOS->value($priority); foreach my $dep (@$deps) { my $dpri = $dep->info->field('priority') // ''; my $dprival = $KNOWN_PRIOS->value($dpri); # Ignore packages without priorities - we have a separate # check for that. next unless $dprival; tag 'package-depends-on-lower-priority-package', "$pkg_name:$priority", 'depends on', $dep->pkg_name . ":$dpri" unless $prival <= $dprival; } } return; } sub _check_file_overlap { my (@procs) = @_; # Sort them for stable output my @sorted = sort { $a->pkg_name cmp $b->pkg_name } @procs; for (my $i = 0 ; $i < scalar @sorted ; $i++) { my $proc = $sorted[$i]; my $pinfo = $proc->info; my @p = grep { $_ } split(m/,/o, $pinfo->field('provides', '')); my $prov = Lintian::Relation->new(join(' |̈́ ', $proc->pkg_name, @p)); for (my $j = $i ; $j < scalar @sorted ; $j++) { my $other = $sorted[$j]; my $oinfo = $other->info; my @op = grep { $_ } split(m/,/o, $oinfo->field('provides', '')); my $oprov = Lintian::Relation->new(join(' | ', $other->pkg_name, @op)); # poor man's "Multi-arch: same" work-around. next if $proc->pkg_name eq $other->pkg_name; # $other conflicts/replaces with $proc next if $oinfo->relation('conflicts')->implies($prov); next if $oinfo->relation('replaces')->implies($proc->pkg_name); # $proc conflicts/replaces with $other next if $pinfo->relation('conflicts')->implies($oprov); next if $pinfo->relation('replaces')->implies($other->pkg_name); _overlap_check($proc, $pinfo, $other, $oinfo); } } return; } sub _overlap_check { my ($a_proc, $a_info, $b_proc, $b_info) = @_; foreach my $a_file ($a_info->sorted_index) { my $name = $a_file->name; my $b_file; $name =~ s,/$,,o; $b_file = $b_info->index($name) // $b_info->index("$name/"); if ($b_file) { next if $a_file->is_dir and $b_file->is_dir; tag 'binaries-have-file-conflict', $a_proc->pkg_name, $b_proc->pkg_name, $name; } } return; } sub _check_multiarch { my ($proc, $deps) = @_; my $ma = $proc->info->field('multi-arch', 'no'); if ($ma eq 'same') { foreach my $dep (@$deps) { my $dma = $dep->info->field('multi-arch', 'no'); if ($dma eq 'same' or $dma eq 'foreign') { 1; # OK } else { tag 'dependency-is-not-multi-archified', join(q{ }, $proc->pkg_name, 'depends on', $dep->pkg_name, "(multi-arch: $dma)"); } } } elsif ($ma ne 'same' and $proc->info->field('section', 'none') =~ m,(?:^|/)debug$,o) { # Debug package that isn't M-A: same, exploit that (non-debug) # dependencies is (almost certainly) a package for which the # debug carries debug symbols. foreach my $dep (@$deps) { my $dma = $dep->info->field('multi-arch', 'no'); if ( $dma eq 'same' and $dep->info->field('section', 'none') !~ m,(?:^|/)debug$,o){ # Debug package isn't M-A: same, but depends on a # package that is from same source that isn't a debug # package and that is M-A same. Thus it is not # possible to install debug symbols for all # (architecture) variants of the binaries. tag 'debug-package-for-multi-arch-same-pkg-not-coinstallable', $proc->pkg_name . ' => ' . $dep->pkg_name; } } } return; } ## Encapsulate Tarjan's algorithm in an class/object to keep ## the run sub somewhat sane. Allow this "extra" package as ## it is not a proper subclass. #<<< no Perl tidy (it breaks the no critic comment) package Lintian::group_checks::Graph; ## no critic (Modules::ProhibitMultiplePackages) #>>> sub new { my ($type, $nodes, $edges) = @_; my $self = { nodes => $nodes, edges => $edges}; bless $self, $type; return $self; } sub tarjans { my ($self) = @_; my $nodes = $self->{nodes}; $self->{index} = 0; $self->{scc} = []; $self->{stack} = []; $self->{on_stack} = {}; # The information for each node: # $self->{node_info}->{$node}->[X], where X is: # 0 => index # 1 => low_index $self->{node_info} = {}; foreach my $node (@$nodes) { $self->_tarjans_sc($node) unless defined $self->{node_info}->{$node}; } return $self->{scc}; } sub _tarjans_sc { my ($self, $node) = @_; my $index = $self->{index}; my $stack = $self->{stack}; my $ninfo = [$index, $index]; my $on_stack = $self->{on_stack}; $self->{node_info}->{$node} = $ninfo; $index++; $self->{index} = $index; push @$stack, $node; $on_stack->{$node} = 1; foreach my $neighbour (@{ $self->{edges}->{$node} }){ my $nb_info; $nb_info = $self->{node_info}->{$neighbour}; if (!defined $nb_info){ # First time visit $self->_tarjans_sc($neighbour); # refresh $nb_info $nb_info = $self->{node_info}->{$neighbour}; # min($node.low_index, $neigh.low_index) $ninfo->[1] = $nb_info->[1] if $nb_info->[1] < $ninfo->[1]; } elsif (exists $on_stack->{$neighbour}) { # Node is in this component # min($node.low_index, $neigh.index) $ninfo->[1] = $nb_info->[0] if $nb_info->[0] < $ninfo->[1]; } } if ($ninfo->[0] == $ninfo->[1]){ # the "root" node - create the SSC. my $component = []; my $scc = $self->{scc}; my $elem = ''; do { $elem = pop @$stack; delete $on_stack->{$elem}; push @$component, $elem; } until $node eq $elem; push @$scc, $component; } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/scripts.pm0000664000000000000000000014106412311317620014743 0ustar # scripts -- lintian check script -*- perl -*- # # This is probably the right file to add a check for the use of # set -e in bash and sh scripts. # # Copyright (C) 1998 Richard Braakman # Copyright (C) 2002 Josip Rodin # # 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::scripts; use strict; use warnings; use autodie; use List::MoreUtils qw(any); use Lintian::Check qw($known_shells_regex); use Lintian::Data; use Lintian::Relation; use Lintian::Tags qw(tag); use Lintian::Util qw(fail strip); # This is a map of all known interpreters. The key is the interpreter # name (the binary invoked on the #! line). The value is an anonymous # array of two elements. The first argument is the path on a Debian # system where that interpreter would be installed. The second # argument is the dependency that provides that interpreter. # # $INTERPRETERS maps names of (unversioned) interpreters to the path # they are installed and what package to depend on to use them. # my $INTERPRETERS = Lintian::Data->new('scripts/interpreters', qr/\s*=\>\s*/o, \&_parse_interpreters); # The more complex case of interpreters that may have a version number. # # This is a hash from the base interpreter name to a list. The base # interpreter name may appear by itself or followed by some combination of # dashes, digits, and periods. # # The list contains the following values: # [, , , , ] # # Their meaning is documented in Lintian's scripts/versioned-interpreters # file, though they are ordered differently and there are a few differences # as described below: # # * has been passed through qr/^$/ # * If was left out, it has been substituted by the # interpreter. # * The magic values of are represented as: # @NO_DEFAULT_DEPS@ -> '' (i.e. an empty string) # @SKIP_UNVERSIONED@ -> undef (i.e the undefined value) # * has been split into a list of versions. # (e.g. "1.6 1.8" will be ["1.6", "1.8"]) # # A full example is: # # data: # lua => /usr/bin, lua([\d.]+), 'lua$1', 40 50 5.1 # # $VERSIONED_INTERPRETERS->value ('lua') is # [ '/usr/bin', 'lua', qr/^lua([\d.]+)$/, 'lua$1', ["40", "50", "5.1"] ] # my $VERSIONED_INTERPRETERS = Lintian::Data->new('scripts/versioned-interpreters', qr/\s*=\>\s*/o,\&_parse_versioned_interpreters); # When detecting commands inside shell scripts, use this regex to match the # beginning of the command rather than checking whether the command is at the # beginning of a line. my $LEADINSTR = '(?:(?:^|[`&;(|{])\s*|(?:if|then|do|while)\s+)'; my $LEADIN = qr/$LEADINSTR/; #forbidden command in maintainer scripts my $BAD_MAINT_CMD = Lintian::Data->new( 'scripts/maintainer-script-bad-command', qr/\s*\~\~/, sub { my @sliptline = split(/\s*\~\~/, $_[1], 4); if(scalar(@sliptline) != 4) { fail 'Syntax error in scripts/maintainer-script-bad-command:', $.; } my ($incat,$exceptinpackage,$inscript,$regexp) = @sliptline; $regexp =~ s/\${LEADIN}/$LEADINSTR/; # allow empty $exceptinpackage and set it synonymous to check in all package $exceptinpackage = defined($exceptinpackage) ? strip($exceptinpackage) : ''; if (length($exceptinpackage) == 0) { $exceptinpackage = '\a\Z'; } # allow empty $inscript and set to synonymous to check in all script $inscript = defined($inscript) ? strip($inscript) : ''; if (length($inscript) == 0) { $inscript = '.*'; } return { # use not not to normalize boolean 'in_cat_string' => not(not(strip($incat))), 'in_package' => qr/$exceptinpackage/x, 'in_script' => qr/$inscript/x, 'regexp' => qr/$regexp/x, }; }); # Any of the following packages can satisfy an update-inetd dependency. my $update_inetd = join( ' | ', qw(update-inetd inet-superserver openbsd-inetd inetutils-inetd rlinetd xinetd) ); # Appearance of one of these regexes in a maintainer script means that there # must be a dependency (or pre-dependency) on the given package. The tag # reported is maintainer-script-needs-depends-on-%s, so be sure to update # scripts.desc when adding a new rule. my @depends_needed = ( [adduser => '\badduser\s'], [gconf2 => '\bgconf-schemas\s'], [$update_inetd => '\bupdate-inetd\s'], [ucf => '\bucf\s'], ['xml-core' => '\bupdate-xmlcatalog\s'], ); my @bashism_single_quote_regexs = ( $LEADIN . qr'echo\s+(?:-[^e\s]+\s+)?\'[^\']*(\\[abcEfnrtv0])+.*?[\']', # unsafe echo with backslashes $LEADIN . qr'source\s+[\"\']?(?:\.\/|\/|\$|[\w~.-])\S*', # should be '.', not 'source' ); my @bashism_string_regexs = ( qr'\$\[\w+\]', # arith not allowed qr'\$\{\w+\:\d+(?::\d+)?\}', # ${foo:3[:1]} qr'\$\{\w+(/.+?){1,2}\}', # ${parm/?/pat[/str]} qr'\$\{\#?\w+\[[0-9\*\@]+\]\}',# bash arrays, ${name[0|*|@]} qr'\$\{!\w+[\@*]\}', # ${!prefix[*|@]} qr'\$\{!\w+\}', # ${!name} qr'(\$\(|\`)\s*\<\s*\S+\s*(\)|\`)', # $(\< foo) should be $(cat foo) qr'\$\{?RANDOM\}?\b', # $RANDOM qr'\$\{?(OS|MACH)TYPE\}?\b', # $(OS|MACH)TYPE qr'\$\{?HOST(TYPE|NAME)\}?\b', # $HOST(TYPE|NAME) qr'\$\{?DIRSTACK\}?\b', # $DIRSTACK qr'\$\{?EUID\}?\b', # $EUID should be "id -u" qr'\$\{?UID\}?\b', # $UID should be "id -ru" qr'\$\{?SECONDS\}?\b', # $SECONDS qr'\$\{?BASH_[A-Z]+\}?\b', # $BASH_SOMETHING qr'\$\{?SHELLOPTS\}?\b', # $SHELLOPTS qr'\$\{?PIPESTATUS\}?\b', # $PIPESTATUS qr'\$\{?SHLVL\}?\b', # $SHLVL qr'<<<', # <<< here string $LEADIN . qr'echo\s+(?:-[^e\s]+\s+)?\"[^\"]*(\\[abcEfnrtv0])+.*?[\"]', # unsafe echo with backslashes ); my @bashism_regexs = ( qr'(?:^|\s+)function \w+(\s|\(|\Z)', # function is useless qr'(test|-o|-a)\s*[^\s]+\s+==\s', # should be 'b = a' qr'\[\s+[^\]]+\s+==\s', # should be 'b = a' qr'\s(\|\&)', # pipelining is not POSIX qr'[^\\\$]\{(?:[^\s\\\}]*?,)+[^\\\}\s]*\}', # brace expansion qr'(?:^|\s+)\w+\[\d+\]=', # bash arrays, H[0] $LEADIN . qr'read\s+(?:-[a-qs-zA-Z\d-]+)', # read with option other than -r $LEADIN . qr'read\s*(?:-\w+\s*)*(?:\".*?\"|[\'].*?[\'])?\s*(?:;|$)', # read without variable qr'\&>', # cshism qr'(<\&|>\&)\s*((-|\d+)[^\s;|)`&\\\\]|[^-\d\s]+)', # should be >word 2>&1 qr'\[\[(?!:)', # alternative test command $LEADIN . qr'select\s+\w+', # 'select' is not POSIX $LEADIN . qr'echo\s+(-n\s+)?-n?en?', # echo -e $LEADIN . qr'exec\s+-[acl]', # exec -c/-l/-a name qr'(?:^|\s+)let\s', # let ... qr'(?]\(.*?\)', # <() process substituion qr'(?:^|\s+)readonly\s+-[af]', # readonly -[af] $LEADIN . qr'(sh|\$\{?SHELL\}?) -[rD]', # sh -[rD] $LEADIN . qr'(sh|\$\{?SHELL\}?) --\w+', # sh --long-option $LEADIN . qr'(sh|\$\{?SHELL\}?) [-+]O', # sh [-+]O ); # a local function to help use separate tags for example scripts sub script_tag { my($tag, $filename, @rest) = @_; $tag = "example-$tag" if $filename and $filename =~ m,usr/share/doc/[^/]+/examples/,; tag($tag, $filename, @rest); return; } sub run { my ($pkg, undef, $info) = @_; my (%executable, %ELF, %scripts); # no dependency for install-menu, because the menu package specifically # says not to depend on it. foreach my $file ($info->sorted_index) { $ELF{$file} = 1 if $info->file_info($file) =~ /^[^,]*\bELF\b/o; my $operm = $file->operm; next unless $file->is_file and ($operm & 0111); $executable{$file} = 1; } my $all_parsed = Lintian::Relation->and($info->relation('all'), $info->relation('provides'),$pkg); my $str_deps = $info->relation('strong'); for my $filename (sort keys %{$info->scripts}) { my $interpreter = $info->scripts->{$filename}->{interpreter}; my $calls_env = $info->scripts->{$filename}->{calls_env}; my $path; $scripts{$filename} = 1; # Consider /usr/src/ scripts as "documentation" # - packages containing /usr/src/ tend to be "-source" .debs # and usually comes with overrides for most of the checks # below. # Supposedly, they could be checked as examples, but there is # a risk that the scripts need substitution to be complete # (so, syntax checking is not as reliable). my $in_docs = $filename =~ m,^usr/(?:share/doc|src)/,; my $in_examples = $filename =~ m,^usr/share/doc/[^/]+/examples/,; # no checks necessary at all for scripts in /usr/share/doc/ # unless they are examples next if $in_docs and not $in_examples; my ($base) = $interpreter =~ m,([^/]*)$,; # allow exception for .in files that have stuff like #!@PERL@ next if ( $filename =~ m,\.in$, and $interpreter =~ m,^(\@|<\<)[A-Z_]+(\@|>\>)$,); my $is_absolute = ($interpreter =~ m,^/, or defined $calls_env); # Skip files that have the #! line, but are not executable and # do not have an absolute path and are not in a bin/ directory # (/usr/bin, /bin etc). They are probably not scripts after # all. next if ( $filename !~ m,(?:bin/|etc/init\.d/), && !$executable{$filename} && !$is_absolute && !$in_examples); # Example directories sometimes contain Perl libraries, and # some people use initial lines like #!perl or #!python to # provide editor hints, so skip those too if they're not # executable. Be conservative here, since it's not uncommon # for people to both not set examples executable and not fix # the path and we want to warn about that. next if ( $filename =~ /\.pm\z/ && !$executable{$filename} && !$is_absolute && $in_examples); if ($interpreter eq '') { script_tag('script-without-interpreter', $filename); next; } # Either they use an absolute path or they use '/usr/bin/env interp'. script_tag('interpreter-not-absolute', $filename, "#!$interpreter") unless $is_absolute; tag 'script-not-executable', $filename unless ($executable{$filename} or $filename =~ m,^usr/(?:lib|share)/.*\.pm, or $filename =~ m,^usr/(?:lib|share)/.*\.py, or $filename =~ m,^usr/(?:lib|share)/ruby/.*\.rb, or $filename =~ m,^usr/share/debconf/confmodule(?:\.sh)?$, or $filename =~ m,\.in$, or $filename =~ m,\.erb$, or $filename =~ m,\.ex$, or $filename eq 'etc/init.d/skeleton' or $filename =~ m,^etc/menu-methods, or $filename =~ m,^etc/X11/Xsession\.d,) or $in_docs; # Warn about csh scripts. tag 'csh-considered-harmful', $filename if ( ($base eq 'csh' or $base eq 'tcsh') and $executable{$filename} and $filename !~ m,^etc/csh/login\.d/,) and not $in_docs; $path = $info->unpacked($filename); # Syntax-check most shell scripts, but don't syntax-check # scripts that end in .dpatch. bash -n doesn't stop checking # at exit 0 and goes on to blow up on the patch itself. if ($base =~ /^$known_shells_regex$/) { if ( -x $interpreter and not script_is_evil_and_wrong($path) and $filename !~ m,\.dpatch$, and $filename !~ m,\.erb$, # exclude some shells. zsh -n is broken, see #485885 and $base !~ m/^(?:z|t?c)sh$/ ) { if (check_script_syntax($interpreter, $path)) { script_tag('shell-script-fails-syntax-check', $filename); } } } # Try to find the expected path of the script to check. First # check $INTERPRETERS and %versioned_interpreters. If not # found there, see if it ends in a version number and the base # is found in $VERSIONED_INTERPRETERS my $data = $INTERPRETERS->value($base); my $versioned = 0; if (not defined $data) { $data = $VERSIONED_INTERPRETERS->value($base); undef $data if ($data and not defined($data->[1])); if (not defined($data) and $base =~ /^(.*[^\d.-])-?[\d.]+$/) { $data = $VERSIONED_INTERPRETERS->value($1); undef $data unless ($data and $base =~ /$data->[2]/); } $versioned = 1 if $data; } if ($data) { my $expected = $data->[0] . '/' . $base; unless ($interpreter eq $expected or defined $calls_env) { script_tag('wrong-path-for-interpreter', $filename, "(#!$interpreter != $expected)"); } } elsif ($interpreter =~ m,/usr/local/,) { script_tag('interpreter-in-usr-local', $filename,"#!$interpreter"); } elsif ($executable{'.' . $interpreter}) { # Package installs the interpreter itself, so it's probably ok. Don't # emit any tag for this. } elsif ($interpreter eq '/bin/env') { script_tag('script-uses-bin-env', $filename); } else { my $pinter = 0; if ($interpreter =~ m,^/,) { # Check if the package ships the interpreter (and it is # executable). my $interfile = substr $interpreter, 1; my $index_info = $info->index($interfile); $pinter = 1 if $index_info && ($index_info->operm & 0111); } script_tag('unusual-interpreter', $filename, "#!$interpreter") unless $pinter; } # Check for obsolete perl libraries if ( $base eq 'perl' &&!$str_deps->implies( 'libperl4-corelibs-perl | perl (<< 5.12.3-7)') ) { open(my $fd, '<', $path); while (<$fd>) { if ( m{ (?:do|require)\s+(?:'|") # do/require # Huge list of perl4 modules... (abbrev|assert|bigfloat|bigint|bigrat |cacheout|complete|ctime|dotsh|exceptions |fastcwd|find|finddepth|flush|getcwd|getopt |getopts|hostname|importenv|look|newgetopt |open2|open3|pwd|shellwords|stat|syslog |tainted|termcap|timelocal|validate) # ... so they end with ".pl" rather than ".pm" \.pl(?:'|") }xsm ) { tag 'script-uses-perl4-libs-without-dep', "$filename:$. ${1}.pl"; } } close($fd); } # If we found the interpreter and the script is executable, # check dependencies. This should be the last thing we do in # the loop so that we can use next for an early exit and # reduce the nesting. next unless ($data and $executable{$filename} and not $in_docs); if (!$versioned) { my $depends = $data->[1]; if (not defined $depends) { $depends = $base; } if ($depends && !$all_parsed->implies($depends)) { if ($base =~ /^(python|ruby|(m|g)awk)$/) { tag("$base-script-but-no-$base-dep", $filename); } elsif ($base eq 'csh' && $filename =~ m,^etc/csh/login\.d/,){ # Initialization files for csh. } elsif ($base eq 'fish' && $filename =~ m,^etc/fish\.d/,) { # Initialization files for fish. } elsif ( $base eq 'ocamlrun' && $all_parsed->matches( qr/^ocaml(?:-base)?(?:-nox)?-\d\.[\d.]+/) ) { # ABI-versioned virtual packages for ocaml } else { tag 'missing-dep-for-interpreter', "$base => $depends", "($filename)"; } } } elsif ($VERSIONED_INTERPRETERS->known($base)) { my @versions = @{ $data->[4] }; my @depends = map { my $d = $data->[3]; $d =~ s/\$1/$_/g; $d; } @versions; unshift(@depends, $data->[1]) if length $data->[1]; my $depends = join(' | ', @depends); unless ($all_parsed->implies($depends)) { if ($base eq 'php') { tag 'php-script-but-no-phpX-cli-dep', $filename; } elsif ($base =~ /^(wish|tclsh)/) { tag "$1-script-but-no-$1-dep", $filename; } else { tag 'missing-dep-for-interpreter', "$base => $depends", "($filename)"; } } } else { my ($version) = ($base =~ /$data->[2]/); my $depends = $data->[3]; $depends =~ s/\$1/$version/g; unless ($all_parsed->implies($depends)) { if ($base =~ /^php/) { tag 'php-script-but-no-phpX-cli-dep', $filename; } elsif ($base =~ /^(python|ruby)/) { tag "$1-script-but-no-$1-dep", $filename; } else { tag 'missing-dep-for-interpreter', "$base => $depends", "($filename)"; } } } } foreach (keys %executable) { my $index_info = $info->index($_); my $ok = 0; if ($index_info->is_hardlink) { # We don't collect script information for hardlinks, so check # if the target is a script. my $target = $index_info->link_normalized; if (exists $info->scripts->{$target}) { $ok = 1; } } tag 'executable-not-elf-or-script', $_ unless ( $ok or $ELF{$_} or $scripts{$_} or $_ =~ m,^usr(?:/X11R6)?/man/, or $_ =~ m/\.exe$/ # mono convention or $_ =~ m/\.jar$/ # Debian Java policy 2.2 ); } open(my $ctrl_fd, '<', $info->lab_data_path('control-scripts')); # Handle control scripts. This is an edited version of the code for # normal scripts above, because there were just enough differences to # make a shared function awkward. my %added_diversions; my %removed_diversions; my $expand_diversions = 0; while (<$ctrl_fd>) { chop; m/^(\S*) (.*)$/ or fail("bad line in control-scripts file: $_"); my $interpreter = $1; my $file = $2; my $filename = $info->control($file); $interpreter =~ m|([^/]*)$|; my $base = $1; if ($interpreter eq '') { tag 'script-without-interpreter', "control/$file"; next; } tag 'interpreter-not-absolute', "control/$file", "#!$interpreter" unless ($interpreter =~ m|^/|); if ($interpreter =~ m|/usr/local/|) { tag 'control-interpreter-in-usr-local', "control/$file", "#!$interpreter"; } elsif ($base eq 'sh' or $base eq 'bash' or $base eq 'perl') { my $expected = ($INTERPRETERS->value($base))->[0] . '/' . $base; tag 'wrong-path-for-interpreter', "#!$interpreter != $expected", "(control/$file)" unless ($interpreter eq $expected); } elsif ($file eq 'config') { tag 'forbidden-config-interpreter', "#!$interpreter"; } elsif ($file eq 'postrm') { tag 'forbidden-postrm-interpreter', "#!$interpreter"; } elsif ($INTERPRETERS->known($base)) { my $data = $INTERPRETERS->value($base); my $expected = $data->[0] . '/' . $base; unless ($interpreter eq $expected) { tag 'wrong-path-for-interpreter', "#!$interpreter != $expected", "(control/$file)"; } tag 'unusual-control-interpreter', "control/$file", "#!$interpreter"; # Interpreters used by preinst scripts must be in # Pre-Depends. Interpreters used by postinst or prerm # scripts must be in Depends. unless (not $data->[1]) { my $depends = Lintian::Relation->new($data->[1]); if ($file eq 'preinst') { unless ($info->relation('pre-depends')->implies($depends)){ tag 'preinst-interpreter-without-predepends', "#!$interpreter"; } } else { unless ($info->relation('strong')->implies($depends)) { tag 'control-interpreter-without-depends', "control/$file", "#!$interpreter"; } } } } else { tag 'unknown-control-interpreter', "control/$file", "#!$interpreter"; next; # no use doing further checks if it's not a known interpreter } # perhaps we should warn about *csh even if they're somehow screwed, # but that's not really important... tag 'csh-considered-harmful', "control/$file" if ($base eq 'csh' or $base eq 'tcsh'); my $shellscript = $base =~ /^$known_shells_regex$/ ? 1 : 0; # Only syntax-check scripts we can check with bash. my $checkbashisms; if ($shellscript) { $checkbashisms = $base eq 'sh' ? 1 : 0; if ($base eq 'sh' or $base eq 'bash') { if (check_script_syntax('/bin/bash', $filename)) { tag 'maintainer-shell-script-fails-syntax-check', $file; } } } # now scan the file contents themselves open(my $fd, '<', $filename); my ( $saw_init, $saw_invoke, $saw_debconf, $saw_bange, $saw_sete, $has_code ); my %warned; my $cat_string = ''; my $previous_line = ''; while (<$fd>) { if ($. == 1 && $shellscript && m,/$base\s*.*\s-\w*e\w*\b,) { $saw_bange = 1; } if (/\#DEBHELPER\#/) { tag 'maintainer-script-has-unexpanded-debhelper-token', $file; } next if m,^\s*$,; # skip empty lines next if m,^\s*\#,; # skip comment lines $_ = remove_comments($_); # Concatenate lines containing continuation character (\) # at the end if ($shellscript && /\\$/) { s/\\//; chomp; $previous_line .= $_; next; } chomp; $_ = $previous_line . $_; $previous_line = ''; # Don't consider the standard dh-make boilerplate to be code. This # means ignoring the framework of a case statement, the labels, the # echo complaining about unknown arguments, and an exit. unless ($has_code || m/^\s*set\s+-\w+\s*$/ || m/^\s*case\s+\"?\$1\"?\s+in\s*$/ || m/^\s*(?:[a-z|-]+|\*)\)\s*$/ || m/^\s*[:;]+\s*$/ || m/^\s*echo\s+\"[^\"]+\"(?:\s*>&2)?\s*$/ || m/^\s*esac\s*$/ || m/^\s*exit\s+\d+\s*$/) { $has_code = 1; } if ($shellscript && m,${LEADIN}set\s*(?:\s+-(?:-.*|[^e]+))*\s-\w*e,) { $saw_sete = 1; } if ( m,[^\w](?:(?:/var)?/tmp|\$TMPDIR)/[^)\]}\s], and not m/\bmks?temp\b/ and not m/\btempfile\b/ and not m/\bmkdir\b/ and not m/\$RANDOM/) { #<<< no perltidy - tag name too long tag 'possibly-insecure-handling-of-tmp-files-in-maintainer-script', #>>> "$file:$." unless $warned{tmp}; $warned{tmp} = 1; } if (m/^\s*killall(?:\s|\z)/) { tag 'killall-is-dangerous', "$file:$." unless $warned{killall}; $warned{killall} = 1; } if (m/^\s*mknod(?:\s|\z)/ and not m/\sp\s/) { tag 'mknod-in-maintainer-script', "$file:$."; } # Collect information about init script invocations to # catch running init scripts directly rather than through # invoke-rc.d. Since the script is allowed to run the # init script directly if invoke-rc.d doesn't exist, only # tag direct invocations where invoke-rc.d is never used # in the same script. Lots of false negatives, but # hopefully not many false positives. if (m%^\s*/etc/init\.d/(?:\S+)\s+[\"\']?(?:\S+)[\"\']?%) { $saw_init = $.; } if (m%^\s*invoke-rc\.d\s+%) { $saw_invoke = $.; } if ($shellscript) { if ($cat_string ne '' and m/^\Q$cat_string\E$/) { $cat_string = ''; } my $within_another_shell = 0; if ( m{ (?:^|\s+)(?:(?:/usr)?/bin/)? ($known_shells_regex)\s+-c\s*.+ }xsm and $1 ne 'sh' ) { $within_another_shell = 1; } # if cat_string is set, we are in a HERE document and need not # check for things if ( $cat_string eq '' && $checkbashisms && !$within_another_shell) { my $found = 0; my $match = ''; # since this test is ugly, I have to do it by itself # detect source (.) trying to pass args to the command it runs # The first expression weeds out '. "foo bar"' if ( not $found and not m{\A \s*\.\s+ (?:\"[^\"]+\"|\'[^\']+\')\s* (?:\&|\||\d?>|<|;|\Z)}xsm and m/^\s*(\.\s+[^\s;\`:]+\s+([^\s;]+))/ ) { my $extra; ($match, $extra) = ($1, $2); if ($extra =~ /^(\&|\||\d?>|<)/) { # everything is ok ; } else { $found = 1; } } my $line = $_; unless ($found) { for my $re (@bashism_single_quote_regexs) { if ($line =~ m/($re)/) { $found = 1; ($match) = m/($re)/; last; } } } # Ignore anything inside single quotes; it could be an # argument to grep or the like. # $cat_line contains the version of the line we'll check # for heredoc delimiters later. Initially, remove any # spaces between << and the delimiter to make the following # updates to $cat_line easier. my $cat_line = $line; $cat_line =~ s/(<\<-?)\s+/$1/g; # Remove single quoted strings, with the exception # that we don't remove the string # if the quote is immediately preceeded by a < or # a -, so we can match "foo <<-?'xyz'" as a # heredoc later The check is a little more greedy # than we'd like, but the heredoc test itself will # weed out any false positives $cat_line =~ s/(^|[^<\\\"-](?:\\\\)*)\'(?:\\.|[^\\\'])+\'/$1''/g; unless ($found) { # Remove "quoted quotes". They're likely to be # inside another pair of quotes; we're not # interested in them for their own sake and # removing them makes finding the limits of # the outer pair far easier. $line =~ s/(^|[^\\\'\"])\"\'\"/$1/g; $line =~ s/(^|[^\\\'\"])\'\"\'/$1/g; $line =~ s/(^|[^\\\"](?:\\\\)*)\'(?:\\.|[^\\\'])+\'/$1''/g; for my $re (@bashism_string_regexs) { if ($line =~ m/($re)/) { $found = 1; ($match) = m/($re)/; last; } } } # We've checked for all the things we still want # to notice in double-quoted strings, so now # remove those strings as well. $cat_line =~ s/(^|[^<\\\'-](?:\\\\)*)\"(?:\\.|[^\\\"])+\"/$1""/g; unless ($found) { $line =~ s/(^|[^\\\'](?:\\\\)*)\"(?:\\.|[^\\\"])+\"/$1""/g; for my $re (@bashism_regexs) { if ($line =~ m/($re)/) { $found = 1; ($match) = m/($re)/; last; } } } if ($found) { tag 'possible-bashism-in-maintainer-script', "$file:$. \'$match\'"; } # Only look for the beginning of a heredoc here, # after we've stripped out quoted material, to # avoid false positives. if ($cat_line =~ m/(?:^|[^<])\<\<\-?\s*(?:[\\]?(\w+)|[\'\"](.*?)[\'\"])/ ) { $cat_string = $1; $cat_string = $2 if not defined $cat_string; } } if (!$cat_string) { generic_check_bad_command($_, $file, $., $pkg, 0); if (m,/usr/share/debconf/confmodule,) { $saw_debconf = 1; } if (m/^\s*read(?:\s|\z)/ && !$saw_debconf) { tag 'read-in-maintainer-script', "$file:$."; } if (m,>\s*/etc/inetd\.conf(?:\s|\Z),) { tag 'maintainer-script-modifies-inetd-conf',"$file:$." unless $info->relation('provides') ->implies('inet-superserver'); } if (m,^\s*(?:cp|mv)\s+(?:.*\s)?/etc/inetd\.conf\s*$,) { tag 'maintainer-script-modifies-inetd-conf',"$file:$." unless $info->relation('provides') ->implies('inet-superserver'); } # Check for running commands with a leading path. # # Unfortunately, our $LEADIN string doesn't work # well for this in the presence of commands that # contain backquoted expressions because it can't # tell the difference between the initial backtick # and the closing backtick. We therefore first # extract all backquoted expressions and check # them separately, and then remove them from a # copy of a string and then check it for bashisms. while (m,\`([^\`]+)\`,g) { my $cmd = $1; if ( $cmd =~ m{ $LEADIN (/(?:usr/)?s?bin/[\w.+-]+) (?:\s|;|\Z)}xsm ) { tag 'command-with-path-in-maintainer-script', "$file:$. $1"; } } my $cmd = $_; $cmd =~ s/\`[^\`]+\`//g; if ($cmd =~ m,$LEADIN(/(?:usr/)?s?bin/[\w.+-]+)(?:\s|;|$),) { tag 'command-with-path-in-maintainer-script', "$file:$. $1"; } } } unless ($file eq 'postrm') { for my $rule (@depends_needed) { my ($package, $regex) = @$rule; if ( $pkg ne $package and /$regex/ and not $warned{$package}) { if ( m,-x\s+\S*$regex, or m,(?:which|type)\s+$regex, or m,command\s+.*?$regex,) { $warned{$package} = 1; } elsif (!/\|\|\s*true\b/) { unless ( $info->relation('strong')->implies($package)) { my $shortpackage = $package; $shortpackage =~ s/[ \(].*//; #<<< no perltidy - tag name too long tag "maintainer-script-needs-depends-on-$shortpackage", #>>> $file; $warned{$package} = 1; } } } } } generic_check_bad_command($_, $file, $., $pkg, 1); if (m,$LEADIN(?:/usr/sbin/)?dpkg-divert\s, && !/--(?:help|list|truename|version)/) { if (/--local/) { tag 'package-uses-local-diversion', "$file:$."; } my $mode = /--remove/ ? 'remove' : 'add'; my ($divert) = /dpkg-divert\s*(.*)$/; $divert =~ s{\s*(?:\${?[\w:=-]+}?)*\s* # options without arguments --(?:add|quiet|remove|rename|test|local # options with arguments |(?:admindir|divert|package) \s+ \S+) \s*}{}gxsm; # Remove unpaired opening or closing parenthesis 1 while ($divert =~ m/\G.*?\(.+?\)/gc); $divert =~ s/\G(.*?)[()]/$1/; pos($divert) = undef; # Remove unpaired opening or closing braces 1 while ($divert =~ m/\G.*?{.+?}/gc); $divert =~ s/\G(.*?)[{}]/$1/; pos($divert) = undef; # position after the last pair of quotation marks, if any 1 while ($divert =~ m/\G.*?(\"|\').+?\1/gc); # Strip anything matching and after '&&', '||', ';', or '>' # this is safe only after we are positioned after the last pair # of quotation marks $divert =~ s/\G.+?\K(?: && | \|\| | ; | \d*> ).*$//x; pos($divert) = undef; # Remove quotation marks, they affect: # * our var to regex trick # * stripping the initial slash if the path was quoted $divert =~ s/[\"\']//g; # remove the leading / because it's not in the index hash $divert =~ s,^/,,; # remove any remaining leading or trailing whitespace. strip($divert); $divert = quotemeta($divert); # For now just replace variables, they will later be normalised $expand_diversions = 1 if $divert =~ s/\\\$\w+/.+/g; $expand_diversions = 1 if $divert =~ s/\\\$\\{\w+.*?\\}/.+/g; # handle $() the same way: $expand_diversions = 1 if $divert =~ s/\\\$\\\(.+?\\\)/.+/g; if ($mode eq 'add') { $added_diversions{$divert} = {'script' => $file, 'line' => $.}; } elsif ($mode eq 'remove') { push @{$removed_diversions{$divert}}, {'script' => $file, 'line' => $.}; } else { fail "Internal error: \$mode has unknown value: $mode"; } } } if ($saw_init && !$saw_invoke) { tag 'maintainer-script-calls-init-script-directly', "$file:$saw_init"; } unless ($has_code) { tag 'maintainer-script-empty', $file; } if ($shellscript && !$saw_sete) { if ($saw_bange) { tag 'maintainer-script-without-set-e', $file; } else { tag 'maintainer-script-ignores-errors', $file; } } close($fd); } close($ctrl_fd); # If any of the maintainer scripts used a variable in the file or # diversion name normalise them all if ($expand_diversions) { for my $divert (keys %removed_diversions, keys %added_diversions) { # if a wider regex was found, the entries might no longer be there unless (exists($removed_diversions{$divert}) or exists($added_diversions{$divert})) { next; } my $widerrx = $divert; my $wider = $widerrx; $wider =~ s/\\//g; # find the widest regex: my @matches = grep { my $lrx = $_; my $l = $lrx; $l =~ s/\\//g; if ($wider =~ m/^$lrx$/) { $widerrx = $lrx; $wider = $l; 1; } elsif ($l =~ m/^$widerrx$/) { 1; } else { 0; } } (keys %removed_diversions, keys %added_diversions); # replace all the occurences with the widest regex: for my $k (@matches) { next if ($k eq $widerrx); if (exists($removed_diversions{$k})) { $removed_diversions{$widerrx} = $removed_diversions{$k}; delete $removed_diversions{$k}; } if (exists($added_diversions{$k})) { $added_diversions{$widerrx} = $added_diversions{$k}; delete $added_diversions{$k}; } } } } for my $divert (keys %removed_diversions) { if (exists $added_diversions{$divert}) { # just mark the entry, because a --remove might # happen in two branches in the script, i.e. we # see it twice, which is not a bug $added_diversions{$divert}{'removed'} = 1; } else { for my $item (@{$removed_diversions{$divert}}) { my $script = $item->{'script'}; my $line = $item->{'line'}; next unless ($script eq 'postrm'); # Allow preinst and postinst to remove diversions the # package doesn't add to clean up after previous # versions of the package. $divert = unquote($divert, $expand_diversions); tag 'remove-of-unknown-diversion', $divert, "$script:$line"; } } } for my $divert (keys %added_diversions) { my $script = $added_diversions{$divert}{'script'}; my $line = $added_diversions{$divert}{'line'}; my $divertrx = $divert; $divert = unquote($divert, $expand_diversions); if (not exists $added_diversions{$divertrx}{'removed'}) { tag 'orphaned-diversion', $divert, $script; } # Handle man page diversions somewhat specially. We may # divert away a man page in one section without replacing that # same file, since we're installing a man page in a different # section. An example is diverting a man page in section 1 # and replacing it with one in section 1p (such as # libmodule-corelist-perl at the time of this writing). # # Deal with this by turning all man page diversions into # wildcard expressions instead that match everything in the # same numeric section so that they'll match the files shipped # in the package. if ($divertrx =~ m,^(usr\\/share\\/man\\/\S+\\/.*\\\.\d)\w*(\\\.gz\z),) { $divertrx = "$1.*$2"; $expand_diversions = 1; } if ($expand_diversions) { tag 'diversion-for-unknown-file', $divert, "$script:$line" unless (any { $_ =~ m/$divertrx/ } $info->sorted_index); } else { tag 'diversion-for-unknown-file', $divert, "$script:$line" unless $info->index($divert); } } return; } # ----------------------------------- # try generic bad maintainer script command tagging sub generic_check_bad_command { my ($line, $file, $lineno, $pkg, $findincatstring) = @_; # try generic bad maintainer script command tagging BAD_CMD: foreach my $bad_cmd_tag ($BAD_MAINT_CMD->all) { my $bad_cmd_data = $BAD_MAINT_CMD->value($bad_cmd_tag); my $inscript = $bad_cmd_data->{'in_script'}; my $incat; if ($file !~ m{$inscript}) { next BAD_CMD; } $incat = $bad_cmd_data->{'in_cat_string'}; if ($incat == $findincatstring) { my $regex = $bad_cmd_data->{'regexp'}; if ($line =~ m{$regex}) { my $extrainfo = defined($1) ? "\'$1\'" : ''; my $inpackage = $bad_cmd_data->{'in_package'}; unless($pkg =~ m{$inpackage}) { tag $bad_cmd_tag, "$file:$.", $extrainfo; } } } } return; } # Returns non-zero if the given file is not actually a shell script, # just looks like one. sub script_is_evil_and_wrong { my ($filename) = @_; my $ret = 0; my $i = 0; my $var = '0'; my $backgrounded = 0; open(my $fd, '<', $filename); local $_; while (<$fd>) { chomp; next if m/^#/o; next if m/^$/o; last if (++$i > 55); if ( m~ # the exec should either be "eval"ed or a new statement (?:^\s*|\beval\s*[\'\"]|(?:;|&&|\b(?:then|else))\s*) # eat anything between the exec and $0 exec\s*.+\s* # optionally quoted executable name (via $0) .?\$$var.?\s* # optional "end of options" indicator (?:--\s*)? # Match expressions of the form '${1+$@}', '${1:+"$@"', # '"${1+$@', "$@", etc where the quotes (before the dollar # sign(s)) are optional and the second (or only if the $1 # clause is omitted) parameter may be $@ or $*. # # Finally the whole subexpression may be omitted for scripts # which do not pass on their parameters (i.e. after re-execing # they take their parameters (and potentially data) from stdin .?(?:\${1:?\+.?)?(?:\$[\@\*])?~x ) { $ret = 1; last; } elsif (/^\s*(\w+)=\$0;/) { $var = $1; } elsif ( m~ # Match scripts which use "foo $0 $@ &\nexec true\n" # Program name \S+\s+ # As above .?\$$var.?\s* (?:--\s*)? .?(?:\${1:?\+.?)?(?:\$[\@\*])?.?\s*\&~x ) { $backgrounded = 1; } elsif ( $backgrounded and m~ # the exec should either be "eval"ed or a new statement (?:^\s*|\beval\s*[\'\"]|(?:;|&&|\b(?:then|else))\s*) exec\s+true(?:\s|\Z)~x ) { $ret = 1; last; } } close($fd); return $ret; } # Given an interpretor and a file, run the interpretor on that file with the # -n option to check syntax, discarding output and returning the exit status. sub check_script_syntax { my ($interpreter, $script) = @_; my $pid = fork(); if ($pid == 0) { open(STDOUT, '>', '/dev/null'); open(STDERR, '>&', \*STDOUT); exec $interpreter, '-n', $script or fail("cannot exec $interpreter: $!"); } else { waitpid $pid, 0; } return $?; } sub remove_comments { local $_; my $line = shift || ''; $_ = $line; # Remove quoted strings so we can more easily ignore comments # inside them s/(^|[^\\](?:\\\\)*)\'(?:\\.|[^\\\'])+\'/$1''/g; s/(^|[^\\](?:\\\\)*)\"(?:\\.|[^\\\"])+\"/$1""/g; # If the remaining string contains what looks like a comment, # eat it. In either case, swap the unmodified script line # back in for processing (if required) and return it. if (m/(?:^|[^[\\])[\s\&;\(\)](\#.*$)/) { my $comment = $1; $_ = $line; s/\Q$comment\E//; # eat comments } else { $_ = $line; } return $_; } sub unquote($$) { my ($string, $replace_regex) = @_; $string =~ s,\\,,g; if ($replace_regex) { $string =~ s,\.\+,*,g; } return $string; } sub _parse_interpreters { my ($interpreter, $value) = @_; my ($path, $dep) = split m/\s*,\s*/, $value, 2; $dep = $interpreter if not $dep; if ($dep eq '@NODEPS@') { $dep = ''; } elsif ($dep =~ m/@/) { fail "Unknown magic value $dep for versioned interpreter $interpreter"; } return [$path, $dep]; } sub _parse_versioned_interpreters { my ($interpreter, $value) = @_; my ($path, $regex, $deptmp, $vers, $deprel) = split m/\s*,\s*/, $value, 5; my @versions = split m/\s++/, $vers; $deprel = $interpreter if not $deprel; if ($deprel eq '@NO_DEFAULT_DEPS@') { $deprel = ''; } elsif ($deprel eq '@SKIP_UNVERSIONED@') { $deprel = undef; } elsif ($deprel =~ m/@/) { fail "Unknown magic value $deprel for versioned interpreter $interpreter"; } return [$path, $deprel, qr/^$regex$/, $deptmp, \@versions]; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/automake.desc0000664000000000000000000000103512310413144015352 0ustar Check-Script: automake Author: Gautier Minster Abbrev: autom Type: source Needs-Info: index Info: Checks for erroneous, missing or deprecated automake files Tag: deprecated-configure-filename Severity: wishlist Certainty: certain Info: The use of 'configure.in' with automake is deprecated and will not be supported in future versions of automake. Please consider (helping upstream) migrating to 'configure.ac' instead. Ref: https://lists.gnu.org/archive/html/automake/2013-05/msg00049.html Experimental: yes lintian-2.5.22ubuntu1/checks/patch-systems.pm0000664000000000000000000002627112311317615016066 0ustar # patch-systems -- lintian check script -*- perl -*- # # Copyright (C) 2007 Marc Brockschmidt # Copyright (C) 2008 Raphael Hertzog # # 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::patch_systems; use strict; use warnings; use autodie; use constant PATCH_DESC_TEMPLATE => 'TODO: Put a short summary on' . ' the line above and replace this paragraph'; use Lintian::Tags qw(tag); use Lintian::Util qw(fail is_ancestor_of strip); sub run { my (undef, undef, $info) = @_; # Some (cruft) checks are valid for every patch system, so we need # to record that: my $uses_patch_system = 0; # Get build deps so we can decide which build system the # maintainer meant to use: my $build_deps = $info->relation('build-depends-all'); # Get source package format my $format = ''; if (defined $info->field('format')) { $format = $info->field('format'); } my $quilt_format = ($format =~ /3\.\d+ \(quilt\)/) ? 1 : 0; my $droot = $info->debfiles; my $dpdir = "$droot/patches"; if (!is_ancestor_of($droot, $dpdir)) { # Bad symlink return; } #----- dpatch if ($build_deps->implies('dpatch')) { $uses_patch_system++; #check for a debian/patches file: if (-l "$dpdir/00list" and not is_ancestor_of($droot, "$dpdir/00list")) { # skip } elsif (!-r "$dpdir/00list") { tag 'dpatch-build-dep-but-no-patch-list'; } else { my $list_uses_cpp = 0; if (-f "$dpdir/00options" && is_ancestor_of($droot, "$dpdir/00options")) { open(my $fd, '<', "$dpdir/00options"); while(<$fd>) { if (/DPATCH_OPTION_CPP=1/) { $list_uses_cpp = 1; last; } } close($fd); } foreach my $listfile (glob("$dpdir/00list*")) { my @patches; if (-f $listfile and is_ancestor_of($droot, $listfile)) { open(my $fd, '<', $listfile); while(<$fd>) { chomp; next if (/^\#/); #ignore comments or CPP directive s%//.*%% if $list_uses_cpp; # remove C++ style comments if ($list_uses_cpp && m%/\*%) { # remove C style comments $_ .= <$fd> while($_ !~ m%\*/%); s%/\*[^*]*\*/%%g; } next if (/^\s*$/); #ignore blank lines push @patches, split(' ', $_); } close($fd); } # Check each patch. foreach my $patch_file (@patches) { $patch_file .= '.dpatch' if -e "$dpdir/$patch_file.dpatch" and not -e "$dpdir/$patch_file"; next if (-l "$dpdir/$patch_file"); next unless is_ancestor_of($droot, "$dpdir/$patch_file"); if (!-r "$dpdir/$patch_file") { tag 'dpatch-index-references-non-existent-patch', $patch_file; next; } if (-f "$dpdir/$patch_file") { my $has_comment = 0; open(my $fd, '<', "$dpdir/$patch_file"); while (<$fd>) { # stop if something looking like a patch # starts: last if /^---/; # note comment if we find a proper one $has_comment = 1 if (/^\#+\s*DP:\s*(\S.*)$/ && $1 !~ /^no description\.?$/i); $has_comment = 1 if (/^\# (?:Description|Subject)/); } close($fd); unless ($has_comment) { tag 'dpatch-missing-description', $patch_file; } } check_patch($dpdir, $patch_file); } } } } #----- quilt if ($build_deps->implies('quilt') or $quilt_format) { $uses_patch_system++; # check for a debian/patches file: if (-l "$dpdir/series" and not is_ancestor_of($droot, "$dpdir/series")) { # skip } elsif (!-r "$dpdir/series") { tag 'quilt-build-dep-but-no-series-file' unless $quilt_format; } else { if (-f "$dpdir/series") { my @patches; my @badopts; open(my $series_fd, '<', "$dpdir/series"); while (my $patch = <$series_fd>) { strip($patch); # Strip leading/trailing spaces $patch =~ s/(?:^|\s+)#.*$//; # Strip comment next unless $patch; if ($patch =~ m{^(\S+)\s+(\S.*)$}) { my $patch_options; ($patch, $patch_options) = ($1, $2); if ($patch_options ne '-p1') { push @badopts, $patch; } } push @patches, $patch; } close($series_fd); if (scalar(@badopts)) { tag 'quilt-patch-with-non-standard-options', @badopts; } # Check each patch. foreach my $patch_file (@patches) { next if (-l "$dpdir/$patch_file"); next unless is_ancestor_of($droot, "$dpdir/$patch_file"); if (!-r "$dpdir/$patch_file") { tag 'quilt-series-references-non-existent-patch', $patch_file; next; } if (-f "$dpdir/$patch_file") { my $has_description = 0; my $has_template_description = 0; open(my $patch_fd, '<', "$dpdir/$patch_file"); while (<$patch_fd>) { # stop if something looking like a patch starts: last if /^---/; next if /^\s*$/; # Skip common "lead-in" lines $has_description = 1 unless m{^(?:Index: |=+$|diff .+|index )}; $has_template_description = 1 if index($_, PATCH_DESC_TEMPLATE) != -1; } close($patch_fd); unless ($has_description) { tag 'quilt-patch-missing-description', $patch_file; } if ($has_template_description) { tag 'quilt-patch-using-template-description', $patch_file; } } check_patch($dpdir, $patch_file); } } } if ($quilt_format) { # 3.0 (quilt) specific checks # Format 3.0 packages may generate a debian-changes-$version patch my $version = $info->field('version'); my $versioned_patch = "$dpdir/debian-changes-$version"; my $patch_header = "$droot/source/patch-header"; my $ok = 1; if (-l "$droot/source" or -l $patch_header) { # possible issue if (!is_ancenstor_of($droot, $patch_header)) { $ok = 0; } } # $dpdir is known to be safe at this point, so only check # the patch itself if ($ok and -l $versioned_patch) { if (!is_ancenstor_of($droot, $versioned_patch)) { $ok = 0; } } if ($ok && -f $versioned_patch && !-f $patch_header) { tag 'format-3.0-but-debian-changes-patch'; } } } else { if ( -r "$dpdir/series" and -f "$dpdir/series") { # 3.0 (quilt) sources don't need quilt as dpkg-source will # do the work if (!-l "$dpdir/series" || is_ancestor_of($droot, "$dpdir/series")) { tag 'quilt-series-but-no-build-dep' unless $quilt_format; } } } #----- look for README.source if ($uses_patch_system && !$quilt_format && !-f "$droot/README.source") { if (!-l "$droot/README.source") { # tag, unless README.source was a symlink (which could be a # traversal attempt) tag 'patch-system-but-no-source-readme'; } } #----- general cruft checking: if ($uses_patch_system > 1) { tag 'more-than-one-patch-system'; } my @direct; open(my $fd, '<', $info->diffstat); while (<$fd>) { my ($file) = (m,^\s+(.*?)\s+\|,) or fail("syntax error in diffstat file: $_"); push(@direct, $file) if ($file !~ m,^debian/,); } close($fd); if (@direct) { my $files= (@direct > 1) ? "$direct[0] and $#direct more" : $direct[0]; tag 'patch-system-but-direct-changes-in-diff', $files if ($uses_patch_system); tag 'direct-changes-in-diff-but-no-patch-system', $files if (not $uses_patch_system); } return; } # Checks on patches common to all build systems. sub check_patch { my ($dpdir, $patch_file) = @_; # Use --strip=1 to strip off the first layer of directory in case # the parent directory in which the patches were generated was # named "debian". This will produce false negatives for --strip=0 # patches that modify files in the debian/* directory, but as of # 2010-01-01, all cases where the first level of the patch path is # "debian/" in the archive are false positives. open(my $fd, '-|', 'lsdiff', '--strip=1', "$dpdir/$patch_file"); while (<$fd>) { chomp; if (m|^(?:\./)?debian/|o) { tag 'patch-modifying-debian-files', $patch_file, $_; } } close($fd); return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/changelog-file.desc0000664000000000000000000003401212310413206016410 0ustar Check-Script: changelog-file Author: Christian Schwarz Abbrev: chg Type: binary Needs-Info: file-info, changelog-file, index Info: This script checks if a binary package conforms to policy with regards to changelog files. . Each binary package with a /usr/share/doc/<foo> directory must have a Debian changelog file in changelog.Debian.gz unless the Debian changelog and the upstream one is the same file; in this case, it must be in changelog.gz. . If there is an upstream changelog file, it must be named "changelog.gz". . Both changelog files should be compressed using "gzip -9". Even if they start out small, they will become large with time. Tag: html-changelog-without-text-version Severity: important Certainty: certain Info: If the upstream changelog file is HTML formatted, a text version should also be accessible as "changelog.gz". (This can be created by "lynx -dump -nolist") Ref: policy 12.7 Tag: changelog-file-not-compressed Severity: important Certainty: certain Info: Changelog files should be compressed using "gzip -9". Even if they start out small, they will become large with time. Ref: policy 12.7 Tag: debian-news-file-not-compressed Severity: normal Certainty: certain Info: NEWS.Debian files should be compressed using "gzip -9". The file must always have the same name. Ref: devref 6.3.4 Tag: changelog-is-dh_make-template Severity: important Certainty: certain Info: The changelog file has an instruction left by dh_make, which has not been removed. Example: . * Initial release (Closes: #nnnn) <nnnn is the bug number of your ITP%gt; . The "<... is the bug number ...>" part has not been removed from the changelog. Tag: changelog-not-compressed-with-max-compression Severity: normal Certainty: certain Info: Changelog files should be compressed using "gzip -9"; i.e., using the maximum compression level via the -9 option to gzip. Ref: policy 12.7 Tag: wrong-name-for-changelog-of-native-package Severity: normal Certainty: certain Info: The changelog file of a native Debian package (i.e., if there is no upstream source) should usually be installed as /usr/share/doc/pkg/changelog.gz Ref: policy 12.7 Tag: changelog-file-missing-in-native-package Severity: important Certainty: certain Info: Each Debian package (which provides a /usr/share/doc/pkg directory) has to install a changelog file. Since this package seems to be a native Debian package (i.e., there is no upstream source), the file should usually be installed as /usr/share/doc/pkg/changelog.gz . Note that Lintian may emit this tag if the changelog exists, but it does not look like a Debian changelog. Ref: policy 12.7 Tag: wrong-name-for-upstream-changelog Severity: normal Certainty: possible Info: If there is an upstream changelog file, it should usually be installed as /usr/share/doc/pkg/changelog.gz Ref: policy 12.7 Tag: no-upstream-changelog Severity: pedantic Certainty: wild-guess Info: The package does not install an upstream changelog file. If upstream provides a changelog, it should be accessible as /usr/share/doc/pkg/changelog.gz. . It's currently unclear how best to handle multiple binary packages from the same source. Some maintainers put a copy of the upstream changelog in each package, but it can be quite long. Some include it in one package and add symlinks to the other packages, but this requires there be dependencies between the packages. Some only include it in a "central" binary package and omit it from more ancillary packages. Ref: policy 12.7 Tag: wrong-name-for-debian-changelog-file Severity: important Certainty: certain Info: The Debian changelog file should usually be installed as /usr/share/doc/pkg/changelog.Debian.gz Ref: policy 12.7 Tag: wrong-name-for-debian-news-file Severity: normal Certainty: possible Info: The Debian news file must be installed as /usr/share/doc/pkg/NEWS.Debian.gz with exactly that capitalization or automated tools may not find it correctly. Ref: devref 6.3.4 Tag: debian-changelog-file-missing Severity: serious Certainty: certain Info: Each Debian package (which provides a /usr/share/doc/pkg directory) has to install a Debian changelog file /usr/share/doc/pkg/changelog.Debian.gz Ref: policy 12.7 Tag: debian-changelog-file-is-a-symlink Severity: normal Certainty: certain Info: The Debian changelog file is a symlink to a file in a different directory or not found in this package. Please don't do this. It makes package checking and manipulation unnecessarily difficult. Because it was a symlink, the Debian changelog file was not checked for other problems. (Symlinks to another file in /usr/share/doc/pkg or a subdirectory thereof are fine and should not trigger this warning.) . To refer to the changelog, copyright, and other documentation files of another package that this one depends on, please symlink the entire /usr/share/doc/pkg directory rather than individual files. Tag: debian-changelog-file-missing-or-wrong-name Severity: serious Certainty: certain Info: Each Debian package (which provides a /usr/share/doc/pkg directory) must install a Debian changelog file in /usr/share/doc/pkg/changelog.Debian.gz . A common error is to name the Debian changelog like an upstream changelog (/usr/share/doc/pkg/changelog.gz); therefore, lintian will apply further checks to such a file if it exists even after issuing this error. Ref: policy 12.7 Tag: debian-changelog-file-contains-obsolete-user-emacs-settings Severity: normal Certainty: certain Info: The add-log-mailing-address variable is no longer honored in debian-changelog-mode, and should not appear in packages' changelog files. Instead, put something like this in your ~/.emacs: . (setq debian-changelog-mailing-address "userid@debian.org") Tag: debian-changelog-file-contains-invalid-email-address Severity: important Certainty: certain Info: The changelog file contains an invalid email address: the domain needs at least one dot. This looks like a mistake. Tag: debian-changelog-file-uses-obsolete-national-encoding Severity: serious Certainty: certain Ref: policy 4.4 Info: The Debian changelog file must be valid UTF-8, an encoding of the Unicode character set. . There are many ways to convert a changelog from an obsoleted encoding like ISO-8859-1; you may for example use "iconv" like: . $ iconv -f ISO-8859-1 -t UTF-8 changelog > changelog.new $ mv changelog.new changelog Tag: debian-news-file-uses-obsolete-national-encoding Severity: important Certainty: certain Info: The NEWS.Debian file must be valid UTF-8, an encoding of the Unicode character set. . There are many ways to convert a changelog from an obsoleted encoding like ISO-8859-1; you may for example use "iconv" like: . $ iconv -f ISO-8859-1 -t UTF-8 NEWS.Debian > NEWS.Debian.new $ mv NEWS.Debian.new NEWS.Debian Tag: latest-debian-changelog-entry-without-new-date Severity: normal Certainty: certain Info: The latest Debian changelog entry has either the same or even an older date as the entry before. Tag: latest-debian-changelog-entry-without-new-version Severity: normal Certainty: certain Info: The latest Debian changelog entry has a version number that's either the same or smaller than the version number of the entry before. Tag: latest-debian-changelog-entry-changed-to-native Severity: normal Certainty: possible Info: The latest package has a Debian native version number, while the previous version number was not native. This is usually a mistake made by the maintainer by forgetting to append -1 when uploading a new upstream version. Tag: possible-new-upstream-release-without-new-version Severity: normal Certainty: possible Info: The most recent changelog entry contains an entry that appears to say this is a new upstream release (a comment similar to "new upstream release," possibly with a word between "upstream" and "release"), but the upstream portion of the package version number didn't change. This may indicate that the package version was not updated properly in debian/changelog. Tag: experimental-to-unstable-without-comment Severity: pedantic Certainty: possible Info: The previous version of this package had a distribution of experimental, this version has a distribution of unstable, and there's apparently no comment about the change of distributions (Lintian looks for the phrase "to unstable"). This may indicate a mistake in setting the distribution and accidentally uploading to unstable a package intended for experimental. Tag: syntax-error-in-debian-changelog Severity: normal Certainty: possible Info: While parsing the Debian changelog, a syntax error was found. If you have old changelog entries that don't follow the current syntax but that you want to keep as-is for the historical record, add the line: . Old Changelog: . with no leading whitespace before the legacy entries. This line and everything after it will be ignored. Ref: policy 4.4 Tag: syntax-error-in-debian-news-file Severity: normal Certainty: possible Info: While parsing the NEWS.Debian file, a syntax error was found. Ref: devref 6.3.4 Tag: improbable-bug-number-in-closes Severity: normal Certainty: possible Info: The most recent changelog closes a bug numbered less than 100. While this is distantly possible, it's more likely a typo or a placeholder value that mistakenly wasn't filled in. Tag: wrong-bug-number-in-closes Severity: normal Certainty: certain Info: Bug numbers can only contain digits. Ref: policy 4.4 Tag: possible-missing-colon-in-closes Severity: important Certainty: possible Info: To close a bug in the Debian changelog, the word "closes" must be followed by a colon. This entry looked like it was intended to close a bug, but there's no colon after "closes". Ref: policy 4.4 Tag: debian-news-entry-has-strange-distribution Severity: normal Certainty: certain Info: The latest entry in NEWS.Debian has an unusual distribution name. This field is ignored by the archive software, so its value doesn't truly matter, but it may be confusing to users reading the entry if the distribution doesn't match the distribution for the same entry in the Debian changelog file. Tag: debian-news-entry-uses-asterisk Severity: wishlist Certainty: possible Info: The latest entry in NEWS.Debian appears to use asterisks to present changes in a bulleted list, similar to the normal changelog syntax. The Debian Developer's Reference recommends using regular paragraphs in NEWS.Debian rather than a bulleted list. Ref: devref 6.3.4 Tag: debian-news-entry-has-unknown-version Severity: normal Certainty: possible Info: The version number of the most recent NEWS.Debian entry does not match any of the version numbers in the changelog file for this package. This usually means the version in NEWS.Debian needs to be updated to match a change to package version that happened after the NEWS.Debian entry was written. Tag: spelling-error-in-changelog Severity: minor Certainty: certain Info: Lintian found a spelling error in the latest entry of the Debian changelog. Lintian has a list of common misspellings that it looks for. It does not have a dictionary like a spelling checker does. . When writing a changelog entry for a spelling fix that includes the misspelling, ensure the word "spelling" is on the same line as the misspelled word to avoid triggering this warning. Tag: spelling-error-in-news-debian Severity: minor Certainty: certain Info: Lintian found a spelling error in the latest entry of the NEWS.Debian file. Lintian has a list of common misspellings that it looks for. It does not have a dictionary like a spelling checker does. Tag: new-package-should-close-itp-bug Severity: normal Certainty: certain Info: This package appears to be the first packaging of a new upstream software package (there is only one changelog entry and the Debian revision is 1), but it does not close any bugs. The initial upload of a new package should close the corresponding ITP bug for that package. . This warning can be ignored if the package is not intended for Debian or if it is a split of an existing Debian package. Ref: devref 5.1 Tag: debian-changelog-line-too-long Severity: normal Certainty: certain Info: The given line of the latest changelog entry is over 80 columns. Such changelog entries may look poor in terminal windows and mail messages and be annoying to read. Please wrap changelog entries at 80 columns or less where possible. Tag: changelog-news-debian-mismatch Severity: normal Certainty: possible Info: The latest entries in the Debian changelog file and NEWS.Debian file are for the same version but the given field doesn't match. The changelog information is canonical and the NEWS.Debian information is ignored, but it may be confusing to users to have them be different. Tag: bad-intended-distibution Severity: normal Certainty: wild-guess Experimental: yes Info: The last changelog entry implies this version is not for release. Instead it should specify the distribution it is to be uploaded to. Tag: version-refers-to-distribution Severity: minor Certainty: certain Info: The Debian portion of the package version contains a reference to a particular Debian release or distribution. This should only be done for uploads targeted at a particular release, not at unstable or experimental, and should refer to the release by version number or code name. . Using "testing" or "stable" in a package version targeted at the current testing or stable release is less informative than using the code name or version number and may cause annoying version sequencing issues if the package doesn't change before the next release cycle starts. Ref: devref 5.13.3 Tag: debian-changelog-has-wrong-weekday Severity: normal Certainty: certain Info: The date in the changelog entry is not consistent with the actual weekday. Either the date is wrong or the weekday is wrong. . To avoid problems like this, consider using a tool like dch(1) or date(1) to generate the date. Example: . $ date -R -ud '2013-11-05 23:59:59' Tue, 05 Nov 2013 23:59:59 +0000 lintian-2.5.22ubuntu1/checks/version-substvars.pm0000664000000000000000000001223412311317623016772 0ustar # version-substvars -- lintian check script -*- perl -*- # # Copyright (C) 2006 Adeodato Simó # # 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. # SUMMARY # ======= # # What breaks # ----------- # # (b1) any -> any (= ${source:Version}) -> use b:V # (b2) any -> all (= ${binary:Version}) [or S-V] -> use s:V # (b3) all -> any (= ${either-of-them}) -> use (>= ${s:V}), # optionally (<< ${s:V}.1~) # # Note (b2) also breaks if (>= ${binary:Version}) [or S-V] is used. # # Always warn on ${Source-Version} even if it doesn't break since the substvar # is now considered deprecated. package Lintian::version_substvars; use strict; use warnings; use autodie; use Lintian::Relation qw(:constants); use Lintian::Tags qw(tag); use Lintian::Util qw($PKGNAME_REGEX); sub run { my (undef, undef, $info) = @_; my @dep_fields = qw(depends pre-depends recommends suggests conflicts replaces); foreach my $pkg1 ($info->binaries) { my ($pkg1_is_any, $pkg2, $pkg2_is_any, $substvar_strips_binNMU); $pkg1_is_any = ($info->binary_field($pkg1, 'architecture', '') ne 'all'); foreach my $field (@dep_fields) { next unless $info->binary_field($pkg1, $field); my $rel = $info->binary_relation($pkg1, $field); my $svid = 0; my $visitor = sub { if (m/\${Source-Version}/o and not $svid) { $svid++; tag 'substvar-source-version-is-deprecated', $pkg1; } if ( m/ ($PKGNAME_REGEX)(?: :any)? \s* # pkg-name $1 \(\s*[\>\<]?[=\>\<]\s* # REL \${(?:Source-|source:|binary:)Version} # {subvar} /x ) { my $other = $1; # We can't test dependencies on packages whose names are # formed via substvars expanded during the build. Assume # those maintainers know what they're doing. tag 'version-substvar-for-external-package', "$pkg1 -> $other" unless $info->binary_field($other, 'architecture') or $other =~ /\$\{\S+\}/; } }; $rel->visit($visitor, VISIT_PRED_FULL); } foreach ( split( m/,/, ( $info->binary_field($pkg1, 'pre-depends', '').', ' . $info->binary_field($pkg1, 'depends', ''))) ) { next unless m/($PKGNAME_REGEX)(?: :any)? \s* # pkg-name \(\s*(\>)?=\s* # rel \${((?:Source-|source:|binary:)Version)} # subvar /x; my $gt = $2//''; $pkg2 = $1; $substvar_strips_binNMU = ($3 eq 'source:Version'); if (not $info->binary_field($pkg2, 'architecture')) { # external relation or subst var package - either way, # handled above. next; } $pkg2_is_any = ($info->binary_field($pkg2, 'architecture', '') ne 'all'); if ($pkg1_is_any) { if ($pkg2_is_any and $substvar_strips_binNMU) { unless ($gt) { # (b1) any -> any (= ${source:Version}) tag 'not-binnmuable-any-depends-any', "$pkg1 -> $pkg2"; } else { # any -> any (>= ${source:Version}) # technically this can be "binNMU'ed", though it is # a bit weird. 1; } } elsif (not $pkg2_is_any and not $substvar_strips_binNMU) { # (b2) any -> all ( = ${binary:Version}) [or S-V] # or -- same -- (>= ${binary:Version}) [or S-V] tag 'not-binnmuable-any-depends-all', "$pkg1 -> $pkg2"; } } elsif ($pkg2_is_any && !$gt) { # (b3) all -> any (= ${either-of-them}) tag 'not-binnmuable-all-depends-any', "$pkg1 -> $pkg2"; } } } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/standards-version.pm0000664000000000000000000001441612311317622016724 0ustar # standards-version -- lintian check script -*- perl -*- # Copyright (C) 1998 Christian Schwarz and Richard Braakman # Copyright (C) 2008-2009 Russ Allbery # # 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::standards_version; use strict; use warnings; use autodie; use POSIX qw(strftime); use List::Util qw(first); use Date::Parse qw(str2time); use Lintian::Data; use Lintian::Tags qw(tag); use Lintian::Util qw(fail); # Any Standards Version released before this day is "ancient" my $ANCIENT_DATE_DATA = Lintian::Data->new( 'standards-version/ancient-date', qr{\s*<\s*}, sub { my $date = str2time($_[1]) or fail "Cannot parse ANCIENT_DATE: $!"; return $date; }); my $ANCIENT_DATE = $ANCIENT_DATE_DATA->value('ANCIENT') or fail 'Cannot get ANCIENT_DATE'; my $STANDARDS= Lintian::Data->new('standards-version/release-dates', qr/\s+/o); # In addition to the normal Lintian::Data structure, we also want a list of # all standards and their release dates so that we can check things like the # release date of the standard released after the one a package declared. Do # that by pulling all data out of the Lintian::Data structure and sorting it # by release date. We can also use this to get the current standards version. my @STANDARDS = reverse sort { $a->[1] <=> $b->[1] } map { [$_, $STANDARDS->value($_)] } $STANDARDS->all; my $CURRENT_DATE = $STANDARDS[0][1]; # In scalar context you get the string (e.g. "3.9.2") # and in list context you get it split into pieces (3, 9, 2) my $CURRENT = $STANDARDS[0][0]; my @CURRENT = split(m/\./, $CURRENT); sub run { my (undef, undef, $info) = @_; # udebs aren't required to conform to policy, so they don't need # Standards-Version. (If they have it, though, it should be valid.) my $version = $info->field('standards-version'); my $all_udeb = 1; $all_udeb = 0 if first { $info->binary_package_type($_) ne 'udeb' } $info->binaries; if (not defined $version) { tag 'no-standards-version-field' unless $all_udeb; return; } # Check basic syntax and strip off the fourth digit. People are allowed to # include the fourth digit if they want, but it indicates a non-normative # change in Policy and is therefore meaningless in the Standards-Version # field. unless ($version =~ m/^\s*(\d+\.\d+\.\d+)(?:\.\d+)?\s*$/) { tag 'invalid-standards-version', $version; return; } my $stdver = $1; my ($major, $minor, $patch) = $stdver =~ m/^(\d+)\.(\d+)\.(\d+)/; # To do some date checking, we have to get the package date from # the changelog file. If we can't find the changelog file, assume # that the package was released today, since that activates the # most tags. my $changes = $info->changelog; my ($pkgdate, $dist); if (defined $changes) { my ($entry) = $changes->data; $pkgdate = ($entry && $entry->Timestamp) ? $entry->Timestamp : $CURRENT_DATE; $dist = ($entry && $entry->Distribution)? $entry->Distribution : ''; } else { $pkgdate = $CURRENT_DATE; } # Check for packages dated prior to the date of release of the standards # version with which they claim to comply. if ( defined $dist && $dist ne 'UNRELEASED' && $STANDARDS->known($stdver) && $STANDARDS->value($stdver) > $pkgdate) { my $package = strftime('%Y-%m-%d', gmtime $pkgdate); my $release = strftime('%Y-%m-%d', gmtime $STANDARDS->value($stdver)); tag 'timewarp-standards-version', "($package < $release)"; } my $tag = "$version (current is $CURRENT)"; if (not $STANDARDS->known($stdver)) { # Unknown standards version. Perhaps newer? if ( ($major > $CURRENT[0]) or ($major == $CURRENT[0] and $minor > $CURRENT[1]) or ( $major == $CURRENT[0] and $minor == $CURRENT[1] and $patch > $CURRENT[2]) ) { tag 'newer-standards-version', $tag; } else { tag 'invalid-standards-version', $version; } } elsif ($stdver eq $CURRENT) { # Current standard. Nothing more to check. return; } else { # Otherwise, we need to see if the standard that this package # declares is both new enough to not be ancient and was the # current standard at the time the package was uploaded. # # A given standards version is considered obsolete if the # version following it has been out for at least two years (so # the current version is never obsolete). my $rdate = $STANDARDS->value($stdver); if ($rdate < $ANCIENT_DATE) { tag 'ancient-standards-version', $tag; } else { # We have to get the package date from the changelog file. If we # can't find the changelog file, always issue the tag. if (not defined $changes) { tag 'out-of-date-standards-version', $tag; return; } my ($entry) = $changes->data; my $timestamp = ($entry && $entry->Timestamp) ? $entry->Timestamp : 0; for my $standard (@STANDARDS) { last if $standard->[0] eq $stdver; if ($standard->[1] < $timestamp) { tag 'out-of-date-standards-version', $tag; last; } } } } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/copyright-file.desc0000664000000000000000000004206112310413206016474 0ustar Check-Script: copyright-file Author: Christian Schwarz Abbrev: cpy Type: binary Needs-Info: copyright-file, index Info: This script checks if a binary package conforms to policy with regard to copyright files. . Each binary package must either have a /usr/share/doc/<foo>/copyright file or must have a symlink /usr/share/doc/<foo> -> <bar>, where <bar> comes from the same source package and pkg foo declares a "Depends" relation on bar. Tag: no-copyright-file Severity: serious Certainty: certain Info: Each binary package has to include a plain file /usr/share/doc/pkg/copyright Ref: policy 12.5 Tested: empty Tag: copyright-refers-to-old-directory Severity: serious Certainty: certain Info: The common licenses (GPL, BSD, Artistic, etc) have been moved from /usr/doc/copyright to /usr/share/common-licenses. Copyright files should be updated. Ref: policy 12.5 Tag: copyright-file-compressed Severity: serious Certainty: certain Info: The copyright file /usr/share/doc/pkg/copyright must not be compressed. Ref: policy 12.5 Tag: copyright-file-is-symlink Severity: serious Certainty: certain Info: The copyright file /usr/share/doc/pkg/copyright must not be a symbolic link. Ref: policy 12.5 Tag: copyright-file-contains-full-gpl-license Severity: important Certainty: certain Info: The copyright file /usr/share/doc/pkg/copyright contains the complete text of the GPL v1, v2, or v3. It should refer to the file /usr/share/common-licenses/GPL-1, GPL-2, or GPL-3 instead. Ref: policy 12.5 Tag: copyright-file-contains-full-gfdl-license Severity: important Certainty: certain Info: The copyright file /usr/share/doc/pkg/copyright contains the complete text of the GFDL v1.2. It should refer to the file /usr/share/common-licenses/GFDL-1.2 instead. Ref: policy 12.5 Tag: copyright-file-contains-full-apache-2-license Severity: important Certainty: certain Info: The copyright file /usr/share/doc/pkg/copyright contains the complete text of the Apache 2.0 license. It should refer to the file /usr/share/common-licenses/Apache-2.0 instead. Ref: policy 12.5 Tag: usr-share-doc-symlink-without-dependency Severity: serious Certainty: possible Info: If the package installs a symbolic link /usr/share/doc/pkg1 -> pkg2, then pkg1 must depend on pkg2 directory, with the same version as pkg1. . Adding the dependency just to fix this bug is often not a good solution. Usually, it's better to include a real /usr/share/doc/pkg1 directory within pkg1 and copy the copyright file into that directory. . Transitive dependencies are not allowed here. In other words, if the documentation directory is shipped in pkg3 and pkg1 depends on pkg2, which in turn depends on pkg3, that's still an error. Copyright file extractors are not required to go more than one level deep when resolving dependencies. Each package should have a direct dependency on the package which includes its documentation directory. Ref: policy 12.5 Tag: usr-share-doc-symlink-to-foreign-package Severity: serious Certainty: certain Info: If the package installs a symbolic link /usr/share/doc/pkg1 -> pkg2, then pkg1 and pkg2 must both come from the same source package. . The best solution is probably to stop symlinking the /usr/share/doc directory for this package and instead include a real /usr/share/doc/pkg1 directory within pkg1 with the appropriate contents (such as the copyright and changelog.Debian.gz files). Ref: policy 12.5 Tag: cannot-check-whether-usr-share-doc-symlink-points-to-foreign-package Severity: minor Certainty: possible Info: There is a symlink /usr/share/doc/pkg1 -> pkg2 in your package. This means that pkg1 and pkg2 must both come from the same source package. Lintian cannot check this right now however. . Please reprocess this binary together with its source package to avoid this tag. Tag: old-fsf-address-in-copyright-file Severity: normal Certainty: certain Info: The /usr/share/doc/pkg/copyright file refers to the old postal address of the Free Software Foundation (FSF). The new address is: . Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. Tag: helper-templates-in-copyright Severity: important Certainty: certain Info: The /usr/share/doc/pkg/copyright file still contains template markers from a packaging helper. Please fill in the actual license, upstream copyright holders, and download information about the package and remove any remaining templates generated by the packaging helper. Tag: copyright-refers-to-compressed-license Severity: important Certainty: certain Info: The /usr/share/doc/pkg/copyright file refers to a standard license /usr/share/common-licenses/{GPL,LGPL,Artistic,BSD}.gz as a compressed file. Please update the reference (the licenses are installed uncompressed). Tag: usr-share-doc-symlink-points-outside-of-usr-share-doc Severity: important Certainty: certain Info: The /usr/share/doc/pkg symbolic link is pointing to a directory outside of /usr/share/doc. Ref: policy 12.5 Tag: copyright-does-not-refer-to-common-license-file Severity: normal Certainty: certain Info: If your package uses any one of the licenses in /usr/share/common-licenses, the copyright file should refer to files therein. Ref: policy 12.5 Tag: copyright-refers-to-incorrect-directory Severity: serious Certainty: certain Ref: policy 12.5 Info: In the directory name /usr/share/common-licenses, licenses is spelled with an "s", not as licences with a "c". Tag: copyright-file-lacks-pointer-to-perl-license Severity: important Certainty: possible Ref: policy 12.5 Info: If your package is released under the same terms as Perl itself, it should refer to the Artistic and GPL license files in the /usr/share/common-licenses directory. Tag: copyright-should-refer-to-common-license-file-for-apache-2 Severity: important Certainty: possible Ref: policy 12.5 Info: The strings "Apache License, Version" or "Apache-2" appear in the copyright file for this package, but the copyright file does not reference /usr/share/common-licenses as the location of the Apache-2 on Debian systems. . If the package uses some other license that just mentions the Apache-2 and that Lintian should detect as an exception, please file a Lintian bug. If the copyright file must mention the Apache-2 for reasons other than stating the license of the package, please add a Lintian override. Tag: copyright-should-refer-to-common-license-file-for-gpl Severity: important Certainty: possible Ref: policy 12.5 Info: The strings "GNU General Public License" or "GPL" appear in the copyright file for this package, but the copyright file does not reference /usr/share/common-licenses as the location of the GPL on Debian systems. . If the package uses some other license that just mentions the GPL and that Lintian should detect as an exception, please file a Lintian bug. If the copyright file must mention the GPL for reasons other than stating the license of the package, please add a Lintian override. Tag: copyright-should-refer-to-common-license-file-for-gfdl Severity: important Certainty: possible Ref: policy 12.5 Info: The strings "GNU Free Documentation License" or "GFDL" appear in the copyright file for this package, but the copyright file does not reference /usr/share/common-licenses as the location of the GFDL on Debian systems. . If the package uses some other license that just mentions the GFDL and that Lintian should detect as an exception, please file a Lintian bug. If the copyright file must mention the GFDL for reasons other than stating the license of the package, please add a Lintian override. Tag: copyright-should-refer-to-common-license-file-for-lgpl Severity: important Certainty: possible Ref: policy 12.5 Info: The strings "GNU Lesser General Public License", "GNU Library General Public License", or "LGPL" appear in the copyright file for this package, but the copyright file does not reference /usr/share/common-licenses as the location of the LGPL on Debian systems. . If the package uses some other license that just mentions the LGPL and that Lintian should detect as an exception, please file a Lintian bug. If the copyright file must mention the LGPL for reasons other than stating the license of the package, please add a Lintian override. Tag: copyright-has-url-from-dh_make-boilerplate Severity: normal Certainty: certain Ref: policy 12.5 Info: There is "url://example.com" in your copyright file. This was most likely a remnant from the dh_make template. . Make sure you include the real location where you obtained the upstream sources (if any). Tag: debian-copyright-file-uses-obsolete-national-encoding Severity: serious Certainty: certain Ref: policy 12.5 Info: The Debian copyright file must be valid UTF-8, an encoding of the Unicode character set. . There are many ways to convert a copyright file from an obsoleted encoding like ISO-8859-1; you may for example use "iconv" like: . $ iconv -f ISO-8859-1 -t UTF-8 copyright > copyright.new $ mv copyright.new copyright Tag: copyright-contains-dh_make-todo-boilerplate Severity: serious Certainty: possible Ref: policy 12.5 Info: The string "Please also look if..." appears in the copyright file, which indicates that you either didn't check the whole source to find additional copyright/license, or that you didn't remove that paragraph after having done so. Tag: copyright-contains-dh-make-perl-boilerplate Severity: normal Certainty: certain Ref: policy 12.5 Info: The string "This copyright info was automatically extracted" appears in the copyright file, which indicates that you either didn't check the whole source to find additional copyright/license, or that you didn't remove that paragraph after having done so. Tag: copyright-with-old-dh-make-debian-copyright Severity: pedantic Certainty: certain Info: The copyright file contains the incomplete Debian packaging copyright boilerplate from older versions of dh_make. (C) alone is not considered a valid copyright notice in some countries. The word Copyright or the © symbol should be used instead or in addition to (C). . Copyright notices like this are, in any country that's a signatory to the Berne Convention, not required to claim copyright on a work, but their presence may allow claiming additional damages should a copyright case go to court. If you provide a notice, you may as well provide one that's legally recognized in a broader range of countries. Tag: copyright-refers-to-bad-php-license Severity: serious Certainty: possible Info: This package appears to be covered by version 2.x of the PHP license, which is not appropriate for anything other than the PHP interpreter itself. . Note that PEAR modules are not a part of the PHP interpreter and cannot use this license. Ref: http://ftp-master.debian.org/REJECT-FAQ.html, #616436 Tag: copyright-refers-to-problematic-php-license Severity: serious Certainty: wild-guess Info: This package appears to be covered by version 3.0 (exactly) of the PHP license. This license is not applicable to anything that is not PHP and has no contributions from the PHP Group. Ref: http://ftp-master.debian.org/REJECT-FAQ.html Tag: copyright-without-copyright-notice Severity: normal Certainty: certain Ref: http://ftp-master.debian.org/REJECT-FAQ.html Info: The copyright file for this package does not appear to contain a copyright notice. You should copy the copyright notice from the upstream source (or add one of your own for a native package). A copyright notice must consist of Copyright, Copr., or the Unicode symbol of C in a circle followed by the years and the copyright holder. A copyright notice is not required for a work to be copyrighted, but Debian requires the copyright file include the authors and years of copyright, and including a valid copyright notice is the best way to do that. Examples: . Copyright YYYY Firstname Lastname <address@example.com> Copr. YYYY-YYYY Firstname Lastname <address@example.com> © YYYY,YYYY Firstname Lastname <address@example.com> . If the package is in the public domain rather than copyrighted, be sure to mention "public domain" in the copyright file. Please be aware that this is very rare and not the same as a DFSG-free license. True public domain software is generally limited to such special cases as a work product of a United States government agency. Tag: spelling-error-in-copyright Severity: minor Certainty: possible Info: Lintian found a spelling error in the copyright file. Lintian has a list of common misspellings that it looks for. It does not have a dictionary like a spelling checker does. If this is a spelling error in the upstream license, in supporting email messages, or a case of Lintian being confused by non-English text, add an override. Tag: possible-gpl-code-linked-with-openssl Severity: serious Certainty: wild-guess Info: This package appears to be covered by the GNU GPL but depends on the OpenSSL libssl package and does not mention a license exemption or exception for OpenSSL in its copyright file. The GPL (including version 3) is incompatible with some terms of the OpenSSL license, and therefore Debian does not allow GPL-licensed code linked with OpenSSL libraries unless there is a license exception explicitly permitting this. . If only the Debian packaging, or some other part of the package not linked with OpenSSL, is covered by the GNU GPL, please add a lintian override for this tag. Lintian currently has no good way of distinguishing between that case and problematic packages. Tag: copyright-refers-to-symlink-license Severity: pedantic Certainty: possible Info: The copyright file refers to the versionless symlink in /usr/share/common-licenses for the full text of the GPL, LGPL, or GFDL license. This symlink is updated to point to the latest version of the license when a new one is released. The package appears to allow relicensing under later versions of its license, so this is legally consistent, but it implies that Debian will relicense the package under later versions of those licenses as they're released. It is normally better to point to the version of the license the package references in its license statement. . For example, if the package says something like "you may 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, or (at your option) any later version", the debian/copyright file should refer to /usr/share/common-licenses/GPL-2, not /GPL. . For packages released under the same terms as Perl, Perl references the GPL version 1, so point to /usr/share/common-licenses/GPL-1. Tag: copyright-refers-to-versionless-license-file Severity: normal Certainty: possible Info: The copyright file refers to the versionless symlink in /usr/share/common-licenses for the full text of the GPL, LGPL, or GFDL license, but the package does not appear to allow distribution under later versions of the license. This symlink will change with each release of a new version of the license and may therefore point to a different version than the package is released under. debian/copyright should instead refers to the specific version of the license that the package references. . For example, if the package says something like "you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 dated June, 1991," the debian/copyright file should refer to /usr/share/common-licenses/GPL-2, not /GPL. Tag: copyright-refers-to-nonexistent-license-file Severity: normal Certainty: certain Info: The copyright file refers to a license in /usr/share/common-licenses that doesn't exist. Usually this is a typo, such as accidentally omitting the - between the license name and the version number. Tag: copyright-refers-to-deprecated-bsd-license-file Severity: minor Certainty: certain Ref: policy 12.5 Info: The copyright file refers to /usr/share/common-licenses/BSD. Due to the brevity of this license, the specificity of this copy to code whose copyright is held by the Regents of the University of California, and the frequency of minor wording changes in the license, its text should be included in the copyright file directly rather than referencing this file. . This file may be removed from a future version of base-files if references to it drop sufficiently. Tag: copyright-has-crs Severity: pedantic Certainty: certain Info: The copyright file has lines ending in CRLF instead of just LF. . Running the following command against the given file removes any CR character in the file: . sed -i 's/\r//g' path/to/file lintian-2.5.22ubuntu1/checks/control-files.pm0000664000000000000000000000621712313507507016043 0ustar # control-files -- lintian check script -*- perl -*- # Copyright (C) 1998 Christian Schwarz and Richard Braakman # # 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::control_files; use strict; use warnings; use autodie; use Lintian::Tags qw(tag); sub octify { my (undef, $val) = @_; return oct($val); } my $DEB_PERMISSIONS = Lintian::Data->new('control-files/deb-permissions', qr/\s++/o, \&octify); my $UDEB_PERMISSIONS = Lintian::Data->new('control-files/udeb-permissions', qr/\s++/o, \&octify); sub run { my (undef, $type, $info) = @_; my $ctrl = $type eq 'udeb' ? $UDEB_PERMISSIONS : $DEB_PERMISSIONS; my $ctrl_alt = $type eq 'udeb' ? $DEB_PERMISSIONS : $UDEB_PERMISSIONS; # process control-index file foreach my $file ($info->sorted_control_index) { my ($owner, $operm, $experm); # the control.tar.gz should only contain files (and the "root" # dir, but that is excluded from the index) if (not $file->is_regular_file) { tag 'control-file-is-not-a-file', $file; # Doing further checks is probably not going to yield anything # remotely useful. next; } # valid control file? unless ($ctrl->known($file)) { if ($ctrl_alt->known($file)) { tag 'not-allowed-control-file', $file; next; } else { tag 'unknown-control-file', $file; next; } } $experm = $ctrl->value($file); if ($file->size == 0) { tag 'control-file-is-empty', $file; } # skip `control' control file (that's an exception: dpkg # doesn't care and this file isn't installed on the systems # anyways) next if $file eq 'control'; $operm = $file->operm; # correct permissions? unless ($operm == $experm) { tag 'control-file-has-bad-permissions', sprintf('%s %04o != %04o', $file, $operm, $experm); } $owner = $file->owner . '/' . $file->group; # correct owner? unless ($owner eq 'root/root') { tag 'control-file-has-bad-owner', "$file $owner != root/root"; } # for other maintainer scripts checks, see the scripts check } return; } # 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/apache2.desc0000664000000000000000000001442012310413144015051 0ustar Check-Script: apache2 Author: Arno Töll Abbrev: apache2 Type: binary Info: Checks various build mistakes in Apache2 reverse dependencies Needs-Info: bin-pkg-control, index, scripts, unpacked Tag: non-standard-apache2-module-package-name Severity: normal Certainty: certain Info: The package appears to be an Apache2 HTTPD server module but it isn't following the module naming scheme. Apache2 HTTPD modules should be called libapache2-mod-name with mod-name being the actual mod_name.so equivalent. Tag: apache2-module-depends-on-real-apache2-package Severity: serious Certainty: certain Info: The package is an Apache2 HTTPD server module but it depends on a real Apache2 package. Binary module packages must depend on the virtual apache2-api-YYYYMMNN package only in order to ease transitions in future. . In particular, module packages must not pull the full web server or any of its associated data packages as a dependency. That's left to the user. Tag: apache2-module-does-not-depend-on-apache2-api Severity: serious Certainty: certain Info: The package is an Apache2 HTTPD server module but does not declare a strong binary relation against the Apache2 server binary it links against. Modules must depend on the apache2-api-YYYYMMNN package provided as a virtual package by apache2-bin. Tag: apache2-module-does-not-ship-load-file Severity: serious Certainty: certain Info: The package is an Apache2 HTTPD server module but does not ship a ".load" file or it was installed under an unexpected name. The load files in "/etc/apache2/mods-available" are required to interact with the server package to enable and disable the module and must match the module name without "mod_ prefix, e.g. mod_foo must ship a load file named "foo.load". Tag: apache2-reverse-dependency-ships-file-in-not-allowed-directory Severity: serious Certainty: certain Info: The package installs a piece of Apache2 configuration to /etc/apache2/{sites,mods,conf}-enabled. This is not allowed. Instead the respective /etc/apache2/{sites,mods,conf}-available counterparts must be used. Tag: non-standard-apache2-configuration-name Severity: normal Certainty: certain Info: The package appears to be a web application which is installing a configuration file for the Apache2 HTTPD server. To avoid name clashes, any file installed to /etc/apache2/{sites,conf}-available should match the binary package name and must not start with local-. Tag: apache2-reverse-dependency-calls-wrapper-script Severity: normal Certainty: certain Info: The package is calling an Apache2 configuration wrapper script (e.g. a2enmod, a2enconf, a2enconf, ...). Maintainer scripts should not be calling these scripts directly. To achieve a uniform and consolidated behavior these scripts should be invoked indirectly by using apache2-maintscript-helper. Tag: web-application-depends-on-apache2-data-package Severity: normal Certainty: certain Info: The package appears to be a web application but declares a package relation with apache2-bin, apache2-data or any of its transitional packages. However, web applications are rarely bound to a specific web server version. Thus, they should depend on apache2 only instead. If a web application is actually tied to a particular binary version of the web server a dependency against the virtual apache2-api-YYYYMMDD package is more appropriate. Tag: web-application-should-not-depend-unconditionally-on-apache2 Severity: normal Certainty: certain Info: The package appears to be a web application but declares a dependency against apache2 without any alternative. Most web applications should work with any decent web server, thus such a package should be satisfied if any web server providing the virtual "httpd" package is installed. This can be accomplished by declaring a package relation in the form "apache2 | httpd". Tag: apache2-reverse-dependency-calls-invoke-rc.d Severity: normal Certainty: certain Info: The package is invoking apache2's init script in its maintainer script albeit it shouldn't do so. Reverse dependencies installing apache2 configuration pieces should not restart the web server unconditionally in maintainer scripts. Instead they should be using apache2-maintscript-helper which correctly obeys local policies. Tag: apache2-reverse-dependency-uses-obsolete-directory Severity: normal Certainty: certain Info: The package is installing a file into the obsolete /etc/apache2/conf.d/ directory. This file is not read by the Apache2 2.4 web server anymore. Instead /etc/apache2/conf-available/ should be used. Tag: apache2-configuration-files-need-conf-suffix Severity: important Certainty: certain Info: The package is installing an Apache2 configuration but that file does not end with a '.conf' suffix. Starting with Apache2 2.4 all configuration files except module '.load' files need that suffix or are ignored otherwise. Tag: apache2-unparsable-dependency Severity: normal Certainty: certain Info: The package is declaring a module dependency within an Apache configuration file which does not meet the requirements. Dependencies must be declared without paths, leading "mod_" prefix and without file extension. Tag: apache2-unsupported-dependency Severity: normal Certainty: certain Info: The package is declaring a module dependency within an Apache configuration file which is not supported there. Dependencies are supported in module '.load' files, and web application '.conf' files, conflicts in '.load files only. Tag: apache2-deprecated-auth-config Severity: normal Certainty: certain Info: The package is using some of the deprecated authentication configuration directives Order, Satisfy, Allow, Deny, <Limit> or <LimitExcept> . These do not integrate well with the new authorization scheme of Apache 2.4 and, in the case of <Limit> and <LimitExcept> have confusing semantics. The configuration directives should be replaced with a suitable combination of <RequireAll>, <RequireAny>, Require all, Require local, Require ip, and Require method. lintian-2.5.22ubuntu1/checks/rules.pm0000664000000000000000000004455412311317616014421 0ustar # rules -- lintian check script -*- perl -*- # Copyright (C) 2006 Russ Allbery # Copyright (C) 2005 René van Bevern # # 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. package Lintian::rules; use strict; use warnings; use autodie; use Carp qw(croak); use List::MoreUtils qw(any); use Lintian::Data; use Lintian::Tags qw(tag); use Lintian::Util qw(is_ancestor_of rstrip); our $PYTHON_DEPEND = 'python | python-dev | python-all | python-all-dev'; our $PYTHON3_DEPEND = 'python3 | python3-dev | python3-all | python3-all-dev'; our $PYTHON2X_DEPEND = 'python2.7 | python2.7-dev'; our $PYTHON3X_DEPEND = join(' | ', map { "python$_ | python$_-dev" } qw(3.2)); our $ANYPYTHON_DEPEND = "$PYTHON_DEPEND | $PYTHON2X_DEPEND | $PYTHON3_DEPEND | $PYTHON3X_DEPEND"; my $KNOWN_MAKEFILES = Lintian::Data->new('rules/known-makefiles', '\|\|'); my $DEPRECATED_MAKEFILES = Lintian::Data->new('rules/deprecated-makefiles'); my $POLICYRULES = Lintian::Data->new('rules/policy-rules', qr/\s++/); # forbidden construct in rules my $BAD_CONSTRUCT_IN_RULES = Lintian::Data->new('rules/rules-should-not-use', qr/\s*~~\s*/, sub { return qr/$_[1]/xs }); # Certain build tools must be listed in Build-Depends even if there are no # arch-specific packages because they're required in order to run the clean # rule. (See Policy 7.6.) The following is a list of package dependencies; # regular expressions that, if they match anywhere in the debian/rules file, # say that this package is allowed (and required) in Build-Depends; and # optional tags to use for reporting the problem if some information other # than the default is required. our @GLOBAL_CLEAN_DEPENDS = ( [ant => qr'^include\s*/usr/share/cdbs/1/rules/ant\.mk'], [cdbs => qr'^include\s+/usr/share/cdbs/'], [cdbs => qr'^include\s+/usr/share/R/debian/r-cran\.mk'], [dbs => qr'^include\s+/usr/share/dbs/'], ['dh-make-php' => qr'^include\s+/usr/share/cdbs/1/class/pear\.mk'], [debhelper => qr'^include\s+/usr/share/cdbs/1/rules/debhelper\.mk'], [debhelper => qr'^include\s+/usr/share/R/debian/r-cran\.mk'], [dpatch => qr'^include\s+/usr/share/cdbs/1/rules/dpatch\.mk'], ['gnome-pkg-tools' => qr'^include\s+/usr/share/gnome-pkg-tools/'], [quilt => qr'^include\s+/usr/share/cdbs/1/rules/patchsys-quilt\.mk'], [dpatch => qr'^include\s+/usr/share/dpatch/'], ['mozilla-devscripts' => qr'^include\s+/usr/share/mozilla-devscripts/'], [quilt => qr'^include\s+/usr/share/quilt/'], ['ruby-pkg-tools' => qr'^include\s+/usr/share/ruby-pkg-tools/1/class/'], ['r-base-dev' => qr'^include\s+/usr/share/R/debian/r-cran\.mk'], [ $ANYPYTHON_DEPEND => qr'/usr/share/cdbs/1/class/python-distutils\.mk', 'missing-python-build-dependency' ], ); # A list of packages; regular expressions that, if they match anywhere in the # debian/rules file, this package must be listed in either Build-Depends or # Build-Depends-Indep as appropriate; and optional tags as above. my @GLOBAL_DEPENDS =( ['dh-ocaml, ocaml-nox | ocaml' => qr'^\t\s*dh_ocaml(?:init|doc)\s'], ['python-central' => qr'^DEB_PYTHON_SYSTEM\s*:?=\s*pycentral'], ['python-support' => qr'^DEB_PYTHON_SYSTEM\s*:?=\s*pysupport'], ); # Similarly, this list of packages, regexes, and optional tags say that if the # regex matches in one of clean, build-arch, binary-arch, or a rule they # depend on, this package is allowed (and required) in Build-Depends. my @RULE_CLEAN_DEPENDS =( [ant => qr'^\t\s*(\S+=\S+\s+)*ant\s'], [debhelper => qr'^\t\s*dh_.+'], ['dh-ocaml, ocaml-nox | ocaml' => qr'^\t\s*dh_ocamlinit\s'], [dpatch => qr'^\t\s*(\S+=\S+\s+)*dpatch\s'], ['po-debconf' => qr'^\t\s*debconf-updatepo\s'], [$PYTHON_DEPEND => qr'^\t\s*python\s', 'missing-python-build-dependency'], [ $PYTHON3_DEPEND => qr'^\t\s*python3\s', 'missing-python-build-dependency' ], [ $ANYPYTHON_DEPEND => qr'\ssetup\.py\b', 'missing-python-build-dependency' ], [quilt => qr'^\t\s*(\S+=\S+\s+)*quilt\s'], ); # Rules about required debhelper command ordering. Each command is put into a # class and the tag is issued if they're called in the wrong order for the # classes. Unknown commands won't trigger this flag. my %debhelper_order = ( dh_makeshlibs => 1, dh_shlibdeps => 2, dh_installdeb => 2, dh_gencontrol => 2, dh_builddeb => 3 ); sub run { my (undef, undef, $info, undef, $group) = @_; my $rules = $info->debfiles('rules'); # Policy could be read as allowing debian/rules to be a symlink to # some other file, and in a native Debian package it could be a # symlink to a file that we didn't unpack. Warn if it's a symlink # (dpkg-source does as well) and skip all the tests if we then # can't read it. if (-l $rules) { tag 'debian-rules-is-symlink'; return unless -f $rules and is_ancestor_of($info->debfiles, $rules); } my $architecture = $info->field('architecture', ''); my $version = $info->field('version'); # If the version field is missing, we assume a neutral non-native one. $version = '0-1' unless defined $version; open(my $rules_fd, '<', $rules); # Check for required #!/usr/bin/make -f opening line. Allow -r or -e; a # strict reading of Policy doesn't allow either, but they seem harmless. my $start = <$rules_fd>; tag 'debian-rules-not-a-makefile' unless $start =~ m%^\#!\s*/usr/bin/make\s+-[re]?f[re]?\s*$%; # Holds which dependencies are required. The keys in %needed and # %needed_clean are the dependencies; the values are the tags to use or the # empty string to use the default tag. my (%needed, %needed_clean); # Scan debian/rules. We would really like to let make do this for # us, but unfortunately there doesn't seem to be a way to get make # to syntax-check and analyze a makefile without running at least # $(shell) commands. # # We skip some of the rule analysis if debian/rules includes any # other files, since to chase all includes we'd have to have all # of its build dependencies installed. local $_; my @arch_rules = (qr/^clean$/, qr/^binary-arch$/, qr/^build-arch$/); my @indep_rules = (qr/^build$/, qr/^build-indep$/, qr/^binary-indep$/); my (@current_targets, %rules_per_target, %debhelper_group); my %seen; my $maybe_skipping; my %variables; my $uses_makefile_pl = 0; my $includes = 0; while (<$rules_fd>) { while (s,\\$,, and defined(my $cont = <$rules_fd>)) { $_ .= $cont; } my $line = $_; next if /^\s*\#/; if (m/^\s*[s-]?include\s+(\S++)/o){ my $makefile = $1; my $targets = $KNOWN_MAKEFILES->value($makefile); if (defined $targets){ foreach my $target (split m/\s*+,\s*+/o, $targets){ $seen{$target}++ if $POLICYRULES->known($target); } } else { $includes = 1; } if ($DEPRECATED_MAKEFILES->known($makefile)){ tag 'debian-rules-uses-deprecated-makefile', "line $.", $makefile; } } $uses_makefile_pl = 1 if m/Makefile\.PL/o; # Check for DH_COMPAT settings outside of any rule, which are now # deprecated. It's a bit easier structurally to do this here than in # debhelper. if (/^\s*(?:export\s+)?DH_COMPAT\s*:?=/ && keys(%seen) == 0) { tag 'debian-rules-sets-DH_COMPAT', "line $."; } # Check for problems that can occur anywhere in debian/rules. if ( m/^\t\s*-(?:\$[\(\{]MAKE[\}\)]|make)\s.*(?:dist)?clean/s || m/^\t\s*(?:\$[\(\{]MAKE[\}\)]|make)\s(?:.*\s)?-(\w*)i.*(?:dist)?clean/s ) { # Ignore "-C" (#671537) if (not $1 or $1 !~ m,^C,) { tag 'debian-rules-ignores-make-clean-error', "line $."; } } # check generic problem foreach my $bad_construct ($BAD_CONSTRUCT_IN_RULES->all) { my $badregex = $BAD_CONSTRUCT_IN_RULES->value($bad_construct); if ($line =~ m/$badregex/) { tag $bad_construct, "line $."; } } if ($uses_makefile_pl && m/install.*PREFIX/s && !/DESTDIR/) { tag 'debian-rules-makemaker-prefix-is-deprecated', "line $."; } # General assignment - save the variable if (/^\s*(?:\S+\s+)*?(\S+)\s*([:\?\+])?=\s*(.*+)?$/so) { # This is far too simple from a theoretical PoV, but should do # rather well. my ($var, $atype, $value) = ($1, $2, $3); $variables{$var} = $value; } # Keep track of whether this portion of debian/rules may be optional if (/^ifn?(?:eq|def)\s/) { $maybe_skipping++; } elsif (/^endif\s/) { $maybe_skipping--; } # Check for strings anywhere in debian/rules that have implications for # our dependencies. for my $rule (@GLOBAL_CLEAN_DEPENDS) { if (/$rule->[1]/ and not $maybe_skipping) { $needed_clean{$rule->[0]} = $rule->[2] || $needed_clean{$rule->[0]} || ''; } } for my $rule (@GLOBAL_DEPENDS) { if (/$rule->[1]/ && !$maybe_skipping) { $needed{$rule->[0]} = $rule->[2] || $needed{$rule->[0]} || ''; } } # Listing a rule as a dependency of .PHONY is sufficient to make it # present for the purposes of GNU make and therefore the Policy # requirement. if (/^(?:[^:]+\s)?\.PHONY(?:\s[^:]+)?:(.+)/s) { my @targets = split(' ', $1); local $_; for (@targets) { # Is it $(VAR) ? if (m/^\$[\(\{]([^\)\}]++)[\)\}]$/) { my $name = $1; my $val = $variables{$name}; if ($val) { # we think we know what it will expand to - note # we ought to "delay" it was a "=" variable rather # than ":=" or "+=". for (split m/\s++/o, rstrip($val)) { $seen{$_}++ if $POLICYRULES->known($_); } last; } # We don't know, so just mark the target as seen. } $seen{$_}++ if $POLICYRULES->known($_); } next; #.PHONY implies the rest will not match } if (!/^ifn?(?:eq|def)\s/ && m/^([^\s:][^:]*):+(.*)/s) { my ($target_names, $target_dependencies) = ($1, $2); @current_targets = split ' ', $target_names; my @depends = map { $_ = quotemeta $_; s/\\\$\\\([^\):]+\\:([^=]+)\\=([^\)]+)\1\\\)/$2.*/g; qr/^$_$/; } split(' ', $target_dependencies); for my $target (@current_targets) { if ($target =~ m/%/o) { my $pattern = quotemeta $target; $pattern =~ s/\\%/.*/g; for my $rulebypolicy ($POLICYRULES->all) { $seen{$rulebypolicy}++ if $rulebypolicy =~ m/$pattern/; } } else { # Is it $(VAR) ? if ($target =~ m/^\$[\(\{]([^\)\}]++)[\)\}]$/) { my $name = $1; my $val = $variables{$name}; if ($val) { # we think we know what it will expand to - note # we ought to "delay" it was a "=" variable rather # than ":=" or "+=". local $_; for (split m/\s++/o, rstrip($val)) { $seen{$_}++ if $POLICYRULES->known($_); } last; } # We don't know, so just mark the target as seen. } $seen{$target}++ if $POLICYRULES->known($target); } if (any { $target =~ /$_/ } @arch_rules) { push(@arch_rules, @depends); } } undef %debhelper_group; } elsif (/^define /) { # We don't want to think the body of the define is part of # the previous rule or we'll get false positives on tags # like binary-arch-rules-but-pkg-is-arch-indep. Treat a # define as the end of the current rule, although that # isn't very accurate either. @current_targets = (); } else { # If we have non-empty, non-comment lines, store them for # all current targets and check whether debhelper programs # are called in a reasonable order. if (m/^\s+[^\#]/) { my ($arch, $indep) = (0, 0); for my $target (@current_targets) { $rules_per_target{$target} ||= []; push @{$rules_per_target{$target}}, $_; $arch = 1 if (any { $target =~ /$_/ } @arch_rules); $indep = 1 if (any { $target =~ /$_/ } @indep_rules); $indep = 1 if $target eq '%'; $indep = 1 if $target =~ /^override_/; } if (not $maybe_skipping and ($arch or $indep)) { my $table = \%needed; $table = \%needed_clean if $arch; for my $rule (@RULE_CLEAN_DEPENDS) { my ($dep, $pattern, $tagname) = @$rule; next unless /$pattern/; $table->{$dep} = $tagname || $table->{$dep} || ''; } } if (m/^\s+(dh_\S+)\b/ and $debhelper_order{$1}) { my $command = $1; my ($package) = /\s(?:-p|--package=)(\S+)/; $package ||= ''; my $group = $debhelper_order{$command}; $debhelper_group{$package} ||= 0; if ($group < $debhelper_group{$package}) { tag 'debian-rules-calls-debhelper-in-odd-order', $command, "(line $.)"; } else { $debhelper_group{$package} = $group; } } } } } close($rules_fd); unless ($includes) { my $rec_allindep = 0; # Make sure all the required rules were seen. for my $target ($POLICYRULES->all) { unless ($seen{$target}) { my $typerule = $POLICYRULES->value($target); if($typerule eq 'required') { tag 'debian-rules-missing-required-target', $target; } elsif ($typerule eq 'recommended_allindep') { tag 'debian-rules-missing-recommended-target', $target; $rec_allindep++; } elsif ($typerule eq 'goodpractice_dfsg') { if ($version =~ /(dfsg|debian|ds)/) { tag 'debian-rules-missing-good-practice-target-dfsg', $target; } } else { $typerule ||= ''; croak( join(' ', 'unknown type of policy rules:', "$typerule (target: $target)")); } } } if ($rec_allindep) { my $all = 0; my $notall = 0; foreach my $p ($group->get_processables) { next if $p->pkg_type eq 'source' or $p->pkg_type eq 'changes'; $all++ if $p->pkg_arch eq 'all'; $notall++ if $p->pkg_arch ne 'all'; } tag 'package-would-benefit-from-build-arch-targets' if $all && $notall; } } # Make sure we have no content for binary-arch if we are arch-indep: $rules_per_target{'binary-arch'} ||= []; if ($architecture eq 'all' && scalar @{$rules_per_target{'binary-arch'}}) { my $nonempty = 0; foreach (@{$rules_per_target{'binary-arch'}}) { # dh binary-arch is actually a no-op if there is no # Architecture: any package in the control file unless (m/^\s*dh\s+(?:binary-arch|\$\@)/) { $nonempty = 1; } } tag 'binary-arch-rules-but-pkg-is-arch-indep' if $nonempty; } # Make sure that all the required build dependencies are there. Don't # issue missing-build-dependency errors for debhelper, since there's # another test that does that and it would just be a duplicate. my $build_regular = $info->relation('build-depends'); my $build_indep = $info->relation('build-depends-indep'); for my $package (keys %needed_clean) { delete $needed{$package}; my $tag = $needed_clean{$package} || 'missing-build-dependency'; unless ($build_regular->implies($package)) { if ($build_indep->implies($package)) { tag 'clean-should-be-satisfied-by-build-depends', $package; } else { if ($tag eq 'missing-build-dependency') { tag $tag, $package if $package ne 'debhelper'; } else { tag $tag; } } } } my $noarch = $info->relation_noarch('build-depends-all'); for my $package (keys %needed) { my $tag = $needed{$package} || 'missing-build-dependency'; unless ($noarch->implies($package)) { if ($tag eq 'missing-build-dependency') { tag $tag, $package; } else { tag $tag; } } } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/control-file.pm0000664000000000000000000004110512314366011015645 0ustar # control-file -- lintian check script -*- perl -*- # # Copyright (C) 2004 Marc Brockschmidt # # 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::control_file; use strict; use warnings; use autodie; use List::MoreUtils qw(any); use List::Util qw(first); use Lintian::Data (); use Lintian::Relation (); use Lintian::Tags qw(tag); use Lintian::Util qw(file_is_encoded_in_non_utf8 read_dpkg_control rstrip strip); # The list of libc packages, used for checking for a hard-coded dependency # rather than using ${shlibs:Depends}. my @LIBCS = qw(libc6 libc6.1 libc0.1 libc0.3); my $LIBCS = Lintian::Relation->new(join(' | ', @LIBCS)); my $src_fields = Lintian::Data->new('common/source-fields'); sub run { my ($pkg, undef, $info) = @_; my $dcontrol = $info->debfiles('control'); if (-l $dcontrol) { tag 'debian-control-file-is-a-symlink'; } # check that control is UTF-8 encoded my $line = file_is_encoded_in_non_utf8($dcontrol); if ($line) { tag 'debian-control-file-uses-obsolete-national-encoding', "at line $line"; } # Nag about dh_make Vcs comment only once my $seen_vcs_comment = 0; open(my $fd, '<', $dcontrol); while (<$fd>) { s/\s*\n$//; if ( m{\A \# \s* Vcs-(?:Git|Browser): \s* (?:git|http)://git\.debian\.org/ (?:\?p=)?collab-maint/\.git}osmx ) { # Emit it only once per package tag 'control-file-contains-dh_make-vcs-comment' unless $seen_vcs_comment++; next; } next if /^\#/; # line with field: if (/^(\S+):/) { my $field = lc($1); if ($field =~ /^xs-vcs-/) { my $base = $field; $base =~ s/^xs-//; tag 'xs-vcs-header-in-debian-control', $field if $src_fields->known($base); } if ($field eq 'xc-package-type') { tag 'xc-package-type-in-debian-control', "line $."; } unless (/^\S+: \S/ || /^\S+:$/) { tag 'debian-control-has-unusual-field-spacing', "line $."; } # something like "Maintainer: Maintainer: bad field" if (/^\Q$field\E: \s* \Q$field\E \s* :/xsmi) { tag 'debian-control-repeats-field-name-in-value', "line $."; } } } close($fd); eval { # check we can parse it, but ignore the result - we will fetch # the fields we need from $info. read_dpkg_control($dcontrol); }; if ($@) { chomp $@; $@ =~ s/^internal error: //; $@ =~ s/^syntax error in //; tag 'syntax-error-in-control-file', "debian/control: $@"; return; } my @package_names = $info->binaries; foreach my $bin (@package_names) { my $bfields = $info->binary_field($bin); tag 'build-info-in-binary-control-file-section', "Package $bin" if (first { $bfields->{"build-$_"} } qw(depends depends-indep conflicts conflicts-indep)); foreach my $field (keys %$bfields) { tag 'binary-control-field-duplicates-source', "field \"$field\" in package $bin" if ( $info->source_field($field) && $bfields->{$field} eq $info->source_field($field)); } } # Check that fields which should be comma-separated or # pipe-separated have separators. Places where this tends to # cause problems are with wrapped lines such as: # # Depends: foo, bar # baz # # or with substvars. If two substvars aren't separated by a # comma, but at least one of them expands to an empty string, # there will be a lurking bug. The result will be syntactically # correct, but as soon as both expand into something non-empty, # there will be a syntax error. # # The architecture list can contain things that look like packages # separated by spaces, so we have to remove any architecture # restrictions first. This unfortunately distorts our report a # little, but hopefully not too much. # # Also check for < and > relations. dpkg-gencontrol warns about # them and then transforms them in the output to <= and >=, but # it's easy to miss the error message. Similarly, check for # duplicates, which dpkg-source eliminates. for my $field ( qw(build-depends build-depends-indep build-conflicts build-conflicts-indep) ) { my $raw = $info->source_field($field); my $rel; next unless $raw; $rel = Lintian::Relation->new($raw); check_relation('source', $field, $raw, $rel); } for my $bin (@package_names) { for my $field ( qw(pre-depends depends recommends suggests breaks conflicts provides replaces enhances) ) { my $raw = $info->binary_field($bin, $field); my $rel; next unless $raw; $rel = $info->binary_relation($bin, $field); check_relation($bin, $field, $raw, $rel); } } # Make sure that a stronger dependency field doesn't imply any of # the elements of a weaker dependency field. dpkg-gencontrol will # fix this up for us, but we want to check the source package # since dpkg-gencontrol may silently "fix" something that's a more # subtle bug. # # Also check if a package declares a simple dependency on itself, # since similarly dpkg-gencontrol will clean this up for us but it # may be a sign of another problem, and check that the package # doesn't hard-code a dependency on libc. We have to do the # latter check here rather than in checks/fields to distinguish # from dependencies created by ${shlibs:Depends}. my @dep_fields = qw(pre-depends depends recommends suggests); foreach my $bin (@package_names) { for my $strong (0 .. $#dep_fields) { next unless $info->binary_field($bin, $dep_fields[$strong]); my $relation = $info->binary_relation($bin, $dep_fields[$strong]); tag 'package-depends-on-itself', $bin, $dep_fields[$strong] if $relation->implies($bin); tag 'package-depends-on-hardcoded-libc', $bin, $dep_fields[$strong] if $relation->implies($LIBCS) and $pkg !~ /^e?glibc$/; for my $weak (($strong + 1) .. $#dep_fields) { next unless $info->binary_field($bin, $dep_fields[$weak]); for my $dependency (split /\s*,\s*/, $info->binary_field($bin, $dep_fields[$weak])) { next unless $dependency; tag 'stronger-dependency-implies-weaker', $bin, "$dep_fields[$strong] -> $dep_fields[$weak]", $dependency if $relation->implies($dependency); } } } } # Check that every package is in the same archive area, except # that sources in main can deliver both main and contrib packages. # The source package may or may not have a section specified; if # it doesn't, derive the expected archive area from the first # binary package by leaving $area undefined until parsing the # first binary section. Missing sections will be caught by other # checks. # # Check any package that looks like a library -dev package for a # dependency on a shared library package built from the same # source. If found, such a dependency should have a tight version # dependency on that package. # # Also accumulate short and long descriptions for each package so # that we can check for duplication, but skip udeb packages. # Ideally, we should check the udeb package descriptions # separately for duplication, but udeb packages should be able to # duplicate the descriptions of non-udeb packages and the package # description for udebs is much less important or significant to # the user. my $area = $info->source_field('section'); if (defined $area) { if ($area =~ m%^([^/]+)/%) { $area = $1; } else { $area = 'main'; } } else { tag 'no-section-field-for-source'; } my @descriptions; foreach my $bin (@package_names) { # Accumulate the description. my $desc = $info->binary_field($bin, 'description'); my $bin_area; if ($desc and $info->binary_package_type($bin) ne 'udeb') { push @descriptions, [$bin, split("\n", $desc, 2)]; } # If this looks like a -dev package, check its dependencies. if ($bin =~ /-dev$/ and $info->binary_field($bin,'depends')) { check_dev_depends($info, $bin,$info->binary_field($bin, 'depends'), @package_names); } # Check mismatches in archive area. $bin_area = $info->binary_field($bin, 'section'); next unless $area && $bin_area; if ($bin_area =~ m%^([^/]+)/%) { $bin_area = $1; } else { $bin_area = 'main'; } next if $area eq $bin_area or ($area eq 'main' and $bin_area eq 'contrib'); tag 'section-area-mismatch', 'Package', $bin; } # Check for duplicate descriptions. my (%seen_short, %seen_long); for my $i (0 .. $#descriptions) { my (@short, @long); for my $j (($i + 1) .. $#descriptions) { if ($descriptions[$i][1] eq $descriptions[$j][1]) { my $package = $descriptions[$j][0]; push(@short, $package) unless $seen_short{$package}; } next unless ($descriptions[$i][2] and $descriptions[$j][2]); if ($descriptions[$i][2] eq $descriptions[$j][2]) { my $package = $descriptions[$j][0]; push(@long, $package) unless $seen_long{$package}; } } if (@short) { tag 'duplicate-short-description', $descriptions[$i][0], @short; for (@short) { $seen_short{$_} = 1 } } if (@long) { tag 'duplicate-long-description', $descriptions[$i][0], @long; for (@long) { $seen_long{$_} = 1 } } } # check the Build-Profiles field # this has to checked here because the Build-Profiles field does not appear # in DEBIAN/control and even if it should in the future, some binary # packages might never be built in the first place because of build # profiles # check which profile names are supposedly supported according to the build # dependencies my %used_profiles; for my $field ( qw(build-depends build-depends-indep build-conflicts build-conflicts-indep) ) { if (my $value = $info->source_field($field)) { # If the field does not contain "profile." then skip this # part. They rarely do, so this is just a little # "common-case" optimisation. next if index($value, 'profile.') < 0; for my $dep (split /\s*,\s*/, $value) { for my $alt (split /\s*\|\s*/, $dep) { while ($alt =~ /<([^>]+)>/g) { for my $restr (split /\s+/, $1) { if ($restr =~ m/^!?profile\.(.*)/) { $used_profiles{$1} = 0; } } } } } } } # find those packages that do not get built because of a certain build # profile for my $bin (@package_names) { my $raw = $info->binary_field($bin, 'build-profiles'); next unless $raw; for my $prof (split /\s+/, $raw) { if ($prof =~ s/^!//) { $used_profiles{$prof} = 1; } } } # find out if the developer forgot to mark binary packages as not being # built while (my ($k, $v) = each(%used_profiles)) { tag 'stageX-profile-used-but-no-binary-package-dropped' if (($k eq 'stage1' || $k eq 'stage2') && $v == 0); } return; } # Check the dependencies of a -dev package. Any dependency on one of the # packages in @packages that looks like the underlying library needs to # have a version restriction that's at least as strict as the same upstream # version. sub check_dev_depends { my ($info, $package, $depends, @packages) = @_; strip($depends); for my $target (@packages) { next unless ($target =~ /^lib[\w.+-]+\d/ and $target !~ /-(?:dev|docs?|common)$/); my @depends = grep { /(?:^|[\s|])\Q$target\E(?:[\s|\(]|\z)/ } split(/\s*,\s*/, $depends); # If there are any alternatives here, something special is # going on. Assume that the maintainer knows what they're # doing. Otherwise, separate out just the versions. next if any { /\|/ } @depends; my @versions = sort map { if (/^[\w.+-]+(?:\s*\(([^\)]+)\))/) { $1; } else { ''; } } @depends; # If there's only one mention of this package, the dependency # should be tight. Otherwise, there should be both >>/>= and # <binary_field($target, 'architecture', '') eq 'all' && $versions[0] =~ /^\s*=\s*\$\{source:Version\}/; tag 'weak-library-dev-dependency', "$package on $depends[0]"; } } elsif (@depends == 2) { unless ( $versions[0] =~ m/^\s*<[=<]\s* \$\{ (?: (?:binary|source):(?:Upstream-)?Version |Source-Version)\}/xsm && $versions[1] =~ m/^\s*>[=>]\s* \$\{ (?: (?:binary|source):(?:Upstream-)?Version |Source-Version)\}/xsm ) { tag 'weak-library-dev-dependency', "$package on $depends[0], $depends[1]"; } } } return; } # Checks for duplicates in a relation, for missing separators and # obsolete relation forms. sub check_relation { my ($pkg, $field, $rawvalue, $relation) = @_; for my $dup ($relation->duplicates) { tag 'duplicate-in-relation-field', 'in', $pkg, "$field:", join(', ', @$dup); } $rawvalue =~ s/\n(\s)/$1/g; $rawvalue =~ s/\[[^\]]*\]//g; if ( $rawvalue =~ /(?:^|\s) ( (?:\w[^\s,|\$\(]+|\$\{\S+:Depends\})\s* (?:\([^\)]*\)\s*)? ) \s+ ( (?:\w[^\s,|\$\(]+|\$\{\S+:Depends\})\s* (?:\([^\)]*\)\s*)? )/x ) { my ($prev, $next) = ($1, $2); for ($prev, $next) { rstrip; } tag 'missing-separator-between-items', 'in', $pkg, "$field field between '$prev' and '$next'"; } while ($rawvalue =~ /([^\s\(]+\s*\([<>]\s*[^<>=]+\))/g) { tag 'obsolete-relation-form-in-source', 'in', $pkg,"$field: $1"; } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/infofiles.desc0000664000000000000000000000570012310413144015525 0ustar Check-Script: infofiles Author: Josip Rodin Abbrev: info Type: binary Needs-Info: unpacked, file-info, index Info: This script checks if a binary package conforms to info document policy. Tag: info-document-not-compressed Severity: important Certainty: certain Info: Info documents should be compressed with gzip -9. Ref: policy 12.2 Tag: info-document-not-compressed-with-gzip Severity: important Certainty: certain Info: Info documents should be compressed with gzip -9. This file ends in .gz but doesn't appear to be a gzip-compressed file. Ref: policy 12.2 Tag: info-document-not-compressed-with-max-compression Severity: important Certainty: certain Info: Info documents should be compressed with gzip -9. This file is compressed with gzip, but without using maximum compression. Ref: policy 12.2 Tag: info-document-has-wrong-extension Severity: normal Certainty: certain Info: The info document has an extension other than info*.gz. Tag: info-document-missing-dir-section Severity: important Certainty: certain Info: This info document has no INFO-DIR-SECTION line. install-info will be unable to determine the section into which this info page should be put. The best solution is to add a line like: . @dircategory Development . to the texinfo source so that the generated info file will contain a section. See /usr/share/info/dir for sections to choose from. You will have to ensure that the build process builds new info files rather than using ones built by upstream. Tag: info-document-missing-dir-entry Severity: important Certainty: certain Info: This info document has no directory entry. This is text between START-INFO-DIR-ENTRY and END-INFO-DIR-ENTRY lines which is copied into the dir file in /usr/share/info by install-info. The best solution is to add lines like: . @direntry * foo: (foo). Foo creator and editor @end direntry . to the texinfo source so that the generated info file will contain an appropriate entry. You will have to ensure that the build process builds new info files rather than using ones built by upstream. Tag: info-document-missing-image-file Severity: normal Certainty: certain Info: This info document contains an "[image]" but the image file it specifies is missing. Texinfo @image{} becomes . [image src="filename.png"] . in the .info. Emacs 22 and up info mode can display this in a GUI if filename.png is in /usr/share/info or if the src gives a path to the file elsewhere. . If you put an image file in /usr/share/info then please name it like the document so as to avoid name clashes. Eg. foo.info might call an image foo-example1.png. If upstream does not do this already then it may be easier to sed the src="" to a path elsewhere, perhaps to share with a HTML rendition under say /usr/share/doc/foo/html/. lintian-2.5.22ubuntu1/checks/duplicate-files.pm0000664000000000000000000000421212311317603016320 0ustar # duplicate-files -- lintian check script -*- perl -*- # Copyright (C) 2011 Niels Thykier # # 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::duplicate_files; use strict; use warnings; use autodie; use List::MoreUtils qw(any); use Lintian::Tags qw(tag); sub run { my (undef, undef, $info) = @_; my %hashmap; foreach my $file ($info->sorted_index){ my $md5 = $info->md5sums->{$file}; my $fs; next unless defined $md5; next unless $info->index($file)->is_regular_file; # Ignore empty files; in some cases (e.g. python) a file is # required even if it is empty and we are never looking at a # substantial gain in such a case. Also see #632789 next unless $info->index($file)->size; next unless $file =~ m{\A usr/share/doc/}xsmo; $fs = $hashmap{$md5}; unless (defined $fs){ $fs = [$file]; $hashmap{$md5} = $fs; } else { push @$fs, $file; } } foreach my $hash (keys %hashmap){ my @files = @{ $hashmap{$hash} }; next if scalar(@files) < 2; if (any { m,changelog,io} @files) { tag 'duplicate-changelog-files', sort @files; } else { tag 'duplicate-files', sort @files; } } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/manpages.desc0000664000000000000000000002612612310413144015347 0ustar Check-Script: manpages Author: Christian Schwarz Abbrev: man Type: binary Needs-Info: unpacked, file-info, index Info: This script checks if a binary package conforms to manual page policy. Tag: bad-link-to-undocumented-manpage Severity: important Certainty: certain Info: The symbolic link should reference "../man[237]/undocumented.[237].gz" for manual pages in /usr/share/man or "../../../share/man/man[237]/undocumented.[237].gz" for manual pages in /usr/X11R6/man. Tag: link-to-undocumented-manpage Severity: normal Certainty: certain Info: Symbolic links to the undocumented(7) manual page may be provided if no manual page is available, but that is deprecated. . The lack of a manual page is still a bug, and if at all possible you should write one yourself. . For help with writing manual pages, refer to the Man-Page-HOWTO at http://www.schweikhardt.net/man_page_howto.html, the examples created by dh_make, or the /usr/share/doc/man-db/examples directory. If the package provides --help output, you might want to use the help2man utility to generate a simple manual page. Ref: policy 12.1 Tag: binary-without-manpage Severity: normal Certainty: possible Info: Each binary in /usr/bin, /usr/sbin, /bin, /sbin or /usr/games should have a manual page . Note that though the man program has the capability to check for several program names in the NAMES section, each of these programs should have its own manual page (a symbolic link to the appropriate manual page is sufficient) because other manual page viewers such as xman or tkman don't support this. . If the name of the man page differs from the binary by case, man may be able to find it anyway; however, it is still best practice to make the case of the man page match the case of the binary. . If the man pages are provided by another package on which this package depends, lintian may not be able to determine that man pages are available. In this case, after confirming that all binaries do have man pages after this package and its dependencies are installed, please add a lintian override. Ref: policy 12.1 Tag: manpage-in-wrong-directory Severity: important Certainty: certain Info: The manual page should be installed in the correct directory below /usr/share/man/ or /usr/share/man/locale. Only sections 1 through 9 should be used. . The section number in the filename should correspond with the section number in the directory name. Ref: policy 12.1 Tag: manpage-has-wrong-extension Severity: important Certainty: certain Info: The manual page has an extension other than "section[program].gz". Ref: policy 12.1 Tag: manpage-not-compressed Severity: important Certainty: certain Info: Manual pages have to be installed compressed (using "gzip -9"). Ref: policy 12.1 Tag: manpage-not-compressed-with-gzip Severity: important Certainty: certain Info: Manual pages should be compressed with gzip -9. Ref: policy 12.1 Tag: manpage-not-compressed-with-max-compression Severity: important Certainty: certain Info: Manual pages should be compressed with gzip -9. Ref: policy 12.1 Tag: manpage-has-bad-whatis-entry Severity: normal Certainty: certain Info: Each manual page should start with a "NAME" section, which lists the name and a brief description of the page separated by "\-". The "NAME" section is parsed by lexgrog and used to generate a database that's queried by commands like apropos and whatis. This tag indicates that lexgrog was unable to parse the NAME section of this manual page. . For manual pages that document multiple programs, functions, files, or other things, the part before "\-" should list each separated by a comma and a space. Each thing listed must not contain spaces; a man page for a two-part command like "fs listacl" must use something like "fs_listacl" in the "NAME" section so that it can be parsed by lexgrog. Ref: lexgrog(1), groff_man(7), groff_mdoc(7) Tag: manpage-has-useless-whatis-entry Severity: normal Certainty: certain Info: The whatis entry for this manual page (the brief description found in the NAME section) is of the form: . program - manual page for program . This conveys no information about what the program is for and is repetitive. The short description should contain brief information about what the program is for to aid in searching with apropos and similar programs. . If this manpage was generated by help2man, use the -n option to provide a more meaningful description. Tag: manpage-is-dh_make-template Severity: important Certainty: certain Info: This manual page appears to be an unmodified or insufficiently modified copy of the dh_make manual page template. It has a whatis entry (the brief description found in the NAME section) of the form: . package - program to do something . Please double-check the manual page and replace the template language with specific information about this program. Tag: manpage-has-errors-from-man Severity: normal Certainty: certain Info: This man page provokes warnings or errors from man. . "cannot adjust" or "can't break" are trouble with paragraph filling, usually related to long lines. Adjustment can be helped by left justifying, breaks can be helped with hyphenation, see "Manipulating Filling and Adjusting" and "Manipulating Hyphenation" in the manual. . "can't find numbered character" usually means latin1 etc in the input, and this warning indicates characters will be missing from the output. You can change to escapes like \[:a] described on the groff_char man page. . Other warnings are often formatting typos, like missing quotes around a string argument to .IP. These are likely to result in lost or malformed output. See the groff_man (or groff_mdoc if using mdoc) man page for information on macros. . This test uses man's --warnings option to enable groff warnings that catch common mistakes, such as putting . or ' characters at the start of a line when they are intended as literal text rather than groff commands. This can be fixed either by reformatting the paragraph so that these characters are not at the start of a line, or by adding a zero-width space (\&) immediately before them. . At worst, warning messages can be disabled with the .warn directive, see "Debugging" in the groff manual. . Lintian also stricter in regards to declaring manpage preprocessors. . To test this for yourself you can use the following command: LC_ALL=en_US.UTF-8 MANROFFSEQ='' MANWIDTH=80 \ man --warnings -E UTF-8 -l -Tutf8 -Z <file> >/dev/null Tag: manpage-has-errors-from-pod2man Severity: normal Certainty: certain Info: This man page contains a section "POD ERRORS" generated by pod2man. This sections lists errors in the POD syntax found by pod2man during the generation of the man page. Tag: bad-so-link-within-manual-page Severity: important Certainty: certain Info: Manual files that use the .so links to include other pages should only point to a path relative to the top-level manual hierarchy, e.g. . .so man3/boo.1.gz Tag: empty-manual-page Severity: important Certainty: certain Info: The referenced manual page is empty. Tag: manpage-section-mismatch Severity: normal Certainty: certain Info: A man page usually should contain a .TH header, specifying the section. The section in this manpage doesn't match with the section in the filename. Ref: groff_man(7), man(1) Tag: hyphen-used-as-minus-sign Severity: wishlist Certainty: possible Info: This manual page seems to contain a hyphen where a minus sign was intended. By default, "-" chars are interpreted as hyphens (U+2010) by groff, not as minus signs (U+002D). Since options to programs use minus signs (U+002D), this means for example in UTF-8 locales that you cannot cut and paste options, nor search for them easily. The Debian groff package currently forces "-" to be interpreted as a minus sign due to the number of manual pages with this problem, but this is a Debian-specific modification and hopefully eventually can be removed. . "-" must be escaped ("\-") to be interpreted as minus. If you really intend a hyphen (normally you don't), write it as "\(hy" to emphasise that fact. See groff(7) and especially groff_char(7) for details, and also the thread starting with http://lists.debian.org/debian-devel/2003/debian-devel-200303/msg01481.html . If you use some tool that converts your documentation to groff format, this tag may indicate a bug in the tool. Some tools convert dashes of any kind to hyphens. The safe way of converting dashes is to convert them to "\-". . Because this error can occur very often, Lintian shows only the first 10 occurrences for each man page and give the number of suppressed occurrences. If you want to see all warnings, run Lintian with the -d/--debug option. Ref: /usr/share/doc/groff-base/README.Debian, groff_char(7) Tag: FSSTND-dir-in-manual-page Severity: wishlist Certainty: certain Info: The manual page references a directory that is specified in the FSSTND but not in the FHS which is used by Debian. This can be an indicator of a mismatch of the location of files as installed for Debian and as described by the man page. . If you have to change file locations to abide by Debian Policy please also patch the man page to mention these new locations. Tag: binary-without-english-manpage Severity: normal Certainty: certain Info: Each binary in /usr/bin, /usr/sbin, /bin, /sbin or /usr/games should have a manual page. You don't provide an english, only a translated manpage. Since english is fallback, shipping only a non-english man page leaves most users without a man page at all. Tag: manpage-locale-dir-country-specific Severity: normal Certainty: certain Ref: policy 12.1 Info: This package installs a manual page in a locale directory that includes the country name. A country name should not be included in the directory name unless it indicates a significant difference in the language. The known cases where country names are appropriate are pt_BR and zh_*. Please file a bug against Lintian if this is another case where a country name is appropriate. Tag: spelling-error-in-manpage Severity: minor Certainty: possible Info: Lintian found a spelling error in the manpage. Lintian has a list of common misspellings that it looks for. It does not have a dictionary like a spelling checker does. . If the string containing the spelling error is translated with the help of gettext (with the help of po4a, for example) or a similar tool, please fix the error in the translations as well as the English text to avoid making the translations fuzzy. With gettext, for example, this means you should also fix the spelling mistake in the corresponding msgids in the *.po files. Tag: manpage-named-after-build-path Severity: important Certainty: certain Info: The manual page appears to be named after its build path and not after its content. . Please check your debian/rules or upstream Makefile. lintian-2.5.22ubuntu1/checks/phppear.pm0000664000000000000000000002003612311317615014712 0ustar # phppear -- lintian check script -*- perl -*- # Copyright (C) 2013 Mathieu Parent # # 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::phppear; use strict; use warnings; use autodie; use Lintian::Tags qw(tag); use Lintian::Relation; sub run { my ($pkg, $type, $info) = @_; my $bdepends = $info->relation('build-depends'); my $package_type = 'unknown'; # PEAR or PECL package my $package_xml = $info->index('package.xml'); my $package2_xml = $info->index('package2.xml'); if (defined($package_xml) || defined($package2_xml)) { # Checking source builddep if (!$bdepends->implies('pkg-php-tools')) { tag 'pear-package-without-pkg-php-tools-builddep'; } else { # Checking first binary relations my @binaries = $info->binaries; my $binary = $binaries[0]; my $depends = $info->binary_relation($binary, 'depends'); my $recommends = $info->binary_relation($binary, 'recommends'); my $breaks = $info->binary_relation($binary, 'breaks'); if (!$depends->implies('${phppear:Debian-Depends}')) { tag 'pear-package-but-missing-dependency', 'Depends'; } if (!$recommends->implies('${phppear:Debian-Recommends}')) { tag 'pear-package-but-missing-dependency', 'Recommends'; } if (!$breaks->implies('${phppear:Debian-Breaks}')) { tag 'pear-package-but-missing-dependency', 'Breaks'; } # Checking description my $description = $info->binary_field($binary, 'description'); if ($description !~ /\$\{phppear:summary\}/) { tag 'pear-package-not-using-substvar', '${phppear:summary}'; } if ($description !~ /\$\{phppear:description\}/) { tag 'pear-package-not-using-substvar','${phppear:description}'; } # Checking overrides my $overrides = $info->debfiles('pkg-php-tools-overrides'); if (-f $overrides) { if (!$bdepends->implies('pkg-php-tools (>= 1~)')) { tag 'pear-package-feature-requires-newer-pkg-php-tools', '(>= 1~)', 'for package name overrides'; } } # Checking package2.xml if (defined($package2_xml)) { if (!$bdepends->implies('pkg-php-tools (>= 1.4~)')) { tag 'pear-package-feature-requires-newer-pkg-php-tools', '(>= 1.4~)', 'for package2.xml'; } } if (defined($package_xml) && $package_xml->is_regular_file) { # Wild guess package type as in PEAR_PackageFile_v2::getPackageType() open(my $package_xml_fd, '<', $info->unpacked($package_xml)); while (<$package_xml_fd>) { if ( m{\A \s* < (php|extsrc|extbin|zendextsrc|zendextbin) release \s* /? > }xsm ) { $package_type = $1; last; } if (/^\s*/){ $package_type = 'bundle'; last; } } close($package_xml_fd); if ($package_type eq 'extsrc') { # PECL package if (!$bdepends->implies('php5-dev')) { tag 'pecl-package-requires-build-dependency', 'php5-dev'; } if (!$bdepends->implies('dh-php5')) { tag 'pecl-package-requires-build-dependency','dh-php5'; } if (!$bdepends->implies('pkg-php-tools (>= 1.5~)')) { tag 'pear-package-feature-requires-newer-pkg-php-tools', '(>= 1.5~)', 'for PECL support'; } } } } } # PEAR channel my $channel_xml = $info->index('channel.xml'); if (defined($channel_xml)) { if (!$bdepends->implies('pkg-php-tools')) { tag 'pear-channel-without-pkg-php-tools-builddep'; } elsif (!$bdepends->implies('pkg-php-tools (>= 1.3~)')) { tag 'pear-package-feature-requires-newer-pkg-php-tools', '(>= 1.3~)', 'for PEAR channels support'; } } # Composer package my $composer_json = $info->index('composer.json'); if ( !defined($package_xml) && !defined($package2_xml) && defined($composer_json)) { if (!$bdepends->implies('pkg-php-tools')) { tag 'composer-package-without-pkg-php-tools-builddep'; } elsif (!$bdepends->implies('pkg-php-tools (>= 1.7~)')) { tag 'pear-package-feature-requires-newer-pkg-php-tools', '(>= 1.7~)', 'for Composer package support'; } } # Check rules if ( $bdepends->implies('pkg-php-tools') && ( defined($package_xml) || defined($package2_xml) || defined($channel_xml) || defined($composer_json)) ) { my $rules = $info->debfiles('rules'); if (not -l $rules or (-f $rules and is_ancestor_of($info->debfiles, $rules))) { my $has_buildsystem_phppear = 0; my $has_addon_phppear = 0; my $has_addon_phpcomposer= 0; my $has_addon_php5 = 0; open(my $rules_fd, '<', $rules); while (<$rules_fd>) { while (s,\\$,, and defined(my $cont = <$rules_fd>)) { $_ .= $cont; } next if /^\s*\#/; if (m/^\t\s*dh\s.*--buildsystem(?:=|\s+)(?:\S+,)*phppear\s/) { $has_buildsystem_phppear = 1; } if (m/^\t\s*dh\s.*--with(?:=|\s+)(?:\S+,)*phppear\s/) { $has_addon_phppear = 1; } if (m/^\t\s*dh\s.*--with(?:=|\s+)(?:\S+,)*phpcomposer\s/) { $has_addon_phpcomposer = 1; } if (m/^\t\s*dh\s.*--with(?:=|\s+)(?:\S+,)*php5\s/) { $has_addon_php5 = 1; } } close($rules_fd); if ( defined($package_xml) || defined($package2_xml) || defined($channel_xml)) { if (!$has_buildsystem_phppear) { tag 'missing-pkg-php-tools-buildsystem', 'phppear'; } if (!$has_addon_phppear) { tag 'missing-pkg-php-tools-addon', 'phppear'; } if (($package_type eq 'extsrc') and not $has_addon_php5) { tag 'missing-pkg-php-tools-addon', 'php5'; } } if ( !defined($package_xml) && !defined($package2_xml) && defined($composer_json)) { if (!$has_addon_phpcomposer) { tag 'missing-pkg-php-tools-addon', 'phpcomposer'; } } } } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/md5sums.desc0000664000000000000000000000371612310413144015151 0ustar Check-Script: md5sums Author: Christian Schwarz Abbrev: md5 Type: binary Needs-Info: md5sums, bin-pkg-control, index Info: This script checks if md5sum control files are valid, if they are provided by a binary package. Tag: no-md5sums-control-file Severity: wishlist Certainty: certain Info: This package does not contain an md5sums control file. This control file listing the MD5 checksums of the contents of the package is not required, but if present debsums can use it to verify that no files shipped with your package have been modified. Providing it is recommended. . If you are using debhelper to create your package, just add a call to dh_md5sums at the end of your binary-indep or binary-arch target, right before dh_builddeb. Tag: malformed-md5sums-control-file Severity: important Certainty: certain Info: The indicated line of the md5sums control file for this package was malformed. Each line of an md5sums control file should contain an MD5 checksum, some whitespace, and then the path to the file corresponding to that checksum. Tag: md5sum-mismatch Severity: important Certainty: certain Info: The md5sum listed for the file does not match the actual file contents. . Usually, this error occurs during the package build process, if the debian/tmp/ directory is touched after dh_md5sums is run. Tag: md5sums-lists-nonexistent-file Severity: important Certainty: certain Info: The md5sums control file lists a file which is not included in the package. . Usually, this error occurs during the package build process, if the debian/tmp/ directory is touched after dh_md5sums is run. Tag: file-missing-in-md5sums Severity: normal Certainty: certain Info: The package contains a file which isn't listed in the md5sums control file. . Usually, this error occurs during the package build process, if the debian/tmp/ directory is touched after dh_md5sums is run. lintian-2.5.22ubuntu1/checks/nmu.pm0000664000000000000000000001140112311317614014045 0ustar # nmu -- lintian check script -*- perl -*- # Copyright (C) 2004 Jeroen van Wolffelaar # # 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::nmu; use strict; use warnings; use autodie; use List::MoreUtils qw(any); use List::Util qw(first); use Lintian::Tags qw(tag); sub run { my (undef, undef, $info) = @_; my $changelog_mentions_nmu = 0; my $changelog_mentions_local = 0; my $changelog_mentions_qa = 0; my $changelog_mentions_team_upload = 0; # This isn't really an NMU check, but right now no other check # looks at debian/changelog in source packages. Catch a # debian/changelog file that's a symlink. if (-l $info->debfiles('changelog')) { tag 'changelog-is-symlink'; return; } # Get some data from the changelog file. my ($entry) = $info->changelog->data; my $uploader = canonicalize($entry->Maintainer); my $changes = $entry->Changes; $changes =~ s/^(\s*\n)+//; my $firstline = first { /^\s*\*/ } split('\n', $changes); # Check the first line for QA, NMU or team upload mentions. if ($firstline) { local $_ = $firstline; if (/\bnmu\b/i or /non-maintainer upload/i or m/LowThresholdNMU/io) { unless ( m/ (?:ackno|\back\b|confir|incorporat).* (?:\bnmu\b|non-maintainer)/xi ) { $changelog_mentions_nmu = 1; } } $changelog_mentions_local = 1 if /\blocal\s+package\b/i; $changelog_mentions_qa = 1 if /orphan/i or /qa (?:group )?upload/i; $changelog_mentions_team_upload = 1 if /team upload/i; } my $version = $info->field('version'); my $maintainer = canonicalize($info->field('maintainer', '')); my $uploaders = $info->field('uploaders'); my $version_nmuness = 0; my $version_local = 0; # If the version field is missing, assume it to be a native, # maintainer upload as it is probably the most likely case. $version = '0-1' unless defined $version; if ($version =~ /-[^.-]+(\.[^.-]+)?(\.[^.-]+)?$/) { $version_nmuness = 1 if defined $1; $version_nmuness = 2 if defined $2; } if ($version =~ /\+nmu\d+$/) { $version_nmuness = 1; } if ($version =~ /\+b\d+$/) { $version_nmuness = 2; } if ($version =~ /local/i) { $version_local = 1; } my $upload_is_nmu = $uploader ne $maintainer; if (defined $uploaders) { my @uploaders = map { canonicalize($_) } split />\K\s*,\s*/,$uploaders; $upload_is_nmu = 0 if any { /^\s*\Q$uploader\E\s*$/ } @uploaders; } if ($maintainer =~ /packages\@qa.debian.org/) { tag 'orphaned-package-should-not-have-uploaders' if defined $uploaders; tag 'qa-upload-has-incorrect-version-number', $version if $version_nmuness == 1; tag 'changelog-should-mention-qa' if !$changelog_mentions_qa; } elsif ($changelog_mentions_team_upload) { tag 'team-upload-has-incorrect-version-number', $version if $version_nmuness == 1; } else { # Local packages may be either NMUs or not. unless ($changelog_mentions_local || $version_local) { tag 'changelog-should-mention-nmu' if !$changelog_mentions_nmu && $upload_is_nmu; tag 'source-nmu-has-incorrect-version-number', $version if $upload_is_nmu && $version_nmuness != 1; } tag 'changelog-should-not-mention-nmu' if $changelog_mentions_nmu && !$upload_is_nmu; tag 'maintainer-upload-has-incorrect-version-number', $version if !$upload_is_nmu && $version_nmuness; } return; } # Canonicalize a maintainer address with respect to case. E-mail addresses # are case-insensitive in the right-hand side. sub canonicalize { my ($maintainer) = @_; $maintainer =~ s/(<[^>\@]+\@)([\w.-]+)>/$1 . lc ($2)/e; return $maintainer; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/fields.desc0000664000000000000000000013137712314366011015033 0ustar Check-Script: fields Author: Marc 'HE' Brockschmidt Abbrev: fld Type: binary, udeb, source Needs-Info: debfiles, index Info: This script checks the syntax of the fields in package control files, as described in the Policy Manual. Tag: unsupported-source-format Severity: serious Certainty: certain Info: This package uses a different source package format than "1.0", "3.0 (quilt)" or "3.0 (native)". Other package formats are supported by dpkg-source, but they are not allowed in the Debian archive. Tag: no-package-name Severity: serious Certainty: certain Info: The package does not have a "Package:" field in its control file. Ref: policy 5.3 Tag: bad-package-name Severity: serious Certainty: certain Info: A package name should be at least two characters long, must consist of the alphanumerics and "+" "-" and ".", and must start with an alphanumeric character. Ref: policy 5.6.7 Tag: package-not-lowercase Severity: serious Certainty: certain Info: New packages should not use uppercase characters in their names. Ref: policy 5.6.7 Tag: bad-provided-package-name Severity: serious Certainty: certain Info: A package name should be at least two characters long, must consist of the alphanumerics (lowercase characters only) and "+" "-" and ".", and must start with an alphanumeric character. Ref: policy 5.6.7 Tag: no-version-field Severity: serious Certainty: certain Info: The package does not have a "Version:" field in its control file. Ref: policy 5.3 Tag: bad-version-number Severity: serious Certainty: certain Info: The version number fails one of the syntactic requirements of dpkg. Ref: policy 5.6.12 Tag: debian-revision-not-well-formed Severity: normal Certainty: certain Info: The debian version part (the part after the -) should consist of one or two dot-separated parts: one for a regular maintainer release or two for a source-NMU. Ref: devref 5.11.2, policy 5.6.12 Tag: debian-revision-should-not-be-zero Severity: important Certainty: certain Info: The debian version part (the part after the -) should start with one, not with zero. This is to ensure that a correctly-done Maintainer Upload will always have a higher version number than a Non-Maintainer upload: a NMU could have been prepared which introduces this upstream version with Debian-revision -0.1 Ref: devref 5.11.2 Tag: no-architecture-field Severity: serious Certainty: certain Info: The package does not have an "Architecture:" field in its control file. Ref: policy 5.3 Tag: magic-arch-in-arch-list Severity: serious Certainty: certain Info: The special architecture value "any" only makes sense if it occurs alone or (in a *.dsc file) together with "all". The value "all" may appear together with other architectures in a *.dsc file but must occur alone if used in a binary package. Ref: policy 5.6.8, #626775 Tag: unknown-architecture Severity: normal Certainty: possible Info: This package claims to be for an unknown architecture. The architecture should be one of the values supported by dpkg or one of the special values "all" or "any". The special value "source" is only used in *.changes files and does not make sense in a binary package or a *.dsc file. Tag: too-many-architectures Severity: serious Certainty: certain Info: A binary package should list exactly one architecture (the one it is compiled for), or the special value "all" if it is architecture-independent. Ref: policy 5.6.8 Tag: arch-wildcard-in-binary-package Severity: serious Certainty: certain Info: Architecture wildcards, including the special architecture value "any", do not make sense in a binary package. A binary package must either be architecture-independent or built for a specific architecture. Ref: policy 5.6.8 Tag: unknown-multi-arch-value Severity: serious Certainty: certain Info: The package has an unknown value in its Multi-Arch field. The value must be one of "no", "same", "foreign" or "allowed". Tag: illegal-multi-arch-value Severity: serious Certainty: certain Info: The package is architecture all and has the Multi-Arch same value. . This combination is not allowed by the Multi-Arch specification. Ref: https://wiki.ubuntu.com/MultiarchSpec Tag: font-package-not-multi-arch-foreign Severity: normal Certainty: certain Info: This package is architecture all and hence requires a Multi-Arch foreign value. . An Architecture: all package to satisfy the dependencies of a foreign-architecture package, it must be marked Multi-Arch: foreign or Multi-Arch: allowed. Ref: https://wiki.ubuntu.com/MultiarchSpec#Dependencies_involving_Architecture:_all_packages/ Tag: aspell-package-not-arch-all Severity: normal Certainty: certain Info: This package appears to be an aspell dictionary package, but it is not Architecture: all. The binary hashes should be built at install-time by calling aspell-autobuildhash, so the contents of the package should be architecture-independent. Ref: aspell-autobuildhash(8) Tag: no-maintainer-field Severity: serious Certainty: certain Info: The package does not have a "Maintainer:" field in its control file. Ref: policy 5.3 Tag: maintainer-name-missing Severity: serious Certainty: certain Info: The maintainer field seems to contain just an email address. It must contain the package maintainer's name and email address. Ref: policy 5.6.2 Tag: maintainer-address-missing Severity: serious Certainty: certain Info: The maintainer field must contain the package maintainer's name and email address, with the name followed by the address inside angle brackets (< and >). The address seems to be missing. Ref: policy 5.6.2 Tag: maintainer-address-malformed Severity: serious Certainty: certain Info: The maintainer field could not be parsed according to the rules in the Policy Manual. Ref: policy 5.6.2 Tag: maintainer-address-looks-weird Severity: normal Certainty: possible Info: The maintainer address does not have whitespace between the name and the email address. Tag: maintainer-address-is-on-localhost Severity: serious Certainty: certain Info: The maintainer address includes localhost(.localdomain), which is an invalid e-mail address. Ref: policy 5.6.2 Tag: maintainer-address-causes-mail-loops-or-bounces Severity: serious Certainty: certain Info: The maintainer e-mail address either loops back to itself because it is set to package@packages.debian.org or package@packages.qa.debian.org or references an email address (typically a mailing list) which is known to bounce mails. Policy states: The email address given in the Maintainer control field must accept mail from those role accounts in Debian used to send automated mails regarding the package. This includes non-spam mail from the bug- tracking system. Ref: policy 3.3 Tag: uploader-name-missing Severity: serious Certainty: certain Info: The uploader field seems to contain just an email address. It must contain the package uploader's name and email address. Ref: policy 5.6.3 Tag: uploader-address-malformed Severity: serious Certainty: certain Info: The uploader field could not be parsed according to the rules in the Policy Manual. Ref: policy 5.6.3 Tag: uploader-address-looks-weird Severity: normal Certainty: possible Info: The uploader address does not have whitespace between the name and the email address. Tag: uploader-address-is-on-localhost Severity: serious Certainty: certain Info: The uploader address includes localhost(.localdomain), which is an invalid e-mail address. Ref: policy 5.6.3 Tag: uploader-address-causes-mail-loops-or-bounces Severity: serious Certainty: certain Info: The maintainer e-mail address either loops back to itself because it is set to package@packages.debian.org or package@packages.qa.debian.org or references an email address (typically a mailing list) which is known to bounce mails. Policy states: The email address given in the Maintainer control field must accept mail from those role accounts in Debian used to send automated mails regarding the package. This includes non-spam mail from the bug- tracking system. Ref: policy 3.3 Tag: wrong-debian-qa-address-set-as-maintainer Severity: important Certainty: certain Info: Orphaned packages should no longer have the address <debian-qa@lists.debian.org> in the Maintainer field. . The correct Maintainer field for orphaned packages is Debian QA Group <packages@qa.debian.org>. Ref: devref 5.9.4 Tag: wrong-debian-qa-group-name Severity: important Certainty: certain Info: Orphaned packages should have "Debian QA Group <packages@qa.debian.org>" in the maintainer field. Ref: devref 5.9.4 Tag: no-human-maintainers Severity: serious Certainty: possible Info: The Maintainer address for this package is a mailing list and there are no Uploaders listed. Team-maintained packages must list the human maintainers in the Uploaders field. Ref: policy 3.3, devref 5.12 Tag: source-field-does-not-match-pkg-name Severity: serious Certainty: certain Info: The source package's filename is not the same as the name given in its Source field. The Source field should name the package. Ref: policy 5.6.1 Tag: source-field-malformed Severity: serious Certainty: certain Info: In debian/control or a .dsc file, the Source field must contain only the name of the source package. In a binary package, the Source field may also optionally contain the version number of the corresponding source package in parentheses. . Source package names must consist only of lowercase letters, digits, plus and minus signs, and periods. They must be at least two characters long and must start with an alphanumeric character. Ref: policy 5.6.1 Tag: essential-in-source-package Severity: important Certainty: certain Info: This field should only appear in binary packages. Ref: policy 5.6.9 Tag: essential-no-not-needed Severity: normal Certainty: certain Info: Having "Essential: no" is the same as not having the field at all, so it just makes the Packages file longer with no benefit. Ref: policy 5.6.9 Tag: unknown-essential-value Severity: important Certainty: certain Info: The only valid values for the Essential field are yes and no. Ref: policy 5.6.9 Tag: no-section-field Severity: normal Certainty: certain Info: The package does not have a "Section:" field in its control file. . The field is mandatory for source packages and optional for binary packages, which use the source package's value as default is nothing else is specified. Ref: policy 5.3 Tag: unknown-section Severity: normal Certainty: certain Info: The "Section:" field in this package's control file is not one of the sections in use on the ftp archive. Valid sections are currently admin, comm, cli-mono, database, debug, devel, doc, editors, electronics, embedded, fonts, games, gnome, gnu-r, gnustep, graphics, hamradio, haskell, httpd, interpreters, java, kde, libdevel, libs, lisp, localization, kernel, mail, math, misc, net, news, ocaml, oldlibs, otherosfs, perl, php, python, ruby, science, shells, sound, tex, text, utils, vcs, video, web, x11, xfce, zope. . The section name should be preceded by "non-free/" if the package is in the non-free archive area, and by "contrib/" if the package is in the contrib archive area. Ref: policy 2.4 Tag: section-is-dh_make-template Severity: serious Certainty: certain Info: The "Section:" field in this package's control file is set to unknown. This is not a valid section, and usually means a dh_make template control file was used and never modified to set the correct section. Ref: policy 2.4 Tag: wrong-section-for-udeb Severity: normal Certainty: certain Info: udeb packages should have "Section: debian-installer". Tag: no-priority-field Severity: normal Certainty: certain Info: The package does not have a "Priority:" field in its control file. . The Priority field can be included in a binary package by passing the -ip or -isp flags to dpkg-gencontrol when building the package. The field is optional in binary packages. Ref: policy 5.3 Tag: unknown-priority Severity: important Certainty: certain Info: The "Priority:" field in this package's control file is not one of the priorities defined in the Policy Manual. Ref: policy 2.5 Tag: superfluous-clutter-in-homepage Severity: normal Certainty: certain Info: The "Homepage:" field in this package's control file contains superfluous markup around the URL, like enclosing < and >. This is unnecessary and needlessly complicates using this information. Ref: policy 5.6.23 Tag: bad-homepage Severity: normal Certainty: certain Info: The "Homepage:" field in this package's control file does not contain a valid absolute URL. Most probably you forgot to specify the scheme (e.g. http). . This tag is also triggered if the scheme is not known by Lintian. . Please file a bug against Lintian, if this tag is triggered for a valid homepage URL. Tag: no-homepage-field Severity: pedantic Certainty: possible Info: This non-native package lacks a Homepage field. If the package has an upstream home page that contains useful information or resources for the end user, consider adding a Homepage control field to debian/control. Ref: policy 5.6.23 Tag: homepage-in-binary-package Severity: wishlist Certainty: possible Info: This non-native source package produces at least one binary package with a Homepage field. However, the source package itself has no Homepage field. Unfortunately, this results in some source-based tools/services (e.g. the PTS) not linking to the homepage of the upstream project. . If you move the Homepage field to the source paragraph in debian/control then all binary packages from this source will inherit the value by default. Ref: policy 5.6.23 Tag: homepage-for-cpan-package-contains-version Severity: minor Certainty: certain Info: The Homepage field for this package points to CPAN and the URL includes the version. It's better to link to the unversioned CPAN page so that the URL doesn't have to be updated for each new release. For example, use: . http://search.cpan.org/dist/HTML-Template/ . or . https://metacpan.org/release/HTML-Template/ . not: . http://search.cpan.org/~samtregar/HTML-Template-2.9/ Tag: unknown-field-in-dsc Severity: minor Certainty: certain Info: See the Policy Manual for a list of the possible fields in a source package control file. Ref: policy 5.4 Tag: unknown-field-in-control Severity: minor Certainty: possible Info: See the Policy Manual for a list of the possible fields in a binary package control file. . In udeb packages the fields pre-depends, conflicts, essential and suggests are disallowed, but they can contain the new fields subarchitecture and installer-menu-item. Ref: policy 5.3 Tag: multiline-field Severity: important Certainty: certain Info: Most control fields must have only a single line of data. Ref: policy 5.1 Tag: alternates-not-allowed Severity: important Certainty: certain Info: Only the "Depends", "Recommends", "Suggests" and "Pre-Depends" fields may specify alternate dependencies using the "|" symbol. Ref: policy 7.1 Tag: versioned-provides Severity: important Certainty: certain Ref: policy 7.1 Info: The "Provides" field may not specify a version range. Tag: obsolete-relation-form Ref: policy 7.1 Severity: normal Certainty: certain Info: The forms "<" and ">" mean "<=" and ">=", not "<<" and ">>" as one might expect. For that reason these forms are obsolete, and should not be used in new packages. Use the longer forms instead. Tag: bad-version-in-relation Ref: policy 5.6.12 Severity: important Certainty: certain Info: The version number used in this relationship does not match the defined format of a version number. Tag: package-relation-with-self Severity: normal Certainty: possible Info: The package declares a relationship with itself. This is not very useful, except in the case of a package Conflicting with itself, if its package name doubles as a virtual package. Tag: bad-relation Severity: serious Certainty: certain Info: The package declares a relationship that could not be parsed according to the rules given in the Policy Manual. Ref: policy 7.1 Tag: new-essential-package Severity: important Certainty: possible Info: This package has the Essential flag set. New Essential packages are sufficiently rare that it seems worth warning about. They should be discussed on debian-devel first. Ref: policy 3.8 Tag: doc-package-depends-on-main-package Severity: normal Certainty: possible Info: The name of this package suggests that it is a documentation package. It is usually not desirable for documentation packages to depend on the packages they document, because users may want to install the docs before they decide whether they want to install the package. Also, documentation packages are often architecture-independent, so on other architectures the package on which it depends may not even exist. Tag: depends-on-obsolete-package Severity: important Certainty: possible Info: The package depends on a package that has been superseded. If the superseded package is part of an ORed group, it should not be the first package in the group. Tag: ored-depends-on-obsolete-package Severity: minor Certainty: possible Info: The package depends on an ORed group of packages which includes a package that has been superseded. Tag: build-depends-on-obsolete-package Severity: important Certainty: possible Info: The package build-depends on a package that has been superseded. If the superseded package is part of an ORed group, it should not be the first package in the group. Tag: ored-build-depends-on-obsolete-package Severity: minor Certainty: possible Info: The package build-depends on an ORed group of packages which includes a package that has been superseded. Tag: depends-on-old-emacs Severity: normal Certainty: possible Info: The package lists an old version of Emacs as its first dependency. It should probably be updated to support the current version of Emacs in the archive and then list that version first in the list of Emacs flavors it supports. . If the package intentionally only supports older versions of Emacs (if, for example, it was included with later versions of Emacs), add a lintian override. Tag: depends-on-metapackage Severity: important Certainty: possible Info: This package is one of the packages that Lintian believes is a metapackage: a package that exists for the convenience of users or installers to install a set of related packages. Packages that are not themselves metapackages must not depend on metapackages, since this may prevent the user from removing portions of the package set they don't need. Tag: build-depends-on-metapackage Severity: important Certainty: certain Info: Packages must not build-depend on metapackages. . Metapackages such as xorg, xorg-dev, x-window-system, x-window-system-dev and x-window-system-core exist only for the benefit of users and should not be used in package build dependencies. Tag: depends-on-essential-package-without-using-version Severity: important Certainty: certain Ref: policy 3.5 Info: The package declares a depends on an essential package, e.g. dpkg, without using a versioned depends. Packages do not need to depend on essential packages; essential means that they will always be present. The only reason to list an explicit dependency on an essential package is if you need a particular version of that package, in which case the version should be given in the dependency. Tag: build-depends-on-essential-package-without-using-version Severity: important Certainty: certain Ref: policy 4.2 Info: The package declares a build-depends on an essential package, e.g. dpkg, without using a versioned depends. Packages do not need to build-depend on essential packages; essential means that they will always be present. The only reason to list an explicit dependency on an essential package is if you need a particular version of that package, in which case the version should be given in the dependency. Tag: build-depends-on-an-obsolete-java-package Severity: normal Certainty: certain Ref: java-policy 2.2 Info: The package build-depends on an obsolete Java dependency. It should build-depend on default-jdk instead. Tag: build-depends-on-non-build-package Severity: important Certainty: certain Info: The package declares a build dependency on a package that is not appropriate for build dependencies, usually because it's only for interactive use or cannot be correctly installed in a build environment. See the description or documentation of the package for more information. Tag: virtual-package-depends-without-real-package-depends Severity: normal Certainty: possible Info: The package declares a depends on a virtual package without listing a real package as an alternative first. . If this package could ever be a build dependency, it should list a real package as the first alternative to any virtual package in its Depends. Otherwise, the build daemons will not be able to provide a consistent build environment. . If it will never be a build dependency, this isn't necessary, but you may want to consider doing so anyway if there is a real package providing that virtual package that most users will want to use. Tag: invalid-arch-string-in-source-relation Severity: important Certainty: possible Ref: policy 5.6.8 Info: The architecture string in the source relation includes an unknown architecture. This may be a typo, or it may be an architecture that dpkg doesn't know about yet. A common problem is incorrectly separating architectures with a comma, such as [i386, m68k]. Architectures are separated by spaces; this should instead be [i386 m68k]. Tag: conflicting-negation-in-source-relation Severity: serious Certainty: certain Ref: policy 7.1 Info: The architecture string in this source relation has some negated architectures (prepended by !) and others that are not negated. This is not permitted by Policy. Either all architectures must be negated or none of them may be. Tag: invalid-restriction-term-in-source-relation Severity: important Certainty: certain Info: The restriction list in the source relation includes a term which does not contain exactly one dot separating restriction namespace and label. A term in a restriction list is of the form "namespace.label" (without the quotes). Tag: invalid-restriction-namespace-in-source-relation Severity: important Certainty: possible Info: The restriction list in the source relation includes a term with an unknown namespace. The only allowed namespace is "profile" (without the quotes). Tag: invalid-restriction-label-in-source-relation Severity: important Certainty: possible Info: The restriction list in the source relation includes a term with an unknown label. The only allowed labels are "stage1", "stage2", "notest" and "cross". Tag: restriction-list-without-versioned-dpkg-dev-dependency Severity: normal Certainty: certain Info: If a restriction list appears in the build dependencies, then the source package has to build depend on dpkg-dev (>= 1.17.2) for minimal restriction list support. Tag: restriction-list-with-versioned-dpkg-dev-conflict Severity: normal Certainty: certain Info: If a restriction list appears in the build dependencies, then the source package has to build depend on dpkg-dev (>= 1.17.2) for minimal restriction list support. It must not conflict with version 1.17.2. Tag: restriction-list-with-debhelper-without-debhelper-version Severity: normal Certainty: certain Info: If a restriction list appears in the build dependencies and the package uses debhelper, then the source package has to depend on at least debhelper 9.20140227. Tag: restriction-list-with-debhelper-with-conflicting-debhelper-version Severity: normal Certainty: certain Info: If a restriction list appears in the build dependencies and the package uses debhelper, then the source package has to depend on at least debhelper 9.20140227. It must not conflict with version 9.20140227. Tag: depends-on-build-essential-package-without-using-version Severity: important Certainty: certain Ref: policy 4.2 Info: The package declares a depends on a build essential package without using a versioned depends. Packages do not have to build-depend on any package included in build-essential. It is the responsibility of anyone building packages to have all build-essential packages installed. The only reason for an explicit dependency on a package included in build-essential is if a particular version of that package is required, in which case the dependency should include the version. Tag: package-depends-on-an-x-font-package Severity: important Certainty: certain Info: Packages must not depend on X Window System font packages. . If one or more of the fonts so packaged are necessary for proper operation of the package with which they are associated the font package may be Recommended; if the fonts merely provide an enhancement, a Suggests relationship may be used. Ref: policy 11.8.5 Tag: build-depends-indep-without-arch-indep Severity: important Certainty: certain Ref: policy 7.7 Info: The control file specifies source relations for architecture-independent packages, but no architecture-independent packages are built. Tag: build-conflicts-with-build-dependency Severity: important Certainty: certain Ref: policy 7.7 Info: The package build-conflicts with a package that it also build-depends on. Tag: package-has-a-duplicate-build-relation Severity: normal Certainty: possible Info: The package declares the given build relations on the same package in either Build-Depends or Build-Depends-Indep, but the build relations imply each other and are therefore redundant. Tag: build-depends-on-1-revision Severity: normal Certainty: possible Info: The package declares a build dependency on a version of a package with a -1 Debian revision such as "libfoo (>= 1.2-1)". Such a dependency will not be satisfied by a backport of libfoo 1.2-1 and therefore makes backporting unnecessarily difficult. Normally, the -1 version is unneeded and a dependency such as "libfoo (>= 1.2)" would be sufficient. If there was an earlier -0.X version of libfoo that would not satisfy the dependency, use "libfoo (>= 1.2-1~)" instead. Tag: needlessly-depends-on-awk Severity: important Certainty: certain Info: The package seems to declare a relation on awk. awk is a virtual package, but it is special since it's de facto essential. If you don't need to depend on a specific version of awk (which wouldn't work anyway, as dpkg doesn't support versioned provides), you should remove the dependency on awk. Tag: package-depends-on-multiple-libstdc-versions Severity: important Certainty: possible Info: The package seems to declare several relations to a libstdc version. This is not only sloppy but in the case of libraries, it may well break the runtime execution of programs. Tag: package-depends-on-multiple-tcl-versions Severity: important Certainty: possible Info: The package seems to declare several relations to a tcl version. This is not only sloppy but in the case of libraries, it may well break the runtime execution of programs. Tag: package-depends-on-multiple-tclx-versions Severity: important Certainty: possible Info: The package seems to declare several relations to a tclx version. This is not only sloppy but in the case of libraries, it may well break the runtime execution of programs. Tag: package-depends-on-multiple-tk-versions Severity: important Certainty: possible Info: The package seems to declare several relations to a tk version. This is not only sloppy but in the case of libraries, it may well break the runtime execution of programs. Tag: package-depends-on-multiple-tkx-versions Severity: important Certainty: possible Info: The package seems to declare several relations to a tkx version. This is not only sloppy but in the case of libraries, it may well break the runtime execution of programs. Tag: package-depends-on-multiple-libpng-versions Severity: important Certainty: possible Info: The package seems to declare several relations to a libpng version. This is not only sloppy but in the case of libraries, it may well break the runtime execution of programs. Tag: depends-on-libdb1-compat Severity: important Certainty: certain Info: The package seems to declare a relation on libdb1-compat. This library exists for compatibility with applications built against glibc 2.0 or 2.1. There is intentionally no corresponding development package. Do not link new applications against this library! Tag: depends-on-python-minimal Severity: important Certainty: certain Info: The python-minimal package (and versioned variants thereof) exists only to possibly become an Essential package. Depending on it is always an error since it should never be installed without python. If it becomes Essential, there is no need to depend on it, and until then, packages that require Python must depend on python. Tag: depends-exclusively-on-makedev Severity: normal Certainty: certain Info: This package depends on makedev without a udev alternative. This probably means that it doesn't have udev rules and relies on makedev to create devices, which won't work if udev is installed and running. Alternatively, it may mean that there are udev rules, but udev was not added as an alternative to the makedev dependency. Tag: dbg-package-missing-depends Severity: normal Certainty: certain Info: The given binary package has a name of the form of "X-dbg", indicating it contains detached debugging symbols for the package X. If so, it should depend on the corresponding package, generally with (= ${binary:Version}) since the debugging symbols are only useful with the binaries created by the same build. . If this package provides debugging symbols for multiple other packages, it should normally depend on all of those packages as alternatives. In other words, pkga (= ${binary:Version}) | pkgb (= ${binary:Version}) and so forth. Tag: conflicts-with-dependency Severity: important Certainty: certain Ref: policy 7.4 Info: The package seems to conflict with one of its dependencies, recommendations, or suggestions by listing it in Conflicts or Breaks. Tag: breaks-without-version Severity: normal Certainty: possible Ref: policy 7.3, policy 7.4, #605744 Info: This package declares a Breaks relationship with another package that has no version number. Normally, Breaks should be used to indicate an incompatibility with a specific version of another package, or with all versions predating a fix. If the two packages can never be installed at the same time, Conflicts should normally be used instead. . Note this tag can also be issued, if a package has been split into two completely new ones. In this case, this package is missing a Replaces on the old package. Tag: conflicts-with-version Severity: normal Certainty: wild-guess Ref: policy 7.4 Info: An earlier-than version clause is normally an indication that Breaks should be used instead of Conflicts. Breaks is a weaker requirement that provides the package manager more leeway to find a valid upgrade path. Conflicts should only be used if two packages can never be unpacked at the same time, or for some situations involving virtual packages (where a version clause is not appropriate). In particular, when moving files between packages, use Breaks plus Replaces, not Conflicts plus Replaces. Tag: bad-menu-item Severity: important Certainty: certain Info: The field Installer-Menu-Item should only contain positive integer values. Tag: redundant-origin-field Severity: normal Certainty: certain Info: You use the Origin field though the field value is the default (Debian). In this case the field is redundant and should be removed. Tag: binary-nmu-debian-revision-in-source Severity: normal Certainty: certain Ref: devref 5.10.2.1 Info: The version number of your source package ends in +b and a number or has a Debian revision containing three parts. These version numbers are used by binary NMUs and should not be used as the source version. (The +b form is the current standard; the three-part version number now obsolete.) Tag: dfsg-version-in-native-package Severity: normal Certainty: certain Info: The version number of this package contains "dfsg", but it's a native package. "dfsg" is conventionally used in the upstream version of packages that are repackaged for Debian Free Software Guidelines compliance reasons. The convention doesn't make sense in native packages. Tag: dfsg-version-with-period Severity: minor Certainty: possible Info: The version number of this package contains ".dfsg", probably in a form like "1.2.dfsg1". There is a subtle sorting problem with this version method: 1.2.dfsg1 is considered a later version than 1.2.1. If upstream adds another level to its versioning, finding a good version number for the next upstream release will be awkward. . Upstream may never do this, in which case this isn't a problem, but it's normally better to use "+dfsg" instead (such as "1.2+dfsg1"). "+" sorts before ".", so 1.2 < 1.2+dfsg1 < 1.2.1 as normally desired. Tag: dfsg-version-misspelled Severity: minor Certainty: certain Info: The version number of this package contains "dsfg". You probably meant "dfsg", the conventional marker for upstream packages that are repackaged for Debian Free Software Guidelines compliance reasons. Tag: redundant-bugs-field Severity: normal Certainty: certain Info: You use the Bugs field though the field value is the default (debbugs://bugs.debian.org/). In this case the field is redundant and should be removed. Tag: build-depends-on-build-essential Info: You depend on the build-essential package, which is only a metapackage depending on build tools that have to be installed in all build environments. Severity: important Certainty: certain Ref: policy 7.7 Tag: depends-on-packaging-dev Info: You depend/recommend/build-depend on packaging-dev, which is only a metapackage to install common packages needed for packaging. Severity: normal Certainty: certain Tag: malformed-python-version Severity: important Certainty: certain Ref: python-policy 2.3 Info: The Python-Version control field is not in one of the valid formats. It should be in one of the following formats: . all current current, >= X.Y >= X.Y >= A.B, << X.Y A.B, X.Y . (One or more specific versions may be listed with the last form.) A.B and X.Y should be Python versions. Tag: malformed-dm-upload-allowed Severity: important Certainty: certain Ref: http://www.debian.org/vote/2007/vote_003 Info: The Dm-Upload-Allowed field in this package is set to something other than "yes". The only standardized value for this field in the Debian GR is "yes" and other values (including capitalization variants) may not work as expected. Tag: wrong-section-according-to-package-name Severity: normal Certainty: possible Info: This package has a name suggesting that it belongs to a section other than the one it is currently categorized in. Tag: debug-package-should-be-priority-extra Severity: normal Certainty: certain Info: This package has a name suggesting that it contains detached debugging symbols. If so, it should have priority "extra" since users normally do not need such packages. Tag: maintainer-also-in-uploaders Severity: minor Certainty: certain Info: The maintainer value also appears on the Uploaders field. There were some reasons why this was useful when Uploaders support was first introduced, but those have long-since been fixed and there is no longer any need to list the maintainer in Uploaders. The duplicate information should probably be removed. Tag: duplicate-uploader Severity: minor Certainty: certain Info: The uploader appears more than once in the Uploaders field. The duplicate information should be removed. Tag: versioned-dependency-satisfied-by-perl Severity: normal Certainty: certain Info: This package declares an unnecessary versioned dependency on a package that is also provided by one of the Perl core packages (perl, perl-base, perl-modules) with at least the required version. . As versioned dependencies are not satisfied by provided packages, this unnecessarily pulls in a separately packaged newer version of the module. . The recommended way to express the dependency without needless complications on backporting packages is to use alternative dependencies. The perl package should be the preferred alternative and the versioned dependency a secondary one. . Example: perl (>= 5.10.0) | libmodule-build-perl (>= 0.26) . An exception to this is when the dependency is only satisfied in a version of perl in experimental. In this case, the dependency on perl should come second. . Example: libextutils-parsexs-perl (>= 2.210000) | perl (>= 5.14) . Running cme fix dpkg -from control -filter Depends should be able to update these dependencies. Ref: policy 7.5 Tag: package-superseded-by-perl Severity: normal Certainty: certain Info: This package is also provided by one of the Perl core packages (perl, perl-base, perl-modules), and the core version is at least as new as this one. . The package should either be upgraded to a newer upstream version or removed from the archive as unnecessary. In the removal case, any versioned dependencies on this package must first be changed to include the Perl core package (because versioned dependencies are not satisfied by provided packages). . The recommended way to express the dependency without needless complications on backporting packages is to use alternative dependencies. The perl package should be the preferred alternative and the versioned dependency a secondary one. . Example: perl (>= 5.10.0) | libmodule-build-perl (>= 0.26) . Running cme fix dpkg -from control -filter Depends should be able to update these dependencies. Ref: policy 7.5 Tag: vcs-field-uses-not-recommended-uri-format Severity: normal Certainty: possible Info: The VCS-* field uses a URI which doesn't match the recommended format, but still looks valid. Examples for not recommended URI formats are protocols that require authentication (like SSH). Instead where possible you should provide a URI that is accessible for everyone without authentication. . This renders debcheckout(1) unusable in these cases. Tag: vcs-field-uses-unknown-uri-format Severity: normal Certainty: possible Info: The VCS-* field uses an URI which doesn't match any known format. You might have forgotten the protocol before the hostname. Tag: vcs-field-has-unexpected-spaces Severity: normal Certainty: possible Info: The VCS-* field contains more spaces than expected or spaces at places where they were not expected. Where possible escape valid spaces in URIs to avoid any ambiguity with respect to possible future additional optional fields. Tag: vcs-field-not-canonical Severity: minor Certainty: possible Info: The VCS-* field contains an uncanonical URI. Please update to use the current canonical URI instead. This reduces the network bandwidth used and makes debcheckout work independent of the port forwarding and redirections properly working. . The definition of canonical used here is the URIs announced by the Alioth admins (see reference). . Note that this check is based on a list of known URIs. Lintian did not send a HTTP request to the URI to test this. Should the canonical URI have changed, please file a bug against Lintian so the check can be updated accordingly. Ref: https://lists.debian.org/debian-devel-announce/2011/05/msg00009.html Tag: vcs-field-bitrotted Severity: normal Certainty: certain Info: The VCS-* field uses an address which no longer works. Please update it to use the current canonical URI instead. . Note that this check is based on a list of known URIs or/and patterns. Lintian did not send a HTTP request to the URI to test this. Should the URI actually work, please file a bug against Lintian so the check can be updated accordingly. Tag: vcs-git-uses-invalid-user-uri Severity: normal Certainty: certain Info: The Vcs-Git field is pointing to a personal repository using a git://(git|anonscm).debian.org/~$LOGIN/$PRJ.git style URI. This is not recommended since the repository this points is not automatically updated when pushing to the personal repository. The recommended URI for anonymous access is git://anonscm.debian.org/users/$LOGIN/$PRJ.git. Tag: lib-recommends-documentation Severity: normal Certainty: possible Info: The given package appears to be a library package, but it recommends a documentation package. Doing this can pull in unwanted (and often large) documentation packages since recommends are installed by default and library packages are pulled by applications that use them. Users usually only care about the library documentation if they're developing against the library, not just using it, so the development package should recommend the documentation instead. If there is no development package (for modules for scripting languages, for example), consider Suggests instead of Recommends. Tag: build-depends-on-python-dev-with-no-arch-any Severity: minor Certainty: possible Info: The given package appears to have a Python development package (python-dev, python-all-dev or pythonX.Y-dev) listed in its Build-Depends or Build-Depends-Indep fields, but only "Architecture: all" packages are built by this source package. Python applications and modules do not usually require those dev packages, so you should consider removing them in favour of python, python-all or pythonX.Y. . If you are building a Python extension instead, you should have development packages listed in Build-Depends, but normally there should be at least one Architecture: any package. Tag: build-depends-on-specific-java-doc-package Severity: normal Certainty: certain Info: The given package declares a build dependency on either openjdk- X-doc or classpath-doc instead of using default-jdk-doc. default-jdk-doc provides a symlink to the API via /usr/share/default-jdk-doc/api. Tag: depends-on-specific-java-doc-package Severity: normal Certainty: certain Info: The package should use default-jdk-doc instead of classpath-doc or openjdk-X-doc to ease transitions when the providing doc package is replaced (e.g. openjdk-6-doc being replaced by openjdk-7-doc). Tag: needless-dependency-on-jre Severity: normal Certainty: possible Info: The package appear to be a Java library and depending on one or more JRE/JDK packages. As of 05 Apr 2010, the Java Policy no longer mandates that Java libraries depend on Java Runtimes. . If the library package ships executables along with the library, then please consider making this an application package or move the binaries to a (new) application package. . If there is otherwise a valid reason for this dependency, please override the tag. Ref: http://packages.qa.debian.org/j/java-common/news/20100405T221415Z.html, #227587 Tag: documentation-package-not-architecture-independent Severity: normal Certainty: certain Info: Documentation packages usually shouldn't carry anything that requires recompiling on various architectures, in order to save space on mirrors. Tag: build-depends-on-versioned-berkeley-db Severity: normal Certainty: possible Info: The package build-depends on a versioned development package of Berkeley DB (libdbX.Y-dev) instead of versionless package (libdb-dev). Unfortunately this prevents binNMUs when default Berkeley DB version changes. . Unless the package absolutely have to depend on specific Berkeley DB version, it should build-depends on libdb-dev. For more information on the upgrade process, please see the references. . The package can usually be made Berkeley DB version agnostic by the following steps: . 1. note the version of Berkeley DB used to compile the package on build time 2. on first install copy the used version to active version 3. on upgrades compare the versions and if they differ do the upgrade procedure . If you are unsure you can contact Berkeley DB maintainer, who would be glad to help. . Should the package have a legitimate reason for using the versioned development package, please add an override. Ref: http://download.oracle.com/docs/cd/E17076_02/html/upgrading/upgrade_process.html Tag: transitional-package-should-be-oldlibs-extra Severity: normal Certainty: possible Ref: #645438, devref 6.7.7 Info: The package appears to be a transitional package, but it is not priority extra and in the oldlibs section. . Using oldlibs/extra assists package managers in handling the transition package correctly. Tag: rc-version-greater-than-expected-version Severity: normal Certainty: possible Ref: policy 5.6.12 Info: The package appears to be a release candidate or preview release, but the version sorts higher than the expected final release. . Note this check is limited to new upstream releases of non-native packages. Tag: dm-upload-allowed-is-obsolete Severity: normal Certainty: certain Info: The implementation of the "Debian Maintainers" GR has changed and the "DM-Upload-Allowed" field is now obsolete. . Instead these permissions are granted via "dak-commands" files. Ref: https://lists.debian.org/debian-devel-announce/2012/09/msg00008.html lintian-2.5.22ubuntu1/checks/fields.pm0000664000000000000000000015051212314366011014521 0ustar # fields -- lintian check script (rewrite) -*- perl -*- # # Copyright (C) 2004 Marc Brockschmidt # # Parts of the code were taken from the old check script, which # was Copyright (C) 1998 Richard Braakman (also licensed under the # GPL 2 or higher) # # 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::fields; use strict; use warnings; use autodie; use Dpkg::Version qw(version_check); use List::MoreUtils qw(any true); use Lintian::Architecture qw(:all); use Lintian::Data (); use Lintian::Check qw(check_maintainer); use Lintian::Relation qw(:constants); use Lintian::Relation::Version qw(versions_compare); use Lintian::Tags qw(tag); use Lintian::Util qw($PKGNAME_REGEX); our $KNOWN_ESSENTIAL = Lintian::Data->new('fields/essential'); our $KNOWN_METAPACKAGES = Lintian::Data->new('fields/metapackages'); our $NO_BUILD_DEPENDS = Lintian::Data->new('fields/no-build-depends'); our $KNOWN_SECTIONS = Lintian::Data->new('fields/archive-sections'); our $known_build_essential = Lintian::Data->new('fields/build-essential-packages'); our $KNOWN_BINARY_FIELDS = Lintian::Data->new('fields/binary-fields'); our $KNOWN_UDEB_FIELDS = Lintian::Data->new('fields/udeb-fields'); our $KNOWN_DEPENDENCY_RESTRICTIONS = Lintian::Data->new('fields/dependency-restrictions', qr/\./, \&_load_dependency_restrictions); our %KNOWN_ARCHIVE_PARTS = map { $_ => 1 } ('non-free', 'contrib'); my $KNOWN_PRIOS = Lintian::Data->new('common/priorities', qr/\s*=\s*/o); our @supported_source_formats = (qr/1\.0/, qr/3\.0\s*\((quilt|native)\)/); # Still in the archive but shouldn't be the primary Emacs dependency. our %known_obsolete_emacs = map { $_ => 1 } ('emacs21', 'emacs22'); our %known_libstdcs = map { $_ => 1 } ( 'libstdc++2.9-glibc2.1', 'libstdc++2.10', 'libstdc++2.10-glibc2.2','libstdc++3', 'libstdc++3.0', 'libstdc++4', 'libstdc++5','libstdc++6', 'lib64stdc++6', ); our %known_tcls = map { $_ => 1 } ('tcl74', 'tcl8.0', 'tcl8.2', 'tcl8.3', 'tcl8.4', 'tcl8.5',); our %known_tclxs = map { $_ => 1 } ('tclx76', 'tclx8.0.4', 'tclx8.2', 'tclx8.3', 'tclx8.4',); our %known_tks = map { $_ => 1 } ('tk40', 'tk8.0', 'tk8.2', 'tk8.3', 'tk8.4', 'tk8.5',); our %known_tkxs = map { $_ => 1 } ('tkx8.2', 'tkx8.3',); our %known_libpngs = map { $_ => 1 } ('libpng12-0', 'libpng2', 'libpng3',); our @known_java_pkg = map { qr/$_/ } ( 'default-jre(?:-headless)?', 'default-jdk', # default java 'java\d*-runtime(?:-headless)?' , # java-runtime and javaX-runtime alternatives (virtual) '(openjdk-|sun-java)\d+-jre(?:-headless)?', '(openjdk-|sun-java)\d+-jdk', # openjdk-X and sun-javaX 'gcj-(?:\d+\.\d+-)?jre(?:-headless)?', 'gcj-(?:\d+\.\d+-)?jdk', # gcj 'gij', 'java-gcj-compat(?:-dev|-headless)?', # deprecated/transitional packages 'kaffe', 'cacao', 'jamvm', 'classpath', # deprecated packages (removed in Squeeze) ); # Mapping of package names to section names my @NAME_SECTION_MAPPINGS = ( [qr/-docs?$/ => 'doc'], [qr/-dbg$/ => 'debug'], [qr/^(?:python-)?zope/ => 'zope'], [qr/^python-/ => 'python'], [qr/^r-cran-/ => 'gnu-r'], [qr/^lib.*-perl$/ => 'perl'], [qr/^lib.*-cil(?:-dev)?$/ => 'cli-mono'], [qr/^lib.*-(?:java|gcj)$/ => 'java'], [qr/^(?:lib)php-/ => 'php'], [qr/^lib(?:hugs|ghc6?)-/ => 'haskell'], [qr/^lib.*-ruby(?:1\.\d)?$/ => 'ruby'], [qr/^lib.*-(?:ocaml|camlp4)-dev$/ => 'ocaml'], [qr/^lib.*-dev$/ => 'libdevel'], [qr/^gir\d+\.\d+-.*-\d+\.\d+$/ => 'introspection'], ); my %VCS_EXTRACT = ( browser => sub { return @_;}, arch => sub { return @_;}, bzr => sub { return @_;}, # cvs rootdir followed by optional module name: cvs => sub { return shift =~ /^(.+?)(?:\s+(\S*))?$/;}, darcs => sub { return @_;}, hg => sub { return @_;}, # git uri followed by optional " -b " + branchname: git => sub { return shift =~ /^(.+?)(?:\s+-b\s+(\S*))?$/;}, svn => sub { return @_;}, # that's a hostname followed by a module name: mtn => sub { return shift =~ /^(.+?)\s+(\S+)$/;}, ); my %VCS_CANONIFY = ( browser => sub { $_[0] =~ s{https?://svn\.debian\.org/wsvn/} {http://anonscm.debian.org/viewvc/}; $_[0] =~ s{\Qhttp://git.debian.org/?p=\E} {http://anonscm.debian.org/gitweb/?p=}; $_[0] =~ s{\Qhttp://bzr.debian.org/loggerhead/\E} {http://anonscm.debian.org/loggerhead/}; if ($_[0] =~ m{\Qhttp://anonscm.debian.org/viewvc/\E}xsm) { if ($_[0] =~ s{\?(.*[;\&])?op=log(?:[;\&](.*))?\Z}{}xsm) { my (@keep) = ($1, $2, $3); my $final = join('', grep {defined} @keep); $_[0] .= '?' . $final if ($final ne ''); $_[1] = 'vcs-field-bitrotted'; } } }, cvs => sub { if ( $_[0] =~ s{\@(?:cvs.alioth|anonscm)\.debian\.org:/cvsroot/} {\@anonscm.debian.org:/cvs/} ) { $_[1] = 'vcs-field-bitrotted'; } $_[0] =~ s{\@cvs.alioth.debian.org:/cvs/}{\@anonscm.debian.org:/cvs/}; }, arch => sub { $_[0] =~ s{\Qhttp://arch.debian.org/arch/\E} {http://anonscm.debian.org/arch/}; }, bzr => sub { $_[0] =~ s{\Qhttp://bzr.debian.org/\E} {http://anonscm.debian.org/bzr/}; $_[0] =~ s{\Qhttp://anonscm.debian.org/bzr/bzr/\E} {http://anonscm.debian.org/bzr/}; }, git => sub { if ( $_[0] =~ s{git://(?:git|anonscm)\.debian\.org/~} {git://anonscm.debian.org/users/} ) { $_[1] = 'vcs-git-uses-invalid-user-uri'; } $_[0] =~ s{\Qhttp://git.debian.org/\E} {http://anonscm.debian.org/git/}; $_[0] =~ s{\Qhttp://anonscm.debian.org/git/git/\E} {http://anonscm.debian.org/git/}; $_[0] =~ s{\Qgit://git.debian.org/\E} {git://anonscm.debian.org/}; $_[0] =~ s{\Qgit://anonscm.debian.org/git/\E} {git://anonscm.debian.org/}; }, hg => sub { $_[0] =~ s{\Qhttp://hg.debian.org/\E} {http://anonscm.debian.org/hg/}; $_[0] =~ s{\Qhttp://anonscm.debian.org/hg/hg/\E} {http://anonscm.debian.org/hg/}; }, svn => sub { $_[0] =~ s{\Qsvn://cvs.alioth.debian.org/\E} {svn://anonscm.debian.org/}; $_[0] =~ s{\Qsvn://svn.debian.org/\E} {svn://anonscm.debian.org/}; $_[0] =~ s{\Qsvn://anonscm.debian.org/svn/\E} {svn://anonscm.debian.org/}; }, ); # Valid URI formats for the Vcs-* fields # currently only checks the protocol, not the actual format of the URI my %VCS_RECOMMENDED_URIS = ( browser => qr;^https?://;, arch => qr;^https?://;, bzr => qr;^(?:lp:|(?:nosmart\+)?https?://);, cvs => qr;^:(?:pserver:|ext:_?anoncvs);, darcs => qr;^https?://;, hg => qr;^https?://;, git => qr;^(?:git|https?|rsync)://;, svn => qr;^(?:svn|(?:svn\+)?https?)://;, mtn => qr;^[\w.-]+$;, ); my %VCS_VALID_URIS = ( arch => qr;^https?://;, bzr => qr;^(?:sftp|(?:bzr\+)?ssh)://;, cvs => qr;^(?:-d\s*)?:(?:ext|pserver):;, hg => qr;^ssh://;, git => qr;^(?:git\+)?ssh://;, svn => qr;^(?:svn\+)?ssh://;, ); # Python development packages that are used almost always just for building # architecture-dependent modules. Used to check for unnecessary build # dependencies for architecture-independent source packages. our $PYTHON_DEV = join(' | ', qw(python-dev python-all-dev python3-dev python3-all-dev), map { "python$_-dev" } qw(2.7 3 3.2)); our $PERL_CORE_PROVIDES = Lintian::Data->new('fields/perl-provides', '\s+'); our $OBSOLETE_PACKAGES = Lintian::Data->new('fields/obsolete-packages'); our $VIRTUAL_PACKAGES = Lintian::Data->new('fields/virtual-packages'); our $SOURCE_FIELDS = Lintian::Data->new('common/source-fields'); sub run { my ($pkg, $type, $info, $proc, $group) = @_; my ($version, $arch_indep); #---- Format if ($type eq 'source') { my $format = $info->field('format'); if (defined($format)) { my $supported = 0; foreach my $f (@supported_source_formats){ if($format =~ /^\s*$f\s*\z/){ $supported = 1; } } tag 'unsupported-source-format', $format unless $supported; } } #---- Package if ($type eq 'binary') { if (not defined $info->field('package')) { tag 'no-package-name'; } else { my $name = $info->field('package'); unfold('package', \$name); tag 'bad-package-name' unless $name =~ /^$PKGNAME_REGEX$/i; tag 'package-not-lowercase' if ($name =~ /[A-Z]/); } } #---- Version if (not defined $info->field('version')) { tag 'no-version-field'; } else { $version = $info->field('version'); unfold('version', \$version); my $dversion = Dpkg::Version->new($version); if ($dversion->is_valid) { my ($epoch, $upstream, $debian) = ($dversion->epoch, $dversion->version, $dversion->revision); # Dpkg::Version sets the debian revision to 0 if there is # no revision. So we need to check if the raw version # ends with "-0". tag 'debian-revision-should-not-be-zero', $version if $version =~ m/-0$/o; my $ubuntu; if($debian =~ m/^(?:[^.]+)(?:\.[^.]+)?(?:\.[^.]+)?(\..*)?$/o){ my $extra = $1; if ( defined $extra && $debian =~ m/\A (?:[^.]+ubuntu[^.]+)(?:\.\d+){1,3}(\..*)? \Z/oxsm ) { $ubuntu = 1; $extra = $1; } if (defined $extra) { tag 'debian-revision-not-well-formed', $version; } } else { tag 'debian-revision-not-well-formed', $version; } if ($debian =~ /^[^.-]+\.[^.-]+\./o and not $ubuntu) { tag 'binary-nmu-debian-revision-in-source', $version if $type eq 'source'; } if ($version =~ /\+b\d+$/ && $type eq 'source') { tag 'binary-nmu-debian-revision-in-source', $version; } if ( $upstream =~ m/[^~a-z] (rc|alpha|beta|dev|pre(?:view|release)?) ([^a-z].*|\Z) /xsm ) { my $expected = $upstream; my $rc = $1; my $rest = $2//''; my $suggestion; # Remove the rc-part and the preceeding symbol (if any). $expected =~ s/[\.\+\-\:]?\Q$rc\E.*//; $suggestion = "$expected~$rc$rest"; tag 'rc-version-greater-than-expected-version', $upstream, '>', $expected, "(consider using $suggestion)", if $info->native or ($debian eq q{1} or $debian =~ m,^0(?:\.1|ubuntu1)?$,); } # Checks for the dfsg convention for repackaged upstream # source. Only check these against the source package to not # repeat ourselves too much. if ($type eq 'source') { if ($version =~ /dfsg/ and $info->native) { tag 'dfsg-version-in-native-package', $version; } elsif ($version =~ /\.dfsg/) { tag 'dfsg-version-with-period', $version; } elsif ($version =~ /dsfg/) { tag 'dfsg-version-misspelled', $version; } } my $name = $info->field('package'); if ( $name && $PERL_CORE_PROVIDES->known($name) && perl_core_has_version($name, '>=', "$epoch:$upstream")) { my $core_version = $PERL_CORE_PROVIDES->value($name); tag 'package-superseded-by-perl', "with $core_version"; } } else { tag 'bad-version-number', $version; } } #---- Multi-Arch if (defined $info->field('multi-arch')){ my $march = $info->field('multi-arch'); unfold('multi-arch', \$march); tag 'unknown-multi-arch-value', $pkg, $march unless $march =~ m/^no|foreign|allowed|same$/o; if ( $march eq 'same' && $type eq 'binary' && defined $info->field('architecture')) { my $arch = $info->field('architecture'); # Do not use unfold to avoid duplicate warning $arch =~ s/\n//o; tag 'illegal-multi-arch-value', $arch, $march if ($arch eq 'all'); } } if ($type eq 'binary'){ if ($pkg =~ /^fonts-/) { tag 'font-package-not-multi-arch-foreign' unless $info->field('multi-arch', 'no') =~ m/^foreign|allowed$/o; } } #---- Architecture if (not defined $info->field('architecture')) { tag 'no-architecture-field'; } else { my $archs = $info->field('architecture'); unfold('architecture', \$archs); my @archs = split(m/ /o, $archs); if (@archs > 1) { # Check for magic architecture combinations. my %archmap; my $magic = 0; $archmap{$_}++ for (@archs); $magic++ if ($type ne 'source' && $archmap{'all'}); if ($archmap{'any'}){ delete $archmap{'any'}; # Allow 'all' to be present in source packages as well # (#626775) delete $archmap{'all'} if $type eq 'source'; $magic++ if %archmap; } tag 'magic-arch-in-arch-list' if $magic; } for my $arch (@archs) { tag 'unknown-architecture', $arch unless is_arch_or_wildcard($arch); tag 'arch-wildcard-in-binary-package', $arch if ($type eq 'binary' && is_arch_wildcard($arch)); } if ($type eq 'binary') { tag 'too-many-architectures' if (@archs > 1); if (@archs > 0) { tag 'aspell-package-not-arch-all' if ( $pkg =~ /^aspell-[a-z]{2}(?:-.*)?$/ && $archs[0] ne 'all'); if ($pkg =~ /-docs?$/ && $archs[0] ne 'all') { tag 'documentation-package-not-architecture-independent'; } } } # Used for later tests. $arch_indep = 1 if (@archs == 1 && $archs[0] eq 'all'); } #---- Subarchitecture (udeb) if (defined $info->field('subarchitecture')) { my $subarch = $info->field('subarchitecture'); unfold('subarchitecture', \$subarch); } #---- Maintainer #---- Uploaders for my $f (qw(maintainer uploaders)) { if (not defined $info->field($f)) { tag 'no-maintainer-field' if $f eq 'maintainer'; } else { my $maintainer = $info->field($f); # Note, not expected to hit on uploaders anymore, as dpkg # now strips newlines for the .dsc, and the newlines don't # hurt in debian/control unfold($f, \$maintainer); if ($f eq 'uploaders') { my %duplicate_uploaders; my @uploaders = map { split /\@\S+\K\s*,\s*/ } split />\K\s*,\s*/, $maintainer; for my $uploader (@uploaders) { check_maintainer($uploader, 'uploader'); if ( ((true { $_ eq $uploader } @uploaders) > 1) and($duplicate_uploaders{$uploader}++ == 0)) { tag 'duplicate-uploader', $uploader; } } } else { check_maintainer($maintainer, $f); if ( $type eq 'source' && $maintainer =~ /\@lists(?:\.alioth)?\.debian\.org\b/ && !defined $info->field('uploaders')) { tag 'no-human-maintainers'; } } } } if ( defined $info->field('uploaders') && defined $info->field('maintainer')) { my $maint = $info->field('maintainer'); tag 'maintainer-also-in-uploaders' if $info->field('uploaders') =~ m/\Q$maint/; } #---- Source if (not defined $info->field('source')) { # Optional in binary packages, required in source packages, but we # cannot check it as dpkg-source(1) refuses to unpack source packages # without this field (and fields indirectly depends on unpacked). So # "pass"... 1; } else { my $source = $info->field('source'); unfold('source', \$source); if ($type eq 'source') { my $filename = $proc->pkg_path; my ($base) = ($filename =~ m,(?:\a|/)([^/]+)$,o); my ($n) = ($base =~ m/^([^_]+)_/o); if ($source ne $n) { tag 'source-field-does-not-match-pkg-name', "$source != $n"; } if ($source !~ /^[a-z0-9][-+\.a-z0-9]+\z/) { tag 'source-field-malformed', $source; } } elsif ( $source !~ /^ $PKGNAME_REGEX \s* # Optional Version e.g. (1.0) (?:\((?:\d+:)?(?:[-\.+:a-zA-Z0-9~]+?)(?:-[\.+a-zA-Z0-9~]+)?\))?\s*$/x ) { tag 'source-field-malformed', $source; } } #---- Essential if (defined $info->field('essential')) { my $essential = $info->field('essential'); unfold('essential', \$essential); tag 'essential-in-source-package' if ($type eq 'source'); tag 'essential-no-not-needed' if ($essential eq 'no'); tag 'unknown-essential-value' if ($essential ne 'no' and $essential ne 'yes'); if ($essential eq 'yes' and not $KNOWN_ESSENTIAL->known($pkg)) { tag 'new-essential-package'; } } #---- Section if (not defined $info->field('section')) { tag 'no-section-field' if ($type eq 'binary'); } else { my $section = $info->field('section'); unfold('section', \$section); if ($type eq 'udeb') { unless ($section eq 'debian-installer') { tag 'wrong-section-for-udeb', $section; } } else { my @parts = split(m{/}, $section, 2); if (scalar @parts > 1) { tag 'unknown-section', $section unless $KNOWN_ARCHIVE_PARTS{$parts[0]}; tag 'unknown-section', $section unless $KNOWN_SECTIONS->known($parts[1]); } elsif ($parts[0] eq 'unknown') { tag 'section-is-dh_make-template'; } else { tag 'unknown-section', $section unless $KNOWN_SECTIONS->known($parts[0]); } # Check package name <-> section. oldlibs is a special case; let # anything go there. if ($parts[-1] ne 'oldlibs') { foreach my $map (@NAME_SECTION_MAPPINGS) { next unless ($pkg =~ $map->[0]); my $area = ''; $area = "$parts[0]/" if (scalar @parts == 2); tag 'wrong-section-according-to-package-name', "$pkg => ${area}$map->[1]" unless $parts[-1] eq $map->[1]; last; } } if ($info->is_pkg_class('transitional')) { my $pri = $info->field('priority', ''); # Cannot use "unfold" as it could emit a tag for priority, # which will be duplicated below. $pri =~ s/\n//; tag 'transitional-package-should-be-oldlibs-extra', "$parts[-1]/$pri" unless $pri eq 'extra' && $parts[-1] eq 'oldlibs'; } } } #---- Priority if (not defined $info->field('priority')) { tag 'no-priority-field' if $type eq 'binary'; } else { my $priority = $info->field('priority'); unfold('priority', \$priority); tag 'unknown-priority', $priority unless $KNOWN_PRIOS->known($priority); if ($pkg =~ /-dbg$/) { tag 'debug-package-should-be-priority-extra', $pkg unless $priority eq 'extra'; } } #---- Standards-Version # handled in checks/standards-version #---- Description # handled in checks/description #--- Homepage if (defined $info->field('homepage')) { my $homepage = $info->field('homepage'); my $orig = $homepage; unfold('homepage', \$homepage); if ($homepage =~ /^<(?:UR[LI]:)?.*>$/i) { tag 'superfluous-clutter-in-homepage', $orig; $homepage = substr($homepage, 1, length($homepage) - 2); } require URI; my $uri = URI->new($homepage); # not an absolute URI or (most likely) an invalid protocol unless ($uri->scheme && $uri->scheme =~ m/^ftp|https?|gopher$/o) { tag 'bad-homepage', $orig; } if ($homepage=~ m,/(?:search\.cpan\.org|metacpan\.org)/.*-[0-9._]+/*$,) { tag 'homepage-for-cpan-package-contains-version', $orig; } } elsif (not $info->native) { if ($type eq 'source') { my $binary_has_homepage_field = 0; for my $binary ($info->binaries) { if (defined $info->binary_field($binary, 'homepage')) { $binary_has_homepage_field = 1; last; } } if ($binary_has_homepage_field) { tag 'homepage-in-binary-package'; } } elsif ($type eq 'binary') { tag 'no-homepage-field'; } } #---- Installer-Menu-Item (udeb) if (defined $info->field('installer-menu-item')) { my $menu_item = $info->field('installer-menu-item'); unfold('installer-menu-item', \$menu_item); $menu_item =~ /^\d+$/ or tag 'bad-menu-item', $menu_item; } #---- Package relations (binary package) # Check whether the package looks like a metapackage, used for later # dependency checks. We consider a package to possibly be a metapackage if # it is a binary package with no files outside of /usr/share/doc and a few # other directories found in metapackges. This also catches documentation # packages, but that doesn't matter for our purposes. my $metapackage = 0; if ($type eq 'binary') { $metapackage = 1; for my $file ($info->sorted_index) { next if $file->is_dir; next if $file =~ m%^usr/share/doc/%; next if $file =~ m%^usr/share/lintian/overrides/%; next if $file =~ m%^usr/share/cdd/%; $metapackage = 0; last; } # Packages we say are metapackages are always metapackages even if # they don't look like it. $metapackage = 1 if $KNOWN_METAPACKAGES->known($pkg); } if (($type eq 'binary') || ($type eq 'udeb')) { my $javalib = 0; my $replaces = $info->relation('replaces'); my %nag_once = (); $javalib = 1 if($pkg =~ m/^lib.*-java$/o); for my $field ( qw(depends pre-depends recommends suggests conflicts provides enhances replaces breaks) ) { next unless defined $info->field($field); #Get data and clean it my $data = $info->field($field); my $javadep = 0; unfold($field, \$data); my (@seen_libstdcs, @seen_tcls, @seen_tclxs, @seen_tks, @seen_tkxs, @seen_libpngs); my $is_dep_field = sub { any { $_ eq $_[0] }qw(depends pre-depends recommends suggests); }; tag 'alternates-not-allowed', $field if ($data =~ /\|/ && !&$is_dep_field($field)); for my $dep (split /\s*,\s*/, $data) { my (@alternatives, @seen_obsolete_packages); push @alternatives, [_split_dep($_), $_] for (split /\s*\|\s*/, $dep); if (&$is_dep_field($field)) { push @seen_libstdcs, $alternatives[0]->[0] if defined $known_libstdcs{$alternatives[0]->[0]}; push @seen_tcls, $alternatives[0]->[0] if defined $known_tcls{$alternatives[0]->[0]}; push @seen_tclxs, $alternatives[0]->[0] if defined $known_tclxs{$alternatives[0]->[0]}; push @seen_tks, $alternatives[0]->[0] if defined $known_tks{$alternatives[0]->[0]}; push @seen_tkxs, $alternatives[0]->[0] if defined $known_tkxs{$alternatives[0]->[0]}; push @seen_libpngs, $alternatives[0]->[0] if defined $known_libpngs{$alternatives[0]->[0]}; } # Only for (Pre-)?Depends. tag 'virtual-package-depends-without-real-package-depends', "$field: $alternatives[0]->[0]" if ( $VIRTUAL_PACKAGES->known($alternatives[0]->[0]) && ($field eq 'depends' || $field eq 'pre-depends') && ($pkg ne 'base-files' || $alternatives[0]->[0] ne 'awk') # ignore phpapi- dependencies as adding an # alternative, real, package breaks its pourpose && $alternatives[0]->[0] !~ m/^phpapi-/ ); # Check defaults for transitions. Here, we only care # that the first alternative is current. tag 'depends-on-old-emacs', "$field: $alternatives[0]->[0]" if ( &$is_dep_field($field) && $known_obsolete_emacs{$alternatives[0]->[0]}); for my $part_d (@alternatives) { my ($d_pkg, $d_march, $d_version, $d_arch, undef, $rest, $part_d_orig) = @$part_d; tag 'versioned-provides', $part_d_orig if ($field eq 'provides' && $d_version->[0]); tag 'bad-provided-package-name', $d_pkg if $d_pkg !~ /^[a-z0-9][-+\.a-z0-9]+$/; tag 'breaks-without-version', $part_d_orig if ( $field eq 'breaks' && !$d_version->[0] && !$VIRTUAL_PACKAGES->known($d_pkg) && !$replaces->implies($part_d_orig)); tag 'conflicts-with-version', $part_d_orig if ($field eq 'conflicts' && $d_version->[0]); tag 'obsolete-relation-form', "$field: $part_d_orig" if ($d_version && any { $d_version->[0] eq $_ } ('<', '>')); tag 'bad-version-in-relation', "$field: $part_d_orig" if ($d_version->[0] && !version_check($d_version->[1])); tag 'package-relation-with-self', "$field: $part_d_orig" if ($pkg eq $d_pkg) && ( $field ne 'conflicts' && $field ne 'replaces' && $field ne 'provides'); tag 'bad-relation', "$field: $part_d_orig" if $rest; push @seen_obsolete_packages, $part_d_orig if ( $OBSOLETE_PACKAGES->known($d_pkg) && &$is_dep_field($field)); tag 'depends-on-metapackage', "$field: $part_d_orig" if ( $KNOWN_METAPACKAGES->known($d_pkg) and not $metapackage and &$is_dep_field($field)); # diffutils is a special case since diff was # renamed to diffutils, so a dependency on # diffutils effectively is a versioned one. tag 'depends-on-essential-package-without-using-version', "$field: $part_d_orig" if ( $KNOWN_ESSENTIAL->known($d_pkg) && !$d_version->[0] && &$is_dep_field($field) && $d_pkg ne 'diffutils' && $d_pkg ne 'dash'); tag 'package-depends-on-an-x-font-package', "$field: $part_d_orig" if ( $field =~ /^(pre-)?depends$/ && $d_pkg =~ /^xfont.*/ && $d_pkg ne 'xfonts-utils' && $d_pkg ne 'xfonts-encodings'); tag 'depends-on-packaging-dev', $field if (( $field =~ /^(?:pre-)?depends$/ || $field eq 'recommends' ) && $d_pkg eq 'packaging-dev' && !$info->is_pkg_class('any-meta')); tag 'needlessly-depends-on-awk', $field if ( $d_pkg eq 'awk' && !$d_version->[0] && &$is_dep_field($field) && $pkg ne 'base-files'); tag 'depends-on-libdb1-compat', $field if ( $d_pkg eq 'libdb1-compat' && $pkg !~ /^libc(?:6|6.1|0.3)/ && $field =~ m/^(?:pre-)?depends$/o); tag 'depends-on-python-minimal', $field, if ( $d_pkg =~ /^python[\d.]*-minimal$/ && &$is_dep_field($field) && $pkg !~ /^python[\d.]*-minimal$/); tag 'doc-package-depends-on-main-package', $field if ("$d_pkg-doc" eq $pkg && $field =~ /^(?:pre-)?depends$/); # only trigger this for the the preferred alternative tag 'versioned-dependency-satisfied-by-perl', "$field: $part_d_orig" if $alternatives[0][-1] eq $part_d_orig && &$is_dep_field($field) && perl_core_has_version($d_pkg, $d_version->[0], $d_version->[1]); tag 'depends-exclusively-on-makedev', $field, if ( $field eq 'depends' && $d_pkg eq 'makedev' && @alternatives == 1); tag 'lib-recommends-documentation', "$field: $part_d_orig" if ( $field eq 'recommends' && $pkg =~ m/^lib/ && $pkg !~ m/-(?:dev|docs?|tools|bin)$/ && $part_d_orig =~ m/-docs?$/); # default-jdk-doc must depend on openjdk-X-doc (or # classpath-doc) to be useful; other packages # should depend on default-jdk-doc if they want # the Java Core API. tag 'depends-on-specific-java-doc-package', $field if ( &$is_dep_field($field) && $pkg ne 'default-jdk-doc' && ( $d_pkg eq 'classpath-doc' || $d_pkg =~ m/openjdk-\d+-doc/o)); if ($javalib && $field eq 'depends'){ foreach my $reg (@known_java_pkg){ if($d_pkg =~ m/$reg/){ $javadep++; last; } } } } for my $pkg (@seen_obsolete_packages) { if ($pkg eq $alternatives[0]->[0] or scalar @seen_obsolete_packages == scalar @alternatives) { tag 'depends-on-obsolete-package', "$field: $pkg"; } else { tag 'ored-depends-on-obsolete-package', "$field: $pkg"; } } # Only emit the tag if all the alternatives are # JVM/JRE/JDKs # - assume that | openjdk-X-jre-headless # makes sense for now. if (scalar(@alternatives) == $javadep && !exists $nag_once{'needless-dependency-on-jre'}){ $nag_once{'needless-dependency-on-jre'} = 1; tag 'needless-dependency-on-jre'; } } tag 'package-depends-on-multiple-libstdc-versions', @seen_libstdcs if (scalar @seen_libstdcs > 1); tag 'package-depends-on-multiple-tcl-versions', @seen_tcls if (scalar @seen_tcls > 1); tag 'package-depends-on-multiple-tclx-versions', @seen_tclxs if (scalar @seen_tclxs > 1); tag 'package-depends-on-multiple-tk-versions', @seen_tks if (scalar @seen_tks > 1); tag 'package-depends-on-multiple-tkx-versions', @seen_tkxs if (scalar @seen_tkxs > 1); tag 'package-depends-on-multiple-libpng-versions', @seen_libpngs if (scalar @seen_libpngs > 1); } # If Conflicts or Breaks is set, make sure it's not inconsistent with # the other dependency fields. for my $conflict (qw/conflicts breaks/) { next unless $info->field($conflict); for my $field (qw(depends pre-depends recommends suggests)) { next unless $info->field($field); my $relation = $info->relation($field); for my $package (split /\s*,\s*/, $info->field($conflict)) { tag 'conflicts-with-dependency', $field, $package if $relation->implies($package); } } } } #---- Package relations (source package) if ($type eq 'source') { my @binpkgs = $info->binaries; #Get number of arch-indep packages: my $arch_indep_packages = 0; my $arch_dep_packages = 0; foreach my $binpkg (@binpkgs) { my $arch = $info->binary_field($binpkg, 'architecture', ''); if ($arch eq 'all') { $arch_indep_packages++; } else { $arch_dep_packages++; } } tag 'build-depends-indep-without-arch-indep' if (defined $info->field('build-depends-indep') && $arch_indep_packages == 0); my $is_dep_field = sub { any { $_ eq $_[0] } qw(build-depends build-depends-indep); }; my $restrictions_used = 0; my %depend; for my $field ( qw(build-depends build-depends-indep build-conflicts build-conflicts-indep) ) { if (defined $info->field($field)) { #Get data and clean it my $data = $info->field($field); unfold($field, \$data); $depend{$field} = $data; for my $dep (split /\s*,\s*/, $data) { my (@alternatives, @seen_obsolete_packages); push @alternatives, [_split_dep($_), $_] for (split /\s*\|\s*/, $dep); tag 'virtual-package-depends-without-real-package-depends', "$field: $alternatives[0]->[0]" if ( $VIRTUAL_PACKAGES->known($alternatives[0]->[0]) && &$is_dep_field($field)); for my $part_d (@alternatives) { my ($d_pkg, $d_march, $d_version, $d_arch, $d_restr, $rest,$part_d_orig) = @$part_d; my $negated = 0; for my $arch (@{$d_arch->[0]}) { if ($arch eq 'all' || !is_arch_or_wildcard($arch)){ tag 'invalid-arch-string-in-source-relation', "$arch [$field: $part_d_orig]"; } } if (scalar @{$d_restr} >= 1) { $restrictions_used = 1; } for my $restr (@{$d_restr}) { my $dotcount = $restr =~ tr/.//; if ($dotcount != 1) { #<<< no tidy, tag name too long tag 'invalid-restriction-term-in-source-relation', #>>> "$restr [$field: $part_d_orig]"; next; } $restr =~ s/^!//; my ($ns, $label) = split(/\./, $restr, 2); if ($KNOWN_DEPENDENCY_RESTRICTIONS->known($ns)) { #<<< no tidy, tag name too long tag 'invalid-restriction-label-in-source-relation', #>>> "$label [$field: $part_d_orig]" unless any { $_ eq $label } @{$KNOWN_DEPENDENCY_RESTRICTIONS->value($ns)}; } else { #<<< no tidy, tag name too long tag 'invalid-restriction-namespace-in-source-relation', #>>> "$ns [$field: $part_d_orig]"; } } if ( $d_pkg =~ m/^openjdk-\d+-doc$/o or $d_pkg eq 'classpath-doc'){ tag 'build-depends-on-specific-java-doc-package', $d_pkg; } if ($d_pkg =~ m/^java-compiler$/o){ tag 'build-depends-on-an-obsolete-java-package', $d_pkg; } if ( $d_pkg =~ m/^libdb\d+\.\d+.*-dev$/o and &$is_dep_field($field)) { tag 'build-depends-on-versioned-berkeley-db', "$field:$d_pkg"; } tag 'conflicting-negation-in-source-relation', "$field: $part_d_orig" unless (not $d_arch or $d_arch->[1] == 0 or $d_arch->[1] eq @{ $d_arch->[0] }); tag 'depends-on-packaging-dev', $field if ($d_pkg eq 'packaging-dev'); tag 'build-depends-on-build-essential', $field if ($d_pkg eq 'build-essential'); #<<< no tidy, tag name too long tag 'depends-on-build-essential-package-without-using-version', #>>> "$d_pkg [$field: $part_d_orig]" if ($known_build_essential->known($d_pkg) && !$d_version->[1]); #<<< no tidy, tag name too long tag 'build-depends-on-essential-package-without-using-version', #>>> "$field: $part_d_orig" if ( $KNOWN_ESSENTIAL->known($d_pkg) && !$d_version->[0] && $d_pkg ne 'dash'); push @seen_obsolete_packages, $part_d_orig if ( $OBSOLETE_PACKAGES->known($d_pkg) && &$is_dep_field($field)); tag 'build-depends-on-metapackage', "$field: $part_d_orig" if ( $KNOWN_METAPACKAGES->known($d_pkg) and &$is_dep_field($field)); tag 'build-depends-on-non-build-package', "$field: $part_d_orig" if ( $NO_BUILD_DEPENDS->known($d_pkg) and &$is_dep_field($field)); tag 'build-depends-on-1-revision', "$field: $part_d_orig" if ( $d_version->[0] eq '>=' && $d_version->[1] =~ /-1$/ && &$is_dep_field($field)); tag 'bad-relation', "$field: $part_d_orig" if $rest; # only trigger this for the the preferred alternative tag 'versioned-dependency-satisfied-by-perl', "$field: $part_d_orig" if $alternatives[0][-1] eq $part_d_orig && &$is_dep_field($field) && perl_core_has_version($d_pkg, $d_version->[0], $d_version->[1]); } my $all_obsolete = 0; $all_obsolete = 1 if scalar @seen_obsolete_packages == @alternatives; for my $pkg (@seen_obsolete_packages) { if ( $pkg eq $alternatives[0]->[0] or $all_obsolete) { tag 'build-depends-on-obsolete-package', "$field: $pkg"; } else { tag 'ored-build-depends-on-obsolete-package', "$field: $pkg"; } } } } } # Check for duplicates. my $build_all = $info->relation('build-depends-all'); my @dups = $build_all->duplicates; for my $dup (@dups) { tag 'package-has-a-duplicate-build-relation', join(', ', @$dup); } # Make sure build dependencies and conflicts are consistent. for ($depend{'build-conflicts'}, $depend{'build-conflicts-indep'}) { next unless $_; for my $conflict (split /\s*,\s*/, $_) { if ($build_all->implies($conflict)) { tag 'build-conflicts-with-build-dependency', $conflict; } } } # if restrictions are found in the build-depends/conflicts, then # package must build-depend on dpkg (>= 1.17.2) if ($restrictions_used) { my $build_conflicts_all = $info->relation('build-conflicts-all'); tag 'restriction-list-without-versioned-dpkg-dev-dependency' unless ($build_all->implies('dpkg-dev (>= 1.17.2)')); tag 'restriction-list-with-versioned-dpkg-dev-conflict' if ( $build_conflicts_all->implies_inverse('dpkg-dev (<< 1.17.2)')); # if the package uses debhelper then it must require and not # conflict with version >= 9.20140227 if ($build_all->implies('debhelper')) { tag 'restriction-list-with-debhelper-without-debhelper-version' unless ($build_all->implies('debhelper (>= 9.20140227)')); #<<< no tidy, tag name too long tag 'restriction-list-with-debhelper-with-conflicting-debhelper-version' #>>> if ( $build_conflicts_all->implies_inverse( 'debhelper (<< 9.20140227)')); } } my (@arch_dep_pkgs, @dbg_pkgs); foreach my $gproc ($group->get_binary_processables) { my $binpkg = $gproc->pkg_name; if ($binpkg =~ m/-dbg$/) { push(@dbg_pkgs, $gproc); } elsif ($info->binary_field($binpkg, 'architecture', '') ne 'all') { push @arch_dep_pkgs, $binpkg; } } my $dstr = join('|', map { quotemeta($_) } @arch_dep_pkgs); my $depregex = qr/^(?:$dstr)$/; for my $dbg_proc (@dbg_pkgs) { my $deps = $info->binary_relation($dbg_proc->pkg_name, 'strong'); my $missing = 1; $missing = 0 if $deps->matches($depregex, VISIT_PRED_NAME); if ($missing and $dbg_proc->info->is_pkg_class('transitional')) { # If it is a transitional package, allow it to depend # on another -dbg instead. $missing = 0 if $deps->matches(qr/-dbg \Z/xsm, VISIT_PRED_NAME); } tag 'dbg-package-missing-depends', $dbg_proc->pkg_name if $missing; } # Check for a python*-dev build dependency in source packages that # build only arch: all packages. if ($arch_dep_packages == 0 and $build_all->implies($PYTHON_DEV)) { tag 'build-depends-on-python-dev-with-no-arch-any'; } } #----- Origin if (defined $info->field('origin')) { my $origin = $info->field('origin'); unfold('origin', \$origin); tag 'redundant-origin-field' if lc($origin) eq 'debian'; } #----- Bugs if (defined $info->field('bugs')) { my $bugs = $info->field('bugs'); unfold('bugs', \$bugs); tag 'redundant-bugs-field' if $bugs =~ m,^debbugs://bugs.debian.org/?$,i; } #----- Python-Version if (defined $info->field('python-version')) { my $pyversion = $info->field('python-version'); unfold('python-version', \$pyversion); my @valid = ( ['\d+\.\d+', '\d+\.\d+'],['\d+\.\d+'], ['\>=\s*\d+\.\d+', '\<\<\s*\d+\.\d+'],['\>=\s*\d+\.\d+'], ['current', '\>=\s*\d+\.\d+'],['current'], ['all']); my @pyversion = split(/\s*,\s*/, $pyversion); if (@pyversion > 2) { if (any { !/^\d+\.\d+$/ } @pyversion) { tag 'malformed-python-version', $pyversion; } } else { my $okay = 0; for my $rule (@valid) { if ( $pyversion[0] =~ /^$rule->[0]$/ && (( $pyversion[1] && $rule->[1] && $pyversion[1] =~ /^$rule->[1]$/ ) || (!$pyversion[1] && !$rule->[1])) ) { $okay = 1; last; } } tag 'malformed-python-version', $pyversion unless $okay; } } #----- Dm-Upload-Allowed if (defined $info->field('dm-upload-allowed')) { my $dmupload = $info->field('dm-upload-allowed'); tag 'dm-upload-allowed-is-obsolete'; unfold('dm-upload-allowed', \$dmupload); unless ($dmupload eq 'yes') { tag 'malformed-dm-upload-allowed', $dmupload; } } #----- Vcs-* while (my ($vcs, $splitter) = each %VCS_EXTRACT) { if (defined $info->field("vcs-$vcs")) { my $uri = $info->field("vcs-$vcs"); unfold("vcs-$vcs", \$uri); my @parts = &$splitter($uri); if (not @parts or not $parts[0]) { tag 'vcs-field-uses-unknown-uri-format', "vcs-$vcs", $uri; } else { if ( $VCS_RECOMMENDED_URIS{$vcs} and $parts[0] !~ $VCS_RECOMMENDED_URIS{$vcs}) { if ( $VCS_VALID_URIS{$vcs} and $parts[0] =~ $VCS_VALID_URIS{$vcs}) { tag 'vcs-field-uses-not-recommended-uri-format', "vcs-$vcs", $uri; } else { tag 'vcs-field-uses-unknown-uri-format', "vcs-$vcs", $uri; } } if (any { $_ and /\s/} @parts) { tag 'vcs-field-has-unexpected-spaces', "vcs-$vcs", $uri; } } if ($VCS_CANONIFY{$vcs}) { my $canonicalized = $parts[0]; my $tag = 'vcs-field-not-canonical'; foreach my $canonify ($VCS_CANONIFY{$vcs}) { &$canonify($canonicalized, $tag); } if ($canonicalized ne $parts[0]) { tag $tag, $parts[0], $canonicalized; } } } } #----- Field checks (without checking the value) for my $field (keys %{$info->field}) { tag 'unknown-field-in-dsc', $field if ($type eq 'source' && !$SOURCE_FIELDS->known($field)); tag 'unknown-field-in-control', $field if ($type eq 'binary' && !$KNOWN_BINARY_FIELDS->known($field)); tag 'unknown-field-in-control', $field if ($type eq 'udeb' && !$KNOWN_UDEB_FIELDS->known($field)); } return; } # splits "foo:bar (>= 1.2.3) [!i386 ia64] " into # ( "foo", "bar", [ ">=", "1.2.3" ], [ [ "i386", "ia64" ], 1 ], [ "!profile.stage1" "!profile.notest" ], "" ) # ^^^ ^^ # count of negated arches, if ! was given || # rest (should always be "" for valid dependencies) sub _split_dep { my $dep = shift; my ($pkg, $dmarch, $version, $darch, $restr) = ('', '', ['',''], [[], 0], []); my $pkgname = $1 if $dep =~ s/^\s*([^<\s\[\(]+)\s*//; if (defined $pkgname) { ($pkg, $dmarch) = split /:/, $pkgname, 2; $dmarch //= ''; # Ensure it is defined (in case there is no ":") } if (length $dep) { if ($dep =~ s/\s* \( \s* (<<|<=|<|=|>=|>>|>) \s* ([^\s(]+) \s* \) \s*//x) { @$version = ($1, $2); } if ($dep && $dep =~ s/\s*\[([^\]]+)\]\s*//) { my $t = $1; $darch->[0] = [split /\s+/, $t]; my $negated = 0; for my $arch (@{ $darch->[0] }) { $negated++ if $arch =~ s/^!//; } $darch->[1] = $negated; } if ($dep && $dep =~ s/\s*<([^>]+)>\s*//) { my $t = $1; $restr = [split /\s+/, $t]; } } return ($pkg, $dmarch, $version, $darch, $restr, $dep); } sub _load_dependency_restrictions { my ($key, $value, $pval) = @_; my $ret = undef; if (not defined $pval) { $ret = $pval = []; } push @{$pval}, $value; return $ret; } sub perl_core_has_version { my ($package, $op, $version) = @_; my $core_version = $PERL_CORE_PROVIDES->value($package); return 0 if !defined $core_version; return 0 unless version_check($version); return versions_compare($core_version, $op, $version); } sub unfold { my ($field, $line) = @_; $$line =~ s/\n$//; if ($$line =~ s/\n//g) { tag 'multiline-field', $field; # Remove leading space as it confuses some of the other checks # that are anchored. This happens if the field starts with a # space and a newline, i.e ($ marks line end): # # Vcs-Browser: $ # http://somewhere.com/$ $$line=~s/^\s*+//; } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/watch-file.desc0000664000000000000000000001632212310413206015573 0ustar Check-Script: watch-file Author: Patrick Schoenfeld Abbrev: watch Type: source Needs-Info: debfiles Info: Check debian/watch files in source packages. Tag: debian-watch-file-is-missing Severity: wishlist Certainty: certain Ref: policy 4.11, uscan(1) Info: This source package is not Debian-native but it does not have a debian/watch file. This file is used for automatic detection of new upstream versions by the Debian External Health Status project and other project infrastructure. If this package is maintained upstream, please consider adding a debian/watch file to detect new releases. . If the package is not maintained upstream or if upstream uses a distribution mechanism that cannot be meaningfully monitored by uscan and the Debian External Health Status project, please consider adding a debian/watch file containing only comments documenting the situation. Tag: debian-watch-file-declares-multiple-versions Severity: normal Certainty: certain Ref: uscan(1) Info: The debian/watch file in this package contains multiple lines starting with version=. There should be only one version declaration in a watch file, on the first non-comment line of the file. Tag: debian-watch-file-unknown-version Severity: normal Certainty: certain Ref: uscan(1) Info: The version= line in the debian/watch file in this package declares an unknown version. The currently known watch file versions are 2 and 3. Tag: debian-watch-file-missing-version Severity: normal Certainty: certain Ref: uscan(1) Info: The debian/watch file in this package doesn't start a version= line. The first non-comment line of debian/watch should be a version= declaration. This may mean that this is an old version one watch file that should be updated to the current version. Tag: debian-watch-file-should-mangle-version Severity: normal Certainty: certain Ref: uscan(1), http://wiki.debian.org/DEHS Info: The version of this package contains dfsg, ds, or debian, which normally indicates that the upstream source has been repackaged to comply with the Debian Free Software Guidelines (or similar reason), but there is no version mangling in the debian/watch file. Since the dfsg string is not part of the upstream version, the debian/watch file should use the dversionmangle option to remove the dfsg before version number comparison. Tag: debian-watch-file-should-dversionmangle-not-uversionmangle Severity: wishlist Certainty: certain Ref: http://wiki.debian.org/DEHS Info: The version of this package contains dfsg, ds, or debian, but a misleading upstream version mangling occurs in the debian/watch file. Since the dfsg string is not part of the upstream version and its addition is Debian-specific, the the debian/watch file should use the dversionmangle option to remove, instead of adding in uversionmangle, the dfsg before comparing version numbers. Tag: debian-watch-file-should-uversionmangle-not-dversionmangle Severity: wishlist Certainty: certain Ref: http://wiki.debian.org/DEHS Info: The version of this package contains alpha, beta, or rc, but a misleading Debian version mangling occurs in the debian/watch file. You should use the uversionmangle option instead of dversionmangle so that the prerelease is sorted by uscan before a possible future final release. Tag: debian-watch-file-in-native-package Severity: normal Certainty: certain Ref: http://wiki.debian.org/DEHS Info: The package ships a watch file although it is a Debian native package. DEHS does not process watch files in native packages based on the reasoning that native packages do not have upstreams to check for new releases. Tag: debian-watch-file-uses-deprecated-sf-redirector-method Severity: normal Certainty: certain Info: The watch file seems to be passing arguments to the redirector other than a path. Calling the SourceForge redirector with parameters like project prevents uscan from generating working URIs to the files and thus has been deprecated and is no longer supported by the redirector. Tag: debian-watch-file-should-use-sf-redirector Severity: normal Certainty: certain Ref: uscan(1) Info: The watch file specifies a SourceForge page or download server directly. This is not recommended; SourceForge changes their download servers and website periodically, requiring watch files to be modified every time. Instead, use the qa.debian.org redirector by using the magic URL: . http://sf.net/<project>/<tar-name>-(.+)\.tar\.gz . replacing <project> with the name of the SourceForge project and <tar-name> with the name of the tarball distributed within that project. Adjust the filename regex as necessary. Tag: debian-watch-file-specifies-wrong-upstream-version Severity: normal Certainty: certain Ref: uscan(1) Info: The watch file specifies an upstream version which exactly matches the version of a debian/changelog entry, this is not a native package, and no version mangling is being done. The version field in a watch file should specify the expected upstream version, not the version of the Debian package. Any epochs and Debian revisions should be removed first or mangled away. Tag: debian-watch-file-specifies-old-upstream-version Severity: normal Certainty: certain Info: The watch file specifies an upstream version number which matches the upstream portion of an old debian/changelog entry, and the current debian/changelog entry specifies a newer upstream version. The version number in the watch file is very likely to be incorrect and probably should be replaced with the current expected upstream version. Otherwise, DEHS and similar projects will think the package is out of date even when it may not be. Tag: debian-watch-may-check-gpg-signature Severity: pedantic Certainty: certain Ref: uscan(1) Info: This watch file does not include a means to verify the upstream tarball using cryptographic signature. . If upstream distributions provide such signatures, please use the pgpsigurlmangle options in this watch file's opts= to generate the URL of an upstream GPG signature. This signature is automatically downloaded and verified against a keyring stored in debian/upstream-signing-key.asc. . Of course, not all upstreams provide such signatures, but you could request them as a way of verifying that no third party has modified the code against their wishes after the release. Projects such as phpmyadmin, unrealircd, and proftpd have suffered from this kind of attack. Tag: debian-watch-file-pubkey-file-is-missing Severity: important Certainty: certain Ref: uscan(1) Info: This watch file verifies a cryptographic signature but the upstream public key is missing. . Please add upstream public keys in either debian/upstream/signing-key.asc or debian/upstream/signing-key.pgp. Tag: debian-watch-contains-dh_make-template Severity: wishlist Certainty: certain Info: The watch file contains a standard template included by dh_make. Please remove them once you have implemented the watch file. lintian-2.5.22ubuntu1/checks/apache2.pm0000664000000000000000000002126712311317575014572 0ustar # apache2 -- lintian check script -*- perl -*- # # Copyright © 2012 Arno Töll # # 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::apache2; use strict; use warnings; use autodie; use File::Basename; use Lintian::Tags qw(tag); use Lintian::Relation qw(:constants); use Lintian::Util qw(fail); sub run { my ($pkg, $type, $info) = @_; # Do nothing if the package in question appears to be related to # the web server itself return if $pkg =~ m/^apache2(:?\.2)?(?:-\w+)?$/; # whether the package appears to be an Apache2 module/web application my $seen_apache2_special_file = 0; if ($type eq 'binary') { foreach my $file ($info->sorted_index) { # File is probably not relevant to us, ignore it next if $file->is_dir; next if $file !~ m#^(?:usr/lib/apache2/modules/|etc/apache2/)#; # Package installs an unrecognized file - check this for all files if ( $file !~ m#\.conf$# and $file =~ m#^etc/apache2/(conf|site|mods)-available/(.*)$#){ my $temp_type = $1; my $temp_file = $2; # ... except modules which are allowed to ship .load files tag 'apache2-configuration-files-need-conf-suffix', $file unless $temp_type eq 'mods' and $temp_file =~ m#\.load#; } # Package appears to be a binary module if ($file =~ m#^usr/lib/apache2/modules/(.*)\.so#) { check_module_package($pkg, $info, $1); $seen_apache2_special_file++; } # Package appears to be a web application elsif ($file =~ m#^etc/apache2/(conf|site)-available/(.*)$#) { check_web_application_package($pkg, $type, $info, $file, $1, $2); $seen_apache2_special_file++; } # Package appears to be a legacy web application elsif ($file =~ m#^etc/apache2/conf\.d/(.*)$#) { tag 'apache2-reverse-dependency-uses-obsolete-directory',$file; check_web_application_package($pkg, $type, $info, $file, 'conf', $1); $seen_apache2_special_file++; } # Package does scary things elsif ($file =~ m#^etc/apache2/(?:conf|sites|mods)-enabled/.*$#) { #<<< no perltidy (tag name is too long to fit) tag 'apache2-reverse-dependency-ships-file-in-not-allowed-directory', $file; #>>> $seen_apache2_special_file++; } } if ($seen_apache2_special_file) { check_maintainer_scripts($info); } } return; } sub check_web_application_package { my ($pkg, $type, $info, $file, $pkgtype, $webapp) = @_; tag 'non-standard-apache2-configuration-name', $webapp, '!=', "$pkg.conf" if $webapp ne "$pkg.conf" or $webapp =~ m/^local-./; my $rel = Lintian::Relation->and($info->relation('strong'), $info->relation('recommends')); # A web application must not depend on apache2-whatever my $visit = sub { if (m/^apache2(?:\.2)?-(?:common|data|bin)$/) { tag 'web-application-depends-on-apache2-data-package', $_; return 1; } return 0; }; $rel->visit($visit, VISIT_STOP_FIRST_MATCH); # ... nor on apache2 only. Moreover, it should be in the form # apache2 | httpd but don't worry about versions, virtual package # don't support that if ($rel->implies('apache2')) { tag 'web-application-should-not-depend-unconditionally-on-apache2'; } if (defined $info->index($file)) { inspect_conf_file($info, $pkgtype, $file); } return; } sub check_module_package { my ($pkg, $info, $module) = @_; # We want packages to be follow our naming scheme. Modules should be named # libapache2-mod- if it ships a mod_foo.so # NB: Some modules have uppercase letters in them (e.g. Ruwsgi), but # obviously the package should be in all lowercase. my $expected_name = 'libapache2-' . lc($module); # Package depends on apache2-api-YYYYMMDD my $seen_api_dependency = 0; my $rel; my $visit = sub { if (m/^apache2(?:\.2)?-(?:common|data|bin)$/) { tag 'apache2-module-depends-on-real-apache2-package', $_; return 1; } return 0; }; $expected_name =~ tr/_/-/; if ($expected_name ne $pkg) { tag 'non-standard-apache2-module-package-name', $pkg, '!=', $expected_name; } $info->relation('strong')->visit($visit, VISIT_STOP_FIRST_MATCH); $rel = Lintian::Relation->and($info->relation('strong'), $info->relation('recommends')); if (!$rel->matches(qr/^apache2-api-\d+$/o)) { tag 'apache2-module-does-not-depend-on-apache2-api'; } # The module is called mod_foo.so, thus the load file is expected to be # named foo.load my $load_file = $module; my $conf_file = $module; $load_file =~ s#^mod.(.*)$#etc/apache2/mods-available/$1.load#; $conf_file =~ s#^mod.(.*)$#etc/apache2/mods-available/$1.conf#; if (defined $info->index($load_file)) { inspect_conf_file($info, 'mods', $load_file); } else { tag 'apache2-module-does-not-ship-load-file', $load_file; } if (defined $info->index($conf_file)) { inspect_conf_file($info, 'mods', $conf_file); } return; } sub check_maintainer_scripts { my ($info) = @_; open(my $fd, '<', $info->lab_data_path('control-scripts')); while (<$fd>){ m/^(\S*) (.*)$/ or fail("bad line in control-scripts file: $_"); my $interpreter = $1; my $file = $2; my $filename = $info->control($file); # Don't follow links next if -l $filename; # Don't try to parse the file if it does not appear to be a # shell script next if $interpreter !~ m/sh\b/; open(my $sfd, '<', $filename); while (<$sfd>) { # skip comments next if substr($_, 0, $-[0]) =~ /#/; # Do not allow reverse dependencies to call "a2enmod" and friends # directly if (m/\b(a2(?:en|dis)(?:conf|site|mod))\b/) { tag 'apache2-reverse-dependency-calls-wrapper-script', $file, $1; } # Do not allow reverse dependencies to call "invoke-rc.d apache2 if (m/invoke-rc\.d\s+apache2/) { tag 'apache2-reverse-dependency-calls-invoke-rc.d', $file; } # XXX: Check whether apache2-maintscript-helper is used # unconditionally e.g. not protected by a [ -e ], [ -x ] or so. # That's going to be complicated. Or not possible without grammar # parser. } close($sfd); } close($fd); return; } sub inspect_conf_file { my ($info, $conftype, $file) = @_; my $filename = $info->unpacked($file); # Don't follow links return if -l $filename; open(my $fd, '<', $filename); while (<$fd>) { for my $directive ('Order', 'Satisfy', 'Allow', 'Deny', qr{}xsm, qr{}xsm) { if (m{\A \s* ($directive) (?:\s+|\Z)}xsm) { tag 'apache2-deprecated-auth-config', $1; } } if (m/^#\s*(Depends|Conflicts):\s+(.*?)\s*$/) { my ($field, $value) = ($1, $2); tag 'apache2-unsupported-dependency', $file, $field if $field eq 'Conflicts' and $conftype ne 'mods'; my @dependencies = split(/[\n\s]+/, $value); foreach my $dep (@dependencies) { tag 'apache2-unparsable-dependency', $file, $dep if $dep =~ m/\W/ or $dep =~ /^mod\_/ or $dep =~ m/\.(?:conf|load)/; } } } close($fd); return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/watch-file.pm0000664000000000000000000002076112311317623015302 0ustar # watch-file -- lintian check script -*- perl -*- # # Copyright (C) 2008 Patrick Schoenfeld # Copyright (C) 2008 Russ Allbery # Copyright (C) 2008 Raphael Geissert # # 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::watch_file; use strict; use warnings; use autodie; use Lintian::Tags qw(tag); use Lintian::Util qw(is_ancestor_of); sub run { my (undef, undef, $info) = @_; my $template = 0; my $withgpgverification = 0; my $wfile = $info->debfiles('watch'); if (-l $wfile) { return unless is_ancestor_of($info->debfiles, $wfile); } if (!-f $wfile) { tag 'debian-watch-file-is-missing' unless ($info->native); return; } # Perform the other checks even if it is a native package tag 'debian-watch-file-in-native-package' if ($info->native); # Check if the Debian version contains anything that resembles a repackaged # source package sign, for fine grained version mangling check my $version = $info->field('version'); my $repack; # If the version field is missing, we assume a neutral non-native one. $version = '0-1' unless defined $version; if ($version =~ /(dfsg|debian|ds)/) { $repack = $1; } my $prerelease; if ($version =~ /(alpha|beta|rc)/i) { $prerelease = $1; } # Gather information from the watch file and look for problems we can # diagnose on the first time through. open(my $fd, '<', $wfile); local $_; my ($watchver, %dversions); while (<$fd>) { $template = 1 if m/^\s*\#\s*Example watch control file for uscan/io; next if /^\s*\#/; next if /^\s*$/; s/^\s*//; CHOMP: chomp; if (s/(?; goto CHOMP; } if (/^version\s*=\s*(\d+)(?:\s|\Z)/) { if (defined $watchver) { tag 'debian-watch-file-declares-multiple-versions', "line $."; } $watchver = $1; if ($watchver ne '2' and $watchver ne '3') { tag 'debian-watch-file-unknown-version', $watchver; } } else { unless (defined($watchver)) { tag 'debian-watch-file-missing-version'; $watchver = 1; } # Version 1 watch files are too broken to try checking them. next if ($watchver == 1); my ( $repack_mangle, $repack_dmangle, $prerelease_mangle, $prerelease_umangle ) = (0, 0, 0, 0); my ($opts, @opts); if ( s/^opt(?:ion)?s=\"([^\"]+)\"\s+// || s/^opt(?:ion)?s=(\S+)\s+//) { $opts = $1; @opts = split(',', $opts); for (@opts) { $repack_mangle = 1 if defined $repack and /^[ud]?versionmangle\s*=.*$repack/; $repack_dmangle = 1 if defined $repack and /^dversionmangle\s*=.*$repack/; $prerelease_mangle = 1 if defined $prerelease and /^[ud]?versionmangle\s*=.*$prerelease/; $prerelease_umangle = 1 if defined $prerelease and /^uversionmangle\s*=.*$prerelease/; $withgpgverification = 1 if /^pgpsigurlmangle\s*=\s*/; } } if (m%qa\.debian\.org/watch/sf\.php\?%) { tag 'debian-watch-file-uses-deprecated-sf-redirector-method', "line $."; } if ( m{ (?:https?|ftp):// (?:(?:.+\.)?dl|(?:pr)?downloads?|ftp\d?|upload) \. (?:sourceforge|sf)\.net}xsm or m{https?://(?:www\.)?(?:sourceforge|sf)\.net /project/showfiles\.php}xsm or m{https?://(?:www\.)?(?:sourceforge|sf)\.net /projects/.+/files}xsm ) { tag 'debian-watch-file-should-use-sf-redirector', "line $."; } # This bit is as-is from uscan.pl: my ($base, $filepattern, $lastversion, $action) = split ' ', $_, 4; if ($base =~ s%/([^/]*\([^/]*\)[^/]*)$%/%) { # Last component of $base has a pair of parentheses, so no # separate filepattern field; we remove the filepattern from the # end of $base and rescan the rest of the line $filepattern = $1; (undef, $lastversion, $action) = split ' ', $_, 3; } push @{$dversions{$lastversion}}, $. if (defined($lastversion)); $lastversion = 'debian' unless (defined($lastversion)); my $needs_repack_mangling = ($repack and $lastversion eq 'debian'); # If the version of the package contains dfsg, assume that it needs # to be mangled to get reasonable matches with upstream. if ($needs_repack_mangling and not $repack_mangle) { tag 'debian-watch-file-should-mangle-version', "line $."; } if ( $needs_repack_mangling and $repack_mangle and not $repack_dmangle) { tag 'debian-watch-file-should-dversionmangle-not-uversionmangle', "line $."; } my $needs_prerelease_mangling = ($prerelease and $lastversion eq 'debian'); if ( $needs_prerelease_mangling and $prerelease_mangle and not $prerelease_umangle) { tag 'debian-watch-file-should-uversionmangle-not-dversionmangle', "line $."; } } } close($fd); tag 'debian-watch-contains-dh_make-template' if ($template); tag 'debian-watch-may-check-gpg-signature' unless ($withgpgverification); if ($withgpgverification) { if ( !-f $info->debfiles('upstream-signing-key.pgp') && !-f $info->debfiles('upstream/signing-key.pgp') && !-f $info->debfiles('upstream/signing-key.asc')) { tag 'debian-watch-file-pubkey-file-is-missing'; } } my $changes = $info->changelog; if (defined $changes and %dversions) { my $data = $changes->data; my %changelog_versions; my $count = 1; for my $entry (@{$data}) { my $uversion = $entry->Version; $uversion =~ s/-[^-]+$//; # revision $uversion =~ s/^\d+://; # epoch $changelog_versions{'orig'}{$entry->Version} = $count; # Preserve the first value here to correctly detect old versions. $changelog_versions{'mangled'}{$uversion} = $count unless (exists($changelog_versions{'mangled'}{$uversion})); $count++; } while (my ($dversion, $lines) = each %dversions) { next if (!defined($dversion) || $dversion eq 'debian'); local $" = ', '; if (!$info->native && exists($changelog_versions{'orig'}{$dversion})) { tag 'debian-watch-file-specifies-wrong-upstream-version', $dversion, "line @{$lines}"; next; } if (exists($changelog_versions{'mangled'}{$dversion}) && $changelog_versions{'mangled'}{$dversion} != 1) { tag 'debian-watch-file-specifies-old-upstream-version', $dversion, "line @{$lines}"; next; } } } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/menus.pm0000664000000000000000000006145412311317614014412 0ustar # menus -- lintian check script -*- perl -*- # somewhat of a misnomer -- it doesn't only check menus # Copyright (C) 1998 Christian Schwarz # # 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::menus; use strict; use warnings; use autodie; use Lintian::Check qw(check_spelling check_spelling_picky $known_shells_regex); use Lintian::Data; use Lintian::Tags qw(tag); use Lintian::Util qw(file_is_encoded_in_non_utf8 strip); # Supported documentation formats for doc-base files. our %known_doc_base_formats = map { $_ => 1 } ('html', 'text', 'pdf', 'postscript', 'info', 'dvi', 'debiandoc-sgml'); # Known fields for doc-base files. The value is 1 for required fields and 0 # for optional fields. our %KNOWN_DOCBASE_MAIN_FIELDS = ( 'document' => 1, 'title' => 1, 'section' => 1, 'abstract' => 0, 'author' => 0 ); our %KNOWN_DOCBASE_FORMAT_FIELDS = ( 'format' => 1, 'files' => 1, 'index' => 0 ); our $SECTIONS = Lintian::Data->new('doc-base/sections'); sub run { my ($pkg, $type, $info, undef, $group) = @_; my (%all_files, %all_links); my %preinst; my %postinst; my %prerm; my %postrm; my $docbase_file; my $menu_file; my $menumethod_file; my $anymenu_file; my $documentation; check_script($pkg, $info->control('preinst'), 'preinst', \%preinst); check_script($pkg, $info->control('postinst'), 'postinst', \%postinst); check_script($pkg, $info->control('prerm'), 'prerm', \%prerm); check_script($pkg, $info->control('postrm'), 'postrm', \%postrm); # read package contents for my $file ($info->sorted_index) { add_file_link_info($info, $file->name, \%all_files, \%all_links); my $operm = $file->operm; if ($file->is_file) { # file checks # menu file? if ($file =~ m,^usr/(lib|share)/menu/\S,o) { # correct permissions? if ($operm & 0111) { tag 'executable-menu-file', sprintf('%s %04o', $file, $operm); } next if $file =~ m,^usr/(?:lib|share)/menu/README$,; if ($file =~ m,^usr/lib/,o) { tag 'menu-file-in-usr-lib', $file; } $menu_file = $file; if ( $file =~ m,usr/(?:lib|share)/menu/menu$,o and $pkg ne 'menu') { tag 'bad-menu-file-name', $file; } } # doc-base file? elsif ($file =~ m,^usr/share/doc-base/\S,o){ # correct permissions? if ($operm & 0111) { tag 'executable-in-usr-share-docbase', $file, sprintf('%04o', $operm); } $docbase_file = $file; } #menu-methods file? elsif ($file =~ m,^etc/menu-methods/\S,o) { #TODO: we should test if the menu-methods file # is made executable in the postinst as recommended by # the menu manual my $menumethod_includes_menu_h = 0; my $local_file = $file; $local_file =~ s,^etc/menu-methods/,,; $menumethod_file = $file; open(my $fd, '<', $info->lab_data_path("menu/methods/$local_file")); while (<$fd>) { chomp; if (m,^!include menu.h,o) { $menumethod_includes_menu_h = 1; last; } } close($fd); tag 'menu-method-should-include-menu-h', $file unless $menumethod_includes_menu_h or $pkg eq 'menu'; } # package doc dir? elsif ( $file =~ m{ \A usr/share/doc/(?:[^/]+/)? (.+\.(?:html|pdf))(?:\.gz)? \Z}xsmo ) { my $name = $1; unless ($name =~ m/^changelog\.html$/o or $name =~ m/^README[.-]/o or $name =~ m|examples|o) { $documentation = 1; } } } } # prerm scripts should not call update-menus if ($prerm{'calls-updatemenus'}) { tag 'prerm-calls-updatemenus'; } # postrm scripts should not call install-docs if ($postrm{'calls-installdocs'} or $postrm{'calls-installdocs-r'}) { tag 'postrm-calls-installdocs'; } # preinst scripts should not call either update-menus nor installdocs if ($preinst{'calls-updatemenus'}) { tag 'preinst-calls-updatemenus'; } if ($preinst{'calls-installdocs'}) { tag 'preinst-calls-installdocs'; } $anymenu_file = $menu_file || $menumethod_file; # No one needs to call install-docs any more; triggers now handles that. if ($postinst{'calls-installdocs'} or $postinst{'calls-installdocs-r'}) { tag 'postinst-has-useless-call-to-install-docs'; } if ($prerm{'calls-installdocs'} or $prerm{'calls-installdocs-r'}) { tag 'prerm-has-useless-call-to-install-docs'; } # check consistency # docbase file? if ($docbase_file) { my $dbdir = $info->lab_data_path('doc-base'); if (-d $dbdir) { opendir(my $dirfd, $dbdir); my $dbfile; while (defined($dbfile = readdir($dirfd))) { next if $dbfile eq '.' or $dbfile eq '..'; my $dbpath = "$dbdir/$dbfile"; # don't try to parse executables, plus we already # warned about it. Skip symlinks as well, unlikely to # be used for real doc-base files. next if -x $dbpath or -l $dbpath or not -f $dbpath; check_doc_base_file($dbfile, $dbpath, $pkg, \%all_files, \%all_links, $group); } closedir($dirfd); } } elsif ($documentation) { if ($pkg =~ /^libghc6?-.*-doc$/) { # This is the library documentation for a haskell library. Haskell # libraries register their documentation via the ghc compiler's # documetation registration mechanism. See bug #586877. } else { tag 'possible-documentation-but-no-doc-base-registration'; } } if ($anymenu_file) { # postinst and postrm should not need to call update-menus # unless there is a menu-method file. However, update-menus # currently won't enable packages that have outstanding # triggers, leading to an update-menus call being required for # at least some packages right now. Until this bug is fixed, # we still require it. See #518919 for more information. # # That bug does not require calling update-menus from postrm, # but debhelper apparently currently still adds that to the # maintainer script, so don't warn if it's done. if (not $postinst{'calls-updatemenus'}) { tag 'postinst-does-not-call-updatemenus', $anymenu_file; } if ($menumethod_file and not $postrm{'calls-updatemenus'}) { tag 'postrm-does-not-call-updatemenus', $menumethod_file unless $pkg eq 'menu'; } } else { if ($postinst{'calls-updatemenus'}) { tag 'postinst-has-useless-call-to-update-menus'; } if ($postrm{'calls-updatemenus'}) { tag 'postrm-has-useless-call-to-update-menus'; } } return; } # ----------------------------------- sub check_doc_base_file { my ($dbfile, $dbpath, $pkg, $all_files, $all_links, $group) = @_; my $line = file_is_encoded_in_non_utf8($dbpath); if ($line) { tag 'doc-base-file-uses-obsolete-national-encoding', "$dbfile:$line"; } my (@files, $field, @vals); my $knownfields = \%KNOWN_DOCBASE_MAIN_FIELDS; $line = 0; # global my %sawfields = (); # local for each section of control file my %sawformats = (); # global for control file open(my $fd, '<', $dbpath); while (<$fd>) { chomp; # New field. check previous field, if we have any. if (/^(\S+)\s*:\s*(.*)$/) { my (@new) = ($1, $2); if ($field) { check_doc_base_field( $pkg, $dbfile, $line, $field, \@vals,\%sawfields, \%sawformats, $knownfields, $all_files, $all_links, $group ); } $field = lc $new[0]; @vals = ($new[1]); $line = $.; # Continuation of previously defined field. } elsif ($field && /^\s+\S/) { push(@vals, $_); # All tags will be reported on the last continuation line of the # doc-base field. $line = $.; # Sections' separator. } elsif (/^(\s*)$/) { tag 'doc-base-file-separator-extra-whitespace', "$dbfile:$." if $1; next unless $field; # skip successive empty lines # Check previously defined field and section. check_doc_base_field( $pkg, $dbfile, $line, $field, \@vals,\%sawfields, \%sawformats, $knownfields, $all_files, $all_links, $group ); check_doc_base_file_section($dbfile, $line + 1, \%sawfields, \%sawformats, $knownfields); # Intialize variables for new section. undef $field; undef $line; @vals = (); %sawfields = (); # Each section except the first one is format section. $knownfields = \%KNOWN_DOCBASE_FORMAT_FIELDS; # Everything else is a syntax error. } else { tag 'doc-base-file-syntax-error', "$dbfile:$."; } } # Check the last field/section of the control file. if ($field) { check_doc_base_field( $pkg, $dbfile, $line, $field, \@vals, \%sawfields,\%sawformats, $knownfields, $all_files,$all_links, $group ); check_doc_base_file_section($dbfile, $line, \%sawfields, \%sawformats, $knownfields); } # Make sure we saw at least one format. tag 'doc-base-file-no-format-section', "$dbfile:$." unless %sawformats; close($fd); return; } # Checks one field of a doc-base control file. $vals is array ref containing # all lines of the field. Modifies $sawfields and $sawformats. sub check_doc_base_field { my ( $pkg, $dbfile, $line, $field, $vals, $sawfields, $sawformats,$knownfields, $all_files, $all_links, $group ) = @_; tag 'doc-base-file-unknown-field', "$dbfile:$line", $field unless defined $knownfields->{$field}; tag 'doc-base-file-duplicated-field', "$dbfile:$line", $field if $sawfields->{$field}; $sawfields->{$field} = 1; # Index/Files field. # # Check if files referenced by doc-base are included in the package. The # Index field should refer to only one file without wildcards. The Files # field is a whitespace-separated list of files and may contain wildcards. # We skip without validating wildcard patterns containing character # classes since otherwise we'd need to deal with wildcards inside # character classes and aren't there yet. if ($field eq 'index' or $field eq 'files') { my @files = map { split('\s+', $_) } @$vals; if ($field eq 'index' && @files > 1) { tag 'doc-base-index-references-multiple-files', "$dbfile:$line"; } for my $file (@files) { next if $file eq ''; my $realfile = delink($file, $all_links); # openoffice.org-dev-doc has thousands of files listed so try to # use the hash if possible. my $found; if ($realfile =~ /[*?]/) { my $regex = quotemeta($realfile); unless ($field eq 'index') { next if $regex =~ /\[/; $regex =~ s%\\\*%[^/]*%g; $regex =~ s%\\\?%[^/]%g; $regex .= '/?'; } $found = grep { /^$regex\z/ } keys %$all_files; } else { $found = $all_files->{$realfile} || $all_files->{"$realfile/"}; } unless ($found) { tag 'doc-base-file-references-missing-file', "$dbfile:$line", $file; } } undef @files; # Format field. } elsif ($field eq 'format') { my $format = join(' ', @$vals); strip($format); $format = lc $format; tag 'doc-base-file-unknown-format', "$dbfile:$line", $format unless $known_doc_base_formats{$format}; tag 'doc-base-file-duplicated-format', "$dbfile:$line", $format if $sawformats->{$format}; $sawformats->{$format} = 1; # Save the current format for the later section check. $sawformats->{' *current* '} = $format; # Document field. } elsif ($field eq 'document') { $_ = join(' ', @$vals); tag 'doc-base-invalid-document-field', "$dbfile:$line", $_ unless /^[a-z0-9+.-]+$/; tag 'doc-base-document-field-ends-in-whitespace', "$dbfile:$line" if /[ \t]$/; tag 'doc-base-document-field-not-in-first-line', "$dbfile:$line" unless $line == 1; # Title field. } elsif ($field eq 'title') { if (@$vals) { check_spelling( 'spelling-error-in-doc-base-title-field', join(' ', @$vals), "$dbfile:$line",$group->info->spelling_exceptions ); check_spelling_picky( 'spelling-error-in-doc-base-title-field', join(' ', @$vals), "$dbfile:$line" ); } # Section field. } elsif ($field eq 'section') { $_ = join(' ', @$vals); unless ($SECTIONS->known($_)) { if (m,^App(?:lication)?s/(.+)$, and $SECTIONS->known($1)) { tag 'doc-base-uses-applications-section', "$dbfile:$line", $_; } elsif (m,^(.+)/(?:[^/]+)$, and $SECTIONS->known($1)) { # allows creating a new subsection to a known section } else { tag 'doc-base-unknown-section', "$dbfile:$line", $_; } } # Abstract field. } elsif ($field eq 'abstract') { # The three following variables are used for checking if the field is # correctly phrased. We detect if each line (except for the first # line and lines containing single dot) of the field starts with the # same number of spaces, not followed by the same non-space character, # and the number of spaces is > 1. # # We try to match fields like this: # ||Abstract: The Boost web site provides free peer-reviewed portable # || C++ source libraries. The emphasis is on libraries which work # || well with the C++ Standard Library. One goal is to establish # # but not like this: # ||Abstract: This is "Ding" # || * a dictionary lookup program for Unix, # || * DIctionary Nice Grep, my $leadsp = undef; # string with leading spaces from second line my $charafter = undef; # first non-whitespace char of second line my $leadsp_ok = 1; # are spaces OK? # Intentionally skipping the first line. for my $idx (1 .. $#{$vals}) { $_ = $vals->[$idx]; if (/manage\s+online\s+manuals\s.*Debian/o) { tag 'doc-base-abstract-field-is-template', "$dbfile:$line" unless $pkg eq 'doc-base'; } elsif (/^(\s+)\.(\s*)$/o and ($1 ne ' ' or $2)) { tag 'doc-base-abstract-field-separator-extra-whitespace', "$dbfile:" . ($line - $#{$vals} + $idx); } elsif (!$leadsp && /^(\s+)(\S)/o) { # The regexp should always match. ($leadsp, $charafter) = ($1, $2); $leadsp_ok = $leadsp eq ' '; } elsif (!$leadsp_ok && /^(\s+)(\S)/o) { # The regexp should always match. undef $charafter if $charafter && $charafter ne $2; $leadsp_ok = 1 if ($1 ne $leadsp) || ($1 eq $leadsp && $charafter); } } unless ($leadsp_ok) { tag 'doc-base-abstract-might-contain-extra-leading-whitespace', "$dbfile:$line"; } # Check spelling. if (@$vals) { check_spelling( 'spelling-error-in-doc-base-abstract-field', join(' ', @$vals), "$dbfile:$line",$group->info->spelling_exceptions ); check_spelling_picky( 'spelling-error-in-doc-base-abstract-field', join(' ', @$vals), "$dbfile:$line" ); } } return; } # Checks the section of the doc-base control file. Tries to find required # fields missing in the section. sub check_doc_base_file_section { my ($dbfile, $line, $sawfields, $sawformats, $knownfields) = @_; tag 'doc-base-file-no-format', "$dbfile:$line" if ((defined $sawfields->{'files'} || defined $sawfields->{'index'}) && !(defined $sawfields->{'format'})); # The current format is set by check_doc_base_field. if ($sawfields->{'format'}) { my $format = $sawformats->{' *current* '}; tag 'doc-base-file-no-index', "$dbfile:$line" if ( $format && ($format eq 'html' || $format eq 'info') && !$sawfields->{'index'}); } for my $field (sort keys %$knownfields) { tag 'doc-base-file-lacks-required-field', "$dbfile:$line", $field if ($knownfields->{$field} == 1 && !$sawfields->{$field}); } return; } # Add file and link to $all_files and $all_links. Note that both files and # links have to include a leading /. sub add_file_link_info { my ($info, $file, $all_files, $all_links) = @_; my $link = $info->index($file)->link; my $ishard = $info->index($file)->is_hardlink; $file = '/' . $file if (not $file =~ m%^/%); # make file absolute $file =~ s%/+%/%g; # remove duplicated `/' $all_files->{$file} = 1; if (defined $link) { $link = './' . $link if $link !~ m,^/,; if ($ishard) { $link =~ s,^\./,/,; } elsif (not $link =~ m,^/,) { # not absolute link $link = '/' . $link; # make sure link starts with '/' $link =~ s,/+\./+,/,g; # remove all /./ parts my $dcount = 1; while ($link =~ s,^/+\.\./+,/,) { #\ count & remove $dcount++; #/ any leading /../ parts } my $f = $file; while ($dcount--) { #\ remove last $dcount $f =~ s,/[^/]*$,,; #/ path components from $file } $link = $f. $link; # now we should have absolute link } $all_links->{$file} = $link unless ($link eq $file); } return; } # Dereference all symlinks in file. sub delink { my ($file, $all_links) = @_; $file =~ s%/+%/%g; # remove duplicated '/' return $file unless %$all_links; # package doesn't symlinks my $p1 = ''; my $p2 = $file; my %used_links = (); # In the loop below we split $file into two parts on each '/' until # there's no remaining slashes. We try substituting the first part with # corresponding symlink and if it succeedes, we start the procedure from # beginning. # # Example: # Let $all_links{"/a/b"} == "/d", and $file == "/a/b/c" # Then 0) $p1 == "", $p2 == "/a/b/c" # 1) $p1 == "/a", $p2 == "/b/c" # 2) $p1 == "/a/b", $p2 == "/c" ; substitute "/d" for "/a/b" # 3) $p1 == "", $p2 == "/d/c" # 4) $p1 == "/d", $p2 == "/c" # 5) $p1 == "/d/c", $p2 == "" # # Note that the algorithm supposes, that # i) $all_links{$X} != $X for each $X # ii) both keys and values of %all_links start with '/' while (($p2 =~ s%^(/[^/]*)%%g) > 0) { $p1 .= $1; if (defined $all_links->{$p1}) { return '!!! SYMLINK LOOP !!!' if defined $used_links{$p1}; $p2 = $all_links->{$p1} . $p2; $p1 = ''; $used_links{$p1} = 1; } } # After the loop $p2 should be empty and $p1 should contain the target # file. In some rare cases when $file contains no slashes, $p1 will be # empty and $p2 will contain the result (which will be equal to $file). return $p1 ne '' ? $p1 : $p2; } sub check_script { my ($pkg, $spath, $script, $pres) = @_; my ($no_check_menu, $no_check_installdocs, $interp); # control files are regular files and not symlinks, pipes etc. return if -l $spath or not -f $spath; open(my $fd, '<', $spath); $interp = <$fd>; $interp = '' unless defined $interp; if ($interp =~ m,^\#\!\s*/bin/$known_shells_regex,) { $interp = 'sh'; } elsif ($interp =~ m,^\#\!\s*/usr/bin/perl,) { $interp = 'perl'; } else { if ($interp =~ m,^\#\!\s*(.+),) { $interp = $1; } else { # hmm, doesn't seem to start with #! # is it a binary? look for ELF header if ($interp =~ m/^\177ELF/) { return; # nothing to do here } $interp = 'unknown'; } } while (<$fd>) { # skip comments s/\#.*$//o; ## # update-menus will satisfy the checks that the menu file # installed is properly used ## # does the script check whether update-menus exists? if ( /-x\s+\S*update-menus/o or /(?:which|type)\s+update-menus/o or /command\s+.*?update-menus/o) { # yes, it does. $pres->{'checks-for-updatemenus'} = 1; } # does the script call update-menus? # TODO this regex-magic should be moved to some lib for checking # whether a certain word is likely called as command... --Jeroen if ( m{ (?:^\s*|[;&|]\s*|(?:then|do|exec)\s+) (?:\/usr\/bin\/)?update-menus (?:\s|[;&|<>]|\Z)}xsm ) { # yes, it does. $pres->{'calls-updatemenus'} = 1; # checked first? if (not $pres->{'checks-for-updatemenus'} and $pkg ne 'menu') { #<<< no perltidy - tag name too long tag 'maintainer-script-does-not-check-for-existence-of-updatemenus', #>>> "$script:$." unless $no_check_menu++; } } # does the script check whether install-docs exists? if ( s/-x\s+\S*install-docs//o or /(?:which|type)\s+install-docs/o or s/command\s+.*?install-docs//o) { # yes, it does. $pres->{'checks-for-installdocs'} = 1; } # does the script call install-docs? if ( m{ (?:^\s*|[;&|]\s*|(?:then|do)\s+) (?:\/usr\/sbin\/)?install-docs (?:\s|[;&|<>]|\Z) }xsm ) { # yes, it does. Does it remove or add a doc? if (m/install-docs\s+(?:-r|--remove)\s/) { $pres->{'calls-installdocs-r'} = 1; } else { $pres->{'calls-installdocs'} = 1; } # checked first? if (not $pres->{'checks-for-installdocs'}) { #<<< no perltidy - tag name too long tag 'maintainer-script-does-not-check-for-existence-of-installdocs', #>>> $script unless $no_check_installdocs++; } } } close($fd); return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/testsuite.pm0000664000000000000000000001113312311317622015300 0ustar # testsuite -- lintian check script -*- perl -*- # Copyright (C) 2013 Nicolas Boulenguez # This file is part of lintian. # Lintian 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 3 of the License, or # (at your option) any later version. # Lintian 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 Lintian. If not, see . package Lintian::testsuite; use strict; use warnings; use autodie; use Lintian::Tags qw(tag); use Lintian::Util qw( file_is_encoded_in_non_utf8 read_dpkg_control ); my @MANDATORY_FIELDS = qw( tests ); my %KNOWN_FIELDS = map { $_ => 1 } qw( tests restrictions features depends tests-directory ); my %KNOWN_FEATURES = map { $_ => 1 } qw( ); my %KNOWN_RESTRICTIONS = map { $_ => 1 } qw( allow-stderr breaks-testbed build-needed needs-root rw-build-tree ); sub run { my ($pkg, $type, $info) = @_; my $testsuite = $info->field('testsuite'); my $control = $info->index('debian/tests/control'); if (defined($testsuite) xor defined($control)) { tag 'inconsistent-testsuite-field'; } if (defined($testsuite) and $testsuite ne 'autopkgtest') { tag 'unknown-testsuite', $testsuite; } if (defined($control)) { if (not $control->is_regular_file) { tag 'debian-tests-control-is-not-a-regular-file'; } else { # Since $control is defined, we know that none of the # parent segments (i.e. debian and debian/tests) were # symlinks. With the "is_regular_file" test above we know # that the file itself is not a symlink. These two facts # _combined_ means we can skip the is_ancestor_of check # here. my $path = $info->unpacked($control); my $not_utf8_line = file_is_encoded_in_non_utf8($path); if ($not_utf8_line) { tag 'debian-tests-control-uses-national-encoding', "at line $not_utf8_line"; } check_control_contents($info, $path); } } return; } sub check_control_contents { my ($info, $path) = @_; my @paragraphs; if (not eval { @paragraphs = read_dpkg_control($path); }) { chomp $@; $@ =~ s/^syntax error at //; tag 'syntax-error-in-debian-tests-control', $@; } else { for my $paragraph (@paragraphs) { check_control_paragraph($info, $paragraph); } } return; } sub check_control_paragraph { my ($info, $paragraph) = @_; for my $fieldname (@MANDATORY_FIELDS) { if (not exists $paragraph->{$fieldname}) { tag 'missing-runtime-tests-field', $fieldname; } } for my $fieldname (sort(keys(%{$paragraph}))) { if (not exists $KNOWN_FIELDS{$fieldname}) { tag 'unknown-runtime-tests-field', $fieldname; } } if (exists $paragraph->{'features'}) { for my $feature (split(' ', $paragraph->{'features'})) { if (not exists $KNOWN_FEATURES{$feature}) { tag 'unknown-runtime-tests-feature', $feature; } } } if (exists $paragraph->{'restrictions'}) { for my $restriction (split ' ', $paragraph->{'restrictions'}) { if (not exists $KNOWN_RESTRICTIONS{$restriction}) { tag 'unknown-runtime-tests-restriction', $restriction; } } } if (exists $paragraph->{'tests'}) { my $directory = 'debian/tests'; if (exists $paragraph->{'tests-directory'}) { $directory = $paragraph->{'tests-directory'}; } for my $testname (split(' ', $paragraph->{'tests'})) { check_test_file($info, $directory, $testname); } } return; } sub check_test_file { my ($info, $directory, $name) = @_; my $path = "$directory/$name"; my $index = $info->index($path); if ($name !~ m{^ [ [:alnum:] \+ \- \. / ]++ $}xsm) { tag 'illegal-runtime-test-name', $name; } if (not defined($index)) { tag 'missing-runtime-test-file', $path; } elsif (not $index->is_regular_file) { tag 'runtime-test-file-is-not-a-regular-file', $path; } # Test files are allowed not to be executable. return; } 1; lintian-2.5.22ubuntu1/checks/java.desc0000664000000000000000000000771012310413144014473 0ustar Check-Script: java Author: Vincent Fourmond Abbrev: java Type: binary Needs-Info: java-info, index Info: This script checks if the packages comply with various aspects of the debian Java policy. Tag: classpath-contains-relative-path Severity: normal Certainty: possible Info: The classpath listed in the jar file refers to a potential missing jar file. This could be the remnants of a build-time classpath that are not relevant for a JAR bundled in a Debian package. . Alternatively, the classpath may be correct, but the package is lacking a jar file or a symlink to it. . Note, Lintian assumes that all (relative) classpaths pointing to /usr/share/java/ (but not subdirs thereof) are satisfied by dependencies as long as there is at least one strong libX-java dependency. Tag: jar-not-in-usr-share Severity: normal Certainty: possible Ref: java-policy 2.2, java-policy 2.3 Info: The classpath listed in some of the files references files outside of /usr/share, while all installed JAR files must be within /usr/share/java for libraries or /usr/share/package for JARs for private use. . The rationale is that jar files are in almost all cases architecture independent and therefore should be in /usr/share. If the jar file is truly architecture dependent or it cannot be moved since symlinked jar files are not accepted by the application, then please override this tag. Tag: executable-jar-without-main-class Severity: serious Certainty: certain Ref: java-policy 2.2 Info: An executable JAR must have a Main-Class set in its manifest. Tag: missing-dep-on-jarwrapper Severity: serious Certainty: certain Ref: java-policy 2.2 Info: Packages containing an executable JAR must depend on jarwrapper or other packages providing similar functionalities. Tag: missing-classpath Severity: normal Certainty: possible Info: None of the jar files contained in the package declare a Class-Path in their manifest, but the package depends on at least one java library. That means that either the dependency is not needed or at least one of the JARs should include a classpath. . It is important to keep the classpath up-to-date to allow the automatic detection of dependencies at run time. Having a Class-Path element in the manifest allows for painless transitions if the class path of the dependencies of the library ever changes. . Failing to do that means that for every change in class path, all rdepends must update their wrapper scripts, which is a lot of work for nothing. Tag: javalib-but-no-public-jars Severity: minor Certainty: possible Info: The name of the package suggests that it contains a java library but it does not contain any JAR file in /usr/share/java, while the java policy mandates that JAR files outside /usr/share/java are for private use. Tag: missing-manifest Severity: minor Certainty: possible Info: The jar file contains .class files but no manifest. This may indicate a build misconfiguration. Tag: codeless-jar Severity: normal Certainty: certain Info: The jar file contains a manifest but no code. This probably indicates that something went wrong at build-time. Tag: incompatible-java-bytecode-format Severity: normal Certainty: possible Info: The package contains Java class files with a minimum requirement on the listed Java version. This Java version is not supported by the default JVM in Debian and is therefore likely to be a mistake. Ref: #673276 Tag: unknown-java-class-version Severity: normal Certainty: certain Info: The package contains a Jar file with Java class files compiled for an unknown Java version. Most likely the class file is corrupt or compiled for a newer version of Java than Lintian knows about. In the latter case, please file a bug against Lintian. . Latest class version known by Lintian is Java7 (Major version 51). Tag: zip-parse-error Severity: normal Certainty: certain Info: The package contains a Jar file, but Lintian is unable to parse it. It is possible that the Jar file is corrupt. lintian-2.5.22ubuntu1/checks/menu-format.pm0000664000000000000000000006400112311317613015503 0ustar # menu format -- lintian check script -*- perl -*- # Copyright (C) 1998 by Joey Hess # # 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. # This script also checks desktop entries, since they share quite a bit of # code. At some point, it would make sense to try to refactor this so that # shared code is in libraries. # # Further things that the desktop file validation should be checking: # # - Encoding of the file should be UTF-8. # - Additional Categories should be associated with Main Categories. # - List entries (MimeType, Categories) should end with a semicolon. # - Check for GNOME/GTK/X11/etc. dependencies and require the relevant # Additional Category to be present. # - Check all the escape characters supported by Exec. # - Review desktop-file-validate to see what else we're missing. package Lintian::menu_format; use strict; use warnings; use autodie; use File::Basename; use List::MoreUtils qw(any); use Lintian::Data; use Lintian::Tags qw(tag); use Lintian::Util qw(is_ancestor_of); # This is a list of all tags that should be in every menu item. my @req_tags = qw(needs section title command); # This is a list of all known tags. my @known_tags = qw( needs section title sort command longtitle icon icon16x16 icon32x32 description hotkey hints ); # These 'needs' tags are always valid, no matter the context, and no other # values are valid outside the Window Managers context (don't include wm here, # in other words). It's case insensitive, use lower case here. my @needs_tag_vals = qw(x11 text vc); sub _menu_sections { my ($key, $val, $cur) = @_; my $ret = undef; $ret = $cur = {} unless defined $cur; # $val is empty if this is just a root section $cur->{$val} = 1 if $val; return $ret; } my $MENU_SECTIONS = Lintian::Data->new('menu-format/menu-sections',qr|/|, \&_menu_sections); # Authorative source of desktop keys: # http://standards.freedesktop.org/desktop-entry-spec/1.0/ # # This is a list of all keys that should be in every desktop entry. my @req_desktop_keys = qw(Type Name); # This is a list of all known keys. my %known_desktop_keys = map { $_ => 1 } qw( Type Version Name GenericName NoDisplay Comment Icon Hidden Keywords OnlyShowIn NotShowIn TryExec Exec Path Terminal MimeType Categories MimeType Categories StartupNotify StartupWMClass URL ); my %deprecated_desktop_keys = map { $_ => 1 } qw( Encoding MiniIcon TerminalOptions Protocols Extensions BinaryPattern MapNotify SwallowTitle SwallowExec SortOrder FilePattern ); # KDE uses some additional keys that should start with X-KDE but don't for # historical reasons. Actions will in theory be in a later version of the # standard (it's not mentioned in the current standard, but is implemented by # KDE and widely used). my %kde_desktop_keys = map { $_ => 1 } qw( ServiceTypes DocPath Keywords InitialPreference Dev FSType MountPoint ReadOnly UnmountIcon Actions ); # Known types of desktop entries. # http://standards.freedesktop.org/desktop-entry-spec/1.0/ar01s05.html my %known_desktop_types = map { $_ => 1 } qw( Application Link Directory ); # Authorative source of desktop categories: # http://standards.freedesktop.org/menu-spec/1.0/apa.html # This is a list of all Main Categories for .desktop files. Application is # added as an exception; it's not listed in the standard, but it's widely used # and used as an example in the GNOME documentation. GNUstep is added as an # exception since it's used by GNUstep packages. my %main_categories = map { $_ => 1 } qw( AudioVideo Audio Video Development Education Game Graphics Network Office Science Settings System Utility Application GNUstep ); # This is a list of all Additional Categories for .desktop files. Ideally we # should be checking to be sure the associated Main Categories are present, # but we don't have support for that yet. my $ADD_CATEGORIES = Lintian::Data->new('menu-format/add-categories'); # This is a list of Reserved Categories for .desktop files. To use one of # these, the desktop entry must also have an OnlyShowIn key limiting the # environment to one that supports this category. my %reserved_categories = map { $_ => 1 } qw( Screensaver TrayIcon Applet Shell ); # Path in which to search for binaries referenced in menu entries. These must # not have leading slashes. my @path = qw(usr/local/bin/ usr/bin/ bin/ usr/X11R6/bin/ usr/games/); my %known_tags_hash = map { $_ => 1 } @known_tags; my %needs_tag_vals_hash = map { $_ => 1 } @needs_tag_vals; # ----------------------------------- sub run { my ($pkg, $type, $info, $proc, $group) = @_; my $mdir = $info->lab_data_path('menu'); my @menufiles; for my $dir ("$mdir/lib", "$mdir/share") { opendir(my $dirfd, $dir); push(@menufiles, map { "$dir/$_" } readdir($dirfd)); closedir($dirfd); } # Find the desktop files in the package for verification. my @desktop_files; foreach my $file ($info->sorted_index) { my $operm = $file->operm; tag 'deprecated-kdelnk-file', $file if ($file =~ m,\.kdelnk$,); if ( $file->is_file && $file =~ m,^usr/share/applications/.*\.desktop$,) { if ($operm & 0111) { tag 'executable-desktop-file', sprintf('%s %04o',$file,$operm); } unless ($file =~ m,template,o) { push(@desktop_files, $file); } } } # Verify all the desktop files. for my $desktop_file (@desktop_files) { verify_desktop_file($desktop_file, $desktop_file, $pkg, $info); } # Now all the menu files. foreach my $menufile (@menufiles) { next if -x $menufile; # don't try to parse executables my $basename = basename $menufile; my $fullname = "usr/share/menu/$basename"; $fullname = "usr/lib/menu/$basename" if $menufile =~ m,^\Q$mdir\E/lib/,; next if $basename eq 'README'; # README is a special case next if !is_ancestor_of($mdir, $menufile); my $menufile_line =''; open(my $fd, '<', $menufile); # line below is commented out in favour of the while loop # do { $_=; } while defined && (m/^\s* \#/ || m/^\s*$/); while (<$fd>) { if (m/^\s*\#/ || m/^\s*$/) { next; } else { $menufile_line = $_; last; } } # Check first line of file to see if it matches the old menu # file format. if ($menufile_line =~ m/^(?!\?package\(.*\)).* .* .* .* "?.*"? .*$/o) { tag 'old-format-menu-file', $fullname; close($fd); next; } elsif ($menufile_line =~ m/^!C\s*menu-2/o) { # we can't parse that yet close($fd); next; } # Parse entire file as a new format menu file. my $line=''; my $lc=0; do { $lc++; # Ignore lines that are comments. if ($menufile_line =~ m/^\s*\#/o) { next; } $line .= $menufile_line; # Note that I allow whitespace after the continuation character. # This is caught by verify_line(). if (!($menufile_line =~ m/\\\s*?$/)) { verify_line( $pkg, $info, $proc, $group, $type, $menufile, $fullname, $line, $lc ); $line=''; } } while ($menufile_line = <$fd>); verify_line( $pkg, $info, $proc, $group, $type, $menufile, $fullname, $line, $lc ); close($fd); } return; } # ----------------------------------- # Pass this a line of a menu file, it sanitizes it and # verifies that it is correct. sub verify_line { my ( $pkg, $info, $proc, $group, $type, $menufile, $fullname, $line, $linecount ) = @_; my %vals; chomp $line; # Replace all line continuation characters with whitespace. # (do not remove them completely, because update-menus doesn't) $line =~ s/\\\n/ /mgo; # This is in here to fix a common mistake: whitespace after a '\' # character. if ($line =~ s/\\\s+\n/ /mgo) { tag 'whitespace-after-continuation-character', "$fullname:$linecount"; } # Ignore lines that are all whitespace or empty. return if $line =~ m/^\s*$/o; # Ignore lines that are comments. return if $line =~ m/^\s*\#/o; # Start by testing the package check. if (not $line =~ m/^\?package\((.*?)\):/o) { tag 'bad-test-in-menu-item', "$fullname:$linecount"; return; } my $pkg_test = $1; my %tested_packages = map { $_ => 1 } split(/\s*,\s*/, $pkg_test); my $tested_packages = scalar keys %tested_packages; unless (exists $tested_packages{$pkg}) { tag 'pkg-not-in-package-test', "$pkg_test $fullname"; } $line =~ s/^\?package\(.*?\)://; # Now collect all the tag=value pairs. I've heavily commented # the killer regexp that's responsible. # # The basic idea here is we start at the beginning of the line. # Each loop pulls off one tag=value pair and advances to the next # when we have no more matches, there should be no text left on # the line - if there is, it's a parse error. while ( $line =~ m/ \s*? # allow whitespace between pairs ( # capture what follows in $1, it's our tag [^\"\s=] # a non-quote, non-whitespace, character * # match as many as we can ) = ( # capture what follows in $2, it's our value (?: \" # this is a quoted string (?: \\. # any quoted character | # or [^\"] # a non-quote character ) * # repeat as many times as possible \" # end of the quoted value string ) | # the other possibility is a non-quoted string (?: [^\"\s] # a non-quote, non-whitespace character * # match as many times as we can ) ) /ogcx ) { my $tag = $1; my $value = $2; if (exists $vals{$tag}) { tag 'duplicated-tag-in-menu-item', "$fullname $1:$linecount"; } # If the value was quoted, remove those quotes. if ($value =~ m/^\"(.*)\"$/) { $value = $1; } else { tag 'unquoted-string-in-menu-item', "$fullname $1:$linecount"; } # If the value has escaped characters, remove the # escapes. $value =~ s/\\(.)/$1/g; $vals{$tag} = $value; } # This is not really a no-op. Note the use of the /c # switch - this makes perl keep track of the current # search position. Notice, we did it above in the loop, # too. (I have a /g here just so the /c takes affect.) # We use this below when we look at how far along in the # string we matched. So the point of this line is to allow # trailing whitespace on the end of a line. $line =~ m/\s*/ogc; # If that loop didn't match up to end of line, we have a # problem.. if (pos($line) < length($line)) { tag 'unparsable-menu-item', "$fullname:$linecount"; # Give up now, before things just blow up in our face. return; } # Now validate the data in the menu file. # Test for important tags. foreach my $tag (@req_tags) { unless (exists($vals{$tag}) && defined($vals{$tag})) { tag 'menu-item-missing-required-tag', "$tag $fullname:$linecount"; # Just give up right away, if such an essential tag is missing, # chance is high the rest doesn't make sense either. And now all # following checks can assume those tags to be there return; } } # Make sure all tags are known. foreach my $tag (keys %vals) { if (!$known_tags_hash{$tag}) { tag 'menu-item-contains-unknown-tag', "$tag $fullname:$linecount"; } } # Sanitize the section tag my $section = $vals{'section'}; $section =~ tr:/:/:s; # eliminate duplicate slashes. # Hallo emacs ;; $section =~ s:/$:: # remove trailing slash unless $section eq '/'; # - except if $section is '/' # Be sure the command is provided by the package. my ($okay, $command) = verify_cmd($fullname, $linecount, $vals{'command'},$pkg, $info); tag 'menu-command-not-in-package', "$fullname:$linecount $command" unless ($okay or not $command or ($tested_packages >= 2) or ($section =~ m:^(WindowManagers/Modules|FVWM Modules|Window Maker):)); if (exists($vals{'icon'})) { verify_icon($info, $proc, $group, $menufile, $fullname, $linecount, $vals{'icon'}, 32); } if (exists($vals{'icon32x32'})) { verify_icon($info, $proc, $group, $menufile, $fullname, $linecount, $vals{'icon32x32'}, 32); } if (exists($vals{'icon16x16'})) { verify_icon($info, $proc, $group, $menufile, $fullname, $linecount, $vals{'icon16x16'}, 16); } # Check the needs tag. my $needs = lc($vals{'needs'}); # needs is case insensitive. if ($section =~ m:^(WindowManagers/Modules|FVWM Modules|Window Maker):) { # WM/Modules: needs must not be the regular ones nor wm if ($needs_tag_vals_hash{$needs} or $needs eq 'wm') { tag 'non-wm-module-in-wm-modules-menu-section', "$needs $fullname:$linecount"; } } elsif ($section =~ m:^Window ?Managers:) { # Other WM sections: needs must be wm if ($needs ne 'wm') { tag 'non-wm-in-windowmanager-menu-section', "$needs $fullname:$linecount"; } } else { # Any other section: just only the general ones if ($needs eq 'dwww') { tag 'menu-item-needs-dwww', "$fullname:$linecount"; } elsif (not $needs_tag_vals_hash{$needs}) { tag 'menu-item-needs-tag-has-unknown-value', "$needs $fullname:$linecount"; } } # Check the section tag # Check for historical changes in the section tree. if ($section =~ m:^Apps/Games:) { tag 'menu-item-uses-apps-games-section', "$fullname:$linecount"; $section =~ s:^Apps/::; } if ($section =~ m:^Apps/:) { tag 'menu-item-uses-apps-section', "$fullname:$linecount"; $section =~ s:^Apps/:Applications/:; } if ($section =~ m:^WindowManagers:) { tag 'menu-item-uses-windowmanagers-section', "$fullname:$linecount"; $section =~ s:^WindowManagers:Window Managers:; } # Check for Evil new root sections. my ($rootsec, $sect) = split m:/:, $section, 2; my $root_data = $MENU_SECTIONS->value($rootsec); if (not defined $root_data) { if (not $rootsec =~ m/$pkg/i) { tag 'menu-item-creates-new-root-section', "$rootsec $fullname:$linecount"; } } else { my $ok = 1; if ($sect) { # Using unknown subsection of $rootsec? $ok = 0 if not exists $root_data->{$sect}; } else { # Using root menu when a subsection exists? $ok = 0 if %$root_data; } unless ($ok) { tag 'menu-item-creates-new-section', "$vals{section} $fullname:$linecount"; } } return; } sub verify_icon { my ($info, $proc, $group, $menufile, $fullname, $linecount, $icon, $size) = @_; if ($icon eq 'none') { tag 'menu-item-uses-icon-none', "$fullname:$linecount"; return; } tag 'menu-icon-uses-relative-path', $icon unless $icon =~ m,^/,; $icon =~ s|^/*||og; if (not($icon =~ m/\.xpm$/i)) { tag 'menu-icon-not-in-xpm-format', $icon; return; } # Try the explicit location, and if that fails, try the standard path. my $pkgroot = $info->unpacked; my $iconfile = $info->unpacked($icon); if (!-f $iconfile) { $iconfile = $info->unpacked("usr/share/pixmaps/$icon"); if (!-f $iconfile) { my $ginfo = $group->info; foreach my $depproc (@{ $ginfo->direct_dependencies($proc) }) { my $dinfo = $depproc->info; $pkgroot = $dinfo->unpacked; $iconfile = $dinfo->unpacked($icon); last if -f $iconfile; $iconfile = $info->unpacked("usr/share/pixmaps/$icon"); last if -f $iconfile; } } } # Last stat is a -f from above, reuse it if (-e _) { if (!is_ancestor_of($pkgroot, $iconfile)) { # unsafe symlink return; } } else { tag 'menu-icon-missing', $icon; return; } my $parse = 'XPM header'; my $line; open(my $fd, '<', $iconfile); do { defined($line = <$fd>) or goto parse_error; } until ($line =~ /\/\*\s*XPM\s*\*\//); $parse = 'size line'; do { defined($line = <$fd>) or goto parse_error; } until ($line =~ /"\s*([0-9]+)\s*([0-9]+)\s*([0-9]+)\s*([0-9]+)\s*"/); my $width = $1 + 0; my $height = $2 + 0; my $numcolours = $3 + 0; my $cpp = $4 + 0; if ($width > $size || $height > $size) { tag 'menu-icon-too-big', "$icon: ${width}x${height} > ${size}x${size}"; } close($fd) or die; return; parse_error: close($fd) or die; tag 'menu-icon-cannot-be-parsed', "$icon: looking for $parse"; return; } # Syntax-checks a .desktop file. sub verify_desktop_file { my ($desktopfile, $file, $pkg, $info) = @_; my ($line, $saw_first, $warned_cr); my %vals; my @pending; open(my $fd, '<', $info->unpacked($file)); while (defined($line = <$fd>)) { chomp $line; next if ($line =~ m/^\s*\#/ or $line =~ m/^\s*$/); if ($line =~ s/\r//) { tag 'desktop-entry-file-has-crs', "$file:$." unless $warned_cr; $warned_cr = 1; } # Err on the side of caution for now. If the first non-comment line # is not the required [Desktop Entry] group, ignore this file. Also # ignore any keys in other groups. last if ($saw_first and $line =~ /^\[(.*)\]\s*$/); unless ($saw_first) { return unless $line =~ /^\[(KDE )?Desktop Entry\]\s*$/; $saw_first = 1; tag 'desktop-contains-deprecated-header', "$file:$." if ($line =~ /^\[KDE Desktop Entry\]\s*$/); } # Tag = Value. For most errors, just add the error to pending rather # than warning on it immediately since we want to not warn on tag # errors if we didn't know the file type. # # TODO: We do not check for properly formatted localised values for # keys but might be worth checking if they are properly formatted (not # their value) if ($line =~ /^(.*?)\s*=\s*(.*)$/) { my ($tag, $value) = ($1, $2); my $basetag = $tag; my ($encoding) = ($basetag =~ s/\[([^\]]+)\]$//); if (exists $vals{$tag}) { tag 'duplicated-key-in-desktop-entry', "$file:$. $tag"; } elsif ($deprecated_desktop_keys{$basetag}) { if ($basetag eq 'Encoding') { push( @pending, [ 'desktop-entry-contains-encoding-key', "$file:$. $tag" ]); } else { push( @pending, [ 'desktop-entry-contains-deprecated-key', "$file:$. $tag" ]); } } elsif (not $known_desktop_keys{$basetag} and not $kde_desktop_keys{$basetag} and not $basetag =~ /^X-/) { push(@pending, ['desktop-entry-contains-unknown-key', "$file:$. $tag"]); } $vals{$tag} = $value; } } close($fd); # Now validate the data in the desktop file, but only if it's a known type. return unless ($vals{'Type'} and $known_desktop_types{$vals{'Type'}}); # Now we can issue any pending tags. for my $pending (@pending) { tag @$pending; } # Test for important keys. for my $tag (@req_desktop_keys) { unless (defined $vals{$tag}) { tag 'desktop-entry-missing-required-key', "$file $tag"; } } # test if missing Keywords (only if NoDisplay is not set) if (!defined $vals{NoDisplay}) { if (!defined $vals{Keywords}) { tag 'desktop-entry-lacks-keywords-entry', $file; } } # Only test whether the binary is in the package if the desktop file is # directly under /usr/share/applications. Too many applications use # desktop files for other purposes with custom paths. # # TODO: Should check quoting and the check special field # codes in Exec for desktop files. if ( $file =~ m,^usr/share/applications/, and $vals{'Exec'} and $vals{'Exec'} =~ /\S/) { my ($okay, $command) = verify_cmd($file->name, undef, $vals{'Exec'}, $pkg,$info); tag 'desktop-command-not-in-package', $file, $command unless $okay or $command eq 'kcmshell'; } # Check the Category tag. my $in_reserved; if (defined $vals{'Categories'}) { my @cats = split(';', $vals{'Categories'}); my $saw_main; for my $cat (@cats) { next if $cat =~ /^X-/; if ($reserved_categories{$cat}) { tag 'desktop-entry-uses-reserved-category', "$cat $file" unless $vals{'OnlyShowIn'}; $saw_main = 1; $in_reserved = 1; } elsif (not $ADD_CATEGORIES->known($cat) and not $main_categories{$cat}) { tag 'desktop-entry-invalid-category', "$cat $file"; } elsif ($main_categories{$cat}) { $saw_main = 1; } } unless ($saw_main) { tag 'desktop-entry-lacks-main-category', $file; } } # Check the OnlyShowIn tag. If this is not an application in a reserved # category, warn about any desktop entry that specifies OnlyShowIn for # more than one environment. In that case, the application probably # should be using NotShowIn instead. if (defined $vals{OnlyShowIn} and not $in_reserved) { my @envs = split(';', $vals{OnlyShowIn}); if (@envs > 1) { tag 'desktop-entry-limited-to-environments', $file; } } return; } # Verify whether a command is shipped as part of the package. Takes the full # path to the file being checked (for error reporting) and the binary. # Returns a list whose first member is true if the command is present and # false otherwise, and whose second member is the command (minus any leading # su-to-root wrapper). Shared between the desktop and menu code. sub verify_cmd { my ($file, $line, $exec, $pkg, $info) = @_; my $location = ($line ? "$file:$line" : $file); # This routine handles su wrappers. The option parsing here is ugly and # dead-simple, but it's hopefully good enough for what will show up in # desktop files. su-to-root and sux require -c options, kdesu optionally # allows one, and gksu has the command at the end of its arguments. my @com = split(' ', $exec); my $cmd; if ($com[0] and $com[0] eq '/usr/sbin/su-to-root') { tag 'su-to-root-with-usr-sbin', $location; } if ( $com[0] and $com[0] =~ m,^(?:/usr/s?bin/)?(su-to-root|gksu|kdesu|sux)$,) { my $wrapper = $1; shift @com; while (@com) { unless ($com[0]) { shift @com; next; } if ($com[0] eq '-c') { $cmd = $com[1]; last; } elsif ($com[0] =~ /^-[Dfmupi]|^--(user|description|message)/) { shift @com; shift @com; } elsif ($com[0] =~ /^-/) { shift @com; } else { last; } } if (!$cmd && $wrapper =~ /^(gk|kde)su$/) { if (@com) { $cmd = $com[0]; } else { $cmd = $wrapper; undef $wrapper; } } tag 'su-wrapper-without--c', "$location $wrapper" unless $cmd; if ($wrapper && $wrapper !~ /su-to-root/ && $wrapper ne $pkg) { tag 'su-wrapper-not-su-to-root', "$location $wrapper"; } } else { $cmd = $com[0]; } my $cmd_file = $cmd; if ($cmd_file) { $cmd_file =~ s,^/,,; } my $okay = $cmd && ( $cmd =~ /^[\'\"]/ || $info->index($cmd_file) || $cmd =~ m,^(/bin/)?sh, || $cmd =~ m,^(/usr/bin/)?sensible-(pager|editor|browser), || any { $info->index($_ . $cmd) } @path); return ($okay, $cmd_file); } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/menus.desc0000664000000000000000000003000112310413144014666 0ustar Check-Script: menus Author: Christian Schwarz Abbrev: men Type: binary Info: Check if a binary package conforms to policy with respect to menu and doc-base files. Needs-Info: doc-base-files, menu-files, bin-pkg-control, index Tag: maintainer-script-does-not-check-for-existence-of-updatemenus Severity: important Certainty: possible Info: The maintainer script calls the update-menus command without checking for existence first. (The menu package which provides the command is not marked as "essential" package.) . For example, use the following code in your maintainer script: if [ -x /usr/bin/update-menus ] ; then update-menus ; fi Tag: maintainer-script-does-not-check-for-existence-of-installdocs Severity: important Certainty: possible Info: The maintainer script calls the install-docs command without checking for existence first. (The doc-base package which provides the command is not marked as "essential" package.) . For example, use the following code in your maintainer script: if [ -x /usr/sbin/install-docs ]; then /usr/sbin/install-docs -i /usr/share/doc-base/<your-package> fi Tag: preinst-calls-updatemenus Severity: important Certainty: certain Info: The preinst script calls the update-menus command. Usually, this command should be called from the postinst maintainer script. Tag: preinst-calls-installdocs Severity: important Certainty: certain Info: The preinst script calls the install-docs command. Usually, this command should be called from the postinst maintainer script. Tag: prerm-calls-updatemenus Severity: important Certainty: certain Info: The prerm script calls the update-menus command. Usually, this command should be called from the postrm maintainer script. Tag: postrm-calls-installdocs Severity: important Certainty: certain Info: The postrm script calls the install-docs command. Usually, this command should be called from the prerm maintainer script. Tag: executable-menu-file Severity: normal Certainty: certain Info: Menu files should normally not be marked as executables. You only need to do this if your package has to generate menu entries dynamically. Tag: menu-file-in-usr-lib Severity: normal Certainty: certain Info: As of menu, version 2.1.25, /usr/lib/menu as location for menu files is deprecated (but still works perfectly). Menu files should now be placed in /usr/share/menu instead. Only menu files that are actually binary executables still need to go to /usr/lib/menu. Ref: menu 3.1 Tag: executable-in-usr-share-docbase Severity: important Certainty: certain Info: Files in /usr/share/doc-base may not be marked as executables. Tag: postinst-does-not-call-updatemenus Severity: important Certainty: certain Info: Since the package installs a file in /etc/menu-methods, /usr/share/menu, or /usr/lib/menu, the package should probably call the update-menus command in it's postinst script. . For example, use the following code in your maintainer script: if [ -x /usr/bin/update-menus ] ; then update-menus ; fi Ref: menu 4.2 Tag: postrm-does-not-call-updatemenus Severity: important Certainty: certain Info: Since the package installs a file in /etc/menu-methods, /usr/share/menu, or /usr/lib/menu, the package should probably call the update-menus command in it's postrm script. . For example, use the following code in your maintainer script: if [ -x /usr/bin/update-menus ] ; then update-menus ; fi Ref: menu 4.2 Tag: postinst-has-useless-call-to-update-menus Severity: minor Certainty: certain Info: The postinst script calls the update-menus program though no file is installed in /etc/menu-methods, /usr/share/menu, or /usr/lib/menu. Tag: postrm-has-useless-call-to-update-menus Severity: minor Certainty: certain Info: The postrm script calls the update-menus program though no file is installed in /etc/menu-methods, /usr/share/menu, or /usr/lib/menu. Tag: postinst-has-useless-call-to-install-docs Severity: minor Certainty: certain Info: Explicitly calling install-docs in postinst is no longer required since doc-base file processing is handled by triggers. If the install-docs call was added by debhelper, rebuilding the package with debhelper 7.2.3 or later will fix this problem. Tag: prerm-has-useless-call-to-install-docs Severity: minor Certainty: certain Info: Explicitly calling install-docs in prerm is no longer required since doc-base file processing is handled by triggers. If the install-docs call was added by debhelper, rebuilding the package with debhelper 7.2.3 or later will fix this problem. Tag: bad-menu-file-name Severity: important Certainty: certain Info: The package installs a file /usr/lib/menu/menu, which is already in use by the menu package itself. The menu file should be named after the package that installs it. Tag: doc-base-index-references-multiple-files Severity: important Certainty: certain Info: The Index field in a doc-base file should reference the single index file for that document. Any other files belonging to the same document should be listed in the Files field. Ref: doc-base 2.3.2.2 Tag: doc-base-file-references-missing-file Severity: important Certainty: certain Info: One of the files referenced in an Index or Files field in this doc-base control file does not exist in the package. The doc-base control files should be installed by the package that provides the documents they are registering. Tag: doc-base-file-unknown-format Severity: normal Certainty: certain Info: The Format field in this doc-base control file declares a format that is not supported. Recognized formats are "HTML", "Text", "PDF", "PostScript", "Info", "DVI", and "DebianDoc-SGML" (case-insensitive). Ref: doc-base 2.3.2.2 Tag: doc-base-file-no-format Severity: important Certainty: certain Info: A format section of this doc-base control file didn't specify a format. Each section after the first must specify a format. Ref: doc-base 2.3.2.2 Tag: doc-base-file-no-format-section Severity: important Certainty: certain Info: This doc-base control file didn't specify any format section. Ref: doc-base 2.3.2.2 Tag: doc-base-file-no-index Severity: important Certainty: certain Info: Format sections in doc-base control files for HTML or Info documents must contain an Index field specifying the starting document for the documentation. Even if the documentation is a single file, this field must be present. Ref: doc-base 2.3.2.2 Tag: doc-base-document-field-ends-in-whitespace Severity: important Certainty: certain Info: The Document field in a doc-base file should not end in whitespace. doc-base (at least as of 0.8.5) cannot cope with such fields and debhelper 5.0.57 or earlier may create files ending in whitespace when installing such files. Tag: doc-base-document-field-not-in-first-line Severity: important Certainty: certain Info: The Document field in doc-base control file must be located at first line of the file. While unregistering documents, doc-base 0.8 and later parses only the first line of the control file for performance reasons. Ref: doc-base 2.3.2.1 Tag: doc-base-file-unknown-field Severity: important Certainty: certain Info: The doc-base control file contains field which is either unknown or not valid for the section where was found. Possible reasons for this error are: a typo in field name, missing empty line between control file sections, or an extra empty line separating sections. Ref: doc-base 2.3.2.1, doc-base 2.3.2.2 Tag: doc-base-file-duplicated-field Severity: important Certainty: certain Info: The doc-base control file contains a duplicated field. Tag: doc-base-file-duplicated-format Severity: important Certainty: certain Info: The doc-base control file contains a duplicated format. Doc-base files must not register different documents in one control file. Ref: doc-base 2.3.2.2 Tag: doc-base-file-lacks-required-field Severity: important Certainty: certain Info: The doc-base control file does not contain a required field for the appropriate section. Ref: doc-base 2.3.2.1, doc-base 2.3.2.2 Tag: doc-base-invalid-document-field Severity: important Certainty: certain Info: The Document field should consists only of letters (a-z), digits (0-9), plus (+) or minus (-) signs, and dots (.). In particular, uppercase letters are not allowed. Ref: doc-base 2.2 Tag: doc-base-abstract-field-is-template Severity: normal Certainty: possible Info: The Abstract field of doc-base contains a "manage online manuals" phrase, which was copied verbatim from an example control file found in section 2.3.1 of the Debian doc-base Manual. Tag: doc-base-abstract-might-contain-extra-leading-whitespace Severity: normal Certainty: possible Info: Continuation lines of the Abstract field of doc-base control file should start with only one space unless they are meant to be displayed verbatim by frontends. Ref: doc-base 2.3.2 Tag: doc-base-abstract-field-separator-extra-whitespace Severity: normal Certainty: certain Info: Unnecessary spaces were found in the paragraph separator line of the doc-base's Abstract field. The separator line should consist of a single space followed by a single dot. Ref: doc-base 2.3.2 Tag: spelling-error-in-doc-base-title-field Severity: minor Certainty: certain Info: Lintian found a spelling or capitalization error in the Title field of this doc-base control file. Lintian has a list of common misspellings that it looks for. It does not have a dictionary like a spelling checker does. Tag: spelling-error-in-doc-base-abstract-field Severity: minor Certainty: certain Info: Lintian found a spelling or capitalization error in the Abstract field of this doc-base control file. Lintian has a list of common misspellings that looks for. It does not have a dictionary like a spelling checker does. Tag: doc-base-file-syntax-error Severity: important Certainty: certain Info: Lintian found a syntax error in the doc-base control file. Ref: doc-base 2.3.2.2 Tag: doc-base-file-separator-extra-whitespace Severity: normal Certainty: certain Info: Unnecessary spaces were found in the doc-base file sections' separator. The section separator is an empty line and should not contain any whitespace. Ref: doc-base 2.3.2 Tag: doc-base-file-uses-obsolete-national-encoding Severity: important Certainty: certain Info: doc-base files must be valid UTF-8, an encoding of the Unicode character set. . There are many ways to convert a doc-base file from an obsolete encoding like ISO-8859-1. You may, for example, use "iconv" like: . $ iconv -f ISO-8859-1 -t UTF-8 doc-base > doc-base.new $ mv doc-base.new doc-base Ref: doc-base 2.3.2 Tag: doc-base-uses-applications-section Severity: normal Certainty: certain Info: The section indicated in this doc-base control file has a top-level section of Apps or Applications. This section is only used in menu, not in doc-base. Simply removing the Applications/ part of the section will lead to a valid doc-base section. Ref: doc-base 2.3.3 Tag: doc-base-unknown-section Severity: normal Certainty: certain Info: The section indicated in this doc-base control file is not one of the standard doc-base sections. The doc-base sections are based on the menu sections but are not exactly the same. Ref: doc-base 2.3.3, /usr/share/doc/doc-base/doc-base.html/index.html Tag: menu-method-should-include-menu-h Severity: important Certainty: certain Info: A menu-method file must include the menu.h configuration file (using "!include menu.h"). Ref: menu 5 Tag: possible-documentation-but-no-doc-base-registration Severity: wishlist Certainty: possible Info: The package ships a .html or .pdf file under /usr/share/doc/, which are usually documentation, but it does not register anything in doc-base. (Files under an examples directory are excluded.) Ref: policy 9.10 lintian-2.5.22ubuntu1/checks/deb-format.desc0000664000000000000000000000406412310413206015570 0ustar Check-Script: deb-format Author: Russ Allbery Abbrev: dfmt Type: binary, udeb Needs-Info: unpacked, bin-pkg-control, index Info: This script checks the format of the deb ar archive itself. Tag: malformed-deb-archive Severity: serious Certainty: certain Info: The binary package is not a correctly constructed archive. A binary Debian package must be an ar archive with exactly three members: debian-binary, control.tar.gz, and one of data.tar.gz, data.tar.bz2 or data.tar.xz in exactly that order. The debian-binary member must start with a single line containing the version number, with a major revision of 2. Ref: deb(5) Tag: misplaced-extra-member-in-deb Severity: important Certainty: certain Info: The binary package contains an extra member that Lintian did not expect or expected at a different position. Ref: deb(5) Tag: lzma-deb-archive Severity: serious Certainty: certain Info: The data portion of this binary package is compressed with lzma. This is supported by dpkg but not yet permitted in the Debian archive. Such a package will be rejected by DAK. Tag: tar-errors-from-control Severity: important Certainty: possible Info: tar produced an error while listing the contents of the control.tar.gz member of this package. This probably means there's something broken or at least strange about the way the package was constructed. Tag: tar-errors-from-data Severity: important Certainty: possible Info: tar produced an error while listing the contents of the data member of this package. This probably means there's something broken or at least strange about the way the package was constructed. Tag: udeb-uses-unsupported-compression-for-data-tarball Severity: serious Certainty: certain Info: The data tarball of this udeb package is not compressed in format that udpkg (debian-installer's dpkg equivalent) does not support. Thus the udeb is likely to be uninstallable and could break daily or weekly d-i images. . Currently, udpkg supports .gz and .xz compressed tarballs. lintian-2.5.22ubuntu1/checks/changelog-file.pm0000664000000000000000000004404012311317577016127 0ustar # changelog-file -- lintian check script -*- perl -*- # Copyright (C) 1998 Christian Schwarz # # 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::changelog_file; use strict; use warnings; use autodie; use Date::Format qw(time2str); use Encode qw(decode); use List::Util qw(first); use List::MoreUtils qw(any); use Parse::DebianChangelog; use Lintian::Check qw(check_spelling); use Lintian::Relation::Version qw(versions_gt); use Lintian::Tags qw(tag); use Lintian::Util qw(file_is_encoded_in_non_utf8 strip); sub run { my ($pkg, undef, $info, undef, $group) = @_; my $found_html = 0; my $found_text = 0; my $ppkg = quotemeta($pkg); my ($native_pkg, $foreign_pkg, @doc_files); # skip packages which have a /usr/share/doc/$pkg -> foo symlink return if $info->index("usr/share/doc/$pkg") and $info->index("usr/share/doc/$pkg")->is_symlink; if (my $docdir = $info->index("usr/share/doc/$pkg/")) { for my $path ($docdir->children) { my $basename = $path->basename; next unless $path->is_file or $path->is_symlink; push(@doc_files, $basename); # Check a few things about the NEWS.Debian file. if ($basename =~ m{\A NEWS\.Debian (?:\.gz)? \Z}ixsm) { if ($basename !~ m{ \.gz \Z }xsm) { tag 'debian-news-file-not-compressed', $path->name; } elsif ($basename ne 'NEWS.Debian.gz') { tag 'wrong-name-for-debian-news-file', $path->name; } } # Check if changelog files are compressed with gzip -9. # It's a bit of an open question here what we should do # with a file named ChangeLog. If there's also a # changelog file, it might be a duplicate, or the packager # may have installed NEWS as changelog intentionally. next unless $basename =~ m{\A changelog (?:\.html|\.Debian)? (?:\.gz)? \Z}xsm; if ($basename !~ m{ \.gz \Z}xsm) { tag 'changelog-file-not-compressed', $basename; } else { my $max_compressed = 0; my $file_info = $info->file_info($path); if ($path->is_symlink) { my $normalized = $path->link_normalized; if (defined($normalized)) { $file_info = $info->file_info($normalized); } } if (defined($file_info)) { if (index($file_info, 'max compression') != -1) { $max_compressed = 1; } if (not $max_compressed and index($file_info, 'gzip compressed') != -1) { tag 'changelog-not-compressed-with-max-compression', $basename; } } } if ( $basename eq 'changelog.html' or $basename eq 'changelog.html.gz') { $found_html = 1; } elsif ($basename eq 'changelog' or $basename eq 'changelog.gz') { $found_text = 1; } } } # Check a NEWS.Debian file if we have one. Save the parsed version of the # flie for later checks against the changelog file. my $news; my $dnews = $info->lab_data_path('NEWS.Debian'); if (-f $dnews) { my $line = file_is_encoded_in_non_utf8($dnews); if ($line) { tag 'debian-news-file-uses-obsolete-national-encoding', "at line $line"; } my $changes = Parse::DebianChangelog->init({ infile => $dnews, quiet => 1, }); if (my @errors = $changes->get_parse_errors) { for (@errors) { tag 'syntax-error-in-debian-news-file', "line $_->[1]", "\"$_->[2]\""; } } # Some checks on the most recent entry. if ($changes->data and defined(($changes->data)[0])) { ($news) = $changes->data; if ($news->Distribution && $news->Distribution =~ /unreleased/i) { tag 'debian-news-entry-has-strange-distribution', $news->Distribution; } check_spelling('spelling-error-in-news-debian', $news->Changes,undef, $group->info->spelling_exceptions); if ($news->Changes =~ /^\s*\*\s/) { tag 'debian-news-entry-uses-asterisk'; } } } if ($found_html && !$found_text) { tag 'html-changelog-without-text-version'; } # is this a native Debian package? my $version; if (defined $info->field('version')) { $version = $info->field('version'); } else { # We do not know, but we assume it to be non-native # as that is most likely. $version = '0-1'; } $native_pkg = $info->native; $foreign_pkg = (!$native_pkg && $version !~ m/-0\./); # A version of 1.2.3-0.1 could be either, so in that # case, both vars are false if ($native_pkg) { # native Debian package if (any { m/^changelog(?:\.gz)?$/} @doc_files) { # everything is fine } elsif ( my $chg = first { m/^changelog\.debian(?:\.gz)$/i; } @doc_files ) { tag 'wrong-name-for-changelog-of-native-package', "usr/share/doc/$pkg/$chg"; } else { tag 'changelog-file-missing-in-native-package'; } } else { # non-native (foreign :) Debian package # 1. check for upstream changelog my $found_upstream_text_changelog = 0; if (any { m/^changelog(\.html)?(?:\.gz)?$/ } @doc_files) { $found_upstream_text_changelog = 1 unless $1; # everything is fine } else { # search for changelogs with wrong file name my $found = 0; for (@doc_files) { if (m/^change/i and not m/debian/i) { tag 'wrong-name-for-upstream-changelog', "usr/share/doc/$pkg/$_"; $found = 1; last; } } if (not $found) { tag 'no-upstream-changelog' unless $info->is_pkg_class('transitional'); } } # 2. check for Debian changelog if (any { m/^changelog\.Debian(?:\.gz)?$/ } @doc_files) { # everything is fine } elsif ( my $chg = first { m/^changelog\.debian(?:\.gz)?$/i; } @doc_files ) { tag 'wrong-name-for-debian-changelog-file', "usr/share/doc/$pkg/$chg"; } else { if ($foreign_pkg && $found_upstream_text_changelog) { tag 'debian-changelog-file-missing-or-wrong-name'; } elsif ($foreign_pkg) { tag 'debian-changelog-file-missing'; } # TODO: if uncertain whether foreign or native, either # changelog.gz or changelog.debian.gz should exists # though... but no tests catches this (extremely rare) # border case... Keep in mind this is only happening if we # have a -0.x version number... So not my priority to fix # --Jeroen } } my $dchpath = $info->lab_data_path('changelog'); # Everything below involves opening and reading the changelog file, so bail # with a warning at this point if all we have is a symlink. Ubuntu permits # such symlinks, so their profile will suppress this tag. if (-l $dchpath) { tag 'debian-changelog-file-is-a-symlink'; return; } # Bail at this point if the changelog file doesn't exist. We will have # already warned about this. unless (-f $dchpath) { return; } # check that changelog is UTF-8 encoded my $line = file_is_encoded_in_non_utf8($dchpath); if ($line) { tag 'debian-changelog-file-uses-obsolete-national-encoding', "at line $line"; } my $changelog = $info->changelog; if (my @errors = $changelog->get_parse_errors) { foreach (@errors) { tag 'syntax-error-in-debian-changelog', "line $_->[1]", "\"$_->[2]\""; } } # Check for some things in the raw changelog file and compute the # "offset" to the first line of the first entry. We use this to # report the line number of "too-long" lines. (#657402) my $chloff = check_dch($dchpath); my @entries = $changelog->data; if (@entries) { my %versions; my $first_timestamp = $entries[0]->Timestamp; for my $entry (@entries) { if ($entry->Maintainer) { if ($entry->Maintainer =~ /<([^>\@]+\@[^>.]*)>/) { tag 'debian-changelog-file-contains-invalid-email-address', $1; } } $versions{$entry->Version} = 1 if defined $entry->Version; } if ($first_timestamp) { my $dch_date = $entries[0]->Date; my ($weekday_declared, $date) = split(m/,\s*/, $dch_date, 2); my ($tz, $weekday_actual); if ($date =~ m/[ ]+ ([^ ]+)\Z/xsm) { $tz = $1; $weekday_actual = time2str('%a', $first_timestamp, $tz); } if ($tz and $weekday_declared ne $weekday_actual) { my $real_weekday = time2str('%A', $first_timestamp, $tz); my $short_date = time2str('%Y-%m-%d', $first_timestamp, $tz); tag 'debian-changelog-has-wrong-weekday', "$short_date is a $real_weekday"; } } if (@entries > 1) { my $second_timestamp = $entries[1]->Timestamp; if ($first_timestamp && $second_timestamp) { tag 'latest-debian-changelog-entry-without-new-date' unless (($first_timestamp - $second_timestamp) > 0 or lc($entries[0]->Distribution) eq 'unreleased'); } my $first_version = $entries[0]->Version; my $second_version = $entries[1]->Version; if ($first_version and $second_version) { tag 'latest-debian-changelog-entry-without-new-version' unless versions_gt($first_version, $second_version) or $entries[0]->Changes =~ /backport/i; tag 'latest-debian-changelog-entry-changed-to-native' if $native_pkg and $second_version =~ m/-/; } my $first_upstream = $first_version; $first_upstream =~ s/-[^-]+$//; my $second_upstream = $second_version; $second_upstream =~ s/-[^-]+$//; if ( $first_upstream eq $second_upstream and $entries[0]->Changes =~ /^\s*\*\s+new\s+upstream\s+(?:\S+\s+)?release\b/im) { tag 'possible-new-upstream-release-without-new-version'; } my $first_dist = lc $entries[0]->Distribution; my $second_dist = lc $entries[1]->Distribution; if ($first_dist eq 'unstable' and $second_dist eq 'experimental') { unless ($entries[0]->Changes =~ /\bto\s+unstable\b/) { tag 'experimental-to-unstable-without-comment'; } } } # Some checks should only be done against the most recent # changelog entry. my $entry = $entries[0]; my $changes = $entry->Changes || ''; if (@entries == 1) { if ($entry->Version and $entry->Version =~ /-1$/) { tag 'new-package-should-close-itp-bug' unless @{ $entry->Closes }; } if ($changes=~ /(?:#?\s*)(?:\d|n)+ is the bug number of your ITP/i) { tag 'changelog-is-dh_make-template'; } } while ($changes =~ /(closes\s*(?:bug)?\#?\s?\d{6,})[^\w]/ig) { tag 'possible-missing-colon-in-closes', $1 if $1; } # check for bad intented distribution if ( $changes =~ /uploads? \s+ to \s+ (?'intended'testing|unstable|experimental|sid)/xi ){ my $intended = $+{intended}; if($intended eq 'sid') { $intended = 'unstable'; } my $uploaded = $entry->Distribution; unless($uploaded eq $intended) { tag 'bad-intended-distibution', "intended to $intended but uploaded to $uploaded"; } } my $closes = $entry->Closes; for my $bug (@$closes) { tag 'improbable-bug-number-in-closes', $bug if ($bug < 100); } # unstable, testing, and stable shouldn't be used in Debian # version numbers. unstable should get a normal version # increment and testing and stable should get suite-specific # versions. # # NMUs get a free pass because they need to work with the # version number that was already there. my $changelog_version; if ($info->native) { $changelog_version = $entry->Version || ''; } else { if ($entry->Version) { ($changelog_version) = (split('-', $entry->Version))[-1]; } else { $changelog_version = ''; } } unless (not $info->native and $changelog_version =~ /\./) { if ( $info->native and $changelog_version =~ /testing|(?:un)?stable/i) { tag 'version-refers-to-distribution', $entry->Version; } elsif ($changelog_version =~ /woody|sarge|etch|lenny|squeeze/) { my %unreleased_dists = map { $_ => 1 } qw(unstable experimental); if (exists($unreleased_dists{$entry->Distribution})) { tag 'version-refers-to-distribution', $entry->Version; } } } # Compare against NEWS.Debian if available. if ($news and $news->Version) { if ($entry->Version eq $news->Version) { for my $field (qw/Distribution Urgency/) { if ($entry->$field ne $news->$field) { tag 'changelog-news-debian-mismatch', lc($field), $entry->$field . ' != ' . $news->$field; } } } unless ($versions{$news->Version}) { tag 'debian-news-entry-has-unknown-version', $news->Version; } } # We have to decode into UTF-8 to get the right length for the # length check. For some reason, use open ':utf8' isn't # sufficient. If the changelog uses a non-UTF-8 encoding, # this will mangle it, but it doesn't matter for the length # check. # # Parse::DebianChangelog adds an additional space to the # beginning of each line, so we have to adjust for that in the # length check. my @lines = split("\n", decode('utf-8', $changes)); for my $i (0 .. $#lines) { if (length($lines[$i]) > 81 and $lines[$i] !~ /^[\s.o*+-]*(?:[Ss]ee:?\s+)?\S+$/) { tag 'debian-changelog-line-too-long', 'line ' . ($i + $chloff); } } # Strip out all lines that contain the word spelling to avoid false # positives on changelog entries for spelling fixes. $changes =~ s/^.*spelling.*\n//gm; check_spelling('spelling-error-in-changelog', $changes, undef, $group->info->spelling_exceptions); } return; } # read the changelog itself and check for some issues we cannot find # with Parse::DebianChangelog. Also return the "real" line number for # the first line of text in the first entry. # sub check_dch { my ($path) = @_; # emacs only looks at the last "local variables" in a file, and only at # one within 3000 chars of EOF and on the last page (^L), but that's a bit # pesky to replicate. Demanding a match of $prefix and $suffix ought to # be enough to avoid false positives. my ($prefix, $suffix); my $lineno = 0; my ($estart, $tstart) = (0, 0); open(my $fd, '<', $path); while (<$fd>) { unless ($tstart) { $lineno++; $estart = 1 if m/^\S/; $tstart = 1 if m/^\s+\S/; } if ( m/closes:\s*(((?:bug)?\#?\s?\d*)[[:alpha:]]\w*)/io || m/closes:\s*(?:bug)?\#?\s?\d+ (?:,\s*(?:bug)?\#?\s?\d+)* (?:,\s*(((?:bug)?\#?\s?\d*)[[:alpha:]]\w*))/iox ) { tag 'wrong-bug-number-in-closes', "l$.:$1" if $2; } if (/^(.*)Local\ variables:(.*)$/i) { $prefix = $1; $suffix = $2; } # emacs allows whitespace between prefix and variable, hence \s* if ( defined $prefix && defined $suffix && m/^\Q$prefix\E\s*add-log-mailing-address:.*\Q$suffix\E$/) { tag 'debian-changelog-file-contains-obsolete-user-emacs-settings'; } } close($fd); return $lineno; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/filename-length.desc0000664000000000000000000000221012153060143016601 0ustar Check-Script: filename-length Author: Niels Thykier Abbrev: flen Type: source, binary, udeb Info: This script checks for long package file names Tag: package-has-long-file-name Severity: normal Certainty: certain Info: The package has a very long filename. This may complicate shipping the package on some media that put restrictions on the length of the filenames (such as CDs). . For architecture dependent packages, the tag is emitted based on the length of the longest architecture name rather than the name of the current architecture. . This length will be written in brackets after the actual length. Ref: http://lists.debian.org/debian-devel/2011/03/msg00943.html Tag: source-package-component-has-long-file-name Severity: normal Certainty: certain Info: The source package has a component with a very long filename. This may complicate shipping the package on some media that put restrictions on the length of the filenames (such as CDs). . Lintian only checks emits this tag once per source package based on the component with the longest filename. Ref: http://lists.debian.org/debian-devel/2011/03/msg00943.html lintian-2.5.22ubuntu1/checks/deb-format.pm0000664000000000000000000001761312311317602015276 0ustar # deb-format -- lintian check script -*- perl -*- # Copyright (C) 2009 Russ Allbery # # 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, see . package Lintian::deb_format; use strict; use warnings; use autodie; use List::MoreUtils qw(first_index none); use Lintian::Command qw(spawn); use Lintian::Data; use Lintian::Tags qw(tag); # The files that contain error messages from tar, which we'll check and issue # tags for if they contain something unexpected, and their corresponding tags. # - These files are created by bin-pkg-control, index and unpacked respectively our %ERRORS = ( 'control-errors' => 'tar-errors-from-control', 'control-index-errors' => 'tar-errors-from-control', 'index-errors' => 'tar-errors-from-data', 'unpacked-errors' => 'tar-errors-from-data' ); my $EXTRA_MEMBERS = Lintian::Data->new('deb-format/extra-members'); sub run { my (undef, $type, $info) = @_; my $deb = $info->lab_data_path('deb'); # Run ar t on the *.deb file. deb will be a symlink to it. my $okay = 0; my $opts = {}; my $success = spawn($opts, ['ar', 't', $deb]); if ($success) { my @members = split("\n", ${ $opts->{out} }); my $count = scalar(@members); my ($ctrl_member, $data_member); if ($count < 3) { tag 'malformed-deb-archive', "found only $count members instead of 3"; } elsif ($members[0] ne 'debian-binary') { tag 'malformed-deb-archive', "first member $members[0] not debian-binary"; } elsif ( $count == 3 and none { substr($_, 0, 1) eq '_'; } @members ) { # Fairly common case - if there are only 3 members without # "_", we can trivially determine their (expected) # positions. We only use this case when there are no # "extra" members, because they can trigger more tags # (see below) (undef, $ctrl_member, $data_member) = @members; } else { my $ctrl_index = first_index { substr($_, 0, 1) ne '_' } @members[1..$#members]; my $data_index; if ($ctrl_index != -1) { # Since we searched only a sublist of @members, we have to # add 1 to $ctrl_index $ctrl_index++; $ctrl_member = $members[$ctrl_index]; $data_index = first_index { substr($_, 0, 1) ne '_' } @members[$ctrl_index..$#members]; if ($data_index != -1) { # Since we searched only a sublist of @members, we # have to adjust $data_index $data_index += $ctrl_index + 1; $data_member = $members[$data_index]; } } # Extra members for my $i (1..$#members) { my $member = $members[$i]; my $actual_index = $i; my ($expected, $text); next if $i == $ctrl_index or $i == $data_index; $expected = $EXTRA_MEMBERS->value($member); if (defined($expected)) { next if $expected eq 'ANYWHERE'; next if $expected == $actual_index; $text = "expected at position $expected, but appeared"; } else { $text = 'unexpected member'; } tag 'misplaced-extra-member-in-deb', "$member ($text at position $actual_index)"; } } if (not defined($ctrl_member)) { # Somehow I doubt we will ever get this far without a control # file... :) tag 'malformed-deb-archive', 'Missing control.tar.gz member'; } elsif ($ctrl_member ne 'control.tar.gz') { tag 'malformed-deb-archive', "second (official) member $ctrl_member not control.tar.gz"; } elsif (not defined($data_member)) { # Somehow I doubt we will ever get this far without a data # member (i.e. I suspect unpacked and index will fail), but # mah tag 'malformed-deb-archive', 'Missing data.tar member'; } else { # Probably okay $okay = 1; if ( $data_member !~ m/\A # NB: We deliberately do not allow "data.tar", # since various tools seems to be unable to cope # with them. (see #718331) data\.tar\.(?:gz|bz2|xz|lzma) \Z/xsm ) { # wasn't okay after all $okay = 0; } elsif ($type eq 'udeb' && $data_member !~ m/^data\.tar\.[gx]z$/) { tag 'udeb-uses-unsupported-compression-for-data-tarball'; } elsif ($data_member eq 'data.tar.lzma') { # Ubuntu's archive allows lzma packages. tag 'lzma-deb-archive'; } if (not $okay) { tag 'malformed-deb-archive', join(' ', "third (official) member $data_member", 'not data.tar.(gz|bz2|xz)'); } } } else { # unpack will probably fail so we'll never get here, but may as well be # complete just in case. my $error = ${ $opts->{err} }; $error =~ s/\n.*//s; $error =~ s/^ar:\s*//; $error =~ s/^deb:\s*//; tag 'malformed-deb-archive', "ar error: $error"; } # Check the debian-binary version number. We probably won't get # here because dpkg-deb will decline to unpack the deb, but be # thorough just in case. We may eventually have a case where dpkg # supports a newer format but it's not permitted in the archive # yet. if ($okay) { $opts = {}; $success = spawn($opts, ['ar', 'p', $deb, 'debian-binary']); if (not $success) { tag 'malformed-deb-archive', 'cannot read debian-binary member'; } elsif (${ $opts->{out} } !~ /^2\.\d+\n/) { my ($version) = split("\n", ${ $opts->{out} }); tag 'malformed-deb-archive', "version $version not 2.0"; } } # If either control-errors or index-errors exist, tar produced # error output when processing the package. We want to report # those as tags unless they're just tar noise that doesn't # represent an actual problem. for my $file (keys %ERRORS) { my $tag = $ERRORS{$file}; my $path = $info->lab_data_path($file); if (-s $path) { open(my $fd, '<', $path); while (my $line = <$fd>) { chomp($line); $line =~ s,^(?:[/\w]+/)?tar: ,,; # Record size errors are harmless. Ignore implausibly # old timestamps in the data section since we already # check for that elsewhere, but still warn for # control. next if $line =~ /^Record size =/; if ($tag eq 'tar-errors-from-data') { next if $line =~ /implausibly old time stamp/; } tag $tag, $line; } close($fd); } } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/huge-usr-share.desc0000664000000000000000000000151612153060143016411 0ustar Check-Script: huge-usr-share Author: Jeroen van Wolffelaar Abbrev: hus Type: binary Needs-info: index Info: This script checks whether an architecture-dependent package has large amounts of data in /usr/share. Tag: arch-dep-package-has-big-usr-share Severity: wishlist Certainty: certain Info: The package has a significant amount of architecture-independent data (over 4MB, or over 2MB and more than 50% of the package) in /usr/share but is an architecture-dependent package. This is wasteful of mirror space and bandwidth since it means distributing multiple copies of this data, one for each architecture. . If the data in /usr/share is not architecture-independent, this is a Policy violation that should be fixed by moving the data elsewhere (usually /usr/lib). Ref: devref 6.7.5 lintian-2.5.22ubuntu1/checks/ocaml.pm0000664000000000000000000001423112311317615014346 0ustar # ocaml -- lintian check script -*- perl -*- # # Copyright © 2009 Stéphane Glondu # # 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::ocaml; use strict; use warnings; use autodie; use File::Basename; use Lintian::Relation (); use Lintian::Tags qw(tag); # The maximum number of *.cmi files to show individually. our $MAX_CMI = 3; sub run { my ($pkg, undef, $info) = @_; # Collect information about .a files from ar-info dump my %provided_o; open(my $fd, '<', $info->lab_data_path('ar-info')); while (my $line = <$fd>) { chomp($line); if ($line =~ /^(?:\.\/)?([^:]+): (.*)$/) { my ($filename, $contents) = ($1, $2); my $dirname = dirname($filename); for my $entry (split m/ /o, $contents) { # Note: a .o may be legitimately in several different .a $provided_o{"$dirname/$entry"} = $filename; } } } close($fd); # is it a library package? my $is_lib_package = 0; if ($pkg =~ /^lib/) { $is_lib_package = 1; } # is it a development package? my $is_dev_package = 0; if ( $pkg =~ m/ (?: -dev |\A camlp[45](?:-extra)? |\A ocaml (?: -nox |-interp |-compiler-libs )? )\Z/xsm ){ $is_dev_package = 1; } # for libraries outside /usr/lib/ocaml my $outside_number = 0; my $outside_prefix; # dangling .cmi files (we show only $MAX_CMI of them) my $cmi_number = 0; # dev files in nondev package my $dev_number = 0; my $dev_prefix; # does the package provide a META file? my $has_meta = 0; foreach my $file ($info->sorted_index) { my $fileinfo = $info->file_info($file); # For each .cmxa file, there must be a matching .a file (#528367) $_ = $file; if (s/\.cmxa$/.a/ && !$info->file_info($_)) { tag 'ocaml-dangling-cmxa', $file; } # For each .cmxs file, there must be a matching .cma or .cmo file # (at least, in library packages) if ($is_lib_package) { $_ = $file; if ( s/\.cmxs$/.cm/ && !$info->file_info("${_}a") && !$info->file_info("${_}o")) { tag 'ocaml-dangling-cmxs', $file; } } # The .cmx counterpart: for each .cmx file, there must be a # matching .o file, which can be there by itself, or embedded in a # .a file in the same directory $_ = $file; if ( s/\.cmx$/.o/ && !$info->file_info($_) && !(exists $provided_o{$_})) { tag 'ocaml-dangling-cmx', $file; } # $somename.cmi should be shipped with $somename.mli or $somename.ml $_ = $file; if ( $is_dev_package && s/\.cmi$/.ml/ && !$info->file_info("${_}i") && !$info->file_info($_)) { $cmi_number++; if ($cmi_number <= $MAX_CMI) { tag 'ocaml-dangling-cmi', $file; } } # non-dev packages should not ship .cmi, .cmx or .cmxa files if ($file =~ m/\.cm(i|xa?)$/) { $dev_number++; if (defined $dev_prefix) { chop $dev_prefix while ($file !~ m@^$dev_prefix@); } else { $dev_prefix = $file; } } # $somename.cmo should usually not be shipped with $somename.cma $_ = $file; if (s/\.cma$/.cmo/ && $info->file_info($_)) { tag 'ocaml-stray-cmo', $file; } # development files outside /usr/lib/ocaml (.cmi, .cmx, .cmxa) # .cma, .cmo and .cmxs are excluded because they can be plugins if ($file =~ m/\.cm(i|xa?)$/ && $file !~ m@^usr/lib/ocaml/@) { $outside_number++; if (defined $outside_prefix) { chop $outside_prefix while ($file !~ m@^$outside_prefix@); } else { $outside_prefix = $file; } } # If there is a META file, ocaml-findlib should be at least suggested. $has_meta = 1 if $file =~ m@^usr/lib/ocaml/(.+/)?META(\..*)?$@; } if ($is_dev_package) { # summary about .cmi files if ($cmi_number > $MAX_CMI) { my $plural = ($cmi_number - $MAX_CMI == 1) ? '' : 's'; tag 'ocaml-dangling-cmi', ($cmi_number - $MAX_CMI), "more file$plural not shown"; } # summary about /usr/lib/ocaml if ($outside_number) { $outside_prefix = dirname($outside_prefix); my $plural = ($outside_number == 1) ? '' : 's'; tag 'ocaml-dev-file-not-in-usr-lib-ocaml', "$outside_number file$plural in $outside_prefix"; } if ($has_meta) { my $depends = $info->relation('all'); tag 'ocaml-meta-without-suggesting-findlib' unless $depends->implies('ocaml-findlib'); } } else { # summary about dev files if ($dev_number > 0) { $dev_prefix = dirname($dev_prefix); my $plural = ($dev_number == 1) ? '' : 's'; tag 'ocaml-dev-file-in-nondev-package', "$dev_number file$plural in $dev_prefix"; } } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/symlinks.desc0000664000000000000000000000157012310413144015421 0ustar Check-Script: symlinks Author: Niels Thykier Abbrev: sym Type: binary, udeb Needs-Info: index Info: This script checks for broken symlinks. Tag: package-contains-broken-symlink Severity: normal Certainty: wild-guess Experimental: yes Info: The package contains a symlink but the destination for the link does not exist in the package nor in its direct dependencies. Tag: package-contains-broken-symlink-wildcard Severity: normal Certainty: possible Info: The package contains a symlink with a target that appears to be a "failed" wildcard expansion. Furthermore the target does not exists in the package or any of its direct dependencies (built from the same source). Tag: package-contains-unsafe-symlink Severity: serious Certainty: certain Info: The package contains an unsafe symlink. If followed, the link will escape the package root. Ref: policy 10.5 lintian-2.5.22ubuntu1/checks/conffiles.pm0000664000000000000000000000635312311317577015240 0ustar # conffiles -- lintian check script -*- perl -*- # Copyright (C) 1998 Christian Schwarz # Copyright (C) 2000 Sean 'Shaleh' Perry # # 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::conffiles; use strict; use warnings; use autodie; use Lintian::Tags qw(tag); use Lintian::Util qw(rstrip); sub run { my (undef, undef, $info) = @_; my $cf = $info->control('conffiles'); my %conffiles = (); # Stop if conffiles is a link; no real package uses links in # control.tar.gz. return if -l $cf; if (-f $cf) { open(my $fd, '<', $cf); while (my $filename = <$fd>) { # dpkg strips whitespace (using isspace) from the right hand # side of the file name. rstrip($filename); next if $filename eq q{}; if ($filename !~ m{^ / }xsm) { tag 'relative-conffile', $filename; } else { # strip the leading slash from here. $filename =~ s{^ /++ }{}xsm; } $conffiles{$filename}++; if ($conffiles{$filename} > 1) { tag 'duplicate-conffile', $filename; next; } if (not defined($info->index($filename))) { tag 'conffile-is-not-in-package', $filename; } if ($filename =~ m{^ usr/ }xsm) { tag 'file-in-usr-marked-as-conffile', $filename; } else { if ($filename !~ m{^ etc/ }xsm) { tag 'non-etc-file-marked-as-conffile', $filename; } elsif ($filename =~ m{^ etc/rc.\.d/ }xsm) { tag 'file-in-etc-rc.d-marked-as-conffile', $filename; } } } close($fd); } # Read package contents... foreach my $file ($info->sorted_index) { if (not $file->is_file and exists $conffiles{$file}) { tag 'conffile-has-bad-file-type', $file; } next unless $file =~ m{\A etc/ }xsm and $file->is_file; # If there is a /etc/foo, it must be a conffile (with a few exceptions). if ( not exists($conffiles{$file}) and $file !~ m{ /README $}xsm and $file ne 'etc/init.d/skeleton' and $file ne 'etc/init.d/rc' and $file ne 'etc/init.d/rcS') { tag 'file-in-etc-not-marked-as-conffile', $file; } } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/scripts.desc0000664000000000000000000007006712310413206015245 0ustar Check-Script: scripts Author: Richard Braakman Abbrev: scr Type: binary Info: This script checks the #! lines of scripts in a package. Needs-Info: unpacked, file-info, scripts, bin-pkg-control, index Tag: script-without-interpreter Severity: important Certainty: certain Info: This file starts with the #! sequence that identifies scripts, but it does not name an interpreter. Tag: example-script-without-interpreter Severity: wishlist Certainty: certain Info: This example file starts with the #! sequence that identifies scripts, but it does not name an interpreter. Tag: executable-not-elf-or-script Severity: normal Certainty: certain Info: This executable file is not an ELF format binary, and does not start with the #! sequence that marks interpreted scripts. It might be a sh script that fails to name /bin/sh as its shell, or it may be incorrectly marked as executable. Sometimes upstream files developed on Windows are marked unnecessarily as executable on other systems. . If you are using debhelper to build your package, running dh_fixperms will often correct this problem for you. Ref: policy 10.4 Tag: script-not-executable Severity: normal Certainty: certain Info: This file starts with the #! sequence that marks interpreted scripts, but it is not executable. Tag: interpreter-not-absolute Severity: normal Certainty: certain Info: This script uses a relative path to locate its interpreter. This path will be taken relative to the caller's current directory, not the script's, so it is not likely to be what was intended. Tag: example-interpreter-not-absolute Severity: wishlist Certainty: certain Info: This example script uses a relative path to locate its interpreter. This path will be taken relative to the caller's current directory, not the script's, so a user will probably not be able to run the example without modification. This tag can also be caused by script headers like #!@BASH@, which usually mean that the examples were copied out of the source tree before proper Autoconf path substitution. Tag: unusual-interpreter Severity: normal Certainty: possible Info: This package contains a script for an interpreter that is not shipped in the package and is not known to Lintian. It is possible that there is a typo or the interpreter is not executable. If not, please file a wishlist bug against lintian, so it can be added to the list of known interpreters. Tag: example-unusual-interpreter Severity: pedantic Certainty: possible Info: This package contains an example script for an interpreter that is not shipped in the package and is not known to Lintian. It is possible that there is a typo or the interpreter is not executable. If not, please file a wishlist bug against lintian, so it can be added to the list of known interpreters. Tag: script-uses-bin-env Severity: normal Certainty: certain Info: This script uses /bin/env as its interpreter (used to find the actual interpreter on the user's path). There is no /bin/env on Debian systems; env is instead installed as /usr/bin/env. Usually, the path to env in the script should be changed. Tag: example-script-uses-bin-env Severity: wishlist Certainty: certain Info: This example script uses /bin/env as its interpreter (used to find the actual interpreter on the user's path). There is no /bin/env on Debian systems; env is instead installed as /usr/bin/env. Usually, the path to env in the script should be changed. Tag: forbidden-config-interpreter Severity: important Certainty: certain Info: This package contains a config script for pre-configuring the package. During pre-configuration, however, only essential packages are guaranteed to be installed, so you cannot use a non-essential interpreter. Tag: forbidden-postrm-interpreter Severity: serious Certainty: certain Info: This package contains a postrm maintainer script that uses an interpreter that isn't essential. The purge action of postrm can only rely on essential packages, which means the interpreter used by postrm must be one of the essential ones (sh, bash, or perl). Ref: policy 7.2 Tag: unusual-control-interpreter Severity: minor Certainty: certain Info: This package contains a control script for an interpreter that is not normally used for control scripts. This is permissible but not recommended. It makes it harder for other developers to understand your package. Tag: unknown-control-interpreter Severity: important Certainty: possible Info: This package contains a maintainer script that uses an interpreter that the Lintian maintainers have not heard of. This is usually a typo for a common interpreter. If not, please file a wishlist bug on lintian so that the Lintian maintainers can add this interpreter to their list. Tag: interpreter-in-usr-local Severity: important Certainty: certain Info: This package contains a script that looks for an interpreter in a directory in /usr/local. Since Debian does not install anything in /usr/local, this is the wrong place to look. Tag: example-interpreter-in-usr-local Severity: pedantic Certainty: certain Info: This package contains an example script that looks for an interpreter in a directory in /usr/local. Since Debian does not install anything in /usr/local, the example script would probably need modifications before a user could run it. Tag: control-interpreter-in-usr-local Severity: serious Certainty: certain Info: A control script for this package references an interpreter in a directory in /usr/local. Control scripts must use interpreters provided by Debian packages, and Debian packages do not install anything in /usr/local. Tag: preinst-interpreter-without-predepends Severity: serious Certainty: certain Info: The package contains a preinst maintainer script that uses an unusual and non-essential interpreter but does not declare a pre-dependency on the package that provides this interpreter. . preinst scripts should be written using only essential interpreters to avoid additional dependency complexity. Please do not add a pre-dependency without following the policy for doing so (Policy section 3.5). Ref: policy 7.2 Tag: control-interpreter-without-depends Severity: serious Certainty: possible Info: The package contains a maintainer script that uses an unusual and non-essential interpreter but does not declare a dependency on the package that provides this interpreter. Ref: policy 7.2 Tag: missing-dep-for-interpreter Severity: important Certainty: possible Info: You used an interpreter for a script that is not in an essential package. In most cases, you will need to add a Dependency on the package that contains the interpreter. If the dependency is already present, please file a bug against Lintian with the details of your package so that its database can be updated. . In some cases a weaker relationship, such as Suggests or Recommends, will be more appropriate. Tag: csh-considered-harmful Severity: normal Certainty: certain Info: The Debian policy for scripts explicitly warns against using csh and tcsh as scripting languages. Ref: policy 10.4 Tag: wrong-path-for-interpreter Severity: important Certainty: certain Info: The interpreter you used is installed at another location on Debian systems. Tag: example-wrong-path-for-interpreter Severity: wishlist Certainty: certain Info: The interpreter used by this example script is installed at another location on Debian systems. Normally the path should be updated to match the Debian location. Tag: gawk-script-but-no-gawk-dep Severity: important Certainty: certain Info: Packages that use gawk scripts must depend on the gawk package. If they don't need gawk-specific features, and can just as easily work with mawk, then they should be awk scripts instead. . In some cases a weaker relationship, such as Suggests or Recommends, will be more appropriate. Tag: mawk-script-but-no-mawk-dep Severity: important Certainty: certain Info: Packages that use mawk scripts must depend on the mawk package. If they don't need mawk-specific features, and can just as easily work with gawk, then they should be awk scripts instead. . In some cases a weaker relationship, such as Suggests or Recommends, will be more appropriate. Tag: php-script-but-no-phpX-cli-dep Severity: important Certainty: certain Info: Packages with PHP scripts must depend on a phpX-cli package such as php5-cli. Note that a dependency on a php-cgi package (such as php5-cgi) is needlessly strict and forces the user to install a package that isn't needed. . In some cases a weaker relationship, such as Suggests or Recommends, will be more appropriate. . Lintian can only recognize phpX-cli dependencies for values of X that it knows are available in the archive. You will get this warning if you allow, as alternatives, versions of PHP that are so old they're not available in stable. The correct fix in those cases is probably to drop the old alternative. If this package depends on a newer php-cli package that Lintian doesn't know about, please file a bug against Lintian so that it can be updated. Tag: python-script-but-no-python-dep Severity: important Certainty: certain Info: Packages with Python scripts should depend on the package python. Those with scripts that specify a specific version of Python must depend on that version of Python (exactly). . For example, if a script in the package uses #!/usr/bin/python, the package needs a dependency on python. If a script uses #!/usr/bin/python2.6, the package needs a dependency on python2.6. A dependency on python (>= 2.6) is not correct, since later versions of Python may not provide the /usr/bin/python2.6 binary. . If you are using debhelper, adding ${python:Depends} to the Depends field and ensuring dh_pysupport or dh_pycentral are run during the build should take care of adding the correct dependency. . In some cases a weaker relationship, such as Suggests or Recommends, will be more appropriate. Tag: ruby-script-but-no-ruby-dep Severity: important Certainty: certain Info: Packages with Ruby scripts must depend on a valid Ruby interpreter. Those that have Ruby scripts that run under a specific version of Ruby need a dependency on the equivalent version of Ruby. . If a script in the package uses #!/usr/bin/ruby, the package needs a dependency on "ruby | ruby-interpreter". This allows users to choose which interpreter to use by default. If the package is intended to be used with a specific Ruby version, its scripts should use that version directly, such as #!/usr/bin/ruby1.8 . If a script uses #!/usr/bin/ruby1.9, then the package needs a dependency on "ruby1.9". . In some cases a weaker relationship, such as Suggests or Recommends, will be more appropriate. Tag: wish-script-but-no-wish-dep Severity: important Certainty: certain Info: Packages that include wish scripts must depend on the virtual package wish or, if they require a specific version of wish or tk, that version of tk. . In some cases a weaker relationship, such as Suggests or Recommends, will be more appropriate. Tag: tclsh-script-but-no-tclsh-dep Severity: important Certainty: certain Info: Packages that include tclsh scripts must depend on the virtual package tclsh or, if they require a specific version of tcl, that version of tcl. . In some cases a weaker relationship, such as Suggests or Recommends, will be more appropriate. Tag: shell-script-fails-syntax-check Severity: important Certainty: possible Info: Running this shell script with the shell's -n option set fails, which means that the script has syntax errors. The most common cause of this problem is a script expecting /bin/sh to be bash checked on a system using dash as /bin/sh. . Run e.g. sh -n yourscript to see the errors yourself. . Note this can have false-positives, for an example with bash scripts using "extglob". Tag: example-shell-script-fails-syntax-check Severity: pedantic Certainty: possible Info: Running this shell script with the shell's -n option set fails, which means that the script has syntax errors. The most common cause of this problem is a script expecting /bin/sh to be bash checked on a system using dash as /bin/sh. . Run e.g. sh -n yourscript to see the errors yourself. . Note this can have false-positives, for an example with bash scripts using "extglob". Tag: maintainer-shell-script-fails-syntax-check Severity: serious Certainty: certain Info: Running this shell script with the shell's -n option set fails, which means that the script has syntax errors. This will likely make the package uninstallable. . Run e.g. sh -n yourscript to see the errors yourself. Tag: possibly-insecure-handling-of-tmp-files-in-maintainer-script Severity: normal Certainty: possible Info: The maintainer script seems to access a file in /tmp or some other temporary directory. Since creating temporary files in a world-writable directory is very dangerous, this is likely to be a security bug. Use the tempfile or mktemp utilities to create temporary files in these directories. Ref: policy 10.4 Tag: killall-is-dangerous Severity: normal Certainty: possible Info: The maintainer script seems to call killall. Since this utility kills processes by name, it may well end up killing unrelated processes. Most uses of killall should use invoke-rc.d instead. Tag: mknod-in-maintainer-script Severity: serious Certainty: certain Ref: policy 10.6 Info: Maintainer scripts must not create device files directly. They should call MAKEDEV instead. . If mknod is being used to create a FIFO (named pipe), use mkfifo instead to avoid triggering this tag. Tag: maintainer-script-should-not-use-start-stop-daemon Severity: normal Certainty: certain Info: The maintainer script seems to call start-stop-daemon directly. Long-running daemons should be started and stopped via init scripts using invoke-rc.d rather than directly in maintainer scripts. Ref: policy 9.3.3.2 Tag: maintainer-script-removes-device-files Severity: serious Certainty: certain Ref: policy 10.6 Info: Maintainer scripts must not remove device files. This is left to the system administrator. Tag: read-in-maintainer-script Severity: serious Certainty: possible Ref: policy 3.9.1 Info: This maintainer script appears to use read to get information from the user. Prompting in maintainer scripts must be done by communicating through a program such as debconf which conforms to the Debian Configuration management specification, version 2 or higher. . This check can have false positives if read is used in a block with a redirection, in a function run in a pipe, or in other ways where standard input is provided in inobvious ways. If this is the case, please add an override for this tag. Tag: possible-bashism-in-maintainer-script Severity: normal Certainty: possible Ref: policy 10.4 Info: This script is marked as running under /bin/sh, but it seems to use a feature found in bash but not in the SUSv3 or POSIX shell specification. . Examples: '==' in a test, it should use '=' instead 'read' without a variable in the argument 'function' to define a function 'source' instead of '.' '. command args', passing arguments to commands via 'source' is not supported '{foo,bar}' instead of 'foo bar' '[[ test ]]' instead of '[ test ]' (requires a Korn shell) 'type' instead of 'which' or 'command -v' Tag: suidregister-used-in-maintainer-script Severity: important Certainty: certain Info: This script calls suidregister, a long-obsolete program that has been replaced by dpkg-statoverride. Tag: maintainer-script-needs-depends-on-update-inetd Severity: normal Certainty: certain Info: This script calls update-inetd, but the package does not depend or pre-depend on inet-superserver, any of the providers of inet-superserver which provide it, or update-inetd. . update-inetd has been moved from netbase into a separate package, so a dependency on netbase should be updated to depend on "openbsd-inetd | inet-superserver". Tag: maintainer-script-needs-depends-on-adduser Severity: normal Certainty: certain Info: This script calls adduser, but the package does not depend or pre-depend on the adduser package. Tag: maintainer-script-needs-depends-on-gconf2 Severity: normal Certainty: certain Info: This script calls gconf-schemas, which comes from the gconf2 package, but does not depend or pre-depend on gconf2. If you are using dh_gconf, add a dependency on ${misc:Depends} and dh_gconf will take care of this for you. Tag: maintainer-script-needs-depends-on-ucf Severity: normal Certainty: certain Info: This script calls ucf, but the package does not depend or pre-depend on the ucf package. Tag: maintainer-script-needs-depends-on-xml-core Severity: normal Certainty: certain Info: This script calls update-xmlcatalog, which comes from the xml-core package, but does not depend or pre-depend on xml-core. Packages that call update-xmlcatalog need to depend on xml-core. If you are using dh_installxmlcatalogs, add a dependency on ${misc:Depends} and dh_installxmlcatalogs will take care of this for you. Tag: maintainer-script-should-not-use-update-alternatives-remove Severity: normal Certainty: certain Info: update-alternatives --remove <alternative> foo is called in the postrm. This can be dangerous because at the time the postrm is executed foo has already been deleted and update-alternatives will ignore it while constructing its list of available alternatives. Then, if the /etc/alternatives symlink points at foo, update-alternatives won't recognize it and will mark the symlink as something site-specific. As such, the symlink will no longer be updated automatically and will be left dangling until update-alternatives --auto <alternative> is run by hand. . update-alternatives --remove should be called in the prerm instead. Ref: policy F, update-alternatives(8) Tag: maintainer-script-should-not-use-update-alternatives-set Severity: normal Certainty: certain Info: The maintainer script calls update-alternatives --set <alternative> foo or update-alternatives --config <alternative> or update-alternatives --set-selections. . This makes it impossible to distinguish between an alternative that's manually set because the user set it and one that's manually set because the package set it. Ref: update-alternatives(8) Tag: maintainer-script-should-not-use-deprecated-chown-usage Severity: normal Certainty: certain Info: chown user.group is called in one of the maintainer scripts. The correct syntax is chown user:group. Using "." as a separator is still supported by the GNU tools, but it will fail as soon as a system uses the "." in user or group names. Ref: chown(1) Tag: maintainer-script-should-not-hide-init-failure Severity: normal Certainty: certain Info: This script calls invoke-rc.d to run an init script but then, if the init script fails, exits successfully (using || exit 0). If the init script fails, the maintainer script should probably fail. . The most likely cause of this problem is that the package was built with a debhelper version suffering from Bug#337664 that inserted incorrect invoke-rc.d code in the generated maintainer script. The package needs to be reuploaded (could be bin-NMUd, no source changes needed). Tag: maintainer-script-calls-init-script-directly Severity: serious Certainty: certain Info: This script apparently runs an init script directly rather than using invoke-rc.d. The use of invoke-rc.d to invoke the /etc/init.d/* initscripts instead of calling them directly is required. Maintainer scripts may call the init script directly only if invoke-rc.d is not available. Ref: policy 9.3.3.2 Tag: maintainer-script-should-not-use-gconftool Severity: normal Certainty: possible Info: This script apparently runs gconftool or gconftool-2. It should probably be calling gconf-schemas or update-gconf-defaults instead. Tag: maintainer-script-should-not-use-fc-cache Severity: normal Certainty: possible Info: This script apparently runs fc-cache. Updating of the fontconfig cache files is now handled automatically by triggers, so running fc-cache from maintainer scripts is no longer necessary. Tag: install-info-used-in-maintainer-script Severity: serious Certainty: possible Info: This script apparently runs install-info. Updating the /usr/share/info/dir file is now handled automatically by triggers, so running install-info from maintainer scripts is no longer necessary. . If debhelper generated the maintainer script fragment, rebuilding the package with debhelper 7.2.17 or later will fix this problem. Tag: maintainer-script-should-not-use-dpkg-status-directly Severity: important Certainty: certain Info: The file /var/lib/dpkg/status is internal to dpkg, may disappear or change formats, and is not always a correct and complete record of installed packages while dpkg is running. Maintainer scripts should use dpkg-query instead. For the most common case of retrieving conffile information, use: . dpkg-query -W -f='${Conffiles}' <package> . instead. Ref: http://wiki.debian.org/DpkgConffileHandling Tag: maintainer-script-should-not-modify-netbase-managed-file Severity: serious Certainty: certain Info: The maintainer script modifies at least one of the files /etc/services, /etc/protocols, and /etc/rpc, which are managed by the netbase package. Instead of doing this, please file a wishlist bug against netbase to have an appropriate entry added. Ref: policy 11.2 Tag: maintainer-script-modifies-inetd-conf Severity: serious Certainty: certain Info: The maintainer script modifies /etc/inetd.conf directly. This file must not be modified directly; instead, use the update-inetd script or the DebianNet.pm Perl module. Ref: policy 11.2 Tag: maintainer-script-should-not-modify-ld-so-conf Severity: important Certainty: possible Info: This package appears to modify /etc/ld.so.conf and does not appear to be part of libc. Packages installing shared libraries in non-standard locations were previously permitted to modify /etc/ld.so.conf to add the non-standard path, but this permission was removed in Policy 3.8.3. . Packages containing shared libraries should either install them into /usr/lib or should require binaries built against them to set RPATH to find the library at run-time. Installing libraries in a different directory and modifying the run-time linker path is equivalent to installing them into /usr/lib except now conflicting library packages may cause random segfaults and difficult-to-debug problems instead of conflicts in the package manager. Tag: maintainer-script-should-not-use-install-sgmlcatalog Severity: important Certainty: certain Info: The maintainer script apparently runs install-sgmlcatalog. install-sgmlcatalog is deprecated and should only have been used in postinst or prerm to remove the entries from earlier packages. Given how long ago this transition was, consider removing it entirely. Tag: maintainer-script-should-not-use-service Severity: important Certainty: certain Experimental: yes Info: The maintainer script apparently runs the service command. This command is reserved for local administrators and must never be used by a Debian package. Tag: maintainer-script-should-not-use-adduser-system-without-home Severity: serious Certainty: certain Info: The maintainer script apparently runs 'adduser --system' but hardcodes a path under '/home' for the '--home' option or do not use the '--home' option. . The FHS says: /home is a fairly standard concept, but it is clearly a site-specific filesystem. The setup will differ from host to host. Therefore, no program should rely on this location. Ref: fhs homeuserhomedirectories Tag: maintainer-script-empty Severity: minor Certainty: certain Info: The maintainer script doesn't seem to contain any code other than comments and boilerplate (set -e, exit statements, and the case statement to parse options). While this is harmless in most cases, it is probably not what you wanted, may mean the package will leave unnecessary files behind until purged, and may even lead to problems in rare situations where dpkg would fail if no maintainer script was present. . If the package currently doesn't need to do anything in this maintainer script, it shouldn't be included in the package. Tag: maintainer-script-ignores-errors Severity: normal Certainty: certain Ref: policy 10.4 Info: The maintainer script doesn't seem to set the -e flag which ensures that the script's execution is aborted when any executed command fails. Tag: maintainer-script-without-set-e Severity: pedantic Certainty: certain Ref: policy 10.4 Info: The maintainer script passes -e to the shell on the #! line rather than using set -e in the body of the script. This is fine for normal operation, but if the script is run by hand with sh /path/to/script (common in debugging), -e will not be in effect. It's therefore better to use set -e in the body of the script. Tag: command-with-path-in-maintainer-script Severity: normal Certainty: certain Info: The indicated program run in a maintainer script has a prepended path. Programs called from maintainer scripts normally should not have a path prepended. dpkg ensures that the PATH is set to a reasonable value, and prepending a path may prevent the local administrator from using a replacement version of a command for some local reason. . If the path is required to test a program for existence, one of the suggested workarounds in the developer's reference can be used. Ref: policy 6.1, devref 6.4 Tag: maintainer-script-should-not-use-ancient-dpkg-epoch-check Severity: minor Certainty: certain Info: The package calls dpkg --assert-working-epoch in a maintainer script. This check is obsolete and has always returned true since dpkg 1.4.0.7, released 1997-01-25. Tag: maintainer-script-should-not-use-ancient-dpkg-multi-conrep-check Severity: minor Certainty: certain Info: The package calls dpkg --assert-multi-conrep in a maintainer script. This check is obsolete and has always returned true since dpkg 1.4.1.19, released 1999-10-30. Tag: package-uses-local-diversion Severity: serious Certainty: certain Ref: policy 3.9 Info: The maintainer script calls dpkg-divert with --local or without --package. This option is reserved for local administrators and must never be used by a Debian package. Tag: diversion-for-unknown-file Severity: important Certainty: certain Info: The maintainer script adds a diversion for a file that is not provided by this package. Tag: orphaned-diversion Severity: important Certainty: certain Info: A diversion was added for the file, but not removed. This means your package doesn't restore the previous state after removal. Tag: remove-of-unknown-diversion Severity: important Certainty: certain Info: The maintainer script removes a diversion that it didn't add. If you're cleaning up unnecessary diversions from older versions of the package, remove them in preinst or postinst instead of waiting for postrm to do it. Tag: script-uses-perl4-libs-without-dep Severity: normal Certainty: possible Info: This package includes perl scripts using obsoleted perl 4-era libraries. These libraries have been deprecated in perl in 5.14, and are likely to be removed from the core in perl 5.16. Please either remove references to these libraries, or add a dependency on libperl4-corelibs-perl | perl (<< 5.12.3-7) to this package. Tag: maintainer-script-has-unexpanded-debhelper-token Severity: normal Certainty: possible Info: Lintian has detected the presence of a #DEBEHELPER# token in the listed maintainer/control script. By default, dh_installdeb will remove the token when it makes a substitution in a script. . Please note that dh_installdeb does not substitute the #DEBHELPER# token in udebs. lintian-2.5.22ubuntu1/checks/debian-source-dir.desc0000664000000000000000000000511512310413144017043 0ustar Check-Script: debian-source-dir Author: Raphaël Hertzog Abbrev: dsd Type: source Info: This script looks for mistakes in debian/source/* files. Needs-Info: debfiles Tag: missing-debian-source-format Severity: wishlist Certainty: certain Info: Explicitly selecting a source format by putting the format in debian/source/format is recommended. This allows for future removal of the 1.0 default for the package source format and, depending on the source format, may allow unambiguous declaration of whether this package is native or non-native. . If you don't have a reason to stay with the old format for this package, please consider switching to "3.0 (quilt)" (for packages with a separate upstream tarball) or to "3.0 (native)" (for Debian native packages). . If you wish to keep using the old format, please create that file and put "1.0" in it to be explicit about the source package version. If you have problems with the 3.0 format, the dpkg maintainers are interested in hearing, at debian-dpkg@lists.debian.org, the (technical) reasons why the new formats do not suit you. Ref: dpkg-source(1), http://wiki.debian.org/Projects/DebSrc3.0 Tag: unknown-source-format Severity: serious Certainty: certain Info: debian/source/format contains an unknown source format. The formats officially supported by Debian are "3.0 (quilt)", "3.0 (native)" and "1.0". dpkg-source additionally supports "2.0", "3.0 (git)" and "3.0 (bzr)". Ref: dpkg-source(1) Tag: unknown-file-in-debian-source Severity: important Certainty: possible Info: The source package contains a file in debian/source/ that lintian doesn't know about. Currently the following files are recognized: . * format * include-binaries * lintian-overrides * options * patch-header . This tag is emitted in case you mistyped the name of one of the above files. If that's not the case and if the file can be legitimately be expected in source packages, please file a bug against lintian asking for the file to be recognized. Tag: git-patches-not-exported Severity: important Certainty: possible Info: The source package contains non-empty debian/source/git-patches, which indicates it was intended to have patches exported via the quilt-patches-deb-export-hook of gitpkg. It seems the patches were not exported in this source package. . This tag is generated by building the source package without gitpkg (or with a misconfigured gitpkg) and without manually exporting the patches. See the above mentioned hook file (in /usr/share/gitpkg/hooks) for information on how to manually export patches. lintian-2.5.22ubuntu1/checks/control-file.desc0000664000000000000000000002216512314366011016154 0ustar Check-Script: control-file Author: Marc 'HE' Brockschmidt Abbrev: dctl Type: source Needs-Info: debfiles Info: This script checks debian/control files in source packages Tag: debian-control-file-uses-obsolete-national-encoding Severity: serious Certainty: certain Ref: policy 5.1 Info: The Debian control file should be valid UTF-8, an encoding of the Unicode character set. . There are many ways to convert a control from an obsoleted encoding like ISO-8859-1; you may for example use "iconv" like this: . $ iconv -f ISO-8859-1 -t UTF-8 control > control.new $ mv control.new control Tag: build-info-in-binary-control-file-section Severity: serious Certainty: certain Ref: policy 5.2 Info: The control file has a Build-Depends, Build-Depends-Indep, Build-Conflicts, or Build-Conflicts-Indep field in a binary section. These specify source package relationships, and should be in the source section of the control file. Tag: debian-control-has-unusual-field-spacing Severity: pedantic Certainty: certain Ref: policy 5.1 Info: The field on this line of debian/control has whitespace other than a single space after the colon. This is explicitly permitted in the syntax of Debian control files, but as Policy says, it is conventional to put a single space after the colon. Tag: debian-control-repeats-field-name-in-value Severity: normal Certainty: possible Ref: policy 5.1 Info: The field on this line of debian/control repeats the field name in the value of the field. As an example: . Maintainer: Maintainer: Some Name <maintainer@mail.example.com> Tag: binary-control-field-duplicates-source Severity: wishlist Certainty: certain Info: In debian/control, this field for a binary package duplicates the value inherited from the source package paragraph. This doesn't hurt anything, but you may want to take advantage of the inheritance and set the value in only one place. It prevents missing duplicate places that need to be fixed if the value ever changes. Tag: debian-control-file-is-a-symlink Severity: normal Certainty: certain Info: The debian/control file is a symlink rather than a regular file. Using symlinks for required source package files is unnecessary and makes package checking and manipulation more difficult. If the control file should be available in the source package under multiple names, make debian/control the real file and the other names symlinks to it. Tag: no-section-field-for-source Severity: normal Certainty: certain Ref: policy 5.2 Info: The package does not have a "Section:" field in the source package section of its control file. The Section field is required for source packages at the request of the Debian ftp-masters. Tag: section-area-mismatch Severity: important Certainty: certain Info: The debian/control file places the indicated binary package in a different archive area (main, contrib, non-free) than its source package or other binary packages built from the same source package. The source package and any binary packages it builds must be in the same area of the archive, with the single exception that source packages in main may also build binary packages in contrib. Tag: xs-vcs-header-in-debian-control Severity: wishlist Certainty: certain Info: There is an XS-Vcs-* field in the debian/control file. As of dpkg 1.14.6, the XS- prefix is no longer necessary. dpkg now recognizes these headers and handles them correctly. Consider removing the XS- prefix for this field. Tag: xc-package-type-in-debian-control Severity: pedantic Certainty: certain Info: The debian/control file contains an XC-Package-Type field. As of dpkg-dev 1.15.7, the dpkg development utilities recognize Package-Type as an official field name and do not add it to binary packages (the previous concern with the dpkg-dev-supported Package-Type field). XC-Package-Type should generally now be replaced with Package-Type. Tag: stronger-dependency-implies-weaker Severity: normal Certainty: certain Ref: policy 7.2 Info: In the debian/control stanza for the given package, a stronger dependency field implies one of the dependencies in a weaker dependency field. In other words, the Depends field of the package requires that one of the packages listed in Recommends or Suggests be installed, or a package is listed in Recommends as well as Suggests. . Current versions of dpkg-gencontrol will silently fix this problem by removing the weaker dependency, but it may indicate a more subtle bug (misspelling or forgetting to remove the stronger dependency when it was moved to the weaker field). Tag: package-depends-on-itself Severity: normal Certainty: certain Ref: policy 7.2 Info: The given package declares a dependency on itself in its debian/control stanza. Current versions of dpkg-gencontrol will silently fix this problem by removing the dependency, but it may indicate a more subtle bug (misspelling or cutting and pasting the wrong package name). Tag: duplicate-short-description Severity: wishlist Certainty: possible Info: The listed binary packages all share the same short description (the first line of the Description control field). The package names may provide enough additional information to distinguish between the packages, but it's common to also add a word or two to the short description to clarify the difference. Tag: duplicate-long-description Severity: wishlist Certainty: certain Info: The listed binary packages all share the same extended description. Some additional information in the extended description explaining what is in each package and how it differs from the other packages is useful, particularly for users who aren't familiar with Debian's package naming conventions. Tag: duplicate-in-relation-field Severity: pedantic Certainty: certain Info: The given field in the debian/control file contains relations that are either identical or imply each other. The less restrictive one can be removed. This is done automatically by dpkg-source and dpkg-gencontrol, so this does not affect the generated package. Tag: missing-separator-between-items Severity: important Certainty: certain Info: The given field in the debian/control file contains a list of items separated by commas and pipes. It appears a separator was missed between two items. This can lead to bogus or incomplete dependencies, conflicts etc. Tag: obsolete-relation-form-in-source Ref: policy 7.1 Severity: serious Certainty: certain Info: The forms "<" and ">" mean "<=" and ">=", not "<<" and ">>" as one might expect. These forms were marked obsolete and must no longer be used. Use the longer forms instead. Tag: package-depends-on-hardcoded-libc Severity: normal Certainty: certain Info: The given package declares a dependency on libc directly instead of using ${shlibs:Depends} in its debian/control stanza. Tag: weak-library-dev-dependency Severity: important Certainty: possible Ref: policy 8.5 Info: The given package appears to be a shared library -dev package, but the dependency on what seems to be a corresponding shared library package does not force the same package version. To ensure that compiling and linking works properly, and that the symlinks in the -dev package point to the correct files in the shared library package, a -dev package should normally use (= ${binary:Version}) for the dependency on the shared library package. . Sometimes, such as for -dev packages that are architecture-independent to not break binNMUs or when one doesn't want to force a tight dependency, a weaker dependency is warranted. Something like (>= ${source:Upstream-Version}), (<< ${source:Upstream-Version}+1~), possibly using ${source:Version} instead, is the right approach. The goal is to ensure that a new upstream version of the library package doesn't satisfy the -dev package dependency, since the minor version of the shared library may have changed, breaking the *.so links. Tag: syntax-error-in-control-file Severity: important Certainty: possible Info: The control file contains a syntax error. . This issue may hide other issues as Lintian skips some checks on the file in this case. Tag: control-file-contains-dh_make-vcs-comment Severity: normal Certainty: certain Info: The control file contains commented-out VCS-* lines, most probably a result of dh_make. These URLs should either be valid and uncommented, or removed. Tag: stageX-profile-used-but-no-binary-package-dropped Severity: normal Certainty: certain Info: You used a stage1 or stage2 build profile restriction in the build dependencies but you did not mark any binary packages as not being built with the used profile activated. Using a stage1 or stage2 build profile restriction means that you intend to change the build process in a way such that some of the build results will be different or not generated at all. All binary packages which would provide different functionality, would be empty or not be built at all under the stage1 or stage2 profiles must be marked as not being generated with the Build-Profiles field. lintian-2.5.22ubuntu1/checks/huge-usr-share.pm0000664000000000000000000000432712311317610016112 0ustar # huge-usr-share -- lintian check script -*- perl -*- # Copyright (C) 2004 Jeroen van Wolffelaar # # 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::huge_usr_share; use strict; use warnings; use autodie; use Lintian::Tags qw(tag); # Threshold in kB of /usr/share to trigger this warning. Consider that the # changelog alone can be quite big, and cannot be moved away. my $THRESHOLD_SIZE_SOFT = 2048; my $THRESHOLD_SIZE_HARD = 4096; my $THRESHOLD_PERC = 50; sub run { my (undef, undef, $info) = @_; # Skip architecture-dependent packages. my $arch = $info->field('architecture', ''); return if $arch eq 'all'; # Add up the space taken by the package and the space taken by # just the files in /usr/share. Convert the totals to kilobytes. my ($size, $size_usrshare) = (0, 0); for my $file ($info->sorted_index) { $size += $file->size; if ($file =~ m,usr/share/,) { $size_usrshare += $file->size; } } $size = int($size / 1024); $size_usrshare = int($size_usrshare / 1024); if ($size_usrshare > $THRESHOLD_SIZE_SOFT) { my $perc = int(100 * $size_usrshare / $size); if ($size_usrshare > $THRESHOLD_SIZE_HARD || $perc > $THRESHOLD_PERC) { tag 'arch-dep-package-has-big-usr-share', "${size_usrshare}kB $perc%"; } } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/ocaml.desc0000664000000000000000000000467612153060143014657 0ustar Check-Script: ocaml Author: Stephane Glondu Abbrev: ocaml Type: binary Info: This looks for common mistakes in OCaml binary packages. Needs-Info: file-info, ar-info, index Tag: ocaml-dangling-cmxa Severity: serious Certainty: certain Info: This package provides a .cmxa library without its implementation (.a static library). Tag: ocaml-dangling-cmx Severity: serious Certainty: certain Info: This package provides a .cmx module without its implementation (.o object file which may be embedded in a .a static library installed in the same directory). Tag: ocaml-dangling-cmxs Severity: normal Certainty: possible Info: This package seems to be a library package, and provides a native plugin (.cmxs). If the plugin is meant to be used as a library for other plugins, it should be shipped as bytecode (.cma or .cmo) as well. Tag: ocaml-dev-file-not-in-usr-lib-ocaml Severity: pedantic Certainty: possible Info: This development package installs OCaml development files (.cmi, .cmx or .cmxa) outside /usr/lib/ocaml. Such files are used only by compilation and should be in a subdirectory of OCaml standard library path. Tag: ocaml-stray-cmo Severity: minor Certainty: wild-guess Info: This package installs a .cma file and a .cmo file with the same base name. Most of the time, the module provided by the .cmo file is also linked in the .cma file, so the .cmo file is useless. Tag: ocaml-dangling-cmi Severity: wishlist Certainty: possible Info: This package installs a compiled interface (.cmi) without its text version (.mli). The text version should also be installed for documentation purpose. If the module involved doesn't have a .mli, its source code (.ml) should be installed instead. Tag: ocaml-dev-file-in-nondev-package Severity: pedantic Certainty: possible Info: This package doesn't appear to be a development package, but installs OCaml development files (.cmi, .cmx or .cmxa). These files should be moved to a development package. Tag: ocaml-meta-without-suggesting-findlib Severity: pedantic Certainty: certain Info: This development package installs a META file but doesn't depend on ocaml-findlib. Libraries with META file are easier to use with findlib. The package should at least suggest ocaml-findlib. lintian-2.5.22ubuntu1/checks/infofiles.pm0000664000000000000000000001212412311317611015224 0ustar # infofiles -- lintian check script -*- perl -*- # Copyright (C) 1998 Christian Schwarz # Copyright (C) 2001 Josip Rodin # # 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::infofiles; use strict; use warnings; use autodie; use Lintian::Tags qw(tag); use Lintian::Util qw(fail open_gz normalize_pkg_path); use File::Basename qw(fileparse); sub run { my (undef, undef, $info) = @_; # Read package contents... foreach my $file ($info->sorted_index) { my $file_info = $info->file_info($file); my ($fname, $path) = fileparse($file); next unless ($file->is_symlink or $file->is_file) and ($path =~ m,^usr/share/info/, or $path =~ m,^usr/info/,); # Ignore dir files. That's a different error which we already catch in # the files check. next if $fname =~ /^dir(?:\.old)?(?:\.gz)?/; # Analyze the file names making sure the documents are named # properly. Note that Emacs 22 added support for images in # info files, so we have to accept those and ignore them. # Just ignore .png files for now. my @fname_pieces = split /\./, $fname; my $ext = pop @fname_pieces; if ($ext eq 'gz') { # ok! if ($file->is_file) { # compressed with maximum compression rate? if ($file_info !~ m/gzip compressed data/o) { tag 'info-document-not-compressed-with-gzip', $file; } else { if ($file_info !~ m/max compression/o) { tag 'info-document-not-compressed-with-max-compression', $file; } } } } elsif ($ext eq 'png') { next; } else { push(@fname_pieces, $ext); tag 'info-document-not-compressed', $file; } my $infoext = pop @fname_pieces; unless ($infoext && $infoext =~ /^info(-\d+)?$/) { # it's not foo.info unless (!@fname_pieces) { # it's not foo{,-{1,2,3,...}} tag 'info-document-has-wrong-extension', $file; } } # If this is the main info file (no numeric extension). make # sure it has appropriate dir entry information. if ($fname !~ /-\d+\.gz/ && $file_info =~ /gzip compressed data/) { if ($file->is_symlink && !is_ancestor_of($info->unpacked, $file)) { # unsafe symlink, skip next; } my $fd = open_gz($info->unpacked($file)); local $_; my ($section, $start, $end); while (<$fd>) { $section = 1 if /^INFO-DIR-SECTION\s+\S/; $start = 1 if /^START-INFO-DIR-ENTRY\b/; $end = 1 if /^END-INFO-DIR-ENTRY\b/; } close($fd); tag 'info-document-missing-dir-section', $file unless $section; tag 'info-document-missing-dir-entry', $file unless $start && $end; } # Check each [image src=""] form in the info files. The src # filename should be in the package. As of Texinfo 5 it will # be something.png or something.jpg, but that's not enforced. # # See Texinfo manual (info "(texinfo)Info Format Image") for # details of the [image] form. Bytes \x00,\x08 introduce it # (and distinguishes it from [image] appearing as plain text). # # String src="..." part has \" for literal " and \\ for # literal \, though that would be unlikely in filenames. For # the tag() message show $src unbackslashed since that's the # filename sought. # if ($file->is_file && $fname =~ /\.info(?:-\d+)?\.gz$/) { my $fd = open_gz($info->unpacked($file)); while (my $line = <$fd>) { while ($line =~ /[\0][\b]\[image src="((?:\\.|[^\"])+)"/smg) { my $src = $1; $src =~ s/\\(.)/$1/g; # unbackslash $info->index(normalize_pkg_path('usr/share/info', $src)) or tag 'info-document-missing-image-file', $file, $src; } } close($fd); } } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/changes-file.pm0000664000000000000000000001176112311317577015614 0ustar # changes-file -- lintian check script -*- perl -*- # Copyright (C) 1998 Christian Schwarz and Richard Braakman # # This program is free software. It is distributed 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::changes_file; use strict; use warnings; use autodie; use Lintian::Tags qw(tag); use Lintian::Check qw(check_maintainer); use Lintian::Data; use Lintian::Util qw(get_file_checksum); my $KNOWN_DISTS = Lintian::Data->new('changes-file/known-dists'); sub run { my ($pkg, undef, $info) = @_; # If we don't have a Format key, something went seriously wrong. # Tag the file and skip remaining processing. if (!$info->field('format')) { tag 'malformed-changes-file'; return; } # Description is mandated by dak, but only makes sense if binary # packages are included. Don't tag pure source uploads. if ( !$info->field('description') && $info->field('architecture', '') ne 'source') { tag 'no-description-in-changes-file'; } # check distribution field if (defined $info->field('distribution')) { my @distributions = split /\s+/o, $info->field('distribution'); for my $distribution (@distributions) { if ($distribution eq 'UNRELEASED') { # ignore } else { my $dist = $distribution; if ($dist !~ m/^(?:sid|unstable|experimental)/) { # Strip common "extensions" for distributions # (except sid and experimental, where they would # make no sense) $dist =~ s/- (?:backports(?:-sloppy)? |proposed(?:-updates)? |updates |security |volatile)$//xsmo; } if (!$KNOWN_DISTS->known($dist)) { # bad distribution entry tag 'bad-distribution-in-changes-file', $distribution; } } } if ($#distributions > 0) { tag 'multiple-distributions-in-changes-file', $info->field('distribution'); } } # Urgency is only recommended by Policy. if (!$info->field('urgency')) { tag 'no-urgency-in-changes-file'; } else { my $urgency = lc $info->field('urgency'); $urgency =~ s/ .*//o; unless ($urgency =~ /^(?:low|medium|high|critical|emergency)$/o) { tag 'bad-urgency-in-changes-file', $info->field('urgency'); } } # Changed-By is optional in Policy, but if set, must be # syntactically correct. It's also used by dak. if ($info->field('changed-by')) { check_maintainer($info->field('changed-by'), 'changed-by'); } my $files = $info->files; my $path = readlink($info->lab_data_path('changes')); $path =~ s#/[^/]+$##; foreach my $file (keys %$files) { my $file_info = $files->{$file}; # check section if ( ($file_info->{section} eq 'non-free') or ($file_info->{section} eq 'contrib')) { tag 'bad-section-in-changes-file', $file, $file_info->{section}; } foreach my $alg (qw(sha1 sha256)) { my $checksum_info = $file_info->{checksums}{$alg}; if (defined $checksum_info) { if ($file_info->{size} != $checksum_info->{filesize}) { tag 'file-size-mismatch-in-changes-file', $file, $file_info->{size} . ' != ' .$checksum_info->{filesize}; } } } # check size my $filename = "$path/$file"; my $size = -s $filename; if ($size ne $file_info->{size}) { tag 'file-size-mismatch-in-changes-file', $file, $file_info->{size} . " != $size"; } # check checksums foreach my $alg (qw(md5 sha1 sha256)) { next unless exists $file_info->{checksums}{$alg}; my $real_checksum = get_file_checksum($alg, $filename); if ($real_checksum ne $file_info->{checksums}{$alg}{sum}) { tag 'checksum-mismatch-in-changes-file', $alg, $file; } } } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/md5sums.pm0000664000000000000000000000712312311317612014647 0ustar # md5sums -- lintian check script -*- perl -*- # Copyright (C) 1998 Christian Schwarz and Richard Braakman # # 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::md5sums; use strict; use warnings; use autodie; use Lintian::Tags qw(tag); use Lintian::Util qw(dequote_name); sub run { my (undef, undef, $info) = @_; my $control = $info->control('md5sums'); my (%control_entry, %info_entry); # The md5sums file should not be a symlink. If it is, the best # we can do is to leave it alone. return if -l $control; # Is there a md5sums control file? unless (-f $control) { # ignore if package contains no files return if -z $info->lab_data_path('md5sums'); # check if package contains non-conffiles # debhelper doesn't create entries in md5sums # for conffiles since this information would # be redundant my $only_conffiles = 1; foreach my $file ($info->sorted_index) { # Skip non-files, they will not appear in the md5sums file next unless $file->is_regular_file; unless ($info->is_conffile($file)) { $only_conffiles = 0; last; } } tag 'no-md5sums-control-file' unless $only_conffiles; return; } # Is it empty? Then skip it. Tag will be issued by control-files if (-z $control) { return; } # read in md5sums control file open(my $fd, '<', $control); LINE: while (my $line = <$fd>) { chop($line); next LINE if $line =~ m/^\s*$/; if ($line =~ m{^(?'escaped'\\)?(?'md5sum'[a-f0-9]+)\s*(?:\./)?(?'name'\S.*)$} ) { my $md5sum = $+{'md5sum'}; if(length($md5sum) != 32) { tag 'malformed-md5sums-control-file', "line $."; next LINE; } my $name = $+{'name'}; my $escaped = $+{'escaped'}; if ($escaped) { $name = dequote_name($name); } $control_entry{$name} = $md5sum; } else { tag 'malformed-md5sums-control-file', "line $."; next LINE; } } close($fd); for my $file (keys %control_entry) { my $md5sum = $info->md5sums->{$file}; if (not defined $md5sum) { tag 'md5sums-lists-nonexistent-file', $file; } elsif ($md5sum ne $control_entry{$file}) { tag 'md5sum-mismatch', $file; } delete $info_entry{$file}; } for my $file (keys %{ $info->md5sums }) { next if $control_entry{$file}; tag 'file-missing-in-md5sums', $file unless ($info->is_conffile($file) || $file =~ m%^var/lib/[ai]spell/.%o); } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/copyright-file.pm0000664000000000000000000003332312311317600016175 0ustar # copyright-file -- lintian check script -*- perl -*- # Copyright (C) 1998 Christian Schwarz # # 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::copyright_file; use strict; use warnings; use autodie; use constant { DH_MAKE_TODO_BOILERPLATE_1 =>join(q{ }, '# Please also look if there are files or directories', "which have a\n\# different copyright/license attached", 'and list them here.'), DH_MAKE_TODO_BOILERPLATE_2 =>join(q{ }, '# If you want to use GPL v2 or later for the /debian/\*', "files use\n\# the following clauses, or change it to suit.", 'Delete these two lines'), }; use Encode qw(decode); use List::MoreUtils qw(any); use Lintian::Check qw(check_spelling); use Lintian::Data (); use Lintian::Tags qw(tag); use Lintian::Util qw(slurp_entire_file file_is_encoded_in_non_utf8); our $KNOWN_ESSENTIAL = Lintian::Data->new('fields/essential'); our $KNOWN_COMMON_LICENSES = Lintian::Data->new('copyright-file/common-licenses'); sub run { my ($pkg, undef, $info, undef, $group) = @_; my $found = 0; my $linked = 0; my $path = "usr/share/doc/$pkg"; if ($info->index("$path/copyright.gz")) { tag 'copyright-file-compressed'; $found = 1; } if (my $index_info = $info->index("$path/copyright")) { $found = 1; if ($index_info->is_symlink) { tag 'copyright-file-is-symlink'; $linked = 1; # Fall through here - coll/copyright-file protects us # from reading through an "evil" link. } } if (not $found) { my $index_info = $info->index($path); if (defined $index_info && $index_info->is_symlink) { my $link = $index_info->link; # check if this symlink references a directory elsewhere if ($link =~ m,^(?:\.\.)?/,) { tag 'usr-share-doc-symlink-points-outside-of-usr-share-doc', $link; return; } # The symlink may point to a subdirectory of another # /usr/share/doc directory. This is allowed if this # package depends on link and both packages come from the # same source package. # # Policy requires that packages be built from the same # source if they're going to do this, which by my (rra's) # reading means that we should have a strict version # dependency. However, in practice the copyright file # doesn't change a lot and strict version dependencies # cause other problems (such as with arch: any / arch: all # package combinations and binNMUs). # # We therefore just require the dependency for now and # don't worry about the version number. $link =~ s,/.*,,; if (not depends_on($info, $link)) { tag 'usr-share-doc-symlink-without-dependency', $link; return; } # Check if the link points to a package from the same source. check_cross_link($group, $link); return; } } if (not $found) { # #522827: special exception for perl for now tag 'no-copyright-file' unless $pkg eq 'perl'; return; } my $dcopy = $info->lab_data_path('copyright'); # check that copyright is UTF-8 encoded my $line = file_is_encoded_in_non_utf8($dcopy); if ($line) { tag 'debian-copyright-file-uses-obsolete-national-encoding', "at line $line"; } # check contents of copyright file $_ = slurp_entire_file($dcopy); if (m,\r,) { tag 'copyright-has-crs'; } my $wrong_directory_detected = 0; if (m{ (usr/share/common-licenses/ ( [^ \t]*? ) \.gz) }xsm) { my ($path, $license) = ($1, $2); if ($KNOWN_COMMON_LICENSES->known($license)) { tag 'copyright-refers-to-compressed-license', $path; } } # Avoid complaining about referring to a versionless license file # if the word "version" appears nowhere in the copyright file. # This won't catch all of our false positives for GPL references # that don't include a specific version number, but it will get # the obvious ones. if (m,(usr/share/common-licenses/(L?GPL|GFDL))([^-]),i) { my ($ref, $license, $separator) = ($1, $2, $3); if ($separator =~ /[\d\w]/) { tag 'copyright-refers-to-nonexistent-license-file', "$ref$separator"; } elsif (m,\b(?:any|or)\s+later(?:\s+version)?\b,i || m,License: $license-[\d\.]+\+,i || m,as Perl itself,i || m,License-Alias:\s+Perl, || m,License:\s+Perl,) { tag 'copyright-refers-to-symlink-license', $ref; } else { tag 'copyright-refers-to-versionless-license-file', $ref if /\bversion\b/; } } # References to /usr/share/common-licenses/BSD are deprecated as of Policy # 3.8.5. if (m,/usr/share/common-licenses/BSD,) { tag 'copyright-refers-to-deprecated-bsd-license-file'; } if (m,(usr/share/common-licences),) { tag 'copyright-refers-to-incorrect-directory', $1; $wrong_directory_detected = 1; } if (m,usr/share/doc/copyright,) { tag 'copyright-refers-to-old-directory'; $wrong_directory_detected = 1; } if (m,usr/doc/copyright,) { tag 'copyright-refers-to-old-directory'; $wrong_directory_detected = 1; } # Lame check for old FSF zip code. Try to avoid false positives from other # Cambridge, MA addresses. if (m/(?:Free\s*Software\s*Foundation.*02139|02111-1307)/s) { tag 'old-fsf-address-in-copyright-file'; } # Whether the package is covered by the GPL, used later for the # libssl check. my $gpl; if ( length($_) > 12_000 and ( m/ \b \QGNU GENERAL PUBLIC LICENSE\E \s* \QTERMS AND CONDITIONS FOR COPYING,\E \s* \QDISTRIBUTION AND MODIFICATION\E\b/mx or ( m/\bGNU GENERAL PUBLIC LICENSE\s*Version 3/ and m/\bTERMS AND CONDITIONS\s/)) ) { tag 'copyright-file-contains-full-gpl-license'; $gpl = 1; } if ( length($_) > 12_000 and m/\bGNU Free Documentation License\s*Version 1\.2/ and m/\b1\. APPLICABILITY AND DEFINITIONS/) { tag 'copyright-file-contains-full-gfdl-license'; } if ( length($_) > 10_000 and m/\bApache License\s+Version 2\.0,/ and m/TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION/) { tag 'copyright-file-contains-full-apache-2-license'; } # wtf? if ((m,common-licenses(/\S+),) && (!m,/usr/share/common-licenses/,)) { tag 'copyright-does-not-refer-to-common-license-file', $1; } # This check is a bit prone to false positives, since some other # licenses mention the GPL. Also exclude any mention of the GPL # following what looks like mail headers, since sometimes e-mail # discussions of licensing are included in the copyright file but # aren't referring to the license of the package. if ( m,/usr/share/common-licenses, || m/Zope Public License/ || m/LICENSE AGREEMENT FOR PYTHON 1.6.1/ || m/LaTeX Project Public License/ || m/(?:^From:.*^To:|^To:.*^From:).*(?:GNU General Public License|GPL)/ms || m/AFFERO GENERAL PUBLIC LICENSE/ || m/GNU Free Documentation License[,\s]*Version 1\.1/ || m/CeCILL FREE SOFTWARE LICENSE AGREEMENT/ #v2.0 || m/FREE SOFTWARE LICENSING AGREEMENT CeCILL/ #v1.1 || m/CNRI OPEN SOURCE GPL-COMPATIBLE LICENSE AGREEMENT/ || m/compatible\s+with\s+(?:the\s+)?(?:GNU\s+)?GPL/ || m/(?:GNU\s+)?GPL\W+compatible/ || m/was\s+previously\s+(?:distributed\s+)?under\s+the\s+GNU/ || m/means\s+either\s+the\s+GNU\s+General\s+Public\s+License/ || $wrong_directory_detected ) { # False positive or correct reference. Ignore. } elsif (m/GNU Free Documentation License/i or m/\bGFDL\b/) { tag 'copyright-should-refer-to-common-license-file-for-gfdl'; } elsif (m/GNU (?:Lesser|Library) General Public License/i or m/\bLGPL\b/){ tag 'copyright-should-refer-to-common-license-file-for-lgpl'; } elsif (m/GNU General Public License/i or m/\bGPL\b/) { tag 'copyright-should-refer-to-common-license-file-for-gpl'; $gpl = 1; } elsif (m/Apache License\s+,? Version 2\.0/i or m/\bApache-2(?:\.0)?\b/) { tag 'copyright-should-refer-to-common-license-file-for-apache-2'; } if (m,(?:under )?(?:the )?(?:same )?(?:terms )?as Perl itself,i && !m,usr/share/common-licenses/,) { tag 'copyright-file-lacks-pointer-to-perl-license'; } # Checks for various packaging helper boilerplate. if ( m,\,o or m,\,o or m,\,o or m,\,o or m,Upstream Author\(s\),o or m,\,o or m,\,o or m,\,o or m,\Q\E,ox or m,\,o or m,\,o ) { tag 'helper-templates-in-copyright'; } if (m/This copyright info was automatically extracted/o) { tag 'copyright-contains-dh-make-perl-boilerplate'; } if (m,url://,o) { tag 'copyright-has-url-from-dh_make-boilerplate'; } if ( index($_, DH_MAKE_TODO_BOILERPLATE_1) != -1 or index($_, DH_MAKE_TODO_BOILERPLATE_2) != -1) { tag 'copyright-contains-dh_make-todo-boilerplate'; } if (m,The\s+Debian\s+packaging\s+is\s+\(C\)\s+\d+,io) { tag 'copyright-with-old-dh-make-debian-copyright'; } # Bad licenses. if (m/The\s+PHP\s+Licen[cs]e,?\s+version\s+2/si) { tag 'copyright-refers-to-bad-php-license'; } if (m/The\s+PHP\s+Licen[cs]e,?\s+version\s+3\.0[^\d]/si) { tag 'copyright-refers-to-problematic-php-license'; } # Other flaws in the copyright phrasing or contents. if ( $found && !$linked && !/(?:Copyright|Copr\.|\302\251)(?:.*|[\(C\):\s]+)\b\d{4}\b |\bpublic\s+domain\b/xi ) { tag 'copyright-without-copyright-notice'; } check_spelling('spelling-error-in-copyright', $_, undef, $group->info->spelling_exceptions); # Now, check for linking against libssl if the package is covered # by the GPL. (This check was requested by ftp-master.) First, # see if the package is under the GPL alone and try to exclude # packages with a mix of GPL and LGPL or Artistic licensing or # with an exception or exemption. if ($gpl || m,/usr/share/common-licenses/GPL,) { unless (m,exception|exemption|/usr/share/common-licenses/(?!GPL)\S,) { my @depends; if (defined $info->field('depends')) { @depends = split(/\s*,\s*/, scalar $info->field('depends')); } if (defined $info->field('pre-depends')) { push @depends, split(/\s*,\s*/, scalar $info->field('pre-depends')); } if (any { /^libssl[0-9.]+(?:\s|\z)/ && !/\|/ } @depends) { tag 'possible-gpl-code-linked-with-openssl'; } } } return; } # # ----------------------------------- # Returns true if the package whose information is in $info depends $package # or if $package is essential. sub depends_on { my ($info, $package) = @_; return 1 if $KNOWN_ESSENTIAL->known($package); return 1 if $info->relation('strong')->implies($package); return 0; } # Checks cross pkg links for /usr/share/doc/$pkg links sub check_cross_link { my ($group, $fpkg) = @_; my $src = $group->get_source_processable(); if ($src) { # source package is available; check it's list of binary return if defined $src->info->binary_package_type($fpkg); tag 'usr-share-doc-symlink-to-foreign-package', $fpkg; } else { # The source package is not available, but the binary could # be present anyway; If they are in the same group, they claim # to have the same source (and source version) foreach my $proc ($group->get_processables('binary')){ return if($proc->pkg_name eq $fpkg); } # It was not, but since the source package was not present, we cannot # tell if it is foreign or not at this point. #<<< No perltidy - tag name too long tag 'cannot-check-whether-usr-share-doc-symlink-points-to-foreign-package'; #>>> } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/init.d.desc0000664000000000000000000003560312310413144014741 0ustar Check-Script: init.d Author: Christian Schwarz Abbrev: ini Type: binary Info: Check if a binary package conforms to policy with respect to scripts in /etc/init.d. Needs-Info: init.d, bin-pkg-control Tag: duplicate-updaterc.d-calls-in-postinst Severity: important Certainty: certain Info: The postinst script calls update-rc.d several times for the same /etc/init.d script. Tag: output-of-updaterc.d-not-redirected-to-dev-null Severity: wishlist Certainty: certain Info: The output messages of the update-rc.d command should be redirected to /dev/null because it is currently very chatty per default. Tag: preinst-calls-updaterc.d Severity: important Certainty: certain Info: The preinst package calls update-rc.d. Instead, you should call it in the postinst script. Ref: policy 9.3.3.1 Tag: duplicate-updaterc.d-calls-in-postrm Severity: important Certainty: certain Info: The postrm script calls update-rc.d several times for the same /etc/init.d script. Tag: prerm-calls-updaterc.d Severity: important Certainty: certain Info: The prerm package calls update-rc.d. Instead, you should call it in the postrm script. Ref: policy 9.3.3.1 Tag: postrm-does-not-call-updaterc.d-for-init.d-script Severity: important Certainty: certain Info: An /etc/init.d script which has been registered in the postinst script is not de-registered in the postrm script. Ref: policy 9.3.3.1 Tag: postrm-contains-additional-updaterc.d-calls Severity: important Certainty: certain Info: The postrm de-registers an /etc/init.d script which has not been registered in the postinst script before. Tag: init.d-script-not-marked-as-conffile Severity: important Certainty: wild-guess Ref: policy 9.3.2 Info: /etc/init.d scripts should be marked as conffiles. . This is usually an error, but the Policy allows for managing these files manually in maintainer scripts and Lintian cannot reliably detect that. Tag: init.d-script-does-not-implement-required-option Severity: important Certainty: certain Ref: policy 9.3.2 Info: The /etc/init.d scripts have to support the following command line arguments: start, stop, restart, force-reload. Tag: init.d-script-does-not-implement-optional-option Severity: wishlist Certainty: certain Ref: http://wiki.debian.org/LSBInitScripts Info: The /etc/init.d script does not implement the status option. This is not required by the Policy, but often requested by users. Tag: init.d-script-not-included-in-package Severity: important Certainty: certain Info: The /etc/init.d script is registered in the postinst script, but is not included in the package. Tag: script-in-etc-init.d-not-registered-via-update-rc.d Severity: normal Certainty: possible Info: The package installs an /etc/init.d script which is not registered in the postinst script. This is usually a bug, unless you omit the links intentionally for some reason or create the links some other way. Tag: upstart-job-in-etc-init.d-not-registered-via-update-rc.d Severity: normal Certainty: possible Info: The package installs an upstart-job in /etc/init.d which is not registered in the postinst script. On non-upstart systems this is usually a bug, unless you omit the links intentionally for some reason or create the links some other way. . This tag should only be emitted for vendors that do not use upstart by default (such as Debian). If this tag is emitted by a vendor using upstart (e.g. Ubuntu), it may be a misconfiguration of their Lintian vendor profile. Tag: init.d-script-has-duplicate-lsb-section Severity: important Certainty: certain Ref: http://wiki.debian.org/LSBInitScripts Info: This /etc/init.d script has more than one LSB keyword section. These sections start with ### BEGIN INIT INFO and end with ### END INIT INFO. There should be only one such section per init script. Tag: init.d-script-has-unterminated-lsb-section Severity: important Certainty: certain Ref: http://wiki.debian.org/LSBInitScripts Info: This /etc/init.d script has an LSB keyword section starting with ### BEGIN INIT INFO but either has no matching ### END INIT INFO or has lines between those two markers that are not comments. The line number given is the first line that doesn't look like part of an LSB keyword section. There must be an end marker after all the keyword settings and there must not be any lines between those markers that do not begin with #. Tag: init.d-script-has-duplicate-lsb-keyword Severity: normal Certainty: certain Ref: http://wiki.debian.org/LSBInitScripts Info: The given keyword was set twice in the LSB keyword section in this /etc/init.d script. This is probably a mistake; the behavior of setting the same keyword twice is undefined. Tag: init.d-script-has-unknown-lsb-keyword Severity: minor Certainty: certain Ref: http://wiki.debian.org/LSBInitScripts Info: The given keyword was set in the LSB keyword section in this /etc/init.d script but isn't one of the known LSB keywords and doesn't begin with X-. One of the standard keywords may have been misspelled. Tag: init.d-script-has-bad-lsb-line Severity: normal Certainty: certain Ref: http://wiki.debian.org/LSBInitScripts Info: This line in the LSB keyword section of an /etc/init.d script doesn't match the required formatting of that section. Note that keyword settings must start with #, a single space, the keyword, a colon, and some whitespace, followed by the value (if any). Only the Description keyword allows continuation lines, and continuation lines must begin with # and either a tab or two or more spaces. Tag: init.d-script-missing-lsb-section Severity: normal Certainty: certain Ref: http://wiki.debian.org/LSBInitScripts Info: This /etc/init.d script does not have an LSB keyword section (or the ### BEGIN INIT INFO tag is incorrect). This section provides description and runlevel information in a standard format and provides dependency information that can be used to parallelize the boot process. Please consider adding it. Tag: init.d-script-missing-lsb-keyword Severity: normal Certainty: certain Ref: http://wiki.debian.org/LSBInitScripts Info: This /etc/init.d script has an LSB keyword section, but it is missing the given required LSB keyword. If the value of this keyword should be empty, please still include it in the LSB keyword section with an empty value. Tag: init.d-script-missing-lsb-short-description Severity: wishlist Certainty: certain Ref: http://wiki.debian.org/LSBInitScripts Info: This /etc/init.d script has an LSB keyword section, but it is missing a Short-Description LSB keyword. This field isn't directly used currently, but adding it is still a good idea for documentation purposes. Tag: init.d-script-missing-lsb-description Severity: wishlist Certainty: certain Ref: http://wiki.debian.org/LSBInitScripts Info: This /etc/init.d script has an LSB keyword section, but it is missing a Description LSB keyword. This field isn't directly used currently, but adding it is still a good idea for documentation purposes. Tag: init.d-script-has-bad-start-runlevel Severity: normal Certainty: certain Ref: http://wiki.debian.org/LSBInitScripts Info: The given runlevel specified in the Default-Start keyword of the LSB keyword section of this /etc/init.d script isn't one of the recognized standard runlevels (S, 0, 1, 2, 3, 4, 5, and 6). Tag: init.d-script-has-bad-stop-runlevel Severity: normal Certainty: certain Ref: http://wiki.debian.org/LSBInitScripts Info: The given runlevel specified in the Default-Stop keyword of the LSB keyword section of this /etc/init.d script isn't one of the recognized standard runlevels (0, 1, 2, 3, 4, 5, and 6). Tag: init.d-script-has-conflicting-start-stop Severity: normal Certainty: certain Ref: http://wiki.debian.org/LSBInitScripts Info: The given runlevel was included in both the Default-Start and Default-Stop keywords of the LSB keyword section of this /etc/init.d script. Since it doesn't make sense to both start and stop a service in the same runlevel, there is probably an error in one or the other of these keywords. Tag: init-d-script-stops-in-s-runlevel Severity: normal Certainty: certain Info: This /etc/init.d script specifies the S runlevel in Default-Stop in its LSB keyword section. The S runlevel is not a real runlevel and is only used during boot. There is no way to switch to it and hence no use for stop scripts for it, so S should be removed from Default-Stop. Tag: init.d-script-uses-usr-interpreter Severity: normal Certainty: possible Info: The given /etc/init.d script specifies an interpreter in its shebang located under /usr. This means the init script will fail if run at a point in the boot sequence before the /usr partition has been mounted. . It also indicates that the init script may be using a non-essential interpreter. Since init scripts are configuration files, they may be left on the system after their package has been removed but not purged. At that point, the package dependencies are not guaranteed to exist and the interpreter may therefore not be available. . It's generally best to write init scripts using /bin/sh or /bin/bash where possible, since they are guaranteed to always be available. Tag: init.d-script-sourcing-without-test Severity: serious Certainty: possible Info: The given /etc/init.d script seems to be sourcing an /etc/default/ file without checking for its existence first. Files in /etc/default/ can be deleted by the administrator at any time, and init scripts are required to handle the situation gracefully. Ref: policy 9.3.2 Tag: init.d-script-starts-in-stop-runlevel Severity: serious Certainty: certain Info: This /etc/init.d script specifies the 0 or 6 runlevels in Default-Start in its LSB keyword section. The 0 and 6 runlevels are meant to only stop services, not to start them. Even if the init script is doing something that isn't exactly stopping a service, the run-level should be listed in Default-Stop, not Default-Start, and the script should perform those actions when passed the stop argument. Tag: init.d-script-provides-virtual-facility Severity: normal Certainty: certain Info: This /etc/init.d script indicates in its LSB headers that it provides a virtual facility, denoted by the dollar sign in front of the name. . This is not the correct way to provide a virtual facility. Instead, the package should include a file in /etc/insserv.conf.d, usually named after the package, containing: . $virtual_facility_name +init-script-name . to declare that the named init script provides the named virtual facility. Ref: http://wiki.debian.org/LSBInitScripts/DebianVirtualFacilities Tag: init.d-script-does-not-provide-itself Severity: minor Certainty: possible Info: This /etc/init.d script indicates it provides one or more facilities, but none of the provided facilities match the name of the init script. In certain cases, it may be necessary to not follow that convention, but normally init scripts should always provide a facility matching the name of the init script. Ref: http://wiki.debian.org/LSBInitScripts Tag: init.d-script-should-depend-on-virtual-facility Severity: important Certainty: possible Info: The given /etc/init.d script depends on a non-virtual facility that should probably be replaced by a virtual facility. For example, init scripts should depend on the virtual facility $network rather than the facility networking, and the virtual facility $named rather than the specific facility bind9. . Properly using virtual facilities allows multiple implementations of the same facility and accommodates systems where that specific facility may not be enough to provide everything the script expects. Tag: init.d-script-possible-missing-stop Severity: normal Certainty: possible Info: The given /etc/init.d script indicates it should be stopped at one of the runlevels 0, 1, or 6 but not at all of them. This is usually a mistake. Normally, facilities that need to be stopped at any of those runlevels need to be stopped at all of them. . For example, if it is safe for the facility provided by this init script to be stopped by sendsigs at runlevels 0 and 6, there should be no reason to special case runlevel 1, where killprocs would stop it. If the facility needs special shutdown handling when rebooting the system (runlevel 6), it probably needs the same handling when halting the system (runlevel 0) or switching to single-user mode (runlevel 1). Tag: init.d-script-missing-start Severity: normal Certainty: certain Info: The given /etc/init.d script indicates it should be started at one of the runlevels 2-5 but not at all of them. This is a mistake. The system administrators should be given the opportunity to customize the runlevels at their will. Ref: policy 9.3.3.1 Tag: init.d-script-missing-dependency-on-remote_fs Severity: important Certainty: possible Info: The given init script seems to refer to /usr, possibly using a file or binary from there. Without a dependency on $remote_fs in Required-Start or Required-Stop, as appropriate, the init script might be run before /usr is mounted or after it's unmounted. . Using Should-Start or Should-Stop to declare the dependency is conceptually incorrect since the $remote_fs facility is always available. Required-Start or Required-Stop should be used instead. Also, please note that $all should not be used in Required-Stop, only Required-Start. Ref: http://wiki.debian.org/LSBInitScripts Tag: init.d-script-missing-dependency-on-local_fs Severity: important Certainty: possible Info: The given init script seems to refer to /var, possibly using a file from there. Without a dependency on $local_fs in Required-Start or Required-Stop, as appropriate, the init script might be run before /var is mounted or after it's unmounted. . Using Should-Start or Should-Stop to declare the dependency is conceptually incorrect since the $local_fs facility is always available. Required-Start or Required-Stop should be used instead. Ref: http://wiki.debian.org/LSBInitScripts Tag: init.d-script-depends-on-unknown-virtual-facility Severity: serious Certainty: possible Info: The given init script declares a dependency on a virtual facility that is not known to be provided by any init.d script in the archive. If the dependency can not be satisfied upon the package's installation, insserv will refuse the activation of the init.d script. Ref: http://wiki.debian.org/LSBInitScripts lintian-2.5.22ubuntu1/checks/systemd.pm0000664000000000000000000002011512311317622014737 0ustar # systemd -- lintian check script -*- perl -*- # # Copyright © 2013 Michael Stapelberg # # based on the apache2 checks file by: # Copyright © 2012 Arno Töll # # 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::systemd; use strict; use warnings; use autodie; use File::Basename; use List::MoreUtils qw(any); use Text::ParseWords qw(shellwords); use Lintian::Tags qw(tag); use Lintian::Util qw( fail is_ancestor_of normalize_pkg_path lstrip rstrip ); sub run { my (undef, undef, $info) = @_; # Figure out whether the maintainer of this package did any effort to # make the package work with systemd. If not, we will not warn in case # of an init script that has no systemd equivalent, for example. my $ships_systemd_file = any { m,/systemd/, } $info->sorted_index; # An array of names which are provided by the service files. # This includes Alias= directives, so after parsing # NetworkManager.service, it will contain NetworkManager and # network-manager. my @systemd_targets; for my $file ($info->sorted_index) { if ($file =~ m,^etc/tmpfiles\.d/.*\.conf$,) { tag 'systemd-tmpfiles.d-outside-usr-lib', $file; } if ($file =~ m,^etc/systemd/system/.*\.service$,) { tag 'systemd-service-file-outside-lib', $file; } if ($file =~ m,/systemd/system/.*\.service$,) { check_systemd_service_file($info, $file); for my $name (extract_service_file_names($info, $file)) { push @systemd_targets, $name; } } } my @init_scripts = grep { m,^etc/init\.d/.+, } $info->sorted_index; # Verify that each init script includes /lib/lsb/init-functions, # because that is where the systemd diversion happens. for my $init_script (@init_scripts) { check_init_script($info, $init_script); } @init_scripts = map { basename($_) } @init_scripts; if ($ships_systemd_file) { for my $init_script (@init_scripts) { tag 'systemd-no-service-for-init-script', $init_script unless any { m/\Q$init_script\E\.service/ } @systemd_targets; } } check_maintainer_scripts($info); return; } sub check_init_script { my ($info, $file) = @_; my $basename = $file->basename; my $lsb_source_seen; # Couple of special cases we don't care about... return if $basename eq 'README' or $basename eq 'skeleton' or $basename eq 'rc' or $basename eq 'rcS'; my $unpacked_file = $info->unpacked($file); if ($file->is_symlink) { # We cannot test upstart-jobs return if $file->link eq '/lib/init/upstart-job'; } if (!$file->is_regular_file) { unless (-f $unpacked_file && is_ancestor_of($info->unpacked, $unpacked_file)) { tag 'init-script-is-not-a-file', $file; return; } } open(my $fh, '<', $unpacked_file); while (<$fh>) { lstrip; next if /^#/; if (m,^(?:\.|source)\s+/lib/lsb/init-functions,) { $lsb_source_seen = 1; last; } } close($fh); if (!$lsb_source_seen) { tag 'init.d-script-does-not-source-init-functions', $file; } return; } sub check_systemd_service_file { my ($info, $file) = @_; my @values = extract_service_file_values($info, $file, 'Unit', 'After'); my @obsolete = grep { /^(?:syslog|dbus)\.target$/ } @values; tag 'systemd-service-file-refers-to-obsolete-target', $file, $_ for @obsolete; return; } sub service_file_lines { my ($path) = @_; my @lines; my $continuation; open(my $fh, '<', $path); while (<$fh>) { chomp; if (defined($continuation)) { $_ = $continuation . $_; $continuation = undef; } if (/\\$/) { $continuation = $_; $continuation =~ s/\\$/ /; next; } rstrip; next if $_ eq ''; next if /^[#;\n]/; push @lines, $_; } close($fh); return @lines; } # Extracts the values of a specific Key from a .service file sub extract_service_file_values { my ($info, $file, $extract_section, $extract_key) = @_; my @values; my $section; my $unpacked_file = $info->unpacked($file); unless ( (-f $unpacked_file&& is_ancestor_of($info->unpacked, $unpacked_file)) || ($file->is_symlink && $file->link eq '/dev/null')) { tag 'service-file-is-not-a-file', $file; return; } my @lines = service_file_lines($unpacked_file); if (any { /^\.include / } @lines) { @lines = map { if (/^\.include (.+)$/) { my $path = $1; my $normalized; my $included; if ($path =~ s,^/,,) { $normalized = normalize_pkg_path('/', $path); } else { $normalized = normalize_pkg_path($file->dirname, $path); } $included = $info->unpacked($normalized) if defined($normalized); if ( defined($included) && -f $included && is_ancestor_of($info->unpacked, $included)) { service_file_lines($included); } else { # doesn't exist, exists but not a file or "out-of-bounds" $_; } } else { $_; } } @lines; } for (@lines) { # section header if (/^\[([^\]]+)\]$/) { $section = $1; next; } if (!defined($section)) { # Assignment outside of section. Ignoring. next; } my ($key, $value) = ($_ =~ m,^(.*)\s*=\s*(.*)$,); if ( $section eq $extract_section && $key eq $extract_key) { if ($value eq '') { # Empty assignment resets the list @values = (); } else { push(@values, shellwords($value)); } } } return @values; } sub extract_service_file_names { my ($info, $file) = @_; my @aliases= extract_service_file_values($info, $file, 'Install', 'Alias'); return (basename($file), @aliases); } sub check_maintainer_scripts { my ($info) = @_; open(my $fd, '<', $info->lab_data_path('control-scripts')); while (<$fd>) { m/^(\S*) (.*)$/ or fail("bad line in control-scripts file: $_"); my $interpreter = $1; my $file = $2; my $filename = $info->control($file); # Don't follow links next if -l $filename; # Don't try to parse the file if it does not appear to be a # shell script next if $interpreter !~ m/sh\b/; open(my $sfd, '<', $filename); while (<$sfd>) { # skip comments next if substr($_, 0, $-[0]) =~ /#/; # systemctl should not be called in maintainer scripts at all, # except for systemctl --daemon-reload calls. if (m/^(?:.+;)?\s*systemctl\b/ && !/daemon-reload/) { tag 'maintainer-script-calls-systemctl', "$file:$."; } } close($sfd); } close($fd); return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/symlinks.pm0000664000000000000000000001015212311317622015120 0ustar # symlinks -- lintian check script -*- perl -*- # # Copyright (C) 2011 Niels Thykier # # 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::symlinks; use strict; use warnings; use autodie; use File::Basename qw(dirname); use Lintian::Tags qw(tag); use Lintian::Data; my $WELL_KNOWN_SYMLINKS_TARGET = Lintian::Data->new( 'symlinks/well-known-symlinks-target', qr/\s*\~\~\s*/, sub { return qr/$_[0]/x; }); sub run { my ($pkg, undef, $info, $proc, $group) = @_; my $ginfo = $group->info; my (@brokenlinks, @dindexes); FILE: foreach my $file ($info->sorted_index) { if ($file->is_symlink){ my $target = $file->link//''; # the link target my $path; # the target (from the pkg root) # Should not happen (too often) - but just in case next unless $target; $path = $file->link_normalized; if (not defined $path) { # Unresolvable link tag 'package-contains-unsafe-symlink', $file; next; } # Links to the package root is always going to exist (although # self-recursive and possibly not very useful) next if $path eq ''; # Skip usr/share/doc/ - we got a separate check for # that. next if $file eq "usr/share/doc/$pkg"; # Check if the destination is in the package itself next if $info->index($path) || $info->index("$path/"); $target =~ s,^/++,,o; # strip leading slashes (for reporting) # Ignore links pointing to common things that may exist # even if they are not shipped by any binary from this # source package. foreach my $wellknowntarget ($WELL_KNOWN_SYMLINKS_TARGET->all) { my $regex = $WELL_KNOWN_SYMLINKS_TARGET->value($wellknowntarget); if($path =~ m{$regex}) { next FILE; } } # Skip langpack links (used in Ubuntu) - after we check that # it appears to be consistent. if ($path =~ m,/([^/]+)-langpack/,o) { my $pre = $1; my $t = $path; $t =~ s,/\Q$pre\E-langpack/,/help/,; next if $t eq $file; } # Possibly broken symlink push @brokenlinks, [$file, $path, $target] unless $info->index($path); } } return unless @brokenlinks; # Check our dependencies: foreach my $depproc (@{ $ginfo->direct_dependencies($proc)}) { push @dindexes, $depproc->info; } BLINK: foreach my $blink (@brokenlinks){ my ($file, $path, $target) = @$blink; foreach my $dinfo (@dindexes){ # Is it in our dependency? next BLINK if $dinfo->index($path) || $dinfo->index("$path/"); } # nope - not found in any of our direct dependencies. if ($target =~ m/\*/) { # If it contains a "*" it probably a bad ln -s target/*.so link # expansion. tag 'package-contains-broken-symlink-wildcard', $file, $target; } else { tag 'package-contains-broken-symlink', $file, $target; } } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/description.desc0000664000000000000000000001656512153060143016107 0ustar Check-Script: description Author: Christian Schwarz Abbrev: des Type: binary, udeb Info: Check if the Description control field of a binary package conforms to the rules in the Policy Manual (section 3.4). Tag: package-has-no-description Severity: serious Certainty: certain Info: The binary package does not have a "Description:" control field. Tested: empty Ref: policy 3.4 Tag: description-synopsis-is-empty Severity: serious Certainty: certain Info: The first line in the "Description:" is empty. Ref: policy 3.4 Tag: extended-description-contains-empty-paragraph Severity: normal Certainty: certain Info: The extended description (the lines after the first line of the "Description:" field) contains an empty paragraph. Tag: extended-description-is-empty Severity: serious Certainty: certain Info: The extended description (the lines after the first line of the "Description:" field) is empty. Ref: policy 3.4 Tag: extended-description-is-probably-too-short Severity: minor Certainty: possible Ref: devref 6.2.1, devref 6.2.3 Info: The extended description (the lines after the first line of the "Description:" field) is only one or two lines long. The extended description should provide a user with enough information to decide whether they want to install this package, what it contains, and how it compares to similar packages. One or two lines is normally not enough to do this. Tag: description-contains-invalid-control-statement Severity: serious Certainty: certain Info: The description contains a line starting with a dot (.). This is not allowed. Ref: policy 5.6.13 Tag: description-too-long Severity: minor Certainty: certain Info: The first line of the "Description:" must not exceed 80 characters. Ref: policy 3.4.1 Tag: description-starts-with-package-name Severity: important Certainty: certain Info: The first line of the "Description:" should not start with the package name. For example, the package foo should not have a description like this: "foo is a program that...". Ref: policy 3.4.1 Tag: description-synopsis-starts-with-article Severity: minor Certainty: certain Info: The first line of the "Description:" should omit any initial indefinite or definite article: "a", "an", or "the". A good heuristic is that it should be possible to substitute the package name and synopsis into this formula: . The package name provides {a,an,the,some} synopsis. Ref: devref 6.2.2 Tag: description-contains-tabs Severity: important Certainty: certain Info: The package "Description:" must not contain tab characters. Ref: policy 5.6.13 Tag: description-starts-with-leading-spaces Severity: normal Certainty: possible Info: The package "Description:" starts with leading spaces. Usually, leading spaces are used to switch "verbatim display" on (i.e., lines are not wrapped) so this might be a bug in the package. Tag: possible-unindented-list-in-extended-description Severity: normal Certainty: possible Info: The package "Description:" contains an unindented line which starts with a dash (-) or asterisk (*). If this was meant to be a list of items these lines need to be indented (dselect would word-wrap these lines otherwise). Ref: policy 5.6.13 Tag: description-is-debmake-template Severity: important Certainty: certain Info: The synopsis or the extended description just says "Missing", which is a template provided by debmake. Tag: description-is-dh_make-template Severity: serious Certainty: certain Info: The synopsis or the extended description has not been changed from the template provided by dh_make. Tag: description-contains-dh-make-perl-template Severity: normal Certainty: certain Info: The extended description contains the statement that it was automagically extracted by dh-make-perl. Please check the description for correctness and usefulness and remove the dh-make-perl statement to signal that you have done so. Tag: description-synopsis-might-not-be-phrased-properly Severity: minor Certainty: possible Info: The synopsis (first line in the package "Description:" field, the short description) ends with a full stop "." character. This is not necessary, as the synopsis doesn't need to be a full sentence. It is recommended that a descriptive phrase is used instead. . Note also that the synopsis is not part of the rest of the "Description:" field. Ref: devref 6.2.2 Tag: description-synopsis-is-duplicated Severity: important Certainty: certain Info: The first line of the extended Description: should not repeat the synopsis exactly. This indicates that either the synopsis is badly formed or that the extended description has been wrongly copied and pasted. Ref: policy 3.4.2 Tag: extended-description-line-too-long Severity: normal Certainty: certain Info: One or more lines in the extended part of the "Description:" field have been found to contain more than 80 characters. For the benefit of users of 80x25 terminals, it is recommended that the lines do not exceed 80 characters. Ref: policy 3.4.1 Tag: description-contains-homepage Severity: normal Certainty: certain Info: The extended description contains a "Homepage:" pseudo-header following the old Developer's Reference recommendation. As of 1.14.6, dpkg now supports Homepage: as a regular field in debian/control. This header should be moved from the extended description to the fields for the relevant source or binary packages. Tag: spelling-error-in-description Severity: minor Certainty: certain Info: Lintian found a spelling error in the package description. Lintian has a list of common misspellings that it looks for. It does not have a dictionary like a spelling checker does. It is particularly picky about spelling and capitalization in package descriptions since they're very visible to end users. Tag: capitalization-error-in-description Severity: minor Certainty: wild-guess Info: Lintian found a possible capitalization error in the package description. Lintian has a list of common capitalization errors, primarily of upstream projects, that it looks for. It does not have a dictionary like a spelling checker does. . This is a particularly picky check of capitalization in package descriptions, since they're very visible to end users, but it will have false positives for project names used in a context where they should be lowercase, such as package names or executable names. Tag: description-contains-duplicated-word Severity: normal Certainty: possible Info: The description contains a duplicated word. Usually this is a mistake, or at least an awkward phrasing. Tag: using-first-person-in-description Severity: minor Certainty: possible Info: You should avoid the use of first person ("I will do this..." or "We recommend..."). The computer is not a person and the description does not speak for the maintainer or maintainers. Instead, use a more neutral construction and try to rephrase into factual statements about the package. . For example, rather than saying "I don't recommend this package if you are short on memory," say something like "this package is not suitable for low-memory systems." Tag: description-possibly-contains-homepage Severity: wishlist Certainty: wild-guess Info: This package has no Homepage field but has a URL in the description and wording that might indicate this is the package Homepage. If it is, add a Homepage control field containing it rather than mentioning it in the package description. lintian-2.5.22ubuntu1/checks/debconf.pm0000664000000000000000000005246112311317602014656 0ustar # debconf -- lintian check script -*- perl -*- # Copyright (C) 2001 Colin Watson # # 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::debconf; use strict; use warnings; use autodie; use Lintian::Relation; use Lintian::Tags qw(tag); use Lintian::Util qw(read_dpkg_control :constants $PKGNAME_REGEX); # From debconf-devel(7), section 'THE TEMPLATES FILE', up to date with debconf # version 1.5.24. Added indices for cdebconf (indicates sort order for # choices); debconf doesn't support it, but it ignores it, which is safe # behavior. Likewise, help is supported as of cdebconf 0.143 but is not yet # supported by debconf. my %template_fields = map { $_ => 1 } qw(template type choices indices default description help); # From debconf-devel(7), section 'THE TEMPLATES FILE', up to date with debconf # version 1.5.24. my %valid_types = map { $_ => 1 } qw( string password boolean select multiselect note error title text); # From debconf-devel(7), section 'THE DEBCONF PROTOCOL' under 'INPUT', up to # date with debconf version 1.5.24. my %valid_priorities = map { $_ => 1 } qw(low medium high critical); # All the packages that provide debconf functionality. Anything using debconf # needs to have dependencies that satisfy one of these. my $ANY_DEBCONF = Lintian::Relation->new( join( ' | ', qw(debconf debconf-2.0 cdebconf cdebconf-udeb libdebconfclient0 libdebconfclient0-udeb) )); sub run { my ($pkg, $type, $info) = @_; my ($seenconfig, $seentemplates, $usespreinst); if ($type eq 'source') { my @binaries = $info->binaries; my @files = map { "$_.templates" } @binaries; push @files, 'templates'; foreach my $file (@files) { my $templates_file = $info->debfiles($file); my $binary = $file; $binary =~ s/\.?templates$//; # Single binary package (so @files contains "templates" and # "binary.templates")? if (!$binary && @files == 2) { $binary = $binaries[0]; } if (-f $templates_file) { my @templates; eval { @templates = read_dpkg_control($templates_file, DCTRL_DEBCONF_TEMPLATE); }; if ($@) { chomp $@; $@ =~ s/^internal error: //; $@ =~ s/^syntax error in //; tag 'syntax-error-in-debconf-template', "$file: $@"; next; } foreach my $template (@templates) { if ( exists $template->{template} and exists $template->{_choices}) { tag 'template-uses-unsplit-choices', "$binary - $template->{template}"; } } } } # The remainder of the checks are for binary packages, so we exit now return; } my $preinst = $info->control('preinst'); my $ctrl_config = $info->control('config'); my $ctrl_templates = $info->control('templates'); if (-f $preinst and not -l $preinst) { open(my $fd, '<', $preinst); while (<$fd>) { s/\#.*//; # Not perfect for Perl, but should be OK if ( m,/usr/share/debconf/confmodule, or m/(?:Debconf|Debian::DebConf)::Client::ConfModule/) { $usespreinst=1; last; } } close($fd); } $seenconfig = 1 if -f $ctrl_config and not -l $ctrl_config; $seentemplates = 1 if -f $ctrl_templates and not -l $ctrl_templates; # This still misses packages that use debconf only in the postrm. # Packages that ask debconf questions in the postrm should load # the confmodule in the postinst so that debconf can register # their templates. return unless $seenconfig or $seentemplates or $usespreinst; # parse depends info for later checks # Consider every package to depend on itself. my $selfrel; if (defined $info->field('version')) { $_ = $info->field('version'); $selfrel = "$pkg (= $_)"; } else { $selfrel = "$pkg"; } # Include self and provides as a package providing debconf presumably # satisfies its own use of debconf (if any). my $selfrelation = Lintian::Relation->and($info->relation('provides'), $selfrel); my $alldependencies = Lintian::Relation->and($info->relation('strong'), $selfrelation); # See if the package depends on dbconfig-common. Packages that do # are allowed to have a config file with no templates, since they # use the dbconfig-common templates. my $usesdbconfig = $alldependencies->implies('dbconfig-common'); # Check that both debconf control area files are present. if ($seenconfig and not $seentemplates and not $usesdbconfig) { tag 'no-debconf-templates'; } elsif ($seentemplates and not $seenconfig and not $usespreinst and $type ne 'udeb') { tag 'no-debconf-config'; } # $seenconfig will be false if $ctrl_config is a symlink or if it was # not a file, so we do not have to check with -f/-l here again. if ($seenconfig and not -x $ctrl_config) { tag 'debconf-config-not-executable'; } # Lots of template checks. my (@templates, %potential_db_abuse, @templates_seen); if ($seentemplates) { eval { # $seentemplates (above) will be false if $ctrl_templates is a # symlink or not a file, so this should be safe without # (re-checking) with -f/-l. @templates = read_dpkg_control($ctrl_templates, DCTRL_DEBCONF_TEMPLATE); }; if ($@) { chomp $@; $@ =~ s/^internal error: //; $@ =~ s/^syntax error in //; tag 'syntax-error-in-debconf-template', "templates: $@"; @templates = (); } } foreach my $template (@templates) { my $isselect = ''; if (not exists $template->{template}) { tag 'no-template-name'; $template->{template} = 'no-template-name'; } else { push @templates_seen, $template->{template}; if ($template->{template}!~m|[A-Za-z0-9.+-](?:/[A-Za-z0-9.+-])|) { tag 'malformed-template-name', "$template->{template}"; } } if (not exists $template->{type}) { tag 'no-template-type', "$template->{template}"; } elsif (not $valid_types{$template->{type}}) { tag 'unknown-template-type', "$template->{type}"; } elsif ($template->{type} eq 'select') { $isselect = 1; } elsif ($template->{type} eq 'multiselect') { $isselect = 1; } elsif ($template->{type} eq 'boolean') { tag 'boolean-template-has-bogus-default', "$template->{template} $template->{default}" if defined $template->{default} and $template->{default} ne 'true' and $template->{default} ne 'false'; } if ($template->{choices} && ($template->{choices} !~ /^\s*$/)) { my $nrchoices = count_choices($template->{choices}); for my $key (keys %$template) { if ($key =~ /^choices-/) { if (!$template->{$key} || ($template->{$key} =~ /^\s*$/o)){ tag 'empty-translated-choices', "$template->{template} $key"; } if (count_choices($template->{$key}) != $nrchoices) { tag 'mismatch-translated-choices', "$template->{template} $key"; } } } if ($template->{choices} =~ /^\s*(yes\s*,\s*no|no\s*,\s*yes)\s*$/i) { tag 'select-with-boolean-choices', "$template->{template}"; } } if ($isselect and not exists $template->{choices}) { tag 'select-without-choices', "$template->{template}"; } if (not exists $template->{description}) { tag 'no-template-description', "$template->{template}"; } elsif ($template->{description}=~m/^\s*(.*?)\s*?\n\s*\1\s*$/) { # Check for duplication. Should all this be folded into the # description checks? tag 'duplicate-long-description-in-template', "$template->{template}"; } my %languages; foreach my $field (sort keys %$template) { # Tests on translations my ($mainfield, $lang) = split m/-/, $field, 2; if (defined $lang) { $languages{$lang}{$mainfield}=1; } unless ($template_fields{$mainfield}){ # Ignore language codes here tag 'unknown-field-in-templates', "$template->{template} $field"; } } if ($template->{template} && $template->{type}) { $potential_db_abuse{$template->{template}} = 1 if ( ($template->{type} eq 'note') or ($template->{type} eq 'text')); } # Check the description against the best practices in the # Developer's Reference, but skip all templates where the # short description contains the string "for internal use". my ($short, $extended); if (defined $template->{description}) { ($short, $extended) = split(/\n/, $template->{description}, 2); unless (defined $short) { $short = $template->{description}; $extended = ''; } } else { ($short, $extended) = ('', ''); } my $ttype = $template->{type} || ''; unless ($short =~ /for internal use/i) { my $isprompt = grep { $_ eq $ttype } qw(string password); if ($isprompt) { if ( $short && ( $short !~ m/:$/ || $short =~ m/^(what|who|when|where|which|how)/i) ) { tag 'malformed-prompt-in-templates', $template->{template}; } } if ($isselect) { if ($short =~ /^(Please|Cho+se|Enter|Select|Specify|Give)/) { tag 'using-imperative-form-in-templates', $template->{template}; } } if ($ttype eq 'boolean') { if ($short !~ /\?/) { tag 'malformed-question-in-templates', $template->{template}; } } if (defined($extended) && $extended =~ /[^\?]\?(\s+|$)/) { tag 'using-question-in-extended-description-in-templates', $template->{template}; } if ($ttype eq 'note') { if ($short =~ /[.?;:]$/) { tag 'malformed-title-in-templates', $template->{template}; } } if (length($short) > 75) { tag 'too-long-short-description-in-templates', $template->{template} unless $type eq 'udeb' && $ttype eq 'text'; } if (defined $template->{description}) { if ($template->{description} =~ /(\A|\s)(I|[Mm]y|[Ww]e|[Oo]ur|[Oo]urs|mine|myself|ourself|me|us)(\Z|\s)/ ) { tag 'using-first-person-in-templates', $template->{template}; } if ( $template->{description} =~ /[ \'\"]yes[ \'\",;.]/i and $ttype eq 'boolean') { tag 'making-assumptions-about-interfaces-in-templates', $template->{template}; } } # Check whether the extended description is too long. if ($extended) { my $lines = 0; for my $string (split("\n", $extended)) { while (length($string) > 80) { my $pos = rindex($string, ' ', 80); if ($pos == -1) { $pos = index($string, ' '); } if ($pos == -1) { $string = ''; } else { $string = substr($string, $pos + 1); $lines++; } } $lines++; } if ($lines > 20) { tag 'too-long-extended-description-in-templates', $template->{template}; } } } } # Check the maintainer scripts. my ($config_calls_db_input, $db_purge); my (%templates_used, %template_aliases); for my $file (qw(config prerm postrm preinst postinst)) { my $potential_makedev = {}; my $path = $info->control($file); if (-f $path and not -l $path) { my $usesconfmodule=''; my $obsoleteconfmodule=''; my $db_input=''; my $isdefault=''; my $usesseen=''; open(my $fd, '<', $path); # Only check scripts. my $fl = <$fd>; unless ($fl && $fl =~ /^\#!/) { close($fd); next; } while (<$fd>) { s/#.*//; # Not perfect for Perl, but should be OK next unless m/\S/; while (s%\\$%%) { my $next = <$fd>; last unless $next; $_ .= $next; } if ( m,(?:\.|source)\s+/usr/share/debconf/confmodule, || m/(?:use|require)\s+Debconf::Client::ConfModule/) { $usesconfmodule=1; } if ( not $obsoleteconfmodule and m,(/usr/share/debconf/confmodule\.sh| Debian::DebConf::Client::ConfModule),x ) { my $cmod = $1; tag 'loads-obsolete-confmodule', "$file:$. $cmod"; $usesconfmodule = 1; $obsoleteconfmodule = 1; } if ($file eq 'config' and m/db_input/) { $config_calls_db_input = 1; } if ( $file eq 'postinst' and not $db_input and m/db_input/ and not $config_calls_db_input) { # TODO: Perl? tag 'postinst-uses-db-input' unless $type eq 'udeb'; $db_input=1; } if (m%/dev/%) { $potential_makedev->{$.} = 1; } if ( m/\A \s*(?:db_input|db_text)\s+ [\"\']? (\S+?) [\"\']? \s+ (\S+)\s/xsm ) { my ($priority, $template) = ($1, $2); $templates_used{$template} = 1; if ($priority !~ /^\$\S+$/) { tag 'unknown-debconf-priority', "$file:$. $1" unless ($valid_priorities{$priority}); tag 'possible-debconf-note-abuse', "$file:$. $template" if ( $potential_db_abuse{$template} and ( not($potential_makedev->{($. - 1)} and ($priority eq 'low'))) and ($priority =~ /^(low|medium)$/)); } } if ( m/ \A \s* (?:db_get|db_set(?:title)?) \s+ [\"\']? (\S+?) [\"\']? (?:\s|\Z)/xsm ) { $templates_used{$1} = 1; } # Try to handle Perl somewhat. if ( m/^\s*(?:.*=\s*get|set)\s*\(\s*[\"\'](\S+?)[\"\']/ || m/\b(?:metaget|settitle)\s*\(\s*[\"\'](\S+?)[\"\']/) { $templates_used{$1} = 1; } if (m/^\s*db_register\s+[\"\']?(\S+?)[\"\']?\s+(\S+)\s/) { my ($template, $question) = ($1, $2); push @{$template_aliases{$template}}, $question; } if (not $isdefault and m/db_fset.*isdefault/) { # TODO: Perl? tag 'isdefault-flag-is-deprecated', $file; $isdefault = 1; } if (not $db_purge and m/db_purge/) { # TODO: Perl? $db_purge = 1; } } if ($file eq 'postinst' or $file eq 'config') { unless ($usesconfmodule) { tag "$file-does-not-load-confmodule" unless ($type eq 'udeb' || ($file eq 'postinst' && !$seenconfig)); } } if ($file eq 'postrm') { # If we haven't seen db_purge we emit the tag unless the # package is a debconf provider (in which case db_purge # won't be available) unless ($db_purge or $selfrelation->implies($ANY_DEBCONF)) { tag 'postrm-does-not-purge-debconf'; } } close($fd); } elsif ($file eq 'postinst') { tag 'postinst-does-not-load-confmodule' unless ($type eq 'udeb' || !$seenconfig); } elsif ($file eq 'postrm') { # Make an exception for debconf providing packages as some of # them (incl. "debconf" itself) cleans up in prerm and have no # postrm script at all. tag 'postrm-does-not-purge-debconf' unless $type eq 'udeb' or $selfrelation->implies($ANY_DEBCONF); } } foreach my $template (@templates_seen) { $template =~ s/\s+\Z//; my $used = 0; if ($templates_used{$template}) { $used = 1; } else { foreach my $alias (@{$template_aliases{$template}}) { if ($templates_used{$alias}) { $used = 1; last; } } } unless ($used or $pkg eq 'debconf' or $type eq 'udeb') { tag 'unused-debconf-template', $template unless $template =~ m,^shared/packages-(wordlist|ispell)$, or $template =~ m,/languages$,; } } # Check that the right dependencies are in the control file. Accept any # package that might provide debconf functionality. if ($usespreinst) { unless ($info->relation('pre-depends')->implies($ANY_DEBCONF)) { tag 'missing-debconf-dependency-for-preinst' unless $type eq 'udeb'; } } else { unless ($alldependencies->implies($ANY_DEBCONF) or $usesdbconfig) { tag 'missing-debconf-dependency'; } } # Now make sure that no scripts are using debconf as a registry. # Unfortunately this requires us to unpack to level 2 and grep all the # scripts in the package. # the following checks is ignored if the package being checked is debconf # itself. return if ($pkg eq 'debconf') || ($type eq 'udeb'); foreach my $filename (sort keys %{$info->scripts}) { open(my $fd, '<', $info->unpacked($filename)); while (<$fd>) { s/#.*//; # Not perfect for Perl, but should be OK if ( m,/usr/share/debconf/confmodule, or m/(?:Debconf|Debian::DebConf)::Client::ConfModule/) { tag 'debconf-is-not-a-registry', $filename; last; } } close($fd); } return; } # # ----------------------------------- # Count the number of choices. Splitting code copied from debconf 1.5.8 # (Debconf::Question). sub count_choices { my ($choices) = @_; my @items; my $item = ''; for my $chunk (split /(\\[, ]|,\s+)/, $choices) { if ($chunk =~ /^\\([, ])$/) { $item .= $1; } elsif ($chunk =~ /^,\s+$/) { push(@items, $item); $item = ''; } else { $item .= $chunk; } } push(@items, $item) if $item ne ''; return scalar(@items); } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/shared-libs.desc0000664000000000000000000004254712310413144015756 0ustar Check-Script: shared-libs Author: Christian Schwarz Abbrev: shl Type: binary, udeb Needs-Info: unpacked, file-info, objdump-info, bin-pkg-control, index Info: This script checks if a binary package conforms to shared library policy. Tag: shlib-with-executable-bit Severity: important Certainty: certain Info: Shared libraries should be mode 0644. Ref: policy 8.1 Tag: shlib-with-bad-permissions Severity: normal Certainty: certain Info: Shared libraries should be mode 0644. Ref: policy 8.1 Tag: shlib-with-non-pic-code Severity: serious Certainty: possible Ref: policy 10.2 Info: The listed shared libraries contain object code that was compiled without -fPIC. All object code in shared libraries should be recompiled separately from the static libraries with the -fPIC option. . Another common mistake that causes this problem is linking with gcc -Wl,-shared instead of gcc -shared. . In some cases, exceptions to this rule are warranted. If this is such a case, follow the procedure outlined in Policy and then please document the exception by adding a lintian override to this package. . To check whether a shared library has this problem, run readelf -d on the shared library. If a tag of type TEXTREL is present, the shared library contains non-PIC code. Tag: shlib-without-versioned-soname Severity: normal Certainty: possible Ref: policy 10.2, policy 8.6 Info: The listed shared library in a public library directory has an SONAME that does not contain any versioning information, either after the .so or before it and set off by a hyphen. It cannot therefore be represented in the shlibs system, and if linked by binaries its interface cannot safely change. There is no backward-compatible way to migrate programs linked against it to a new ABI. . Normally, this means the shared library is a private library for a particular application and is not meant for general use. Policy recommends that such libraries be installed in a subdirectory of /usr/lib rather than in a public shared library directory. . To view the SONAME of a shared library, run readelf -d on the shared library and look for the tag of type SONAME. . There are some special stub libraries or special-purpose shared objects for which an ABI version is not meaningful. If this is one of those cases, please add an override. Tag: ldconfig-symlink-missing-for-shlib Severity: important Certainty: certain Info: The package should not only include the shared library itself, but also the symbolic link which ldconfig would produce. (This is necessary, so that the link gets removed by dpkg automatically when the package gets removed.) If the symlink is in the package, check that the SONAME of the library matches the info in the shlibs file. Ref: policy 8.1 Tag: dev-pkg-without-shlib-symlink Severity: normal Certainty: certain Info: A "-dev" package is supposed to install a "libsomething.so" symbolic link referencing the corresponding shared library. Notice how the link name doesn't include the version number -- this is because such a link is used by the linker when other programs are built against this shared library. . The symlink is generally expected in the same directory as the library itself. The major exception to this rule is if the library is installed in (or beneath) /lib, where the symlink must be installed in the same dir beneath /usr. . Example: If the library is installed in /lib/i386-linux-gnu/libXYZ.so.V, the symlink is expected at /usr/lib/i386-linux-gnu/libXYZ.so. . Implementation detail: This tag is emitted for the library package and not the "-dev" package. Ref: policy 8.4 Tag: non-dev-pkg-with-shlib-symlink Severity: normal Certainty: possible Info: Although this package is not a "-dev" package, it installs a "libsomething.so" symbolic link referencing the corresponding shared library. When the link doesn't include the version number, it is used by the linker when other programs are built against this shared library. . Shared libraries are supposed to place such symbolic links in their respective "-dev" packages, so it is a bug to include it with the main library package. . However, if this is a small package which includes the runtime and the development libraries, this is not a bug. In the latter case, please override this warning. Ref: policy 8.4 Tag: preinst-calls-ldconfig Severity: normal Certainty: certain Info: The preinst script calls ldconfig. Calls to ldconfig should only be in postinst and postrm scripts. Ref: policy 8.1.1 Tag: prerm-calls-ldconfig Severity: normal Certainty: certain Info: The prerm script calls ldconfig. Calls to ldconfig should only be in postinst and postrm scripts. Ref: policy 8.1.1 Tag: postrm-unsafe-ldconfig Severity: normal Certainty: certain Info: The postrm script calls ldconfig unsafely. The postrm must only call ldconfig when given the argument "remove". Ref: policy 8.1.1 Tag: no-shlibs-control-file Severity: serious Certainty: possible Info: Although the package includes a shared library, the package does not have a shlibs control file. If this is intentional, please override this error. Ref: policy 8.6 Tag: pkg-has-shlibs-control-file-but-no-actual-shared-libs Severity: important Certainty: certain Info: Although the package does not include any shared libraries, it does have a shlibs control file. If you did include a shared library, check that the SONAME of the library is set and that it matches the contents of the shlibs file. . SONAMEs are set with something like gcc -Wl,-soname,libfoo.so.0, where 0 is the major version of the library. If your package uses libtool, then libtool invoked with the right options should be doing this. . Note this is sometimes triggered for packages with a private shared library due to a bug in Debhelper. Ref: #204975, #633853 Tag: duplicate-entry-in-shlibs-control-file Severity: important Certainty: certain Info: The shlibs control file contains a duplicate entry. Tag: shlib-missing-in-control-file Severity: important Certainty: possible Info: The package contains a shared library that is not listed in the shlibs control file. If this is intentional, please override this error. Ref: policy 8.6 Tag: unused-shlib-entry-in-control-file Severity: normal Certainty: certain Info: The shlibs control file contains an entry for a shared library that is not installed by this package. Ref: policy 8.6 Tag: shlibs-declares-dependency-on-other-package Severity: normal Certainty: possible Info: This package declares in its shlibs control file either a dependency on some other package not listed in the Provides of this package or on a version of this package that the package version doesn't satisfy. . Packages should normally only list in their shlibs control file the shared libraries included in that package, and therefore the dependencies listed there should normally be satisfied by either the package itself or one of its Provides. . In unusual circumstances where it's necessary to declare more complex dependencies in the shlibs control file, please add a lintian override for this warning. Ref: policy 8.6 Tag: ldconfig-symlink-referencing-wrong-file Severity: important Certainty: certain Info: The symbolic link references the wrong file. (It should reference the shared library.) Ref: policy 8.1 Tag: ldconfig-symlink-is-not-a-symlink Severity: important Certainty: certain Info: The package installs a file with the name, ldconfig would use for the symbolic link to reference the shared library. Ref: policy 8.1 Tag: postinst-has-useless-call-to-ldconfig Severity: minor Certainty: certain Info: The postinst script calls ldconfig even though no shared libraries are installed in a directory controlled by the dynamic library loader. . Note this may be triggered by a bug in debhelper, that causes it to auto-generate an ldconfig snippet for packages that does not need it. Ref: policy 8.1.1, #204975 Tag: udeb-postinst-must-not-call-ldconfig Severity: important Certainty: certain Info: The postinst script calls ldconfig, which is an error in udebs. ldconfig is not available and not needed in debian-installer Tag: postrm-has-useless-call-to-ldconfig Severity: minor Certainty: certain Info: The postrm script calls ldconfig even though no shared libraries are installed in a directory controlled by the dynamic library loader. . Note this may be triggered by a bug in debhelper, that causes it to auto-generate an ldconfig snippet for packages that does not need it. Ref: policy 8.1.1, #204975 Tag: postinst-must-call-ldconfig Severity: serious Certainty: certain Info: The package installs shared libraries in a directory controlled by the dynamic library loader. Therefore, the package must call "ldconfig" in its postinst script. Ref: policy 8.1.1 Tag: postrm-should-call-ldconfig Severity: important Certainty: certain Info: The package installs shared libraries in a directory controlled by the dynamic library loader. Therefore, the package should call "ldconfig" in its postrm script. Ref: policy 8.1.1 Tag: sharedobject-in-library-directory-missing-soname Severity: important Certainty: possible Info: A shared object was identified in a library directory (a directory in the standard linker path) which doesn't have a SONAME. This is usually an error. . SONAMEs are set with something like gcc -Wl,-soname,libfoo.so.0, where 0 is the major version of the library. If your package uses libtool, then libtool invoked with the right options should be doing this. . To view the SONAME of a shared library, run readelf -d on the shared library and look for the tag of type SONAME. Tag: shlib-without-PT_GNU_STACK-section Severity: important Certainty: certain Info: The listed shared libraries lacks a PT_GNU_STACK section. This forces the dynamic linker to make the stack executable. . The shared lib is linked either with a non-GNU linker or a linker which is very old. This problem can be fixed with a rebuild. . To see whether a shared library has this section, run readelf -l on it and look for a program header of type GNU_STACK. Tag: shlib-with-executable-stack Severity: normal Certainty: possible Info: The listed shared libraries declares the stack as executable. . Executable stack is usually an error as it is only needed if the code contains GCC trampolines or similar constructs which uses code on the stack. One possible source for false positives are object files built from assembler files which don't define a proper .note.GNU-stack section. . To see the permissions on the stack, run readelf -l on the shared library and look for the program header of type GNU_STACK. In the flag column, there should not be an E flag set. Tag: symbols-file-contains-current-version-with-debian-revision Severity: important Certainty: certain Info: Debian revisions should be stripped from versions in symbols files. Not doing so leads to dependencies unsatisfiable by backports (1.0-1~bpo << 1.0-1 while 1.0-1~bpo >= 1.0). If the debian revision can't be stripped because the symbol really appeared between two specific Debian revisions, you should postfix the version with a single "~" (example: 1.0-3~ if the symbol appeared in 1.0-3). . This problem normally means that the symbols were added automatically by dpkg-gensymbols. dpkg-gensymbols uses the full version number for the dependency associated to any new symbol that it detects. The maintainer must update the debian/<package>.symbols file by adding the new symbols with the corresponding upstream version. Tag: symbols-file-contains-debian-revision Severity: normal Certainty: certain Info: Debian revisions should be stripped from versions in symbols files. Not doing so leads to dependencies unsatisfiable by backports (1.0-1~bpo << 1.0-1 while 1.0-1~bpo >= 1.0). If the debian revision can't be stripped because the symbol really appeared between two specific Debian revisions, you should postfix the version with a single "~" (example: 1.0-3~ if the symbol appeared in 1.0-3). Ref: dpkg-gensymbols(1), http://wiki.debian.org/UsingSymbolsFiles Tag: syntax-error-in-symbols-file Severity: important Certainty: certain Info: The symbols file contains an entry that does not follow the syntax rules for symbols files. . This may be due to the entry appearing out of sequence. Ref: deb-symbols(5) Tag: duplicate-entry-in-symbols-control-file Severity: important Certainty: certain Info: The symbols control file contains a duplicate entry. Tag: no-symbols-control-file Severity: wishlist Certainty: certain Info: Although the package includes a shared library, the package does not have a symbols control file. . dpkg can use symbols files in order to generate more accurate library dependencies for applications, based on the symbols from the library that are actually used by the application. Ref: dpkg-gensymbols(1), http://wiki.debian.org/UsingSymbolsFiles Tag: pkg-has-symbols-control-file-but-no-shared-libs Severity: important Certainty: certain Info: Although the package does not include any shared libraries, it does have a symbols control file. If you did include a shared library, check that the SONAME of the library is set and that it matches the contents of the symbols file. . SONAMEs are set with something like gcc -Wl,-soname,libfoo.so.0, where 0 is the major version of the library. If your package uses libtool, then libtool invoked with the right options should be doing this. Tag: shlib-missing-in-symbols-control-file Severity: normal Certainty: possible Info: The package contains a shared library that is not listed in the symbols control file. This may not be a problem if, for example, the library is a C++ library. Tag: unused-shlib-entry-in-symbols-control-file Severity: normal Certainty: certain Info: The symbols control file contains an entry for a shared library that is not installed by this package. Tag: symbols-declares-dependency-on-other-package Severity: normal Certainty: possible Info: This package declares in its symbols control file a dependency on some other package (and not one listed in the Provides of this package). . Packages should normally only list in their symbols control file the shared libraries included in that package, and therefore the dependencies listed there should normally be satisfied by either the package itself or one of its Provides. . In unusual circumstances where it's necessary to declare more complex dependencies in the symbols control file, please add a lintian override for this warning. Ref: policy 8.6 Tag: invalid-template-id-in-symbols-file Severity: important Certainty: certain Info: The symbol definition refers to an alternative dependency template which is not defined for the library containing the symbol. . The first alternative dependency template for a library the id number of 1, with the ids of subsequent alternative templates increasing in sequence. Tag: unknown-meta-field-in-symbols-file Severity: important Certainty: certain Info: The symbols control file contains an unknown meta-information field. . A list of currently supported fields may be found in deb-control(5). Ref: deb-control(5) Tag: symbols-declared-but-not-shlib Severity: important Certainty: certain Info: The symbols control file contains dependency and symbol information for a shared library which is not listed in the shlibs control file. Tag: shlib-calls-exit Severity: wishlist Certainty: possible Experimental: yes Info: The listed shared library calls the C library exit() or _exit() functions. . In the case of an error, the library should instead return an appropriate error code to the calling program which can then determine how to handle the error, including performing any required clean-up. . In most cases, removing the call should be discussed with upstream, particularly as it may produce an ABI change. Tag: incorrect-libdir-in-la-file Severity: important Certainty: possible Info: The given .la file points to a libdir other than the path where it is installed. This can be caused by resetting prefix at make install time instead of using DESTDIR. The incorrect path will cause packages linking to this library using libtool to build incorrectly (adding incorrect paths to RPATH, for example). Tag: non-empty-dependency_libs-in-la-file Severity: serious Certainty: certain Info: The dependency_libs field in the .la file has not been cleared. It has long been a release goal to get rid of unneeded .la files and clearing the dependency_libs field from the rest of them. . A non-empty dependency_libs field will also stall the Multi-Arch conversion. . The .la file in itself may be useful, if the library is loaded dynamically via libltdl. Ref: http://wiki.debian.org/ReleaseGoals/LAFileRemoval, http://lists.debian.org/debian-devel/2011/05/msg01003.html, http://lists.debian.org/debian-devel/2011/05/msg01146.html Tag: shlib-in-multi-arch-foreign-package Severity: serious Certainty: certain Ref: https://wiki.ubuntu.com/MultiarchSpec Info: The package is marked as Multi-Arch: foreign, but it includes a shared library in a public library directory. Tag: shlibs-uses-obsolete-relation Ref: policy 7.1 Severity: normal Certainty: certain Info: The forms "<" and ">" mean "<=" and ">=", not "<<" and ">>" as one might expect. For that reason these forms are obsolete, and should not be used in new packages. Use the longer forms instead. lintian-2.5.22ubuntu1/checks/phppear.desc0000664000000000000000000000574612310413144015220 0ustar Check-Script: phppear Author: Mathieu Parent Abbrev: phppear Type: source Needs-Info: index, debfiles, unpacked Info: This script checks if the packages comply with various aspects of the debian PHP policy. Tag: pear-package-without-pkg-php-tools-builddep Severity: normal Certainty: possible Info: The package contains an package.xml or package2.xml file but doesn't build-depend on pkg-php-tools. . pkg-php-tools is the recommended tool for building PEAR and PECL packages. For more information, install it and read the included README.PEAR. Tag: pear-channel-without-pkg-php-tools-builddep Severity: normal Certainty: possible Info: The package contains an channel.xml file but doesn't build-depend on pkg-php-tools. . pkg-php-tools is the recommended tool for building PEAR and PECL packages. For more information, install it and read the included README.PEAR. Tag: pear-package-but-missing-dependency Severity: normal Certainty: possible Info: The package is a PEAR package but its control file doesn't have ${phppear:Debian-Depends} in Depends or ${phppear:Debian-Recommends}. Tag: pear-package-not-using-substvar Severity: wishlist Certainty: possible Info: The package is a PEAR package but its control file doesn't have ${phppear:summary} or ${phppear:description} in its description fields. . Those substitution variables should only be used if the description included in PEAR package is of sufficient quality and respect Debian packaging best practices. Ref: http://www.debian.org/doc/manuals/developers-reference/best-pkging-practices.html#bpp-desc-basics Tag: pear-package-feature-requires-newer-pkg-php-tools Severity: normal Certainty: possible Info: The package requires a newer pkg-php-tools for a specific feature. Tag: pecl-package-requires-build-dependency Severity: normal Certainty: possible Info: The package is a PECL package but its control file doesn't have php5-dev or dh-php5 as a build dependency. Tag: composer-package-without-pkg-php-tools-builddep Severity: wishlist Certainty: possible Info: The package contains an composer.json file but doesn't build-depend on pkg-php-tools. . pkg-php-tools is the recommended tool for building PHP Composer packages. For more information, install it and read the included README.Composer. Tag: missing-pkg-php-tools-buildsystem Severity: normal Certainty: possible Info: The package uses pkg-php-tools but dh command is called without --buildsystem=phppear . pkg-php-tools build system is the recommended tool for building PHP PEAR packages. For more information, install it and read the included README.PEAR. Tag: missing-pkg-php-tools-addon Severity: normal Certainty: possible Info: The package uses pkg-php-tools but dh command is called without --with phppear or --with phpcomposer. A PECL package should also have --with php5. . pkg-php-tools db addons are the recommended tool for building PHP PEAR or Composer packages. For more information, install it and read the included README.PEAR or README.Composer. lintian-2.5.22ubuntu1/checks/group-checks.desc0000664000000000000000000000535412310413144016146 0ustar Check-Script: group-checks Author: Niels Thykier Abbrev: gchck # This is a source check, so we only run it once per group Type: source Info: This script checks for some issues that may appear in packages built from the same source. This includes intra-source circular dependencies and intra-source priority checks. Tag: intra-source-package-circular-dependency Severity: normal Certainty: certain Info: The listed packages from the same source circularly depend (or pre-depend) on each other. This makes it difficult for tools to properly handle install/upgrade sequences. Furthermore this complicates automated removal of unused packages. . If possible, consider removing or reducing one of the depends. . Note: This check is limited to packages created from the same source package. Full circular dependencies between binaries from different source packages is beyond the scope of Lintian. Ref: policy 7.2 Tag: package-depends-on-lower-priority-package Severity: normal Certainty: certain Ref: policy 2.5, http://qa.debian.org/debcheck.php Info: The package depends on a package with lower priority than itself. . Note: This check is limited to packages created from the same source package. A full check of all dependencies built from different source packages is beyond the scope of Lintian. The depcheck service can do this. Tag: binaries-have-file-conflict Severity: normal Certainty: possible Experimental: no Info: The binaries appears to have overlapping files without proper conflicts relation. . Note the check is completely based on the file index for the packages. Possible known false-positives include dpkg-diverts in maintainer scripts. Tag: dependency-is-not-multi-archified Severity: normal Certainty: possible Info: The package is Multi-Arch "same", but it depends on a package that is neither Multi-Arch "same" nor "foreign". Ref: https://wiki.ubuntu.com/MultiarchSpec Tag: debug-package-for-multi-arch-same-pkg-not-coinstallable Severity: minor Certainty: possible Info: The debug package appear to be containing debug symbols for a "Multi-Arch: same" package, but the debug package itself is not "Multi-Arch: same". If so, it is not possible to have the debug symbols for all architecture variants of the binaries available at the same time. . Making a debug package co-installable with itself is very trivial, when installing the debug symbols beneath: /usr/lib/debug/.build-id/<XX>/<rest-id>.debug . dh_strip does this in debhelper compat 9. Otherwise, the expected location of the debug symbols of a given ELF binary can be determined by using: . readelf -n <binary-elf> | \ perl -ne 'print if s,^\s*Build ID:\s*(\S\S)(\S+),/usr/lib/debug/.build-id/$1/$2.debug,' lintian-2.5.22ubuntu1/checks/systemd.desc0000664000000000000000000000570112310413206015237 0ustar Check-Script: systemd Author: Michael Stapelberg Type: binary Info: Checks various systemd policy things Needs-Info: scripts, index, unpacked, file-info, bin-pkg-control Tag: systemd-service-file-outside-lib Severity: serious Certainty: certain Info: The package ships a systemd service file outside /lib/systemd/system/ . System administrators should have the possibility to overwrite a service file (or parts of it, in newer systemd versions) by placing a file in /etc/systemd/system, so the canonical location used for service files is /lib/systemd/system/. Tag: systemd-tmpfiles.d-outside-usr-lib Severity: serious Certainty: certain Info: The package ships a systemd tmpfiles.d(5) conf file outside /usr/lib/tmpfiles.d/ Tag: systemd-service-file-refers-to-obsolete-target Severity: normal Certainty: certain Info: The systemd service file refers to an obsolete target. . Some targets are obsolete by now, e.g. syslog.target or dbus.target. For example, declaring After=syslog.target is unnecessary by now because syslog is socket-activated and will therefore be started when needed. Tag: systemd-no-service-for-init-script Severity: serious Certainty: certain Info: The listed init.d script has no systemd equivalent. . Systemd has a SysV init.d script compatibility mode. It provides access to each SysV init.d script as long as there is no native service file with the same name (e.g. /lib/systemd/system/rsyslog.service corresponds to /etc/init.d/rsyslog). . Your package ships a service file, but for the listed init.d script, there is no corresponding systemd service file. Tag: init.d-script-does-not-source-init-functions Severity: normal Certainty: certain Info: The /etc/init.d script does not source /lib/lsb/init-functions. The systemd package provides /lib/lsb/init-functions.d/40-systemd to redirect /etc/init.d/$script calls to systemctl. . Please add a line like this to your /etc/init.d script: . . /lib/lsb/init-functions Tag: maintainer-script-calls-systemctl Severity: normal Certainty: certain Ref: https://wiki.debian.org/Systemd/Packaging Info: The maintainer script calls systemctl directly. Actions such as enabling a unit file should be done using deb-systemd-helper so that they work on machines with or without systemd. Starting a service should be done via invoke-rc.d, if the service has a corresponding sysvinit script, or deb-systemd-invoke if it doesn’t. . If you are using debhelper, please use the dh-systemd debhelper addon. Tag: init-script-is-not-a-file Severity: serious Certainty: certain Info: The package contains an init script that is not a regular file or resolvable symlink. Tag: service-file-is-not-a-file Severity: serious Certainty: certain Info: The package contains a service file that is not a regular file or resolvable symlink. lintian-2.5.22ubuntu1/checks/cruft.desc0000664000000000000000000006734012314062063014706 0ustar Check-Script: cruft Author: Sean 'Shaleh' Perry Abbrev: deb Type: source Info: This looks for cruft in Debian packaging or upstream source Needs-Info: unpacked, debfiles, diffstat, file-info, index, md5sums Tag: native-package-with-dash-version Severity: normal Certainty: certain Info: Native packaging should only be used if a piece of software was written specifically to be turned into a Debian package. In this case, the version number should not contain a Debian revision part. . Native source packages are sometimes created by accident. In most cases the reason is the location of the original source tarball. For version 1.0 source packages, dpkg-source determines whether they're non-native by looking for a file named <package>_<upversion>.orig.tar.gz in the parent directory, where <upversion> is the upstream version from the most recent debian/changelog entry. For version 3.0 packages, check debian/source/format for an erroneous "(native)" package format. Tag: non-native-package-with-native-version Severity: normal Certainty: certain Info: This package has a native version number (a version number without a dash and a Debian portion) but is built as a non-native package. Usually this is an error caused by forgetting the Debian revision for a non-native package. In this case the solution is to add a Debian revision. . This error can also happen if the package is a 1.0 source format and there is a stray *.orig.tar.gz file in the parent directory. The file will trick dpkg-source into believing it was supposed to be a non-native package. Here the error can be solved by converting it to 3.0 (native) package or removing/renaming the *.orig.tar.gz file. . If you do not know what a "native" or a "non-native" package is, you are very likely working on a non-native package. Tag: debian-files-list-in-source Severity: important Certainty: certain Info: Leaving debian/files causes problems for the autobuilders, since that file will likely include the list of .deb files for another architecture, which will cause dpkg-buildpackage run by the buildd to fail. . The clean rule for the package should remove this file. Ref: policy 4.12 Tag: diff-contains-cmake-cache-file Severity: serious Certainty: possible Info: The Debian diff contains a CMake cache file. These files embed the full path of the source tree in which they're created and cause build failures if they exist when the source is built under a different path, so they will always cause errors on the buildds. The file was probably accidentally included. If it is present in the upstream source, don't modify it in the Debian diff; instead, delete it before the build in debian/rules. Tag: diff-contains-cvs-control-dir Severity: normal Certainty: certain Info: The Debian diff or native package contains files in a CVS directory. These are usually artifacts of the revision control system used by the Debian maintainer and not useful in a diff or native package. dpkg-source will automatically exclude these if it is passed -I or -i for native and non-native packages respectively. Ref: dpkg-source(1) Tag: source-contains-cvs-control-dir Severity: pedantic Certainty: certain Info: The upstream source contains a CVS directory. It was most likely included by accident since CVS directories usually don't belong in releases. When packaging a CVS snapshot, export from CVS rather than use a checkout. If an upstream release tarball contains CVS directories, you usually should report this as a bug to upstream. Tag: diff-contains-svn-control-dir Severity: normal Certainty: certain Info: The Debian diff or native package contains files in an .svn directory. These are usually artifacts of the revision control system used by the Debian maintainer and not useful in a diff or native package. dpkg-source will automatically exclude these if it is passed -I or -i for native and non-native packages respectively. Ref: dpkg-source(1) Tag: source-contains-svn-control-dir Severity: pedantic Certainty: certain Info: The upstream source contains an .svn directory. It was most likely included by accident since Subversion version control directories usually don't belong in releases. When packaging a Subversion snapshot, export from subversion rather than checkout. If an upstream release tarball contains .svn directories, this should be reported as a bug to upstream since it can double the size of the tarball to no purpose. Tag: diff-contains-bzr-control-dir Severity: normal Certainty: certain Info: The Debian diff or native package contains files in a .bzr directory. These are usually artifacts of the revision control system used by the Debian maintainer and not useful in a diff or native package. dpkg-source will automatically exclude these if it is passed -I or -i for native and non-native packages respectively. Ref: dpkg-source(1) Tag: source-contains-bzr-control-dir Severity: pedantic Certainty: certain Info: The upstream source contains a .bzr directory. It was most likely included by accident since bazaar-ng version control directories usually don't belong in releases and may contain the entire repository. When packaging a bzr snapshot, use bzr export to create a clean tree. If an upstream release tarball contains .bzr directories, you should usually report this as a bug upstream. Tag: diff-contains-arch-control-dir Severity: normal Certainty: certain Info: The Debian diff or native package contains files in an {arch} or .arch-ids directory or a directory starting with ,, (used by baz for debugging traces). These are usually artifacts of the revision control system used by the Debian maintainer and not useful in a diff or native package. dpkg-source will automatically exclude these if it is passed -I or -i for native and non-native packages respectively. Ref: dpkg-source(1) Tag: source-contains-arch-control-dir Severity: pedantic Certainty: certain Info: The upstream source contains an {arch} or .arch-ids directory or a directory starting with ,, (used by baz for debugging traces). It was most likely included by accident since Arch version control directories usually don't belong in releases. If an upstream release tarball contains these directories, you should usually report this as a bug upstream. Tag: diff-contains-git-control-dir Severity: normal Certainty: certain Info: The Debian diff or native package contains files in a .git directory. These are usually artifacts of the revision control system used by the Debian maintainer and not useful in a diff or native package. dpkg-source will automatically exclude these if it is passed -I or -i for native and non-native packages respectively. Ref: dpkg-source(1) Tag: source-contains-git-control-dir Severity: pedantic Certainty: certain Info: The upstream source contains a .git directory. It was most likely included by accident since git version control directories usually don't belong in releases and may contain a complete copy of the repository. If an upstream release tarball contains .git directories, you should usually report this as a bug upstream. Tag: diff-contains-hg-control-dir Severity: normal Certainty: certain Info: The Debian diff or native package contains files in a .hg directory. These are usually artifacts of the revision control system used by the Debian maintainer and not useful in a diff or native package. dpkg-source will automatically exclude these if it is passed -I or -i for native and non-native packages respectively. Ref: dpkg-source(1) Tag: source-contains-hg-control-dir Severity: pedantic Certainty: certain Info: The upstream source contains a .hg directory. It was most likely included by accident since hg version control directories usually don't belong in releases and may contain a complete copy of the repository. If an upstream release tarball contains .hg directories, you should usually report this as a bug upstream. Tag: diff-contains-bts-control-dir Severity: normal Certainty: certain Info: The Debian diff or native package contains files in a directory used by a bug tracking system, which are not useful in a diff or native package. dpkg-source will automatically exclude these if it is passed -I or -i for native and non-native packages respectively. Ref: dpkg-source(1) Tag: diff-contains-quilt-control-dir Severity: normal Certainty: certain Info: The Debian diff or native package contains files in a directory used by quilt, which are not useful in a diff or native package. dpkg-source will automatically exclude these if it is passed -I or -i for native and non-native packages respectively. Ref: dpkg-source(1) Tag: source-contains-bts-control-dir Severity: pedantic Certainty: certain Info: The upstream source contains a directory used by a bug tracking system. It was most likely included by accident since bug tracking system directories usually don't belong in releases. Tag: diff-contains-svn-commit-file Severity: minor Certainty: certain Info: The Debian diff or native package contains an svn-commit(.NNN).tmp, almost certainly a left-over from a failed Subversion commit by the Debian package maintainer. Tag: source-contains-svn-commit-file Severity: pedantic Certainty: certain Info: The upstream source contains an svn-commit(.NNN).tmp, almost certainly a left-over from a failed Subversion commit. You may want to report this as an upstream bug. Tag: diff-contains-svk-commit-file Severity: minor Certainty: certain Info: The Debian diff or native package contains an svk-commitNNN.tmp, almost certainly a left-over from a failed svk commit by the Debian package maintainer. Tag: source-contains-svk-commit-file Severity: pedantic Certainty: certain Info: The upstream source contains an svk-commitNNN.tmp, almost certainly a left-over from a failed Subversion commit. You may want to report this as an upstream bug. Tag: diff-contains-arch-inventory-file Severity: normal Certainty: certain Info: The Debian diff or native package contains an .arch-inventory file. This is Arch metadata that should normally not be distributed. Tag: source-contains-arch-inventory-file Severity: pedantic Certainty: certain Info: The upstream source contains an .arch-inventory file. This is Arch metadata that should normally not be distributed. You may want to report this as an upstream bug. Tag: diff-contains-hg-tags-file Severity: normal Certainty: certain Info: The Debian diff or native package contains an .hgtags file. This file is Mercurial metadata that should normally not be distributed. It stores hashes of tagged commits in a Mercurial repository and isn't therefore useful without the repository. Tag: source-contains-hg-tags-file Severity: pedantic Certainty: certain Info: The upstream source contains an .hgtags file. This file is Mercurial metadata that should normally not be distributed. It stores hashes of tagged commits in a Mercurial repository and isn't therefore useful without the repository. You may want to report this as an upstream bug. Tag: diff-contains-cvs-conflict-copy Severity: normal Certainty: certain info: The Debian diff or native package contains a CVS conflict copy. These have file names like .#file.version and are generated by CVS when a conflict was detected when merging local changes with updates from a source repository. They're useful only while resolving the conflict and should not be included in the package. Tag: source-contains-cvs-conflict-copy Severity: pedantic Certainty: certain info: The upstream source contains a CVS conflict copy. These have file names like .#file.version and are generated by CVS when a conflict was detected when merging local changes with updates from a source repository. They're useful only while resolving the conflict and were probably included by accident. You may want to report this as an upstream bug. Tag: diff-contains-svn-conflict-file Severity: normal Certainty: certain info: The Debian diff or native package contains a file that looks like a Subversion conflict file. These are generated by Subversion when a conflict was detected while merging local changes with updates from a source repository. Use svn resolved to remove them and clear the Subversion conflict state after you have resolved the conflict. Tag: source-contains-svn-conflict-file Severity: pedantic Certainty: certain info: The upstream source contains a file that looks like a Subversion conflict file. These are generated by Subversion when a conflict was detected while merging local changes with updates from a source repository. They're useful only while resolving the conflict and were probably included by accident. You may want to report this as an upstream bug. Tag: diff-contains-patch-failure-file Severity: normal Certainty: possible Info: The Debian diff or native package contains a file that looks like the files left behind by the patch utility when it cannot completely apply a diff. This may be left over from a patch applied by the maintainer. Normally such files should not be included in the package. Tag: diff-contains-editor-backup-file Severity: minor Certainty: certain Info: The Debian diff or native package contains a file ending in ~ or of the form .xxx.swp, which is normally either an Emacs or vim backup file or a backup file created by programs such as autoheader or debconf-updatepo. This usually causes no harm, but it's messy and bloats the size of the Debian diff to no useful purpose. Tag: diff-contains-substvars Severity: normal Certainty: certain Info: Lintian found a substvars file in the Debian diff for this source package. The debian/substvars (or debian/package.substvars) file is usually generated and modified dynamically by debian/rules targets, in which case it must be removed by the clean target. Ref: policy 4.9 Tag: empty-debian-diff Severity: normal Certainty: possible Info: The Debian diff of this non-native package appears to be completely empty. This usually indicates a mistake when generating the upstream tarball, or it may mean that this was intended to be a native package and was built non-native by mistake. . If the Debian packaging is maintained in conjunction with upstream, this may be intentional, but it's not recommended best practice. If the software is only for Debian, it should be a native package; otherwise, it's better to omit the debian directory from upstream releases and add it in the Debian diff. Otherwise, it can cause problems for some package updates in Debian (files can't be removed from the debian directory via the diff, for example). Tag: configure-generated-file-in-source Severity: normal Certainty: possible Info: Leaving config.cache/status causes autobuilders problems. config.cache and config.status are produced by GNU autoconf's configure scripts. If they are left in the source package, autobuilders may pick up settings for the wrong architecture. . The clean rule in debian/rules should remove this file. This should ideally be done by fixing the upstream build system to do it when you run the appropriate cleaning command (and don't forget to forward the fix to the upstream authors so it doesn't happen in the next release). If that is already implemented, then make sure you are indeed cleaning it in the clean rule. If all else fails, a simple rm -f should work. . Note that Lintian cannot reliably detect the removal in the clean rule, so once you fix this, please ignore or override this warning. Tag: ancient-autotools-helper-file Severity: important Certainty: possible Info: The referenced file has a time stamp older than year 2004 and the package does not build-depend on autotools-dev or automake and therefore apparently does not update it. This usually means that the source package will not build correctly on all currently released architectures. . For packages using debhelper, the tools from the dh-autoreconf package should handle this issue. cdbs will automatically update these files if autotools-dev is installed during build, but the build dependency on autotools-dev is still necessary. . Otherwise, read /usr/share/doc/autotools-dev/README.Debian.gz (from the autotools-dev package) for information on how to fix this problem. Tag: outdated-autotools-helper-file Severity: normal Certainty: possible Info: The referenced file has a time stamp older than April of 2012 and the package does not build-depend on autotools-dev or automake and therefore apparently does not update it. This usually means that the source package will not build correctly on ARM64, for which a Debian port is currently in progress, and may not support other newer architectures. . For packages using debhelper, the tools from the dh-autoreconf package should handle this issue. cdbs will automatically update these files if autotools-dev is installed during build, but the build dependency on autotools-dev is still necessary. . Otherwise, read /usr/share/doc/autotools-dev/README.Debian.gz (from the autotools-dev package) for information on how to fix this problem. Tag: ancient-libtool Severity: normal Certainty: possible Info: The referenced file seems to be from a libtool version older than 1.5.2-2. This might lead to build errors on some newer architectures not known to this libtool. . Please ask your upstream maintainer to re-libtoolize the package or do it yourself if there is no active upstream. You will also need to run Autoconf to regenerate the configure script. Usually it is best to do this during the build by depending on autoconf, libtool, and automake if it is used, and then running: . autoreconf -i --force . before running configure. Depending on how old the package is, this may require additional modifications to configure.ac or configure.in or other work. If you do this during the build, determine which files it will add or update and be sure to remove those files in the clean target. . If you have fixed architecture-specific issues with minimal patches, rather than updating libtool, and verified that it builds correctly, please override this tag. Lintian will not be able to verify that. Tag: source-contains-prebuilt-binary Severity: pedantic Certainty: certain Info: The source tarball contains a prebuilt ELF object. They are usually left by mistake when generating the tarball by not cleaning the source directory first. You may want to report this as an upstream bug, in case there is no sign that this was intended. Tag: source-contains-prebuilt-flash-object Severity: pedantic Certainty: possible Info: The source tarball contains a prebuilt file in the Shockwave Flash (SWF) or Flash Video (FLV) format. These are often included by mistake when developers generate a tarball without cleaning the source directory first. An exception is simple video files, which are their own source. . If there is no sign this was intended, consider reporting it as an upstream bug. . If the Flash file is not meant to be modified directly, please make sure the package includes the source for the file and that the packaging rebuilds it. Tag: source-contains-prebuilt-flash-project Severity: pedantic Certainty: possible Info: The source tarball contains a prebuilt file in the Shockwave Flash project (FLA) format. These are often included by mistake when developers generate a tarball without cleaning the source directory first. . If there is no sign this was intended, consider reporting it as an upstream bug. . If the Flash file is not meant to be modified directly, please make sure the package includes the source for the file and that the packaging rebuilds it. Tag: source-contains-prebuilt-java-object Severity: pedantic Certainty: possible Info: The source tarball contains a prebuilt Java class file. These are often included by mistake when developers generate a tarball without cleaning the source directory first. If there is no sign this was intended, consider reporting it as an upstream bug. Tag: source-contains-prebuilt-javascript-object Severity: pedantic Certainty: possible Info: The source tarball contains a prebuilt (minified) JavaScript object. They are usually left by mistake when generating the tarball by not cleaning the source directory first. You may want to report this as an upstream bug, in case there is no sign that this was intended. Tag: source-contains-prebuilt-python-object Severity: pedantic Certainty: possible Info: The source tarball contains a prebuilt Python object. They are usually left by mistake when generating the tarball by not cleaning the source directory first. You may want to report this as an upstream bug, in case there is no sign that this was intended. Tag: source-contains-prebuilt-silverlight-object Severity: serious Certainty: possible Info: The source tarball contains a prebuilt Silverlight control. Unfortunately, the tools used to build such files have non-free dependencies and are not present in Debian. This file must be completely removed. Tag: source-contains-prebuilt-windows-binary Severity: pedantic Certainty: certain Info: The source tarball contains a prebuilt binary for Microsoft Windows. They are usually provided for the convenience of users. These files usually just take up space in the tarball and are of no use in Debian. . Check if upstream also provides source-only tarballs that you can use as the upstream distribution instead. If not, you may want to ask upstream to provide source-only tarballs. Tag: source-contains-waf-binary Severity: important Certainty: certain Info: The source tarball contains a waf binary. This file is a Python script with an embedded bzip2 archive, which is uncompressed and unpacked at runtime. . Although corresponding sources can be easily extracted, FTP Team does not consider waf binary as the preferred form of modification; it should be provided unpacked instead, or completely removed, if possible. . You might want to follow these guidelines to obtain an unpacked waf: http://wiki.debian.org/UnpackWaf Ref: http://wiki.debian.org/UnpackWaf, #654523 Tag: tar-errors-from-source Severity: normal Certainty: wild-guess Info: tar produced an error while unpacking this source package. This probably means there's something broken or at least strange about the way the upstream tar file was constructed. You may want to report this as an upstream bug. Tag: control-file-with-CRLF-EOLs Severity: important Certainty: possible Info: The given control file uses CRLF as line terminator instead of the traditional UNIX LF terminator. Since some tools were only designed with the UNIX end-of-line terminators in mind, it is possible that they misbehave or lead to unexpected results. . Running the following command against the given file removes any CR character in the file: . sed -i 's/\r//g' path/to/file Tag: license-problem-json-evil Severity: serious Certainty: possible Info: The given source file is copyrighted under the non free license of json and the infamous clause: The Software shall be used for Good, not Evil. Ref: http://wiki.debian.org/qa.debian.org/jsonevil Tag: license-problem-gfdl-invariants Severity: serious Certainty: possible Info: The given source file is licensed under GFDL with invariant section or front-cover or back-cover text. . GFDL with invariant sections, front-cover or back-cover texts are not suitable for main. . Should this file be multi-licensed, please override the tag. . Should this be a false-positive, please report a bug. Ref: http://wiki.debian.org/qa.debian.org/gfdlinvariant, http://www.debian.org/vote/2006/vote_001 Tag: license-problem-non-free-RFC Severity: serious Certainty: possible Info: The given source file is licensed under the newer RFC license. . The majority of IETF documents, such as RFCs, are not licensed under DFSG-free terms, and should thus not be included in Debian main. . If this file is multi-licensed, please override the tag. . If this is a false-positive, please report a bug against Lintian. Ref: https://wiki.debian.org/NonFreeIETFDocuments Tag: license-problem-non-free-RFC-BCP78 Severity: serious Certainty: possible Info: The given source file is licensed under the non-free RFC license (BCP78). . The majority of IETF documents, such as RFCs, are not licensed under DFSG-free terms, and should thus not be included in Debian main. . If this file is multi-licensed, please override the tag. . If this is a false-positive, please report a bug against Lintian. Ref: https://wiki.debian.org/NonFreeIETFDocuments Tag: license-problem-gfdl-invariants-empty Severity: minor Certainty: possible Info: The given source file is licensed under GFDL, but without any precision about the presence of invariant sections, front-cover or back-cover text. . GFDL license explicitly requests you to document this non presence. . Ref: http://wiki.debian.org/qa.debian.org/gfdlinvariant, http://www.debian.org/vote/2006/vote_001 Tag: license-problem-gfdl-non-official-text Severity: pedantic Certainty: possible Info: The given source file is licensed under GFDL, but using a non-official text for the "no invariant sections" part. . Please ask upstream to always use (case insensitive): with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. Tag: license-problem-nvidia-intellectual Severity: serious Certainty: possible Info: The following source files include material under a non-distributable license from Nvidia. Therefore, it is not even possible to ship this in non-free. . Please re-package the package without the file (if possible) or ask the FTP-masters to remove the package. . If the package has been uploaded to Debian before, please remember to also notify snapshot.debian.org about this package containing a non-distributable file. . If this is a false-positive, please report a bug against Lintian. Ref: http://bugs.debian.org/724930#27 Tag: license-problem-md5sum-non-distributable-file Severity: serious Certainty: certain Info: The following file is not distributable even in the non-free archive. . Please re-package the package without the file (if possible) or ask the FTP-masters to remove the package. . If the package has been uploaded to Debian before, please remember to also notify snapshot.debian.org about this package containing a non-distributable file. . If this is a false-positive, please report a bug against Lintian. Tag: license-problem-md5sum-non-free-file Severity: serious Certainty: certain Info: The following file is not suitable for main or contrib. . Please re-package the package without the file (if possible) or ask the FTP-masters to remove the package. . You could also split this package and move this file into the non-free archive. . If this is a false-positive, please report a bug against Lintian. Tag: source-contains-unsafe-symlink Severity: serious Certainty: possible Info: The source contains an unsafe symlink. If followed, the link will escape the source root. Note that all absolute symlinks are unconditionally considered "unsafe" in this case (unlike in binary packages). . If it is a part of the package's testsuite, Lintian may have failed to recognise it as a test. In that case, please override the tag. Tag: source-is-missing Severity: serious Certainty: possible Info: The source of the following file is missing. Lintian checked a few possible paths to find the source, and do not find it. . Please repack your package to include the source or add it to "debian/missing-sources" directory. . If this is a false-positive, please report a bug against Lintian. lintian-2.5.22ubuntu1/checks/source-copyright.pm0000664000000000000000000002563012311317621016563 0ustar # source-copyright-file -- lintian check script -*- perl -*- # Copyright (C) 2011 Jakub Wilk # # 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::source_copyright; use strict; use warnings; use autodie; use List::MoreUtils qw(any); use Text::Levenshtein qw(distance); use Lintian::Relation::Version qw(versions_compare); use Lintian::Tags qw(tag); use Lintian::Util qw(parse_dpkg_control slurp_entire_file); my $dep5_last_normative_change = '0+svn~166'; my $dep5_last_overhaul = '0+svn~148'; my %dep5_renamed_fields = ( 'format-specification' => 'format', 'maintainer' => 'upstream-contact', 'upstream-maintainer' => 'upstream-contact', 'contact' => 'upstream-contact', 'name' => 'upstream-name', ); sub run { my (undef, undef, $info) = @_; my $copyright_filename = $info->debfiles('copyright'); if (-l $copyright_filename) { tag 'debian-copyright-is-symlink'; return; } if (not -f $copyright_filename) { my @pkgs = $info->binaries; tag 'no-debian-copyright'; $copyright_filename = undef; if (scalar @pkgs == 1) { # If debian/copyright doesn't exist, and the only a single # binary package is built, there's a good chance that the # copyright file is available as # debian/.copyright. $copyright_filename = $info->debfiles($pkgs[0] . '.copyright'); if (not -f $copyright_filename or -l $copyright_filename) { $copyright_filename = undef; } } } return unless defined $copyright_filename; my $contents = slurp_entire_file($copyright_filename); my (@dep5, @lines); if ( $contents =~ m{ (^ | \n) (?i: format(:|[-\s]spec) ) (?: . | \n\s+ )* (?: /dep[5s]?\b | \bDEP-?5\b | [Mm]achine-readable\s(?:license|copyright) | /copyright-format/ | CopyrightFormat | VERSIONED_FORMAT_URL ) }x ) { # Before trying to parse the copyright as Debian control file, try to # determine the format URI. my $first_para = $contents; $first_para =~ s,^#.*,,mg; $first_para =~ s,[ \t]+$,,mg; $first_para =~ s,^\n+,,g; $first_para =~ s,\n\n.*,\n,s; #;; hi emacs $first_para =~ s,\n?[ \t]+, ,g; $first_para =~ m,^Format(?:-Specification)?:\s*(.*),mi; my $uri = $1; $uri =~ s/^([^#\s]+)#/$1/ if defined $uri; # strip fragment identifier if (defined $uri) { my $original_uri = $uri; my $version; if ($uri =~ m,\b(?:rev=REVISION|VERSIONED_FORMAT_URL)\b,) { tag 'boilerplate-copyright-format-uri', $uri; } elsif ( $uri =~ s{ http://wiki\.debian\.org/ Proposals/CopyrightFormat\b}{}xsm ) { $version = '0~wiki'; $uri =~ m,^\?action=recall&rev=(\d+)$, and $version = "$version~$1"; } elsif ($uri =~ m,^http://dep\.debian\.net/deps/dep5/?$,) { $version = '0+svn'; } elsif ( $uri =~ s{\A http://svn\.debian\.org/ wsvn/dep/web/deps/dep5\.mdwn\b}{}xsm ) { $version = '0+svn'; $uri =~ m,^\?(?:\S+[&;])?rev=(\d+)(?:[&;]\S+)?$, and $version = "$version~$1"; } elsif ( $uri =~ s{ \A http://(?:svn|anonscm)\.debian\.org/ viewvc/dep/web/deps/dep5\.mdwn\b}{}xsm ) { $version = '0+svn'; $uri =~ m{\A \? (?:\S+[&;])? (?:pathrev|revision|rev)=(\d+)(?:[&;]\S+)? \Z}xsm and $version = "$version~$1"; } elsif ( $uri =~ m{ \A http://www\.debian\.org/doc/ (?:packaging-manuals/)?copyright-format/(\d+\.\d+)/? \Z}xsm ) { $version = $1; } else { tag 'unknown-copyright-format-uri', $original_uri; } if (defined $version) { if ($version =~ m,wiki,) { tag 'wiki-copyright-format-uri', $original_uri; } elsif ($version =~ m,svn$,) { tag 'unversioned-copyright-format-uri', $original_uri; } elsif (versions_compare $version, '<<', $dep5_last_normative_change) { tag 'out-of-date-copyright-format-uri', $original_uri; } if (versions_compare $version, '>=', $dep5_last_overhaul) { # We are reasonably certain that we're dealing # with an up-to-date DEP-5 format. Let's try to do # more strict checks. eval { open(my $fd, '<', \$contents); @dep5 = parse_dpkg_control($fd, 0, \@lines); close($fd); }; if ($@) { chomp $@; $@ =~ s/^syntax error at //; tag 'syntax-error-in-dep5-copyright', $@; } } } } else { tag 'unknown-copyright-format-uri'; } } if (@dep5) { my $first_para = shift @dep5; my %standalone_licenses; my %required_standalone_licenses; for my $field (keys %{$first_para}) { my $renamed_to = $dep5_renamed_fields{$field}; if (defined $renamed_to) { tag 'obsolete-field-in-dep5-copyright', $field, $renamed_to, "(line $lines[0]{$field})"; } } if ( not defined $first_para->{'format'} and not defined $first_para->{'format-specification'}) { tag 'missing-field-in-dep5-copyright', 'format', "(line $lines[0]{'format'})"; } for my $license (split_licenses($first_para->{'license'})) { $required_standalone_licenses{$license} = 1; } my @commas_in_files; my $i = 0; for my $para (@dep5) { $i++; my ($files_fname, $files) = get_field($para, 'files', $lines[$i]); my $license = get_field($para, 'license', $lines[$i]); my $copyright = get_field($para, 'copyright', $lines[$i]); if (not defined $files and defined $license and defined $copyright) { tag 'ambiguous-paragraph-in-dep5-copyright', "paragraph at line $lines[$i]{'START-OF-PARAGRAPH'}"; # If it is the first paragraph, it might be an instance of # the (no-longer) optional "first Files-field". $files = '*' if $i == 1; } if (defined $license and not defined $files) { # Standalone license paragraph if (not $license =~ m/\n/) { tag 'missing-license-text-in-dep5-copyright',lc $license, "(paragraph at line $lines[$i]{'START-OF-PARAGRAPH'})"; } ($license, undef) = split /\n/, $license, 2; for (split_licenses($license)) { $standalone_licenses{$_} = $i; } } elsif (defined $files) { # Files paragraph if (not @commas_in_files and $files =~ /,/) { @commas_in_files = ($i, $files_fname); } if (defined $license) { for (split_licenses($license)) { $required_standalone_licenses{$_} = $i; } } else { tag 'missing-field-in-dep5-copyright', 'license', "(paragraph at line $lines[$i]{'START-OF-PARAGRAPH'})"; } if (not defined $copyright) { tag 'missing-field-in-dep5-copyright', 'copyright', "(paragraph at line $lines[$i]{'START-OF-PARAGRAPH'})"; } } else { tag 'unknown-paragraph-in-dep5-copyright', 'paragraph at line', $lines[$i]{'START-OF-PARAGRAPH'}; } } if (@commas_in_files) { my ($paragraph_no, $field_name) = @commas_in_files; if (not any { m/,/xsm } $info->sorted_index) { tag 'comma-separated-files-in-dep5-copyright', 'paragraph at line', $lines[$paragraph_no]{$field_name}; } } while ((my $license, $i) = each %required_standalone_licenses) { if (not defined $standalone_licenses{$license}) { tag 'missing-license-paragraph-in-dep5-copyright', $license, "(paragraph at line $lines[$i]{'START-OF-PARAGRAPH'})"; } } while ((my $license, $i) = each %standalone_licenses) { if (not defined $required_standalone_licenses{$license}) { tag 'unused-license-paragraph-in-dep5-copyright', $license, "(paragraph at line $lines[$i]{'START-OF-PARAGRAPH'})"; } } } return; } sub split_licenses { my ($license) = @_; return () unless defined($license); return () if $license =~ /\n/; $license =~ s/[(),]//; return map { "\L$_" } (split(m/\s++(?:and|or)\s++/, $license)); } sub get_field { my ($para, $field, $line) = @_; if (exists $para->{$field}) { return $para->{$field} unless wantarray; return ($field, $para->{$field}); } # Fall back to a "likely misspelling" of the field. foreach my $f (sort keys %$para) { if (distance($field, $f) < 3) { tag 'field-name-typo-in-dep5-copyright', $f, '->', $field, "(line $line->{$f})"; return $para->{$f} unless wantarray; return ($f, $para->{$f}); } } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/debian-readme.desc0000664000000000000000000000272312153060143016230 0ustar Check-Script: debian-readme Author: Richard Braakman Abbrev: drm Type: binary Needs-Info: debian-readme Info: This script checks the README.Debian file for various problems. Tag: readme-debian-mentions-usr-doc Severity: normal Certainty: possible Info: The README.Debian file installed by this package apparently points users at /usr/doc. /usr/doc has been retired and all documentation migrated to /usr/share/doc. This reference should probably also be updated. Tag: readme-debian-contains-debmake-template Severity: normal Certainty: certain Info: The README.Debian file installed by this package contains one of the template phrases from the README.Debian provided by deb-make or dh_make: . Comments regarding the package So far nothing to say <possible notes regarding this package - if none, delete this file> . If there is real information in the file, please delete any generic template phrases. If there is nothing to say in the file, it is best removed. Tag: readme-debian-contains-invalid-email-address Severity: normal Certainty: certain Info: The README.Debian file contains an invalid email address: the domain needs at least one dot. This looks like a mistake. Tag: spelling-error-in-readme-debian Severity: minor Certainty: certain Info: Lintian found a spelling error in the README.Debian file. Lintian has a list of common misspellings that it looks for. It does not have a dictionary like a spelling checker does. lintian-2.5.22ubuntu1/checks/shared-libs.pm0000664000000000000000000006750212311317621015456 0ustar # shared-libs -- lintian check script -*- perl -*- # Copyright (C) 1998 Christian Schwarz # # 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::shared_libs; use strict; use warnings; use autodie; use File::Basename; use List::MoreUtils qw(any none); use Lintian::Data; use Lintian::Relation; use Lintian::Tags qw(tag); use Lintian::Util qw(fail normalize_pkg_path slurp_entire_file); # Libraries that should only be used in the presence of certain capabilities # may be located in subdirectories of the standard ldconfig search path with # one of the following names. my $HWCAP_DIRS = Lintian::Data->new('shared-libs/hwcap-dirs'); # The following architectures should always have a STACK setting in shared # libraries to disable executable stack. Other architectures don't always add # this section and therefore can't be checked. my %stack_arches = map { $_ => 1 }qw( alpha amd64 i386 m68k powerpc s390 sparc ); my $ldconfig_dirs = Lintian::Data->new('shared-libs/ldconfig-dirs'); my $MA_DIRS = Lintian::Data->new('common/multiarch-dirs', qr/\s++/); sub run { my ($pkg, $type, $info, $proc, $group) = @_; my ($must_call_ldconfig, %SONAME, %sharedobject); my @shlibs; my @words; my @devpkgs; my $objdump = $info->objdump_info; # 1st step: get info about shared libraries installed by this package foreach my $file (sort keys %{$objdump}) { $SONAME{$file} = $objdump->{$file}->{SONAME}[0] if scalar @{ $objdump->{$file}->{SONAME} }; } foreach my $file ($info->sorted_index) { my $fileinfo = $info->file_info($file); if ($fileinfo =~ m/^[^,]*\bELF\b/ && $fileinfo =~ m/shared object/) { $sharedobject{$file} = 1; } } if (%SONAME) { foreach my $bin ($group->get_binary_processables) { next unless $bin->pkg_name =~ m/\-dev$/; if ($bin->info->relation('strong')->implies($pkg)) { push @devpkgs, $bin; } } } # 2nd step: read package contents for my $cur_file ($info->sorted_index) { # shared library? my $normalized_target; $normalized_target = normalize_pkg_path(join('/', dirname($cur_file), $cur_file->link)) if defined $cur_file->link; if ( exists $SONAME{$cur_file} or (defined $normalized_target and exists $SONAME{$normalized_target}) ) { # yes!! my ($real_file, $perm); if (exists $SONAME{$cur_file}) { $real_file = $cur_file; $perm = $cur_file->operm; } else { $real_file = $normalized_target; # perm not needed for this branch } # Installed in a directory controlled by the dynamic # linker? We have to strip off directories named for # hardware capabilities. if (needs_ldconfig($cur_file)) { # yes! so postinst must call ldconfig $must_call_ldconfig = $real_file; } # At this point, we do not want to process symlinks as # they will only lead to duplicate warnings. next unless $cur_file eq $real_file; # Now that we're sure this is really a shared library, report on # non-PIC problems. if ($objdump->{$cur_file}->{TEXTREL}) { tag 'shlib-with-non-pic-code', $cur_file; } my @symbol_names = map { @{$_}[2] } @{$objdump->{$cur_file}->{SYMBOLS}}; if ( (any { m/^_?exit$/ } @symbol_names) && (none { $_ eq 'fork' } @symbol_names)) { # If it has an INTERP section it might be an application with # a SONAME (hi openjdk-6, see #614305). Also see the comment # for "shlib-with-executable-bit" below. tag 'shlib-calls-exit', $cur_file unless $objdump->{$cur_file}->{INTERP}; } # executable? my $perms = sprintf('%04o', $perm); if ($perm & 0111) { # Yes. But if the library has an INTERP section, it's # designed to do something useful when executed, so don't # report an error. Also give ld.so a pass, since it's # special. tag 'shlib-with-executable-bit', $cur_file, $perms unless ($objdump->{$cur_file}->{INTERP} or $cur_file =~ m,^lib(?:32|64)?/ld-[\d.]+\.so$,); } elsif ($perm != 0644) { tag 'shlib-with-bad-permissions', $cur_file, $perms; } # executable stack. We can only warn about a missing # section on some architectures. Only warn if there's an # Architecture field; if that's missing, we'll already be # complaining elsewhere. if (not defined $objdump->{$cur_file}->{'PH'}->{STACK}) { if (defined $info->field('architecture')) { my $arch = $info->field('architecture'); tag 'shlib-without-PT_GNU_STACK-section', $cur_file if $stack_arches{$arch}; } } elsif ($objdump->{$cur_file}->{'PH'}->{STACK}->{flags} ne 'rw-'){ tag 'shlib-with-executable-stack', $cur_file; } } elsif ($ldconfig_dirs->known(dirname($cur_file)) && exists $sharedobject{$cur_file}) { tag 'sharedobject-in-library-directory-missing-soname', $cur_file; } elsif ($cur_file =~ m/\.la$/ and not defined $cur_file->link) { local $_; open(my $fd, '<', $info->unpacked($cur_file)); while(<$fd>) { next unless (m/^(libdir)='(.+?)'$/) or (m/^(dependency_libs)='(.+?)'$/); my ($field, $value) = ($1, $2); if ($field eq 'libdir') { # dirname with leading slash and without the trailing one. my $expected = '/' . substr($cur_file->dirname, 0, -1); $value =~ s,/+$,,; # python-central is a special case since the # libraries are moved at install time. next if ($value =~ m,^/usr/lib/python[\d.]+/(?:site|dist)-packages, and $expected =~ m,^/usr/share/pyshared,); tag 'incorrect-libdir-in-la-file', $cur_file, "$value != $expected" unless($expected eq $value); } elsif ($field eq 'dependency_libs'){ tag 'non-empty-dependency_libs-in-la-file', $cur_file; } } close($fd); } } # 3rd step: check if shlib symlinks are present and in correct order for my $shlib_file (keys %SONAME) { # file found? if (not $info->index($shlib_file)) { fail( "shlib $shlib_file not found in package (should not happen!)"); } my ($dir, $shlib_name) = $shlib_file =~ m,(.*)/([^/]+)$,; # not a public shared library, skip it next unless $ldconfig_dirs->known($dir); # symlink found? my $link_file = "$dir/$SONAME{$shlib_file}"; if (not $info->index($link_file)) { tag 'ldconfig-symlink-missing-for-shlib', "$link_file $shlib_file $SONAME{$shlib_file}"; } else { # $link_file really another file? if ($link_file eq $shlib_file) { # the library file uses its SONAME, this is ok... } else { # $link_file really a symlink? if ($info->index($link_file)->is_symlink) { # yes. # $link_file pointing to correct file? if ($info->index($link_file)->link eq $shlib_name) { # ok. } else { tag 'ldconfig-symlink-referencing-wrong-file', join(q{ }, "$link_file ->", $info->index($link_file)->link, "instead of $shlib_name"); } } else { tag 'ldconfig-symlink-is-not-a-symlink', "$shlib_file $link_file"; } } } # libtool "-release" variant $link_file =~ s/-[\d\.]+\.so$/.so/o; # determine shlib link name (w/o version) $link_file =~ s/\.so.+$/.so/o; # shlib symlink may not exist. # if shlib doesn't _have_ a version, then $link_file and # $shlib_file will be equal, and it's not a development link, # so don't complain. if ($info->index($link_file) and $link_file ne $shlib_file) { tag 'non-dev-pkg-with-shlib-symlink', "$shlib_file $link_file"; } elsif (@devpkgs) { # -dev package - it needs a shlib symlink my $ok = 0; my @alt; # If the shared library is in /lib, we have to look for # the dev symlink in /usr/lib $link_file = "usr/$link_file" unless $shlib_file =~ m,^usr/,; push @alt, $link_file; if ($proc->pkg_src =~ m/^gcc-(\d+.\d+)$/o) { # gcc has a lot of bi-arch libs and puts the dev symlink # in slightly different directories (to be co-installable # with itself I guess). Allegedly, clang (etc.) have to # handle these special cases, so it should be # acceptable... my $gcc_ver = $1; my $basename = basename($link_file); my $madir = $MA_DIRS->value($proc->pkg_arch); my $stem; # Generally we are looking for # * usr/lib/gcc/MA-TRIPLET/$gcc_ver/${BIARCH}$basename # # Where BIARCH is one of {,32/,n32/,x32/,sf/,hf/}. Note # the "empty string" as a possible option. # # The two-three letter name directory before the # basename is bi-arch names. $stem = "usr/lib/gcc/$madir/$gcc_ver" if defined $madir; # But in the rare case we don't know the Multi-arch dir, # just do without it as often (but not always) works. $stem = "usr/lib/gcc/$gcc_ver" unless defined $madir; push @alt, map { "$stem/$_" } ('', qw(32 n32 x32 sf hf)); } PKG: foreach my $devpkg (@devpkgs) { my $dinfo = $devpkg->info; foreach my $link (@alt) { if ($devpkg->info->index($link)) { $ok = 1; last PKG; } } } tag 'dev-pkg-without-shlib-symlink', "$shlib_file $link_file" unless $ok; } } # 4th step: check shlibs control file # $version may be undef in very broken packages my $version = $info->field('version'); my $provides = $pkg; $provides .= "( = $version)" if defined $version; # Assume the version to be a non-native version to avoid # uninitialization warnings later. $version = '0-1' unless defined $version; $provides = Lintian::Relation->and($info->relation('provides'), $provides); my $shlibsf = $info->control('shlibs'); my $symbolsf = $info->control('symbols'); my (%shlibs_control, %symbols_control); # Libraries with no version information can't be represented by # the shlibs format (but can be represented by symbols). We want # to warn about them if they appear in public directories. If # they're in private directories, assume they're plugins or # private libraries and are safe. my %unversioned_shlibs; for (keys %SONAME) { my $soname = format_soname($SONAME{$_}); if ($soname !~ / /) { $unversioned_shlibs{$_} = 1; tag 'shlib-without-versioned-soname', $_, $soname if $ldconfig_dirs->known(dirname($_)); } } @shlibs = grep { !$unversioned_shlibs{$_} } keys %SONAME; if (-l $shlibsf) { # control files are not symlinks, skip this part. } elsif ($#shlibs == -1) { # no shared libraries included in package, thus shlibs control # file should not be present if (-f $shlibsf) { tag 'pkg-has-shlibs-control-file-but-no-actual-shared-libs'; } } else { # shared libraries included, thus shlibs control file has to exist if (not -f $shlibsf) { if ($type ne 'udeb') { for my $shlib (@shlibs) { # skip it if it's not a public shared library next unless $ldconfig_dirs->known(dirname($shlib)); tag 'no-shlibs-control-file', $shlib unless is_nss_plugin($shlib); } } } else { my (%shlibs_control_used, @shlibs_depends); open(my $fd, '<', $shlibsf); while (<$fd>) { chop; next if m/^\s*$/ or /^#/; # We exclude udebs from the checks for correct shared library # dependencies, since packages may contain dependencies on # other udeb packages. my $udeb = ''; $udeb = 'udeb: ' if s/^udeb:\s+//o; @words = split(/\s+/o,$_); my $shlibs_string = $udeb.$words[0].' '.$words[1]; if ($shlibs_control{$shlibs_string}) { tag 'duplicate-entry-in-shlibs-control-file', $shlibs_string; } else { $shlibs_control{$shlibs_string} = 1; push(@shlibs_depends, join(' ', @words[2 .. $#words])) unless $udeb; } } close($fd); for my $shlib (@shlibs) { my $shlib_name = $SONAME{$shlib}; $shlib_name = format_soname($shlib_name); $shlibs_control_used{$shlib_name} = 1; $shlibs_control_used{'udeb: '.$shlib_name} = 1; unless (exists $shlibs_control{$shlib_name}) { # skip it if it's not a public shared library next unless $ldconfig_dirs->known(dirname($shlib)); # no!! tag 'shlib-missing-in-control-file', $shlib_name, 'for', $shlib unless is_nss_plugin($shlib); } } for my $shlib_name (keys %shlibs_control) { tag 'unused-shlib-entry-in-control-file', $shlib_name unless $shlibs_control_used{$shlib_name}; } # Check that all of the packages listed as dependencies in # the shlibs file are satisfied by the current package or # its Provides. Normally, packages should only declare # dependencies in their shlibs that they themselves can # satisfy. # # Deduplicate the list of dependencies before warning so # that we don't dupliate warnings. my %seen; @shlibs_depends = grep { !$seen{$_}++ } @shlibs_depends; for my $depend (@shlibs_depends) { unless ($provides->implies($depend)) { tag 'shlibs-declares-dependency-on-other-package', $depend; } tag 'shlibs-uses-obsolete-relation', $depend if $depend =~ m/\(\s*[><](?![<>=])\s*/; } } } # 5th step: check symbols control file. Add back in the unversioned shared # libraries, since they can still have symbols files. if (-l $symbolsf) { # control files are not symlinks, skip this part. } elsif ($#shlibs == -1 and not %unversioned_shlibs) { # no shared libraries included in package, thus symbols # control file should not be present if (-f $symbolsf) { tag 'pkg-has-symbols-control-file-but-no-shared-libs'; } } elsif (not -f $symbolsf) { if ($type ne 'udeb') { for my $shlib (@shlibs, keys %unversioned_shlibs) { # skip it if it's not a public shared library next unless $ldconfig_dirs->known(dirname($shlib)); tag 'no-symbols-control-file', $shlib unless is_nss_plugin($shlib); } } } elsif (-f $symbolsf) { my $version_wo_rev = $version; $version_wo_rev =~ s/^(.+)-([^-]+)$/$1/; my ($full_version_count, $full_version_sym) = (0, undef); my ($debian_revision_count, $debian_revision_sym) = (0, undef); my ($soname, $dep_package, $dep); my %symbols_control_used; my @symbols_depends; my $dep_templates = 0; my $meta_info_seen = 0; my $warned = 0; my $symbol_count = 0; open(my $fd, '<', $symbolsf); while (<$fd>) { chomp; next if m/^\s*$/ or /^#/; if (m/^([^\s|*]\S+)\s\S+\s*(?:\(\S+\s+\S+\)|\#MINVER\#)?/) { # soname, main dependency template $soname = $1; s/^\Q$soname\E\s*//; $soname = format_soname($soname); if ($symbols_control{$soname}) { tag 'duplicate-entry-in-symbols-control-file', $soname; } else { $symbols_control{$soname} = 1; $warned = 0; foreach my $part (split /\s*,\s*/) { foreach my $subpart (split /\s*\|\s*/, $part) { $subpart =~ m,^(\S+)(\s*(?:\(\S+\s+\S+\)|#MINVER#))?$,; ($dep_package, $dep) = ($1, $2 || ''); if (defined $dep_package) { push @symbols_depends, $dep_package . $dep; } else { tag 'syntax-error-in-symbols-file', $. unless $warned; $warned = 1; } } } } $dep_templates = 0; $meta_info_seen = 0; $symbol_count = 0; } elsif (m/^\|\s+\S+\s*(?:\(\S+\s+\S+\)|#MINVER#)?/) { # alternative dependency template $warned = 0; if ($meta_info_seen or not defined $soname) { tag 'syntax-error-in-symbols-file', $.; $warned = 1; } s/^\|\s*//; foreach my $part (split /\s*,\s*/) { foreach my $subpart (split /\s*\|\s*/, $part) { $subpart =~ m,^(\S+)(\s*(?:\(\S+\s+\S+\)|#MINVER#))?$,; ($dep_package, $dep) = ($1, $2 || ''); if (defined $dep_package) { push @symbols_depends, $dep_package . $dep; } else { tag 'syntax-error-in-symbols-file', $. unless $warned; $warned = 1; } } } $dep_templates++ unless $warned; } elsif (m/^\*\s(\S+):\s\S+/) { # meta-information # This should probably be in a hash, but there's # only one supported value currently tag 'unknown-meta-field-in-symbols-file', "$1, line $." unless $1 eq 'Build-Depends-Package'; tag 'syntax-error-in-symbols-file', $. unless defined $soname and $symbol_count == 0; $meta_info_seen = 1; } elsif (m/^\s+(\S+)\s(\S+)(?:\s(\S+(?:\s\S+)?))?$/) { # Symbol definition tag 'syntax-error-in-symbols-file', $. unless defined $soname; $symbol_count++; my ($sym, $v, $dep_order) = ($1, $2, $3); $dep_order ||= ''; if (($v eq $version) and ($version =~ /-/)) { $full_version_sym ||= $sym; $full_version_count++; } elsif (($v =~ /-/) and (not $v =~ /~$/) and ($v ne $version_wo_rev)) { $debian_revision_sym ||= $sym; $debian_revision_count++; } if (length $dep_order) { if ($dep_order !~ /^\d+$/ or $dep_order > $dep_templates) { tag 'invalid-template-id-in-symbols-file', $.; } } } else { # Unparseable line tag 'syntax-error-in-symbols-file', $.; } } close($fd); if ($full_version_count) { $full_version_count--; my $others = ''; if ($full_version_count > 0) { $others = " and $full_version_count others"; } tag 'symbols-file-contains-current-version-with-debian-revision', "on symbol $full_version_sym$others"; } if ($debian_revision_count) { $debian_revision_count--; my $others = ''; if ($debian_revision_count > 0) { $others = " and $debian_revision_count others"; } tag 'symbols-file-contains-debian-revision', "on symbol $debian_revision_sym$others"; } for my $shlib (@shlibs, keys %unversioned_shlibs) { my $shlib_name = $SONAME{$shlib}; $shlib_name = format_soname($shlib_name); $symbols_control_used{$shlib_name} = 1; $symbols_control_used{'udeb: '.$shlib_name} = 1; unless (exists $symbols_control{$shlib_name}) { # skip it if it's not a public shared library next unless $ldconfig_dirs->known(dirname($shlib)); tag 'shlib-missing-in-symbols-control-file', $shlib_name, 'for', $shlib unless is_nss_plugin($shlib); } } for my $shlib_name (keys %symbols_control) { tag 'unused-shlib-entry-in-symbols-control-file', $shlib_name unless $symbols_control_used{$shlib_name}; } # Check that all of the packages listed as dependencies in the symbols # file are satisfied by the current package or its Provides. # Normally, packages should only declare dependencies in their symbols # files that they themselves can satisfy. # # Deduplicate the list of dependencies before warning so that we don't # dupliate warnings. my %seen; @symbols_depends = grep { !$seen{$_}++ } @symbols_depends; for my $depend (@symbols_depends) { unless ($provides->implies($depend)) { tag 'symbols-declares-dependency-on-other-package', $depend; } } } # Compare the contents of the shlibs and symbols control files, but exclude # from this check shared libraries whose SONAMEs has no version. Those can # only be represented in symbols files and aren't expected in shlibs files. if (keys %shlibs_control and keys %symbols_control) { for my $key (keys %symbols_control) { unless (exists $shlibs_control{$key} or $key !~ / /) { tag 'symbols-declared-but-not-shlib', $key; } } } # 6th step: check pre- and post- control files if (-f $info->control('preinst') and not -l $info->control('preinst')) { local $_ = slurp_entire_file($info->control('preinst')); if (/^[^\#]*\bldconfig\b/m) { tag 'preinst-calls-ldconfig'; } } my $we_call_postinst=0; if (-f $info->control('postinst') and not -l $info->control('postinst')) { local $_ = slurp_entire_file($info->control('postinst')); # Decide if we call ldconfig if (/^[^\#]*\bldconfig\b/m) { $we_call_postinst=1; } } if ($type eq 'udeb') { tag 'udeb-postinst-must-not-call-ldconfig' if $we_call_postinst; } else { tag 'postinst-has-useless-call-to-ldconfig' if $we_call_postinst and not $must_call_ldconfig; tag 'postinst-must-call-ldconfig', $must_call_ldconfig if not $we_call_postinst and $must_call_ldconfig; } my $multiarch = $info->field('multi-arch') // 'no'; if ($multiarch eq 'foreign' and $must_call_ldconfig) { tag 'shlib-in-multi-arch-foreign-package', $must_call_ldconfig; } if (-f $info->control('prerm') and not -l $info->control('prerm')) { local $_ = slurp_entire_file($info->control('prerm')); if (/^[^\#]*\bldconfig\b/m) { tag 'prerm-calls-ldconfig'; } } if (-f $info->control('postrm') and not -l $info->control('postrm')) { local $_ = slurp_entire_file($info->control('postrm')); # Decide if we call ldconfig if (/^[^\#]*\bldconfig\b/m) { tag 'postrm-has-useless-call-to-ldconfig', unless $must_call_ldconfig; } else { tag 'postrm-should-call-ldconfig', $must_call_ldconfig if $must_call_ldconfig; } # Decide if we do it safely s/\bldconfig\b/BldconfigB/g; s/[ \t]//g; # this one matches code from debhelper s/^if\["\$1"=.?remove.?\];?\n*then\n*BldconfigB//gm; # variations... s/^if\[.?remove.?="\$1"\];?\n*then\n*BldconfigB//gm; s/^\["\$1"=.?remove.?\]\&&BldconfigB//gm; s/^\[.?remove.?="\$1"\]&&BldconfigB//gm; s/remove(?:\|[^)]+)*\).*?BldconfigB.*?(?:;;|esac)//s; if (/^[^\#]*BldconfigB/m) { tag 'postrm-unsafe-ldconfig'; } } return; } # Extract the library name and the version from an SONAME and return them # separated by a space. This code should match the split_soname function in # dpkg-shlibdeps. sub format_soname { my $soname = shift; # libfoo.so.X.X if ($soname =~ /^(.*)\.so\.(.*)$/) { $soname = "$1 $2"; # libfoo-X.X.so } elsif ($soname =~ /^(.*)-(\d.*)\.so$/) { $soname = "$1 $2"; } return $soname; } # Returns a truth value if the first argument appears to be the path # to an libc nss plugin (libnss_.so.$version). sub is_nss_plugin { my ($path) = @_; return 1 if $path =~ m,^(.*/)?libnss_[^.]+\.so\.\d+$,o; return 0; } sub needs_ldconfig { my ($file) = @_; my $dirname = dirname($file); my $last; do { $dirname =~ s%/([^/]+)$%%; $last = $1; } while ($last && $HWCAP_DIRS->known($last)); $dirname .= "/$last" if $last; # yes! so postinst must call ldconfig return 1 if $ldconfig_dirs->known($dirname); return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/source-copyright.desc0000664000000000000000000001474512310413144017066 0ustar Check-Script: source-copyright Author: Jakub Wilk Abbrev: scpy Type: source Needs-Info: debfiles, index Info: This script checks if a source package conforms to policy with regard to copyright files. . Each source package should have a debian/copyright file. Tag: debian-copyright-is-symlink Severity: normal Certainty: certain Info: The file debian/copyright is a symlink instead of a regular file. This makes package checking and manipulation more difficult. . This problem may have prevented lintian from performing other checks. Tag: no-debian-copyright Severity: minor Certainty: certain Ref: policy 12.5 Info: Every package must include the file /usr/share/doc/pkg/copyright. A copy of this file should be in debian/copyright in the source package. Tag: unknown-copyright-format-uri Severity: pedantic Certainty: wild-guess Info: The copyright file appears to intended as machine-readable, but lintian cannot recognize its format URI. It could be a typo for a common URI or a syntax error in the first paragraph. Please file a bug against Lintian if you believe that the copyright file in syntactically valid and the URI is correct. Tag: boilerplate-copyright-format-uri Severity: normal Certainty: possible Info: Format URI of the machine-readable copyright file contains VERSIONED_FORMAT_URL or REVISION string. Please replace it with an actual URI or an actual revision number respectively. Tag: wiki-copyright-format-uri Severity: pedantic Certainty: possible Ref: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Info: Format URI of the machine-readable copyright file refers to Debian Wiki. . Debian Wiki is not used for the format development anymore. Please use http://www.debian.org/doc/packaging-manuals/copyright-format/version/ as the format URI instead. Tag: unversioned-copyright-format-uri Severity: pedantic Certainty: possible Ref: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Info: Format URI of the machine-readable copyright file is not versioned. . Please use http://www.debian.org/doc/packaging-manuals/copyright-format/version/ as the format URI instead. Tag: out-of-date-copyright-format-uri Severity: pedantic Certainty: possible Ref: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Info: A newer version of the machine-readable copyright file specification, than the one referenced by the copyright file, is available. . This problem may have prevented lintian from performing other checks. Tag: syntax-error-in-dep5-copyright Severity: normal Certainty: possible Ref: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Info: The machine-readable copyright file didn't pass Debian control file syntax check. . This issue may hide other issues as Lintian skips some checks on the file in this case. Tag: obsolete-field-in-dep5-copyright Severity: normal Certainty: possible Ref: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Info: The machine-readable copyright file uses a field, that used to be defined by the specification, but has been renamed since then. . Please use Format instead of Format-Specification. . Please use Upstream-Contact instead of Contact, Maintainer or Upstream-Maintainer. . Please use Upstream-Name instead of Name. Tag: comma-separated-files-in-dep5-copyright Severity: normal Certainty: possible Ref: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Info: A list of files in the machine-readable copyright format appears to be separated by commas. The file list should be whitespace separated instead. . Please note this tag is only emitted once per checked copyright file. Tag: missing-field-in-dep5-copyright Severity: normal Certainty: possible Ref: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Info: The paragraph in the machine readable copyright file is missing a field that is required by the specification. Tag: missing-license-paragraph-in-dep5-copyright Severity: normal Certainty: possible Ref: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Info: The files paragraph in the machine readable copyright file references a license, for which no standalone license paragraph exists. Tag: missing-license-text-in-dep5-copyright Severity: normal Certainty: possible Ref: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Info: The standalone license header contains only short license name, but not the license text. Tag: unused-license-paragraph-in-dep5-copyright Severity: minor Certainty: possible Ref: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Info: The license paragraph in the machine-readable copyright file is not referenced by any files paragraph. It could be a typo in the license name or the license paragraph is simply not needed and can be removed. Tag: unknown-paragraph-in-dep5-copyright Severity: normal Certainty: possible Ref: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Info: The machine-readable copyright file contains a paragraph that is neither a standalone license paragraph nor a files paragraph. Tag: field-name-typo-in-dep5-copyright Severity: normal Certainty: possible Info: The listed field name is a likely misspelling of one of the documented DEP-5 fields. . Lintian will continue by using the "misspelled" variant, but other parsers are unlikely to do so. . Implementation detail: The typo is detected by using "Levenshtein edit distance". Therefore, if the typo involve several characters, Lintian may not detect it. Tag: ambiguous-paragraph-in-dep5-copyright Severity: normal Certainty: possible Ref: #652380, http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Info: The paragraph has a "License" and a "Copyright" field, but no "Files" field. Technically, this is a valid paragraph per the DEP-5 specification. However, it is mostly likely a mistake. . If it is a stand-alone license paragraph, the "Copyright" field is not needed and should be removed. On the other hand, if it is a files paragraph, it is missing the "Files" field. . Please note that while the "Files" field was optional in some cases in some of the earlier draft versions, it is mandatory in all files paragraphs in the current specification. . Lintian will attempt to guess what you intended and continue based on its guess. If the guess is wrong, you may see spurious tags related to this paragraph. lintian-2.5.22ubuntu1/checks/automake.pm0000664000000000000000000000251212311317575015065 0ustar # automake -- lintian check script -*- perl -*- # # Copyright (C) 2013 Gautier Minster # # 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::automake; use strict; use warnings; use autodie; use Lintian::Tags qw(tag); sub run { my (undef, undef, $info) = @_; my $makefile = $info->index('Makefile.am'); # If there's no Makefile.am, automake probably isn't used, we're fine return unless defined $makefile; my $deprecated_configure = $info->index('configure.in'); if (defined $deprecated_configure) { tag 'deprecated-configure-filename'; } return; } 1; lintian-2.5.22ubuntu1/checks/nmu.desc0000664000000000000000000000763212310413144014354 0ustar Check-Script: nmu Author: Jeroen van Wolffelaar Abbrev: nmu Type: source Needs-Info: debfiles Info: This script checks if a source package is consistent about its NMU-ness. Tag: orphaned-package-should-not-have-uploaders Severity: important Certainty: certain Info: Packages with their maintainer set to packages@qa.debian.org, i.e. orphaned packages, should not have uploaders. Adopt the package properly if you want to resume its maintenance. Tag: qa-upload-has-incorrect-version-number Severity: normal Certainty: certain Info: A QA upload (uploading an orphaned package without adopting it) is always a maintainer upload: it should not get a NMU revision number. Tag: team-upload-has-incorrect-version-number Severity: normal Certainty: certain Info: A team upload (uploading a package from the same team without adding oneself as maintainer or uploader) is a maintainer upload: it should not get a NMU revision number. Team uploads are recognized by the string "team upload" on the first line of the changelog file. Tag: source-nmu-has-incorrect-version-number Severity: normal Certainty: certain Info: A source NMU should have a Debian revision of "-x.x" (or "+nmuX" for a native package). This is to prevent stealing version numbers from the maintainer. . Maybe you didn't intend this upload to be a NMU, in that case, please double-check that the most recent entry in the changelog is byte-for-byte identical to the maintainer or one of the uploaders. If this is a local package (not intended for Debian), you can suppress this warning by putting "local" in the version number or "local package" on the first line of the changelog entry. Ref: devref 5.11.2 Tag: maintainer-upload-has-incorrect-version-number Severity: normal Certainty: certain Info: A maintainer upload should have a Debian revision without dots. Revisions with dots are reserved for Non-Maintainer Uploads (NMU's), if you do a maintainer-upload with dots, a potential NMU'er has problems choosing a correct version number. Tag: changelog-should-mention-qa Severity: normal Certainty: certain Info: If this upload is to orphan this package, please mention this fact on the first line of the changelog. If this is a QA upload, please mention "QA (group) upload" there. Tag: changelog-should-mention-nmu Severity: normal Certainty: certain Info: When you NMU a package, that fact should be mentioned on the first line in the changelog entry. Use the words "NMU" or "Non-maintainer upload" (case insensitive). . Maybe you didn't intend this upload to be a NMU, in that case, please double-check that the most recent entry in the changelog is byte-for-byte identical to the maintainer or one of the uploaders. If this is a local package (not intended for Debian), you can suppress this warning by putting "local" in the version number or "local package" on the first line of the changelog entry. Ref: devref 5.11.3 Tag: changelog-should-not-mention-nmu Severity: normal Certainty: possible Info: The first line of the changelog entry for this package appears to indicate it is a non-maintainer upload (by including either that string or the string "NMU" and not saying that it's an acknowledgement), but the changelog indicates the person making this release is one of the maintainers. . If this was intended to be an NMU, do not add yourself as a maintainer or uploader. Otherwise, please rephrase your changelog entry to not cause confusion. Tag: changelog-is-symlink Severity: normal Certainty: certain Info: The file debian/changelog is a symlink instead of a regular file. This is unnecessary and makes package checking and manipulation more difficult. If the changelog should be available in the source package under multiple names, make debian/changelog the real file and the other names symlinks to it. . This problem may have prevented lintian from performing other checks, leading to undetected changelog errors. lintian-2.5.22ubuntu1/checks/control-files.desc0000664000000000000000000000266112153060143016334 0ustar Check-Script: control-files Author: Christian Schwarz Abbrev: ctl Type: binary, udeb Info: Check for unknown control files in the binary package. Needs-info: bin-pkg-control Tag: unknown-control-file Severity: normal Certainty: possible Ref: policy B.2 Info: The package contains an unknown control file. Policy says that putting additional files in the package control area is not generally a good idea. Tag: not-allowed-control-file Severity: serious Certainty: certain Info: The package contains a control file that is not allowed in this type of package. Some control files are only allowed in either .deb or .udeb packages and must not be included in packages of the other type. You should probably just remove the file. Tag: control-file-is-empty Severity: normal Certainty: possible Info: The package contains an empty control file, which is most probably an error. Tag: control-file-has-bad-permissions Severity: serious Certainty: certain Ref: policy 10.9 Info: The config, postinst, postrm, preinst, and prerm control files should use mode 0755; all other control files should use 0644. Tag: control-file-has-bad-owner Severity: serious Certainty: certain Ref: policy 10.9 Info: All control files should be owned by root/root. Tag: control-file-is-not-a-file Severity: serious Certainty: certain Info: The package contains a control file that is not a regular file. lintian-2.5.22ubuntu1/checks/debian-readme.pm0000664000000000000000000000376612311317603015740 0ustar # debian-readme -- lintian check script -*- perl -*- # Copyright (C) 1998 Richard Braakman # # 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::debian_readme; use strict; use warnings; use autodie; use Lintian::Check qw(check_spelling); use Lintian::Tags qw(tag); sub run { my ($pkg, undef, $info, undef, $group) = @_; my $readme = ''; open(my $fd, '<', $info->lab_data_path('README.Debian')); while (my $line = <$fd>) { if ($line =~ m,/usr/doc\b,) { tag 'readme-debian-mentions-usr-doc', "line $."; } $readme .= $line; } close($fd); my @template =( 'Comments regarding the Package', 'So far nothing to say', '' ); my $regex = join('|', @template); if ($readme =~ m/$regex/io) { tag 'readme-debian-contains-debmake-template'; } elsif ($readme =~ m/^\s*-- [^<]*<([^> ]+.\@[^>.]*)>/m) { tag 'readme-debian-contains-invalid-email-address', $1; } check_spelling('spelling-error-in-readme-debian', $readme, undef,$group->info->spelling_exceptions); return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/testsuite.desc0000664000000000000000000001037412310413144015603 0ustar Check-Script: testsuite Author: Nicolas Boulenguez Type: source Needs-Info: index, unpacked Info: This script checks the Testsuite field in package dsc files, and debian/tests/control if any. Tag: debian-tests-control-is-not-a-regular-file Severity: wishlist Certainty: certain Info: In case the dsc file contains a Testsuite field, "debian/tests" must be a directory and contain a "control" regular file. Tag: debian-tests-control-uses-national-encoding Severity: normal Certainty: certain Info: The debian/tests/control file should be valid UTF-8, an encoding of the Unicode character set. . There are many ways to convert a file from an encoding like ISO-8859-1; you may for example use "iconv" like: . $ iconv -f ISO-8859-1 -t UTF-8 file > file.new $ mv file.new file Tag: illegal-runtime-test-name Severity: normal Certainty: certain Info: Runtime test names in debian/tests/control are only allowed to contain decimal digits, lowercase ASCII letters, plus or minus signs, dots or slashes. Ref: http://anonscm.debian.org/gitweb/?p=autopkgtest/autopkgtest.git;a=blob_plain;f=doc/README.package-tests;hb=HEAD Tag: inconsistent-testsuite-field Severity: wishlist Certainty: certain Info: The package provides a debian/tests/control file but no Testsuite field in the dsc file, or the field exists but not the file. . For discoverability, packages shipping tests for the autopkgtest testing framework should declare their presence in the package dsc file by adding "XS-Testsuite: autopkgtest" to their debian/control. Ref: http://anonscm.debian.org/gitweb/?p=autopkgtest/autopkgtest.git;a=blob_plain;f=doc/README.package-tests;hb=HEAD Tag: missing-runtime-tests-field Severity: normal Certainty: certain Info: A mandatory field is missing in some paragraph of the debian/tests/control file. Ref: http://anonscm.debian.org/gitweb/?p=autopkgtest/autopkgtest.git;a=blob_plain;f=doc/README.package-tests;hb=HEAD Tag: missing-runtime-test-file Severity: normal Certainty: possible Info: A test file listed in the debian/tests/control file does not exist in the package source. Ref: http://anonscm.debian.org/gitweb/?p=autopkgtest/autopkgtest.git;a=blob_plain;f=doc/README.package-tests;hb=HEAD Tag: runtime-test-file-is-not-a-regular-file Severity: wishlist Certainty: certain Info: A runtime test listed by debian/tests/control is not a regular file. Ref: http://anonscm.debian.org/gitweb/?p=autopkgtest/autopkgtest.git;a=blob_plain;f=doc/README.package-tests;hb=HEAD Tag: syntax-error-in-debian-tests-control Severity: normal Certainty: certain Info: The debian/tests/control file didn't pass Debian control file syntax check. . This issue may hide other issues as Lintian skips some checks on the file in this case. Ref: http://anonscm.debian.org/gitweb/?p=autopkgtest/autopkgtest.git;a=blob_plain;f=doc/README.package-tests;hb=HEAD Tag: unknown-runtime-tests-feature Severity: pedantic Certainty: wild-guess Info: A paragraph in debian/tests/control mentions a non standard value for the Features field. Though allowed, this may indicate an error, as the value will be ignored. Ref: http://anonscm.debian.org/gitweb/?p=autopkgtest/autopkgtest.git;a=blob_plain;f=doc/README.package-tests;hb=HEAD Tag: unknown-runtime-tests-field Severity: pedantic Certainty: wild-guess Info: A paragraph in debian/tests/control mentions a non standard field. Though allowed, this may indicate an error, as the whole paragraph will be ignored. Ref: http://anonscm.debian.org/gitweb/?p=autopkgtest/autopkgtest.git;a=blob_plain;f=doc/README.package-tests;hb=HEAD Tag: unknown-runtime-tests-restriction Severity: pedantic Certainty: wild-guess Info: A paragraph in debian/tests/control mentions a non standard value for the Restrictions field. Though allowed, this may indicate an error, as the whole paragraph will be ignored. Ref: http://anonscm.debian.org/gitweb/?p=autopkgtest/autopkgtest.git;a=blob_plain;f=doc/README.package-tests;hb=HEAD Tag: unknown-testsuite Severity: normal Certainty: certain Info: The dsc file sets Testsuite to a value other than autopkgtest, the only one allowed. This field is most probably copied by dpkg-source from XS-Testsuite in debian/control. Ref: http://anonscm.debian.org/gitweb/?p=autopkgtest/autopkgtest.git;a=blob_plain;f=doc/README.package-tests;hb=HEAD lintian-2.5.22ubuntu1/checks/patch-systems.desc0000664000000000000000000002030212310413144016346 0ustar Check-Script: patch-systems Author: Marc Brockschmidt Abbrev: pat Type: source Info: This script checks for various possible problems when using patch systems Needs-Info: debfiles, diffstat Tag: dpatch-build-dep-but-no-patch-list Severity: normal Certainty: certain Info: Using dpatch requires you to explicitly list all patches you want to apply in debian/patches/00list. This package build-depends on dpatch, but does not provide a patch list. You should either remove the dpatch build dependency or add a patch list. . Note that an empty file cannot be represented in the Debian diff, so an empty patch list will disappear in the source package. If you intended for the series file to be empty, add a comment line. Tag: dpatch-index-references-non-existent-patch Severity: important Certainty: certain Info: In the 00list file listing all your dpatches, you referenced a file that does not exist. This will lead to a fatal error when calling dpatch. Tag: dpatch-missing-description Severity: wishlist Certainty: certain Info: dpatch files should carry a description of the included patch. Description lines start with "## DP:". . As well as a description of the purpose and function of the patch, the description should ideally contain author information, a URL for the bug report (if any), Debian or upstream bugs fixed by it, upstream status, the Debian version and date the patch was first included, and any other information that would be useful if someone were investigating the patch and underlying problem. Please consider using the DEP-3 format for this information. Ref: http://dep.debian.net/deps/dep3/ Tag: quilt-patch-using-template-description Severity: wishlist Certainty: certain Info: The patch contains a standard DEP-3 template description included by dpkg-source(1). Please consider replacing the template with a real description. You can edit the description by using quilt header -e when the patch is at the top of the stack. Alternatively, editing the patch in most text editors should work as well. Ref: http://dep.debian.net/deps/dep3/ Tag: quilt-build-dep-but-no-series-file Severity: normal Certainty: certain Info: Using quilt requires you to explicitly list all patches you want to apply in debian/patches/series. This package build-depends on quilt, but does not provide a patch list. You should either remove the quilt build dependency or add a series file. . Note that an empty file cannot be represented in the Debian diff, so an empty series file will disappear in the source package. If you intended for the series file to be empty, add a comment line. Tag: quilt-series-but-no-build-dep Severity: normal Certainty: possible Info: The package contains a debian/patches/series file usually used by quilt to apply patches at build time, but quilt is not listed in the build dependencies. . You should either remove the series file if it's effectively not useful or add quilt to the build-dependencies if quilt is used during the build process. . If you don't need quilt during build but only during maintenance work, then you can override this warning. Tag: quilt-patch-with-non-standard-options Severity: normal Certainty: certain Info: The quilt series file contains non-standard options to apply some of the listed patches. Quilt uses '-p1' by default if nothing is specified after the name of the patch and the current series file specify something else for some of the patches listed. . For compatibility with the source "3.0 (quilt)" source package format, you should avoid using any option at all and make sure that your patches apply with "-p1". This can be done by refreshing all patches like this: quilt pop -a; while quilt push; do quilt refresh -pab; done Tag: quilt-series-references-non-existent-patch Severity: important Certainty: certain Info: In the series file listing all your quilt patches, you referenced a file that does not exist. This will lead to a fatal error when calling quilt. Tag: quilt-patch-missing-description Severity: wishlist Certainty: certain Info: quilt patch files should start with a description of patch. All lines before the start of the patch itself are considered part of the description. You can edit the description with quilt header -e when the patch is at the top of the stack. . As well as a description of the purpose and function of the patch, the description should ideally contain author information, a URL for the bug report (if any), Debian or upstream bugs fixed by it, upstream status, the Debian version and date the patch was first included, and any other information that would be useful if someone were investigating the patch and underlying problem. Please consider using the DEP-3 format for this information. Ref: http://dep.debian.net/deps/dep3/ Tag: patch-modifying-debian-files Severity: important Certainty: certain Info: A patch stored in debian/patches/ should never modify files in the debian directory (even when it's only creating new files) because the debian directory is always directly provided by the Debian packaging. And you shouldn't have to modify what you choose to provide in the first place. . If the patch provides a new file (say a manual page), place that file in the upstream directory hierarchy as if it was ready to be submitted. Tag: patch-system-but-direct-changes-in-diff Severity: minor Certainty: certain Info: The package uses a patch system, but the Debian diff.gz contains changes to files or creation of additional files outside of the debian directory. This often indicates accidental changes that weren't meant to be in the package or changes that were supposed to be separated out into a patch. The package will also more easily support possible future source package formats if all changes outside the debian directory are stored as patches. Tag: format-3.0-but-debian-changes-patch Severity: minor Certainty: certain Info: This package declares source format 3.0 (quilt), but the Debian .debian.tar.gz file contains a debian-changes-VERSION patch, which represents direct changes to files outside of the debian directory. This often indicates accidental changes that weren't meant to be in the package or changes that were supposed to be separated out into a patch. . If this is intentional, you may wish to consider adding single-debian-patch to debian/source/options, and/or a patch header to debian/source/patch-header explaining why this is done. Tag: more-than-one-patch-system Severity: minor Certainty: certain Info: Either the build-dependencies list more than one patch system or the package uses the 3.0 (quilt) source format but also has a dependency on dpatch. It's unlikely that you need both patch systems at the same time, and having multiple patch systems in play simultaneously can make understanding and modifying the source package unnecessarily complex. Tag: direct-changes-in-diff-but-no-patch-system Severity: pedantic Certainty: certain Info: The Debian diff.gz contains changes to files or creation of additional files outside the debian directory. Keeping the changes as separate patches under the control of a patch system allows for more fine grained control over them. The package will also more easily support possible future source package formats if all changes outside the debian directory are stored as patches. . If the diff only creates new files that can be copied into place by the package build rules, consider putting them in the debian directory rather than using a patch system. Tag: patch-system-but-no-source-readme Severity: normal Certainty: certain Info: This package build-depends on a patch system such as dpatch or quilt, but there is no debian/README.source file. This file is recommended for any package where dpkg-source -x does not result in the preferred form for making modifications to the package. . If you are using quilt and the package needs no other special handling instructions, you may want to add a debian/README.source referring to /usr/share/doc/quilt/README.source. Similarly, you can refer to /usr/share/doc/dpatch/README.source.gz for dpatch. Ref: policy 4.14 lintian-2.5.22ubuntu1/checks/files.pm0000664000000000000000000023502312313541655014366 0ustar # files -- lintian check script -*- perl -*- # Copyright (C) 1998 Christian Schwarz and Richard Braakman # # 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::files; use strict; use warnings; use autodie; use File::Basename; use Lintian::Data; use Lintian::Output qw(warning); use Lintian::Tags qw(tag); use Lintian::Util qw(drain_pipe fail is_string_utf8_encoded open_gz signal_number2name); use Lintian::SlidingWindow; my $FONT_PACKAGES = Lintian::Data->new('files/fonts', qr/\s++/); my $TRIPLETS = Lintian::Data->new('files/triplets', qr/\s++/); my $LOCALE_CODES = Lintian::Data->new('files/locale-codes', qr/\s++/); my $INCORRECT_LOCALE_CODES = Lintian::Data->new('files/incorrect-locale-codes', qr/\s++/); my $MULTIARCH_DIRS = Lintian::Data->new('common/multiarch-dirs', qr/\s++/, sub { return { 'dir' => $_[1], 'match' => qr/\Q$_[1]\E/ } }); my $PRIVACY_BREAKER_WEBSITES = Lintian::Data->new('files/privacy-breaker-websites', qr/\s*\~\~/o,sub { return qr/$_[1]/xism }); my $PRIVACY_BREAKER_FRAGMENTS = Lintian::Data->new('files/privacy-breaker-fragments', qr/\s*\~\~/o,sub { return qr/$_[1]/xism }); my $COMPRESS_FILE_EXTENSIONS = Lintian::Data->new('files/compressed-file-extensions', qr/\s++/,sub { return qr/\Q$_[0]\E/ }); # an OR (|) regex of all compressed extension my $COMPRESS_FILE_EXTENSIONS_OR_ALL = sub { qr/(:?$_[0])/ } ->( join('|', map {$COMPRESS_FILE_EXTENSIONS->value($_) } $COMPRESS_FILE_EXTENSIONS->all)); # see tag duplicated-compressed-file my $DUPLICATED_COMPRESSED_FILE_REGEX = qr/^(.+)\.(?:$COMPRESS_FILE_EXTENSIONS_OR_ALL)$/; # see tag compressed-symlink-with-wrong-ext my $COMPRESSED_SYMLINK_POINTING_TO_COMPRESSED_REGEX = qr/\.($COMPRESS_FILE_EXTENSIONS_OR_ALL)\s*$/; # vcs control files my $VCS_FILES = Lintian::Data->new( 'files/vcs-control-files', qr/\s++/, sub { my $regexp = $_[0]; $regexp =~ s/\${COMPRESS_EXT}/$COMPRESS_FILE_EXTENSIONS_OR_ALL/g; return qr/(:?$regexp)/x; }); # an OR (|) regex of all vcs files my $VCS_FILES_OR_ALL = sub { qr/(?:$_[0])/ } ->(join('|', map { $VCS_FILES->value($_) } $VCS_FILES->all)); # A list of known packaged Javascript libraries # and the packages providing them my @jslibraries = ( [qr,(?i)mochikit\.js(\.gz)?$, => qr'libjs-mochikit'], [ qr,(?i)mootools((\.v|-)[\d\.]+)? (-((core(-server)?)|more)(-(yc|jm|nc))?)?\.js(\.gz)?$,xsm => qr'libjs-mootools' ], [qr,(?i)jquery(\.(min|lite|pack))?\.js(\.gz)?$, => qr'libjs-jquery'], [qr,(?i)prototype(-[\d\.]+)?\.js(\.gz)?$, => qr'libjs-prototype'], [qr,(?i)scriptaculous\.js(\.gz)?$, => qr'libjs-scriptaculous'], [qr,(?i)fckeditor\.js(\.gz)?$, => qr'fckeditor'], [qr,(?i)ckeditor\.js(\.gz)?$, => qr'ckeditor'], [qr,(?i)cropper(\.uncompressed)?\.js(\.gz)?$, => qr'libjs-cropper'], [qr,(?i)(yahoo|yui)-(dom-event|min)\.js(\.gz)?$, => qr'libjs-yui'], [qr,(?i)jquery\.cookie(\.min)?\.js(\.gz)?$, => qr'libjs-jquery-cookie'], [qr,(?i)jquery\.form(\.min)?\.js(\.gz)?$, => qr'libjs-jquery-form'], [ qr,(?i)jquery\.mousewheel(\.min)?\.js(\.gz)?$, => qr'libjs-jquery-mousewheel' ], [qr,(?i)jquery\.easing(\.min)?\.js(\.gz)?$, => qr'libjs-jquery-easing'], [ qr,(?i)jquery\.event\.drag(\.min)?\.js(\.gz)?$, => qr'libjs-jquery-event-drag' ], [ qr,(?i)jquery\.event\.drop(\.min)?\.js(\.gz)?$, => qr'libjs-jquery-event-drop' ], [qr,(?i)jquery\.fancybox(\.min)?\.js(\.gz)?$, =>qr'libjs-jquery-fancybox'], [ qr,(?i)jquery\.galleriffic(\.min)?\.js(\.gz)?$, => qr'libjs-jquery-galleriffic' ], [qr,(?i)jquery\.jfeed(\.min)?\.js(\.gz)?$, => qr'libjs-jquery-jfeed'], [qr,(?i)jquery\.history(\.min)?\.js(\.gz)?$, => qr'libjs-jquery-history'], [qr,(?i)jquery\.jush(\.min)?\.js(\.gz)?$, => qr'libjs-jquery-jush'], [qr,(?i)jquery\.meiomask(\.min)?\.js(\.gz)?$, =>qr'libjs-jquery-meiomask'], [ qr,(?i)jquery\.opacityrollover(\.min)?\.js(\.gz)?$, => qr'libjs-jquery-opacityrollover' ], [qr,(?i)jquery\.tipsy(\.min)?\.js(\.gz)?$, => qr'libjs-jquery-tipsy'], [qr,(?i)jquery\.metadata(\.min)?\.js(\.gz)?$, =>qr'libjs-jquery-metadata'], [ qr,(?i)jquery\.tablesorter(\.min)?\.js(\.gz)?$, => qr'libjs-jquery-tablesorter' ], [ qr,(?i)jquery\.livequery(\.min)?\.js(\.gz)?$, => qr'libjs-jquery-livequery' ], [ qr,(?i)jquery\.treetable(\.min)?\.js(\.gz)?$, => qr'libjs-jquery-treetable' ], # Disabled due to false positives. Needs a content check adding to verify # that the file being checked is /the/ yahoo.js # [ qr,(?i)yahoo\.js(\.gz)?$, => qr'libjs-yui' ], [qr,(?i)jsjac(\.packed)?\.js(\.gz)?$, => qr'libjs-jac'], [qr,(?i)jsMath(-fallback-\w+)?\.js(\.gz)?$, => qr'jsmath'], [qr,(?i)tiny_mce(_(popup|src))?\.js(\.gz)?$, => qr'tinymce2?'], [qr,(?i)dojo\.js(\.uncompressed\.js)?(\.gz)?$, => qr'libjs-dojo-\w+'], [qr,(?i)dijit\.js(\.uncompressed\.js)?(\.gz)?$, => qr'libjs-dojo-\w+'], [qr,(?i)strophe(\.min)?\.js(\.gz)?$, => qr'libjs-strophe'], [qr,(?i)swfobject(?:\.min)?\.js(?:\.gz)?$, => qr'libjs-swfobject'], [qr,(?i)underscore(\.min)?\.js(\.gz)?$, => qr'libjs-underscore'], # not yet available in unstable: # [ qr,(?i)(htmlarea|Xinha(Loader|Core))\.js$, => qr'xinha' ], ); # A list of known packaged PEAR modules # and the packages providing them my @pearmodules = ( [qr,(? 'php-http'], [qr,Auth\.php$, => 'php-auth'], [qr,Auth/HTTP\.php$, => 'php-auth-http'], [qr,Benchmark/(Timer|Profiler|Iterate)\.php$, => 'php-benchmark'], [qr,Cache\.php$, => 'php-cache'], [qr,Cache/Lite\.php$, => 'php-cache-lite'], [qr,Compat\.php$, => 'php-compat'], [qr,Config\.php$, => 'php-config'], [qr,CBC\.php$, => 'php-crypt-cbc'], [qr,Date\.php$, => 'php-date'], [qr,(? 'php-db'], [qr,(? 'php-file'], [qr,Log\.php$, => 'php-log'], [qr,Log/(file|error_log|null|syslog|sql\w*)\.php$, => 'php-log'], [qr,Mail\.php$, => 'php-mail'], [qr,(?i)mime(Part)?\.php$, => 'php-mail-mime'], [qr,mimeDecode\.php$, => 'php-mail-mimedecode'], [qr,FTP\.php$, => 'php-net-ftp'], [qr,(? 'php-net-imap'], [qr,SMTP\.php$, => 'php-net-smtp'], [qr,(? 'php-net-socket'], [qr,IPv4\.php$, => 'php-net-ipv4'], [qr,(? 'php-net-ldap'], ); # A list of known packaged php (!PEAR) libraries # and the packages providing them my @phplibraries = ( [qr,(?i)adodb\.inc\.php$, => qr'libphp-adodb'], [qr,(?i)Smarty(_Compiler)?\.class\.php$, => qr'smarty3?'], [qr,(?i)class\.phpmailer(\.(php|inc))+$, => qr'libphp-phpmailer'], [qr,(?i)phpsysinfo\.dtd$, => qr'phpsysinfo'], [qr,(?i)class\.(Linux|(Open|Net|Free|)BSD)\.inc\.php$, => qr'phpsysinfo'], [qr,Auth/(OpenID|Yadis/Yadis)\.php$, => qr'php-openid'], [qr,(?i)Snoopy\.class\.(php|inc)$, => qr'libphp-snoopy'], [qr,(?i)markdown\.php$, => qr'libmarkdown-php'], [qr,(?i)geshi\.php$, => qr'php-geshi'], [qr,(?i)(class[.-])?pclzip\.(inc|lib)?\.php$, => qr'libphp-pclzip'], [qr,(?i).*layersmenu.*/(lib/)?PHPLIB\.php$, => qr'libphp-phplayersmenu'], [qr,(?i)phpSniff\.(class|core)\.php$, => qr'libphp-phpsniff'], [qr,(?i)(class\.)?jabber\.php$, => qr'libphp-jabber'], [qr,(?i)(class[\.-])?simplepie(\.(php|inc))+$, => qr'libphp-simplepie'], [qr,(?i)jpgraph\.php$, => qr'libphp-jpgraph'], [qr,(?i)fpdf\.php$, => qr'php-fpdf'], [qr,(?i)getid3\.(lib\.)?(\.(php|inc))+$, => qr'php-getid3'], [qr,(?i)streams\.php$, => qr'php-gettext'], [qr,(?i)rss_parse\.(php|inc)$, => qr'libphp-magpierss'], [qr,(?i)unit_tester\.php$, => qr'php-simpletest'], [qr,(?i)Sparkline\.php$, => qr'libsparkline-php'], [qr,(?i)(?:class\.)?nusoap\.(?:php|inc)$, => qr'libnusoap-php'], [qr,(?i)HTMLPurifier\.php$, => qr'php-htmlpurifier'], # not yet available in unstable:, # [ qr,(?i)IXR_Library(\.inc|\.php)+$, => qr'libphp-ixr' ], # [ qr,(?i)(class\.)?kses\.php$, => qr'libphp-kses' ], ); # A list of known non-free flash executables my @flash_nonfree = ( qr<(?i)dewplayer(?:-\w+)?\.swf$>, qr<(?i)(?:mp3|flv)player\.swf$>, # Situation needs to be clarified: # qr,(?i)multipleUpload\.swf$, # qr,(?i)xspf_jukebox\.swf$, ); my %PATH_DIRECTORIES = map { $_ => 1 } qw( bin/ sbin/ usr/bin/ usr/sbin usr/games/ ); # Common files stored in /usr/share/doc/$pkg that aren't sufficient to # consider the package non-empty. my $STANDARD_FILES = Lintian::Data->new('files/standard-files'); # Obsolete path my $OBSOLETE_PATHS = Lintian::Data->new( 'files/obsolete-paths', qr/\s*\->\s*/, sub { my @sliptline = split(/\s*\~\~\s*/, $_[1], 2); if (scalar(@sliptline) != 2) { fail 'Syntax error in files/obsolete-paths', $.; } my ($newdir, $moreinfo) = @sliptline; return { 'newdir' => $newdir, 'moreinfo' => $moreinfo, 'match' => qr/$_[0]/x, 'olddir' => $_[0], }; }); sub run { my ($pkg, $type, $info, $proc) = @_; my ($is_python, $is_perl, $has_binary_perl_file); my @nonbinary_perl_files_in_lib; my %linked_against_libvga; my $py_support_nver; my @devhelp; my @devhelp_links; # X11 bitmapped font directories under /usr/share/fonts/X11 in which we've # seen files. my %x11_font_dirs; my $arch_dep_files = 0; # Note: $proc->pkg_src never includes the source version. my $source_pkg = $proc->pkg_src; my $pkg_section = $info->field('section', ''); my $arch = $info->field('architecture', ''); my $isma_same = $info->field('multi-arch', '') eq 'same'; my $ppkg = quotemeta($pkg); # find out which files are scripts my %script = map {$_ => 1} (sort keys %{$info->scripts}); # We only want to warn about these once. my $warned_debug_name = 0; # Check if package is empty my $is_dummy = $info->is_pkg_class('any-meta'); # read data from objdump-info file foreach my $file (sort keys %{$info->objdump_info}) { my $objdump = $info->objdump_info->{$file}; if (defined $objdump->{NEEDED}) { for my $lib (@{$objdump->{NEEDED}}) { $linked_against_libvga{$file} = 1 if $lib =~ /^libvga\.so\./; } } } if (!$is_dummy) { my $is_empty = 1; for my $file ($info->sorted_index) { my $fname = $file->name; # Ignore directories unless ($fname =~ m,/$,) { # Skip if $file is outside /usr/share/doc/$pkg directory if ($fname !~ m,^usr/share/doc/\Q$pkg\E,) { # - except if it is an lintian override. next if $fname =~ m{\A usr/share/lintian/overrides/$ppkg(?:\.gz)? \Z}xsm; $is_empty = 0; last; } # Skip if /usr/share/doc/$pkg has files in a subdirectory if ($fname =~ m,^usr/share/doc/\Q$pkg\E/[^/]++/,) { $is_empty = 0; last; } # Skip /usr/share/doc/$pkg symlinks. next if $fname eq "usr/share/doc/$pkg"; # For files directly in /usr/share/doc/$pkg, if the # file isn't one of the uninteresting ones, the # package isn't empty. unless ($STANDARD_FILES->known($file->basename)) { $is_empty = 0; last; } } } if ($is_empty) { tag 'empty-binary-package' if ($type ne 'udeb'); tag 'empty-udeb-package' if ($type eq 'udeb'); } } # Read package contents... foreach my $file ($info->sorted_index) { my $fname = $file->name; my $owner = $file->owner . '/' . $file->group; my $operm = $file->operm; my $link = $file->link; $arch_dep_files = 1 if $fname !~ m,^usr/share/,o && $fname ne 'usr/'; if (exists($PATH_DIRECTORIES{$file->dirname})) { tag 'file-name-in-PATH-is-not-ASCII', $file if $file->basename !~ m{\A [[:ascii:]]++ \Z}xsm; } elsif (!is_string_utf8_encoded($fname)) { tag 'file-name-is-not-valid-UTF-8', $file; } if ($file->is_hardlink) { my $link_target_dir = $link; $link_target_dir =~ s,[^/]*$,,; # It may look weird to sort the file and link target here, # but since it's a hard link, both files are equal and # either could be legitimately reported first. tar will # generate different tar files depending on the hashing of # the directory, and this sort produces stable lintian # output despite that. # # TODO: actually, policy says 'conffile', not '/etc' -> # extend! tag 'package-contains-hardlink', join(' -> ', sort($fname, $link)) if $fname =~ m,^etc/, or $link =~ m,^etc/, or $fname !~ m,^\Q$link_target_dir\E[^/]*$,; } my ($year) = ($file->date =~ /^(\d{4})/); if ($year <= 1975) { # value from dak CVS: Dinstall::PastCutOffYear tag 'package-contains-ancient-file', $file, $file->date; } if ( !( $file->uid < 100 || $file->uid == 65_534 || ($file->uid >= 60_000 && $file->uid < 65_000)) || !( $file->gid < 100 || $file->gid == 65_534 || ($file->gid >= 60_000 && $file->gid < 65_000)) ) { tag 'wrong-file-owner-uid-or-gid', $file, $file->uid . '/' . $file->gid; } # *.devhelp and *.devhelp2 files must be accessible from a directory in # the devhelp search path: /usr/share/devhelp/books and # /usr/share/gtk-doc/html. We therefore look for any links in one of # those directories to another directory. The presence of such a link # blesses any file below that other directory. if (defined $link and $fname =~ m,^usr/share/(?:devhelp/books|gtk-doc/html)/,) { my $blessed = $file->link_normalized // ''; push(@devhelp_links, $blessed); } # check for generic obsolete path foreach my $obsolete_path ($OBSOLETE_PATHS->all) { my $obs_data = $OBSOLETE_PATHS->value($obsolete_path); my $oldpathmatch = $obs_data->{'match'}; if ($fname =~ m{$oldpathmatch}) { my $oldpath = $obs_data->{'olddir'}; my $newpath = $obs_data->{'newdir'}; my $moreinfo = $obs_data->{'moreinfo'}; tag 'package-install-into-obsolete-dir', "$file : $oldpath -> $newpath (see also $moreinfo)"; } } # ---------------- /etc if ($fname =~ m,^etc/,) { # ---------------- /etc/cron.daily, etc. if ($fname =~ m,^etc/cron\.(?:daily|hourly|monthly|weekly|d)/[^\.].*[\+\.], ) { # NB: cron ships ".placeholder" files, which shouldn't be run. tag 'run-parts-cron-filename-contains-illegal-chars', $file; } # ---------------- /etc/cron.d elsif ($fname =~ m,^etc/cron\.d/[^\.], and $operm != 0644) { # NB: cron ships ".placeholder" files in etc/cron.d, # which we shouldn't tag. tag 'bad-permissions-for-etc-cron.d-script', sprintf('%s %04o != 0644',$file,$operm); } # ---------------- /etc/emacs.* elsif ( $fname =~ m,^etc/emacs.*/\S, and $file->is_file and $operm != 0644) { tag 'bad-permissions-for-etc-emacs-script', sprintf('%s %04o != 0644',$file,$operm); } # ---------------- /etc/gconf/schemas elsif ($fname =~ m,^etc/gconf/schemas/\S,) { tag 'package-installs-into-etc-gconf-schemas', $file; } # ---------------- /etc/init.d elsif ( $fname =~ m,^etc/init\.d/\S, and $fname !~ m,^etc/init\.d/(?:README|skeleton)$, and $operm != 0755 and $file->is_file) { tag 'non-standard-file-permissions-for-etc-init.d-script', sprintf('%s %04o != 0755',$file,$operm); } #----------------- /etc/ld.so.conf.d elsif ($fname =~ m,^etc/ld\.so\.conf\.d/.+$, and $pkg !~ /^libc/) { tag 'package-modifies-ld.so-search-path', $file; } #----------------- /etc/modprobe.d elsif ( $fname =~ m,^etc/modprobe\.d/(.+)$, and $1 !~ m,\.conf$, and not $file->is_dir) { tag 'non-conf-file-in-modprobe.d', $file; } #---------------- /etc/opt elsif ($fname =~ m,^etc/opt/.,) { tag 'dir-or-file-in-etc-opt', $file; } #----------------- /etc/pam.conf elsif ($fname =~ m,^etc/pam.conf, and $pkg ne 'libpam-runtime') { tag 'config-file-reserved', "$fname by libpam-runtime"; } #----------------- /etc/php5/conf.d elsif ($fname =~ m,^etc/php5/conf.d/.+\.ini$,) { if ($file->is_file) { open(my $fd, '<', $info->unpacked($file)); while (<$fd>) { next unless (m/^\s*#/); tag 'obsolete-comments-style-in-php-ini', $file; # only warn once per file: last; } close($fd); } } # ---------------- /etc/rc.d && /etc/rc?.d elsif ( $type ne 'udeb' and $fname =~ m,^etc/rc(?:\d|S)?\.d/\S, and $pkg !~ /^(?:sysvinit|file-rc)$/) { tag 'package-installs-into-etc-rc.d', $file; } # ---------------- /etc/rc.boot elsif ($fname =~ m,^etc/rc\.boot/\S,) { tag 'package-installs-into-etc-rc.boot', $file; } # ---------------- /etc/udev/rules.d elsif ($fname =~ m,^etc/udev/rules\.d/\S,) { tag 'udev-rule-in-etc', $file; } } # ---------------- /usr elsif ($fname =~ m,^usr/,) { # ---------------- /usr/share/doc if ($fname =~ m,^usr/share/doc/\S,) { if ($type eq 'udeb') { tag 'udeb-contains-documentation-file', $file; } else { # file not owned by root? if ($owner ne 'root/root') { tag 'bad-owner-for-doc-file', "$fname $owner != root/root"; } # file directly in /usr/share/doc ? if ($file->is_file and $fname =~ m,^usr/share/doc/[^/]+$,){ tag 'file-directly-in-usr-share-doc', $file; } # executable in /usr/share/doc ? if ( $file->is_file and $fname !~ m,^usr/share/doc/(?:[^/]+/)?examples/, and ($operm & 0111)) { if ($script{$file}) { tag 'script-in-usr-share-doc', $file; } else { tag 'executable-in-usr-share-doc', $file, (sprintf '%04o', $operm); } } # zero byte file in /usr/share/doc/ if ($file->size == 0 and $file->is_regular_file) { # Exceptions: examples may contain empty files for various # reasons, Doxygen generates empty *.map files, and Python # uses __init__.py to mark module directories. unless ( $fname =~ m,^usr/share/doc/(?:[^/]+/)?examples/, or $fname=~ m,^usr/share/doc/(?:.+/)?html/.*\.map$, or $fname =~ m,^usr/share/doc/(?:.+/)?__init__\.py$,){ tag 'zero-byte-file-in-doc-directory', $file; } } # gzipped zero byte files: # 276 is 255 bytes (maximal length for a filename) # + gzip overhead if ( $fname =~ m,.gz$, and $file->size <= 276 and $file->is_file and $info->file_info($file) =~ m/gzip compressed/) { my $fd = open_gz($info->unpacked($file)); my $f = <$fd>; close($fd); unless (defined $f and length $f) { tag 'zero-byte-file-in-doc-directory', $file; } } # contains an INSTALL file? if ($fname =~ m,^usr/share/doc/$ppkg/INSTALL(?:\..+)*$,) { tag 'package-contains-upstream-install-documentation', $file; } # contains a README for another distribution/platform? if ( $fname =~ m,^usr/share/doc/$ppkg/readme\. (?:apple|aix|atari|be|beos|bsd|bsdi |cygwin|darwin|irix|gentoo|freebsd|mac|macos |macosx|netbsd|openbsd|osf|redhat|sco|sgi |solaris|suse|sun|vms|win32|win9x|windows )(?:\.txt)?(?:\.gz)?$,xi ) { #<<< No tidy (tag name too long) tag 'package-contains-readme-for-other-platform-or-distro', $file; #>>> } # contains a compressed version of objects.inv in # sphinx-generated documentation? if ($fname =~ m,^usr/share/doc/$ppkg/(?:[^/]+/)+objects\.inv\.gz$, and $info->file_info($file) =~ m/gzip compressed/) { tag 'compressed-objects.inv', $file; } } } # ---------------- arch-indep pkconfig elsif ($file->is_regular_file && $fname =~ m,^usr/(?:lib|share)/pkgconfig/[^/]+\.pc$,) { open(my $fd, '<', $info->unpacked($file)); LINE: while (my $line = <$fd>) { # check if pkgconfig file include path point to # arch specific dir foreach my $multiarch_dir ($MULTIARCH_DIRS->all) { my $regex = $MULTIARCH_DIRS->value($multiarch_dir)->{'match'}; if ($line =~ m{$regex}) { tag 'pkg-config-multi-arch-wrong-dir',$file; last LINE; } } } close($fd); } #----------------- /usr/X11R6/ # links to FHS locations are allowed elsif ($fname =~ m,^usr/X11R6/, and not $file->is_symlink) { tag 'package-installs-file-to-usr-x11r6', $file; } # ---------------- /usr/lib/debug elsif ($fname =~ m,^usr/lib/debug/\S,) { unless ($warned_debug_name) { tag 'debug-package-should-be-named-dbg', $file unless ($pkg =~ /-dbg$/); $warned_debug_name = 1; } if ( $file->is_file && $fname =~ m,^usr/lib/debug/usr/lib/pyshared/(python\d?(?:\.\d+))/(.++)$,o ) { my $correct = "usr/lib/debug/usr/lib/pymodules/$1/$2"; tag 'python-debug-in-wrong-location', $file, $correct; } } # ---------------- /usr/lib/sgml elsif ($fname =~ m,^usr/lib/sgml/\S,) { tag 'file-in-usr-lib-sgml', $file; } # ---------------- perllocal.pod elsif ($fname =~ m,^usr/lib/perl.*/perllocal.pod$,) { tag 'package-installs-perllocal-pod', $file; } # ---------------- .packlist files elsif ($fname =~ m,^usr/lib/perl.*/.packlist$,) { tag 'package-installs-packlist', $file; }elsif ($fname =~ m,^usr/lib/perl5/.*\.(?:pl|pm)$,) { push @nonbinary_perl_files_in_lib, $file; }elsif ($fname =~ m,^usr/lib/perl5/.*\.(?:bs|so)$,) { $has_binary_perl_file = 1; } # ---------------- /usr/lib -- needs to go after the other usr/lib/* elsif ($fname =~ m,^usr/lib/,) { if ( $type ne 'udeb' and $file =~ m,\.(?:bmp|gif|jpeg|jpg|png|tiff|xpm|xbm)$, and not defined $link) { tag 'image-file-in-usr-lib', $file; } } # ---------------- /usr/local elsif ($fname =~ m,^usr/local/\S+,) { if ($file->is_dir) { tag 'dir-in-usr-local', $file; } else { tag 'file-in-usr-local', $file; } } # ---------------- /usr/share/applications elsif ( $fname =~ m,^usr/share/applications/mimeinfo.cache(?:\.gz)?$,){ tag 'package-contains-mimeinfo.cache-file', $file; } # ---------------- /usr/share/man and /usr/X11R6/man elsif ($fname =~ m,^usr/X11R6/man/\S+, or $fname =~ m,^usr/share/man/\S+,) { if ($type eq 'udeb') { tag 'udeb-contains-documentation-file', $file; } if ($file->is_dir) { tag 'stray-directory-in-manpage-directory', $file if ($fname !~ m,^usr/(?:X11R6|share)/man/(?:[^/]+/)?(?:man\d/)?$, ); } elsif ($file->is_file and ($operm & 0111)) { tag 'executable-manpage', $file; } } # ---------------- /usr/share/fonts/X11 elsif ($fname =~ m,^usr/share/fonts/X11/([^/]+)/\S+,) { my $dir = $1; if ($dir =~ /^(?:PEX|CID|Speedo|cyrillic)$/) { tag 'file-in-discouraged-x11-font-directory', $file; } elsif ( $dir !~ /^(?:100dpi|75dpi|misc|Type1|encodings|util)$/) { tag 'file-in-unknown-x11-font-directory', $file; } if ($dir =~ /^(?:100dpi|75dpi|misc)$/) { $x11_font_dirs{$dir}++; } } # ---------------- /usr/share/info elsif ($fname =~ m,^usr/share/info\S+,) { if ($type eq 'udeb') { tag 'udeb-contains-documentation-file', $file; } if ($fname =~ m,^usr/share/info/dir(?:\.old)?(?:\.gz)?$,) { tag 'package-contains-info-dir-file', $file; } } # ---------------- /usr/share/linda/overrides elsif ($fname =~ m,^usr/share/linda/overrides/\S+,) { tag 'package-contains-linda-override', $file; } # ---------------- /usr/share/mime elsif ($fname =~ m,^usr/share/mime/[^/]+$,) { tag 'package-contains-mime-cache-file', $file; } # ---------------- /usr/share/vim elsif ($fname =~ m,^usr/share/vim/vim(?:current|\d{2})/([^/]++),) { my $is_vimhelp = $1 eq 'doc' && $pkg =~ m,^vimhelp-\w++$,; my $is_vim = $source_pkg =~ m,vim,; tag 'vim-addon-within-vim-runtime-path', $file unless $is_vim or $is_vimhelp; } # ---------------- /usr/share elsif ($fname =~ m,^usr/share/[^/]+$,) { if ($file->is_file) { tag 'file-directly-in-usr-share', $file; } } # ---------------- /usr/bin elsif ($fname =~ m,^usr/bin/,) { if ( $file->is_dir and $fname =~ m,^usr/bin/., and $fname !~ m,^usr/bin/(?:X11|mh)/,) { tag 'subdir-in-usr-bin', $file; } } # ---------------- /usr subdirs elsif ($type ne 'udeb' and $fname =~ m,^usr/[^/]+/$,) { # FSSTND dirs if ($fname =~ m,^usr/(?:dict|doc|etc|info|man|adm|preserve)/,){ tag 'FSSTND-dir-in-usr', $file; } # FHS dirs elsif ( $fname !~ m,^usr/(?:X11R6|X386| bin|games|include| lib| local|sbin|share| src|spool|tmp)/,x ) { if ($fname =~ m,^usr/lib(?'libsuffix'64|x?32)/,) { my $libsuffix = $+{libsuffix}; # eglibc exception is due to FHS. Other are # transitional, waiting for full # implementation of multi-arch. Note that we # allow (e.g.) "lib64" packages to still use # these dirs, since their use appears to be by # intention. unless ($source_pkg eq 'eglibc' or $pkg =~ m/^lib$libsuffix/) { tag 'non-multi-arch-lib-dir', $file; } } else { tag 'non-standard-dir-in-usr', $file; } } # unless $file =~ m,^usr/[^/]+-linuxlibc1/,; was tied # into print above... # Make an exception for the altdev dirs, which will go # away at some point and are not worth moving. } # ---------------- .desktop files # People have placed them everywhere, but nowadays the # consensus seems to be to stick to the fd.org standard # drafts, which says that .desktop files intended for # menus should be placed in $XDG_DATA_DIRS/applications. # The default for $XDG_DATA_DIRS is # /usr/local/share/:/usr/share/, according to the # basedir-spec on fd.org. As distributor, we should only # allow /usr/share. # # KDE hasn't moved its files from /usr/share/applnk, so # don't warn about this yet until KDE adopts the new # location. elsif ($fname =~ m,^usr/share/gnome/apps/.*\.desktop$,) { tag 'desktop-file-in-wrong-dir', $file; } # ---------------- non-games-specific data in games subdirectory elsif ($fname =~ m,^usr/share/games/(?:applications|mime|icons|pixmaps)/, and not $file->is_dir) { tag 'global-data-in-games-directory', $file; } } # ---------------- /var subdirs elsif ($type ne 'udeb' and $fname =~ m,^var/[^/]+/$,) { # FSSTND dirs if ($fname =~ m,^var/(?:adm|catman|named|nis|preserve)/,) { tag 'FSSTND-dir-in-var', $file; } # base-files is special elsif ($pkg eq 'base-files' && $fname =~ m,^var/(?:backups|local)/,){ # ignore } # FHS dirs with exception in Debian policy elsif ( $fname !~ m{\A var/ (?: account|lib|cache|crash|games |lock|log|opt|run|spool|state |tmp|www|yp)/ }xsm ) { tag 'non-standard-dir-in-var', $file; } } elsif ($type ne 'udeb' and $fname =~ m,^var/lib/games/.,) { tag 'non-standard-dir-in-var', $file; # ---------------- /var/lock, /var/run } elsif ($type ne 'udeb' and $fname =~ m,^var/lock/.,) { tag 'dir-or-file-in-var-lock', $file; } elsif ($type ne 'udeb' and $fname =~ m,^var/run/.,) { tag 'dir-or-file-in-var-run', $file; } elsif ($type ne 'udeb' and $fname =~ m,^run/.,o) { tag 'dir-or-file-in-run', $file; } # ---------------- /var/www # Packages are allowed to create /var/www since it's # historically been the default document root, but they # shouldn't be installing stuff under that directory. elsif ($fname =~ m,^var/www/\S+,) { tag 'dir-or-file-in-var-www', $file; } # ---------------- /opt elsif ($fname =~ m,^opt/.,) { tag 'dir-or-file-in-opt', $file; } elsif ($fname =~ m,^hurd/,) { next; } elsif ($fname =~ m,^servers/,) { next; } # -------------- /home elsif ($fname =~ m,^home/.,) { tag 'dir-or-file-in-home', $file; } elsif ($fname =~ m,^root/.,) { tag 'dir-or-file-in-home', $file; } # ---------------- /tmp, /var/tmp, /usr/tmp elsif ($fname =~ m,^tmp/., or $fname =~ m,^(?:var|usr)/tmp/.,) { tag 'dir-or-file-in-tmp', $file; } # ---------------- /mnt elsif ($fname =~ m,^mnt/.,) { tag 'dir-or-file-in-mnt', $file; } # ---------------- /bin elsif ($fname =~ m,^bin/,) { if ($file->is_dir and $fname =~ m,^bin/.,) { tag 'subdir-in-bin', $file; } } # ---------------- /srv elsif ($fname =~ m,^srv/.,) { tag 'dir-or-file-in-srv', $file; } # build directory elsif ($fname =~ m,^var/cache/pbuilder/build/., or $fname =~ m,^var/lib/sbuild/., or $fname =~ m,^var/lib/buildd/.,) { unless ($source_pkg eq 'sbuild') { tag 'dir-or-file-in-build-tree', $file; } } # ---------------- FHS directory? elsif ( $fname =~ m,^[^/]+/$,o and $fname !~ m{\A (?: bin|boot|dev|etc|home|lib |mnt|opt|root|run|sbin|srv|sys |tmp|usr|var) / }oxsm ) { # Make an exception for the base-files package here and # other similar packages because they install a slew of # top-level directories for setting up the base system. # (Specifically, /cdrom, /floppy, /initrd, and /proc are # not mentioned in the FHS). if ($fname =~ m,^lib(?'libsuffix'64|x?32)/,) { my $libsuffix = $+{libsuffix}; # see comments for ^usr/lib(?'libsuffix'64|x?32) unless ($source_pkg eq 'eglibc' or $pkg =~ m/^lib$libsuffix/) { tag 'non-multi-arch-lib-dir', $file; } } else { unless ($pkg eq 'base-files' or $pkg eq 'hurd' or $pkg eq 'hurd-udeb' or $pkg =~ /^rootskel(?:-bootfloppy)?/) { tag 'non-standard-toplevel-dir', $file; } } } # ---------------- compatibility symlinks should not be used if ( $fname =~ m,^usr/(?:spool|tmp)/, or $fname =~ m,^usr/(?:doc|bin)/X11/, or $fname =~ m,^var/adm/,) { tag 'use-of-compat-symlink', $file; } # ---------------- .ali files (Ada Library Information) if ($fname =~ m,^usr/lib/.*\.ali$, && $operm != 0444) { tag 'bad-permissions-for-ali-file', $file; } # ---------------- any files if (not $file->is_dir) { unless ( $type eq 'udeb' or $fname =~ m,^usr/(?:bin|dict|doc|games| include|info|lib(?:x?32|64)?| man|sbin|share|src|X11R6)/,x or $fname =~ m,^lib(?:x?32|64)?/(?:modules/|libc5-compat/)?, or $fname =~ m,^var/(?:games|lib|www|named)/, or $fname =~ m,^(?:bin|boot|dev|etc|sbin)/, # non-FHS, but still usual or $fname =~ m,^usr/[^/]+-linux[^/]*/, or $fname =~ m,^usr/iraf/, # not allowed, but tested indivudually or $fname =~ m{\A (?: home|mnt|opt|root|run|srv |(?:(?:usr|var)/)?tmp)|var/www/}xsm ) { tag 'file-in-unusual-dir', $file; } } if ($fname =~ m,^(?:usr/)?lib/([^/]+)/$,o) { my $subdir = $1; if ($TRIPLETS->known($subdir)) { tag 'triplet-dir-and-architecture-mismatch', "$file is for", $TRIPLETS->value($subdir) unless ($arch eq $TRIPLETS->value($subdir)); } } # ---------------- .pyc/.pyo (compiled python files) # skip any file installed inside a __pycache__ directory # - we have a separate check for that directory. if ($fname =~ m,\.py[co]$,o && $fname !~ m,/__pycache__/,o) { tag 'package-installs-python-bytecode', $file; } # ---------------- __pycache__ (directory for pyc/pyo files) if ($file->is_dir && $fname =~ m,/__pycache__/,o){ tag 'package-installs-python-pycache-dir', $file; } # ---------------- .egg (python egg files) if ( $fname =~ m,\.egg$,o && ( $fname =~ m,usr/lib/python\d+(?:\.\d+/),o || $fname =~ m,usr/lib/pyshared,o || $fname =~ m,usr/share/,o) ) { tag 'package-installs-python-egg', $file; } # ---------------- /usr/lib/site-python if ($fname =~ m,^usr/lib/site-python/\S,) { tag 'file-in-usr-lib-site-python', $file; } # ---------------- pythonX.Y extensions if ($fname =~ m,^usr/lib/python\d\.\d/\S, and not $fname =~ m,^usr/lib/python\d\.\d/(?:site|dist)-packages/,) { # check if it's one of the Python proper packages unless (defined $is_python) { $is_python = 0; $is_python = 1 if $source_pkg =~ m/^python(?:\d\.\d)?$/ or $source_pkg =~ m{\A python\d?- (?:stdlib-extensions|profiler|old-doctools) \Z}xsm; } tag 'third-party-package-in-python-dir', $file unless $is_python; } # ---------------- perl modules if ($fname =~ m,^usr/(?:share|lib)/perl/\S,) { # check if it's the "perl" package itself unless (defined $is_perl) { $is_perl = 0; $is_perl = 1 if $source_pkg eq 'perl'; } tag 'perl-module-in-core-directory', $file unless $is_perl; } # ---------------- perl modules using old libraries # we do the same check on perl scripts in checks/scripts { my $dep = $info->relation('strong'); if ( $file->is_file && $fname =~ m,\.pm$, && !$dep->implies( 'libperl4-corelibs-perl | perl (<< 5.12.3-7)')) { open(my $fd, '<', $info->unpacked($file)); while (<$fd>) { if ( m{ (?:do|require)\s+(?:'|") # do/require # Huge list of perl4 modules... (abbrev|assert|bigfloat|bigint|bigrat |cacheout|complete|ctime|dotsh|exceptions |fastcwd|find|finddepth|flush|getcwd|getopt |getopts|hostname|importenv|look|newgetopt |open2|open3|pwd|shellwords|stat|syslog |tainted|termcap|timelocal|validate) # ... so they end with ".pl" rather than ".pm" \.pl(?:'|") }xsm ) { tag 'perl-module-uses-perl4-libs-without-dep', "$file:$. ${1}.pl"; } } close($fd); } } # ---------------- license files if ( $file->basename =~ m{ \A # Look for commonly used names for license files (?: copying | licen[cs]e | l?gpl | bsd | artistic ) # ... possibly followed by a version [v0-9._-]* (?:\. .* )? \Z }xsmi # Ignore some common extensions for source or compiled # extension files. There was at least one file named # "license.el". These are probably license-displaying # code, not license files. Also ignore executable files # in general. This means we get false-negatives for # licenses files marked executable, but these will trigger # a warning about being executable. (See #608866) # # Another exception is made for .html and .php because # preserving working links is more important than saving # some bytes, and because a package had a HTML form for # licenses called like that. Another exception is made # for various picture formats since those are likely to # just be simply pictures. # # DTD files are excluded at the request of the Mozilla # suite maintainers. Zope products include license files # for runtime display. underXXXlicense.docbook files are # from KDE. # # Ignore extra license files in examples, since various # package building software includes example packages with # licenses. and ($operm & 0111) == 0 and not $fname =~ m{ \. (?: # Common "non-license" file extensions... el|[ch]|py|cc|pl|pm|hi|p_hi|html|php|rb|xpm |png|jpe?g|gif|svg|dtd|ui|pc ) \Z}xsm and not $fname =~ m,^usr/share/zope/Products/.*\.(?:dtml|pt|cpt)$, and not $fname =~ m,/under\S+License\.docbook$, and not $fname =~ m,^usr/share/doc/[^/]+/examples/, # liblicense has a manpage called license and not $fname =~ m,^usr/share/man/(?:[^/]+/)?man\d/,o # liblicense (again) and not $fname =~ m,^usr/share/pyshared-data/,o and not defined $link ) { # okay, we cannot rule it out based on file name; but if # it is an elf or a static library, we also skip it. (In # case you hadn't guessed; liblicense) my $fileinfo = $info->file_info($file); tag 'extra-license-file', $file unless $fileinfo and ($fileinfo =~ m/^[^,]*\bELF\b/) or ($fileinfo =~ m/\bcurrent ar archive\b/); } # ---------------- .devhelp2? files if ( $fname =~ m,\.devhelp2?(?:\.gz)?$, # If the file is located in a directory not searched by devhelp, we # check later to see if it's in a symlinked directory. and not $fname =~ m,^usr/share/(?:devhelp/books|gtk-doc/html)/, and not $fname =~ m,^usr/share/doc/[^/]+/examples/, ) { push(@devhelp, $fname); } # ---------------- weird file names if ($fname =~ m,\s+\z,) { tag 'file-name-ends-in-whitespace', $file; } if ($fname =~ m,/\*\z,) { tag 'star-file', $file; } # ---------------- misplaced lintian overrides if ( $fname =~ m,^usr/share/doc/$ppkg/override\.[lL]intian(?:\.gz)?$, or $fname =~ m,^usr/share/lintian/overrides/$ppkg/.+,) { tag 'override-file-in-wrong-location', $file; } # ---------------- pyshared-data if ($fname =~ m,^usr/share/python-support/$ppkg\.(?:public|private)$,){ $py_support_nver = '(>= 0.90)'; } elsif ($fname =~ m,^usr/share/python-support/\S+,o && !$py_support_nver){ $py_support_nver = ''; } # ---------------- python file locations # - The python people kindly provided the following table. # good: # /usr/lib/python2.5/site-packages/ # /usr/lib/python2.6/dist-packages/ # /usr/lib/python2.7/dist-packages/ # /usr/lib/python3/dist-packages/ # # bad: # /usr/lib/python2.5/dist-packages/ # /usr/lib/python2.6/site-packages/ # /usr/lib/python2.7/site-packages/ # /usr/lib/python3.*/*-packages/ if ( $fname =~ m{\A (usr/lib/debug/)? usr/lib/python (\d+(?:\.\d+)?)/ (site|dist)-packages/(.++) \Z}oxsm ){ my ($debug, $pyver, $loc, $rest) = ($1, $2, $3, $4); my ($pmaj, $pmin) = split(m/\./o, $pyver, 2); my @correction = (); $pmin = 0 unless (defined $pmin); $debug = '' unless (defined $debug); next if ($pmaj < 2 or $pmaj > 3); # Not python 2 or 3 if ($pmaj == 2 and $pmin < 6){ # 2.4 and 2.5 if ($loc ne 'site') { @correction = ( "${debug}usr/lib/python${pyver}/$loc-packages/$rest", "${debug}usr/lib/python${pyver}/site-packages/$rest" ); } } elsif ($pmaj == 3){ # python 3. Everything must be in python3/dist-... and # not python3.X/ if ($pyver ne '3' or $loc ne 'dist'){ # bad mojo @correction = ( "${debug}usr/lib/python${pyver}/$loc-packages/$rest", "${debug}usr/lib/python3/dist-packages/$rest" ); } } else { # python 2.6+ if ($loc ne 'dist') { @correction = ( "${debug}usr/lib/python${pyver}/$loc-packages/$rest", "${debug}usr/lib/python${pyver}/dist-packages/$rest" ); } } tag 'python-module-in-wrong-location', @correction if (@correction); } if ($fname =~ m,/icons/[^/]+/(\d+)x(\d+)/(?!animations/).*\.png$,){ my ($dwidth, $dheight) = ($1, $2); my $path; if ($file->is_symlink) { $path = $file->link_normalized; } else { $path = $fname; } my $fileinfo = $info->file_info($path); if ($fileinfo && $fileinfo =~ m/,\s*(\d+)\s*x\s*(\d+)\s*,/) { my ($fwidth, $fheight) = ($1, $2); my $width_delta = abs($dwidth - $fwidth); my $height_delta = abs($dheight - $fheight); tag 'icon-size-and-directory-name-mismatch', $file, $fwidth.'x'.$fheight unless ($width_delta <= 2 && $height_delta <= 2); } } # ---------------- plain files if ($file->is_file) { if ($fname =~ m,/icons/[^/]+/scalable/.*\.(?:png|xpm)$,) { tag 'raster-image-in-scalable-directory', $file; } # ---------------- backup files and autosave files if ( $fname =~ /~$/ or $fname =~ m,\#[^/]+\#$, or $fname =~ m,/\.[^/]+\.swp$,) { tag 'backup-file-in-package', $file; } if ($fname =~ m,/\.nfs[^/]+$,) { tag 'nfs-temporary-file-in-package', $file; } # ---------------- vcs control files if ($fname =~ m,$VCS_FILES_OR_ALL,) { tag 'package-contains-vcs-control-file', $file; } # ---------------- subversion and svk commit message backups if ($fname =~ m/svn-commit.*\.tmp$/) { tag 'svn-commit-file-in-package', $file; } if ($fname =~ m/svk-commit.+\.tmp$/) { tag 'svk-commit-file-in-package', $file; } # ---------------- executables with language extensions if ( $fname =~ m{\A (?:usr/)?(?:s?bin|games)/[^/]+\. (?:pl|sh|py|php|rb|tcl|bsh|csh|tcl) \Z}xsm ) { tag 'script-with-language-extension', $file; } # ---------------- Devel files for Windows if ( $fname =~ m,/.+\.(?:vcproj|sln|dsp|dsw)(?:\.gz)?$, and $fname !~ m,^usr/share/doc/,) { tag 'windows-devel-file-in-package', $file; } # ---------------- Autogenerated databases from other OSes if ($fname =~ m,/Thumbs\.db(?:\.gz)?$,i) { tag 'windows-thumbnail-database-in-package', $file; } if ($fname =~ m,/\.DS_Store(?:\.gz)?$,) { tag 'macos-ds-store-file-in-package', $file; } if ($fname =~ m,/\._[^_/][^/]*$, and $file !~ m/\.swp$/) { tag 'macos-resource-fork-file-in-package', $file; } # ---------------- embedded Javascript libraries foreach my $jslibrary (@jslibraries) { if ( $fname =~ m,/$jslibrary->[0], and $pkg !~ m,^$jslibrary->[1]$,) { tag 'embedded-javascript-library', $file; } } # ---------------- embedded Feedparser library if ($fname =~ m,/feedparser\.py$, and $source_pkg ne 'feedparser'){ open(my $fd, '<', $info->unpacked($file)); while (<$fd>) { if (m,Universal feed parser,) { tag 'embedded-feedparser-library', $file; last; } } close($fd); } # ---------------- embedded PEAR modules foreach my $pearmodule (@pearmodules) { if ( $fname =~ m,/$pearmodule->[0], and $pkg ne $pearmodule->[1]){ open(my $fd, '<', $info->unpacked($file)); while (<$fd>) { if (m,/pear[/.],i) { tag 'embedded-pear-module', $file; last; } } close($fd); } } # ---------------- embedded php libraries foreach my $phplibrary (@phplibraries) { if ( $fname =~ m,/$phplibrary->[0], and $pkg !~ m,^$phplibrary->[1]$,) { tag 'embedded-php-library', $file; } } # ---------------- html/javascript if ($fname =~ m,\.(?:x?html?|js|xht|xml|css)$,i) { detect_privacy_breach($info,$file); } # ---------------- fonts elsif ($fname =~ m,/([\w-]+\.(?:[to]tf|pfb))$,i) { my $font = lc $1; if (my $font_owner = $FONT_PACKAGES->value($font)) { tag 'duplicate-font-file', "$fname also in", $font_owner if ($pkg ne $font_owner and $type ne 'udeb'); } elsif ($pkg !~ m/^(?:[ot]tf|t1|x?fonts)-/) { tag 'font-in-non-font-package', $file; } my $finfo = $info->file_info($file) || ''; if ($finfo =~ m/PostScript Type 1 font program data/) { my $path = $info->unpacked($file); my $foundadobeline = 0; open(my $t1pipe, '-|', 't1disasm', $path); while (my $line = <$t1pipe>) { if ($foundadobeline) { if ( $line =~ m{\A [%\s]* All\s*Rights\s*Reserved\.?\s* \Z}xsmi ) { #<<< No perltidy - tag name too long tag 'license-problem-font-adobe-copyrighted-fragment', $file; #>>> last; } else { $foundadobeline = 0; } } if ( $line =~ m{\A [%\s]*Copyright\s*\(c\) \s* 19\d{2}[\-\s]19\d{2}\s* Adobe\s*Systems\s*Incorporated\.?\s*\Z}xsmi ) { $foundadobeline = 1; } # If copy pasted from black book they are # copyright adobe a few line before the only # place where the startlock is documented is # in the black book copyrighted fragment if ($line =~ m/startlock\s*get\s*exec/) { #<<< no perltidy - tag name too long tag 'license-problem-font-adobe-copyrighted-fragment-no-credit', $file; #>>> last; } } drain_pipe($t1pipe); eval {close($t1pipe);}; if (my $err = $@) { # check if we hit #724571 (t1disasm # seg. faults on files). my $exit_code_raw = $?; fail("closing t1disasm $file: $!") if $err->errno; my $code = ($exit_code_raw >> 8) & 0xff; my $sig = $exit_code_raw & 0xff; fail("t1disasm $file exited $code") if $code; if ($sig) { my $signame = signal_number2name($sig); fail("t1disasm $file killed with signal $signame") unless $signame eq 'SEGV' or $signame eq 'BUS'; # This is #724571. The problem is that it # causes the FTP masters to Lintian # auto-reject to trigger (and lintian.d.o # to re-check packages daily if the have a # file triggering this). # Technically, t1disasm has only triggered # a SEGV so far, but it we assume it can # also get hit by a BUS. warning( join(q{ }, "t1disasm $file died with a", 'segmentation fault or bus error'), 'This may hide a license-problem warning.' ); } else { fail( join(q{ }, "t1disasm $file died with raw", "exit code $exit_code_raw")); } } } } # ---------------- non-free .swf files unless ($info->is_non_free) { foreach my $flash (@flash_nonfree) { if ($fname =~ m,/$flash,) { tag 'non-free-flash', $file; } } } # ---------------- .gz files if ($fname =~ m/\.gz$/) { my $finfo = $info->file_info($file) || ''; if ($finfo !~ m/gzip compressed/) { tag 'gz-file-not-gzip', $file; } elsif ($isma_same && $fname !~ m/\Q$arch\E/o) { my $path = $info->unpacked($file); my $buff; open(my $fd, '<', $path); # We need to read at least 8 bytes if (sysread($fd, $buff, 1024) >= 8) { # Extract the flags and the mtime. # NN NN NN NN, NN NN NN NN - bytes read # __ __ __ __, $mtime - variables my (undef, $mtime) = unpack('NN', $buff); if ($mtime){ tag 'gzip-file-is-not-multi-arch-same-safe',$file; } } else { fail "reading $file: $!"; } close($fd); } } # --------------- compressed + uncompressed files if ($fname =~ $DUPLICATED_COMPRESSED_FILE_REGEX) { tag 'duplicated-compressed-file', $file if $info->file_info($1); } # ---------------- general: setuid/setgid files! if ($operm & 06000) { my ($setuid, $setgid) = ('',''); # get more info: $setuid = $file->owner if $operm & 04000; $setgid = $file->group if $operm & 02000; # 1st special case: program is using svgalib: if (exists $linked_against_libvga{$fname}) { # setuid root is ok, so remove it if ($setuid eq 'root') { undef $setuid; } } # 2nd special case: program is a setgid game if ( $fname =~ m,^usr/lib/games/\S+, or $fname =~ m,^usr/games/\S+,) { # setgid games is ok, so remove it if ($setgid eq 'games') { undef $setgid; } } # 3rd special case: allow anything with suid in the name if ($pkg =~ m,-suid,) { undef $setuid; } # Check for setuid and setgid that isn't expected. if ($setuid and $setgid) { tag 'setuid-gid-binary', $file, sprintf('%04o %s',$operm,$owner); } elsif ($setuid) { tag 'setuid-binary', $file, sprintf('%04o %s',$operm,$owner); } elsif ($setgid) { tag 'setgid-binary', $file, sprintf('%04o %s',$operm,$owner); } # Check for permission problems other than the setuid status. if (($operm & 0444) != 0444) { tag 'executable-is-not-world-readable', $file, sprintf('%04o',$operm); } elsif ($operm != 04755 && $operm != 02755 && $operm != 06755 && $operm != 04754) { tag 'non-standard-setuid-executable-perm', $file, sprintf('%04o',$operm); } } # ---------------- general: executable files elsif ($operm & 0111) { # executable if ($owner eq 'root/games') { if ($operm != 2755) { tag 'non-standard-game-executable-perm', $file, sprintf('%04o != 2755',$operm); } } else { if (($operm & 0444) != 0444) { tag 'executable-is-not-world-readable', $file, sprintf('%04o',$operm); } elsif ($operm != 0755) { tag 'non-standard-executable-perm', $file, sprintf('%04o != 0755',$operm); } } } # ---------------- general: normal (non-executable) files else { # not executable # special case first: game data if ( $operm == 0664 and $owner eq 'root/games' and $fname =~ m,^var/(lib/)?games/\S+,) { # everything is ok } elsif ($operm == 0444 and $fname =~ m,^usr/lib/.*\.ali$,) { # Ada library information files should be read-only # since GNAT behaviour depends on that # everything is ok } elsif ($operm == 0600 and $fname =~ m,^etc/backup.d/,) { # backupninja expects configurations files to be 0600 } elsif ($fname =~ m,^etc/sudoers.d/,) { # sudo requires sudoers files to be mode 0440 tag 'bad-perm-for-file-in-etc-sudoers.d', $file, sprintf('%04o != 0440', $operm) unless $operm == 0440; } elsif ($operm != 0644) { tag 'non-standard-file-perm', $file, sprintf('%04o != 0644',$operm); } } } # ---------------- directories elsif ($file->is_dir) { # special cases first: # game directory with setgid bit if ( $fname =~ m,^var/(?:lib/)?games/\S+, and $operm == 02775 and $owner eq 'root/games') { # do nothing, this is allowed, but not mandatory } elsif (( $fname eq 'tmp/' or $fname eq 'var/tmp/' or $fname eq 'var/lock/' ) and $operm == 01777 and $owner eq 'root/root' ) { # actually shipping files here is warned about elsewhere } elsif ($fname eq 'usr/src/' and $operm == 02775 and $owner eq 'root/src') { # /usr/src as created by base-files is a special exception } elsif ($fname eq 'var/local/' and $operm == 02775 and $owner eq 'root/staff') { # actually shipping files here is warned about elsewhere } # otherwise, complain if it's not 0755. elsif ($operm != 0755) { tag 'non-standard-dir-perm', $file, sprintf('%04o != 0755', $operm); } if ($fname =~ m,/CVS/?$,) { tag 'package-contains-vcs-control-dir', $file; } if ($fname =~ m,/\.(?:svn|bzr|git|hg)/?$,) { tag 'package-contains-vcs-control-dir', $file; } if ( ($fname =~ m,/\.arch-ids/?$,) || ($fname =~ m,/\{arch\}/?$,)) { tag 'package-contains-vcs-control-dir', $file; } if ($fname =~ m,/\.(?:be|ditrack)/?$,) { tag 'package-contains-bts-control-dir', $file; } if ($fname =~ m,/\.xvpics/?$,) { tag 'package-contains-xvpics-dir', $file; } if ($fname =~ m,usr/share/doc/[^/]+/examples/examples/?$,) { tag 'nested-examples-directory', $file; } if ($fname =~ m,^usr/share/locale/([^/]+)/$,) { # Without encoding: my ($lwccode) = split(/[.@]/, $1); # Without country code: my ($lcode) = split(/_/, $lwccode); # special exception: if ($lwccode ne 'l10n') { if ($INCORRECT_LOCALE_CODES->known($lwccode)) { tag 'incorrect-locale-code', "$lwccode ->", $INCORRECT_LOCALE_CODES->value($lwccode); } elsif ($INCORRECT_LOCALE_CODES->known($lcode)) { tag 'incorrect-locale-code', "$lcode ->", $INCORRECT_LOCALE_CODES->value($lcode); } elsif (!$LOCALE_CODES->known($lcode)) { tag 'unknown-locale-code', $lcode; } elsif ($LOCALE_CODES->known($lcode) && defined($LOCALE_CODES->value($lcode))) { # If there's a key-value pair in the codes # list it means the ISO 639-2 code is being # used instead of ISO 639-1's tag 'incorrect-locale-code', "$lcode ->", $LOCALE_CODES->value($lcode); } } } } # ---------------- symbolic links elsif ($file->is_symlink) { # link my $mylink = $link; if ($mylink =~ s,//+,/,g) { tag 'symlink-has-double-slash', "$fname $link"; } if ($mylink =~ s,(.)/$,$1,) { tag 'symlink-ends-with-slash', "$fname $link"; } # determine top-level directory of file $fname =~ m,^/?([^/]*),; my $filetop = $1; if ($mylink =~ m,^/([^/]*),) { # absolute link, including link to / # determine top-level directory of link my $linktop = $1; if ($type ne 'udeb' and $filetop eq $linktop) { # absolute links within one toplevel directory are _not_ ok! tag 'symlink-should-be-relative', "$fname $link"; } # Any other case is already definitely non-recursive tag 'symlink-is-self-recursive', "$fname $link" if $mylink eq '/'; } else { # relative link, we can assume from here that the link # starts nor ends with / my @filecomponents = split('/', $fname); # chop off the name of the symlink pop @filecomponents; my @linkcomponents = split('/', $mylink); # handle `../' at beginning of $link my $lastpop = undef; my $linkcomponent = undef; while ($linkcomponent = shift @linkcomponents) { if ($linkcomponent eq '.') { tag 'symlink-contains-spurious-segments',"$fname $link" unless $mylink eq '.'; next; } last if $linkcomponent ne '..'; if (@filecomponents) { $lastpop = pop @filecomponents; } else { tag 'symlink-has-too-many-up-segments',"$fname $link"; goto NEXT_LINK; } } if (!defined $linkcomponent) { # After stripping all starting .. components, nothing left tag 'symlink-is-self-recursive', "$fname $link"; } # does the link go up and then down into the same # directory? (lastpop indicates there was a backref # at all, no linkcomponent means the symlink doesn't # get up anymore) if ( defined $lastpop && defined $linkcomponent && $linkcomponent eq $lastpop) { tag 'lengthy-symlink', "$fname $link"; } if ($#filecomponents == -1) { # we've reached the root directory if ( ($type ne 'udeb') && (!defined $linkcomponent) || ($filetop ne $linkcomponent)) { # relative link into other toplevel directory. # this hits a relative symbolic link in the root too. tag 'symlink-should-be-absolute', "$fname $link"; } } # check additional segments for mistakes like `foo/../bar/' foreach (@linkcomponents) { if ($_ eq '..' || $_ eq '.') { tag 'symlink-contains-spurious-segments', "$fname $link"; last; } } } NEXT_LINK: if ($link =~ $COMPRESSED_SYMLINK_POINTING_TO_COMPRESSED_REGEX) { # symlink is pointing to a compressed file # symlink has correct extension? unless ($fname =~ m,\.$1\s*$,) { tag 'compressed-symlink-with-wrong-ext', "$fname $link"; } } } # ---------------- special files else { # special file tag 'special-file', $fname, sprintf('%04o',$operm); } } if (!$is_dummy && !$arch_dep_files && $arch ne 'all') { tag 'package-contains-no-arch-dependent-files' unless $type eq 'udeb'; } # python-support check if (defined($py_support_nver) && $pkg ne 'python-support'){ # Okay - package installs something to /usr/share/python-support/ # $py_support_nver is either the empty string or a version # describing what we need. # # We also skip debug packages since they are okay as long as # foo-dbg depends on foo (= $version) and foo has its dependency # correct. my $dep = $info->relation('depends'); tag 'missing-dependency-on-python-support', "python-support $py_support_nver" unless ($pkg =~ m/-dbg$/ || $dep->implies("python-support $py_support_nver")); } # Check for section games but nothing in /usr/games. Check for # any binary to save ourselves from game-data false positives: my $games = dir_counts($info, 'usr/games/'); my $other = dir_counts($info, 'bin/') + dir_counts($info, 'usr/bin/'); if ($pkg_section =~ m,games$, and $games == 0 and $other > 0) { tag 'package-section-games-but-contains-no-game'; } if ($pkg_section =~ m,games$, and $games > 0 and $other > 0) { tag 'package-section-games-but-has-usr-bin'; } if ($pkg_section !~ m,games$, and $games > 0 and $other == 0) { tag 'games-package-should-be-section-games'; } # Warn about empty directories, but ignore empty directories in # /var (packages create directories to hold dynamically created # data) or /etc (configuration files generated by maintainer # scripts). Also skip base-files, which is a very special case. # # Empty Perl directories are an ExtUtils::MakeMaker artifact that # will be fixed in Perl 5.10, and people can cause more problems # by trying to fix it, so just ignore them. # # python-support needs a directory for each package even it might # be empty if ($pkg ne 'base-files') { foreach my $dir ($info->sorted_index) { next if not $dir->is_dir; my $dirname = $dir->name; next if ($dirname =~ m{^var/} or $dirname =~ m{^etc/}); if (scalar($dir->children) == 0) { if ( $dirname ne 'usr/lib/perl5/' and $dirname ne 'usr/share/perl5/' and $dirname !~ m;^usr/share/python-support/;) { tag 'package-contains-empty-directory', $dirname; } } } } if (!$has_binary_perl_file && @nonbinary_perl_files_in_lib) { foreach my $file (@nonbinary_perl_files_in_lib) { tag 'package-installs-nonbinary-perl-in-usr-lib-perl5', $file; } } # Check for .devhelp2? files that aren't symlinked into paths searched by # devhelp. for my $file (@devhelp) { my $found = 0; for my $link (@devhelp_links) { if ($file =~ m,^\Q$link,) { $found = 1; last; } } tag 'package-contains-devhelp-file-without-symlink', $file unless $found; } # Check for including multiple different DPIs of fonts in the same X11 bitmap # font package. if ($x11_font_dirs{'100dpi'} and $x11_font_dirs{'75dpi'}) { tag 'package-contains-multiple-dpi-fonts'; } if ($x11_font_dirs{misc} and keys(%x11_font_dirs) > 1) { tag 'package-mixes-misc-and-dpi-fonts'; } return; } sub dir_counts { my ($info, $filename) = @_; if (my $file = $info->index($filename)) { return scalar($file->children); } return 0; } sub is_localhost { my ($urlshort) = @_; if( $urlshort =~ m!^(?:[^/]+@)?localhost(?:[:][^/]+)?/!i || $urlshort =~ m!^(?:[^/]+@)?::1(?:[:][^/]+)?/!i || $urlshort =~ m!^(?:[^/]+@)?127(?:\.\d{1,3}){3}(?:[:][^/]+)?/!i) { return 1; }else { return 0; } } sub detect_privacy_breach { my ($info, $file) = @_; my %privacybreachhash = (); # detect only in regular file unless($file->is_regular_file) { return; } open(my $fd, '<:raw', $info->unpacked($file)); my $sfd = Lintian::SlidingWindow->new($fd,sub { $_=lc($_); }); while (my $block = $sfd->readwindow()) { # try generic fragment tagging foreach my $breaker_tag ($PRIVACY_BREAKER_FRAGMENTS->all) { my $regex = $PRIVACY_BREAKER_FRAGMENTS->value($breaker_tag); if ($block =~ m{$regex}) { unless (exists $privacybreachhash{'tag-'.$breaker_tag}) { $privacybreachhash{'tag-'.$breaker_tag} = 1; tag $breaker_tag, $file; } } } # According to html norm src attribute is used by tags: # # audio(v5+), embed (v5+), iframe (v4), frame, img, input, script, source, track(v5), video (v5) # Add other tags with src due to some javascript code: # div due to div.js # div data-href due to jquery # css with @import EXTERNAL_TAG: while( $block=~ m, (?'fulltag' <\s* (?: (?'tagattr'div|embed|i?frame|img|input|script|source|track|video) (?&ba) src\s*=\s*(?'url'(?&loc)) | (?'tagattr'div) (?&ba) data-href\s*=\s*(?'url'(?&loc)) | (?'tagattr'applet|object) (?&ba) codebase\s*=\s*(?'url'(?&loc)) | (?'tagattr'object) (?&ba) data\s*=\s*(?'url'(?&loc)) | (?'tagattr'video) (?&ba) poster\s*=\s*(?'url'(?&loc)) | (?'tagattr'link) (?&ba) href\s*=\s*(?'url'(?&loc)) ) [^>]*? > | (?'tagattr'[@]import) \s+ url \s* \( \s* (?'url'(?&loc)) \s* \) \s* ; ) (?(DEFINE) (?(?:\s+[^>]+)? \s+) (?"(?:http|ftp)s?://[^"\r\n]*?") ),xismog ) { my $url=$+{url}; my $tagattr=$+{tagattr}; my $fulltag=$+{fulltag}; my $website = $url; $website =~ s,^"(?:http|ftp)s?://,,; $website =~ s/"$//; if (is_localhost($website)){ # do nothing ok next EXTERNAL_TAG; } # reparse fulltag for rel if ($tagattr eq 'link') { $fulltag =~ m,<\s* link (?:\s+[^>]+)? \s+ rel \s* = \s* "([^"\r\n]*?)" [^>]*? >,xismog; my $relcontent = $1; if (defined($relcontent)) { if ($relcontent eq 'schema.dct') { next EXTERNAL_TAG; } } } # track well known site foreach my $breaker_tag ($PRIVACY_BREAKER_WEBSITES->all) { my $regex= $PRIVACY_BREAKER_WEBSITES->value($breaker_tag); if ($website =~ m{$regex}) { unless (exists $privacybreachhash{'tag-'.$breaker_tag}){ $privacybreachhash{'tag-'.$breaker_tag}= 1; tag $breaker_tag, $file; } # do not go to generic case next EXTERNAL_TAG; } } # generic case unless (exists $privacybreachhash{'tag-generic-'.$website}){ tag 'privacy-breach-generic', $file, $website; $privacybreachhash{'tag-generic-'.$website} = 1; } } } close($fd); return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/conffiles.desc0000664000000000000000000000511212310413144015514 0ustar Check-Script: conffiles Author: Christian Schwarz Abbrev: cnf Type: binary Needs-Info: bin-pkg-control, index Info: This script checks if the conffiles control file of a binary package is correct. Tag: file-in-usr-marked-as-conffile Severity: serious Certainty: certain Ref: policy 10.7.2 Info: All configuration files must reside in /etc. Files below /usr may not be marked as conffiles since /usr might be mounted read-only. The local system administrator would therefore not have a chance to modify this configuration file. Tag: non-etc-file-marked-as-conffile Severity: serious Certainty: possible Info: A file installed in some other directory than /etc is marked as conffile. A conffile typically implies a configuration file, and Policy mandates such files to be in /etc. Ref: policy 10.7.2 Tag: relative-conffile Severity: important Certainty: certain Ref: policy E.1 Info: All entries in the debian/conffiles control file should have an absolute path specification. Tag: duplicate-conffile Severity: important Certainty: certain Info: The file is listed more than once in your debian/conffiles file. Usually, this is because debhelper (dh_installdeb, compat level 3 or higher) will add any files in your package located in /etc automatically to the list of conffiles, so if you do that manually too, you'll get duplicates. Tag: file-in-etc-not-marked-as-conffile Severity: serious Certainty: certain Ref: policy 10.7 Info: Files in /etc must be marked conffiles if they are included in a package. Otherwise they should be created by maintainer scripts. Tag: file-in-etc-rc.d-marked-as-conffile Severity: important Certainty: certain Ref: policy 9.3.3 Info: The symbolic links in /etc/rc?.d may not be marked as conffiles. Tag: conffile-has-bad-file-type Severity: important Certainty: certain Ref: #690051, #690910 Info: The conffiles lists this path, which is not a file. This will almost certainly not work. . Note that dpkg does not support symlinks being conffiles. Tag: conffile-is-not-in-package Severity: important Certainty: certain Info: The conffiles control file lists this path, but the path does not appear to exist in the package. Lintian may also emit this tag when the file exists, but the canonical name is used in the "conffiles" control file (e.g. if a parent segment are symlinks). . Note that dpkg and Lintian strips all whitespace from the right hand side of each line. Thus it is not possible for a file ending with trailing whitespace to be marked as a conffile. lintian-2.5.22ubuntu1/checks/binaries.pm0000664000000000000000000005313212311317576015060 0ustar # binaries -- lintian check script -*- perl -*- # Copyright (C) 1998 Christian Schwarz and Richard Braakman # Copyright (C) 2012 Kees Cook # # 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::binaries; use strict; use warnings; use autodie; use constant NUMPY_STRING => 'module compiled against ABI version %x' . ' but this version of numpy is %x'; use Lintian::Check qw(check_spelling); use Lintian::Data; use Lintian::Relation qw(:constants); use Lintian::Tags qw(tag); use Lintian::Output qw(debug_msg); use Lintian::Util qw(fail slurp_entire_file strip); use File::Spec; my $ARCH_REGEX = Lintian::Data->new('binaries/arch-regex', qr/\s*\~\~/o, sub { return qr/$_[1]/ }); my $ARCH_64BIT_EQUIVS = Lintian::Data->new('binaries/arch-64bit-equivs', qr/\s*\=\>\s*/); sub _embedded_libs { my ($key, $val, undef) = @_; my $result = {'libname' => $key,}; my ($opts, $regex) = split m/\|\|/, $val, 2; if (!$regex) { $regex = $opts; $opts = ''; } else { strip($opts); foreach my $optstr (split m/\s++/, $opts) { my ($opt, $val) = split m/=/, $optstr, 2; if ($opt eq 'source' or $opt eq 'libname') { $result->{$opt} = $val; } elsif ($opt eq 'source-regex') { $result->{$opt} = qr/$val/; } else { fail( "Unknown option $opt used for $key" . ' (in binaries/embedded-libs)'); } } } if (defined $result->{'source'} and $result->{'source-regex'}) { fail( "Both source and source-regex used for $key" . ' (in binaries/embedded-libs)'); } else { $result->{'source'} = $key unless defined $result->{'source'}; } $result->{'match'} = qr/$regex/; return $result; } our $EMBEDDED_LIBRARIES = Lintian::Data->new('binaries/embedded-libs', qr/\s*+\|\|/, \&_embedded_libs); our $MULTIARCH_DIRS = Lintian::Data->new('common/multiarch-dirs', qr/\s++/, sub { return { 'dir' => $_[1], 'match' => qr/\Q$_[1]\E/ } }); sub _split_hash { my (undef, $val) = @_; my $hash = {}; map { $hash->{$_} = 1 } split m/\s*,\s*/o, $val; return $hash; } our $HARDENING= Lintian::Data->new('binaries/hardening-tags', qr/\s*\|\|\s*/o, \&_split_hash); our $LFS_SYMBOLS = Lintian::Data->new('binaries/lfs-symbols'); our $ARCH_32_REGEX; sub run { my ($pkg, $type, $info, $proc, $group) = @_; my $madir; my $gnu_triplet_re; my $ruby_triplet_re; my $dynsyms = 0; my $needs_libc = ''; my $needs_libcxx = ''; my $needs_libc_file; my $needs_libcxx_file; my $needs_libc_count = 0; my $needs_libcxx_count = 0; my $needs_depends_line = 0; my $has_perl_lib = 0; my $has_php_ext = 0; my $uses_numpy_c_abi = 0; my %SONAME; my $arch = $info->field('architecture', ''); my $multiarch = $info->field('multi-arch', 'no'); my $srcpkg = $proc->pkg_src; foreach my $file (sort keys %{$info->objdump_info}) { my $objdump = $info->objdump_info->{$file}; my $has_lfs = undef; my $is_profiled = 0; # Only 32bit ELF binaries can lack LFS. $ARCH_32_REGEX = $ARCH_REGEX->value('32') unless defined $ARCH_32_REGEX; $has_lfs = 1 unless $info->file_info($file) =~ m/$ARCH_32_REGEX/o; # We don't care if it is a debug file $has_lfs = 1 if $file =~ m,^usr/lib/debug/,; if (defined $objdump->{SONAME}) { foreach my $soname (@{$objdump->{SONAME}}) { $SONAME{$soname} ||= []; push @{$SONAME{$soname}}, $file; } } foreach my $symbol (@{$objdump->{SYMBOLS}}) { my ($foo, $sec, $sym) = @{$symbol}; unless (defined $has_lfs) { if ($LFS_SYMBOLS->known($sym)) { # Using a 32bit only interface call, some parts of the # binary are built without LFS. $has_lfs = 0; } } next if $is_profiled; # According to the binutils documentation[1], the profiling symbol # can be named "mcount", "_mcount" or even "__mcount". # [1] http://sourceware.org/binutils/docs/gprof/Implementation.html if ($sec =~ /^GLIBC_.*/ and $sym =~ m{\A _?+ _?+ mcount \Z}xsm){ $is_profiled = 1; } elsif ($arch ne 'hppa') { # This code was used to detect profiled code in Wheezy # (and earlier) if ( $foo eq '.text' and $sec eq 'Base' and$sym eq '__gmon_start__') { $is_profiled = 1; } } tag 'binary-compiled-with-profiling-enabled', $file if $is_profiled; } tag 'binary-file-compressed-with-upx', $file if $objdump->{'UPX'}; tag 'apparently-corrupted-elf-binary', $file if $objdump->{'ERRORS'}; tag 'binary-file-built-without-LFS-support', $file if defined $has_lfs and not $has_lfs; if ($objdump->{'BAD-DYNAMIC-TABLE'}) { tag 'binary-with-bad-dynamic-table', $file unless $file =~ m%^usr/lib/debug/%; } } # For the package naming check, filter out SONAMEs where all the # files are at paths other than /lib, /usr/lib, or /usr/X11R6/lib. # This avoids false positives with plugins like Apache modules, # which may have their own SONAMEs but which don't matter for the # purposes of this check. Also filter out nsswitch modules if (defined($MULTIARCH_DIRS->value($arch))) { $madir = $MULTIARCH_DIRS->value($arch)->{'dir'}; } else { # In the case that the architecture is "all" or unknown (or we do # not know the multi-arch path for a known architecture) , we assume # it the multi-arch path to be this (hopefully!) non-existent path to # avoid warnings about uninitialized variables. $madir = './!non-existant-path!/./'; } $madir = './!non-existant-path!/./' unless defined $madir; $gnu_triplet_re = quotemeta $madir; $gnu_triplet_re =~ s,^i386,i[3-6]86,; $ruby_triplet_re = $gnu_triplet_re; $ruby_triplet_re =~ s,linux\\-gnu$,linux,; $ruby_triplet_re =~ s,linux\\-gnu,linux\\-,; sub lib_soname_path { my ($dir, @paths) = @_; foreach my $path (@paths) { next if $path =~ m%^(?:usr/)?lib(?:32|64)?/libnss_[^.]+\.so(?:\.[0-9]+)$%; return 1 if $path =~ m%^lib/[^/]+$%; return 1 if $path =~ m%^usr/lib/[^/]+$%; return 1 if defined $dir && $path =~ m%lib/$dir/[^/]++$%; return 1 if defined $dir && $path =~ m%usr/lib/$dir/[^/]++$%; } return 0; } my @sonames = sort grep { lib_soname_path($madir, @{$SONAME{$_}}) } keys %SONAME; # try to identify transition strings my $base_pkg = $pkg; $base_pkg =~ s/c102\b//o; $base_pkg =~ s/c2a?\b//o; $base_pkg =~ s/\dg$//o; $base_pkg =~ s/gf$//o; $base_pkg =~ s/-udeb$//o; $base_pkg =~ s/^lib64/lib/o; my $match_found = 0; foreach my $expected_name (@sonames) { $expected_name =~ s/([0-9])\.so\./$1-/; $expected_name =~ s/\.so(?:\.|\z)//; $expected_name =~ s/_/-/g; if ( (lc($expected_name) eq $pkg) || (lc($expected_name) eq $base_pkg)) { $match_found = 1; last; } } tag 'package-name-doesnt-match-sonames', "@sonames" if @sonames && !$match_found; my %directories; for my $file ($info->sorted_index) { my $name = $file->name; next unless $file->is_dir || $file->is_symlink; $name =~ s,/\z,,; $directories{"/$name"}++; } my $src = $group->get_source_processable(); my $built_with_golang; if (defined($src)) { $built_with_golang = $src->info->relation('build-depends')->implies('golang-go'); } # process all files in package foreach my $file ($info->sorted_index) { my $fileinfo = $info->file_info($file); my $objdump = $info->objdump_info->{$file}; # binary or object file? next unless ($fileinfo =~ m/^[^,]*\bELF\b/) or ($fileinfo =~ m/\bcurrent ar archive\b/); # Warn about Architecture: all packages that contain shared libraries. if ($arch eq 'all') { tag 'arch-independent-package-contains-binary-or-object',$file; } if ($file =~ m,^etc/,) { tag 'binary-in-etc', $file; } if ($file =~ m,^usr/share/,) { tag 'arch-dependent-file-in-usr-share', $file; } if ($multiarch eq 'same') { unless ($file =~ m,\b$gnu_triplet_re\b|/(?:$ruby_triplet_re|java-\d+-openjdk-\Q$arch\E|\.build-id)/, ) { tag 'arch-dependent-file-not-in-arch-specific-directory',$file; } } # ELF? next unless $fileinfo =~ m/^[^,]*\bELF\b/o; if ($arch eq 'all' or not $ARCH_REGEX->known($arch)) { # arch:all or unknown architecture - not much we can say here 1; } else { my $archre = $ARCH_REGEX->value($arch); my $bad = 1; if ($fileinfo =~ m/$archre/) { # If it matches the architecture regex, it is good $bad = 0; } elsif ($file =~ m,(?:^|/)lib(x?\d{2})/, or $file =~ m,^emul/ia(\d{2}),) { my $bitre = $ARCH_REGEX->value($1); # Special case - "old" multi-arch dirs $bad = 0 if $bitre and $fileinfo =~ m/$bitre/; } elsif ($ARCH_64BIT_EQUIVS->known($arch) && $file =~ m,^lib/modules/,) { my $arch64re = $ARCH_REGEX->value($ARCH_64BIT_EQUIVS->value($arch)); # Allow amd64 kernel modules to be installed on i386. $bad = 0 if $fileinfo =~ m/$arch64re/; } elsif ($arch eq 'amd64') { my $arch32re = $ARCH_REGEX->value('i386'); # Ignore i386 binaries in amd64 packages for right now. $bad = 0 if $fileinfo =~ m/$arch32re/; } tag 'binary-from-other-architecture', $file if $bad; } my $strings = slurp_entire_file($info->strings($file)); my $exceptions = { %{ $group->info->spelling_exceptions }, 'teH' => 1, # From #711207 }; check_spelling('spelling-error-in-binary',$strings, $file,$exceptions); # stripped? if ($fileinfo =~ m,not stripped\s*$,o) { # Is it an object file (which generally can not be # stripped), a kernel module, debugging symbols, or # perhaps a debugging package? unless ($file =~ m,\.k?o$, or $pkg =~ m/-dbg$/ or $pkg =~ m/debug/ or $file =~ m,/lib/debug/, or $file =~ m,\.gox$,o) { if ( $fileinfo =~ m/executable/ and $strings =~ m/^Caml1999X0[0-9][0-9]$/m) { # Check for OCaml custom executables (#498138) tag 'ocaml-custom-executable', $file; } else { tag 'unstripped-binary-or-object', $file; } } } else { # stripped but a debug or profiling library? if (($file =~ m,/lib/debug/,o) or ($file =~ m,/lib/profile/,o)){ tag 'library-in-debug-or-profile-should-not-be-stripped',$file; } else { # appropriately stripped, but is it stripped enough? foreach my $sect ('.note', '.comment') { if (exists $objdump->{'SH'}->{$sect}) { tag 'binary-has-unneeded-section', "$file $sect"; } } } } # rpath is disallowed, except in private directories if (exists $objdump->{RPATH}) { foreach my $rpath ( map {File::Spec->canonpath($_)} keys %{$objdump->{RPATH}} ) { next if $rpath =~ m,^/usr/lib/(?:$madir/)?(?:games/)?(?:\Q$pkg\E|\Q$srcpkg\E)(?:/|\z),; next if $rpath =~ m,^\$\{?ORIGIN\}?,; next if $directories{$rpath} and $rpath !~ m,^(?:/usr)?/lib(?:/$madir)?/?\z,; tag 'binary-or-shlib-defines-rpath', "$file $rpath"; } } foreach my $emlib ($EMBEDDED_LIBRARIES->all) { my $ldata = $EMBEDDED_LIBRARIES->value($emlib); if ($ldata->{'source-regex'}) { next if $proc->pkg_src =~ m/^$ldata->{'source-regex'}$/; } else { next if $proc->pkg_src eq $ldata->{'source'}; } if ($strings =~ $ldata->{'match'}) { tag 'embedded-library', "$file: $ldata->{'libname'}"; } } # binary or shared object? next unless ($fileinfo =~ m/executable/) or ($fileinfo =~ m/shared object/); next if $type eq 'udeb'; # Perl library? if ($file =~ m,^usr/lib/perl5/.*\.so$,) { $has_perl_lib = 1; } # PHP extension? if ($file =~ m,^usr/lib/php\d/.*\.so(?:\.\d+)*$,) { $has_php_ext = 1; } # Python extension using Numpy C ABI? if ( $file =~ m,usr/lib/(?:pyshared/)?python2\.\d+/.*(?{NEEDED} })) { tag 'debug-file-should-use-detached-symbols', $file; } tag 'debug-file-with-no-debug-symbols', $file unless (exists $objdump->{'SH'}->{'.debug_line'} or exists $objdump->{'SH'}->{'.zdebug_line'}); } # Detached debugging symbols directly in /usr/lib/debug. if ($file =~ m,^usr/lib/debug/[^/]+$,) { unless (scalar(@{ $objdump->{NEEDED} }) || $fileinfo =~ m/statically linked/) { tag 'debug-symbols-directly-in-usr-lib-debug', $file; } } # statically linked? if (!scalar(@{ $objdump->{NEEDED} })) { if ($fileinfo =~ m/shared object/o) { # Some exceptions: kernel modules, detached debugging # information and the dynamic loader (which itself has # no dependencies). next if ($file =~ m%^lib/modules/%); next if ($file =~ m%^usr/lib/debug/%); next if ($file =~ m%^lib(?:|32|64)/(?:[\w/]+/)?ld-[\d.]+\.so$%); tag 'shared-lib-without-dependency-information', $file; } else { # Some exceptions: files in /boot, /usr/lib/debug/*, # named *-static or *.static, or *-static as # package-name. next if ($file =~ m%^boot/%); next if ($file =~ /[\.-]static$/); next if ($pkg =~ /-static$/); # Binaries built by the Go compiler are statically # linked by default. next if ($built_with_golang); # klibc binaries appear to be static. next if (exists $objdump->{INTERP} && $objdump->{INTERP} =~ m,/lib/klibc-\S+\.so,); # Location of debugging symbols. next if ($file =~ m%^usr/lib/debug/%); # ldconfig must be static. next if ($file eq 'sbin/ldconfig'); tag 'statically-linked-binary', $file; } } else { my $no_libc = 1; my $is_shared = 0; $needs_depends_line = 1; $is_shared = 1 if index($fileinfo, 'shared object') != -1; for my $lib (@{$objdump->{NEEDED}}) { if ($lib =~ /^libc\.so\.(\d+.*)/) { $needs_libc = "libc$1"; $needs_libc_file = $file->name unless $needs_libc_file; $needs_libc_count++; $no_libc = 0; } if ($lib =~ m{\A libstdc\+\+\.so\.(\d+) \Z}xsm) { $needs_libcxx = "libstdc++$1"; $needs_libcxx_file = $file->name unless $needs_libcxx_file; $needs_libcxx_count++; } } if ($no_libc and not $file =~ m,/libc\b,) { # If there is no libc dependency, then it is most likely a # bug. The major exception is that some C++ libraries, # but these tend to link against libstdc++ instead. (see # #719806) if ($is_shared) { tag 'library-not-linked-against-libc', $file unless $needs_libcxx ne ''; } else { tag 'program-not-linked-against-libc', $file; } } # Check for missing hardening characteristics. This currently # handles the following checks: # no-relro no-fortify-functions no-stackprotector no-bindnow no-pie if (exists($info->hardening_info->{$file})) { my $flags = $HARDENING->value($arch); if ($flags) { foreach my $t (@{$info->hardening_info->{$file}}) { my $tag = "hardening-$t"; tag $tag, $file if $flags->{$tag}; } } } } } # Find the package dependencies, which is used by various checks. my $depends = $info->relation('strong'); # Check for a libc dependency. if ($needs_depends_line) { if ($depends->empty) { tag 'missing-depends-line'; } else { if ($needs_libc && $pkg !~ /^libc[\d.]+(?:-|\z)/) { # Match libcXX or libcXX-*, but not libc3p0. my $re = qr/^\Q$needs_libc\E\b/; if (!$depends->matches($re)) { my $others = ''; $needs_libc_count--; if ($needs_libc_count > 0) { $others = " and $needs_libc_count others"; } tag 'missing-dependency-on-libc', "needed by $needs_libc_file$others"; } } if ($needs_libcxx ne '') { # Match libstdc++XX or libcstdc++XX-* my $re = qr/^\Q$needs_libcxx\E\b/; if (!$depends->matches($re)) { my $others = ''; $needs_libcxx_count--; if ($needs_libcxx_count > 0) { $others = " and $needs_libcxx_count others"; } tag 'missing-dependency-on-libstdc++', "needed by $needs_libcxx_file$others"; } } } } # Check for a Perl dependency. if ($has_perl_lib) { # It is a virtual package, so no version is allowed and # alternatives probably does not make sense here either. my $re = qr/^perlapi-[\d.]+(?:\s*\[[^\]]+\])?$/; unless ($depends->matches($re, VISIT_OR_CLAUSE_FULL)) { tag 'missing-dependency-on-perlapi'; } } # Check for a phpapi- dependency. if ($has_php_ext) { # It is a virtual package, so no version is allowed and # alternatives probably does not make sense here either. unless ($depends->matches(qr/^phpapi-[\d\w+]+$/, VISIT_OR_CLAUSE_FULL)) { tag 'missing-dependency-on-phpapi'; } } # Check for dependency on python-numpy-abiN dependency (or strict versioned # dependency on python-numpy) if ($uses_numpy_c_abi and $pkg !~ m{\A python3?-numpy \Z}xsm) { # We do not allow alternatives as it would mostly likely # defeat the purpose of this relation. Also, we do not allow # versions for -abi as it is a virtual package. my $vflags = VISIT_OR_CLAUSE_FULL; tag 'missing-dependency-on-numpy-abi' unless $depends->matches(qr/^python3?-numpy-abi\d+$/, $vflags) or ( $depends->matches(qr/^python-numpy \(>[>=][^\|]+$/, $vflags) and $depends->matches(qr/^python-numpy \(<[<=][^\|]+$/, $vflags)); } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/files.desc0000664000000000000000000016300612314062063014661 0ustar Check-Script: files Author: Christian Schwarz Abbrev: fil Type: binary, udeb Needs-Info: unpacked, objdump-info, scripts, file-info, index Info: This script checks if a binary package conforms to policy WRT to files and directories. Tag: package-contains-ancient-file Severity: serious Certainty: certain Info: Your package contains a file that claims to have been generated more than 20 years ago. This is most probably an error. Your package will be rejected by the Debian archive scripts if it contains a file with such a timestamp. Tag: package-installs-file-to-usr-x11r6 Severity: important Certainty: certain 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. Ref: policy 11.8.7 Tag: config-file-reserved Severity: important Certainty: certain Info: This file is reserved by a specific package. Please email the maintainer of the package in question if you have questions. Tag: FSSTND-dir-in-usr Severity: serious Certainty: certain Info: As of policy version 3.0.0.0, Debian no longer follows the FSSTND. . Instead, the Filesystem Hierarchy Standard (FHS), version 2.3, is used. You can find it in /usr/share/doc/debian-policy/fhs/ . Ref: policy 9.1.1 Tag: FSSTND-dir-in-var Severity: serious Certainty: certain Info: As of policy version 3.0.0.0, Debian no longer follows the FSSTND. . Instead, the Filesystem Hierarchy Standard (FHS), version 2.3, is used. You can find it in /usr/share/doc/debian-policy/fhs/ . Ref: policy 9.1.1 Tag: package-installs-into-etc-gconf-schemas Severity: normal Certainty: certain Info: The package installs files into the /etc/gconf/schemas directory. No package should do this; this directory is reserved for local overrides. Instead, schemas should be installed into /usr/share/gconf/schemas. Tag: package-installs-into-etc-rc.d Severity: serious Certainty: certain Info: The package installs files into the /etc/rc.d or /etc/rc?.d which is not allowed. Ref: policy 9.3.3 Tag: package-installs-into-etc-rc.boot Severity: serious Certainty: certain Info: The package installs files in the /etc/rc.boot directory, which is obsolete. Ref: policy 9.3.4 Tag: package-install-into-obsolete-dir Severity: normal Certainty: certain Info: The package installs files to an obsolete directory. Please use a newer path. Tag: non-standard-file-permissions-for-etc-init.d-script Severity: important Certainty: certain Info: Usually, scripts in the /etc/init.d directory should have mode 0755. Tag: file-directly-in-usr-share Severity: serious Certainty: certain Info: Packages should not install files directly in /usr/share, i.e., without a subdirectory. . You should either create a subdirectory /usr/share/... for your package or place the file in /usr/share/misc. Tag: file-in-usr-local Severity: serious Certainty: certain Info: The package installs a file in /usr/local/... which is not allowed. Ref: policy 9.1.2 Tag: stray-directory-in-manpage-directory Severity: important Certainty: certain Info: This package installs a directory under /usr/share/man or /usr/X11R6/man that isn't a manual section directory or locale directory. Ref: fhs usrsharemanmanualpages Tag: executable-manpage Severity: important Certainty: certain Info: Manual pages are not meant to be executed. Tag: dir-in-usr-local Severity: serious Certainty: certain Info: The package installs a directory in /usr/local/... which is not allowed. . If you want to provide an empty directory in /usr/local for convenience of the local system administrator, please follow the rules in the policy manual (section 9.1.2), i.e., create the directories in the postinst script but don't fail if this isn't possible (e.g., if /usr/local is mounted read-only). Ref: policy 9.1.2 Tag: non-standard-dir-perm Severity: normal Certainty: possible Info: The directory has a mode different from 0755, and it's not one of the known exceptions. Ref: policy 10.9 Tag: executable-is-not-world-readable Severity: normal Certainty: certain Info: All executables should be readable by any user. Since anyone can download the Debian package and obtain a copy of the executable, no security is gained by making the executable unreadable even for setuid binaries. If only members of a certain group may execute this file, remove execute permission for world, but leave read permission. Ref: policy 10.9 Tag: non-standard-executable-perm Severity: normal Certainty: certain Info: Executables that are not setuid or setgid should always have a mode of 0755. Since anyone can obtain the executable by downloading the Debian package and extracting it, restricting access serves little purpose. Ref: policy 10.9 Tag: non-standard-game-executable-perm Severity: normal Certainty: certain Info: The file is owned by the games group but is not mode 2755. If a game does not have to be setgid games, it should be owned by the root group like any other executable. This executable is either owned by the wrong group or is not setgid when it should be. Ref: policy 11.11 Tag: non-standard-setuid-executable-perm Severity: normal Certainty: certain Info: The file is setuid or setgid and has a mode different from any of 2755, 4755, 4754, or 6755. Any other permissions on setuid executables is probably a bug. In particular, removing root write privileges serves no purpose, group-writable setuid or setgid executables are probably bad ideas, and setgid executables that are not world-executable serve little purpose. Ref: policy 10.9 Tag: setuid-binary Severity: normal Certainty: possible Info: The file is tagged SETUID. In some cases this is intentional, but in other cases this is a bug. If this is intentional, please add a lintian override to document this fact. Tag: setgid-binary Severity: normal Certainty: possible Info: The file is tagged SETGID. In some cases this is intentional, but in other cases this is a bug. If this is intentional, please add a lintian override to document this fact. Tag: setuid-gid-binary Severity: normal Certainty: possible Info: The file is tagged SETUID and SETGID. In some cases this is intentional, but in other cases this is a bug. If this is intentional, please add a lintian override to document this fact. Tag: non-standard-file-perm Severity: normal Certainty: certain Info: The file has a mode different from 0644. In some cases this is intentional, but in other cases this is a bug. Ref: policy 10.9 Tag: bad-perm-for-file-in-etc-sudoers.d Severity: serious Certainty: certain Info: Files in /etc/sudoers.d/ must be 0440 or sudo will refuse to parse them. Ref: #588831, #576527 Tag: special-file Severity: serious Certainty: certain Info: The package contains a special file (e.g., a device file). This is forbidden by current policy. If your program needs this device, you should create it by calling makedev from the postinst script. Ref: policy 10.6 Tag: compressed-symlink-with-wrong-ext Severity: important Certainty: certain Info: The package installs a symbolic link pointing to a compressed file, but the symbolic link does not use the same file extension than the referenced file. In most cases, this can produce troubles when the user or a program tries to access the file through the link. Ref: policy 10.5 Tag: symlink-has-double-slash Severity: minor Certainty: certain Info: This symlink contains two successive slashes (//). This is in violation of policy, where it is stated that symlinks should be as short as possible . If you use debhelper, running dh_link after creating the package structure will fix this problem for you. Ref: policy 10.5 Tag: symlink-ends-with-slash Severity: minor Certainty: certain Info: This symlink ends with a slash (/). This is in violation of policy, where it is stated that symlinks should be as short as possible . If you use debhelper, running dh_link after creating the package structure will fix this problem for you. Ref: policy 10.5 Tag: symlink-should-be-relative Severity: normal Certainty: certain Info: Symlinks to files which are in the same top-level directory should be relative according to policy. (In other words, a link in /usr to another file in /usr should be relative, while a link in /usr to a file in /etc should be absolute.) . If you use debhelper, running dh_link after creating the package structure will fix this problem for you. Ref: policy 10.5 Tag: symlink-should-be-absolute Severity: important Certainty: certain Info: Symbolic links between different top-level directories should be absolute. . If you use debhelper, running dh_link after creating the package structure will fix this problem for you. Ref: policy 10.5 Tag: udeb-contains-documentation-file Severity: important Certainty: certain Info: udeb packages should not contain any documentation. Tag: executable-in-usr-share-doc Severity: important Certainty: certain Info: Usually, documentation files in /usr/share/doc should have mode 0644. If the executable is an example, it should go in /usr/share/doc/pkg/examples. Tag: script-in-usr-share-doc Severity: wishlist Certainty: certain Info: Scripts are usually not documentation files, unless they are examples, in which case they should be in the /usr/share/doc/pkg/examples directory. Tag: symlink-has-too-many-up-segments Severity: serious Certainty: certain Ref: policy 10.5 Info: The symlink references a directory beyond the root directory "/". Tag: lengthy-symlink Severity: important Certainty: certain Info: This link goes up, and then back down into the same subdirectory. Making it shorter will improve its chances of finding the right file if the user's system has lots of symlinked directories. . If you use debhelper, running dh_link after creating the package structure will fix this problem for you. Ref: policy 10.5 Tag: symlink-is-self-recursive Severity: normal Certainty: possible Info: The symbolic link is recursive to a higher directory of the symlink itself. This means, that you can infinitely chdir with this symlink. This is usually not okay, but sometimes wanted behaviour. Tag: symlink-contains-spurious-segments Severity: important Certainty: certain Info: The symbolic link has needless segments like ".." and "." in the middle. These are unneeded and make the link longer than it could be, which is in violation of policy. They can also cause problems in the presence of symlinked directories. . If you use debhelper, running dh_link after creating the package structure will fix this problem for you. Ref: policy 10.5 Tag: run-parts-cron-filename-contains-illegal-chars Severity: normal Certainty: certain Info: The script in /etc/cron.<time-interval> will not be executed by run-parts(8) because the filename contains a "." (full stop) or "+" (plus). . It is recommended to use "_" (underscores) instead of these symbols. Ref: run-parts(8), policy 9.5.1 Tag: bad-permissions-for-etc-cron.d-script Severity: important Certainty: certain Info: Files in /etc/cron.d are configuration files for cron and not scripts. Thus, they should not be marked executable. Tag: bad-permissions-for-etc-emacs-script Severity: important Certainty: certain Info: Files in the /etc/emacs* directories should not be marked executable. Tag: image-file-in-usr-lib Severity: normal Certainty: certain Info: This package installs a pixmap or a bitmap within /usr/lib. According to the Filesystem Hierarchy Standard, architecture-independent files need to be placed within /usr/share instead. Tag: file-directly-in-usr-share-doc Severity: serious Certainty: certain Info: Documentation files have to be installed in /usr/share/doc/pkg. Ref: policy 12.3 Tag: bad-owner-for-doc-file Severity: important Certainty: certain Info: Documentation files should be owned by root/root. Tag: dir-or-file-in-var-lock Severity: serious Certainty: possible Info: /var/lock may be a temporary filesystem, so any directories or files needed there must be created dynamically at boot time. Ref: policy 9.3.2 Tag: dir-or-file-in-var-run Severity: serious Certainty: possible Info: /var/run may be a temporary filesystem, so any directories or files needed there must be created dynamically at boot time. Ref: policy 9.3.2 Tag: dir-or-file-in-run Severity: serious Certainty: possible Info: /run may be a temporary filesystem, so any directories or files needed there must be created dynamically at boot time. Ref: policy 9.3.2 Tag: dir-or-file-in-var-www Severity: serious Certainty: possible Ref: fhs thevarhierarchy Info: Debian packages should not install files under /var/www. This is not one of the /var directories in the File Hierarchy Standard and is under the control of the local administrator. Packages should not assume that it is the document root for a web server; it is very common for users to change the default document root and packages should not assume that users will keep any particular setting. . Packages that want to make files available via an installed web server should instead put instructions for the local administrator in a README.Debian file and ideally include configuration fragments for common web servers such as Apache. . As an exception, packages are permitted to create the /var/www directory due to its past history as the default document root, but should at most copy over a default file in postinst for a new install. In this case, please add a Lintian override. Tag: dir-or-file-in-tmp Severity: serious Certainty: certain Info: Packages must not install files into /tmp or /var/tmp. The File Hierarchy Standard specifies that such files may be removed by the administrator and that programs may not depend on any files in /tmp being preserved across invocations, which combined mean that it makes no sense to ship files in these directories. Ref: fhs tmptemporaryfiles, fhs vartmptemporaryfilespreservedbetwee Tag: dir-or-file-in-mnt Severity: serious Certainty: certain Info: Packages should not install into /mnt. The FHS states that this directory is reserved for the local system administrator for temporary mounts and that it must not be used by installation programs. Ref: fhs mntmountpointforatemporarilymount Tag: dir-or-file-in-opt Severity: serious Certainty: certain Info: Debian packages should not install into /opt, because it is reserved for add-on software. Ref: fhs optaddonapplicationsoftwarepackages Tag: dir-or-file-in-etc-opt Severity: serious Certainty: certain Info: Debian packages should not install into /etc/opt, because it is reserved for add-on software. Ref: fhs optaddonapplicationsoftwarepackages Tag: dir-or-file-in-srv Severity: serious Certainty: certain Info: Debian packages should not install into /srv. The specification of /srv states that its structure is at the discretion of the local administrator and no package should rely on any particular structure. Debian packages that install files directly into /srv can't adjust for local policy about its structure and in essence force a particular structure. . If a package wishes to put its data in /srv, it must do this in a way that allows the local administrator to specify and preserve their chosen directory structure (such as through post-install configuration, setup scripts, debconf prompting, etc.). Ref: fhs srvdataforservicesprovidedbysystem Tag: third-party-package-in-python-dir Severity: normal Certainty: certain Info: Third-party Python packages should install their files in /usr/lib/pythonVERSION/site-packages for Python versions before 2.6 and /usr/lib/pythonVERSION/dist-packages for Python 2.6 and later. All other directories in /usr/lib/pythonVERSION are for use by the core python packages. Ref: python-policy 1.5 Tag: perl-module-in-core-directory Severity: important Certainty: certain Info: Packaged modules must not be installed into the core perl directories as those directories change with each upstream perl revision. The vendor directories are provided for this purpose. Ref: perl-policy 3.1 Tag: backup-file-in-package Severity: normal Certainty: certain Info: There is a file in the package whose name matches the format emacs or vim uses for backup and autosave files. It may have been installed by accident. Tag: nfs-temporary-file-in-package Severity: normal Certainty: certain Info: There is a file in the package whose name matches the format NFS uses to temporarily save files that were deleted while another process had them open. It may have been included in the package by accident while building the package in an NFS filesystem. Tag: windows-thumbnail-database-in-package Severity: normal Certainty: certain Info: There is a file in the package named Thumbs.db or Thumbs.db.gz, which is normally a Windows image thumbnail database. Such databases are generally useless in Debian packages and were usually accidentally included by copying complete directories from the source tarball. Tag: macos-ds-store-file-in-package Severity: normal Certainty: certain Info: There is a file in the package named .DS_Store or .DS_Store.gz, the file name used by Mac OS X to store folder attributes. Such files are generally useless in Debian packages and were usually accidentally included by copying complete directories from the source tarball. Tag: macos-resource-fork-file-in-package Severity: normal Certainty: certain Info: There is a file in the package with a name starting with ._, the file name pattern used by Mac OS X to store resource forks in non-native file systems. Such files are generally useless in Debian packages and were usually accidentally included by copying complete directories from the source tarball. Tag: package-installs-perllocal-pod Severity: normal Certainty: certain Info: This package installs a file perllocal.pod. Since that file is intended for local documentation, it is not likely that it is a good place for documentation supplied by a Debian package. In fact, installing this package will wipe out whatever local documentation existed there. Tag: extra-license-file Severity: normal Certainty: possible Ref: policy 12.5 Info: All license information should be collected in the debian/copyright file. This usually makes it unnecessary for the package to install this information in other places as well. Tag: non-standard-toplevel-dir Severity: important Certainty: certain Info: The Filesystem Hierarchy Standard forbids the installation of new files or directories in the root directory. Ref: fhs therootfilesystem Tag: non-multi-arch-lib-dir Severity: normal Certainty: certain Info: The following library use an old path (like /lib64 or /lib32) instead of using multi-arch path (like for instance /lib/x86_64-linux-gnu/ or /lib/i386-linux-gnu/). Ref: https://wiki.debian.org/Multiarch Tag: subdir-in-bin Severity: serious Certainty: certain Info: The Filesystem Hierarchy Standard forbids the installation of new directories in /bin. Ref: fhs binessentialusercommandbinaries Tag: subdir-in-usr-bin Severity: serious Certainty: certain Info: The Filesystem Hierarchy Standard forbids the installation of new directories in /usr/bin other than /usr/bin/mh. Ref: fhs usrbinmostusercommands Tag: non-standard-dir-in-usr Severity: normal Certainty: certain Info: The FHS says "No large software packages should use a direct subdirectory under the /usr hierarchy". This package contains a directory in /usr that is not mentioned in the Filesystem Hierarchy Standard. Ref: fhs theusrhierarchy Tag: non-standard-dir-in-var Severity: important Certainty: certain Info: The FHS says "Applications should generally not add directories to the top level of /var. Such directories should only be added if they have some system-wide implication, and in consultation with the FHS mailing list." Ref: fhs thevarhierarchy Tag: use-of-compat-symlink Severity: important Certainty: certain Info: This package uses a directory that, according to the Filesystem Hierarchy Standard, should exist only as a compatibility symlink. Packages should not traverse such symlinks when installing files, they should use the standard directories instead. Tag: file-in-unusual-dir Severity: normal Certainty: certain Info: This file or symbolic link is in a directory where files are not normally installed by Debian packages. Tag: package-installs-packlist Severity: important Certainty: certain Info: Packages built using the perl MakeMaker package will have a file named .packlist in them. Those files are useless, and (in some cases) have the additional problem of creating an architecture-specific directory name in an architecture-independent package. . They can be suppressed by adding the following to debian/rules: . find debian/pkg -type f -name .packlist -delete . or by telling MakeMaker to use vendor install dirs; consult a recent version of Perl policy. Perl 5.6.0-12 or higher supports this. Ref: perl-policy 4.1 Tag: zero-byte-file-in-doc-directory Severity: normal Certainty: possible Info: The documentation directory for this package contains an empty file. This is often due to installing an upstream NEWS or README file without realizing it's empty and hence not useful. . Files in the examples subdirectory are excluded from this check, but there are some cases where empty files are legitimate parts of the documentation without being examples. In those cases, please add an override. Tag: override-file-in-wrong-location Severity: important Certainty: certain Info: Lintian overrides should be put in a regular file named /usr/share/lintian/overrides/package, not in a subdirectory named for the package or in the obsolete location under /usr/share/doc. See the Lintian documentation for more information on proper naming and format. Ref: lintian 2.4 Tag: package-contains-upstream-install-documentation Severity: normal Certainty: possible Ref: policy 12.3 Info: Binary packages do not need to contain the instructions for building and installing the package as this info is not needed by package users. If the info contained is important for configuration perhaps it could be summarized in README.Debian, otherwise an override may be added. Tag: package-contains-hardlink Severity: normal Certainty: certain Info: The package contains a hardlink in /etc or across different directories. This might not work at all if directories are on different filesystems (which can happen anytime as the system administrator sees fit), certain filesystems such as AFS don't even support cross-directory hardlinks at all. . For configuration files, certain editors might break hardlinks, and so does dpkg in certain cases. . A better solution might be using symlinks here. Ref: policy 10.7.3 Tag: package-contains-bts-control-dir Severity: normal Certainty: certain Info: The package contains a control directory for a bug tracking system. It was most likely installed by accident, since bug tracking directories usually don't belong in packages. Tag: package-contains-vcs-control-dir Severity: normal Certainty: certain Info: The package contains a control directory for a version control system. It was most likely installed by accident, since version control directories usually don't belong in packages. Tag: package-contains-xvpics-dir Severity: important Certainty: certain Info: Package contains a .xvpics directory. It was most likely installed by accident, since thumbnails usually don't belong in packages. Tag: package-contains-vcs-control-file Severity: normal Certainty: certain Info: The package contains a VCS control file such as .(cvs|git|hg)ignore. Files such as these are used by revision control systems to, for example, specify untracked files it should ignore or inventory files. This file is generally useless in an installed package and was probably installed by accident. Tag: svn-commit-file-in-package Severity: normal Certainty: certain Info: The package contains an svn-commit(.NNN).tmp file. This file is almost certainly a left-over from a failed Subversion commit, and does not belong in a Debian package. Tag: svk-commit-file-in-package Severity: normal Certainty: certain Info: The package contains an svk-commitNNN.tmp file. This file is almost certainly a left-over from a failed Subversion commit, and does not belong in a Debian package. Tag: nested-examples-directory Severity: important Certainty: certain Info: Package contains a usr/share/doc/something/examples/examples directory. It was most likely installed by accident, since one examples/ directory should be enough for everybody(tm). Tag: package-installs-nonbinary-perl-in-usr-lib-perl5 Severity: normal Certainty: certain Info: Architecture-independent Perl code should be placed in /usr/share/perl5, not /usr/lib/perl5 unless there is at least one architecture-dependent file in the module. Ref: perl-policy 2.3 Tag: file-in-usr-lib-site-python Severity: important Certainty: certain Ref: python-policy 1.5 Info: The directory /usr/lib/site-python has been deprecated as a location for installing Python modules and may be dropped from Python's module search path in a future version. Most likely this module is a private module and should be packaged in a directory outside of Python's default search path. Tag: python-module-in-wrong-location Severity: normal Certainty: possible Ref: python-policy 1.5, #576012 Info: The package installs a Python module or debug information for a Python module in the wrong location for the given version of Python. . dh_python3 can be used to fix this for Python 3 modules. Tag: python-debug-in-wrong-location Severity: normal Certainty: possible Ref: #576014 Info: The package appears to be installing debug modules in /usr/lib/debug/usr/lib/pyshared/pythonX.Y/. However, gdb(1) will not look for it there, making it less useful. The file should be installed in /usr/lib/debug/usr/lib/pymodules/pythonX.Y/ instead. Tag: missing-dependency-on-python-support Severity: important Certainty: possible Info: The package installs a file in usr/share/python-support/ but does not declare the necessary dependency on python-support. . This can happen if ${python:Depends} was omitted from the Depends field in debian/control. Tag: package-installs-python-bytecode Severity: serious Certainty: certain Ref: python-policy 2.6 Info: Compiled python source files must not be included in the package. These files should be removed from the package and created at package installation time in the postinst. Tag: package-installs-python-egg Severity: serious Certainty: possible Ref: python-policy 2.6 Info: Python eggs should not be installed, since the Debian package is supposed to do the required steps for installing the Python code. . The egg may contain pre-compiled python bytecode or shared libraries. Tag: package-installs-python-pycache-dir Severity: serious Certainty: certain Ref: python-policy 2.6 Info: The package installs a __pycache__ directory, which is normally only used to store compiled python source files. Compiled python source files must not be included in the package, instead they should be generated at installation time in the postinst. . Note this tag is issues even if the directory is empty. Tag: bad-permissions-for-ali-file Severity: normal Certainty: certain Ref: policy 8.4 Info: Ada Library Information (*.ali) files are required to be read-only (mode 0444) by GNAT. . If at least one user can write the *.ali file, GNAT considers whether or not to recompile the corresponding source file. Such recompilation would fail because normal users don't have write permission on the files. Moreover, such recompilation would defeat the purpose of library packages, which provide *.a and *.so libraries to link against). Tag: package-contains-readme-for-other-platform-or-distro Severity: normal Certainty: certain Info: package contains a README.(platform) file that contains instructions specific to a platform or distribution other than Debian and thus can most likely be removed. If it contains information that pertains to Debian, please consider renaming it, or including it in an already existing README file. Tag: desktop-file-in-wrong-dir Severity: normal Certainty: certain Info: The package contains a .desktop file in an obsolete directory. According to the menu-spec draft on freedesktop.org, those .desktop files that are intended to create a menu should be placed in /usr/share/applications, not /usr/share/gnome/apps. Tag: script-with-language-extension Severity: normal Certainty: certain Info: When scripts are installed into a directory in the system PATH, the script name should not include an extension such as .sh or .pl that denotes the scripting language currently used to implement it. The implementation language may change; if it does, leaving the name the same would be confusing and changing it would be disruptive. Ref: policy 10.4 Tag: file-in-usr-lib-sgml Severity: normal Certainty: certain Ref: fhs theusrhierarchy Info: This package installs a file in /usr/lib/sgml. This was the old location for SGML catalogs and similar flies. All those files should now go into /usr/share/sgml. Tag: file-name-ends-in-whitespace Severity: normal Certainty: possible Info: This package installs a file or directory whose name ends in whitespace. This might be intentional but it's normally a mistake. If it is intentional, add a lintian override. . One possible cause is using debhelper 5.0.57 or earlier to install a doc-base file with a Document field that ends in whitespace. Tag: package-contains-empty-directory Severity: wishlist Certainty: possible Info: This package installs an empty directory. This might be intentional but it's normally a mistake. If it is intentional, add a lintian override. . If a package ships with or installs empty directories, you can remove them in debian/rules by calling: . $ find path/to/base/dir -type d -empty -delete Tag: package-section-games-but-contains-no-game Severity: important Certainty: certain Ref: policy 11.11 Info: This package is marked as part of the section games, but doesn't contain files in /usr/games. Binaries of games must be installed in /usr/games. Tag: package-section-games-but-has-usr-bin Severity: normal Certainty: possible Ref: policy 11.11 Info: This package is marked as part of the section games, but contains executables in /bin or /usr/bin/. This can be intentional, but is usually a mistake. Tag: games-package-should-be-section-games Severity: normal Certainty: possible Info: All the executables in this package are in /usr/games, but the package is not in section games. This can be intentional but is usually a mistake. Tag: package-contains-devhelp-file-without-symlink Severity: normal Certainty: certain Info: This package contains a *.devhelp or *.devhelp2 file which is not in the devhelp search path (/usr/share/devhelp/books and /usr/share/gtk-doc/html) and is apparently not in a directory linked into the devhelp search path. This will prevent devhelp from finding the documentation. . If the devhelp documentation is installed in a path outside the devhelp search path (such as /usr/share/doc), create a symlink in /usr/share/gtk-doc/html pointing to the documentation directory. Tag: debug-package-should-be-named-dbg Severity: normal Certainty: certain Info: This package provides at least one file in /usr/lib/debug, which is intended for detached debugging symbols, but the package name does not end in "-dbg". Detached debugging symbols should be put into a separate package, Priority: extra, with a package name ending in "-dbg". Ref: devref 6.7.9 Tag: package-contains-linda-override Severity: normal Certainty: certain Info: This package contains a linda override file in /usr/share/linda/overrides. Linda is obsolete and has been removed from the archive as of 2008-03-04. Linda overrides should probably be dropped from packages. Tag: wrong-file-owner-uid-or-gid Severity: serious Certainty: certain Info: The user or group ID of the owner of the file is invalid. The owner user and group IDs must be in the set of globally allocated IDs, because other IDs are dynamically allocated and might be used for varying purposes on different systems, or are reserved. The set of the allowed, globally allocated IDs consists of the ranges 0-99, 64000-64999 and 65534. . It's possible for a Policy-compliant package to trigger this tag if the user is created in the preinst maintainer script, but this is a very rare case and doesn't appear to be necessary. If you found yourself needing to create a package that works this way, please file a bug against Lintian to let the maintainers know. Ref: policy 9.2 Tag: embedded-javascript-library Severity: normal Certainty: possible Info: This package contains an embedded copy of JavaScript libraries that are now available in their own packages (for example, JQuery, Prototype, Mochikit or "Cropper"). Please depend on the appropriate package and symlink the library into the appropriate location. Ref: policy 4.13 Tag: privacy-breach-generic Severity: important Certainty: wild-guess Experimental: yes Info: This package creates a potential privacy breach by fetching data from an external website at runtime. Please remove these scripts or external HTML resources. . Please replace any scripts, images, or other remote resources with non-remote resources. It is preferable to replace them with text and links but local copies of the remote resources are also acceptable as long as they don't also make calls to remote services. Please ensure that the remote resources are suitable for Debian main before making local copies of them. Tag: privacy-breach-google-adsense Severity: serious Certainty: possible Info: This package creates a privacy breach by using Google AdSense. Google AdSense is a service run by Google that allows publishers of websites to automatically serve advertisements. Unfortunately, it requires tracking and breaching the privacy of web users. . This tag can also indicate the use of the related obsolete privacy breaching software, Urchin WebAnalytics. . Note that using Google AdSense in a local copy of a page is a violation of the Google AdSense terms of use. This violation renders this package not distributable in Debian, and is thus a serious bug. . Please replace any scripts, images or other remote resources with non-remote resources. It is preferrable to replace them with text and links but local copies of the remote resources are also acceptable as long as they don't also make calls to remote services. Please ensure that the remote resources are suitable for Debian main before making local copies of them. Tag: privacy-breach-donation Severity: serious Certainty: possible Ref: https://wiki.debian.org/UpstreamMetadata Info: This package create a potential privacy breach by fetching data from a donation website at runtime. . Please remove this privacy problem and add a note to the debian/upstream/metadata file using the donation field. . Please replace any scripts, images, or other remote resources with non-remote resources. It is preferable to replace them with text and links but local copies of the remote resources are also acceptable as long as they don't also make calls to remote services. Please ensure that the remote resources are suitable for Debian main before making local copies of them. Tag: privacy-breach-logo Severity: serious Certainty: possible Info: This package creates a potential privacy breach by fetching a logo at runtime. . Before using a local copy you should check that the logo is suitable for main. Ask debian-legal for advice. . Please replace any scripts, images, or other remote resources with non-remote resources. It is preferable to replace them with text and links but local copies of the remote resources are also acceptable as long as they don't also make calls to remote services. Please ensure that the remote resources are suitable for Debian main before making local copies of them. Tag: privacy-breach-facebook Severity: serious Certainty: possible Info: This package creates a privacy breach by exchanging data with Facebook at runtime via plugins such as "Share" or "Like" buttons. . Please replace any scripts, images, or other remote resources with non-remote resources. It is preferable to replace them with text and links but local copies of the remote resources are also acceptable as long as they don't also make calls to remote services. Please ensure that the remote resources are suitable for Debian main before making local copies of them. Tag: privacy-breach-google-plus Severity: serious Certainty: possible Info: This package creates a potential privacy breach by exchanging data with Google+ at runtime via plugins such as "+1" buttons. . Please replace any scripts, images, or other remote resources with non-remote resources. It is preferable to replace them with text and links but local copies of the remote resources are also acceptable as long as they don't also make calls to remote services. Please ensure that the remote resources are suitable for Debian main before making local copies of them. Tag: privacy-breach-google-cse Severity: serious Certainty: possible Info: This package creates a potential privacy breach by fetching data from Google at runtime, and may feed private data to Google via Custom Search Engine queries. . Please replace any scripts, images, or other remote resources with non-remote resources. It is preferable to replace them with text and links but local copies of the remote resources are also acceptable as long as they don't also make calls to remote services. Please ensure that the remote resources are suitable for Debian main before making local copies of them. Tag: privacy-breach-twitter Severity: serious Certainty: possible Info: This package creates a potential privacy breach by exchanging data with Twitter at runtime via plugins. . Please replace any scripts, images, or other remote resources with non-remote resources. It is preferable to replace them with text and links but local copies of the remote resources are also acceptable as long as they don't also make calls to remote services. Please ensure that the remote resources are suitable for Debian main before making local copies of them. Tag: privacy-breach-piwik Severity: serious Certainty: possible Info: This package creates a privacy breach by using an online Piwik module. . Piwik is a free and open source web analytics application, designed to allow publishers of websites to track visitors. . Even though Piwik is free and respects the "Do Not Track" browser option, it is nevertheless breaches the privacy of local users by fetching data from internet. . Please replace any scripts, images, or other remote resources with non-remote resources. It is preferable to replace them with text and links but local copies of the remote resources are also acceptable as long as they don't also make calls to remote services. Please ensure that the remote resources are suitable for Debian main before making local copies of them. Tag: privacy-breach-statistics-website Severity: serious Certainty: possible Info: This package creates a privacy breach by fetching data from an external website in order to compile visitor statistics. . Please ask upstream to use the free software web analytics engine Piwik, which respects the "Do Not Track" browser option. . This tag covers the following websites: * cruel-carlota.pagodabox.com * linkexchange.com (defunct) * nedstatbasic.net * onestat.com * statcounter.com * sitemeter.com * webstats.motigo.com . Please replace any scripts, images, or other remote resources with non-remote resources. It is preferable to replace them with text and links but local copies of the remote resources are also acceptable as long as they don't also make calls to remote services. Please ensure that the remote resources are suitable for Debian main before making local copies of them. Tag: privacy-breach-w3c-valid-html Severity: serious Certainty: possible Ref: http://validator.w3.org/docs/help.html#icon, http://www.w3.org/Consortium/Legal/logo-usage-20000308 Info: This package creates a potential privacy breach by fetching W3C validation icons. . These badges may be displayed to tell readers that care has been taken to make a page compliant with W3C standards. Unfortunately, downloading the image from www.w3.org might expose the reader's IP address to potential tracking. . Note that these icons are non-free and must not be copied into the package. You could safely delete this W3C validation badge. Tag: embedded-feedparser-library Severity: normal Certainty: certain Info: This package contains an embedded copy of Mark Pilgrim's Universal Feed Parser. Please depend on the "python-feedparser" package and use the normal Python import mechanism to load it. Ref: policy 4.13 Tag: embedded-pear-module Severity: normal Certainty: possible Experimental: yes Info: This package appears to contain an embedded copy of a PEAR module. Please depend on the respective PEAR package providing the module and make sure the library can be found by the scripts via the include_path. Ref: policy 4.13 Tag: embedded-php-library Severity: normal Certainty: possible Info: This package appears to contain an embedded copy of a PHP library. Please depend on the respective package providing the library and make sure it can be found by the scripts via the include_path. Ref: policy 4.13 Tag: windows-devel-file-in-package Severity: normal Certainty: possible Info: This package appears to contain development files only meaningful to Windows environments. Such files are generally useless in Debian packages and were usually accidentally included by copying complete directories from the source tarball. Tag: font-in-non-font-package Severity: wishlist Certainty: possible Info: This package contains a *.ttf, *.otf, or *.pfb file, file extensions used by TrueType, OpenType, or Type 1 fonts, but the package does not appear to be a dedicated font package. Dedicated font package names should begin with fonts-. (Type 1 fonts are also allowed in packages starting with xfonts-.) If the font is already packaged, you should depend on that package instead. Otherwise, normally the font should be packaged separately, since fonts are usually useful outside of the package that embeds them. Tag: license-problem-font-adobe-copyrighted-fragment Severity: serious Certainty: possible Info: This type 1 font file includes some postscript fragment with a non free license of Adobe. In order to check if this tag is genuine please follow the procedure described in the reference. . Should this be a false-positive, please override the tag. Ref: http://wiki.debian.org/qa.debian.org/type1nondfsg Tag: license-problem-font-adobe-copyrighted-fragment-no-credit Severity: serious Certainty: possible Info: This type 1 font file includes some postscript fragment with a non free license of Adobe. In order to check if this tag is genuine please follow the procedure described in the reference. . Moreover the fragment was likely verbatim copied from black book without any credit to Adobe. . Should this be a false-positive, please override the tag. Ref: http://wiki.debian.org/qa.debian.org/type1nondfsg Tag: duplicate-font-file Severity: normal Certainty: possible Info: This package appears to include a font file that is already provided by another package in Debian. Ideally it should instead depend on the relevant font package. If the application in this package loads the font file by name, you may need to include a symlink pointing to the file name of the font in its Debian package. . Sometimes the font package containing the font is huge and you only need one font. In that case, you have a few options: modify the package (in conjunction with upstream) to use libfontconfig to find the font that you prefer but fall back on whatever installed font is available, ask that the font package be split apart into packages of a more reasonable size, or add an override and be aware of the duplication when new versions of the font are released. Tag: icon-size-and-directory-name-mismatch Severity: normal Certainty: certain Info: The icon has a size that differs from the size specified by the name of the directory under which it was installed. The icon was probably mistakenly installed into the wrong directory. Tag: raster-image-in-scalable-directory Severity: normal Certainty: certain Info: The given raster image was installed into a "scalable" icon directory. Only vector graphics (e.g. SVG) should be installed into those directories. Tag: gz-file-not-gzip Severity: normal Certainty: possible Info: The given file ends with .gz, which normally indicates it is compressed with gzip. However, it doesn't seem to be a gzip-compressed file. gzip will fail with an error on such files. Normally this indicates a mistake in the installation process of the package. Tag: non-free-flash Severity: serious Certainty: possible Info: The given Flash file has a filename which suggests that it may be one of a number of known Flash files with non-free content. Tag: non-conf-file-in-modprobe.d Severity: important Certainty: certain Ref: http://lists.debian.org/debian-devel/2009/03/msg00119.html Info: Files in /etc/modprobe.d should use filenames ending in .conf. modprobe silently ignores all files which do not match this convention. . If the file is an example containing only comments, consider installing it in another location as files in /etc/modprobe.d are read each time modprobe is run (which is often at boot time). Tag: file-in-discouraged-x11-font-directory Severity: minor Certainty: certain Ref: policy 11.8.5 Info: For historical reasons, use of PEX, CID, Speedo, and cyrillic subdirectories of /usr/share/fonts/X11 are permitted, but installation of files into these directories is discouraged. Support for the first three font types is deprecated or no longer available, and Cyrillic fonts should use the normal font directories where possible. Tag: file-in-unknown-x11-font-directory Severity: serious Certainty: certain Ref: policy 11.8.5 Info: Subdirectories of /usr/share/fonts/X11 other than 100dpi, 75dpi, misc, Type1, and some historic exceptions must be neither created nor used. (The directories encodings and util, used by some X Window System packages, are also permitted by Lintian.) Tag: package-contains-multiple-dpi-fonts Severity: normal Certainty: certain Ref: policy 11.8.5 Info: This package contains both 100dpi and 75dpi bitmapped fonts. Both versions should not be included in a single package. If both resolutions are available, they should be provided in separate binary packages with -75dpi or -100dpi appended to the package name for the corresponding fonts. Tag: package-mixes-misc-and-dpi-fonts Severity: normal Certainty: certain Ref: policy 11.8.5 Info: This package contains both bitmapped fonts for a specific DPI (100dpi or 75dpi) and misc bitmapped fonts. These should not be combined in the same package. Instead, the misc bitmapped fonts should be provided in a separate package with -misc appended to its name. Tag: package-contains-info-dir-file Severity: serious Certainty: certain Info: This package contains a file named dir or dir.old, possibly compressed, in /usr/share/info. This is the directory (or backup) of info pages and is generated automatically by install-info when a package containing info documentation is installed. Some upstream build systems create it automatically, but it must not be included in a package since it needs to be generated dynamically based on the installed info files on the system. Tag: package-contains-mime-cache-file Severity: serious Certainty: certain Info: This package contains a cache file generated automatically by update-mime-database when a package containing MIME-Info Database files is installed. Some upstream build systems create them automatically, but they must not be included in a package since they need to be generated dynamically based on the installed MIME-Info Database files on the system. Tag: package-contains-mimeinfo.cache-file Severity: serious Certainty: certain Info: This package contains a file named mimeinfo.cache, possibly compressed, in /usr/share/applications. This file is generated automatically by update-desktop-database when a package containing .desktop files associated to MIME types is installed. Some upstream build systems create it automatically, but it must not be included in a package since it needs to be generated dynamically based on the installed .desktop files on the system. Tag: package-modifies-ld.so-search-path Severity: important Certainty: possible Ref: policy 10.2 Info: This package installs a file in /etc/ld.so.conf.d, presumably to modify the search path of the run-time linker, and does not appear to be part of libc. . Packages containing shared libraries should either install them into /usr/lib or should require binaries built against them to set RPATH to find the library at run-time. Installing libraries in a different directory and modifying the run-time linker path is equivalent to installing them into /usr/lib except now conflicting library packages may cause random segfaults and difficult-to-debug problems instead of conflicts in the package manager. Tag: global-data-in-games-directory Severity: important Certainty: certain Info: This package contains files under /usr/share/games, such as desktop files, icons, pixmaps, or MIME type entries, that are global system data. The user's desktop environment will only check in the directories directly under /usr/share and this information should be put in the global directory even if it is for games. . The most common cause of this problem is using a --datadir=/usr/share/games argument to configure or an equivalent and using the upstream installation rules. These files need to be moved into the corresponding directories directly under /usr/share. Tag: duplicated-compressed-file Severity: minor Certainty: possible Info: The given, apparently compressed, file is shipped in the package in addition to another file with the same name without the compression-method extension. Normally this indicates a mistake in the installation process of the package. Tag: udev-rule-in-etc Severity: important Certainty: certain Ref: #559208 Info: This package ships a udev rule and installs it under /etc/udev/rules.d, which is reserved for user-installed files. The correct directory for system rules is /lib/udev/rules.d. Tag: obsolete-comments-style-in-php-ini Severity: normal Certainty: certain Info: This package ships a .ini file used to configure php but it has comments using the old-style comment separator #. Instead, the ; separator should be used. . Since version 5.3, the PHP interpreter warns about the use of the old style of comment separator. Tag: triplet-dir-and-architecture-mismatch Severity: serious Certainty: possible Ref: policy 9.1.1 Info: This package contains a directory under /lib or /usr/lib which doesn't match the proper triplet for the binary package's architecture. This is very likely to be a mistake when indicating the underlying build system where the files should be installed. Tag: empty-binary-package Severity: important Certainty: wild-guess Info: This binary package appears to be empty, and its description does not say that it's a metapackage or a transitional package. This is often due to problems with updating debhelper *.install files during package renames or similar problems where installation rules don't put files in the correct place. . If the package is deliberately empty, please mention in the package long description one of the phrases "metapackage", "dummy", "dependency package", or "empty package". Tag: empty-udeb-package Severity: minor Certainty: wild-guess Experimental: yes Info: This udeb package appears to be empty, and its description does not say that it's a metapackage or an package. This is often due to problems with updating debhelper *.install files during package renames or similar problems where installation rules don't put files in the correct place. . If the package is deliberately empty, you can avoid this tag by using one of the following phrases "metapackage", "dummy", "dependency package", or "empty package" in the long description of the udeb. Tag: star-file Severity: important Certainty: possible Info: The given file is literally installed as * (star symbol). Normally this indicates a mistake in the installation process of the package either when creating symlinks or renaming files. Tag: incorrect-locale-code Severity: normal Certainty: possible Info: The package appears to ship locales for a language but uses an incorrect locale code as a subdirectory of /usr/share/locale. This usually results in users of the intended target language not finding the locale. The language codes used in the locale directories are those from the ISO 639-1 and ISO 639-2 standards, not those usually used as TLDs (which are from the ISO 3166 standard). . Lintian only knows about some commonly-mistaken set of incorrect locale codes. Tag: unknown-locale-code Severity: normal Certainty: certain Ref: http://www.loc.gov/standards/iso639-2/php/code_list.php Info: The package appears to ship locales for a language but uses an unknown locale code as a subdirectory of /usr/share/locale. This usually results in users of the intended target language not finding the locale. The language codes used in the locale directories are those from the ISO 639-1 and ISO 639-2 standards, not those usually used as TLDs (which are from the ISO 3166 standard). . It is possible that the language code was mistyped or incorrectly guessed from the language's or country's name. Tag: compressed-objects.inv Severity: normal Certainty: possible Info: The package appears to ship a gzip compressed objects.inv file in it's documentation. Unfortunately some tools do not cope with this file being compressed. . This file should be excluded from compression during build time. If using debhelper (<< 8.1.0), you may need to use the -X option to dh_compress. Newer versions of debhelper handle this correctly by default. Tag: package-contains-no-arch-dependent-files Severity: minor Certainty: possible Experimental: yes Info: The package is not marked architecture all, but all the files it ships are installed in /usr/share. . Most likely this package should be marked architecture all, but there is a chance that the package is missing files. Ref: policy 5.6.8 Tag: vim-addon-within-vim-runtime-path Severity: normal Certainty: certain Info: Vim addons should not be installed directly under a directory contained in the Vim runtime path. Users shall be given the freedom to choose which addons they want to have enabled and which they don't. Ref: vim-policy 3.1 Tag: perl-module-uses-perl4-libs-without-dep Severity: normal Certainty: possible Info: This package includes perl modules using obsoleted perl 4-era libraries. These libraries have been deprecated in perl in 5.14, and are likely to be removed from the core in perl 5.16. Please either remove references to these libraries, or add a dependency on libperl4-corelibs-perl | perl (<< 5.12.3-7) to this package. Tag: gzip-file-is-not-multi-arch-same-safe Severity: important Certainty: certain Info: The gzip file contains a timestamp that will differ between architectures. Multi-Arch: same implies all shared files must be byte-for-byte identical. . This can usually be fixed by passing -n to gzip. Tag: pkg-config-multi-arch-wrong-dir Severity: important Certainty: possible Info: The arch all pkg-config file contains a reference to a multi-arch path. . This can be usually be fixed by moving this file to a multi-arch path. . Another likely cause is using debhelper 9 or newer (thus enabling multi-arch paths by default) on a package without multi-arch support. The usual cure in this case is to update it for multi-arch. Tag: dir-or-file-in-home Severity: serious Certainty: certain Info: Debian packages should not install into /home, because it is reserved for users. Tag: dir-or-file-in-build-tree Severity: serious Certainty: possible Info: Your package install file in our build tree. Tag: file-name-is-not-valid-UTF-8 Severity: serious Certainty: certain Ref: policy 10.10 Info: The file name does not appear to be valid UTF-8. . Note that Lintian may be unable to display the filename accurately. Unprintable characters may have been replaced. Tag: file-name-in-PATH-is-not-ASCII Severity: serious Certainty: certain Ref: policy 10.10 Info: The given file is in PATH but consists of non-ASCII characters. . Note that Lintian may be unable to display the filename accurately. Unprintable characters may have been replaced. lintian-2.5.22ubuntu1/checks/manpages.pm0000664000000000000000000004170212313507507015054 0ustar # manpages -- lintian check script -*- perl -*- # Copyright (C) 1998 Christian Schwarz # # 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::manpages; use strict; use warnings; use autodie; use constant LINTIAN_COVERAGE => ($ENV{'LINTIAN_COVERAGE'}//0); use File::Basename; use List::MoreUtils qw(any none); use Text::ParseWords (); use Lintian::Check qw(check_spelling); use Lintian::Tags qw(tag); use Lintian::Util qw(clean_env drain_pipe fail open_gz); sub run { my ($pkg, undef, $info, $proc, $group) = @_; my $ginfo = $group->info; my (%binary, %link, %manpage); # Read package contents... foreach my $file ($info->sorted_index) { my $file_info = $info->file_info($file); my $link = $file->link || ''; my ($fname, $path, $suffix) = fileparse($file); # Binary that wants a manual page? # # It's tempting to check the section of the man page depending on the # location of the binary, but there are too many mismatches between # bin/sbin and 1/8 that it's not clear it's the right thing to do. if ( ($file->is_symlink or $file->is_file) and ( ($path eq 'bin/') or ($path eq 'sbin/') or ($path eq 'usr/bin/') or ($path eq 'usr/bin/X11/') or ($path eq 'usr/bin/mh/') or ($path eq 'usr/sbin/') or ($path eq 'usr/games/') or ($path eq 'usr/X11R6/bin/')) ) { my $bin = $fname; $binary{$bin} = $file; $link{$bin} = $link if $link; next; } if (($path =~ m,usr/(share|X11R6)/man/$,) and ($fname ne '')) { tag 'manpage-in-wrong-directory', $file; next; } # manual page? next unless ($file->is_symlink or $file->is_file) and (($path =~ m,^usr/man(/\S+),o) or ($path =~ m,^usr/X11R6/man(/\S+),o) or ($path =~ m,^usr/share/man(/\S+),o)); my $t = $1; if ($file =~ m/_build_buildd/ or $file =~ /_tmp_buildd/) { tag 'manpage-named-after-build-path', $file; } if (not $t =~ m,^.*man(\d)/$,o) { tag 'manpage-in-wrong-directory', $file; next; } my $section = $1; my $lang = ''; $lang = $1 if $t =~ m,^/([^/]+)/man\d/$,o; # The country should not be part of the man page locale # directory unless it's one of the known cases where the # language is significantly different between countries. if ($lang =~ /_/ && $lang !~ /^(?:pt_BR|zh_[A-Z][A-Z])$/) { tag 'manpage-locale-dir-country-specific', $file; } my @pieces = split(/\./, $fname); my $ext = pop @pieces; if ($ext ne 'gz') { push @pieces, $ext; tag 'manpage-not-compressed', $file; } elsif ($file->is_file) { # so it's .gz... files first; links later if ($file_info !~ m/gzip compressed data/o) { tag 'manpage-not-compressed-with-gzip', $file; } elsif ($file_info !~ m/max compression/o) { tag 'manpage-not-compressed-with-max-compression', $file; } } my $fn_section = pop @pieces; my $section_num = $fn_section; if (scalar @pieces && $section_num =~ s/^(\d).*$/$1/) { my $bin = join('.', @pieces); $manpage{$bin} = [] unless $manpage{$bin}; push @{$manpage{$bin}}, { file => $file, lang => $lang }; # number of directory and manpage extension equal? if ($section_num != $section) { tag 'manpage-in-wrong-directory', $file; } } else { tag 'manpage-has-wrong-extension', $file; } # check symbolic links to other manual pages if ($file->is_symlink) { if ($link =~ m,(^|/)undocumented,o) { if ($path =~ m,^usr/share/man,o) { # undocumented link in /usr/share/man -- possibilities # undocumented... (if in the appropriate section) # ../man?/undocumented... # ../../man/man?/undocumented... # ../../../share/man/man?/undocumented... # ../../../../usr/share/man/man?/undocumented... if (( #<<< no perl tidy for now $link =~ m,^undocumented\.([237])\.gz,o and $path =~ m,^usr/share/man/man$1,) or $link =~ m,^\.\./man[237]/undocumented\.[237]\.gz$,o or $link =~ m,^\.\./\.\./man/man[237]/undocumented\.[237]\.gz$,o or $link =~ m,^\.\./\.\./\.\./share/man/man[237]/undocumented\.[237]\.gz$,o or $link =~ m,^\.\./\.\./\.\./\.\./usr/share/man/man[237]/undocumented\.[237]\.gz$,o #>>> ) { tag 'link-to-undocumented-manpage', $file; } else { tag 'bad-link-to-undocumented-manpage', $file; } } else { # undocumented link in /usr/X11R6/man -- possibilities: # ../../../share/man/man?/undocumented... # ../../../../usr/share/man/man?/undocumented... if ( #<<< no perl tidy for now $link =~ m,^\.\./\.\./\.\./share/man/man[237]/undocumented\.[237]\.gz$,o or $link =~ m,^\.\./\.\./\.\./\.\./usr/share/man/man[237]/undocumented\.[237]\.gz$,o #>>> ) { tag 'link-to-undocumented-manpage', $file; } else { tag 'bad-link-to-undocumented-manpage', $file; } } } } else { # not a symlink my $path = $info->unpacked($file); my $fd; if ($file_info =~ m/gzip compressed/) { $fd = open_gz($path); } else { open($fd, '<', $path); } my @manfile = <$fd>; close $fd; # Is it a .so link? if ($file->size < 256) { my ($i, $first) = (0, ''); do { $first = $manfile[$i++] || ''; } while ($first =~ /^\.\\"/ && $manfile[$i]); #"); unless ($first) { tag 'empty-manual-page', $file; next; } elsif ($first =~ /^\.so\s+(.+)?$/) { my $dest = $1; if ($dest =~ m,^([^/]+)/(.+)$,) { my ($manxorlang, $rest) = ($1, $2); if ($manxorlang !~ /^man\d+$/) { # then it's likely a language subdir, so let's run # the other component through the same check if ($rest =~ m,^([^/]+)/(.+)$,) { my ($lang, $rest) = ($1, $2); if ($rest !~ m,^[^/]+\.\d(?:\S+)?(?:\.gz)?$,) { tag 'bad-so-link-within-manual-page',$file; } } else { tag 'bad-so-link-within-manual-page', $file; } } } else { tag 'bad-so-link-within-manual-page', $file; } next; } } # If it's not a .so link, use lexgrog to find out if the # man page parses correctly and make sure the short # description is reasonable. # # This check is currently not applied to pages in # language-specific hierarchies, because those pages are # not currently scanned by mandb (bug #29448), and because # lexgrog can't handle pages in all languages at the # moment, leading to huge numbers of false negatives. When # man-db is fixed, this limitation should be removed. if ($path =~ m,/man/man\d/,) { my $pid = open(my $lexgrog_fd, '-|'); if ($pid == 0) { clean_env; open(STDERR, '>&', \*STDOUT); exec 'lexgrog', $path or fail "exec lexgrog failed: $!"; } my $desc = <$lexgrog_fd>; $desc =~ s/^[^:]+: \"(.*)\"$/$1/; if ($desc =~ /(\S+)\s+-\s+manual page for \1/i) { tag 'manpage-has-useless-whatis-entry', $file; } elsif ($desc =~ /\S+\s+-\s+programs? to do something/i) { tag 'manpage-is-dh_make-template', $file; } drain_pipe($lexgrog_fd); eval {close($lexgrog_fd);}; if (my $err = $@) { # Problem closing the pipe? fail "close pipe: $err" if $err->errno; # No, then lexgrog returned with a non-zero exit code. tag 'manpage-has-bad-whatis-entry', $file; } } # If it's not a .so link, run it through 'man' to check for errors. # If it is in a directory with the standard man layout, cd to the # parent directory before running man so that .so directives are # processed properly. (Yes, there are man pages that include other # pages with .so but aren't simple links; rbash, for instance.) my @cmd = qw(man --warnings -E UTF-8 -l -Tutf8 -Z); my $dir; if ($path =~ m,^(.*)/(man\d/.*)$,) { $dir = $1; push @cmd, $2; } else { push @cmd, $path; } my ($read, $write); pipe($read, $write); my $pid = fork(); if ($pid == 0) { clean_env; close STDOUT; close $read; open(STDOUT, '>', '/dev/null'); open(STDERR, '>&', $write); if ($dir) { chdir($dir); } $ENV{MANROFFSEQ} = ''; $ENV{MANWIDTH} = 80; exec { $cmd[0] } @cmd or fail("cannot run man -E UTF-8 -l: $!"); } else { # parent - close write end close $write; } while (<$read>) { # Devel::Cover causes some annoying deep recursion # warnings and sometimes in our child process. # Filter them out, but only during coverage. next if LINTIAN_COVERAGE and m{ \A Deep [ ] recursion [ ] on [ ] subroutine [ ] "[^"]+" [ ] at [ ] .*B/Deparse.pm [ ] line [ ] \d+}xsm; # ignore progress information from man next if /^Reformatting/; next if /^\s*$/; # ignore errors from gzip, will be dealt with at other places next if /^(?:man|gzip)/; # ignore wrapping failures for Asian man pages (groff problem) if ($lang =~ /^(?:ja|ko|zh)/) { next if /warning \[.*\]: cannot adjust line/; next if /warning \[.*\]: can\'t break line/; } # ignore wrapping failures if they contain URLs (.UE is an # extension for marking the end of a URL). next if /:(\d+): warning \[.*\]: (?:can\'t break|cannot adjust) line/ and ($manfile[$1 - 1] =~ m,(?:https?|ftp|file)://.+,i or $manfile[$1 - 1] =~ m,^\s*\.\s*UE\b,); # ignore common undefined macros from pod2man << Perl 5.10 next if /warning: (?:macro )?\`(?:Tr|IX)\' not defined/; chomp; s/^[^:]+://o; tag 'manpage-has-errors-from-man', $file, $_; last; } close $read; # reap man process waitpid $pid, 0; # Now we search through the whole man page for some common errors my $lc = 0; my $hc = 0; my $draft_mode = 0; foreach my $line (@manfile) { $lc++; chomp $line; next if $line =~ /^\.\\\"/o; # comments .\" if ($line =~ /^\.TH\s/) { # header my ($th_command, $th_title, $th_section, $th_date) = Text::ParseWords::parse_line('\s+', 0, $line); if ($th_section && (lc($fn_section) ne lc($th_section))) { tag 'manpage-section-mismatch', "$file:$lc $fn_section != $th_section"; } } # Catch hyphens used as minus signs by looking for # ones at the beginning of a word, but don't generate # false positives on \s-1 (small font), \*(-- (pod2man # long dash), or things like \h'-1'. Ignoring hyphens # contained in draft mode (.eo). Do catch hyphens # after \f[C], a groff font change. $draft_mode = 1 if $line =~ /^\.\s*eo/; $draft_mode = 0 if $line =~ /^\.\s*ec/; if ( not $draft_mode and $line =~ /^( ([^\.].*)? [\s\'\"\`\(\[\]] (?spelling_exceptions) if ($path =~ m,/man/man\d/,); } tag 'hyphen-used-as-minus-sign', $file, ($hc - 10), 'more occurrences not shown' if ($hc > 10 && !$ENV{'LINTIAN_DEBUG'}); } } # Check our dependencies: foreach my $depproc (@{ $ginfo->direct_dependencies($proc) }) { # Find the manpages in our related dependencies my $depinfo = $depproc->info(); foreach my $file ($depinfo->sorted_index){ my ($fname, $path, $suffix) = fileparse($file, qr,\..+$,o); my $lang = ''; next unless ($file->is_file or $file->is_symlink) and (($path =~ m,^usr/man/\S+,o) or ($path =~ m,^usr/X11R6/man/\S+,o) or ($path =~ m,^usr/share/man/\S+,o)); next unless ($path =~ m,man\d/$,o); $manpage{$fname} = [] unless exists $manpage{$fname}; $lang = $1 if $path =~ m,/([^/]+)/man\d/$,o; $lang = '' if $lang eq 'man'; push @{$manpage{$fname}}, {file => $file, lang => $lang}; } } for my $f (sort keys %binary) { if (exists $manpage{$f}) { if (none { $_->{lang} eq '' } @{$manpage{$f}}) { tag 'binary-without-english-manpage', "$binary{$f}"; } } else { tag 'binary-without-manpage', "$binary{$f}"; } } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/debian-source-dir.pm0000664000000000000000000000605112311317603016545 0ustar # debian/source directory content -- lintian check script -*- perl -*- # Copyright (C) 2010 by Raphaël Hertzog # # 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::debian_source_dir; use strict; use warnings; use autodie; use List::MoreUtils qw(any); use Lintian::Data; use Lintian::Tags qw(tag); our %KNOWN_FORMATS = map { $_ => 1 } ('1.0', '2.0', '3.0 (quilt)', '3.0 (native)', '3.0 (git)', '3.0 (bzr)'); our $KNOWN_FILES = Lintian::Data->new('debian-source-dir/known-files'); sub run { my (undef, undef, $info) = @_; my $dsrc = $info->debfiles('source'); if (!-l "$dsrc/format" && -e "$dsrc/format") { open(my $fd, '<', "$dsrc/format"); my $format = <$fd>; chomp $format; close($fd); tag 'unknown-source-format', $format unless $KNOWN_FORMATS{$format}; } else { tag 'missing-debian-source-format'; } if (!-l "$dsrc/git-patches" && -s "$dsrc/git-patches") { open(my $git_patches_fd, '<', "$dsrc/git-patches"); if (any { !/^\s*+#|^\s*+$/o} <$git_patches_fd>) { my $dpseries = $info->debfiles('patches/series'); # gitpkg does not create series as a link, so this is most likely # a traversal attempt. if (!-l $dpseries) { if (!-r $dpseries) { tag 'git-patches-not-exported'; } else { open(my $series_fd, '<', $dpseries); my $comment_line = <$series_fd>; my $count = grep { !/^\s*+\#|^\s*+$/o } <$series_fd>; tag 'git-patches-not-exported' unless ( $count && ($comment_line =~ m/^\s*\#.*quilt-patches-deb-export-hook/o)); close($series_fd); } } } close($git_patches_fd); } if (!-l $dsrc && -d $dsrc) { opendir(my $dirfd, $dsrc); while (my $file = readdir($dirfd)) { next if $file eq '.' or $file eq '..'; tag 'unknown-file-in-debian-source', $file unless $KNOWN_FILES->known($file); } closedir($dirfd); } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/binaries.desc0000664000000000000000000003746512310413144015360 0ustar Check-Script: binaries Author: Christian Schwarz Abbrev: bin Type: binary, udeb Needs-Info: hardening-info, objdump-info, file-info, strings, index Info: This script checks binaries and object files for bugs. Tag: arch-independent-package-contains-binary-or-object Severity: serious Certainty: possible Info: The package contains a binary or object file but is tagged Architecture: all. . If this package contains binaries or objects for cross-compiling or binary blobs for other purposes independent of the host architecture (such as BIOS updates or firmware), please add a Lintian override. Tag: unstripped-binary-or-object Severity: important Certainty: certain Ref: policy 10.1, policy 10.2 Info: The package installs an unstripped binary or object file. . Please note, that shared libraries have to be stripped with the --strip-unneeded option. Tag: library-in-debug-or-profile-should-not-be-stripped Severity: serious Certainty: certain Info: Libraries in .../lib/debug or in .../lib/profile must not be stripped; this defeats the whole point of the separate library. Tag: statically-linked-binary Severity: important Certainty: possible Info: The package installs a statically linked binary or object file. . Usually this is a bug. Otherwise, please add an override if your package is an exception. Binaries named *-static and *.static are automatically excluded, as are any binaries in packages named *-static. Tag: library-not-linked-against-libc Severity: important Certainty: possible Ref: policy 10.2, #698720 Info: The package installs a library which is not dynamically linked against libc. . It is theoretically possible to have a library which doesn't use any symbols from libc, but it is far more likely that this is a violation of the requirement that "shared libraries must be linked against all libraries that they use symbols from in the same way that binaries are". Tag: program-not-linked-against-libc Severity: important Certainty: possible Ref: #698720 Info: The package installs a binary which is not dynamically linked against libc. . It is theoretically possible to have a program which doesn't use any symbols from libc, but it is far more likely that this binary simply isn't linked correctly. Tag: binary-or-shlib-defines-rpath Severity: serious Certainty: possible Ref: http://wiki.debian.org/RpathIssue Info: The binary or shared library sets RPATH. This overrides the normal library search path, possibly interfering with local policy and causing problems for multilib, among other issues. . The only time a binary or shared library in a Debian package should set RPATH is if it is linked to private shared libraries in the same package. In that case, place those private shared libraries in /usr/lib/package. Libraries used by binaries in other packages should be placed in /lib or /usr/lib as appropriate, with a proper SONAME, in which case RPATH is unnecessary. . To fix this problem, look for link lines like: gcc test.o -o test -Wl,--rpath,/usr/local/lib or gcc test.o -o test -R/usr/local/lib and remove the -Wl,--rpath or -R argument. You can also use the chrpath utility to remove the RPATH. Tag: binary-has-unneeded-section Severity: wishlist Certainty: certain Info: The binary or shared library is stripped, but still contains a section that is not useful. You should call strip with --remove-section=.comment --remove-section=.note to remove the .note and .comment sections. . dh_strip will do this automatically for you, but install -s not because it calls strip without any arguments. Tag: missing-depends-line Severity: normal Certainty: certain Info: The package contains an ELF binary with dynamic dependencies, but does not have a Depends line in its control file. This usually means that a call to dpkg-shlibdeps is missing from the package's debian/rules file. Tag: shared-lib-without-dependency-information Severity: normal Certainty: certain Info: The listed shared library doesn't include information about which other libraries the library was linked against. (When running "ldd foo.so" ldd should report about these other libraries. In your case, ldd just reports "statically linked".) . To fix this, you should explicitly specify the libraries which are used (e.g., "-lc") when building the shared library with "ld". . If you have questions about this, please contact &debdev;. Tag: arch-dependent-file-in-usr-share Severity: serious Certainty: certain Ref: fhs usrsharearchitectureindependentdata Info: This package installs an ELF binary in the /usr/share hierarchy, which is reserved for architecture-independent files. Tag: arch-dependent-file-not-in-arch-specific-directory Severity: serious Certainty: possible Ref: https://wiki.ubuntu.com/MultiarchSpec Info: This package is Multi-Arch "same", but it installs an ELF binary in the directory that is not architecture-specific. Tag: binary-in-etc Severity: serious Certainty: certain Ref: fhs etchostspecificsystemconfiguration Info: This package installs an ELF binary in /etc. The Filesystem Hierarchy Standard forbids this. Tag: binary-compiled-with-profiling-enabled Severity: normal Certainty: certain Info: While profiling is useful for testing and debugging purposes, enabling it causes a program to leave gmon.out files whenever a user runs it. Tag: binary-file-compressed-with-upx Severity: serious Certainty: certain Info: Debian does not allow binaries to be compressed by UPX. Tag: package-name-doesnt-match-sonames Severity: normal Certainty: possible Info: The package name of a library package should usually reflect the soname of the included library. The package name can determined from the library file name with the following code snippet: . $ objdump -p /path/to/libfoo-bar.so.1.2.3 | sed -n -e's/^[[:space:]]*SONAME[[:space:]]*//p' | \ sed -r -e's/([0-9])\.so\./\1-/; s/\.so(\.|$)//; y/_/-/; s/(.*)/\L&/' Tag: binary-with-bad-dynamic-table Severity: serious Certainty: possible Info: This appears to be an ELF file. According to readelf, the program headers suggests it should have a dynamic section, but readelf cannot find it. . If it is meant to be external debugging symbols for another file, it should be installed under /usr/lib/debug. Otherwise, this could be a corrupt ELF file. Tag: apparently-corrupted-elf-binary Severity: normal Certainty: possible Info: This appears to be an ELF file but readelf cannot parse it. . This may be a mistake or a corrupted file, you may need to install binutils-multiarch on the system running lintian so that non-native binaries are handled correctly, or it may be a misidentification of a file as ELF that actually isn't. Tag: missing-dependency-on-libc Severity: serious Certainty: possible Ref: policy 8.6.1 Info: The listed file appears to be linked against the C library, but the package doesn't depend on the C library package. Normally this indicates that ${shlibs:Depends} was omitted from the Depends line for this package in debian/control. . All shared libraries and compiled binaries must be run through dpkg-shlibdeps to find out any libraries they are linked against (often via the dh_shlibdeps debhelper command). The package containing these files must then depend on ${shlibs:Depends} in debian/control to get the proper package dependencies for those libraries. Tag: missing-dependency-on-libstdc++ Severity: serious Certainty: possible Experimental: yes Ref: policy 8.6.1 Info: The listed file appears to be linked against the C++ library, but the package doesn't depend on the C++ library package. Normally this indicates that ${shlibs:Depends} was omitted from the Depends line for this package in debian/control. . All shared libraries and compiled binaries must be run through dpkg-shlibdeps to find out any libraries they are linked against (often via the dh_shlibdeps debhelper command). The package containing these files must then depend on ${shlibs:Depends} in debian/control to get the proper package dependencies for those libraries. Tag: missing-dependency-on-perlapi Severity: serious Certainty: certain Ref: perl-policy 4.4.2 Info: This package includes a *.so file in /usr/lib/perl5, normally indicating that it includes a binary Perl module. Binary Perl modules must depend on perlapi-$Config{version} (from the Config module). If the package is using debhelper, this problem is usually due to a missing dh_perl call in debian/rules or a missing ${perl:Depends} substitution variable in the Depends line in debian/control. Tag: missing-dependency-on-phpapi Severity: serious Certainty: certain Info: This package includes a *.so file in /usr/lib/phpN (where N is a number representing the major PHP version), normally indicating that it includes a PHP extension. PHP extensions must depend on phpapi-$(php-configN --phpapi), without adding an alternative package with the OR operator. . This can usually be achieved by, for example, adding the following code to the binary-arch target of the rules file and adding ${php:Depends} to the Depends field of the binary package shipping the extension: . echo "php:Depends=phpapi-$(php-config5 --phpapi)" > debian/substvars Tag: missing-dependency-on-numpy-abi Severity: serious Certainty: possible Info: This package includes a Python extension module, which uses Numpy via its binary interface. Such packages must depend on python-numpy-abiN. . If the package is using debhelper, this problem is usually due to a missing dh_numpy (or dh_numpy3) call in debian/rules. Ref: /usr/share/doc/python-numpy/README.DebianMaints Tag: debug-file-should-use-detached-symbols Severity: normal Certainty: certain Ref: devref 6.7.9 Info: This file is in a location generally used for detached debugging symbols, but it appears to contain a complete copy of the executable or library instead of only the debugging symbols. Files in subdirectories of /usr/lib/debug mirroring the main file system should contain only debugging information generated by objcopy --only-keep-debug. Binaries or shared objects built with extra debugging should be installed directly in /usr/lib/debug or in subdirectories corresponding to the package, not in the directories that mirror the main file system. . If you are using dh_strip with the --dbg-package flag, don't also install the library in /usr/lib/debug. dh_strip does all the work for you. Tag: binary-from-other-architecture Severity: serious Certainty: possible Info: This ELF binary appears to have been built for an architecture other than the one of the binary package being tested. This may occur when a pre-built binary is shipped in the package or when an attempt to cross-compile didn't work. Tag: spelling-error-in-binary Severity: minor Certainty: wild-guess Info: Lintian found a spelling error in the given binary. Lintian has a list of common misspellings that it looks for. It does not have a dictionary like a spelling checker does. . If the string containing the spelling error is translated with the help of gettext or a similar tool, please fix the error in the translations as well as the English text to avoid making the translations fuzzy. With gettext, for example, this means you should also fix the spelling mistake in the corresponding msgids in the *.po files. . You can often find the word in the source code by running: . grep -rw <word> <source-tree> . This tag may produce false positives for words that contain non-ASCII characters due to limitations in strings. Tag: embedded-library Severity: serious Certainty: possible Ref: policy 4.13 Info: The given ELF object appears to have been statically linked to a library. Doing this is strongly discouraged due to the extra work needed by the security team to fix all the extra embedded copies or trigger the package rebuilds, as appropriate. . If the package uses a modified version of the given library it is highly recommended to coordinate with the library's maintainer to include the changes on the system version of the library. Tag: debug-symbols-directly-in-usr-lib-debug Severity: important Certainty: certain Info: The given debugging symbols-only object is installed directly in /usr/lib/debug, although it should be installed in a subdirectory. For example, debug symbols of a binary in /usr/bin should be placed in /usr/lib/debug/usr/bin. gdb, when looking for debugging symbols, prepends /usr/lib/debug to the path of the original binary. Tag: ocaml-custom-executable Severity: normal Certainty: possible Info: This package provides an OCaml bytecode executable linked with a custom runtime. Such executables cannot be stripped and require special care. Their usage is deprecated in favour of shared libraries for C stubs (dll*.so). Tag: hardening-no-stackprotector Severity: normal Certainty: wild-guess Info: This package provides an ELF binary that lacks the stack protector function __stack_chk_fail. Either there are no character arrays used on the stack of any routines, or the package was not built with the default Debian compiler flags defined by dpkg-buildflags. If built using dpkg-buildflags directly, be sure to import CFLAGS and/or CXXFLAGS. Ref: http://wiki.debian.org/Hardening Tag: hardening-no-fortify-functions Severity: normal Certainty: wild-guess Info: This package provides an ELF binary that lacks the use of fortified libc functions. Either there are no potentially unfortified functions called by any routines, all unfortified calls have already been fully validated at compile-time, or the package was not built with the default Debian compiler flags defined by dpkg-buildflags. If built using dpkg-buildflags directly, be sure to import CPPFLAGS. . NB: Due to false-positives, Lintian ignores some unprotected functions (e.g. memcpy). Ref: http://wiki.debian.org/Hardening, #673112 Tag: hardening-no-relro Severity: normal Certainty: certain Info: This package provides an ELF binary that lacks the "read-only relocation" link flag. This package was likely not built with the default Debian compiler flags defined by dpkg-buildflags. If built using dpkg-buildflags directly, be sure to import LDFLAGS. Ref: http://wiki.debian.org/Hardening Tag: debug-file-with-no-debug-symbols Severity: normal Certainty: possible Ref: #668437 Info: The binary is installed as a detached "debug symbols" ELF file, but it does not appear to have debug information associated with it. . Implementation detail: Lintian currently checks for the ".debug_line" section, which is a part of the DWARF standard. Tag: binary-file-built-without-LFS-support Severity: minor Certainty: possible Experimental: yes Info: The listed ELF binary appears to be (partially) built without "Large File Support" (LFS). If so, it may not be able to handle large files correctly. . To support large files, code review might be needed to make sure that those files are not slurped into memory or mmap(2)ed, and that correct 64-bit data types are used (ex: off_t instead of ssize_t), etc. Once that has been done ensure _FILE_OFFSET_BITS is defined and set to 64 before the relevant files are included. This can be done by using the AC_SYS_LARGEFILE macro with autoconf. . Take into account that even if this tag is not emitted, that does not mean the binary is LFS-safe (ie. no OOM conditions, file truncation or overwrite will happen). . Also note that enabling LFS on a shared library is not always safe as it might break ABI in case some of the exported types change size, in those cases a SOVERSION bump might be required. lintian-2.5.22ubuntu1/checks/po-debconf.pm0000664000000000000000000001636712311317616015304 0ustar # po-debconf -- lintian check script -*- perl -*- # Copyright (C) 2002-2004 by Denis Barbier # # 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::po_debconf; use strict; use warnings; use autodie; use Lintian::Tags qw(tag); use Lintian::Util qw(is_ancestor_of system_env); sub run { my (undef, undef, $info) = @_; my $full_translation = 0; my $debfiles = $info->debfiles; # First, check wether this package seems to use debconf but not # po-debconf. Read the templates file and look at the template # names it provides, since some shared templates aren't # translated. opendir(my $dirfd, $debfiles); my $has_template = my $has_depends = my $has_config = 0; my @lang_templates; for my $file (readdir($dirfd)) { next if -d "$debfiles/$file"; if ($file =~ m/^(.+\.)?templates(\..+)?$/) { if ($file =~ m/templates\.\w\w(_\w\w)?$/) { push(@lang_templates, $file); open(my $fd, '<', "$debfiles/$file"); while (<$fd>) { tag 'untranslatable-debconf-templates', "$file: $." if (m/^Description: (.+)/i and $1 !~/for internal use/); } close($fd); } else { open(my $fd, '<', "$debfiles/$file"); my $in_template = 0; my $saw_tl_note = 0; while (<$fd>) { tag 'translated-default-field', "$file: $." if (m{^_Default(?:Choice)?: [^\[]*$}) && !$saw_tl_note; tag 'untranslatable-debconf-templates', "$file: $." if (m/^Description: (.+)/i and $1 !~/for internal use/); if (/^#/) { # Is this a comment for the translators? $saw_tl_note = 1 if m/translators/i; next; } # If it is not a continuous comment immediately before the # _Default(Choice) field, we don't care about it. $saw_tl_note = 0; if (/^Template: (\S+)/i) { my $template = $1; next if $template eq 'shared/packages-wordlist' or $template eq 'shared/packages-ispell'; next if $template =~ m,/languages$,; $in_template = 1; } elsif ($in_template and /^_?Description: (.+)/i) { my $description = $1; next if $description =~ /for internal use/; $has_template = 1; } elsif ($in_template and /^$/) { $in_template = 0; } } close($fd); } } } closedir($dirfd); #TODO: check whether all templates are named in TEMPLATES.pot if ($has_template) { if (-l "$debfiles/po" and not is_ancestor_of($debfiles, "$debfiles/po")) { # debian/po is an unsafe symlink - lets stop here. return; } if (!-d "$debfiles/po") { tag 'not-using-po-debconf'; return; } } else { return; } # If we got here, we're using po-debconf, so there shouldn't be any stray # language templates left over from debconf-mergetemplate. for (@lang_templates) { tag 'stray-translated-debconf-templates', $_ unless /templates\.in$/; } my $missing_files = 0; if (-f "$debfiles/po/POTFILES.in" and not -l "$debfiles/po/POTFILES.in") { open(my $fd, '<', "$debfiles/po/POTFILES.in"); while (<$fd>) { chomp; next if /^\s*\#/; s/.*\]\s*//; # Cannot check files which are not under debian/ next if m,^\.\./, or $_ eq ''; unless (-f "$debfiles/$_") { tag 'missing-file-from-potfiles-in', $_; $missing_files = 1; } } close($fd); } else { tag 'missing-potfiles-in'; $missing_files = 1; } if (!-f "$debfiles/po/templates.pot" && !-l "$debfiles/po/templates.pot") { tag 'missing-templates-pot'; $missing_files = 1; } if ($missing_files == 0) { #<<< No tidy - though we should rewrite this to avoid writing during checks (#699022) $ENV{'INTLTOOL_EXTRACT'} = '/usr/share/intltool-debian/intltool-extract'; system_env("cd \Q$debfiles/po\E && /usr/share/intltool-debian/intltool-update --gettext-package=test --pot"); system_env("/usr/bin/msgcmp --use-untranslated \Q$debfiles/po/test.pot\E \Q$debfiles/po/templates.pot\E >/dev/null 2>&1" . "&& /usr/bin/msgcmp --use-untranslated \Q$debfiles/po/templates.pot\E \Q$debfiles/po/test.pot\E >/dev/null 2>&1" ) == 0 or tag 'newer-debconf-templates'; #>>> } opendir(my $po_dirfd, "$debfiles/po"); while (defined(my $file=readdir($po_dirfd))) { next unless $file =~ m/\.po$/; tag 'misnamed-po-file', "debian/po/$file" unless ($file =~ /^[a-z]{2,3}(_[A-Z]{2})?(?:\@[^\.]+)?\.po$/o); local ($/) = "\n\n"; $_ = ''; # skip suspicious "files" next if -l "$debfiles/po/$file" || !-f "$debfiles/po/$file"; open(my $fd, '<', "$debfiles/po/$file"); while (<$fd>) { if (/Language\-Team:.*debian-i18n\@lists\.debian\.org/i) { tag 'debconf-translation-using-general-list', $file; } last if m/^msgstr/m; } close($fd); unless ($_) { tag 'invalid-po-file', "debian/po/$file"; next; } s/"\n"//g; my $charset = ''; if (m/charset=(.*?)\\n/) { $charset = ($1 eq 'CHARSET' ? '' : $1); } tag 'unknown-encoding-in-po-file', "debian/po/$file" unless length($charset); system_env( 'msgfmt -o /dev/null'. " \Q$debfiles/po/$file\E 2>/dev/null") == 0 or tag 'invalid-po-file', "debian/po/$file"; my $stats = `LC_ALL=C msgfmt -o /dev/null --statistics \Q$debfiles/po/$file\E 2>&1`; if (!$full_translation && $stats =~ m/^\w+ \w+ \w+\.$/) { $full_translation = 1; } } closedir($po_dirfd); tag 'no-complete-debconf-translation' if !$full_translation; return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/debhelper.desc0000664000000000000000000002751612310413206015511 0ustar Check-Script: debhelper Author: Joey Hess Abbrev: dh Type: source Info: This looks for common mistakes in debhelper source packages. Needs-Info: debfiles Tag: maintainer-script-lacks-debhelper-token Severity: normal Certainty: possible Info: This package is built using debhelper commands that may modify maintainer scripts, but the maintainer scripts do not contain the "#DEBHELPER#" token debhelper uses to modify them. . Adding the token to the scripts is recommended. Tag: package-uses-debhelper-but-lacks-build-depends Severity: important Certainty: possible Info: If a package uses debhelper, it must declare a Build-Depends on debhelper. Tag: package-lacks-versioned-build-depends-on-debhelper Severity: pedantic Certainty: certain Info: The package either doesn't declare a versioned build dependency on debhelper or does not declare a versioned build dependency on a new enough version of debhelper to satisfy the declared compatibility level. . Recommended practice is to always declare an explicit versioned dependency on debhelper equal to or greater than the compatibility level used by the package, even if the versioned dependency isn't strictly necessary. Having a versioned dependency also helps with backports to older releases and correct builds on partially updated systems. Ref: debhelper(7) Tag: package-needs-versioned-debhelper-build-depends Severity: minor Certainty: certain Info: The package either doesn't declare a versioned build dependency on debhelper or does not declare a versioned build dependency on a new enough version of debhelper to satisfy the declared compatibility level. . The required version of debhelper is not guaranteed to be satisfied in all supported releases of Debian and therefore this may lead to a build failure. . Recommended practice is to always declare an explicit versioned dependency on debhelper equal to or greater than the compatibility level used by the package, even if the versioned dependency isn't strictly necessary. Having a versioned dependency also helps with backports to older releases and correct builds on partially updated systems. . Note if you are using a compat level, which is marked as experimental, such as compat 9 in debhelper 8.1.3, then please override this tag. Ref: debhelper(7) Tag: dh-make-template-in-source Severity: normal Certainty: possible Info: This package contains debian/*.ex and/or debian/ex.* files installed by dh_make. These are intended to be filled in with the package's details and renamed for use by various debhelper commands. If they are not being used, they should be removed. Tag: dh_suidregister-is-obsolete Severity: normal Certainty: certain Ref: dh_suidregister(1) Info: suidregister is obsoleted by dpkg-statoverride, so registration of files in with dh_suidregister is unnecessary, and even harmful. Tag: dh_undocumented-is-obsolete Severity: normal Certainty: certain Ref: dh_undocumented(1) Info: This package calls dh_undocumented in its debian/rules file. The dh_undocumented command is obsolete and does nothing, since it's former behavior of adding symlinks to the undocumented(7) man page is now obsolete. Tag: dh_pysupport-is-obsolete Severity: normal Certainty: certain Info: This package calls dh_pysupport in its debian/rules file. dh_pysupport is deprecated and has been replaced by dh_python2. . dh_python2 is available in Squeeze; if backporting the package to a Lenny or older system, please ignore this warning. Ref: http://wiki.debian.org/Python/TransitionToDHPython2 Tag: dh_installmanpages-is-obsolete Severity: normal Certainty: certain Ref: dh_installmanpages(1) Info: This package calls dh_installmanpages in its debian/rules file. dh_installmanpages is deprecated in favour of dh_installman. Tag: dh_desktop-is-deprecated Severity: normal Certainty: certain Ref: dh_desktop(1) Info: This package calls dh_desktop in its debian/rules file. dh_desktop is deprecated and no longer does anything. The setup it used to handle is now done with triggers. Tag: dh_scrollkeeper-is-deprecated Severity: normal Certainty: certain Ref: dh_scrollkeeper(1) Info: This package calls dh_scrollkeeper in its debian/rules file. dh_scrollkeeper is deprecated and no longer does anything. scrollkeeper has been replaced by rarian, which does not require the functionality dh_scrollkeeper used to provide. Tag: dh-clean-k-is-deprecated Severity: normal Certainty: certain Ref: dh_clean(1) Info: This package calls dh_clean -k in its debian/rules file and declares a debhelper compatibility version of at least 7. . debhelper 7 deprecated dh_clean -k in favour of dh_prep. Tag: debhelper-compat-file-is-empty Severity: important Certainty: certain Ref: debhelper(7) Info: The source package has an empty debian/compat file. This is an error, the compat level of debhelper should be in there. Note that only the first line of the file is relevant. Tag: declares-possibly-conflicting-debhelper-compat-versions Severity: important Certainty: certain Ref: debhelper(7) Info: The source package declares the debhelper compatibility version both in the debian/compat file and in the debian/rules file. If these ever get out of synchronisation, the package may not build as expected. Tag: package-uses-deprecated-debhelper-compat-version Severity: normal Certainty: certain Ref: debhelper(7) Info: The debhelper compatibility version used by this package is marked as deprecated by the debhelper developer. You should really consider using a newer compatibility version. . The compatibility version can be set in (preferred) debian/compat or by setting and exporting DH_COMPAT in debian/rules. If it is not set in either place, debhelper defaults to the deprecated compatibility version 1. Tag: debhelper-but-no-misc-depends Severity: normal Certainty: possible Ref: debhelper(7) Info: The source package uses debhelper, but it does not include ${misc:Depends} in the given binary package's debian/control entry. Any debhelper command may add dependencies to ${misc:Depends} that are required for the work that it does, so recommended best practice is to always add ${misc:Depends} to the dependencies of each binary package if debhelper is in use. Tag: missing-build-dependency-for-dh_-command Severity: important Certainty: possible Info: The source package appears to be using a dh_ command but doesn't build depend on the package that actually provides it. If it uses it, it must build depend on it. Tag: missing-build-dependency-for-dh-addon Severity: important Certainty: possible Info: The source package appears to be using a dh addon but doesn't build depend on the package that actually provides it. If it uses it, it must build depend on it. Tag: brace-expansion-in-debhelper-config-file Severity: normal Certainty: possible Info: This debhelper config file appears to use shell brace expansion (such as {foo,bar}) to specify files. This happens to work due to an accident of implementation but is not a supported feature. Only ?, *, and [...] are supported. Ref: debhelper(1) Tag: weak-dependency-on-misc-depends Severity: normal Certainty: possible Ref: debhelper(7) Info: The source package declares a weak dependency on ${misc:Depends} in the given binary package's debian/control entry. A stronger dependency, that is one that ensures the package's installation, is required so that the additional commands are available to the maintainer scripts when they are run. Tag: debhelper-compat-not-a-number Severity: important Certainty: certain Ref: debhelper(7) Info: The debhelper compatibility level specified in debian/compat is not a number. Tag: debhelper-compatibility-level-not-a-number Severity: important Certainty: possible Info: The debhelper compatibility level specified in debian/rules is not a number. If you're using make functions or other more complex methods to generate the compatibility level, write the output into debian/compat instead of setting DH_COMPAT. The latter should be available for a user to override temporarily. Tag: temporary-debhelper-file Severity: important Certainty: certain Ref: dh_clean(1) Info: The package contains temporary debhelper files, which are normally removed by dh_clean. The most common cause for this is that a binary package has been renamed or removed without cleaning the build directory first. Tag: unused-build-dependency-on-cdbs Severity: normal Certainty: possible Info: The package build-depends on cdbs, but does not include any cdbs files in debian/rules. Tag: python-depends-but-no-python-helper Severity: serious Certainty: possible Info: The source package declares a dependency on ${python:Depends} in the given binary package's debian/control entry. However, debian/rules doesn't call any helper that would generate this substitution variable. . When using debhelper compatibility level below 9, dh will call dh_pysupport by default if it's installed, but the build dependency on python-support is still necessary. Tag: python3-depends-but-no-python3-helper Severity: serious Certainty: possible Info: The source package declares a dependency on ${python3:Depends} in the given binary package's debian/control entry. However, debian/rules doesn't call any helper that would generate this substitution variable. Tag: package-file-is-executable Severity: normal Certainty: certain Info: The packaging file is marked executable. For control, changelog and copyright there is no reason for them to be executable. . This tag is also emitted if a debhelper file is marked executable without using compat level 9, since debhelper does not execute them at lower compat levels. Tag: executable-debhelper-file-without-being-executable Severity: important Certainty: possible Info: The packaging file is marked executable, but it does not appear to be executable (e.g. it has no #! line). . If debhelper file is not supposed to be executable, please remove the executable bit from it. Tag: dh-exec-private-helper Severity: important Certainty: certain Info: The packaging file uses dh-exec, but it does not use /usr/bin/dh-exec. . If running dh-exec with the default set of helpers is not desired, use its --with or --without options instead of directly using the desired helper. Tag: package-uses-dh-exec-but-lacks-build-depends Severity: important Certainty: possible Info: If a package uses dh-exec, it must declare a Build-Depends on it. Tag: dh-exec-script-without-dh-exec-features Severity: normal Certainty: possible Info: The package uses dh-exec in at least one of its files, but does not use any of the features provided by dh-exec. . If the features provided by dh-exec is not needed, please remove the executable bit, and the dh-exec usage. Tag: dh-exec-install-not-allowed-here Severity: important Certainty: possible Info: The package uses a dh-exec-install construct in a non-.install file. . The dh-exec-install constructs are only allowed in dh_install's .install files, and nowhere else. Tag: dh-exec-subst-unknown-variable Severity: minor Certainty: wild-guess Info: The package uses a variable in one of its debhelper config files, but the variable is not one known to dpkg-architecture. . It is recommended to use a known subset of variables. If the package needs more than that, and makes sure the variable is exported through the build one way or the other, then this tag can be safely ignored or overridden. Tag: debhelper-compat-file-is-missing Severity: normal Certainty: certain Info: The package uses debhelper but does not ship a compat file. This is deprecated and eventually cause the package to FTBFS. . Please refer to the debhelper documentation on how to create the compat file and the differences between each compat level. Ref: http://packages.qa.debian.org/d/debhelper/news/20120115T191738Z.html, debhelper(7) lintian-2.5.22ubuntu1/checks/lintian.desc0000664000000000000000000000232612310413144015206 0ustar Check-Script: lintian Info: This description file is a special case. It contains the tag info for the tags produced by the lintian frontend itself. . The tags in this check are enabled in all profiles by default, but can be disabled. Tag: unused-override Severity: wishlist Certainty: certain Ref: lintian 2.4.3 Info: Lintian discovered an unused override entry in its database. Most likely it was used for a false-positive that has been fixed. However, some tags are only triggered in packages built on certain architectures. In this case, the override may need an architecture qualifier. . If the override is unused, please remove it from the overrides file. Tag: malformed-override Severity: important Certainty: certain Ref: lintian 2.4.1 Info: Lintian discovered an override entry with an invalid format. An override entry should have the format: . [[<package>][ <archlist>][ <type>]:] <tag>[ <extra> ...] . where <package> is the package name, <archlist> is an architecture list, <type> specifies the package type (binary is the default), <tag> is the tag to override, and <extra> is any specific information for the particular tag to override. lintian-2.5.22ubuntu1/checks/rules.desc0000664000000000000000000002265112310413206014704 0ustar Check-Script: rules Author: Russ Allbery Type: source Needs-Info: debfiles Info: Check targets and actions in debian/rules. Abbrev: rul Tag: debian-rules-is-symlink Severity: normal Certainty: certain Info: The file debian/rules is a symlink instead of a regular file. This is unnecessary and makes package checking and manipulation more difficult. If the rules file should be available in the source package under multiple names, make debian/rules the real file and the other names symlinks to it. . This problem may have prevented lintian from performing other checks, leading to undetected changelog errors. Tag: debian-rules-not-a-makefile Severity: serious Certainty: certain Ref: policy 4.9 Info: The debian/rules file for this package does not appear to be a makefile or does not start with the required line. debian/rules must be a valid makefile and must have "#!/usr/bin/make -f" as its first line. Tag: debian-rules-missing-required-target Severity: serious Certainty: certain Ref: policy 4.9 Info: The debian/rules file for this package does not provide one of the required targets. All of build, binary, binary-arch, binary-indep, and clean must be provided, even if they don't do anything for this package. Tag: debian-rules-missing-recommended-target Severity: normal Certainty: certain Ref: policy 4.9 Info: The debian/rules file for this package does not provide one of the recommended targets. All of build-arch and build-indep should be provided, even if they don't do anything for this package. If this package does not currently split building of architecture dependent and independent packages, the following rules may be added to fall back to the build target: . build-arch: build build-indep: build . Note that the following form is recommended however: . build: build-arch build-indep build-arch: build-stamp build-indep: build-stamp build-stamp: build here . These targets will be required by policy in the future, so should be added to prevent future breakage. Tag: debian-rules-missing-good-practice-target-dfsg Severity: wishlist Certainty: certain Ref: policy 4.9, devref 6.7.8.2 Info: The debian/rules file for this package does not provide one of the good practice targets. . If your packaged is repacked from non dfsg source, you should add a get-orig-source target. Tag: debian-rules-uses-deprecated-makefile Severity: normal Certainty: certain Info: The debian/rules file for this package appears to include a Makefile that has been deprecated. Please refer to the documentation of the providing package for a replacement (if any). Tag: debian-rules-should-not-use-pwd Severity: normal Certainty: certain Info: The debian/rules file for this package appears to use the variable $(PWD) to refer to the current directory. This variable is not set by GNU make and therefore will have whatever value it has in the environment, which may not be the actual current directory. Some ways of building Debian packages (such as through sudo) will clear the PWD environment variable. . Instead of $(PWD), use $(CURDIR), which is set by GNU make, ignores the environment, and is guaranteed to always be set. Tag: debian-rules-ignores-make-clean-error Severity: normal Certainty: certain Info: A rule in the debian/rules file for this package calls the package's clean or distclean target with a line like: . -$(MAKE) distclean or $(MAKE) -i distclean . The leading "-" or the option -i tells make to ignore all errors. Normally this is done for packages using Autoconf since Makefile may not exist. However, this line ignores all other error messages, not just the missing Makefile error. It's better to use: . [ ! -f Makefile ] || $(MAKE) distclean . so that other error messages from the clean or distclean rule will still be caught (or just remove the "-" if the package uses a static makefile). Tag: debian-rules-should-not-use-DEB_BUILD_OPTS Severity: normal Certainty: certain Info: The standard environment variable for build options is DEB_BUILD_OPTIONS. Usually, referring to DEB_BUILD_OPTS is a mistake and DEB_BUILD_OPTIONS was intended instead. Tag: debian-rules-should-not-automatically-update-control Severity: serious Certainty: possible Info: DEB_AUTO_UPDATE_DEBIAN_CONTROL appears to be set to yes in the debian/rules file. This activates a feature of CDBS which may not be used in packages uploaded to the Debian archive. Ref: http://ftp-master.debian.org/REJECT-FAQ.html Tag: debian-rules-sets-DH_COMPAT Severity: normal Certainty: certain Ref: debhelper(7) Info: As of debhelper version 4, the DH_COMPAT environment variable is only to be used for temporarily overriding debian/compat. Any line in debian/rules that sets it globally should be deleted and a separate debian/compat file created if needed. Tag: binary-arch-rules-but-pkg-is-arch-indep Severity: normal Certainty: certain Info: It looks like you try to run code in the binary-arch target of debian/rules, even though your package is architecture- independent. Tag: debian-rules-calls-debhelper-in-odd-order Severity: normal Certainty: certain Info: One of the targets in the debian/rules file for this package calls debhelper programs in an odd order. Normally, dh_makeshlibs should be run before dh_shlibdeps or dh_installdeb, and dh_shlibdeps should be run before dh_gencontrol. dh_builddeb should be the last debhelper action when building the package, after any of the other programs mentioned. Calling these programs in the wrong order may cause incorrect or missing package files and metadata. Tag: missing-build-dependency Severity: serious Certainty: possible Ref: policy 4.2 Info: The package doesn't specify a build dependency on a package that is used in debian/rules. . lintian intentionally does not take into account transitive dependencies. Even if the package build-depends on some package that in turn depends on the needed package, an explicit build dependency should be added. Otherwise, a latent bug is created that will appear without warning if the other package is ever updated to change its dependencies. Even if this seems unlikely, please always add explicit build dependencies on every non-essential, non-build-essential package that is used directly during the build. Tag: missing-python-build-dependency Severity: important Certainty: certain Ref: policy 4.2 Info: The package appears to use Python as part of its build process in debian/rules but doesn't depend on Python. . Normally, packages that use Python as part of the build process should build-depend on one of python, python-all, python-dev, or python-all-dev depending on whether they support multiple versions of Python and whether they're building modules or only using Python as part of the package build process. Packages that depend on a specific version of Python may build-depend on the appropriate pythonX.Y or pythonX.Y-dev package instead. Tag: clean-should-be-satisfied-by-build-depends Severity: important Certainty: certain Ref: policy 7.7 Info: The specified package is required to run the clean target of debian/rules and therefore must be listed in Build-Depends, not Build-Depends-Indep, even if no architecture-dependent packages are built. Tag: debian-rules-makemaker-prefix-is-deprecated Severity: normal Certainty: possible Ref: perl-policy 4.3 Info: The package appears to use an ExtUtils::MakeMaker (Makefile.PL) build system and sets the temporary installation path by overriding PREFIX when calling make install. This only works because of a Debian-specific change to ExtUtils::MakeMaker that the maintainers of the Debian perl package intend to remove. . The correct way to set the installation directory is with DESTDIR. Setting PREFIX should not be necessary at all. . For example, the line make install PREFIX=$(TMP)/usr # WRONG should be replaced with make install DESTDIR=$(TMP) # RIGHT Tag: debian-rules-should-not-use-or-modify-user-only-variable Severity: normal Certainty: possible Ref: #631786 Info: The rules files appear to be reading or modifying a variable not intended for use by package maintainers. The special variables . DEB_*FLAGS_{SET,APPEND} . can be used by users, who wants to re-compile debian packages with special (or non-standard) build flags. Tag: debian-rules-should-not-use-underscore-variable Severity: normal Certainty: possible Ref: policy 4.9 Info: The rules file use the make variable $(_). . According to Policy 4.9, 'invoking either of make -f debian/rules <...> or ./debian/rules <args...>' must result in identical behavior'. One way to inadvertently violate this policy is to use the $_ variable. . If the rules file uses $(dir $(_)) to discover the directory containing the source package (presumably in order to implement the get-orig-source target), please replace it by $(dir $(firstword $(MAKEFILE_LIST))). Tag: package-would-benefit-from-build-arch-targets Severity: normal Certainty: certain Ref: #629385, https://wiki.debian.org/ReleaseGoals/BuildArchTarget Info: The source package does not have both a build-arch and a build-indep target. Furthermore it is part of the selected set of packages to be fixed for Wheezy. . Please consider adding both the build-arch and build-indep targets. lintian-2.5.22ubuntu1/checks/cruft.pm0000664000000000000000000011677212313553042014411 0ustar # cruft -- lintian check script -*- perl -*- # # based on debhelper check, # Copyright (C) 1999 Joey Hess # Copyright (C) 2000 Sean 'Shaleh' Perry # Copyright (C) 2002 Josip Rodin # Copyright (C) 2007 Russ Allbery # # 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::cruft; use strict; use warnings; use autodie; use v5.10; use Carp qw(croak confess); use Cwd(); use File::Find; # Half of the size used in the "sliding window" for detecting bad # licenses like GFDL with invariant sections. # NB: Keep in sync cruft-gfdl-fp-sliding-win/pre_build. use constant BLOCKSIZE => 4096; use Lintian::Data; use Lintian::Relation (); use Lintian::Tags qw(tag); use Lintian::Util qw(fail is_ancestor_of normalize_pkg_path strip); use Lintian::SlidingWindow; # All the packages that may provide config.{sub,guess} during the build, used # to suppress warnings about outdated autotools helper files. I'm not # thrilled with having the automake exception as well, but people do depend on # autoconf and automake and then use autoreconf to update config.guess and # config.sub, and automake depends on autotools-dev. our $AUTOTOOLS = Lintian::Relation->new( join(' | ', Lintian::Data->new('cruft/autotools')->all)); our $LIBTOOL = Lintian::Relation->new('libtool | dh-autoreconf'); # load data for md5sums based check sub _md5sum_based_lintian_data { my ($filename) = @_; return Lintian::Data->new( $filename, qr/\s*\~\~\s*/, sub { my @sliptline = split(/\s*\~\~\s*/, $_[1], 5); if (scalar(@sliptline) != 5) { fail "Syntax error in $filename", $.; } my ($sha1, $sha256, $name, $reason, $link) = @sliptline; return { 'sha1' => $sha1, 'sha256' => $sha256, 'name' => $name, 'reason' => $reason, 'link' => $link, }; }); } # forbidden files my $NON_DISTRIBUTABLE_FILES = _md5sum_based_lintian_data('cruft/non-distributable-files'); # non free files my $NON_FREE_FILES = _md5sum_based_lintian_data('cruft/non-free-files'); # prebuilt-file or forbidden file type my $WARN_FILE_TYPE = Lintian::Data->new( 'cruft/warn-file-type', qr/\s*\~\~\s*/, sub { my @sliptline = split(/\s*\~\~\s*/, $_[1], 4); if (scalar(@sliptline) < 1 or scalar(@sliptline) > 4) { fail 'Syntax error in cruft/warn-file-type', $.; } my ($regtype, $regname, $transformlist) = @sliptline; # allow empty regname $regname = defined($regname) ? strip($regname) : ''; if (length($regname) == 0) { $regname = '.*'; } # build transform pair $transformlist //= ''; $transformlist = strip($transformlist); my $syntaxerror = 'Syntax error in cruft/warn-file-type'; my @transformpairs = (); unless($transformlist eq '') { my @transforms = split(/\s*\&\&\s*/, $transformlist); if(scalar(@transforms) > 0) { foreach my $transform (@transforms) { # regex transform if($transform =~ m'^s/') { $transform =~ m'^s/([^/]*?)/([^/]*?)/$'; unless(defined($1) and defined($2)) { fail $syntaxerror, 'in transform regex',$. } push(@transformpairs,[$1,$2]); } elsif ($transform =~ m'^map\s*{') { $transform =~ m#^map \s* { \s* 's/([^/]*?)/\'.\$_.'/' \s* } \s* qw\(([^\)]*)\)#x; unless(defined($1) and defined($2)) { fail $syntaxerror,'in map transform regex',$.; } my $words = $2; my $match = $1; my @wordarray = split(/\s+/,$words); if(scalar(@wordarray) == 0) { fail $syntaxerror, 'in map transform regex : no qw arg',$.; } foreach my $word (@wordarray) { push(@transformpairs,[$match, $word]); } } else { fail $syntaxerror,'in last field',$.; } } } } return { 'regtype' => qr/$regtype/x, 'regname' => qr/$regname/x, 'checkmissing' => (not not scalar(@transformpairs)), 'transform' => \@transformpairs, }; }); my $MISSING_DIR_SEARCH_PATH = Lintian::Data->new('cruft/missing-dir-search-path'); # get javascript name sub _minified_javascript_name_regexp { my $jsv = $WARN_FILE_TYPE->value('source-contains-prebuilt-javascript-object'); return defined($jsv) ? $jsv->{'regname'} : qr/(?i)[\.-](?:min|pack(?:ed)?)\.js$/; } sub _get_license_check_file { my ($filename) = @_; my $data = Lintian::Data->new( $filename, qr/\s*\~\~\s*/, sub { my @splitline = split(/\s*\~\~\s*/, $_[1], 5); my $syntaxerror = 'Syntax error in '.$filename; if(scalar(@splitline) > 5 or scalar(@splitline) <2) { fail $syntaxerror, $.; } my ($keywords, $sentence, $regex, $firstregex, $callsub) = @splitline; $keywords = defined($keywords) ? strip($keywords) : ''; $sentence = defined($sentence) ? strip($sentence) : ''; $regex = defined($regex) ? strip($regex) : ''; $firstregex = defined($firstregex) ? strip($firstregex) : ''; $callsub = defined($callsub) ? strip($callsub) : ''; my @keywordlist = split(/\s*\&\&\s*/, $keywords); if(scalar(@keywordlist) < 1) { fail $syntaxerror, 'No keywords line', $.; } if($regex eq '') { $regex = '.*'; } if($firstregex eq '') { $firstregex = $regex; } my %ret = ( 'keywords' => \@keywordlist, 'sentence' => $sentence, 'regex' => qr/$regex/xsm, 'firstregex' => qr/$firstregex/xsm, ); unless($callsub eq '') { if($callsub eq '_check_gfdl_license_problem') { $ret{'callsub'} = \&_check_gfdl_license_problem; }else { fail $syntaxerror, 'Unknown sub', $.; } } return \%ret; }); return $data; } # get usual non distribuable license my $NON_DISTRIBUTABLE_LICENSES = _get_license_check_file('cruft/non-distributable-license'); # get non free license # get usual non distribuable license my $NON_FREE_LICENSES = _get_license_check_file('cruft/non-free-license'); # get usual datas about admissible/not admissible GFDL invariant part of license my $GFDL_FRAGMENTS = Lintian::Data->new( 'cruft/gfdl-license-fragments-checks', qr/\s*\~\~\s*/, sub { my ($gfdlsectionsregex,$secondpart) = @_; # allow empty parameters $gfdlsectionsregex = defined($gfdlsectionsregex) ? strip($gfdlsectionsregex) : ''; $secondpart //= ''; my ($acceptonlyinfile,$applytag)= split(/\s*\~\~\s*/, $secondpart, 2); $acceptonlyinfile = defined($acceptonlyinfile) ? strip($acceptonlyinfile) : ''; $applytag =defined($applytag) ? strip($applytag) : ''; # empty first field is everything if (length($gfdlsectionsregex) == 0) { $gfdlsectionsregex = '.*'; } # empty regname is none if (length($acceptonlyinfile) == 0) { $acceptonlyinfile = '.*'; } my %ret = ( 'gfdlsectionsregex' => qr/$gfdlsectionsregex/xis, 'acceptonlyinfile' => qr/$acceptonlyinfile/xs, ); unless ($applytag eq '') { $ret{'tag'} = $applytag; } return \%ret; }); # The files that contain error messages from tar, which we'll check and issue # tags for if they contain something unexpected, and their corresponding tags. our %ERRORS = ( 'index-errors' => 'tar-errors-from-source', 'unpacked-errors' => 'tar-errors-from-source' ); # Directory checks. These regexes match a directory that shouldn't be in the # source package and associate it with a tag (minus the leading # source-contains or diff-contains). Note that only one of these regexes # should trigger for any single directory. my @directory_checks = ( [qr,^(.+/)?CVS$, => 'cvs-control-dir'], [qr,^(.+/)?\.svn$, => 'svn-control-dir'], [qr,^(.+/)?\.bzr$, => 'bzr-control-dir'], [qr,^(.+/)?\{arch\}$, => 'arch-control-dir'], [qr,^(.+/)?\.arch-ids$, => 'arch-control-dir'], [qr!^(.+/)?,,.+$! => 'arch-control-dir'], [qr,^(.+/)?\.git$, => 'git-control-dir'], [qr,^(.+/)?\.hg$, => 'hg-control-dir'], [qr,^(.+/)?\.be$, => 'bts-control-dir'], [qr,^(.+/)?\.ditrack$, => 'bts-control-dir'], # Special case (can only be triggered for diffs) [qr,^(.+/)?\.pc$, => 'quilt-control-dir'], ); # File checks. These regexes match files that shouldn't be in the source # package and associate them with a tag (minus the leading source-contains or # diff-contains). Note that only one of these regexes should trigger for any # given file. If the third column is a true value, don't issue this tag # unless the file is included in the diff; it's too common in source packages # and not important enough to worry about. my @file_checks = ( [qr,^(.+/)?svn-commit\.(.+\.)?tmp$, => 'svn-commit-file'], [qr,^(.+/)?svk-commit.+\.tmp$, => 'svk-commit-file'], [qr,^(.+/)?\.arch-inventory$, => 'arch-inventory-file'], [qr,^(.+/)?\.hgtags$, => 'hg-tags-file'], [qr,^(.+/)?\.\#(.+?)\.\d+(\.\d+)*$, => 'cvs-conflict-copy'], [qr,^(.+/)?(.+?)\.(r\d+)$, => 'svn-conflict-file'], [qr,\.(orig|rej)$, => 'patch-failure-file', 1], [qr,((^|/)\.[^/]+\.swp|~)$, => 'editor-backup-file', 1], ); # List of files to check for a LF-only end of line terminator, relative # to the debian/ source directory our @EOL_TERMINATORS_FILES = qw(control changelog); sub run { my (undef, undef, $info) = @_; my $droot = $info->debfiles; if (-e "$droot/files" and not -z "$droot/files") { tag 'debian-files-list-in-source'; } # This doens't really belong here, but there isn't a better place at the # moment to put this check. my $version = $info->field('version'); # If the version field is missing, assume it to be a native, # maintainer upload as it is probably the most likely case. $version = '0-1' unless defined $version; if ($info->native) { if ($version =~ /-/ and $version !~ /-0\.[^-]+$/) { tag 'native-package-with-dash-version'; } }else { if ($version !~ /-/) { tag 'non-native-package-with-native-version'; } } # Check if the package build-depends on autotools-dev, automake, # or libtool. my $atdinbd= $info->relation('build-depends-all')->implies($AUTOTOOLS); my $ltinbd = $info->relation('build-depends-all')->implies($LIBTOOL); # Create a closure so that we can pass our lexical variables into # the find wanted function. We don't want to make them global # because we'll then leak that data across packages in a large # Lintian run. my %warned; my $format = $info->field('format'); # Assume the package to be non-native if the field is not present. # - while 1.0 is more likely in this case, Lintian will probably get # better results by checking debfiles/ rather than looking for a diffstat # that may not be present. $format = '3.0 (quilt)' unless defined $format; if ($format =~ /^\s*2\.0\s*\z/ or $format =~ /^\s*3\.0\s*\(quilt\)/) { my $wanted= sub { check_debfiles($info, qr/\Q$droot\E/, \%warned) }; find($wanted, $droot); }elsif (not $info->native) { check_diffstat($info->diffstat, \%warned); } find_cruft($info, \%warned, $atdinbd, $ltinbd); for my $file (@EOL_TERMINATORS_FILES) { my $path = $info->debfiles($file); next if not -f $path or not is_ancestor_of($droot, $path); open(my $fd, '<', $path); while (my $line = <$fd>) { if ($line =~ m{ \r \n \Z}xsm) { tag 'control-file-with-CRLF-EOLs', "debian/$file"; last; } } close($fd); } # Report any error messages from tar while unpacking the source # package if it isn't just tar cruft. for my $file (keys %ERRORS) { my $tag = $ERRORS{$file}; my $path = $info->lab_data_path($file); if (-s $path) { open(my $fd, '<', $path); local $_; while (<$fd>) { chomp; s,^(?:[/\w]+/)?tar: ,,; # Record size errors are harmless. Skipping to next # header apparently comes from star files. Ignore all # GnuPG noise from not having a valid GnuPG # configuration directory. Also ignore the tar # "exiting with failure status" message, since it # comes after some other error. next if /^Record size =/; next if /^Skipping to next header/; next if /^gpgv?: /; next if /^secmem usage: /; next if /^Exiting with failure status due to previous errors/; tag $tag, $_; } close($fd); } } return; } # # ----------------------------------- # Check the diff for problems. Record any files we warn about in $warned so # that we don't warn again when checking the full unpacked source. Takes the # name of a file containing diffstat output. sub check_diffstat { my ($diffstat, $warned) = @_; my $saw_file; open(my $fd, '<', $diffstat); local $_; while (<$fd>) { my ($file) = (m,^\s+(.*?)\s+\|,) or fail("syntax error in diffstat file: $_"); $saw_file = 1; # Check for CMake cache files. These embed the source path and hence # will cause FTBFS on buildds, so they should never be touched in the # diff. if ( $file =~ m,(?:^|/)CMakeCache.txt\z, and $file !~ m,(?:^|/)debian/,){ tag 'diff-contains-cmake-cache-file', $file; } # For everything else, we only care about diffs that add files. If # the file is being modified, that's not a problem with the diff and # we'll catch it later when we check the source. This regex doesn't # catch only file adds, just any diff that doesn't remove lines from a # file, but it's a good guess. next unless m,\|\s+\d+\s+\++$,; # diffstat output contains only files, but we consider the directory # checks to trigger if the diff adds any files in those directories. my ($directory) = ($file =~ m,^(.*)/[^/]+$,); if ($directory and not $warned->{$directory}) { for my $rule (@directory_checks) { if ($directory =~ /$rule->[0]/) { tag "diff-contains-$rule->[1]", $directory; $warned->{$directory} = 1; } } } # Now the simpler file checks. for my $rule (@file_checks) { if ($file =~ /$rule->[0]/) { tag "diff-contains-$rule->[1]", $file; $warned->{$file} = 1; } } # Additional special checks only for the diff, not the full source. if ($file =~ m@^debian/(?:.+\.)?substvars$@) { tag 'diff-contains-substvars', $file; } } close($fd); # If there was nothing in the diffstat output, there was nothing in the # diff, which is probably a mistake. tag 'empty-debian-diff' unless $saw_file; return; } # Check the debian directory for problems. This is used for Format: 2.0 and # 3.0 (quilt) packages where there is no Debian diff and hence no diffstat # output. Record any files we warn about in $warned so that we don't warn # again when checking the full unpacked source. sub check_debfiles { my ($info, $droot, $warned) = @_; (my $name = $File::Find::name) =~ s,^$droot/,,; # Check for unwanted directories and files. This really duplicates the # find_cruft function and we should find a way to combine them. if (-d) { for my $rule (@directory_checks) { if ($name =~ /$rule->[0]/) { tag "diff-contains-$rule->[1]", "debian/$name"; $warned->{"debian/$name"} = 1; } } } -f or return; for my $rule (@file_checks) { if ($name =~ /$rule->[0]/) { tag "diff-contains-$rule->[1]", "debian/$name"; $warned->{"debian/$name"} = 1; } } # Additional special checks only for the diff, not the full source. if ($name =~ m@^(?:.+\.)?substvars$@o) { tag 'diff-contains-substvars', "debian/$name"; } return; } # Check each file in the source package for problems. By the time we get to # this point, we've already checked the diff and warned about anything added # there, so we only warn about things that weren't in the diff here. # # Report problems with native packages using the "diff-contains" rather than # "source-contains" tag. The tag isn't entirely accurate, but it's better # than creating yet a third set of tags, and this gets the severity right. sub find_cruft { my ($info, $warned, $atdinbd, $ltinbd) = @_; my $prefix = ($info->native ? 'diff-contains' : 'source-contains'); my @worklist; # start with the top-level dirs push(@worklist, $info->index('')->children); ENTRY: while (my $entry = shift(@worklist)) { my $name = $entry->name; my $basename = $entry->basename; my $path; my $file_info; if ($entry->is_dir) { # Remove the trailing slash (historically we never # included the slash for these tags and there is no # particular reason to change that now). $name = substr($name, 0, -1); $basename = substr($basename, 0, -1); # Ignore the .pc directory and its contents, created as # part of the unpacking of a 3.0 (quilt) source package. # NB: this catches all .pc dirs (regardless of depth). If you # change that, please check we have a # "source-contains-quilt-control-dir" tag. next if $basename eq '.pc'; # Ignore files in test suites. They may be part of the test. next if $basename=~ m{ \A t (?: est (?: s (?: et)?+ )?+ )?+ \Z}xsm; if (not $warned->{$name}) { for my $rule (@directory_checks) { if ($basename =~ /$rule->[0]/) { tag "${prefix}-$rule->[1]", $name; # At most one rule will match last; } } } push(@worklist, $entry->children); next ENTRY; } if ($entry->is_symlink) { # An absolute link always escapes the root (of a source # package). For relative links, it escapes the root if we # cannot normalize it. if ($entry->link =~ m{\A / }xsm or not defined($entry->link_normalized)){ tag 'source-contains-unsafe-symlink', $name; } next ENTRY; } # we just need normal files for the rest next ENTRY unless $entry->is_file; # check non free file my $md5sum = $info->md5sums->{$name}; if( _md5sum_based_check( $name, $md5sum, $NON_DISTRIBUTABLE_FILES, 'license-problem-md5sum-non-distributable-file' ) ) { next ENTRY; } unless ($info->is_non_free) { _md5sum_based_check($name, $md5sum, $NON_FREE_FILES, 'license-problem-md5sum-non-free-file'); } $file_info = $info->file_info($name); # warn by file type foreach my $tag_filetype ($WARN_FILE_TYPE->all) { my $warn_data = $WARN_FILE_TYPE->value($tag_filetype); my $regtype = $warn_data->{'regtype'}; if($file_info =~ m{$regtype}) { my $regname = $warn_data->{'regname'}; if($name =~ m{$regname}) { tag $tag_filetype, $name; if($warn_data->{'checkmissing'}) { check_missing_source($entry,$info, $warn_data->{'transform'}); } } } } # waf is not allowed if ($basename =~ /\bwaf$/) { my $path = $info->unpacked($entry); my $marker = 0; open(my $fd, '<', $path); while (my $line = <$fd>) { next unless $line =~ m/^#/o; if ($marker && $line =~ m/^#BZ[h0][0-9]/o) { tag 'source-contains-waf-binary', $name; last; } $marker = 1 if $line =~ m/^#==>/o; # We could probably stop here, but just in case $marker = 0 if $line =~ m/^#<==/o; } close($fd); } unless ($warned->{$name}) { for my $rule (@file_checks) { next if ($rule->[2] and not $info->native); if ($basename =~ /$rule->[0]/) { tag "${prefix}-$rule->[1]", $name; } } } # Tests of autotools files are a special case. Ignore # debian/config.cache as anyone doing that probably knows what # they're doing and is using it as part of the build. if ($basename =~ m{\A config.(?:cache|log|status) \Z}xsm) { if ($entry->dirname ne 'debian') { tag 'configure-generated-file-in-source', $name; } }elsif ($basename =~ m{\A config.(?:guess|sub) \Z}xsm and not $atdinbd){ open(my $fd, '<', $info->unpacked($entry)); while (<$fd>) { last if $.> 10; # it's on the 6th line, but be a bit more lenient if (/^(?:timestamp|version)='((\d+)-(\d+).*)'$/) { my ($date, $year, $month) = ($1, $2, $3); if ($year < 2004) { tag 'ancient-autotools-helper-file', $name, $date; }elsif (($year < 2012) or ($year == 2012 and $month < 4)){ # config.sub >= 2012-04-18 (was 2012-02-10) # config.guess >= 2012-06-10 (was 2012-02-10) # Flagging anything earlier than 2012-04 as # outdated works, due to the "bumped from" # dates. tag 'outdated-autotools-helper-file', $name, $date; } } } close($fd); }elsif ($basename eq 'ltconfig' and not $ltinbd) { tag 'ancient-libtool', $name; }elsif ($basename eq 'ltmain.sh', and not $ltinbd) { open(my $fd, '<', $info->unpacked($entry)); while (<$fd>) { if (/^VERSION=[\"\']?(1\.(\d)\.(\d+)(?:-(\d))?)/) { my ($version, $major, $minor, $debian)=($1, $2, $3, $4); if ($major < 5 or ($major == 5 and $minor < 2)) { tag 'ancient-libtool', $name, $version; }elsif ($minor == 2 and (!$debian || $debian < 2)) { tag 'ancient-libtool', $name, $version; } last; } } close($fd); } full_text_check($entry, $info, $name, $info->unpacked($entry)); } return; } # try to check if source is missing sub check_missing_source { my ($file, $info, $replacementspairref) = @_; # do not check missing source for non free if($info->is_non_free) { return; } my @replacementspair; if(defined($replacementspairref)) { @replacementspair = @{$replacementspairref}; } unless ($file->is_regular_file) { return; } my $basename = $file->basename; my $dirname = $file->dirname; my $name = $file->name; # try to find for each replacement REPLACEMENT: foreach my $pair (@replacementspair) { my $newbasename = $basename; my ($match, $replace) = @{$pair}; if($match eq '') { $newbasename = $basename; } else { $newbasename =~ s/$match/$replace/g; } # next but we may be return an error if($newbasename eq '') { next REPLACEMENT; } # now try for each path PATH: foreach my $path ($MISSING_DIR_SEARCH_PATH->all) { my $newpath; # first replace dir name $path =~ s/\$dirname/$dirname/g; # absolute path if(substr($path,0,1) eq '/') { $path =~ s,^/+,,g; $newpath = normalize_pkg_path($path.'/'.$newbasename); } # relative path else { $newpath = normalize_pkg_path($dirname.'/'.$newbasename); } # ok we get same name => next if($newpath eq $name) { next PATH; } # do not check empty if($newpath eq '') { next PATH; } # found source return if($info->index($newpath)) { return; } } } tag 'source-is-missing', $name; return; } # do basic license check against well known offender # note that it does not replace licensecheck(1) # and is only used for autoreject by ftp-master sub full_text_check { my ($entry, $info, $name, $path) = @_; # license string in debian/changelog are probably just change # Ignore these strings in d/README.{Debian,source}. If they # appear there it is probably just "file XXX got removed # because of license Y". if ( $name eq 'debian/changelog' or $name eq 'debian/README.Debian' or $name eq 'debian/README.source') { return; } my $isjsfile = ($name =~ m/\.js/) ? 1 : 0; if($isjsfile) { my $minjsregexp = _minified_javascript_name_regexp(); $isjsfile = ($name =~ m{$minjsregexp}) ? 0 : 1; } open(my $fd, '<:raw', $path); # allow to check only text file unless (-T $fd) { close($fd); return; } # some js file comments are really really long my $sfd = Lintian::SlidingWindow->new($fd, \&lc_block,$isjsfile ? 8092 : 4096); my %licenseproblemhash; # we try to read this file in block and use a sliding window # for efficiency. We store two blocks in @queue and the whole # string to match in $block. Please emit license tags only once # per file BLOCK: while (my $block = $sfd->readwindow()) { my ($cleanedblock, %matchedkeyword); my $blocknumber = $sfd->blocknumber(); if( _license_check( $name, $NON_DISTRIBUTABLE_LICENSES, $block, $blocknumber, \$cleanedblock, \%matchedkeyword, \%licenseproblemhash ) ){ return; } # some license issues do not apply to non-free # because these file are distribuable if ($info->is_non_free) { next BLOCK; } _license_check($name, $NON_FREE_LICENSES, $block, $blocknumber,\$cleanedblock, \%matchedkeyword, \%licenseproblemhash); # check javascript problem if($isjsfile) { if($blocknumber == 0) { my $strip = $block; # from perl faq strip comments $strip =~ s#/\*[^*]*\*+([^/*][^*]*\*+)*/|//([^\\]|[^\n][\n]?)*?\n|("(\\.|[^"\\])*"|'(\\.|[^'\\])*'|.[^/"'\\]*)#defined $3 ? $3 : ""#gse; # strip empty line $strip =~ s/^\s*\n//mg; # remove last \n $strip =~ s/\n\Z//m; # compute now means line length my $total = length($strip); if($total > 0) { my $linelength = $total/($strip =~ tr/\n// + 1); if($linelength > 255) { tag 'source-contains-prebuilt-javascript-object', $name, 'means line length is about', $linelength, 'characters'; # Check for missing source. It will check # for the source file in well known directories check_missing_source($entry,$info,[['','']]); } } } } } close($fd); return; } sub _tag_gfdl { my ($applytag, $name, $gfdlsections) = @_; tag $applytag, $name, 'invariant part is:', $gfdlsections; return; } # return True in case of license problem sub _check_gfdl_license_problem { my ($name,$block,$blocknumber,$cleanedblock,$matchedkeyword, $licenseproblemhash,%matchedhash) = @_; my $rawgfdlsections = $matchedhash{rawgfdlsections} || ''; my $rawcontextbefore = $matchedhash{rawcontextbefore} || ''; # strip puntuation my $gfdlsections = _strip_punct($rawgfdlsections); my $contextbefore = _strip_punct($rawcontextbefore); # remove classical and without meaning part of # matched string $gfdlsections =~ s{ \A version [ ] \d+(?:\.\d+)? [ ] (?:or [ ] any [ ] later [ ] version [ ])? published [ ] by [ ] the [ ] free [ ] software [ ] foundation [ ]?[,\.;]?[ ]?}{}xismo; $contextbefore =~ s{ [ ]? (:?[,\.;]? [ ]?)? permission [ ] is [ ] granted [ ] to [ ] copy [ ]?[,\.;]?[ ]? distribute [ ]?[,\.;]?[ ]? and[ ]?/?[ ]?or [ ] modify [ ] this [ ] document [ ] under [ ] the [ ] terms [ ] of [ ] the\Z} {}xismo; # Treat ambiguous empty text unless( defined( $licenseproblemhash->{'license-problem-gfdl-invariants-empty'}) ) { if ($gfdlsections eq '') { # lie in order to check more part tag 'license-problem-gfdl-invariants-empty', $name; $licenseproblemhash->{'license-problem-gfdl-invariants-empty'}= 1; return 0; } } # official wording if( $gfdlsections =~ m/\A with [ ] no [ ] invariant [ ] sections[ ]?, [ ]? no [ ] front(?:[ ]?-[ ]?|[ ])cover [ ] texts[ ]?,? [ ]? and [ ] no [ ] back(?:[ ]?-?[ ]?|[ ])cover [ ] texts \Z/xso ) { return 0; } # example are ok if ( $contextbefore =~ m/following [ ] is [ ] an [ ] example (:?[ ] of [ ] the [ ] license [ ] notice [ ] to [ ] use (?:[ ] after [ ] the [ ] copyright [ ] (?:line(?:\(s\)|s)?)? (?:[ ] using [ ] all [ ] the [ ] features? [ ] of [ ] the [ ] gfdl)? )? )? [ ]? [,:]? \Z/xso ){ return 0; } # GFDL license, assume it is bad unless it # explicitly states it has no "bad sections". foreach my $gfdl_fragment ($GFDL_FRAGMENTS->all) { my $gfdl_data = $GFDL_FRAGMENTS->value($gfdl_fragment); my $gfdlsectionsregex = $gfdl_data->{'gfdlsectionsregex'}; if ($gfdlsections =~ m{$gfdlsectionsregex}) { my $acceptonlyinfile = $gfdl_data->{'acceptonlyinfile'}; if ($name =~ m{$acceptonlyinfile}) { my $applytag = $gfdl_data->{'tag'}; if(defined($applytag)) { unless(defined($licenseproblemhash->{$applytag})) { # lie will allow to check more block _tag_gfdl($applytag, $name, $gfdlsections); $licenseproblemhash->{$applytag} = 1; return 0; } } return 0; }else { _tag_gfdl('license-problem-gfdl-invariants', $name, $gfdlsections); return 1; } } } # catch all clause _tag_gfdl('license-problem-gfdl-invariants', $name, $gfdlsections); return 1; } sub _clean_block { my ($text) = @_; # be paranoiac replace gnu with texinfo by gnu $text =~ s{ (?:@[[:alpha:]]*?\{)?\s*gnu\s*\} # Tex info cmd }{ gnu }gxms; # pod2man formating $text =~ s{ \\ \* \( [LR] \" }{\"}gxsm; $text =~ s{ \\ -}{-}gxsm; # replace some common comment-marker/markup with space $text =~ s{(?: ^\.\\\" | # man comments \@c(?:omment)?\s+ | # Tex info comment \@(?:b|i|r|t)\{ | # Tex info bold, italic, roman, fixed width \@(?:sansserif|slanted)\{ | # Tex info sans serif/slanted \@var\{ | # Tex info emphasis \@(?:small)?example\s+ | # Tex info example \@end\h+(?:small)example\s+ | # Tex info end small example tag \@group\s+ | # Tex info group \@end\h+group\s+ | # Tex info end group \} | # Tex info end tag (could be more clever but brute force is fast) \"\s*, | # String array (e.g. "line1",\n"line2") ,\s*\" | # String array (e.g. "line1"\n ,"line2"), seen in findutils | # (X)HTML line breaks | # end XML comment ]*?> | # xml link ]*?> | # a link ]*?> | # citation title in docbook ]*?> | # html style ]*?> | # html paragraph ]*?> | # span tag ]*?> | # var tag used by html from texinfo ^[-\+!<>] | # diff/patch lines (should be after html tag) \(\*note.*?::\) | # info file note \\n | # Verbatim \n in string array \\& | # pod2man formating \\s(?:0|-1) | # pod2man formating (?:``|'') | # quote like [%\*\"\|\\\#] # String, C-style comment/javadoc indent, # quotes for strings, pipe and antislash in some txt # shell or po file comments )}{ }gxms; # delete double spacing now and normalize spacing # to space character $text =~ s{\s++}{ }gsm; strip($text); return $text; } # do not use space arround punctuation sub _strip_punct() { my ($text) = @_; # replace final punctuation $text =~ s{(?: \s*[,\.;]\s*\Z | # final punctuation \A\s*[,\.;]\s* # punctuation at the beginning )}{ }gxms; # delete double spacing now and normalize spacing # to space character $text =~ s{\s++}{ }gsm; strip($text); return $text; } sub lc_block { return $_ = lc($_); } # check based on md5sums sub _md5sum_based_check { my ($name, $md5sum, $data, $tag) = @_; if (my $datavalue = $data->value($md5sum)) { my $usualname= $datavalue->{'name'}; my $reason= $datavalue->{'reason'}; my $link= $datavalue->{'link'}; tag $tag, $name, 'usual name is', "$usualname.", "$reason", "See also $link."; # should be stripped so pass other test return 1; } return 0; } # check bad license sub _license_check { my ($name, $licensesdatas, $block, $blocknumber, $cleanedblock, $matchedkeyword, $licenseproblemhash) = @_; my $ret = 0; LICENSE: foreach my $licenseproblem ($licensesdatas->all) { my $licenseproblemdata = $licensesdatas->value($licenseproblem); if(defined($licenseproblemhash->{$licenseproblem})) { next LICENSE; } # do fast keyword search my @keywordslist = @{$licenseproblemdata->{'keywords'}}; foreach my $keyword (@keywordslist) { my $thiskeyword = $matchedkeyword->{$keyword}; if(not defined($thiskeyword)) { if(index($block, $keyword) > -1) { $matchedkeyword->{$keyword} = 1; }else { $matchedkeyword->{$keyword} = 0; next LICENSE; } } elsif ($thiskeyword == 0) { next LICENSE; } } # clean block now in order to normalise space and check a sentence unless(defined($$cleanedblock)) { $$cleanedblock = _clean_block($block); } unless(index($$cleanedblock,$licenseproblemdata->{'sentence'}) > -1){ next LICENSE; } my $regex = $blocknumber ? $licenseproblemdata->{'regex'} : $licenseproblemdata->{'firstregex'}; unless($$cleanedblock =~ $regex) { next LICENSE; } if(defined($licenseproblemdata->{'callsub'})) { my $subresult= $licenseproblemdata->{'callsub'}->( $name, $block,$blocknumber,$cleanedblock,$matchedkeyword, $licenseproblemhash,%+ ); if($subresult) { $licenseproblemhash->{$licenseproblem} = 1; $ret = 1; next LICENSE; } }else { tag $licenseproblem, $name; $licenseproblemhash->{$licenseproblem} = 1; $ret = 1; next LICENSE; } } return $ret; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/debhelper.pm0000664000000000000000000004554212311317603015213 0ustar # debhelper format -- lintian check script -*- perl -*- # Copyright (C) 1999 by Joey Hess # # 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::debhelper; use strict; use warnings; use autodie; use Lintian::Data; use Lintian::Relation; use Lintian::Tags qw(tag); use Lintian::Util qw(is_ancestor_of slurp_entire_file strip); # If compat is less than or equal to this, then a missing version # for this level is only a pedantic issue. use constant PEDANTIC_COMPAT => 8; # If there is no debian/compat file present but cdbs is being used, cdbs will # create one automatically. Currently it always uses compatibility level 5. # It may be better to look at what version of cdbs the package depends on and # from that derive the compatibility level.... my $cdbscompat = 5; my $maint_commands = Lintian::Data->new('debhelper/maint_commands'); my $dh_commands_depends = Lintian::Data->new('debhelper/dh_commands', '='); my $filename_configs = Lintian::Data->new('debhelper/filename-config-files'); my $dh_ver_deps= Lintian::Data->new('debhelper/dh_commands-manual', qr/\|\|/o); my $dh_addons = Lintian::Data->new('debhelper/dh_addons', '='); my $dh_addons_manual = Lintian::Data->new('debhelper/dh_addons-manual', qr/\|\|/o); my $MISC_DEPENDS = Lintian::Relation->new('${misc:Depends}'); sub run { my (undef, undef, $info) = @_; my $droot = $info->debfiles; my $seencommand = ''; my $needbuilddepends = ''; my $needdhexecbuilddepends = ''; my $needtomodifyscripts = ''; my $level; my $seenversiondepends = '0'; my $compat = 0; my $usescdbs = ''; my $seendhcleank = ''; my %missingbdeps; my %missingbdeps_addons; my $maybe_skipping; my $dhcompatvalue; my $inclcdbs = 0; my $bdepends_noarch; my $bdepends; my $seen_dh = 0; my $seen_python_helper = 0; my $seen_python3_helper = 0; if (!-f "$droot/rules" || !is_ancestor_of($droot, "$droot/rules")) { # unsafe symlink return; } open(my $rules_fd, '<', "$droot/rules"); while (<$rules_fd>) { while (s,\\$,, and defined(my $cont = <$rules_fd>)) { $_ .= $cont; } if (/^ifn?(?:eq|def)\s/) { $maybe_skipping++; } elsif (/^endif\s/) { $maybe_skipping--; } if (m/^\s+-?(dh_\S+)/) { my $dhcommand = $1; if ($dhcommand eq 'dh_suidregister') { tag 'dh_suidregister-is-obsolete', "line $."; } if ($dhcommand eq 'dh_undocumented') { tag 'dh_undocumented-is-obsolete', "line $."; } if ($dhcommand eq 'dh_pysupport') { tag 'dh_pysupport-is-obsolete', "line $."; $seen_python_helper = 1; } if ($dhcommand eq 'dh_installmanpages') { tag 'dh_installmanpages-is-obsolete', "line $."; } if ($dhcommand eq 'dh_python3') { $seen_python3_helper = 1; } if ($dhcommand =~ m,^dh_(?:pysupport$|python(?:2$|\$.*)),) { $seen_python_helper = 1; } # Don't warn about recently deprecated commands in code that may be # optional. It may be there only for backports. unless ($maybe_skipping) { if ($dhcommand eq 'dh_desktop') { tag 'dh_desktop-is-deprecated', "line $."; } if ($dhcommand eq 'dh_scrollkeeper') { tag 'dh_scrollkeeper-is-deprecated', "line $."; } if ($dhcommand eq 'dh_clean' and m/\s+\-k(?:\s+.*)?$/s) { $seendhcleank = 1; } } # if command is passed -n, it does not modify the scripts if ($maint_commands->known($dhcommand) and not m/\s+\-n\s+/) { $needtomodifyscripts = 1; } # If debhelper commands are wrapped in make conditionals, assume the # maintainer knows what they're doing and don't check build # dependencies. unless ($maybe_skipping) { if ($dh_ver_deps->known($dhcommand)) { my $dep = $dh_ver_deps->value($dhcommand); $missingbdeps{$dep} = $dhcommand; } elsif ($dh_commands_depends->known($dhcommand)) { my $dep = $dh_commands_depends->value($dhcommand); $missingbdeps{$dep} = $dhcommand; } } $seencommand = 1; $needbuilddepends = 1; } elsif (m,^\s+dh\s+,) { $seen_dh = 1; $seencommand = 1; $needbuilddepends = 1; $needtomodifyscripts = 1; while (m/\s--with(?:=|\s+)(\S+)/go) { my $addon_list = $1; for my $addon (split(m/,/o, $addon_list)) { $addon =~ y,-,_,; my $depends =$dh_addons_manual->value($addon) || $dh_addons->value($addon); if (defined $depends) { $missingbdeps_addons{$depends} = $addon; } if ($addon =~ m,python(?:2|_central|_support)$,) { $seen_python_helper = 1; } elsif ($addon eq 'python3') { $seen_python3_helper = 1; } } } if (m,\$[({]\w,) { # the variable could contain any add-ons $seen_python_helper = 1; $seen_python3_helper = 1; } if ($seen_python_helper == 0) { $seen_python_helper = -1; # maybe; we'll check that later } } elsif (m,^include\s+/usr/share/cdbs/1/rules/debhelper.mk,) { $seencommand = 1; $needbuilddepends = 1; $needtomodifyscripts = 1; $inclcdbs = 1; # CDBS sets DH_COMPAT but doesn't export it. It does, however, create # a debian/compat file if none was found; that logic is handled later. $dhcompatvalue = $cdbscompat; $usescdbs = 1; } elsif (/^\s*export\s+DH_COMPAT\s*:?=\s*([^\s]+)/) { $level = $1; } elsif (/^\s*export\s+DH_COMPAT/) { $level = $dhcompatvalue if $dhcompatvalue; } elsif (/^\s*DH_COMPAT\s*:?=\s*([^\s]+)/) { $dhcompatvalue = $1; # one can export and then set the value: $level = $1 if ($level); } elsif (/^override_dh_/) { $needbuilddepends = 1; } elsif (m,^include\s+/usr/share/cdbs/, or m,^include\s+/usr/share/R/debian/r-cran.mk,o) { $inclcdbs = 1; } } close($rules_fd); unless ($inclcdbs){ my $bdepends = $info->relation('build-depends-all'); # Okay - d/rules does not include any file in /usr/share/cdbs/ tag 'unused-build-dependency-on-cdbs' if ($bdepends->implies('cdbs')); } return unless $seencommand; my @pkgs = $info->binaries; my $single_pkg = ''; $single_pkg = $info->binary_package_type($pkgs[0]) if scalar @pkgs == 1; for my $binpkg (@pkgs) { next if $info->binary_package_type($binpkg) ne 'deb'; my $strong = $info->binary_relation($binpkg, 'strong'); my $all = $info->binary_relation($binpkg, 'all'); if (!$all->implies($MISC_DEPENDS)) { tag 'debhelper-but-no-misc-depends', $binpkg; } else { tag 'weak-dependency-on-misc-depends', $binpkg unless $strong->implies($MISC_DEPENDS); } } my $compatnan = 0; # Check the compat file. Do this separately from looping over all # of the other files since we use the compat value when checking # for brace expansion. if (-f "$droot/compat") { my $compat_file = slurp_entire_file("$droot/compat"); ($compat) = split(/\n/, $compat_file); strip($compat); if ($compat ne '') { if ($compat !~ m/^\d+$/) { tag 'debhelper-compat-not-a-number', $compat; $compat =~ s/[^\d]//g; $compatnan = 1; } if ($level) { tag 'declares-possibly-conflicting-debhelper-compat-versions', "rules=$level compat=$compat"; } else { # this is not just to fill in the gap, but because debhelper # prefers DH_COMPAT over debian/compat $level = $compat; } } else { tag 'debhelper-compat-file-is-empty'; } } else { tag 'debhelper-compat-file-is-missing'; } if (defined($level) and $level !~ m/^\d+$/ and not $compatnan) { tag 'debhelper-compatibility-level-not-a-number', $level; $level =~ s/[^\d]//g; $compatnan = 1; } if ($usescdbs and not defined($level)) { $level = $cdbscompat; } $level ||= 1; if ($level < 5) { tag 'package-uses-deprecated-debhelper-compat-version', $level; } if ($seendhcleank and $level >= 7) { tag 'dh-clean-k-is-deprecated'; } # Check the files in the debian directory for various debhelper-related # things. my @indebfiles = (); opendir(my $dirfd, $droot); for my $file (sort(readdir($dirfd))) { next if $file eq 'rules' or not -f "$droot/$file"; if ($file =~ m/^(?:(.*)\.)?(?:post|pre)(?:inst|rm)$/) { next unless $needtomodifyscripts; next unless is_ancestor_of($droot, "$droot/$file"); # They need to have #DEBHELPER# in their scripts. Search # for scripts that look like maintainer scripts and make # sure the token is there. my $binpkg = $1 || ''; my $seentag = ''; open(my $fd, '<', "$droot/$file"); while (<$fd>) { if (m/\#DEBHELPER\#/) { $seentag = 1; last; } } close($fd); if (!$seentag) { my $binpkg_type = $info->binary_package_type($binpkg) // 'deb'; my $is_udeb = 0; $is_udeb = 1 if $binpkg and $binpkg_type eq 'udeb'; $is_udeb = 1 if not $binpkg and $single_pkg eq 'udeb'; if (not $is_udeb) { tag 'maintainer-script-lacks-debhelper-token', "debian/$file"; } } } elsif ($file eq 'control' or $file =~ m/^(?:.*\.)?(?:copyright|changelog|NEWS)$/o) { # Handle "control", [.]copyright, [.]changelog # and [.]NEWS _tag_if_executable($file, "$droot/$file"); } elsif ($file =~ m/^ex\.|\.ex$/i) { tag 'dh-make-template-in-source', "debian/$file"; } elsif ($file =~ m/^(?:.+\.)?debhelper(?:\.log)?$/){ # The regex matches "debhelper", but debhelper/Dh_Lib does not # make those, so skip it. if ($file ne 'debhelper') { push(@indebfiles, $file); } } else { my $base = $file; $base =~ s/^.+\.//; # Check whether this is a debhelper config file that takes # a list of filenames. if ($filename_configs->known($base)) { next unless is_ancestor_of($droot, "$droot/$file"); if ($level < 9) { # debhelper only use executable files in compat 9 _tag_if_executable($file, "$droot/$file"); } else { if (-x "$droot/$file") { my $cmd= _shebang_cmd("debian/$file", "$droot/$file"); unless ($cmd) { #<<< perltidy doesn't handle this too well tag 'executable-debhelper-file-without-being-executable', "debian/$file"; #>>> } # Do not make assumptions about the contents of an # executable debhelper file, unless it's a dh-exec # script. if ($cmd =~ /dh-exec/) { $needdhexecbuilddepends = 1; _check_dh_exec($cmd, $base, "debian/$file", "$droot/$file"); } next; } } # Skip brace expansion check for compat < 3 as those files # do not allow any form for wildcards. next if $level < 3; open(my $fd, '<', "$droot/$file"); local $_; while (<$fd>) { next if /^\s*$/; next if (/^\#/ and $level >= 5); if (m/(?relation_noarch('build-depends-all'); $bdepends = $info->relation('build-depends-all'); if ($needbuilddepends && !$bdepends->implies('debhelper')) { tag 'package-uses-debhelper-but-lacks-build-depends'; } if ($needdhexecbuilddepends && !$bdepends->implies('dh-exec')) { tag 'package-uses-dh-exec-but-lacks-build-depends'; } while (my ($dep, $command) = each %missingbdeps) { next if $dep eq 'debhelper'; #handled above tag 'missing-build-dependency-for-dh_-command', "$command => $dep" unless ($bdepends_noarch->implies($dep)); } while (my ($dep, $addon) = each %missingbdeps_addons) { tag 'missing-build-dependency-for-dh-addon', "$addon => $dep" unless ($bdepends_noarch->implies($dep)); } unless ($bdepends->implies("debhelper (>= $level~)")){ my $tagname = 'package-needs-versioned-debhelper-build-depends'; $tagname = 'package-lacks-versioned-build-depends-on-debhelper' if ($level <= PEDANTIC_COMPAT); tag $tagname, $level; } if (scalar(@indebfiles)){ my $f = pop(@indebfiles); my $others = scalar(@indebfiles); my $otext = ''; if ($others > 1){ $otext = " and $others others"; } elsif($others == 1){ $otext = ' and 1 other'; } tag 'temporary-debhelper-file', "$f$otext"; } if ($seen_python_helper == -1 and $level >= 9) { $seen_python_helper = 0; } if ($seen_dh and $seen_python_helper != 1) { my %python_depends = (); for my $binpkg (@pkgs) { if ($info->binary_relation($binpkg, 'all') ->implies('${python:Depends}')) { $python_depends{$binpkg} = 1; } } if (%python_depends) { if ($seen_python_helper == -1) { $seen_python_helper = $bdepends_noarch->implies('python-support'); } if (not $seen_python_helper) { tag 'python-depends-but-no-python-helper', sort(keys %python_depends); } } } if ($seen_dh and $seen_python3_helper != 1) { my %python3_depends = (); for my $binpkg (@pkgs) { if ($info->binary_relation($binpkg, 'all') ->implies('${python3:Depends}')) { $python3_depends{$binpkg} = 1; } } if (%python3_depends and not $seen_python3_helper) { tag 'python3-depends-but-no-python3-helper', sort(keys %python3_depends); } } return; } sub _tag_if_executable { my ($file, $path) = @_; tag 'package-file-is-executable', "debian/$file" if -f $path && -x _; return; } # Perform various checks on a dh-exec file. sub _check_dh_exec { my ($cmd, $base, $pkgpath, $fspath) = @_; # Only /usr/bin/dh-exec is allowed, even if # /usr/lib/dh-exec/dh-exec-subst works too. if ($cmd =~ m,/usr/lib/dh-exec/,) { tag 'dh-exec-private-helper', $pkgpath; } my ($dhe_subst, $dhe_install) = (0, 0); open(my $fd, '<', $fspath); while (<$fd>) { if (/\$\{([^\}]+)\}/) { my $sv = $1; $dhe_subst = 1; if ( $sv !~ m{ \A DEB_(?:BUILD|HOST)_(?: ARCH (?: _OS|_CPU|_BITS|_ENDIAN )? |GNU_ (?:CPU|SYSTEM|TYPE)|MULTIARCH ) \Z}xsm ) { tag 'dh-exec-subst-unknown-variable', $pkgpath, $sv; } } $dhe_install = 1 if / => /; } close($fd); if (!($dhe_subst || $dhe_install)) { tag 'dh-exec-script-without-dh-exec-features', $pkgpath; } if ($dhe_install && $base ne 'install') { tag 'dh-exec-install-not-allowed-here', $pkgpath; } return; } # Return the command after the #! in the file (if any). # - if there is no command or no #! line, the empty string is returned. sub _shebang_cmd { my ($pkgpath, $fspath) = @_; my $magic; my $cmd = ''; open(my $fd, '<', $fspath); if (read($fd, $magic, 2)) { if ($magic eq '#!') { $cmd = <$fd>; # It is beyond me why anyone would place a lincity data # file here... but if they do, we will handle it # correctly. $cmd = '' if $cmd =~ m/^#!/o; strip($cmd); } } close($fd); # We are not checking if it is an ELF executable. While debhelper # allows this (i.e. it also checks for ..), it is # no cross-compilation safe. This is because debhelper uses # "HOST" (and not "BUILD") arch, despite its documentation and # code (incorrectly) suggests it is using "build". # # Oh yeah, it is also a terrible waste to keep pre-compiled # binaries for all architectures in the source as well. :) return $cmd; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/duplicate-files.desc0000664000000000000000000000132312310413144016616 0ustar Check-Script: duplicate-files Author: Niels Thykier Abbrev: dupf Type: binary Needs-Info: md5sums, index Info: This script checks for duplicate files using checksums Tag: duplicate-files Severity: pedantic Certainty: possible Experimental: yes Info: The package ships the two (or more) files with the exact same contents. . Note: empty files are exempt from this check. Tag: duplicate-changelog-files Severity: normal Certainty: possible Info: The package appears to be shipping two copies of the changelog. . If the second copy is really needed, consider making it a symlink to the canonical place for the relevant changelog. . Both upstream and debian changelogs are checked with this tag. lintian-2.5.22ubuntu1/checks/debconf.desc0000664000000000000000000003173112310413206015151 0ustar Check-Script: debconf Author: Colin Watson Abbrev: dc Type: binary, udeb, source Info: This looks for common mistakes in packages using debconf. Needs-Info: bin-pkg-control, debfiles, unpacked, scripts Tag: missing-debconf-dependency Severity: normal Certainty: possible Info: Packages using debconf should depend on it, since debconf is not an essential package. Tag: missing-debconf-dependency-for-preinst Severity: normal Certainty: possible Info: Packages using debconf in their preinst script must pre-depend on debconf, with appropriate discussion on &debdev;. Since debconf is almost always already installed, this is normally better than depending on it and falling back to a different configuration system. Tag: unknown-field-in-templates Severity: important Certainty: certain Info: Valid fields are currently "Template:", "Type:", "Choices:", "Default:", and "Description:". Ref: debconf-spec aen45, debconf-devel(7) Tag: no-template-name Severity: important Certainty: certain Info: The templates file contains a template without a "Template:" field. Tag: malformed-template-name Severity: important Certainty: certain Info: The "Template:" field should contain more than one component, each separated by a slash ("/"). Each component may only consist of the alphanumeric characters, "+", "-", and ".". Tag: no-template-type Severity: important Certainty: certain Info: The templates file contains a template without a "Type:" field. Tag: unknown-template-type Severity: important Certainty: certain Info: A "Type:" field in a templates file provided by this package uses an unknown data type. Valid types are currently "string", "boolean", "select", "multiselect", "note", "text", and "password". Tag: empty-translated-choices Severity: important Certainty: possible Info: When the translation of a Choices: field is empty, the whole question is skipped (and nothing is selected). Please verify that the translation you're using is valid. Tag: mismatch-translated-choices Severity: important Certainty: certain Info: A "Choices:" field is a comma separated list, and translated "Choices:" fields must have the exact same number of elements. One of the translations does not follow this rule, you should contact the translator and request for a new translation where elements of "Choices:" fields have no embedded commas. . Cdebconf understands escaped commas in such fields, but packages outside the scope of debian-installer must not have them until they are also supported by debconf. Tag: select-without-choices Severity: important Certainty: certain Info: Templates using the "select" or "multiselect" data types must provide a "Choices:" field listing the possible values of the template. Ref: debconf-spec aen45, debconf-devel(7) Tag: boolean-template-has-bogus-default Severity: important Certainty: certain Info: The "boolean" type in a debconf template, can have only two values: true and false. The default has been set to something different. Ref: debconf-spec aen45, debconf-devel(7) Tag: no-template-description Severity: important Certainty: certain Info: The templates file contains a template without a "Description:" field. Ref: debconf-spec aen45, debconf-devel(7) Tag: duplicate-long-description-in-template Severity: minor Certainty: certain Info: The long description of one of the templates provided by this package is a duplicate of the short description. If you cannot provide a good extended description, it is better to leave it blank. Tag: config-does-not-load-confmodule Severity: normal Certainty: certain Info: The config script must load one of the debconf libraries. Tag: postinst-uses-db-input Severity: normal Certainty: possible Info: It is generally not a good idea for postinst scripts to use debconf commands like db_input. Typically, they should restrict themselves to db_get to request previously acquired information, and have the config script do the actual prompting. Tag: postinst-does-not-load-confmodule Severity: normal Certainty: certain Info: Even if your postinst does not involve debconf, you currently need to make sure it loads one of the debconf libraries. This will be changed in the future. Tag: loads-obsolete-confmodule Severity: normal Certainty: certain Info: The maintainer script uses an obsolete name for a debconf confmodule. Shell scripts should source /usr/share/debconf/confmodule, while Perl scripts should use Debconf::Client::ConfModule. Ref: debconf-devel(7) Tag: postrm-does-not-purge-debconf Severity: normal Certainty: certain Info: Packages using debconf should call db_purge or its equivalent in their postrm. If the package uses debhelper, dh_installdebconf(1) should take care of this. Tag: isdefault-flag-is-deprecated Severity: normal Certainty: possible Info: The "isdefault" flag on debconf questions is deprecated as of debconf 0.5.00, and has been replaced by "seen" with the inverse meaning. From debconf 0.5 onwards there should be very few reasons to use isdefault/seen anyway, as backing up works much better now. See /usr/share/doc/debconf-doc/changelog.gz for more information. . The misuse of isdefault often leads to questions being asked twice in one installation run, or, worse, on every upgrade. Please test your package carefully to make sure this does not happen. Tag: debconf-config-not-executable Severity: important Certainty: certain Info: The debconf "config" script in the package control area must be executable. Tag: no-debconf-config Severity: important Certainty: possible Info: The package contains a "templates" file in its control area but has no corresponding "config" script. This is occasionally OK, but is usually an error. Tag: no-debconf-templates Severity: normal Certainty: possible Info: The package contains a "config" script in its control area but has no corresponding "templates" file. This is occasionally OK, but is usually an error. Tag: debconf-is-not-a-registry Severity: important Certainty: wild-guess Info: In the Unix tradition, Debian packages should have human-readable and human-editable configuration files. This package uses debconf commands outside its maintainer scripts, which often indicates that it is taking configuration information directly from the debconf database. Typically, packages should use debconf-supplied information to generate configuration files, and -- to avoid losing configuration information on upgrades -- should parse these configuration files in the config script if it is necessary to ask the user for changes. . Some standalone programs may legitimately use debconf to prompt the user for questions. If you maintain a package containing such a program, please install an override. Other exceptions to this check include configuration scripts called from the package's post-installation script. Ref: devref 6.5.1, debconf-devel(7) Tag: malformed-prompt-in-templates Severity: normal Certainty: certain Info: The short description of a select, multiselect, string and password debconf template is a prompt and not a title. Avoid question style prompts ("IP Address?") in favour of "opened" prompts ("IP address:"). The use of colons is recommended. . If this template is only used internally by the package and not displayed to the user, put "for internal use" in the short description. Ref: devref 6.5.4.2 Tag: malformed-title-in-templates Severity: normal Certainty: certain Info: The short description of a note debconf template should be written as a title and therefore should not end with a period, question mark, colon, or semicolon. Ref: devref 6.5.4.2.4 Tag: malformed-question-in-templates Severity: normal Certainty: certain Info: The short description of a boolean debconf template should be phrased in the form of a question which should be kept short and should generally end with a question mark. Terse writing style is permitted and even encouraged if the question is rather long. . If this template is only used internally by the package and not displayed to the user, put "for internal use" in the short description. Ref: devref 6.5.4.2.2 Tag: using-question-in-extended-description-in-templates Severity: normal Certainty: certain Info: The extended description of a debconf template should never include a question. . If this template is only used internally by the package and not displayed to the user, put "for internal use" in the short description. Ref: devref 6.5.3.2 Tag: using-imperative-form-in-templates Severity: normal Certainty: certain Info: Do not use useless imperative constructions such as "Please choose...", "Enter...". The interface will make it obvious that the user needs to choose or enter something. Ref: devref 6.5.4.2 Tag: using-first-person-in-templates Severity: normal Certainty: possible Info: You should avoid the use of first person ("I will do this..." or "We recommend..."). The computer is not a person and the Debconf templates do not speak for the Debian developers. You should use neutral construction and often the passive form. . If this template is only used internally by the package and not displayed to the user, put "for internal use" in the short description. Ref: devref 6.5.2.5 Tag: making-assumptions-about-interfaces-in-templates Severity: normal Certainty: possible Info: Template text should not make reference to widgets belonging to some debconf interfaces. Sentences like "If you answer Yes..." have no meaning for users of graphical interfaces which use checkboxes for boolean questions. Ref: devref 6.5.2.4 Tag: too-long-short-description-in-templates Severity: normal Certainty: certain Info: The short description should be kept short (50 characters or so) so that it may be accommodated by most debconf interfaces. Keeping it short also helps translators, as usually translations tend to end up being longer than the original. Ref: devref 6.5.3.2 Tag: too-long-extended-description-in-templates Severity: normal Certainty: certain Info: Some debconf interfaces cannot deal very well with descriptions of more than about 20 lines, so try to keep the extended description below this limit. Ref: devref 6.5.3.2 Tag: unknown-debconf-priority Severity: important Certainty: certain Info: The given maintainer script calls db_input or or db_text with a first argument that doesn't match one of the known priorities. The supported priorities are low, medium, high, and critical. Ref: debconf-devel(7) Tag: possible-debconf-note-abuse Severity: normal Certainty: possible Info: Debconf notes should be used only for important notes that the user really should see, since debconf will go to great pains to make sure the user sees it. . Displaying a note with a low priority is conflicting with this statement, since using a low or medium priority shows that the note is not important. . The right fix is NOT to increase the priority of the note, but to move it somewhere else in the inline documentation, for example in a README.Debian file for notes about package usability or NEWS.Debian for changes in the package behavior, or to simply drop it if it is not needed (e.g. "welcome" notes). Changing the templates type to "error" can also be appropriate, such as for input validation errors. Ref: policy 3.9.1 Tag: select-with-boolean-choices Severity: normal Certainty: possible Info: Select templates with only yes and no choices should use the boolean type instead. Ref: debconf-devel(7) Tag: template-uses-unsplit-choices Severity: normal Certainty: possible Info: The use of _Choices in templates is deprecated. An _Choices field must be translated as a single string. . Using __Choices allows each choice to be translated separately, easing translation and is therefore recommended. . Instead of simply replacing all occurrences of "_Choices" by "__Choices", apply the method described in po-debconf(7) under "SPLITTING CHOICES LIST", to avoid breaking existing translations. . If in doubt, please ask for help on the debian-i18n mailing list. Ref: po-debconf(7) Tag: unused-debconf-template Severity: minor Certainty: possible Info: Templates which are not used by the package should be removed from the templates file. . This will reduce the size of the templates database and prevent translators from unnecessarily translating the template's text. . In some cases, the template is used but Lintian is unable to determine this. Common causes are: . - the maintainer scripts embed a variable in the template name in order to allow a template to be selected from a range of similar templates (e.g. db_input low start_$service_at_boot) . - the template is not used by the maintainer scripts but is used by a program in the package . - the maintainer scripts are written in perl. lintian currently only understands the shell script debconf functions. . If any of the above apply, please install an override. Tag: syntax-error-in-debconf-template Severity: important Certainty: possible Info: The template file contains a syntax error. . This issue may hide other issues as Lintian skips some checks on the file in this case. lintian-2.5.22ubuntu1/checks/menu-format.desc0000664000000000000000000003666012310413206016011 0ustar Check-Script: menu-format Author: Joey Hess Abbrev: mnf Needs-Info: unpacked, menu-files, index Type: binary Info: This script validates the format of menu files. Tag: old-format-menu-file Severity: important Certainty: certain Info: The package contains a menu file that is in the old menu file format. This format is deprecated. Convert the menu file to the new menu format. Note that lintian will not test this file for any other problems. Tag: whitespace-after-continuation-character Severity: important Certainty: certain Info: The menu item is split up over 2 or more lines using '\' at the end of the line to join them together. However, there is some whitespace after the '\' character, which is not guaranteed to be handled correctly. The '\' should be at the end of the line. Tag: bad-test-in-menu-item Severity: important Certainty: certain Info: The menu file contains an item that does not start with the text "?package(somepackage):". All menu file lines must test for the existence of a package in this way. Ref: menu 3.2 Tag: unparsable-menu-item Severity: important Certainty: certain Info: An item of the menu file cannot be parsed as a series of tag=value pairs. This could be because you didn't close a set of double quotes. Ref: menu 3.2 Tag: pkg-not-in-package-test Severity: normal Certainty: possible Info: This menu item doesn't test to see if the package containing it is installed. The start of any menu item is a conditional testing whether the required packages are installed. Normally this conditional should always check at least the package containing it, since menu items should be included in the package that provides the application the menu refers to. . This error usually indicates a misspelling of the package name in the menu entry or a copied menu entry from another package that doesn't apply to this one. Ref: menu 3.2 Tag: duplicated-tag-in-menu-item Severity: normal Certainty: certain Info: The menu item contains two instances of the same tag. This is just a waste of space, as menu will only use one of them. Ref: menu 3.2 Tag: menu-item-missing-required-tag Severity: important Certainty: certain Info: The menu item has a line that is missing a required tag. It's likely that the line will have no effect without this tag. install-menu may report this as an error during package installation. Tag: menu-item-contains-unknown-tag Severity: minor Certainty: certain Info: The menu item has a line that has a tag in it that is not one of the standard tags (needs=, section=, title=, longtitle=, command=, etc). While other tags can be used for specialized purposes, this is rare and it's more likely the tag's name is misspelled. Tag: menu-item-uses-icon-none Severity: minor Certainty: certain Info: The menu item has a line that uses icon=none. This is redundant and deprecated -- if there is no icon, just leave off the icon tag. Tag: menu-item-needs-tag-has-unknown-value Severity: minor Certainty: certain Info: The menu item has a line that has a needs= field with a strange value. This may be intentional, but it's probably a typo that will make menu ignore the line. Tag: menu-item-uses-apps-games-section Severity: normal Certainty: certain Info: The menu item has a line that specifies a section under "Apps/Games". This section has been moved to just "Games". Ref: menu-policy 2.1 Tag: menu-item-uses-apps-section Severity: normal Certainty: certain Info: The menu item has a line that specifies a section under "Apps". This section has been moved to "Applications". Ref: menu-policy 2.1 Tag: menu-item-uses-windowmanagers-section Severity: normal Certainty: certain Info: The menu item has a line that specifies a section under "WindowManagers". This section has been moved to "Window Managers". Ref: menu-policy 2.1 Tag: menu-item-creates-new-section Severity: normal Certainty: certain Info: The menu item has a line that specifies an unknown section or uses a section that is intended only as a menu root, not as a section that applications should use directly. Check the spelling of the section and check the section against the list in the menu policy. (The menu sections changed as of June of 2007.) Ref: menu-policy 2.1 Tag: menu-item-creates-new-root-section Severity: important Certainty: certain Info: The menu item has a line that specifies a new section to put a menu entry in, and this section appears right in the root menu. This is almost certainly an error. No new sections should be added to the root menu without discussion with the author of menu. Tag: menu-icon-not-in-xpm-format Severity: important Certainty: certain Info: Icons in the Debian menu system should be in XPM format. . While other image types (e.g. png images) appears to "just work", window managers are not "required to support them". Accordingly using non-XPM icons could break interoperability. Ref: menu 3.7, #591812 Tag: menu-icon-uses-relative-path Severity: normal Certainty: certain Info: This package contains a menu file which references an icon by a relative path. However, icons should be referenced by an absolute path in menu files. Ref: menu 3.2, #693477 Tag: menu-icon-missing Severity: normal Certainty: possible Info: This icon file couldn't be found. If the path to the icon in the menu file is an absolute path, make sure that icon exists at that path in the package. If the path is relative or a simple filename, make sure the icon is installed in /usr/share/pixmaps, the default location. . If the icon is provided by another package on which this package depends, lintian may not be able to determine that icon pages are available. In this case, after confirming that all icons are available after this package and its dependencies are installed, please add a lintian override. Ref: menu 3.7 Tag: menu-icon-too-big Severity: important Certainty: certain Info: Icons in the Debian menu system should be at most 32x32 pixels (icon16x16 icons should of course be at most 16x16 pixels) Ref: menu 3.7 Tag: menu-icon-cannot-be-parsed Severity: normal Certainty: certain Info: The icon file could not be parsed. Perhaps this means a bad XPM file, or perhaps it means the lintian parsing needs to be improved. If the window managers and standard tools accept the file then probably it's the latter; please file a bug on lintian then. Tag: su-wrapper-without--c Severity: important Certainty: certain Info: The menu item command or desktop file uses an su wrapper such as su-to-root without the -c flag. This is a syntax error. Ref: su-to-root(1) Tag: su-to-root-with-usr-sbin Severity: normal Certainty: certain Info: The menu item or desktop file command uses su-to-root as /usr/sbin/su-to-root. Since sarge su-to-root is located in /usr/bin and /usr/sbin/su-to-root is only a compatibility symlink that may get dropped in the future. . Since su-to-root is now located in /usr/bin you can use it without absolute path now. Tag: su-wrapper-not-su-to-root Severity: normal Certainty: certain Info: The menu item or desktop file command uses an su wrapper other than su-to-root. On Debian systems, please use su-to-root -X, which will pick the correct wrapper based on what's installed on the system and the current desktop environment. Using su-to-root is also important for Live CD systems which need to use sudo rather than su. su-to-root permits global configuration to use sudo. Tag: menu-item-needs-dwww Severity: normal Certainty: certain Info: The menu item has needs=dwww. This is deprecated. Instead, you should register your documentation with doc-base, and dwww entries will be automatically generated. Tag: non-wm-in-windowmanager-menu-section Severity: important Certainty: certain Info: The menu item is in the Window Manager section but does not needs=wm. Either it is a window manager and it should needs=wm, either it isn't and then it must be moved in another section. Tag: non-wm-module-in-wm-modules-menu-section Severity: important Certainty: certain Info: The menu item is in the FVWM Modules or Window Maker section but does not declare that it needs a specific window manager (using the needs key in the menu file). Modules for Fvwm should have needs="fvwmmodule". Modules for WindowMaker should have needs="wmmaker". Tag: unquoted-string-in-menu-item Severity: normal Certainty: certain Info: The menu item includes a tag with an unquoted string like section=Games instead of section="Games". This is deprecated. Use a quoted string instead. Ref: menu 3.2 Tag: menu-command-not-in-package Severity: normal Certainty: possible Info: The menu item specifies a command which is not available in the package. In most cases this is a typo or after you moved a binary around, but forgot to update the menu file. Tag: executable-desktop-file Severity: important Certainty: certain Info: The desktop entry file is marked executable. Desktop entries are regular files and should be installed mode 0644. Tag: desktop-entry-file-has-crs Severity: normal Certainty: certain Info: The desktop entry file has lines ending in CRLF instead of just LF. The Desktop Entry Specification is explicit that lines should end with only LF. The CR may be taken by some software as part of the field. . Running the following command against the given file removes any CR character in the file: . sed -i 's/\r//g' path/to/file Ref: http://standards.freedesktop.org/desktop-entry-spec/1.0/ar01s02.html Tag: duplicated-key-in-desktop-entry Severity: normal Certainty: certain Info: The desktop entry contains two instances of the same key. The behavior of such desktop entries is not well-defined by the standard. . The desktop-file-validate tool in the desktop-file-utils package is useful for checking the syntax of desktop entries. Tag: desktop-entry-missing-required-key Severity: important Certainty: certain Info: Desktop entries must contain, at a minimum, the keys Type and Name. . The desktop-file-validate tool in the desktop-file-utils package is useful for checking the syntax of desktop entries. Ref: http://standards.freedesktop.org/desktop-entry-spec/1.0/ar01s05.html Tag: desktop-entry-contains-unknown-key Severity: minor Certainty: certain Info: The key on this line of the desktop entry is not one of the standard keys defined in the FreeDesktop specification, not one of the legacy KDE keywords, and one that does not begin with X-. It's most likely that the key was misspelled. . The desktop-file-validate tool in the desktop-file-utils package is useful for checking the syntax of desktop entries. Ref: http://standards.freedesktop.org/desktop-entry-spec/1.0/ar01s05.html Tag: desktop-entry-contains-deprecated-key Severity: normal Certainty: certain Info: The key on this line of the desktop entry has been deprecated in the FreeDesktop specification. . The desktop-file-validate tool in the desktop-file-utils package is useful for checking the syntax of desktop entries. Ref: http://standards.freedesktop.org/desktop-entry-spec/1.0/apc.html Tag: desktop-entry-contains-encoding-key Severity: wishlist Certainty: certain Info: The Encoding key is now deprecated by the FreeDesktop standard and all strings are required to be encoded in UTF-8. This desktop entry explicitly specifies an Encoding of UTF-8, which is harmless but no longer necessary. . The desktop-file-validate tool in the desktop-file-utils package is useful for checking the syntax of desktop entries. Ref: http://standards.freedesktop.org/desktop-entry-spec/1.0/apc.html Tag: desktop-entry-lacks-main-category Severity: normal Certainty: certain Info: The categories for this desktop entry do not contain any Main Categories, only Additional Categories. Additional Categories should only be used on conjunction with one or more Main Categories. . The desktop-file-validate tool in the desktop-file-utils package is useful for checking the syntax of desktop entries. Ref: http://standards.freedesktop.org/menu-spec/1.0/apa.html Tag: desktop-entry-lacks-keywords-entry Severity: wishlist Certainty: certain Info: This .desktop file does either not contain a "Keywords" entry or it does not contain any keywords not already present in the "Name" or "GenericName" entries. . .desktop files are organized in key/value pairs (similar to .ini files). "Keywords" is the name of the entry/key in the .desktop file containing keywords relevant for this .desktop file. . The desktop-file-validate tool in the desktop-file-utils package is useful for checking the syntax of desktop entries. Ref: http://standards.freedesktop.org/desktop-entry-spec/latest/ar01s05.html, #693918, https://wiki.gnome.org/Initiatives/GnomeGoals/DesktopFileKeywords Tag: desktop-entry-uses-reserved-category Severity: normal Certainty: certain Info: This desktop entry includes a Reserved Category, one which has a desktop-specific meaning that has not yet been standardized, but does not include an OnlyShowIn key. Desktop entries using a Reserved Category must include an OnlyShowIn key limiting the entry to those environments that support the category. . The desktop-file-validate tool in the desktop-file-utils package is useful for checking the syntax of desktop entries. Ref: http://standards.freedesktop.org/menu-spec/1.0/apa.html Tag: desktop-entry-invalid-category Severity: normal Certainty: certain Info: This desktop entry lists a category that is not one of the registered Main or Additional Categories in the FreeDesktop specification. Note that case is significant and whitespace is only allowed immediately before and after the equal sign in the Category key, not elsewhere in the field. . The desktop-file-validate tool in the desktop-file-utils package is useful for checking the syntax of desktop entries. Ref: http://standards.freedesktop.org/menu-spec/1.0/apa.html Tag: desktop-command-not-in-package Severity: normal Certainty: possible Info: The desktop entry specifies a command that is not available in the package. In most cases, this is a typo or a forgotten update of the desktop file after the install location of the binary was changed. A desktop file for a command should be included in the same package as that command. Tag: desktop-contains-deprecated-header Severity: normal Certainty: certain Info: The header on this line of the desktop entry has been deprecated in the FreeDesktop specification. If the header is "KDE Desktop Entry", the right fix is normally changing it to "Desktop Entry". . The desktop-file-validate tool in the desktop-file-utils package is useful for checking the syntax of desktop entries. Ref: http://standards.freedesktop.org/desktop-entry-spec/1.0/apc.html Tag: deprecated-kdelnk-file Severity: important Certainty: certain Info: kdelnk files were used by KDE 1 and since KDE 2 desktop files are used instead. Renaming the file and removing the deprecated header and keys is often all that needs to be done. Ref: http://standards.freedesktop.org/desktop-entry-spec/1.0/apc.html Tag: desktop-entry-limited-to-environments Severity: normal Certainty: wild-guess Info: This desktop entry uses OnlyShowIn to limit the environments in which it's displayed but lists multiple environments. This is often a sign of a desktop file written assuming that only GNOME, KDE, and Xfce are in use and the desktop file intended to exclude one of them. This unintentionally hides the application from desktop environments such as LXDE where it would work fine. If this application supports any desktop environment except some specific ones, it should list the unsupported environments in the NotShowIn key instead. lintian-2.5.22ubuntu1/checks/init.d.pm0000664000000000000000000004346412311317611014446 0ustar # init.d -- lintian check script -*- perl -*- # Copyright (C) 1998 Christian Schwarz # # 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::init_d; use strict; use warnings; use autodie; use File::Basename qw(dirname); use List::MoreUtils qw(any none); use Lintian::Data; use Lintian::Tags qw(tag); use Lintian::Util qw(is_ancestor_of); # A list of valid LSB keywords. The value is 0 if optional and 1 if required. my %lsb_keywords = ( provides => 1, 'required-start' => 1, 'required-stop' => 1, 'should-start' => 0, 'should-stop' => 0, 'default-start' => 1, 'default-stop' => 1, # These two are actually optional, but we mark # them as required and give them a weaker tag if # they are missing. 'short-description' => 1, 'description' => 1 ); # These init script names should probably not be used in dependencies. # Instead, the corresponding virtual facility should be used. # # checkroot is not included here since cryptsetup needs the root file system # mounted but not any other local file systems and therefore correctly depends # on checkroot. There may be other similar situations. my %implied_dependencies = ( 'mountall' => '$local_fs', 'mountnfs' => '$remote_fs', 'hwclock' => '$time', 'portmap' => '$portmap', 'named' => '$named', 'bind9' => '$named', 'networking' => '$network', 'syslog' => '$syslog', 'rsyslog' => '$syslog', 'sysklogd' => '$syslog' ); our $VIRTUAL_FACILITIES = Lintian::Data->new('init.d/virtual_facilities'); # Regex to match names of init.d scripts; it is a bit more lax than # package names (e.g. allows "_"). We do not allow it to start with a # "dash" to avoid confusing it with a command-line option (also, # update-rc.d does not allow this). our $INITD_NAME_REGEX = qr/[\w\.\+][\w\-\.\+]*/; my $OPTS_R = qr/-\S+\s*/; my $ACTION_R = qr/\w+/; my $EXCLUDE_R = qr/if\s+\[\s+-x\s+\S*update-rc\.d/; sub run { my (undef, undef, $info) = @_; my $initd_dir = $info->lab_data_path('init.d'); my $postinst = $info->control('postinst'); my $preinst = $info->control('preinst'); my $postrm = $info->control('postrm'); my $prerm = $info->control('prerm'); my (%initd_postinst, %initd_postrm); # read postinst control file if (-f $postinst and not -l $postinst) { open(my $fd, '<', $postinst); while (<$fd>) { next if /$EXCLUDE_R/o; s/\#.*$//o; next unless /^(?:.+;|^\s*system[\s\(\']+)?\s*update-rc\.d\s+ (?:$OPTS_R)*($INITD_NAME_REGEX)\s+($ACTION_R)/xo; my ($name,$opt) = ($1,$2); next if $opt eq 'remove'; if ($initd_postinst{$name}++ == 1) { tag 'duplicate-updaterc.d-calls-in-postinst', $name; next; } unless (m,>\s*/dev/null,o) { tag 'output-of-updaterc.d-not-redirected-to-dev-null', "$name postinst"; } } close($fd); } # read preinst control file if (-f $preinst and not -l $preinst) { open(my $fd, '<', $preinst); while (<$fd>) { next if /$EXCLUDE_R/o; s/\#.*$//o; next unless m/update-rc\.d \s+ (?:$OPTS_R)*($INITD_NAME_REGEX) \s+ ($ACTION_R)/ox; my ($name,$opt) = ($1,$2); next if $opt eq 'remove'; tag 'preinst-calls-updaterc.d', $name; } close($fd); } # read postrm control file if (-f $postrm and not -l $postrm) { open(my $fd, '<', $postrm); while (<$fd>) { next if /$EXCLUDE_R/o; s/\#.*$//o; next unless m/update-rc\.d\s+($OPTS_R)*($INITD_NAME_REGEX)/o; if ($initd_postrm{$2}++ == 1) { tag 'duplicate-updaterc.d-calls-in-postrm', $2; next; } unless (m,>\s*/dev/null,o) { tag 'output-of-updaterc.d-not-redirected-to-dev-null', "$2 postrm"; } } close($fd); } # read prerm control file if (-f $prerm and not -l $prerm) { open(my $fd, '<', $prerm); while (<$fd>) { next if /$EXCLUDE_R/o; s/\#.*$//o; next unless m/update-rc\.d\s+($OPTS_R)*($INITD_NAME_REGEX)/o; tag 'prerm-calls-updaterc.d', $2; } close($fd); } # init.d scripts have to be removed in postrm for (keys %initd_postinst) { if ($initd_postrm{$_}) { delete $initd_postrm{$_}; } else { tag 'postrm-does-not-call-updaterc.d-for-init.d-script', "etc/init.d/$_"; } } for (keys %initd_postrm) { tag 'postrm-contains-additional-updaterc.d-calls', "etc/init.d/$_"; } foreach my $initd_file (keys %initd_postinst) { next unless $initd_file; my $initd_path = "$initd_dir/$initd_file"; # init.d scripts have to be marked as conffiles unless they're # symlinks. unless ($info->is_conffile("etc/init.d/$initd_file") or -l $initd_path) { tag 'init.d-script-not-marked-as-conffile', "etc/init.d/$initd_file"; } # Check if file exists in package and check the script for # other issues if it was included in the package. if (-f $initd_path) { check_init($initd_file, $initd_path); } elsif (not -l $initd_path) { tag 'init.d-script-not-included-in-package', "etc/init.d/$initd_file"; } } return unless -d $initd_dir; # files actually installed in /etc/init.d should match our list :-) opendir(my $dirfd, $initd_dir); for my $script (readdir($dirfd)) { my $tagname = 'script-in-etc-init.d-not-registered-via-update-rc.d'; next if any {$script eq $_} qw(. .. README skeleton rc rcS); my $script_path = "$initd_dir/$script"; # In an upstart system, such as Ubuntu, init scripts are symlinks to # upstart-job which are not registered with update-rc.d. if (-l $script_path) { my $target = readlink($script_path); if ($target =~ m,(?:\A|/)lib/init/upstart-job\z,) { $tagname = 'upstart-job-in-etc-init.d-not-registered-via-update-rc.d'; } } # If $initd_postinst is true for this script, we already # checked the syntax in the above loop. Check the syntax of # unregistered scripts so that we get more complete Lintian # coverage in the first pass. unless ($initd_postinst{$script}) { tag $tagname, "etc/init.d/$script"; check_init($script, $script_path) if -f $script_path; } } closedir($dirfd); return; } sub check_init { my ($initd_file, $initd_path) = @_; # In an upstart system, such as Ubuntu, init scripts are symlinks to # upstart-job. It doesn't make sense to check the syntax of upstart-job, # so skip the checks of the init script itself in that case. if (-l $initd_path) { my $target = readlink($initd_path); if ($target =~ m,(?:\A|/)lib/init/upstart-job\z,) { return; } if (!is_ancestor_of(dirname($initd_path), $initd_path)) { # unsafe symlink, skip. NB: dirname($initd_path) is safe # because coll/init.d does sanity checking for us. return; } } my (%tag, %lsb); my $in_file_test = 0; my %needs_fs = ('remote' => 0, 'local' => 0); open(my $fd, '<', $initd_path); while (defined(my $l = <$fd>)) { if ($. == 1 && $l =~ m,^\#!\s*(/usr/[^\s]+),) { tag 'init.d-script-uses-usr-interpreter', "etc/init.d/$initd_file $1"; } if ($l =~ m/^\#\#\# BEGIN INIT INFO/) { if ($lsb{BEGIN}) { tag 'init.d-script-has-duplicate-lsb-section', "etc/init.d/$initd_file"; next; } $lsb{BEGIN} = 1; my $last; # We have an LSB keyword section. Parse it and save the data # in %lsb for analysis. while (defined(my $l = <$fd>)) { if ($l =~ /^\#\#\# END INIT INFO/) { $lsb{END} = 1; last; } elsif ($l !~ /^\#/) { tag 'init.d-script-has-unterminated-lsb-section', "etc/init.d/${initd_file}:$."; last; } elsif ($l =~ /^\# ([a-zA-Z-]+):\s*(.*?)\s*$/) { my $keyword = lc $1; my $value = $2; tag 'init.d-script-has-duplicate-lsb-keyword', "etc/init.d/${initd_file}:$. $keyword" if (defined $lsb{$keyword}); tag 'init.d-script-has-unknown-lsb-keyword', "etc/init.d/${initd_file}:$. $keyword" unless (defined($lsb_keywords{$keyword}) || $keyword =~ /^x-/); $lsb{$keyword} = defined($value) ? $value : ''; $last = $keyword; } elsif ($l =~ /^\#(\t| )/ && $last eq 'description') { my $value = $l; $value =~ s/^\#\s*//; $lsb{description} .= ' ' . $value; } else { tag 'init.d-script-has-bad-lsb-line', "etc/init.d/${initd_file}:$."; } } } # Pretty dummy way to handle conditionals, but should be enough # for simple init scripts $in_file_test = 1 if ($l =~ m/\bif\s+.*?(?:test|\[)(?:\s+\!)?\s+-[efr]\s+/); $in_file_test = 0 if ($l =~ m/\bfi\b/); if (!$in_file_test && $l =~ m,^\s*\.\s+["'"]?(/etc/default/[\$\w/-]+),) { tag 'init.d-script-sourcing-without-test', "etc/init.d/${initd_file}:$. $1"; } # This should be more sophisticated: ignore heredocs, ignore quoted # text and the arguments to echo, etc. $needs_fs{'remote'} = 1 if ($l =~ m,^[^\#]*/usr/,); $needs_fs{'local'} = 1 if ($l =~ m,^[^\#]*/var/,); while ($l =~ s/^[^\#]*?(start|stop|restart|force-reload|status)//o) { $tag{$1} = 1; } } close($fd); # Make sure all of the required keywords are present. if (not $lsb{BEGIN}) { tag 'init.d-script-missing-lsb-section', "etc/init.d/${initd_file}"; } else { for my $keyword (keys %lsb_keywords) { if ($lsb_keywords{$keyword} && !defined $lsb{$keyword}) { if ($keyword eq 'short-description') { tag 'init.d-script-missing-lsb-short-description', "etc/init.d/${initd_file}"; } elsif ($keyword eq 'description') { tag 'init.d-script-missing-lsb-description', "etc/init.d/${initd_file}"; } else { tag 'init.d-script-missing-lsb-keyword', "etc/init.d/${initd_file} $keyword"; } } } } # Check the runlevels. my %start; if (defined $lsb{'default-start'}) { for my $runlevel (split(/\s+/, $lsb{'default-start'})) { if ($runlevel =~ /^[sS0-6]$/) { $start{lc $runlevel} = 1; if ($runlevel eq '0' or $runlevel eq '6') { tag 'init.d-script-starts-in-stop-runlevel', "etc/init.d/${initd_file}", $runlevel; } } else { tag 'init.d-script-has-bad-start-runlevel', "etc/init.d/${initd_file}", $runlevel; } } # No script should start at one of the 2-5 runlevels but not at # all of them my $start = join(' ', sort grep {$_ =~ /^[2-5]$/} keys %start); if (length($start) > 0 and $start ne '2 3 4 5') { my $base = $initd_file; $base =~ s,.*/,,; my @missing = grep { !defined $start{$_} } qw(2 3 4 5); tag 'init.d-script-missing-start', "etc/init.d/${initd_file}", @missing; } } if (defined $lsb{'default-stop'}) { my %stop; for my $runlevel (split(/\s+/, $lsb{'default-stop'})) { if ($runlevel =~ /^[sS0-6]$/) { $stop{$runlevel} = 1 unless $runlevel =~ /[sS2-5]/; if ($start{$runlevel}) { tag 'init.d-script-has-conflicting-start-stop', "etc/init.d/${initd_file} $runlevel"; } if ($runlevel =~ /[sS]/) { tag 'init-d-script-stops-in-s-runlevel', "etc/init.d/${initd_file}"; } } else { tag 'init.d-script-has-bad-stop-runlevel', "etc/init.d/${initd_file} $runlevel"; } } # Scripts that stop in any of 0, 1, or 6 probably should stop in all # of them, with some special exceptions. my $stop = join(' ', sort keys %stop); if (length($stop) > 0 and $stop ne '0 1 6') { my $base = $initd_file; $base =~ s,.*/,,; if (none { $base eq $_ } qw(killprocs sendsigs halt reboot)) { my @missing = grep { !defined $stop{$_} } qw(0 1 6); tag 'init.d-script-possible-missing-stop', "etc/init.d/${initd_file}", @missing; } } } if ($lsb{'provides'}) { my $provides_self; for my $facility (split(/\s+/, $lsb{'provides'})) { if ($facility =~ /^\$/) { tag 'init.d-script-provides-virtual-facility', "etc/init.d/${initd_file}", $facility; } if ($initd_file =~/^\Q$facility\E(?:.sh)?$/) { $provides_self = 1; } } tag 'init.d-script-does-not-provide-itself', "etc/init.d/${initd_file}" unless $provides_self; } # If $remote_fs is needed $local_fs is not, since it's implied. $needs_fs{'local'} = 0 if $needs_fs{'remote'}; # Separately check Required-Start and Required-Stop, since while they're # similar, they're not quite identical. This could use some further # restructuring by pulling the regexes out as data tied to start/stop and # remote/local and then combining the loops. if (defined $lsb{'default-start'} && length($lsb{'default-start'})) { my @required = split(' ', $lsb{'required-start'} || ''); if ($needs_fs{remote}) { if (none { /^\$(?:remote_fs|all)\z/ } @required) { tag 'init.d-script-missing-dependency-on-remote_fs', "etc/init.d/${initd_file}: required-start"; } } if ($needs_fs{local}) { if (none { /^\$(?:local_fs|remote_fs|all)\z/ } @required) { tag 'init.d-script-missing-dependency-on-local_fs', "etc/init.d/${initd_file}: required-start"; } } } if (defined $lsb{'default-stop'} && length($lsb{'default-stop'})) { my @required = split(' ', $lsb{'required-stop'} || ''); if ($needs_fs{remote}) { if (none { /^(?:\$remote_fs|\$all|umountnfs)\z/ } @required) { tag 'init.d-script-missing-dependency-on-remote_fs', "etc/init.d/${initd_file}: required-stop"; } } if ($needs_fs{local}) { if (none { /^(?:\$(?:local|remote)_fs|\$all|umountn?fs)\z/ } @required) { tag 'init.d-script-missing-dependency-on-local_fs', "etc/init.d/${initd_file}: required-stop"; } } } # Check syntax rules that apply to all of the keywords. for my $keyword (qw(required-start should-start required-stop should-stop)) { next unless defined $lsb{$keyword}; for my $dependency (split(/\s+/, $lsb{$keyword})) { if (defined $implied_dependencies{$dependency}) { tag 'init.d-script-should-depend-on-virtual-facility', "etc/init.d/${initd_file}", "$dependency -> $implied_dependencies{$dependency}"; } elsif ($keyword =~ m/^required-/ && $dependency =~ m/^\$/) { tag 'init.d-script-depends-on-unknown-virtual-facility', "etc/init.d/${initd_file}", $dependency unless ($VIRTUAL_FACILITIES->known($dependency)); } } } # all tags included in file? for my $option (qw(start stop restart force-reload)) { $tag{$option} or tag 'init.d-script-does-not-implement-required-option', "etc/init.d/${initd_file} $option"; } for my $option (qw(status)) { $tag{$option} or tag 'init.d-script-does-not-implement-optional-option', "etc/init.d/${initd_file} $option"; } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/po-debconf.desc0000664000000000000000000001261712310413144015570 0ustar Check-Script: po-debconf Author: Denis Barbier Abbrev: pd Type: source Info: This looks for common mistakes in packages using po-debconf(7). Needs-Info: debfiles Tag: not-using-po-debconf Severity: serious Certainty: certain Info: This package seems to be using debconf templates, but it does not use po-debconf to make translations possible (debian/po doesn't exist). Debian Policy requires that all packages using debconf use a gettext-based translation system. If this package uses one other than po-debconf, please report this as a lintian bug along with how to detect that system. Ref: policy 3.9.1 Tag: untranslatable-debconf-templates Severity: serious Certainty: possible Info: This package seems to be using debconf templates, but some descriptions are not translatable. You should prepend an underscore before every translatable field, as described in po-debconf(7). This may mean that translators weren't properly warned about new strings. . Translators may be notified of changes using podebconf-report-po, for example: . podebconf-report-po --call --withtranslators --deadline="+10 days" \ --languageteam . If the field is not intended for users to see, ensure the first line of the description contains "for internal use". Ref: policy 3.9.1 Tag: stray-translated-debconf-templates Severity: normal Certainty: certain Info: This package contains a file named *templates.XX or *templates.XX_XX. This was the naming convention for the translated templates merged using debconf-mergetemplate. Since the package is using po-debconf, these files should be replaced by language-specific files in the debian/po directory and should no longer be needed. Tag: missing-potfiles-in Severity: normal Certainty: certain Info: The required file POTFILES.in is missing from debian/po. Ref: po-debconf(7) Tag: missing-file-from-potfiles-in Severity: normal Certainty: certain Info: A file listed in debian/po/POTFILES.in could not be found in the source package. Ref: po-debconf(7) Tag: missing-templates-pot Severity: normal Certainty: certain Info: The required file templates.pot is missing from debian/po. Ref: po-debconf(7) Tag: unknown-encoding-in-po-file Severity: normal Certainty: certain Info: Encoding must be declared in PO files. Otherwise, charset conversions cannot be performed. Tag: invalid-po-file Severity: normal Certainty: certain Info: Errors were found in the listed PO file that will cause its content to be discarded. Run msgfmt on the file to see the error messages. Tag: debconf-translation-using-general-list Severity: normal Certainty: certain Info: This debconf translation is using the general debconf-i18n list as the address in the Language-Team field. . The intended purpose of the Language-Team field is to be an additional contact for new translation requests in addition to the previous translator (as recorded in Last-Translator). The field should therefore point to a mailing list dedicated to the language of this PO file, not the general list for translation discussions. Tag: misnamed-po-file Severity: normal Certainty: possible Info: The name of this PO file doesn't appear to be a valid language code. Any files in debian/po ending in .po will be processed as translations by po2debconf for the language code equal to the file name without the trailing .po. If the file name does not correctly reflect the language of the translation, the translation will not be accessible to users of that language. . If this file isn't actually a PO file, rename it to something that doesn't end in .po or move it to another directory so that translation merging programs will not be confused. Tag: newer-debconf-templates Severity: normal Certainty: possible Info: debconf-updatepo has not been run since the last change to your debconf templates. . You should run debconf-updatepo whenever debconf templates files are changed so that translators can be warned that their files are outdated. . This can be ensured by running debconf-updatepo in the 'clean' target of debian/rules. PO files will then always be up-to-date when building the source package. Tag: translated-default-field Severity: normal Certainty: possible Info: You should not mark as translatable "Default:" or "DefaultChoice:" fields, unless explicitly needed (e.g. default country, default language, etc.). If this Default field really should be translated, you should explain translators how they should translate it by using comments or brackets. For example: . # Translators: Default language name, but not translated _Default: English . Or: . _Default: English[ Default language name, but not translated] . Note that in the first case, Lintian ignores the comment unless it explicitly references translators and it is appears directly before the field in question. Ref: po-debconf(7), #637881 Tag: no-complete-debconf-translation Severity: wishlist Certainty: possible Info: Even though this package provides debconf translation support, there are no translations or none of the translations are complete. This may mean that translators weren't properly warned about new strings. . Translators may be notified of changes using podebconf-report-po, for example: . podebconf-report-po --call --withtranslators --deadline="+10 days" \ --languageteam Ref: devref 6.5.2.2 lintian-2.5.22ubuntu1/checks/version-substvars.desc0000664000000000000000000000461112310413206017265 0ustar Check-Script: version-substvars Author: Adeodato Simó Abbrev: v-s Type: source Needs-Info: debfiles Info: This script checks for correct use of the various *Version substvars, e.g. deprecated substvars, or usage that can cause un-binNMUability Tag: not-binnmuable-any-depends-any Severity: important Certainty: certain Info: The package is not safely binNMUable because an arch:any package depends on another arch:any package with a (= ${source:Version}) relationship. Please use (= ${binary:Version}) instead. Tag: not-binnmuable-any-depends-all Severity: important Certainty: certain Info: The package is not safely binNMUable because an arch:any package depends on an arch:all package with a (= ${Source-Version}) or (= ${binary:Version}) relationship. Please use (= ${source:Version}) instead. . Note this is also triggered if the dependency uses (>= ${var}), since that has the same issue. Tag: not-binnmuable-all-depends-any Severity: important Certainty: certain Info: The package is not safely binNMUable because an arch:all package depends on an arch:any package with a strict (= ${Source-Version}), or similar, relationship. . It is not possible for arch:all packages to depend so strictly on arch:any packages while having the package binNMUable, so please use one of these, whichever is more appropriate: . Depends: arch_any (>= ${source:Version}) Depends: arch_any (>= ${source:Version}), arch_any (<< ${source:Version}.1~) Tag: version-substvar-for-external-package Severity: important Certainty: certain Info: The first package has a relation on the second package using a dpkg-control substitution variable to generate the versioned part of the relation. However the second package is not built from this source package. Usually this means there is a mistake in the package name in this dependency. . Note that this warning can occur if the package name used in the relation contains a typo. In this case, correcting the typo should remove the warning. Tag: substvar-source-version-is-deprecated Severity: normal Certainty: certain Info: The package uses the now deprecated ${Source-Version} substvar, which has misleading semantics. Please switch to ${binary:Version} or ${source:Version} as appropriate (introduced in dpkg 1.13.19, released with etch). Support for ${Source-Version} may be removed from dpkg-dev in the future. lintian-2.5.22ubuntu1/checks/filename-length.pm0000664000000000000000000000556212311317605016320 0ustar # filename-length -- lintian check script -*- perl -*- # Copyright (C) 2011 Niels Thykier # # 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::filename_length; use strict; use warnings; use autodie; use Lintian::Tags qw(tag); use Lintian::Util qw(strip); use constant FILENAME_LENGTH_LIMIT => 80; # We could derive this from data/fields/architectures, but that # contains things like kopensolaris-sparc64 and kfreebsd-sparc64, # neither of which Debian offically supports. use constant LONGEST_ARCHITECTURE => length 'kfreebsd-amd64'; sub run { my ($pkg, $type, $info, $proc) = @_; # pkg_version(_arch)?.type # - here we pay for length of "name_version" my $len = length($pkg) + length($proc->pkg_version) + 1; my $extra; if ($type eq 'binary' || $type eq 'source'){ # Here we add length .deb / .dsc (in both cases +4) $len += 4; } else { # .udeb, thats a +5 $len += 5; } if ($type ne 'source') { # non-src pkgs have architecture as well if ($proc->pkg_arch ne 'all'){ my $real = $len + 1 + length($proc->pkg_arch); $len += 1 + LONGEST_ARCHITECTURE; $extra = "$real ($len)"; } else { # _all has length 4 $len += 4; } } $extra = $len unless defined $extra; tag 'package-has-long-file-name', "$extra > ". FILENAME_LENGTH_LIMIT if $len > FILENAME_LENGTH_LIMIT; return if $type ne 'source'; # Reset to work with elements of the dsc file. $len = 0; foreach my $entry (split m/\n/o, $info->field('files', '')){ my $filename; my $flen; strip($entry); next unless $entry; (undef, undef, $filename) = split m/\s++/o, $entry; next unless $filename; $flen = length($filename); $len = $flen if ($flen > $len); } if ($len > FILENAME_LENGTH_LIMIT){ tag 'source-package-component-has-long-file-name', "$len > " . FILENAME_LENGTH_LIMIT; } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/checks/description.pm0000664000000000000000000001722312311317603015577 0ustar # description -- lintian check script -*- perl -*- # Copyright (C) 1998 Christian Schwarz # # 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::description; use strict; use warnings; use autodie; # Compared to a lower-case string, so it must be all lower-case use constant DH_MAKE_PERL_TEMPLATE => 'this description was' . ' automagically extracted from the module by dh-make-perl'; use Encode qw(decode); use Lintian::Check qw(check_spelling check_spelling_picky); use Lintian::Tags qw(tag); sub run { my ($pkg, $type, $info, undef, $group) = @_; my $tabs = 0; my $lines = 0; my $template = 0; my $unindented_list = 0; my $synopsis; my $description; # description? my $full_description = $info->field('description'); unless (defined $full_description) { tag 'package-has-no-description'; return; } $full_description =~ m/^([^\n]*)\n(.*)$/s; ($synopsis, $description) = ($1, $2); unless (defined $synopsis) { $synopsis = $full_description; $description = ''; } $description = '' unless defined($description); if ($synopsis =~ m/^\s*$/) { tag 'description-synopsis-is-empty'; } else { if ($synopsis =~ m/^\Q$pkg\E\b/i) { tag 'description-starts-with-package-name'; } if ($synopsis =~ m/^(an?|the)\s/i) { tag 'description-synopsis-starts-with-article'; } if ($synopsis =~ m/(?/) { tag 'description-is-dh_make-template' unless $template++; } # We have to decode into UTF-8 to get the right length for the # length check. If the changelog uses a non-UTF-8 encoding, # this will mangle it, but it doesn't matter for the length # check. if (length(decode('utf-8', $synopsis)) >= 80) { tag 'description-too-long'; } } my $flagged_homepage; foreach (split /\n/, $description) { next if m/^ \.\s*$/o; if ($lines == 0) { my $firstline = lc $_; my $lsyn = lc $synopsis; if ($firstline =~ /^\Q$lsyn\E$/) { tag 'description-synopsis-is-duplicated'; } else { $firstline =~ s/[^a-zA-Z0-9]+//g; $lsyn =~ s/[^a-zA-Z0-9]+//g; if ($firstline eq $lsyn) { tag 'description-synopsis-is-duplicated'; } } } $lines++; if (m/^ \.\s*\S/o) { tag 'description-contains-invalid-control-statement'; } elsif (m/^ [\-\*]/o) { # Print it only the second time. Just one is not enough to be sure that # it's a list, and after the second there's no need to repeat it. tag 'possible-unindented-list-in-extended-description' if $unindented_list++ == 2; } if (m/\t/o) { tag 'description-contains-tabs' unless $tabs++; } if (m,^\s*Homepage: /) { tag 'description-is-dh_make-template' unless $template++; } } if (length(decode('utf-8', $_)) > 80) { tag 'extended-description-line-too-long'; } } if ($type ne 'udeb') { if ($lines == 0) { tag 'extended-description-is-empty'; } elsif ($lines <= 2 and not $synopsis =~ /(?:dummy|transition)/i) { tag 'extended-description-is-probably-too-short' unless $info->is_pkg_class('any-meta') or $pkg =~ m{-dbg\Z}xsm; } elsif ($description =~ /^ \.\s*\n|\n \.\s*\n \.\s*\n|\n \.\s*\n?$/) { tag 'extended-description-contains-empty-paragraph'; } } # Check for a package homepage in the description and no Homepage # field. This is less accurate and more of a guess than looking # for the old Homepage: convention in the body. unless ($info->field('homepage') or $flagged_homepage) { if ( $description =~ /homepage|webpage|website|url|upstream|web\s+site |home\s+page|further\s+information|more\s+info |official\s+site|project\s+home/xi and $description =~ m,\b(https?://[a-z0-9][^>\s]+),i ) { tag 'description-possibly-contains-homepage', $1; } elsif ($description =~ m,\b(https?://[a-z0-9][^>\s]+)>?\.?\s*\z,i) { tag 'description-possibly-contains-homepage', $1; } } if ($description) { check_spelling('spelling-error-in-description', $description,undef, $group->info->spelling_exceptions); check_spelling_picky('capitalization-error-in-description', $description); } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/commands/0000775000000000000000000000000012313521266013256 5ustar lintian-2.5.22ubuntu1/commands/info0000775000000000000000000001625412313516300014140 0ustar #!/usr/bin/perl -wT # # lintian-info -- transform lintian tags into descriptive text # # Copyright (C) 1998 Christian Schwarz and Richard Braakman # # This program is free software. It is distributed 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. use strict; use warnings; use Getopt::Long(); # turn file buffering off: STDOUT->autoflush; our @INCLUDE_DIRS; BEGIN { if (!exists($ENV{'LINTIAN_INCLUDE_DIRS'})) { print STDERR "Do not call $0 directly, use dplint $0 instead\n"; exit(1); } my $dirs = $ENV{'LINTIAN_INCLUDE_DIRS'}; if ($dirs =~ m{\A (.*) \Z}xsm) { # Untaint LINTIAN_INCLUDE_DIRS $dirs = $1; } @INCLUDE_DIRS = split(':', $dirs); my $libdir = $INCLUDE_DIRS[-1] . '/lib'; if (-d $libdir) { require lib; import lib $libdir; } } use Lintian::Data; use Lintian::Internal::FrontendUtil qw(split_tag); use Lintian::Profile; sub compat(); my ($annotate, $tags, $help, $prof); my (%already_displayed, $profile); my (@compat_include_dirs, $compat_user_dirs); my %opthash = ( 'annotate|a' => \$annotate, 'tags|t' => \$tags, 'help|h' => \$help, 'profile=s' => \$prof, ); if (compat) { $opthash{'include-dir=s'} = \@compat_include_dirs; $opthash{'user-dirs!'} = \$compat_user_dirs; } Getopt::Long::config('bundling', 'no_getopt_compat', 'no_auto_abbrev'); Getopt::Long::GetOptions(%opthash) or die("error parsing options\n"); # help if ($help) { my $me = 'dplint info'; $me = 'lintian-info' if compat; print <<"EOT"; Usage: $me [log-file...] ... $me --annotate [overrides ...] $me --tags tag ... Options: -a, --annotate display descriptions of tags in Lintian overrides -t, --tags display tag descriptions --profile X use vendor profile X to determine severities EOT if (compat) { # if we are called as lintian-info, we also accept # --include-dir and --[no-]user-dirs print <<'EOT'; --include-dir DIR check for Lintian data in DIR --[no-]user-dirs whether to include profiles from user directories Note that --include-dir and --[no-]user-dirs must appear as the first options if used. Otherwise, they will trigger a deprecation warning. EOT } exit 0; } if (compat) { if (@compat_include_dirs or defined($compat_user_dirs)) { # NB: If these options were indeed first in @ARGV, then dplint # would have parsed them for us. So the fact that we see their # values implies they appeared after some other option. print STDERR join(q{ }, 'Warning: --include-dir and --[no-]user-dirs', "should be the first option(s) if given\n"); fixup_include_dirs(); } } $profile = Lintian::Profile->new($prof, \@INCLUDE_DIRS); Lintian::Data->set_vendor($profile); # If tag mode was specified, read the arguments as tags and display the # descriptions for each one. (We don't currently display the severity, # although that would be nice.) if ($tags) { my $unknown = 0; for my $tag (@ARGV) { my $info = $profile->get_tag($tag, 1); if ($info) { print $info->code . ": $tag\n"; print "N:\n"; print $info->description('text', 'N: '); } else { print "N: $tag\n"; print "N:\n"; print "N: Unknown tag.\n"; $unknown = 1; } print "N:\n"; } exit($unknown ? 1 : 0); } my $type_re = qr/(?:binary|changes|source|udeb)/o; # Otherwise, read input files or STDIN, watch for tags, and add descriptions # whenever we see one, can, and haven't already explained that tag. Strip off # color and HTML sequences. while (<>) { print; chomp; next if /^\s*$/; s/\e[\[\d;]*m//g; s///g; s,,,g; my $tag; if ($annotate) { my $tagdata; next unless m/^(?: # start optional part (?:\S+)? # Optionally starts with package name (?: \s*+ \[[^\]]+?\])? # optionally followed by an [arch-list] (like in B-D) (?: \s*+ $type_re)? # optionally followed by the type :\s++)? # end optional part ([\-\.a-zA-Z_0-9]+ (?:\s.+)?)$/ox; # [extra] -> $1 $tagdata = $1; ($tag, undef) = split m/ /o, $tagdata, 2; } else { my @parts = split_tag($_); next unless @parts; $tag = $parts[5]; } next if $already_displayed{$tag}++; my $info = $profile->get_tag($tag, 1); next unless $info; print "N:\n"; print $info->description('text', 'N: '); print "N:\n"; } { my $backwards_compat; sub compat() { return $backwards_compat if defined($backwards_compat); $backwards_compat = 0; if (exists($ENV{'LINTIAN_DPLINT_CALLED_AS'})) { my $called_as = $ENV{'LINTIAN_DPLINT_CALLED_AS'}; $backwards_compat = 1 if $called_as =~ m{ (?: \A | /) lintian-info \Z}xsm; } return $backwards_compat; } } exit 0; sub _load_file_basedir { # File::BaseDir sprews warnings if $ENV{'HOME'} is undef, so # make sure it is defined when we load the module. Though, # we need to scope this, so $ENV{'HOME'} becomes undef again # when we check for it later. local $ENV{'HOME'} = $ENV{'HOME'} // '/nonexistent'; require File::BaseDir; import File::BaseDir qw(config_home config_files data_home); return; } sub fixup_include_dirs { my (@user_dirs, $user_dir_regex); # First, determine the user dirs _load_file_basedir(); if (exists($ENV{'HOME'}) or exists($ENV{'XDG_CONFIG_HOME'})) { my $data_home = data_home('lintian'); if (defined($data_home)) { push(@user_dirs, $data_home); } } push(@user_dirs, '/etc/lintian'); # Then remove the user dirs from the original include path (they will # always be the "first" entries in a predictable order) $user_dir_regex= join(q{},map { "(?:$_:)?" } map { quotemeta } @user_dirs); $ENV{'LINTIAN_INCLUDE_DIRS'} =~ s{\A $user_dir_regex}{}xsmg; # now, rebuild @INCLUDE_DIRS @INCLUDE_DIRS = split(':', $ENV{'LINTIAN_INCLUDE_DIRS'}); if ($compat_user_dirs) { unshift(@compat_include_dirs, @user_dirs); } # And pre-append the new dirs unshift(@INCLUDE_DIRS, grep { -d } @compat_include_dirs); return; } # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/.perltidyrc0000664000000000000000000000164112310413144013631 0ustar # -*- conf -*- # # Default options for perltidy for proper Perl code reformatting. # # This file is based on the one from the rra-c-util package, # which can be found at . -bbao # put line breaks before any operator -nbbc # don't force blank lines before comments (bad for else blocks) -ce # cuddle braces around else -l=79 # usually use 78, but don't want 79-long lines reformatted -pt=2 # don't add extra whitespace around parentheses -sbt=2 # ...or square brackets -sfs # no space before semicolon in for (not that I use this form) -bar # opening-brace-always-on-right -sot # avoid lines with isolated opening tokens -sct # ... same for closing tokens -fs # allow "perltidy, please don't touch this" sections -fws # don't add or delete whitespace lintian-2.5.22ubuntu1/man/0000775000000000000000000000000012314371467012237 5ustar lintian-2.5.22ubuntu1/man/lintian.pod.in0000664000000000000000000006660112311664423015011 0ustar # Copyright 2010 Niels Thykier # - based on the work Richard Braakman and Christian # Schwarz (copyrighted 1998). # # This manual page is free software. It is distributed 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 manual page 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 manual page; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 # USA # =head1 NAME lintian - Static analysis tool for Debian packages =head1 SYNOPSIS B [I] [I] [I] ... =head1 DESCRIPTION Lintian dissects Debian packages and reports bugs and policy violations. It contains automated checks for many aspects of Debian policy as well as some checks for common errors. It uses an archive directory, called I, in which it stores information about the packages it examines. It can keep this information between multiple invocations in order to avoid repeating expensive data-collection operations. There are three ways to specify binary, udeb or source packages for Lintian to process: by file name (the .deb file for a binary package or the .dsc file for a source package), by naming a I<.changes> file, or by using a lab query (see L below). If you specify a I<.changes> file, Lintian will process all packages listed in that file. This is convenient when checking a new package before uploading it. If you specify packages to be checked or use one of the options B<--all> or B<--packages-from-file>, the packages requested will be processed. Otherwise, if I exists, it is parsed to determine the name of the .changes file to look for in the parent directory (when using the actions B<--check> or B<--unpack>). See L for more information. =head1 OPTIONS Actions of the lintian command: (Only one action can be specified per invocation) =over 4 =item B<-c>, B<--check> Run all checks over the specified packages. This is the default action. =item B<-C> chk1,chk2,..., B<--check-part> chk1,chk2,... Run only the specified checks. You can either specify the name of the check script or the abbreviation. For details, see the L section below. =item B<-F>, B<--ftp-master-rejects> Run only the checks that issue tags that result in automatic rejects from the Debian upload queue. The list of such tags is refreshed with each Lintian release, so may be slightly out of date if it has changed recently. This is implemented via a profile and thus this option cannot be used together with B<--profile>. =item B<-r>, B<--remove> Removed the specified packages from the lintian lab. This is only useful with static labs. =item B<-R>, B<--remove-lab> Remove the laboratory directory. This is only useful with static labs. =item B<-S>, B<--setup-lab> Set up or update a static lintian laboratory. =item B<-T> tag1,tag2,..., B<--tags> tag1,tag2,... Run only the checks that issue the requested tags. The tests for other tags within the check scripts will be run but the tags will not be issued. With this options all tags listed will be displayed regardless of the display settings. =item B<--tags-from-file> filename Same functionality as B<--tags>, but read the list of tags from a file. Blank lines and lines beginning with # are ignored. All other lines are taken to be tag names or comma-separated lists of tag names to (potentially) issue. With this options all tags listed will be displayed regardless of the display settings. =item B<-u>, B<--unpack> Unpacks the package will all collections. See the L section below. Note in this option will also run all collections. See the L section below. =item B<-X> chk1,chk2,..., B<--dont-check-part> chk1,chk2,... Run all but the the specified checks. You can either specify the name of the check script or the abbreviation. For details, see the L section below. =back General options: =over 4 =item B<-d>, B<--debug> Display debugging messages. (Implies B<-v> and overrules any B<-q>). Can be used multiple times to increase the debug information. If passed twice or more, Lintian will emit approximate run times for collections and checks (if L can be loaded). If passed 3 times (and if L can be loaded), Lintian will display memory usage for (some of its) data structures. With 4 times, the memory usage will be more detailed. This option cannot be specified in the config file. If used on the command line it will override the B and the B options in the config file. =item B<-h>, B<--help> Display usage information and exit. =item B<-q>, B<--quiet> Suppress all informational messages including override comments (normally shown with B<--show-overrides>). This option is silently ignored if B<--debug> is given. Otherwise, if both B<--verbose> and B<--quiet> is used, the last of these two options take effect. This option overrides the B and the B variable in the configuration file. In the configuration file, this option is enabled by using B variable. The B and B variables may not both appear in the config file. =item B<-v>, B<--verbose> Display verbose messages. If B<--debug> is used this option is always enabled. Otherwise, if both B<--verbose> and B<--quiet> is used (and B<--debug> is not used), the last of these two options take effect. This option overrides the B variable in the configuration file. In the configuration file, this option is enabled by using B variable. The B and B variables may not both appear in the config file. =item B<-V>, B<--version> Display lintian version number and exit. =item B<--print-version> Print unadorned version number and exit. =back Behaviour options for B. =over 4 =item B<--allow-root> Override lintian's warning when it is run with superuser privileges. =item B<--color> (never|always|auto|html) Whether to colorize tags in lintian output based on their severity. The default is "never", which never uses color. "always" will always use color, "auto" will use color only if the output is going to a terminal, and "html" will use HTML EspanE tags with a color style attribute (instead of ANSI color escape sequences). This option overrides the B variable in the configuration file. =item B<--default-display-level> Reset the current display level to the default. This option behaves exactly like passing B<-L> ">=important" B<-L> "+>=normal/possible" B<-L> "+minor/certain" to lintian. One use for this option is to override only the display settings in the config file. =item B<--display-source> X Only display tags from the source X (e.g. the Policy Manual or the Developer Reference). This option can be used multiple times to add additional sources. Example sources are "policy" or "devref" being the Policy Manual and the Developer Reference (respectively). The entire list of sources can be found in I<$LINTIAN_ROOT/data/output/manual-references> =item B<-E>, B<--display-experimental>, B<--no-display-experimental> Control whether to display experimental ("X:") tags. They are normally suppressed. If a tag is marked experimental, this means that the code that generates this message is not as well tested as the rest of Lintian, and might still give surprising results. Feel free to ignore Experimental messages that do not seem to make sense, though of course bug reports are always welcome (particularly if they include fixes). These options overrides the B variable in the configuration file. =item B<--fail-on-warnings> By default, B exits with 0 status if only warnings were found. If this flag is given, exit with a status of 1 if either warnings or errors are found. This option overrides the B variable in the configuration file. =item B<-i>, B<--info> Print explanatory information about each problem discovered in addition to the lintian error tags. To print a long tag description without running lintian, see L. This option overrides B variable in the configuration file. =item B<-I>, B<--display-info> Display informational ("I:") tags as well. They are normally suppressed. (This is equivalent to B<-L> ">=wishlist"). This option overrides the B variable in the configuration file. Note: B and B may not both appear in the configuration file. =item B<--keep-lab> By default, temporary labs will be removed after lintian is finished. Specifying this options will leave the lab behind, which might be useful for debugging purposes. You can find out where the temporary lab is located by running lintian with the B<--verbose> option. For static (non-temporary) labs this option causes Lintian to skip the automatic clean up of some collections. =item B<-L> [+|-|=][>=|>|<|<=][S|C|S/C], B<--display-level> [+|-|=][>=|>|<|<=][S|C|S/C] Fine-grained selection of tags to be displayed. It is possible to add, remove or set the levels to display, specifying a severity (S: serious, important, normal, minor, wishlist, pedantic), a certainty (C: certain, possible, wild-guess), or both (S/C). The default settings are equivalent to B<-L> ">=important" B<-L> "+>=normal/possible" B<-L> "+minor/certain"). This option overrides the B variable in the configuration file. The value of the B in configuration file should be space separated entries in the same format as passed via command-line. Note: B may not be used with B or B in the configuration file. =item B<-o>, B<--no-override> Don't use the overrides file. This option overrides the B variable in the configuration file. =item B<--pedantic> Display pedantic ("P:") tags as well. They are normally suppressed. (This is equivalent to B<-L> "+=pedantic"). Pedantic tags are Lintian at its most pickiest and include checks for particular Debian packaging styles and checks that many people disagree with. Expect false positives and Lintian tags that you don't consider useful if you use this option. Adding overrides for pedantic tags is probably not worth the effort. This option overrides the B variable in the configuration file. Note: B and B may not both appear in the configuration file. =item B<--profile> vendor[/prof] Use the profile from vendor (or the profile with that name). If the profile name does not contain a slash, the default profile for than vendor is chosen. As an example, if you are on Ubuntu and want to use Lintian's Debian checks, you can use: --profile debian Likewise, on a Debian machine you can use this to request the Ubuntu checks. If the token I<{VENDOR}> appears in the profile name, B will substitute the token with a vendor name to find the profile. B uses L to determine the best vendor to use (the closer to the current vendor, the better). This is mostly useful for people implementing their own checks on top of Lintian. If not specified, the default value is I<{VENDOR}/main>. Please Refer to the Lintian User Manual for the full documentation of profiles. =item B<--show-overrides> Output tags that have been overridden. The related override comments will also be printed (unless --quiet is used). Please refer to the Lintian User Manual for the documentation on how lintian relates comments to a given override. This option overrides the B variable in the configuration file. =item B<--suppress-tags> tag1,tag2,... Suppress the listed tags. They will not be reported if they occur and will not affect the exit status of Lintian. This option can be given multiple times and can be mixed with B<--suppress-tags-from-file>. This option can be used together with B<--dont-check-part> ("Not those checks nor these tags") and B<--check-part> ("Only those checks, but not these tags (from those checks)") to further reduce the selection of tags. When used with B<--tags>, this option is mostly ignored. =item B<--suppress-tags-from-file> file Suppress all tags listed in the given file. Blank lines and lines beginning with # are ignored. All other lines are taken to be tag names or comma-separated lists of tag names to suppress. The suppressed tags will not be reported if they occur and will not affect the exit status of Lintian. Tags parsed from the file will be handled as if they had been given to the B<--suppress-tags> option (e.g. ignored if B<--tags> is used). =item B<-U> info1,info2,..., B<--unpack-info> info1,info2,... Collect information info1, info2, etc. even if these are not required by the checks. Collections requested by this option are also not auto-removed (in this run). This option is mostly useful for debugging or special purpose setups. It is allowed to give this option more than once. The following two lines of arguments are semantically equivalent: -U info1 -U info2 -U info1,info2 =back Configuration options: =over 4 =item B<--cfg> configfile Read the configuration from configfile rather than the default locations. This option overrides the B environment variable. =item B<--no-cfg> Do not read any configuration file. This option overrides the B<--cfg> above. =item B<--ignore-lintian-env> Ignore all environment variables starting with I. This option is mostly useful for applications running B for checking packages and do not want the invoking user to affect the result (by setting LINTIAN_PROFILE etc.). Note it does I cause B to ignore the entire environment like I or I. The latter can affect the default profile (or "{VENDOR}" token for B<--profile>). Should usually be combined with B<--no-user-dirs> (or unsetting $HOME and all I variables). =item B<--include-dir> dir Use dir as an additional "LINTIAN_ROOT". The directory is expected have a similar layout to the LINTIAN_ROOT (if it exists), but does not need to be a full self-contained root. B will check this directory for (additional) profiles, data files, support libraries and checks. The latter two implies that Lintian may attempt to I from this directory. This option may appear more than once; each time adding an additional directory. Directories are searched in the order they appear on the command line. The additional directories will be checked I the user directories (though see B<--no-user-dirs>) and I the core LINTIAN_ROOT. B: This option should be the very first if given. =item B<-j> [X], B<--jobs>[=X] Set the limit for how many unpacking jobs Lintian will run in parallel. If X is not given, Lintian will not limit the number of unpacking jobs run that can run in parallel. This option overrides the B variable in the configuration file. By default Lintian will use I to determine a reasonable default (or 2, if the nproc fails). =item B<--lab> labdir Use labdir as the permanent laboratory. This is where Lintian keeps information about the packages it checks. This option overrides the B environment variable and the configuration file entry of the same name. =item B<--root> rootdir Deprecated in 2.5.18 and will be removed in a later release. This option used to control what directory was used as the B. It's primary purpose was to use Lintian directly from a source tree. However, since 2.5.18 Lintian has logic for automatically configuring itself without any assistance making this option largely obsolete. Note if passed, then the chosen root dir must match the actual LINTIAN_ROOT used by Lintian. This option implies B<--no-user-dirs> for backwards compatbility with previous versions of Lintian. =item B<--user-dirs>, B<--no-user-dirs> By default, B will check I<$HOME> and I for files supplied by the user or the local sysadmin (e.g. config files and profiles). This default can be disabled (and re-enabled) by using B<--no-user-dirs> (and B<--user-dirs>, respectively). These options will I affect the inclusion of LINTIAN_ROOT, which is always included. These option can appear multiple times, in which case the last of them to appear determines the result. Note that if the intention is only to disable the user's I<$HOME>, then unsetting I<$HOME> and I may suffice. Alternatively, I can be "re-added" by using I<--include-dir> (caveat: I will be ignored by this). If the intention is to avoid (unintentional) side-effects from the calling user, then this option could be combined with B<--ignore-lintian-env>. If for some reason B<--no-user-dirs> cannot be used, then consider unsetting I<$HOME> and all the I<$XDG_*> variables (not just the I<$XDG_*_HOME> ones). B: This option should be the very first if given. =back Package selection options: =over 4 =item B<-a>, B<--all> Check all packages in the laboratory. Note: If B<--binary>, B<--udeb> or B<--source> is specified, then only packages of that type is considered. =item B<-b>, B<--binary> The lab-queries listed on the command line are by default binary packages. With B<--all> this means check all binary packages in the lab. =item B<--packages-from-file> X Process the packages listed in X. If the line starts with "!query:", then the rest of that line is processed as a lab query (see L). Otherwise the line is read as the path to a file to process (all whitespace is included!). If X is "-", Lintian will read the packages from STDIN. =item B<-s>, B<--source> The lab-queries listed on the command line are by default source packages. With B<--all> this means check all source packages in the lab. The following packages listed on the command line are source packages. =item B<--udeb> The lab-queries listed on the command line are by default udeb packages. With B<--all> this means check all udeb packages in the lab. =back =head1 CHECKS @CHECKS@ =head1 COLLECTION @COLLECTION@ =head1 FILES Lintian looks for its configuration file in the following locations: =over 4 =item * The argument given to B<--cfg> =item * I<$LINTIAN_CFG> =item * I<$XDG_CONFIG_HOME/lintian/lintianrc> =item * I<$HOME/.lintianrc> Deprecated in Lintian/2.5.12 and newer (use the XDG based variant above) =item * I Where XGD_DIR is a directories listed in I<$XDG_CONFIG_DIRS> (or I if I<$XDG_CONFIG_DIRS> is unset). =item * I Deprecated in Lintian/2.5.12 and newer (use the XDG based variant above) =back Lintian uses the following directories: =over 4 =item I If no lab location is specified via the LINTIAN_LAB environment variable, configuration, or the B<--lab> command-line option, lintian defaults to creating a temporary lab directory in I. To change the directory used, set the TMPDIR environment variable to a suitable directory. TMPDIR can be set in the configuration file. =item I Scripts that check aspects of a package. =item I Scripts that collect information about a package and store it for use by the check scripts. =item I Supporting data used by Lintian checks and for output formatting. =item I Utility scripts used by the other lintian scripts. =back For binary packages, Lintian looks for overrides in a file named IpackageE> inside the binary package, where IpackageE> is the name of the binary package. For source packages, Lintian looks for overrides in I and then in I if the first file is not found. The first path is preferred. See the Lintian User's Manual for the syntax of overrides. =head1 CONFIGURATION FILE The configuration file can be used to specify default values for some options. The general format is: option = value All whitespace adjacent to the "=" sign as well as leading and trailing whitespace is ignored. However whitespace within the value is respected, as demonstrated by this example: # Parsed as "opt1" with value "val1" opt1 = val1 # Parsed as "opt2" with value "val2.1 val2.2 val2.3" opt2 = val2.1 val2.2 val2.3 Unless otherwise specified, no option may appear more than once. Lintian will ignore empty lines or lines starting with the B<#>-character. Generally options will be the long form of the command-line option without the leading dashes. There some exceptions (such as --profile), where Lintian uses the same name as the environment variable. Lintian only allows a subset of the options specified in the configuration file; please refer to the individual options in L. In the configuration file, all options listed must have a value, even if they do not accept a value on command line (e.g. --pedantic). The values "yes", "y", "1", or "true" will enable such a option and "no", "n", "0" or "false" will disable it. Prior to the 2.5.2 release, these values were case sensitive. For other options, they generally take the same values as they do on the command line. Though some options allow a slightly different format (e.g. --display-level). These exceptions are explained for the relevant options in L. Beyond command line options, it is also allowed to specify the environment variable "TMPDIR" in the configuration file. A sample configuration file could look like: # Sample configuration file for lintian # # Set the default profile (--profile) LINTIAN_PROFILE = debian # Set the default TMPDIR for lintian to /var/tmp/lintian # - useful if /tmp is tmpfs with "limited" size. TMPDIR = /var/tmp/lintian/ # Show info (I:) tags by default (--display-info) # NB: this cannot be used with display-level display-info=yes # Ignore all overrides (--no-override) # NB: called "override" in the config file # and has inverted value! override = no # Automatically determine if color should be used color = auto =head1 EXIT STATUS =over 4 =item B<0> No policy violations or major errors detected. (There may have been warnings, though.) =item B<1> Policy violations or major errors detected. =item B<2> Lintian run-time error. An error message is sent to stderr. =back =head1 LAB QUERY A lab query can be used to refer to a (set of) package(s) in the Lintian Laboratory. The general format of a query is: [type:]package[/version[/arch]] Where: =over 4 =item type This is the type of the package and (if present) must be one of "ALL", "GROUP", "binary", "udeb", "source" or "changes". This is case sensitive. If omitted this defaults to "ALL" unless another default has been specified (see B<--binary>, B<--udeb> or B<--source>). The pseudo type "ALL" acts as a wildcard for any real package type. The special type "GROUP" can be used to match all packages related to a given source package. For more info, please see L below. =item package This is the name of the package. This is mandatory and must match exactly. =item version This is the version of the package, if left out (or if it is "_") then any version will do. Otherwise the version must match exactly. =item arch This is the architecture of the package, if left out (or it is "_") then any architecture will do. Otherwise the architecture must match exactly. Note: This is I ignored when matching against source packages or when type is "GROUP". Note: For changes packages, this must match the contents of the architecture field in the changes. This field may contain a space (e.g. "source all") and therefore may also need proper shell escape. =back =head2 Group query A group query can be used to (re-)process all packages in a given group. The I and I part will be used to look up one or more source packages. The binaries, udebs and changes files for each matching source package will also be activated. =head1 CHECKING LAST BUILD When run in an unpacked package dir (with no package selection arguments), Lintian will use I to determine the source and version of the package. Lintian will then attempt to find a matching I<.changes> file for this source and version combination. Lintian will (in order) search the following directories: =over 4 =item .. Used by dpkg-buildpackage(1). =item ../build-area Used by svn-buildpackage(1). =item /var/cache/pbuilder/result Used by pbuilder(1) and cowbuilder(1). =back In each directory, Lintian will attempt to find a I<.changes> file using the following values as architecture (in order): =over 4 =item I<$DEB_BUILD_ARCH> (or I) The environment variable DEB_BUILD_ARCH (if not set, "dpkg --print-architecture" will be used instead) =item I<$DEB_HOST_ARCH> The environment variable DEB_HOST_ARCH. =item I If dpkg(1) appears to support multi-arch, then any architecture listed by "dpkg --print-foreign-architectures" will be used (in the order returned by dpkg). =item I Pseudo architecture used by mergechanges(1). =item I Used when building architecture indep packages only (e.g dpkg-buildpackage -A). =item I Used for "source only" builds (e.g. dpkg-buildpackage -S). =back If a I<.changes> file matches any combination above exists, Lintian will process the first match as if you had passed it per command line. If no I<.changes> file can be found, Lintian will print a list of attempted locations on STDERR and exit 0. =head1 EXAMPLES =over 4 =item B<$ lintian foo.changes> Check the changes file itself and any (binary, udeb or source) package listed in it. =item B<$ lintian foo.deb> Check binary package foo given by foo.deb. =item B<$ lintian foo.dsc> Check source package foo given by foo.dsc. =item B<$ lintian foo.dsc -L +minor/possible> Check source package foo given by foo.dsc, including minor/possible tags. =item B<$ lintian -i foo.changes> Check the changes file and, if listed, the source and binary package of the upload. The output will contain detailed information about the reported tags. =item B<$ lintian -c --binary foo> Check the binary package foo in the Lintian laboratory. =item B<$ lintian -C cpy --source foo> Run the copyright checks on source package foo. The package foo must be in the Lintian laboratory. =item B<$ lintian -u foo -U unpacked> Unpack all packages named foo in the Lintian laboratory. =item B<$ lintian -r foo> Remove all packages named foo from the Lintian laboratory. =item B<$ lintian> Assuming I exists, look for a changes file for the source in the parent dir. Otherwise, print usage information and exit. =back =head1 BUGS Lintian does not have any locking mechanisms yet. (Running several Lintian processes on the same laboratory simultaneously is likely to fail or corrupt the laboratory.) If you discover any other bugs in lintian, please contact the authors. =head1 SEE ALSO L, Lintian User Manual (file:/usr/share/doc/lintian/lintian.html/index.html) Packaging tools: L, L, L. =head1 AUTHORS Niels Thykier Richard Braakman Christian Schwarz Please use the email address for Lintian related comments. =cut lintian-2.5.22ubuntu1/man/lintian-info.pod0000664000000000000000000000737212310413206015323 0ustar # Copyright 2010 Niels Thykier # - based on the work Richard Braakman and Christian # Schwarz (copyrighted 1998). # # This manual page is free software. It is distributed 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 manual page 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 manual page; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 # USA # =head1 NAME lintian-info - give detailed information about Lintian's error tags =head1 SYNOPSIS B [I...] B B<--tags> I ... =head1 DESCRIPTION The B command parses the output of the B command and gives verbose information about the listed Lintian error tags, parses a Lintian override file and gives verbose information about the tags included, or (if given the B<-t> or B<--tags> option) explains a given tag or tags. If no log-file is specified on the command line, this command expects its input on stdin. Thus, the output of B can either be piped through B or a log file produced by B can be processed with this command. (Note, though, that the B command has a command line option B<-i> to display the same results as B, so you will not normally need to pipe the output of B into this command.) =head1 OPTIONS =over 4 =item B<-a>, B<--annotate> Read from standard input or any files specified on the command line and search the input for lines formatted like Lintian override entries. For each one that was found, display verbose information about that tag. =item B<-h>, B<--help> Display usage information and exit. =item B<--include-dir> dir Use dir as an additional "Lintian root". The directory is expected have a similar layout to the LINTIAN_ROOT (if it exists), but does not need to be a full self-contained root. Unlike B, B will I load any code from these additional directories. This option may appear more than once; each time adding an additional directory. B: This option should be the very first if given. =item B<--profile> prof Use the severities from the vendor profile prof when displaying tags. If the profile name does not contain a slash, the default profile for than vendor is chosen. If not specified, B loads the best profile for the current vendor. Please Refer to the Lintian User Manual for the full documentation of profiles. =item B<-t>, B<--tags> Rather than treating them as log file names, treat any command-line options as tag names and display the descriptions of each tag. =item B<--user-dirs>, B<--no-user-dirs> By default, B will check I<$HOME> and I for files supplied by the user or the local sysadmin (e.g. profiles). This default can be disabled (and re-enabled) by using B<--no-user-dirs> (and B<--user-dirs>, respectively). These option can appear multiple times, in which case the of them to appear determines the result. B: This option should be the very first if given. =back =head1 EXIT STATUS If B<-t> or B<--tags> was given and one or more of the tags specified were unknown, this command returns the exit code 1. Otherwise, it always returns with exit code 0. =head1 SEE ALSO L =head1 AUTHORS Niels Thykier Richard Braakman Christian Schwarz =cut lintian-2.5.22ubuntu1/data/0000775000000000000000000000000012310413206012355 5ustar lintian-2.5.22ubuntu1/data/cruft/0000775000000000000000000000000012313507507013513 5ustar lintian-2.5.22ubuntu1/data/cruft/missing-dir-search-path0000664000000000000000000000051412313507507020060 0ustar # where we could find missing source leading / means relative to root package # $dirname will be replaced by path of current # likely in current dir ./ # for binary object build by libtools ../ # libtool /.libs/ /.libs/$dirname/ # for missing source set in debian /debian/ /debian/missing-sources/ /debian/missing-sources/$dirname lintian-2.5.22ubuntu1/data/cruft/non-distributable-files0000664000000000000000000000111112310413206020142 0ustar # this file are forbidden in main and contrib # format is # md5sum ~~ sha1 ~~ sha256 ~~ current name ~~ reason ~~ official reference # # current name is the usual name of the file # reason is human description of the problem # official reference is a link to the license/official source # # Please sort by md5sum 2ab371cb4a67747aaa7835ebb22cb0d5 ~~ a396330a335b055c5b8cb81299921c356286e6a7 ~~ 8e058aa0b336cd2b0bd0dc14db9e7d225ca34d3324652e2ea06eb48462f020f1 ~~ data-forbidden-lintian-files ~~ This is part of lintian test suite, used for testing this tag ~~ http://lintian.debian.org lintian-2.5.22ubuntu1/data/cruft/non-free-license0000664000000000000000000000534612310413206016564 0ustar # first field is tag # second field is a list of keyword in lower case separated by && # third field is a lower case sentence to match the license. Notes that space are normalized before and formating removed # fourth field is a regex to use to match the license, use lower case and [ ] for space. # 5th field is a regex to use for the first block (by default equal to 4th field) # 6th field is a function to call if the field 2th to 5th match. # json license license-problem-json-evil ~~ software && evil && good ~~ software shall be used for good ~~ software [ ] shall [ ] be [ ] used [ ] for [ ] good [ ]? ,? [ ]? not [ ] evil # non free RFC old version license-problem-non-free-RFC ~~ document && purpose && translate && language ~~ this document itself may not be modified in any way ~~ this [ ] document [ ] itself [ ] may [ ] not [ ] be [ ] modified [ ] in [ ] any [ ] way [ ]?, [ ]? such [ ] as [ ] by [ ] removing [ ] the [ ] copyright [ ] notice [ ] or [ ] references [ ] to [ ] .{0,256} [ ]? except [ ] as [ ] needed [ ] for [ ] the [ ] purpose [ ] of [ ] developing [ ] .{0,128} [ ]? in [ ] which [ ] case [ ] the [ ] procedures [ ] for [ ] copyrights [ ] defined [ ] in [ ] the [ ] .{0,128} [ ]? process [ ] must [ ] be [ ] followed[ ]?,[ ]? or [ ] as [ ] required [ ] to [ ] translate [ ] it [ ] into [ ] languages [ ] license-problem-non-free-RFC-BCP78 ~~ license && document && bcp && restriction ~~ bcp 78 ~~ this [ ] document [ ] is [ ] subject [ ] to [ ] (?:the [ ] rights [ ]?, [ ] licenses [ ] and [ ]restrictions [ ] contained [ ] in [ ])? bcp [ ] 78 # check GFDL block - The ".{0,1024}"-part in the regex # will contain the "no invariants etc." part if # it is a good use of the license. We include it # here to ensure that we do not emit a false positive # if the "redeeming" part is in the next block # keyword document is here in order to benefit for other license keyword and a shortcut for documentation license-problem-gfdl-invariants ~~ license && document && gnu && copy && documentation && included ~~ gnu free documentation license ~~ (?'rawcontextbefore'(?:(?:(?!a [ ] copy [ ] of [ ] the [ ] license [ ] is).){1024}|(?:[ ] copy [ ] of [ ] the [ ] license [ ] is.{0,1024}?))) gnu [ ] free [ ] documentation [ ] license (?'rawgfdlsections'(?:(?!gnu [ ] free [ ] documentation [ ] license).){0,1024}?) a [ ] copy [ ] of [ ] the [ ] license [ ] is ~~ (?'rawcontextbefore'(?:(?:(?!a [ ] copy [ ] of [ ] the [ ] license [ ] is).){1024}|\A(?:(?!a [ ] copy [ ] of [ ] the [ ] license [ ] is).){0,1024}|(?:[ ] copy [ ] of [ ] the [ ] license [ ] is.{0,1024}?))) gnu [ ] free [ ] documentation [ ] license (?'rawgfdlsections'(?:(?!gnu [ ] free [ ] documentation [ ] license).){0,1024}?) a [ ] copy [ ] of [ ] the [ ] license [ ] is ~~ _check_gfdl_license_problemlintian-2.5.22ubuntu1/data/cruft/non-free-files0000664000000000000000000014631012310413206016241 0ustar # this file are forbidden in main and contrib # format is # md5sum ~~ sha1 ~~ sha256 ~~ current name ~~ reason ~~ official reference # # current name is the usual name of the file # reason is human description of the problem # official reference is a link to the license/official source # # Please sort by md5sum 02e79d9d2fc3a5a9ee6ab5c7744d64a0 ~~ afc4ff937145189043154437750c8bae0bb43f74 ~~ 7327d6bf39bd5048ddffff7563175dc3a465c7553f51bcbad153a69eccf504ed ~~ valid-html20-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 034d80867a2d880134d143e5b457a138 ~~ 7aacd6575cceb6d161cabbcfa04b9f7ae604ca6e ~~ a99ea17b0ed87822455b0c535bebf15f39667243a7a781a99a615092afef8f69 ~~ valid-xml10-blue.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 03c218e88b8627bfe6723cee63227f44 ~~ db19e44adba19eebf4ea04bf0d8653db72bb8da2 ~~ 030810662b02f201f0b903e8064b559c1fefc5f88f280cd5ed44264182786c68 ~~ valid-html401-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 055460df9ab3c8aadd3330bd30805f11 ~~ b54b5fa32a884b4297b2343efdc745d0755cc7d1 ~~ f65941f9487c0a0a3b7445996ecbbd24466d7ae76ea2a597ced55f438fa63838 ~~ trebucbd.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 068de8c0b1d9926c0423a409c0adf881 ~~ 2a33257d868d5d23fccb71b57e21d37c897adf7c ~~ c7d287eac2af4840cec9a2b61adfbc6df18da82d63f5a2431fa07e0b48078f41 ~~ valid-svg11.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 0a83edb1fdc0469f39673613144b8687 ~~ 072bee098c55545f56f693eb3ab3f3eac8912f32 ~~ 43f695a032a284c8c05d773f0bfce5639dc1e6127d87a5d1d45ff178f7efb692 ~~ valid-xhtmlbasic10-blue.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 0c2a0b4b6f069984e510eddb34a8e462 ~~ 227a6d4a20fd807c1db4aac121e75c47a9448b2a ~~ 06a80f90aaf9b0b4b4446a6d5b20d8e59cd328c5cf7202f7e379988f82e4b93f ~~ valid-css2-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 0e14f7af10984e48a51886b8b9c8e3ee ~~ 95e7716cdf9ac4a07eabe09bb4db83db722e5622 ~~ cbf8f3f82a699c22a7e5ece708011a87ceeae76ce3ada9b33415c9144c237fef ~~ valid-html32-blue-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 0ed79958c3b02d6d514dc331b66953c3 ~~ cf33e3d5d7d1c198382fcf64a3b20db05eb6c968 ~~ 308359e53bcb253dca22232084c93427bb1a52c8dd1c9c9e71827356634c2f5e ~~ valid-css2-blue.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 0f18e38686cb819de4b50021b324d590 ~~ e8f1b12529d336cdfdea1be086a6f81c3776049e ~~ 65a1cb69a69cac252043b01fba3652906b605cebcc75e2c54d02f5eeb6f2b75c ~~ valid-svgtiny12-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 10b59a0b3f9c1982013c87c81580f0a0 ~~ ec2e0bf3eada4eb0513f539012a56b92da77601c ~~ 24fc8707ea4ec14e128f747d24bf9d0e2f38b02d54cddceb69448cf0836d16d6 ~~ valid-svg10-blue-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 11bbe23913450b19a5711a9c1f7c2228 ~~ bc686e10dfaff59ff9e1bbf008e97e4fa2290e03 ~~ faab2771380875d54f6188344da47ac2619c0e16d18b61700c1037493a837697 ~~ definitive-guide.png ~~ Non free book cover. ~~ http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=24735&sid=00d5a91304948ce71a38e695d225e122 127423d6da6ddd673915edcd61264bb4 ~~ 65399bc8e392478a2c7e899b061e6377162bf7da ~~ 2cfd9f2d1e1c9be94f077439a54b31d304b39520d38f5b9eace983965baecc98 ~~ valid-css1-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 127a486e3e554209d2551a5aa76d8927 ~~ 74518a5e53df261767ef3a385aec12f682027071 ~~ 41a824318d6027205ed5adb4fe157bbd4aee6ac4f5e8d1fad0b0fa1a28aa0bec ~~ valid-css2-blue-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 147b1c61b0cf362fe9c6f69fd2ae012e ~~ 43dd70fdf999e9e87683827cea64ea45fc124127 ~~ 2e939f5626079dde3c002482a5c0cecebd5e7dc6c3fc8acec4cf9b05cc1ffa44 ~~ valid-xhtmlbasic10.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 14e7ebd754a6815c621fe3077f85b17f ~~ 607a24b9f392e2531b8d94eaf62ef91593f46da4 ~~ f0b2eadb29a9d9c63122fed05bbe52750d8605a81c8bc85fe1cae9949c35d82b ~~ valid-html40-blue-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 163d7d71acfc0ca7db3b733fa310a276 ~~ d5e6fc3807300636574f099f61daaddf5fb5d6f5 ~~ 1cf896df22f56f5b83d9cba17f8400f0cbd8638ddddc6d130f47d73982c33971 ~~ valid-css2.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 167e27add66e9e8eb0d28a1235dd3bda ~~ 74941cc95734772f8b17aeec33e9a116f94a26ae ~~ f3f6b09855b6700977e214aab5eb9e5be6813976a24f894bd7766e92c732fbe1 ~~ couri.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 17e6af61533aad07ffd56119e995f6a1 ~~ 53fd2d33ce8d5639dd0c409e5b41d28f1e6d341d ~~ b4ae8f92fe5c2d145b8890b20c008eb21632e7084b0b8fde90eb107adec35e99 ~~ valid-html32-blue-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 18110f421269eba9191127a2b9c40778 ~~ eb3e1c014f7c33932cd06908524cf7c44b29b8f2 ~~ cf4f78a94a207138ed4b634b3fcecc9922fc6fa94c4bb42ac3f77dbfe689e347 ~~ valid-css1.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 181c48c6bce494b7c97de93b3ac2359a ~~ 95e6a7b2d58c15c312ec36ed6abe096b13a7a56e ~~ 01accbd90451af33dc3b0cf935278af3605624ede3bac88becd1dd328d53d8e8 ~~ valid-svgtiny12-blue.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 1835cc9ea99d41071c627d23a7cf5a58 ~~ e0550b80f7241c0c9c819c7ae4263769ca9c4f45 ~~ 602f0412c03828aae92741d0ac5fdc783ef9be79d7d99ed0d4c02a3ea6396c14 ~~ valid-html20-blue.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 18d86628c801d531df9703ac50b3db3f ~~ 0ea79af20e41291d9e19563e056511a8ed65c093 ~~ f8589f6740e6296d5fac5e40c25d41ee4fd81e545fbc702a880f5031636ae230 ~~ valid-html40.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 1a56b45a66b07b4c576d5ead048ed992 ~~ bc1382a14358f747cbd3ff54676950231f67c95a ~~ 10d099c88521b1b9e380b7690cbe47b54bb19396ca515358cfdc15ac249e2f5d ~~ webdings.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 1d3fda2edb4a89ab60a23c5f7c7d81dd ~~ 9eaea0911d89d63e39e95f2e2116eaec7e0bb91e ~~ 2b3aa1645779a9e634744faf9b01e9102b0c9b88fd6deced7934df86b949af7e ~~ sRGB.icm ~~ This file may not be distributed without fee if modified. ~~ http://bugs.debian.org/657281 1e30b3b20c8f0635122df48988ef2c2e ~~ d520a305379a359cb8069efa81eed4d18d3cab5c ~~ e3ba6e0ece6799e84a5e8224bb5d683c6897ceca5ec2c58fffa8818be9144bda ~~ valid-xhtmlbasic10-blue-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 1e4e5d1975bdf4a5c648afbf8872fa13 ~~ f6bafcca21153f02b4449fc8949cdd5786bb2992 ~~ 1523f19bda6acca42c47c50da719a12dd34f85cc2606e6a5af15a7728b377b60 ~~ georgiai.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 209da8a9016a12eb5d9d1a7ee34638a2 ~~ 0ed3144eb20cc54a73837f9eb0c9672693b2e9e5 ~~ 260e87368b06066863e853e2fda2551cb9b3739ea3d9892a4d475e6e1af4590e ~~ valid-svgtiny11-blue.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 20f23317e90516cbb7d38bd53b3d1c5b ~~ 9c5be4c1f151257798602aa74a7937dcead5db1f ~~ 6715838c52f813f3821549d3f645db9a768bd6f3a43d8f85a89cb6875a546c61 ~~ cour.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 22bce04f537a28d2d3e64f73ad910351 ~~ f7d110da2eef2cdefa2ee8e66fbbad35b7998cf8 ~~ 464f143fa846f01adad267793c20bf075f78f71000cd1aa799c094d5fa22caf0 ~~ valid-html40-blue.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 23f86f9f398de2043fc228cd7d8e7283 ~~ 576da542de411199ec69ba239317b44ff95348d4 ~~ df76b219e5c633f3e8ecc09dd214bf5a31c2a424c76553a283f8ac8620ff8891 ~~ valid-mathml20.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 24b3a293c865a2c265280f017fb24ba5 ~~ 3ac316b55334e70a6993ded91328682733c4d133 ~~ 91b59186656f52972531a11433c866fd56e62ec4e61e2621a2dba70c8f19a828 ~~ verdanai.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 24f5a9360a3d7b0483fa68240da1241a ~~ 1eec251f6da09ccea499fac8b263684590831d61 ~~ 37ae4813be539afea94d73ee075d5cd17140a042237f93a06a0b23f479862525 ~~ project-support.jpg ~~ Non free logo. ~~ http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=24735&sid=00d5a91304948ce71a38e695d225e122 25633f73d92a0646e733e50cf2cc3b07 ~~ d205d443f4431600378adaa92a29cc0396508919 ~~ 70ade233175a6a6675e4501461af9326e6f78b1ffdf787ca0da5ab0fc8c9cfd6 ~~ ariali.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 260fb0b39d93c57755234c30c44eca4e ~~ 883f3ad1314f80f65fb47a5a12d50ffb26d1b554 ~~ 4f438144260f3e0bed889de8b2aa0635b36cf38c9a9f16ed12d7ee1cbba15ce3 ~~ valid-css2-blue-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 26ba1ba208c37e5417b5b74d331a644d ~~ 7085c8c0c9746aa718d81cf59a78642be1008487 ~~ 2814fc0c03847da8ad725052ead899ef44d2cfbf69044d02661dac1fa0a9a49d ~~ valid-svg10-blue-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 274bffcbe48d0b1c1959f6a782fefd39 ~~ c36ae8c104cb08216a8a4016c07e45f9b064fae7 ~~ 1a30b0a4318affe15a4d6af381f39fa24215b6975f0d23c90b7b72d657055d03 ~~ valid-html20.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 288235a67dd5d01befc2ced6c00b2ca1 ~~ 499b7270c24af9eb236037457b40bb0924f69a4b ~~ 3d152f011c6fc65b2e693ba0b68e275083ff18e70174d8f88ce3efce7be5cee0 ~~ valid-svgtiny11-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 2c8b213e276a778c4b18a896b2002cd2 ~~ 0424bf00624e144a9c6a36553c119c9b55534808 ~~ 6b9ffdde47a95ea1024117301b77401eb61af63abf7c016c615ffc0b021c6cdb ~~ valid-svg10-blue.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 2ef0a3da342c98067b57d3285f26c02b ~~ 11c90411dd0340cc7c83ee43554b9e4b780a7565 ~~ 40370d10ee90e1ef6f238729e1aed7c63dc8da35ac062bd4599cb8267bd8ab0c ~~ valid-xml10-blue.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 2ef216df211bd28924637ab82597c1e9 ~~ 7bb393411d0ea3ec77c8c163d5131c4d3f839e6b ~~ a51e388f1261ec2bf1fa73496d85454244e99d18cf1636a678446d6f1f59d168 ~~ valid-css1-blue.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 2f56157e02756a47a0f2b1520695011c ~~ 244c6b7f5c90368e9538748eb9804323e3048962 ~~ 98c450a906ffe2b2dc515f59fe265a1fe88aff5efc922ee77f81bd4c6fa47a13 ~~ valid-xhtml20.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 2fa45221a62d6b5cb9f91ce6a49ab2a2 ~~ 03ce32f2fd5b6563f357d0627af7424eefc78e7a ~~ a18ce0b6fc336bb58148672fe82ae1c9b4b3c4dc7a5e39fc10a2122baa2d5b98 ~~ valid-svgtiny11.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 2fe9ed8884ea91fb8df5b775b45e9dd7 ~~ b4aad64d5b79007f8addba8e8b4805c0075d2fa4 ~~ 42813bca4bf2c612778f22763290c93579e5b169bb28fdfb0a6abbf257622c48 ~~ valid-svg11-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 3019df8c130fc39c949a705266365d34 ~~ b773a346ab457e1c3192437e2c30cdbce05cd02b ~~ 4675edd75bfa382dd4bbbc709593f3f769708df8a4a36e7f3906cd02be2054c2 ~~ valid-css1-blue.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 320894f07fd8f448e5eee51f851c3572 ~~ 12a2f91e1f6c92eeeb75b85c018931bcc1a4a3f1 ~~ 88bb59de7991e0322b0e10a0005814dc44628a19e2cbf1e9474a7affcc2a1c1c ~~ valid-xhtml11-blue.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 324dca8bc1f5c7d1cbfc21a6bf60959f ~~ f0389704f49b34511259a3b7c893a9bc0352ed0e ~~ 65d81ab2b1a084f3fb115c46c8150a2afc4e89ef3e78a0c467339ed4e7971fed ~~ valid-xhtml20-blue-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 34cd8fd9e4fae9f075d4c9a2c971d065 ~~ 0d99c9d151db525c20b8209b9f0ee1ce812a961c ~~ 4044aa6b5bebbc36980206b45b0aaaaa5681552a48bcadb41746d5d1d71fd7b4 ~~ arialbd.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 356b779a06c228895d3228fc1ee1355c ~~ e6ccaa38bf5eb9a3c4f1c667d414eda8358c8d7c ~~ 298586eced80f0f99adb3e5252a16b64bcc11aa833e50772be1ffda25c6e8925 ~~ id3v22-tda.mp3 ~~ According to tag (COMMENT="ripped by [...]"). ~~ http://bugs.debian.org/736203 36317f85acf46c21da79de350c28d28d ~~ e7a6e90d4de5ec35b49d6a3cc81caf9b43f6bc80 ~~ 1509709af9da7a54ff83a90c311ed354bbfb8caf85843ef35f82e0807f1ad785 ~~ valid-xhtml20-blue-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 37082bc60cf6a5af10fdc5fcdf905b29 ~~ b561161b6f15ebc09cc14a14669e32a8cdd7624c ~~ a3de696410c388a3df2e68520cc596d64b4b14954c87d2713aa10a49bec46e2f ~~ valid-html40-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 37153ab647107018620cc415fdf5837c ~~ 08cd698e02907eed5a04e75a36b266ba5a9ed741 ~~ 22ace033995dc54b0f3288ac6b5e438d8b9d46de7daf6806cb8cc8f1cb0f1d6f ~~ valid-xhtml20-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 378737887fff3128b99884883b11ced7 ~~ 233d467e1340fa7c6fe020c9234687d59a526c97 ~~ d1da5c100ace9d29f2a9a1e73d1e63daac570e0d280eebcc1008168871b7bc54 ~~ valid-svgtiny11.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 39cdcac91b02b0c0db457f6920c6acd9 ~~ 85236c5ee9bb6ef3009be77f8adcfbb0b609f9df ~~ 213dbcd8ee2057af7db0f323bc5e3d77707d785a2a527e31d9ac7cb7548fa4c8 ~~ valid-html32.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 39f24df117c3ced49f129aa8e4a26295 ~~ 93428cd89c1041e65a358f7acdb2f2bbef96a120 ~~ 8bf6ed6d7fa35b29f67efed4938d6c2f0e7147dca04efd5806be27d50081f3fd ~~ valid-xhtml11-blue-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 3ba52ab1fa0cd726e7868e9c6673902c ~~ ba19d57e11bd674c1d8065e1736454dc0a051751 ~~ 96ed14949ca4b7392cff235b9c41d55c125382abbe0c0d3c2b9dd66897cae0cb ~~ verdana.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 3cf661cc8862886c1d280823da177661 ~~ 1c52ade48cd7a8f6f508474d6b1820ef616a01cd ~~ ff566480f8308ca2241131dd0a39f996dd29043b8ebe9781e090cc266b874d98 ~~ valid-css-blue.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 3cfc9c924b87d933f57a51a03d4fa0f5 ~~ 1d21654b0e08f8bec7f7d7c5bb017a1b037b61fc ~~ e754da93ec799df34e9b1ab85df495caedbbd5fcf1896cf08fd8361588d39df1 ~~ valid-xhtml11.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 3e0823042b28b72908951240200ba290 ~~ 16de7da2d395230fdd0b844e340c6600f4e8c5e7 ~~ 2f84e29197b6a8332965213c874780220b8e30c5fa349741586252dcbdf181d5 ~~ valid-xhtml10-blue.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 3e7043e8125f1c8998347310f2c315bc ~~ 49560b47dac944923a6c918c75f27fbe8a3054c5 ~~ dad7c04acb26e23dfe4780e79375ca193ddaf68409317e81577a30674668830e ~~ ariblk.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 3fbdc9eeecb5a8613277be69f0383f39 ~~ cb9987c1518b7d08466ef4f0ab22fe4a7cd14494 ~~ 3c23d51873f2f04a2dde1aae54454664d8c69ba54747f74c2a3ed1fa1a4d5d45 ~~ valid-html40-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 411d33fd82f04daecbfb10020a69b7ea ~~ aa1dc8920929d523c3e2ea0c94acb118d24232f2 ~~ a03f47087b21cd41337b1e06bc1751f6cbd2b150349f6b304d821d4b5d01921f ~~ valid-css1.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 42dbc9acc2c7b33fd88e5a8bacdffb86 ~~ 6a77510bce4fdab639de128b417c5580974dafb4 ~~ 5917dc36c6274ea18055f876159d005df46f62eaa5e116b5e2c5e774fd2e8735 ~~ valid-html32-blue.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 43f1ddf6ab8bc25fe4ff26f9765306b2 ~~ db90e922040a9b83743d610b7ae66490842989de ~~ 2c99faf273c1c176f3878febb0caeb87691fac1b8a22f66488581ee42b676a5f ~~ valid-xml10-blue-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 4532a59f9263477d5bb292ec74f3ea53 ~~ 92b3b7a815fc8af2e1c0af2df0c70ced2434c258 ~~ b45bd555ada8525ae253d15816a2bdba103cd995058e16b37ae573840b7914df ~~ valid-xhtmlprint10-blue.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 467689e1ff1bb49a08e3a0e2b54129e6 ~~ 7da1c4f5a93675ba956d84cd63983ae32a00b267 ~~ 4edc8d5f94b5e97f118376311e4c8484ff964aaefaf50c27ed1f3f7d236d846b ~~ valid-xhtml-rdfa-blue-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 47820e664fb46597e29935435d20fdd4 ~~ 0b457a37d643b41afd048f63b27f8a58ed894c99 ~~ f906418016008f581f35f68292ded3c2129167ae1ddb024722c897fa0144e0db ~~ valid-html401-blue-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 47e0ad5d9f8d4622a896f4769a382770 ~~ 9c519e4482230e51aa4eebd08cdd9b852874f2be ~~ 0a4c1a699a684ed74906662cb7cf0042bf1e19f0e9c5feb33f60de74b836a1d7 ~~ valid-xhtmlbasic10-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 4a4e798e768d580e994127f92bca9c7f ~~ d41faa8d0fba6dbcc3a058cfbc6abf66258e1808 ~~ 80f18f480b9826e075814a18edfc6a7d3fd2584ac86644f709ef9617d095ae2d ~~ valid-xhtml-rdfa-blue.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 4bd3e733593d533cfeee8a3ad32ec65f ~~ 97b94632698a6569eb6ab42ba143d78f01e8543f ~~ 6e404ce33318bf7b383f2d35b0281c7647cc105f1fb30d55a43133296e71c9ab ~~ valid-svg11-blue-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 4c175ddf046bdc9fb7308c5c4db1c59e ~~ 3ccac12a9ecb188c3814acc998b06a21f8e6c24c ~~ 39ec7559ccbcd70a9c9b61c4a3bfaf03bf5d4af95561b5ad8da96af0880e6d36 ~~ valid-html401-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 4d426d260789d44003b1526ca71893f9 ~~ 345904717964673b5dbfb32c5f37120995c68e04 ~~ 62f6663512c4d0bd39bd296e03bc6d948174dce69f0b205036c019d6cb0455d9 ~~ valid-mathml20-blue.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 4e7ed61f78a86fa9fc6a58b3c107dd0d ~~ 28ac8a98d71b387252d167708fa5944094495512 ~~ c520c18704c61942ec7358c050d1fcb3cfc61c88520202150d3afba2d4faa733 ~~ valid-css-blue-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 4f97f4d6ba74767259ccfb242ce0e3f7 ~~ d9d9ad4ba85fcd9dbe69e7866613756f1dbb4e97 ~~ 4e98adeff8ccc8ef4e3ece8d4547e288ff85fdc9c7ca711a4599c234874bbe86 ~~ times.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 53f94aed311ed8f88dad3be7dfb0522d ~~ edc7e6b20fb2833cf8ea1de576da9ec1ab562265 ~~ f28fcd434e116d0ad8ad523953f5aff3bf167ebdba5ff7273c935c8a9df598c8 ~~ valid-xhtml10-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 54c6fd8ea93b273acf0047a261b19fc7 ~~ 2ef1dbafc37fc8dd2cdca2c6ed9325a5d82a4d9c ~~ 5caf3e728d91c107b388e67ea3c5f3b1e5fd3eb7d1b99477ed61ce85070f11ae ~~ valid-xml11-blue.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 54d5361fbd234bf6514c33230cf0c659 ~~ b6ba9d52f361e3e5352ab0b3b07816a406ba61d3 ~~ 52ae8eb2852754b330097997e243cb98d6c2982a6d707d62c707bed34cc7200b ~~ valid-xhtml11.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 58cce9ac66081951ad7aac1463b06313 ~~ e3b528c66f8deac9fb28b15999a4f9d4ee6435bd ~~ cee3631d5da85ac2f9eabf3a1656842ae4e6e8694ce545ffdf6f98e0b13d656b ~~ tricks.png ~~ Non free book cover. ~~ http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=24735&sid=00d5a91304948ce71a38e695d225e122 5bbad00fb58aafdda30d6775c476686c ~~ bd1141cb3bb0207346c1facfdcb0bff5c09ce405 ~~ e9f115a1aa98f9802bd25bab14d4f92bdf9c30070b4a562ff0ebfc0fc043d3dc ~~ valid-xhtml-rdfa-blue.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 5bbf23e7c90a7c96a779f758528a04f9 ~~ b26a404f0899eb0621b017f92ca1a45f8eb0c26c ~~ f95a2fb17ca6317c54587a2b809f2e15c3d05c2ce49434e601f34b90490fc012 ~~ valid-html20-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 5d51432151f81ada3bf6f463f1263c36 ~~ 0042bbea30f7a37a38c4905f1b28fd9f921b650f ~~ d8caa94f426fe0c286037b1db37a25160855b901fe70b6c1f146081dc9f05f50 ~~ valid-xhtml11-blue.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 5dcca5eebb87214e8d459cded09a5373 ~~ a177dc6152f9afc51700a894ce7ef5e5d30ab316 ~~ db93d557a2704790a06fe793484bb6fd591af757b6d097098db2a36f5bc471f8 ~~ valid-svgtiny12.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 5f06ed664188785dfe65d7fc76a86622 ~~ a2770de9b277d5c07662a8f48c31cf64eaff3b3c ~~ fb287e3cc39c1df7bf24a41b7536670537419b70d323da63e517e9218ec6810a ~~ valid-svg10-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 653fbc47ebae9108b2991a026ba8ed0a ~~ 08b67468fcd1c01e03c528ad6bd5fa6aee8904d4 ~~ 444f62bb103e21e198563eda5929e506cfcbeead612736538629fb6544902c9e ~~ valid-xml11-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 65cd8d7bc6d9070d17b4c772032d4c6f ~~ 228e976744a7fef771e0155ffeec79bbc05f21b8 ~~ cbd75ff057348f6a53d0561aa1513c2998569c979eaf1a2749f1573c42450a07 ~~ valid-html20-blue-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 660fb33181e24b9695be97cf13cc5b73 ~~ 6a6ac853ba451bccc6ba49156aba483a557abdf7 ~~ f8fecf79e9b69ba9a28da6bd1118e13a6486f6f7c471f7da56ab11cec144d0e3 ~~ valid-xhtml11-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 663974c9fe3ba55b228724fd4d4e445f ~~ 953839b69c5bc047cb53efefc755dd21175a3a1d ~~ 48d9bc613917709d3b0e0f4a6d4fe33a5c544c5035dffe9e90bc11e50e822071 ~~ andalemo.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 6baa9d31753a781bd3adf59324316468 ~~ c7d7e06b40d353cfbd432ef2f943ad4f8dab5840 ~~ aa03e3f7e0354f393f686ca50bf80aca16c68e63e880da2eb62564a8ca3d7a07 ~~ valid-html32-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 6c0321ba4f9bc33777d4784dcd15e0f6 ~~ da4d6ff7bf0f96a7c7454eb654da573b64f47673 ~~ 6a4090c537cc88c006ca822981a3c7826058c0fcfc84bc7174bb35091f2f5e71 ~~ valid-xhtmlbasic10-blue-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 6c2e943f1c31c7613d85e971b1c5352a ~~ 3b999e70cb0a9b60e1f19e19400f424fa58cd799 ~~ f73ab06f5c13d72bb23860bd8792a86221730be65c5ee56a423f82088803041b ~~ valid-svgtiny11-blue-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 6d2bd425ff00a79dd02e4c95f689861b ~~ e997a0bf7a322c7ba5d4bde9251129dee3f66119 ~~ 192e1b0d18e90334e999a99f8c32808d6a2e74b3698b8cd90c943c2249a46549 ~~ timesbi.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 6e8ad6a37983ddb3a0951ac3a7c0b4d7 ~~ a105793df7445263f250f7f5b925236519b39332 ~~ 8a9e64adf9351dbc0f333daae135c88d5162ed8eadf5e65801c19914ab657bab ~~ valid-xhtml10.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 6ea617b8063a70212794c9fefc868bf3 ~~ a39ac02973936089311e242bf5c7c3368fdc4235 ~~ d57d2a852758d0cfc58130901f1b3e4c0473b4a4fb52478f4bf49c95434ac61d ~~ valid-xhtml20-blue.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 7088205c37654319e430b57dda2aabfe ~~ eb5f70db5d0a68c00e2c502c49d6f06f5ce52bb1 ~~ 29d63668ca4f958b7b0910c7cd6b307af30904418f15b572dbde37f962a9239b ~~ valid-xhtml-rdfa.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 70e7be8567bc05f771b59abd9d696407 ~~ 6480f383a9cd92c8d75ac11ef206c53e3233abb2 ~~ ec3ffb302488251e1b67fb09dd578b364c5339e27c1cfb26eb627666236453d0 ~~ trebuc.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 71b2b30faae6968739c7bcccd324040c ~~ 5583e9ceda3be6eccc2eec3fb066d2260cf54ac2 ~~ 0851e174d2b3ece515802dedf74a64e975a0ebb051386deca4f798cc1e354340 ~~ valid-html32.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 74325a1957cd934f819f61be1c73784f ~~ b4325f497fab7ccdd04062d1e883e82431383ae6 ~~ cab1c2e2878c7505db695d6277d85cf87cbd5b529154b089ad0d9101ef417abf ~~ valid-css-blue-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 774c6de7a25e927d04fd84d467c9e936 ~~ 71c654ebdc6eccb5daca4c180dd9da9bc5bed94f ~~ e5194e57cbe7370c9e43f2a5198a066347a6d575f8bac3622d962edb39c62ccf ~~ valid-html20-blue-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 775a202b8d5ec8cf009535a076c9fc52 ~~ 6f135be1bff8203d04bc80b4b89df7ede291a9f7 ~~ c576108c0cfb59bc82a9ef0a64159ced37896f903acccdf5effa07a33f175457 ~~ data-non-free-lintian-files ~~ This is part of lintian test suite, used for testing this tag ~~ http://lintian.debian.org 781f30fd5839bba3e48998256d4c3458 ~~ ce539215e8f662c438192b86b670989beaf7fd0c ~~ f42d521ab513aba165aee2e82bea1363b693b7e5a6c96e7dad098e299b9d15d5 ~~ valid-xml11.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 7a3571eae7ef7351263e5bf118b3504f ~~ 6e3d6332535f81b6ac6d6983730335e898ee3f35 ~~ c4e4c2bcbbab229653c3285bbe211bdd9efba44c84cf8d76414bfbb46fc3dbd4 ~~ valid-xml10.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 7a5e17a4b613e35d1d10f518495254bf ~~ 3367ef25993e088e9fef41eb03011c51f81645d7 ~~ b86ef30256234d5037a4ca2627375dcb93c050c31dc28c82d935ac149ef8e425 ~~ valid-html32-blue.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 7bfbe49aca0f69c6a936d548af568a94 ~~ c43655d90095c92a761a6baf4c3eb3a43a7ab7ef ~~ 0582d49672e7157e71d910d0005e97fe14ad1661307b5b108bf3e4bca0770077 ~~ valid-svg12.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 7cee00720025ab007428f6e3e1a7214e ~~ 01a6c6f262e003a1a2dc30e0cdd8ca412eb8be6e ~~ 26496d2be92279a0f4a6394497964491837339ae44af590e9f92f516ec4e9d34 ~~ valid-svgtiny11-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 7d94f95bf383769b51379d095139f2d7 ~~ 39b43bf424ac193259b3787764c1cdd7a7e2242c ~~ edf8a7c5bfcac2e1fe507faab417137cbddc9071637ef4648238d0768c921e02 ~~ courbd.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 7e562ac7e442b624574c5c4f35afc6e0 ~~ ed0e8aea57c4ad9f3089f9fda0ec79df3cc2fc65 ~~ 7af51046652b9c8fd2f1504b38d50b1a0730d5f604d4f4a997024bbb8e839f9f ~~ valid-svg12-blue.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 80eb5bb65bce626e4fe1c30b01b415b3 ~~ 466f3d78e234967f32b78853b0861f6339f4a272 ~~ ca8e911927118a9cfddcedcd562b50d86c22349479c3347ab4337ebf180eb0e2 ~~ valid-css2.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 81d64ec3675c4adc14e9ad2c5c8103a7 ~~ 5518f0bdebe7212d10492ab6f4fff9b0230c3cbe ~~ 873361465d994994762d0b9845c99fc7baa2a600442ea8db713a7dd19f8b0172 ~~ comicbd.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 84a0496cfe509bf4370ad17af6d85622 ~~ 7ab8f1991dabde584b9838771e6dfd1507ba90c5 ~~ c92e0fa07d29e3cc5c2b4cd5cb9366e4216599ba367ca7bddcbb99b6947de344 ~~ valid-svg12-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 875f43ef98790eeb2eb6bbf4fd9f357d ~~ 64abf9487f0ab95bc58980fdeb4b6135e675a0ce ~~ ca6287c7970f25be503c1d4a11544331f75700d357a9ed44614a4908b8d4a6da ~~ valid-xml11-blue-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 87996b1fe7118751e5e5ab90580a952e ~~ 776a5b2b388ff669ec30a1866048967bcc7b81a4 ~~ 0342f1f4084b2f0df09138e28c6b7c859aca3e7dd87860691758d788dd81ca04 ~~ valid-xml10-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 8ba42fcbb61411cd8d04c84669fb5046 ~~ f4a6e779ff48886c3bee82e283c3384cabb2554b ~~ 9f819a940bd8fc82763563864f16b848a760a2c5534ad5d8f35893136c12ba38 ~~ valid-svgtiny12-blue-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 8d468c1a8dfd2b7d6cce25eff76b65c6 ~~ 8d9069fe50f89461de9fe4d293d0f4e62980e1b7 ~~ 244738a697d313e29ebe0059ddd1cb23ad8fefe5bbaf1954463401bf8998ae63 ~~ valid-svg10-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 8d708f9880597a9810b8a1b778189035 ~~ 65870fe048c78512165c65acd3f3af16f0311fc3 ~~ c96fa8de8fa62207eaf3921ce08d1997b8927c2c2d2f6b7ebbae72c8bfc01bbe ~~ valid-svg12-blue.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 8e6f0c4c08a843c0299f156e74f0728b ~~ d7fab95973fba222ec6cd09b99b265ca7874a397 ~~ d9abcff597e9e3069b67e1197bb6f358f0b89208af73288356e7fd801b7937a6 ~~ valid-mathml20.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 8e8603d86a548e2c41a4966e55f58844 ~~ 2b68e4c7f4bd0477fab8f6da4a1c0abcd27c3286 ~~ b90668c33f6e67f621b64d9ea8d37266f0ef481f5dd0b5c45490afa5d998db2c ~~ valid-xhtml11-blue-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 8f308fe77b584e20b246aa1f8403d2e9 ~~ 2614ce1c336f8568b9bf0c14752edfe1819a072f ~~ db56fdac7d3ba20b7aededcb6ee86c46687489d17b759e1708ea4e2d21e38410 ~~ trebucit.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 8fc622c3a2e2d992ec059cca61e3dfc0 ~~ 1cc231f6ba7e2c141e28db4eac92b211d4033df6 ~~ 00f1fc230ac99f9b97ba1a7c214eb5b909a78660cb3826fca7d64c3af5a14848 ~~ impact.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 90a24770ba08869e300ce7571a68bb79 ~~ 754f1e1c05a332ebbde9f3d380e74b39eb9d94e2 ~~ 3dad336c17ce25b5179cdc0ab8c15c7539083d6b40d8186e2f51a1713e123d30 ~~ valid-xhtmlbasic10-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 90a7a620a2d20028d19d5789a3663d77 ~~ 16c6d4f70538144a00442078a8afcde652e8c6ef ~~ 97647e43f30579fc5a71c8ac80e6957b12dda05ec0302d7d54089ec9fca91d6a ~~ donate.png ~~ From paypal button. ~~ http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=24735&sid=00d5a91304948ce71a38e695d225e122 91da8b37dca8c84af7fff31cddaddcbe ~~ 36b8fef88da3b502579c794336d08321954dbd3b ~~ 189899f40cbb8a439bfb516197d8cf35433385e8960275734b00b4f25798e6cd ~~ valid-xhtml20-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 92fe5e5ef3fcd253d1b766340959adbc ~~ 98cac714cf4a6ae6fbbad38c7309b761ad899924 ~~ 56fbeb9566b24d19386e5a0d64129991faeaa6c9ca44633b070230af29b1fab6 ~~ valid-css.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 932e79d2f55e5664ff706c61ea4622b9 ~~ 3b666844300ac255da1aff067f83f0ff3fb9aad8 ~~ 54e49a69fa169fd55a53a6df83ea3aae41c7a6abe524cacbc991d17de7daab45 ~~ valid-xhtml10-blue-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 9413fd425c1f69b3dc6c0a9bcea42da8 ~~ 8673414fd20425f98e7153686c9771cfb77fef1d ~~ d07f51b1625a732200cb4c768345a34c8d0dff0ac2fa94a87a8ad1f5bc70df8e ~~ valid-xhtml-rdfa-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 957dd4f17296522dead302ab4fcdfa8d ~~ 5f896ef096ad01f495cefc126e963b2cd6638fab ~~ c25ae529b4cecdbca148b6ccb862ee0abad770af8b1fd29c8dba619d1b8da78a ~~ timesi.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 99192cee336734ba883a660ab024921f ~~ 51a08207c696205d16fdb9e8f649c1ecb51eb7ec ~~ ccc6c9bec5c19b544fd4a027a2f9ec07006d6616e205d315845bb368d61f2ebe ~~ valid-html401.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 998d8d0124a6ee1aab92679f39f60ffe ~~ 579eeaed4679d9e35a9743e7ff87ba4b07b7f0de ~~ 12dcac11bac023b7184b10e605820626cbd3c5e3312d3cd4e758e112e06cde80 ~~ valid-xhtmlprint10-blue-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 9a5ee67a90f6fcda231066e76ddc2bc7 ~~ 1f50fe05eaf41339766d465be8aeed90c92b2718 ~~ 216654adb0174972350894e95a58f50654c80fba64992cb7e4c61eb84a402f63 ~~ valid-mathml20-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 9a7fb2fcadcd6251ece4a26ce2a2cf03 ~~ 13380521c26669f9e61dca80298e4808c2d2ab66 ~~ 9ab00fee1773663d6e937bb1d746496ebc76ef7b869ca3b9b9912bbd16812396 ~~ valid-svgtiny12-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 9e49c3f7c4d063d18c1a074d6ac2675f ~~ c12fb8238c5a2db23d22c081a766d3e64903037e ~~ 052a153ac653cee8e2b7015d982d42a8524f43ede8a2c7d8335d085ce73879f6 ~~ valid-css-blue.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 9ec1fb4ce244280c1d77a0ff6caca171 ~~ 11d6957b24ba5b897bacce56372b5e9bc564ae33 ~~ 2b8138629103b5d498ff0dda2dd276f5f536cf30a10e10afff37f18dc71b68f6 ~~ valid-svg11.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons 9febb0b81034473ffec6e8e68cdd78d1 ~~ 8410c83ddaca876af87bc75366d82cf95e4f5d05 ~~ 05f6d5d529a7204f99615dd67726e36ec0c5be12ec0f467ce2568dda5d6dc865 ~~ valid-html40-blue.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons a2b3bcdb39097b6aed17a766652b92b2 ~~ 0aba42fc6e5b1e78992414f5c4df31376f90f0e2 ~~ 2f371cd9d96b3ac544519d85c16dc43ceacdfcea35090ee8ddf3ec5857c50328 ~~ arialbi.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 a2b4dc9afc18e76cfcaa0071fa7cd0da ~~ fe5e9cfe72f1cbf07b4190f7fc4702cd15f452d1 ~~ c8f5065ba91680f596af3b0378e2c3e713b95a523be3d56ae185ca2b8f5f0b23 ~~ verdanab.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 a315d5babf0907b7437506c12e9c66ad ~~ 1f5f5148b3ee5b361c3f63a39699d329d286e982 ~~ a87c7f818752705fa0ff6c94c4368ba5a1b89c47a70cce33b4630d51dc8ef4bb ~~ valid-html401-blue-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons a455acadf3a8494b13ecd9647a6c4f0a ~~ c01cdfb17564d9a33b2bb2fe25f57ca540ff0d9d ~~ 9f92e78a75201776eade029e5044d56b76a5ca1f040340e03760b3ef3a4ec86d ~~ valid-mathml20-blue.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons a50f9c96a76356e3d01013e0b042989f ~~ d17fae7a6628e2bc4c31a2074b666a775eed9055 ~~ b82c53776058f291382ff7e008d4675839d2dc21eb295c66391f6fb0655d8fc0 ~~ comic.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 a5b7cb8e0efac6bfac265c7a1e2f9400 ~~ 0160e47f713e81adc7fa90ccee47b7794b165e9a ~~ 02ce5ee344c4e4d1046374ac8a42f522c9e8961827c86ea75f68bd7eea4dc174 ~~ valid-svgtiny12.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons a5d7699bee6b7a3ecb554c707bcb7e66 ~~ 9b873d3399237be0723d0ebba21426d0ed91fdb3 ~~ 98ebd604adea6bbd42efcc31f15f4abaaff118b033afe1d70c70cd98c1c38a91 ~~ valid-xhtml20.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons a718767221642d3a83d2af645eddfd47 ~~ 21ca26055a1c5bd08de7d7379775fb492dc0d2c2 ~~ 71057d0a4b0a7a21588465d9a7e9afc33ac0e85db05777eb79f801c2a4ad7539 ~~ valid-xhtml-rdfa-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons a7f312474dca7b17dc3475075637bdfe ~~ 267ad1f6a62205ba8e6bae5639b8d9056578f568 ~~ cb38e77f63cc8798ec881452be9f17e77b0820069dd8e67fdc1cfcc06f42784b ~~ valid-css2-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons a8babd1abc3be0acc7831e4a030a01df ~~ e0441025cdd38734f6dcbd610c3acd3ef7d91474 ~~ 8ad41ca14758b4266235b2ca6a16811dc44983ed118d0cba0b4398bc05c9246f ~~ valid-xhtml10.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons aaf594015c74e1f5efc6c2564c7386c6 ~~ 72e079046e6df264cf3dbd7f946a34e9c212e5e0 ~~ b612e8f4fa38c76b16f3e48585edb24991d5ffc8bb451d1f81523b7e0e43bf9f ~~ valid-mathml20-blue-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons abbc84e259b7a7f00986c0941f4354c6 ~~ 6e5159e13faf938362093c764803fe8f0523940c ~~ 9969f0deeab0e011294a1a7a71a928f6b3e4e05a06f177071a5611cda978d339 ~~ valid-xml11-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons b041a1c34404ae52a2e237c954e3d98c ~~ 00ba0772b858ee90d98688538348a5e98c8326f2 ~~ ba3c582e625d54caed29af09b74047219afdd08d09a7d8e742cdd2d2e729ce1b ~~ valid-xml10-blue-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons b066355b92e008e72dc1dce7bb83dec3 ~~ 2c1c69aad79c804e88764c962e24f6a5813442de ~~ 2884642732a81c4d66561faff094d8b763af008576a58a2d78c1da966033361c ~~ valid-xhtmlbasic10-blue.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons b15431dd1c93e12280fe4037b90e0920 ~~ 9939b411597062cc9e114c38132b1be6b8dc3e52 ~~ 8a5f2c0ee0e6378953214cf4e1d4c1a532791f44e4d963d87d8857599d8905dc ~~ valid-mathml20-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons b1bc241fc57cc7e6d0317e806d547b94 ~~ b1106897e13f1c7c943418331c4f31516fd658b6 ~~ d2f7cef65e78ab2088af72d8acc7df6d1f1da92826bd75586138364e466a35f6 ~~ valid-css1-blue-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons b1e79950a20e54f6a20d0480c4c7e712 ~~ 4fd3d68a9ba1fb8597d480d652ea3d374a259a30 ~~ aacd131ae899adb2338c3d1bbffb27818c507d137ccb5ec6259c50cd63e66580 ~~ valid-xhtml10-blue.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons b43417fb9fd9c882511c444b4e952395 ~~ 67590724c8fd8465c8db2e3bce0f1ab740c26b50 ~~ b79493e5acc5f3025778f44b6abe35c3d2a0fd08871fcaa27b9b82f2bf1214ed ~~ valid-xhtmlprint10-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons b6b32e3e6f0c12493aac5311cde3e88f ~~ 17c1155dd5b03cb9c0d0fcfb05ca64ae5d714fe4 ~~ c74ce366d9d19521a4a95197d227b324730f30815e017b76d926ba7395a8b05d ~~ valid-html401-blue.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons b7ca28ec04c8b59fb299e3a800de5e48 ~~ 386ad5fe9242c7ce6db6b778a4788ff15ab635ce ~~ 59ad761ae0ff5e32b8368a6eeb69539c995d8c0eda596f37c4bd96b906bd3bc3 ~~ valid-xhtml20-blue.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons b8837688de7cd2e68c23f2f710135b70 ~~ 60a7fea13bc67a809911735cee5ab016094fb181 ~~ 5dbe339485b91f260e4f0070b36a1604308a6cbaf5aeee5c38194ad602144ca2 ~~ valid-svg12.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons bc1ac3e3b56bb48769beb243dff2446c ~~ de41f8e3c1131e8476947047b939f48c65830166 ~~ 3382de0b11c8a53eefb1d43e744f1d9665a11f8982916a1b0278900ef6f600d1 ~~ valid-html20.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons bc4ad1bf80077d63abebfa7fd5c83dfc ~~ 02a8d25d48caadffacfda95b798901fe8c45fa2a ~~ 859bf913d5f318ffc27c7747027354d1798219db861c7886820f5fd61571fcd9 ~~ valid-svg12-blue-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons bdd052f421da1394e165d12628203830 ~~ b5777d5ec1bb3604a6171dda162a9ad23cce1b42 ~~ aad2694c593a41d17128124c5647246851e18d993628301c952e10fc86d82ff4 ~~ valid-css-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons c61b355a5811e56ed3d7cea5d67c900e ~~ 3ccf584caad7dfaf07a2b492e6e27dfe642c6ba0 ~~ 82d2fbadb88a8632d7f2e8ad50420c9fd2e7d3cbc0e90b04890213a711b34b93 ~~ georgiab.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 c822d9854da9f276aa29a70b6f37d8d1 ~~ 303670924caf87066c18dc4cb19dce337af7ea2c ~~ bac47bae29cf8f10ad926401eaf7ebe7d7f49e7c5671aeb12e8dd658a405725d ~~ valid-css-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons c8720db4c921c18df5bc8f53fbaac4df ~~ 1439d9a56c8ff06a5ac846a5a7ac8612618a9e92 ~~ f816c05b2bbcf3bcf2b4a8ae6029fae4b99e921d35608f2624f8e73ffbad7ce6 ~~ valid-svg10.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons c8c648fbab1d669f1c130ecd533452c1 ~~ 5c2649a6e2bd6d0b822380183781a30d772dc661 ~~ d6db6255f32591be723b45289f75e0018cc7a2eacefef52033b48f81d8a37f32 ~~ valid-xhtml11-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons ca679923a7d341f733de44408739382f ~~ e155eb67721c4b1d864c0d0409c6e0ccf0fcdccd ~~ 9447a078e011848189d9b0037bfa8b37d561f259e321bd6693052ec398faf741 ~~ valid-xhtml10-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons cb61e3ed0a20147e401244c09626bb9e ~~ f8de9891e3ef0ff821ea6ddbf8da39bc61849d2c ~~ e97279bc4354799db6940a8546076887bc3f2b873e91aa544f210089b4ae8fc7 ~~ valid-xhtml-rdfa-blue-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons cbc979588a3ae01494c991f9f2e43863 ~~ 6a049f5815f9927936531bb8c9b0a324059a1a90 ~~ 2c53aa19b877695fe2d26749dd4787923a6a53d3cb40c8dca970e2c702ab0439 ~~ valid-xml10.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons cbe696cd6659f1d7f6d09cd17ad25fc6 ~~ eaaffe86521aa39d6df64f41d20e74761d6aaf34 ~~ 18c12ea703ec885599fc7f3a983de2df13295780790578d7a495b54c2134e806 ~~ valid-svg10-blue.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons ccc79917c28a6f67735a66a369b02a4e ~~ e90ad6929f33a9c7ab4e1168220f0cf932f54ddb ~~ 4f20d42a39386e6845a94bea0e6c85d5975139990ef6e69c1e45a58544f79251 ~~ valid-css2-blue.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons ce4f946f5b4ea75a774c717ce0b1383c ~~ d392230007b12a21e95a07faaa4135de3a367fe8 ~~ 45a8b982ba73c191a6bc0dbed3fbf13b1f834d2a20d0293d10dfb96b45996ecc ~~ valid-xml11-blue-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons ce79392e1f7f2eb1c37414653feb9ccd ~~ 56bb6e8e3d8166ca4314add0e4c5b108d5be9262 ~~ a4154b6550859c2638ab09e3561f666a1f7bd899723a8da8a4c8e467b9432fc2 ~~ valid-svgtiny12-blue-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons cfc9632ec5e6091e2a11c1dba6e2b270 ~~ b6c278875e8bb398392d104b2598b9d2a7d8be8a ~~ 4970d5940eff2c99e8ebca2325f56de667ef8d97f5075d477cf5f37438f1b2a3 ~~ valid-css1-blue-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons d0e9246f555b3fd579f675ed0da5f970 ~~ 4f58e8e20a0a6000b3b44b60b52633c27e078796 ~~ 0efe4af5f7be218828d77152b5e38fe206987a0f7f0f6666105bf257f5ba3b24 ~~ valid-css.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons d319984b757dd214c8d33fd0a20d12ca ~~ 1021a94b161b6c7b85e82eb7ddd3895fbe6510e7 ~~ 191312d4cf3819d4f1aeadf5fa4442a885ab89ac0ef3192caaa33ce00df68f19 ~~ valid-mathml20-blue-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons d361c3a673aa980a47e10f05baf99116 ~~ d186ae2feb0a319ea9e6ea8b5956be1fb54da935 ~~ 5fd67205d64f00759b4394cadbd66a729303c0adcf328d531f833a7491c170f4 ~~ valid-xhtmlprint10.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons d3b42501d0e2598b1289e38a6ed78442 ~~ 227da85240b8afdb3a28fee0c4db0dc09f07e5e7 ~~ 5d6c200ce86e8e40a7760f926a3a64265c82c7658ba89a53bccd284dd839962c ~~ valid-svgtiny11-blue-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons d7ce0073b774bed6f9ef5f48c11fdcd3 ~~ 7ac34e68d6c4e612e572bdf37abe2ad8af493b51 ~~ a093c7252b83d7a292ce8fa829dbbe6cbd7d1a0db615c2b54c0925c28e48512e ~~ valid-xhtmlprint10.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons d903ac66ad9e5d99b57b4be94f7ef1e5 ~~ 960301306e982cdbda6236c0fd11fc51cf6a52f1 ~~ 1016dd7b56cfc6482d0883b4d4978b3aaa131d6d4e00775e9d51f7ac356761c8 ~~ valid-svgtiny11-blue.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons d94351568b3934d8c391e66a8df6c7f2 ~~ 32fbf4d2d436c83d8145878e5a79ee58999bcf4f ~~ b2c0439e9cf6dd2a91214119dfb701253d1e9a8bffdad66fefe95d08d76b4c20 ~~ valid-xhtml-rdfa.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons da414c01f951b020bb09a4165d3fb5fa ~~ c5f4818fa6876e93f043a209597bcb39c57e43ca ~~ 66dbfa20b534fba0e203da140fec7276a45a1069e424b1b9c35547538128bbe8 ~~ courbi.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 debeb65b839c838c141e7f93c27d1903 ~~ 1b0fd975e35d36b854c41ca7f61377e212541b52 ~~ 93aaa6f7ca6035516be06e858c6df7237073bbe776f618858da97405c6898144 ~~ valid-svg11-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons e111e8cadca60735b0f6800776745f44 ~~ 5b67357755fe776ff4e780f142fc982f1b95ffd4 ~~ ed26408f095153fa973e68d4da2d8ddd50b7d550e4cbbedb9e725d94ca8faf0e ~~ valid-xml11-blue.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons e1581c126f047814a1e03a3a2c341ab3 ~~ d1e71083fe3ec82397f45bd4ec7011aa8ca5e42f ~~ f1c9ee4d47070ecec0c6679f83798c99b661e498ac14de1eea0d641274863b1d ~~ valid-xhtml10-blue-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons e1b9ca24d31179ef3379d474bcce3be2 ~~ c3e4b470c40f4def158690679ca4be7cd61adecf ~~ 11772b66e51d7163d202637ce50341fae3874932c2a1934708e7eb369fd74664 ~~ valid-svg12-blue-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons e2657b6eaefba7956736f6d3ba27c5e8 ~~ 7c6402b8d71adf5d8db84e27282821b3dd18df5c ~~ 14df28b3f91ad668ffb04d6f272e5a63ad16dc98fd7d97a70127ada5f7c3385f ~~ valid-xhtmlprint10-blue.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons e2cf1908851d20f450e6e03b7e9fef96 ~~ 55472e91d355827ef7f06f83405ac2606c323a42 ~~ fd05621339a229d712f3d8681a67e85ecadf2f9b4bab12f92b2a4a82ad82aaf6 ~~ valid-svg11-blue.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons e2efd5381ecd97ec8cb9426150e2c7a8 ~~ e7d4545ff817632f4e3cbd2a066629d10cb0bf3c ~~ 229719502b58a36a03bf955d47cf9b1f4c581893437df3ebe2d381fd391d9ffd ~~ valid-xml10-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons e5d52bbfff45e1044381bacb7fc8e300 ~~ 328b246b57108d5f175eb9a4df8f613b7207d0bf ~~ c983e037d8e4e694dd0fb0ba2e625bca317d67a41da2dc81e46a374e53d0ec8a ~~ georgiaz.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 e650e0edc37445be4850285b15f0ec13 ~~ 315c60122079a0a2afde814e3726ab2ec0dfe680 ~~ e2dd625ef1cd8b0711faa967559ecbc68656fbc77a0f01640204414e6b2488b0 ~~ valid-html401.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons e75df4e582aba891ad90b1eed4f99df6 ~~ 7948737ddc42534000f4c8cb58bf09073218fc0c ~~ 849da570171fe982a94cc2831aa866170224b89285959ed4e2eb602c4192b1a9 ~~ valid-xhtmlprint10-blue-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons e82af93429c91fb02e57360761885ad8 ~~ 7621a6721fb6fc9fa0b635bb8c7b2c7ce28babd5 ~~ 867a1e83e91b14c56fba894fbb7023f941332e6fcb5d74512e152afcb2e6ce6a ~~ valid-html20-blue.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons e8ec3589482f137ad186d175ce15a8b2 ~~ b8349e0a1d1535e99edee016e16d3743c2a97f16 ~~ 8985d5856f602a6e2bf06df4c2d398003dbf6558498608b7ec3a7008dc7c5c9c ~~ valid-svgtiny12-blue.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons e9f82b83f9cc8fc2b4daada6d016d86c ~~ 078057aed474c249b11f27b81a4533539681d1b2 ~~ fa4b2a687ee885d755627bc8d2a87cb7aba7f05227884e258ac8cf490221c6cf ~~ valid-html40-blue-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons eaaaf139af3d6615e0f1517ab8535561 ~~ c44c680f80887edc66c33bbdb84c2a594bca33e9 ~~ 036524f7f1235b21d4b437c29d5a869aaccf90f597f5ab6c23e37b496fb7e293 ~~ valid-svg12-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons eba743583c36fc0d3242c6bb40bfe65b ~~ dd541054e7f57bedd7f566ccd6b0a21a7b8ac21f ~~ c4f34419a761c3a87fc923beb0caa3eeb55d435eece3a6d1f0fb06bbce85d951 ~~ valid-html32-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons ed6e29caf3843142d739232aa8642158 ~~ f67a30f4db2ff469ed5b2c9830d031cb4b3174b4 ~~ 4357b63cef20c01661a53c5dae70ffd20cb4765503aaed6d38b17a57c5a90bff ~~ timesbd.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 ed9d3bf664eb65b59ca04cd09bd4ad3e ~~ ac709f6589fd0e84168db9b416b42c7819d5b138 ~~ 4c2dec7019be4aa6ac58b22b6b91b39e9151577e14c335cb1e15323df02a2d3a ~~ valid-xml11.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons eed112802f9ebd24f2bb818444d79302 ~~ ade9de54aafab10c85328381ee2cb51951be4531 ~~ 3d24bc0fd996909c369db799d9af8e68b6b7a7a00402724236a83d3b6a861ab5 ~~ valid-xhtmlbasic10.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons ef9699cf523ad3255aaced735ca298a3 ~~ 082aa1f53b8ac43750e56985b1480c16cecefa26 ~~ 6122dcdbd5bf8a602a4175617e837b8c4253ea4bb822daf57657f24f1e399c9c ~~ valid-svg11-blue-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons f11c0317db527bdd80fa0afa04703441 ~~ 2c5cb7cfa19eea5d90c375dc0f9f8e502ea97f0c ~~ 35c0f3559d8db569e36c31095b8a60d441643d95f59139de40e23fada819b833 ~~ arial.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 f2436b9c355b64bcabe83795628f83ec ~~ 2b46b87b9020e4941619b0f3c6821c535d268d00 ~~ 035f9ee8644e8ba3814b56db72f86aa5aa74b37975968b8a73fec2777c268437 ~~ valid-xhtmlprint10-v.eps~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons f43ea864440de28ad70e8a78b9144334 ~~ de3c89fb14962630df6adf0fc6e8e623cf6d5064 ~~ 4dbee0615c3828ff10de69d61b02cf0230d219057a3937948776fc7372682879 ~~ valid-css1-v.svg~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons f4b306eed95aa7d274840533be635532 ~~ 5d69d55862471d18f1c22132a44f05291134cbf4 ~~ 7d0bb20c632bb59e81a0885f573bd2173f71f73204de9058feb68ce032227072 ~~ georgia.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 f5b0791d2da535e5514e1fb151de4ab8 ~~ e978eaebe367ca32a1af485176f185dc53c6666d ~~ 1aa0412fc75dfbf07c2db9493420d526becefffa1eb0f5b6de416fc63412efd5 ~~ valid-svg10.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons f6150b1b96bb240c72402eb2e2dfbfd9 ~~ aeb3b0c851f88073fd37f9b42bcb519de5c4e7ef ~~ 1b70592d167880d1a8814f28d6a40343bbd5b18a11cf816ec073c88e9d178b22 ~~ valid-svg11-blue.png~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons f71e418a494262774b44bad8d400dd1c ~~ 4ad77a8a8793845602ad465ca56330ed89521f0c ~~ 2c3642d60402842222c2df85736669a7c2dcf3a868f83d75dd1199baf2c5b2a8 ~~ valid-html401-blue.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons f7310c29df0070530c48a47f2dca9014 ~~ 09aff891c626fe7d3b878f40a6376073b90d4fde ~~ 698e220f48f4a40e77af7eb34958c8fd02f1e18c3ba3f365d93bfa2ed4474c80 ~~ verdanaz.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 fb5d68cb58c6ad7e88249d65f6900740 ~~ bc377a42afee7f73f0b80e2ed6e0d18edbd4f8fd ~~ c0a6bdf31f9f2953b2f08a0c1734c892bc825f0fb17c604d420f7acf203a213b ~~ trebucbi.ttf~~ The EULA does not allow modification, reverse engineering etc. ~~ http://bugs.debian.org/298545#29 fce22382a573ac597fd2838d752eeb91 ~~ c67489df016f5da7cbc988c2668c3889166636e5 ~~ 67517f5fae665bff099374bca81f9f92edcdda3621ce5980d4feb14b9e603b4f ~~ networkredux.png ~~ Non free logo. ~~ http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=24735&sid=00d5a91304948ce71a38e695d225e122 fd00ed13dce8482c1516750fdb262dbc ~~ 1c9529c61616c36873fd55e48ef60b95e05b0bde ~~ f94ef89f8f127a018a024b022aadf4599daa9b322b815dfc53b9daa663dd78e7 ~~ valid-html40.gif~~ The valid w3c icons could not be modified. ~~ http://www.w3.org/QA/Tools/Icons lintian-2.5.22ubuntu1/data/cruft/warn-file-type0000664000000000000000000000332212313507507016301 0ustar # warn about a file type #format is # tag (unique) ~~ type regex (x) [~~ name regex (x) optional empty means .* ~~ missing source transform regex separated by && or map or nothing do not check] # note that map is not evaluated but check with regex so please use correct form: # map { 's/SOMEREGEXP/'.$_.'/'} qw(LIST) # # File should match both "type regex" and "name regex" # source-contains-prebuilt-binary ~~ \bELF\b ~~ ~~ map { 's/(?i)(?:\.(?:bin|elf|hs|oo?|out|so(?:\.\d+)*))?$/'.$_.'/'} qw(.asm .c .cpp .cxx .f .F .S) source-contains-prebuilt-flash-object ~~ ^Macromedia \s Flash ~~ ~~ s/(?i)\.swf$/.as/ source-contains-prebuilt-flash-project ~~ ^Composite \s Document \s File ~~ (?i)\.fla$ ~~ s/(?i)\.fla$/.as/ source-contains-prebuilt-java-object ~~ (?: Java [ ] (?:Jar [ ] file|archive [ ] data) | Zip [ ] archive | JAR) ~~ (?i)\.jar$ source-contains-prebuilt-javascript-object ~~ .* ~~ (?i)[\.-](?:min|pack(?:ed)?)\.js$ ~~ s/(?i)[\.-](?:min|pack(?:ed)?)(?=\.js$)// source-contains-prebuilt-python-object ~~ ^python \s \d(\.\d+)? \s byte-compiled ~~ .* ~~ s/(?i)(?<=\.py)[co]$// source-contains-prebuilt-silverlight-object ~~ ^Zip \s archive \s data ~~ (?i)\.xac$ source-contains-prebuilt-windows-binary ~~ \b(?:PE(?:32|64)|(?:MS-DOS|COFF)\s executable)\b lintian-2.5.22ubuntu1/data/cruft/autotools0000664000000000000000000000032612310413206015455 0ustar # List of packages that will suppress the # {ancient,outdated}-autotools-helper-file tags # autotools-dev automake automaken automake1.4 automake1.7 automake1.8 automake1.9 automake1.10 automake1.11 dh-autoreconf lintian-2.5.22ubuntu1/data/cruft/non-distributable-license0000664000000000000000000000040412310413206020466 0ustar # see non-free-license for syntax # nvdia opencv infamous license license-problem-nvidia-intellectual ~~ license && intellectual && retain && property ~~ retain all intellectual property and proprietary rights in and to this software and related documentationlintian-2.5.22ubuntu1/data/cruft/gfdl-license-fragments-checks0000664000000000000000000000400212310413206021175 0ustar # this data file check gfdl # first field is known good gfdl section (regex) # if second field is present it is good only for these files (regexp). By default ok for all file # if third field is present tag with the parameters if the two previous field match # verbatim text used in the license \A with [ ] the [ ] Invariant [ ] Sections [ ] being [ ] LIST (?:[ ] THEIR [ ] TITLES)? [ ]? [,\.;]? [ ]? with [ ] the [ ] Front(?:[ ]?-?[ ]?|[ ])Cover [ ] Texts [ ] being [ ] LIST (?:[ ] THEIR [ ] TITLES)? [ ]? [,\.;]? [ ]? (?:and[ ])? with [ ] the [ ] Back(?:[ ]?-?[ ]?|[ ])Cover [ ] Texts [ ] being [ ] LIST (?:[ ] THEIR [ ] TITLES)? \Z ~~ # variant are tagged not official # official text variations \A (?:with[ ])? (?:the[ ])? no [ ]? Invariant [ ]+ Sections? [ ]? [,\.;]? [ ]? (?:with[ ])? (?:the[ ])? no [ ] Front[ ]?-?[ ]?Cover (?:[ ] Texts?)? [ ]? [,\.;]? [ ]? (?:and[ ])? (?:with[ ])? (?:the[ ])? no [ ] Back[ ]?-?[ ]?Covers? (?:[ ] Texts?)? \Z ~~ ~~ license-problem-gfdl-non-official-text # (dict fold) \A (?:with[ ])? no [ ] Invariant [ ] Sections? [ ]? [,\.;]? [ ]? (?:no[ ])? Front[ ]?-?[ ]? (?:cover[ ])? (?:Texts?[ ])? or [ ] (?:no[ ])? Back(?:[ ]?-?[ ]?|[ ])Cover [ ] Texts?\Z ~~ ~~ license-problem-gfdl-non-official-text # (libnss-pgsql) \A There [ ] are [ ] no [ ] invariants? [ ] sections? \Z ~~ ~~ license-problem-gfdl-non-official-text # (parsewiki) \A without [ ] any [ ] Invariant [ ] Sections? \Z ~~ ~~ license-problem-gfdl-non-official-text # (lilypond) \A with [ ] no [ ] invariants? [ ] sections? \Z ~~ ~~ license-problem-gfdl-non-official-text # # Conditionnaly ok # with [ ] \&FDLInvariantSections; [ ]? [,\.;]? [ ]? with [ ]+\&FDLFrontCoverText; [ ]? [,\.;]? [ ]? and [ ] with [ ] \&FDLBackCoverText; ~~ /customization/[^/]+/entities/[^/]+\.docbook\Z \A with [ ] the [ ]? <_: [ ]? link-\d+ [ ]? /> [ ]? being [ ] list [ ] their [ ] titles [ ]?[,\.;]?[ ]? with [ ] the [ ]? <_: [ ]* link-\d+ [ ]? /> [ ]? being [ ] list [ ]?[,\.;]?[ ]? (?:and[ ])? with [ ] the [ ]? <_:[ ]? link-\d+ [ ]? /> [ ]? being [ ] list \Z ~~ .po\Zlintian-2.5.22ubuntu1/data/standards-version/0000775000000000000000000000000012310413206016023 5ustar lintian-2.5.22ubuntu1/data/standards-version/release-dates0000664000000000000000000000244512310413206020471 0ustar # This is a list of all known standards versions, current and older, with # their dates of publication. The dates are in seconds since epoch to # avoid having to do time conversion during the check. (Believe it or # not, this takes a noticable amount of time.) # # To get the date of a new standards version, try: # # perl -MDate::Parse -e 'print str2time(""), "\n"' # # You'll need libtimedate-perl installed. 3.9.5 1382920848 3.9.4 1348029336 3.9.3 1329968436 3.9.2 1302155335 3.9.1 1280111901 3.9.0 1277700052 3.8.4 1264616563 3.8.3 1250381606 3.8.2 1245181373 3.8.1 1236829852 3.8.0 1212562800 3.7.3 1196668800 3.7.2 1146639600 3.7.1 1146639600 3.7.0 1146034800 3.6.2 1118991600 3.6.1 1061276400 3.6.0 1057734000 3.5.10 1052550000 3.5.9 1047024000 3.5.8 1037347200 3.5.7 1030777200 3.5.6 996044400 3.5.5 991378800 3.5.4 988441200 3.5.3 987318000 3.5.2 982483200 3.5.1 982224000 3.5.0 980755200 3.2.1 967100400 3.2.0 964940400 3.1.1 942739200 3.1.0 941702400 3.0.1 932022000 3.0.0 930812400 2.5.1 925196400 2.5.0 909648000 2.4.1 892537200 2.4.0 886147200 2.3.0 873097200 2.2.0 868777200 2.1.3 858412800 2.1.2 848736000 2.1.1 842511600 2.1.0 841561200 2.0.1 841474800 2.0.0 841042800 0.2.1 840783600 0.2.0 840610800 lintian-2.5.22ubuntu1/data/standards-version/ancient-date0000664000000000000000000000027512310413206020306 0ustar # Any Standards Version released before this day is "ancient" # That date has to be within 22 and 24 months in the past # at release time # Format is ANCIENT < Date ANCIENT < 14 March 2012 lintian-2.5.22ubuntu1/data/deb-format/0000775000000000000000000000000012310413206014375 5ustar lintian-2.5.22ubuntu1/data/deb-format/extra-members0000664000000000000000000000126612310413206017100 0ustar # List of extra members permitted in the .deb files # # Format is: # => # # # is a 0-indexed position of where the extra member is # expected. It can be "ANYWHERE" if the order is not relevant. Note # despite of the value of , any member appearing before the # data.tar member MUST have a name starting with "_". If not Lintian # will presume it is the control.tar or the data.tar member (depending # on how early it occurs). It is impossible for any valid "2.0" deb # file to have an extra member at position 0 (which is exclusively # reserved for the "debian-binary" member) # # For Debian, no extra members are defined, so the file is empty atm. lintian-2.5.22ubuntu1/data/control-files/0000775000000000000000000000000012310413144015136 5ustar lintian-2.5.22ubuntu1/data/control-files/udeb-permissions0000664000000000000000000000041112310413144020345 0ustar # Manually maintained list of files in a udeb control.tar.gz along # with their expected permissions. # config 0755 control 0644 isinstallable 0755 menutest 0755 postinst 0755 shlibs 0644 symbols 0644 templates 0644 lintian-2.5.22ubuntu1/data/control-files/deb-permissions0000664000000000000000000000046712310413144020173 0ustar # Manually maintained list of files in a deb control.tar.gz along # with their expected permissions. # clilibs 0644 config 0755 control 0644 conffiles 0644 md5sums 0644 postinst 0755 preinst 0755 postrm 0755 prerm 0755 shlibs 0644 symbols 0644 templates 0644 triggers 0644lintian-2.5.22ubuntu1/data/menu-format/0000775000000000000000000000000012310413144014610 5ustar lintian-2.5.22ubuntu1/data/menu-format/add-categories0000664000000000000000000000261512310413144017412 0ustar # This is a list of all Additional Categories for .desktop files. # # It is manually maintained; please keep it sorted. 2DGraphics 3DGraphics Accessibility ActionGame Adult AdventureGame Amusement ArcadeGame Archiving Art ArtificialIntelligence Astronomy AudioVideoEditing Biology BlocksGame BoardGame Building Calculator Calendar CardGame Chart Chat Chemistry Clock Compression ComputerScience ConsoleOnly Construction ContactManagement Core Database DataVisualization Debugger DesktopSettings Dialup Dictionary DiscBurning Documentation Economy Electricity Electronics Email Emulator Engineering Feed FileManager Filesystem FileTools FileTransfer Finance FlowChart Geography Geology Geoscience GNOME GTK GUIDesigner HamRadio HardwareSettings History Humanities IDE ImageProcessing InstantMessaging IRCClient Java KDE KidsGame Languages Literature LogicGame Maps Math MedicalSoftware Midi Mixer Monitor Motif Music News NumericalAnalysis OCR P2P PackageManager ParallelComputing PDA Photography Physics Player Presentation Printing Profiling ProjectManagement Publishing Qt RasterGraphics Recorder RemoteAccess RevisionControl Robotics RolePlaying Scanning Security Sequencer Shooter Simulation Spirituality Sports SportsGame Spreadsheet StrategyGame Telephony TelephonyTools TerminalEmulator TextEditor TextTools Translation Tuner TV VectorGraphics VideoConference Viewer WebBrowser WebDevelopment WordProcessor XFCE lintian-2.5.22ubuntu1/data/menu-format/menu-sections0000664000000000000000000000332112310413144017323 0ustar # Data file of all the valid sections a menu item (or submenu) can go in. # # Authorative source of menu sections: # http://www.debian.org/doc/packaging-manuals/menu-policy/ch2#s2.1 # # This file maps "root sections" to the valid sections in each root # sections. # # Format: # root-section[/section] # # Please keep it sorted. Applications/Accessibility Applications/Amateur Radio Applications/Data Management Applications/Editors Applications/Education Applications/Emulators Applications/File Management Applications/Graphics Applications/Mobile Devices Applications/Network/Communication Applications/Network/File Transfer Applications/Network/Monitoring Applications/Network/Web Browsing Applications/Network/Web News Applications/Office Applications/Programming Applications/Project Management Applications/Science/Astronomy Applications/Science/Biology Applications/Science/Chemistry Applications/Science/Data Analysis Applications/Science/Electronics Applications/Science/Engineering Applications/Science/Geoscience Applications/Science/Mathematics Applications/Science/Medicine Applications/Science/Physics Applications/Science/Social Applications/Shells Applications/Sound Applications/System/Administration Applications/System/Hardware Applications/System/Language Environment Applications/System/Monitoring Applications/System/Package Management Applications/System/Security Applications/Terminal Emulators Applications/Text Applications/TV and Radio Applications/Video Applications/Viewers Applications/Web Development Games/Action Games/Adventure Games/Blocks Games/Board Games/Card Games/Puzzles Games/Simulation Games/Strategy Games/Tools Games/Toys Help Screen/Saving Screen/Locking Window Managers FVWM Modules Window Maker lintian-2.5.22ubuntu1/data/debhelper/0000775000000000000000000000000012313553047014322 5ustar lintian-2.5.22ubuntu1/data/debhelper/maint_commands0000664000000000000000000000103612313551606017235 0ustar dh_apache2 dh_apparmor dh_cligacpolicy dh_cme_upgrade dh_configpackage dh_consoledata dh_dkms dh_icons dh_installcatalogs dh_installcliframework dh_installcligac dh_installdeb dh_installdebconf dh_installemacsen dh_installinit dh_installlisting dh_installmenu dh_installmodules dh_installtex dh_installudev dh_installwm dh_installxfonts dh_installxmlcatalogs dh_installxsp dh_installzope dh_installzopeinstance dh_makeshlibs dh_metainit dh_nativejava dh_php5 dh_pysupport dh_suidregister dh_systemd_enable dh_systemd_start dh_ucf dh_usrlocal lintian-2.5.22ubuntu1/data/debhelper/dh_addons0000664000000000000000000000232212313551606016166 0ustar acc=dh-acc ada_library=dh-ada-library apache2=apache2-dev aqbanking=libaqbanking34-dev aspell_simple=dictionaries-common-dev autoreconf=dh-autoreconf autotools_dev=autotools-dev bash_completion=bash-completion cli=cli-common-dev cli_nant=cli-common-dev cme_upgrade=libconfig-model-perl components=pkg-components config_package=config-package-dev d_i=dh-di dkms=dkms dpatch=dpatch eclipse_helper=javahelper germinate=germinate gir=gobject-introspection gnome=gnome-pkg-tools golang=dh-golang javahelper=javahelper jh_maven_repo_helper=maven-repo-helper kde=pkg-kde-tools linktree=dh-linktree lisp=dh-lisp lua=dh-lua maven_repo_helper=maven-repo-helper ocaml=dh-ocaml parrot=parrot-devel perl_dbi=libdbi-perl perl_imager=libimager-perl php5=dh-php5 phpcomposer=pkg-php-tools phppear=pkg-php-tools pkgkde_symbolshelper=pkg-kde-tools pydeb=python-van.pydeb pyppd=pyppd pypy=dh-python python2=python python3=dh-python python_support=debhelper python_virtualenv=dh-virtualenv quilt=quilt rebar=dh-rebar ruby=gem2deb scour=python-scour sodeps=pkg-kde-tools sphinxdoc=sphinx-common swi_prolog=swi-prolog-nox systemd=dh-systemd tex=tex-common xine=libxine-dev xsf=xserver-xorg-dev xsp=dh-xsp xul_ext=mozilla-devscripts xulrunner=xulrunner-dev lintian-2.5.22ubuntu1/data/debhelper/miscDepends_commands0000664000000000000000000000045612313551606020370 0ustar dh_apache2 dh_cme_upgrade dh_dkms dh_gconf dh_gtkmodules dh_installcatalogs dh_installdebconf dh_installdocs dh_installgsettings dh_installlisting dh_installtex dh_installxfonts dh_installxmlcatalogs dh_linktree dh_lisp dh_nativejava dh_pangomodules dh_php5 dh_pidgin dh_pyppd dh_systemd_enable dh_ucf lintian-2.5.22ubuntu1/data/debhelper/dh_addons-manual0000664000000000000000000000064012310413144017431 0ustar # Manually maintained list of dependencies needed for dh addons. This overrides # information from data/debhelper/dh_addons (the latter file is automatically # generated). # # Please keep this sorted. lv2config||lv2core python2||python | python-all | python-dev | python-all-dev python3||python3 | python3-all | python3-dev | python3-all-dev python_support||python-support sphinxdoc||python-sphinx | python3-sphinx lintian-2.5.22ubuntu1/data/debhelper/dh_packages0000664000000000000000000000164712313551606016505 0ustar apache2-dev autotools-dev bash-completion cli-common-dev config-package-dev debhelper desktop-profiles dh-acc dh-ada-library dh-apparmor dh-autoreconf dh-buildinfo dh-consoledata dh-di dh-golang dh-kpatches dh-linktree dh-lisp dh-lua dh-make dh-metainit dh-ocaml dh-php5 dh-python dh-rebar dh-systemd dh-virtualenv dh-xsp dictionaries-common-dev dkms doxygen dpatch gcj-jdk gem2deb germinate gnome-pkg-tools gnustep-make gobject-introspection haskell-devscripts libaqbanking34-dev libconfig-model-perl libdbi-perl libgcj-common libgstreamer0.10-dev libgtk2.0-dev libimager-perl libpango1.0-dev libxine-dev mozilla-devscripts parrot-devel pdl pidgin-dev pkg-components pkg-kde-tools pkg-php-tools pyppd python python-numpy python-ply python-scour python-sip-dev python-support python-van.pydeb python3-numpy python3-sip-dev quilt sphinx-common swi-prolog-nox tex-common xml-core xserver-xorg-dev xulrunner-dev yorick-dev zope-debhelper lintian-2.5.22ubuntu1/data/debhelper/dh_commands-manual0000664000000000000000000000140512310413144017762 0ustar # Manually maintained list of dh_commands that requires a versioned # dependency *AND* are not provided by debhelper. Commands provided # by debhelper is handled in checks/debhelper. # # dh_X||dependency # # Note spaces are not allowed around the "||"-separator. # # The dh_X is the dh_command and the dependency is the full dependency # (including both package and version). This overrules any thing # listed in dh_commands (which is auto-generated). # # Please keep this sorted. dh_lv2config||lv2core dh_nativejava||gcj-native-helper | default-jdk-builddep dh_python2||python | python-all | python-dev | python-all-dev dh_python3||python3 | python3-all | python3-dev | python3-all-dev dh_sphinxdoc||python-sphinx | python3-sphinx dh_xine||libxine-dev | libxine2-dev lintian-2.5.22ubuntu1/data/debhelper/dh_commands0000664000000000000000000001011212313551606016513 0ustar dh_acc=dh-acc dh_ada_library=dh-ada-library dh_apache2=apache2-dev dh_apparmor=dh-apparmor dh_aqbanking=libaqbanking34-dev dh_aspell-simple=dictionaries-common-dev dh_auto_build=debhelper dh_auto_build_nant=cli-common-dev dh_auto_clean=debhelper dh_auto_clean_nant=cli-common-dev dh_auto_configure=debhelper dh_auto_install=debhelper dh_auto_test=debhelper dh_autoreconf=dh-autoreconf dh_autoreconf_clean=dh-autoreconf dh_autotools-dev_restoreconfig=autotools-dev dh_autotools-dev_updateconfig=autotools-dev dh_bash-completion=bash-completion dh_bugfiles=debhelper dh_builddeb=debhelper dh_buildinfo=dh-buildinfo dh_clean=debhelper dh_clideps=cli-common-dev dh_clifixperms=cli-common-dev dh_cligacpolicy=cli-common-dev dh_clistrip=cli-common-dev dh_cme_upgrade=libconfig-model-perl dh_components=pkg-components dh_compress=debhelper dh_configpackage=config-package-dev dh_consoledata=dh-consoledata dh_desktop=debhelper dh_di_kernel_gencontrol=dh-di dh_di_kernel_install=dh-di dh_di_numbers=dh-di dh_dkms=dkms dh_doxygen=doxygen dh_dpatch_patch=dpatch dh_dpatch_unpatch=dpatch dh_fixperms=debhelper dh_gconf=debhelper dh_gencontrol=debhelper dh_germinate_clean=germinate dh_germinate_metapackage=germinate dh_girepository=gobject-introspection dh_gnome=gnome-pkg-tools dh_gnome_clean=gnome-pkg-tools dh_gnustep=gnustep-make dh_golang=dh-golang dh_gstscancodecs=libgstreamer0.10-dev dh_gtkmodules=libgtk2.0-dev dh_haskell_blurbs=haskell-devscripts dh_haskell_depends=haskell-devscripts dh_haskell_extra_depends=haskell-devscripts dh_haskell_provides=haskell-devscripts dh_haskell_shlibdeps=haskell-devscripts dh_icons=debhelper dh_install=debhelper dh_installcatalogs=debhelper dh_installchangelogs=debhelper dh_installcliframework=cli-common-dev dh_installcligac=cli-common-dev dh_installcron=debhelper dh_installdeb=debhelper dh_installdebconf=debhelper dh_installdirs=debhelper dh_installdocs=debhelper dh_installemacsen=debhelper dh_installexamples=debhelper dh_installgsettings=debhelper dh_installifupdown=debhelper dh_installinfo=debhelper dh_installinit=debhelper dh_installkpatches=dh-kpatches dh_installlisting=desktop-profiles dh_installlogcheck=debhelper dh_installlogrotate=debhelper dh_installman=debhelper dh_installmanpages=debhelper dh_installmenu=debhelper dh_installmime=debhelper dh_installmodules=debhelper dh_installpam=debhelper dh_installppp=debhelper dh_installtex=tex-common dh_installudev=debhelper dh_installwm=debhelper dh_installxfonts=debhelper dh_installxmlcatalogs=xml-core dh_installxsp=dh-xsp dh_installyorick=yorick-dev dh_installzope=zope-debhelper dh_installzopeinstance=zope-debhelper dh_javadoc=gcj-jdk dh_link=debhelper dh_linktree=dh-linktree dh_lintian=debhelper dh_lisp=dh-lisp dh_listpackages=debhelper dh_lua=dh-lua dh_make=dh-make dh_makeclilibs=cli-common-dev dh_makeshlibs=debhelper dh_md5sums=debhelper dh_metainit=dh-metainit dh_movefiles=debhelper dh_movelibkdeinit=pkg-kde-tools dh_nativejava=libgcj-common dh_numpy3=python3-numpy dh_numpy=python-numpy dh_ocaml=dh-ocaml dh_ocamlclean=dh-ocaml dh_ocamldoc=dh-ocaml dh_ocamlinit=dh-ocaml dh_pangomodules=libpango1.0-dev dh_parrot=parrot-devel dh_pdl=pdl dh_perl=debhelper dh_perl_dbi=libdbi-perl dh_perl_imager=libimager-perl dh_php5=dh-php5 dh_phpcomposer=pkg-php-tools dh_phppear=pkg-php-tools dh_pidgin=pidgin-dev dh_prep=debhelper dh_pydeb=python-van.pydeb dh_pyppd=pyppd dh_pypy=dh-python dh_pysupport=python-support dh_python-ply=python-ply dh_python2=python dh_python3=dh-python dh_quilt_patch=quilt dh_quilt_unpatch=quilt dh_rebar=dh-rebar dh_ruby=gem2deb dh_ruby_fixdepends=gem2deb dh_sameversiondep=pkg-kde-tools dh_scour=python-scour dh_scrollkeeper=debhelper dh_shlibdeps=debhelper dh_sip3=python3-sip-dev dh_sip=python-sip-dev dh_sodeps=pkg-kde-tools dh_sphinxdoc=sphinx-common dh_strip=debhelper dh_suidregister=debhelper dh_swi_prolog=swi-prolog-nox dh_systemd_enable=dh-systemd dh_systemd_start=dh-systemd dh_testdir=debhelper dh_testroot=debhelper dh_ucf=debhelper dh_undocumented=debhelper dh_usrlocal=debhelper dh_virtualenv=dh-virtualenv dh_xine=libxine-dev dh_xsf_substvars=xserver-xorg-dev dh_xul-ext=mozilla-devscripts dh_xulrunner=xulrunner-dev lintian-2.5.22ubuntu1/data/debhelper/filename-config-files0000664000000000000000000000045012310413144020355 0ustar # This is a list of known debhelper config files which consist of a list # of filenames. It's used for tests that look for problems in debhelper # processing of file names, such as using glob characters that aren't # guaranteed to work. dirs docs examples info install manpages sgmlcatalogs wm lintian-2.5.22ubuntu1/data/output/0000775000000000000000000000000012313551606013727 5ustar lintian-2.5.22ubuntu1/data/output/manual-references0000664000000000000000000026541712313551606017265 0ustar # Data about titles, sections, and URLs of manuals, used to expand references # in tag descriptions and add links for HTML output. Each line of this file # has four fields separated by double colons: # # ::
:: :: <url> # # If <section> is empty, that line specifies the title and URL for the whole # manual. If <url> is empty, that manual is not available on the web. # # Last updated: 2014-03-23 debconf-spec::::Configuration management::http://www.debian.org/doc/packaging-manuals/debconf_specification.html debconf-spec::aen27::Introduction::http://www.debian.org/doc/packaging-manuals/debconf_specification.html#AEN27 debconf-spec::aen30::Configuration Data::http://www.debian.org/doc/packaging-manuals/debconf_specification.html#AEN30 debconf-spec::aen45::Templates::http://www.debian.org/doc/packaging-manuals/debconf_specification.html#AEN45 debconf-spec::aen101::Configuration frontends::http://www.debian.org/doc/packaging-manuals/debconf_specification.html#AEN101 debconf-spec::aen106::Communication with the frontend::http://www.debian.org/doc/packaging-manuals/debconf_specification.html#AEN106 debconf-spec::aen283::Debian install-time configuration::http://www.debian.org/doc/packaging-manuals/debconf_specification.html#AEN283 devref::::Debian Developer's Reference::http://www.debian.org/doc/developers-reference/ devref::1::Scope of This Document::http://www.debian.org/doc/developers-reference/scope.html devref::2::Applying to Become a Maintainer::http://www.debian.org/doc/developers-reference/new-maintainer.html devref::2.1::Getting started::http://www.debian.org/doc/developers-reference/new-maintainer.html#getting-started devref::2.2::Debian mentors and sponsors::http://www.debian.org/doc/developers-reference/new-maintainer.html#mentors devref::2.3::Registering as a Debian developer::http://www.debian.org/doc/developers-reference/new-maintainer.html#registering devref::3::Debian Developer's Duties::http://www.debian.org/doc/developers-reference/developer-duties.html devref::3.1::Package Maintainer's Duties::http://www.debian.org/doc/developers-reference/developer-duties.html#package-maintainer-duties devref::3.1.1::Work towards the next <code>stable</code> release::http://www.debian.org/doc/developers-reference/developer-duties.html#help-release devref::3.1.2::Maintain packages in <code>stable</code>::http://www.debian.org/doc/developers-reference/developer-duties.html#maintain-stable devref::3.1.3::Manage release-critical bugs::http://www.debian.org/doc/developers-reference/developer-duties.html#rc-bugs devref::3.1.4::Coordination with upstream developers::http://www.debian.org/doc/developers-reference/developer-duties.html#upstream-coordination devref::3.2::Administrative Duties::http://www.debian.org/doc/developers-reference/developer-duties.html#administrative-duties devref::3.2.1::Maintaining your Debian information::http://www.debian.org/doc/developers-reference/developer-duties.html#user-maint devref::3.2.2::Maintaining your public key::http://www.debian.org/doc/developers-reference/developer-duties.html#key-maint devref::3.2.3::Voting::http://www.debian.org/doc/developers-reference/developer-duties.html#voting devref::3.2.4::Going on vacation gracefully::http://www.debian.org/doc/developers-reference/developer-duties.html#inform-vacation devref::3.2.5::Retiring::http://www.debian.org/doc/developers-reference/developer-duties.html#s3.7 devref::3.2.6::Returning after retirement::http://www.debian.org/doc/developers-reference/developer-duties.html#returning devref::4::Resources for Debian Developers::http://www.debian.org/doc/developers-reference/resources.html devref::4.1::Mailing lists::http://www.debian.org/doc/developers-reference/resources.html#mailing-lists devref::4.1.1::Basic rules for use::http://www.debian.org/doc/developers-reference/resources.html#mailing-lists-rules devref::4.1.2::Core development mailing lists::http://www.debian.org/doc/developers-reference/resources.html#core-devel-mailing-lists devref::4.1.3::Special lists::http://www.debian.org/doc/developers-reference/resources.html#mailing-lists-special devref::4.1.4::Requesting new development-related lists::http://www.debian.org/doc/developers-reference/resources.html#mailing-lists-new devref::4.2::IRC channels::http://www.debian.org/doc/developers-reference/resources.html#irc-channels devref::4.3::Documentation::http://www.debian.org/doc/developers-reference/resources.html#doc-rsrcs devref::4.4::Debian machines::http://www.debian.org/doc/developers-reference/resources.html#server-machines devref::4.4.1::The bugs server::http://www.debian.org/doc/developers-reference/resources.html#servers-bugs devref::4.4.2::The ftp-master server::http://www.debian.org/doc/developers-reference/resources.html#servers-ftp-master devref::4.4.3::The www-master server::http://www.debian.org/doc/developers-reference/resources.html#servers-www devref::4.4.4::The people web server::http://www.debian.org/doc/developers-reference/resources.html#servers-people devref::4.4.5::The VCS servers::http://www.debian.org/doc/developers-reference/resources.html#servers-vcs devref::4.4.6::chroots to different distributions::http://www.debian.org/doc/developers-reference/resources.html#dchroot devref::4.5::The Developers Database::http://www.debian.org/doc/developers-reference/resources.html#devel-db devref::4.6::The Debian archive::http://www.debian.org/doc/developers-reference/resources.html#archive devref::4.6.1::Sections::http://www.debian.org/doc/developers-reference/resources.html#archive-sections devref::4.6.2::Architectures::http://www.debian.org/doc/developers-reference/resources.html#s4.6.2 devref::4.6.3::Packages::http://www.debian.org/doc/developers-reference/resources.html#s4.6.3 devref::4.6.4::Distributions::http://www.debian.org/doc/developers-reference/resources.html#s4.6.4 devref::4.6.5::Release code names::http://www.debian.org/doc/developers-reference/resources.html#codenames devref::4.7::Debian mirrors::http://www.debian.org/doc/developers-reference/resources.html#mirrors devref::4.8::The Incoming system::http://www.debian.org/doc/developers-reference/resources.html#incoming-system devref::4.9::Package information::http://www.debian.org/doc/developers-reference/resources.html#pkg-info devref::4.9.1::On the web::http://www.debian.org/doc/developers-reference/resources.html#pkg-info-web devref::4.9.2::The <strong>dak ls</strong> utility::http://www.debian.org/doc/developers-reference/resources.html#dak-ls devref::4.10::The Package Tracking System::http://www.debian.org/doc/developers-reference/resources.html#pkg-tracking-system devref::4.10.1::The PTS email interface::http://www.debian.org/doc/developers-reference/resources.html#pts-commands devref::4.10.2::Filtering PTS mails::http://www.debian.org/doc/developers-reference/resources.html#pts-mail-filtering devref::4.10.3::Forwarding VCS commits in the PTS::http://www.debian.org/doc/developers-reference/resources.html#pts-vcs-commit devref::4.10.4::The PTS web interface::http://www.debian.org/doc/developers-reference/resources.html#pts-web devref::4.11::Developer's packages overview::http://www.debian.org/doc/developers-reference/resources.html#ddpo devref::4.12::Debian's FusionForge installation: Alioth::http://www.debian.org/doc/developers-reference/resources.html#alioth devref::4.13::Goodies for Developers::http://www.debian.org/doc/developers-reference/resources.html#developer-misc devref::4.13.1::LWN Subscriptions::http://www.debian.org/doc/developers-reference/resources.html#lwn devref::4.13.2::Gandi.net Hosting Discount::http://www.debian.org/doc/developers-reference/resources.html#gandi devref::5::Managing Packages::http://www.debian.org/doc/developers-reference/pkgs.html devref::5.1::New packages::http://www.debian.org/doc/developers-reference/pkgs.html#newpackage devref::5.2::Recording changes in the package::http://www.debian.org/doc/developers-reference/pkgs.html#changelog-entries devref::5.3::Testing the package::http://www.debian.org/doc/developers-reference/pkgs.html#sanitycheck devref::5.4::Layout of the source package::http://www.debian.org/doc/developers-reference/pkgs.html#sourcelayout devref::5.5::Picking a distribution::http://www.debian.org/doc/developers-reference/pkgs.html#distribution devref::5.5.1::Special case: uploads to the <code>stable</code> and <code>oldstable</code> distributions::http://www.debian.org/doc/developers-reference/pkgs.html#upload-stable devref::5.5.2::Special case: uploads to <code>testing/testing-proposed-updates</code>::http://www.debian.org/doc/developers-reference/pkgs.html#upload-t-p-u devref::5.6::Uploading a package::http://www.debian.org/doc/developers-reference/pkgs.html#upload devref::5.6.1::Uploading to <code>ftp-master</code>::http://www.debian.org/doc/developers-reference/pkgs.html#upload-ftp-master devref::5.6.2::Delayed uploads::http://www.debian.org/doc/developers-reference/pkgs.html#delayed-incoming devref::5.6.3::Security uploads::http://www.debian.org/doc/developers-reference/pkgs.html#s5.6.4 devref::5.6.4::Other upload queues::http://www.debian.org/doc/developers-reference/pkgs.html#s5.6.5 devref::5.6.5::Notification that a new package has been installed::http://www.debian.org/doc/developers-reference/pkgs.html#upload-notification devref::5.7::Specifying the package section, subsection and priority::http://www.debian.org/doc/developers-reference/pkgs.html#override-file devref::5.8::Handling bugs::http://www.debian.org/doc/developers-reference/pkgs.html#bug-handling devref::5.8.1::Monitoring bugs::http://www.debian.org/doc/developers-reference/pkgs.html#bug-monitoring devref::5.8.2::Responding to bugs::http://www.debian.org/doc/developers-reference/pkgs.html#bug-answering devref::5.8.3::Bug housekeeping::http://www.debian.org/doc/developers-reference/pkgs.html#bug-housekeeping devref::5.8.4::When bugs are closed by new uploads::http://www.debian.org/doc/developers-reference/pkgs.html#upload-bugfix devref::5.8.5::Handling security-related bugs::http://www.debian.org/doc/developers-reference/pkgs.html#bug-security devref::5.9::Moving, removing, renaming, orphaning, adopting, and reintroducing packages::http://www.debian.org/doc/developers-reference/pkgs.html#archive-manip devref::5.9.1::Moving packages::http://www.debian.org/doc/developers-reference/pkgs.html#moving-pkgs devref::5.9.2::Removing packages::http://www.debian.org/doc/developers-reference/pkgs.html#removing-pkgs devref::5.9.3::Replacing or renaming packages::http://www.debian.org/doc/developers-reference/pkgs.html#s5.9.3 devref::5.9.4::Orphaning a package::http://www.debian.org/doc/developers-reference/pkgs.html#orphaning devref::5.9.5::Adopting a package::http://www.debian.org/doc/developers-reference/pkgs.html#adopting devref::5.9.6::Reintroducing packages::http://www.debian.org/doc/developers-reference/pkgs.html#reintroducing-pkgs devref::5.10::Porting and being ported::http://www.debian.org/doc/developers-reference/pkgs.html#porting devref::5.10.1::Being kind to porters::http://www.debian.org/doc/developers-reference/pkgs.html#kind-to-porters devref::5.10.2::Guidelines for porter uploads::http://www.debian.org/doc/developers-reference/pkgs.html#porter-guidelines devref::5.10.3::Porting infrastructure and automation::http://www.debian.org/doc/developers-reference/pkgs.html#porter-automation devref::5.10.4::When your package is <em>not</em> portable::http://www.debian.org/doc/developers-reference/pkgs.html#packages-arch-specific devref::5.10.5::Marking non-free packages as auto-buildable::http://www.debian.org/doc/developers-reference/pkgs.html#non-free-buildd devref::5.11::Non-Maintainer Uploads (NMUs)::http://www.debian.org/doc/developers-reference/pkgs.html#nmu devref::5.11.1::When and how to do an NMU::http://www.debian.org/doc/developers-reference/pkgs.html#nmu-guidelines devref::5.11.2::NMUs and <code>debian/changelog</code>::http://www.debian.org/doc/developers-reference/pkgs.html#nmu-changelog devref::5.11.3::Using the <code>DELAYED/</code> queue::http://www.debian.org/doc/developers-reference/pkgs.html#nmu-delayed devref::5.11.4::NMUs from the maintainer's point of view::http://www.debian.org/doc/developers-reference/pkgs.html#nmu-maintainer devref::5.11.5::Source NMUs vs Binary-only NMUs (binNMUs)::http://www.debian.org/doc/developers-reference/pkgs.html#nmu-binnmu devref::5.11.6::NMUs vs QA uploads::http://www.debian.org/doc/developers-reference/pkgs.html#nmu-qa-upload devref::5.11.7::NMUs vs team uploads::http://www.debian.org/doc/developers-reference/pkgs.html#nmu-team-upload devref::5.12::Collaborative maintenance::http://www.debian.org/doc/developers-reference/pkgs.html#collaborative-maint devref::5.13::The testing distribution::http://www.debian.org/doc/developers-reference/pkgs.html#testing devref::5.13.1::Basics::http://www.debian.org/doc/developers-reference/pkgs.html#testing-basics devref::5.13.2::Updates from unstable::http://www.debian.org/doc/developers-reference/pkgs.html#testing-unstable devref::5.13.3::Direct updates to testing::http://www.debian.org/doc/developers-reference/pkgs.html#t-p-u devref::5.13.4::Frequently asked questions::http://www.debian.org/doc/developers-reference/pkgs.html#faq devref::6::Best Packaging Practices::http://www.debian.org/doc/developers-reference/best-pkging-practices.html devref::6.1::Best practices for <code>debian/rules</code>::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-debian-rules devref::6.1.1::Helper scripts::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#helper-scripts devref::6.1.2::Separating your patches into multiple files::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#multiple-patches devref::6.1.3::Multiple binary packages::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#multiple-binary devref::6.2::Best practices for <code>debian/control</code>::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-debian-control devref::6.2.1::General guidelines for package descriptions::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-desc-basics devref::6.2.2::The package synopsis, or short description::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-pkg-synopsis devref::6.2.3::The long description::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-pkg-desc devref::6.2.4::Upstream home page::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-upstream-info devref::6.2.5::Version Control System location::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-vcs devref::6.3::Best practices for <code>debian/changelog</code>::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-debian-changelog devref::6.3.1::Writing useful changelog entries::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-changelog-do devref::6.3.2::Common misconceptions about changelog entries::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-changelog-misconceptions devref::6.3.3::Common errors in changelog entries::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-changelog-errors devref::6.3.4::Supplementing changelogs with <code>NEWS.Debian</code> files::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-news-debian devref::6.4::Best practices for maintainer scripts::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-debian-maint-scripts devref::6.5::Configuration management with <code>debconf</code>::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-config-mgmt devref::6.5.1::Do not abuse debconf::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.1 devref::6.5.2::General recommendations for authors and translators::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.2 devref::6.5.3::Templates fields definition::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.3 devref::6.5.4::Templates fields specific style guide::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.4 devref::6.6::Internationalization::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-i18n devref::6.6.1::Handling debconf translations::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-i18n-debconf devref::6.6.2::Internationalized documentation::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-i18n-docs devref::6.7::Common packaging situations::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-common-situations devref::6.7.1::Packages using <strong>autoconf</strong>/<strong>automake</strong>::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-autotools devref::6.7.2::Libraries::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-libraries devref::6.7.3::Documentation::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-docs devref::6.7.4::Specific types of packages::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-other devref::6.7.5::Architecture-independent data::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-archindepdata devref::6.7.6::Needing a certain locale during build::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-locale devref::6.7.7::Make transition packages deborphan compliant::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-transition devref::6.7.8::Best practices for <code>.orig.tar.{gz,bz2,xz}</code> files::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-origtargz devref::6.7.9::Best practices for debug packages::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-dbg devref::6.7.10::Best practices for meta-packages::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#bpp-meta devref::7::Beyond Packaging::http://www.debian.org/doc/developers-reference/beyond-pkging.html devref::7.1::Bug reporting::http://www.debian.org/doc/developers-reference/beyond-pkging.html#submit-bug devref::7.1.1::Reporting lots of bugs at once (mass bug filing)::http://www.debian.org/doc/developers-reference/beyond-pkging.html#submit-many-bugs devref::7.2::Quality Assurance effort::http://www.debian.org/doc/developers-reference/beyond-pkging.html#qa-effort devref::7.2.1::Daily work::http://www.debian.org/doc/developers-reference/beyond-pkging.html#qa-daily-work devref::7.2.2::Bug squashing parties::http://www.debian.org/doc/developers-reference/beyond-pkging.html#qa-bsp devref::7.3::Contacting other maintainers::http://www.debian.org/doc/developers-reference/beyond-pkging.html#contacting-maintainers devref::7.4::Dealing with inactive and/or unreachable maintainers::http://www.debian.org/doc/developers-reference/beyond-pkging.html#mia-qa devref::7.5::Interacting with prospective Debian developers::http://www.debian.org/doc/developers-reference/beyond-pkging.html#newmaint devref::7.5.1::Sponsoring packages::http://www.debian.org/doc/developers-reference/beyond-pkging.html#sponsoring devref::7.5.2::Advocating new developers::http://www.debian.org/doc/developers-reference/beyond-pkging.html#advocating-new-developers devref::7.5.3::Handling new maintainer applications::http://www.debian.org/doc/developers-reference/beyond-pkging.html#become-application-manager devref::8::Internationalization and Translations::http://www.debian.org/doc/developers-reference/l10n.html devref::8.1::How translations are handled within Debian::http://www.debian.org/doc/developers-reference/l10n.html#l10n-handling devref::8.2::I18N & L10N FAQ for maintainers::http://www.debian.org/doc/developers-reference/l10n.html#l10n-faqm devref::8.2.1::How to get a given text translated::http://www.debian.org/doc/developers-reference/l10n.html#l10n-faqm-tr devref::8.2.2::How to get a given translation reviewed::http://www.debian.org/doc/developers-reference/l10n.html#l10n-faqm-rev devref::8.2.3::How to get a given translation updated::http://www.debian.org/doc/developers-reference/l10n.html#l10n-faqm-update devref::8.2.4::How to handle a bug report concerning a translation::http://www.debian.org/doc/developers-reference/l10n.html#l10n-faqm-bug devref::8.3::I18N & L10N FAQ for translators::http://www.debian.org/doc/developers-reference/l10n.html#l10n-faqtr devref::8.3.1::How to help the translation effort::http://www.debian.org/doc/developers-reference/l10n.html#l10n-faqtr-help devref::8.3.2::How to provide a translation for inclusion in a package::http://www.debian.org/doc/developers-reference/l10n.html#l10n-faqtr-inc devref::8.4::Best current practice concerning l10n::http://www.debian.org/doc/developers-reference/l10n.html#l10n-best devref::A::Overview of Debian Maintainer Tools::http://www.debian.org/doc/developers-reference/tools.html devref::A.1::Core tools::http://www.debian.org/doc/developers-reference/tools.html#tools-core devref::A.1.1::<code>dpkg-dev</code>::http://www.debian.org/doc/developers-reference/tools.html#dpkg-dev devref::A.1.2::<code>debconf</code>::http://www.debian.org/doc/developers-reference/tools.html#debconf devref::A.1.3::<code>fakeroot</code>::http://www.debian.org/doc/developers-reference/tools.html#fakeroot devref::A.2::Package lint tools::http://www.debian.org/doc/developers-reference/tools.html#tools-lint devref::A.2.1::<code>lintian</code>::http://www.debian.org/doc/developers-reference/tools.html#lintian devref::A.2.2::<strong>debdiff</strong>::http://www.debian.org/doc/developers-reference/tools.html#debdiff devref::A.3::Helpers for <code>debian/rules</code>::http://www.debian.org/doc/developers-reference/tools.html#tools-helpers devref::A.3.1::<code>debhelper</code>::http://www.debian.org/doc/developers-reference/tools.html#debhelper devref::A.3.2::<code>dh-make</code>::http://www.debian.org/doc/developers-reference/tools.html#dh-make devref::A.3.3::<code>equivs</code>::http://www.debian.org/doc/developers-reference/tools.html#equivs devref::A.4::Package builders::http://www.debian.org/doc/developers-reference/tools.html#tools-builders devref::A.4.1::<code>cvs-buildpackage</code>::http://www.debian.org/doc/developers-reference/tools.html#cvs-buildpackage devref::A.4.2::<code>debootstrap</code>::http://www.debian.org/doc/developers-reference/tools.html#debootstrap devref::A.4.3::<code>pbuilder</code>::http://www.debian.org/doc/developers-reference/tools.html#pbuilder devref::A.4.4::<code>sbuild</code>::http://www.debian.org/doc/developers-reference/tools.html#sbuild devref::A.5::Package uploaders::http://www.debian.org/doc/developers-reference/tools.html#uploaders devref::A.5.1::<code>dupload</code>::http://www.debian.org/doc/developers-reference/tools.html#dupload devref::A.5.2::<code>dput</code>::http://www.debian.org/doc/developers-reference/tools.html#dput devref::A.5.3::<strong>dcut</strong>::http://www.debian.org/doc/developers-reference/tools.html#dcut devref::A.6::Maintenance automation::http://www.debian.org/doc/developers-reference/tools.html#tools-maint-automate devref::A.6.1::<code>devscripts</code>::http://www.debian.org/doc/developers-reference/tools.html#devscripts devref::A.6.2::<code>autotools-dev</code>::http://www.debian.org/doc/developers-reference/tools.html#autotools-dev devref::A.6.3::<code>dpkg-repack</code>::http://www.debian.org/doc/developers-reference/tools.html#dpkg-repack devref::A.6.4::<code>alien</code>::http://www.debian.org/doc/developers-reference/tools.html#alien devref::A.6.5::<code>debsums</code>::http://www.debian.org/doc/developers-reference/tools.html#debsums devref::A.6.6::<code>dpkg-dev-el</code>::http://www.debian.org/doc/developers-reference/tools.html#dpkg-dev-el devref::A.6.7::<strong>dpkg-depcheck</strong>::http://www.debian.org/doc/developers-reference/tools.html#dpkg-depcheck devref::A.7::Porting tools::http://www.debian.org/doc/developers-reference/tools.html#tools-porting devref::A.7.1::<code>quinn-diff</code>::http://www.debian.org/doc/developers-reference/tools.html#quinn-diff devref::A.7.2::<code>dpkg-cross</code>::http://www.debian.org/doc/developers-reference/tools.html#dpkg-cross devref::A.8::Documentation and information::http://www.debian.org/doc/developers-reference/tools.html#tools-doc devref::A.8.1::<code>docbook-xml</code>::http://www.debian.org/doc/developers-reference/tools.html#docbook-xml devref::A.8.2::<code>debiandoc-sgml</code>::http://www.debian.org/doc/developers-reference/tools.html#debiandoc-sgml devref::A.8.3::<code>debian-keyring</code>::http://www.debian.org/doc/developers-reference/tools.html#debian-keyring devref::A.8.4::<code>debian-maintainers</code>::http://www.debian.org/doc/developers-reference/tools.html#debian-maintainers devref::A.8.5::<code>debview</code>::http://www.debian.org/doc/developers-reference/tools.html#debview devref::4.6.4.1::Stable, testing, and unstable::http://www.debian.org/doc/developers-reference/resources.html#sec-dists devref::4.6.4.2::More information about the testing distribution::http://www.debian.org/doc/developers-reference/resources.html#s4.6.4.2 devref::4.6.4.3::Experimental::http://www.debian.org/doc/developers-reference/resources.html#experimental devref::5.8.5.1::The Security Tracker::http://www.debian.org/doc/developers-reference/pkgs.html#bug-security-tracker devref::5.8.5.2::Confidentiality::http://www.debian.org/doc/developers-reference/pkgs.html#bug-security-confidentiality devref::5.8.5.3::Security Advisories::http://www.debian.org/doc/developers-reference/pkgs.html#bug-security-advisories devref::5.8.5.4::Preparing packages to address security issues::http://www.debian.org/doc/developers-reference/pkgs.html#bug-security-building devref::5.8.5.5::Uploading the fixed package::http://www.debian.org/doc/developers-reference/pkgs.html#bug-security-upload devref::5.9.2.1::Removing packages from <code>Incoming</code>::http://www.debian.org/doc/developers-reference/pkgs.html#s5.9.2.1 devref::5.10.2.1::Recompilation or binary-only NMU::http://www.debian.org/doc/developers-reference/pkgs.html#binary-only-nmu devref::5.10.2.2::When to do a source NMU if you are a porter::http://www.debian.org/doc/developers-reference/pkgs.html#source-nmu-when-porter devref::5.10.3.1::Mailing lists and web pages::http://www.debian.org/doc/developers-reference/pkgs.html#s5.10.3.1 devref::5.10.3.2::Porter tools::http://www.debian.org/doc/developers-reference/pkgs.html#s5.10.3.2 devref::5.10.3.3::<code>wanna-build</code>::http://www.debian.org/doc/developers-reference/pkgs.html#wanna-build devref::5.13.2.1::Out-of-date::http://www.debian.org/doc/developers-reference/pkgs.html#outdated devref::5.13.2.2::Removals from testing::http://www.debian.org/doc/developers-reference/pkgs.html#removals devref::5.13.2.3::Circular dependencies::http://www.debian.org/doc/developers-reference/pkgs.html#circular devref::5.13.2.4::Influence of package in testing::http://www.debian.org/doc/developers-reference/pkgs.html#s5.13.2.4 devref::5.13.2.5::Details::http://www.debian.org/doc/developers-reference/pkgs.html#details devref::5.13.4.1::What are release-critical bugs, and how do they get counted?::http://www.debian.org/doc/developers-reference/pkgs.html#rc devref::5.13.4.2::How could installing a package into <code>testing</code> possibly break other packages?::http://www.debian.org/doc/developers-reference/pkgs.html#s5.13.4.2 devref::6.2.5.1::Vcs-Browser::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.2.5.1 devref::6.2.5.2::Vcs-*::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.2.5.2 devref::6.5.2.1::Write correct English::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.2.1 devref::6.5.2.2::Be kind to translators::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.2.2 devref::6.5.2.3::Unfuzzy complete translations when correcting typos and spelling::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.2.3 devref::6.5.2.4::Do not make assumptions about interfaces::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.2.4 devref::6.5.2.5::Do not use first person::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.2.5 devref::6.5.2.6::Be gender neutral::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.2.6 devref::6.5.3.1::Type::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.3.1 devref::6.5.3.1.1::string::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.3.1.1 devref::6.5.3.1.2::password::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.3.1.2 devref::6.5.3.1.3::boolean::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.3.1.3 devref::6.5.3.1.4::select::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.3.1.4 devref::6.5.3.1.5::multiselect::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.3.1.5 devref::6.5.3.1.6::note::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.3.1.6 devref::6.5.3.1.7::text::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.3.1.7 devref::6.5.3.1.8::error::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.3.1.8 devref::6.5.3.2::Description: short and extended description::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.3.2 devref::6.5.3.3::Choices::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.3.3 devref::6.5.3.4::Default::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.3.4 devref::6.5.4.1::Type field::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.4.1 devref::6.5.4.2::Description field::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.4.2 devref::6.5.4.2.1::String/password templates::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.4.2.1 devref::6.5.4.2.2::Boolean templates::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.4.2.2 devref::6.5.4.2.3::Select/Multiselect::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.4.2.3 devref::6.5.4.2.4::Notes::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.4.2.4 devref::6.5.4.3::Choices field::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.4.3 devref::6.5.4.4::Default field::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.4.4 devref::6.5.4.5::Default field::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#s6.5.4.5 devref::6.7.8.1::Pristine source::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#pristinesource devref::6.7.8.2::Repackaged upstream source::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#repackagedorigtargz devref::6.7.8.3::Changing binary files::http://www.debian.org/doc/developers-reference/best-pkging-practices.html#changed-binfiles devref::7.1.1.1::Usertags::http://www.debian.org/doc/developers-reference/beyond-pkging.html#usertags devref::7.5.1.1::Sponsoring a new package::http://www.debian.org/doc/developers-reference/beyond-pkging.html#sponsoring-new-package devref::7.5.1.2::Sponsoring an update of an existing package::http://www.debian.org/doc/developers-reference/beyond-pkging.html#sponsoring-update doc-base::::Debian doc-base Manual:: doc-base::1::About <code>doc-base</code>:: doc-base::2::The packages interface:: doc-base::2.1::Introduction:: doc-base::2.2::Document IDs:: doc-base::2.3::Control Files:: doc-base::2.3.1::Example:: doc-base::2.3.2::Syntax of the control file:: doc-base::2.3.2.1::The main section:: doc-base::2.3.2.2::<em>Format</em> sections:: doc-base::2.3.3::The <samp>section</samp> field:: doc-base::2.4::Registering Documents With <code>doc-base</code>:: doc-base::2.5::doc-base 0.8.x features and incompatibilities:: doc-base::2.5.1::Splitting control files over multiple binary packages:: doc-base::2.5.2::Registering local documents:: doc-base::2.5.3::dpkg triggers:: doc-base::2.6::Checking Syntax of <em>Control Files</em>:: doc-base::3::Getting information about installed documents:: doc-base::4::TODO List:: doc-base::4.1::Roadmap for 0.9.* releases:: doc-base::4.2::Old TODO entries:: fhs::::Filesystem Hierarchy Standard::http://www.pathname.com/fhs/pub/fhs-2.3.html fhs::introduction::Introduction::http://www.pathname.com/fhs/pub/fhs-2.3.html#INTRODUCTION fhs::purpose::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE fhs::conventions::Conventions::http://www.pathname.com/fhs/pub/fhs-2.3.html#CONVENTIONS fhs::thefilesystem::The Filesystem::http://www.pathname.com/fhs/pub/fhs-2.3.html#THEFILESYSTEM fhs::therootfilesystem::The Root Filesystem::http://www.pathname.com/fhs/pub/fhs-2.3.html#THEROOTFILESYSTEM fhs::purpose2::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE2 fhs::requirements::Requirements::http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS fhs::specificoptions::Specific Options::http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS fhs::binessentialusercommandbinaries::/bin : Essential user command binaries (for use by all users)::http://www.pathname.com/fhs/pub/fhs-2.3.html#BINESSENTIALUSERCOMMANDBINARIES fhs::purpose3::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE3 fhs::requirements2::Requirements::http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS2 fhs::specificoptions2::Specific Options::http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS2 fhs::bootstaticfilesofthebootloader::/boot : Static files of the boot loader::http://www.pathname.com/fhs/pub/fhs-2.3.html#BOOTSTATICFILESOFTHEBOOTLOADER fhs::purpose4::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE4 fhs::specificoptions3::Specific Options::http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS3 fhs::devdevicefiles::/dev : Device files::http://www.pathname.com/fhs/pub/fhs-2.3.html#DEVDEVICEFILES fhs::purpose5::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE5 fhs::specificoptions4::Specific Options::http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS4 fhs::etchostspecificsystemconfiguration::/etc : Host-specific system configuration::http://www.pathname.com/fhs/pub/fhs-2.3.html#ETCHOSTSPECIFICSYSTEMCONFIGURATION fhs::purpose6::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE6 fhs::requirements3::Requirements::http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS3 fhs::specificoptions5::Specific Options::http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS5 fhs::etcoptconfigurationfilesforopt::/etc/opt : Configuration files for /opt::http://www.pathname.com/fhs/pub/fhs-2.3.html#ETCOPTCONFIGURATIONFILESFOROPT fhs::etcx11configurationforthexwindows::/etc/X11 : Configuration for the X Window System (optional)::http://www.pathname.com/fhs/pub/fhs-2.3.html#ETCX11CONFIGURATIONFORTHEXWINDOWS fhs::etcsgmlconfigurationfilesforsgmlan::/etc/sgml : Configuration files for SGML (optional)::http://www.pathname.com/fhs/pub/fhs-2.3.html#ETCSGMLCONFIGURATIONFILESFORSGMLAN fhs::aen795::/etc/xml : Configuration files for XML (optional)::http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN795 fhs::homeuserhomedirectories::/home : User home directories (optional)::http://www.pathname.com/fhs/pub/fhs-2.3.html#HOMEUSERHOMEDIRECTORIES fhs::purpose10::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE10 fhs::requirements4a::Requirements::http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS4A fhs::libessentialsharedlibrariesandkern::/lib : Essential shared libraries and kernel modules::http://www.pathname.com/fhs/pub/fhs-2.3.html#LIBESSENTIALSHAREDLIBRARIESANDKERN fhs::purpose11::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE11 fhs::requirements5::Requirements::http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS5 fhs::specificoptions7::Specific Options::http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS7 fhs::libltqualgtalternateformatessential::/lib<qual> : Alternate format essential shared libraries (optional)::http://www.pathname.com/fhs/pub/fhs-2.3.html#LIBLTQUALGTALTERNATEFORMATESSENTIAL fhs::purpose12::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE12 fhs::requirements6::Requirements::http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS6 fhs::mediamountpoint::/media : Mount point for removeable media::http://www.pathname.com/fhs/pub/fhs-2.3.html#MEDIAMOUNTPOINT fhs::purposemediamountpoint::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSEMEDIAMOUNTPOINT fhs::specificoptionsmediamount::Specific Options::http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONSMEDIAMOUNT fhs::mntmountpointforatemporarilymount::/mnt : Mount point for a temporarily mounted filesystem::http://www.pathname.com/fhs/pub/fhs-2.3.html#MNTMOUNTPOINTFORATEMPORARILYMOUNT fhs::purpose13::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE13 fhs::optaddonapplicationsoftwarepackages::/opt : Add-on application software packages::http://www.pathname.com/fhs/pub/fhs-2.3.html#OPTADDONAPPLICATIONSOFTWAREPACKAGES fhs::purpose14::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE14 fhs::requirements7::Requirements::http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS7 fhs::roothomedirectoryfortherootuser::/root : Home directory for the root user (optional)::http://www.pathname.com/fhs/pub/fhs-2.3.html#ROOTHOMEDIRECTORYFORTHEROOTUSER fhs::purpose15::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE15 fhs::sbinsystembinaries::/sbin : System binaries::http://www.pathname.com/fhs/pub/fhs-2.3.html#SBINSYSTEMBINARIES fhs::purpose16::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE16 fhs::requirements8::Requirements::http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS8 fhs::specificoptions8::Specific Options::http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS8 fhs::srvdataforservicesprovidedbysystem::/srv : Data for services provided by this system::http://www.pathname.com/fhs/pub/fhs-2.3.html#SRVDATAFORSERVICESPROVIDEDBYSYSTEM fhs::purpose16a::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE16A fhs::tmptemporaryfiles::/tmp : Temporary files::http://www.pathname.com/fhs/pub/fhs-2.3.html#TMPTEMPORARYFILES fhs::purpose17::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE17 fhs::theusrhierarchy::The /usr Hierarchy::http://www.pathname.com/fhs/pub/fhs-2.3.html#THEUSRHIERARCHY fhs::purpose18::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE18 fhs::requirements9::Requirements::http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS9 fhs::specificoptions9::Specific Options::http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS9 fhs::usrx11r6xwindowsystemversion11rel::/usr/X11R6 : X Window System, Version 11 Release 6 (optional)::http://www.pathname.com/fhs/pub/fhs-2.3.html#USRX11R6XWINDOWSYSTEMVERSION11REL fhs::purpose19::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE19 fhs::specificoptions10::Specific Options::http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS10 fhs::usrbinmostusercommands::/usr/bin : Most user commands::http://www.pathname.com/fhs/pub/fhs-2.3.html#USRBINMOSTUSERCOMMANDS fhs::purpose20::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE20 fhs::specificoptions11::Specific Options::http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS11 fhs::usrincludedirectoryforstandardinclu::/usr/include : Directory for standard include files.::http://www.pathname.com/fhs/pub/fhs-2.3.html#USRINCLUDEDIRECTORYFORSTANDARDINCLU fhs::purpose21::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE21 fhs::specificoptions12::Specific Options::http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS12 fhs::usrliblibrariesforprogrammingandpa::/usr/lib : Libraries for programming and packages::http://www.pathname.com/fhs/pub/fhs-2.3.html#USRLIBLIBRARIESFORPROGRAMMINGANDPA fhs::purpose22::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE22 fhs::specificoptions13::Specific Options::http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS13 fhs::usrlibltqualgtalternateformatlibrari::/usr/lib<qual> : Alternate format libraries (optional)::http://www.pathname.com/fhs/pub/fhs-2.3.html#USRLIBLTQUALGTALTERNATEFORMATLIBRARI fhs::purpose23::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE23 fhs::usrlocallocalhierarchy::/usr/local : Local hierarchy::http://www.pathname.com/fhs/pub/fhs-2.3.html#USRLOCALLOCALHIERARCHY fhs::usrlocalshare1::/usr/local/share::http://www.pathname.com/fhs/pub/fhs-2.3.html#USRLOCALSHARE1 fhs::usrsbinnonessentialstandardsystembi::/usr/sbin : Non-essential standard system binaries::http://www.pathname.com/fhs/pub/fhs-2.3.html#USRSBINNONESSENTIALSTANDARDSYSTEMBI fhs::purpose25::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE25 fhs::usrsharearchitectureindependentdata::/usr/share : Architecture-independent data::http://www.pathname.com/fhs/pub/fhs-2.3.html#USRSHAREARCHITECTUREINDEPENDENTDATA fhs::purpose26::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE26 fhs::requirements11::Requirements::http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS11 fhs::specificoptions15::Specific Options::http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS15 fhs::usrsharedictwordlists::/usr/share/dict : Word lists (optional)::http://www.pathname.com/fhs/pub/fhs-2.3.html#USRSHAREDICTWORDLISTS fhs::usrsharemanmanualpages::/usr/share/man : Manual pages::http://www.pathname.com/fhs/pub/fhs-2.3.html#USRSHAREMANMANUALPAGES fhs::usrsharemiscmiscellaneousarchitecture::/usr/share/misc : Miscellaneous architecture-independent data::http://www.pathname.com/fhs/pub/fhs-2.3.html#USRSHAREMISCMISCELLANEOUSARCHITECTURE fhs::usrsharesgmlsgmlandxmldata::/usr/share/sgml : SGML data (optional)::http://www.pathname.com/fhs/pub/fhs-2.3.html#USRSHARESGMLSGMLANDXMLDATA fhs::aen2007::/usr/share/xml : XML data (optional)::http://www.pathname.com/fhs/pub/fhs-2.3.html#AEN2007 fhs::usrsrcsourcecode::/usr/src : Source code (optional)::http://www.pathname.com/fhs/pub/fhs-2.3.html#USRSRCSOURCECODE fhs::purpose30::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE30 fhs::thevarhierarchy::The /var Hierarchy::http://www.pathname.com/fhs/pub/fhs-2.3.html#THEVARHIERARCHY fhs::purpose31::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE31 fhs::requirements12::Requirements::http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS12 fhs::specificoptions20::Specific Options::http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS20 fhs::varaccountprocessaccountinglogs::/var/account : Process accounting logs (optional)::http://www.pathname.com/fhs/pub/fhs-2.3.html#VARACCOUNTPROCESSACCOUNTINGLOGS fhs::purpose32::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE32 fhs::varcacheapplicationcachedata::/var/cache : Application cache data::http://www.pathname.com/fhs/pub/fhs-2.3.html#VARCACHEAPPLICATIONCACHEDATA fhs::purpose33::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE33 fhs::specificoptions21::Specific Options::http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS21 fhs::varcachefontslocallygeneratedfonts::/var/cache/fonts : Locally-generated fonts (optional)::http://www.pathname.com/fhs/pub/fhs-2.3.html#VARCACHEFONTSLOCALLYGENERATEDFONTS fhs::varcachemanlocallyformattedmanualpag::/var/cache/man : Locally-formatted manual pages (optional)::http://www.pathname.com/fhs/pub/fhs-2.3.html#VARCACHEMANLOCALLYFORMATTEDMANUALPAG fhs::varcrashsystemcrashdumps::/var/crash : System crash dumps (optional)::http://www.pathname.com/fhs/pub/fhs-2.3.html#VARCRASHSYSTEMCRASHDUMPS fhs::purpose36::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE36 fhs::vargamesvariablegamedata::/var/games : Variable game data (optional)::http://www.pathname.com/fhs/pub/fhs-2.3.html#VARGAMESVARIABLEGAMEDATA fhs::purpose37::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE37 fhs::varlibvariablestateinformation::/var/lib : Variable state information::http://www.pathname.com/fhs/pub/fhs-2.3.html#VARLIBVARIABLESTATEINFORMATION fhs::purpose38::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE38 fhs::requirements13::Requirements::http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS13 fhs::specificoptions23::Specific Options::http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS23 fhs::varliblteditorgteditorbackupfilesan::/var/lib/<editor> : Editor backup files and state (optional)::http://www.pathname.com/fhs/pub/fhs-2.3.html#VARLIBLTEDITORGTEDITORBACKUPFILESAN fhs::varlibhwclockstatedirectoryforhwclo::/var/lib/hwclock : State directory for hwclock (optional)::http://www.pathname.com/fhs/pub/fhs-2.3.html#VARLIBHWCLOCKSTATEDIRECTORYFORHWCLO fhs::varlibmiscmiscellaneousvariabledata::/var/lib/misc : Miscellaneous variable data::http://www.pathname.com/fhs/pub/fhs-2.3.html#VARLIBMISCMISCELLANEOUSVARIABLEDATA fhs::varlocklockfiles::/var/lock : Lock files::http://www.pathname.com/fhs/pub/fhs-2.3.html#VARLOCKLOCKFILES fhs::purpose42::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE42 fhs::varloglogfilesanddirectories::/var/log : Log files and directories::http://www.pathname.com/fhs/pub/fhs-2.3.html#VARLOGLOGFILESANDDIRECTORIES fhs::purpose43::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE43 fhs::specificoptions24::Specific Options::http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS24 fhs::varmailusermailboxfiles::/var/mail : User mailbox files (optional)::http://www.pathname.com/fhs/pub/fhs-2.3.html#VARMAILUSERMAILBOXFILES fhs::purpose44::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE44 fhs::varoptvariabledataforopt::/var/opt : Variable data for /opt::http://www.pathname.com/fhs/pub/fhs-2.3.html#VAROPTVARIABLEDATAFOROPT fhs::purpose45::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE45 fhs::varrunruntimevariabledata::/var/run : Run-time variable data::http://www.pathname.com/fhs/pub/fhs-2.3.html#VARRUNRUNTIMEVARIABLEDATA fhs::purpose46::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE46 fhs::requirements14::Requirements::http://www.pathname.com/fhs/pub/fhs-2.3.html#REQUIREMENTS14 fhs::varspoolapplicationspooldata::/var/spool : Application spool data::http://www.pathname.com/fhs/pub/fhs-2.3.html#VARSPOOLAPPLICATIONSPOOLDATA fhs::purpose47::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE47 fhs::specificoptions25::Specific Options::http://www.pathname.com/fhs/pub/fhs-2.3.html#SPECIFICOPTIONS25 fhs::varspoollpdlineprinterdaemonprintqu::/var/spool/lpd : Line-printer daemon print queues (optional)::http://www.pathname.com/fhs/pub/fhs-2.3.html#VARSPOOLLPDLINEPRINTERDAEMONPRINTQU fhs::varspoolrwhorwhodfiles::/var/spool/rwho : Rwhod files (optional)::http://www.pathname.com/fhs/pub/fhs-2.3.html#VARSPOOLRWHORWHODFILES fhs::vartmptemporaryfilespreservedbetwee::/var/tmp : Temporary files preserved between system reboots::http://www.pathname.com/fhs/pub/fhs-2.3.html#VARTMPTEMPORARYFILESPRESERVEDBETWEE fhs::purpose50::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE50 fhs::varypnetworkinformationservice::/var/yp : Network Information Service (NIS) database files (optional)::http://www.pathname.com/fhs/pub/fhs-2.3.html#VARYPNETWORKINFORMATIONSERVICE fhs::purpose51::Purpose::http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE51 fhs::operatingsystemspecificannex::Operating System Specific Annex::http://www.pathname.com/fhs/pub/fhs-2.3.html#OPERATINGSYSTEMSPECIFICANNEX fhs::linux::Linux::http://www.pathname.com/fhs/pub/fhs-2.3.html#LINUX fhs::rootdirectory::/ : Root directory::http://www.pathname.com/fhs/pub/fhs-2.3.html#ROOTDIRECTORY fhs::binessentialusercommandbinaries2::/bin : Essential user command binaries (for use by all users)::http://www.pathname.com/fhs/pub/fhs-2.3.html#BINESSENTIALUSERCOMMANDBINARIES2 fhs::devdevicesandspecialfiles::/dev : Devices and special files::http://www.pathname.com/fhs/pub/fhs-2.3.html#DEVDEVICESANDSPECIALFILES fhs::etchostspecificsystemconfiguration2::/etc : Host-specific system configuration::http://www.pathname.com/fhs/pub/fhs-2.3.html#ETCHOSTSPECIFICSYSTEMCONFIGURATION2 fhs::lib64::/lib64 and /lib32 : 64/32-bit libraries (architecture dependent)::http://www.pathname.com/fhs/pub/fhs-2.3.html#LIB64 fhs::prockernelandprocessinformationvir::/proc : Kernel and process information virtual filesystem::http://www.pathname.com/fhs/pub/fhs-2.3.html#PROCKERNELANDPROCESSINFORMATIONVIR fhs::sbinessentialsystembinaries::/sbin : Essential system binaries::http://www.pathname.com/fhs/pub/fhs-2.3.html#SBINESSENTIALSYSTEMBINARIES fhs::usrincludeheaderfilesincludedbycp::/usr/include : Header files included by C programs::http://www.pathname.com/fhs/pub/fhs-2.3.html#USRINCLUDEHEADERFILESINCLUDEDBYCP fhs::usrsrcsourcecode2::/usr/src : Source code::http://www.pathname.com/fhs/pub/fhs-2.3.html#USRSRCSOURCECODE2 fhs::varspoolcroncronandatjobs::/var/spool/cron : cron and at jobs::http://www.pathname.com/fhs/pub/fhs-2.3.html#VARSPOOLCRONCRONANDATJOBS fhs::appendix::Appendix::http://www.pathname.com/fhs/pub/fhs-2.3.html#APPENDIX fhs::thefhsmailinglist::The FHS mailing list::http://www.pathname.com/fhs/pub/fhs-2.3.html#THEFHSMAILINGLIST fhs::backgroundofthefhs::Background of the FHS::http://www.pathname.com/fhs/pub/fhs-2.3.html#BACKGROUNDOFTHEFHS fhs::generalguidelines::General Guidelines::http://www.pathname.com/fhs/pub/fhs-2.3.html#GENERALGUIDELINES fhs::scope::Scope::http://www.pathname.com/fhs/pub/fhs-2.3.html#SCOPE fhs::acknowledgments::Acknowledgments::http://www.pathname.com/fhs/pub/fhs-2.3.html#ACKNOWLEDGMENTS fhs::contributors::Contributors::http://www.pathname.com/fhs/pub/fhs-2.3.html#CONTRIBUTORS java-policy::::Debian policy for Java::http://www.debian.org/doc/packaging-manuals/java-policy/ java-policy::1::Background::http://www.debian.org/doc/packaging-manuals/java-policy/c42.html java-policy::2::Policy::http://www.debian.org/doc/packaging-manuals/java-policy/c50.html java-policy::2.1::Virtual machines::http://www.debian.org/doc/packaging-manuals/java-policy/c50.html#policy-vm java-policy::2.2::Building Java packages::http://www.debian.org/doc/packaging-manuals/java-policy/x84.html java-policy::2.3::Java programs::http://www.debian.org/doc/packaging-manuals/java-policy/x95.html java-policy::2.4::Java libraries::http://www.debian.org/doc/packaging-manuals/java-policy/x110.html java-policy::2.5::Native Java Bytecode (gcj packages)::http://www.debian.org/doc/packaging-manuals/java-policy/x155.html java-policy::2.6::Main, contrib or non-free::http://www.debian.org/doc/packaging-manuals/java-policy/x179.html java-policy::3::Issues to discuss::http://www.debian.org/doc/packaging-manuals/java-policy/c186.html java-policy::4::Advices to Java packagers::http://www.debian.org/doc/packaging-manuals/java-policy/c213.html lintian::::Lintian User's Manual::http://lintian.debian.org/manual/ lintian::1::Introduction::http://lintian.debian.org/manual/chapter-1.html lintian::1.1::About Lintian::http://lintian.debian.org/manual/chapter-1.html#section-1.1 lintian::1.2::The intention of Lintian::http://lintian.debian.org/manual/section-1.2.html lintian::1.3::Design issues::http://lintian.debian.org/manual/section-1.3.html lintian::1.4::Disclaimer::http://lintian.debian.org/manual/section-1.4.html lintian::2::Getting started::http://lintian.debian.org/manual/chapter-2.html lintian::2.1::Installing Lintian::http://lintian.debian.org/manual/chapter-2.html#section-2.1 lintian::2.2::Running lintian::http://lintian.debian.org/manual/section-2.2.html lintian::2.3::Lintian Tags::http://lintian.debian.org/manual/section-2.3.html lintian::2.4::Overrides::http://lintian.debian.org/manual/section-2.4.html lintian::2.4.1::Format of override files::http://lintian.debian.org/manual/section-2.4.html#section-2.4.1 lintian::2.4.2::Documenting overrides::http://lintian.debian.org/manual/section-2.4.html#section-2.4.2 lintian::2.4.3::Architecture specific overrides::http://lintian.debian.org/manual/section-2.4.html#section-2.4.3 lintian::2.5::Vendor Profiles::http://lintian.debian.org/manual/section-2.5.html lintian::2.5.1::Rules for profile names and location::http://lintian.debian.org/manual/section-2.5.html#section-2.5.1 lintian::2.5.2::Profile syntax and semantics::http://lintian.debian.org/manual/section-2.5.html#section-2.5.2 lintian::2.6::Vendor specific data files::http://lintian.debian.org/manual/section-2.6.html lintian::2.6.1::Load paths and order::http://lintian.debian.org/manual/section-2.6.html#section-2.6.1 lintian::2.6.2::Basic syntax of data files::http://lintian.debian.org/manual/section-2.6.html#section-2.6.2 lintian::3::Advanced usage::http://lintian.debian.org/manual/chapter-3.html lintian::3.1::How Lintian works::http://lintian.debian.org/manual/chapter-3.html#section-3.1 lintian::3.2::The laboratory::http://lintian.debian.org/manual/section-3.2.html lintian::3.3::Writing your own Lintian checks::http://lintian.debian.org/manual/section-3.3.html lintian::3.3.1::Check description file::http://lintian.debian.org/manual/section-3.3.html#section-3.3.1 lintian::3.3.2::Check Perl module file::http://lintian.debian.org/manual/section-3.3.html#section-3.3.2 menu::::Debian Menu System::http://www.debian.org/doc/packaging-manuals/menu.html/ menu::1::Introduction::http://www.debian.org/doc/packaging-manuals/menu.html/ch1.html menu::2::Menu from the viewpoint of a user::http://www.debian.org/doc/packaging-manuals/menu.html/ch2.html menu::2.1::How/when do the window manager startup files get created?::http://www.debian.org/doc/packaging-manuals/menu.html/ch2.html#s2.1 menu::2.2::Tuning of the generated window manager startup files::http://www.debian.org/doc/packaging-manuals/menu.html/ch2.html#s2.2 menu::2.3::Optimization of menu tree: hints::http://www.debian.org/doc/packaging-manuals/menu.html/ch2.html#s2.3 menu::3::The menu file::http://www.debian.org/doc/packaging-manuals/menu.html/ch3.html menu::3.1::Location::http://www.debian.org/doc/packaging-manuals/menu.html/ch3.html#s3.1 menu::3.2::Syntax::http://www.debian.org/doc/packaging-manuals/menu.html/ch3.html#s3.2 menu::3.3::The <samp>title</samp> field::http://www.debian.org/doc/packaging-manuals/menu.html/ch3.html#s3.3 menu::3.4::The <samp>needs</samp> field::http://www.debian.org/doc/packaging-manuals/menu.html/ch3.html#s3.4 menu::3.5::The <samp>section</samp> field::http://www.debian.org/doc/packaging-manuals/menu.html/ch3.html#s3.5 menu::3.6::The <samp>command</samp> field::http://www.debian.org/doc/packaging-manuals/menu.html/ch3.html#s3.6 menu::3.7::The <samp>icon</samp> field::http://www.debian.org/doc/packaging-manuals/menu.html/ch3.html#s3.7 menu::3.8::The <samp>hints</samp> field::http://www.debian.org/doc/packaging-manuals/menu.html/ch3.html#s3.8 menu::3.9::Entries for menu sections.::http://www.debian.org/doc/packaging-manuals/menu.html/ch3.html#s3.9 menu::3.10::Fvwm's task and title bars::http://www.debian.org/doc/packaging-manuals/menu.html/ch3.html#s3.10 menu::4::What packages with applications should do::http://www.debian.org/doc/packaging-manuals/menu.html/ch4.html menu::4.1::Providing a menu file::http://www.debian.org/doc/packaging-manuals/menu.html/ch4.html#s4.1 menu::4.2::Adding a hook for dpkg in your packages::http://www.debian.org/doc/packaging-manuals/menu.html/ch4.html#s4.2 menu::5::What packages with menu managers should do::http://www.debian.org/doc/packaging-manuals/menu.html/ch5.html menu::6::How a user can override the menus::http://www.debian.org/doc/packaging-manuals/menu.html/ch6.html menu::6.1::Configuring the menus::http://www.debian.org/doc/packaging-manuals/menu.html/ch6.html#s6.1 menu::6.2::Specifying that a menu entry should not be displayed::http://www.debian.org/doc/packaging-manuals/menu.html/ch6.html#s6.2 menu::6.3::Including other files::http://www.debian.org/doc/packaging-manuals/menu.html/ch6.html#s6.3 menu::7::The internals of the menu package::http://www.debian.org/doc/packaging-manuals/menu.html/ch7.html menu::7.1::The update-menus program::http://www.debian.org/doc/packaging-manuals/menu.html/ch7.html#s7.1 menu::7.2::The install-menu program::http://www.debian.org/doc/packaging-manuals/menu.html/ch7.html#s7.2 menu::7.3::The install-menu config script definitions::http://www.debian.org/doc/packaging-manuals/menu.html/ch7.html#s7.3 menu::7.4::Hints, tree optimization::http://www.debian.org/doc/packaging-manuals/menu.html/ch7.html#s7.4 menu::8::Variables and functions in the install-menu scripts::http://www.debian.org/doc/packaging-manuals/menu.html/ch8.html menu::8.1::String constants::http://www.debian.org/doc/packaging-manuals/menu.html/ch8.html#s8.1 menu::8.2::Variables::http://www.debian.org/doc/packaging-manuals/menu.html/ch8.html#s8.2 menu::8.3::Functions::http://www.debian.org/doc/packaging-manuals/menu.html/ch8.html#s8.3 menu-policy::::The Debian Menu sub-policy::http://www.debian.org/doc/packaging-manuals/menu-policy/ menu-policy::1::About this document::http://www.debian.org/doc/packaging-manuals/menu-policy/ch1.html menu-policy::2::Menu Structure::http://www.debian.org/doc/packaging-manuals/menu-policy/ch2.html menu-policy::2.1::Preferred menu structure::http://www.debian.org/doc/packaging-manuals/menu-policy/ch2.html#s2.1 perl-policy::::Debian Perl Policy::http://www.debian.org/doc/packaging-manuals/perl-policy/ perl-policy::1::About this document::http://www.debian.org/doc/packaging-manuals/perl-policy/ch1.html perl-policy::2::Perl Packaging::http://www.debian.org/doc/packaging-manuals/perl-policy/ch-perl.html perl-policy::3::Locally Installed Modules::http://www.debian.org/doc/packaging-manuals/perl-policy/ch-site.html perl-policy::4::Packaged Modules::http://www.debian.org/doc/packaging-manuals/perl-policy/ch-module_packages.html perl-policy::5::Perl Programs::http://www.debian.org/doc/packaging-manuals/perl-policy/ch-programs.html perl-policy::6::Programs Embedding Perl::http://www.debian.org/doc/packaging-manuals/perl-policy/ch-embed.html perl-policy::A::Perl 6::http://www.debian.org/doc/packaging-manuals/perl-policy/ap-perl6.html perl-policy::2.1::Versions::http://www.debian.org/doc/packaging-manuals/perl-policy/ch-perl.html#s-versions perl-policy::2.2::Base Package::http://www.debian.org/doc/packaging-manuals/perl-policy/ch-perl.html#s-base perl-policy::2.3::Module Path::http://www.debian.org/doc/packaging-manuals/perl-policy/ch-perl.html#s-paths perl-policy::2.4::Documentation::http://www.debian.org/doc/packaging-manuals/perl-policy/ch-perl.html#s-docs perl-policy::3.1::Site Directories::http://www.debian.org/doc/packaging-manuals/perl-policy/ch-site.html#s-site_dirs perl-policy::3.2::Site Installation::http://www.debian.org/doc/packaging-manuals/perl-policy/ch-site.html#s-site_install perl-policy::4.1::Vendor Directories::http://www.debian.org/doc/packaging-manuals/perl-policy/ch-module_packages.html#s-vendor_dirs perl-policy::4.2::Module Package Names::http://www.debian.org/doc/packaging-manuals/perl-policy/ch-module_packages.html#s-package_names perl-policy::4.3::Vendor Installation::http://www.debian.org/doc/packaging-manuals/perl-policy/ch-module_packages.html#s-vendor_install perl-policy::4.4::Module Dependencies::http://www.debian.org/doc/packaging-manuals/perl-policy/ch-module_packages.html#s-module_deps perl-policy::5.1::Script Magic::http://www.debian.org/doc/packaging-manuals/perl-policy/ch-programs.html#s-hash_bang perl-policy::5.2::Program Dependencies::http://www.debian.org/doc/packaging-manuals/perl-policy/ch-programs.html#s-program_deps perl-policy::6.1::Building Embedded Programs::http://www.debian.org/doc/packaging-manuals/perl-policy/ch-embed.html#s-build_embedded perl-policy::6.2::Embedded Perl Dependencies::http://www.debian.org/doc/packaging-manuals/perl-policy/ch-embed.html#s-embedded_deps perl-policy::6.3::Perl Package Upgrades::http://www.debian.org/doc/packaging-manuals/perl-policy/ch-embed.html#s-perl_upgrades perl-policy::4.4.1::Architecture-Independent Modules::http://www.debian.org/doc/packaging-manuals/perl-policy/ch-module_packages.html#s-indep_modules perl-policy::4.4.2::Binary Modules::http://www.debian.org/doc/packaging-manuals/perl-policy/ch-module_packages.html#s-binary_modules perl-policy::4.4.3::Automating Perl Dependencies::http://www.debian.org/doc/packaging-manuals/perl-policy/ch-module_packages.html#s-dh_perl policy::::Debian Policy Manual::http://www.debian.org/doc/debian-policy/ policy::1::About this manual::http://www.debian.org/doc/debian-policy/ch-scope.html policy::2::The Debian Archive::http://www.debian.org/doc/debian-policy/ch-archive.html policy::3::Binary packages::http://www.debian.org/doc/debian-policy/ch-binary.html policy::4::Source packages::http://www.debian.org/doc/debian-policy/ch-source.html policy::5::Control files and their fields::http://www.debian.org/doc/debian-policy/ch-controlfields.html policy::6::Package maintainer scripts and installation procedure::http://www.debian.org/doc/debian-policy/ch-maintainerscripts.html policy::7::Declaring relationships between packages::http://www.debian.org/doc/debian-policy/ch-relationships.html policy::8::Shared libraries::http://www.debian.org/doc/debian-policy/ch-sharedlibs.html policy::9::The Operating System::http://www.debian.org/doc/debian-policy/ch-opersys.html policy::10::Files::http://www.debian.org/doc/debian-policy/ch-files.html policy::11::Customized programs::http://www.debian.org/doc/debian-policy/ch-customized-programs.html policy::12::Documentation::http://www.debian.org/doc/debian-policy/ch-docs.html policy::A::Introduction and scope of these appendices::http://www.debian.org/doc/debian-policy/ap-pkg-scope.html policy::B::Binary packages (from old Packaging Manual)::http://www.debian.org/doc/debian-policy/ap-pkg-binarypkg.html policy::C::Source packages (from old Packaging Manual)::http://www.debian.org/doc/debian-policy/ap-pkg-sourcepkg.html policy::D::Control files and their fields (from old Packaging Manual)::http://www.debian.org/doc/debian-policy/ap-pkg-controlfields.html policy::E::Configuration file handling (from old Packaging Manual)::http://www.debian.org/doc/debian-policy/ap-pkg-conffiles.html policy::F::Alternative versions of an interface - update-alternatives (from old Packaging Manual)::http://www.debian.org/doc/debian-policy/ap-pkg-alternatives.html policy::G::Diversions - overriding a package's version of a file (from old Packaging Manual)::http://www.debian.org/doc/debian-policy/ap-pkg-diversions.html policy::1.1::Scope::http://www.debian.org/doc/debian-policy/ch-scope.html#s1.1 policy::1.2::New versions of this document::http://www.debian.org/doc/debian-policy/ch-scope.html#s1.2 policy::1.3::Authors and Maintainers::http://www.debian.org/doc/debian-policy/ch-scope.html#s-authors policy::1.4::Related documents::http://www.debian.org/doc/debian-policy/ch-scope.html#s-related policy::1.5::Definitions::http://www.debian.org/doc/debian-policy/ch-scope.html#s-definitions policy::2.1::The Debian Free Software Guidelines::http://www.debian.org/doc/debian-policy/ch-archive.html#s-dfsg policy::2.2::Archive areas::http://www.debian.org/doc/debian-policy/ch-archive.html#s-sections policy::2.3::Copyright considerations::http://www.debian.org/doc/debian-policy/ch-archive.html#s-pkgcopyright policy::2.4::Sections::http://www.debian.org/doc/debian-policy/ch-archive.html#s-subsections policy::2.5::Priorities::http://www.debian.org/doc/debian-policy/ch-archive.html#s-priorities policy::3.1::The package name::http://www.debian.org/doc/debian-policy/ch-binary.html#s3.1 policy::3.2::The version of a package::http://www.debian.org/doc/debian-policy/ch-binary.html#s-versions policy::3.3::The maintainer of a package::http://www.debian.org/doc/debian-policy/ch-binary.html#s-maintainer policy::3.4::The description of a package::http://www.debian.org/doc/debian-policy/ch-binary.html#s-descriptions policy::3.5::Dependencies::http://www.debian.org/doc/debian-policy/ch-binary.html#s-dependencies policy::3.6::Virtual packages::http://www.debian.org/doc/debian-policy/ch-binary.html#s-virtual_pkg policy::3.7::Base system::http://www.debian.org/doc/debian-policy/ch-binary.html#s3.7 policy::3.8::Essential packages::http://www.debian.org/doc/debian-policy/ch-binary.html#s3.8 policy::3.9::Maintainer Scripts::http://www.debian.org/doc/debian-policy/ch-binary.html#s-maintscripts policy::4.1::Standards conformance::http://www.debian.org/doc/debian-policy/ch-source.html#s-standardsversion policy::4.2::Package relationships::http://www.debian.org/doc/debian-policy/ch-source.html#s-pkg-relations policy::4.3::Changes to the upstream sources::http://www.debian.org/doc/debian-policy/ch-source.html#s4.3 policy::4.4::Debian changelog: debian/changelog::http://www.debian.org/doc/debian-policy/ch-source.html#s-dpkgchangelog policy::4.5::Copyright: debian/copyright::http://www.debian.org/doc/debian-policy/ch-source.html#s-dpkgcopyright policy::4.6::Error trapping in makefiles::http://www.debian.org/doc/debian-policy/ch-source.html#s4.6 policy::4.7::Time Stamps::http://www.debian.org/doc/debian-policy/ch-source.html#s-timestamps policy::4.8::Restrictions on objects in source packages::http://www.debian.org/doc/debian-policy/ch-source.html#s-restrictions policy::4.9::Main building script: debian/rules::http://www.debian.org/doc/debian-policy/ch-source.html#s-debianrules policy::4.10::Variable substitutions: debian/substvars::http://www.debian.org/doc/debian-policy/ch-source.html#s-substvars policy::4.11::Optional upstream source location: debian/watch::http://www.debian.org/doc/debian-policy/ch-source.html#s-debianwatch policy::4.12::Generated files list: debian/files::http://www.debian.org/doc/debian-policy/ch-source.html#s-debianfiles policy::4.13::Convenience copies of code::http://www.debian.org/doc/debian-policy/ch-source.html#s-embeddedfiles policy::4.14::Source package handling: debian/README.source::http://www.debian.org/doc/debian-policy/ch-source.html#s-readmesource policy::5.1::Syntax of control files::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-controlsyntax policy::5.2::Source package control files -- debian/control::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-sourcecontrolfiles policy::5.3::Binary package control files -- DEBIAN/control::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-binarycontrolfiles policy::5.4::Debian source control files -- .dsc::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-debiansourcecontrolfiles policy::5.5::Debian changes files -- .changes::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-debianchangesfiles policy::5.6::List of fields::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-controlfieldslist policy::5.7::User-defined fields::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s5.7 policy::5.8::Obsolete fields::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-obsolete-control-data-fields policy::6.1::Introduction to package maintainer scripts::http://www.debian.org/doc/debian-policy/ch-maintainerscripts.html#s6.1 policy::6.2::Maintainer scripts idempotency::http://www.debian.org/doc/debian-policy/ch-maintainerscripts.html#s-idempotency policy::6.3::Controlling terminal for maintainer scripts::http://www.debian.org/doc/debian-policy/ch-maintainerscripts.html#s-controllingterminal policy::6.4::Exit status::http://www.debian.org/doc/debian-policy/ch-maintainerscripts.html#s-exitstatus policy::6.5::Summary of ways maintainer scripts are called::http://www.debian.org/doc/debian-policy/ch-maintainerscripts.html#s-mscriptsinstact policy::6.6::Details of unpack phase of installation or upgrade::http://www.debian.org/doc/debian-policy/ch-maintainerscripts.html#s-unpackphase policy::6.7::Details of configuration::http://www.debian.org/doc/debian-policy/ch-maintainerscripts.html#s-configdetails policy::6.8::Details of removal and/or configuration purging::http://www.debian.org/doc/debian-policy/ch-maintainerscripts.html#s-removedetails policy::7.1::Syntax of relationship fields::http://www.debian.org/doc/debian-policy/ch-relationships.html#s-depsyntax policy::7.2::Binary Dependencies - Depends, Recommends, Suggests, Enhances, Pre-Depends::http://www.debian.org/doc/debian-policy/ch-relationships.html#s-binarydeps policy::7.3::Packages which break other packages - Breaks::http://www.debian.org/doc/debian-policy/ch-relationships.html#s-breaks policy::7.4::Conflicting binary packages - Conflicts::http://www.debian.org/doc/debian-policy/ch-relationships.html#s-conflicts policy::7.5::Virtual packages - Provides::http://www.debian.org/doc/debian-policy/ch-relationships.html#s-virtual policy::7.6::Overwriting files and replacing packages - Replaces::http://www.debian.org/doc/debian-policy/ch-relationships.html#s-replaces policy::7.7::Relationships between source and binary packages - Build-Depends, Build-Depends-Indep, Build-Conflicts, Build-Conflicts-Indep::http://www.debian.org/doc/debian-policy/ch-relationships.html#s-sourcebinarydeps policy::7.8::Additional source packages used to build the binary - Built-Using::http://www.debian.org/doc/debian-policy/ch-relationships.html#s-built-using policy::8.1::Run-time shared libraries::http://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-sharedlibs-runtime policy::8.2::Shared library support files::http://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-sharedlibs-support-files policy::8.3::Static libraries::http://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-sharedlibs-static policy::8.4::Development files::http://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-sharedlibs-dev policy::8.5::Dependencies between the packages of the same library::http://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-sharedlibs-intradeps policy::8.6::Dependencies between the library and other packages::http://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-sharedlibs-depends policy::9.1::File system hierarchy::http://www.debian.org/doc/debian-policy/ch-opersys.html#s9.1 policy::9.2::Users and groups::http://www.debian.org/doc/debian-policy/ch-opersys.html#s9.2 policy::9.3::System run levels and init.d scripts::http://www.debian.org/doc/debian-policy/ch-opersys.html#s-sysvinit policy::9.4::Console messages from init.d scripts::http://www.debian.org/doc/debian-policy/ch-opersys.html#s9.4 policy::9.5::Cron jobs::http://www.debian.org/doc/debian-policy/ch-opersys.html#s-cron-jobs policy::9.6::Menus::http://www.debian.org/doc/debian-policy/ch-opersys.html#s-menus policy::9.7::Multimedia handlers::http://www.debian.org/doc/debian-policy/ch-opersys.html#s-mime policy::9.8::Keyboard configuration::http://www.debian.org/doc/debian-policy/ch-opersys.html#s9.8 policy::9.9::Environment variables::http://www.debian.org/doc/debian-policy/ch-opersys.html#s9.9 policy::9.10::Registering Documents using doc-base::http://www.debian.org/doc/debian-policy/ch-opersys.html#s-doc-base policy::9.11::Alternate init systems::http://www.debian.org/doc/debian-policy/ch-opersys.html#s-alternateinit policy::10.1::Binaries::http://www.debian.org/doc/debian-policy/ch-files.html#s-binaries policy::10.2::Libraries::http://www.debian.org/doc/debian-policy/ch-files.html#s-libraries policy::10.3::Shared libraries::http://www.debian.org/doc/debian-policy/ch-files.html#s10.3 policy::10.4::Scripts::http://www.debian.org/doc/debian-policy/ch-files.html#s-scripts policy::10.5::Symbolic links::http://www.debian.org/doc/debian-policy/ch-files.html#s10.5 policy::10.6::Device files::http://www.debian.org/doc/debian-policy/ch-files.html#s10.6 policy::10.7::Configuration files::http://www.debian.org/doc/debian-policy/ch-files.html#s-config-files policy::10.8::Log files::http://www.debian.org/doc/debian-policy/ch-files.html#s10.8 policy::10.9::Permissions and owners::http://www.debian.org/doc/debian-policy/ch-files.html#s-permissions-owners policy::10.10::File names::http://www.debian.org/doc/debian-policy/ch-files.html#s-filenames policy::11.1::Architecture specification strings::http://www.debian.org/doc/debian-policy/ch-customized-programs.html#s-arch-spec policy::11.2::Daemons::http://www.debian.org/doc/debian-policy/ch-customized-programs.html#s11.2 policy::11.3::Using pseudo-ttys and modifying wtmp, utmp and lastlog::http://www.debian.org/doc/debian-policy/ch-customized-programs.html#s11.3 policy::11.4::Editors and pagers::http://www.debian.org/doc/debian-policy/ch-customized-programs.html#s11.4 policy::11.5::Web servers and applications::http://www.debian.org/doc/debian-policy/ch-customized-programs.html#s-web-appl policy::11.6::Mail transport, delivery and user agents::http://www.debian.org/doc/debian-policy/ch-customized-programs.html#s-mail-transport-agents policy::11.7::News system configuration::http://www.debian.org/doc/debian-policy/ch-customized-programs.html#s11.7 policy::11.8::Programs for the X Window System::http://www.debian.org/doc/debian-policy/ch-customized-programs.html#s11.8 policy::11.9::Perl programs and modules::http://www.debian.org/doc/debian-policy/ch-customized-programs.html#s-perl policy::11.10::Emacs lisp programs::http://www.debian.org/doc/debian-policy/ch-customized-programs.html#s-emacs policy::11.11::Games::http://www.debian.org/doc/debian-policy/ch-customized-programs.html#s11.11 policy::12.1::Manual pages::http://www.debian.org/doc/debian-policy/ch-docs.html#s12.1 policy::12.2::Info documents::http://www.debian.org/doc/debian-policy/ch-docs.html#s12.2 policy::12.3::Additional documentation::http://www.debian.org/doc/debian-policy/ch-docs.html#s12.3 policy::12.4::Preferred documentation formats::http://www.debian.org/doc/debian-policy/ch-docs.html#s12.4 policy::12.5::Copyright information::http://www.debian.org/doc/debian-policy/ch-docs.html#s-copyrightfile policy::12.6::Examples::http://www.debian.org/doc/debian-policy/ch-docs.html#s12.6 policy::12.7::Changelog files::http://www.debian.org/doc/debian-policy/ch-docs.html#s-changelogs policy::B.1::Creating package files - dpkg-deb::http://www.debian.org/doc/debian-policy/ap-pkg-binarypkg.html#s-pkg-bincreating policy::B.2::Package control information files::http://www.debian.org/doc/debian-policy/ap-pkg-binarypkg.html#s-pkg-controlarea policy::B.3::The main control information file: control::http://www.debian.org/doc/debian-policy/ap-pkg-binarypkg.html#s-pkg-controlfile policy::B.4::Time Stamps::http://www.debian.org/doc/debian-policy/ap-pkg-binarypkg.html#sB.4 policy::C.1::Tools for processing source packages::http://www.debian.org/doc/debian-policy/ap-pkg-sourcepkg.html#s-pkg-sourcetools policy::C.2::The Debian package source tree::http://www.debian.org/doc/debian-policy/ap-pkg-sourcepkg.html#s-pkg-sourcetree policy::C.3::Source packages as archives::http://www.debian.org/doc/debian-policy/ap-pkg-sourcepkg.html#s-pkg-sourcearchives policy::C.4::Unpacking a Debian source package without dpkg-source::http://www.debian.org/doc/debian-policy/ap-pkg-sourcepkg.html#sC.4 policy::D.1::Syntax of control files::http://www.debian.org/doc/debian-policy/ap-pkg-controlfields.html#sD.1 policy::D.2::List of fields::http://www.debian.org/doc/debian-policy/ap-pkg-controlfields.html#sD.2 policy::E.1::Automatic handling of configuration files by dpkg::http://www.debian.org/doc/debian-policy/ap-pkg-conffiles.html#sE.1 policy::E.2::Fully-featured maintainer script configuration handling::http://www.debian.org/doc/debian-policy/ap-pkg-conffiles.html#sE.2 policy::2.2.1::The main archive area::http://www.debian.org/doc/debian-policy/ch-archive.html#s-main policy::2.2.2::The contrib archive area::http://www.debian.org/doc/debian-policy/ch-archive.html#s-contrib policy::2.2.3::The non-free archive area::http://www.debian.org/doc/debian-policy/ch-archive.html#s-non-free policy::3.2.1::Version numbers based on dates::http://www.debian.org/doc/debian-policy/ch-binary.html#s3.2.1 policy::3.4.1::The single line synopsis::http://www.debian.org/doc/debian-policy/ch-binary.html#s-synopsis policy::3.4.2::The extended description::http://www.debian.org/doc/debian-policy/ch-binary.html#s-extendeddesc policy::3.9.1::Prompting in maintainer scripts::http://www.debian.org/doc/debian-policy/ch-binary.html#s-maintscriptprompt policy::4.9.1::debian/rules and DEB_BUILD_OPTIONS::http://www.debian.org/doc/debian-policy/ch-source.html#s-debianrules-options policy::5.6.1::Source::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Source policy::5.6.2::Maintainer::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Maintainer policy::5.6.3::Uploaders::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Uploaders policy::5.6.4::Changed-By::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Changed-By policy::5.6.5::Section::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Section policy::5.6.6::Priority::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Priority policy::5.6.7::Package::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Package policy::5.6.8::Architecture::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Architecture policy::5.6.9::Essential::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Essential policy::5.6.10::Package interrelationship fields: Depends, Pre-Depends, Recommends, Suggests, Breaks, Conflicts, Provides, Replaces, Enhances::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s5.6.10 policy::5.6.11::Standards-Version::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Standards-Version policy::5.6.12::Version::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version policy::5.6.13::Description::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description policy::5.6.14::Distribution::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Distribution policy::5.6.15::Date::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Date policy::5.6.16::Format::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Format policy::5.6.17::Urgency::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Urgency policy::5.6.18::Changes::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Changes policy::5.6.19::Binary::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Binary policy::5.6.20::Installed-Size::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Installed-Size policy::5.6.21::Files::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Files policy::5.6.22::Closes::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Closes policy::5.6.23::Homepage::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Homepage policy::5.6.24::Checksums-Sha1 and Checksums-Sha256::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Checksums policy::5.6.25::DM-Upload-Allowed::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s5.6.25 policy::5.6.26::Version Control System (VCS) fields::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-VCS-fields policy::5.6.27::Package-List::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Package-List policy::5.6.28::Package-Type::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Package-Type policy::5.6.29::Dgit::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Dgit policy::5.8.1::DM-Upload-Allowed::http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-DM-Upload-Allowed policy::7.6.1::Overwriting files in other packages::http://www.debian.org/doc/debian-policy/ch-relationships.html#s7.6.1 policy::7.6.2::Replacing whole packages, forcing their removal::http://www.debian.org/doc/debian-policy/ch-relationships.html#s7.6.2 policy::8.1.1::ldconfig::http://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-ldconfig policy::8.6.1::Generating dependencies on shared libraries::http://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-dpkg-shlibdeps policy::8.6.2::Shared library ABI changes::http://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-sharedlibs-updates policy::8.6.3::The symbols system::http://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-sharedlibs-symbols policy::8.6.3.1::The symbols files present on the system::http://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-symbols-paths policy::8.6.3.2::The symbols File Format::http://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-symbols policy::8.6.3.3::Providing a symbols file::http://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-providing-symbols policy::8.6.4::The shlibs system::http://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-sharedlibs-shlibdeps policy::8.6.4.1::The shlibs files present on the system::http://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-shlibs-paths policy::8.6.4.2::The shlibs File Format::http://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s-shlibs policy::8.6.4.3::Providing a shlibs file::http://www.debian.org/doc/debian-policy/ch-sharedlibs.html#s8.6.4.3 policy::9.1.1::File System Structure::http://www.debian.org/doc/debian-policy/ch-opersys.html#s-fhs policy::9.1.2::Site-specific programs::http://www.debian.org/doc/debian-policy/ch-opersys.html#s9.1.2 policy::9.1.3::The system-wide mail directory::http://www.debian.org/doc/debian-policy/ch-opersys.html#s9.1.3 policy::9.1.4::/run and /run/lock::http://www.debian.org/doc/debian-policy/ch-opersys.html#s-fhs-run policy::9.2.1::Introduction::http://www.debian.org/doc/debian-policy/ch-opersys.html#s9.2.1 policy::9.2.2::UID and GID classes::http://www.debian.org/doc/debian-policy/ch-opersys.html#s9.2.2 policy::9.3.1::Introduction::http://www.debian.org/doc/debian-policy/ch-opersys.html#s-/etc/init.d policy::9.3.2::Writing the scripts::http://www.debian.org/doc/debian-policy/ch-opersys.html#s-writing-init policy::9.3.3::Interfacing with the initscript system::http://www.debian.org/doc/debian-policy/ch-opersys.html#s9.3.3 policy::9.3.3.1::Managing the links::http://www.debian.org/doc/debian-policy/ch-opersys.html#s9.3.3.1 policy::9.3.3.2::Running initscripts::http://www.debian.org/doc/debian-policy/ch-opersys.html#s9.3.3.2 policy::9.3.4::Boot-time initialization::http://www.debian.org/doc/debian-policy/ch-opersys.html#s9.3.4 policy::9.3.5::Example::http://www.debian.org/doc/debian-policy/ch-opersys.html#s9.3.5 policy::9.5.1::Cron job file names::http://www.debian.org/doc/debian-policy/ch-opersys.html#s-cron-files policy::9.11.1::Event-based boot with upstart::http://www.debian.org/doc/debian-policy/ch-opersys.html#s-upstart policy::10.7.1::Definitions::http://www.debian.org/doc/debian-policy/ch-files.html#s10.7.1 policy::10.7.2::Location::http://www.debian.org/doc/debian-policy/ch-files.html#s10.7.2 policy::10.7.3::Behavior::http://www.debian.org/doc/debian-policy/ch-files.html#s10.7.3 policy::10.7.4::Sharing configuration files::http://www.debian.org/doc/debian-policy/ch-files.html#s10.7.4 policy::10.7.5::User configuration files ("dotfiles")::http://www.debian.org/doc/debian-policy/ch-files.html#s10.7.5 policy::10.9.1::The use of dpkg-statoverride::http://www.debian.org/doc/debian-policy/ch-files.html#s10.9.1 policy::11.1.1::Architecture wildcards::http://www.debian.org/doc/debian-policy/ch-customized-programs.html#s-arch-wildcard-spec policy::11.8.1::Providing X support and package priorities::http://www.debian.org/doc/debian-policy/ch-customized-programs.html#s11.8.1 policy::11.8.2::Packages providing an X server::http://www.debian.org/doc/debian-policy/ch-customized-programs.html#s11.8.2 policy::11.8.3::Packages providing a terminal emulator::http://www.debian.org/doc/debian-policy/ch-customized-programs.html#s11.8.3 policy::11.8.4::Packages providing a window manager::http://www.debian.org/doc/debian-policy/ch-customized-programs.html#s11.8.4 policy::11.8.5::Packages providing fonts::http://www.debian.org/doc/debian-policy/ch-customized-programs.html#s11.8.5 policy::11.8.6::Application defaults files::http://www.debian.org/doc/debian-policy/ch-customized-programs.html#s-appdefaults policy::11.8.7::Installation directory issues::http://www.debian.org/doc/debian-policy/ch-customized-programs.html#s11.8.7 policy::12.5.1::Machine-readable copyright information::http://www.debian.org/doc/debian-policy/ch-docs.html#s-copyrightformat policy::C.1.1::dpkg-source - packs and unpacks Debian source packages::http://www.debian.org/doc/debian-policy/ap-pkg-sourcepkg.html#s-pkg-dpkg-source policy::C.1.2::dpkg-buildpackage - overall package-building control script::http://www.debian.org/doc/debian-policy/ap-pkg-sourcepkg.html#s-pkg-dpkg-buildpackage policy::C.1.3::dpkg-gencontrol - generates binary package control files::http://www.debian.org/doc/debian-policy/ap-pkg-sourcepkg.html#s-pkg-dpkg-gencontrol policy::C.1.4::dpkg-shlibdeps - calculates shared library dependencies::http://www.debian.org/doc/debian-policy/ap-pkg-sourcepkg.html#s-pkg-dpkg-shlibdeps policy::C.1.5::dpkg-distaddfile - adds a file to debian/files::http://www.debian.org/doc/debian-policy/ap-pkg-sourcepkg.html#s-pkg-dpkg-distaddfile policy::C.1.6::dpkg-genchanges - generates a .changes upload control file::http://www.debian.org/doc/debian-policy/ap-pkg-sourcepkg.html#s-pkg-dpkg-genchanges policy::C.1.7::dpkg-parsechangelog - produces parsed representation of a changelog::http://www.debian.org/doc/debian-policy/ap-pkg-sourcepkg.html#s-pkg-dpkg-parsechangelog policy::C.1.8::dpkg-architecture - information about the build and host system::http://www.debian.org/doc/debian-policy/ap-pkg-sourcepkg.html#s-pkg-dpkg-architecture policy::C.2.1::debian/rules - the main building script::http://www.debian.org/doc/debian-policy/ap-pkg-sourcepkg.html#s-pkg-debianrules policy::C.2.2::debian/substvars and variable substitutions::http://www.debian.org/doc/debian-policy/ap-pkg-sourcepkg.html#s-pkg-srcsubstvars policy::C.2.3::debian/files::http://www.debian.org/doc/debian-policy/ap-pkg-sourcepkg.html#sC.2.3 policy::C.2.4::debian/tmp::http://www.debian.org/doc/debian-policy/ap-pkg-sourcepkg.html#sC.2.4 policy::C.4.1::Restrictions on objects in source packages::http://www.debian.org/doc/debian-policy/ap-pkg-sourcepkg.html#sC.4.1 policy::D.2.1::Filename and MSDOS-Filename::http://www.debian.org/doc/debian-policy/ap-pkg-controlfields.html#s-pkg-f-Filename policy::D.2.2::Size and MD5sum::http://www.debian.org/doc/debian-policy/ap-pkg-controlfields.html#s-pkg-f-Size policy::D.2.3::Status::http://www.debian.org/doc/debian-policy/ap-pkg-controlfields.html#s-pkg-f-Status policy::D.2.4::Config-Version::http://www.debian.org/doc/debian-policy/ap-pkg-controlfields.html#s-pkg-f-Config-Version policy::D.2.5::Conffiles::http://www.debian.org/doc/debian-policy/ap-pkg-controlfields.html#s-pkg-f-Conffiles policy::D.2.6::Obsolete fields::http://www.debian.org/doc/debian-policy/ap-pkg-controlfields.html#sD.2.6 python-policy::::Debian Python Policy::http://www.debian.org/doc/packaging-manuals/python-policy/ python-policy::1::Python Packaging::http://www.debian.org/doc/packaging-manuals/python-policy/ch-python.html python-policy::2::Packaged Modules::http://www.debian.org/doc/packaging-manuals/python-policy/ch-module_packages.html python-policy::3::Python Programs::http://www.debian.org/doc/packaging-manuals/python-policy/ch-programs.html python-policy::4::Programs Embedding Python::http://www.debian.org/doc/packaging-manuals/python-policy/ch-embed.html python-policy::5::Interaction with Locally Installed Python Versions::http://www.debian.org/doc/packaging-manuals/python-policy/ch-other.html python-policy::A::Build Dependencies::http://www.debian.org/doc/packaging-manuals/python-policy/ap-build_dependencies.html python-policy::B::Packaging Tools::http://www.debian.org/doc/packaging-manuals/python-policy/ap-packaging_tools.html python-policy::C::Upgrade Procedure::http://www.debian.org/doc/packaging-manuals/python-policy/ap-upgrade.html python-policy::1.1::Versions::http://www.debian.org/doc/packaging-manuals/python-policy/ch-python.html#s-versions python-policy::1.2::Main packages::http://www.debian.org/doc/packaging-manuals/python-policy/ch-python.html#s-base python-policy::1.3::Minimal packages::http://www.debian.org/doc/packaging-manuals/python-policy/ch-python.html#s-minimal python-policy::1.4::Python Interpreter::http://www.debian.org/doc/packaging-manuals/python-policy/ch-python.html#s-interpreter python-policy::1.5::Module Path::http://www.debian.org/doc/packaging-manuals/python-policy/ch-python.html#s-paths python-policy::1.6::Hooks for updates to installed runtimes::http://www.debian.org/doc/packaging-manuals/python-policy/ch-python.html#s-runtimes_hooks python-policy::1.7::Documentation::http://www.debian.org/doc/packaging-manuals/python-policy/ch-python.html#s-docs python-policy::2.1::Types of Python Modules::http://www.debian.org/doc/packaging-manuals/python-policy/ch-module_packages.html#s2.1 python-policy::2.2::Module Package Names::http://www.debian.org/doc/packaging-manuals/python-policy/ch-module_packages.html#s-package_names python-policy::2.3::Specifying Supported Versions::http://www.debian.org/doc/packaging-manuals/python-policy/ch-module_packages.html#s-specifying_versions python-policy::2.4::Dependencies::http://www.debian.org/doc/packaging-manuals/python-policy/ch-module_packages.html#s-dependencies python-policy::2.5::Provides::http://www.debian.org/doc/packaging-manuals/python-policy/ch-module_packages.html#s-provides python-policy::2.6::Modules Byte-Compilation::http://www.debian.org/doc/packaging-manuals/python-policy/ch-module_packages.html#s-byte_compilation python-policy::3.1::Programs using the default python::http://www.debian.org/doc/packaging-manuals/python-policy/ch-programs.html#s-version_indep_progs python-policy::3.2::Programs Using a Particular Python Version::http://www.debian.org/doc/packaging-manuals/python-policy/ch-programs.html#s-version_dep_progs python-policy::4.1::Building Embedded Programs::http://www.debian.org/doc/packaging-manuals/python-policy/ch-embed.html#s-build_embedded python-policy::4.2::Embedded Python Dependencies::http://www.debian.org/doc/packaging-manuals/python-policy/ch-embed.html#s-embedded_deps python-policy::B.1::distutils::http://www.debian.org/doc/packaging-manuals/python-policy/ap-packaging_tools.html#s-distutils python-policy::B.2::python-support (deprecated)::http://www.debian.org/doc/packaging-manuals/python-policy/ap-packaging_tools.html#s-pysupport python-policy::B.3::python-central (deprecated)::http://www.debian.org/doc/packaging-manuals/python-policy/ap-packaging_tools.html#s-pycentral python-policy::B.4::CDBS::http://www.debian.org/doc/packaging-manuals/python-policy/ap-packaging_tools.html#s-cdbs python-policy::B.5::dh_python2 and dh_python3::http://www.debian.org/doc/packaging-manuals/python-policy/ap-packaging_tools.html#s-dh_python2_3 python-policy::1.4.1::Interpreter Name::http://www.debian.org/doc/packaging-manuals/python-policy/ch-python.html#s-interpreter_name python-policy::1.4.2::Interpreter Location::http://www.debian.org/doc/packaging-manuals/python-policy/ch-python.html#s-interpreter_loc python-policy::3.1.1::Programs Shipping Private Modules::http://www.debian.org/doc/packaging-manuals/python-policy/ch-programs.html#s-current_version_progs vim-policy::::Debian Packaging Policy for Vim::http://pkg-vim.alioth.debian.org/vim-policy.html/ vim-policy::1::Vim Addon Packaging in a Nutshell::http://pkg-vim.alioth.debian.org/vim-policy.html/index.html#nutshell vim-policy::2::Vim Packaging::http://pkg-vim.alioth.debian.org/vim-policy.html/x73.html vim-policy::3::Packaging of Vim Addons::http://pkg-vim.alioth.debian.org/vim-policy.html/x113.html vim-policy::3.1::Addon Structure::http://pkg-vim.alioth.debian.org/vim-policy.html/x113.html#addon-structure vim-policy::3.2::Addon Packages::http://pkg-vim.alioth.debian.org/vim-policy.html/x113.html#addon-packages vim-policy::3.3::Registry Entries::http://pkg-vim.alioth.debian.org/vim-policy.html/x113.html#registry-entry vim-policy::4::Tools::http://pkg-vim.alioth.debian.org/vim-policy.html/x221.html �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/init.d/������������������������������������������������������������������0000775�0000000�0000000�00000000000�12313551044�013550� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/init.d/virtual_facilities������������������������������������������������0000664�0000000�0000000�00000000337�12313551044�017360� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# The list of known virtual facilities that init scripts may depend on. # # Last updated: 2012-02-19 $all $local_fs $mail-transport-agent $named $network $portmap $remote_fs $syslog $time $x-display-manager $x-font-server �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/common/������������������������������������������������������������������0000775�0000000�0000000�00000000000�12313550275�013660� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/common/architectures�����������������������������������������������������0000664�0000000�0000000�00000025137�12313550275�016460� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# List of known architectures as provided by dpkg-architecture # (excluding "all" and "any", which are handled specially) # Last updated: 2014-01-14 # With: Debian dpkg-architecture version 1.17.5. # This file was auto-generated by private/refresh-archs alpha || linux alpha amd64 || linux amd64 arm || linux arm arm64 || linux arm64 armeb || linux armeb armel || linux arm armhf || linux arm avr32 || linux avr32 darwin-alpha || darwin alpha darwin-amd64 || darwin amd64 darwin-arm || darwin arm darwin-arm64 || darwin arm64 darwin-armeb || darwin armeb darwin-avr32 || darwin avr32 darwin-hppa || darwin hppa darwin-i386 || darwin i386 darwin-ia64 || darwin ia64 darwin-m32r || darwin m32r darwin-m68k || darwin m68k darwin-mips || darwin mips darwin-mips64 || darwin mips64 darwin-mips64el || darwin mips64el darwin-mipsel || darwin mipsel darwin-powerpc || darwin powerpc darwin-ppc64 || darwin ppc64 darwin-ppc64el || darwin ppc64el darwin-s390 || darwin s390 darwin-s390x || darwin s390x darwin-sh3 || darwin sh3 darwin-sh3eb || darwin sh3eb darwin-sh4 || darwin sh4 darwin-sh4eb || darwin sh4eb darwin-sparc || darwin sparc darwin-sparc64 || darwin sparc64 freebsd-alpha || freebsd alpha freebsd-amd64 || freebsd amd64 freebsd-arm || freebsd arm freebsd-arm64 || freebsd arm64 freebsd-armeb || freebsd armeb freebsd-avr32 || freebsd avr32 freebsd-hppa || freebsd hppa freebsd-i386 || freebsd i386 freebsd-ia64 || freebsd ia64 freebsd-m32r || freebsd m32r freebsd-m68k || freebsd m68k freebsd-mips || freebsd mips freebsd-mips64 || freebsd mips64 freebsd-mips64el || freebsd mips64el freebsd-mipsel || freebsd mipsel freebsd-powerpc || freebsd powerpc freebsd-ppc64 || freebsd ppc64 freebsd-ppc64el || freebsd ppc64el freebsd-s390 || freebsd s390 freebsd-s390x || freebsd s390x freebsd-sh3 || freebsd sh3 freebsd-sh3eb || freebsd sh3eb freebsd-sh4 || freebsd sh4 freebsd-sh4eb || freebsd sh4eb freebsd-sparc || freebsd sparc freebsd-sparc64 || freebsd sparc64 hppa || linux hppa hurd-alpha || hurd alpha hurd-amd64 || hurd amd64 hurd-arm || hurd arm hurd-arm64 || hurd arm64 hurd-armeb || hurd armeb hurd-avr32 || hurd avr32 hurd-hppa || hurd hppa hurd-i386 || hurd i386 hurd-ia64 || hurd ia64 hurd-m32r || hurd m32r hurd-m68k || hurd m68k hurd-mips || hurd mips hurd-mips64 || hurd mips64 hurd-mips64el || hurd mips64el hurd-mipsel || hurd mipsel hurd-powerpc || hurd powerpc hurd-ppc64 || hurd ppc64 hurd-ppc64el || hurd ppc64el hurd-s390 || hurd s390 hurd-s390x || hurd s390x hurd-sh3 || hurd sh3 hurd-sh3eb || hurd sh3eb hurd-sh4 || hurd sh4 hurd-sh4eb || hurd sh4eb hurd-sparc || hurd sparc hurd-sparc64 || hurd sparc64 i386 || linux i386 ia64 || linux ia64 kfreebsd-alpha || kfreebsd alpha kfreebsd-amd64 || kfreebsd amd64 kfreebsd-arm || kfreebsd arm kfreebsd-arm64 || kfreebsd arm64 kfreebsd-armeb || kfreebsd armeb kfreebsd-avr32 || kfreebsd avr32 kfreebsd-hppa || kfreebsd hppa kfreebsd-i386 || kfreebsd i386 kfreebsd-ia64 || kfreebsd ia64 kfreebsd-m32r || kfreebsd m32r kfreebsd-m68k || kfreebsd m68k kfreebsd-mips || kfreebsd mips kfreebsd-mips64 || kfreebsd mips64 kfreebsd-mips64el || kfreebsd mips64el kfreebsd-mipsel || kfreebsd mipsel kfreebsd-powerpc || kfreebsd powerpc kfreebsd-ppc64 || kfreebsd ppc64 kfreebsd-ppc64el || kfreebsd ppc64el kfreebsd-s390 || kfreebsd s390 kfreebsd-s390x || kfreebsd s390x kfreebsd-sh3 || kfreebsd sh3 kfreebsd-sh3eb || kfreebsd sh3eb kfreebsd-sh4 || kfreebsd sh4 kfreebsd-sh4eb || kfreebsd sh4eb kfreebsd-sparc || kfreebsd sparc kfreebsd-sparc64 || kfreebsd sparc64 knetbsd-alpha || knetbsd alpha knetbsd-amd64 || knetbsd amd64 knetbsd-arm || knetbsd arm knetbsd-arm64 || knetbsd arm64 knetbsd-armeb || knetbsd armeb knetbsd-avr32 || knetbsd avr32 knetbsd-hppa || knetbsd hppa knetbsd-i386 || knetbsd i386 knetbsd-ia64 || knetbsd ia64 knetbsd-m32r || knetbsd m32r knetbsd-m68k || knetbsd m68k knetbsd-mips || knetbsd mips knetbsd-mips64 || knetbsd mips64 knetbsd-mips64el || knetbsd mips64el knetbsd-mipsel || knetbsd mipsel knetbsd-powerpc || knetbsd powerpc knetbsd-ppc64 || knetbsd ppc64 knetbsd-ppc64el || knetbsd ppc64el knetbsd-s390 || knetbsd s390 knetbsd-s390x || knetbsd s390x knetbsd-sh3 || knetbsd sh3 knetbsd-sh3eb || knetbsd sh3eb knetbsd-sh4 || knetbsd sh4 knetbsd-sh4eb || knetbsd sh4eb knetbsd-sparc || knetbsd sparc knetbsd-sparc64 || knetbsd sparc64 kopensolaris-alpha || kopensolaris alpha kopensolaris-amd64 || kopensolaris amd64 kopensolaris-arm || kopensolaris arm kopensolaris-arm64 || kopensolaris arm64 kopensolaris-armeb || kopensolaris armeb kopensolaris-avr32 || kopensolaris avr32 kopensolaris-hppa || kopensolaris hppa kopensolaris-i386 || kopensolaris i386 kopensolaris-ia64 || kopensolaris ia64 kopensolaris-m32r || kopensolaris m32r kopensolaris-m68k || kopensolaris m68k kopensolaris-mips || kopensolaris mips kopensolaris-mips64 || kopensolaris mips64 kopensolaris-mips64el || kopensolaris mips64el kopensolaris-mipsel || kopensolaris mipsel kopensolaris-powerpc || kopensolaris powerpc kopensolaris-ppc64 || kopensolaris ppc64 kopensolaris-ppc64el || kopensolaris ppc64el kopensolaris-s390 || kopensolaris s390 kopensolaris-s390x || kopensolaris s390x kopensolaris-sh3 || kopensolaris sh3 kopensolaris-sh3eb || kopensolaris sh3eb kopensolaris-sh4 || kopensolaris sh4 kopensolaris-sh4eb || kopensolaris sh4eb kopensolaris-sparc || kopensolaris sparc kopensolaris-sparc64 || kopensolaris sparc64 lpia || linux i386 m32r || linux m32r m68k || linux m68k mint-m68k || mint m68k mips || linux mips mips64 || linux mips64 mips64el || linux mips64el mipsel || linux mipsel mipsn32 || linux mips64 mipsn32el || linux mips64el musl-linux-alpha || linux alpha musl-linux-amd64 || linux amd64 musl-linux-arm || linux arm musl-linux-arm64 || linux arm64 musl-linux-armeb || linux armeb musl-linux-armhf || linux arm musl-linux-avr32 || linux avr32 musl-linux-hppa || linux hppa musl-linux-i386 || linux i386 musl-linux-ia64 || linux ia64 musl-linux-m32r || linux m32r musl-linux-m68k || linux m68k musl-linux-mips || linux mips musl-linux-mips64 || linux mips64 musl-linux-mips64el || linux mips64el musl-linux-mipsel || linux mipsel musl-linux-powerpc || linux powerpc musl-linux-ppc64 || linux ppc64 musl-linux-ppc64el || linux ppc64el musl-linux-s390 || linux s390 musl-linux-s390x || linux s390x musl-linux-sh3 || linux sh3 musl-linux-sh3eb || linux sh3eb musl-linux-sh4 || linux sh4 musl-linux-sh4eb || linux sh4eb musl-linux-sparc || linux sparc musl-linux-sparc64 || linux sparc64 netbsd-alpha || netbsd alpha netbsd-amd64 || netbsd amd64 netbsd-arm || netbsd arm netbsd-arm64 || netbsd arm64 netbsd-armeb || netbsd armeb netbsd-avr32 || netbsd avr32 netbsd-hppa || netbsd hppa netbsd-i386 || netbsd i386 netbsd-ia64 || netbsd ia64 netbsd-m32r || netbsd m32r netbsd-m68k || netbsd m68k netbsd-mips || netbsd mips netbsd-mips64 || netbsd mips64 netbsd-mips64el || netbsd mips64el netbsd-mipsel || netbsd mipsel netbsd-powerpc || netbsd powerpc netbsd-ppc64 || netbsd ppc64 netbsd-ppc64el || netbsd ppc64el netbsd-s390 || netbsd s390 netbsd-s390x || netbsd s390x netbsd-sh3 || netbsd sh3 netbsd-sh3eb || netbsd sh3eb netbsd-sh4 || netbsd sh4 netbsd-sh4eb || netbsd sh4eb netbsd-sparc || netbsd sparc netbsd-sparc64 || netbsd sparc64 openbsd-alpha || openbsd alpha openbsd-amd64 || openbsd amd64 openbsd-arm || openbsd arm openbsd-arm64 || openbsd arm64 openbsd-armeb || openbsd armeb openbsd-avr32 || openbsd avr32 openbsd-hppa || openbsd hppa openbsd-i386 || openbsd i386 openbsd-ia64 || openbsd ia64 openbsd-m32r || openbsd m32r openbsd-m68k || openbsd m68k openbsd-mips || openbsd mips openbsd-mips64 || openbsd mips64 openbsd-mips64el || openbsd mips64el openbsd-mipsel || openbsd mipsel openbsd-powerpc || openbsd powerpc openbsd-ppc64 || openbsd ppc64 openbsd-ppc64el || openbsd ppc64el openbsd-s390 || openbsd s390 openbsd-s390x || openbsd s390x openbsd-sh3 || openbsd sh3 openbsd-sh3eb || openbsd sh3eb openbsd-sh4 || openbsd sh4 openbsd-sh4eb || openbsd sh4eb openbsd-sparc || openbsd sparc openbsd-sparc64 || openbsd sparc64 powerpc || linux powerpc powerpcspe || linux powerpc ppc64 || linux ppc64 ppc64el || linux ppc64el s390 || linux s390 s390x || linux s390x sh3 || linux sh3 sh3eb || linux sh3eb sh4 || linux sh4 sh4eb || linux sh4eb solaris-alpha || solaris alpha solaris-amd64 || solaris amd64 solaris-arm || solaris arm solaris-arm64 || solaris arm64 solaris-armeb || solaris armeb solaris-avr32 || solaris avr32 solaris-hppa || solaris hppa solaris-i386 || solaris i386 solaris-ia64 || solaris ia64 solaris-m32r || solaris m32r solaris-m68k || solaris m68k solaris-mips || solaris mips solaris-mips64 || solaris mips64 solaris-mips64el || solaris mips64el solaris-mipsel || solaris mipsel solaris-powerpc || solaris powerpc solaris-ppc64 || solaris ppc64 solaris-ppc64el || solaris ppc64el solaris-s390 || solaris s390 solaris-s390x || solaris s390x solaris-sh3 || solaris sh3 solaris-sh3eb || solaris sh3eb solaris-sh4 || solaris sh4 solaris-sh4eb || solaris sh4eb solaris-sparc || solaris sparc solaris-sparc64 || solaris sparc64 sparc || linux sparc sparc64 || linux sparc64 uclibc-linux-alpha || linux alpha uclibc-linux-amd64 || linux amd64 uclibc-linux-arm || linux arm uclibc-linux-arm64 || linux arm64 uclibc-linux-armeb || linux armeb uclibc-linux-armel || linux arm uclibc-linux-avr32 || linux avr32 uclibc-linux-hppa || linux hppa uclibc-linux-i386 || linux i386 uclibc-linux-ia64 || linux ia64 uclibc-linux-m32r || linux m32r uclibc-linux-m68k || linux m68k uclibc-linux-mips || linux mips uclibc-linux-mips64 || linux mips64 uclibc-linux-mips64el || linux mips64el uclibc-linux-mipsel || linux mipsel uclibc-linux-powerpc || linux powerpc uclibc-linux-ppc64 || linux ppc64 uclibc-linux-ppc64el || linux ppc64el uclibc-linux-s390 || linux s390 uclibc-linux-s390x || linux s390x uclibc-linux-sh3 || linux sh3 uclibc-linux-sh3eb || linux sh3eb uclibc-linux-sh4 || linux sh4 uclibc-linux-sh4eb || linux sh4eb uclibc-linux-sparc || linux sparc uclibc-linux-sparc64 || linux sparc64 uclinux-alpha || uclinux alpha uclinux-amd64 || uclinux amd64 uclinux-arm || uclinux arm uclinux-arm64 || uclinux arm64 uclinux-armeb || uclinux armeb uclinux-armel || uclinux arm uclinux-avr32 || uclinux avr32 uclinux-hppa || uclinux hppa uclinux-i386 || uclinux i386 uclinux-ia64 || uclinux ia64 uclinux-m32r || uclinux m32r uclinux-m68k || uclinux m68k uclinux-mips || uclinux mips uclinux-mips64 || uclinux mips64 uclinux-mips64el || uclinux mips64el uclinux-mipsel || uclinux mipsel uclinux-powerpc || uclinux powerpc uclinux-ppc64 || uclinux ppc64 uclinux-ppc64el || uclinux ppc64el uclinux-s390 || uclinux s390 uclinux-s390x || uclinux s390x uclinux-sh3 || uclinux sh3 uclinux-sh3eb || uclinux sh3eb uclinux-sh4 || uclinux sh4 uclinux-sh4eb || uclinux sh4eb uclinux-sparc || uclinux sparc uclinux-sparc64 || uclinux sparc64 x32 || linux amd64 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/common/priorities��������������������������������������������������������0000664�0000000�0000000�00000000562�12310413144�015765� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Manually maintained map of priorities # # It is used by checks/fields to validate the priority fields and # checks/group-checks to check policy §2.5. The numbers are used for # the latter (allowing a trivial <= comparison) # # Do not use a non-integer nor a false-value on the right-hand side. required = 5 important = 4 standard = 3 optional = 2 extra = 1 ����������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/common/multiarch-dirs����������������������������������������������������0000664�0000000�0000000�00000025231�12313550275�016535� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# List of "Multiarch dirs" relationships as provided by # dpkg-architecture - arch -> dir mapping # Last updated: 2014-01-14 # With: Debian dpkg-architecture version 1.17.5. # This file was auto-generated by private/refresh-archs alpha alpha-linux-gnu amd64 x86_64-linux-gnu arm arm-linux-gnu arm64 aarch64-linux-gnu armeb armeb-linux-gnu armel arm-linux-gnueabi armhf arm-linux-gnueabihf avr32 avr32-linux-gnu darwin-alpha alpha-darwin darwin-amd64 x86_64-darwin darwin-arm arm-darwin darwin-arm64 aarch64-darwin darwin-armeb armeb-darwin darwin-avr32 avr32-darwin darwin-hppa hppa-darwin darwin-i386 i386-darwin darwin-ia64 ia64-darwin darwin-m32r m32r-darwin darwin-m68k m68k-darwin darwin-mips mips-darwin darwin-mips64 mips64-darwin darwin-mips64el mips64el-darwin darwin-mipsel mipsel-darwin darwin-powerpc powerpc-darwin darwin-ppc64 powerpc64-darwin darwin-ppc64el powerpc64le-darwin darwin-s390 s390-darwin darwin-s390x s390x-darwin darwin-sh3 sh3-darwin darwin-sh3eb sh3eb-darwin darwin-sh4 sh4-darwin darwin-sh4eb sh4eb-darwin darwin-sparc sparc-darwin darwin-sparc64 sparc64-darwin freebsd-alpha alpha-freebsd freebsd-amd64 x86_64-freebsd freebsd-arm arm-freebsd freebsd-arm64 aarch64-freebsd freebsd-armeb armeb-freebsd freebsd-avr32 avr32-freebsd freebsd-hppa hppa-freebsd freebsd-i386 i386-freebsd freebsd-ia64 ia64-freebsd freebsd-m32r m32r-freebsd freebsd-m68k m68k-freebsd freebsd-mips mips-freebsd freebsd-mips64 mips64-freebsd freebsd-mips64el mips64el-freebsd freebsd-mipsel mipsel-freebsd freebsd-powerpc powerpc-freebsd freebsd-ppc64 powerpc64-freebsd freebsd-ppc64el powerpc64le-freebsd freebsd-s390 s390-freebsd freebsd-s390x s390x-freebsd freebsd-sh3 sh3-freebsd freebsd-sh3eb sh3eb-freebsd freebsd-sh4 sh4-freebsd freebsd-sh4eb sh4eb-freebsd freebsd-sparc sparc-freebsd freebsd-sparc64 sparc64-freebsd hppa hppa-linux-gnu hurd-alpha alpha-gnu hurd-amd64 x86_64-gnu hurd-arm arm-gnu hurd-arm64 aarch64-gnu hurd-armeb armeb-gnu hurd-avr32 avr32-gnu hurd-hppa hppa-gnu hurd-i386 i386-gnu hurd-ia64 ia64-gnu hurd-m32r m32r-gnu hurd-m68k m68k-gnu hurd-mips mips-gnu hurd-mips64 mips64-gnu hurd-mips64el mips64el-gnu hurd-mipsel mipsel-gnu hurd-powerpc powerpc-gnu hurd-ppc64 powerpc64-gnu hurd-ppc64el powerpc64le-gnu hurd-s390 s390-gnu hurd-s390x s390x-gnu hurd-sh3 sh3-gnu hurd-sh3eb sh3eb-gnu hurd-sh4 sh4-gnu hurd-sh4eb sh4eb-gnu hurd-sparc sparc-gnu hurd-sparc64 sparc64-gnu i386 i386-linux-gnu ia64 ia64-linux-gnu kfreebsd-alpha alpha-kfreebsd-gnu kfreebsd-amd64 x86_64-kfreebsd-gnu kfreebsd-arm arm-kfreebsd-gnu kfreebsd-arm64 aarch64-kfreebsd-gnu kfreebsd-armeb armeb-kfreebsd-gnu kfreebsd-avr32 avr32-kfreebsd-gnu kfreebsd-hppa hppa-kfreebsd-gnu kfreebsd-i386 i386-kfreebsd-gnu kfreebsd-ia64 ia64-kfreebsd-gnu kfreebsd-m32r m32r-kfreebsd-gnu kfreebsd-m68k m68k-kfreebsd-gnu kfreebsd-mips mips-kfreebsd-gnu kfreebsd-mips64 mips64-kfreebsd-gnu kfreebsd-mips64el mips64el-kfreebsd-gnu kfreebsd-mipsel mipsel-kfreebsd-gnu kfreebsd-powerpc powerpc-kfreebsd-gnu kfreebsd-ppc64 powerpc64-kfreebsd-gnu kfreebsd-ppc64el powerpc64le-kfreebsd-gnu kfreebsd-s390 s390-kfreebsd-gnu kfreebsd-s390x s390x-kfreebsd-gnu kfreebsd-sh3 sh3-kfreebsd-gnu kfreebsd-sh3eb sh3eb-kfreebsd-gnu kfreebsd-sh4 sh4-kfreebsd-gnu kfreebsd-sh4eb sh4eb-kfreebsd-gnu kfreebsd-sparc sparc-kfreebsd-gnu kfreebsd-sparc64 sparc64-kfreebsd-gnu knetbsd-alpha alpha-knetbsd-gnu knetbsd-amd64 x86_64-knetbsd-gnu knetbsd-arm arm-knetbsd-gnu knetbsd-arm64 aarch64-knetbsd-gnu knetbsd-armeb armeb-knetbsd-gnu knetbsd-avr32 avr32-knetbsd-gnu knetbsd-hppa hppa-knetbsd-gnu knetbsd-i386 i386-knetbsd-gnu knetbsd-ia64 ia64-knetbsd-gnu knetbsd-m32r m32r-knetbsd-gnu knetbsd-m68k m68k-knetbsd-gnu knetbsd-mips mips-knetbsd-gnu knetbsd-mips64 mips64-knetbsd-gnu knetbsd-mips64el mips64el-knetbsd-gnu knetbsd-mipsel mipsel-knetbsd-gnu knetbsd-powerpc powerpc-knetbsd-gnu knetbsd-ppc64 powerpc64-knetbsd-gnu knetbsd-ppc64el powerpc64le-knetbsd-gnu knetbsd-s390 s390-knetbsd-gnu knetbsd-s390x s390x-knetbsd-gnu knetbsd-sh3 sh3-knetbsd-gnu knetbsd-sh3eb sh3eb-knetbsd-gnu knetbsd-sh4 sh4-knetbsd-gnu knetbsd-sh4eb sh4eb-knetbsd-gnu knetbsd-sparc sparc-knetbsd-gnu knetbsd-sparc64 sparc64-knetbsd-gnu kopensolaris-alpha alpha-kopensolaris-gnu kopensolaris-amd64 x86_64-kopensolaris-gnu kopensolaris-arm arm-kopensolaris-gnu kopensolaris-arm64 aarch64-kopensolaris-gnu kopensolaris-armeb armeb-kopensolaris-gnu kopensolaris-avr32 avr32-kopensolaris-gnu kopensolaris-hppa hppa-kopensolaris-gnu kopensolaris-i386 i386-kopensolaris-gnu kopensolaris-ia64 ia64-kopensolaris-gnu kopensolaris-m32r m32r-kopensolaris-gnu kopensolaris-m68k m68k-kopensolaris-gnu kopensolaris-mips mips-kopensolaris-gnu kopensolaris-mips64 mips64-kopensolaris-gnu kopensolaris-mips64el mips64el-kopensolaris-gnu kopensolaris-mipsel mipsel-kopensolaris-gnu kopensolaris-powerpc powerpc-kopensolaris-gnu kopensolaris-ppc64 powerpc64-kopensolaris-gnu kopensolaris-ppc64el powerpc64le-kopensolaris-gnu kopensolaris-s390 s390-kopensolaris-gnu kopensolaris-s390x s390x-kopensolaris-gnu kopensolaris-sh3 sh3-kopensolaris-gnu kopensolaris-sh3eb sh3eb-kopensolaris-gnu kopensolaris-sh4 sh4-kopensolaris-gnu kopensolaris-sh4eb sh4eb-kopensolaris-gnu kopensolaris-sparc sparc-kopensolaris-gnu kopensolaris-sparc64 sparc64-kopensolaris-gnu lpia i386-linux-gnulp m32r m32r-linux-gnu m68k m68k-linux-gnu mint-m68k m68k-mint mips mips-linux-gnu mips64 mips64-linux-gnuabi64 mips64el mips64el-linux-gnuabi64 mipsel mipsel-linux-gnu mipsn32 mips64-linux-gnuabin32 mipsn32el mips64el-linux-gnuabin32 musl-linux-alpha alpha-linux-musl musl-linux-amd64 x86_64-linux-musl musl-linux-arm arm-linux-musl musl-linux-arm64 aarch64-linux-musl musl-linux-armeb armeb-linux-musl musl-linux-armhf arm-linux-musleabihf musl-linux-avr32 avr32-linux-musl musl-linux-hppa hppa-linux-musl musl-linux-i386 i386-linux-musl musl-linux-ia64 ia64-linux-musl musl-linux-m32r m32r-linux-musl musl-linux-m68k m68k-linux-musl musl-linux-mips mips-linux-musl musl-linux-mips64 mips64-linux-musl musl-linux-mips64el mips64el-linux-musl musl-linux-mipsel mipsel-linux-musl musl-linux-powerpc powerpc-linux-musl musl-linux-ppc64 powerpc64-linux-musl musl-linux-ppc64el powerpc64le-linux-musl musl-linux-s390 s390-linux-musl musl-linux-s390x s390x-linux-musl musl-linux-sh3 sh3-linux-musl musl-linux-sh3eb sh3eb-linux-musl musl-linux-sh4 sh4-linux-musl musl-linux-sh4eb sh4eb-linux-musl musl-linux-sparc sparc-linux-musl musl-linux-sparc64 sparc64-linux-musl netbsd-alpha alpha-netbsd netbsd-amd64 x86_64-netbsd netbsd-arm arm-netbsd netbsd-arm64 aarch64-netbsd netbsd-armeb armeb-netbsd netbsd-avr32 avr32-netbsd netbsd-hppa hppa-netbsd netbsd-i386 i386-netbsd netbsd-ia64 ia64-netbsd netbsd-m32r m32r-netbsd netbsd-m68k m68k-netbsd netbsd-mips mips-netbsd netbsd-mips64 mips64-netbsd netbsd-mips64el mips64el-netbsd netbsd-mipsel mipsel-netbsd netbsd-powerpc powerpc-netbsd netbsd-ppc64 powerpc64-netbsd netbsd-ppc64el powerpc64le-netbsd netbsd-s390 s390-netbsd netbsd-s390x s390x-netbsd netbsd-sh3 sh3-netbsd netbsd-sh3eb sh3eb-netbsd netbsd-sh4 sh4-netbsd netbsd-sh4eb sh4eb-netbsd netbsd-sparc sparc-netbsd netbsd-sparc64 sparc64-netbsd openbsd-alpha alpha-openbsd openbsd-amd64 x86_64-openbsd openbsd-arm arm-openbsd openbsd-arm64 aarch64-openbsd openbsd-armeb armeb-openbsd openbsd-avr32 avr32-openbsd openbsd-hppa hppa-openbsd openbsd-i386 i386-openbsd openbsd-ia64 ia64-openbsd openbsd-m32r m32r-openbsd openbsd-m68k m68k-openbsd openbsd-mips mips-openbsd openbsd-mips64 mips64-openbsd openbsd-mips64el mips64el-openbsd openbsd-mipsel mipsel-openbsd openbsd-powerpc powerpc-openbsd openbsd-ppc64 powerpc64-openbsd openbsd-ppc64el powerpc64le-openbsd openbsd-s390 s390-openbsd openbsd-s390x s390x-openbsd openbsd-sh3 sh3-openbsd openbsd-sh3eb sh3eb-openbsd openbsd-sh4 sh4-openbsd openbsd-sh4eb sh4eb-openbsd openbsd-sparc sparc-openbsd openbsd-sparc64 sparc64-openbsd powerpc powerpc-linux-gnu powerpcspe powerpc-linux-gnuspe ppc64 powerpc64-linux-gnu ppc64el powerpc64le-linux-gnu s390 s390-linux-gnu s390x s390x-linux-gnu sh3 sh3-linux-gnu sh3eb sh3eb-linux-gnu sh4 sh4-linux-gnu sh4eb sh4eb-linux-gnu solaris-alpha alpha-solaris solaris-amd64 x86_64-solaris solaris-arm arm-solaris solaris-arm64 aarch64-solaris solaris-armeb armeb-solaris solaris-avr32 avr32-solaris solaris-hppa hppa-solaris solaris-i386 i386-solaris solaris-ia64 ia64-solaris solaris-m32r m32r-solaris solaris-m68k m68k-solaris solaris-mips mips-solaris solaris-mips64 mips64-solaris solaris-mips64el mips64el-solaris solaris-mipsel mipsel-solaris solaris-powerpc powerpc-solaris solaris-ppc64 powerpc64-solaris solaris-ppc64el powerpc64le-solaris solaris-s390 s390-solaris solaris-s390x s390x-solaris solaris-sh3 sh3-solaris solaris-sh3eb sh3eb-solaris solaris-sh4 sh4-solaris solaris-sh4eb sh4eb-solaris solaris-sparc sparc-solaris solaris-sparc64 sparc64-solaris sparc sparc-linux-gnu sparc64 sparc64-linux-gnu uclibc-linux-alpha alpha-linux-uclibc uclibc-linux-amd64 x86_64-linux-uclibc uclibc-linux-arm arm-linux-uclibc uclibc-linux-arm64 aarch64-linux-uclibc uclibc-linux-armeb armeb-linux-uclibc uclibc-linux-armel arm-linux-uclibceabi uclibc-linux-avr32 avr32-linux-uclibc uclibc-linux-hppa hppa-linux-uclibc uclibc-linux-i386 i386-linux-uclibc uclibc-linux-ia64 ia64-linux-uclibc uclibc-linux-m32r m32r-linux-uclibc uclibc-linux-m68k m68k-linux-uclibc uclibc-linux-mips mips-linux-uclibc uclibc-linux-mips64 mips64-linux-uclibc uclibc-linux-mips64el mips64el-linux-uclibc uclibc-linux-mipsel mipsel-linux-uclibc uclibc-linux-powerpc powerpc-linux-uclibc uclibc-linux-ppc64 powerpc64-linux-uclibc uclibc-linux-ppc64el powerpc64le-linux-uclibc uclibc-linux-s390 s390-linux-uclibc uclibc-linux-s390x s390x-linux-uclibc uclibc-linux-sh3 sh3-linux-uclibc uclibc-linux-sh3eb sh3eb-linux-uclibc uclibc-linux-sh4 sh4-linux-uclibc uclibc-linux-sh4eb sh4eb-linux-uclibc uclibc-linux-sparc sparc-linux-uclibc uclibc-linux-sparc64 sparc64-linux-uclibc uclinux-alpha alpha-uclinux-uclibc uclinux-amd64 x86_64-uclinux-uclibc uclinux-arm arm-uclinux-uclibc uclinux-arm64 aarch64-uclinux-uclibc uclinux-armeb armeb-uclinux-uclibc uclinux-armel arm-uclinux-uclibceabi uclinux-avr32 avr32-uclinux-uclibc uclinux-hppa hppa-uclinux-uclibc uclinux-i386 i386-uclinux-uclibc uclinux-ia64 ia64-uclinux-uclibc uclinux-m32r m32r-uclinux-uclibc uclinux-m68k m68k-uclinux-uclibc uclinux-mips mips-uclinux-uclibc uclinux-mips64 mips64-uclinux-uclibc uclinux-mips64el mips64el-uclinux-uclibc uclinux-mipsel mipsel-uclinux-uclibc uclinux-powerpc powerpc-uclinux-uclibc uclinux-ppc64 powerpc64-uclinux-uclibc uclinux-ppc64el powerpc64le-uclinux-uclibc uclinux-s390 s390-uclinux-uclibc uclinux-s390x s390x-uclinux-uclibc uclinux-sh3 sh3-uclinux-uclibc uclinux-sh3eb sh3eb-uclinux-uclibc uclinux-sh4 sh4-uclinux-uclibc uclinux-sh4eb sh4eb-uclinux-uclibc uclinux-sparc sparc-uclinux-uclibc uclinux-sparc64 sparc64-uclinux-uclibc x32 x86_64-linux-gnux32 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/common/source-fields�����������������������������������������������������0000664�0000000�0000000�00000001322�12310413206�016332� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Manually maintained list of known source fields # - please keep it sorted architecture autobuild binary bugs build-conflicts build-conflicts-indep build-depends build-depends-indep checksums-md5 checksums-sha1 checksums-sha256 dgit dm-upload-allowed files format homepage maintainer origin # Special-case, original-maintainer is not ok in Debian, but we allow # it in any non-Debian profile by default. # # NB: Do not rely on @if-vendor-is-not in your data files; it may # disappear without notice @if-vendor-is-not debian original-maintainer package-list python-version ruby-versions source standards-version testsuite uploaders vcs-arch vcs-browser vcs-bzr vcs-cvs vcs-darcs vcs-git vcs-hg vcs-mtn vcs-svn version ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/binaries/����������������������������������������������������������������0000775�0000000�0000000�00000000000�12313550312�014154� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/binaries/arch-64bit-equivs�����������������������������������������������0000664�0000000�0000000�00000000534�12310413144�017254� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Manually maintained table mapping 32bit archs to the # name of their 64bit counter part. # # Please keep this sorted by "key" (i.e. 32bit arch) hppa => hppa64 i386 => amd64 kfreebsd-i386 => kfreebsd-amd64 mips => mips64 mipsel => mipsel64 powerpc => ppc64 s390 => s390x sparc => sparc64 ��������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/binaries/lfs-symbols�����������������������������������������������������0000664�0000000�0000000�00000001322�12310413144�016345� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Manually maintained list of non-lfs symbols # # List was found by grepping around in /usr/include on an i386 system # with build-essential installed # # Please keep this sorted by key. __fxstat __fxstatat __lxstat __xstat aio_cancel aio_error aio_fsync aio_read aio_return aio_suspend aio_write alphasort creat fallocate fgetpos fopen freopen fseeko fsetpos fstatfs fstatvfs ftello ftruncate fts_open fts_read fts_children fts_set fts_close ftw getdirentries getrlimit glob globfree lio_listio lockf lseek mkostemp mkostemps mkstemp mkstemps mmap nftw open openat posix_fadvise posix_fallocate pread preadv prlimit pwrite pwritev readdir readdir_r scandir sendfile setrlimit statfs statvfs tmpfile truncate versionsort ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/binaries/hardening-tags��������������������������������������������������0000664�0000000�0000000�00000074375�12313550312�017012� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Map of architectures to enabled hardening tags. # # NB: Keep this in sync with checks/binaries.desc # Last updated: 2014-01-14 # With: Debian dpkg-architecture version 1.17.5. # This file was auto-generated by private/refresh-archs alpha || hardening-no-fortify-functions, hardening-no-relro amd64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector arm || hardening-no-fortify-functions, hardening-no-relro arm64 || hardening-no-fortify-functions, hardening-no-relro armeb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector armel || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector armhf || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector avr32 || hardening-no-fortify-functions, hardening-no-stackprotector darwin-alpha || hardening-no-fortify-functions, hardening-no-relro darwin-amd64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector darwin-arm || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector darwin-arm64 || hardening-no-fortify-functions, hardening-no-relro darwin-armeb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector darwin-avr32 || hardening-no-fortify-functions, hardening-no-stackprotector darwin-hppa || hardening-no-fortify-functions darwin-i386 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector darwin-ia64 || hardening-no-fortify-functions darwin-m32r || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector darwin-m68k || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector darwin-mips || hardening-no-fortify-functions, hardening-no-relro darwin-mips64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector darwin-mips64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector darwin-mipsel || hardening-no-fortify-functions, hardening-no-relro darwin-powerpc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector darwin-ppc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector darwin-ppc64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector darwin-s390 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector darwin-s390x || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector darwin-sh3 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector darwin-sh3eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector darwin-sh4 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector darwin-sh4eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector darwin-sparc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector darwin-sparc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector freebsd-alpha || hardening-no-fortify-functions, hardening-no-relro freebsd-amd64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector freebsd-arm || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector freebsd-arm64 || hardening-no-fortify-functions, hardening-no-relro freebsd-armeb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector freebsd-avr32 || hardening-no-fortify-functions, hardening-no-stackprotector freebsd-hppa || hardening-no-fortify-functions freebsd-i386 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector freebsd-ia64 || hardening-no-fortify-functions freebsd-m32r || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector freebsd-m68k || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector freebsd-mips || hardening-no-fortify-functions, hardening-no-relro freebsd-mips64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector freebsd-mips64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector freebsd-mipsel || hardening-no-fortify-functions, hardening-no-relro freebsd-powerpc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector freebsd-ppc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector freebsd-ppc64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector freebsd-s390 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector freebsd-s390x || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector freebsd-sh3 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector freebsd-sh3eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector freebsd-sh4 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector freebsd-sh4eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector freebsd-sparc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector freebsd-sparc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector hppa || hardening-no-fortify-functions hurd-alpha || hardening-no-fortify-functions, hardening-no-relro hurd-amd64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector hurd-arm || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector hurd-arm64 || hardening-no-fortify-functions, hardening-no-relro hurd-armeb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector hurd-avr32 || hardening-no-fortify-functions, hardening-no-stackprotector hurd-hppa || hardening-no-fortify-functions hurd-i386 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector hurd-ia64 || hardening-no-fortify-functions hurd-m32r || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector hurd-m68k || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector hurd-mips || hardening-no-fortify-functions, hardening-no-relro hurd-mips64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector hurd-mips64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector hurd-mipsel || hardening-no-fortify-functions, hardening-no-relro hurd-powerpc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector hurd-ppc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector hurd-ppc64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector hurd-s390 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector hurd-s390x || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector hurd-sh3 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector hurd-sh3eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector hurd-sh4 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector hurd-sh4eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector hurd-sparc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector hurd-sparc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector i386 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector ia64 || hardening-no-fortify-functions kfreebsd-alpha || hardening-no-fortify-functions, hardening-no-relro kfreebsd-amd64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kfreebsd-arm || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kfreebsd-arm64 || hardening-no-fortify-functions, hardening-no-relro kfreebsd-armeb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kfreebsd-avr32 || hardening-no-fortify-functions, hardening-no-stackprotector kfreebsd-hppa || hardening-no-fortify-functions kfreebsd-i386 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kfreebsd-ia64 || hardening-no-fortify-functions kfreebsd-m32r || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kfreebsd-m68k || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kfreebsd-mips || hardening-no-fortify-functions, hardening-no-relro kfreebsd-mips64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kfreebsd-mips64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kfreebsd-mipsel || hardening-no-fortify-functions, hardening-no-relro kfreebsd-powerpc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kfreebsd-ppc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kfreebsd-ppc64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kfreebsd-s390 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kfreebsd-s390x || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kfreebsd-sh3 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kfreebsd-sh3eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kfreebsd-sh4 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kfreebsd-sh4eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kfreebsd-sparc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kfreebsd-sparc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector knetbsd-alpha || hardening-no-fortify-functions, hardening-no-relro knetbsd-amd64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector knetbsd-arm || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector knetbsd-arm64 || hardening-no-fortify-functions, hardening-no-relro knetbsd-armeb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector knetbsd-avr32 || hardening-no-fortify-functions, hardening-no-stackprotector knetbsd-hppa || hardening-no-fortify-functions knetbsd-i386 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector knetbsd-ia64 || hardening-no-fortify-functions knetbsd-m32r || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector knetbsd-m68k || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector knetbsd-mips || hardening-no-fortify-functions, hardening-no-relro knetbsd-mips64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector knetbsd-mips64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector knetbsd-mipsel || hardening-no-fortify-functions, hardening-no-relro knetbsd-powerpc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector knetbsd-ppc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector knetbsd-ppc64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector knetbsd-s390 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector knetbsd-s390x || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector knetbsd-sh3 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector knetbsd-sh3eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector knetbsd-sh4 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector knetbsd-sh4eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector knetbsd-sparc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector knetbsd-sparc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kopensolaris-alpha || hardening-no-fortify-functions, hardening-no-relro kopensolaris-amd64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kopensolaris-arm || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kopensolaris-arm64 || hardening-no-fortify-functions, hardening-no-relro kopensolaris-armeb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kopensolaris-avr32 || hardening-no-fortify-functions, hardening-no-stackprotector kopensolaris-hppa || hardening-no-fortify-functions kopensolaris-i386 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kopensolaris-ia64 || hardening-no-fortify-functions kopensolaris-m32r || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kopensolaris-m68k || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kopensolaris-mips || hardening-no-fortify-functions, hardening-no-relro kopensolaris-mips64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kopensolaris-mips64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kopensolaris-mipsel || hardening-no-fortify-functions, hardening-no-relro kopensolaris-powerpc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kopensolaris-ppc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kopensolaris-ppc64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kopensolaris-s390 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kopensolaris-s390x || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kopensolaris-sh3 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kopensolaris-sh3eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kopensolaris-sh4 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kopensolaris-sh4eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kopensolaris-sparc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector kopensolaris-sparc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector lpia || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector m32r || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector m68k || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector mint-m68k || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector mips || hardening-no-fortify-functions, hardening-no-relro mips64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector mips64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector mipsel || hardening-no-fortify-functions, hardening-no-relro mipsn32 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector mipsn32el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector musl-linux-alpha || hardening-no-fortify-functions, hardening-no-relro musl-linux-amd64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector musl-linux-arm || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector musl-linux-arm64 || hardening-no-fortify-functions, hardening-no-relro musl-linux-armeb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector musl-linux-armhf || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector musl-linux-avr32 || hardening-no-fortify-functions, hardening-no-stackprotector musl-linux-hppa || hardening-no-fortify-functions musl-linux-i386 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector musl-linux-ia64 || hardening-no-fortify-functions musl-linux-m32r || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector musl-linux-m68k || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector musl-linux-mips || hardening-no-fortify-functions, hardening-no-relro musl-linux-mips64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector musl-linux-mips64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector musl-linux-mipsel || hardening-no-fortify-functions, hardening-no-relro musl-linux-powerpc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector musl-linux-ppc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector musl-linux-ppc64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector musl-linux-s390 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector musl-linux-s390x || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector musl-linux-sh3 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector musl-linux-sh3eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector musl-linux-sh4 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector musl-linux-sh4eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector musl-linux-sparc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector musl-linux-sparc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector netbsd-alpha || hardening-no-fortify-functions, hardening-no-relro netbsd-amd64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector netbsd-arm || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector netbsd-arm64 || hardening-no-fortify-functions, hardening-no-relro netbsd-armeb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector netbsd-avr32 || hardening-no-fortify-functions, hardening-no-stackprotector netbsd-hppa || hardening-no-fortify-functions netbsd-i386 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector netbsd-ia64 || hardening-no-fortify-functions netbsd-m32r || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector netbsd-m68k || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector netbsd-mips || hardening-no-fortify-functions, hardening-no-relro netbsd-mips64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector netbsd-mips64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector netbsd-mipsel || hardening-no-fortify-functions, hardening-no-relro netbsd-powerpc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector netbsd-ppc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector netbsd-ppc64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector netbsd-s390 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector netbsd-s390x || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector netbsd-sh3 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector netbsd-sh3eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector netbsd-sh4 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector netbsd-sh4eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector netbsd-sparc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector netbsd-sparc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector openbsd-alpha || hardening-no-fortify-functions, hardening-no-relro openbsd-amd64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector openbsd-arm || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector openbsd-arm64 || hardening-no-fortify-functions, hardening-no-relro openbsd-armeb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector openbsd-avr32 || hardening-no-fortify-functions, hardening-no-stackprotector openbsd-hppa || hardening-no-fortify-functions openbsd-i386 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector openbsd-ia64 || hardening-no-fortify-functions openbsd-m32r || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector openbsd-m68k || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector openbsd-mips || hardening-no-fortify-functions, hardening-no-relro openbsd-mips64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector openbsd-mips64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector openbsd-mipsel || hardening-no-fortify-functions, hardening-no-relro openbsd-powerpc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector openbsd-ppc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector openbsd-ppc64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector openbsd-s390 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector openbsd-s390x || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector openbsd-sh3 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector openbsd-sh3eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector openbsd-sh4 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector openbsd-sh4eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector openbsd-sparc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector openbsd-sparc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector powerpc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector powerpcspe || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector ppc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector ppc64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector s390 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector s390x || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector sh3 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector sh3eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector sh4 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector sh4eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector solaris-alpha || hardening-no-fortify-functions, hardening-no-relro solaris-amd64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector solaris-arm || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector solaris-arm64 || hardening-no-fortify-functions, hardening-no-relro solaris-armeb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector solaris-avr32 || hardening-no-fortify-functions, hardening-no-stackprotector solaris-hppa || hardening-no-fortify-functions solaris-i386 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector solaris-ia64 || hardening-no-fortify-functions solaris-m32r || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector solaris-m68k || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector solaris-mips || hardening-no-fortify-functions, hardening-no-relro solaris-mips64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector solaris-mips64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector solaris-mipsel || hardening-no-fortify-functions, hardening-no-relro solaris-powerpc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector solaris-ppc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector solaris-ppc64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector solaris-s390 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector solaris-s390x || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector solaris-sh3 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector solaris-sh3eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector solaris-sh4 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector solaris-sh4eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector solaris-sparc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector solaris-sparc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector sparc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector sparc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclibc-linux-alpha || hardening-no-fortify-functions, hardening-no-relro uclibc-linux-amd64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclibc-linux-arm || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclibc-linux-arm64 || hardening-no-fortify-functions, hardening-no-relro uclibc-linux-armeb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclibc-linux-armel || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclibc-linux-avr32 || hardening-no-fortify-functions, hardening-no-stackprotector uclibc-linux-hppa || hardening-no-fortify-functions uclibc-linux-i386 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclibc-linux-ia64 || hardening-no-fortify-functions uclibc-linux-m32r || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclibc-linux-m68k || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclibc-linux-mips || hardening-no-fortify-functions, hardening-no-relro uclibc-linux-mips64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclibc-linux-mips64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclibc-linux-mipsel || hardening-no-fortify-functions, hardening-no-relro uclibc-linux-powerpc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclibc-linux-ppc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclibc-linux-ppc64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclibc-linux-s390 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclibc-linux-s390x || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclibc-linux-sh3 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclibc-linux-sh3eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclibc-linux-sh4 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclibc-linux-sh4eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclibc-linux-sparc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclibc-linux-sparc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclinux-alpha || hardening-no-fortify-functions, hardening-no-relro uclinux-amd64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclinux-arm || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclinux-arm64 || hardening-no-fortify-functions, hardening-no-relro uclinux-armeb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclinux-armel || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclinux-avr32 || hardening-no-fortify-functions, hardening-no-stackprotector uclinux-hppa || hardening-no-fortify-functions uclinux-i386 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclinux-ia64 || hardening-no-fortify-functions uclinux-m32r || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclinux-m68k || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclinux-mips || hardening-no-fortify-functions, hardening-no-relro uclinux-mips64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclinux-mips64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclinux-mipsel || hardening-no-fortify-functions, hardening-no-relro uclinux-powerpc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclinux-ppc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclinux-ppc64el || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclinux-s390 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclinux-s390x || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclinux-sh3 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclinux-sh3eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclinux-sh4 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclinux-sh4eb || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclinux-sparc || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector uclinux-sparc64 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector x32 || hardening-no-fortify-functions, hardening-no-relro, hardening-no-stackprotector �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/binaries/embedded-libs���������������������������������������������������0000664�0000000�0000000�00000010657�12310415177�016576� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Manually maintained table of embedded libraries. # # Basic syntax: # key ||<regex> # key || [options] ||<regex> # # Where [options] is space separated list of: # # source=<src> # - If present, it declares that this library is built from the # source package <src> # - If both "source" and "source-regex" are omitted, then # Lintian will default to using "source" with a value equal # to the key. # - Cannot be used with "source-regex" # # source-regex=<srcregex> # - If present, it declares that this library is built from (or # expected in binaries build from) any source package, which # name matches <srcregex>. # - Cannot be used with "source" # # libname=<name> # - Declares the "name" of the library. # - If omitted, the key will be used. # # Note: Avoid unintended leading and trailing whitespace in <regex> # as Lintian will assume such whitespace is a part of the regex. # If possible, consider using \s or [ ] to mark intended trailing # whitespace. # # If <regex> contains the separator (||), then the "options" part is # not optional. # # Please keep it sorted by key. # bzip2 ||(?m)^This is a bug in bzip2 curl ||A libcurl function was given a bad argument expat ||(?m)^requested feature requires XML_DTD support in Expat file ||(?m)^could not find any (?:valid )?magic files freetype ||FT_Get_CID_Is_Internally_CID_Keyed ftgl ||FTGlyphContainer gl2ps ||\(C\) 1999-2009 C\. Geuzaine glee ||Extension name exceeds 1023 characters\. glew ||Missing GL version libavcodec ||source=libav||insufficient thread locking around avcodec_open/close\(\)\n libavdevice ||source=libav||Soundcard does not support 16 bit sample format\n libavfilter ||source=libav||Buffer video frames, and make them accessible to the filterchain\. libavformat ||source=libav||Format detected only with low score of %d, misdetection possible!\n libavutil ||source=libav||AVOption type %d of option %s not implemented yet\n libgd ||source-regex=libgd2? ||gd-(?:png|jpeg:) error: libgadu ||Gadu-Gadu Client Build libjpeg ||source-regex=libjpeg.* ||(?m)^Caution: quantization tables are too coarse for baseline JPEG libjsoncpp ||A valid JSON document must be either an array or an object value\. liblivemedia||(?:Received incoming RTSP request:|LIVE555 Streaming Media v) libm ||source=eglibc ||neg\*\*non-integral: DOMAIN error libmng ||TERM misplaced during creation of MNG stream libmsn ||The MSN server has terminated the connection with an unknown reason code\. libmikmod ||APUN \(APlayer\) and UNI \(MikMod\) libmysqlclient ||source-regex=mysql(?:-\d.*)? ||MySQL client ran out of memory libpcap ||(?:pcap_activate: The "any" device isn\'t supported|corrupted frame on kernel ring mac offset) libpng ||(?m)^Potential overflow in png_zalloc libraw ||Unsupported file format or not RAW file libpostproc ||source-regex=lib(?:av|postproc)||using npp filters 0x%X/0x%X\n libssh2 ||Invalid descriptor passed to libssh2_poll libssh ||Error allocating memory for ssh_scp libswscale ||source=libav||Exactly one scaler algorithm must be chosen\n # Trailing whitespace was present when the file was created (see commit: 77fd246) libtheora ||Xiph.Org libtheora\s libxml2 ||root and DTD name do not match ltdl ||source=libtool ||(?m)^library already shutdown ncurses ||Not enough memory to create terminal structure nspr ||(?m)^Unable to create nspr log file nss ||(?m)^My Encrytion Test Data openjpeg ||tcd_decode: incomplete bistream openssl ||You need to read the OpenSSL FAQ pcre3 ||this version of PCRE is not compiled with PCRE_UTF8 support poppler ||source-regex=(?:poppler|xpdf)||(?:May not be a PDF file \(continuing anyway\)|PDF file is damaged - attempting to reconstruct xref table\.\.\.) sqlite ||source-regex=sqlite3? ||CREATE TABLE sqlite_master\( t1lib ||t1lib is copyright \(c\) Rainer Menzner tiff ||source-regex=tiff\d* ||No space for PixarLog state block tinyxml ||(?m)^(?:Error when TiXmlDocument added to document|Error null \(0\) or unexpected EOF found in input stream\.) # We exclude version strings starting with "4 " since that's a mark of the # Pascal implementation, which is not what this tag is designed to detect. # (The "4" is actually the string length (52 characters) in the Pascal # counted string format.) zlib ||source-regex=(?:zlib|klibc|kfreebsd-kernel-di\w+) ||(?m)(?<!4 )(?:in|de)flate (?:\d[ \w.\-]{1,20}[\w.\-]) ���������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/binaries/arch-regex������������������������������������������������������0000664�0000000�0000000�00000004007�12310413144�016123� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Manually maintained table of architectures and their "file(1)" # signature. Table based on checks/emdebian's %archdetecttable, as # found in emdebian-tools. # # syntax: # key ~~regex # # Note spaces on the right hand side of ~~ are assumed to be a part # of the regex. # # Please keep this sorted based on the arch names. # Phony architectures used for some special cases, where Lintian just # requires the number of "bits" to be correct. # 32 ~~ELF 32-bit 64 ~~ELF 64-bit # Regular architectures alpha ~~ELF 64-bit LSB .* Alpha amd64 ~~ELF 64-bit LSB .* x86-64, .* (?:GNU/Linux|(?!GNU)) arm ~~ELF 32-bit LSB .* ARM, version \d, armeb ~~ELF 32-bit MSB .* ARM armel ~~ELF 32-bit LSB .* ARM, .* \(SYSV\) armhf ~~ELF 32-bit LSB .* ARM, .* \(SYSV\) #avr32 ~~ELF 32-bit MSB .* \(SYSV\) hppa ~~ELF 32-bit MSB .* PA-RISC hppa64 ~~ELF 64-bit MSB .* PA-RISC hurd-i386 ~~ELF 32-bit LSB .* Intel 80386, .* (?:GNU/Hurd|(?!GNU)) i386 ~~ELF 32-bit LSB .* 80386, .* (?:GNU/Linux|(?!GNU)) ia64 ~~ELF 64-bit LSB .* IA-64 kfreebsd-amd64~~ELF 64-bit LSB .* x86-64, .* (?:GNU/kFreeBSD|(?!GNU)) kfreebsd-i386 ~~ELF 32-bit LSB .* 80386, .* (?:GNU/kFreeBSD|(?!GNU)) lpia ~~ELF 32-bit LSB .* 80386, .* (?:GNU/Linux|(?!GNU)) m32r ~~ELF 32-bit MSB .* M32R m68k ~~ELF 32-bit MSB .* 680[02]0 mips ~~ELF 32-bit MSB .* MIPS mipsel ~~ELF 32-bit LSB .* MIPS #mipsn32 ~~ELF 32-bit LSB .* MIPS.* N32 mips64 ~~ELF 64-bit MSB .* MIPS mipsel64 ~~ELF 64-bit LSB .* MIPS powerpc ~~ELF 32-bit MSB .* PowerPC powerpcspe ~~ELF 32-bit MSB .* PowerPC .* cisco 4500 ppc64 ~~ELF 64-bit MSB .* PowerPC s390 ~~ELF 32-bit MSB .* S.390 s390x ~~ELF 64-bit MSB .* S.390 sh4 ~~ELF 32-bit LSB .* Renesas SH sparc ~~ELF 32-bit MSB .* SPARC #sparcv9b ~~ELF 32-bit MSB .* SPARC.* V8\+ sparc64 ~~ELF 64-bit MSB .* SPARC x32 ~~ELF 32-bit LSB .* x86-64 �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/symlinks/����������������������������������������������������������������0000775�0000000�0000000�00000000000�12310413206�014226� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/symlinks/well-known-symlinks-target��������������������������������������0000664�0000000�0000000�00000000422�12310413206�021377� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# well known symlink target without leading / # please use regex with x modifier man/man\d/undocumented ^etc/alternatives/ ^usr/share/fonts/[^/]++/.++$ ^usr/share/java/[^/]+\.jar$ ^usr/share/javascript/(?:[^/]++/)++[^/]+\.js$ ^lib/init/upstart-job$ ^dev/null$ ^dev/zeros$ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/copyright-file/����������������������������������������������������������0000775�0000000�0000000�00000000000�12310413144�015303� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/copyright-file/common-licenses�������������������������������������������0000664�0000000�0000000�00000000264�12310413144�020323� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# /usr/share/common-licenses list # generated by ls -1 /usr/share/common-licenses/ Apache-2.0 Artistic BSD GFDL GFDL-1.2 GFDL-1.3 GPL GPL-1 GPL-2 GPL-3 LGPL LGPL-2 LGPL-2.1 LGPL-3 ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/rules/�������������������������������������������������������������������0000775�0000000�0000000�00000000000�12310413206�013507� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/rules/rules-should-not-use�����������������������������������������������0000664�0000000�0000000�00000001076�12310413206�017454� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# a list of fordidden construct in debian/rules # format is # tag ~~ regex (\x\s) # Please sort by alphabetic sort of tags # debian-rules-should-not-automatically-update-control ~~ ^\s*DEB_AUTO_UPDATE_DEBIAN_CONTROL\s*=\s*yes debian-rules-should-not-use-DEB_BUILD_OPTS ~~ \$[\(\{]DEB_BUILD_OPTS[\)\}] debian-rules-should-not-use-or-modify-user-only-variable ~~ \bDEB_[^_ \t]+FLAGS_(?:SET|APPEND)\b debian-rules-should-not-use-pwd ~~ \$[\(\{]PWD[\)\}] debian-rules-should-not-use-underscore-variable ~~ \$[\(\{]_[\)\}] ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/rules/known-makefiles����������������������������������������������������0000664�0000000�0000000�00000002420�12310413144�016523� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Manual maintained list of known makefiles and their # (lack of) targets. This is used to avoid assuming # that (e.g.) the quilt makefile provides all needed # targets. # # Syntax: # # <makefile>||[<target>[, <target2> ...]] # # # Variables only or providing non-standard targets # (targets not mentioned in the policy at all) /usr/share/cli-common/cli-nant.make|| /usr/share/cli-common/cli.make|| /usr/share/coq/coqvars.mk|| /usr/share/dpkg/architecture.mk|| /usr/share/dpkg/buildflags.mk|| /usr/share/dpkg/default.mk|| /usr/share/dpkg/pkg-info.mk|| /usr/share/dpkg/vendor.mk|| /usr/share/gcj/debian_defaults|| /usr/share/hardening-includes/hardening.make|| /usr/share/javahelper/java-vars.mk|| /usr/share/libdbi-perl/perl-dbdabi.make|| /usr/share/mpi-default-dev/debian_defaults|| /usr/share/ocaml/ocamlinit.mk|| /usr/share/ocaml/ocamlvars.mk|| /usr/share/octave/debian/defs.make|| /usr/share/pkg-kde-tools/makefiles/1/variables.mk|| /usr/share/postgresql-common/pgxs_debian_control.mk|| /usr/share/pycentral-data/pycentral.mk|| /usr/share/python/python.mk|| /usr/share/python3/python.mk|| # Makefiles with (possibly) relevant targets /usr/share/quilt/quilt.make||patch, unpatch, $(QUILT_STAMPFN) /usr/share/dpatch/dpatch.make||patch, unpatch /usr/share/topgit/tg2quilt.mk||patch, unpatch ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/rules/policy-rules�������������������������������������������������������0000664�0000000�0000000�00000001157�12310413206�016065� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# add required/recommended rules # format is # <name-of-rules> <type> # where <type> is one of: # - "required" => For required rules (prior to 3.9.4) # - recommended_allindep => For the new required targets in 3.9.4 # (these used to just be recommended) # - goodpractice_dfsg => Target recommended for repacked packages # (e.g. packages with non-free files removed) build required binary required binary-arch required binary-indep required clean required build-arch recommended_allindep build-indep recommended_allindep get-orig-source goodpractice_dfsg �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/rules/deprecated-makefiles�����������������������������������������������0000664�0000000�0000000�00000000621�12310413144�017470� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Manual maintained list of Makefiles that can be included from # d/rules, but is also known to be deprecated. # # Please keep it sorted by file name. /usr/share/cdbs/1/class/perlmodule-vars.mk /usr/share/cdbs/1/class/perlmodule.mk /usr/share/cdbs/1/rules/dpatch.mk /usr/share/cdbs/1/rules/simple-patchsys.mk /usr/share/cdbs/1/rules/tarball.mk /usr/share/dbs/dbs-build.mk /usr/share/dbs/dpkg-arch.mk ���������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/doc-base/����������������������������������������������������������������0000775�0000000�0000000�00000000000�12310413144�014033� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/doc-base/sections��������������������������������������������������������0000664�0000000�0000000�00000002226�12310413144�015607� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Taken from /usr/share/doc-base/data/sections.list. # # Last synchronized with doc-base 0.10.4 (2012-07-10). Accessibility Amateur Radio Data Management Debian Editors Education Emulators File Management Games/Action Games/Adventure Games/Blocks Games/Board Games/Card Games/Puzzles Games/Simulation Games/Strategy Games/Tools Games/Toys Graphics Help Help/Books Help/FAQ Help/HOWTO Help/RFC Help/Standards Mobile Devices Network/Communication Network/File Transfer Network/Monitoring Network/Remote Access Network/Web Browsing Network/Web News Office Programming Programming/C Programming/C++ Programming/Java Programming/OCaml Programming/Perl Programming/Python Programming/Ruby Project Management Science/Astronomy Science/Biology Science/Chemistry Science/Data Analysis Science/Electronics Science/Engineering Science/Geoscience Science/Mathematics Science/Medicine Science/Physics Science/Social Screen Screen/Saving Screen/Locking Shells Sound System/Administration System/Hardware System/Language Environment System/Monitoring System/Package Management System/Security Terminal Emulators Text TV and Radio Typesetting Viewers Video Web Development Window Managers ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/shared-libs/�������������������������������������������������������������0000775�0000000�0000000�00000000000�12313550275�014565� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/shared-libs/hwcap-dirs���������������������������������������������������0000664�0000000�0000000�00000001137�12310413144�016541� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# List of all known hwcap. # # Last updated: 2012-01-28 # Generated by private/refresh-hwcap # # Lines to always be included: # Keep: tls 4xxmac acpi altivec apic arch_2_05 arch_2_06 booke cellbe clflush cmov cx8 dfp dts efpdouble efpsingle eimm esan3 etf3enh ev4 ev5 ev56 ev6 ev67 flush fpu fxsr g5 highgprs hpage ht i386 i486 i586 i686 ic_snoop ldisp loongson2e loongson2f mca mmu mmx msa mtrr muldiv notb octeon octeon2 pa6t pat pbe pge pn power4 power5 power5+ power6x ppc32 ppc601 ppc64 pse36 sep smt spe ss sse sse2 stbar stfle swap tls tm ucache ultra3 v9 v9v v9v2 vsx z10 z9-109 z900 z990 zarch ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/shared-libs/ldconfig-dirs������������������������������������������������0000664�0000000�0000000�00000040473�12313550275�017244� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# The list of directories searched by default by the dynamic linker. # Packages installing shared libraries into these directories must call # ldconfig, must have shlibs files, and must ensure those libraries have # proper SONAMEs. # # Directories listed here must not have leading slashes. # # On the topic of multi-arch dirs. Hopefully including the ones not # native to the local platform won't hurt. # # See Bug#469301 and Bug#464796 for more details. # # Last updated: 2014-01-14 # With: Debian dpkg-architecture version 1.17.5. # This file was auto-generated by private/refresh-archs # # Lines to always be include # Keep: lib # Keep: lib32 # Keep: lib64 # Keep: libx32 # Keep: usr/lib # Keep: usr/lib32 # Keep: usr/lib64 # Keep: usr/libx32 # Keep: usr/local/lib lib lib/aarch64-darwin lib/aarch64-freebsd lib/aarch64-gnu lib/aarch64-kfreebsd-gnu lib/aarch64-knetbsd-gnu lib/aarch64-kopensolaris-gnu lib/aarch64-linux-gnu lib/aarch64-linux-musl lib/aarch64-linux-uclibc lib/aarch64-netbsd lib/aarch64-openbsd lib/aarch64-solaris lib/aarch64-uclinux-uclibc lib/alpha-darwin lib/alpha-freebsd lib/alpha-gnu lib/alpha-kfreebsd-gnu lib/alpha-knetbsd-gnu lib/alpha-kopensolaris-gnu lib/alpha-linux-gnu lib/alpha-linux-musl lib/alpha-linux-uclibc lib/alpha-netbsd lib/alpha-openbsd lib/alpha-solaris lib/alpha-uclinux-uclibc lib/arm-darwin lib/arm-freebsd lib/arm-gnu lib/arm-kfreebsd-gnu lib/arm-knetbsd-gnu lib/arm-kopensolaris-gnu lib/arm-linux-gnu lib/arm-linux-gnueabi lib/arm-linux-gnueabihf lib/arm-linux-musl lib/arm-linux-musleabihf lib/arm-linux-uclibc lib/arm-linux-uclibceabi lib/arm-netbsd lib/arm-openbsd lib/arm-solaris lib/arm-uclinux-uclibc lib/arm-uclinux-uclibceabi lib/armeb-darwin lib/armeb-freebsd lib/armeb-gnu lib/armeb-kfreebsd-gnu lib/armeb-knetbsd-gnu lib/armeb-kopensolaris-gnu lib/armeb-linux-gnu lib/armeb-linux-musl lib/armeb-linux-uclibc lib/armeb-netbsd lib/armeb-openbsd lib/armeb-solaris lib/armeb-uclinux-uclibc lib/avr32-darwin lib/avr32-freebsd lib/avr32-gnu lib/avr32-kfreebsd-gnu lib/avr32-knetbsd-gnu lib/avr32-kopensolaris-gnu lib/avr32-linux-gnu lib/avr32-linux-musl lib/avr32-linux-uclibc lib/avr32-netbsd lib/avr32-openbsd lib/avr32-solaris lib/avr32-uclinux-uclibc lib/hppa-darwin lib/hppa-freebsd lib/hppa-gnu lib/hppa-kfreebsd-gnu lib/hppa-knetbsd-gnu lib/hppa-kopensolaris-gnu lib/hppa-linux-gnu lib/hppa-linux-musl lib/hppa-linux-uclibc lib/hppa-netbsd lib/hppa-openbsd lib/hppa-solaris lib/hppa-uclinux-uclibc lib/i386-darwin lib/i386-freebsd lib/i386-gnu lib/i386-kfreebsd-gnu lib/i386-knetbsd-gnu lib/i386-kopensolaris-gnu lib/i386-linux-gnu lib/i386-linux-gnulp lib/i386-linux-musl lib/i386-linux-uclibc lib/i386-netbsd lib/i386-openbsd lib/i386-solaris lib/i386-uclinux-uclibc lib/ia64-darwin lib/ia64-freebsd lib/ia64-gnu lib/ia64-kfreebsd-gnu lib/ia64-knetbsd-gnu lib/ia64-kopensolaris-gnu lib/ia64-linux-gnu lib/ia64-linux-musl lib/ia64-linux-uclibc lib/ia64-netbsd lib/ia64-openbsd lib/ia64-solaris lib/ia64-uclinux-uclibc lib/m32r-darwin lib/m32r-freebsd lib/m32r-gnu lib/m32r-kfreebsd-gnu lib/m32r-knetbsd-gnu lib/m32r-kopensolaris-gnu lib/m32r-linux-gnu lib/m32r-linux-musl lib/m32r-linux-uclibc lib/m32r-netbsd lib/m32r-openbsd lib/m32r-solaris lib/m32r-uclinux-uclibc lib/m68k-darwin lib/m68k-freebsd lib/m68k-gnu lib/m68k-kfreebsd-gnu lib/m68k-knetbsd-gnu lib/m68k-kopensolaris-gnu lib/m68k-linux-gnu lib/m68k-linux-musl lib/m68k-linux-uclibc lib/m68k-mint lib/m68k-netbsd lib/m68k-openbsd lib/m68k-solaris lib/m68k-uclinux-uclibc lib/mips-darwin lib/mips-freebsd lib/mips-gnu lib/mips-kfreebsd-gnu lib/mips-knetbsd-gnu lib/mips-kopensolaris-gnu lib/mips-linux-gnu lib/mips-linux-musl lib/mips-linux-uclibc lib/mips-netbsd lib/mips-openbsd lib/mips-solaris lib/mips-uclinux-uclibc lib/mips64-darwin lib/mips64-freebsd lib/mips64-gnu lib/mips64-kfreebsd-gnu lib/mips64-knetbsd-gnu lib/mips64-kopensolaris-gnu lib/mips64-linux-gnuabi64 lib/mips64-linux-gnuabin32 lib/mips64-linux-musl lib/mips64-linux-uclibc lib/mips64-netbsd lib/mips64-openbsd lib/mips64-solaris lib/mips64-uclinux-uclibc lib/mips64el-darwin lib/mips64el-freebsd lib/mips64el-gnu lib/mips64el-kfreebsd-gnu lib/mips64el-knetbsd-gnu lib/mips64el-kopensolaris-gnu lib/mips64el-linux-gnuabi64 lib/mips64el-linux-gnuabin32 lib/mips64el-linux-musl lib/mips64el-linux-uclibc lib/mips64el-netbsd lib/mips64el-openbsd lib/mips64el-solaris lib/mips64el-uclinux-uclibc lib/mipsel-darwin lib/mipsel-freebsd lib/mipsel-gnu lib/mipsel-kfreebsd-gnu lib/mipsel-knetbsd-gnu lib/mipsel-kopensolaris-gnu lib/mipsel-linux-gnu lib/mipsel-linux-musl lib/mipsel-linux-uclibc lib/mipsel-netbsd lib/mipsel-openbsd lib/mipsel-solaris lib/mipsel-uclinux-uclibc lib/powerpc-darwin lib/powerpc-freebsd lib/powerpc-gnu lib/powerpc-kfreebsd-gnu lib/powerpc-knetbsd-gnu lib/powerpc-kopensolaris-gnu lib/powerpc-linux-gnu lib/powerpc-linux-gnuspe lib/powerpc-linux-musl lib/powerpc-linux-uclibc lib/powerpc-netbsd lib/powerpc-openbsd lib/powerpc-solaris lib/powerpc-uclinux-uclibc lib/powerpc64-darwin lib/powerpc64-freebsd lib/powerpc64-gnu lib/powerpc64-kfreebsd-gnu lib/powerpc64-knetbsd-gnu lib/powerpc64-kopensolaris-gnu lib/powerpc64-linux-gnu lib/powerpc64-linux-musl lib/powerpc64-linux-uclibc lib/powerpc64-netbsd lib/powerpc64-openbsd lib/powerpc64-solaris lib/powerpc64-uclinux-uclibc lib/powerpc64le-darwin lib/powerpc64le-freebsd lib/powerpc64le-gnu lib/powerpc64le-kfreebsd-gnu lib/powerpc64le-knetbsd-gnu lib/powerpc64le-kopensolaris-gnu lib/powerpc64le-linux-gnu lib/powerpc64le-linux-musl lib/powerpc64le-linux-uclibc lib/powerpc64le-netbsd lib/powerpc64le-openbsd lib/powerpc64le-solaris lib/powerpc64le-uclinux-uclibc lib/s390-darwin lib/s390-freebsd lib/s390-gnu lib/s390-kfreebsd-gnu lib/s390-knetbsd-gnu lib/s390-kopensolaris-gnu lib/s390-linux-gnu lib/s390-linux-musl lib/s390-linux-uclibc lib/s390-netbsd lib/s390-openbsd lib/s390-solaris lib/s390-uclinux-uclibc lib/s390x-darwin lib/s390x-freebsd lib/s390x-gnu lib/s390x-kfreebsd-gnu lib/s390x-knetbsd-gnu lib/s390x-kopensolaris-gnu lib/s390x-linux-gnu lib/s390x-linux-musl lib/s390x-linux-uclibc lib/s390x-netbsd lib/s390x-openbsd lib/s390x-solaris lib/s390x-uclinux-uclibc lib/sh3-darwin lib/sh3-freebsd lib/sh3-gnu lib/sh3-kfreebsd-gnu lib/sh3-knetbsd-gnu lib/sh3-kopensolaris-gnu lib/sh3-linux-gnu lib/sh3-linux-musl lib/sh3-linux-uclibc lib/sh3-netbsd lib/sh3-openbsd lib/sh3-solaris lib/sh3-uclinux-uclibc lib/sh3eb-darwin lib/sh3eb-freebsd lib/sh3eb-gnu lib/sh3eb-kfreebsd-gnu lib/sh3eb-knetbsd-gnu lib/sh3eb-kopensolaris-gnu lib/sh3eb-linux-gnu lib/sh3eb-linux-musl lib/sh3eb-linux-uclibc lib/sh3eb-netbsd lib/sh3eb-openbsd lib/sh3eb-solaris lib/sh3eb-uclinux-uclibc lib/sh4-darwin lib/sh4-freebsd lib/sh4-gnu lib/sh4-kfreebsd-gnu lib/sh4-knetbsd-gnu lib/sh4-kopensolaris-gnu lib/sh4-linux-gnu lib/sh4-linux-musl lib/sh4-linux-uclibc lib/sh4-netbsd lib/sh4-openbsd lib/sh4-solaris lib/sh4-uclinux-uclibc lib/sh4eb-darwin lib/sh4eb-freebsd lib/sh4eb-gnu lib/sh4eb-kfreebsd-gnu lib/sh4eb-knetbsd-gnu lib/sh4eb-kopensolaris-gnu lib/sh4eb-linux-gnu lib/sh4eb-linux-musl lib/sh4eb-linux-uclibc lib/sh4eb-netbsd lib/sh4eb-openbsd lib/sh4eb-solaris lib/sh4eb-uclinux-uclibc lib/sparc-darwin lib/sparc-freebsd lib/sparc-gnu lib/sparc-kfreebsd-gnu lib/sparc-knetbsd-gnu lib/sparc-kopensolaris-gnu lib/sparc-linux-gnu lib/sparc-linux-musl lib/sparc-linux-uclibc lib/sparc-netbsd lib/sparc-openbsd lib/sparc-solaris lib/sparc-uclinux-uclibc lib/sparc64-darwin lib/sparc64-freebsd lib/sparc64-gnu lib/sparc64-kfreebsd-gnu lib/sparc64-knetbsd-gnu lib/sparc64-kopensolaris-gnu lib/sparc64-linux-gnu lib/sparc64-linux-musl lib/sparc64-linux-uclibc lib/sparc64-netbsd lib/sparc64-openbsd lib/sparc64-solaris lib/sparc64-uclinux-uclibc lib/x86_64-darwin lib/x86_64-freebsd lib/x86_64-gnu lib/x86_64-kfreebsd-gnu lib/x86_64-knetbsd-gnu lib/x86_64-kopensolaris-gnu lib/x86_64-linux-gnu lib/x86_64-linux-gnux32 lib/x86_64-linux-musl lib/x86_64-linux-uclibc lib/x86_64-netbsd lib/x86_64-openbsd lib/x86_64-solaris lib/x86_64-uclinux-uclibc lib32 lib64 libx32 usr/lib usr/lib/aarch64-darwin usr/lib/aarch64-freebsd usr/lib/aarch64-gnu usr/lib/aarch64-kfreebsd-gnu usr/lib/aarch64-knetbsd-gnu usr/lib/aarch64-kopensolaris-gnu usr/lib/aarch64-linux-gnu usr/lib/aarch64-linux-musl usr/lib/aarch64-linux-uclibc usr/lib/aarch64-netbsd usr/lib/aarch64-openbsd usr/lib/aarch64-solaris usr/lib/aarch64-uclinux-uclibc usr/lib/alpha-darwin usr/lib/alpha-freebsd usr/lib/alpha-gnu usr/lib/alpha-kfreebsd-gnu usr/lib/alpha-knetbsd-gnu usr/lib/alpha-kopensolaris-gnu usr/lib/alpha-linux-gnu usr/lib/alpha-linux-musl usr/lib/alpha-linux-uclibc usr/lib/alpha-netbsd usr/lib/alpha-openbsd usr/lib/alpha-solaris usr/lib/alpha-uclinux-uclibc usr/lib/arm-darwin usr/lib/arm-freebsd usr/lib/arm-gnu usr/lib/arm-kfreebsd-gnu usr/lib/arm-knetbsd-gnu usr/lib/arm-kopensolaris-gnu usr/lib/arm-linux-gnu usr/lib/arm-linux-gnueabi usr/lib/arm-linux-gnueabihf usr/lib/arm-linux-musl usr/lib/arm-linux-musleabihf usr/lib/arm-linux-uclibc usr/lib/arm-linux-uclibceabi usr/lib/arm-netbsd usr/lib/arm-openbsd usr/lib/arm-solaris usr/lib/arm-uclinux-uclibc usr/lib/arm-uclinux-uclibceabi usr/lib/armeb-darwin usr/lib/armeb-freebsd usr/lib/armeb-gnu usr/lib/armeb-kfreebsd-gnu usr/lib/armeb-knetbsd-gnu usr/lib/armeb-kopensolaris-gnu usr/lib/armeb-linux-gnu usr/lib/armeb-linux-musl usr/lib/armeb-linux-uclibc usr/lib/armeb-netbsd usr/lib/armeb-openbsd usr/lib/armeb-solaris usr/lib/armeb-uclinux-uclibc usr/lib/avr32-darwin usr/lib/avr32-freebsd usr/lib/avr32-gnu usr/lib/avr32-kfreebsd-gnu usr/lib/avr32-knetbsd-gnu usr/lib/avr32-kopensolaris-gnu usr/lib/avr32-linux-gnu usr/lib/avr32-linux-musl usr/lib/avr32-linux-uclibc usr/lib/avr32-netbsd usr/lib/avr32-openbsd usr/lib/avr32-solaris usr/lib/avr32-uclinux-uclibc usr/lib/hppa-darwin usr/lib/hppa-freebsd usr/lib/hppa-gnu usr/lib/hppa-kfreebsd-gnu usr/lib/hppa-knetbsd-gnu usr/lib/hppa-kopensolaris-gnu usr/lib/hppa-linux-gnu usr/lib/hppa-linux-musl usr/lib/hppa-linux-uclibc usr/lib/hppa-netbsd usr/lib/hppa-openbsd usr/lib/hppa-solaris usr/lib/hppa-uclinux-uclibc usr/lib/i386-darwin usr/lib/i386-freebsd usr/lib/i386-gnu usr/lib/i386-kfreebsd-gnu usr/lib/i386-knetbsd-gnu usr/lib/i386-kopensolaris-gnu usr/lib/i386-linux-gnu usr/lib/i386-linux-gnulp usr/lib/i386-linux-musl usr/lib/i386-linux-uclibc usr/lib/i386-netbsd usr/lib/i386-openbsd usr/lib/i386-solaris usr/lib/i386-uclinux-uclibc usr/lib/ia64-darwin usr/lib/ia64-freebsd usr/lib/ia64-gnu usr/lib/ia64-kfreebsd-gnu usr/lib/ia64-knetbsd-gnu usr/lib/ia64-kopensolaris-gnu usr/lib/ia64-linux-gnu usr/lib/ia64-linux-musl usr/lib/ia64-linux-uclibc usr/lib/ia64-netbsd usr/lib/ia64-openbsd usr/lib/ia64-solaris usr/lib/ia64-uclinux-uclibc usr/lib/m32r-darwin usr/lib/m32r-freebsd usr/lib/m32r-gnu usr/lib/m32r-kfreebsd-gnu usr/lib/m32r-knetbsd-gnu usr/lib/m32r-kopensolaris-gnu usr/lib/m32r-linux-gnu usr/lib/m32r-linux-musl usr/lib/m32r-linux-uclibc usr/lib/m32r-netbsd usr/lib/m32r-openbsd usr/lib/m32r-solaris usr/lib/m32r-uclinux-uclibc usr/lib/m68k-darwin usr/lib/m68k-freebsd usr/lib/m68k-gnu usr/lib/m68k-kfreebsd-gnu usr/lib/m68k-knetbsd-gnu usr/lib/m68k-kopensolaris-gnu usr/lib/m68k-linux-gnu usr/lib/m68k-linux-musl usr/lib/m68k-linux-uclibc usr/lib/m68k-mint usr/lib/m68k-netbsd usr/lib/m68k-openbsd usr/lib/m68k-solaris usr/lib/m68k-uclinux-uclibc usr/lib/mips-darwin usr/lib/mips-freebsd usr/lib/mips-gnu usr/lib/mips-kfreebsd-gnu usr/lib/mips-knetbsd-gnu usr/lib/mips-kopensolaris-gnu usr/lib/mips-linux-gnu usr/lib/mips-linux-musl usr/lib/mips-linux-uclibc usr/lib/mips-netbsd usr/lib/mips-openbsd usr/lib/mips-solaris usr/lib/mips-uclinux-uclibc usr/lib/mips64-darwin usr/lib/mips64-freebsd usr/lib/mips64-gnu usr/lib/mips64-kfreebsd-gnu usr/lib/mips64-knetbsd-gnu usr/lib/mips64-kopensolaris-gnu usr/lib/mips64-linux-gnuabi64 usr/lib/mips64-linux-gnuabin32 usr/lib/mips64-linux-musl usr/lib/mips64-linux-uclibc usr/lib/mips64-netbsd usr/lib/mips64-openbsd usr/lib/mips64-solaris usr/lib/mips64-uclinux-uclibc usr/lib/mips64el-darwin usr/lib/mips64el-freebsd usr/lib/mips64el-gnu usr/lib/mips64el-kfreebsd-gnu usr/lib/mips64el-knetbsd-gnu usr/lib/mips64el-kopensolaris-gnu usr/lib/mips64el-linux-gnuabi64 usr/lib/mips64el-linux-gnuabin32 usr/lib/mips64el-linux-musl usr/lib/mips64el-linux-uclibc usr/lib/mips64el-netbsd usr/lib/mips64el-openbsd usr/lib/mips64el-solaris usr/lib/mips64el-uclinux-uclibc usr/lib/mipsel-darwin usr/lib/mipsel-freebsd usr/lib/mipsel-gnu usr/lib/mipsel-kfreebsd-gnu usr/lib/mipsel-knetbsd-gnu usr/lib/mipsel-kopensolaris-gnu usr/lib/mipsel-linux-gnu usr/lib/mipsel-linux-musl usr/lib/mipsel-linux-uclibc usr/lib/mipsel-netbsd usr/lib/mipsel-openbsd usr/lib/mipsel-solaris usr/lib/mipsel-uclinux-uclibc usr/lib/powerpc-darwin usr/lib/powerpc-freebsd usr/lib/powerpc-gnu usr/lib/powerpc-kfreebsd-gnu usr/lib/powerpc-knetbsd-gnu usr/lib/powerpc-kopensolaris-gnu usr/lib/powerpc-linux-gnu usr/lib/powerpc-linux-gnuspe usr/lib/powerpc-linux-musl usr/lib/powerpc-linux-uclibc usr/lib/powerpc-netbsd usr/lib/powerpc-openbsd usr/lib/powerpc-solaris usr/lib/powerpc-uclinux-uclibc usr/lib/powerpc64-darwin usr/lib/powerpc64-freebsd usr/lib/powerpc64-gnu usr/lib/powerpc64-kfreebsd-gnu usr/lib/powerpc64-knetbsd-gnu usr/lib/powerpc64-kopensolaris-gnu usr/lib/powerpc64-linux-gnu usr/lib/powerpc64-linux-musl usr/lib/powerpc64-linux-uclibc usr/lib/powerpc64-netbsd usr/lib/powerpc64-openbsd usr/lib/powerpc64-solaris usr/lib/powerpc64-uclinux-uclibc usr/lib/powerpc64le-darwin usr/lib/powerpc64le-freebsd usr/lib/powerpc64le-gnu usr/lib/powerpc64le-kfreebsd-gnu usr/lib/powerpc64le-knetbsd-gnu usr/lib/powerpc64le-kopensolaris-gnu usr/lib/powerpc64le-linux-gnu usr/lib/powerpc64le-linux-musl usr/lib/powerpc64le-linux-uclibc usr/lib/powerpc64le-netbsd usr/lib/powerpc64le-openbsd usr/lib/powerpc64le-solaris usr/lib/powerpc64le-uclinux-uclibc usr/lib/s390-darwin usr/lib/s390-freebsd usr/lib/s390-gnu usr/lib/s390-kfreebsd-gnu usr/lib/s390-knetbsd-gnu usr/lib/s390-kopensolaris-gnu usr/lib/s390-linux-gnu usr/lib/s390-linux-musl usr/lib/s390-linux-uclibc usr/lib/s390-netbsd usr/lib/s390-openbsd usr/lib/s390-solaris usr/lib/s390-uclinux-uclibc usr/lib/s390x-darwin usr/lib/s390x-freebsd usr/lib/s390x-gnu usr/lib/s390x-kfreebsd-gnu usr/lib/s390x-knetbsd-gnu usr/lib/s390x-kopensolaris-gnu usr/lib/s390x-linux-gnu usr/lib/s390x-linux-musl usr/lib/s390x-linux-uclibc usr/lib/s390x-netbsd usr/lib/s390x-openbsd usr/lib/s390x-solaris usr/lib/s390x-uclinux-uclibc usr/lib/sh3-darwin usr/lib/sh3-freebsd usr/lib/sh3-gnu usr/lib/sh3-kfreebsd-gnu usr/lib/sh3-knetbsd-gnu usr/lib/sh3-kopensolaris-gnu usr/lib/sh3-linux-gnu usr/lib/sh3-linux-musl usr/lib/sh3-linux-uclibc usr/lib/sh3-netbsd usr/lib/sh3-openbsd usr/lib/sh3-solaris usr/lib/sh3-uclinux-uclibc usr/lib/sh3eb-darwin usr/lib/sh3eb-freebsd usr/lib/sh3eb-gnu usr/lib/sh3eb-kfreebsd-gnu usr/lib/sh3eb-knetbsd-gnu usr/lib/sh3eb-kopensolaris-gnu usr/lib/sh3eb-linux-gnu usr/lib/sh3eb-linux-musl usr/lib/sh3eb-linux-uclibc usr/lib/sh3eb-netbsd usr/lib/sh3eb-openbsd usr/lib/sh3eb-solaris usr/lib/sh3eb-uclinux-uclibc usr/lib/sh4-darwin usr/lib/sh4-freebsd usr/lib/sh4-gnu usr/lib/sh4-kfreebsd-gnu usr/lib/sh4-knetbsd-gnu usr/lib/sh4-kopensolaris-gnu usr/lib/sh4-linux-gnu usr/lib/sh4-linux-musl usr/lib/sh4-linux-uclibc usr/lib/sh4-netbsd usr/lib/sh4-openbsd usr/lib/sh4-solaris usr/lib/sh4-uclinux-uclibc usr/lib/sh4eb-darwin usr/lib/sh4eb-freebsd usr/lib/sh4eb-gnu usr/lib/sh4eb-kfreebsd-gnu usr/lib/sh4eb-knetbsd-gnu usr/lib/sh4eb-kopensolaris-gnu usr/lib/sh4eb-linux-gnu usr/lib/sh4eb-linux-musl usr/lib/sh4eb-linux-uclibc usr/lib/sh4eb-netbsd usr/lib/sh4eb-openbsd usr/lib/sh4eb-solaris usr/lib/sh4eb-uclinux-uclibc usr/lib/sparc-darwin usr/lib/sparc-freebsd usr/lib/sparc-gnu usr/lib/sparc-kfreebsd-gnu usr/lib/sparc-knetbsd-gnu usr/lib/sparc-kopensolaris-gnu usr/lib/sparc-linux-gnu usr/lib/sparc-linux-musl usr/lib/sparc-linux-uclibc usr/lib/sparc-netbsd usr/lib/sparc-openbsd usr/lib/sparc-solaris usr/lib/sparc-uclinux-uclibc usr/lib/sparc64-darwin usr/lib/sparc64-freebsd usr/lib/sparc64-gnu usr/lib/sparc64-kfreebsd-gnu usr/lib/sparc64-knetbsd-gnu usr/lib/sparc64-kopensolaris-gnu usr/lib/sparc64-linux-gnu usr/lib/sparc64-linux-musl usr/lib/sparc64-linux-uclibc usr/lib/sparc64-netbsd usr/lib/sparc64-openbsd usr/lib/sparc64-solaris usr/lib/sparc64-uclinux-uclibc usr/lib/x86_64-darwin usr/lib/x86_64-freebsd usr/lib/x86_64-gnu usr/lib/x86_64-kfreebsd-gnu usr/lib/x86_64-knetbsd-gnu usr/lib/x86_64-kopensolaris-gnu usr/lib/x86_64-linux-gnu usr/lib/x86_64-linux-gnux32 usr/lib/x86_64-linux-musl usr/lib/x86_64-linux-uclibc usr/lib/x86_64-netbsd usr/lib/x86_64-openbsd usr/lib/x86_64-solaris usr/lib/x86_64-uclinux-uclibc usr/lib32 usr/lib64 usr/libx32 usr/local/lib �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/README�������������������������������������������������������������������0000664�0000000�0000000�00000001120�12310413144�013230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������This directory contains files loaded by the Lintian::Data module, specifically lists of keywords used in various Lintian checks. For all files in this directory, blank lines are ignored, as are lines beginning with #. For each list of keywords, please include in a comment the origin of the list, any information about how to resynchronize the list with that origin, and any special exceptions or caveats. Files should generally be organized into subdirectory by check or by general class of lists (for example, all lists related to doc-base files should go into a doc-base subdirectory). ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/fields/������������������������������������������������������������������0000775�0000000�0000000�00000000000�12314366011�013630� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/fields/virtual-packages��������������������������������������������������0000664�0000000�0000000�00000013707�12313551606�017032� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# The list of virtual packages in Debian that are provided by two or more # packages. # # Packages that should be listed but are not found by this script can be # listed in a special comment in this file. They will then be preserved when # the list is regenerated. Such packages must be listed in a comment line # staring with "Keep:". Multiple packages can be specified in the same line, # separated by comma and/or white space. Multiple "Keep: " lines can be used # as well. # # Last updated: 2014-03-23 # Keep: xserver-xorg-input, xserver-xorg-input-2, xserver-xorg-input-2.1 # Keep: xserver-xorg-input-4 # Keep: xserver-xorg-video, xserver-xorg-video-1.0, xserver-xorg-video-1.9 # Keep: xserver-xorg-video-2, xserver-xorg-video-4, xserver-xorg-video-5 ada-compiler aide-binary alsaplayer-interface alsaplayer-output amora-server aptitude-doc aspell-dictionary aspell6a-dictionary asterisk-prompt-fr asterisk-voicemail-storage audio-mixer automaken awk bacula-director bacula-director-dbg bacula-sd-tools bacula-sd-tools-dbg bilibop-device-policy bochs-gui bogofilter-db boom-engine boom-wad c++-compiler c++abi2-dev c-compiler c-shell calligra-l10n chasen-dic childsplay-alphabet-sounds cl-sql-backend cron-daemon cudf-solver d-compiler d-v2-compiler debconf-2.0 debian-installer-netboot dhcp-client dict-client dict-server dictd-dictionary djvu-viewer docbook-xsl-doc docutils doom-engine doublecmd doublecmd-dbg doublecmd-help dssi-plugin dyndns-client editor emacsen erlang-abi-15.b ettercap exim4-localscanapi-1.0 exim4-localscanapi-1.1 expeyes-doc festival-voice finger-server firebird-dbg firebird-server firebird-udf firebird-utils fonts-japanese-gothic fonts-japanese-mincho fortran95-compiler fortune-cookie-db freeciv freeciv-client freediams-doc freemedforms-emr-doc fso-deviced-player ftp-server fusionforge-plugin-scm gcompris-sound gem-plugin-film gem-plugin-image gem-plugin-record gem-plugin-video geoclue-provider gforge-mta gfortran-mod-10 gimp-help gmerlin-encoders gmt-gshhs-data gnome-www-browser gnumach-image gnustep-back0.20-alt gnutls-dev go-compiler gsettings-backend gstreamer0.10-audiosink gstreamer0.10-audiosource gstreamer0.10-videosink gstreamer0.10-videosource gstreamer0.10-visualization gstreamer1.0-audiosink gstreamer1.0-audiosource gstreamer1.0-videosink gstreamer1.0-videosource gstreamer1.0-visualization guile gvim horde-bundle httpd httpd-cgi httpd-wsgi hunspell-dictionary hunspell-dictionary-de hunspell-dictionary-en hunspell-dictionary-fr hunspell-dictionary-ru hyphen-hyphenation-patterns ident-server ike-server imap-client imap-server indicator-renderer inet-superserver inews info-browser irc ircd ispell-dictionary jack-daemon jackd-firewire java-compiler java-runtime java-runtime-headless java-sdk java1-runtime java1-runtime-headless java2-runtime java2-runtime-headless java2-sdk java5-runtime java5-runtime-headless java5-sdk java6-runtime java6-runtime-headless java6-sdk java7-runtime java7-runtime-headless kde-l10n kfreebsd-image kfreebsd-image-10 kfreebsd-image-9 kfreebsd-source ladspa-plugin libblas.so libblas.so.3 libblas.so.3gf libc-icap-module libcompress-zlib-perl libcurl-dev libcurl-ssl-dev libcurl4-dev libdeps-renderer libedac libfltk-dev libgdchart libgdchart-gd2-dev libgl-dev libgl1 libguile-dev libhd12-doc libhd13-doc libhd14-doc libhd15-doc libhd16-doc libhtml-wikiconverter-dialect libio-compress-base-perl libio-compress-bzip2-perl libio-compress-zlib-perl libjack-0.116 libjack-dev-session libjack0.100.0-dev libjpeg-dbg liblapack.so liblapack.so.3 liblapack.so.3gf libmp3splt0-plugin libneon-dev libnora-ruby libode0-dev libopendbx1-backend libopenide-util-java libopenni-sensor libopenni-sensor-dev libppl-c-dev libreadline-dbg libreoffice-grammarcheck libreoffice-help-4.1 libreoffice-l10n-4.1 libreoffice-style libstdc++-dev libtcl libtk libvala-dev libxine-doc libzookeeper-dev licq-plugin-ui lightdm-greeter linux-initramfs-tool linux-kernel-log-daemon lisp-compiler lua lv2-host lv2-plugin mail-reader mail-transport-agent mailx man-browser monodoc-viewer mp3-decoder mpd-client mpipython mumps munin-plugins mupen64plus-rsp mupen64plus-video myspell-dictionary myspell-dictionary-de myspell-dictionary-en myspell-dictionary-fr myspell-dictionary-pt mythes-thesaurus mythes-thesaurus-de nes-emulator nethack netpbm-dev neutron-plugin news-reader news-transport-system nova-compute-hypervisor ntrack-module-0 objc++-compiler objc-compiler opencl-icd opendnssec-enforcer-backend openoffice.org-hyphenation openoffice.org-spellcheck-de-at openoffice.org-spellcheck-de-ch openoffice.org-spellcheck-de-de osspd-backend pango1.0-multiarch-modver-1.8.0 paw-binary pcsc-ifd-handler pdf-viewer pdns-backend phonon-backend php5-user-cache pinentry pinentry-x11 ping plymouth-theme pop3-server postgresql-plpython postgresql-plpython3 postgresql-pltcl postscript-viewer python-carquinyol python-jarabe python-pg python-pysvn python-sugar python-sugar-toolkit python2.7-setuptools python3.3-setuptools quake-engine quake-engine-server radius-server ratbox-services readline-editor roaraudio-server root-db-client root-fitter ruby-interpreter ruby-rails sip-router skkserv skytools-modules snd-gtk-alsa snort-rules ssh-server stun-server sugar sugar-artwork sugar-chat-activity sugar-emulator sugar-presence-service sugar-tools sword-comm sword-dict sword-frontend sword-text syslinux-theme system-log-daemon tads2-interpreter tads3-interpreter tcldoc telepathy-connection-manager telnet-client telnet-server time-daemon tkdoc turn-server ups-monitor vala-doc vala-utils vim-lua vim-perl vim-python vim-ruby vim-tcl virtual-mysql-client virtual-mysql-server vnc-server vnc-viewer wicd-client wims-extra wordlist www-browser wx-i18n x-audio-mixer x-display-manager x-session-manager x-terminal-emulator x-window-manager xmlformat xorg-driver-input xorg-driver-video xserver xserver-xorg-input xserver-xorg-input-2 xserver-xorg-input-2.1 xserver-xorg-input-4 xserver-xorg-video xserver-xorg-video-1.0 xserver-xorg-video-1.9 xserver-xorg-video-2 xserver-xorg-video-4 xserver-xorg-video-5 zcode-interpreter ���������������������������������������������������������lintian-2.5.22ubuntu1/data/fields/metapackages������������������������������������������������������0000664�0000000�0000000�00000000560�12310413144�016175� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Known metapackages. A metapackage is a package that exists for the # convenience of users or installers to install a set of related packages # and should not be used as a dependency of anything other than another # metapackage. It should not be used as a build dependency ever. mono-complete x-window-system x-window-system-dev x-window-system-core xorg xorg-dev ������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/fields/perl-provides�����������������������������������������������������0000664�0000000�0000000�00000002202�12310413206�016335� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# virtual packages provided by the Perl core packages that also have a # separate binary package available # # the listed version is the one included in the Perl core # # regenerate by running # debian/rules refresh-perl-provides # in the lintian source tree # # last updated for PERL_VERSION=5.018001 libsocket-perl 2.009 libthreads-shared-perl 1.43 libthreads-perl 1.86 libsys-syslog-perl 0.32 libio-compress-perl 2.060 libencode-perl 2.49 libdigest-sha-perl 5.84.01 libcompress-raw-zlib-perl 2.060 libcompress-raw-bzip2-perl 2.060 libversion-perl 1:0.9902 libunicode-collate-perl 0.97 libtest-simple-perl 0.98 libtest-harness-perl 3.26 libpod-simple-perl 3.28 libparse-cpan-meta-perl 1.4404 libmodule-metadata-perl 1.000011 libmodule-load-conditional-perl 0.54 libmodule-corelist-perl 2.96 libmodule-build-perl 0.400300 libmath-complex-perl 1.59 libmath-bigint-perl 1.9991 libjson-pp-perl 2.27202 libhttp-tiny-perl 0.025 libfile-spec-perl 3.4000 libextutils-parsexs-perl 3.180000 libextutils-cbuilder-perl 0.280210 libdigest-perl 1.17 libcpan-meta-yaml-perl 0.008 libcpan-meta-requirements-perl 2.122 libcpan-meta-perl 2.120921 libautodie-perl 2.13 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/fields/bounce-addresses��������������������������������������������������0000664�0000000�0000000�00000000207�12310413144�016774� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Manually maintained list of known e-mail addresses which bounce e-mails from # role accounts. ubuntu-devel-discuss@lists.ubuntu.com �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/fields/build-essential-packages������������������������������������������0000664�0000000�0000000�00000000141�12310413144�020403� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Manually maintained list of build-essential packages libc6-dev libc-dev gcc g++ make dpkg-dev �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/fields/no-build-depends��������������������������������������������������0000664�0000000�0000000�00000000366�12310413144�016705� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# This file lists packages that should not be listed as build # dependencies, generally because they require interactivity or cannot be # correctly installed in a build environment. It is presently maintained # manually. java-propose-classpath ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/fields/binary-fields�����������������������������������������������������0000664�0000000�0000000�00000001063�12310413206�016276� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Manually maintained list of known binary fields package version architecture depends pre-depends recommends suggests enhances conflicts provides replaces breaks essential maintainer section priority source description installed-size python-version homepage bugs origin multi-arch built-using ruby-versions # Special-case, original-maintainer is not ok in Debian, but we allow # it in any non-Debian profile by default. # # NB: Do not rely on @if-vendor-is-not in your data files; it may # disappear without notice @if-vendor-is-not debian original-maintainer �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/fields/essential���������������������������������������������������������0000664�0000000�0000000�00000000552�12310413144�015540� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Known essential packages. These packages can always be assumed to be # installed and should not have non-versioned dependencies. base-files base-passwd bash bsdutils coreutils dash debianutils diffutils dpkg e2fsprogs findutils grep gzip hostname hurd libc-bin login mktemp mount ncurses-base ncurses-bin perl-base sed sysvinit sysvinit-utils tar util-linux ������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/fields/dependency-restrictions�������������������������������������������0000664�0000000�0000000�00000000073�12314366011�020417� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������profile.notest profile.stage1 profile.stage2 profile.cross ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/fields/archive-sections��������������������������������������������������0000664�0000000�0000000�00000000730�12310413144�017015� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Manually maintained list of sections in the Debian archive # - please keep this list sorted. admin comm cli-mono database debug devel doc editors education electronics embedded fonts games gnome gnu-r gnustep graphics hamradio haskell httpd interpreters introspection java kernel kde libdevel libs lisp localization mail math metapackages misc net news ocaml oldlibs otherosfs perl php python ruby science shells sound tasks tex text utils vcs video web x11 xfce zope ����������������������������������������lintian-2.5.22ubuntu1/data/fields/udeb-fields�������������������������������������������������������0000664�0000000�0000000�00000001131�12310413206�015725� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Manually maintained list of known udeb fields # - note the Ubuntu original-maintainer field is handled separately. package version architecture subarchitecture depends recommends enhances provides replaces breaks replaces maintainer section priority source description installed-size kernel-version installer-menu-item bugs origin built-using # Special-case, original-maintainer is not ok in Debian, but we allow # it in any non-Debian profile by default. # # NB: Do not rely on @if-vendor-is-not in your data files; it may # disappear without notice @if-vendor-is-not debian original-maintainer ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/fields/obsolete-packages�������������������������������������������������0000664�0000000�0000000�00000002774�12310413206�017150� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Known obsolete packages. Not all packages are added to this list, only # ones for which it's helpful for Lintian to warn about, such as # significant transitions or transitional packages that we're trying to # remove from the archive. # # Each list of packages should be tagged with the last Debian release in # which the package appeared so that we can remove long-obsolete entries # that are no longer worth checking for. # Last seen in sarge. xlibs-dev # Last seen in etch. debmake gcc-2.95 # Last seen in lenny. cdrecord cupsys cupsys-bsd cupsys-client cupsys-common foomatic-data gaim gnomemeeting gs gs-aladdin gs-esp gs-gpl kernel-headers kernel-image kernel-image-2.4 kernel-image-2.6 kernel-source lambdamoo-core lambdamoo-server libcupsys2 libcupsys2-dev libglu1-xorg libglu1-xorg-dev libmime-perl libungif4-dev libxerces28 libxerces28-dev mkisofs netcdfg-dev pcmcia-cs python-pyopenssl ssh-krb5 tetex-base tetex-bin tetex-extra x-dev xbase-clients xlibmesa-gl xlibmesa-gl-dev xlibmesa-glu xutils # Last seen in Squeeze default-jdk-builddep # Last seen in Wheezy fuse-utils ruby1.8 libruby1.8 # See: http://wiki.debian.org/Teams/DebianPerlGroup/OpenTasks/Transitions/DigestSHA1ToDigestSHA libdigest-sha1-perl # Deprecated in Wheezy by maintainer (#646420) dpatch # Deprecated in Jessie (#710466) texi2html # Deprecated versions of automake automake1.4 automake1.5 automake1.6 automake1.7 automake1.8 automake1.9 automake1.10 # Deprecated in Jessie (#720911) openjdk-6-jdk openjdk-6-jre openjdk-6-jre-headless ����lintian-2.5.22ubuntu1/data/scripts/�����������������������������������������������������������������0000775�0000000�0000000�00000000000�12310413206�014044� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/scripts/versioned-interpreters�������������������������������������������0000664�0000000�0000000�00000010335�12310413206�020513� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Map interpreter to installation placement (and optionally # the dependency relation required to obtain the interpreter) # # Entries in this file are generally used for versioned interpreters, # but can also be used for unversioned ones (when there is no # definition in scripts/interpreters). # syntax: # <interpreter> => <path>, <regex>, <dependency-template>, <version-list>[, <dependency-relation>] # # <interpreter> is the "unversioned base name" of the interpreter. It is computed by # stripping any trailing dashes ("-"), digits ([0-9]) and dots ("."). As an example, # the unversioned base name for: # python2.6 is python # guile-1.6 is guile # # NB: If the <interpreter> is not listed in scripts/interpreters, the unversioned # ones are also looked up in this data file. For cases where this is undesired, # please use @SKIP_UNVERSIONED@ (as described below). # # <path> is the path in which the interpreter is installed (usually /usr/bin). # # <regex> is a regex for matching the full name of the interpreter *and* extracting # the version of it. It should have exactly one capture group, which captures the # version. If the regex does not match the interpreter or does not capture a version # in the <version-list>, the entry is assumed not to apply to this interpreter. # NB: The regex will be achored and must match the /entire/ interpreter with version. # (e.g. guile-([\d\.]*) is matched as m/^guile-([\d\.]*)$/) # # <dependency-template> is a dependency template that will generate the dependency # relation from a version. The token "$1" is replaced with the version of the # interpreter. The template cannot contain commas (and therefore can only contain # predicates or "OR" relations). # # <version-list> is a space-separated list of known interpreter versions. It is used # both to generate the dependency relation for uses of the unversioned interpreter and # (together with <regex>) for ensuring the entry applies to the interpreter. # # If <dependency-relation> is left out, its value is assumed to # be the same as the interpreter itself (saves some typing). # # NB: <dependency-relation> can be one of the following magic values: # * @NO_DEFAULT_DEPS@ # - The interpreter has no "unversioned" dependency package. (See below) # * @SKIP_UNVERSIONED@ # - Do not use this entry for unversioned interpreters. The common usage case # for this is when the interpreter is also listed in scripts/interpreters. # # When used on a versioned interpreter, Lintian will check for a dependency satisfying # the dependency generated by applying the version to the <dependency-template>. # Example: # Interpreter pike7.6 and template "pike$1 | pike$1-core" will make Lintian check # for the dependency: # "pike7.6 | pike7.6-core" # # When used on an unversionde interpreter, Lintian will check for a dependency satisfying # ANY of the versioned dependencies that can be generated from applying the versions from # <version-list> to <dependency-template>. Furthermore, also check for the dependency on # the <dependency-relation> (assuming it is not one of the magic values). # Example: # Interpreter guile, template guile-$1, version list 1.6 1.8 and the dependency relation # guile will make Lintian check for the dependency: # "guile | guile-1.6 | guile-1.8" # # If the dependency relation had been @NO_DEFAULT_DEPS@, then the dependency check would # have been for: # "guile-1.6 | guile-1.8" # # Manually maintained table - please keep it sorted (by key)! # guile => /usr/bin, guile-([\d.]+), guile-$1, 1.6 1.8, jruby => /usr/bin, jruby([\d.]+), jruby$1, 1.0 1.1 1.2 lua => /usr/bin, lua([\d.]+), lua$1, 40 50 5.1 5.2 octave => /usr/bin, octave([\d.]+), octave$1, 3.0 3.2 php => /usr/bin, php(\d+), php$1-cli, 5, @NO_DEFAULT_DEPS@ pike => /usr/bin, pike([\d.]+), pike$1 | pike$1-core, 7.6 7.8, @NO_DEFAULT_DEPS@ python => /usr/bin, python([\d.]+), python$1:any | python$1-minimal:any, 2.7, @SKIP_UNVERSIONED@ ruby => /usr/bin, ruby([\d.]+), ruby$1, 1.8 1.9, @SKIP_UNVERSIONED@ runghc => /usr/bin, runghc(\d+), ghc$1, 6, ghc scsh => /usr/bin, scsh-([\d.]+), scsh-$1, 0.6 tclsh => /usr/bin, tclsh([\d.]+), tcl$1, 8.3 8.4 8.5 8.6, tclsh | tcl wish => /usr/bin, wish([\d.]+), tk$1, 8.3 8.4 8.5 8.6, wish | tk ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/scripts/maintainer-script-bad-command������������������������������������0000664�0000000�0000000�00000007220�12310413206�021561� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# complain (tag) when we encounters some commands on maintainer script # format is: # tag ~~in cat string ~~ package exception ~~ only in file ~~ regexp # # Where: # - tag is the tag to emit # - when in cat string is true check in HERE document # - package exception is a regexp for checking only in some package # Use empty string for checking in all package. # - only in file is a regexp for checking only in some maintainer script # Empty means check in all files. # - regexp is the regexp to check. First group ($1) will be printed if found as extra tag info # You could use the special variable ${LEADIN} if needed (see below). # # ${LEADIN}: # When detecting commands inside shell scripts, use this regex to match the # beginning of the command rather than checking whether the command is at the # beginning of a line. # # Please alpha sort by tag # # Please use maintainer-script-should-not- for tag name # ftpmaster auto reject so do not rename install-info-used-in-maintainer-script ~~ 1 ~~ ~~ ~~\binstall-info\b # ftpmaster auto reject so do not rename maintainer-script-removes-device-files ~~ 0 ~~ ~~ ~~^\s*rm\s+(?:[^>]*\s)?(/dev/(?!(?:shm/|\.[^.]+))[^/ ]+) maintainer-script-should-not-hide-init-failure ~~ 0 ~~ ~~ ~~invoke-rc.d.*\|\| \s+ exit \s+ 0 maintainer-script-should-not-modify-ld-so-conf ~~ 0 ~~^libc ~~ ~~(?:\A\s*(?:cp|mv)\s+.*\s+|>\s*)/etc/ld\.so\.conf\s*(?:\s|\Z) maintainer-script-should-not-modify-netbase-managed-file ~~ 0 ~~ ~~ ~~(?:\A\s*(?:cp|mv)\s+.*\s+|>\s*)(/etc/(?:services|protocols|rpc))\s*(?:\s|\Z) maintainer-script-should-not-use-adduser-system-without-home ~~ 1 ~~ ~~ ~~adduser\s+--system(?=\s)(?!.*\s--home\s+(?:["']?/(?!home/)|"?\$[\(\[\{]?)) maintainer-script-should-not-use-ancient-dpkg-epoch-check ~~ 0 ~~ ~~ ~~${LEADIN}dpkg\s+--assert-working-epoch\b maintainer-script-should-not-use-ancient-dpkg-multi-conrep-check~~ 0 ~~ ~~ ~~${LEADIN}dpkg\s+--assert-multi-conrep\b maintainer-script-should-not-use-deprecated-chown-usage ~~ 0 ~~ ~~ ~~(chown(?:\s+--?[A-Za-z-]+)*\s+[-_A-Za-z0-9]+\.[-_A-Za-z0-9]+)\s+ maintainer-script-should-not-use-dpkg-status-directly ~~ 1 ~~^(base-files|dpkg)$ ~~ ~~/var/lib/dpkg/status\b maintainer-script-should-not-use-fc-cache ~~ 0 ~~^(fontconfig)$ ~~ ~~${LEADIN}(?:/usr/bin/)?fc-cache(?:\s|\Z) maintainer-script-should-not-use-gconftool ~~ 1 ~~^(gconf\d)$ ~~ ~~(?:/usr/bin/)?gconftool(?:-\d)?(?:\s|\Z) maintainer-script-should-not-use-install-sgmlcatalog ~~ 1 ~~ ~~ ~~\binstall-sgmlcatalog\b maintainer-script-should-not-use-service ~~ 1 ~~ ~~ ~~${LEADIN}service\b maintainer-script-should-not-use-start-stop-daemon ~~ 0 ~~ ~~ ~~\bstart-stop-daemon(?=\s)(?!.*\s--stop\b) maintainer-script-should-not-use-update-alternatives-remove ~~ 1 ~~ ~~^postrm$ ~~\b update\-alternatives\s+\-\-remove\b maintainer-script-should-not-use-update-alternatives-set ~~ 1 ~~ ~~ ~~\b update\-alternatives\s+\-\-(?:set|set\-selections|config)\b # sendmail use override do not change it now suidregister-used-in-maintainer-script ~~ 1 ~~ ~~ ~~\bsuidregister\b ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/scripts/interpreters�����������������������������������������������������0000664�0000000�0000000�00000006602�12310413206�016521� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Map interpreter to installation placement (and optionally # the dependency relation required to obtain the interpreter) # # syntax: # <interpreter> => <path>[, <dependency-relation>] # # NB: <dependency-relation> can have the magic value @NODEPS@ # meaning that the interpreter will be provided by an essential # package or otherwise no need a dependency. # # If <dependency-relation> is left out, its value is assumed to # be the same as the interpreter itself (saves some typing). # # Do NOT list versioned interpreters here (such as pythonX.Y, # rubyX.Y, etc.). These are handled by the file # scripts/versioned-interpreters. # # Manually maintained table - please keep it sorted (by key, # insensitively)! # ash => /bin awk => /usr/bin, @NODEPS@ bash => /bin, @NODEPS@ bltwish => /usr/bin, blt cfagent => /usr/sbin, cfengine2 clisp => /usr/bin csh => /bin, tcsh | csh | c-shell dash => /bin, @NODEPS@ escript => /usr/bin, erlang-base | erlang-base-hipe expect => /usr/bin expectk => /usr/bin falcon => /usr/bin, falconpl fish => /usr/bin fontforge => /usr/bin, fontforge-nox | fontforge gawk => /usr/bin gbr2 => /usr/bin, gambas2-runtime gbr3 => /usr/bin, gambas3-runtime gbx => /usr/bin, gambas-runtime gbx2 => /usr/bin, gambas2-runtime gforth => /usr/bin gjs => /usr/bin gnuplot => /usr/bin gosh => /usr/bin, gauche icmake => /usr/bin, icmake install-menu => /usr/bin, @NODEPS@ ir => /usr/bin, ironruby jed => /usr/bin jed-script => /usr/bin, jed | xjed jython => /usr/bin kaptain => /usr/bin ksh => /bin, ksh | mksh | pdksh | zsh lefty => /usr/bin, graphviz liquidsoap => /usr/bin magicfilter => /usr/sbin make => /usr/bin, make | build-essential | dpkg-dev mawk => /usr/bin mksh => /bin mscgen => /usr/bin ngraph => /usr/bin, ngraph-gtk nickle => /usr/bin nodejs => /usr/bin ocamlrun => /usr/bin, ocaml-base-nox | ocaml-base | ocaml-nox | ocaml pagsh => /usr/bin, openafs-client | heimdal-clients parrot => /usr/bin perl => /usr/bin, @NODEPS@ perl6 => /usr/bin, rakudo plackup => /usr/bin, libplack-perl procmail => /usr/bin python => /usr/bin, python:any | python-minimal:any pforth => /usr/bin racket => /usr/bin r => /usr/bin, littler rackup => /usr/bin, ruby-rack rc => /usr/bin regina => /usr/bin, regina-rexx rep => /usr/bin rexx => /usr/bin, regina-rexx rrdcgi => /usr/bin, rrdtool Rscript => /usr/bin, r-base-core ruby => /usr/bin, ruby | ruby-interpreter runhaskell => /usr/bin, ghc | ghc6 runhugs => /usr/bin, hugs | hugs98 sed => /bin, @NODEPS@ seed => /usr/bin sh => /bin, @NODEPS@ slsh => /usr/bin speedy => /usr/bin, speedy-cgi-perl swipl => /usr/bin, swi-prolog | swi-prolog-nox tcsh => /usr/bin texlua => /usr/bin, luatex tixwish => /usr/bin, tix trs => /usr/bin, konwert xjed => /usr/bin, xjed yforth => /usr/bin, yforth yorick => /usr/bin zsh => /bin, zsh | zsh-beta ������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/spelling/����������������������������������������������������������������0000775�0000000�0000000�00000000000�12310413206�014172� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/spelling/corrections�����������������������������������������������������0000664�0000000�0000000�00000031511�12310413206�016450� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# All spelling errors that have been observed "in the wild" in package # descriptions are added here, on the grounds that if they occurred once they # are more likely to occur again. # # Misspellings of "compatibility", "separate", and "similar" are particularly # common. # # Be careful with corrections that involve punctuation, since the check is a # bit rough with punctuation. For example, I had to delete the correction of # "builtin" to "built-in". # # The format of each line is: # mistake||correction # # Note that corrections involving multiple word mistakes or case errors # should be included in the appropriate data file, rather than here. abandonning||abandoning abigious||ambiguous abitrate||arbitrate abov||above absense||absence absolut||absolute absoulte||absolute acceleratoin||acceleration accelleration||acceleration accesing||accessing accesnt||accent accessable||accessible accesss||access accidentaly||accidentally accidentually||accidentally accomodate||accommodate accomodates||accommodates accout||account acessable||accessible acess||access acient||ancient acknowldegement||acknowldegement ackowledge||acknowledge ackowledged||acknowledged acording||according activete||activate acumulating||accumulating addional||additional additionaly||additionally addreses||addresses aditional||additional aditionally||additionally aditionaly||additionally adress||address adresses||addresses adviced||advised afecting||affecting albumns||albums alegorical||allegorical algorith||algorithm algorithmical||algorithmically algoritm||algorithm algoritms||algorithms algorrithm||algorithm algorritm||algorithm allpication||application alogirhtms||algorithms alot||a lot alow||allow alows||allows altough||although ambigious||ambiguous amoung||among amout||amount analysator||analyzer ang||and anniversery||anniversary annoucement||announcement anomolies||anomalies anomoly||anomaly aplication||application appearence||appearance appliction||application applictions||applications appropiate||appropriate appropriatly||appropriately aquired||acquired arbitary||arbitrary architechture||architecture arguement||argument arguements||arguments aritmetic||arithmetic arne't||aren't arraival||arrival artifical||artificial artillary||artillery assigment||assignment assigments||assignments assistent||assistant asuming||assuming asycronous||asynchronous atomatically||automatically attachement||attachment attemps||attempts attruibutes||attributes authentification||authentication automaticaly||automatically automaticly||automatically automatize||automate automatized||automated automatizes||automates autonymous||autonomous auxilliary||auxiliary avaiable||available availabled||available availablity||availability availale||available availavility||availability availble||available availble||available availiable||available avaliable||available avaliable||available backgroud||background bahavior||behavior baloon||balloon baloons||balloons bandwith||bandwidth batery||battery becomming||becoming becuase||because begining||beginning bianries||binaries calender||calendar cancelation||cancellation capabilites||capabilities capatibilities||capabilities cariage||carriage challange||challenge challanges||challenges changable||changeable charachter||character charachters||characters charater||character charaters||characters charcter||character childs||children chnage||change chnages||changes choosen||chosen collapsable||collapsible colorfull||colorful comand||command comit||commit commerical||commercial comminucation||communication commited||committed commiting||committing committ||commit commoditiy||commodity compability||compatibility compatability||compatibility compatable||compatible compatibiliy||compatibility compatibilty||compatibility compilant||compliant compleatly||completely completly||completely complient||compliant compres||compress compresion||compression comression||compression conditionaly||conditionally configuratoin||configuration conjuction||conjunction connectinos||connections connnection||connection connnections||connections consistancy||consistency consistant||consistent containes||contains containts||contains contaisn||contains contence||contents continous||continuous continously||continuously continueing||continuing contraints||constraints convertor||converter convinient||convenient corected||corrected correponding||corresponding correponds||corresponds correspoding||corresponding cryptocraphic||cryptographic curently||currently dafault||default deafult||default deamon||daemon debain||Debian debians||Debian's decompres||decompress definate||definite definately||definitely delared||declared delare||declare delares||declares delaring||declaring delemiter||delimiter dependancies||dependencies dependancy||dependency dependant||dependent depreacted||deprecated depreacte||deprecate desactivate||deactivate detabase||database developement||development developped||developed developpement||development developper||developer developpment||development deveolpment||development devided||divided dictionnary||dictionary diplay||display disapeared||disappeared dispertion||dispersion dissapears||disappears docuentation||documentation documantation||documentation documentaion||documentation dont||don't downlad||download downlads||downloads easilly||easily ecspecially||especially edditable||editable editting||editing efficently||efficiently eletronic||electronic enchanced||enhanced encorporating||incorporating endianess||endianness enhaced||enhanced enlightnment||enlightenment enocded||encoded enterily||entirely enviroiment||environment enviroment||environment environement||environment environent||environment equiped||equipped equivelant||equivalent equivilant||equivalent estbalishment||establishment etsablishment||establishment etsbalishment||establishment excecutable||executable exceded||exceeded excellant||excellent exlcude||exclude exlcusive||exclusive expecially||especially explicitely||explicitly explict||explicit explictly||explicitly expresion||expression exprimental||experimental extensability||extensibility extention||extension extracter||extractor failuer||failure familar||familiar fatser||faster feauture||feature feautures||features fetaure||feature fetaures||features forse||force fortan||fortran forwardig||forwarding framwork||framework fuction||function fuctions||functions functionallity||functionality functionaly||functionally functionnality||functionality functonality||functionality futhermore||furthermore generiously||generously grabing||grabbing grahical||graphical grahpical||graphical grapic||graphic guage||gauge halfs||halves handfull||handful heirarchically||hierarchically helpfull||helpful hierachy||hierarchy hierarchie||hierarchy howver||however immeadiately||immediately implemantation||implementation implemention||implementation incomming||incoming incompatabilities||incompatibilities incompatable||incompatible inconsistant||inconsistent indendation||indentation indended||intended independant||independent independed||independent informatiom||information informations||information infromation||information initalize||initialize initators||initiators initializiation||initialization inofficial||unofficial integreated||integrated integrety||integrity integrey||integrity intendet||intended interchangable||interchangeable intermittant||intermittent interupted||interrupted intial||initial intregral||integral intuative||intuitive invokation||invocation invokations||invocations jave||java langage||language langauage||language langauge||language langugage||language lauch||launch leightweight||lightweight lenght||length lesstiff||lesstif libaries||libraries libary||library librairies||libraries libraris||libraries licenceing||licencing loggging||logging loggin||login logile||logfile machinary||machinery maintainance||maintenance maintainence||maintenance maintan||maintain makeing||making malplaced||misplaced malplace||misplace managable||manageable managment||management manoeuvering||maneuvering mathimatical||mathematical mathimatic||mathematic mathimatics||mathematics ment||meant messsage||message messsages||messages microprocesspr||microprocessor milliseonds||milliseconds miscelleneous||miscellaneous misformed||malformed mispelled||misspelled mispelt||misspelt mmnemonic||mnemonic modulues||modules monochorome||monochrome monochromo||monochrome monocrome||monochrome mroe||more mulitplied||multiplied multidimensionnal||multidimensional mutiple||multiple nam||name nams||names navagating||navigating nead||need neccesary||necessary neccessary||necessary necesary||necessary negotation||negotiation nescessary||necessary nessessary||necessary noticable||noticeable notications||notifications o'caml||OCaml occationally||occasionally omitt||omit ommitted||omitted onself||oneself optionnal||optional optmizations||optimizations orientatied||orientated orientied||oriented ouput||output overaall||overall overriden||overridden pacakge||package pachage||package packacge||package packege||package packge||package pakage||package pallette||palette paramameters||parameters paramater||parameter parametes||parameters parametised||parametrised paramter||parameter paramters||parameters particularily||particularly pased||passed pendantic||pedantic peprocessor||preprocessor perfoming||performing permissons||permissions persistant||persistent plattform||platform pleaes||please ploting||plotting poinnter||pointer posible||possible possibilites||possibilities postgressql||PostgreSQL powerfull||powerful preceeded||preceded preceeding||preceding precendence||precedence precission||precision prefered||preferred prefferably||preferably prepaired||prepared primative||primitive princliple||principle priorty||priority priviledge||privilege priviledges||privileges procceed||proceed proccesors||processors proces||process processessing||processing processess||processes processpr||processor processsing||processing progams||programs programers||programmers programm||program programms||programs promps||prompts pronnounced||pronounced prononciation||pronunciation pronouce||pronounce pronunce||pronounce propery||property propigate||propagate propigation||propagation prosess||process protable||portable protcol||protocol protecion||protection protocoll||protocol psychadelic||psychedelic quering||querying reasearcher||researcher reasearchers||researchers reasearch||research recieved||received recieve||receive reciever||receiver recogniced||recognised recognizeable||recognizable recommanded||recommended redircet||redirect redirectrion||redirection reenabled||re-enabled reenable||re-enable reencode||re-encode refence||reference registerd||registered registraration||registration regulamentations||regulations remoote||remote removeable||removable repectively||respectively replacments||replacements replys||replies requiere||require requred||required requried||required resizeable||resizable ressize||resize ressource||resource ressources||resources retransmited||retransmitted retreive||retrieve retreived||retrieved rmeoved||removed rmeove||remove rmeoves||removes runned||ran runnning||running sacrifying||sacrificing safly||safely savable||saveable searchs||searches secund||second separatly||separately sepcify||specify seperated||separated seperately||separately seperate||separate seperatly||separately seperator||separator sepperate||separate sequencial||sequential serveral||several setts||sets similiar||similar simliar||similar softwares||software speach||speech speciefied||specified specifed||specified specificatin||specification specificaton||specification specifing||specifying speficied||specified speling||spelling splitted||split spreaded||spread staically||statically standardss||standards standart||standard staticly||statically subdirectoires||subdirectories suble||subtle succesfully||successfully succesful||successful sucessfully||successfully superflous||superfluous superseeded||superseded suplied||supplied suport||support suppored||supported supportin||supporting suppoted||supported suppported||supported suppport||support supress||suppress surpresses||suppresses suspicously||suspiciously synax||syntax synchonized||synchronized syncronize||synchronize syncronizing||synchronizing syncronus||synchronous syste||system sytem||system sythesis||synthesis taht||that targetted||targeted targetting||targeting teh||the throught||through transfered||transferred transfering||transferring trasmission||transmission treshold||threshold trigerring||triggering unconditionaly||unconditionally unecessary||unnecessary unexecpted||unexpected unfortunatelly||unfortunately unknonw||unknown unkown||unknown unneedingly||unnecessarily unuseful||useless usefule||useful usefull||useful usege||usage usera||users usetnet||Usenet usualy||usually utilites||utilities utillities||utilities utilties||utilities utiltity||utility utitlty||utility variantions||variations varient||variant verbse||verbose verisons||versions verison||version verson||version vicefersa||vice-versa visiters||visitors vitual||virtual whataver||whatever wheter||whether wierd||weird writting||writing xwindows||X yur||your ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/spelling/corrections-multiword�������������������������������������������0000664�0000000�0000000�00000001066�12310413144�020477� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# A list of spelling corrections where the text to be corrected consists # of multiple words and thus can't be corrected by the standard single word # checks. # # The format of each line is: # SPELLING_MISTAKE_REGEX||correction (?i)allows to||allows one to (?i)an other||another (?i)debian/gnu linux||Debian GNU/Linux (?i)gnu public license||GNU General Public License (?i)gnu lesser public license||GNU Lesser General Public License (?i)is not enable||is not enabled (?i)permits to||permits one to (?i)these package||this package (?i)this packages||these packages ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/spelling/corrections-case������������������������������������������������0000664�0000000�0000000�00000003131�12310413144�017357� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Picky corrections, applied before lowercasing the word. These are only # applied to things known to be entirely English text, such as package # descriptions, and should not be applied to files that may contain # configuration fragments or more informal files such as debian/copyright. # # The format of each line is: # mistake||correction apache||Apache api||API Api||API D-BUS||D-Bus d-bus||D-Bus dbus||D-Bus debian||Debian Debian-Edu||Debian Edu debian-edu||Debian Edu Docbook||DocBook docbook||DocBook english||English french||French EMacs||Emacs Gconf||GConf gconf||GConf german||German Gnome||GNOME gnome||GNOME Gnome-VFS||GnomeVFS Gnome-Vfs||GnomeVFS GnomeVfs||GnomeVFS gnome-vfs||GnomeVFS gnomevfs||GnomeVFS gnu||GNU Gnu||GNU Gobject||GObject gobject||GObject Gstreamer||GStreamer gstreamer||GStreamer GTK||GTK+ gtk+||GTK+ Http||HTTP kde||KDE meta-package||metapackage MYSQL||MySQL Mysql||MySQL mysql||MySQL linux||Linux Latex||LaTeX latex||LaTeX oAuth||OAuth OCAML||OCaml Ocaml||OCaml ocaml||OCaml OpenLdap||OpenLDAP Openldap||OpenLDAP openldap||OpenLDAP openstreetmap||OpenStreetMap Openstreetmap||OpenStreetMap OpenStreetmap||OpenStreetMap Postgresql||PostgreSQL postgresql||PostgreSQL python||Python russian||Russian SkoleLinux||Skolelinux skolelinux||Skolelinux SLang||S-Lang S-lang||S-Lang s-lang||S-Lang spanish||Spanish subversion||Subversion TCL||Tcl tcl||Tcl TEX||TeX Tex||TeX TeTeX||teTeX Tetex||teTeX tetex||teTeX TeXLive||TeX Live TeX-Live||TeX Live TeXlive||TeX Live TeX-live||TeX Live texlive||TeX Live tex-live||TeX Live TK||Tk tk||Tk Xemacs||XEmacs XEMacs||XEmacs XFCE||Xfce XFce||Xfce xfce||Xfce ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/debian-source-dir/�������������������������������������������������������0000775�0000000�0000000�00000000000�12310413144�015652� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/debian-source-dir/known-files��������������������������������������������0000664�0000000�0000000�00000000246�12310413144�020033� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# A manually maintained sorted list of files that we know can appear in # debian/source/ format git-patches include-binaries lintian-overrides options patch-header ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/changes-file/������������������������������������������������������������0000775�0000000�0000000�00000000000�12310413144�014703� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/changes-file/known-dists�������������������������������������������������0000664�0000000�0000000�00000000642�12310413144�017110� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# A list of Debian distributions, both code names and their aliases # - Note that common "extensions"[1] are stripped before checking for the # distribution name (except for "sid", "unstable" and "experimental"). # # [1] -backports, -security, -proposed-updates etc. See checks/changes-file # for the complete list. # Codenames squeeze wheezy jessie sid # Aliases oldstable stable testing unstable experimental ����������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/files/�������������������������������������������������������������������0000775�0000000�0000000�00000000000�12313551606�013471� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/files/privacy-breaker-websites�������������������������������������������0000664�0000000�0000000�00000002513�12313551606�020326� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Manually maintained table of well known privacy breakers site # syntax: # key ~~regex (xism) # # Note spaces on the right hand side of ~~ are assumed to be a part # of the regex. # # Please keep this sorted by tag. privacy-breach-google-adsense ~~^(?:[^\./]+\.)?(?:googlesyndication\.com/pagead/show_ads\.js|google-analytics\.com/(?:ga|urchin)\.js) privacy-breach-google-cse ~~^(?:[^\./]+\.)?google\.[^\./]+\.?/(:?afsonline/show_afs_search\.js|cse/api/branding\.css|coop/cse/brand\?[^/]+)$ privacy-breach-google-plus ~~^(?:[^\./]+\.)?google\.[^\./]+\.?/js/plusone\.[^\./]+ privacy-breach-donation ~~(?:(?:donate|paypal|support)\.(gif|jpe?g|png|svg)$|^(?:[^\./]+\.)?(?:flattr.(?:com|net)|paypal.com)/) privacy-breach-facebook ~~^(?:[^\./]+\.)?facebook\.com(?:/|\Z) privacy-breach-logo ~~(?:^(?:sflogo\.)?sourceforge\.net/sflogo\.php\?|(?:acrobat|clanlib|(?:fav|github-)?icons?|logos?\d*)\.(gif|ico|jpe?g|png|svg)$) privacy-breach-piwik ~~/piwik\.php\? privacy-breach-statistics-website ~~^(?:[^\./]+\.)?(?:cruel-carlota\.pagodabox\.com|linkexchange\.com|nedstatbasic\.net|onestat\.com|sitemeter\.com|statcounter\.com|webstats\.motigo\.com)(?:/|\Z) privacy-breach-w3c-valid-html ~~^(?:(?:[^\./]+\.)?w3.org/(?:Icons/valid-|css-validator/images/)(?:[^/]+)?$|validator\.w3\.org(?:/|\Z)) �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/files/locale-codes�������������������������������������������������������0000664�0000000�0000000�00000100516�12313551606�015751� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# List of locale codes. This is derived from the ISO 639-1, ISO # 639-2, and ISO 639-3 standards. # If a language has 639-1 and 639-2 codes, the -2 code is also included # as a key to be mapped to the -1 code. # # Last updated: 2014-03-23 aa aaa aab aac aad aae aaf aag aah aai aak aal aam aan aao aap aaq aar aa aas aat aau aaw aax aaz ab aba abb abc abd abe abf abg abh abi abj abk ab abl abm abn abo abp abq abr abs abt abu abv abw abx aby abz aca acb acd ace acf ach aci ack acl acm acn acp acq acr acs act acu acv acw acx acy acz ada adb add ade adf adg adh adi adj adl adn ado adp adq adr ads adt adu adw adx ady adz ae aea aeb aec aed aee aek ael aem aen aeq aer aes aeu aew aey aez af afa afb afd afe afg afh afi afk afn afo afp afr af afs aft afu afz aga agb agc agd age agf agg agh agi agj agk agl agm agn ago agq agr ags agt agu agv agw agx agy agz aha ahb ahg ahh ahi ahk ahl ahm ahn aho ahp ahr ahs aht aia aib aic aid aie aif aig aih aii aij aik ail aim ain aio aip aiq air ais ait aiw aix aiy aja ajg aji ajn ajp ajt aju ajw ajz ak aka ak akb akc akd ake akf akg akh aki akj akk akl akm ako akp akq akr aks akt aku akv akw akx aky akz ala alc ald ale alf alg alh ali alj alk all alm aln alo alp alq alr als alt alu alw alx aly alz am ama amb amc ame amf amg amh am ami amj amk aml amm amn amo amp amq amr ams amt amu amv amw amx amy amz an ana anb anc and ane anf ang anh ani anj ank anl anm ann ano anp anq anr ans ant anu anv anw anx any anz aoa aob aoc aod aoe aof aog aoh aoi aoj aok aol aom aon aor aos aot aou aox aoz apa apb apc apd ape apf apg aph api apj apk apl apm apn apo app apq apr aps apt apu apv apw apx apy apz aqc aqd aqg aqm aqn aqp aqr aqz ar ara ar arb arc ard are arg an arh ari arj ark arl arn aro arp arq arr ars art aru arv arw arx ary arz as asa asb asc asd ase asf asg ash asi asj ask asl asm as asn aso asp asq asr ass ast asu asv asw asx asy asz ata atb atc atd ate atg ath ati atj atk atl atm atn ato atp atq atr ats att atu atv atw atx aty atz aua aub auc aud aue aug auh aui auj auk aul aum aun auo aup auq aur aus aut auu auw aux auy auz av ava av avb avd ave ae avi avk avl avm avn avo avs avt avu avv awa awb awc awe awg awh awi awk awm awn awo awr aws awt awu awv aww awx awy axb axe axg axk axl axm axx ay aya ayb ayc ayd aye ayg ayh ayi ayk ayl aym ay ayn ayo ayp ayq ayr ays ayt ayu ayy ayz az aza azb azd aze az azg azj azm azn azo azt azz ba baa bab bac bad bae baf bag bah bai baj bak ba bal bam bm ban bao bap bar bas bat bau bav baw bax bay bba bbb bbc bbd bbe bbf bbg bbh bbi bbj bbk bbl bbm bbn bbo bbp bbq bbr bbs bbt bbu bbv bbw bbx bby bbz bca bcb bcc bcd bce bcf bcg bch bci bcj bck bcl bcm bcn bco bcp bcq bcr bcs bct bcu bcv bcw bcy bcz bda bdb bdc bdd bde bdf bdg bdh bdi bdj bdk bdl bdm bdn bdo bdp bdq bdr bds bdt bdu bdv bdw bdx bdy bdz be bea beb bec bed bee bef beg beh bei bej bek bel be bem ben bn beo bep beq ber bes bet beu bev bew bex bey bez bfa bfb bfc bfd bfe bff bfg bfh bfi bfj bfk bfl bfm bfn bfo bfp bfq bfr bfs bft bfu bfw bfx bfy bfz bg bga bgb bgc bgd bge bgf bgg bgi bgj bgk bgl bgm bgn bgo bgp bgq bgr bgs bgt bgu bgv bgw bgx bgy bgz bh bha bhb bhc bhd bhe bhf bhg bhh bhi bhj bhl bhm bhn bho bhp bhq bhr bhs bht bhu bhv bhw bhx bhy bhz bi bia bib bic bid bie bif big bih bh bij bik bil bim bin bio bip biq bir bis bi bit biu biv biw bix biy biz bja bjb bjc bje bjf bjg bjh bji bjj bjk bjl bjm bjn bjo bjp bjr bjs bjt bju bjv bjw bjx bjy bjz bka bkc bkd bkf bkg bkh bki bkj bkk bkl bkm bkn bko bkp bkq bkr bks bkt bku bkv bkw bkx bky bkz bla blb blc bld ble blf blg blh bli blj blk bll blm bln blo blp blq blr bls blt blv blw blx bly blz bm bma bmb bmc bmd bme bmf bmg bmh bmi bmj bmk bml bmm bmn bmo bmp bmq bmr bms bmt bmu bmv bmw bmx bmy bmz bn bna bnb bnc bnd bne bnf bng bni bnj bnk bnl bnm bnn bno bnp bnq bnr bns bnt bnu bnv bnw bnx bny bnz bo boa bob bod bo boe bof bog boh boi boj bok bol bom bon boo bop boq bor bos bs bot bou bov bow box boy boz bpa bpb bpd bpg bph bpi bpj bpk bpl bpm bpn bpo bpp bpq bpr bps bpt bpu bpv bpw bpx bpy bpz bqa bqb bqc bqd bqf bqg bqh bqi bqj bqk bql bqm bqn bqo bqp bqq bqr bqs bqt bqu bqv bqw bqx bqy bqz br bra brb brc brd bre br brf brg brh bri brj brk brl brm brn bro brp brq brr brs brt bru brv brw brx bry brz bs bsa bsb bsc bse bsf bsg bsh bsi bsj bsk bsl bsm bsn bso bsp bsq bsr bss bst bsu bsv bsw bsx bsy bta btc btd bte btf btg bth bti btj btk btl btm btn bto btp btq btr bts btt btu btv btw btx bty btz bua bub buc bud bue buf bug buh bui buj buk bul bg bum bun buo bup buq bus but buu buv buw bux buy buz bva bvb bvc bvd bve bvf bvg bvh bvi bvj bvk bvl bvm bvn bvo bvp bvq bvr bvt bvu bvv bvw bvx bvy bvz bwa bwb bwc bwd bwe bwf bwg bwh bwi bwj bwk bwl bwm bwn bwo bwp bwq bwr bws bwt bwu bww bwx bwy bwz bxa bxb bxc bxd bxe bxf bxg bxh bxi bxj bxk bxl bxm bxn bxo bxp bxq bxr bxs bxu bxv bxw bxx bxz bya byb byc byd bye byf byg byh byi byj byk byl bym byn byo byp byq byr bys byt byv byw byx byy byz bza bzb bzc bzd bze bzf bzg bzh bzi bzj bzk bzl bzm bzn bzo bzp bzq bzr bzs bzt bzu bzv bzw bzx bzy bzz ca caa cab cac cad cae caf cag cah cai caj cak cal cam can cao cap caq car cas cat ca cau cav caw cax cay caz cbb cbc cbd cbe cbg cbh cbi cbj cbk cbl cbn cbo cbr cbs cbt cbu cbv cbw cby cca ccc ccd cce ccg cch ccj ccl ccm cco ccp ccr cda cde cdf cdg cdh cdi cdj cdm cdn cdo cdr cds cdy cdz ce cea ceb ceg cek cel cen ces cs cet cfa cfd cfg cfm cga cgc cgg cgk ch cha ch chb chc chd che ce chf chg chh chj chk chl chm chn cho chp chq chr cht chu cu chv cv chw chx chy chz cia cib cic cid cie cih cik cim cin cip cir ciw ciy cja cje cjh cji cjk cjm cjn cjo cjp cjs cjv cjy ckb ckh ckl ckn cko ckq ckr cks ckt cku ckv ckx cky ckz cla clc cld cle clh cli clj clk cll clm clo clt clu clw cly cma cmc cme cmg cmi cml cmm cmn cmo cmr cms cmt cna cnb cnc cng cnh cni cnk cnl cno cns cnt cnu cnw cnx co coa cob coc cod coe cof cog coh coj cok col com con coo cop coq cor kw cos co cot cou cov cow cox coy coz cpa cpb cpc cpe cpf cpg cpi cpn cpo cpp cps cpu cpx cpy cqd cqu cr cra crb crc crd cre cr crf crg crh cri crj crk crl crm crn cro crp crq crr crs crt crv crw crx cry crz cs csa csb csc csd cse csf csg csh csi csj csk csl csm csn cso csq csr css cst csv csw csy csz cta ctc ctd cte ctg cth ctl ctm ctn cto ctp cts ctt ctu ctz cu cua cub cuc cug cuh cui cuj cuk cul cum cuo cup cuq cur cus cut cuu cuv cuw cux cv cvg cvn cwa cwb cwd cwe cwg cwt cy cya cyb cym cy cyo czh czk czn czo czt da daa dac dad dae dag dah dai daj dak dal dam dan da dao daq dar das dau dav daw dax day daz dba dbb dbd dbe dbf dbg dbi dbj dbl dbm dbn dbo dbp dbq dbr dbt dbu dbv dbw dby dcc dcr dda ddd dde ddg ddi ddj ddn ddo ddr dds ddw de dec ded dee def deg deh dei dek del dem den dep deq der des deu de dev dez dga dgb dgc dgd dge dgg dgh dgi dgk dgl dgn dgo dgr dgs dgt dgu dgw dgx dgz dhd dhg dhi dhl dhm dhn dho dhr dhs dhu dhv dhw dhx dia dib dic did dif dig dih dii dij dik dil dim din dio dip diq dir dis dit diu div dv diw dix diy diz dja djb djc djd dje djf dji djj djk djm djn djo djr dju djw dka dkk dkr dks dkx dlg dlk dlm dln dma dmb dmc dmd dme dmg dmk dml dmm dmo dmr dms dmu dmv dmw dmx dmy dna dnd dne dng dni dnj dnk dnn dnr dnt dnu dnv dnw dny doa dob doc doe dof doh doi dok dol don doo dop doq dor dos dot dov dow dox doy doz dpp dra drb drc drd dre drg dri drl drn dro drq drr drs drt dru dry dsb dse dsh dsi dsl dsn dso dsq dta dtb dtd dth dti dtk dtm dto dtp dtr dts dtt dtu dty dua dub duc dud due duf dug duh dui duj duk dul dum dun duo dup duq dur dus duu duv duw dux duy duz dv dva dwa dwr dws dww dya dyb dyd dyg dyi dym dyn dyo dyu dyy dz dza dzd dze dzg dzl dzn dzo dz eaa ebg ebk ebo ebr ebu ecr ecs ecy ee eee efa efe efi ega egl ego egy ehu eip eit eiv eja eka ekc eke ekg eki ekk ekl ekm eko ekp ekr eky el ele elh eli elk ell el elm elo elu elx ema emb eme emg emi emk emm emn emo emp ems emu emw emx emy en ena enb enc end enf eng en enh enm enn eno enq enr enu env enw eo eot epi epo eo era erg erh eri erk ero err ers ert erw es ese esh esi esk esl esm esn eso esq ess est et esu et etb etc eth etn eto etr ets ett etu etx etz eu eus eu eve evh evn ewe ee ewo ext eya eyo eza eze fa faa fab fad faf fag fah fai faj fak fal fam fan fao fo fap far fas fa fat fau fax fay faz fbl fcs fer ff ffi ffm fgr fi fia fie fij fj fil fin fi fip fir fit fiu fiw fj fkk fkv fla flh fli fll fln flr fly fmp fmu fng fni fo fod foi fom fon for fos fpe fqs fr fra fr frc frd frk frm fro frp frq frr frs frt fry fy fse fsl fss fub fuc fud fue fuf fuh fui fuj ful ff fum fun fuq fur fut fuu fuv fuy fvr fwa fwe fy ga gaa ga gab gac gad gae gaf gag gah gai gaj gak gal gam gan gao gap gaq gar gas gat gau gaw gax gay gaz gba gbb gbd gbe gbf gbg gbh gbi gbj gbk gbl gbm gbn gbo gbp gbq gbr gbs gbu gbv gbw gbx gby gbz gcc gcd gce gcf gcl gcn gcr gct gd gda gdb gdc gdd gde gdf gdg gdh gdi gdj gdk gdl gdm gdn gdo gdq gdr gds gdt gdu gdx gea geb gec ged geg geh gei gej gek gel gem geq ges gew gex gey gez gfk gft gfx gga ggb ggd gge ggg ggk ggl ggm ggn ggo ggt ggu ggw gha ghc ghe ghh ghk ghl ghn gho ghr ghs ght gia gib gic gid gig gih gil gim gin gip giq gir gis git giu giw gix giy giz gji gjk gjm gjn gju gka gke gkn gko gkp gl gla gd glc gld gle ga glg gl glh gli glj glk gll glo glr glu glv gv glw gly gma gmb gmd gmh gml gmm gmn gmu gmv gmx gmy gmz gn gna gnb gnc gnd gne gng gnh gni gnk gnl gnm gnn gno gnq gnr gnt gnu gnw gnz goa gob goc god goe gof gog goh goi goj gok gol gom gon goo gop goq gor gos got gou gow gox goy goz gpa gpe gpn gqa gqi gqn gqr gqu gra grb grc grd grg grh gri grj grm grn gn gro grq grr grs grt gru grv grw grx gry grz gse gsg gsl gsm gsn gso gsp gss gsw gta gti gtu gu gua gub guc gud gue guf gug guh gui guj gu guk gul gum gun guo gup guq gur gus gut guu guv guw gux guz gv gva gvc gve gvf gvj gvl gvm gvn gvo gvp gvr gvs gvy gwa gwb gwc gwd gwe gwf gwg gwi gwj gwm gwn gwr gwt gwu gww gwx gxx gya gyb gyd gye gyf gyg gyi gyl gym gyn gyr gyy gza gzi gzn ha haa hab hac had hae haf hag hah hai haj hak hal ham han hao hap haq har has hat ht hau ha hav haw hax hay haz hba hbb hbn hbo hbs hbu hca hch hdn hds hdy he hea heb he hed heg heh hei hem her hz hgm hgw hhi hhr hhy hi hia hib hid hif hig hih hii hij hik hil him hin hi hio hir hit hiw hix hji hka hke hkk hks hla hlb hld hle hlt hlu hma hmb hmc hmd hme hmf hmg hmh hmi hmj hmk hml hmm hmn hmo ho hmp hmq hmr hms hmt hmu hmv hmw hmy hmz hna hnd hne hnh hni hnj hnn hno hns hnu ho hoa hob hoc hod hoe hoh hoi hoj hol hom hoo hop hor hos hot hov how hoy hoz hpo hps hr hra hrc hre hrk hrm hro hrp hrt hru hrv hr hrw hrx hrz hsb hsh hsl hsn hss ht hti hto hts htu htx hu hub huc hud hue huf hug huh hui huj huk hul hum hun hu huo hup huq hur hus hut huu huv huw hux huy huz hvc hve hvk hvn hvv hwa hwc hwo hy hya hye hy hz ia iai ian iap iar iba ibb ibd ibe ibg ibl ibm ibn ibo ig ibr ibu iby ica ich icl icr id ida idb idc idd ide idi ido io idr ids idt idu ie ifa ifb ife iff ifk ifm ifu ify ig igb ige igg igl igm ign igo igs igw ihb ihi ihp ihw ii iii ii iin ijc ije ijj ijn ijo ijs ik ike iki ikk ikl iko ikp ikr ikt iku iu ikv ikw ikx ikz ila ilb ile ie ilg ili ilk ill ilo ils ilu ilv ima ime imi iml imn imo imr ims imy ina ia inb inc ind id ine ing inh inj inl inm inn ino inp ins int inz io ior iou iow ipi ipk ik ipo iqu iqw ira ire irh iri irk irn iro irr iru irx iry is isa isc isd ise isg ish isi isk isl is ism isn iso isr ist isu it ita it itb ite iti itk itl itm ito itr its itt itv itw itx ity itz iu ium ivb ivv iwk iwm iwo iws ixc ixl iya iyo iyx izh izr izz ja jaa jab jac jad jae jaf jah jaj jak jal jam jan jao jaq jas jat jau jav jv jax jay jaz jbe jbi jbj jbk jbn jbo jbr jbt jbu jbw jcs jct jda jdg jdt jeb jee jeg jeh jei jek jel jen jer jet jeu jgb jge jgk jgo jhi jhs jia jib jic jid jie jig jih jii jil jim jio jiq jit jiu jiv jiy jjr jkm jko jkp jkr jku jle jls jma jmb jmc jmd jmi jml jmn jmr jms jmw jmx jna jnd jng jni jnj jnl jns job jod jor jos jow jpa jpn ja jpr jqr jra jrb jrr jrt jru jsl jua jub juc jud juh jui juk jul jum jun juo jup jur jus jut juu juw juy jv jvd jvn jwi jya jye jyy ka kaa kab kac kad kae kaf kag kah kai kaj kak kal kl kam kan kn kao kap kaq kar kas ks kat ka kau kr kav kaw kax kay kaz kk kba kbb kbc kbd kbe kbf kbg kbh kbi kbj kbk kbl kbm kbn kbo kbp kbq kbr kbs kbt kbu kbv kbw kbx kby kbz kca kcb kcc kcd kce kcf kcg kch kci kcj kck kcl kcm kcn kco kcp kcq kcr kcs kct kcu kcv kcw kcx kcy kcz kda kdc kdd kde kdf kdg kdh kdi kdj kdk kdl kdm kdn kdp kdq kdr kdt kdu kdw kdx kdy kdz kea keb kec ked kee kef keg keh kei kej kek kel kem ken keo kep keq ker kes ket keu kev kew kex key kez kfa kfb kfc kfd kfe kff kfg kfh kfi kfj kfk kfl kfm kfn kfo kfp kfq kfr kfs kft kfu kfv kfw kfx kfy kfz kg kga kgb kgc kgd kge kgf kgg kgi kgj kgk kgl kgm kgn kgo kgp kgq kgr kgs kgt kgu kgv kgw kgx kgy kha khb khc khd khe khf khg khh khi khj khk khl khm km khn kho khp khq khr khs kht khu khv khw khx khy khz ki kia kib kic kid kie kif kig kih kii kij kik ki kil kim kin rw kio kip kiq kir ky kis kit kiu kiv kiw kix kiy kiz kj kja kjb kjc kjd kje kjf kjg kjh kji kjj kjk kjl kjm kjn kjo kjp kjq kjr kjs kjt kju kjx kjy kjz kk kka kkb kkc kkd kke kkf kkg kkh kki kkj kkk kkl kkm kkn kko kkp kkq kkr kks kkt kku kkv kkw kkx kky kkz kl kla klb klc kld kle klf klg klh kli klj klk kll klm kln klo klp klq klr kls klt klu klv klw klx kly klz km kma kmb kmc kmd kme kmf kmg kmh kmi kmj kmk kml kmm kmn kmo kmp kmq kmr kms kmt kmu kmv kmw kmx kmy kmz kn kna knb knc knd kne knf kng kni knj knk knl knm knn kno knp knq knr kns knt knu knv knw knx kny knz ko koa koc kod koe kof kog koh koi koj kok kol kom kv kon kg koo kop koq kor ko kos kot kou kov kow kox koy koz kpa kpb kpc kpd kpe kpf kpg kph kpi kpj kpk kpl kpm kpn kpo kpq kpr kps kpt kpu kpv kpw kpx kpy kpz kqa kqb kqc kqd kqe kqf kqg kqh kqi kqj kqk kql kqm kqn kqo kqp kqq kqr kqs kqt kqu kqv kqw kqx kqy kqz kr kra krb krc krd kre krf krh kri krj krk krl krm krn kro krp krr krs krt kru krv krw krx kry krz ks ksa ksb ksc ksd kse ksf ksg ksh ksi ksj ksk ksl ksm ksn kso ksp ksq ksr kss kst ksu ksv ksw ksx ksy ksz kta ktb ktc ktd kte ktf ktg kth kti ktj ktk ktl ktm ktn kto ktp ktq ktr kts ktt ktu ktv ktw ktx kty ktz ku kua kj kub kuc kud kue kuf kug kuh kui kuj kuk kul kum kun kuo kup kuq kur ku kus kut kuu kuv kuw kux kuy kuz kv kva kvb kvc kvd kve kvf kvg kvh kvi kvj kvk kvl kvm kvn kvo kvp kvq kvr kvs kvt kvu kvv kvw kvx kvy kvz kw kwa kwb kwc kwd kwe kwf kwg kwh kwi kwj kwk kwl kwm kwn kwo kwp kwq kwr kws kwt kwu kwv kww kwx kwy kwz kxa kxb kxc kxd kxe kxf kxh kxi kxj kxk kxl kxm kxn kxo kxp kxq kxr kxs kxt kxu kxv kxw kxx kxy kxz ky kya kyb kyc kyd kye kyf kyg kyh kyi kyj kyk kyl kym kyn kyo kyp kyq kyr kys kyt kyu kyv kyw kyx kyy kyz kza kzb kzc kzd kze kzf kzg kzi kzj kzk kzl kzm kzn kzo kzp kzq kzr kzs kzt kzu kzv kzw kzx kzy kzz la laa lab lac lad lae laf lag lah lai laj lak lal lam lan lao lo lap laq lar las lat la lau lav lv law lax lay laz lb lba lbb lbc lbe lbf lbg lbi lbj lbk lbl lbm lbn lbo lbq lbr lbs lbt lbu lbv lbw lbx lby lbz lcc lcd lce lcf lch lcl lcm lcp lcq lcs lda ldb ldd ldg ldh ldi ldj ldk ldl ldm ldn ldo ldp ldq lea leb lec led lee lef leg leh lei lej lek lel lem len leo lep leq ler les let leu lev lew lex ley lez lfa lfn lg lga lgb lgg lgh lgi lgk lgl lgm lgn lgq lgr lgt lgu lgz lha lhh lhi lhl lhm lhn lhp lhs lht lhu li lia lib lic lid lie lif lig lih lii lij lik lil lim li lin ln lio lip liq lir lis lit lt liu liv liw lix liy liz lja lje lji ljl ljp ljw ljx lka lkb lkc lkd lke lkh lki lkj lkl lkm lkn lko lkr lks lkt lku lky lla llb llc lld lle llf llg llh lli llj llk lll llm lln llo llp llq lls llu llx lma lmb lmc lmd lme lmf lmg lmh lmi lmj lmk lml lmm lmn lmo lmp lmq lmr lmu lmv lmw lmx lmy lmz ln lna lnb lnd lng lnh lni lnj lnl lnm lnn lno lns lnu lnw lnz lo loa lob loc loe lof log loh loi loj lok lol lom lon loo lop loq lor los lot lou lov low lox loy loz lpa lpe lpn lpo lpx lra lrc lre lrg lri lrk lrl lrm lrn lro lrr lrt lrv lrz lsa lsd lse lsg lsh lsi lsl lsm lso lsp lsr lss lst lsy lt ltc ltg lti ltn lto lts ltu ltz lb lu lua lub lu luc lud lue luf lug lg lui luj luk lul lum lun luo lup luq lur lus lut luu luv luw luy luz lv lva lvk lvs lvu lwa lwe lwg lwh lwl lwm lwo lwt lwu lww lya lyg lyn lzh lzl lzn lzz maa mab mad mae maf mag mah mh mai maj mak mal ml mam man map maq mar mr mas mat mau mav maw max maz mba mbb mbc mbd mbe mbf mbh mbi mbj mbk mbl mbm mbn mbo mbp mbq mbr mbs mbt mbu mbv mbw mbx mby mbz mca mcb mcc mcd mce mcf mcg mch mci mcj mck mcl mcm mcn mco mcp mcq mcr mcs mct mcu mcv mcw mcx mcy mcz mda mdb mdc mdd mde mdf mdg mdh mdi mdj mdk mdl mdm mdn mdp mdq mdr mds mdt mdu mdv mdw mdx mdy mdz mea meb mec med mee mef meh mei mej mek mel mem men meo mep meq mer mes met meu mev mew mey mez mfa mfb mfc mfd mfe mff mfg mfh mfi mfj mfk mfl mfm mfn mfo mfp mfq mfr mfs mft mfu mfv mfw mfx mfy mfz mg mga mgb mgc mgd mge mgf mgg mgh mgi mgj mgk mgl mgm mgn mgo mgp mgq mgr mgs mgt mgu mgv mgw mgy mgz mh mha mhb mhc mhd mhe mhf mhg mhh mhi mhj mhk mhl mhm mhn mho mhp mhq mhr mhs mht mhu mhw mhx mhy mhz mi mia mib mic mid mie mif mig mih mii mij mik mil mim min mio mip miq mir mit miu miw mix miy miz mjc mjd mje mjg mjh mji mjj mjk mjl mjm mjn mjo mjp mjq mjr mjs mjt mju mjv mjw mjx mjy mjz mk mka mkb mkc mkd mk mke mkf mkg mkh mki mkj mkk mkl mkm mkn mko mkp mkq mkr mks mkt mku mkv mkw mkx mky mkz ml mla mlb mlc mle mlf mlg mg mlh mli mlj mlk mll mlm mln mlo mlp mlq mlr mls mlt mt mlu mlv mlw mlx mlz mma mmb mmc mmd mme mmf mmg mmh mmi mmj mmk mml mmm mmn mmo mmp mmq mmr mmt mmu mmv mmw mmx mmy mmz mn mna mnb mnc mnd mne mnf mng mnh mni mnj mnk mnl mnm mnn mno mnp mnq mnr mns mnu mnv mnw mnx mny mnz mo moa moc mod moe mog moh moi moj mok mol mo mom mon mn moo mop moq mor mos mot mou mov mow mox moy moz mpa mpb mpc mpd mpe mpg mph mpi mpj mpk mpl mpm mpn mpo mpp mpq mpr mps mpt mpu mpv mpw mpx mpy mpz mqa mqb mqc mqe mqf mqg mqh mqi mqj mqk mql mqm mqn mqo mqp mqq mqr mqs mqt mqu mqv mqw mqx mqy mqz mr mra mrb mrc mrd mre mrf mrg mrh mri mi mrj mrk mrl mrm mrn mro mrp mrq mrr mrs mrt mru mrv mrw mrx mry mrz ms msa ms msb msc msd mse msf msg msh msi msj msk msl msm msn mso msp msq msr mss msu msv msw msx msy msz mt mta mtb mtc mtd mte mtf mtg mth mti mtj mtk mtl mtm mtn mto mtp mtq mtr mts mtt mtu mtv mtw mtx mty mua mub muc mud mue mug muh mui muj muk mum mun muo mup muq mur mus mut muu muv mux muy muz mva mvb mvd mve mvf mvg mvh mvi mvk mvl mvm mvn mvo mvp mvq mvr mvs mvt mvu mvv mvw mvx mvy mvz mwa mwb mwc mwe mwf mwg mwh mwi mwj mwk mwl mwm mwn mwo mwp mwq mwr mws mwt mwu mwv mww mwx mwy mwz mxa mxb mxc mxd mxe mxf mxg mxh mxi mxj mxk mxl mxm mxn mxo mxp mxq mxr mxs mxt mxu mxv mxw mxx mxy mxz my mya my myb myc myd mye myf myg myh myi myj myk myl mym myn myo myp myr mys myu myv myw myx myy myz mza mzb mzc mzd mze mzg mzh mzi mzj mzk mzl mzm mzn mzo mzp mzq mzr mzs mzt mzu mzv mzw mzx mzy mzz na naa nab nac nad nae naf nag nah nai naj nak nal nam nan nao nap naq nar nas nat nau na nav nv naw nax nay naz nb nba nbb nbc nbd nbe nbg nbh nbi nbj nbk nbl nr nbm nbn nbo nbp nbq nbr nbs nbt nbu nbv nbw nby nca ncb ncc ncd nce ncf ncg nch nci ncj nck ncl ncm ncn nco ncp ncr ncs nct ncu ncx ncz nd nda ndb ndc ndd nde nd ndf ndg ndh ndi ndj ndk ndl ndm ndn ndo ng ndp ndq ndr nds ndt ndu ndv ndw ndx ndy ndz ne nea neb nec ned nee nef neg neh nei nej nek nem nen neo nep ne neq ner nes net neu nev new nex ney nez nfa nfd nfl nfr nfu ng nga ngb ngc ngd nge ngg ngh ngi ngj ngk ngl ngm ngn ngo ngp ngq ngr ngs ngt ngu ngv ngw ngx ngy ngz nha nhb nhc nhd nhe nhf nhg nhh nhi nhk nhm nhn nho nhp nhq nhr nht nhu nhv nhw nhx nhy nhz nia nib nic nid nie nif nig nih nii nij nik nil nim nin nio niq nir nis nit niu niv niw nix niy niz nja njb njd njh nji njj njl njm njn njo njr njs njt nju njx njy njz nka nkb nkc nkd nke nkf nkg nkh nki nkj nkk nkm nkn nko nkp nkq nkr nks nkt nku nkv nkw nkx nkz nl nla nlc nld nl nle nlg nli nlj nlk nll nlo nlq nlu nlv nlw nlx nly nlz nma nmb nmc nmd nme nmf nmg nmh nmi nmj nmk nml nmm nmn nmo nmp nmq nmr nms nmt nmu nmv nmw nmx nmy nmz nn nna nnb nnc nnd nne nnf nng nnh nni nnj nnk nnl nnm nnn nno nn nnp nnq nnr nns nnt nnu nnv nnw nnx nny nnz no noa nob nb noc nod noe nof nog noh noi noj nok nol nom non nop noq nor no nos not nou nov now noy noz npa npb npg nph npi npl npn npo nps npu npy nqg nqk nqm nqn nqo nqq nqy nr nra nrb nrc nre nrg nri nrk nrl nrm nrn nrp nrr nrt nru nrx nrz nsa nsc nsd nse nsf nsg nsh nsi nsk nsl nsm nsn nso nsp nsq nsr nss nst nsu nsv nsw nsx nsy nsz nte ntg nti ntj ntk ntm nto ntp ntr nts ntu ntw ntx nty ntz nua nub nuc nud nue nuf nug nuh nui nuj nuk nul num nun nuo nup nuq nur nus nut nuu nuv nuw nux nuy nuz nv nvh nvm nvo nwa nwb nwc nwe nwg nwi nwm nwo nwr nwx nwy nxa nxd nxe nxg nxi nxk nxl nxm nxn nxq nxr nxu nxx ny nya ny nyb nyc nyd nye nyf nyg nyh nyi nyj nyk nyl nym nyn nyo nyp nyq nyr nys nyt nyu nyv nyw nyx nyy nza nzb nzi nzk nzm nzs nzu nzy nzz oaa oac oar oav obi obk obl obm obo obr obt obu oc oca och oci oc oco ocu oda odk odt odu ofo ofs ofu ogb ogc oge ogg ogo ogu oht ohu oia oin oj ojb ojc ojg oji oj ojp ojs ojv ojw oka okb okd oke okg okh oki okj okk okl okm okn oko okr oks oku okv okx ola old ole olk olm olo olr om oma omb omc ome omg omi omk oml omn omo omp omr omt omu omw omx ona onb one ong oni onj onk onn ono onp onr ons ont onu onw onx ood oog oon oor oos opa opk opm opo opt opy or ora orc ore org orh ori or orm om orn oro orr ors ort oru orv orw orx ory orz os osa osc osi oso osp oss os ost osu osx ota otb otd ote oti otk otl otm otn oto otq otr ots ott otu otw otx oty otz oua oub oue oui oum oun owi owl oyb oyd oym oyy ozm pa paa pab pac pad pae paf pag pah pai pak pal pam pan pa pao pap paq par pas pat pau pav paw pax pay paz pbb pbc pbe pbf pbg pbh pbi pbl pbn pbo pbp pbr pbs pbt pbu pbv pby pca pcb pcc pcd pce pcf pcg pch pci pcj pck pcl pcm pcn pcp pcw pda pdc pdi pdn pdo pdt pdu pea peb ped pee pef peg peh pei pej pek pel pem peo pep peq pes pev pex pey pez pfa pfe pfl pga pgg pgi pgk pgl pgn pgs pgu pha phd phg phh phi phk phl phm phn pho phq phr pht phu phv phw pi pia pib pic pid pie pif pig pih pii pij pil pim pin pio pip pir pis pit piu piv piw pix piy piz pjt pka pkb pkc pkg pkh pkn pko pkp pkr pks pkt pku pl pla plb plc pld ple plg plh pli pi plj plk pll pln plo plp plq plr pls plt plu plv plw ply plz pma pmb pmc pmd pme pmf pmh pmi pmj pmk pml pmm pmn pmo pmq pmr pms pmt pmu pmw pmx pmy pmz pna pnb pnc pne png pnh pni pnj pnk pnl pnm pnn pno pnp pnq pnr pns pnt pnu pnv pnw pnx pny pnz poc pod poe pof pog poh poi pok pol pl pom pon poo pop poq por pt pos pot pov pow pox poy ppa ppe ppi ppk ppl ppm ppn ppo ppp ppq pps ppt ppu pqa pqm pra prb prc prd pre prf prg prh pri prk prl prm prn pro prp prq prr prs prt pru prw prx pry prz ps psa psc psd pse psg psh psi psl psm psn pso psp psq psr pss pst psu psw psy pt pta pth pti ptn pto ptp ptr ptt ptu ptv ptw pty pua pub puc pud pue puf pug pui puj puk pum puo pup puq pur pus ps put puu puw pux puy puz pwa pwb pwg pwi pwm pwn pwo pwr pww pxm pye pym pyn pys pyu pyx pyy pzn qu qua qub quc qud que qu quf qug quh qui quk qul qum qun qup quq qur qus quv quw qux quy quz qva qvc qve qvh qvi qvj qvl qvm qvn qvo qvp qvs qvw qvy qvz qwa qwc qwh qwm qws qwt qxa qxc qxh qxl qxn qxo qxp qxq qxr qxs qxt qxu qxw qya qyp raa rab rac rad raf rag rah rai raj rak ral ram ran rao rap raq rar ras rat rau rav raw rax ray raz rbb rbk rbl rbp rcf rdb rea reb ree reg rei rej rel rem ren rer res ret rey rga rge rgk rgn rgr rgs rgu rhg rhp ria rie rif ril rim rin rir rit riu rjg rji rjs rka rkb rkh rki rkm rkt rkw rm rma rmb rmc rmd rme rmf rmg rmh rmi rmk rml rmm rmn rmo rmp rmq rms rmt rmu rmv rmw rmx rmy rmz rn rna rnd rng rnl rnn rnp rnr rnw ro roa rob roc rod roe rof rog roh rm rol rom ron ro roo rop ror rou row rpn rpt rri rro rrt rsb rsi rsl rtc rth rtm rtw ru rub ruc rue ruf rug ruh rui ruk run rn ruo rup ruq rus ru rut ruu ruy ruz rw rwa rwk rwm rwo rwr rxd rxw ryn rys ryu sa saa sab sac sad sae saf sag sg sah sai saj sak sal sam san sa sao sap saq sar sas sat sau sav saw sax say saz sba sbb sbc sbd sbe sbf sbg sbh sbi sbj sbk sbl sbm sbn sbo sbp sbq sbr sbs sbt sbu sbv sbw sbx sby sbz sc scb sce scf scg sch sci sck scl scn sco scp scq scs scu scv scw scx sd sda sdb sdc sde sdf sdg sdh sdj sdk sdl sdm sdn sdo sdp sdr sds sdt sdu sdx sdz se sea seb sec sed see sef seg seh sei sej sek sel sem sen seo sep seq ser ses set seu sev sew sey sez sfb sfe sfm sfs sfw sg sga sgb sgc sgd sge sgg sgh sgi sgj sgk sgm sgn sgo sgp sgr sgs sgt sgu sgw sgx sgy sgz sha shb shc shd she shg shh shi shj shk shl shm shn sho shp shq shr shs sht shu shv shw shx shy shz si sia sib sid sie sif sig sih sii sij sik sil sim sin si sio sip siq sir sis sit siu siv siw six siy siz sja sjb sjd sje sjg sjk sjl sjm sjn sjo sjp sjr sjs sjt sju sjw sk ska skb skc skd ske skf skg skh ski skj skk skm skn sko skp skq skr sks skt sku skv skw skx sky skz sl sla slc sld sle slf slg slh sli slj slk sk sll slm sln slp slq slr sls slt slu slv sl slw slx sly slz sm sma smb smc smd sme se smf smg smh smi smj smk sml smm smn smo sm smp smq smr sms smt smu smv smw smx smy smz sn sna sn snb snc snd sd sne snf sng snh sni snj snk snl snm snn sno snp snq snr sns snu snv snw snx sny snz so soa sob soc sod soe sog soh soi soj sok sol som so son soo sop soq sor sos sot st sou sov sow sox soy soz spa es spb spc spd spe spg spi spk spl spm spo spp spq spr sps spt spu spv spx spy sq sqa sqh sqi sq sqk sqm sqn sqo sqq sqr sqs sqt squ sr sra srb src srd sc sre srf srg srh sri srk srl srm srn sro srp sr srq srr srs srt sru srv srw srx sry srz ss ssa ssb ssc ssd sse ssf ssg ssh ssi ssj ssk ssl ssm ssn sso ssp ssq ssr sss sst ssu ssv ssw ss ssx ssy ssz st sta stb std ste stf stg sth sti stj stk stl stm stn sto stp stq str sts stt stu stv stw sty su sua sub suc sue sug sui suj suk sun su suq sur sus sut suv suw sux suy suz sv sva svb svc sve svk svm svr svs svx sw swa sw swb swc swe sv swf swg swh swi swj swk swl swm swn swo swp swq swr sws swt swu swv sww swx swy sxb sxc sxe sxg sxk sxl sxm sxn sxo sxr sxs sxu sxw sya syb syc syi syk syl sym syn syo syr sys syw syy sza szb szc szd sze szg szl szn szp szv szw ta taa tab tac tad tae taf tag tah ty tai taj tak tal tam ta tan tao tap taq tar tas tat tt tau tav taw tax tay taz tba tbb tbc tbd tbe tbf tbg tbh tbi tbj tbk tbl tbm tbn tbo tbp tbr tbs tbt tbu tbv tbw tbx tby tbz tca tcb tcc tcd tce tcf tcg tch tci tck tcl tcm tcn tco tcp tcq tcs tct tcu tcw tcx tcy tcz tda tdb tdc tdd tde tdf tdg tdh tdi tdj tdk tdl tdn tdo tdq tdr tds tdt tdu tdv tdx tdy te tea teb tec ted tee tef teg teh tei tek tel te tem ten teo tep teq ter tes tet teu tev tew tex tey tfi tfn tfo tfr tft tg tga tgb tgc tgd tge tgf tgh tgi tgj tgk tg tgl tl tgn tgo tgp tgq tgr tgs tgt tgu tgv tgw tgx tgy tgz th tha th thc thd the thf thh thi thk thl thm thn thp thq thr ths tht thu thv thw thx thy thz ti tia tic tid tif tig tih tii tij tik til tim tin tio tip tiq tir ti tis tit tiu tiv tiw tix tiy tiz tja tjg tji tjl tjm tjn tjo tjs tju tjw tk tka tkb tkd tke tkf tkg tkl tkm tkn tkp tkq tkr tks tkt tku tkw tkx tkz tl tla tlb tlc tld tlf tlg tlh tli tlj tlk tll tlm tln tlo tlp tlq tlr tls tlt tlu tlv tlx tly tma tmb tmc tmd tme tmf tmg tmh tmi tmj tmk tml tmm tmn tmo tmp tmq tmr tms tmt tmu tmv tmw tmy tmz tn tna tnb tnc tnd tne tng tnh tni tnk tnl tnm tnn tno tnp tnq tnr tns tnt tnu tnv tnw tnx tny tnz to tob toc tod toe tof tog toh toi toj tol tom ton to too top toq tor tos tou tov tow tox toy toz tpa tpc tpe tpf tpg tpi tpj tpk tpl tpm tpn tpo tpp tpq tpr tpt tpu tpv tpw tpx tpy tpz tqb tql tqm tqn tqo tqp tqq tqr tqt tqu tqw tr tra trb trc trd tre trf trg trh tri trj trl trm trn tro trp trq trr trs trt tru trv trw trx try trz ts tsa tsb tsc tsd tse tsf tsg tsh tsi tsj tsk tsl tsm tsn tn tso ts tsp tsq tsr tss tst tsu tsv tsw tsx tsy tsz tt tta ttb ttc ttd tte ttf ttg tth tti ttj ttk ttl ttm ttn tto ttp ttq ttr tts ttt ttu ttv ttw tty ttz tua tub tuc tud tue tuf tug tuh tui tuj tuk tk tul tum tun tuo tup tuq tur tr tus tut tuu tuv tux tuy tuz tva tvd tve tvk tvl tvm tvn tvo tvs tvt tvu tvw tvy tw twa twb twc twd twe twf twg twh twi tw twl twm twn two twp twq twr twt twu tww twx twy txa txb txc txe txg txh txi txm txn txo txq txr txs txt txu txx txy ty tya tye tyh tyi tyj tyl tyn typ tyr tys tyt tyu tyv tyx tyz tza tzh tzj tzl tzm tzn tzo tzx uam uan uar uba ubi ubl ubr ubu uby uda ude udg udi udj udl udm udu ues ufi ug uga ugb uge ugn ugo ugy uha uhn uig ug uis uiv uji uk uka ukg ukh ukl ukp ukq ukr uk uks uku ukw uky ula ulb ulc ule ulf uli ulk ull ulm uln ulu ulw uma umb umc umd umg umi umm umn umo ump umr ums umu una une ung unk unm unn unr unu unx unz uok upi upv ur ura urb urc urd ur ure urf urg urh uri urk url urm urn uro urp urr urt uru urv urw urx ury urz usa ush usi usk usp usu uta ute utp utr utu uum uun uur uuu uve uvh uvl uwa uya uz uzb uz uzn uzs vaa vae vaf vag vah vai vaj val vam van vao vap var vas vau vav vay vbb vbk ve vec ved vel vem ven ve veo vep ver vgr vgt vi vic vid vie vi vif vig vil vin vis vit viv vka vki vkj vkk vkl vkm vko vkp vkt vku vlp vls vma vmb vmc vmd vme vmf vmg vmh vmi vmj vmk vml vmm vmp vmq vmr vms vmu vmv vmw vmx vmy vmz vnk vnm vnp vo vol vo vor vot vra vro vrs vrt vsi vsl vsv vto vum vun vut vwa wa waa wab wac wad wae waf wag wah wai waj wak wal wam wan wao wap waq war was wat wau wav waw wax way waz wba wbb wbe wbf wbh wbi wbj wbk wbl wbm wbp wbq wbr wbt wbv wbw wca wci wdd wdg wdj wdk wdu wdy wea wec wed weg weh wei wem wen weo wep wer wes wet weu wew wfg wga wgb wgg wgi wgo wgu wgy wha whg whk whu wib wic wie wif wig wih wii wij wik wil wim win wir wiu wiv wiy wja wji wka wkb wkd wkl wku wkw wky wla wlc wle wlg wli wlk wll wlm wln wa wlo wlr wls wlu wlv wlw wlx wly wma wmb wmc wmd wme wmh wmi wmm wmn wmo wms wmt wmw wmx wnb wnc wnd wne wng wni wnk wnm wnn wno wnp wnu wnw wny wo woa wob woc wod woe wof wog woi wok wol wo wom won woo wor wos wow woy wpc wra wrb wrd wrg wrh wri wrk wrl wrm wrn wro wrp wrr wrs wru wrv wrw wrx wry wrz wsa wsi wsk wsr wss wsu wsv wtf wth wti wtk wtm wtw wua wub wud wuh wul wum wun wur wut wuu wuv wux wuy wwa wwb wwo wwr www wxa wxw wya wyb wyi wym wyr wyy xaa xab xac xad xae xag xai xal xam xan xao xap xaq xar xas xat xau xav xaw xay xba xbb xbc xbd xbe xbg xbi xbj xbm xbn xbo xbp xbr xbw xbx xby xcb xcc xce xcg xch xcl xcm xcn xco xcr xct xcu xcv xcw xcy xda xdc xdk xdm xdy xeb xed xeg xel xem xep xer xes xet xeu xfa xga xgb xgd xgf xgg xgi xgl xgm xgr xgu xgw xh xha xhc xhd xhe xho xh xhr xht xhu xhv xib xii xil xin xip xir xiv xiy xjb xjt xka xkb xkc xkd xke xkf xkg xkh xki xkj xkk xkl xkn xko xkp xkq xkr xks xkt xku xkv xkw xkx xky xkz xla xlb xlc xld xle xlg xli xln xlo xlp xls xlu xly xma xmb xmc xmd xme xmf xmg xmh xmj xmk xml xmm xmn xmo xmp xmq xmr xms xmt xmu xmv xmw xmx xmy xmz xna xnb xng xnh xni xnk xnn xno xnr xns xnt xnu xny xnz xoc xod xog xoi xok xom xon xoo xop xor xow xpa xpc xpe xpg xpi xpj xpk xpm xpn xpo xpp xpq xpr xps xpt xpu xpy xqa xqt xra xrb xrd xre xrg xri xrm xrn xrq xrr xrt xru xrw xsa xsb xsc xsd xse xsh xsi xsj xsl xsm xsn xso xsp xsq xsr xss xsu xsv xsy xta xtb xtc xtd xte xtg xth xti xtj xtl xtm xtn xto xtp xtq xtr xts xtt xtu xtv xtw xty xtz xua xub xud xug xuj xul xum xun xuo xup xur xut xuu xve xvi xvn xvo xvs xwa xwc xwd xwe xwg xwj xwk xwl xwo xwr xwt xww xxb xxk xxm xxr xxt xya xyb xyj xyk xyl xyt xyy xzh xzm xzp yaa yab yac yad yae yaf yag yah yai yaj yak yal yam yan yao yap yaq yar yas yat yau yav yaw yax yay yaz yba ybb ybe ybh ybi ybj ybk ybl ybm ybn ybo ybx yby ych ycl ycn ycp yda ydd yde ydg ydk yds yea yec yee yei yej yel yer yes yet yeu yev yey yga ygi ygl ygm ygp ygr ygu ygw yha yhd yhl yi yia yid yi yif yig yih yii yij yik yil yim yin yip yiq yir yis yit yiu yiv yix yiz yka ykg yki ykk ykl ykm ykn yko ykr ykt yku yky yla ylb yle ylg yli yll ylm yln ylo ylr ylu yly ymb ymc ymd yme ymg ymh ymi ymk yml ymm ymn ymo ymp ymq ymr yms ymt ymx ymz yna ynd yne yng ynh ynk ynl ynn yno ynq yns ynu yo yob yog yoi yok yol yom yon yor yo yot yox yoy ypa ypb ypg yph ypk ypm ypn ypo ypp ypz yra yrb yre yri yrk yrl yrm yrn yrs yrw yry ysc ysd ysg ysl ysn yso ysp ysr yss ysy yta ytl ytp ytw yty yua yub yuc yud yue yuf yug yui yuj yuk yul yum yun yup yuq yur yut yuu yuw yux yuy yuz yva yvt ywa ywg ywl ywn ywq ywr ywt ywu yww yxa yxg yxl yxm yxu yxy yyr yyu yyz yzg yzk za zaa zab zac zad zae zaf zag zah zai zaj zak zal zam zao zap zaq zar zas zat zau zav zaw zax zay zaz zbc zbe zbl zbt zbw zca zch zdj zea zeg zeh zen zga zgb zgh zgm zgn zgr zh zha za zhb zhd zhi zhn zho zh zhw zia zib zik zil zim zin zir ziw ziz zka zkb zkd zkg zkh zkk zkn zko zkp zkr zkt zku zkv zkz zlj zlm zln zlq zma zmb zmc zmd zme zmf zmg zmh zmi zmj zmk zml zmm zmn zmo zmp zmq zmr zms zmt zmu zmv zmw zmx zmy zmz zna znd zne zng znk zns zoc zoh zom zoo zoq zor zos zpa zpb zpc zpd zpe zpf zpg zph zpi zpj zpk zpl zpm zpn zpo zpp zpq zpr zps zpt zpu zpv zpw zpx zpy zpz zqe zra zrg zrn zro zrp zrs zsa zsk zsl zsm zsr zsu zte ztg ztl ztm ztn ztp ztq zts ztt ztu ztx zty zu zua zuh zul zu zum zun zuy zwa zyb zyg zyj zyn zyp zza zzj ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/files/triplets�����������������������������������������������������������0000664�0000000�0000000�00000025212�12313550312�015255� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# List of "triplet architecture" relationships as provided by # dpkg-architecture' # Last updated: 2014-01-14 # With: Debian dpkg-architecture version 1.17.5. # This file was auto-generated by private/refresh-archs aarch64-darwin darwin-arm64 aarch64-freebsd freebsd-arm64 aarch64-gnu hurd-arm64 aarch64-kfreebsd-gnu kfreebsd-arm64 aarch64-knetbsd-gnu knetbsd-arm64 aarch64-kopensolaris-gnu kopensolaris-arm64 aarch64-linux-gnu arm64 aarch64-linux-musl musl-linux-arm64 aarch64-linux-uclibc uclibc-linux-arm64 aarch64-netbsd netbsd-arm64 aarch64-openbsd openbsd-arm64 aarch64-solaris solaris-arm64 aarch64-uclinux-uclibc uclinux-arm64 alpha-darwin darwin-alpha alpha-freebsd freebsd-alpha alpha-gnu hurd-alpha alpha-kfreebsd-gnu kfreebsd-alpha alpha-knetbsd-gnu knetbsd-alpha alpha-kopensolaris-gnu kopensolaris-alpha alpha-linux-gnu alpha alpha-linux-musl musl-linux-alpha alpha-linux-uclibc uclibc-linux-alpha alpha-netbsd netbsd-alpha alpha-openbsd openbsd-alpha alpha-solaris solaris-alpha alpha-uclinux-uclibc uclinux-alpha arm-darwin darwin-arm arm-freebsd freebsd-arm arm-gnu hurd-arm arm-kfreebsd-gnu kfreebsd-arm arm-knetbsd-gnu knetbsd-arm arm-kopensolaris-gnu kopensolaris-arm arm-linux-gnu arm arm-linux-gnueabi armel arm-linux-gnueabihf armhf arm-linux-musl musl-linux-arm arm-linux-musleabihf musl-linux-armhf arm-linux-uclibc uclibc-linux-arm arm-linux-uclibceabi uclibc-linux-armel arm-netbsd netbsd-arm arm-openbsd openbsd-arm arm-solaris solaris-arm arm-uclinux-uclibc uclinux-arm arm-uclinux-uclibceabi uclinux-armel armeb-darwin darwin-armeb armeb-freebsd freebsd-armeb armeb-gnu hurd-armeb armeb-kfreebsd-gnu kfreebsd-armeb armeb-knetbsd-gnu knetbsd-armeb armeb-kopensolaris-gnu kopensolaris-armeb armeb-linux-gnu armeb armeb-linux-musl musl-linux-armeb armeb-linux-uclibc uclibc-linux-armeb armeb-netbsd netbsd-armeb armeb-openbsd openbsd-armeb armeb-solaris solaris-armeb armeb-uclinux-uclibc uclinux-armeb avr32-darwin darwin-avr32 avr32-freebsd freebsd-avr32 avr32-gnu hurd-avr32 avr32-kfreebsd-gnu kfreebsd-avr32 avr32-knetbsd-gnu knetbsd-avr32 avr32-kopensolaris-gnu kopensolaris-avr32 avr32-linux-gnu avr32 avr32-linux-musl musl-linux-avr32 avr32-linux-uclibc uclibc-linux-avr32 avr32-netbsd netbsd-avr32 avr32-openbsd openbsd-avr32 avr32-solaris solaris-avr32 avr32-uclinux-uclibc uclinux-avr32 hppa-darwin darwin-hppa hppa-freebsd freebsd-hppa hppa-gnu hurd-hppa hppa-kfreebsd-gnu kfreebsd-hppa hppa-knetbsd-gnu knetbsd-hppa hppa-kopensolaris-gnu kopensolaris-hppa hppa-linux-gnu hppa hppa-linux-musl musl-linux-hppa hppa-linux-uclibc uclibc-linux-hppa hppa-netbsd netbsd-hppa hppa-openbsd openbsd-hppa hppa-solaris solaris-hppa hppa-uclinux-uclibc uclinux-hppa i386-darwin darwin-i386 i386-freebsd freebsd-i386 i386-gnu hurd-i386 i386-kfreebsd-gnu kfreebsd-i386 i386-knetbsd-gnu knetbsd-i386 i386-kopensolaris-gnu kopensolaris-i386 i386-linux-gnu i386 i386-linux-gnulp lpia i386-linux-musl musl-linux-i386 i386-linux-uclibc uclibc-linux-i386 i386-netbsd netbsd-i386 i386-openbsd openbsd-i386 i386-solaris solaris-i386 i386-uclinux-uclibc uclinux-i386 ia64-darwin darwin-ia64 ia64-freebsd freebsd-ia64 ia64-gnu hurd-ia64 ia64-kfreebsd-gnu kfreebsd-ia64 ia64-knetbsd-gnu knetbsd-ia64 ia64-kopensolaris-gnu kopensolaris-ia64 ia64-linux-gnu ia64 ia64-linux-musl musl-linux-ia64 ia64-linux-uclibc uclibc-linux-ia64 ia64-netbsd netbsd-ia64 ia64-openbsd openbsd-ia64 ia64-solaris solaris-ia64 ia64-uclinux-uclibc uclinux-ia64 m32r-darwin darwin-m32r m32r-freebsd freebsd-m32r m32r-gnu hurd-m32r m32r-kfreebsd-gnu kfreebsd-m32r m32r-knetbsd-gnu knetbsd-m32r m32r-kopensolaris-gnu kopensolaris-m32r m32r-linux-gnu m32r m32r-linux-musl musl-linux-m32r m32r-linux-uclibc uclibc-linux-m32r m32r-netbsd netbsd-m32r m32r-openbsd openbsd-m32r m32r-solaris solaris-m32r m32r-uclinux-uclibc uclinux-m32r m68k-darwin darwin-m68k m68k-freebsd freebsd-m68k m68k-gnu hurd-m68k m68k-kfreebsd-gnu kfreebsd-m68k m68k-knetbsd-gnu knetbsd-m68k m68k-kopensolaris-gnu kopensolaris-m68k m68k-linux-gnu m68k m68k-linux-musl musl-linux-m68k m68k-linux-uclibc uclibc-linux-m68k m68k-mint mint-m68k m68k-netbsd netbsd-m68k m68k-openbsd openbsd-m68k m68k-solaris solaris-m68k m68k-uclinux-uclibc uclinux-m68k mips-darwin darwin-mips mips-freebsd freebsd-mips mips-gnu hurd-mips mips-kfreebsd-gnu kfreebsd-mips mips-knetbsd-gnu knetbsd-mips mips-kopensolaris-gnu kopensolaris-mips mips-linux-gnu mips mips-linux-musl musl-linux-mips mips-linux-uclibc uclibc-linux-mips mips-netbsd netbsd-mips mips-openbsd openbsd-mips mips-solaris solaris-mips mips-uclinux-uclibc uclinux-mips mips64-darwin darwin-mips64 mips64-freebsd freebsd-mips64 mips64-gnu hurd-mips64 mips64-kfreebsd-gnu kfreebsd-mips64 mips64-knetbsd-gnu knetbsd-mips64 mips64-kopensolaris-gnu kopensolaris-mips64 mips64-linux-gnuabi64 mips64 mips64-linux-gnuabin32 mipsn32 mips64-linux-musl musl-linux-mips64 mips64-linux-uclibc uclibc-linux-mips64 mips64-netbsd netbsd-mips64 mips64-openbsd openbsd-mips64 mips64-solaris solaris-mips64 mips64-uclinux-uclibc uclinux-mips64 mips64el-darwin darwin-mips64el mips64el-freebsd freebsd-mips64el mips64el-gnu hurd-mips64el mips64el-kfreebsd-gnu kfreebsd-mips64el mips64el-knetbsd-gnu knetbsd-mips64el mips64el-kopensolaris-gnu kopensolaris-mips64el mips64el-linux-gnuabi64 mips64el mips64el-linux-gnuabin32 mipsn32el mips64el-linux-musl musl-linux-mips64el mips64el-linux-uclibc uclibc-linux-mips64el mips64el-netbsd netbsd-mips64el mips64el-openbsd openbsd-mips64el mips64el-solaris solaris-mips64el mips64el-uclinux-uclibc uclinux-mips64el mipsel-darwin darwin-mipsel mipsel-freebsd freebsd-mipsel mipsel-gnu hurd-mipsel mipsel-kfreebsd-gnu kfreebsd-mipsel mipsel-knetbsd-gnu knetbsd-mipsel mipsel-kopensolaris-gnu kopensolaris-mipsel mipsel-linux-gnu mipsel mipsel-linux-musl musl-linux-mipsel mipsel-linux-uclibc uclibc-linux-mipsel mipsel-netbsd netbsd-mipsel mipsel-openbsd openbsd-mipsel mipsel-solaris solaris-mipsel mipsel-uclinux-uclibc uclinux-mipsel powerpc-darwin darwin-powerpc powerpc-freebsd freebsd-powerpc powerpc-gnu hurd-powerpc powerpc-kfreebsd-gnu kfreebsd-powerpc powerpc-knetbsd-gnu knetbsd-powerpc powerpc-kopensolaris-gnu kopensolaris-powerpc powerpc-linux-gnu powerpc powerpc-linux-gnuspe powerpcspe powerpc-linux-musl musl-linux-powerpc powerpc-linux-uclibc uclibc-linux-powerpc powerpc-netbsd netbsd-powerpc powerpc-openbsd openbsd-powerpc powerpc-solaris solaris-powerpc powerpc-uclinux-uclibc uclinux-powerpc powerpc64-darwin darwin-ppc64 powerpc64-freebsd freebsd-ppc64 powerpc64-gnu hurd-ppc64 powerpc64-kfreebsd-gnu kfreebsd-ppc64 powerpc64-knetbsd-gnu knetbsd-ppc64 powerpc64-kopensolaris-gnu kopensolaris-ppc64 powerpc64-linux-gnu ppc64 powerpc64-linux-musl musl-linux-ppc64 powerpc64-linux-uclibc uclibc-linux-ppc64 powerpc64-netbsd netbsd-ppc64 powerpc64-openbsd openbsd-ppc64 powerpc64-solaris solaris-ppc64 powerpc64-uclinux-uclibc uclinux-ppc64 powerpc64le-darwin darwin-ppc64el powerpc64le-freebsd freebsd-ppc64el powerpc64le-gnu hurd-ppc64el powerpc64le-kfreebsd-gnu kfreebsd-ppc64el powerpc64le-knetbsd-gnu knetbsd-ppc64el powerpc64le-kopensolaris-gnu kopensolaris-ppc64el powerpc64le-linux-gnu ppc64el powerpc64le-linux-musl musl-linux-ppc64el powerpc64le-linux-uclibc uclibc-linux-ppc64el powerpc64le-netbsd netbsd-ppc64el powerpc64le-openbsd openbsd-ppc64el powerpc64le-solaris solaris-ppc64el powerpc64le-uclinux-uclibc uclinux-ppc64el s390-darwin darwin-s390 s390-freebsd freebsd-s390 s390-gnu hurd-s390 s390-kfreebsd-gnu kfreebsd-s390 s390-knetbsd-gnu knetbsd-s390 s390-kopensolaris-gnu kopensolaris-s390 s390-linux-gnu s390 s390-linux-musl musl-linux-s390 s390-linux-uclibc uclibc-linux-s390 s390-netbsd netbsd-s390 s390-openbsd openbsd-s390 s390-solaris solaris-s390 s390-uclinux-uclibc uclinux-s390 s390x-darwin darwin-s390x s390x-freebsd freebsd-s390x s390x-gnu hurd-s390x s390x-kfreebsd-gnu kfreebsd-s390x s390x-knetbsd-gnu knetbsd-s390x s390x-kopensolaris-gnu kopensolaris-s390x s390x-linux-gnu s390x s390x-linux-musl musl-linux-s390x s390x-linux-uclibc uclibc-linux-s390x s390x-netbsd netbsd-s390x s390x-openbsd openbsd-s390x s390x-solaris solaris-s390x s390x-uclinux-uclibc uclinux-s390x sh3-darwin darwin-sh3 sh3-freebsd freebsd-sh3 sh3-gnu hurd-sh3 sh3-kfreebsd-gnu kfreebsd-sh3 sh3-knetbsd-gnu knetbsd-sh3 sh3-kopensolaris-gnu kopensolaris-sh3 sh3-linux-gnu sh3 sh3-linux-musl musl-linux-sh3 sh3-linux-uclibc uclibc-linux-sh3 sh3-netbsd netbsd-sh3 sh3-openbsd openbsd-sh3 sh3-solaris solaris-sh3 sh3-uclinux-uclibc uclinux-sh3 sh3eb-darwin darwin-sh3eb sh3eb-freebsd freebsd-sh3eb sh3eb-gnu hurd-sh3eb sh3eb-kfreebsd-gnu kfreebsd-sh3eb sh3eb-knetbsd-gnu knetbsd-sh3eb sh3eb-kopensolaris-gnu kopensolaris-sh3eb sh3eb-linux-gnu sh3eb sh3eb-linux-musl musl-linux-sh3eb sh3eb-linux-uclibc uclibc-linux-sh3eb sh3eb-netbsd netbsd-sh3eb sh3eb-openbsd openbsd-sh3eb sh3eb-solaris solaris-sh3eb sh3eb-uclinux-uclibc uclinux-sh3eb sh4-darwin darwin-sh4 sh4-freebsd freebsd-sh4 sh4-gnu hurd-sh4 sh4-kfreebsd-gnu kfreebsd-sh4 sh4-knetbsd-gnu knetbsd-sh4 sh4-kopensolaris-gnu kopensolaris-sh4 sh4-linux-gnu sh4 sh4-linux-musl musl-linux-sh4 sh4-linux-uclibc uclibc-linux-sh4 sh4-netbsd netbsd-sh4 sh4-openbsd openbsd-sh4 sh4-solaris solaris-sh4 sh4-uclinux-uclibc uclinux-sh4 sh4eb-darwin darwin-sh4eb sh4eb-freebsd freebsd-sh4eb sh4eb-gnu hurd-sh4eb sh4eb-kfreebsd-gnu kfreebsd-sh4eb sh4eb-knetbsd-gnu knetbsd-sh4eb sh4eb-kopensolaris-gnu kopensolaris-sh4eb sh4eb-linux-gnu sh4eb sh4eb-linux-musl musl-linux-sh4eb sh4eb-linux-uclibc uclibc-linux-sh4eb sh4eb-netbsd netbsd-sh4eb sh4eb-openbsd openbsd-sh4eb sh4eb-solaris solaris-sh4eb sh4eb-uclinux-uclibc uclinux-sh4eb sparc-darwin darwin-sparc sparc-freebsd freebsd-sparc sparc-gnu hurd-sparc sparc-kfreebsd-gnu kfreebsd-sparc sparc-knetbsd-gnu knetbsd-sparc sparc-kopensolaris-gnu kopensolaris-sparc sparc-linux-gnu sparc sparc-linux-musl musl-linux-sparc sparc-linux-uclibc uclibc-linux-sparc sparc-netbsd netbsd-sparc sparc-openbsd openbsd-sparc sparc-solaris solaris-sparc sparc-uclinux-uclibc uclinux-sparc sparc64-darwin darwin-sparc64 sparc64-freebsd freebsd-sparc64 sparc64-gnu hurd-sparc64 sparc64-kfreebsd-gnu kfreebsd-sparc64 sparc64-knetbsd-gnu knetbsd-sparc64 sparc64-kopensolaris-gnu kopensolaris-sparc64 sparc64-linux-gnu sparc64 sparc64-linux-musl musl-linux-sparc64 sparc64-linux-uclibc uclibc-linux-sparc64 sparc64-netbsd netbsd-sparc64 sparc64-openbsd openbsd-sparc64 sparc64-solaris solaris-sparc64 sparc64-uclinux-uclibc uclinux-sparc64 x86_64-darwin darwin-amd64 x86_64-freebsd freebsd-amd64 x86_64-gnu hurd-amd64 x86_64-kfreebsd-gnu kfreebsd-amd64 x86_64-knetbsd-gnu knetbsd-amd64 x86_64-kopensolaris-gnu kopensolaris-amd64 x86_64-linux-gnu amd64 x86_64-linux-gnux32 x32 x86_64-linux-musl musl-linux-amd64 x86_64-linux-uclibc uclibc-linux-amd64 x86_64-netbsd netbsd-amd64 x86_64-openbsd openbsd-amd64 x86_64-solaris solaris-amd64 x86_64-uclinux-uclibc uclinux-amd64 ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/files/incorrect-locale-codes���������������������������������������������0000664�0000000�0000000�00000000400�12310413144�017715� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# List of known common incorrect locale codes. # Albanian is sq, not al: al sq # Chinese is zh, not cn: cn zh # Czech is cs, not cz: cz cs # Danish is da, not dk: dk da # UK != GB en_UK en_GB # Greek is el, not gr: gr el # Indonesian is id, not in: in id ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/files/obsolete-paths�����������������������������������������������������0000664�0000000�0000000�00000000346�12310413206�016336� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# obsolete path (regexp) -> newer path ~~ Reference # # Please alpha sort ^etc/dhcp3/ -> etc/dhcp ~~ http://bugs.debian.org/673029 ^etc/X11/fonts/X11R7/ -> etc/X11/fonts ~~ http://bugs.debian.org/364530#24������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/files/compressed-file-extensions�����������������������������������������0000664�0000000�0000000�00000000115�12310413206�020655� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# list of compressed file extension # please alpha sort bz bz2 gz tgz xz z Z ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/files/privacy-breaker-fragments������������������������������������������0000664�0000000�0000000�00000003101�12313551606�020461� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Manually maintained table of well known privacy breakers html/js fragment # syntax: # key ~~regex (xism) # # Note spaces on the right hand side of ~~ are assumed to be a part # of the regex. # # Please keep this sorted by tag. privacy-breach-google-adsense ~~(?:google_ad_client\s*=|[\"\']\.?google-analytics.com/ga.js[\"\']|urchinTracker\s*\(\s*\)\s*;|</?\s*adsense\s*>) privacy-breach-google-cse ~~(?:googleSearchDomain\s*=|<div\s+class="cse-branding-(?:logo|form)"\s*>|google\.search\.CustomSearchControl\s*\(\s*'|google\.load\s*\(\s*'search'|</?\s*CustomSearchEngine\s*>|value\s*=\s*"partner-pub-\d+:?\d+") privacy-breach-google-plus ~~(?:<g:plusone|google\.com/js/plusone\.js\?onload=onLoadCallback|src\s*=\s*'https?://apis\.google\.com/js/plusone\.js') privacy-breach-donation ~~(?:api\.flattr\.com/js/\d(\.\d)?/load\.js|<a\s+class\s*=\s*"FlattrButton"|data-flattr-uid\s*=|FlattrLoader\.(?:setup\s*\(\)|render\s*\(|addLoadEvent\s*\()) privacy-breach-facebook ~~(?:facebook-jssdk|FB\.(?:Canvas|api|init|login|getLoginStatus|Event|ui|XFBML)|xmlns:fb\s*=\s*"https?://(?:www\.facebook\.com/20\d\d/fbml|ogp\.me/ns/fb\#?)"|</?fb:(?:activity|comments|friendpile|like|like-box|login-button|name|profile-pic|recommendations)\s+[^>]*>) privacy-breach-piwik ~~(?:piwik_url\s*=|pkBaseURL\s*=|[\'"]piwik\.js[\'\"]|End\s+Piwik\h+(?:Tag|Code)|[\'\"]setTrackerUrl[\'\"]) privacy-breach-statistics-website ~~(?:var\s+sc_project\s*=\s*\d+\s*;) privacy-breach-twitter ~~(?:src\s*=\s*["']https?|[+]\s*['"])://platform\.twitter\.com/widgets\.js['"] ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/files/vcs-control-files��������������������������������������������������0000664�0000000�0000000�00000000517�12310413206�016756� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# vcs control files regex # ${COMPRESS_EXT} will be replaced by compression extension list # please alpha sort /\.arch-inventory(?:\.${COMPRESS_EXT})?\Z /\.hgtags(?:\.${COMPRESS_EXT})?\Z /\.(?:cvs|git|hg)_?ignore(?:\.${COMPRESS_EXT})?\Z /\.git_?(?:modules|attributes)(?:\.${COMPRESS_EXT})?\Z /\.hg_archival\.txt(?:\.${COMPRESS_EXT})?\Z���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/data/files/fonts��������������������������������������������������������������0000664�0000000�0000000�00000206762�12313551606�014562� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# The list of known font filenames already packaged for Debian and the # package that contains the font. Only packages starting with ttf-, # otf-, t1-, xfonts- and fonts- are searched for fonts. # # Last updated: 2014-03-23 1015sn.ttf ttf-aenigma 1015snr.ttf ttf-aenigma 18holes.ttf ttf-aenigma 36daysag.ttf ttf-aenigma 36daythk.ttf ttf-aenigma 3dlet.ttf ttf-aenigma 4shadow.ttf ttf-aenigma 4shadowo.ttf ttf-aenigma 8bitlim.ttf ttf-aenigma 8bitlimo.ttf ttf-aenigma 8bitlimr.ttf ttf-aenigma 8blimro.ttf ttf-aenigma 90stars.ttf ttf-aenigma a010013d.pfb t1-cyrillic a010015d.pfb t1-cyrillic a010033d.pfb t1-cyrillic a010035d.pfb t1-cyrillic aakar-medium.ttf fonts-gujr-extra abecedario.ttf fonts-linex abecedarioguiada.ttf fonts-linex abecedarionegrita.ttf fonts-linex abecedariopautada.ttf fonts-linex abecedariopuntguiada.ttf fonts-linex abecedariopuntos.ttf fonts-linex abecedariopuntpautada.ttf fonts-linex aboriginalsansbold9433.ttf fonts-lg-aboriginal aboriginalsansbolditalic9433.ttf fonts-lg-aboriginal aboriginalsansitalic9433.ttf fonts-lg-aboriginal aboriginalsansregular9433.ttf fonts-lg-aboriginal aboriginalserifbold943.ttf fonts-lg-aboriginal aboriginalserifbolditalic943.ttf fonts-lg-aboriginal aboriginalserifitalic943.ttf fonts-lg-aboriginal aboriginalserifregular943.ttf fonts-lg-aboriginal abyssinicasil-r.ttf fonts-sil-abyssinica accanthisadfstd-bold.otf ttf-adf-accanthis accanthisadfstd-bolditalic.otf ttf-adf-accanthis accanthisadfstd-italic.otf ttf-adf-accanthis accanthisadfstd-regular.otf ttf-adf-accanthis accanthisadfstdno2-bold.otf ttf-adf-accanthis accanthisadfstdno2-bolditalic.otf ttf-adf-accanthis accanthisadfstdno2-italic.otf ttf-adf-accanthis accanthisadfstdno2-regular.otf ttf-adf-accanthis accanthisadfstdno3-bold.otf ttf-adf-accanthis accanthisadfstdno3-bolditalic.otf ttf-adf-accanthis accanthisadfstdno3-italic.otf ttf-adf-accanthis accanthisadfstdno3-regular.otf ttf-adf-accanthis acidrefl.ttf ttf-aenigma acknowtt.ttf ttf-aenigma ae_alarabiya.ttf fonts-arabeyes ae_albattar.ttf fonts-arabeyes ae_alhor.ttf fonts-arabeyes ae_almanzomah.ttf fonts-arabeyes ae_alyarmook.ttf fonts-arabeyes ae_arab.ttf fonts-arabeyes ae_cortoba.ttf fonts-arabeyes ae_dimnah.ttf fonts-arabeyes ae_electron.ttf fonts-arabeyes ae_furat.ttf fonts-arabeyes ae_granada.ttf fonts-arabeyes ae_graph.ttf fonts-arabeyes ae_hani.ttf fonts-arabeyes ae_haramain.ttf fonts-arabeyes ae_hor.ttf fonts-arabeyes ae_japan.ttf fonts-arabeyes ae_jet.ttf fonts-arabeyes ae_kayrawan.ttf fonts-arabeyes ae_khalid.ttf fonts-arabeyes ae_mashq-bold.ttf fonts-arabeyes ae_mashq.ttf fonts-arabeyes ae_metal.ttf fonts-arabeyes ae_nada.ttf fonts-arabeyes ae_nagham.ttf fonts-arabeyes ae_nice.ttf fonts-arabeyes ae_ostorah.ttf fonts-arabeyes ae_ouhod-bold.ttf fonts-arabeyes ae_petra.ttf fonts-arabeyes ae_rasheeq-bold.ttf fonts-arabeyes ae_rehan.ttf fonts-arabeyes ae_salem.ttf fonts-arabeyes ae_shado.ttf fonts-arabeyes ae_sharjah.ttf fonts-arabeyes ae_sindbad.ttf fonts-arabeyes ae_tarablus.ttf fonts-arabeyes ae_tholoth.ttf fonts-arabeyes aegean600.ttf ttf-ancient-fonts aegyptus313.ttf ttf-ancient-fonts aescrawl.ttf ttf-aenigma aesymatt.ttf ttf-aenigma aftermat.ttf ttf-aenigma akkadian256.otf ttf-ancient-fonts alexander.otf ttf-ancient-fonts alfa-beta.ttf fonts-linex alfios_b.otf ttf-ancient-fonts alfios_i.otf ttf-ancient-fonts alfios_j.otf ttf-ancient-fonts alfios_r.otf ttf-ancient-fonts alphbeta.ttf ttf-aenigma amalgama.ttf ttf-aenigma amalgamo.ttf ttf-aenigma amiri-bold.ttf fonts-hosny-amiri amiri-boldslanted.ttf fonts-hosny-amiri amiri-quran.ttf fonts-hosny-amiri amiri-regular.ttf fonts-hosny-amiri amiri-slanted.ttf fonts-hosny-amiri amplitud.ttf ttf-aenigma anaktoria.otf ttf-ancient-fonts analecta306.otf ttf-ancient-fonts anatolian306.ttf ttf-ancient-fonts andika-r.ttf fonts-sil-andika ani.ttf fonts-beng-extra anjalioldlipi.ttf fonts-smc aoyagi-soseki.ttf fonts-aoyagi-soseki aoyagikouzanfontt.ttf fonts-aoyagi-kouzan-t apibold.ttf fonts-linex apibolit.ttf fonts-linex apiitali.ttf fonts-linex apiregul.ttf fonts-linex arimo-bold.ttf fonts-croscore arimo-bolditalic.ttf fonts-croscore arimo-italic.ttf fonts-croscore arimo-regular.ttf fonts-croscore aroania_b.otf ttf-ancient-fonts aroania_r.otf ttf-ancient-fonts arthriti.ttf ttf-aenigma arundinasans-bold.ttf fonts-sipa-arundina arundinasans-boldoblique.ttf fonts-sipa-arundina arundinasans-oblique.ttf fonts-sipa-arundina arundinasans.ttf fonts-sipa-arundina arundinasansmono-bold.ttf fonts-sipa-arundina arundinasansmono-boldoblique.ttf fonts-sipa-arundina arundinasansmono-oblique.ttf fonts-sipa-arundina arundinasansmono.ttf fonts-sipa-arundina arundinaserif-bold.ttf fonts-sipa-arundina arundinaserif.ttf fonts-sipa-arundina asana-math.otf fonts-oflb-asana-math aspartam.ttf ttf-aenigma atarismall.ttf ttf-atarismall atarismallbold.ttf ttf-atarismall atarismallcondensed.ttf ttf-atarismall atarismallitalic.ttf ttf-atarismall atarismalllight.ttf ttf-atarismall atavyros.otf ttf-ancient-fonts ataxia.ttf ttf-aenigma ataxiao.ttf ttf-aenigma automati.ttf ttf-aenigma avdira_b.otf ttf-ancient-fonts avdira_i.otf ttf-ancient-fonts avdira_j.otf ttf-ancient-fonts avdira_r.otf ttf-ancient-fonts averiagwf-bold.ttf fonts-averia-gwf averiagwf-bolditalic.ttf fonts-averia-gwf averiagwf-gruesa.ttf fonts-averia-gwf averiagwf-italic.ttf fonts-averia-gwf averiagwf-light.ttf fonts-averia-gwf averiagwf-lightitalic.ttf fonts-averia-gwf averiagwf-regular.ttf fonts-averia-gwf averiasansgwf-bold.ttf fonts-averia-sans-gwf averiasansgwf-bolditalic.ttf fonts-averia-sans-gwf averiasansgwf-italic.ttf fonts-averia-sans-gwf averiasansgwf-light.ttf fonts-averia-sans-gwf averiasansgwf-lightitalic.ttf fonts-averia-sans-gwf averiasansgwf-regular.ttf fonts-averia-sans-gwf averiaserifgwf-bold.ttf fonts-averia-serif-gwf averiaserifgwf-bolditalic.ttf fonts-averia-serif-gwf averiaserifgwf-italic.ttf fonts-averia-serif-gwf averiaserifgwf-light.ttf fonts-averia-serif-gwf averiaserifgwf-lightitalic.ttf fonts-averia-serif-gwf averiaserifgwf-regular.ttf fonts-averia-serif-gwf b018012d.pfb t1-cyrillic b018015d.pfb t1-cyrillic b018032d.pfb t1-cyrillic b018035d.pfb t1-cyrillic b2sq.ttf ttf-aenigma b2sqol1.ttf ttf-aenigma b2sqol2.ttf ttf-aenigma babeboit.ttf fonts-linex babebold.ttf fonts-linex babelita.ttf fonts-linex babelreg.ttf fonts-linex backlash.ttf ttf-aenigma balker.ttf fonts-dustin bandal.ttf ttf-alee bandless.ttf ttf-aenigma bandmess.ttf ttf-aenigma bandwdth.ttf ttf-aenigma bangwool.ttf ttf-alee baskervaldadfstd-bold.otf ttf-adf-baskervald baskervaldadfstd-bolditalic.otf ttf-adf-baskervald baskervaldadfstd-italic.otf ttf-adf-baskervald baskervaldadfstd-regular.otf ttf-adf-baskervald baskervaldadfstdheavy-oblique.otf ttf-adf-baskervald baskervaldadfstdheavy.otf ttf-adf-baskervald batang.ttf fonts-baekmuk bendable.ttf ttf-aenigma berenika-bold.ttf fonts-klaudia-berenika berenika-boldoblique.ttf fonts-klaudia-berenika berenika-oblique.ttf fonts-klaudia-berenika berenika.ttf fonts-klaudia-berenika berenisadf-bold.otf ttf-adf-berenis berenisadf-bolditalic.otf ttf-adf-berenis berenisadf-book.otf ttf-adf-berenis berenisadf-italic.otf ttf-adf-berenis berenisadfcd-bold.otf ttf-adf-berenis berenisadfcd-bolditalic.otf ttf-adf-berenis berenisadfcd-book.otf ttf-adf-berenis berenisadfcd-italic.otf ttf-adf-berenis berenisadfmed-bold.otf ttf-adf-berenis berenisadfmed-bolditalic.otf ttf-adf-berenis berenisadfmed-italic.otf ttf-adf-berenis berenisadfmed-regular.otf ttf-adf-berenis berenisadfno2-bold.otf ttf-adf-berenis berenisadfno2-bolditalic.otf ttf-adf-berenis berenisadfno2-book.otf ttf-adf-berenis berenisadfno2-italic.otf ttf-adf-berenis berenisadfno2cd-bold.otf ttf-adf-berenis berenisadfno2cd-bolditalic.otf ttf-adf-berenis berenisadfno2cd-book.otf ttf-adf-berenis berenisadfno2cd-italic.otf ttf-adf-berenis berenisadfno2style-bold.otf ttf-adf-berenis berenisadfno2style-book.otf ttf-adf-berenis betecknalowercase.ttf fonts-beteckna betecknalowercasebold.ttf fonts-beteckna betecknalowercaseboldcondensed.ttf fonts-beteckna betecknalowercaseitalic.ttf fonts-beteckna betecknalowercaseitaliccondensed.ttf fonts-beteckna bewilder.ttf ttf-aenigma bewildet.ttf ttf-aenigma bin01st.ttf ttf-aenigma binaryt.ttf ttf-aenigma binaryx.ttf ttf-aenigma binchrt.ttf ttf-aenigma binx01s.ttf ttf-aenigma binxchr.ttf ttf-aenigma bitbttf.ttf ttf-aenigma bkai00mp.ttf fonts-arphic-bkai00mp bknuckss.ttf ttf-aenigma bknuckst.ttf ttf-aenigma blackoni.ttf ttf-aenigma bleakseg.ttf ttf-aenigma bloktilt.ttf ttf-aenigma blonibld.ttf ttf-aenigma blonirex.ttf ttf-aenigma blox2.ttf ttf-aenigma bm-hanna.ttf fonts-woowa-hanna bobcayge.ttf ttf-aenigma bobcaygr.ttf ttf-aenigma bocuma.ttf ttf-aenigma bocumaad.ttf ttf-aenigma bocumaba.ttf ttf-aenigma bocumade.ttf ttf-aenigma bocumang.ttf ttf-aenigma booku___.ttf fonts-uralic bookub__.ttf fonts-uralic bookui__.ttf fonts-uralic bpg_dejavu_sans_2011_gpl-gnu.ttf fonts-bpg-georgian bpg_gorda_gnu-gpl.ttf fonts-bpg-georgian brassknu.ttf ttf-aenigma breip.ttf fonts-breip breipfont.ttf fonts-breip brigadom.ttf ttf-aenigma brigadow.ttf ttf-aenigma bsmi00lp.ttf fonts-arphic-bsmi00lp bumped.ttf ttf-aenigma c0419bt_.pfb xfonts-scalable c0582bt_.pfb xfonts-scalable c0583bt_.pfb xfonts-scalable c059013d.pfb t1-cyrillic c059016d.pfb t1-cyrillic c059033d.pfb t1-cyrillic c059036d.pfb t1-cyrillic c0611bt_.pfb xfonts-scalable c0632bt_.pfb xfonts-scalable c0633bt_.pfb xfonts-scalable c0648bt_.pfb xfonts-scalable c0649bt_.pfb xfonts-scalable cabin-bold.otf fonts-cabin cabin-bolditalic.otf fonts-cabin cabin-italic.otf fonts-cabin cabin-medium.otf fonts-cabin cabin-mediumitalic.otf fonts-cabin cabin-regular.otf fonts-cabin cabin-semibold.otf fonts-cabin cabin-semibolditalic.otf fonts-cabin cabinsketch-bold.ttf fonts-cabinsketch cabinsketch-regular.ttf fonts-cabinsketch caladea-bold.ttf fonts-crosextra-caladea caladea-bolditalic.ttf fonts-crosextra-caladea caladea-italic.ttf fonts-crosextra-caladea caladea-regular.ttf fonts-crosextra-caladea caliban.ttf ttf-georgewilliams candystr.ttf ttf-aenigma cantarell-bold.otf fonts-cantarell cantarell-regular.otf fonts-cantarell carlito-bold.ttf fonts-crosextra-carlito carlito-bolditalic.ttf fonts-crosextra-carlito carlito-italic.ttf fonts-crosextra-carlito carlito-regular.ttf fonts-crosextra-carlito caslonbold.ttf ttf-georgewilliams caslonitalic.ttf ttf-georgewilliams caslonroman.ttf ttf-georgewilliams ccaps.ttf ttf-aenigma ccapshad.ttf ttf-aenigma century-catalogue.ttf fonts-century-catalogue chandas1-2.ttf fonts-deva-extra chanui__.ttf fonts-uralic charissil-b.ttf fonts-sil-charis charissil-bi.ttf fonts-sil-charis charissil-i.ttf fonts-sil-charis charissil-r.ttf fonts-sil-charis chemrea.ttf ttf-aenigma chemreb.ttf ttf-aenigma chintzy.ttf ttf-aenigma chintzys.ttf ttf-aenigma chumbly.ttf ttf-aenigma circulat.ttf ttf-aenigma clasict1.ttf ttf-aenigma clasict2.ttf ttf-aenigma claw1.ttf ttf-aenigma claw2.ttf ttf-aenigma cleavttr.ttf ttf-aenigma cmex10.ttf fonts-lyx cmmi10.ttf fonts-lyx cmr10.ttf fonts-lyx cmsy10.ttf fonts-lyx cmunbbx.ttf fonts-cmu cmunbi.ttf fonts-cmu cmunbl.ttf fonts-cmu cmunbmo.ttf fonts-cmu cmunbmr.ttf fonts-cmu cmunbso.ttf fonts-cmu cmunbsr.ttf fonts-cmu cmunbtl.ttf fonts-cmu cmunbto.ttf fonts-cmu cmunbx.ttf fonts-cmu cmunbxo.ttf fonts-cmu cmunci.ttf fonts-cmu cmunit.ttf fonts-cmu cmunobi.ttf fonts-cmu cmunobx.ttf fonts-cmu cmunorm.ttf fonts-cmu cmunoti.ttf fonts-cmu cmunrb.ttf fonts-cmu cmunrm.ttf fonts-cmu cmunsi.ttf fonts-cmu cmunsl.ttf fonts-cmu cmunso.ttf fonts-cmu cmunss.ttf fonts-cmu cmunssdc.ttf fonts-cmu cmunst.ttf fonts-cmu cmunsx.ttf fonts-cmu cmuntb.ttf fonts-cmu cmunti.ttf fonts-cmu cmuntt.ttf fonts-cmu cmuntx.ttf fonts-cmu cmunui.ttf fonts-cmu cmunvi.ttf fonts-cmu cmunvt.ttf fonts-cmu codelife.ttf ttf-aenigma collecro.ttf ttf-aenigma collecrs.ttf ttf-aenigma collecto.ttf ttf-aenigma collects.ttf ttf-aenigma combusii.ttf ttf-aenigma combuspl.ttf ttf-aenigma combusti.ttf ttf-aenigma combustt.ttf ttf-aenigma combustw.ttf ttf-aenigma comfortaa-bold.ttf fonts-comfortaa comfortaa-light.ttf fonts-comfortaa comfortaa-regular.ttf fonts-comfortaa compc1o.ttf ttf-aenigma compc1s.ttf ttf-aenigma compc2o.ttf ttf-aenigma compc2s.ttf ttf-aenigma compc3o.ttf ttf-aenigma compc3s.ttf ttf-aenigma conakry.ttf fonts-evertype-conakry condui2i.ttf ttf-aenigma conduit.ttf ttf-aenigma conduit2.ttf ttf-aenigma cousine-bold.ttf fonts-croscore cousine-bolditalic.ttf fonts-croscore cousine-italic.ttf fonts-croscore cousine-regular.ttf fonts-croscore crackdr2.ttf ttf-aenigma crkdownr.ttf ttf-aenigma crkdwno1.ttf ttf-aenigma crkdwno2.ttf ttf-aenigma cupou___.ttf ttf-georgewilliams cupouli_.ttf ttf-georgewilliams cwfs.ttf fonts-cwtex-fs cwheib.ttf fonts-cwtex-heib cwkai.ttf fonts-cwtex-kai cwming.ttf fonts-cwtex-ming cwyen.ttf fonts-cwtex-yen damase.ttf fonts-mph-2b-damase dancingscript-bold.otf fonts-dancingscript dancingscript-regular.otf fonts-dancingscript darkside.ttf ttf-aenigma dashdot.ttf ttf-aenigma dastardl.ttf ttf-aenigma dblayer1.ttf ttf-aenigma dblayer2.ttf ttf-aenigma dblayer3.ttf ttf-aenigma dblayer4.ttf ttf-aenigma dblbogey.ttf ttf-aenigma dbsilbb.ttf fonts-sil-dai-banna dbsilbc.ttf fonts-sil-dai-banna dbsilbo.ttf fonts-sil-dai-banna dbsilbr.ttf fonts-sil-dai-banna dbsillb.ttf fonts-sil-dai-banna dbsillc.ttf fonts-sil-dai-banna dbsillo.ttf fonts-sil-dai-banna dbsillr.ttf fonts-sil-dai-banna decrepit.ttf ttf-aenigma dejavusans-bold.ttf fonts-dejavu-core dejavusans-bold.ttf ttf-dejavu-core dejavusans-boldoblique.ttf fonts-dejavu-extra dejavusans-boldoblique.ttf ttf-dejavu-extra dejavusans-extralight.ttf fonts-dejavu-extra dejavusans-extralight.ttf ttf-dejavu-extra dejavusans-oblique.ttf fonts-dejavu-extra dejavusans-oblique.ttf ttf-dejavu-extra dejavusans.ttf fonts-dejavu-core dejavusans.ttf ttf-dejavu-core dejavusanscondensed-bold.ttf fonts-dejavu-extra dejavusanscondensed-bold.ttf ttf-dejavu-extra dejavusanscondensed-boldoblique.ttf fonts-dejavu-extra dejavusanscondensed-boldoblique.ttf ttf-dejavu-extra dejavusanscondensed-oblique.ttf fonts-dejavu-extra dejavusanscondensed-oblique.ttf ttf-dejavu-extra dejavusanscondensed.ttf fonts-dejavu-extra dejavusanscondensed.ttf ttf-dejavu-extra dejavusansmono-bold.ttf fonts-dejavu-core dejavusansmono-bold.ttf ttf-dejavu-core dejavusansmono-boldoblique.ttf fonts-dejavu-extra dejavusansmono-boldoblique.ttf ttf-dejavu-extra dejavusansmono-oblique.ttf fonts-dejavu-extra dejavusansmono-oblique.ttf ttf-dejavu-extra dejavusansmono.ttf fonts-dejavu-core dejavusansmono.ttf ttf-dejavu-core dejavuserif-bold.ttf fonts-dejavu-core dejavuserif-bold.ttf ttf-dejavu-core dejavuserif-bolditalic.ttf fonts-dejavu-extra dejavuserif-bolditalic.ttf ttf-dejavu-extra dejavuserif-italic.ttf fonts-dejavu-extra dejavuserif-italic.ttf ttf-dejavu-extra dejavuserif.ttf fonts-dejavu-core dejavuserif.ttf ttf-dejavu-core dejavuserifcondensed-bold.ttf fonts-dejavu-extra dejavuserifcondensed-bold.ttf ttf-dejavu-extra dejavuserifcondensed-bolditalic.ttf fonts-dejavu-extra dejavuserifcondensed-bolditalic.ttf ttf-dejavu-extra dejavuserifcondensed-italic.ttf fonts-dejavu-extra dejavuserifcondensed-italic.ttf ttf-dejavu-extra dejavuserifcondensed.ttf fonts-dejavu-extra dejavuserifcondensed.ttf ttf-dejavu-extra dejima-mincho-r227.ttf fonts-dejima-mincho delphine.ttf ttf-sjfonts denemo.ttf ttf-denemo dented.ttf ttf-aenigma dephun2.ttf ttf-aenigma detonate.ttf ttf-aenigma discorda.ttf ttf-aenigma dkg.ttf fonts-dkg-handwriting dkgbd.ttf fonts-dkg-handwriting dkgbi.ttf fonts-dkg-handwriting dkgit.ttf fonts-dkg-handwriting domestic_manners.ttf fonts-dustin dosis-bold.otf fonts-dosis dosis-book.otf fonts-dosis dosis-extrabold.otf fonts-dosis dosis-extralight.otf fonts-dosis dosis-light.otf fonts-dosis dosis-medium.otf fonts-dosis dosis-semibold.otf fonts-dosis dotum.ttf fonts-baekmuk doulossilr.ttf fonts-sil-doulos draggle.ttf ttf-aenigma draggleo.ttf ttf-aenigma droidnaskh-bold.ttf fonts-droid droidnaskh-regular.ttf fonts-droid droidsans-bold.ttf fonts-droid droidsans.ttf fonts-droid droidsansarmenian.ttf fonts-droid droidsansethiopic-bold.ttf fonts-droid droidsansethiopic-regular.ttf fonts-droid droidsansfallbackfull.ttf fonts-droid droidsansgeorgian.ttf fonts-droid droidsanshebrew-bold.ttf fonts-droid droidsanshebrew-regular.ttf fonts-droid droidsansjapanese.ttf fonts-droid droidsansmono.ttf fonts-droid droidsansthai.ttf fonts-droid droidserif-bold.ttf fonts-droid droidserif-bolditalic.ttf fonts-droid droidserif-italic.ttf fonts-droid droidserif-regular.ttf fonts-droid dustismo.ttf fonts-dustin dustismo_bold.ttf fonts-dustin dustismo_bold_italic.ttf fonts-dustin dustismo_italic.ttf fonts-dustin dustismo_roman.ttf fonts-dustin dustismo_roman_bold.ttf fonts-dustin dustismo_roman_italic.ttf fonts-dustin dustismo_roman_italic_bold.ttf fonts-dustin dynamic.ttf ttf-aenigma dyphusio.ttf ttf-aenigma dystorqu.ttf ttf-aenigma dyuthi.ttf fonts-smc ebgaramond-initials.otf fonts-ebgaramond-extra ebgaramond-initials.ttf fonts-ebgaramond-extra ebgaramond-initialsf1.otf fonts-ebgaramond-extra ebgaramond-initialsf1.ttf fonts-ebgaramond-extra ebgaramond-initialsf2.otf fonts-ebgaramond-extra ebgaramond-initialsf2.ttf fonts-ebgaramond-extra ebgaramond08-italic.otf fonts-ebgaramond ebgaramond08-italic.ttf fonts-ebgaramond-extra ebgaramond08-regular.otf fonts-ebgaramond ebgaramond08-regular.ttf fonts-ebgaramond-extra ebgaramond08-sc.ttf fonts-ebgaramond-extra ebgaramond12-italic.otf fonts-ebgaramond ebgaramond12-italic.ttf fonts-ebgaramond-extra ebgaramond12-regular.otf fonts-ebgaramond ebgaramond12-regular.ttf fonts-ebgaramond-extra ecliptic.ttf ttf-aenigma ecolier-court.ttf fonts-ecolier-court ecolier-lignes-court.ttf fonts-ecolier-lignes-court editundo.ttf ttf-aenigma edundot.ttf ttf-aenigma edunline.ttf ttf-aenigma eeyek.ttf fonts-eeyek el_abogado_loco.ttf fonts-dustin elegbold.ttf fonts-linex elegital.ttf fonts-linex elleboli.ttf fonts-linex ellenbold.ttf fonts-linex ellenike.ttf fonts-linex ellenita.ttf fonts-linex elsewhe2.ttf ttf-aenigma elsewher.ttf ttf-aenigma embosst1.ttf ttf-aenigma embosst2.ttf ttf-aenigma embosst3.ttf ttf-aenigma emerita_latina.ttf fonts-linex emmentaler.ttf ttf-denemo encappln.ttf ttf-aenigma encapsul.ttf ttf-aenigma engadget.ttf ttf-engadget entangle.ttf ttf-aenigma enthuse.ttf ttf-aenigma enthuses.ttf ttf-aenigma entlayra.ttf ttf-aenigma entlayrb.ttf ttf-aenigma entplain.ttf ttf-aenigma esint10.ttf fonts-lyx essays1743-bold.ttf ttf-essays1743 essays1743-bolditalic.ttf ttf-essays1743 essays1743-italic.ttf ttf-essays1743 essays1743.ttf ttf-essays1743 eufm10.ttf fonts-lyx eunjin.ttf ttf-alee eunjinnakseo.ttf ttf-alee euphor3d.ttf ttf-aenigma euphoric.ttf ttf-aenigma euterpe.ttf fonts-oflb-euterpe exagger8.ttf ttf-aenigma extracti.ttf ttf-aenigma f500.ttf fonts-f500 falsepos.ttf ttf-aenigma falsposr.ttf ttf-aenigma fantuwua.ttf fonts-senamirmir-washra fanwood-italic.otf fonts-fanwood fanwood.otf fonts-fanwood fanwoodtext-italic.otf fonts-fanwood fanwoodtext.otf fonts-fanwood fascii.ttf ttf-aenigma fasciicr.ttf ttf-aenigma fasciisc.ttf ttf-aenigma fasciism.ttf ttf-aenigma fasciitw.ttf ttf-aenigma fauxsnow.ttf ttf-aenigma fbsbltc.ttf ttf-aenigma fbsbltc2.ttf ttf-aenigma femkeklaver.ttf ttf-femkeklaver feta.ttf ttf-denemo fidgety.ttf ttf-aenigma flatline.ttf fonts-dustin flipside.ttf ttf-aenigma fontawesome-webfont.ttf fonts-font-awesome fontawesome-webfont.ttf fonts-font-awesome fontawesome.otf fonts-font-awesome fontawesome.otf fonts-font-awesome forcible.ttf ttf-aenigma freaktur.ttf ttf-aenigma freefarsi-bold.ttf fonts-freefarsi freefarsi-bolditalic.ttf fonts-freefarsi freefarsi-italic.ttf fonts-freefarsi freefarsi-mono.ttf fonts-freefarsi freefarsi.ttf fonts-freefarsi freemono.otf fonts-freefont-otf freemono.ttf fonts-freefont-ttf freemonobold.otf fonts-freefont-otf freemonobold.ttf fonts-freefont-ttf freemonoboldoblique.otf fonts-freefont-otf freemonoboldoblique.ttf fonts-freefont-ttf freemonooblique.otf fonts-freefont-otf freemonooblique.ttf fonts-freefont-ttf freesans.otf fonts-freefont-otf freesans.ttf fonts-freefont-ttf freesansbold.otf fonts-freefont-otf freesansbold.ttf fonts-freefont-ttf freesansboldoblique.otf fonts-freefont-otf freesansboldoblique.ttf fonts-freefont-ttf freesansoblique.otf fonts-freefont-otf freesansoblique.ttf fonts-freefont-ttf freeserif.otf fonts-freefont-otf freeserif.ttf fonts-freefont-ttf freeserifbold.otf fonts-freefont-otf freeserifbold.ttf fonts-freefont-ttf freeserifbolditalic.otf fonts-freefont-otf freeserifbolditalic.ttf fonts-freefont-ttf freeserifitalic.otf fonts-freefont-otf freeserifitalic.ttf fonts-freefont-ttf frizzed.ttf ttf-aenigma fullcomp.ttf ttf-aenigma galapogo.ttf ttf-aenigma galsilb.ttf fonts-sil-galatia galsilr.ttf fonts-sil-galatia galvaniz.ttf ttf-aenigma gaposiso.ttf ttf-aenigma gaposiss.ttf ttf-aenigma gardiner313.ttf ttf-ancient-fonts gargi.ttf fonts-gargi garuda-bold.ttf fonts-tlwg-garuda garuda-boldoblique.ttf fonts-tlwg-garuda garuda-oblique.ttf fonts-tlwg-garuda garuda.ttf fonts-tlwg-garuda gasping.ttf ttf-aenigma gather.ttf ttf-aenigma gathrgap.ttf ttf-aenigma gbsn00lp.ttf fonts-arphic-gbsn00lp genai102.ttf fonts-sil-gentium genar102.ttf fonts-sil-gentium genbasb.ttf fonts-sil-gentium-basic genbasbi.ttf fonts-sil-gentium-basic genbasi.ttf fonts-sil-gentium-basic genbasr.ttf fonts-sil-gentium-basic genbkbasb.ttf fonts-sil-gentium-basic genbkbasbi.ttf fonts-sil-gentium-basic genbkbasi.ttf fonts-sil-gentium-basic genbkbasr.ttf fonts-sil-gentium-basic geni102.ttf fonts-sil-gentium genotyph.ttf ttf-aenigma genotyps.ttf ttf-aenigma genotyrh.ttf ttf-aenigma genotyrs.ttf ttf-aenigma genr102.ttf fonts-sil-gentium gesture.ttf ttf-aenigma gestures.ttf ttf-aenigma gesturet.ttf ttf-aenigma gesturts.ttf ttf-aenigma gfsartemisia.otf fonts-gfs-artemisia gfsartemisiabold.otf fonts-gfs-artemisia gfsartemisiaboldit.otf fonts-gfs-artemisia gfsartemisiait.otf fonts-gfs-artemisia gfsbaskerville.otf fonts-gfs-baskerville gfsbodoniclassic.otf fonts-gfs-bodoni-classic gfsdidot.otf fonts-gfs-didot gfsdidotbold.otf fonts-gfs-didot gfsdidotbolditalic.otf fonts-gfs-didot gfsdidotclassic.otf fonts-gfs-didot-classic gfsdidotitalic.otf fonts-gfs-didot gfsgazis.otf fonts-gfs-gazis gfsneohellenic.otf fonts-gfs-neohellenic gfsneohellenicbold.otf fonts-gfs-neohellenic gfsneohellenicboldit.otf fonts-gfs-neohellenic gfsneohellenicit.otf fonts-gfs-neohellenic gfsolga.otf fonts-gfs-olga gfspolyglot.otf fonts-gfs-complutum gfsporson.otf fonts-gfs-porson gfssolomos.otf fonts-gfs-solomos gfstheokritos.otf fonts-gfs-theokritos gilliusadf-bold.otf ttf-adf-gillius gilliusadf-bolditalic.otf ttf-adf-gillius gilliusadf-italic.otf ttf-adf-gillius gilliusadf-regular.otf ttf-adf-gillius gilliusadfcd-bold.otf ttf-adf-gillius gilliusadfcd-bolditalic.otf ttf-adf-gillius gilliusadfcd-italic.otf ttf-adf-gillius gilliusadfcd-regular.otf ttf-adf-gillius gilliusadfno2-bold.otf ttf-adf-gillius gilliusadfno2-bolditalic.otf ttf-adf-gillius gilliusadfno2-italic.otf ttf-adf-gillius gilliusadfno2-regular.otf ttf-adf-gillius gilliusadfno2cd-bold.otf ttf-adf-gillius gilliusadfno2cd-bolditalic.otf ttf-adf-gillius gilliusadfno2cd-italic.otf ttf-adf-gillius gilliusadfno2cd-regular.otf ttf-adf-gillius gkai00mp.ttf fonts-arphic-gkai00mp goffer.ttf fonts-senamirmir-washra gosebmp2.ttf ttf-aenigma gosebmps.ttf ttf-aenigma gothu___.ttf fonts-uralic gothub__.ttf fonts-uralic goudybookletter1911.otf ttf-goudybookletter goudybookletter1911bold.otf ttf-goudybookletter goudybookletter1911bold.ttf ttf-goudybookletter goudybookletter1911italic.otf ttf-goudybookletter goudybookletter1911italic.ttf ttf-goudybookletter goudybookletter1911light.otf ttf-goudybookletter goudybookletter1911light.ttf ttf-goudybookletter goudybookletter1911tt.ttf ttf-goudybookletter gr8higts.ttf ttf-aenigma granular.ttf ttf-aenigma grapple.ttf ttf-aenigma graveyrd.ttf ttf-aenigma graviseg.ttf ttf-aenigma gravitat.ttf ttf-aenigma graze.ttf ttf-aenigma grotesq.ttf ttf-aenigma grudge.ttf ttf-aenigma grudge2.ttf ttf-aenigma gubbi.ttf fonts-gubbi gulim.ttf fonts-baekmuk guseul.ttf ttf-alee gyneric.ttf ttf-aenigma gyneric3.ttf ttf-aenigma gyroresh.ttf ttf-aenigma gyrose.ttf ttf-aenigma gyrosesq.ttf ttf-aenigma hackslsh.ttf ttf-aenigma hairball.ttf ttf-aenigma hanamina.ttf fonts-hanazono hanaminb.ttf fonts-hanazono handmedo.ttf ttf-aenigma handmeds.ttf ttf-aenigma hassle.ttf ttf-aenigma hbevel.ttf ttf-aenigma hdmaker.ttf ttf-aenigma hearts.ttf ttf-aenigma hillock.ttf ttf-aenigma hiwua.ttf fonts-senamirmir-washra hline.ttf fonts-baekmuk homa.ttf fonts-farsiweb homespun.ttf ttf-aenigma humor-sans.ttf fonts-humor-sans hyde.ttf ttf-aenigma hyperion.ttf ttf-aenigma ikariusadfno2std-bold.otf ttf-adf-ikarius ikariusadfno2std-bolditalic.otf ttf-adf-ikarius ikariusadfno2std-italic.otf ttf-adf-ikarius ikariusadfno2std-regular.otf ttf-adf-ikarius ikariusadfstd-bold.otf ttf-adf-ikarius ikariusadfstd-bolditalic.otf ttf-adf-ikarius ikariusadfstd-italic.otf ttf-adf-ikarius ikariusadfstd-regular.otf ttf-adf-ikarius ilits.ttf ttf-aenigma imposs.ttf ttf-aenigma inconsolata.otf fonts-inconsolata induni-c-bold.otf fonts-johnsmith-induni induni-c-boldoblique.otf fonts-johnsmith-induni induni-c-oblique.otf fonts-johnsmith-induni induni-c-regular.otf fonts-johnsmith-induni induni-h-bold.otf fonts-johnsmith-induni induni-h-boldoblique.otf fonts-johnsmith-induni induni-h-oblique.otf fonts-johnsmith-induni induni-h-regular.otf fonts-johnsmith-induni induni-n-bold.otf fonts-johnsmith-induni induni-n-bolditalic.otf fonts-johnsmith-induni induni-n-italic.otf fonts-johnsmith-induni induni-n-roman.otf fonts-johnsmith-induni induni-p-bold.otf fonts-johnsmith-induni induni-p-bolditalic.otf fonts-johnsmith-induni induni-p-italic.otf fonts-johnsmith-induni induni-p-roman.otf fonts-johnsmith-induni induni-t-bold.otf fonts-johnsmith-induni induni-t-bolditalic.otf fonts-johnsmith-induni induni-t-italic.otf fonts-johnsmith-induni induni-t-roman.otf fonts-johnsmith-induni inertia.ttf ttf-aenigma inevitab.ttf ttf-aenigma inkswipe.ttf ttf-aenigma inktank.ttf ttf-aenigma intersc.ttf ttf-aenigma intersec.ttf ttf-aenigma interso.ttf ttf-aenigma ipabold.ttf fonts-linex ipabolit.ttf fonts-linex ipaexg.ttf fonts-ipaexfont-gothic ipaexm.ttf fonts-ipaexfont-mincho ipag.ttf fonts-ipafont-gothic ipagp.ttf fonts-ipafont-gothic ipaitali.ttf fonts-linex ipam.ttf fonts-ipafont-mincho ipamjm.ttf fonts-ipamj-mincho ipamp.ttf fonts-ipafont-mincho iparegul.ttf fonts-linex irianisadfstd-bold.otf ttf-adf-irianis irianisadfstd-bolditalic.otf ttf-adf-irianis irianisadfstd-italic.otf ttf-adf-irianis irianisadfstd-regular.otf ttf-adf-irianis irianisadfstylestd-bditalic.otf ttf-adf-irianis irianisadfstylestd-bold.otf ttf-adf-irianis irianisadfstylestd-italic.otf ttf-adf-irianis irianisadfstylestd-regular.otf ttf-adf-irianis irritate.ttf ttf-aenigma isabella.ttf fonts-isabella it_wasn_t_me.ttf fonts-dustin jagged.ttf ttf-aenigma jamrulnormal.ttf fonts-beng-extra janken.ttf ttf-aenigma jara.ttf fonts-linex jara_bold-it.ttf fonts-linex jara_bold.ttf fonts-linex jara_it.ttf fonts-linex jargon.ttf ttf-aenigma jasper.ttf ttf-aenigma jaspers.ttf ttf-aenigma jawbhard.ttf ttf-aenigma jawbreak.ttf ttf-aenigma jawbrko1.ttf ttf-aenigma jawbrko2.ttf ttf-aenigma jekyll.ttf ttf-aenigma jeopardi.ttf ttf-aenigma jeopardt.ttf ttf-aenigma jiret.ttf fonts-senamirmir-washra jmacscrl.ttf ttf-aenigma joltcaff.ttf ttf-aenigma jomolhari-alpha3c-0605331.ttf fonts-dzongkha jsmath-bbold10.ttf fonts-jsmath jsmath-cmbsy10.ttf fonts-jsmath jsmath-cmbx10.ttf fonts-jsmath jsmath-cmex10.ttf fonts-jsmath jsmath-cmmi10.ttf fonts-jsmath jsmath-cmmib10.ttf fonts-jsmath jsmath-cmr10.ttf fonts-jsmath jsmath-cmss10.ttf fonts-jsmath jsmath-cmsy10.ttf fonts-jsmath jsmath-cmti10.ttf fonts-jsmath jsmath-eufb10.ttf fonts-jsmath jsmath-eufm10.ttf fonts-jsmath jsmath-eurb10.ttf fonts-jsmath jsmath-eurm10.ttf fonts-jsmath jsmath-eusb10.ttf fonts-jsmath jsmath-eusm10.ttf fonts-jsmath jsmath-lasy10.ttf fonts-jsmath jsmath-lasyb10.ttf fonts-jsmath jsmath-msam10.ttf fonts-jsmath jsmath-msbm10.ttf fonts-jsmath jsmath-rsfs10.ttf fonts-jsmath jsmath-stmary10.ttf fonts-jsmath jsmath-wasy10.ttf fonts-jsmath jsmath-wasyb10.ttf fonts-jsmath junction.otf fonts-junction junicode-bold.ttf fonts-junicode junicode-bolditalic.ttf fonts-junicode junicode-italic.ttf fonts-junicode junicode.ttf fonts-junicode junkyard.ttf fonts-dustin jupiterc.ttf ttf-aenigma jura-book.ttf fonts-jura jura-demibold.ttf fonts-jura jura-light.ttf fonts-jura jura-medium.ttf fonts-jura kacstart.ttf fonts-kacst kacstbook.ttf fonts-kacst kacstdecorative.ttf fonts-kacst kacstdigital.ttf fonts-kacst kacstfarsi.ttf fonts-kacst kacstletter.ttf fonts-kacst kacstnaskh.ttf fonts-kacst kacstoffice.ttf fonts-kacst kacstone-bold.ttf fonts-kacst-one kacstone.ttf fonts-kacst-one kacstpen.ttf fonts-kacst kacstposter.ttf fonts-kacst kacstqurn.ttf fonts-kacst kacstscreen.ttf fonts-kacst kacsttitle.ttf fonts-kacst kacsttitlel.ttf fonts-kacst kalapi.ttf fonts-kalapi kaliberr.ttf ttf-aenigma kalibers.ttf ttf-aenigma kaliberx.ttf ttf-aenigma kalimati.ttf fonts-deva-extra kalyani.ttf fonts-smc kapl.ttf xfonts-kapl kataacti.ttf ttf-aenigma katainac.ttf ttf-aenigma kaushanscript-regular.otf fonts-kaushanscript keyrialt.ttf ttf-aenigma keyridge.ttf ttf-aenigma khmeros.ttf fonts-khmeros khmerosbattambang.ttf fonts-khmeros khmerosbokor.ttf fonts-khmeros khmeroscontent.ttf fonts-khmeros khmerosfasthand.ttf fonts-khmeros khmerosfreehand.ttf fonts-khmeros khmerosmetalchrieng.ttf fonts-khmeros khmerosmuol.ttf fonts-khmeros khmerosmuollight.ttf fonts-khmeros khmerosmuolpali.ttf fonts-khmeros khmerossiemreap.ttf fonts-khmeros khmerossys.ttf fonts-khmeros kickflip.ttf ttf-aenigma kiloji.ttf fonts-kiloji kiloji_b.ttf fonts-kiloji kiloji_d.ttf fonts-kiloji kiloji_p.ttf fonts-kiloji kinkaid.ttf ttf-aenigma kinnari-bold.ttf fonts-tlwg-kinnari kinnari-bolditalic.ttf fonts-tlwg-kinnari kinnari-boldoblique.ttf fonts-tlwg-kinnari kinnari-italic.ttf fonts-tlwg-kinnari kinnari-oblique.ttf fonts-tlwg-kinnari kinnari.ttf fonts-tlwg-kinnari kirbyss.ttf ttf-aenigma klaudia-bold.ttf fonts-klaudia-berenika klaudia-boldoblique.ttf fonts-klaudia-berenika klaudia-oblique.ttf fonts-klaudia-berenika klaudia.ttf fonts-klaudia-berenika knot.ttf ttf-aenigma kochi-gothic-subst.ttf ttf-kochi-gothic kochi-gothic.ttf ttf-kochi-gothic kochi-mincho-subst.ttf ttf-kochi-mincho kochi-mincho.ttf ttf-kochi-mincho komatuna-p.ttf fonts-komatuna komatuna.ttf fonts-komatuna konatu.ttf fonts-konatu konatutohaba.ttf fonts-konatu konecto1.ttf ttf-aenigma konecto2.ttf ttf-aenigma konector.ttf ttf-aenigma koneerie.ttf ttf-aenigma kouzan-mouhitsu-gyosho.ttf fonts-kouzan-mouhitsu kouzan-mouhitsu-sosho.ttf fonts-kouzan-mouhitsu kouzan-mouhitsu.ttf fonts-kouzan-mouhitsu kurvatur.ttf ttf-aenigma lakeshor.ttf ttf-aenigma lakkireddy.ttf fonts-teluguvijayam lamebrai.ttf ttf-aenigma larkspur.ttf ttf-aenigma latinmodernmath-regular.otf fonts-lmodern lato-bla.ttf fonts-lato lato-blaita.ttf fonts-lato lato-bol.ttf fonts-lato lato-bolita.ttf fonts-lato lato-hai.ttf fonts-lato lato-haiita.ttf fonts-lato lato-lig.ttf fonts-lato lato-ligita.ttf fonts-lato lato-reg.ttf fonts-lato lato-regita.ttf fonts-lato lethargi.ttf ttf-aenigma liberationmono-bold.ttf fonts-liberation liberationmono-bold.ttf ttf-liberation liberationmono-bolditalic.ttf fonts-liberation liberationmono-bolditalic.ttf ttf-liberation liberationmono-italic.ttf fonts-liberation liberationmono-italic.ttf ttf-liberation liberationmono-regular.ttf fonts-liberation liberationmono-regular.ttf ttf-liberation liberationsans-bold.ttf fonts-liberation liberationsans-bold.ttf ttf-liberation liberationsans-bolditalic.ttf fonts-liberation liberationsans-bolditalic.ttf ttf-liberation liberationsans-italic.ttf fonts-liberation liberationsans-italic.ttf ttf-liberation liberationsans-regular.ttf fonts-liberation liberationsans-regular.ttf ttf-liberation liberationsansnarrow-bold.ttf fonts-liberation liberationsansnarrow-bold.ttf ttf-liberation liberationsansnarrow-bolditalic.ttf fonts-liberation liberationsansnarrow-bolditalic.ttf ttf-liberation liberationsansnarrow-italic.ttf fonts-liberation liberationsansnarrow-italic.ttf ttf-liberation liberationsansnarrow-regular.ttf fonts-liberation liberationsansnarrow-regular.ttf ttf-liberation liberationserif-bold.ttf fonts-liberation liberationserif-bold.ttf ttf-liberation liberationserif-bolditalic.ttf fonts-liberation liberationserif-bolditalic.ttf ttf-liberation liberationserif-italic.ttf fonts-liberation liberationserif-italic.ttf ttf-liberation liberationserif-regular.ttf fonts-liberation liberationserif-regular.ttf ttf-liberation librisadfstd-bold.otf ttf-adf-libris librisadfstd-bolditalic.otf ttf-adf-libris librisadfstd-italic.otf ttf-adf-libris librisadfstd-regular.otf ttf-adf-libris licostrg.ttf ttf-aenigma lightout.ttf ttf-aenigma likhannormal.ttf fonts-beng-extra linbiolinum_k.otf fonts-linuxlibertine linbiolinum_r.otf fonts-linuxlibertine linbiolinum_rb.otf fonts-linuxlibertine linbiolinum_ri.otf fonts-linuxlibertine lindenhill-italic.otf fonts-lindenhill lindenhill.otf fonts-lindenhill lineding.ttf ttf-aenigma linlibertine_dr.otf fonts-linuxlibertine linlibertine_i.otf fonts-linuxlibertine linlibertine_m.otf fonts-linuxlibertine linlibertine_r.otf fonts-linuxlibertine linlibertine_rb.otf fonts-linuxlibertine linlibertine_rbi.otf fonts-linuxlibertine linlibertine_ri.otf fonts-linuxlibertine linlibertine_rz.otf fonts-linuxlibertine linlibertine_rzi.otf fonts-linuxlibertine lklug.ttf fonts-lklug-sinhala lmmono10-italic.otf fonts-lmodern lmmono10-regular.otf fonts-lmodern lmmono12-regular.otf fonts-lmodern lmmono8-regular.otf fonts-lmodern lmmono9-regular.otf fonts-lmodern lmmonocaps10-oblique.otf fonts-lmodern lmmonocaps10-regular.otf fonts-lmodern lmmonolt10-bold.otf fonts-lmodern lmmonolt10-boldoblique.otf fonts-lmodern lmmonolt10-oblique.otf fonts-lmodern lmmonolt10-regular.otf fonts-lmodern lmmonoltcond10-oblique.otf fonts-lmodern lmmonoltcond10-regular.otf fonts-lmodern lmmonoprop10-oblique.otf fonts-lmodern lmmonoprop10-regular.otf fonts-lmodern lmmonoproplt10-bold.otf fonts-lmodern lmmonoproplt10-boldoblique.otf fonts-lmodern lmmonoproplt10-oblique.otf fonts-lmodern lmmonoproplt10-regular.otf fonts-lmodern lmmonoslant10-regular.otf fonts-lmodern lmroman10-bold.otf fonts-lmodern lmroman10-bolditalic.otf fonts-lmodern lmroman10-italic.otf fonts-lmodern lmroman10-regular.otf fonts-lmodern lmroman12-bold.otf fonts-lmodern lmroman12-italic.otf fonts-lmodern lmroman12-regular.otf fonts-lmodern lmroman17-regular.otf fonts-lmodern lmroman5-bold.otf fonts-lmodern lmroman5-regular.otf fonts-lmodern lmroman6-bold.otf fonts-lmodern lmroman6-regular.otf fonts-lmodern lmroman7-bold.otf fonts-lmodern lmroman7-italic.otf fonts-lmodern lmroman7-regular.otf fonts-lmodern lmroman8-bold.otf fonts-lmodern lmroman8-italic.otf fonts-lmodern lmroman8-regular.otf fonts-lmodern lmroman9-bold.otf fonts-lmodern lmroman9-italic.otf fonts-lmodern lmroman9-regular.otf fonts-lmodern lmromancaps10-oblique.otf fonts-lmodern lmromancaps10-regular.otf fonts-lmodern lmromandemi10-oblique.otf fonts-lmodern lmromandemi10-regular.otf fonts-lmodern lmromandunh10-oblique.otf fonts-lmodern lmromandunh10-regular.otf fonts-lmodern lmromanslant10-bold.otf fonts-lmodern lmromanslant10-regular.otf fonts-lmodern lmromanslant12-regular.otf fonts-lmodern lmromanslant17-regular.otf fonts-lmodern lmromanslant8-regular.otf fonts-lmodern lmromanslant9-regular.otf fonts-lmodern lmromanunsl10-regular.otf fonts-lmodern lmsans10-bold.otf fonts-lmodern lmsans10-boldoblique.otf fonts-lmodern lmsans10-oblique.otf fonts-lmodern lmsans10-regular.otf fonts-lmodern lmsans12-oblique.otf fonts-lmodern lmsans12-regular.otf fonts-lmodern lmsans17-oblique.otf fonts-lmodern lmsans17-regular.otf fonts-lmodern lmsans8-oblique.otf fonts-lmodern lmsans8-regular.otf fonts-lmodern lmsans9-oblique.otf fonts-lmodern lmsans9-regular.otf fonts-lmodern lmsansdemicond10-oblique.otf fonts-lmodern lmsansdemicond10-regular.otf fonts-lmodern lmsansquot8-bold.otf fonts-lmodern lmsansquot8-boldoblique.otf fonts-lmodern lmsansquot8-oblique.otf fonts-lmodern lmsansquot8-regular.otf fonts-lmodern lobster.otf fonts-lobster lobstertwo-bold.otf fonts-lobstertwo lobstertwo-bolditalic.otf fonts-lobstertwo lobstertwo-italic.otf fonts-lobstertwo lobstertwo-regular.otf fonts-lobstertwo lohit-assamese.ttf fonts-lohit-beng-assamese lohit-bengali.ttf fonts-lohit-beng-bengali lohit-devanagari.ttf fonts-lohit-deva lohit-gujarati.ttf fonts-lohit-gujr lohit-kannada.ttf fonts-lohit-knda lohit-malayalam.ttf fonts-lohit-mlym lohit-oriya.ttf fonts-lohit-orya lohit-punjabi.ttf fonts-lohit-guru lohit-tamil-classical.ttf fonts-lohit-taml-classical lohit-tamil.ttf fonts-lohit-taml lohit-telugu.ttf fonts-lohit-telu loma-bold.ttf fonts-tlwg-loma loma-boldoblique.ttf fonts-tlwg-loma loma-oblique.ttf fonts-tlwg-loma loma.ttf fonts-tlwg-loma loopy.ttf ttf-aenigma lowdown.ttf ttf-aenigma lucid.ttf ttf-aenigma lucid2.ttf ttf-aenigma lucid2o.ttf ttf-aenigma lucido.ttf ttf-aenigma lyneous.ttf ttf-aenigma lyneousl.ttf ttf-aenigma lynx.ttf ttf-aenigma macropsi.ttf ttf-aenigma madscrwl.ttf ttf-aenigma maitreyasymbols6.ttf fonts-maitreya manchufont.ttf fonts-manchufont markedfool.ttf fonts-dustin marvosym.ttf ttf-marvosym mathjax_ams-regular.otf fonts-mathjax mathjax_caligraphic-bold.otf fonts-mathjax mathjax_caligraphic-regular.otf fonts-mathjax mathjax_fraktur-bold.otf fonts-mathjax mathjax_fraktur-regular.otf fonts-mathjax mathjax_main-bold.otf fonts-mathjax mathjax_main-italic.otf fonts-mathjax mathjax_main-regular.otf fonts-mathjax mathjax_math-bolditalic.otf fonts-mathjax mathjax_math-italic.otf fonts-mathjax mathjax_math-regular.otf fonts-mathjax mathjax_sansserif-bold.otf fonts-mathjax mathjax_sansserif-italic.otf fonts-mathjax mathjax_sansserif-regular.otf fonts-mathjax mathjax_script-regular.otf fonts-mathjax mathjax_size1-regular.otf fonts-mathjax mathjax_size2-regular.otf fonts-mathjax mathjax_size3-regular.otf fonts-mathjax mathjax_size4-regular.otf fonts-mathjax mathjax_typewriter-regular.otf fonts-mathjax mathjax_winchrome-regular.otf fonts-mathjax mathjax_winie6-regular.otf fonts-mathjax maya106.ttf ttf-ancient-fonts meera.ttf fonts-smc meeratamil.ttf fonts-meera-taml mekanusadfstd-bold.otf ttf-adf-mekanus mekanusadfstd-bolditalic.otf ttf-adf-mekanus mekanusadfstd-italic.otf ttf-adf-mekanus mekanusadfstd-regular.otf ttf-adf-mekanus mgopencanonicabold.ttf fonts-mgopen mgopencanonicabolditalic.ttf fonts-mgopen mgopencanonicaitalic.ttf fonts-mgopen mgopencanonicaregular.ttf fonts-mgopen mgopencosmeticabold.ttf fonts-mgopen mgopencosmeticaboldoblique.ttf fonts-mgopen mgopencosmeticaoblique.ttf fonts-mgopen mgopencosmeticaregular.ttf fonts-mgopen mgopenmodatabold.ttf fonts-mgopen mgopenmodataboldoblique.ttf fonts-mgopen mgopenmodataoblique.ttf fonts-mgopen mgopenmodataregular.ttf fonts-mgopen mgopenmodernabold.ttf fonts-mgopen mgopenmodernaboldoblique.ttf fonts-mgopen mgopenmodernaoblique.ttf fonts-mgopen mgopenmodernaregular.ttf fonts-mgopen migmix-1m-bold.ttf fonts-migmix migmix-1m-regular.ttf fonts-migmix migmix-1p-bold.ttf fonts-migmix migmix-1p-regular.ttf fonts-migmix migmix-2m-bold.ttf fonts-migmix migmix-2m-regular.ttf fonts-migmix migmix-2p-bold.ttf fonts-migmix migmix-2p-regular.ttf fonts-migmix migu-1c-bold.ttf fonts-migmix migu-1c-regular.ttf fonts-migmix migu-1m-bold.ttf fonts-migmix migu-1m-regular.ttf fonts-migmix migu-1p-bold.ttf fonts-migmix migu-1p-regular.ttf fonts-migmix migu-2m-bold.ttf fonts-migmix migu-2m-regular.ttf fonts-migmix mima4x4i.ttf ttf-aenigma mima4x4o.ttf ttf-aenigma mimaalt1.ttf ttf-aenigma mimaalt2.ttf ttf-aenigma mimafuse.ttf ttf-aenigma mincer.ttf ttf-aenigma minikott.ttf ttf-aenigma minikstt.ttf ttf-aenigma misaki.ttf fonts-misaki misakimn.ttf fonts-misaki mishmash.ttf ttf-aenigma mitra.ttf fonts-beng-extra mmcedar-p.ttf fonts-mmcedar mmcedar.ttf fonts-mmcedar mobilize.ttf ttf-aenigma mona.ttf fonts-mona monapo.ttf fonts-monapo monkphon.ttf ttf-aenigma monou___.ttf fonts-uralic moronmis.ttf ttf-aenigma mplus-1c-black.ttf fonts-mplus mplus-1c-bold.ttf fonts-mplus mplus-1c-heavy.ttf fonts-mplus mplus-1c-light.ttf fonts-mplus mplus-1c-medium.ttf fonts-mplus mplus-1c-regular.ttf fonts-mplus mplus-1c-thin.ttf fonts-mplus mplus-1m-bold.ttf fonts-mplus mplus-1m-light.ttf fonts-mplus mplus-1m-medium.ttf fonts-mplus mplus-1m-regular.ttf fonts-mplus mplus-1m-thin.ttf fonts-mplus mplus-1mn-bold.ttf fonts-mplus mplus-1mn-light.ttf fonts-mplus mplus-1mn-medium.ttf fonts-mplus mplus-1mn-regular.ttf fonts-mplus mplus-1mn-thin.ttf fonts-mplus mplus-1p-black.ttf fonts-mplus mplus-1p-bold.ttf fonts-mplus mplus-1p-heavy.ttf fonts-mplus mplus-1p-light.ttf fonts-mplus mplus-1p-medium.ttf fonts-mplus mplus-1p-regular.ttf fonts-mplus mplus-1p-thin.ttf fonts-mplus mplus-2c-black.ttf fonts-mplus mplus-2c-bold.ttf fonts-mplus mplus-2c-heavy.ttf fonts-mplus mplus-2c-light.ttf fonts-mplus mplus-2c-medium.ttf fonts-mplus mplus-2c-regular.ttf fonts-mplus mplus-2c-thin.ttf fonts-mplus mplus-2m-bold.ttf fonts-mplus mplus-2m-light.ttf fonts-mplus mplus-2m-medium.ttf fonts-mplus mplus-2m-regular.ttf fonts-mplus mplus-2m-thin.ttf fonts-mplus mplus-2p-black.ttf fonts-mplus mplus-2p-bold.ttf fonts-mplus mplus-2p-heavy.ttf fonts-mplus mplus-2p-light.ttf fonts-mplus mplus-2p-medium.ttf fonts-mplus mplus-2p-regular.ttf fonts-mplus mplus-2p-thin.ttf fonts-mplus mry_kacstqurn.ttf fonts-kacst msam10.ttf fonts-lyx msbm10.ttf fonts-lyx mtlc3m.ttf fonts-motoya-l-cedar mtlmr3m.ttf fonts-motoya-l-maruberi muktinarrow.ttf fonts-beng-extra muktinarrowbold.ttf fonts-beng-extra museumbible.otf fonts-levien-museum museumfoundry.otf fonts-levien-museum museumfourteen.otf fonts-levien-museum museumsixty.otf fonts-levien-museum musica306.otf ttf-ancient-fonts mysteron.ttf ttf-aenigma n019003d.pfb t1-cyrillic n019004d.pfb t1-cyrillic n019023d.pfb t1-cyrillic n019024d.pfb t1-cyrillic n019043d.pfb t1-cyrillic n019044d.pfb t1-cyrillic n019063d.pfb t1-cyrillic n019064d.pfb t1-cyrillic n021003d.pfb t1-cyrillic n021004d.pfb t1-cyrillic n021023d.pfb t1-cyrillic n021024d.pfb t1-cyrillic n022003d.pfb t1-cyrillic n022004d.pfb t1-cyrillic n022023d.pfb t1-cyrillic n022024d.pfb t1-cyrillic nafeesweb.ttf fonts-nafees nakula.ttf fonts-nakula nanosecw.ttf ttf-aenigma nanumbarungothic.ttf fonts-nanum nanumbarungothicbold.ttf fonts-nanum nanumbrush.ttf fonts-nanum-extra nanumgothic.ttf fonts-nanum nanumgothic_coding.ttf fonts-nanum-coding nanumgothic_coding_bold.ttf fonts-nanum-coding nanumgothicbold.ttf fonts-nanum nanumgothiceco.ttf fonts-nanum-eco nanumgothicecobold.ttf fonts-nanum-eco nanumgothicecoextrabold.ttf fonts-nanum-eco nanumgothicextrabold.ttf fonts-nanum-extra nanumgothiclight.ttf fonts-nanum-extra nanummyeongjo.ttf fonts-nanum nanummyeongjobold.ttf fonts-nanum nanummyeongjoeco.ttf fonts-nanum-eco nanummyeongjoecobold.ttf fonts-nanum-eco nanummyeongjoecoextrabold.ttf fonts-nanum-eco nanummyeongjoextrabold.ttf fonts-nanum-extra nanumpen.ttf fonts-nanum-extra naughts.ttf ttf-aenigma navilu.ttf fonts-navilu nazli.ttf fonts-farsiweb nazlib.ttf fonts-farsiweb neural.ttf ttf-aenigma neuralol.ttf ttf-aenigma nominal.ttf ttf-aenigma norasi-bold.ttf fonts-tlwg-norasi norasi-bolditalic.ttf fonts-tlwg-norasi norasi-boldoblique.ttf fonts-tlwg-norasi norasi-italic.ttf fonts-tlwg-norasi norasi-oblique.ttf fonts-tlwg-norasi norasi.ttf fonts-tlwg-norasi nostalgi.ttf ttf-aenigma notosans-bold.ttf fonts-noto notosans-bolditalic.ttf fonts-noto notosans-italic.ttf fonts-noto notosans-regular.ttf fonts-noto notosansarmenian-bold.ttf fonts-noto notosansarmenian-regular.ttf fonts-noto notosansdevanagari-bold.ttf fonts-noto notosansdevanagari-regular.ttf fonts-noto notosansdevanagariui-bold.ttf fonts-noto notosansdevanagariui-regular.ttf fonts-noto notosansethiopic-bold.ttf fonts-noto notosansethiopic-regular.ttf fonts-noto notosansgeorgian-bold.ttf fonts-noto notosansgeorgian-regular.ttf fonts-noto notosanshebrew-bold.ttf fonts-noto notosanshebrew-regular.ttf fonts-noto notosanskhmer-bold.ttf fonts-noto notosanskhmer-regular.ttf fonts-noto notosanskhmerui-bold.ttf fonts-noto notosanskhmerui-regular.ttf fonts-noto notosanslao-bold.ttf fonts-noto notosanslao-regular.ttf fonts-noto notosanslaoui-bold.ttf fonts-noto notosanslaoui-regular.ttf fonts-noto notosanstamil-bold.ttf fonts-noto notosanstamil-regular.ttf fonts-noto notosanstamilui-bold.ttf fonts-noto notosanstamilui-regular.ttf fonts-noto notosansthai-bold.ttf fonts-noto notosansthai-regular.ttf fonts-noto notosansthaiui-bold.ttf fonts-noto notosansthaiui-regular.ttf fonts-noto notosansui-bold.ttf fonts-noto notosansui-bolditalic.ttf fonts-noto notosansui-italic.ttf fonts-noto notosansui-regular.ttf fonts-noto notoserif-bold.ttf fonts-noto notoserif-bolditalic.ttf fonts-noto notoserif-italic.ttf fonts-noto notoserif-regular.ttf fonts-noto notoserifarmenian-bold.ttf fonts-noto notoserifarmenian-regular.ttf fonts-noto notoserifgeorgian-bold.ttf fonts-noto notoserifgeorgian-regular.ttf fonts-noto notoseriflao-bold.ttf fonts-noto notoseriflao-regular.ttf fonts-noto notoserifthai-bold.ttf fonts-noto notoserifthai-regular.ttf fonts-noto notqr.ttf ttf-aenigma nsecthck.ttf ttf-aenigma nsecthin.ttf ttf-aenigma nucleus.ttf ttf-aenigma numskull.ttf ttf-aenigma nuosusil.ttf fonts-sil-nuosusil nymonak.ttf ttf-aenigma obloquyo.ttf ttf-aenigma obloquys.ttf ttf-aenigma obstacle.ttf ttf-aenigma obstacll.ttf ttf-aenigma ocra.ttf fonts-ocr-a ocrabold.ttf fonts-ocr-a ocracondensed.ttf fonts-ocr-a ocraitalic.ttf fonts-ocr-a offkiltl.ttf ttf-aenigma offkiltr.ttf ttf-aenigma okolaks_gbold.ttf fonts-okolaks oldaniaadfstd-bold.otf ttf-adf-oldania oldaniaadfstd-bolditalic.otf ttf-adf-oldania oldaniaadfstd-italic.otf ttf-adf-oldania oldaniaadfstd-regular.otf ttf-adf-oldania oldslavicregu.pfb t1-oldslavic oldstandard-bold.ttf fonts-oldstandard oldstandard-italic.ttf fonts-oldstandard oldstandard-regular.ttf fonts-oldstandard opendinschriftenengshrift.ttf fonts-opendin opendyslexic-bold.otf fonts-opendyslexic opendyslexic-bolditalic.otf fonts-opendyslexic opendyslexic-italic.otf fonts-opendyslexic opendyslexic-regular.otf fonts-opendyslexic opendyslexicalta-bold.otf fonts-opendyslexic opendyslexicalta-bolditalic.otf fonts-opendyslexic opendyslexicalta-italic.otf fonts-opendyslexic opendyslexicalta-regular.otf fonts-opendyslexic opendyslexicmono-regular.otf fonts-opendyslexic opens___.ttf fonts-opensymbol opiated.ttf ttf-aenigma orbicula.ttf ttf-aenigma outersid.ttf ttf-aenigma overhead.ttf ttf-aenigma p052003d.pfb t1-cyrillic p052004d.pfb t1-cyrillic p052023d.pfb t1-cyrillic p052024d.pfb t1-cyrillic padauk-bold.ttf fonts-sil-padauk padauk-book.ttf fonts-sil-padauk padauk-bookbold.ttf fonts-sil-padauk padauk.ttf fonts-sil-padauk padmaa.ttf fonts-gujr-extra pagul.ttf fonts-pagul pallu___.ttf fonts-uralic pallub__.ttf fonts-uralic pallui__.ttf fonts-uralic pdark.ttf ttf-aenigma pecita.otf fonts-pecita penguinattack.ttf fonts-dustin persuasi.ttf ttf-aenigma phetsarath_ot.ttf fonts-lao phorfeir.ttf ttf-aenigma phorfeis.ttf ttf-aenigma pincers.ttf ttf-aenigma pindown.ttf ttf-aenigma pindownp.ttf ttf-aenigma pindwnx.ttf ttf-aenigma pindwnxp.ttf ttf-aenigma pixlkrud.ttf ttf-aenigma plasdrip.ttf ttf-aenigma plasdrpe.ttf ttf-aenigma play-bold.otf fonts-play play-bold.ttf fonts-play play-regular.otf fonts-play play-regular.ttf fonts-play pneumati.ttf ttf-aenigma pneutall.ttf ttf-aenigma pneuwide.ttf ttf-aenigma ponnala.ttf fonts-teluguvijayam pothana2000.ttf fonts-telu-extra powdwrk5.ttf ttf-aenigma prociono.otf fonts-prociono prociono.otf fonts-prociono procionott.ttf fonts-prociono procionott.ttf fonts-prociono progenisis.ttf fonts-dustin pseudo.ttf ttf-aenigma purisa-bold.ttf fonts-tlwg-purisa purisa-boldoblique.ttf fonts-tlwg-purisa purisa-oblique.ttf fonts-tlwg-purisa purisa.ttf fonts-tlwg-purisa qbicle1.ttf ttf-aenigma qbicle2.ttf ttf-aenigma qbicle3.ttf ttf-aenigma qbicle4.ttf ttf-aenigma qlumpy.ttf ttf-aenigma qlumpysh.ttf ttf-aenigma quacksal.ttf ttf-aenigma quadrcal.ttf ttf-aenigma quadrtic.ttf ttf-aenigma quandary.ttf ttf-aenigma quantfh.ttf ttf-aenigma quantflt.ttf ttf-aenigma quantrh.ttf ttf-aenigma quantrnd.ttf ttf-aenigma quanttap.ttf ttf-aenigma quaranti.ttf ttf-aenigma quarthck.ttf ttf-aenigma quarthin.ttf ttf-aenigma quattrocento-regular.otf fonts-quattrocento queasy.ttf ttf-aenigma queasyol.ttf ttf-aenigma quercus.ttf fonts-linex quercus_bold.ttf fonts-linex quercus_bold_it.ttf fonts-linex quercus_it.ttf fonts-linex quillexo.ttf ttf-aenigma quillexs.ttf ttf-aenigma rachana.ttf fonts-smc radissans-medium.otf ttf-radisnoir radissans-medium.ttf ttf-radisnoir raghumalayalamsans.ttf fonts-smc rambling.ttf ttf-aenigma ravaged2.ttf ttf-aenigma ravcater.ttf ttf-aenigma raviprakash.ttf fonts-teluguvijayam raydiat2.ttf ttf-aenigma reason.ttf ttf-aenigma reasonsh.ttf ttf-aenigma redundan.ttf ttf-aenigma regenera.ttf ttf-aenigma registry.ttf ttf-aenigma rehearsc.ttf ttf-aenigma rehearso.ttf ttf-aenigma rehearsp.ttf ttf-aenigma rekha.ttf fonts-gujr-extra relapse.ttf ttf-aenigma revert.ttf ttf-aenigma revertro.ttf ttf-aenigma roboto-black.ttf fonts-roboto roboto-blackitalic.ttf fonts-roboto roboto-bold.ttf fonts-roboto roboto-bolditalic.ttf fonts-roboto roboto-italic.ttf fonts-roboto roboto-light.ttf fonts-roboto roboto-lightitalic.ttf fonts-roboto roboto-medium.ttf fonts-roboto roboto-mediumitalic.ttf fonts-roboto roboto-regular.ttf fonts-roboto roboto-thin.ttf fonts-roboto roboto-thinitalic.ttf fonts-roboto robotocondensed-bold.ttf fonts-roboto robotocondensed-bolditalic.ttf fonts-roboto robotocondensed-italic.ttf fonts-roboto robotocondensed-light.ttf fonts-roboto robotocondensed-lightitalic.ttf fonts-roboto robotocondensed-regular.ttf fonts-roboto romandeadfscriptstd-italic.otf ttf-adf-romande romandeadfstd-demibold.otf ttf-adf-romande romandeadfstd-demibolditalic.otf ttf-adf-romande romandeadfstd-italic.otf ttf-adf-romande romandeadfstd-regular.otf ttf-adf-romande romandeadfstylestd-demibold.otf ttf-adf-romande romandeadfstylestd-regular.otf ttf-adf-romande romau___.ttf fonts-uralic romaub__.ttf fonts-uralic romaui__.ttf fonts-uralic rotund.ttf ttf-aenigma rotundo.ttf ttf-aenigma roughday.ttf ttf-aenigma rsfs10.ttf fonts-lyx rufscript010.ttf fonts-rufscript ryuker.ttf ttf-aenigma saab.ttf fonts-guru-extra sahadeva.ttf fonts-sahadeva samanata.ttf fonts-deva-extra samyak-devanagari.ttf fonts-samyak-deva samyak-gujarati.ttf fonts-samyak-gujr samyak-malayalam.ttf fonts-samyak-mlym samyak-oriya.ttf fonts-samyak-orya samyak-tamil.ttf fonts-samyak-taml sanscu__.ttf fonts-uralic sanscub_.ttf fonts-uralic sansu___.ttf fonts-uralic sansub__.ttf fonts-uralic sansubi_.ttf fonts-uralic sansui__.ttf fonts-uralic sarai.ttf fonts-sarai sarcasti.ttf ttf-aenigma saunder.ttf ttf-aenigma sawarabi-gothic-medium.ttf fonts-sawarabi-gothic sawarabi-mincho-medium.ttf fonts-sawarabi-mincho sawasdee-bold.ttf fonts-tlwg-sawasdee sawasdee-boldoblique.ttf fonts-tlwg-sawasdee sawasdee-oblique.ttf fonts-tlwg-sawasdee sawasdee.ttf fonts-tlwg-sawasdee scalines.ttf ttf-aenigma scheherazaderegot.ttf fonts-sil-scheherazade schou___.ttf fonts-uralic schoub__.ttf fonts-uralic schoui__.ttf fonts-uralic sclnmaze.ttf ttf-aenigma sequence.ttf ttf-aenigma setbackt.ttf ttf-aenigma sideways.ttf ttf-aenigma sileot.ttf fonts-sil-ezra sileotsr.ttf fonts-sil-ezra simplto2.ttf ttf-aenigma skullcap.ttf ttf-aenigma slender.ttf ttf-aenigma slenderw.ttf ttf-aenigma slenmini.ttf ttf-aenigma slenstub.ttf ttf-aenigma snailets.ttf ttf-aenigma snb.ttf fonts-sil-sophia-nubian snbi.ttf fonts-sil-sophia-nubian sni.ttf fonts-sil-sophia-nubian snr.ttf fonts-sil-sophia-nubian spaciouo.ttf ttf-aenigma spacious.ttf ttf-aenigma spastic2.ttf ttf-aenigma spheroid.ttf ttf-aenigma spheroix.ttf ttf-aenigma splatz2.ttf ttf-aenigma sqroute.ttf ttf-aenigma stagnati.ttf ttf-aenigma staypuft.ttf ttf-staypuft stevehand.ttf ttf-sjfonts stixgeneral-bold.otf fonts-stix stixgeneral-bolditalic.otf fonts-stix stixgeneral-italic.otf fonts-stix stixgeneral-regular.otf fonts-stix stixintegralsd-bold.otf fonts-stix stixintegralsd-regular.otf fonts-stix stixintegralssm-bold.otf fonts-stix stixintegralssm-regular.otf fonts-stix stixintegralsup-bold.otf fonts-stix stixintegralsup-regular.otf fonts-stix stixintegralsupd-bold.otf fonts-stix stixintegralsupd-regular.otf fonts-stix stixintegralsupsm-bold.otf fonts-stix stixintegralsupsm-regular.otf fonts-stix stixnonunicode-bold.otf fonts-stix stixnonunicode-bolditalic.otf fonts-stix stixnonunicode-italic.otf fonts-stix stixnonunicode-regular.otf fonts-stix stixsizefivesym-regular.otf fonts-stix stixsizefoursym-bold.otf fonts-stix stixsizefoursym-regular.otf fonts-stix stixsizeonesym-bold.otf fonts-stix stixsizeonesym-regular.otf fonts-stix stixsizethreesym-bold.otf fonts-stix stixsizethreesym-regular.otf fonts-stix stixsizetwosym-bold.otf fonts-stix stixsizetwosym-regular.otf fonts-stix stixvariants-bold.otf fonts-stix stixvariants-regular.otf fonts-stix strande2.ttf ttf-aenigma summersby.ttf ttf-summersby supragc.ttf ttf-aenigma supragl.ttf ttf-aenigma suruma.ttf fonts-smc swift.ttf fonts-dustin swirled2.ttf ttf-aenigma switzeraadf-demibold.otf ttf-adf-switzera switzeraadf-demibolditalic.otf ttf-adf-switzera switzeraadf-italic.otf ttf-adf-switzera switzeraadf-regular.otf ttf-adf-switzera switzeraadfbold-italic.otf ttf-adf-switzera switzeraadfbold.otf ttf-adf-switzera switzeraadfcd-bold.otf ttf-adf-switzera switzeraadfcd-bolditalic.otf ttf-adf-switzera switzeraadfcd-italic.otf ttf-adf-switzera switzeraadfcd-regular.otf ttf-adf-switzera switzeraadfex-bold.otf ttf-adf-switzera switzeraadfex-bolditalic.otf ttf-adf-switzera switzeraadfex-italic.otf ttf-adf-switzera switzeraadfex-regular.otf ttf-adf-switzera switzeraadfextrabold-italic.otf ttf-adf-switzera switzeraadfextrabold.otf ttf-adf-switzera switzeraadflight-bold.otf ttf-adf-switzera switzeraadflight-bolditalic.otf ttf-adf-switzera switzeraadflight-italic.otf ttf-adf-switzera switzeraadflight-regular.otf ttf-adf-switzera switzeraadflightcd-bold.otf ttf-adf-switzera switzeraadflightcd-bolditalic.otf ttf-adf-switzera switzeraadflightcd-italic.otf ttf-adf-switzera switzeraadflightcd-regular.otf ttf-adf-switzera symbol.pfb xfonts-mathml symbol.pfb xfonts-mathml symbola605.ttf ttf-ancient-fonts symbolneu.ttf fonts-croscore symbols.otf fonts-circos-symbols symmetry.ttf ttf-aenigma syndrome.ttf ttf-aenigma syntheti.ttf ttf-aenigma syracuse.ttf ttf-aenigma tagbanwa.ttf ttf-tagbanwa takaoexgothic.ttf fonts-takao-gothic takaoexmincho.ttf fonts-takao-mincho takaogothic.ttf fonts-takao-gothic takaomincho.ttf fonts-takao-mincho takaopgothic.ttf fonts-takao-gothic takaopmincho.ttf fonts-takao-mincho tamu_kadampari.ttf fonts-taml-tamu tamu_kalyani.ttf fonts-taml-tamu tamu_maduram.ttf fonts-taml-tamu teams.pfb t1-teams teamsb.pfb t1-teams teamsbi.pfb t1-teams teamsi.pfb t1-teams tearful.ttf ttf-aenigma techniqo.ttf ttf-aenigma techniqu.ttf ttf-aenigma techover.ttf ttf-aenigma telephas.ttf ttf-aenigma tetri.ttf ttf-aenigma texgyreadventor-bold.otf fonts-texgyre texgyreadventor-bolditalic.otf fonts-texgyre texgyreadventor-italic.otf fonts-texgyre texgyreadventor-regular.otf fonts-texgyre texgyrebonum-bold.otf fonts-texgyre texgyrebonum-bolditalic.otf fonts-texgyre texgyrebonum-italic.otf fonts-texgyre texgyrebonum-regular.otf fonts-texgyre texgyrechorus-mediumitalic.otf fonts-texgyre texgyrecursor-bold.otf fonts-texgyre texgyrecursor-bolditalic.otf fonts-texgyre texgyrecursor-italic.otf fonts-texgyre texgyrecursor-regular.otf fonts-texgyre texgyreheros-bold.otf fonts-texgyre texgyreheros-bolditalic.otf fonts-texgyre texgyreheros-italic.otf fonts-texgyre texgyreheros-regular.otf fonts-texgyre texgyreheroscn-bold.otf fonts-texgyre texgyreheroscn-bolditalic.otf fonts-texgyre texgyreheroscn-italic.otf fonts-texgyre texgyreheroscn-regular.otf fonts-texgyre texgyrepagella-bold.otf fonts-texgyre texgyrepagella-bolditalic.otf fonts-texgyre texgyrepagella-italic.otf fonts-texgyre texgyrepagella-math.otf fonts-texgyre texgyrepagella-regular.otf fonts-texgyre texgyreschola-bold.otf fonts-texgyre texgyreschola-bolditalic.otf fonts-texgyre texgyreschola-italic.otf fonts-texgyre texgyreschola-regular.otf fonts-texgyre texgyretermes-bold.otf fonts-texgyre texgyretermes-bolditalic.otf fonts-texgyre texgyretermes-italic.otf fonts-texgyre texgyretermes-math.otf fonts-texgyre texgyretermes-regular.otf fonts-texgyre thabit-bold-oblique.ttf fonts-hosny-thabit thabit-bold.ttf fonts-hosny-thabit thabit-oblique.ttf fonts-hosny-thabit thabit.ttf fonts-hosny-thabit thwart.ttf ttf-aenigma tibetanmachineuni.ttf fonts-tibetan-machine tinos-bold.ttf fonts-croscore tinos-bolditalic.ttf fonts-croscore tinos-italic.ttf fonts-croscore tinos-regular.ttf fonts-croscore tint.ttf fonts-senamirmir-washra tipa10.pfb tipa tipa12.pfb tipa tipa17.pfb tipa tipa8.pfb tipa tipa9.pfb tipa tipab10.pfb tipa tipabs10.pfb tipa tipabx10.pfb tipa tipabx12.pfb tipa tipabx8.pfb tipa tipabx9.pfb tipa tipasb10.pfb tipa tipasi10.pfb tipa tipasl10.pfb tipa tipasl12.pfb tipa tipasl8.pfb tipa tipasl9.pfb tipa tipass10.pfb tipa tipass12.pfb tipa tipass17.pfb tipa tipass8.pfb tipa tipass9.pfb tipa tipats10.pfb tipa tipatt10.pfb tipa tipatt12.pfb tipa tipatt8.pfb tipa tipatt9.pfb tipa tipx10.pfb tipa tipx12.pfb tipa tipx17.pfb tipa tipx8.pfb tipa tipx9.pfb tipa tipxb10.pfb tipa tipxbs10.pfb tipa tipxbx10.pfb tipa tipxbx12.pfb tipa tipxbx8.pfb tipa tipxbx9.pfb tipa tipxsb10.pfb tipa tipxsi10.pfb tipa tipxsl10.pfb tipa tipxsl12.pfb tipa tipxsl8.pfb tipa tipxsl9.pfb tipa tipxss10.pfb tipa tipxss12.pfb tipa tipxss17.pfb tipa tipxss8.pfb tipa tipxss9.pfb tipa tipxts10.pfb tipa tipxtt10.pfb tipa tipxtt12.pfb tipa tipxtt8.pfb tipa tipxtt9.pfb tipa tirekv__.ttf ttf-tiresias tiresias_infofont.ttf ttf-tiresias tiresias_infofont_bold.ttf ttf-tiresias tiresias_infofont_italic.ttf ttf-tiresias tiresias_infofontz.ttf ttf-tiresias tiresias_infofontz_bold.ttf ttf-tiresias tiresias_infofontz_italic.ttf ttf-tiresias tiresias_lpfont.ttf ttf-tiresias tiresias_lpfont_bold.ttf ttf-tiresias tiresias_lpfont_italic.ttf ttf-tiresias tiresias_pcfont.ttf ttf-tiresias tiresias_pcfont_bold.ttf ttf-tiresias tiresias_pcfont_italic.ttf ttf-tiresias tiresias_pcfontz.ttf ttf-tiresias tiresias_pcfontz_bold.ttf ttf-tiresias tiresias_pcfontz_italic.ttf ttf-tiresias tiresias_signfont.ttf ttf-tiresias tiresias_signfont_bold.ttf ttf-tiresias tiresias_signfont_italic.ttf ttf-tiresias tiresias_signfontz.ttf ttf-tiresias tiresias_signfontz_bold.ttf ttf-tiresias tiresias_signfontz_italic.ttf ttf-tiresias titr.ttf fonts-farsiweb tlwgmono-bold.ttf fonts-tlwg-mono tlwgmono-boldoblique.ttf fonts-tlwg-mono tlwgmono-oblique.ttf fonts-tlwg-mono tlwgmono.ttf fonts-tlwg-mono tlwgtypewriter-bold.ttf fonts-tlwg-typewriter tlwgtypewriter-boldoblique.ttf fonts-tlwg-typewriter tlwgtypewriter-oblique.ttf fonts-tlwg-typewriter tlwgtypewriter.ttf fonts-tlwg-typewriter tlwgtypist-bold.ttf fonts-tlwg-typist tlwgtypist-boldoblique.ttf fonts-tlwg-typist tlwgtypist-oblique.ttf fonts-tlwg-typist tlwgtypist.ttf fonts-tlwg-typist tlwgtypo-bold.ttf fonts-tlwg-typo tlwgtypo-boldoblique.ttf fonts-tlwg-typo tlwgtypo-oblique.ttf fonts-tlwg-typo tlwgtypo.ttf fonts-tlwg-typo tomsontalks.ttf fonts-tomsontalks tonik.ttf ttf-aenigma tragic2.ttf ttf-aenigma tribunadfmedcdstd-bold.otf ttf-adf-tribun tribunadfmedcdstd-bolditalic.otf ttf-adf-tribun tribunadfmedcdstd-italic.otf ttf-adf-tribun tribunadfmedcdstd-regular.otf ttf-adf-tribun tribunadfmedstd-bold.otf ttf-adf-tribun tribunadfmedstd-bolditalic.otf ttf-adf-tribun tribunadfmedstd-italic.otf ttf-adf-tribun tribunadfmedstd-regular.otf ttf-adf-tribun tscu_comic.ttf fonts-taml-tscu tscu_paranar.ttf fonts-taml-tscu tscu_paranarb.ttf fonts-taml-tscu tscu_paranari.ttf fonts-taml-tscu tscu_times.ttf fonts-taml-tscu tsextolo.ttf ttf-aenigma tsextols.ttf ttf-aenigma tuffy_bold.ttf fonts-tuffy tuffy_bold_italic.ttf fonts-tuffy tuffy_italic.ttf fonts-tuffy tuffy_regular.ttf fonts-tuffy turmoil.ttf ttf-aenigma typoscript.otf fonts-levien-typoscript ubiquity.ttf ttf-aenigma ubuntu-title.ttf fonts-ubuntu-title ukij3d.ttf fonts-ukij-uyghur ukij_macbasma.ttf fonts-ukij-uyghur ukij_macbasmabold.ttf fonts-ukij-uyghur ukij_macekran.ttf fonts-ukij-uyghur ukij_macekranbold.ttf fonts-ukij-uyghur ukijbasma.ttf fonts-ukij-uyghur ukijbom.ttf fonts-ukij-uyghur ukijchechek.ttf fonts-ukij-uyghur ukijchik.ttf fonts-ukij-uyghur ukijcjk.ttf fonts-ukij-uyghur ukijdi.ttf fonts-ukij-uyghur ukijdik.ttf fonts-ukij-uyghur ukijdit.ttf fonts-ukij-uyghur ukijdiy.ttf fonts-ukij-uyghur ukijekran.ttf fonts-ukij-uyghur ukijelipbe-b.ttf fonts-ukij-uyghur ukijelipbe.ttf fonts-ukij-uyghur ukijelipbech-b.ttf fonts-ukij-uyghur ukijelipbech.ttf fonts-ukij-uyghur ukijes.ttf fonts-ukij-uyghur ukijesbold.ttf fonts-ukij-uyghur ukijesc.ttf fonts-ukij-uyghur ukijesn.ttf fonts-ukij-uyghur ukijesq.ttf fonts-ukij-uyghur ukijest.ttf fonts-ukij-uyghur ukijimaret.ttf fonts-ukij-uyghur ukijinichke.ttf fonts-ukij-uyghur ukijinichkeb.ttf fonts-ukij-uyghur ukijje.ttf fonts-ukij-uyghur ukijjunu.ttf fonts-ukij-uyghur ukijka.ttf fonts-ukij-uyghur ukijka3d-b.ttf fonts-ukij-uyghur ukijka3d.ttf fonts-ukij-uyghur ukijkesme-b.ttf fonts-ukij-uyghur ukijkesme.ttf fonts-ukij-uyghur ukijkesmetuz-b.ttf fonts-ukij-uyghur ukijkesmetuz.ttf fonts-ukij-uyghur ukijku.ttf fonts-ukij-uyghur ukijku3d.ttf fonts-ukij-uyghur ukijkuchi.ttf fonts-ukij-uyghur ukijkug.ttf fonts-ukij-uyghur ukijkuka.ttf fonts-ukij-uyghur ukijkut.ttf fonts-ukij-uyghur ukijkuu.ttf fonts-ukij-uyghur ukijkuy.ttf fonts-ukij-uyghur ukijkuyb.ttf fonts-ukij-uyghur ukijkuyol.ttf fonts-ukij-uyghur ukijme.ttf fonts-ukij-uyghur ukijmejn.ttf fonts-ukij-uyghur ukijmejt.ttf fonts-ukij-uyghur ukijmoyq.ttf fonts-ukij-uyghur ukijnsq.ttf fonts-ukij-uyghur ukijnsqb.ttf fonts-ukij-uyghur ukijnsqz.ttf fonts-ukij-uyghur ukijnsqzb.ttf fonts-ukij-uyghur ukijorqun_b.ttf fonts-ukij-uyghur ukijorqun_y.ttf fonts-ukij-uyghur ukijorxun.ttf fonts-ukij-uyghur ukijqara-b.ttf fonts-ukij-uyghur ukijqara.ttf fonts-ukij-uyghur ukijqol_tez.ttf fonts-ukij-uyghur ukijqol_tuz.ttf fonts-ukij-uyghur ukijqol_yantu.ttf fonts-ukij-uyghur ukijqolyazma.ttf fonts-ukij-uyghur ukijru.ttf fonts-ukij-uyghur ukijsaet.ttf fonts-ukij-uyghur ukijsls.ttf fonts-ukij-uyghur ukijslsbold.ttf fonts-ukij-uyghur ukijslstom.ttf fonts-ukij-uyghur ukijteng-b.ttf fonts-ukij-uyghur ukijteng.ttf fonts-ukij-uyghur ukijtiken.ttf fonts-ukij-uyghur ukijtitle.ttf fonts-ukij-uyghur ukijtor.ttf fonts-ukij-uyghur ukijtughra.ttf fonts-ukij-uyghur ukijtut.ttf fonts-ukij-uyghur ukijtuz.ttf fonts-ukij-uyghur ukijtuzb.ttf fonts-ukij-uyghur ukijtuzbb.ttf fonts-ukij-uyghur ukijtuzbold.ttf fonts-ukij-uyghur ukijtuzg.ttf fonts-ukij-uyghur ukijtuzgb.ttf fonts-ukij-uyghur ukijtuzk.ttf fonts-ukij-uyghur ukijtuzkb.ttf fonts-ukij-uyghur ukijtuzq.ttf fonts-ukij-uyghur ukijtuzqb.ttf fonts-ukij-uyghur ukijtzneqish.ttf fonts-ukij-uyghur ukijtztr.ttf fonts-ukij-uyghur ukijtztrbold.ttf fonts-ukij-uyghur ukijzilwa.ttf fonts-ukij-uyghur ume-pgc4.ttf fonts-horai-umefont ume-pgc5.ttf fonts-horai-umefont ume-pgo4.ttf fonts-horai-umefont ume-pgo5.ttf fonts-horai-umefont ume-pgs4.ttf fonts-horai-umefont ume-pgs5.ttf fonts-horai-umefont ume-pmo3.ttf fonts-horai-umefont ume-pms3.ttf fonts-horai-umefont ume-tgc4.ttf fonts-horai-umefont ume-tgc5.ttf fonts-horai-umefont ume-tgo4.ttf fonts-horai-umefont ume-tgo5.ttf fonts-horai-umefont ume-tgs4.ttf fonts-horai-umefont ume-tgs5.ttf fonts-horai-umefont ume-tmo3.ttf fonts-horai-umefont ume-tms3.ttf fonts-horai-umefont ume-ugo4.ttf fonts-horai-umefont ume-ugo5.ttf fonts-horai-umefont umeplus-gothic.ttf fonts-umeplus umeplus-p-gothic.ttf fonts-umeplus umpush-bold.ttf fonts-tlwg-umpush umpush-boldoblique.ttf fonts-tlwg-umpush umpush-light.ttf fonts-tlwg-umpush umpush-lightoblique.ttf fonts-tlwg-umpush umpush-oblique.ttf fonts-tlwg-umpush umpush.ttf fonts-tlwg-umpush unanimo.ttf ttf-aenigma unanimoi.ttf ttf-aenigma unbatang.ttf fonts-unfonts-core unbatangbold.ttf fonts-unfonts-core underscr.ttf ttf-aenigma underwhe.ttf ttf-aenigma underwho.ttf ttf-aenigma undinaru.ttf fonts-unfonts-core undinarubold.ttf fonts-unfonts-core undinarulight.ttf fonts-unfonts-core undotum.ttf fonts-unfonts-core undotumbold.ttf fonts-unfonts-core undrscr2.ttf ttf-aenigma ungraphic.ttf fonts-unfonts-core ungraphicbold.ttf fonts-unfonts-core ungungseo.ttf fonts-unfonts-core unidings605.ttf ttf-ancient-fonts unifont.ttf ttf-unifont unifont_csur.ttf ttf-unifont unifont_sample.ttf ttf-unifont unifont_upper.ttf ttf-unifont unifont_upper_csur.ttf ttf-unifont unikuweb.ttf fonts-unikurdweb united.ttf ttf-aenigma universalisadfcdstd-bdoblique.otf ttf-adf-universalis universalisadfcdstd-bold.otf ttf-adf-universalis universalisadfcdstd-oblique.otf ttf-adf-universalis universalisadfcdstd-regular.otf ttf-adf-universalis universalisadfstd-bold.otf ttf-adf-universalis universalisadfstd-boldoblique.otf ttf-adf-universalis universalisadfstd-oblique.otf ttf-adf-universalis universalisadfstd-regular.otf ttf-adf-universalis unjamobatang.ttf fonts-unfonts-extra unjamodotum.ttf fonts-unfonts-extra unjamonovel.ttf fonts-unfonts-extra unjamosora.ttf fonts-unfonts-extra unlearn2.ttf ttf-aenigma unlearne.ttf ttf-aenigma unpen.ttf fonts-unfonts-extra unpenheulim.ttf fonts-unfonts-extra unpilgi.ttf fonts-unfonts-core unpilgia.ttf fonts-unfonts-extra unpilgibold.ttf fonts-unfonts-core unrespon.ttf ttf-aenigma unshinmun.ttf fonts-unfonts-extra untaza.ttf fonts-unfonts-extra unvada.ttf fonts-unfonts-extra unxgala.ttf ttf-aenigma unxgalaw.ttf ttf-aenigma unxgalo.ttf ttf-aenigma unxgalwo.ttf ttf-aenigma unyetgul.ttf fonts-unfonts-extra upheavtt.ttf ttf-aenigma upraise.ttf ttf-aenigma urcompi.ttf ttf-aenigma urcompo.ttf ttf-aenigma utkal.ttf fonts-orya-extra vacantz.ttf ttf-aenigma vanished.ttf ttf-aenigma vantage.ttf ttf-aenigma variance.ttf ttf-aenigma vemana2000.ttf fonts-telu-extra vera.ttf ttf-bitstream-vera verabd.ttf ttf-bitstream-vera verabi.ttf ttf-bitstream-vera verait.ttf ttf-bitstream-vera veramobd.ttf ttf-bitstream-vera veramobi.ttf ttf-bitstream-vera veramoit.ttf ttf-bitstream-vera veramono.ttf ttf-bitstream-vera verana-bold.otf ttf-adf-verana verana-bolditalic.otf ttf-adf-verana verana-italic.otf ttf-adf-verana verana-regular.otf ttf-adf-verana veranasans-bold.otf ttf-adf-verana veranasans-boldoblique.otf ttf-adf-verana veranasans-oblique.otf ttf-adf-verana veranasans-regular.otf ttf-adf-verana veranasansdemi-oblique.otf ttf-adf-verana veranasansdemi-regular.otf ttf-adf-verana veranasansmedium-oblique.otf ttf-adf-verana veranasansmedium-regular.otf ttf-adf-verana verase.ttf ttf-bitstream-vera verasebd.ttf ttf-bitstream-vera vertigo.ttf ttf-aenigma vertigo2.ttf ttf-aenigma vertigup.ttf ttf-aenigma vertiup2.ttf ttf-aenigma vigilanc.ttf ttf-aenigma vindicti.ttf ttf-aenigma visitor1.ttf ttf-aenigma visitor2.ttf ttf-aenigma vl-gothic-regular.ttf fonts-vlgothic vl-pgothic-regular.ttf fonts-vlgothic volatil1.ttf ttf-aenigma volatil2.ttf ttf-aenigma vollkorn-bold.ttf fonts-vollkorn vollkorn-bolditalic.ttf fonts-vollkorn vollkorn-italic.ttf fonts-vollkorn vollkorn-regular.ttf fonts-vollkorn wager.ttf ttf-aenigma wagerlos.ttf ttf-aenigma wagerwon.ttf ttf-aenigma waree-bold.ttf fonts-tlwg-waree waree-boldoblique.ttf fonts-tlwg-waree waree-oblique.ttf fonts-tlwg-waree waree.ttf fonts-tlwg-waree wargames.ttf fonts-dustin washrab.ttf fonts-senamirmir-washra washrasb.ttf fonts-senamirmir-washra wasy10.ttf fonts-lyx waver.ttf ttf-aenigma wayward.ttf ttf-aenigma waywards.ttf ttf-aenigma weatherd.ttf ttf-aenigma weathers.ttf ttf-aenigma weaver.ttf ttf-aenigma whatever.ttf ttf-aenigma whipsnap.ttf ttf-aenigma wigsquig.ttf ttf-aenigma wincing.ttf ttf-aenigma winks.ttf fonts-dustin withstan.ttf ttf-aenigma wobbly.ttf ttf-aenigma wookianos.ttf fonts-senamirmir-washra wyvernwi.ttf ttf-aenigma wyvernww.ttf ttf-aenigma xeroxmal.ttf ttf-aenigma xhume.ttf ttf-aenigma xipa10.pfb tipa xipab10.pfb tipa xipabs10.pfb tipa xipasb10.pfb tipa xipasi10.pfb tipa xipasl10.pfb tipa xipass10.pfb tipa xipital.ttf ttf-aenigma xipx10.pfb tipa xipxb10.pfb tipa xipxbs10.pfb tipa xipxsb10.pfb tipa xipxsi10.pfb tipa xipxsl10.pfb tipa xipxss10.pfb tipa xmaslght.ttf ttf-aenigma xtrusion.ttf ttf-aenigma yanonekaffeesatz-bold.otf fonts-yanone-kaffeesatz yanonekaffeesatz-bold.ttf fonts-yanone-kaffeesatz yanonekaffeesatz-light.otf fonts-yanone-kaffeesatz yanonekaffeesatz-light.ttf fonts-yanone-kaffeesatz yanonekaffeesatz-regular.otf fonts-yanone-kaffeesatz yanonekaffeesatz-regular.ttf fonts-yanone-kaffeesatz yanonekaffeesatz-thin.otf fonts-yanone-kaffeesatz yanonekaffeesatz-thin.ttf fonts-yanone-kaffeesatz yearend.ttf ttf-aenigma yebse.ttf fonts-senamirmir-washra yesterda.ttf ttf-aenigma yielding.ttf ttf-aenigma yigezubisratgothic.ttf fonts-senamirmir-washra yonder.ttf ttf-aenigma yoshisst.ttf ttf-aenigma yourcomp.ttf ttf-aenigma z003034d.pfb t1-cyrillic zaghawaberia.otf fonts-sil-zaghawa-beria zelan.ttf fonts-senamirmir-washra zeldadxt.ttf ttf-aenigma zenith.ttf ttf-aenigma zephyrea.ttf ttf-aenigma zephyreg.ttf ttf-aenigma zerovelo.ttf ttf-aenigma zirccube.ttf ttf-aenigma zirconia.ttf ttf-aenigma zoetrope.ttf ttf-aenigma zoidal.ttf ttf-aenigma zurklezo.ttf ttf-aenigma zurklezs.ttf ttf-aenigma ��������������lintian-2.5.22ubuntu1/data/files/standard-files�����������������������������������������������������0000664�0000000�0000000�00000000467�12310413144�016312� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Manually maintained list of "standard" files in /usr/share/doc/$pkg # These are not enough to consider the package "not-empty" # # Please keep this sorted (ignoring case) AUTHORS AUTHORS.gz changelog.Debian.gz changelog.gz COPYING.gz copyright HACKING HACKING.gz NEWS NEWS.gz README README.gz TODO TODO.gz ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/doc/��������������������������������������������������������������������������0000775�0000000�0000000�00000000000�12314371467�012231� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/doc/examples/�����������������������������������������������������������������0000775�0000000�0000000�00000000000�12310413144�014030� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/doc/examples/checks/����������������������������������������������������������0000775�0000000�0000000�00000000000�12310413144�015270� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/doc/examples/checks/my-vendor/������������������������������������������������0000775�0000000�0000000�00000000000�12310413144�017210� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/doc/examples/checks/my-vendor/another-check.pm��������������������������������0000664�0000000�0000000�00000002316�12310413144�022263� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# my-vendor/another-check -- lintian example check script -*- perl -*- # # Copyright © 2013 Niels Thykier <niels@thykier.net> # # 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::my_vendor::another_check; use strict; use warnings; use Lintian::Tags qw(tag); sub run { my ($pkg, undef, $info) = @_; if (not $info->index("usr/share/doc/$pkg/important-file")) { tag 'missing-some-important-file', "usr/share/doc/$pkg/important-file"; } return; } 1; ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/doc/examples/checks/my-vendor/some-check.pm�����������������������������������0000664�0000000�0000000�00000002646�12310413144�021574� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# my-vendor/some-check -- lintian example check script -*- perl -*- # # Copyright © 2013 Niels Thykier <niels@thykier.net> # # 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::my_vendor::some_check; use strict; use warnings; use Lintian::Tags qw(tag); sub run { my ($pkg, undef, $info) = @_; # This check only applies to source packages that are named # my-vendor-<something> return unless $pkg =~ m{\A my-vendor-}xsm; # Does not apply to the source "my-vendor-tools" return if $pkg eq 'my-vendor-tools'; if (not $info->relation('build-depends')->implies('my-vendor-tools')) { tag 'missing-build-depends-on-my-vendor-tools'; } return; } 1; ������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/doc/examples/checks/my-vendor/another-check.desc������������������������������0000664�0000000�0000000�00000000472�12310413144�022566� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Check-Script: my-vendor/another-check Author: Niels Thykier <niels@thykier.net> Type: binary Info: An example binary check Needs-Info: index Tag: missing-some-important-file Severity: serious Certainty: certain Info: The package is missing a very important file, which is required for all packages of my-vendor. ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/doc/examples/checks/my-vendor/some-check.desc���������������������������������0000664�0000000�0000000�00000000460�12310413144�022066� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Check-Script: my-vendor/some-check Author: Niels Thykier <niels@thykier.net> Type: source Info: An example source check Tag: missing-build-depends-on-my-vendor-tools Severity: serious Certainty: certain Info: The package name starts with "my-vendor-" and is missing a Build-Depends on my-vendor-tools. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/doc/examples/profiles/��������������������������������������������������������0000775�0000000�0000000�00000000000�12310413144�015653� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/doc/examples/profiles/my-vendor/����������������������������������������������0000775�0000000�0000000�00000000000�12310413144�017573� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/doc/examples/profiles/my-vendor/main.profile����������������������������������0000664�0000000�0000000�00000000773�12310413144�022110� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# The default profile for "my-vendor" Profile: my-vendor/main # It has all the checks and settings from the "debian" profile Extends: debian/main # Add checks specific to "my-vendor" Enable-Tags-From-Check: my-vendor/some-check, my-vendor/another-check, # Disable a tag Disable-Tags: dir-or-file-in-opt # Bump severity of no-md5sums-control-file # and file-missing-in-md5sums and make them # non-overrable Tags: no-md5sums-control-file, file-missing-in-md5sums, Severity: serious Overridable: no �����lintian-2.5.22ubuntu1/doc/README.release������������������������������������������������������������0000664�0000000�0000000�00000004107�12310413206�014512� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������This document describes the basic release process/work flow for Lintian. Preparing and doing a release ============================= Run the full test suite while the distribution is still set to UNRELEASED to ensure everything and all tests are green. Once complete, replace the placeholder in the changelog with the actual tags changed. This two line script may be helpful: $ LAST_VERSION_RELEASED=2.5.20 $ perl -p -i -e \ "s,\s+XXX: generate tag summary with private/generate-tag-summary\Z,$(private/generate-tag-summary $LAST_VERSION_RELEASED..HEAD)" \ debian/changelog Then set the distribution (e.g. via dch -r) and run the "scripts" test suite again. This may appear redundant at first, but some of the tests react differently when the distribution is not UNRELEASED (e.g. changelog-format checks that you remembered the step above). Build the package and run lintian on itself, cleaning up or overriding issues that have not been fixed during development. If you do code changes, remember to set the distribution back to UNRELEASED! Otherwise, some checks on the code will be skipped (e.g. critic). Sign and upload upload the package. Historically, the Lintian maintainers have included the (unsigned) changes file in the signed git tag (see e.g. the 2.4.3 tag or the 2.5.19 tag). If/When doing this, it may be prudent to wait for the upload to be accepted before pushing the new tag (so that the checksums in the signed tag match those of the uploaded files). Once the upload has been accepted and the commit has been tagged, you may want to "open" the next entry in the changelog. The rationale for this is that it makes tests go back to "regular" development mode. At the same time, the "tag-summary" reminder can be re-added. See commit a9c67f2 as an example of how it is done. To update lintian on lintian.debian.org, please see the README in /srv/lintian.debian.org on lintian.debian.org. NOTE: if Lintian has obtained any new dependencies, these must be installed by DSA before updating lintian.debian.org (send a patch to DSA for their metapackge for lintian.debian.org). ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/doc/lintianrc.example���������������������������������������������������������0000664�0000000�0000000�00000002413�12077065713�015571� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# /etc/lintianrc -- Lintian configuration file # # Note, that Lintian has reasonable default values for all variables # specified below. Thus, you don't have to change this file unless you # want something special. # # Also note, that this file uses a special syntax: # Empty lines are allowed, comments are introduced by a hash sign (#). # All other lines must have the format # VAR=text # or # VAR="text" # It is allowed to use `~' and `$HOME' in the variables, but not other # shell/environment variables. # Enable info tags by default (--display info) #display-info = yes # Enable pedantic tags by default (--pedantic) #pedantic = yes # Enable experimental tags by default (--display-experimental) #display-experimental = yes # Enable colored output for terminal output (--color) #color = auto # Show overridden tags (--show-overrides) #show-overrides = yes # Ignore all overrides (--no-override) #override = no # Verbose output by default (--verbose) #verbose = yes # Quiet by default (--quiet) #quiet = yes # Specify a laboratory--a directory where Lintian should store some info # about packages being checked. #LINTIAN_LAB="/var/spool/lintian" # Use a different directory for temporary files - useful if /tmp is a # tmpfs with "limited" capacity. #TMPDIR="/var/tmp" �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/doc/lintian.xml���������������������������������������������������������������0000664�0000000�0000000�00000200054�12310413144�014373� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0"?> <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [ <!ENTITY tex "TeX"> <!ENTITY latex "LaTeX"> ]> <book id="book-root" lang="en"> <bookinfo> <title>Lintian User's Manual This manual describes Lintian, the Debian package checker. 1998 Christian Schwarz Richard Braakman 2000 Sean 'Shaleh' Perry 2004 2008 Frank Lichtenheld This manual is free software; you may 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, or (at your option) any later version. This 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. A copy of the GNU General Public License is available as /usr/share/common-licenses/GPL in the Debian GNU/Linux distribution or on the World Wide Web at the GNU web site. You can also obtain it by writing to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. Introduction About Lintian Lintian is a Debian package checker. It can be used to check binary and source packages for compliance with the Debian policy and for other common packaging errors. Lintian uses an archive directory, called laboratory, in which it stores information about the packages it examines. It can keep this information between multiple invocations in order to avoid repeating expensive data-collection operations. It's also possible to check the complete Debian archive for bugs — in a timely manner. The intention of Lintian Packaging has become complicated—not because dpkg is complicated (indeed, dpkg-deb is very simple to use) but because of the high requirements of our policy. If a developer releases a new package, she has to consider hundreds of guidelines to make the package `policy compliant.' All parts of our policy have been introduced by the same procedure: Some developer has a good idea how to make packages more `unique' with respect to a certain aspect—then the idea is discussed and a policy proposal is prepared. If we have a consensus about the policy change, it's introduced in our manuals. Therefore, our policy is not designed to make life harder for the maintainers! The intention is to make Debian the best Linux distribution out there. With this in mind, lots of policy changes are discussed on the mailing lists each week. But changing the policy is only a small part of the story: Just having some statement included in the manual does not make Debian any better. What's needed is for that policy to become `real life,' i.e., it's implemented in our packages. And this is where Lintian comes in: Lintian checks packages and reports possible policy violations. (Of course, not everything can be checked mechanically — but a lot of things can and this is what Lintian is for.) Thus, Lintian has the following goals: To give us some impression of the `gap' between theory (written policy) and praxis (current state of implementation). From the results of the first two Lintian checks I implemented, I see that there is a big need to make this gap smaller. Introducing more policy aspects is worthless unless they are implemented. We first should fix packages to comply with current policy before searching for new ways to make policy more detailed. (Of course, there are also important policy changes that need to be introduced — but this is not what's meant here.) To make us re-think about certain aspects of our policy. For example, it could turn out that some ideas that once sounded great in theory are hard to implement in all our packages — in which case we should rework this aspect of policy. To show us where to concentrate our efforts in order to make Debian a higher quality distribution. Most release requirements will be implemented through policy. Lintian reports provide an easy way to compare all our packages against policy and keep track of the fixing process by watching bug reports. Note, that all this can be done automatically. To make us avoid making the same mistakes all over again. Being humans, it's natural for us to make errors. Since we all have the ability to learn from our mistakes, this is actually no big problem. Once an important bug is discovered, a Lintian check could be written to check for exactly this bug. This will prevent the bug from appearing in any future revisions of any of our packages. Design issues There are three fields of application for Lintian: one person could use Lintian to check the whole Debian archive and reports bugs, each maintainer runs Lintian over her packages before uploading them, dinstall checks packages which are uploaded to master before they are installed in the archive. The authors of Lintian decided to use a very modular design to achieve the following goals: flexibility: Lintian can be used to check single packages or the whole archive and to report and keep track of bug reports, etc. completeness: Lintian will eventually include checks for (nearly) everything that can be checked mechanically. uptodateness: Lintian will be updated whenever policy is changed. performance: Lintian should make it possible to check single packages within seconds or check the full archive within 5 days. The design also has a number of constrains that limits the things Lintian can check for and what tools it can use: static analysis: The code in a package may be analyzed, but it should never be executed. However, Lintian can (and does) use external tools to analyze files in the package. deterministic replay-ability: Checks should not rely on the state of system caches or even the system time. These things makes it harder for others to reproduce (the absence of) tags. same source analysis: Lintian checks packages in small isolated groups based on the source package. Requiring the presence of all the dependencies to provide the full results make it harder to run lintian (not to mention, it makes "deterministic replay-ability" a lot harder as well). Disclaimer Here is a list of important notes on how to use Lintian: Lintian is not finished yet and will probably never be. Please don't use Lintian as a reference for Debian policy. Lintian might miss a lot of policy violations while it might also report some violations by mistake. If in doubt, please check out the policy manuals. The Debian policy gives the maintainers a lot of freedom. In most cases, the guidelines included in the manuals allow exceptions. Thus, if Lintian reports a policy violation on a package and you think this is such an exception (or if you think Lintian has a bug) you can do two things: If your package is a bit non-standard and weird in this regard, you can install an override. If you think however that the check is too easily or outright wrongly triggered, please file a bug on the lintian package. Please DO NOT use Lintian to file bug reports (neither single ones nor mass bug reports). This is done by the authors of Lintian already and duplication of efforts and bug reports should be avoided! If you think a certain bug is `critical' and should be reported/fixed immediately, please contact the maintainer of the corresponding package and/or the Lintian maintainers. Any feedback about Lintian is welcome! Please send your comments to the lintian maintainers lintian-maint@debian.org. Getting started Installing Lintian Before you can start to check your packages with Lintian, you'll have to install the lintian Debian package. Alternatively you can checkout Lintian from the source repository and use that directly. By setting LINTIAN_ROOT (or using the --root option) lintian can be run from the source directory as if it had been installed on your system. The only known caveat of using Lintian from the source directory is that Lintian requires a C.UTF-8 (or en_US.UTF-8) locale to correctly process some files. Lintian 2.5.5 supports using the C.UTF-8 locale from the libc-bin in Debian Wheezy. If either your version of libc-bin or Lintian are too old, you can work around this issue by generating an en_US.UTF-8 locale. Alternatively, installing a copy of lintian should solve this, as older versions of Lintian generates a private locale at install time. Note, older versions of Lintian can only use the en_US.UTF-8 locale. Running lintian After that, you can run Lintian on a changes file or any Debian binary, udeb or source packages like this: $ lintian libc5_5.4.38-1.deb W: libc5: old-fsf-address-in-copyright-file W: libc5: shlib-without-dependency-information usr/lib/libgnumalloc.so.5.4.38 W: libc5: shlib-without-dependency-information lib/libc.so.5.4.38 W: libc5: shlib-without-dependency-information lib/libm.so.5.0.9 E: libc5: shlib-with-executable-bit lib/libc.so.5.4.38 0755 E: libc5: shlib-with-executable-bit lib/libm.so.5.0.9 0755 E: libc5: shlib-missing-in-control-file libgnumalloc usr/lib/libgnumalloc.so.5.4.38 $ Please note that some checks are cross-package checks and can only be (accurately) performed if the binary packages and the source are processed together. If Lintian is passed a changes file, it will attempt to process all packages listed in the changes file. Lintian supports a number of command line options, which are documented in the manpage of lintian(1). Some of the options may appear in the lintianrc file (without the leading dashes) in Lintian 2.5.1 (or newer). Lintian Tags Lintian uses a special format for all its error and warning messages. With that it is very easy to write other programs which run Lintian and interpret the displayed messages. The first character of each line indicates the type of message. Currently, the following types are supported: Errors (E) The displayed message indicates a policy violation or a packaging error. For policy violations, Lintian will cite the appropriate policy section when it is invoked with the option. Warnings (W) The displayed message might be a policy violation or packaging error. A warning is usually an indication that the test is known to sometimes produce false positive alarms, because either the corresponding rule in policy has many exceptions or the test uses some sort of heuristic to find errors. Info (I) The displayed message is meant to inform the maintainer about a certain packaging aspect. Such messages do not usually indicate errors, but might still be of interest to the curious. They are not displayed unless the option is set. Notes (N) The displayed message is a debugging message which informs you about the current state of Lintian. Experimental (X) The displayed message is one of the types listed above, but has been flagged as `experimental' by the Lintian maintainers. This means that the code that generates this message is not as well tested as the rest of Lintian, and might still give surprising results. Feel free to ignore Experimental messages that do not seem to make sense, though of course bug reports are always welcome. They are not displayed unless the option is set. Overridden (O) The displayed message indicates a previous Warning or Error message which has been overridden (see below). They are not displayed unless the option is set. Pedantic (P) The displayed message indicates a message of Lintian at its most pickiest and include checks for particular Debian packaging styles, checks that are very frequently wrong, and checks that many people disagree with. They are not displayed unless the option is set. The type indicator is followed by the name of the package and for non-binary packages the type of the package. Then comes the problem that was discovered, also known as a tag (for example, old-fsf-address-in-copyright-file). Depending on which tag has been reported, the line may contain additional arguments which tell you, for example, which files are involved. If you do not understand what a certain tag is about, you can specify the option when calling Lintian to get a detailed description of the reported tags: $ lintian -i libc5_5.4.38-1.deb W: libc5: old-fsf-address-in-copyright-file N: N: The /usr/share/doc/<pkg>/copyright file refers to the old postal N: address of the Free Software Foundation (FSF). The new address is: N: N: Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, N: MA 02110-1301, USA. N: N: Severity: normal, Certainty: certain N: [...] $ In some cases, the messages contain some additional text with a leading hash character (#). This text should be ignored by any other programs which interpret Lintian's output because it doesn't follow a unique format between different messages and it's only meant as additional information for the maintainer. Overrides In some cases, the checked package does not have a bug or does not violate policy, but Lintian still reports an error or warning. This can have the following reasons: Lintian has a bug itself, a specific Lintian check is not smart enough to know about a special case allowed by policy, or the policy does allow exceptions to some rule in general. In the first case (where Lintian has a bug) you should send a bug report to the Debian bug tracking system and describe which package you checked, which messages have been displayed, and why you think Lintian has a bug. Best would be, if you would run Lintian again over your packages using the (or ) option, which will cause Lintian to output much more information (debugging info), and include these messages in your bug report. This will simplify the debugging process for the authors of Lintian. In the other two cases (where the error is actually an exception to policy), you should probably add an override. If you're unsure though whether it's indeed a good case for an override, you should contact the Lintian maintainers too, including the Lintian error message and a short note, stating why you think this is an exception. This way, the Lintian maintainers can be sure the problem is not actually a bug in Lintian or an error in the author's reading of policy. Please do not override bugs in lintian, they should rather be fixed than overridden. Once it has been decided that an override is needed, you can easily add one by supplying an overrides file. If the override is for a binary or udeb package, you have to place it at /usr/share/lintian/overrides/<package> inside the package. The tool dh_lintian from the Debian package debhelper may be useful for this purpose. If the override is for a source package, you have to place it at debian/source/lintian-overrides or debian/source.lintian-overrides (the former path is preferred). With that, Lintian will know about this exception and not report the problem again when checking your package. (Actually, Lintian will report the problem again, but with type overridden, see above.) Note that Lintian extracts the override file from the (u)deb and stores it in the laboratory. The files currently installed on the system are not used in current Lintian versions. Format of override files The format of the overrides file is simple, it consists of one override per line (and may contain empty lines and comments, starting with a #, on others): [[<package>][ <archlist>][ <type>]: ]<lintian-tag>[ [*]<lintian-info>[*]]. <package> is the package name; <archlist> is an architecture list (see Architecture specific overrides for more info); <type> is one of binary, udeb and source, and <lintian-info> is all additional information provided by Lintian except for the tag. What's inside brackets is optional and may be omitted if you want to match it all. An example file for a binary package would look like: /usr/share/lintian/overrides/foo, where foo is the name of your package # We use a non-standard dir permission to only allow the webserver to look # into this directory: foo binary: non-standard-dir-perm foo binary: FSSTND-dir-in-usr /usr/man/man1/foo.1.gz An example file for a source package would look like: debian/source.lintian-overrides in your base source directory foo source: debian-files-list-in-source # Upstream distributes it like this, repacking would be overkill though, so # tell lintian to not complain: foo source: configure-generated-file-in-source config.cache Many tags can occur more than once (e.g. if the same error is found in more than one file). You can override a tag either completely by specifying its name (first line in the examples) or only one occurrence of it by specifying the additional info, too (second line in the examples). If you add an asterisk (*) in the additional info, this will match arbitrary strings similar to the shell wildcard. The first wildcard support appeared in Lintian 2.0.0, which only allowed the wildcards in the very beginning or end. Version 2.5.0~rc4 extended this to allow wildcards any where in the additional info. Documenting overrides To assist reviewers, Lintian will extract the comments from the overrides file and display the related comments next to the overridden tags. Comments directly above an override will be shown next to all tags it overrides. If an override for the same tags appears on the very next line, it will inherit the comment from the override above it. # This comment will be shown above all tags overridden by the following # two overrides, (because they apply to the same tag and there is no # empty line between them) foo source: some-tag exact match foo source: some-tag wildcard * match # This override has its own comment, and it is not shared with the # override below (because there is an empty line in between them). foo source: some-tag another exact match foo source: some-tag override without a comment Empty lines can be used to disassociate a comment from an override following it. This can also be used to make a general comment about the overrides that will not be displayed. # This is a general comment not connected to any override, since there # is one (or more) empty lines after it. foo source: another-tag without any comments Architecture specific overrides In rare cases, Lintian tags may be architecture specific. It is possible to mark overrides architecture specific by using the optional architecture list. The architecture list has the same syntax as the architecture list in the "Build-Depends" field of a source package. This is described in detail in the Debian Policy Manual §7.1. Examples: # This is an example override that only applies to the i386 # architecture. foo [i386] binary: some-tag optional-extra # An architecture wildcard would look like: foo [any-i386] binary: another-tag optional-extra # Negation also works foo [!amd64 !i386] binary: some-random-tag optional-extra # Negation even works for wildcards foo [!any-i386] binary: some-tag-not-for-i386 optional-extra # The package name and the package type is optional, so this # also works [linux-any]: tag-only-for-linux optional-extra. Support for architecture specific overrides was added in Lintian 2.5.0. Wildcard support was added in 2.5.5. Basic sanity checking was also added in 2.5.5, where unknown architectures trigger a malformed-override tag. As does an architecture specific override for architecture independent packages. Vendor Profiles Vendor profiles allows vendors and users to customize Lintian without having to modify the underlying code. If a profile is not explicitly given, Lintian will derive the best possible profile for the current vendor from dpkg-vendor. Rules for profile names and location Profile names should only consist of the lower case characters ([a-z]), underscore (_), dash (-) and forward slashes (/). Particularly note that dot (.) are specifically not allowed in a profile name. The default profile for a vendor is called $VENDOR/main. If Lintian sees a profile name without a slash, it is taken as a short form of the default profile for a vendor with that name. The filename for the profile is derived from the name by simply concatenating it with .profile, Lintian will then look for a file with that name in the following directories: $HOME/.lintian/profiles /etc/lintian/profiles $LINTIAN_ROOT/profiles Note that an implication of the handling of default vendor profiles implies that profiles must be in subdirectories of the directories above for Lintian to recognise them. The directories are checked in the listed order and the first file matching the profile will be used. This allows users to override a system profile by putting one with the same filename in $HOME/.lintian/profiles. Profile syntax and semantics Profiles are written in the same syntax as Debian control files as described in the Debian Policy Manual §5.1. Profiles allow comments as described in the Policy Manual. Main profile paragraph The fields in the first paragraph are: Profile (simple, mandatory) Name of the profile. Extends (simple, optional) Name of the (parent) profile, which this profile extends. Lintian will recursively process the extended profile before continuing with processing this profile. In the absence of this field, the profile is not based on another profile. Load-Checks (folded, optional) Comma-separated list of checks. Lintian will ensure all checks listed are loaded (allowing tags from them to be enabled or disabled via Enable-Tags or Disable-Tags). If a given check was already loaded before this field is processed, then it is silently ignored. Otherwise, the check is loaded and all of its tags are disabled (as if it had been listed in Disable-Tags-From-Check). This field is most likely only useful if the profile needs to enable a list of tags from a check in addition to any tags already enabled from that check (if any). Enable-Tags-From-Check (folded, optional) Comma-separated list of checks. All tags from each check listed will be enabled in this profile. The check will be loaded if it wasn't already. Disable-Tags-From-Check (folded, optional) Comma-separated list of checks. All tags from each check listed will be disabled in this profile. The check will be loaded if it wasn't already. Enable-Tags (folded, optional) Comma-separated list of tags that should be enabled. It may only list tags from checks already loaded or listed in one of the following fields "Load-Checks", "Enable-Tags-From-Check" or "Disable-Tags-From-Check" in the current profile. Disable-Tags (folded, optional) Comma-separated list of tags that should be disabled. It may only list tags from checks already loaded or listed in one of the following fields "Load-Checks", "Enable-Tags-From-Check" or "Disable-Tags-From-Check" in the current profile. The profile is invalid and is rejected, if Enable-Tags and Disable-Tags lists the same tag twice - even if it is in the same field. This holds analogously for checks and the three fields Load-Checks, Enable-Tags-From-Check and Disable-Tags-From-Check. It is allowed to list a tag in Enable-Tags or Disable-Tags even if the check that provides this tag is listed in the Disable-Tags-From-Check or Enable-Tags-From-Check field. In case of conflict, Enable-Tags / Disable-Tags shall overrule Disable-Tags-From-Check / Enable-Tags-From-Check within the profile. Load-Checks, Enable-Tags-From-Check and Disable-Tags-From-Check can be used to load third-party or vendor specific checks. It is not an error to load, enable or disable a check or tag that is already loaded, enabled or disabled respectively (e.g. by a parent profile). A profile is invalid if it directly or indirectly extends itself or if it extends an invalid profile. By default the tags from the check "lintian" will be loaded as they assist people in writing and maintaining their overrides file (e.g. by emitting malformed-override). However, they can be disabled by explicitly adding the check lintian in the Disable-Tags-From-Check field. Tag alteration paragraphs The fields in the secondary paragraphs are: Tags (folded, mandatory) Comma separated list of tags affected by this paragraph. Overridable (simple, optional) Either "Yes" or "No", which decides whether these tags can be overridden. Lintian will print an informal message if it sees an override for a tag marked as non-overridable (except if --quiet is passed). Severity (simple, optional) The value must be a valid tag severity; the severity of the affected tags is set to this value. Note that experimental is not a severity. The paragraph must contain at least one other field than the Tag field. An example vendor profile Below is a small example vendor profile for a fictive vendor called "my-vendor". # The default profile for "my-vendor" Profile: my-vendor/main # It has all the checks and settings from the "debian" profile Extends: debian/main # Add checks specific to "my-vendor" Enable-Tags-From-Check: my-vendor/some-check, my-vendor/another-check, # Disable a tag Disable-Tags: dir-or-file-in-opt # Bump severity of no-md5sums-control-file # and file-missing-in-md5sums and make them # non-overrable Tags: no-md5sums-control-file, file-missing-in-md5sums, Severity: serious Overridable: no Vendor specific data files Lintian uses a number of data files for various checks, ranging from common spelling mistakes to lists of architectures. While some of these data files are generally applicable for all vendors (or Debian derivatives), others are not. Starting with version 2.5.7, Lintian supports vendor specific data files. This allows vendors to deploy their own data files tailored for their kind of system. Lintian supports both extending an existing data file and completely overriding it. Load paths and order Lintian will search the following directories in order for vendor specific data files: $HOME/.lintian/vendors/PROFILENAME/data /etc/lintian/vendors/PROFILENAME/data $LINTIAN_ROOT/vendors/PROFILENAME/data If none of the directories exists or none of them provide the data file in question, Lintian will (recursively) retry with the parent of the vendor (if any). If the vendor and none of its parents provide the data file, Lintian will terminate with an error. Basic syntax of data files Generally, data files are read line by line. Leading whitespace of every line is removed and (now) empty lines are ignored. Lines starting with a # are comments and are also ignored by the parser. Lines are processed in the order they are read. If the first character of the line is a @, the first word is parsed as a special processing instruction. The rest of the line is a parameter to that processing instruction. Please refer to . All other lines are read as actual data. If the data file is a table (or map), the lines will parsed as key-value pairs. If the data file is a list (or set), the full line will be considered a single value of the list. It is permissible to define the same key twice with a different value. In this case, the value associated with the key is generally redefined. There are very rare exceptions to this rule, where the data file is a table of tables (of values). In this case, a recurring key is used to generate the inner table. List of processing instructions The following processing instructions are recognised: @delete ENTRY Removes a single entry denoted by ENTRY that has already been parsed. It is permissible to list a non-existent entry, in which case the instruction has no effect. This instruction does not prevent the entry from being (re-)defined later, it only affects the current definition of the entry. For key-pair based data files, ENTRY must match the key. For single value data files, ENTRY must match the line to remove. @include-parent Processes parent data file of the current data file. The informal semantics of this instruction is that it reads the "next" data file in the vendor "chain". The parsing of the parent is comparable to a C-style include or sourcing a shell script. More formally, let CP be the name of the vendor profile that defines the the data file containing the instruction. Let the parent of CP be referred to as PCP. Lintian will search for the data file provided by PCP using the rules as specified in . If no data file is found, Lintian will terminate the parsing with an error. Thus, this instruction can only be used by profiles that extends other profiles. Advanced usage How Lintian works Lintian is divided into the following layers: frontend the command line interface (currently, this layer consists of two scripts, namely lintian and lintian-info) checks a set of modules that check different aspects of packages. data collectors a set of scripts that prepares specific information about a package needed by the check modules When you check a package with Lintian, the following steps are performed (not exactly in this order—but the details aren't important now): An entry is created for the package in the laboratory (or just lab). Some data is collected about the package. (That is done by the so-called data collector scripts.) For example, the file program is run on each file in the package and the output is stored in the lab. The checks are run over the package and report any discovered policy violations or other errors. These scripts don't access the package contents directly, but use the collected data as input. Depending on the lab mode Lintian uses (see below), the whole lab directory is removed again. If the lab is not removed, parts of the data collected may be auto cleaned to reduce disk space. This separation of the check from the data collector scripts makes it possible to run Lintian several times over a package without having to recollect all the data each time. In addition, the checker scripts do not have to worry about packaging details since this is abstracted away by the collector scripts. The laboratory Lintian's laboratory directory can be defined via the LINTIAN_LAB variable (either in the configuration file or as environment variable). If this variable is not defined, Lintian creates a temporary lab in /tmp which is removed again after Lintian has completed its checks. This mode is called temporary lab mode. In the static lab mode (if the laboratory directory is defined by the user), the laboratory has to be set up first before it can be used by Lintian. This can be done with the (or ) command line option. Writing your own Lintian checks This section describes how to write and deploy your own Lintian checks. Lintian will load checks from the following directories (in order): $LINTIAN_ROOT/checks Existing checks can be shadowed by placing a check with the same name in an directory appearing earlier in the list. This also holds for the checks provided by Lintian itself. Checks in Lintian consist of a description file (.desc) and a Perl module implementing the actual check (.pm). The names of these checks must consist entirely of the lower case characters ([a-z]), digits ([0-9]), underscore (_), dash (-), period (.) and forward slashes (/). The check name must be a valid Perl unique module name after the following transformations. All periods and dashes are replaced with underscores. All forward slashes are replaced with two colons (::). Check names without a forward slash (e.g. "fields") and names starting with either "lintian/" or "coll/" are reserved for the Lintian core. Vendors are recommended to use their vendor name before the first slash (e.g. "ubuntu/fields"). Check description file The check description file is written in the same syntax as Debian control files as described in the Debian Policy Manual §5.1. Check description files allow comments as described in the Policy Manual. The check description file has two paragraph types. The first is the check description itself and must be the first paragraph. The rest of the descriptions describe tags, one tag per paragraph. Check description paragraph The fields in the check description paragraph are: Check-Script (simple, mandatory) Name of the check. This is used to determine the package name of the Perl module implementing the check. Type (simple, mandatory) Comma separated list of package types for which this check should be run. Allowed values in the list are "binary" (.deb files), "changes" (.changes files), "source" (.dsc files) and "udeb" (.udeb files). Needs-Info (simple, optional) Comma separated list of collections required for the check to be run. Common values here include "unpacked", "index" and "file-info". Info (multiline, optional) A short description of what the check is for. Author (simple, optional) Name and email of the person, who created (or implemented etc.) the check. Abbrev (simple, optional) Alternative or abbreviated name of the check. These can be used with certain command line options as an alternative name for the check. Tag description paragraph The fields in the tag description paragraph are: Tag (simple, mandatory) Name of the tag. It must consist entirely of the lower or/and upper case characters ([a-zA-Z]), digits ([0-9]), underscore (_), dash (-) and period (.). The tag name should be at most 68 characters long. Severity (simple, mandatory) Determines the default value for how "severe" the tag is. The value must be one of "serious", "important", "normal", "minor", "wishlist" and "pedantic". The effective severity and the value of the Certainty field of a tag determine the "one-letter" code (of non-experimental tags). Certainty (simple, mandatory) How accurate the tag is (believed to be). The value must be one of "certain", "possible", "wild-guess". The effective severity and the value of the Certainty field of a tag determine the "one-letter" code (of non-experimental tags). Info (multiline, mandatory) The description of the tag, which can be seen by using lintian-info (etc.). The HTML tags "<tt>" and "<i>" may be used in the description. The symbols &, < and > must be escaped as &amp;, &lt; and &gt; (respectively). Indented lines are considered "pre-formatted" and will not be line wrapped. These lines are still subject to the allowed HTML tags and above mentioned escape sequences. Ref (simple, optional) A comma separated list of references. It can be used to refer to extra documentation. It is primarily used for manual references, HTTP links or Debian bug references. If a reference contains a space, it is taken as a manual reference (e.g. "policy 4.14"). These references are recorded in the "output/manual-references" data file. Other references include manpages ("lintian(1)"), ftp or http(s) links ("http://lintian.debian.org"), file references ("/usr/share/doc/lintian/changelog.gz") or Debian bug numbers prefixed with a hash ("#651816"). Unknown references are (silently) ignored. Experimental (simple, optional) Whether or not the tag is considered "experimental". Recognised values are "no" (default) and "yes". Experimental tags always use "X" as their "one-letter" code. Check Perl module file This section describes the requirements for the Perl module implementing a given check. The Perl package name of the check must be identical to the check name (as defined by the "Check-Script" field in the description file) with the following transformations: All periods and dashes are replaced with underscores. All forward slashes are replaced by two colons (::). The resulting value is prefixed with "Lintian::". As an example, the check name contrib/hallo-world will result in the Perl package name Lintian::contrib::hallo_world. API of the "run" sub The Perl module must implement the sub called run in that Perl package. This sub will be run once for each package to be checked with 5 arguments. These are (in order): The package name. The package type being checked in this run. This string is one of "binary" (.deb), "changes" (.changes), "source" (.dsc) or "udeb" (.udeb). An instance of API Lintian::Collect. Its exact type depends on the type being processed and is one of Lintian::Collect::Binary (.deb or .udeb), Lintian::Collect::Changes (.changes) or Lintian::Collect::Source (.dsc). An instance of Lintian::Processable that represents the package being processed. An instance of Lintian::ProcessableGroup that represents the other processables in the given group. An instance of the Lintian::Collect::Group is available via its "info" method. Further arguments may be added in the future after the above mentioned ones. Implementations should therefore ignore extra arguments beyond the ones they know of. If the run sub returns "normally", the check was run successfully. Implementations should ensure the return value is undefined. If the run sub invokes a trappable error (e.g. "die"), no further checks are done on the package and Lintian will (eventually) exit with 2 to its caller. The check may still be run on other packages. The run sub may emit tags by invoking the sub "tag" from Lintian::Tags (it can be imported). The first argument is the name of the tag to emit. Any extra arguments will be used as the "tag extra" (or diagnostics). Example: use Lintian::Tags qw(tag); sub run { tag 'my-tag', 'hallo world'; } would emit the tag "my-tag" with the extra note "hallo world" like this: I: package: my-tag hallo world lintian-2.5.22ubuntu1/doc/README.developers0000664000000000000000000001211312310413206015236 0ustar # -*- perl -*- # # Use "perldoc doc/README.developers" to read it like a manpage. =head1 NAME README.developers -- README file for developers of Lintian =head1 SYNOPSIS This document aims to give an overview of the Lintian internals and is intended for people, who wants to develop or work on Lintian. For how to use Lintian, please refer to the (other) README, the manual pages lintian(1) and lintian-info(1) or the User Manual. =head1 DESCRIPTION Lintian dissects Debian packages and tries to find bugs and policy violations. It contains automated checks for many aspects of Debian policy as well as some checks for common errors. This document describes how you can contribute to Lintian's development as well as adapt it to your needs. Lintian has a large code base which has as its starting point the directory "frontend". This directory holds the "lintian" executable. This is what gets called when a user calls lintian. The frontend then calls the lintian checks which run over the Debian package that Lintian is checking. =head2 The source code layout The source code is divided into self-contained groups. Here is a quick overview. =over 4 =item checks contains the checks and the tag descriptions. =item collection contains unpacking scripts =item data Symlink to the data set for the Debian vendor profiles. See entry for vendors below. =item debian contains Debian packaging =item doc contains the User Manuals and general docs (see man/ below) =item frontend contains the frontends (e.g. code installed in /usr/bin) =item lib contains Perl modules/library for common tasks. =item man contains the manpages for tools in frontend/ =item private various private helpers etc. =item profiles contains vendor profiles =item reporting tools/code for the lintian.d.o setup =item t the new test suite =item vendors Per vendor data sets used by checks (and Lintian::Architecture) via the Lintian::Data API. Data set is stored in I, where I is the "full name" of the profile (e.g. ubuntu/main). =back =head2 Core concepts in Lintian In Lintian there are a number of concepts (or terms), here is a list of the most important ones: =over 4 =item Emit (Tag) Tag that was not suppressed and was triggered. =item Lab(oratory) The Laboratory is Lintian's private little play-ground. When Lintian is asked to process a package, it will generally unpack (parts of) the package in the laboratory. It comes in two variants, static or temporary. Temporary laboratories (as the name suggests) expire as soon as Lintian is done with its tasks. Static laboratories are generally used on lintian.d.o(-like) setups, where packages remain in a (semi-)unpacked state after processing. Note that the laboratory is usually abbreviated to "Lab". =item Overridden (Tag) Tag that was overridden by the maintainer. Usually it means that the maintainer believes Lintian misdiagnosed the issue. In some cases it is also used for tags that does not handle "corner-cases" Overridden tags are not displayed by default, but they are still counted in statistics. This should not be confused with "Suppressed". =item Suppressed (Tag) Tags that are suppressed cannot be emitted. Note that suppressed tags are ignored by Lintian, so they are not counted in statistics. Not to be confused with "Overridden". =item Tag Issue reported by Lintian. =back =head2 Useful tricks There is an extended description of tricks on L, but some of them are also listed here. =head3 Running lintian from the git repository Lintian was designed to be run directly from the git repository. This allows you to quickly test your changes on a live package. In Lintian 2.5.18, the frontends will automatically detect when they are being run from a source checkout and do the right thing. Earlier versions need LINTIAN_ROOT (or --root). The following shell snippet can be used for 2.5.17 and earlier: #!/bin/sh # ONLY FOR << 2.5.18~ OR EARLIER. Lintian (>= 2.5.18~) will DTRT. LINTIAN_ROOT="" export LINTIAN_ROOT exec "$LINTIAN_ROOT/frontend/lintian" "$@" Beware of two things: If LINTIAN_ROOT is not set, Lintian (<< 2.5.18~) will attempt to use the code from the installed version (in /usr/share/lintian). The other issue is that Lintian needs a C.UTF-8 (or an en_US.UTF-8) locale. If this is absent, it may trigger some issues with some (e.g. manpage) checks. With libc-bin from Wheezy and Lintian 2.5.5, this is no longer an issue. =head2 collections and checks Collections (as the names suggests) are used to extract or/and structure data from a package. This data is then used by the checks (usually via Lintian::Collect API) to examine the package. The check may be doing the extraction (or structuring) of data itself, but it should generally be avoided for "heavy" tasks. Unlike checks, collections can (and generally are) run in parallel to improve the effective runtime. An overview of how the collections and checks relate can be obtained by I, which generates a "Graphviz Dot" graph of the relations. =cut lintian-2.5.22ubuntu1/doc/desc-files0000664000000000000000000000353212077065713014175 0ustar Description record for collection scripts: Collector-Script: Info: Type: comma-separated list of Version: Order: Needs-Info: [ Auto-Remove ] Description record for checks scripts: Check-Script: Abbrev: Info: Type: comma-separated list of Standards-Version: Needs-Info: Description record of a Lintian tag: Tag: Severity: Certainty: Info: Ref: [ Status: ] [ Experimental: ] Description record of a test case: Testname: Sequence: Version: Description: [ Type: ] [ Test-For: ] [ Test-Against: ] [ References: >[, ... ] ] [ Date: ] [ Author: ] [ Architecture: ] [ Section:
] [ Standards-Version: ] [ Options: ] [ Output-Format: ] [ Skeleton: ] [ Sort: ] [ Todo: ] lintian-2.5.22ubuntu1/doc/CREDITS0000664000000000000000000000335012077065713013252 0ustar In addition to those who have contributed substantial pieces of code (they are already listed in the copyright file), Lintian has benefited greatly from advice and comments by many people: Joey Hess James A. Treacy Ray Dassen Yann Dirson Darren Stalder Topi Miettinen Gregor Hoffleit Santiago Vila Holger Rusch Joost Witteveen James R. Van Zandt Roman Hodek Giuliano P Procida Michael Meskes Christian Leutloff James Troup Gregory S. Stark Gordon Russell Adam P. Harris Fabrizio Polacco Dirk Eddelbuettel Robert S. Edmonds Roderick Schertler Juan Cespedes Manoj Srivasta Oliver Elphick Joel Klecker "Espy" Rob Browning Martin Schulze "Joey" Adrian Bridgett Marcus Brinkmann Ruud de Rooij Johnie Ingram Brian Bassett Charles Briscoe-Smith Julian Gilbey Raphael Geissert Adam D. Barratt And of course the entire Debian Project, without which Lintian would have no raison to etre! lintian-2.5.22ubuntu1/doc/tutorial/0000775000000000000000000000000012310413144014055 5ustar lintian-2.5.22ubuntu1/doc/tutorial/Lintian/0000775000000000000000000000000012310413144015453 5ustar lintian-2.5.22ubuntu1/doc/tutorial/Lintian/Tutorial/0000775000000000000000000000000012313577171017274 5ustar lintian-2.5.22ubuntu1/doc/tutorial/Lintian/Tutorial/TestSuite.pod0000664000000000000000000001047112313577171021734 0ustar =encoding utf-8 =head1 NAME Lintian::Tutorial::TestSuite -- Quick intro to running the Lintian testsuite =head1 SYNOPSIS This guide will quickly introduce you to running the Lintian test suite and some tricks. The Lintian test suite is fairly large and accordingly it can take a substantial amount of time to run. To speed up development, there are various options to limit the tests to run. =head1 DESCRIPTION The Lintian test suite is an extensive collection of various test cases. The test suite is divided into 4 "sub-suites". The majority of all tests are currently located in the "tests" sub-suite. To run the full suite in all of its glory, simply invoke: $ debian/rules runtests OR $ mkdir -p debian/test-out $ t/runtests -k --dump-logs t debian/test-out But while writing a new tag (or check) you probably only want to run a particular (subset of the) test(s). See L for the available options. When run via I, the test suite respects the "DEB_BUILD_OPTIONS=parallel=N". When using I directly, use I<-jN> to choose the number of threads. Note that "N" denotes the amount of "worker" threads. The test runner will generally have 2 threads more than that. Also each "worker" will run lintian, which runs multiple unpacking jobs in parallel as well. In case you are wondering about the 2 extra threads in the test runner, the first of them is the "coordinator"-thread (which will generally be waiting when the workers are active) and the second one is the "output"-thread (which handles the fancy output). =head2 Running a subset of the tests The following options are available: =over 4 =item Running a single test To run a single test by its name, use: $ debian/rules runtests onlyrun=$name OR $ t/runtests --dump-logs t debian/test-out $name =item Running all tests for a check To run all tests for a given check, use: $ debian/rules runtests onlyrun=$check OR $ t/runtests --dump-logs -k t debian/test-out $check $check must be the name of a check (it will test for checks/$check.desc) or "legacy". This will run all tests that starts with "$check-". Note: The "changes" sub-suite in the new test suite does not support this. =item Running all tests in a sub-suite To run all tests in a given sub-suite, use: $ debian/rules runtests onlyrun=suite:$suites OR $ t/runtests --dump-logs -k t debian/test-out suite:$suites $suites is a comma-separated list of names of sub-suites to run. Note: this cannot be used to influence the order, in which the sub-suites are run. =item Running all tests designed for a specific tag To run all tests that has a "Test-For" or a "Test-Against" for a given tag, use: $ debian/rules runtests onlyrun=tag:$tag OR $ t/runtests --dump-logs -k t debian/test-out tag:$tag =back =head2 Running tests under coverage It is possible to run most of the tests under L. This is done by passing I<--coverage> to I. Example: $ t/runtests --coverage --dump-logs -j1 -k t debian/test-out Please note that L does not seem to handle multiple threads too well. You may see spurious warnings/errors if you run the tests with 2 or more active worker threads. B 1: Coverage for collections (i.e. programs in I) does not seem to work at the moment. Therefore, they often end up with (next to) zero coverage in the generated reports. B 2: L sometimes changes the output of Lintian or tools called by Lintian. Obviously, this leads to test failures. Therefore, you may see weird test failures (or warnings) when running under coverage. =head3 Collecting the coverage you want in a reasonable time Collecting coverage is excruciatingly slow. This is not helped by the fact that it becomes unreliable when run under 2 or more threads. Fortunately, L "appends" to its cover database. This allows you to "slowly" build up the coverage database over multiple runs. Example: $ t/runtests --coverage --dump-logs -j1 -k t debian/test-out suite:scripts $ t/runtests --coverage --dump-logs -j1 -k t debian/test-out suite:debs $ t/runtests --coverage --dump-logs -j1 -k t debian/test-out suite:source ... Or: $ t/runtests --coverage --dump-logs -j1 -k t debian/test-out $check $ t/runtests --coverage --dump-logs -j1 -k t debian/test-out legacy =cut lintian-2.5.22ubuntu1/doc/tutorial/Lintian/Tutorial/WritingChecks.pod0000664000000000000000000004361112310413144022533 0ustar =encoding utf-8 =head1 NAME Lintian::Tutorial::WritingChecks -- Writing checks for Lintian =head1 SYNOPSIS This guide will quickly guide you through the basics of writing a Lintian check. Most of the work is in writing the two files: checks/.pm checks/.desc And then either adding a Lintian profile or extending an existing one. =head1 DESCRIPTION The basics of writing a check is outlined in the Lintian User Manual (§3.3). This tutorial will focus on the part of writing the actual check. In this tutorial, we will assume the name of the check to be written is called "deb/pkg-check". The tutorial will work with a "binary" and "udeb" check. Checking source packages works in a similar fashion. =head2 Create a check I<.desc> file As mentioned, this tutorial will focus on the part of writing a check. Please see the Lintian User Manual (§3.3) for how to do this part. =head2 Create the Perl check module Start with the template: # deb/pkg-check is loaded as Lintian::deb::pkg_check # - See Lintian User Manual §3.3 for more info package Lintian::deb::pkg_check; use strict; use warnings; use Lintian::Tags qw(tag); sub run { my ($pkg, $type, $info, $proc, $group) = @_; return; } This snippet above is a simple valid check that does "nothing at all". We will extend it in just a moment, but first let us have a look at the arguments at the setup. The I sub is the entry point of our "deb/pkg-check" check; it will be invoked once per package it should process. In our case, that will be once per "binary" (.deb) and once per udeb package processed. It is given 5 arguments (in the future, possibly more), which are: =over 4 =item $pkg - The name of the package being processed. (Same as $proc->pkg_name) =item $type - The type of the package being processed. At the moment, $type is one of "binary" (.deb), "udeb", "source" (.dsc) or "changes". This argument is mostly useful if certain checks do not apply equally to all package types being processed. Generally it is advisable to do check only binaries ("binary" and "udeb"), sources or changes in a given check. But in rare cases, it makes sense to lump multiple types together in the same check and this arguments help you do that. (Current it is always identical to $proc->pkg_type) =item $info - Accessor to the data Lintian has extracted Basically all information you want about a given package comes from the $info object. Sometimes referred to as either the "info object" or (an instance of) L. This object (together with a properly set Needs-Info in the I<.desc> file) will grant you access to all of the data Lintian has extracted about this package. Based on the value of the $type argument, it will be one of L, L or L. (Currently it is the same as $proc->info) =item $proc - Basic metadata about the package This is an instance of L and is useful for trivially obtaining very basic package metadata. Particularly, name of source package and version of source package readily available. =item $group - Group of processables from the same source If you want to do a cross-check between different packages built from the same source, $group helps you access those other packages (if they are available). This is an instance of L. =back Now back to the part of coding. =head2 Emitting a tag Emitting a tag is fairly simple in itself. Simply invoke the L sub with one or more arguments in the I sub. The first argument being the name of the tag to emit and the rest being the "extra" information (if any). The full example being: # deb/pkg-check is loaded as Lintian::deb::pkg_check # - See Lintian User Manual §3.3 for more info package Lintian::deb::pkg_check; use strict; use warnings; use Lintian::Tags qw(tag); sub run { my ($pkg, $type, $info, $proc, $group) = @_; tag 'deb-pkg-check-works', "I was emitted for $pkg, which was a $type package"; return; } Assuming there is a tag called "deb-pkg-check-works" in your I<.desc> file, the above will faithfully emit said tag for all packages processed by this check. Emitting a tag is fairly simple; the hard part is emitting exactly when there is an issue and without introducing a security hole in Lintian/your check. =head2 Accessing fields Lets do a slightly harder example. Assume we wanted to emit a tag for all packages without a (valid) Multi-Arch field. This requires us to A) identify if the package has a Multi-Arch field and B) identify if the contents of the field was valid. Starting from the top. All $info objects have a method called field, which gives you access to a (raw) field from the control file of the package. It returns C if said field is not present or the contents of said field otherwise. Note that field names must be given in all lowercase letters (i.e. use "multi-arch", not "Multi-Arch"). # deb/pkg-check is loaded as Lintian::deb::pkg_check # - See Lintian User Manual §3.3 for more info package Lintian::deb::pkg_check; use strict; use warnings; use Lintian::Tags qw(tag); sub run { my ($pkg, $type, $info, $proc, $group) = @_; my $multiarch = $info->field('multi-arch'); # Emit a "missing-multi-arch-field" for all packages without the # Multi-Arch field tag 'missing-multi-arch-field' unless defined($multiarch); return; } This was the first half. Lets look at checking the value. Multi-arch fields can (currently) be one of "no", "same", "foreign" or "allowed". One way of checking this would be using the regex: /^no|same|foreign|allowed$/ An alternative route is using a table like: my %VALID_MULTI_ARCH_VALUES = map { $_ => 1} qw(no same foreign allowed); Notice that Lintian automatically strips leading and trailing spaces on the I line in a field. It also strips trailing spaces from all other lines, but leading spaces and the " ."-continuation markers are kept as is. We will use the second here: # deb/pkg-check is loaded as Lintian::deb::pkg_check # - See Lintian User Manual §3.3 for more info package Lintian::deb::pkg_check; use strict; use warnings; use Lintian::Tags qw(tag); my %VALID_MULTI_ARCH_VALUES = map { $_ => 1} qw( no same foreign allowed ); sub run { my ($pkg, $type, $info, $proc, $group) = @_; my $multiarch = $info->field('multi-arch'); if (defined($multiarch)) { # The field is present, lets check it is valid. tag 'invalid-multi-arch-field', $multiarch unless exists $VALID_MULTI_ARCH_VALUES{$multiarch}; } else { # Emit a "missing-multi-arch-field" for all packages without the # Multi-Arch field tag 'missing-multi-arch-field'; } return; } So far so good. =head2 Checking dependencies Lintian can do some checking of dependencies. For most cases it works similar to a normal dependency check, but keep in mind that Lintian uses I logic to determine if dependencies are satisfied (i.e. it will not look up relations like Provides for you). Suppose you wanted all packages with a multi-arch "same" field to pre-depend on the package "multiarch-support". Well, we could use the L<< $info->relation|Lintian::Collect::Binary/relation (FIELD) >> method for this. The $info->relation returns an instance of L. This object as an "implies" method that can be used to check if a package has an explicit dependency. Note that "implies" actually checks if one relations "implies" another (i.e. if you satisfied relationA then you definitely also satisfied relationB). Like with the "field"-method, field names have to be given in all lowercase. But "relation" will never return C (not even if the field is missing). So in example: my $predepends = $info->relation('pre-depends'); unless ($predepends->implies('multiarch-support')) { tag 'missing-pre-depends-on-multiarch-support'; } Inserted in the proper place, our check now looks like: # deb/pkg-check is loaded as Lintian::deb::pkg_check # - See Lintian User Manual §3.3 for more info package Lintian::deb::pkg_check; use strict; use warnings; use Lintian::Tags qw(tag); my %VALID_MULTI_ARCH_VALUES = map { $_ => 1} qw( no same foreign allowed ); sub run { my ($pkg, $type, $info, $proc, $group) = @_; my $multiarch = $info->field('multi-arch'); if (defined($multiarch)) { # The field is present, lets check it is valid. tag 'invalid-multi-arch-field', $multiarch unless exists $VALID_MULTI_ARCH_VALUES{$multiarch}; if ($multiarch eq 'same') { my $predepends = $info->relation('pre-depends'); tag 'missing-pre-depends-on-multiarch-support' unless $predepends->implies('multiarch-support'); } } else { # Emit a "missing-multi-arch-field" for all packages without the # Multi-Arch field tag 'missing-multi-arch-field'; } return; } =head2 Using static data files Currently our check mixes data and code. Namely all the valid values for the Multi-Arch field is currently hard-coded in our check. We can move those out of the check by using a data file. Lintian natively supports data files that are either "sets" or "tables" via L (i.e. "unordered" collections). As an added bonus, L transparently supports vendor specific data files for us. First we need to make a data file containing the values. Which could be: # A table of all the valid values for the multi-arch field. no same foreign allowed This can then be stored in the data directory as I. Now we can load it by using: use Lintian::Data; my $VALID_MULTI_ARCH_VALUES = Lintian::Data->new('deb/pkg-check/multiarch-values'); Actually, this is not quite true. L is lazy, so it will not load anything before we force it to do so. Most of the time this is just an added bonus. However, if you ever have to force it to load something immediately, you can do so by invoking its "known" method (with an arbitrary defined string and ignore the result). Data files work with 3 access methods, "all", "known" and "value". =over 4 =item all "all" (i.e. $data->all) returns a list of all the entries in the data files (for key/value tables, all returns the keys). The list is not sorted in any order (not even input order). =item known "known" (i.e. $data->known('item')) returns a truth value if a given item or key is known (present) in the data set or table. For key/pair tables, the value associated with the key can be retrieved with "value" (see below). =item value "value" (i.e. $data->value('key')) returns a value associated with a key for key/value tables. For unknown keys, it returns C. If the data file is not a key/value table but just a set, value returns a truth value for known keys. =back While we could use both "value" and "known", we will use the latter for readability (and to remind ourselves that this is a data set and not a data table). Basically we will be replacing: unless exists $VALID_MULTI_ARCH_VALUES{$multiarch}; with unless $VALID_MULTI_ARCH_VALUES->known($multiarch); So the resulting check is: # deb/pkg-check is loaded as Lintian::deb::pkg_check # - See Lintian User Manual §3.3 for more info package Lintian::deb::pkg_check; use strict; use warnings; use Lintian::Data; use Lintian::Tags qw(tag); my $VALID_MULTI_ARCH_VALUES = Lintian::Data->new('deb/pkg-check/multiarch-values'); sub run { my ($pkg, $type, $info, $proc, $group) = @_; my $multiarch = $info->field('multi-arch'); if (defined($multiarch)) { # The field is present, lets check it is valid. tag 'invalid-multi-arch-field', $multiarch unless $VALID_MULTI_ARCH_VALUES->known($multiarch); if ($multiarch eq 'same') { my $predepends = $info->relation('pre-depends'); tag 'missing-pre-depends-on-multiarch-support' unless $predepends->implies('multiarch-support'); } } else { # Emit a "missing-multi-arch-field" for all packages without the # Multi-Arch field tag 'missing-multi-arch-field'; } return; } =head2 Accessing contents of the package Another very used mechanism is to check for the presence (or absence) of a given file. Generally this is what the L<< $info->index|Lintian::Collect::Package/index (FILE) >> and L<< $info->sorted_index|Lintian::Collect::Package/sorted_index >> methods are for. The "index" method returns instances of L, which has a number of utility methods. If you want to loop over all files in a package, the sorted_index will do this for you. If you are looking for a specific file (or dir), a call to "index" will be much faster. For the contents of a specific dir, you can use something like: foreach my $elem ($info->index('path/to/dir/')->children) { print $elem->name . " is a file" if $elem->is_file; # ... } Keep in mind that using the "index" or "sorted_index" method will require that you put "index" in Needs-Info. See L. =head3 Accessing contents of a file in a package When you actually want to see the contents of a file, you can use LtoEfile>')|Lintian::Collect::Package/unpacked ([FILE])>. This will give you access to the raw contents of the package, which can be a blessing and a curse! The major caveat here is that there is no fail-safes for you here! When you use unpacked, keep things like "../../../../../etc/passwd"-symlink and "fifo" pipes in mind. This caveat applies equally well to use of LtoEfile')|Lintian::Collect::Binary/control ([FILE])> and LtoEfile')|Lintian::Collect::Source/debfiles ([FILE])>. It is generally a good idea to use L first to check if it is a regular file before opening a given path. If you must open a file (or a dir) from the underlying package, be sure to test that will not escape the package root. The following snippet may be useful for this. use Lintian::Util qw(is_ancestor_of); my $path = ...; # The snippet applies equally well to $info->debfiles and # $info->control (just remember to subst all occurrances of # $info->unpacked). my $unpacked_file = $info->unpacked($path); if ( -f $unpacked_file && is_ancestor_of($info->unpacked, $unpacked_file)) { # a file and contained within the package root. } else { # not a file or an unsafe path } Using the "unpacked" method requires that the "unpacked" collection is listed in Needs-Info. See L. =head2 Keeping Needs-Info up to date Keeping the "Needs-Info" field of your I<.desc> file is a bit of manual work. In the API description for the method there will generally be a line looking something like: Needs-Info requirements for using methodx: Y Which means that the methodx requires Y to work. Here Y is a comma separated list and each element of Y basically falls into 3 cases. =over 4 =item * The element is a the word I In this case, the method has no "external" requirements and can be used without any changes to your Needs-Info. The "field" method is an example of this. This only makes sense if it is the only element in the list. =item * The element is a link to a method In this case, the method uses another method to do is job. An example is the L method, which uses the L method. So using I has the same requirements as using I. =item * The element is the name of a collection (e.g. "control_index"). In this case, the method needs the given collection to be run. So to use (e.g.) L, you have to put "bin-pkg-control" in your Needs-Info. =back CAVEAT: Methods can have different requirements based on the type of package! Example being "changelog", which requires "changelog-file" in binary packages and "Same as debfiles" in source packages. =head2 Avoiding security issues Over the years a couple of security issues have been discovered in Lintian. The problem is people can in theory create some really nasty packages. Please keep the following in mind when writing a check: =over 4 =item * Avoid 2-arg open, system/exec($shellcmd), `$shellcmd` like the plague. When you get any one of those wrong you introduce "arbitrary code execution" vulnerabilities (we learned this the hard way via CVE-2009-4014). Usually 3-arg open and the non-shell variant of system/exec are enough. When you actually need a shell pipeline, consider using L. =item * Do not trust field values. This is especially true if you intend to use the value as part of a file name. Verify that field contains what you expect before you use it. =item * Use is_ancestor_of with $info->unpacked('path/to/file') You might be tempted to think that the following code is safe: my $filename = 'some/file'; my $ufile = $info->unpacked($filename); if ( ! -l $ufile) { # Looks safe, but isn't in general } This is definitely unsafe if "$filename" contains at least one directory segment. So if in doubt, use L to verify that the requested file is indeed the file you think it is. A better version of the above would be: use Lintian::Util qw(is_ancestor_of); [...] my $filename = 'some/file'; my $ufile = $info->unpacked($filename); if ( ! -l $ufile && -f $ufile && is_ancestor_of($info->unpacked, $ufile)) { # $ufile is a file and it is contained within the package root. } In some cases you can even drop the "! -l $ufile" part. For more information, see L =back =cut lintian-2.5.22ubuntu1/doc/tutorial/Lintian/Tutorial.pod0000664000000000000000000000074112310413144017764 0ustar =head1 NAME Lintian::Tutorial -- The newcomer's guide to Lintian =head1 SYNOPSIS Getting started with lintian in 5 minutes... maybe 10. =head1 DESCRIPTION Depending on what you want to work with there are different ways to approach Lintian and its code. =over 4 =item * L =item * L =item * Understanding Lintian To be written. =back =cut lintian-2.5.22ubuntu1/vendors/0000775000000000000000000000000012310413144013125 5ustar lintian-2.5.22ubuntu1/vendors/ubuntu/0000775000000000000000000000000012077065716014471 5ustar lintian-2.5.22ubuntu1/vendors/ubuntu/main/0000775000000000000000000000000012077065716015415 5ustar lintian-2.5.22ubuntu1/vendors/ubuntu/main/data/0000775000000000000000000000000012310413206016303 5ustar lintian-2.5.22ubuntu1/vendors/ubuntu/main/data/changes-file/0000775000000000000000000000000012310413206020630 5ustar lintian-2.5.22ubuntu1/vendors/ubuntu/main/data/changes-file/known-dists0000664000000000000000000000016512310413206023035 0ustar # List of ubuntu distributions dapper hardy karmic lucid maverick natty oneiric precise quantal raring saucy trusty lintian-2.5.22ubuntu1/private/0000775000000000000000000000000012310413206013116 5ustar lintian-2.5.22ubuntu1/private/generate-html-docs0000775000000000000000000000354712310413144016540 0ustar #!/usr/bin/perl use strict; use warnings; use autodie; use Pod::Simple::HTMLBatch; use Pod::Simple::HTML; my (@input, $output, $version); $output = pop @ARGV; @input = @ARGV; push @input, './lib', './doc/tutorial' unless @input; $output //= './doc/api.html'; $version = guess_version(); if (!-d $output) { mkdir $output or die "could not create directory: $!"; } $Pod::Simple::HTML::Content_decl = q{}; my $convert = Pod::Simple::HTMLBatch->new; $convert->html_render_class('Pod::Simple::HTML'); $convert->contents_page_start(header()); $convert->batch_convert(\@input, $output); print "HTML version available at $output/index.html\n"; sub header { return < Lintian (v$version) API doc

Lintian (v$version) API doc

Note: This API is not stable between releases.

EOF } sub guess_version { my $version; my $dist; open(my $fd, '-|', 'dpkg-parsechangelog', '-c0'); while (my $line = <$fd>) { $version = $1 if $line =~ m{\A Version: \s*+ (\S++) \s* \Z}xsm; $dist = $1 if $line =~ m{\A Distribution: \s*+ (\S++) \s* \Z}xsm; } close($fd); if ((not defined($dist) or $dist eq 'UNRELEASED') and -d '.git') { # For unreleased versions, git describe is probably a better # choice when available. my $guess; require IPC::Run; delete $ENV{'GITDIR'}; eval { # Ignore git being missing (or even failing to work) # - the version being incorrect for non-release cases is # not a major issue. IPC::Run::run(['git', 'describe'], \undef, \$guess); chomp $guess; $version = $guess if $guess ne '' && $guess =~ m{\A \d+\. }xsm; }; } return $version; } lintian-2.5.22ubuntu1/private/refresh-ftp-master-tags0000775000000000000000000000605212310413144017522 0ustar #!/usr/bin/perl # # refresh-ftp-master-tags -- Refresh Lintian data about ftp-master reject tags # # Copyright 2009 Russ Allbery # # This program is free software. It is distributed 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. use strict; use warnings; use autodie; # Not a B-D and script is compile tested... require LWP::Simple; import LWP::Simple qw(get); use POSIX qw(strftime); BEGIN { my $LINTIAN_ROOT = $ENV{'LINTIAN_ROOT'}; if (not $LINTIAN_ROOT) { require Cwd; $ENV{'LINTIAN_ROOT'} = $LINTIAN_ROOT = Cwd::cwd(); } else { chdir($LINTIAN_ROOT); } } our $YAML_URL = 'http://ftp-master.debian.org/static/lintian.tags'; # Retrieve the YAML file that determines which ftp-master tags warrant a # reject and then parse it. We should probably use a real YAML parser, but # that requires every Lintian maintainer to install it. my $yaml = get($YAML_URL); die "Cannot retrieve $YAML_URL\n" unless $yaml; my @yaml = split(/\n+/, $yaml); shift @yaml while (@yaml and $yaml[0] =~ /^\s*$/); die "Unknown YAML file format (first line: $yaml[0])\n" unless $yaml[0] =~ /^\s*lintian:\s*$/; shift @yaml; my (@nonfatal, @fatal, $current); for my $line (@yaml) { if ($line =~ /^\s*nonfatal:\s*$/) { $current = \@nonfatal; } elsif ($line =~ /^\s*fatal:\s*$/) { $current = \@fatal; } elsif ($line =~ /^\s*-\s+(\S+)\s*$/) { die "Tag listed outside of section\n" unless $current; push(@$current, $1); } else { die "Unrecognized line: $line\n"; } } # Print out the fatal and nonfatal tags to our data files. my $date = strftime('%Y-%m-%d', gmtime); open(my $nonfatal, '>', 'private/build-time-data/ftp-master-nonfatal'); print {$nonfatal} <<"EOH"; # This file lists all tags that cause an automatic reject on upload but can # be overridden (nonfatal tags). It is based on the data file retrieved from # $YAML_URL # # Last updated: $date EOH print {$nonfatal} join("\n", sort(@nonfatal), ''); close($nonfatal); open(my $fatal, '>', 'private/build-time-data/ftp-master-fatal'); print {$fatal} <<"EOH"; # This file lists all tags that cause an automatic reject on upload and cannot # be overridden. It is based on the data file retrieved from # $YAML_URL # # Last updated: $date EOH print {$fatal} join("\n", sort(@fatal), ''); close($fatal); # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/private/refresh-virtual-packages-data0000775000000000000000000001110312077065714020666 0ustar #!/bin/sh # refresh-virtual-packages-data -- Refresh data about font packages in Debian # Copyright (C) 2008, 2009 Raphael Geissert # # This file 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 file 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 file. If not, see . set -e # Ensure the sort order is stable. LC_ALL=C; export LC_ALL if [ -z "$1" ]; then printf "Usage: %s []\n" "$(basename "$0")" cat < is specified, it should be the path to the Packages file from the current unstable distribution. It will be used to find all font files already packaged for Debian and update the list of known font files and the packages that contain them. should be the path to the root of the Lintian data directory to update. If the Packages file is not specified, the script will download the following files from a mirror. The mirror can be specified with the DEB_MIRROR environment variable. If it is not set, the default is http://i386-geomirror.debian.net/debian. * main/binary-i386/Packages.gz Any necessary special parameters for wget can be set via the environment variable WGET_ARGS. The default arguments are -nv. To set additional virtual packages to be added to the list as Keep entries list them in the VIRTUAL_PACKAGES environment variable. INFO exit fi readonly lintian_data="$(readlink -f "$1")" if [ -n "$2" ] ; then packages="$(readlink -f "$2")" fi [ -d "$lintian_data" ] || { printf "%s is not a directory, aborting" "$lintian_data" >&2 exit 1 } readonly workdir="$(mktemp -d)" cleanup () { [ ! -d "$workdir" ] || rm -rf "$workdir" }; trap cleanup EXIT mirror="${DEB_MIRROR:=http://i386-geomirror.debian.net/debian}" WGET_ARGS="${WGET_ARGS:=-nv}" wget() { echo wget "$mirror"/"$1" /usr/bin/wget $WGET_ARGS -O "$workdir/$(basename "$1")" "$mirror"/"$1" } mkdir -p "$lintian_data/fields" cat > "$workdir/virtual-packages" <> "$workdir/virtual-packages" || true } [ -z "$VIRTUAL_PACKAGES" ] || { printf "# Keep: %s\n" "$VIRTUAL_PACKAGES" >> "$workdir/virtual-packages" } echo >> "$workdir/virtual-packages" if [ -z "$packages" ] ; then wget dists/sid/main/binary-i386/Packages.gz packages="$workdir/Packages.gz" fi case "$packages" in *.gz) CAT=zcat ;; *) CAT=cat ;; esac # We have to repeat all the Keep packages twice, since we filter out any # virtual packages that are only used once in the archive. { $CAT "$packages" sed -rn 's/^#\s*Keep:\s*/Provides: /;T;s/([^,:])\s+([^,])/\1, \2/g;p' \ "$workdir/virtual-packages" sed -rn 's/^#\s*Keep:\s*/Provides: /;T;s/([^,:])\s+([^,])/\1, \2/g;p' \ "$workdir/virtual-packages" } | perl -w -E 'my (%seen, %pkgs); while (<>) { chomp; if (m/^Package:\s*(.+)$/) { $pkgs{$1} = 1; next; } next unless (s/^Provides:\s*//); for my $pkg (split /\s*,\s*/) { $seen{$pkg}++; } } for my $pkg (keys %seen) { print "$pkg\n" unless ($seen{$pkg} == 1 or exists($pkgs{$pkg})); }' \ | sort -u >> "$workdir/virtual-packages" mv "$workdir/virtual-packages" "$lintian_data/fields/" # Local Variables: # indent-tabs-mode: nil # End: # vim: syntax=sh sw=4 sts=4 sr et lintian-2.5.22ubuntu1/private/refresh-insserv-data0000775000000000000000000000575112077065714017131 0ustar #!/bin/sh #################### # Copyright (C) 2008, 2010 by Raphael Geissert # # # This file 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 file 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 file. If not, see . #################### set -eu if [ -z "${1:-}" ]; then printf "Usage: %s path/to/lintian/data\n" \ "$(basename "$0")" cat <&2 exit 1 } readonly workdir="$(mktemp -d)" cleanup () { [ ! -d "$workdir" ] || rm -rf "$workdir" }; trap cleanup EXIT cat > "$workdir/virtual_facilities" < entries cat entries \ | perl -p -w -E 's#'"$perl_regex"'#$1#g;' \ | LC_ALL=C sort -u > packages wget dists/sid/main/binary-i386/Packages.gz gunzip Packages.gz for package in $(cat packages); do fn="$(grep-dctrl -n -P -X "$package" -sFilename Packages)" wget "$fn" file="$(basename "$fn")" dpkg-deb -x "$file" "$(mktemp -d -p .)" rm -rf "$file" find */ | grep -Ev '^[^/]+/etc/insserv.+$' \ | xargs rm >/dev/null 2>&1 || true find */ -type l -print | xargs rm >/dev/null 2>&1 || true done sed -nr '/^\$/{s/\s.*$//;p}' */etc/insserv.conf */etc/insserv.conf.d/* | sort -u >> virtual_facilities mv virtual_facilities "$lintian_data/init.d/" # Local Variables: # indent-tabs-mode: nil # End: # vim: syntax=sh sw=4 sts=4 sr et lintian-2.5.22ubuntu1/private/refresh-perl-provides0000775000000000000000000001375212310413206017303 0ustar #!/usr/bin/perl -w use strict; use warnings; # Generate a list of packages that are provided by the Perl core packages # and also packaged separately at a (hopefully) newer version. # The list will have the package name and the upstream version of the # corresponding module integrated in the currently installed Perl version. # Copyright (C) 2008 Niko Tyni # # 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, see . # from /usr/share/doc/libapt-pkg-perl/examples/apt-cache use AptPkg::Config '$_config'; use AptPkg::System '$_system'; use AptPkg::Cache; use List::MoreUtils qw(none); (my $self = $0) =~ s#.*/##; # initialise the global config object with the default values and # setup the $_system object $_config->init; $_system = $_config->system; # suppress cache building messages $_config->{quiet} = 2; # set up the cache my $cache = AptPkg::Cache->new; # end from /usr/share/doc/libapt-pkg-perl/examples/apt-cache # special cases when libfoo-bar-perl => Foo::Bar doesn't work my %module_name = ( 'libio-compress-perl' => 'IO::Compress::Gzip', 'libio-compress-zlib-perl' => 'IO::Compress::Gzip', ); # special cases for where the code gets the prefix wrong my %manual_split = ('libautodie-perl' => qr/\A (\d++\.) (\d{2}) (\d{2})? \Z/xsmo,); use Module::CoreList; my $versioning = $_system->versioning; # we look at packages provided by these my @core_packages = (qw(perl-base perl perl-modules)); # check we have a cache of Debian sid packages available warn( join(q{ }, 'Warning: this list should only be updated on a system', 'with an up to date APT cache of the Debian unstable distribution')) if ( none { defined $_->{Origin} && defined $_->{Archive} && $_->{Origin} eq 'Debian' && $_->{Archive} eq 'unstable'; } @{$cache->files}); print <{$pkg} or die("no such binary package found in the APT cache: $pkg"); my $latest = bin_latest($cached_versions); for my $provides (@{$latest->{ProvidesList}}) { my $name = $provides->{Name}; # skip virtual-only packages next if (!$cache->{$name}{VersionList}); my $cpan_version = find_core_version($name); next if !$cpan_version; # the number of digits is a pain # we use the current version in the Debian archive to determine # how many we need # the epoch is easier, we just copy it my ($epoch, $digits) = epoch_and_digits($name); my $debian_version = cpan_version_to_deb($name, $cpan_version, $epoch, $digits); next if !$debian_version; print "$name $debian_version\n"; } } # look up the CPAN version of a package in the core sub find_core_version { my $module = shift; my $ret; return if $module =~ /^perl(5|api)/; if (exists $module_name{$module}) { $module = $module_name{$module}; } else { # mangle the package name into the module name $module =~ s/^lib//; $module =~ s/-perl$//; $module =~ s/-/::/g; } for (Module::CoreList->find_modules(qr/^\Q$module\E$/i, 0+$])) { $ret = $Module::CoreList::version{0+$]}{$_}; last; } return $ret; } sub cpan_version_to_deb { my ($pkg, $cpan_version, $epoch, $digits) = @_; $epoch ||= ''; # cpan_version # digits # result # 1.15_02, 2 => 1.15.02 # 1.15_02, 4 => 1.1502 # 1.15_02, 0 => 1.15.02 # # 1.15_021, 2 => 1.15.021 # 1.15_021, 4 => 1.1500.021 # 1.15_021, 0 => 1.15.021 # # 1.15, 1 => 1.15 # 1.15, 2 => 1.15 # 1.15, 4 => 1.1500 # 1.15, 0 => 1.15 # split 1.15_02 to (1, 15, 02) my $regex = qr/^(\d+\.)(\d+)(?:_(\d+))?$/; $regex = $manual_split{$pkg} if exists $manual_split{$pkg}; my ($major, $prefix, $suffix) = ($cpan_version =~ $regex); die("no match with $cpan_version?") if !$major; $suffix ||= ''; if (length($suffix) + length($prefix) == $digits) { $prefix .= $suffix; $suffix = ''; } if (length($suffix) + length($prefix) < $digits) { $prefix .= '0' while length($prefix) < $digits; } $suffix = ".$suffix" if $suffix ne ''; return $epoch.$major.$prefix.$suffix; } # Given a Debian binary package name, look up its latest version # and return its epoch (including the colon) if available, and # the number of digits in its decimal part sub epoch_and_digits { my $p = shift; return (0, 0) if !exists $cache->{$p}; return (0, 0) if !exists $cache->{$p}{VersionList}; # virtual package my $latest = bin_latest($cache->{$p}); my $v = $latest->{VerStr}; $v =~ s/\+dfsg//; my ($epoch, $major, $prefix, $suffix, $revision) = ($v =~ /^(?:(\d+:))?((?:\d+\.))+(\d+)(?:_(\d+))?(-[^-]+)$/); return ($epoch, length $prefix); } sub bin_latest { my $p = shift; return (sort bin_byversion @{$p->{VersionList}})[-1]; } sub bin_byversion { return $versioning->compare($a->{VerStr}, $b->{VerStr}); } # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/private/tag-stats0000775000000000000000000001041512310413144014755 0ustar #!/usr/bin/perl -w # tag-stats - tag classification statistics # # This script displays statistics and data for tag classification based on # Severity/Certainty headers and their mapping to a E/W/I code. # # The verbose options (-v, -vv, -vvv) can be used to display a detailed list # of which tags are assigned to each category. use strict; use warnings; use autodie qw(opendir closedir); BEGIN { my $LINTIAN_ROOT = $ENV{'LINTIAN_ROOT'}; if (not $LINTIAN_ROOT) { require Cwd; $ENV{'LINTIAN_ROOT'} = $LINTIAN_ROOT = Cwd::cwd(); } else { chdir $LINTIAN_ROOT or die "Cannot chdir to $LINTIAN_ROOT: $!\n"; } } my $LINTIAN_ROOT = $ENV{'LINTIAN_ROOT'}; use lib "$ENV{'LINTIAN_ROOT'}/lib"; use Lintian::Tag::Info; use Lintian::Util qw(fail read_dpkg_control); my @severities = reverse qw(pedantic wishlist minor normal important serious); my @certainties = reverse qw(wild-guess possible certain); my @types = qw(E W I P); my %stats; my $num_tags = 0; my $num_ok = 0; my $percent = 0; my $verbose = $ARGV[0] ? ($ARGV[0] =~ s/v/v/g) : 0; opendir(my $checkdir, "$LINTIAN_ROOT/checks"); for my $check (readdir($checkdir)) { next unless $check =~ /\.desc$/; my @tags = read_dpkg_control("$LINTIAN_ROOT/checks/$check"); my $desc = $tags[0]; my @needs; if ($desc and exists $desc->{'needs-info'}) { @needs = split(/\s*,\s*/, $desc->{'needs-info'}); } shift(@tags); foreach my $tag (@tags) { my $name = $tag->{tag}; my $severity = $tag->{severity}; my $certainty = $tag->{certainty}; $severity = 'unclassified' if not $severity; $certainty = 'unclassified' if not $certainty; my $info = Lintian::Tag::Info->new($tag, $desc->{'check-script'}, $desc->{'type'}); my $code = $info->code; push(@{$stats{severity}{$severity}}, $name); push(@{$stats{certainty}{$certainty}}, $name); push(@{$stats{both}{$severity}{$certainty}}, $name); push(@{$stats{type}{severity}{$code}{$severity}}, $name); push(@{$stats{type}{both}{$code}{$severity}{$certainty}}, $name); for my $need (@needs) { $stats{needs}{$severity}{$certainty}{$need} = 1; } $num_tags++; } } closedir($checkdir); print "Severity\n"; foreach my $s (@severities) { my $tags = $stats{severity}{$s}; print " $s: " . @{$tags} . "\n"; print ' ' . join("\n ", sort @{$tags}) . "\n" if $verbose >= 3; } print "\nCertainty\n"; foreach my $c (@certainties) { my $tags = $stats{certainty}{$c}; print " $c: " . @{$tags} . "\n"; print ' ' . join("\n ", sort @{$tags}) . "\n" if $verbose >= 3; } print "\nSeverity/Certainty\n"; foreach my $s (@severities) { foreach my $c (@certainties) { if (my $tags = $stats{both}{$s}{$c}) { print " $s/$c: " . @{$tags} . "\n"; print ' ' . join("\n ", sort @{$tags}) . "\n" if $verbose >= 2; } } } foreach my $t (@types) { print "\nType $t Severity\n"; foreach my $s (@severities) { if (my $tags = $stats{type}{severity}{$t}{$s}) { print " $s: " . @{$tags} . "\n"; print ' ' . join("\n ", sort @{$tags}) . "\n" if $verbose >= 2; } } } foreach my $t (@types) { print "\nType $t Severity/Certainty\n"; foreach my $s (@severities) { foreach my $c (@certainties) { if (my $tags = $stats{type}{both}{$t}{$s}{$c}) { print " $s/$c: " . @{$tags} . "\n"; print ' ' . join("\n ", sort @{$tags}) . "\n" if $verbose >= 1; } } } } print "\nCollections\n"; foreach my $s (@severities) { foreach my $c (@certainties) { if (my $needs = $stats{needs}{$s}{$c}) { my $size = scalar keys %{$needs}; my @list = sort keys %{$needs}; print " $s/$c: $size\n"; print ' ' . join("\n ", @list) . "\n" if $verbose >= 2; } } } if ($verbose >= 1 and exists $stats{severity}{unclassified}) { print "\nUnclassified tags\n"; print ' ' . join("\n ", @{$stats{severity}{unclassified}}) . "\n"; } # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/private/update-coverage0000775000000000000000000001332012310413206016116 0ustar #!/usr/bin/perl -w # # Check all tags mentioned in Test-For in the new test suite and all tags seen # by the old test suite against the list of all documented tags and generate # output suitable for tags-never-seen that lists the untested tags. Updates # t/COVERAGE. # # Should be run from the top level of the Lintian source tree or with # LINTIAN_ROOT set appropriately. use strict; use warnings; use autodie; use POSIX qw(strftime); BEGIN { my $LINTIAN_ROOT = $ENV{'LINTIAN_ROOT'}; if (not $LINTIAN_ROOT) { require Cwd; $ENV{'LINTIAN_ROOT'} = $LINTIAN_ROOT = Cwd::cwd(); } else { chdir($LINTIAN_ROOT); } } my $LINTIAN_ROOT = $ENV{'LINTIAN_ROOT'}; use lib "$ENV{'LINTIAN_ROOT'}/lib"; use Lintian::Util qw(read_dpkg_control); # Check that we're being run from the right place (although the above probably # died if we weren't). unless (-f 't/runtests') { warn "update-coverage source be run from the top level of the Lintian\n"; warn "source tree.\n\n"; die "Cannot find t/runtests -- run from the right directory?\n"; } # Gather a list of all tags. my (%tags, %checks, $total, $check_total); my ($tc, $ltc, $ctc, $cltc); my @legacy_in_new; for my $desc (glob('checks/*.desc')) { for my $data (read_dpkg_control($desc)) { $desc =~ s,.*/,,; $desc =~ s/\.desc$//; if (exists $data->{tag}) { $tags{$data->{tag}} = $desc; $checks{$desc}++; } } } $total = scalar keys %tags; $check_total = scalar keys %checks; # Parse all test configuration files from the new test suite looking for # Test-For configuration options and remove those from the %tags hash. for my $desc ( glob( join(q{ }, 't/tests/*/desc', 't/changes/*.desc', 't/debs/*/desc', 't/source/*/desc')) ) { my ($data) = read_dpkg_control($desc); my $testname = $data->{'testname'}; if ($testname =~ s{\A legacy- }{}xsm) { my $tagfile = $desc; $tagfile =~ s{ /desc \Z}{/tags}xsm; push(@legacy_in_new, [$testname, $tagfile]); } elsif (exists $data->{'test-for'}) { for my $tag (split(' ', $data->{'test-for'})) { my $check = $tags{$tag}; delete $tags{$tag}; if ($check) { delete $checks{$check} unless --$checks{$check}; } } } } $tc = $total - scalar keys %tags; $ctc = $check_total - scalar keys %checks; # Now parse all tags files from the old test suite looking for what tags that # test reveals. my (%legacy, %legacy_test); for my $deferred (@legacy_in_new) { my ($testname, $tagfile) = @{$deferred}; add_legacy_tags($testname, $tagfile); } for my $tagfile (glob('testset/tags.*')) { next if $tagfile =~ /\.sed$/; my $case = $tagfile; $case =~ s/.*tags\.//; add_legacy_tags($case, $tagfile); } $ltc = $total - scalar keys %tags; $cltc = $check_total - scalar keys %checks; my $tcr = $total ? sprintf ' (%.02f%%)', ($tc / $total) * 100 : ''; my $ltcr = $total ? sprintf ' (%.02f%%)', ($ltc / $total) * 100 : ''; my $ctcr = $check_total ? sprintf ' (%.02f%%)', ($ctc / $check_total) * 100 : ''; my $cltcr = $check_total ? sprintf ' (%.02f%%)', ($cltc / $check_total) * 100 : ''; # Open COVERAGE and print out a date stamp. open(my $coverage, '>', 't/COVERAGE') or die "Cannot create t/COVERAGE: $!\n"; print {$coverage} 'Last generated ', strftime('%Y-%m-%d', gmtime), "\n"; print {$coverage} "Coverage (Tags): $tc/$total$tcr, ", "w. legacy tests: $ltc/$total$ltcr\n"; print {$coverage} "Coverage (Checks): $ctc/$check_total$ctcr, ", "w. legacy tests: $cltc/$check_total$cltcr\n\n"; # Whatever is left in the %tags hash are untested. Print them out sorted by # checks file. print {$coverage} "The following tags are not tested by the test suite:\n"; print_tags(\%tags, $coverage); # The contents of the %legacy hash are only tested by the legacy test suite. print {$coverage} "\nThe following tags are only tested by the legacy test suite:\n"; print_tags(\%legacy, $coverage); # Print out a breakdown of the tags that are only tested by the legacy test # suite, sorted by legacy test case. print {$coverage} "\nBreakdown of remaining tags in legacy test suite by test case:\n"; for my $package (sort keys %legacy_test) { print {$coverage} "\n$package\n"; for my $tag (sort @{ $legacy_test{$package} }) { print {$coverage} " $tag\n"; } } close($coverage); # ----------------------------------- # Given a reference to a hash whose keys are tags and whose values are file # names, print out a report to the provide output file handle. sub print_tags { my ($tags, $out) = @_; my @untested; for my $tag (keys %$tags) { push(@untested, [$tags->{$tag}, $tag]); } @untested = sort { $a->[0] cmp $b->[0] || $a->[1] cmp $b->[1] } @untested; my $last = ''; for my $data (@untested) { my ($file, $tag) = @$data; if ($file ne $last) { print {$out} "\n"; $last = $file; } print {$out} "$file $tag\n"; } return; } sub add_legacy_tags { my ($testname, $tagfile) = @_; $legacy_test{$testname} ||= []; open(my $tag_fd, '<', $tagfile); while (my $line = <$tag_fd>) { if ($line =~ /^.: \S+(?: (?:changes|source|udeb))?: (\S+)/) { my $tag = $1; if (exists $tags{$tag}) { my $check = $tags{$tag}; delete $checks{$check} unless --$checks{$check}; $legacy{$tag} = $tags{$tag}; delete $tags{$tag}; push(@{ $legacy_test{$testname} }, $tag); } } } close($tag_fd); return; } # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/private/refresh-archs0000775000000000000000000001634012310413144015605 0ustar #!/usr/bin/perl #################### # Copyright (C) 2012 Niels Thykier # - Based on a shell script by Raphael Geissert # # This file 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 file 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 file. If not, see . #################### use strict; use warnings; use autodie; use File::Temp qw(tempfile); use POSIX qw (strftime); use lib "$ENV{'LINTIAN_ROOT'}/lib/"; use Lintian::Util qw(parse_dpkg_control); my $datapath = shift; my %hardening = map { $_ => 1 } qw( fortify relro stackprotector ); my (%archs, %files); # Adding data files to be updated by this file is as simple as calling # add_data_file and give it a hash of the following: # # filename => name of the data file in the data dir # line-spec => List-ref of line descriptions. Variables from # dpkg-architecture can be used via @VAR@. There will be # one line in the list-ref times the architectures listed # by $(dpkg-architecture -L). # header => Optional text header text. Lines should start with "#". # The script will add the "Last updated", "With" and a # "This file was auto-generated by $0" automatically. # keep => If present and a truth value, the file will use # "keep:" comments to hard-code some values # # # All lines (except the header) will be sorted before they are written # to minimize the diff. # add_data_file( 'filename' => 'common/multiarch-dirs', 'line-spec' => ['@DEB_HOST_ARCH@ @DEB_HOST_MULTIARCH@'], 'header' => < dir mapping EOF ); add_data_file( 'filename' => 'files/triplets', 'line-spec' => ['@DEB_HOST_MULTIARCH@ @DEB_HOST_ARCH@'], 'header' => < 'common/architectures', 'line-spec' => ['@DEB_HOST_ARCH@ || @DEB_HOST_ARCH_OS@ @DEB_HOST_ARCH_CPU@'], 'header' => < 'shared-libs/ldconfig-dirs', 'line-spec' => ['lib/@DEB_HOST_MULTIARCH@','usr/lib/@DEB_HOST_MULTIARCH@'], 'keep' => 1, 'header' => < 'binaries/hardening-tags', 'line-spec' => ['@DEB_HOST_ARCH@ || @HARDENING@'], 'header' => <) { my (@hardening, @htags); delete $ENV{'DEB_HOST_ARCH'}; chomp $archstr; open(my $dafd, '-|', 'dpkg-architecture', "-a$archstr"); while (my $var = <$dafd>) { chomp $var; my ($key, $value) = split /=/, $var, 2; $archs{$archstr}{$key} = $value; } close($dafd); $ENV{'DEB_HOST_ARCH'} = $archstr; open(my $dbfd, '-|', 'dpkg-buildflags', '--query-features', 'hardening'); @hardening = parse_dpkg_control($dbfd); close($dbfd); foreach my $paragraph (@hardening) { if (($paragraph->{'enabled'}//'no') eq 'yes') { my $tag = 'hardening-no-' . $paragraph->{'feature'}; next if not exists $hardening{$paragraph->{'feature'}}; $tag = 'hardening-no-fortify-functions' if $tag eq 'hardening-no-fortify'; push @htags, $tag; } } $archs{$archstr}{'HARDENING'} = join(', ', sort @htags); } close($dlfd); open_data_files($dver); foreach my $archstr (sort keys %archs) { my $arch = $archs{$archstr}; write_data_line($arch); } close_and_rename(); exit 0; sub write_data_line { my ($vars) = @_; foreach my $filename (keys %files) { my $fd = $files{$filename}->{'fd'}; foreach my $orig (@{ $files{$filename}->{'line-spec'} }) { my $line = $orig; # copy the template $line =~ s#\@([^@ \t]+)\@#$vars->{$1}//die "Unknown var: $1"#eg; push @{ $files{$filename}->{'lines'} }, $line; } } return; } sub open_data_files { my ($version) = @_; my $date = strftime '%Y-%m-%d', gmtime; foreach my $filename (keys %files) { my ($fd, $temp) = tempfile(); $files{$filename}->{'temp-file'} = $temp; $files{$filename}->{'fd'} = $fd; $files{$filename}->{'lines'} = []; if ($files{$filename}->{'header'}) { print $fd $files{$filename}->{'header'}; } print $fd "# Last updated: $date\n"; print $fd "# With: $version\n"; print $fd "# This file was auto-generated by $0\n"; if ($files{$filename}->{'keep'}) { open(my $orig, '<', "$datapath/$filename"); print $fd "#\n# Lines to always be include\n"; while (my $line = <$orig>) { next unless $line =~ m/^#\s*Keep:\s*(.*\S)\s*$/io; my $v = $1; print $fd "# Keep: $v\n"; push @{ $files{$filename}->{'lines'} }, $v; } close($orig); } print $fd "\n"; } return; } sub add_data_file { my (%data) = @_; my $file = $data{'filename'} or die "Missing filename.\n"; @{ $data{'line-spec'} } or die "Missing line spec for $file.\n"; $data{'header'} //= ''; $data{'keep'} //= 0; $files{$file} = \%data; return; } sub close_and_rename { foreach my $filename (keys %files) { my $tf = $files{$filename}->{'temp-file'}; my $fd = $files{$filename}->{'fd'}; foreach my $line (sort @{ $files{$filename}->{'lines'} }) { print $fd "$line\n"; } close($files{$filename}->{'fd'}); } foreach my $filename (keys %files) { my $tf = $files{$filename}->{'temp-file'}; my $df = "$datapath/$filename"; system('mv', '-f', $tf, $df) == 0 or die "mv -f $tf $df failed.\n"; } return; } # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/private/TODO0000664000000000000000000001075512310413206013616 0ustar This is a collection of work to do in Lintian that isn't a bug fix or a simple requested new check. Use the BTS for those since they're more public and so that other people know things have already been requested. This is intended for more internal use to track code restructurings, infrastructure work, needed cleanups, or larger tasks. Tasks here are sorted roughly by the directory structure of Lintian where that makes sense so that we don't just have one long list. Patches for any of this is welcome, but please discuss on the mailing list first before you do lots of work since the maintainers may have specific ways they want it to be done. If someone is actively working on something, note their name in square brackets at the beginning. If someone is noted, coordinate with them before working on this. checks: - Move all static keyword lists into files in data. - Separate doc-base checks out of checks/menus (or, probably easier, rename checks/menus to checks/doc-base and separate out the few bits that are actually about menus). - Go through all tags and make sure that any that should have Policy references have them, and more generally that appropriate references are present. (Need some way to track this sort of regular tag maintenance.) - Check current tag certainties and severities against the results from lintian.d.o and adjust. If something has legitimate overrides, it's not severity: certain, for instance. collection: - Collect desktop files so that checks/menu-format doesn't have to walk the file index and so that we can do interesting checks on desktop files from inside the Lintian lab. doc: - Either update doc/CREDITS based on the changelog file or archive it somewhere and say that it's not going to be updated. - Update the Lintian manual: + document severity/certainty + document other output formats + document the reporting framework + developer documentation of the test suite, submitting patches, etc. frontend: - Nearly everything in frontend/lintian that isn't command-line parsing is really begging to be a module. Move code out of here and into modules as part of rewriting the non-namespace modules in lib, such as Lab.pm which should acquire more the laboratory handling from frontend/lintian, and Checker.pm, which should acquire most of the smarts of the main frontend/lintian checking loop. lib: - Finish documentation of Lintian::Collect::Binary and ::Source. - Finish documentation of Lintian::Output*. - Add collect function to return the sort of symlink information that's currently gathered by checks/menus; we'll find other uses for it. - Provide a utility function to check a command as currently done in checks/menu-format, after which we could split desktop checking and menu checking into two separate check scripts. private: - Provide a general framework for updating metadata about the archive and modify all of the private/refresh-* scripts to use it. Also set up something in debian/rules that will run all of them and update data accordingly which can be done routinely before every release. reporting: - Turn the bulk of the reporting framework into a module and move report generation into frontend as a lintian-report program (or something like that) which we can install as a first-class executable. The html_reports script is relatively okay but could stand some cleanup and conversion to a module. The harness script needs serious de-yucking. t: - Write new-style test cases for everything tested by the old test suite and retire the old test suite. - Go through t/tests/legacy-libbaz/debian/debian/rules and make sure all TODO's are lintian-detected. - t/runtests has a lot of duplicate code and could stand some restructuring and factoring of common code. - udebs are generally undertested right now and could use some general tests, particularly for things that we don't care about with udebs but do care about with regular packages. General: - Write a real parser for shell scripts that can at least tokenize them half-way decently, do some basic analysis of whether code is conditional or not, and provide reasonable answers to questions like "is this command called in the script" without heinous regex matches. Replace all the ugly, ad hoc script parsing code elsewhere in Lintian with that parser. This is #629247. External: - Set up system for automatically filing bugs based on specific lintian tags (the most reliable ones), with usertags to ensure the bugs aren't repeatedly filed. lintian-2.5.22ubuntu1/private/generate-tag-summary0000775000000000000000000000213112310413144017100 0ustar #!/usr/bin/perl use strict; use warnings; use autodie; my (%added, %removed); my ($commit_range) = @ARGV; die "Usage: $0 tag..HEAD\n" unless $commit_range; open(my $fd, '-|', 'git', 'diff', $commit_range, '--', 'checks/*.desc'); while (my $line = <$fd>) { chomp($line); next unless $line =~ m{ \A ([\+-]) Tag: \s*+ ([^ ]++) \s*+ \Z}xsm; my ($change, $tag) = ($1, $2); if ($change eq '+') { $added{$tag} = 1; } else { $removed{$tag} = 1; } } close($fd); for my $tag (keys(%added)) { if (exists($removed{$tag})) { # Added and removed? More likely, the tag was moved between # two files. delete($added{$tag}); delete($removed{$tag}); } } if (not %added and not %removed) { print STDERR "No tags were added or removed\n"; exit(0); } print " * Summary of tag changes:\n"; if (%added) { print " + Added:\n"; for my $tag (sort(keys(%added))) { print " - $tag\n"; } } if (%removed) { print " + Removed:\n"; for my $tag (sort(keys(%removed))) { print " - $tag\n"; } } lintian-2.5.22ubuntu1/private/refresh-locale-codes0000775000000000000000000000773112310413144017043 0ustar #!/usr/bin/perl # refresh-locale-codes -- Refresh the locale (aka ISO 639-1/639-2 codes) # Copyright (C) 2013 Niels Thykier # Based on a shell script, which was: # Copyright (C) 2010 Raphael Geissert # # This file 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 file 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 file. If not, see . use strict; use warnings; use autodie; use POSIX qw(strftime); BEGIN { # determine LINTIAN_ROOT my $LINTIAN_ROOT = $ENV{'LINTIAN_ROOT'} || '.'; $ENV{'LINTIAN_ROOT'} = $LINTIAN_ROOT unless exists $ENV{'LINTIAN_ROOT'}; } use lib "$ENV{'LINTIAN_ROOT'}/lib"; use Lintian::Util qw(check_path); my ($DATADIR) = @ARGV; my (%CODES, $outfile); die "Usage: $0 \n" unless defined $DATADIR and -d $DATADIR; check_requirements(); my $date = strftime('%Y-%m-%d', gmtime); $ENV{LC_ALL} = 'C'; parse_iso_query(); parse_iso_xml(); $outfile = "$DATADIR/files/locale-codes.new"; open(my $out, '>', $outfile); print {$out} < $DATADIR/files/locale-codes: $!"; exit 0; sub parse_iso_xml { open(my $fd, '<', '/usr/share/xml/iso-codes/iso_639_3.xml'); local $_; local $/ = '/>'; while (<$fd>) { my $special = 0; # skip it if it is a "special" isotype (#692548, comment #10). However # sometimes we "collect" these from iso-query. If so, we have to # prune them from %CODES. $special = 1 if m/\]* \btype=[\'\"]S?[\'\"]/x; # Extract the id of the entry. We match the start of the tag # again to ensure we catch the id inside the tag. (Our input # separator causes us to consume a lot of leading "stuff" # prior to the first entry being closed). next unless m/\]* \bid=[\'\"]([^\'\"]+)[\'\"]/x; my $id = lc $1; if ($special) { delete $CODES{$id}; } else { $CODES{$id} = undef unless exists $CODES{$id}; } } close($fd); return; } sub parse_iso_query { open(my $fd, '-|', 'isoquery', '-i', '639'); local $_; while (<$fd>) { next unless m/^\w{3}\s+(\w{3})\s+(?:(\w{2})\s+)?/; my ($iso1, $iso2) = ($2, $1); next if $iso2 eq 'zxx'; if (!defined $iso1) { $iso1 = $iso2; $iso2 = undef; } $iso1 = lc $iso1; $CODES{$iso1} = undef unless exists $CODES{$iso1}; if (defined $iso2) { $CODES{lc $iso2} = $iso1; } } close($fd); return; } sub check_requirements { my @missing; push @missing, 'isoquery in PATH' unless check_path('isoquery'); push @missing, 'The file /usr/share/xml/iso-codes/iso_639_3.xml' unless -f '/usr/share/xml/iso-codes/iso_639_3.xml'; return unless @missing; print STDERR "Missing requirements:\n"; print STDERR "\t", join("\n\t", @missing), "\n"; exit 1; } # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/private/refresh-fonts-data0000775000000000000000000000567512077065714016576 0ustar #!/bin/sh # refresh-fonts-data -- Refresh data about font packages in Debian # Copyright (C) 2008, 2009 Raphael Geissert # # This file 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 file 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 file. If not, see . set -e if [ -z "$1" ]; then printf "Usage: %s []\n" "$(basename "$0")" cat < is specified, it should be the path to the Contents file from the current unstable distribution. It will be used to find all font files already packaged for Debian and update the list of known font files and the packages that contain them. should be the path to the root of the Lintian data directory to update. If the Contents file is not specified, the script will download the following files from a mirror. The mirror can be specified with the DEB_MIRROR environment variable. If it is not set, the default is http://i386-geomirror.debian.net/debian. * Contents-i386.gz Any necessary special parameters for wget can be set via the environment variable WGET_ARGS. The default arguments are -nv. INFO exit fi readonly lintian_data="$(readlink -f "$1")" if [ -n "$2" ] ; then contents="$(readlink -f "$2")" fi [ -d "$lintian_data" ] || { printf "%s is not a directory, aborting" "$lintian_data" >&2 exit 1 } readonly workdir="$(mktemp -d)" cleanup () { [ ! -d "$workdir" ] || rm -rf "$workdir" }; trap cleanup EXIT mirror="${DEB_MIRROR:=http://i386-geomirror.debian.net/debian}" WGET_ARGS="${WGET_ARGS:=-nv}" wget() { echo wget "$mirror"/"$1" /usr/bin/wget $WGET_ARGS -O "$workdir/$(basename "$1")" "$mirror"/"$1" } mkdir -p "$lintian_data/files" cat > "$workdir/fonts" <> "$workdir/fonts" # Fonts in xfonts-tipa are really shipped by tipa. sed -i 's/ xfonts-tipa$/ tipa/g' "$workdir/fonts" mv "$workdir/fonts" "$lintian_data/files/fonts" # Local Variables: # indent-tabs-mode: nil # End: # vim: syntax=sh sw=4 sts=4 sr et lintian-2.5.22ubuntu1/private/refresh-debhelper-data0000775000000000000000000001144512077065714017367 0ustar #!/bin/sh #################### # Copyright (C) 2008 by Raphael Geissert # # # This file 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 file 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 file. If not, see . #################### set -e if [ -z "$1" ]; then printf "Usage: %s path/to/lintian/data [Contents-arch.(gz|bz2|)]\n" \ "$(basename "$0")" cat <&2 exit 1 } [ ! -z "$contents" -a ! -f "$contents" ] && { printf "%s is not a file, aborting" "$contents" >&2 exit 1 } [ -z "$contents" ] || offline=1 readonly workdir="$(mktemp -d)" cleanup () { [ ! -d "$workdir" ] || rm -rf "$workdir" }; trap cleanup EXIT if [ $offline -eq 1 ]; then known_commands="$lintian_data/debhelper/dh_commands" [ -f "$known_commands" ] || exit 1 new_commands="$workdir/new" case "$contents" in *.gz) command="zgrep" ;; *.bz2) command="bzgrep" ;; *) command="grep" ;; esac which "$command" 2>&1 1>/dev/null || exit 2 $command -E "$dh_regex" "$contents" \ | perl -p -w -E 's#'"$dh_command_perl_regex"'#$1=$2#g;' \ | sort > "$new_commands" cmp -s "$known_commands" "$new_commands" exit else mirror="${DEB_MIRROR:=http://i386-geomirror.debian.net/debian}" WGET_ARGS="${WGET_ARGS:=-nv}" wget() { echo wget "$mirror"/"$1" /usr/bin/wget $WGET_ARGS "$mirror"/"$1" } mkdir -p "$lintian_data/debhelper" cd "$workdir" wget dists/sid/Contents-i386.gz zgrep -E "$dh_regex" Contents-i386.gz > dh_entries cat dh_entries \ | perl -n -w -E 's#'"$dh_command_perl_regex"'#$1=$2# and print' \ | LC_ALL=C sort > dh_commands cat dh_entries \ | perl -n -w -E 's#'"$dh_addon_perl_regex"'#$1=$2# and print' \ | LC_ALL=C sort > dh_addons cat dh_commands \ | cut -d '=' -f 2 \ | LC_ALL=C sort -u > dh_packages for f in commands addons packages; do rf="$lintian_data/debhelper/dh_$f" [ ! -f "$rf" ] || mv "$rf" "${rf}.old" cp -a "dh_$f" "$rf" done wget dists/sid/main/binary-i386/Packages.gz gunzip Packages.gz for package in $(cat dh_packages); do fn="$(grep-dctrl -n -P -X "$package" -sFilename Packages)" wget "$fn" file="$(basename "$fn")" dpkg-deb -x "$file" "$(mktemp -d -p .)" rm -rf "$file" find */ | grep -Ev '^[^/]+/usr/bin/dh_.+$' \ | xargs rm >/dev/null 2>&1 || true find */ -type l -print | xargs rm >/dev/null 2>&1 || true done grep -lr autoscript */ \ | sed 's,.*/usr/bin/,,g' | sort -u > maint_commands grep -lr misc:Depends */ \ | sed 's,.*/usr/bin/,,g' | sort -u | grep -v dh_gencontrol \ > miscDepends_commands for f in maint miscDepends; do rf="$lintian_data/debhelper/${f}_commands" [ ! -f "$rf" ] || mv "$rf" "${rf}.old" cp -a "${f}_commands" "$rf" done fi # Local Variables: # indent-tabs-mode: nil # End: # vim: syntax=sh sw=4 sts=4 sr et lintian-2.5.22ubuntu1/private/generate-lintian-pod0000775000000000000000000000563112310413144017060 0ustar #!/usr/bin/perl use strict; use warnings; use autodie; # Find the lib directory of lintian-root (defaulting to ./lib/) BEGIN { $ENV{LINTIAN_ROOT} //= '.'; } use lib $ENV{LINTIAN_ROOT} . '/lib/'; use Lintian::Util qw(read_dpkg_control fail); my @keywords = (); foreach my $kw (qw(conffiles shlibs Standards-Version)){ push @keywords, [qr/$kw/, "B<$kw>"]; } open(my $file, '<', 'man/lintian.pod.in'); while(my $line = <$file>){ chomp($line); if($line eq '@CHECKS@'){ extract_data('checks', 'check-script', 'abbrev'); } elsif($line eq '@COLLECTION@'){ extract_data('collection', 'collector-script'); } else { print "$line\n"; } } close($file); sub pretty_print { my $text = shift; my $inex = 0; $text =~ s@\n\s\.\n\s@\n\n\n@og; $text =~ s@\n\s@\n@og; $text =~ s/\&([^;]+)\;/E<$1>/og; # do > -> E $text =~ s/(\S+\(\d+\))/L<$1>/og; # link to manpages foreach my $line (split(m/\n/o, $text)) { if ($line =~ m/^ /o){ if(!$inex){ # Start of an example. $inex = 1; # Give an extra line break. $line = "\n$line"; } # Example line print "$line\n"; next; } elsif ($inex) { # First line after an example. $inex = 0; $line = "\n\n$line"; } # Normal line # Replace simple html tags $line =~ s@\([^<]*)\@I<$1>@iog; $line =~ s@\([^<]*)\@B<$1>@iog; $line =~ s@\([^<]*)\@I<$1>@iog; # Underline paths $line =~ s@(\S*/(?:[^/ \t]++/?)*)@I<$1>@og; # Policy Manual $line =~ s@Policy Manual@B@og; foreach my $kw (@keywords){ my ($s,$r) = @$kw; $line =~ s|\b\Q$s\E\b|$r|; } print "$line\n"; } print "\n\n"; return; } sub extract_data { my ($folder, $fname, $abname) = @_; print "=over 4\n\n"; foreach my $file (glob("$folder/*.desc")) { my ($header, @ignore) = read_dpkg_control($file); my $name = $header->{$fname}; my $abbr; my $desc; next if $name eq 'lintian'; if (defined $abname) { $abbr = $header->{$abname}; } if (!defined $header->{'manpage'}) { $desc = $header->{'info'}; } else { $desc = $header->{'manpage'}; } if ($abbr) { print "=item B<$name> (B<$abbr>)\n\n"; } else { print "=item B<$name>\n\n"; } pretty_print($desc); if (lc($header->{'auto-remove'}//'') eq 'yes') { print "This collection is auto-removed by default in static labs.\n\n"; } } print "=back\n\n"; return; } # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/private/graph0000775000000000000000000002275312310413144014157 0ustar #!/usr/bin/perl use strict; use warnings; use Getopt::Long; BEGIN { my $root = $ENV{'LINTIAN_ROOT'}//'.'; $ENV{'LINTIAN_HELPER_DIRS'} = "$root/helpers"; $ENV{'LINTIAN_ROOT'} = $root; } use lib "$ENV{'LINTIAN_ROOT'}/lib"; use Lintian::CheckScript; use Lintian::CollScript; my %opt = ( 'checks' => 1, 'dep-level' => 1, ); # %needs + %rneeds - note keys and values are "$type-$name" my (%needs, %rneeds); # node -> "level" - also counts as "marker" in the BFS in gen_depth_level my %depth; my (@levels, %collmap, @colls, @checks, $cond); my (%nodes, %edges, @ranks); my $LINTIAN_ROOT = $ENV{'LINTIAN_ROOT'}; my %opthash = ( 'checks!' => \$opt{'checks'}, 'dep-level!' => \$opt{'dep-level'}, 'longest-paths' => \$opt{'longest-paths'}, 'pkg-type=s' => \$opt{'pkg-type'}, 'h|help' => \&usage, ); # init commandline parser Getopt::Long::config('bundling', 'no_getopt_compat', 'no_auto_abbrev'); # process commandline options GetOptions(%opthash) or die("error parsing options\n"); $opt{'dep-level'} = 1 if $opt{'longest-paths'}; $cond = { 'type' => $opt{'pkg-type'} } if defined $opt{'pkg-type'}; foreach my $collf (glob("$LINTIAN_ROOT/collection/*.desc")) { my $coll = Lintian::CollScript->new($collf); my $name = $coll->name; my @needs = $coll->needs_info($cond); push @colls, $name; $needs{"coll-$name"} = \@needs; $collmap{$name} = $coll; foreach my $n (@needs) { push @{ $rneeds{"coll-$n"} }, "coll-$name"; } } if ($cond) { my (%newneeds, %newrneeds); @colls = grep { $collmap{$_}->is_type($opt{'pkg-type'}) } @colls; foreach my $cname (@colls) { my @oldneed = @{ $needs{"coll-$cname"} }; my $n = prune_needs("coll-$cname", \%newrneeds, @oldneed); $newneeds{"coll-$cname"} = $n; } %needs = %newneeds; %rneeds = %newrneeds; } if ($opt{'checks'}) { foreach my $checkf (glob("$LINTIAN_ROOT/checks/*.desc")) { my $cname = $checkf; $cname =~ s,^\Q$LINTIAN_ROOT\E/checks/(.+)\.desc$,$1,; my $check = Lintian::CheckScript->new("$LINTIAN_ROOT/checks", $cname); my $name = $check->name; my $n; next if defined $opt{'pkg-type'} and not $check->is_check_type($opt{'pkg-type'}); push @checks, $name; $n = prune_needs("check-$name", \%rneeds, $check->needs_info); $needs{"check-$name"} = $n; } } gen_coll_check(); make_graph(); exit 0; sub prune_needs { my ($name, $rneeds, @oldneed) = @_; my (%filtneeds, %seen); while (my $need = pop @oldneed) { $seen{$need} = 1; if (not defined $opt{'pkg-type'} or $collmap{$need}->is_type($opt{'pkg-type'})) { $filtneeds{$need} = 1; push @{ $rneeds->{"coll-$need"} }, $name; } else { push @oldneed, grep { !exists $seen{$_} } $collmap{$need}->needs_info($cond); } } $rneeds->{$name} = [] unless exists $rneeds->{$name}; return [keys %filtneeds]; } sub gen_depth_level { my @queue; my %re = (); # "remaining" edges # Breadth first search with multiple source nodes # - Note we visit a node when we reach it through its LAST egde # - first find the source nodes and enqueue them foreach my $node (@colls) { my $needed = $needs{"coll-$node"}; if (scalar @$needed < 1) { push @queue, "coll-$node"; #enqueue $depth{"coll-$node"} = 0; } else { # "remaining" edges my %e = map {; "coll-$_" => 1 } @$needed; $re{"coll-$node"} = \%e; } } # Do the BFS while (@queue) { my $node = shift @queue; #dequeue my $level = $depth{$node}; push @{ $levels[$level] }, $node; foreach my $other (@{ $rneeds{$node} }) { next unless $other =~ m/^coll-/o; next if exists $depth{$other}; delete $re{$other}->{$node}; # Is this the last edge to this node? next if scalar keys %{ $re{$other} }; # Yes, then we visit it. $depth{$other} = $level + 1; push @queue, $other; #enqueue } } # BFS done, create ranks for checks (if needed) if ($opt{'checks'}) { foreach my $c (sort @checks) { my $needs = $needs{"check-$c"}; my $level = 0; if (@$needs) { foreach my $dep (@$needs) { $level = $depth{"coll-$dep"} if $depth{"coll-$dep"} > $level; } $level++; $depth{"check-$c"} = $level; } push @{ $levels[$level] }, "check-$c"; } } # Done - generate ranks and the graph @ranks = map { ['same', $_] } @levels; return; } sub mark_longest_paths { # We exploit the fact that all nodes in level n must have a path # consisting of n - 1 edges. If this was not the case, the node # should not be in that level. Therefore we only need to consider # the nodes in the "highest level" since they will *all* have a # path of max length in this graph! # # These nodes may have paths that are shorter than the max length. # However, related to the assertion above, we know the longest # paths *must* pass through a node in each level. my $path_marks = {}; my @c = @{ $levels[-1] }; for my $i (reverse(0..$#levels)) { my $next = $i - 1; my @nc = (); foreach my $node (@c) { foreach my $dep (@{ $needs{$node} }) { next unless $depth{"coll-$dep"} == $next; $path_marks->{$node}->{"coll-$dep"} = 1; push @nc, "coll-$dep"; } } @c = @nc; } return $path_marks; } sub make_graph { _header(); print "// Nodes\n"; foreach my $node (sort keys %nodes) { my $attr = $nodes{$node}//''; my $n = "\"$node\""; $n .= " [ $attr ]" if $attr; print " $n\n"; } print "\n// Edges\n"; foreach my $sn (sort keys %edges) { foreach my $en (sort keys %{ $edges{$sn} }) { my ($et, $attr) = @{ $edges{$sn}->{$en} }; my $e = "\"$sn\" $et \"$en\""; $e .= " [ $attr ]" if $attr; print " $e\n"; } } print "\n"; _footer(); return; } sub is_marked { my ($paths, $start, $end) = @_; return unless $paths; return unless exists $paths->{$start} && exists $paths->{$start}->{$end}; return 1; } sub gen_coll_check { my $marked_paths; my $style = 'style=solid arrowhead=normal'; my $mstyle = 'color=red style=solid arrowhead=normal'; if ($opt{'dep-level'}) { gen_depth_level(); } if ($opt{'longest-paths'}) { $marked_paths = mark_longest_paths(); $style = 'style=dotted arrowhead=none'; } foreach my $coll (sort @colls) { my %ed; $nodes{"coll-$coll"} = "label=\"$coll\""; foreach my $dep (@{ $needs{"coll-$coll"} }) { my $s = $style; $s = $mstyle if is_marked($marked_paths, "coll-$coll", "coll-$dep"); $ed{"coll-$dep"} = ['->', $s]; } $edges{"coll-$coll"} = \%ed; } if ($opt{'checks'}) { foreach my $check (sort @checks) { my %ed; $nodes{"check-$check"} = "label=\"$check\" shape=box color=blue"; foreach my $dep (@{ $needs{"check-$check"} }) { my $s = $style; $s = $mstyle if is_marked($marked_paths, "check-$check", "coll-$dep"); $ed{"coll-$dep"} = ['->', $s]; } $edges{"check-$check"} = \%ed; } } return; } sub _header { print <) { next unless /^\.SH HARDWARE CAPABILITIES/; last; } while (<$manpage>) { next unless /^\.B/; last; } while (<$manpage>) { last if /^\.SH /; next if /^\./; chomp; $caps{$_} = 1 foreach split /,\s*/; } close($manpage); my $path = "$datadir/shared-libs/hwcap-dirs"; my $date = strftime '%Y-%m-%d', gmtime; open(my $orig, '<', $path); while (my $line = <$orig>) { chomp $line; next unless $line =~ m/^#\s*Keep:\s*(.*\S)\s*$/o; my $keep = $1; push @keeps, $keep; foreach my $val (split /\s*,\s*/o, $keep) { $caps{$val} = 1; } } close($orig); open(my $fp, '>', $path); print $fp <(.+?)<\/title\s?>/i; my $link_re = qr//; my $index_re = qr/([A-Z]|[A-Z]?[\d\.]+?)\.?\s+([\w\s[:punct:]]+?)<\/a>/; my $fields = [['url'], ['section'], ['title']]; my $dbk_index_re = qr/([\d.]+?)\.\s+([\w\s[:punct:]]+?)<\/a\s*>/i; my $dbk_fields = [['section'], ['url'], ['title']]; my %manuals = ( 'policy' => [ '/usr/share/doc/debian-policy/policy.html/index.html', 'http://www.debian.org/doc/debian-policy/', $link_re, $fields ], 'menu-policy' => [ '/usr/share/doc/debian-policy/menu-policy.html/index.html', 'http://www.debian.org/doc/packaging-manuals/menu-policy/', $link_re, $fields ], 'perl-policy' => [ '/usr/share/doc/debian-policy/perl-policy.html/index.html', 'http://www.debian.org/doc/packaging-manuals/perl-policy/', $link_re, $fields ], 'python-policy' => [ '/usr/share/doc/python/python-policy.html/index.html', 'http://www.debian.org/doc/packaging-manuals/python-policy/', $link_re, $fields ], 'java-policy' => [ '/usr/share/doc/java-common/debian-java-policy/index.html', 'http://www.debian.org/doc/packaging-manuals/java-policy/', $dbk_index_re, $dbk_fields ], 'vim-policy' => [ '/usr/share/doc/vim-doc/vim-policy.html/index.html', 'http://pkg-vim.alioth.debian.org/vim-policy.html/', $dbk_index_re, $dbk_fields ], 'lintian' => [ '/usr/share/doc/lintian/lintian.html/index.html', 'http://lintian.debian.org/manual/', $dbk_index_re, $dbk_fields ], 'devref' => [ '/usr/share/doc/developers-reference/index.html', 'http://www.debian.org/doc/developers-reference/', $index_re, $fields, #<<< no perl tidy # breaking this regex up with x should work, but for some reason it # trips a false positive in the minimum-version (thinking it requires # perl5.17 for some bizarre reason). qr{([\d\.]+?)\.? ([\w\s[:punct:]]+?)}, #>>> ], 'menu' => [ '/usr/share/doc/menu/html/index.html', 'http://www.debian.org/doc/packaging-manuals/menu.html/', $index_re, $fields ], 'doc-base' => [ '/usr/share/doc/doc-base/doc-base.html/index.html', '', $index_re, $fields ], 'debconf-spec' => [ '/usr/share/doc/debian-policy/debconf_specification.html', join(q{/}, 'http://www.debian.org', 'doc/packaging-manuals/debconf_specification.html'), qr/([\w\s[:punct:]]+?)<\/a>/, [['section', 'url'], ['title']] ], 'fhs' => [ '/usr/share/doc/debian-policy/fhs/fhs-2.3.html', 'http://www.pathname.com/fhs/pub/fhs-2.3.html', qr/([\w\s[:punct:]]+?)<\/a\s*>/i, [['section', 'url'], ['title']] ], ); # Check all of the manuals are present before trying anything { my $ok = 1; foreach my $manual (sort keys %manuals) { my ($index, undef) = @{$manuals{$manual}}; unless (-f $index) { print STDERR "Manual \"$manual\" not available (missing: $index)\n"; $ok = 0; } } exit 1 unless $ok; } # extract_refs -- Extract manual references from HTML file. # # This function takes the output file handle, the path to the page, and the # regex to match, and prints references to stdout. The second argument is used # to decide whether to look for the title (0) or not (1). It returns a list of # pages linked by the extracted references. sub extract_refs { my ($fh, $manual, $title, $page, $url, $ref_re, $fields) = @_; my @linked_pages = (); open(my $page_fd, '<', $page); # Read until there are 2 newlines. This hack is needed since some lines in # the Developer's Reference are cut in the middle of .... local $/ = "\n\n"; while (<$page_fd>) { if (not $title and m/$title_re/) { $title = 1; my @out = ($manual, '', $1, $url); print $fh join('::', @out) . "\n"; } while (m/$ref_re/g) { my %ref; for (my $i = 0; $i < scalar @{$fields}; $i++) { foreach my $c (@{$fields->[$i]}) { my $v = $i + 1; $ref{$c} = eval '$' . $v; } } if ($ref{url} =~ m/^(.+?\.html)#?/i) { push(@linked_pages, $1) if none { m/$1/ } @linked_pages; } # If the extracted URL part doesn't look like a URL, assume it is # an anchor and convert to URL accordingly. if ($ref{url} and not $ref{url} =~ m/(?:#|\.html$)/i) { $ref{url} = basename($page) . "#$ref{url}"; } $ref{section} =~ s/^\#(.+)$/\L$1/; $ref{title} =~ s/\s+/ /g; $ref{title} =~ s,]*>(.*?),$1,ig; $ref{title} =~ s,]*>(.*?),$1,ig; $ref{url} = "$url$ref{url}"; $ref{url} = '' if not $url; my @out = ($manual, $ref{section}, $ref{title}, $ref{url}); print {$fh} join('::', @out) . "\n"; } } close($page_fd); return @linked_pages; } # Create a new reference file. open(my $ref_fd, '>', 'data/output/manual-references.new') or die "Cannot create data/output/manual-references.new: $!\n"; my $date = strftime('%Y-%m-%d', localtime); print {$ref_fd} <<"HEADER"; # Data about titles, sections, and URLs of manuals, used to expand references # in tag descriptions and add links for HTML output. Each line of this file # has four fields separated by double colons: # # ::
:: :: <url> # # If <section> is empty, that line specifies the title and URL for the whole # manual. If <url> is empty, that manual is not available on the web. # # Last updated: $date HEADER for my $manual (sort keys %manuals) { my ($index, $url, $ref_re, $fields, $sub_re) = @{$manuals{$manual}}; # Extract references from the index. my @subpages = extract_refs($ref_fd, $manual, 0, $index, $url, $ref_re, $fields); # Extract additional subsection references if not available in the index. next if not $sub_re; foreach my $pagename (@subpages) { my $page = dirname($index) . "/$pagename"; extract_refs($ref_fd, $manual, 1, $page, $url, $sub_re, $fields); } } # Replace the old reference file. close($ref_fd); rename('data/output/manual-references.new', 'data/output/manual-references'); # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et �����������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/private/generate-profiles.pl��������������������������������������������������0000775�0000000�0000000�00000006643�12310413144�017103� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl # Generates profiles for the Debian vendor # - Remember to add new profiles to d/rules under profiles use strict; use warnings; use constant LINE_LENGTH => 80; use constant FIELD_ORDER => ( 'Extends','Enable-Tags-From-Check', 'Disable-Tags-From-Check','Enable-Tags', 'Disable-Tags', ); use constant PARAGRAPH_ORDER => ('Overridable', 'Severity'); BEGIN { my $root = $ENV{'LINTIAN_ROOT'}//'.'; $ENV{'LINTIAN_ROOT'} = $root; } use lib "$ENV{LINTIAN_ROOT}/lib"; use Lintian::Util qw(fail read_dpkg_control strip); my $root = $ENV{LINTIAN_ROOT}; my @dirs = ('profiles/debian'); my (@checks, @fatal, @nonfatal); foreach my $check (glob("$root/checks/*.desc")){ my ($header, undef) = read_dpkg_control($check); my $cname = $header->{'check-script'}; fail "$check missing check-script\n" unless defined $cname; push @checks, $cname; } @fatal = read_tags('private/build-time-data/ftp-master-fatal'); @nonfatal = read_tags('private/build-time-data/ftp-master-nonfatal'); foreach my $dir (@dirs) { mkdir $dir or fail "mkdir $dir: $!" unless -d $dir; } generate_profile( 'debian/main', { 'Extends' => 'debian/ftp-master-auto-reject', 'Enable-Tags-From-Check' => \@checks, 'Disable-Tags' => ['hardening-no-stackprotector'], }); generate_profile( 'debian/extra-hardening', { 'Extends' => 'debian/main', 'Enable-Tags' => ['hardening-no-stackprotector'], }); generate_profile( 'debian/ftp-master-auto-reject', { # "lintian" is enabled by default, so we explicitly disable it. 'Disable-Tags-From-Check' => ['lintian'], 'Enable-Tags' => [@fatal, @nonfatal], }, { 'Tags' => \@fatal, 'Overridable' => 'no', }); exit 0; sub generate_profile { my ($profile, $main, @other) = @_; my $filename = "profiles/$profile.profile"; open(my $fd, '>', $filename) or die "$filename: $!"; print $fd "# This profile is auto-generated\n"; print $fd "Profile: $profile\n"; foreach my $f (FIELD_ORDER) { my $val = $main->{$f}; next unless defined $val; if ($f eq 'Extends') { format_field($fd, $f, $val); } else { format_field($fd, $f, sort @$val); } } print $fd "\n"; foreach my $para (@other) { format_field($fd, 'Tags', sort @{ $para->{'Tags'} }); foreach my $f (PARAGRAPH_ORDER) { my $val = $para->{$f}; next unless defined $val; print $fd "$f: $val\n"; } print $fd "\n"; } close($fd) or die "$filename: $!"; return; } sub format_field { my ($fd, $field, @elements) = @_; my $llen = length($field) + 2; my $first = shift @elements; print $fd "$field: $first"; foreach my $el (@elements){ my $ellen = length $el; if ($llen + $ellen + 2 <= LINE_LENGTH || $llen <= 2){ print $fd ", $el"; $llen += $ellen + 2; } else { print $fd ",\n $el"; $llen = $ellen + 1; } } print $fd "\n"; return; } sub read_tags { my ($file) = @_; my @tags = (); open my $fd, '<', $file or die "$file: $!"; while (<$fd>) { strip; next if /^#/ or $_ eq ''; push @tags, $_; } close $fd; return @tags; } # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et ���������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/README������������������������������������������������������������������������0000664�0000000�0000000�00000011151�12313507507�012336� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Lintian - Static Debian package analysis tool ============================================= Lintian is a static analysis tool for finding many bugs, policy violations and other issues in Debian based packages. It can process binary Debian packages (.deb), micro/installer packages (.udeb), Debian source packages (.dsc) and (to a limited degree) the "changes" files. Running Lintian =============== Running Lintian is as simple as invoking $ lintian path/to/pkg_version_arch.changes Alternatively, you can pass Lintian binary/udeb or dsc files directly instead of the .changes file. Lintian is designed to work directly from the source tree (simply use "frontend/lintian" itself). For information about command options, please run lintian (or lintian-info) with "--help". Alternatively, you can also read the manpages lintian(1) and lintian-info(1). Advice / Tips and Tricks ------------------------ If there is a tag you are not familiar with, you can use "--info" or lintian-info to get more information: $ lintian-info -t no-version-field If you want to enable all tags, simply use the "Evil and pedantic" mnemonic: $ lintian -EvIL +pedantic path/to/pkg_version_arch.changes You may want to drop the "-v", which may make Lintian more verbose than you would like. Also, keep in mind that "-E" enables "experimental" tags and "-L +pedantic" enables some very pedantic tags. Lintian is not always right! Static analysis involves a trade-off between "accuracy" and CPU/memory usage. Furthermore, in some cases, certain packages trigger a corner case where the Debian Policy gives more leeway than Lintian does. If you have installed Lintian via the "lintian" Debian package, you can find the Lintian User's Manual in: $ sensible-browser /usr/share/doc/lintian/lintian.html/index.html # or in txt format $ less /usr/share/doc/lintian/lintian.txt.gz Alternatively, Debian provides an on-line version of the manual on the [Lintian web site][online-manual]. [online-manual]: http://lintian.debian.org/manual/index.html Compiling Lintian ================= Lintian is written in pure Perl and therefore does not require any "building" at all. Consequently, Lintian currently does not have a build system. Instead it relies on its Debian build system (implemented in debian/rules) and debhelper. Thus, on Debian-based systems, installing the build dependencies (see debian/control) and running: $ dpkg-buildpackage will provide you with a "lintian" Debian package. So far there has been little work in providing a stand-alone build system as Lintian requires a fair share of "Debian specific" tools and libraries, including the "Dpkg" and "AptPkg" Perl modules. We are willing to accept and maintain a stand-alone build system for Lintian. Where not intrusive, we may also be willing to accept alternative dependencies for "Debian specific" libraries/tools. Developing/Patching Lintian =========================== If you are interested in working developing patches for Lintian or just writing your own Lintian checks, please download the Lintian source and consider reading the doc/README.developers from the source tree: $ perldoc doc/README.developers We also have some short tutorials in our API docs. You can compile the API documentation via: $ debian/rules api-doc $ sensible-browser doc/api.html/index.html From there, you might want to start with "Lintian::Tutorial". If you prefer to use perldoc (or want to improve the tutorials), you can find the source files for the tutorial in doc/tutorial. There is also an online copy on the [Lintian web site][online-api-docs]. Note that the online copy does not necessarily reflect the API of the current development version of Lintian. Instead, it is the API of Lintian when it was last updated on the Lintian web site. [online-api-docs]: http://lintian.debian.org/library-api/index.html Feedback ======== Please file bugs against the "lintian" package in the Debian Bug Tracker. We recommend using reportbug(1) for filing bugs, but in its absence you send a [mail to the BTS][bts-report-bug]. Any comments, critics, or suggestions about Lintian or related topics are highly appreciated by the authors! Please contact <lintian-maint@debian.org>. Thanks! Please note that all data submitted to the Debian Bug Tracker and the address <lintian-maint@debian.org> will be available to the general public. Should you be aware of a severe non-disclosed security issue in Lintian, then please contact the [Debian Security Team][report-security-issue] instead. [bts-report-bug]: http://www.debian.org/Bugs/Reporting [report-security-issue]: http://www.debian.org/security/faq#contact �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/����������������������������������������������������������������������������0000775�0000000�0000000�00000000000�12314122207�011711� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/����������������������������������������������������������������������0000775�0000000�0000000�00000000000�12314366011�013056� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-exec/���������������������������������������������������������0000775�0000000�0000000�00000000000�12310413146�015465� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-exec/tags�����������������������������������������������������0000664�0000000�0000000�00000000207�12310413146�016345� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������W: scripts-exec: executable-not-elf-or-script usr/bin/04-not-a-script W: scripts-exec: script-not-executable usr/bin/02-no-exec-script �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-exec/desc�����������������������������������������������������0000664�0000000�0000000�00000000255�12310413146�016330� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: scripts-exec Sequence: 6000 Version: 1.0 Description: Check for exec bit related issues for scripts Test-For: executable-not-elf-or-script script-not-executable ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-exec/debian/��������������������������������������������������0000775�0000000�0000000�00000000000�12310413146�016707� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-exec/debian/03-hardlink-script��������������������������������0000664�0000000�0000000�00000000111�12310413146�022141� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Not actually installed/tested; just here to ensure manpage is generated. �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-exec/debian/04-not-a-script�����������������������������������0000664�0000000�0000000�00000000144�12310413146�021372� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# This is not a script nor an ELF executable, but yet it will be marked # executable. Tsk tsk tsk. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-exec/debian/script.pod����������������������������������������0000664�0000000�0000000�00000000375�12310413146�020724� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������=head1 NAME @SCRIPT@ - Cool script to do stuff written in some script language. =head1 SYNOPSIS @SCRIPT@ --cool-argument =head1 DESCRIPTION This script is very awesome and does something you do not even know you need. =head1 AUTHOR I made this �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-exec/debian/02-no-exec-script���������������������������������0000664�0000000�0000000�00000000042�12310413146�021705� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/bash echo "Goodbye world" ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-exec/debian/01-normal-script����������������������������������0000664�0000000�0000000�00000000040�12310413146�021634� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/bash echo "Hallo world" ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-exec/debian/debian/�������������������������������������������0000775�0000000�0000000�00000000000�12310413146�020131� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-exec/debian/debian/clean��������������������������������������0000664�0000000�0000000�00000000005�12310413146�021131� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������man/ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-exec/debian/debian/install������������������������������������0000664�0000000�0000000�00000000022�12310413146�021514� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������*-script usr/bin/ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-exec/debian/debian/rules��������������������������������������0000775�0000000�0000000�00000000751�12310413146�021214� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/make -f TMP:=debian/$(shell dh_listpackages)/ %: dh $@ override_dh_fixperms: chmod 0755 $(TMP)/usr/bin/01-normal-script chmod 0644 $(TMP)/usr/bin/02-no-exec-script rm -f $(TMP)/usr/bin/03-hardlink-script ln $(TMP)/usr/bin/01-normal-script $(TMP)/usr/bin/03-hardlink-script chmod 0755 $(TMP)/usr/bin/04-not-a-script override_dh_auto_build: mkdir man for FILE in *-script ; do \ sed s/@SCRIPT@/$$FILE/g script.pod | \ pod2man --section=1 > man/$$FILE.1 ; \ done �����������������������lintian-2.5.22ubuntu1/t/tests/scripts-exec/debian/debian/manpages�����������������������������������0000664�0000000�0000000�00000000010�12310413146�021636� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������man/*.1 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/binaries-golang/������������������������������������������������������0000775�0000000�0000000�00000000000�12310413144�016113� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/binaries-golang/tags��������������������������������������������������0000664�0000000�0000000�00000000000�12310413144�016762� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/binaries-golang/desc��������������������������������������������������0000664�0000000�0000000�00000000243�12310413144�016753� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: binaries-golang Sequence: 6000 Version: 1.0 Description: Misc errors related to golang binaries Architecture: any Test-Against: statically-linked-binary �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/binaries-golang/debian/�����������������������������������������������0000775�0000000�0000000�00000000000�12310413144�017335� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/binaries-golang/debian/Makefile���������������������������������������0000664�0000000�0000000�00000000412�12310413144�020772� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������COMPILE:= $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) all: # static version $(COMPILE) -static -o basic.static basic.c install: install -d $(DESTDIR)/usr/lib/foo/ install -m 755 basic.static $(DESTDIR)/usr/lib/foo/static clean distclean: rm -f basic check test: ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/binaries-golang/debian/basic.c����������������������������������������0000664�0000000�0000000�00000000305�12310413144�020560� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#include <stdio.h> int main(void) { char t[10]; printf("Hello world!\n"); /* Bad choice for reading from stdin, but it forces a stack protector, so meh. */ gets (t); } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/binaries-golang/debian/debian/����������������������������������������0000775�0000000�0000000�00000000000�12310413206�020556� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/binaries-golang/debian/debian/control.in������������������������������0000664�0000000�0000000�00000001017�12310413206�022565� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), golang-go (>= 2:1.1.1-4) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/changelog-file-etch/��������������������������������������������������0000775�0000000�0000000�00000000000�12310413205�016635� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/changelog-file-etch/tags����������������������������������������������0000664�0000000�0000000�00000000102�12077065714�017531� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������W: changelog-file-etch: version-refers-to-distribution 1.0-1etch1 ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/changelog-file-etch/desc����������������������������������������������0000664�0000000�0000000�00000000263�12077065714�017521� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: changelog-file-etch Sequence: 6000 Type: non-native Version: 1.0-1etch1 Description: Test for a code name in an unstable upload Test-For: version-refers-to-distribution ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-malformed-vcs-fields/������������������������������������������0000775�0000000�0000000�00000000000�12310413206�020320� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-malformed-vcs-fields/tags��������������������������������������0000664�0000000�0000000�00000000576�12310413206�021211� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������W: fields-malformed-vcs-fields source: vcs-field-has-unexpected-spaces vcs-git git://anonscm.debian.org/test/test.git --branch wrong W: fields-malformed-vcs-fields source: vcs-field-uses-not-recommended-uri-format vcs-svn svn+ssh://svn.debian.org/svn/foobar/trunk W: fields-malformed-vcs-fields source: vcs-field-uses-unknown-uri-format vcs-browser svn.debian.org/wsvn/foobar/trunk ����������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-malformed-vcs-fields/desc��������������������������������������0000664�0000000�0000000�00000000344�12310413144�021163� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: fields-malformed-vcs-fields Sequence: 6000 Description: Test malformed VCS-* fields Version: 1.0 Test-For: vcs-field-uses-not-recommended-uri-format vcs-field-uses-unknown-uri-format vcs-field-has-unexpected-spaces ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-malformed-vcs-fields/debian/�����������������������������������0000775�0000000�0000000�00000000000�12077065715�021564� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-malformed-vcs-fields/debian/debian/����������������������������0000775�0000000�0000000�00000000000�12310413206�022764� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-malformed-vcs-fields/debian/debian/control.in������������������0000664�0000000�0000000�00000001200�12310413206�024765� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Vcs-Browser: svn.debian.org/wsvn/foobar/trunk Vcs-Svn: svn+ssh://svn.debian.org/svn/foobar/trunk Vcs-Git: git://anonscm.debian.org/test/test.git --branch wrong Package: {$source} Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-etcfiles/������������������������������������������������������0000775�0000000�0000000�00000000000�12310413206�016111� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-etcfiles/post_test���������������������������������������������0000664�0000000�0000000�00000000070�12310413206�020055� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-etcfiles/tags��������������������������������������������������0000664�0000000�0000000�00000002013�12310413206�016766� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: etcfiles source: debian-rules-missing-required-target binary-arch E: etcfiles source: not-binnmuable-all-depends-any only-etcfiles -> etcfiles E: etcfiles: changelog-file-not-compressed changelog E: etcfiles: file-in-etc-not-marked-as-conffile etc/improper E: etcfiles: file-in-etc-not-marked-as-conffile etc/improper-link E: etcfiles: malformed-md5sums-control-file line 7 E: etcfiles: md5sum-mismatch etc/improper E: etcfiles: md5sums-lists-nonexistent-file usr/bin/foo E: etcfiles: no-copyright-file E: etcfiles: non-etc-file-marked-as-conffile var/lib/foo E: only-etcfiles: extended-description-is-empty W: etcfiles source: ancient-standards-version 3.5.0 (current is CURRENT) W: etcfiles: file-missing-in-md5sums etc/improper-link W: etcfiles: file-missing-in-md5sums usr/share/doc/etcfiles/changelog W: etcfiles: package-contains-hardlink etc/improper -> etc/improper-link W: etcfiles: readme-debian-mentions-usr-doc line 2 W: etcfiles: run-parts-cron-filename-contains-illegal-chars etc/cron.daily/cronfile-contains.fullstop ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-etcfiles/desc��������������������������������������������������0000664�0000000�0000000�00000000151�12310413206�016747� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: legacy-etcfiles Source: etcfiles Sequence: 9999 Version: 1 Description: Legacy test "etcfiles" �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-etcfiles/debian/�����������������������������������������������0000775�0000000�0000000�00000000000�12310413206�017333� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-etcfiles/debian/proper�����������������������������������������0000664�0000000�0000000�00000000036�12310413206�020564� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# i am a config file foo = var��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-etcfiles/debian/improper���������������������������������������0000664�0000000�0000000�00000000027�12310413206�021112� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������[config] var = value���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-etcfiles/debian/debian/����������������������������������������0000775�0000000�0000000�00000000000�12310413206�020555� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-etcfiles/debian/debian/conffiles.only��������������������������0000664�0000000�0000000�00000000044�12310413206�023426� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/etc/etcfiles/foo /etc/etcfiles/bar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-etcfiles/debian/debian/changelog�������������������������������0000664�0000000�0000000�00000000261�12310413206�022426� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������etcfiles (1) unstable; urgency=low * Acknowledge NMU (Closes: #1234). * initial setup -- Lintian Maintainers <lintian-maint@debian.org> Fri, 21 Sep 2001 11:56:02 -0700 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-etcfiles/debian/debian/rules�����������������������������������0000775�0000000�0000000�00000004242�12310413206�021637� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/make -f tmp=debian/tmp tmponly=debian/only-etcfiles clean: rm -f debian/files debian/substvars rm -rf debian/tmp rm -rf debian/only-etcfiles build: build-arch: build-indep: binary-indep: install -d $(tmp)/etc install -m 644 proper $(tmp)/etc install -m 644 improper $(tmp)/etc mkdir $(tmp)/etc/cron.daily touch $(tmp)/etc/cron.daily/cronfile-normal touch $(tmp)/etc/cron.daily/.cronfile-begins-with-fullstop touch $(tmp)/etc/cron.daily/cronfile-contains.fullstop ln $(tmp)/etc/improper $(tmp)/etc/improper-link install -d $(tmp)/usr/share/doc/etcfiles install -d $(tmp)/var/lib install -m 644 proper $(tmp)/var/lib/foo install -m 644 debian/README.Debian $(tmp)/usr/share/doc/etcfiles install -m 644 debian/changelog $(tmp)/usr/share/doc/etcfiles #gzip -9 $(tmp)/usr/share/doc/etcfiles/changelog install -d $(tmp)/DEBIAN install -m 644 debian/conffiles $(tmp)/DEBIAN echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/cronfile-normal' \ > debian/tmp/DEBIAN/md5sums echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/.cronfile-begins-with-fullstop' \ >> debian/tmp/DEBIAN/md5sums echo 'd41d8cd98f00b204e9800998ecf8427e ./etc/cron.daily/cronfile-contains.fullstop' \ >> debian/tmp/DEBIAN/md5sums echo '05c72cacce994208128b7d081116b04a ./etc/proper' \ >> debian/tmp/DEBIAN/md5sums echo 'ab371382468880299e5ebd05921764ce etc/improper' \ >> debian/tmp/DEBIAN/md5sums echo 'ab371382468880299e5ebd05921764ce usr/bin/foo' \ >> debian/tmp/DEBIAN/md5sums echo 'this is a malformed line' \ >> debian/tmp/DEBIAN/md5sums echo '56fb27e455dd86d8801f1ecd3a4cee49 usr/share/doc/etcfiles/README.Debian' \ >> debian/tmp/DEBIAN/md5sums install -d $(tmponly)/etc/etcfiles touch $(tmponly)/etc/etcfiles/foo touch $(tmponly)/etc/etcfiles/bar install -d $(tmponly)/usr/share/doc cd $(tmponly)/usr/share/doc && ln -s etcfiles only-etcfiles install -d $(tmponly)/DEBIAN install -m 644 debian/conffiles.only $(tmponly)/DEBIAN/conffiles dpkg-gencontrol -isp -petcfiles dpkg-gencontrol -isp -ponly-etcfiles -P$(tmponly) dpkg --build $(tmp) .. dpkg --build $(tmponly) .. binary: binary-indep .PHONY: binary-indep binary clean ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-etcfiles/debian/debian/control���������������������������������0000664�0000000�0000000�00000001167�12310413206�022165� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Source: etcfiles Section: misc Priority: extra Maintainer: Lintian Maintainers <lintian-maint@debian.org> Standards-Version: 3.5.0 Package: etcfiles Architecture: any Depends: ${shlibs:Depends} Description: test handling of files in /etc Regression test for lintian's handling of files in /etc. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: only-etcfiles Architecture: all Depends: etcfiles (= ${source:Version}) Description: test handling of conffile-only package ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-etcfiles/debian/debian/conffiles�������������������������������0000664�0000000�0000000�00000000223�12310413206�022445� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/etc/proper /var/lib/foo /etc/cron.daily/cronfile-normal /etc/cron.daily/.cronfile-begins-with-fullstop /etc/cron.daily/cronfile-contains.fullstop �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-etcfiles/debian/debian/README.Debian���������������������������0000664�0000000�0000000�00000000350�12310413206�022614� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������this is a package to test lintian's handling of files in /etc. Also, there's a random mention of /usr/doc here to prompt a warning. But /usr/documentation doesn't. -- Russ Allbery <rra@debian.org>, Mon, 18 Feb 2008 16:40:55 -0800 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/description-general/��������������������������������������������������0000775�0000000�0000000�00000000000�12077065715�017031� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/description-general/tags����������������������������������������������0000664�0000000�0000000�00000003041�12077065715�017710� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: description-general-2: description-contains-tabs E: description-general-3: description-synopsis-is-empty E: description-general-4: description-synopsis-is-duplicated E: description-general-empty: extended-description-is-empty E: description-general: description-contains-invalid-control-statement E: description-general: description-contains-tabs E: description-general: description-is-debmake-template E: description-general: description-starts-with-package-name I: description-general-3: using-first-person-in-description line 5: I I: description-general-4: capitalization-error-in-description debian Debian I: description-general: description-synopsis-might-not-be-phrased-properly W: description-general-2: description-starts-with-leading-spaces W: description-general-2: description-too-long W: description-general-2: possible-unindented-list-in-extended-description W: description-general-3: extended-description-line-too-long W: description-general-4: description-contains-homepage W: description-general-4: spelling-error-in-description mroe more W: description-general-syn-article: description-synopsis-starts-with-article W: description-general: description-contains-dh-make-perl-template W: description-general: description-contains-duplicated-word All all all W: description-general: description-contains-duplicated-word The the W: description-general: description-contains-duplicated-word matched matched matched W: description-general: description-contains-duplicated-word of of W: description-general: description-contains-duplicated-word these these �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/description-general/desc����������������������������������������������0000664�0000000�0000000�00000001461�12077065715�017674� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: description-general Sequence: 6000 Version: 1.0 Description: Tests of various description tags Test-For: capitalization-error-in-description description-contains-dh-make-perl-template description-contains-duplicated-word description-contains-homepage description-contains-invalid-control-statement description-contains-tabs description-is-debmake-template description-starts-with-leading-spaces description-starts-with-package-name description-synopsis-is-duplicated description-synopsis-is-empty description-synopsis-might-not-be-phrased-properly description-synopsis-starts-with-article description-too-long extended-description-is-empty extended-description-line-too-long possible-unindented-list-in-extended-description spelling-error-in-description using-first-person-in-description ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/description-general/debian/�������������������������������������������0000775�0000000�0000000�00000000000�12077065715�020253� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/description-general/debian/debian/������������������������������������0000775�0000000�0000000�00000000000�12310413206�021453� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/description-general/debian/debian/control.in��������������������������0000664�0000000�0000000�00000010206�12310413206�023462� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$source} is a package which tests lintian's description checks. missing The the synopsis should not start with the package's name. Moreover, the long description should not contain tabs. .control statements are not allowed as well. . All all all of of these these should be matched matched matched . This description was automagically extracted from the module by dh-make-perl . No, not really... (dummy) Package: {$source}-2 Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: Don't use tabs in the synopsis and restrict yourself to less than 80 characters, otherwise Lintian will complain Oh, and don't start the long description with spaces. Now here comes a list: - which is - unfortunately - not correctly indented. (dummy) Package: {$source}-3 Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: There should really be a synopsis. The line in an extended description should be less than 80 characters, otherwise you'll get a Lintian warning. . And the old man said "he he is the one!" "No, I am am not", he replied (dummy) Package: {$source}-4 Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: some Lintian test package some Lintian test package . Some mroe stuff about this debian test package. (dummy) . Homepage: <http://lintian.debian.org/> Package: {$source}-ends-etc Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: This description ends, etc. This is another real Lintian bug which has been discovered with this testset. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: {$source}-dummy Section: oldlibs Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: test package (transitional package) Transitional packages can have short long descriptions. Package: {$source}-empty Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: test package with empty extended description (dummy) Package: {$source}-utf8-long Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: test package with UTF-8 description (“héh锓héh锓héh锓héhé”) Not really too long: “héh锓héh锓héh锓héh锓héh锓héhé” . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: {$source}-not-dup Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: test package with duplicated words that aren't Lossless JPEG is defined in ITU-T T.81, ISO/IEC IS 10918-1. Contain the strings " link to ", " -> ", or ": ". This is train A, a particularly fast train. . "hallo" or "evening" or "farewell" should not trigger a duplicate "or or" warning. Also "or" "or" does not trigger the warning either. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: {$source}-syn-article Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: the synopsis starts with an article A good synopsis should start not start with "a", "an" and "the" according to devref 6.2.2. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/runtests-options/�����������������������������������������������������0000775�0000000�0000000�00000000000�12077065715�016453� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/runtests-options/tags�������������������������������������������������0000664�0000000�0000000�00000000074�12077065715�017335� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: runtests-options source: invalid-standards-version 1.2.3 ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/runtests-options/desc�������������������������������������������������0000664�0000000�0000000�00000000342�12077065715�017313� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: runtests-options Sequence: 0700 Version: 1.0 Description: Test a bad package but use -C to only catch some tags Test-For: invalid-standards-version Test-Against: new-essential-package Options: -C standards-version ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/runtests-options/debian/����������������������������������������������0000775�0000000�0000000�00000000000�12077065715�017675� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/runtests-options/debian/debian/���������������������������������������0000775�0000000�0000000�00000000000�12310413206�021075� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/runtests-options/debian/debian/control.in�����������������������������0000664�0000000�0000000�00000000727�12310413206�023113� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: 1.2.3 Build-Depends: debhelper (>= 7) Package: {$source} Essential: yes Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. �����������������������������������������lintian-2.5.22ubuntu1/t/tests/md5sums-missing/������������������������������������������������������0000775�0000000�0000000�00000000000�12077065715�016137� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/md5sums-missing/tags��������������������������������������������������0000664�0000000�0000000�00000000054�12077065715�017017� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������I: md5sums-missing: no-md5sums-control-file ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/md5sums-missing/desc��������������������������������������������������0000664�0000000�0000000�00000000203�12077065715�016773� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: md5sums-missing Sequence: 6000 Version: 1.0 Description: Test of missing md5sums file Test-For: no-md5sums-control-file ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/md5sums-missing/debian/�����������������������������������������������0000775�0000000�0000000�00000000000�12077065715�017361� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/md5sums-missing/debian/debian/����������������������������������������0000775�0000000�0000000�00000000000�12077065715�020603� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/md5sums-missing/debian/debian/rules�����������������������������������0000664�0000000�0000000�00000000171�12077065715�021657� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/make -f FIND ?= find %: dh $@ override_dh_builddeb: $(FIND) debian/ -name 'md5sums' -delete dh_builddeb �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-maintainer-general/�������������������������������������������0000775�0000000�0000000�00000000000�12310413206�020300� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-maintainer-general/tags���������������������������������������0000664�0000000�0000000�00000007177�12310413206�021175� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: scripts-maintainer-general: install-info-used-in-maintainer-script postinst:105 E: scripts-maintainer-general: maintainer-script-modifies-inetd-conf postinst:67 E: scripts-maintainer-general: maintainer-script-modifies-inetd-conf postinst:68 E: scripts-maintainer-general: maintainer-script-removes-device-files postinst:141 '/dev/null' E: scripts-maintainer-general: maintainer-script-should-not-modify-ld-so-conf postinst:108 E: scripts-maintainer-general: maintainer-script-should-not-modify-ld-so-conf postinst:110 E: scripts-maintainer-general: maintainer-script-should-not-modify-netbase-managed-file postinst:59 '/etc/services' E: scripts-maintainer-general: maintainer-script-should-not-modify-netbase-managed-file postinst:60 '/etc/protocols' E: scripts-maintainer-general: maintainer-script-should-not-modify-netbase-managed-file postinst:61 '/etc/rpc' E: scripts-maintainer-general: maintainer-script-should-not-use-adduser-system-without-home postinst:148 E: scripts-maintainer-general: maintainer-script-should-not-use-adduser-system-without-home postinst:149 E: scripts-maintainer-general: maintainer-script-should-not-use-dpkg-status-directly postinst:56 E: scripts-maintainer-general: maintainer-script-should-not-use-install-sgmlcatalog postinst:74 E: scripts-maintainer-general: maintainer-script-should-not-use-install-sgmlcatalog postinst:75 E: scripts-maintainer-general: maintainer-shell-script-fails-syntax-check prerm E: scripts-maintainer-general: mknod-in-maintainer-script postinst:125 E: scripts-maintainer-general: read-in-maintainer-script postinst:10 E: scripts-maintainer-general: suidregister-used-in-maintainer-script postinst:101 W: scripts-maintainer-general: command-with-path-in-maintainer-script postinst:117 /usr/bin/foo W: scripts-maintainer-general: command-with-path-in-maintainer-script postinst:118 /usr/bin/foo W: scripts-maintainer-general: command-with-path-in-maintainer-script postinst:153 /usr/bin/gconftool-2 W: scripts-maintainer-general: command-with-path-in-maintainer-script postinst:91 /usr/bin/baz W: scripts-maintainer-general: maintainer-script-has-unexpanded-debhelper-token postinst W: scripts-maintainer-general: maintainer-script-ignores-errors postrm W: scripts-maintainer-general: maintainer-script-needs-depends-on-adduser postinst W: scripts-maintainer-general: maintainer-script-needs-depends-on-gconf2 postinst W: scripts-maintainer-general: maintainer-script-needs-depends-on-ucf postinst W: scripts-maintainer-general: maintainer-script-needs-depends-on-xml-core postinst W: scripts-maintainer-general: maintainer-script-should-not-hide-init-failure postinst:31 W: scripts-maintainer-general: maintainer-script-should-not-use-deprecated-chown-usage postinst:14 'chown root.root' W: scripts-maintainer-general: maintainer-script-should-not-use-deprecated-chown-usage postinst:84 'chown -R root.root' W: scripts-maintainer-general: maintainer-script-should-not-use-fc-cache postinst:95 W: scripts-maintainer-general: maintainer-script-should-not-use-gconftool postinst:153 W: scripts-maintainer-general: maintainer-script-should-not-use-gconftool postinst:44 W: scripts-maintainer-general: maintainer-script-should-not-use-start-stop-daemon postinst:138 W: scripts-maintainer-general: maintainer-script-should-not-use-start-stop-daemon postinst:78 W: scripts-maintainer-general: maintainer-script-should-not-use-update-alternatives-remove postrm:7 W: scripts-maintainer-general: maintainer-script-should-not-use-update-alternatives-set postinst:129 W: scripts-maintainer-general: possibly-insecure-handling-of-tmp-files-in-maintainer-script postinst:26 X: scripts-maintainer-general: maintainer-script-should-not-use-service postinst:156 �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-maintainer-general/desc���������������������������������������0000664�0000000�0000000�00000002755�12310413206�021152� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: scripts-maintainer-general Sequence: 6000 Type: native Version: 1.0 Profile: ubuntu/main Distribution: precise Description: Check general problems in maintainer scripts Test-For: command-with-path-in-maintainer-script install-info-used-in-maintainer-script maintainer-script-has-unexpanded-debhelper-token maintainer-script-ignores-errors maintainer-script-modifies-inetd-conf maintainer-script-needs-depends-on-adduser maintainer-script-needs-depends-on-gconf2 maintainer-script-needs-depends-on-ucf maintainer-script-needs-depends-on-xml-core maintainer-script-removes-device-files maintainer-shell-script-fails-syntax-check maintainer-script-should-not-hide-init-failure maintainer-script-should-not-use-adduser-system-without-home maintainer-script-should-not-use-deprecated-chown-usage maintainer-script-should-not-use-dpkg-status-directly maintainer-script-should-not-use-fc-cache maintainer-script-should-not-use-gconftool maintainer-script-should-not-use-install-sgmlcatalog maintainer-script-should-not-modify-ld-so-conf maintainer-script-should-not-modify-netbase-managed-file maintainer-script-should-not-use-start-stop-daemon maintainer-script-should-not-use-service maintainer-script-should-not-use-update-alternatives-remove maintainer-script-should-not-use-update-alternatives-set mknod-in-maintainer-script possibly-insecure-handling-of-tmp-files-in-maintainer-script read-in-maintainer-script suidregister-used-in-maintainer-script References: Debian Bug#532984 �������������������lintian-2.5.22ubuntu1/t/tests/scripts-maintainer-general/debian/������������������������������������0000775�0000000�0000000�00000000000�12077065715�021544� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-maintainer-general/debian/debian/�����������������������������0000775�0000000�0000000�00000000000�12310413206�022744� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-maintainer-general/debian/debian/rules������������������������0000664�0000000�0000000�00000000215�12310413146�024022� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/make -f %: dh $@ override_dh_installdeb: dh_installdeb echo "#DEBHELPER#" >> debian/$(shell dh_listpackages)/DEBIAN/postinst �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-maintainer-general/debian/debian/postinst���������������������0000775�0000000�0000000�00000010757�12310413206�024567� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # This file contains a pile of random junk in maintainer scripts that we # should be checking for in checks/scripts. Don't put bashisms in this file, # though; those should go into scripts-bashisms. set -e print "Hit enter to continue" read foo echo Please use update-rc.d or invoke-rc.d to set up blah blah. chown root.root /usr/share/doc/maintainer-scripts/changelog chown root:root /usr/share/doc/maintainer-scripts/changelog # valid FOO=/tmp FOO=/var/tmp : ${FOO:=/tmp} FOO=`mktemp /tmp/scripts.XXXXXX` rm "$FOO" FOO=`tempfile -n/tmp/scripts.tmp` mkdir /var/tmp/scripts # invalid echo foo >>/tmp/scripts.tmp rm /tmp/scripts.tmp rmdir /var/tmp/scripts # invalid, maintainer-script-hides-init-failure invoke-rc.d foo start || exit 0 # The right way to invoke an rc script if which invoke-rc.d >/dev/null 2>&1; then invoke-rc.d package start else /etc/init.d/package start fi # Example ucf invocation. ucf /usr/share/foo/configuration /etc/foo.conf # Calling gconftool directly. gconftool-2 --makefile-install-rule foo.schema # Calling gconf-schemas with no dependency. gconf-schemas --register foo.schema # Calling update-xmlcatalog with no dependency. update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \ --package maintainer-scripts --root # Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old # recipe from the dpkg wiki that should be replaced with dpkg-query. sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \ /var/lib/dpkg/status # Don't modify these files. echo 'broken 6714/tcp' >> /etc/services cp /nonexistent /etc/protocols mv /usr/share/doc/rpc /etc/rpc # But this is okay. cp /etc/protocols /etc/protocols.new # This is also wrong. echo 'broken' > /etc/inetd.conf cp /etc/inetd.conf.new /etc/inetd.conf # But this is fine. cp /etc/inetd.conf /srv/chroot/etc/inetd.conf # Deprecated and not allowed except the second one. install-sgmlcatalog --install package install-sgmlcatalog --remove package # Calling start-stop-daemon directly in an init script. start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo # But stopping it is fine -- we may be working around something else. start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo # Deprecated chown use with flags. chown -R root.root /usr/share/doc/maintainer-scripts # The first should not trigger an error about a command with a path, but the # second should. case $mainscript in /usr/bin/foo) foobarbaz;; esac /usr/bin/baz; echo bar # fc-cache shouldn't be called directly, but make sure we don't see it in a # heredoc. fc-cache cat <<EOF fc-cache EOF # Obsolete suidregister program. suidregister /usr/bin/foo # install-info is now handled through triggers. install-info --quiet --section Development Development \ /usr/share/info/foobar.info # Packages don't get to modify /etc/ld.so.conf echo '/usr/local/lib' >> /etc/ld.so.conf ( cat /etc/ld.so.conf ; echo '/usr/local/lib' ) > /etc/ld.so.conf.new mv /etc/ld.so.conf.new /etc/ld.so.conf # Further tests for commands with paths in maintainer scripts. The following # should not trigger a tag (Bug#536397). chmod `dpkg-statoverride --list /usr/sbin/apache2 | cut -f 3` /usr/sbin/apache2 # These, however, should. true `basename "$0"` `/usr/bin/foo bar` true `/usr/bin/foo "$0"` # This line should not trigger a warning about no dependency on ucf because of # the || true. (Bug#541372) ucf -p /etc/sensors3.conf || true if false ; then mknod some thing fi # Calling update alternative --set see #643602 update-alternatives --set editor /usr/bin/nano # false positive start-stop-daemon--stop --quiet --name foo --startas /usr/bin/foo # false positive start-stop-daemon --quiet --stop --name foo --startas /usr/bin/foo # false negative start-stop-daemon --quiet --start --name foo --startas /usr/bin/foo # remove device file rm /dev/null # false positive rm /dev/shm/test rm /dev/.hiddenfile # adduser system adduser --system foo adduser --system foo2 --home /home/foo2 adduser --system bar --home /var/lib/bar # other test case for gconftool /usr/bin/gconftool-2 --makefile-install-rule foo.schema # service service apache2 start # adduser through variable DEVNULL=/dev/null adduser --system bar1 --home $DEVNULL adduser --system bar2 --home ${DEVNULL} # this is a false positive due to quoting adduser --system bar2 --home "${DEVNULL}" adduser --system --ingroup smmta --home "/var/lib/sendmail" \ --disabled-password \ --quiet --gecos 'Mail Transfer Agent' smmta; #DEBHELPER# �����������������lintian-2.5.22ubuntu1/t/tests/scripts-maintainer-general/debian/debian/postrm�����������������������0000664�0000000�0000000�00000000160�12310413206�024210� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # we do not set -e echo "ok" > /dev/null # not allowed update-alternatives --remove foo #DEBHELPER#����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-maintainer-general/debian/debian/prerm������������������������0000664�0000000�0000000�00000000232�12077065715�024033� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh set -e # This script should fail a syntax check if [ "$1" = configure ] then # oh look - I forgot a ; echo "Hallo world" fi #DEBHELPER# ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/po-debconf-general/���������������������������������������������������0000775�0000000�0000000�00000000000�12310413146�016503� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/po-debconf-general/tags�����������������������������������������������0000664�0000000�0000000�00000001351�12310413146�017364� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: po-debconf-general source: untranslatable-debconf-templates templates: 4 E: po-debconf-general: no-debconf-config I: po-debconf-general source: no-complete-debconf-translation I: po-debconf-general: unused-debconf-template po-debconf-general/test I: po-debconf-general: unused-debconf-template po-debconf-general/test-2 W: po-debconf-general source: invalid-po-file debian/po/English.po W: po-debconf-general source: invalid-po-file debian/po/de.po W: po-debconf-general source: misnamed-po-file debian/po/English.po W: po-debconf-general source: missing-file-from-potfiles-in some-other-file W: po-debconf-general source: stray-translated-debconf-templates templates.en_US W: po-debconf-general source: translated-default-field templates: 3 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/po-debconf-general/desc�����������������������������������������������0000664�0000000�0000000�00000000546�12310413146�017351� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: po-debconf-general Sequence: 6000 Version: 1.0 Description: General tests for debconf translations Test-For: invalid-po-file misnamed-po-file missing-file-from-potfiles-in no-complete-debconf-translation no-debconf-config stray-translated-debconf-templates translated-default-field untranslatable-debconf-templates unused-debconf-template ����������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/po-debconf-general/debian/��������������������������������������������0000775�0000000�0000000�00000000000�12077065715�017744� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/po-debconf-general/debian/debian/�������������������������������������0000775�0000000�0000000�00000000000�12310413146�021147� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/po-debconf-general/debian/debian/templates����������������������������0000664�0000000�0000000�00000000434�12310413146�023071� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Template: po-debconf-general/test Type: string _Default: foo Description: This is a string question used for testing: Template: po-debconf-general/test-2 Type: string Default: bar _Description: This is a second string question: This one ensures no 100% translation of the template. ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/po-debconf-general/debian/debian/po/����������������������������������0000775�0000000�0000000�00000000000�12077065715�021604� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/po-debconf-general/debian/debian/po/de.po�����������������������������0000664�0000000�0000000�00000000114�12077065715�022530� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������This is just some random other file that isn't a German translation at all. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/po-debconf-general/debian/debian/po/English.po������������������������0000664�0000000�0000000�00000000051�12077065715�023531� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Not a PO file or an English translation. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/po-debconf-general/debian/debian/po/templates.pot���������������������0000664�0000000�0000000�00000001216�12077065715�024326� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������msgid "" msgstr "" "Project-Id-Version: Lintian 2.4.3\n" "PO-Revision-Date: +2010-07-25 17:07 -0700\n" "Last-Translator: Russ Allbery <rra@debian.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #. Type: string #. Default #: ../templates:1001 msgid "foo" msgstr "" #. Type: string #. Description #: ../templates:1001 msgid "This is a string question used for testing:" msgstr "" #. Type: string #. Description #: ../templates:1001 msgid "This is a second string question:" #. Type: string #. Description #: ../templates:1001 msgid "This one ensures no 100% translation of the template." ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/po-debconf-general/debian/debian/po/POTFILES.in�����������������������0000664�0000000�0000000�00000000142�12077065715�023356� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# This is a comment, which should be ignored. [type: gettext/rfc822deb] templates some-other-file ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/po-debconf-general/debian/debian/templates.en_US����������������������0000664�0000000�0000000�00000000217�12310413146�024100� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Template: po-debconf-general/test Type: string Default: foo _Description: This is an English translation that shouldn't be in this directory. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/systemd-general/������������������������������������������������������0000775�0000000�0000000�00000000000�12310413146�016157� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/systemd-general/tags��������������������������������������������������0000664�0000000�0000000�00000002130�12310413146�017034� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: systemd-general: init-script-is-not-a-file etc/init.d/fifo-pipe-as-init E: systemd-general: service-file-is-not-a-file etc/systemd/system/fifo-pipe-as-init.service E: systemd-general: service-file-is-not-a-file etc/systemd/system/fifo-pipe-as-init.service E: systemd-general: special-file etc/init.d/fifo-pipe-as-init 0644 E: systemd-general: special-file etc/systemd/system/fifo-pipe-as-init.service 0644 E: systemd-general: systemd-no-service-for-init-script systemd-general E: systemd-general: systemd-service-file-outside-lib etc/systemd/system/fifo-pipe-as-init.service E: systemd-general: systemd-service-file-outside-lib etc/systemd/system/test.service E: systemd-general: systemd-tmpfiles.d-outside-usr-lib etc/tmpfiles.d/test.conf W: systemd-general: init.d-script-does-not-source-init-functions etc/init.d/systemd-general W: systemd-general: maintainer-script-calls-systemctl postrm:6 W: systemd-general: script-in-etc-init.d-not-registered-via-update-rc.d etc/init.d/fifo-pipe-as-init W: systemd-general: systemd-service-file-refers-to-obsolete-target etc/systemd/system/test.service syslog.target ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/systemd-general/desc��������������������������������������������������0000664�0000000�0000000�00000000605�12310413146�017021� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: systemd-general Sequence: 6000 Version: 1.0 Description: General systemd tests Test-For: init-script-is-not-a-file init.d-script-does-not-source-init-functions maintainer-script-calls-systemctl service-file-is-not-a-file systemd-service-file-outside-lib systemd-tmpfiles.d-outside-usr-lib systemd-service-file-refers-to-obsolete-target systemd-no-service-for-init-script ���������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/systemd-general/debian/�����������������������������������������������0000775�0000000�0000000�00000000000�12310413146�017401� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/systemd-general/debian/debian/����������������������������������������0000775�0000000�0000000�00000000000�12310413146�020623� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/systemd-general/debian/debian/install���������������������������������0000664�0000000�0000000�00000000111�12310413146�022205� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������debian/test.service etc/systemd/system/ debian/test.conf etc/tmpfiles.d/ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/systemd-general/debian/debian/test.service����������������������������0000664�0000000�0000000�00000000165�12310413146�023166� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������[Unit] After=network.target \ syslog.target [Service] ExecStart=/usr/bin/test [Install] WantedBy=multi-user.target �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/systemd-general/debian/debian/init������������������������������������0000664�0000000�0000000�00000010257�12310413146�021516� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh ### BEGIN INIT INFO # Provides: systemd-general # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Example initscript # Description: This file should be used to construct scripts to be # placed in /etc/init.d. ### END INIT INFO # Author: Foo Bar <foobar@baz.org> # # Please remove the "Author" lines above and replace them # with your own name if you copy and modify this script. # Do NOT "set -e" # PATH should only include /usr/* if it runs after the mountnfs.sh script PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC="Description of the service" NAME=daemonexecutablename DAEMON=/usr/sbin/$NAME DAEMON_ARGS="--options args" PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME # Exit if the package is not installed [ -x "$DAEMON" ] || exit 0 # Read configuration variable file if it is present [ -r /etc/default/$NAME ] && . /etc/default/$NAME # Load the VERBOSE setting and other rcS variables . /lib/init/vars.sh # Define LSB log_* functions. # Depend on lsb-base (>= 3.2-14) to ensure that this file is present # and status_of_proc is working. # # Function that starts the daemon/service # do_start() { # Return # 0 if daemon has been started # 1 if daemon was already running # 2 if daemon could not be started start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ || return 1 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ $DAEMON_ARGS \ || return 2 # Add code here, if necessary, that waits for the process to be ready # to handle requests from services started subsequently which depend # on this one. As a last resort, sleep for some time. } # # Function that stops the daemon/service # do_stop() { # Return # 0 if daemon has been stopped # 1 if daemon was already stopped # 2 if daemon could not be stopped # other if a failure occurred start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 # Wait for children to finish too if this is a daemon that forks # and if the daemon is only ever run from this initscript. # If the above conditions are not satisfied then add some other code # that waits for the process to drop all resources that could be # needed by services started subsequently. A last resort is to # sleep for some time. start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON [ "$?" = 2 ] && return 2 # Many daemons don't delete their pidfiles when they exit. rm -f $PIDFILE return "$RETVAL" } # # Function that sends a SIGHUP to the daemon/service # do_reload() { # # If the daemon can reload its configuration without # restarting (for example, when it is sent a SIGHUP), # then implement that here. # start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME return 0 } case "$1" in start) [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" do_start case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" do_stop case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; status) status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? ;; #reload|force-reload) # # If do_reload() is not implemented then leave this commented out # and leave 'force-reload' as an alias for 'restart'. # #log_daemon_msg "Reloading $DESC" "$NAME" #do_reload #log_end_msg $? #;; restart|force-reload) # # If the "reload" option is implemented then remove the # 'force-reload' alias # log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in 0|1) do_start case "$?" in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running *) log_end_msg 1 ;; # Failed to start esac ;; *) # Failed to stop log_end_msg 1 ;; esac ;; *) #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 exit 3 ;; esac : �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/systemd-general/debian/debian/rules�����������������������������������0000664�0000000�0000000�00000000457�12310413146�021706� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/make -f ETC_DIR=debian/$(shell dh_listpackages)/etc/ INITD_DIR=$(ETC_DIR)/init.d SYSD_DIR=$(ETC_DIR)/systemd/system %: dh $@ override_dh_install: dh_install install -m 0755 -d $(INITD_DIR) $(SYSD_DIR) mkfifo $(INITD_DIR)/fifo-pipe-as-init mkfifo $(SYSD_DIR)/fifo-pipe-as-init.service �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/systemd-general/debian/debian/postrm����������������������������������0000664�0000000�0000000�00000000171�12310413146�022071� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh set -e if [ "$1" = "purge" ] && which systemctl >/dev/null 2>&1; then systemctl || true fi #DEBHELPER# �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/systemd-general/debian/debian/test.conf�������������������������������0000664�0000000�0000000�00000000107�12310413146�022447� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# See tmpfiles.d(5) for details d /var/run/bacula 2775 bacula bacula - ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/control-file-library-dev/���������������������������������������������0000775�0000000�0000000�00000000000�12077065714�017705� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/control-file-library-dev/tags�����������������������������������������0000664�0000000�0000000�00000000576�12077065714�020576� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: control-file-library-dev source: weak-library-dev-dependency libcontrol-file-all-dev on libcontrol-file-baz9-4 (>= ${source:Version}) E: control-file-library-dev source: weak-library-dev-dependency libcontrol-file-dev on libcontrol-file-bar7ldbl E: control-file-library-dev source: weak-library-dev-dependency libcontrol-file-dev on libcontrol-file-baz9-4 (>= ${binary:Version}) ����������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/control-file-library-dev/desc�����������������������������������������0000664�0000000�0000000�00000000270�12077065714�020545� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: control-file-library-dev Sequence: 6000 Version: 1.0 Architecture: any Description: Check control file handling of library dev packages Test-For: weak-library-dev-dependency ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/control-file-library-dev/debian/��������������������������������������0000775�0000000�0000000�00000000000�12077065714�021127� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/control-file-library-dev/debian/some-file�����������������������������0000664�0000000�0000000�00000000057�12077065714�022734� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Hi, I could totally be architecture dependent. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/control-file-library-dev/debian/debian/�������������������������������0000775�0000000�0000000�00000000000�12310413206�022330� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/control-file-library-dev/debian/debian/control.in���������������������0000664�0000000�0000000�00000010070�12310413206�024336� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: libcontrol-file-foo1 Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (shared lib 1) First shared library. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: libcontrol-file-bar7ldbl Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (shared lib 2) Second shared library. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: libcontrol-file-dev Section: libdevel Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, libcontrol-file-foo1 (= $\{binary:Version\}), libcontrol-file-bar7ldbl, libcontrol-file-baz9-4 (>= $\{binary:Version\}), libfoo4, libcontrol-file-doc, libcontrol-file4-dev Description: {$description} (dev package) Dev package. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: libcontrol-file-baz9-4 Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (shared lib 3) Third shared library. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: libcontrol-file-doc Section: doc Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (doc package) Doc package. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: libcontrol-file4-dev Section: libdevel Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, libcontrol-file-foo1 (<= $\{source:Upstream-Version\}-99) | libcontrol-file-baz9-4 (<= $\{source:Upstream-Version\}-99), libcontrol-file-foo1 (>= $\{binary:Version\}) | libcontrol-file-baz9-4 (>= $\{binary:Version\}) Description: {$description} (dev package with version) Dev package containing a number. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: libcontrol-file-all-dev Section: libdevel Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, libcontrol-file-doc, libcontrol-file-foo1 (>= $\{source:Upstream-Version\}), libcontrol-file-foo1 (<= $\{source:Version\}.1~), libcontrol-file-baz9-4 (>= $\{source:Version\}) Description: {$description} (arch: all dev package) Architecture-independent development package. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: libcontrol-baz-dev Section: libdevel Architecture: {$architecture} Depends: libcontrol-file-baz9-4 (= $\{binary:Version\}), $\{misc:Depends\}, $\{shlibs:Depends\} Description: {$description} (dev whitespace) Test proper parsing of leading whitespace in Depends . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/control-file-library-dev/debian/debian/rules��������������������������0000664�0000000�0000000�00000000235�12077065714�023426� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/make -f %: dh $@ override_dh_auto_install: set -e ; for P in $$(dh_listpackages -a) ; do \ dh_install -p$$P some-file usr/lib/$$P ; \ done �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/init.d-general/�������������������������������������������������������0000775�0000000�0000000�00000000000�12310413146�015654� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/init.d-general/tags���������������������������������������������������0000664�0000000�0000000�00000002047�12310413146�016540� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: init.d-general-bugs: duplicate-updaterc.d-calls-in-postinst init.d-general-bugs E: init.d-general-bugs: init.d-script-does-not-implement-required-option etc/init.d/init.d-general-bugs force-reload E: init.d-general-bugs: init.d-script-does-not-implement-required-option etc/init.d/init.d-general-bugs restart E: init.d-general-bugs: init.d-script-does-not-implement-required-option etc/init.d/init.d-general-bugs start E: init.d-general-bugs: init.d-script-does-not-implement-required-option etc/init.d/init.d-general-bugs stop E: init.d-general-sourcing-without-test: init.d-script-sourcing-without-test etc/init.d/init.d-general-sourcing-without-test:17 /etc/default/rcS I: init.d-general-bugs: init.d-script-does-not-implement-optional-option etc/init.d/init.d-general-bugs status W: init.d-general-interpreter-in-usr-dir: init.d-script-does-not-source-init-functions etc/init.d/init.d-general-interpreter-in-usr-dir W: init.d-general-interpreter-in-usr-dir: init.d-script-uses-usr-interpreter etc/init.d/init.d-general-interpreter-in-usr-dir /usr/bin/perl �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/init.d-general/desc���������������������������������������������������0000664�0000000�0000000�00000000510�12310413146�016511� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: init.d-general Sequence: 6000 Version: 1.0 Description: Test tags related to the init.d checks Test-For: duplicate-updaterc.d-calls-in-postinst init.d-script-does-not-implement-optional-option init.d-script-does-not-implement-required-option init.d-script-sourcing-without-test init.d-script-uses-usr-interpreter ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/init.d-general/debian/������������������������������������������������0000775�0000000�0000000�00000000000�12077065715�017115� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/init.d-general/debian/debian/�����������������������������������������0000775�0000000�0000000�00000000000�12310413206�020315� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/init.d-general/debian/debian/init.d-general-bugs.init�����������������0000664�0000000�0000000�00000000516�12310413146�024745� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh set -e ### BEGIN INIT INFO # Provides: init.d-general-bugs # Required-Start: # Required-Stop: # Default-Start: # Default-Stop: # Short-Description: Do nothing at all # Description: The short description pretty much covers it. ### END INIT INFO # start stop force-reload restart status . /lib/lsb/init-functions ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/init.d-general/debian/debian/control.in�������������������������������0000664�0000000�0000000�00000003327�12310413206�022332� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: {$source}-bugs Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} -- bugs Test some simple bugs in the check . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: {$source}-interpreter-in-usr-dir Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} -- bad script interpreter Test a check for a /usr dir interpreter used in an init script . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: {$source}-sourcing-without-test Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} -- sourcing without test Test a check for . /etc/default/foo without checking the existance of the file beforehand. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/init.d-general/debian/debian/init.d-general-bugs.postinst�������������0000664�0000000�0000000�00000000243�12310413146�025662� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh set -e #DEBHELPER# if [ "$1" = "configure" ] ; then # duplicate call as debhelper will add one for us update-rc.d init.d-general-bugs word fi �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000644�0000000�0000000�00000000146�00000000000�011604� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/init.d-general/debian/debian/init.d-general-interpreter-in-usr-dir.init���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/init.d-general/debian/debian/init.d-general-interpreter-in-usr-dir.ini0000664�0000000�0000000�00000000640�12310413146�030151� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl -w ### BEGIN INIT INFO # Provides: init.d-general-interpreter-in-usr-dir # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start daemon at boot time # Description: Enable service provided by daemon. ### END INIT INFO printf "start status stop reload restart force-reload\n"; ������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/init.d-general/debian/debian/init.d-general.init����������������������0000664�0000000�0000000�00000000572�12310413146�024011� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh set -e . /lib/lsb/init-functions ### BEGIN INIT INFO # Provides: init.d-general # Required-Start: # Required-Stop: # Default-Start: # Default-Stop: # Short-Description: Do nothing at all # Description: The short description pretty much covers it. ### END INIT INFO case "$1" in start|stop|force-reload|restart|status|*) echo hello world! ;; esac ��������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/init.d-general/debian/debian/init.d-general-sourcing-without-test.init0000664�0000000�0000000�00000002122�12310413146�030307� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh -e ### BEGIN INIT INFO # Provides: init.d-general-sourcing-without-test # Required-Start: $remote_fs # Required-Stop: $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start daemon at boot time # Description: Enable service provided by daemon. ### END INIT INFO echo start stop reload restart force-reload status . /lib/lsb/init-functions . /etc/default/rcS [ ! -f /etc/default/foo ] || . /etc/default/foo [ -f /etc/default/bar ] && . /etc/default/bar if [ -e /etc/default/locale ]; then . /etc/default/locale fi if [ -f /etc/default/moo ]; then . /etc/default/moo fi if [ -r /etc/default/tmpfs ]; then . /etc/default/tmpfs fi PACKAGE=moo [ -f /etc/default/$PACKAGE ] && . /etc/default/$PACKAGE if [ -f /etc/default/$PACKAGE ]; then . /etc/default/$PACKAGE fi if test -f /etc/default/$PACKAGE; then . /etc/default/$PACKAGE fi # This is not sourcing without a test and shouldn't produce an error. if [ ! -f /etc/default/$PACKAGE ] ; then # do something else : else . /etc/default/$PACKAGE fi ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/menu-format-desktop-mimetype/�����������������������������������������0000775�0000000�0000000�00000000000�12077065715�020623� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/menu-format-desktop-mimetype/tags�������������������������������������0000664�0000000�0000000�00000000140�12077065715�021477� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������W: menu-format-desktop-mimetype source: maintainer-script-lacks-debhelper-token debian/postinst ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/menu-format-desktop-mimetype/desc�������������������������������������0000664�0000000�0000000�00000000303�12077065715�021460� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: menu-format-desktop-mimetype Sequence: 6000 Version: 1.0 Section: doc Description: Check update-desktop-database and MimeType *.desktop References: Debian Bug#488832, Debian Bug#525133 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/menu-format-desktop-mimetype/debian/����������������������������������0000775�0000000�0000000�00000000000�12310413146�022026� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/menu-format-desktop-mimetype/debian/foo.desktop�����������������������0000664�0000000�0000000�00000000255�12310413146�024206� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������[Desktop Entry] Name=GNU Foo GenericName=Foo Comment=A foo test entry for Lintian Type=Application Categories=Game;BoardGame;GTK; MimeType=application/foo; Keywords=Lintian ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/menu-format-desktop-mimetype/debian/debian/���������������������������0000775�0000000�0000000�00000000000�12077065715�023267� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/menu-format-desktop-mimetype/debian/debian/install��������������������0000664�0000000�0000000�00000000043�12077065715�024655� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������foo.desktop usr/share/applications ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/menu-format-desktop-mimetype/debian/debian/postinst�������������������0000664�0000000�0000000�00000000351�12077065715�025074� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # # This script is here without a debhelper token so that dh_desktop won't # add the update-desktop-database call whose absence we're checking for. # Also check that the above comment doesn't fool us. set -e run something ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-multiple-x-deps/�����������������������������������������������0000775�0000000�0000000�00000000000�12077065715�017370� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-multiple-x-deps/tags�������������������������������������������0000664�0000000�0000000�00000001042�12077065715�020246� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: fields-multiple-x-deps: package-depends-on-multiple-libpng-versions libpng2 libpng3 E: fields-multiple-x-deps: package-depends-on-multiple-libstdc-versions libstdc++2.10 libstdc++2.10-glibc2.2 libstdc++3.0 E: fields-multiple-x-deps: package-depends-on-multiple-tcl-versions tcl8.0 tcl8.2 E: fields-multiple-x-deps: package-depends-on-multiple-tclx-versions tclx76 tclx8.0.4 tclx8.2 E: fields-multiple-x-deps: package-depends-on-multiple-tk-versions tk8.2 tk8.3 E: fields-multiple-x-deps: package-depends-on-multiple-tkx-versions tkx8.2 tkx8.3 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-multiple-x-deps/desc�������������������������������������������0000664�0000000�0000000�00000000575�12077065715�020240� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: fields-multiple-x-deps Sequence: 6000 Version: 1.0 Description: Tests for multiple depends on X Test-For: package-depends-on-multiple-libpng-versions package-depends-on-multiple-libstdc-versions package-depends-on-multiple-tcl-versions package-depends-on-multiple-tclx-versions package-depends-on-multiple-tk-versions package-depends-on-multiple-tkx-versions �����������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-multiple-x-deps/debian/����������������������������������������0000775�0000000�0000000�00000000000�12077065715�020612� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-multiple-x-deps/debian/debian/���������������������������������0000775�0000000�0000000�00000000000�12310413206�022012� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-multiple-x-deps/debian/debian/control.in�����������������������0000664�0000000�0000000�00000001275�12310413206�024027� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx76, tclx8.0.4, tclx8.2, libpng2, libpng3 Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-unused-cdbs/������������������������������������������������0000775�0000000�0000000�00000000000�12077065715�017237� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-unused-cdbs/tags��������������������������������������������0000664�0000000�0000000�00000000101�12077065715�020110� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������W: debhelper-unused-cdbs source: unused-build-dependency-on-cdbs ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-unused-cdbs/desc��������������������������������������������0000664�0000000�0000000�00000000231�12077065715�020074� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: debhelper-unused-cdbs Sequence: 6000 Version: 1.0 Description: Test for unused build-depends on cdbs Test-For: unused-build-dependency-on-cdbs �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-unused-cdbs/debian/�����������������������������������������0000775�0000000�0000000�00000000000�12077065715�020461� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-unused-cdbs/debian/debian/����������������������������������0000775�0000000�0000000�00000000000�12310413206�021661� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-unused-cdbs/debian/debian/control.in������������������������0000664�0000000�0000000�00000000773�12310413206�023700� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), cdbs Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. �����lintian-2.5.22ubuntu1/t/tests/distribution-ubuntu-native/�������������������������������������������0000775�0000000�0000000�00000000000�12077065715�020416� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/distribution-ubuntu-native/tags���������������������������������������0000664�0000000�0000000�00000000000�12077065715�021265� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/distribution-ubuntu-native/desc���������������������������������������0000664�0000000�0000000�00000000341�12077065715�021255� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: distribution-ubuntu-native Sequence: 2500 Version: 1.0 Description: Check *.changes distribution checking for Ubuntu Test-Against: bad-distribution-in-changes-file Profile: ubuntu/main References: Debian Bug#507740 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/distribution-ubuntu-native/debian/������������������������������������0000775�0000000�0000000�00000000000�12077065715�021640� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/distribution-ubuntu-native/debian/debian/�����������������������������0000775�0000000�0000000�00000000000�12310413206�023040� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/distribution-ubuntu-native/debian/debian/changelog.in�����������������0000664�0000000�0000000�00000000161�12310413206�025315� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������{$source} ({$version}) lucid; urgency=low * Lintian Test Suite. * Test: {$testname} -- {$author} {$date} ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/changelog-file-wrong-weekday/�����������������������������������������0000775�0000000�0000000�00000000000�12310413206�020476� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/changelog-file-wrong-weekday/tags�������������������������������������0000664�0000000�0000000�00000000135�12310413206�021356� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������W: changelog-file-wrong-weekday: debian-changelog-has-wrong-weekday 2013-10-31 is a Thursday �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/changelog-file-wrong-weekday/desc�������������������������������������0000664�0000000�0000000�00000000246�12310413206�021341� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: changelog-file-wrong-weekday Sequence: 6000 Version: 1.0 Description: Test for wrong weekday in changelog date Test-For: debian-changelog-has-wrong-weekday ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/changelog-file-wrong-weekday/debian/����������������������������������0000775�0000000�0000000�00000000000�12310413206�021720� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/changelog-file-wrong-weekday/debian/debian/���������������������������0000775�0000000�0000000�00000000000�12310413206�023142� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/changelog-file-wrong-weekday/debian/debian/changelog.in���������������0000664�0000000�0000000�00000000417�12310413206�025423� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������{$source} ({$version}) unstable; urgency=low * Lintian Test Suite. * Test: {$testname} * Suppress "should close ITP bug" messages. (Closes: #123456) * A bit of wishful thinking that the date below was a Friday. -- {$author} Fri, 31 Oct 2013 14:45:00 +0000 �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-bad-perm-owner/�������������������������������������������������0000775�0000000�0000000�00000000000�12310413145�016772� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-bad-perm-owner/tags���������������������������������������������0000664�0000000�0000000�00000002430�12310413145�017652� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: binary: bad-owner-for-doc-file usr/share/doc/binary/README daemon/daemon != root/root E: binary: bad-permissions-for-etc-cron.d-script etc/cron.d/script 0755 != 0644 E: binary: bad-permissions-for-etc-emacs-script etc/emacs.d/script 0755 != 0644 E: binary: executable-in-usr-share-doc usr/share/doc/binary/some-file 0755 E: binary: non-standard-file-permissions-for-etc-init.d-script etc/init.d/binary 0765 != 0755 W: binary: bad-permissions-for-ali-file usr/lib/some-where/sample.ali W: binary: executable-is-not-world-readable usr/bin/script-ro 0751 W: binary: executable-not-elf-or-script usr/share/doc/binary/some-file W: binary: non-standard-dir-perm usr/share/doc/binary/ 0744 != 0755 W: binary: non-standard-executable-perm etc/init.d/binary 0765 != 0755 W: binary: non-standard-executable-perm usr/bin/script-wexec 0775 != 0755 W: binary: non-standard-file-perm usr/share/doc/binary/read-only 0444 != 0644 W: binary: non-standard-setuid-executable-perm usr/bin/script-wuid 4744 W: binary: setgid-binary usr/bin/script-gid 2755 root/root W: binary: setuid-binary usr/bin/script-uid 4755 root/root W: binary: setuid-binary usr/bin/script-wuid 4744 root/root W: binary: setuid-gid-binary usr/bin/script-ugid 6755 root/root W: game: non-standard-game-executable-perm usr/games/script 0755 != 2755 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-bad-perm-owner/desc���������������������������������������������0000664�0000000�0000000�00000001063�12310413145�017633� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: files-bad-perm-owner Sequence: 6000 Version: 1.0 Description: General permissions and owner tests Test-For: bad-owner-for-doc-file bad-permissions-for-ali-file bad-permissions-for-etc-cron.d-script bad-permissions-for-etc-emacs-script executable-in-usr-share-doc executable-is-not-world-readable non-standard-dir-perm non-standard-executable-perm non-standard-file-perm non-standard-file-permissions-for-etc-init.d-script non-standard-game-executable-perm non-standard-setuid-executable-perm setgid-binary setuid-binary setuid-gid-binary �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-bad-perm-owner/debian/������������������������������������������0000775�0000000�0000000�00000000000�12077065715�020234� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-bad-perm-owner/debian/sample.ali��������������������������������0000664�0000000�0000000�00000000035�12077065715�022202� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������This is not a valid ali file ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-bad-perm-owner/debian/some-file���������������������������������0000664�0000000�0000000�00000000137�12077065715�022040� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������This is executable and should not be. :) - Unforuntately it triggers an extra tag... oh well. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-bad-perm-owner/debian/script������������������������������������0000775�0000000�0000000�00000000256�12077065715�021471� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh set -e echo "Aloha" exit 0 =head1 NAME script -- prints Aloha to stdout =head1 SYNOPSIS script =head1 DESCRIPTION Prints Aloha to stdout and that is it. ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-bad-perm-owner/debian/README������������������������������������0000664�0000000�0000000�00000000014�12077065715�021107� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Hallo World ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-bad-perm-owner/debian/read-only���������������������������������0000664�0000000�0000000�00000000024�12077065715�022045� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Fadango on the core ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-bad-perm-owner/debian/debian/�����������������������������������0000775�0000000�0000000�00000000000�12310413206�021434� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-bad-perm-owner/debian/debian/clean������������������������������0000664�0000000�0000000�00000000012�12077065715�022454� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������script*.1 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-bad-perm-owner/debian/debian/game.manpages����������������������0000664�0000000�0000000�00000000011�12077065715�024074� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������script.1 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-bad-perm-owner/debian/debian/binary.docs������������������������0000664�0000000�0000000�00000000033�12077065715�023610� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������read-only README some-file �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-bad-perm-owner/debian/debian/control.in�������������������������0000664�0000000�0000000�00000001461�12310413206�023446� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: binary Architecture: all Depends: $\{misc:Depends\}, Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: game Architecture: all Section: games Depends: $\{misc:Depends\} Description: {$description} - game This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . Game package. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-bad-perm-owner/debian/debian/binary.init������������������������0000664�0000000�0000000�00000000514�12310413144�023606� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh set -e ### BEGIN INIT INFO # Provides: binary # Required-Start: # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Useless # Description: Does nothing ### END INIT INFO . /lib/lsb/init-functions case "$1" in start|stop|force-reload|restart|status|*) echo hello world ;; esac ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-bad-perm-owner/debian/debian/rules������������������������������0000664�0000000�0000000�00000002052�12310413145�022512� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/make -f GPKG:=game PKG:=binary %: dh $@ override_dh_auto_build: for N in uid gid ugid wexec wuid ro; do \ sed s/script/script-$$N/ < script > script-$$N ; \ pod2man --section 1 script-$$N > script-$$N.1 ; \ done pod2man --section 1 script > script.1 override_dh_fixperms: dh_fixperms # game chown 'root:games' debian/$(GPKG)/usr/games/script # binary chown "daemon:daemon" debian/$(PKG)/usr/share/doc/$(PKG)/README chmod 0444 debian/$(PKG)/usr/share/doc/$(PKG)/read-only chmod 4755 debian/$(PKG)/usr/bin/script-uid chmod 2755 debian/$(PKG)/usr/bin/script-gid chmod 6755 debian/$(PKG)/usr/bin/script-ugid chmod 0775 debian/$(PKG)/usr/bin/script-wexec chmod 4744 debian/$(PKG)/usr/bin/script-wuid chmod 0751 debian/$(PKG)/usr/bin/script-ro chmod 0644 debian/$(PKG)/usr/lib/some-where/sample.ali chmod 0744 debian/$(PKG)/usr/share/doc/$(PKG) chmod 0755 debian/$(PKG)/usr/share/doc/$(PKG)/some-file chmod 0755 debian/$(PKG)/etc/cron.d/script chmod 0755 debian/$(PKG)/etc/emacs.d/script chmod 0765 debian/$(PKG)/etc/init.d/binary ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-bad-perm-owner/debian/debian/game.install�����������������������0000664�0000000�0000000�00000000022�12077065715�023751� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������script usr/games/ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-bad-perm-owner/debian/debian/binary.manpages��������������������0000664�0000000�0000000�00000000013�12077065715�024451� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������script-*.1 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-bad-perm-owner/debian/debian/binary.install���������������������0000664�0000000�0000000�00000000301�12077065715�024324� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������sample.ali usr/lib/some-where/ script-uid usr/bin/ script-ugid usr/bin/ script-gid usr/bin/ script-wexec usr/bin/ script-wuid usr/bin/ script-ro usr/bin/ script etc/cron.d/ script etc/emacs.d/ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-locales/��������������������������������������������������������0000775�0000000�0000000�00000000000�12077065715�015615� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-locales/tags����������������������������������������������������0000664�0000000�0000000�00000000303�12077065715�016472� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������W: files-locales: incorrect-locale-code cz -> cs W: files-locales: incorrect-locale-code en_UK -> en_GB W: files-locales: incorrect-locale-code ind -> id W: files-locales: unknown-locale-code zz �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-locales/desc����������������������������������������������������0000664�0000000�0000000�00000000240�12077065715�016452� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: files-locales Sequence: 6000 Version: 1.0 Description: Test checks about incorrect locale codes Test-For: incorrect-locale-code unknown-locale-code ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-locales/debian/�������������������������������������������������0000775�0000000�0000000�00000000000�12077065715�017037� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-locales/debian/dummy��������������������������������������������0000664�0000000�0000000�00000000013�12077065715�020107� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������dummy file ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-locales/debian/debian/������������������������������������������0000775�0000000�0000000�00000000000�12077065715�020261� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-locales/debian/debian/install�����������������������������������0000664�0000000�0000000�00000000254�12077065715�021653� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������dummy usr/share/locale/en_US/ dummy usr/share/locale/en_UK/ dummy usr/share/locale/ind/ dummy usr/share/locale/wa/ dummy usr/share/locale/zz/ dummy usr/share/locale/cz_CZ/ ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/md5sums-general/������������������������������������������������������0000775�0000000�0000000�00000000000�12310413146�016064� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/md5sums-general/tags��������������������������������������������������0000664�0000000�0000000�00000000424�12310413146�016745� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: md5sums-general: malformed-md5sums-control-file line 7 E: md5sums-general: md5sum-mismatch usr/share/lintian/data-file1 E: md5sums-general: md5sums-lists-nonexistent-file usr/share/lintian/data-file5 W: md5sums-general: file-missing-in-md5sums usr/share/lintian/data-file2 ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/md5sums-general/desc��������������������������������������������������0000664�0000000�0000000�00000000324�12310413146�016724� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: md5sums-general Sequence: 6000 Version: 1.0 Description: Test of md5sums related tags Test-For: file-missing-in-md5sums malformed-md5sums-control-file md5sum-mismatch md5sums-lists-nonexistent-file ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/md5sums-general/debian/�����������������������������������������������0000775�0000000�0000000�00000000000�12077065715�017325� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/md5sums-general/debian/data-file4�������������������������������������0000664�0000000�0000000�00000000021�12077065715�021153� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Hello data-file4 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/md5sums-general/debian/data-file2�������������������������������������0000664�0000000�0000000�00000000021�12077065715�021151� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Hello data-file2 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/md5sums-general/debian/data-file1�������������������������������������0000664�0000000�0000000�00000000021�12077065715�021150� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Hello data-file1 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/md5sums-general/debian/data-file3�������������������������������������0000664�0000000�0000000�00000000021�12077065715�021152� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Hello data-file3 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/md5sums-general/debian/debian/����������������������������������������0000775�0000000�0000000�00000000000�12077065715�020547� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/md5sums-general/debian/debian/install���������������������������������0000664�0000000�0000000�00000000031�12077065715�022132� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������data* usr/share/lintian/ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/md5sums-general/debian/debian/rules�����������������������������������0000664�0000000�0000000�00000000404�12077065715�021622� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/make -f FIND ?= find %: dh $@ override_dh_builddeb: echo "Broken md5sum" > $$($(FIND) debian/ -name 'data-file1') sed -i 's/data-file2/data-file5/' $$($(FIND) -name 'md5sums') echo "broken-md5sums" >> $$($(FIND) -name 'md5sums') dh_builddeb ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/source-copyright-wiki-uri/��������������������������������������������0000775�0000000�0000000�00000000000�12077065716�020140� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/source-copyright-wiki-uri/tags����������������������������������������0000664�0000000�0000000�00000000206�12077065716�021017� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������P: source-copyright-wiki-uri source: wiki-copyright-format-uri http://wiki.debian.org/Proposals/CopyrightFormat?action=recall&rev=196 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/source-copyright-wiki-uri/desc����������������������������������������0000664�0000000�0000000�00000000264�12077065716�021003� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: source-copyright-wiki-uri Sequence: 6000 Version: 1.0 Description: Test for wiki.debian.org DEP-5-like URI Options: -I -E --pedantic Test-For: wiki-copyright-format-uri ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/source-copyright-wiki-uri/debian/�������������������������������������0000775�0000000�0000000�00000000000�12077065716�021362� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/source-copyright-wiki-uri/debian/debian/������������������������������0000775�0000000�0000000�00000000000�12077065716�022604� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/source-copyright-wiki-uri/debian/debian/copyright���������������������0000664�0000000�0000000�00000002123�12077065716�024535� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Format-Specification: http://wiki.debian.org/Proposals/CopyrightFormat?action=recall&rev=196 Upstream-Name: Doohickey Upstream-Maintainer: J. Random Hacker <j.r.hacker@example.com> Upstream-Source: http://examples.com/doohickey/source/ Files: * Copyright: 2011 J. Random Hacker <j.r.hacker@example.com> License: GPL-2 This package 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; version 2 dated June, 1991. . This package 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 package; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. . On Debian systems, the full text of the GNU General Public License version 2 can be found in the file `/usr/share/common-licenses/GPL-2'. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-version-dot-dfsg/����������������������������������������������0000775�0000000�0000000�00000000000�12310413205�017506� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-version-dot-dfsg/tags������������������������������������������0000664�0000000�0000000�00000000110�12077065715�020402� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������I: fields-version-dot-dfsg source: dfsg-version-with-period 1.0.dfsg1-1 ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-version-dot-dfsg/desc������������������������������������������0000664�0000000�0000000�00000000226�12077065715�020372� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: fields-version-dot-dfsg Type: non-native Sequence: 6000 Version: 1.0.dfsg1-1 Description: Use of ".dfsg" Test-For: dfsg-version-with-period ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-general-upstream/�����������������������������������������������0000775�0000000�0000000�00000000000�12314366660�017464� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-general-upstream/tags�������������������������������������������0000664�0000000�0000000�00000004074�12313507507�020346� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: cruft-general-upstream source: source-contains-prebuilt-silverlight-object fakesilverlight.XAC E: cruft-general-upstream source: source-is-missing fake.min.js E: cruft-general-upstream source: source-is-missing fakefla.fla E: cruft-general-upstream source: source-is-missing fakeflash.swf P: cruft-general-upstream source: debian-watch-may-check-gpg-signature P: cruft-general-upstream source: source-contains-arch-control-dir {arch} P: cruft-general-upstream source: source-contains-arch-inventory-file .arch-inventory P: cruft-general-upstream source: source-contains-bts-control-dir .be P: cruft-general-upstream source: source-contains-bzr-control-dir .bzr P: cruft-general-upstream source: source-contains-cvs-conflict-copy .#foo.1.1 P: cruft-general-upstream source: source-contains-cvs-control-dir CVS P: cruft-general-upstream source: source-contains-git-control-dir .git P: cruft-general-upstream source: source-contains-hg-control-dir .hg P: cruft-general-upstream source: source-contains-hg-tags-file .hgtags P: cruft-general-upstream source: source-contains-prebuilt-flash-object fakeflash.swf P: cruft-general-upstream source: source-contains-prebuilt-flash-project fakefla.fla P: cruft-general-upstream source: source-contains-prebuilt-flash-project fakeflasourced.fla P: cruft-general-upstream source: source-contains-prebuilt-java-object fake.jar P: cruft-general-upstream source: source-contains-prebuilt-javascript-object fake.min.js P: cruft-general-upstream source: source-contains-prebuilt-python-object fake.pyc P: cruft-general-upstream source: source-contains-prebuilt-python-object fake.pyo P: cruft-general-upstream source: source-contains-prebuilt-windows-binary fake-win32-bin.exe P: cruft-general-upstream source: source-contains-svk-commit-file svk-commit444.tmp P: cruft-general-upstream source: source-contains-svn-commit-file svn-commit.tmp P: cruft-general-upstream source: source-contains-svn-conflict-file foo.r1352 P: cruft-general-upstream source: source-contains-svn-control-dir .svn W: cruft-general-upstream source: configure-generated-file-in-source config.cache ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-general-upstream/desc�������������������������������������������0000664�0000000�0000000�00000001703�12314366660�020326� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: cruft-general-upstream Sequence: 6000 Version: 1.0-1 Type: non-native Skeleton: pedantic Options: --pedantic -I -E Description: Check for cruft in the upstream source Test-For: configure-generated-file-in-source source-contains-arch-control-dir source-contains-arch-inventory-file source-contains-bts-control-dir source-contains-bzr-control-dir source-contains-cvs-conflict-copy source-contains-cvs-control-dir source-contains-git-control-dir source-contains-hg-control-dir source-contains-hg-tags-file source-contains-prebuilt-flash-object source-contains-prebuilt-java-object source-contains-prebuilt-javascript-object source-contains-prebuilt-flash-project source-contains-prebuilt-python-object source-contains-prebuilt-silverlight-object source-contains-prebuilt-windows-binary source-contains-svk-commit-file source-contains-svn-commit-file source-contains-svn-conflict-file source-contains-svn-control-dir source-is-missing �������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-general-upstream/pre_upstream�����������������������������������0000775�0000000�0000000�00000004204�12313507507�022114� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # # Create all the various junk that shouldn't exist upstream. We do much of it # here rather than in the template so that Lintian itself can be imported into # revision control systems. set -e dir="$1" EMPTY_OLE_OBJECT='\320\317\021\340\241\261\032\341' mkdir "${dir}/CVS" echo 'source-contains-cvs-control-dir' > "${dir}/CVS/Entries" mkdir "${dir}/.svn" echo 'source-contains-svn-control-dir' > "${dir}/.svn/format" mkdir "${dir}/.bzr" echo 'source-contains-bzr-control-dir' > "${dir}/.bzr/foo" mkdir "${dir}/{arch}" echo 'source-contains-arch-control-dir' > "${dir}/{arch}/foo" mkdir "${dir}/.git" echo 'source-contains-git-control-dir' > "${dir}/.git/foo" mkdir "${dir}/.hg" echo 'source-contains-hg-control-dir' > "${dir}/.hg/foo" mkdir "${dir}/.be" echo 'source-contains-bts-control-dir' > "${dir}/.be/foo" echo 'source-contains-svn-commit-file' > "${dir}/svn-commit.tmp" echo 'source-contains-svk-commit-file' > "${dir}/svk-commit444.tmp" echo 'source-contains-arch-inventory-file' > "${dir}/.arch-inventory" echo 'source-contains-hg-tags-file' > "${dir}/.hgtags" echo 'source-contains-cvs-conflict-copy' > "${dir}/.#foo.1.1" echo 'source-contains-svn-conflict-file' > "${dir}/foo.r1352" echo 'configure-generated-file-in-source' > "${dir}/config.cache" printf "MZ\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x3c" > "${dir}/fake-win32-bin.exe" printf "CWS\011" > "${dir}/fakeflash.swf" echo '//comment' > "${dir}/fake.min.js" # Make python generate python bytecode files # - more reliable than crafting them ourselves echo '' > "${dir}/fake.py" echo 'import fake' > "${dir}/main.py" unset PYTHONDONTWRITEBYTECODE PYTHONPATH="${dir}" python "${dir}/main.py" > /dev/null PYTHONPATH="${dir}" python -O "${dir}/main.py" > /dev/null rm -f "${dir}"/main.py* zip -q "${dir}/fake.jar" "${dir}/fake.min.js" cp "${dir}/fake.jar" "${dir}/fakesilverlight.XAC" # need to pad printf "\320\317\021\340\241\261\032\341" > "${dir}/fakefla.fla" dd if=/dev/zero of="${dir}/fakefla.fla" count=1 bs=1 seek=2047 > /dev/null 2> /dev/null cp "${dir}/fakefla.fla" "${dir}/fakeflasourced.fla" printf '//fake .as flash' > "${dir}/fakeflasourced.as" ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep-fp/�����������������������������������������������0000775�0000000�0000000�00000000000�12310413206�017360� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep-fp/tags�������������������������������������������0000664�0000000�0000000�00000000000�12310413206�020227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep-fp/desc�������������������������������������������0000664�0000000�0000000�00000000256�12310413206�020224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: scripts-missing-dep-fp Sequence: 6000 Version: 1.0 Description: Check F-P missing dep on various script interpreters Test-Against: python-script-but-no-python-dep ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep-fp/debian/����������������������������������������0000775�0000000�0000000�00000000000�12310413206�020602� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep-fp/debian/python-script���������������������������0000775�0000000�0000000�00000000037�12310413206�023353� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/python # whatever �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep-fp/debian/script.pod������������������������������0000664�0000000�0000000�00000000375�12310413206�022617� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������=head1 NAME @SCRIPT@ - Cool script to do stuff written in some script language. =head1 SYNOPSIS @SCRIPT@ --cool-argument =head1 DESCRIPTION This script is very awesome and does something you do not even know you need. =head1 AUTHOR I made this �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep-fp/debian/debian/���������������������������������0000775�0000000�0000000�00000000000�12310413206�022024� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep-fp/debian/debian/clean����������������������������0000664�0000000�0000000�00000000005�12310413206�023024� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������man/ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep-fp/debian/debian/install��������������������������0000664�0000000�0000000�00000000022�12310413206�023407� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������*-script usr/bin/ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep-fp/debian/debian/control.in�����������������������0000664�0000000�0000000�00000001053�12310413206�024033� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, gawk:any, mawk:any, php5:any, python:any, ruby:any Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep-fp/debian/debian/rules����������������������������0000775�0000000�0000000�00000000271�12310413206�023104� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/make -f %: dh $@ override_dh_auto_build: mkdir man for FILE in *-script ; do \ sed s/@SCRIPT@/$$FILE/g script.pod | \ pod2man --section=1 > man/$$FILE.1 ; \ done ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep-fp/debian/debian/manpages�������������������������0000664�0000000�0000000�00000000010�12310413206�023531� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������man/*.1 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt/����������������������������������������������������������0000775�0000000�0000000�00000000000�12077065714�015307� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt/upstream/�������������������������������������������������0000775�0000000�0000000�00000000000�12077065714�017147� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt/upstream/README�������������������������������������������0000664�0000000�0000000�00000000007�12077065714�020024� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������README �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt/tags������������������������������������������������������0000664�0000000�0000000�00000000000�12077065714�016156� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt/desc������������������������������������������������������0000664�0000000�0000000�00000000201�12077065714�016141� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: basic-quilt Sequence: 0001 Type: non-native Version: 1.0-1 Description: Basic test of a 3.0 (quilt) non-native package �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt/debian/���������������������������������������������������0000775�0000000�0000000�00000000000�12077065714�016531� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt/debian/README���������������������������������������������0000664�0000000�0000000�00000000007�12077065714�017406� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������README �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt/debian/debian/��������������������������������������������0000775�0000000�0000000�00000000000�12077065714�017753� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt/debian/debian/source/�������������������������������������0000775�0000000�0000000�00000000000�12077065714�021253� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt/debian/debian/source/format�������������������������������0000664�0000000�0000000�00000000014�12077065714�022461� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������3.0 (quilt) ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt/debian/debian/patches/������������������������������������0000775�0000000�0000000�00000000000�12077065714�021402� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt/debian/debian/patches/extra-readme������������������������0000664�0000000�0000000�00000000311�12077065714�023676� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������A simple patch applied by dpkg-source --- upstream.orig/README +++ upstream/README @@ -1 +1,4 @@ README + +These are some lines added in the Debian package via a quilt patch +applied by dpkg-source. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt/debian/debian/patches/series������������������������������0000664�0000000�0000000�00000000015�12077065714�022613� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������extra-readme �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-compat/�����������������������������������������������������0000775�0000000�0000000�00000000000�12077065715�016306� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-compat/tags�������������������������������������������������0000664�0000000�0000000�00000000076�12077065715�017172� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: debhelper-compat source: debhelper-compat-not-a-number [7- ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-compat/desc�������������������������������������������������0000664�0000000�0000000�00000000216�12077065715�017146� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: debhelper-compat Sequence: 6000 Version: 1.0 Description: Test the content of debian/compat Test-For: debhelper-compat-not-a-number ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-compat/debian/����������������������������������������������0000775�0000000�0000000�00000000000�12077065715�017530� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-compat/debian/debian/���������������������������������������0000775�0000000�0000000�00000000000�12077065715�020752� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-compat/debian/debian/compat���������������������������������0000664�0000000�0000000�00000000004�12077065715�022152� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������[7- ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debconf-no-templates/�������������������������������������������������0000775�0000000�0000000�00000000000�12310413144�017060� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debconf-no-templates/tags���������������������������������������������0000664�0000000�0000000�00000000056�12310413144�017742� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������W: debconf-no-templates: no-debconf-templates ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debconf-no-templates/desc���������������������������������������������0000664�0000000�0000000�00000000213�12310413144�017715� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: debconf-no-templates Sequence: 6000 Version: 1.0 Description: Test for missing debconf templates Test-For: no-debconf-templates �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debconf-no-templates/debian/������������������������������������������0000775�0000000�0000000�00000000000�12310413144�020302� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debconf-no-templates/debian/debian/�����������������������������������0000775�0000000�0000000�00000000000�12310413144�021524� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debconf-no-templates/debian/debian/config�����������������������������0000664�0000000�0000000�00000000064�12310413144�022714� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh set -e . /usr/share/debconf/confmodule ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debconf-no-templates/debian/debian/postinst���������������������������0000664�0000000�0000000�00000000100�12310413144�023321� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh set -e . /usr/share/debconf/confmodule #DEBHELPER# ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-suppress-tags/������������������������������������������������0000775�0000000�0000000�00000000000�12077065715�017347� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-suppress-tags/tags��������������������������������������������0000664�0000000�0000000�00000000000�12077065715�020216� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-suppress-tags/desc��������������������������������������������0000664�0000000�0000000�00000000335�12077065715�020211� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: lintian-suppress-tags Sequence: 2500 Version: 1.0 Description: Test tag suppression Options: --suppress-tags extended-description-is-empty --suppress-tags-from-file TESTSET/tests/lintian-suppress-tags/suppress ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-suppress-tags/debian/�����������������������������������������0000775�0000000�0000000�00000000000�12077065715�020571� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-suppress-tags/debian/debian/����������������������������������0000775�0000000�0000000�00000000000�12310413206�021771� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-suppress-tags/debian/debian/control.in������������������������0000664�0000000�0000000�00000000373�12310413206�024004� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Section: unknown Architecture: {$architecture} Description: {$description} (dummy) ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-suppress-tags/suppress����������������������������������������0000664�0000000�0000000�00000000264�12077065715�021160� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# This is a comment. # Suppress a tag not present in the test. malformed-override # Suppress two tags on the same line. section-is-dh_make-template,debhelper-but-no-misc-depends ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-tar-traps/������������������������������������������������������0000775�0000000�0000000�00000000000�12313541017�016073� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-tar-traps/pre_build���������������������������������������������0000775�0000000�0000000�00000000607�12313541017�017771� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh dir="$1/strangename" mkdir -p "$dir" # All file names are quoted twice, once for the shell and once for tar # (-T) # File named <quote><backslash><space> echo "foo" > "$dir/'\\ " # File named <backslash> echo "bar" > "$dir/\\" # File named <backslash><backslash> # - causes md5sums-lists-nonexistent-file # (TODO: debug why, but for now leave it out) #echo "bar" > "$dir/\\\\" �������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-tar-traps/tags��������������������������������������������������0000664�0000000�0000000�00000000416�12313541017�016755� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: files-tar-traps: non-standard-toplevel-dir strangename/ W: files-tar-traps: file-in-unusual-dir strangename/strangename/'\ W: files-tar-traps: file-in-unusual-dir strangename/strangename/\ W: files-tar-traps: file-name-ends-in-whitespace strangename/strangename/'\ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-tar-traps/desc��������������������������������������������������0000664�0000000�0000000�00000000542�12313541017�016735� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: files-tar-traps Sequence: 6000 Version: 1.0 Description: Test tags for tar common bugs # tar -t in 1.27 is buggy and creates tarballs incorrectly # for "quoted" file names. # # See #740199 and # http://lists.gnu.org/archive/html/bug-tar/2014-03/msg00001.html Test-Depends: tar (<< 1.27~) | tar (>= 1.27.1~) Test-For: non-standard-toplevel-dir ��������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-tar-traps/debian/�����������������������������������������������0000775�0000000�0000000�00000000000�12313541017�017315� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-tar-traps/debian/debian/����������������������������������������0000775�0000000�0000000�00000000000�12311410541�020532� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-tar-traps/debian/debian/install���������������������������������0000664�0000000�0000000�00000000030�12311410541�022114� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������strangename strangename ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-tar-traps/debian/debian/dirs������������������������������������0000664�0000000�0000000�00000000015�12311410541�021412� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/strangename �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/source-copyright-boilerplate-uri/�������������������������������������0000775�0000000�0000000�00000000000�12077065716�021477� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/source-copyright-boilerplate-uri/tags���������������������������������0000664�0000000�0000000�00000000144�12077065716�022357� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������W: source-copyright-boilerplate-uri source: boilerplate-copyright-format-uri <VERSIONED_FORMAT_URL> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/source-copyright-boilerplate-uri/desc���������������������������������0000664�0000000�0000000�00000000244�12077065716�022340� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: source-copyright-boilerplate-uri Sequence: 6000 Version: 1.0 Description: Test for boilerplace DEP-5-like URI Test-For: boilerplate-copyright-format-uri ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/source-copyright-boilerplate-uri/debian/������������������������������0000775�0000000�0000000�00000000000�12077065716�022721� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/source-copyright-boilerplate-uri/debian/debian/�����������������������0000775�0000000�0000000�00000000000�12077065716�024143� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/source-copyright-boilerplate-uri/debian/debian/copyright��������������0000664�0000000�0000000�00000002011�12077065716�026070� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Format: <VERSIONED_FORMAT_URL> Upstream-Name: Doohickey Upstream-Contact: J. Random Hacker <j.r.hacker@example.com> Source: http://examples.com/doohickey/source/ Files: * Copyright: 2011 J. Random Hacker <j.r.hacker@example.com> License: GPL-2 This package 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; version 2 dated June, 1991. . This package 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 package; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. . On Debian systems, the full text of the GNU General Public License version 2 can be found in the file `/usr/share/common-licenses/GPL-2'. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-ancient-libtool-2/����������������������������������������������0000775�0000000�0000000�00000000000�12077065714�017435� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-ancient-libtool-2/tags������������������������������������������0000664�0000000�0000000�00000000103�12077065714�020310� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������W: cruft-ancient-libtool-2 source: ancient-libtool ltmain.sh 1.5.2 �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-ancient-libtool-2/desc������������������������������������������0000664�0000000�0000000�00000000274�12077065714�020301� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: cruft-ancient-libtool-2 Sequence: 6000 Version: 1.0 Description: Test that an old (1.5.2) ltmain.sh is detected correctly Test-For: ancient-libtool References: Debian Bug#293296 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-ancient-libtool-2/debian/���������������������������������������0000775�0000000�0000000�00000000000�12077065714�020657� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-ancient-libtool-2/debian/ltmain.sh������������������������������0000664�0000000�0000000�00000004065�12077065714�022504� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# ltmain.sh - Provide generalized library-building support services. # NOTE: Changing this file will not affect anything until you rerun configure. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003 # Free Software Foundation, Inc. # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 # # 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Check that we have a working $echo. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell, and then maybe $echo will work. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <<EOF $* EOF exit 0 fi # define SED for historic ltconfig's generated by Libtool 1.3 test -z "$SED" && SED=sed # The name of this program. progname=`$echo "$0" | ${SED} 's%^.*/%%'` modename="$progname" # Constants. PROGRAM=ltmain.sh PACKAGE=libtool VERSION=1.5.2 TIMESTAMP=" (1.1220.2.60 2004/01/25 12:25:08)" ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-ftp-rejects/��������������������������������������������������0000775�0000000�0000000�00000000000�12310413146�016736� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-ftp-rejects/tags����������������������������������������������0000664�0000000�0000000�00000000172�12310413146�017617� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: lintian-ftp-rejects: dir-or-file-in-opt opt/lintian/ E: lintian-ftp-rejects: dir-or-file-in-var-lock var/lock/lintian/ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-ftp-rejects/desc����������������������������������������������0000664�0000000�0000000�00000000320�12310413146�017572� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: lintian-ftp-rejects Sequence: 2500 Version: 1.0 Profile: debian/ftp-master-auto-reject Description: Test Lintian --ftp-master-rejects handling Test-For: dir-or-file-in-opt dir-or-file-in-var-lock ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-ftp-rejects/debian/�������������������������������������������0000775�0000000�0000000�00000000000�12077065715�020177� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-ftp-rejects/debian/debian/������������������������������������0000775�0000000�0000000�00000000000�12310413206�021377� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-ftp-rejects/debian/debian/control.in��������������������������0000664�0000000�0000000�00000001052�12310413206�023405� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{misc:Depends\}, libssl0.9.8 (>= 0abcd) Essential:yes Section: {$section} Description: {$description}. This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . The homepage is http://www.example.com/. ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-ftp-rejects/debian/debian/rules�������������������������������0000775�0000000�0000000�00000000064�12077065715�022501� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/make -f %: dh $@ override_dh_usrlocal: ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-ftp-rejects/debian/debian/dirs��������������������������������0000664�0000000�0000000�00000000065�12077065715�022306� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������usr/local/share/lintian var/lock/lintian opt/lintian ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-with-epoch/�����������������������������������������������������0000775�0000000�0000000�00000000000�12310413205�016176� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-with-epoch/tags�������������������������������������������������0000664�0000000�0000000�00000000000�12077065714�017067� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-with-epoch/desc�������������������������������������������������0000664�0000000�0000000�00000000163�12077065714�017061� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: basic-with-epoch Sequence: 0001 Version: 1:1.0 Description: Basic test of a native package with an epoch �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-interpreters/�������������������������������������������������0000775�0000000�0000000�00000000000�12077065715�017306� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-interpreters/tags���������������������������������������������0000664�0000000�0000000�00000003726�12077065715�020177� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: scripts-interpreters: interpreter-in-usr-local usr/bin/usr-local #!/usr/local/bin/special-perl E: scripts-interpreters: missing-dep-for-interpreter pike => pike7.6 | pike7.6-core | pike7.8 | pike7.8-core (usr/bin/unversioned-pike) E: scripts-interpreters: missing-dep-for-interpreter pike7.6 => pike7.6 | pike7.6-core (usr/bin/versioned-pike) E: scripts-interpreters: script-without-interpreter usr/bin/no-interpreter E: scripts-interpreters: shell-script-fails-syntax-check usr/bin/syntax E: scripts-interpreters: wrong-path-for-interpreter usr/bin/not-absolute (#!perl != /usr/bin/perl) E: scripts-interpreters: wrong-path-for-interpreter usr/bin/wrong-perl-path (#!/bin/perl != /usr/bin/perl) I: scripts-interpreters: example-interpreter-not-absolute usr/share/doc/scripts-interpreters/examples/not-absolute #!perl I: scripts-interpreters: example-script-uses-bin-env usr/share/doc/scripts-interpreters/examples/bin-env I: scripts-interpreters: example-script-without-interpreter usr/share/doc/scripts-interpreters/examples/no-interpreter I: scripts-interpreters: example-wrong-path-for-interpreter usr/share/doc/scripts-interpreters/examples/not-absolute (#!perl != /usr/bin/perl) I: scripts-interpreters: example-wrong-path-for-interpreter usr/share/doc/scripts-interpreters/examples/wrong-perl-path (#!/bin/perl != /usr/bin/perl) P: scripts-interpreters: example-interpreter-in-usr-local usr/share/doc/scripts-interpreters/examples/usr-local #!/usr/local/bin/special-perl P: scripts-interpreters: example-shell-script-fails-syntax-check usr/share/doc/scripts-interpreters/examples/syntax P: scripts-interpreters: example-unusual-interpreter usr/share/doc/scripts-interpreters/examples/unusual #!/usr/bin/lintian W: scripts-interpreters: csh-considered-harmful usr/bin/csh-shell W: scripts-interpreters: interpreter-not-absolute usr/bin/not-absolute #!perl W: scripts-interpreters: script-uses-bin-env usr/bin/bin-env W: scripts-interpreters: unusual-interpreter usr/bin/unusual #!/usr/bin/lintian ������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-interpreters/desc���������������������������������������������0000664�0000000�0000000�00000001240�12077065715�020144� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: scripts-interpreters Sequence: 6000 Version: 1.0 Description: Check various script interpreter issues Skeleton: pedantic Options: --pedantic -I -E Test-For: csh-considered-harmful example-interpreter-in-usr-local example-interpreter-not-absolute example-script-uses-bin-env example-script-without-interpreter example-shell-script-fails-syntax-check example-unusual-interpreter example-wrong-path-for-interpreter interpreter-in-usr-local interpreter-not-absolute missing-dep-for-interpreter shell-script-fails-syntax-check script-uses-bin-env script-without-interpreter unusual-interpreter wrong-path-for-interpreter References: Debian Bug#543873 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-interpreters/debian/������������������������������������������0000775�0000000�0000000�00000000000�12310413206�020506� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-interpreters/debian/unversioned-pike��������������������������0000664�0000000�0000000�00000000224�12077065715�023740� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /usr/bin/pike This is not a real pike script but sufficient to trigger a warning that the package is missing a dependency for the interpreter. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-interpreters/debian/unusual�����������������������������������0000664�0000000�0000000�00000000066�12077065715�022151� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/lintian use lintian shell to check package ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-interpreters/debian/interpreters.1����������������������������0000664�0000000�0000000�00000000250�12077065715�023335� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.TH interpreters 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*- .SH NAME interpreters \- test script Dummy manpage to avoid triggering warnings about it not existing. ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-interpreters/debian/python2.7���������������������������������0000664�0000000�0000000�00000000054�12310413206�022200� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/python2.7 import sys sys.exit(0) ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-interpreters/debian/versioned-pike����������������������������0000664�0000000�0000000�00000000227�12077065715�023400� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /usr/bin/pike7.6 This is not a real pike script but sufficient to trigger a warning that the package is missing a dependency for the interpreter. �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-interpreters/debian/wrong-perl-path���������������������������0000664�0000000�0000000�00000000043�12077065715�023476� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/perl print "Hello world\n"; ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-interpreters/debian/csh-shell���������������������������������0000664�0000000�0000000�00000000013�12077065715�022327� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/csh ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-interpreters/debian/not-absolute������������������������������0000664�0000000�0000000�00000000036�12077065715�023066� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!perl print "Hello world\n"; ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-interpreters/debian/no-interpreter����������������������������0000664�0000000�0000000�00000000052�12077065715�023425� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! # Script missing any interpreter. true ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-interpreters/debian/usr-local���������������������������������0000664�0000000�0000000�00000000065�12077065715�022355� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/local/bin/special-perl print "Hello world\n"; ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-interpreters/debian/bin-env�����������������������������������0000664�0000000�0000000�00000000047�12077065715�022012� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/env perl print "Hello world\n"; �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-interpreters/debian/syntax������������������������������������0000664�0000000�0000000�00000000115�12077065715�021776� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # A shell script with a syntax error. if true ; then echo True ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-interpreters/debian/debian/�����������������������������������0000775�0000000�0000000�00000000000�12310413206�021730� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-interpreters/debian/debian/examples���������������������������0000664�0000000�0000000�00000000136�12077065715�023513� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bin-env no-interpreter not-absolute syntax unusual unversioned-pike usr-local wrong-perl-path ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-interpreters/debian/debian/links������������������������������0000664�0000000�0000000�00000001440�12310413206�022772� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������usr/share/man/man1/interpreters.1 usr/share/man/man1/bin-env.1 usr/share/man/man1/interpreters.1 usr/share/man/man1/csh-shell.1 usr/share/man/man1/interpreters.1 usr/share/man/man1/no-interpreter.1 usr/share/man/man1/interpreters.1 usr/share/man/man1/not-absolute.1 usr/share/man/man1/interpreters.1 usr/share/man/man1/python2.7.1 usr/share/man/man1/interpreters.1 usr/share/man/man1/syntax.1 usr/share/man/man1/interpreters.1 usr/share/man/man1/unusual.1 usr/share/man/man1/interpreters.1 usr/share/man/man1/unversioned-pike.1 usr/share/man/man1/interpreters.1 usr/share/man/man1/usr-local.1 usr/share/man/man1/interpreters.1 usr/share/man/man1/versioned-pike.1 usr/share/man/man1/interpreters.1 usr/share/man/man1/wrong-perl-path.1 ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-interpreters/debian/debian/install����������������������������0000664�0000000�0000000�00000000553�12310413206�023324� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������bin-env usr/bin/ csh-shell usr/bin/ no-interpreter usr/bin/ not-absolute usr/bin/ python2.7 usr/bin/ syntax usr/bin/ unusual usr/bin/ unversioned-pike usr/bin/ usr-local usr/bin/ versioned-pike usr/bin/ wrong-perl-path usr/bin/ �����������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-interpreters/debian/debian/control.in�������������������������0000664�0000000�0000000�00000001005�12310413206�023734� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, python2.7, csh Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/scripts-interpreters/debian/debian/manpages���������������������������0000664�0000000�0000000�00000000017�12077065715�023466� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������interpreters.1 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-udeb/����������������������������������������������������������0000775�0000000�0000000�00000000000�12310413144�015235� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-udeb/tags������������������������������������������������������0000664�0000000�0000000�00000000135�12310413144�016115� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: fields-udeb udeb: bad-menu-item network W: fields-udeb udeb: wrong-section-for-udeb devel �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-udeb/desc������������������������������������������������������0000664�0000000�0000000�00000000223�12310413144�016073� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: fields-udeb Sequence: 6000 Version: 1.0 Description: Test for various udeb field issues Test-For: bad-menu-item wrong-section-for-udeb �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-udeb/debian/���������������������������������������������������0000775�0000000�0000000�00000000000�12310413144�016457� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-udeb/debian/debian/��������������������������������������������0000775�0000000�0000000�00000000000�12310413206�017700� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-udeb/debian/debian/control.in����������������������������������0000664�0000000�0000000�00000001001�12310413206�021700� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: all Package-Type: udeb Depends: $\{misc:Depends\}, Installer-Menu-Item: network Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-non-native-with-epoch/������������������������������������������0000775�0000000�0000000�00000000000�12310413205�020252� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-non-native-with-epoch/tags��������������������������������������0000664�0000000�0000000�00000000000�12077065714�021143� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-non-native-with-epoch/desc��������������������������������������0000664�0000000�0000000�00000000223�12077065714�021132� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: basic-non-native-with-epoch Sequence: 0001 Version: 1:1.0-1 Type: non-version Description: Basic test of a non-native package with epoch �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-dh-clean-k-ok/����������������������������������������������0000775�0000000�0000000�00000000000�12077065715�017335� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-dh-clean-k-ok/tags������������������������������������������0000664�0000000�0000000�00000000000�12077065715�020204� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-dh-clean-k-ok/desc������������������������������������������0000664�0000000�0000000�00000000250�12077065715�020173� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: debhelper-dh-clean-k-ok Sequence: 6000 Version: 1.0 Description: Test that debhelper < 7 packages can use dh_clean -k Test-Against: dh-clean-k-is-deprecated ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-dh-clean-k-ok/debian/���������������������������������������0000775�0000000�0000000�00000000000�12077065715�020557� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-dh-clean-k-ok/debian/debian/��������������������������������0000775�0000000�0000000�00000000000�12310413206�021757� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-dh-clean-k-ok/debian/debian/control.in����������������������0000664�0000000�0000000�00000000765�12310413206�023777� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 6) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. �����������lintian-2.5.22ubuntu1/t/tests/debhelper-dh-clean-k-ok/debian/debian/compat��������������������������0000664�0000000�0000000�00000000002�12077065715�023177� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������6 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-dh-clean-k-ok/debian/debian/rules���������������������������0000775�0000000�0000000�00000001340�12077065715�023057� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/make -f # # Use an alternate rules file that doesn't call dh to test not warning # about debhelper script tokens if we call no programs that care about # them. pkg = $(shell dh_listpackages) build: build-indep build-arch build-arch: build-indep: clean: dh_testdir dh_testroot dh_clean binary: binary-indep binary-arch binary-arch: binary-indep: dh_testdir dh_testroot dh_clean -k dh_install dh_installchangelogs dh_installdebconf # dh_installdocs may modify maintainer scripts install -m 644 debian/copyright debian/$(pkg)/usr/share/doc/$(pkg) dh_link dh_compress dh_fixperms dh_installdeb dh_gencontrol dh_md5sums dh_builddeb .PHONY: build-arch build-indep build binary binary-arch binary-indep clean ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/changelog-file-news-wrong-name/���������������������������������������0000775�0000000�0000000�00000000000�12310413144�020740� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/changelog-file-news-wrong-name/tags�����������������������������������0000664�0000000�0000000�00000000177�12310413144�021626� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������W: changelog-file-news-wrong-name: wrong-name-for-debian-news-file usr/share/doc/changelog-file-news-wrong-name/news.debian.gz �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/changelog-file-news-wrong-name/desc�����������������������������������0000664�0000000�0000000�00000000254�12310413144�021602� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: changelog-file-news-wrong-name Sequence: 6000 Version: 1.0 Description: Check for NEWS.Debian installed with wrong name Test-For: wrong-name-for-debian-news-file ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/changelog-file-news-wrong-name/debian/��������������������������������0000775�0000000�0000000�00000000000�12310413144�022162� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/changelog-file-news-wrong-name/debian/debian/�������������������������0000775�0000000�0000000�00000000000�12310413144�023404� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/changelog-file-news-wrong-name/debian/debian/package-news�������������0000664�0000000�0000000�00000000237�12310413144�025676� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������changelog-file-wrong-name (1.0) unstable; urgency=low Some interesting information. -- Niels Thykier <niels@thykier.net> Sun, 22 Jul 2012 20:30:00 +0000 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/changelog-file-news-wrong-name/debian/debian/rules��������������������0000775�0000000�0000000�00000000321�12310413144�024460� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/make -f PKG=$(shell dh_listpackages) DOC=debian/$(PKG)/usr/share/doc/$(PKG) %: dh $@ override_dh_installchangelogs: dh_installchangelogs gzip -9c < debian/package-news > $(DOC)/news.debian.gz ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/conffiles-general/����������������������������������������������������0000775�0000000�0000000�00000000000�12310413144�016435� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/conffiles-general/tags������������������������������������������������0000664�0000000�0000000�00000001054�12310413144�017316� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: conffiles-general: conffile-has-bad-file-type etc/symlink E: conffiles-general: conffile-is-not-in-package etc/rc2.d/file E: conffiles-general: conffile-is-not-in-package usr/share/foo E: conffiles-general: conffile-is-not-in-package var/cache/foo E: conffiles-general: duplicate-conffile etc/foo E: conffiles-general: file-in-etc-rc.d-marked-as-conffile etc/rc2.d/file E: conffiles-general: file-in-usr-marked-as-conffile usr/share/foo E: conffiles-general: non-etc-file-marked-as-conffile var/cache/foo E: conffiles-general: relative-conffile etc/foo ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/conffiles-general/desc������������������������������������������������0000664�0000000�0000000�00000000512�12310413144�017274� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: conffiles-general Sequence: 6000 Version: 1.0 Description: Test for conffile-related checks Test-For: conffile-has-bad-file-type conffile-is-not-in-package duplicate-conffile file-in-etc-rc.d-marked-as-conffile file-in-usr-marked-as-conffile non-etc-file-marked-as-conffile relative-conffile ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/conffiles-general/debian/���������������������������������������������0000775�0000000�0000000�00000000000�12077065714�017677� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/conffiles-general/debian/debian/��������������������������������������0000775�0000000�0000000�00000000000�12310413144�021101� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/conffiles-general/debian/debian/links���������������������������������0000664�0000000�0000000�00000000024�12310413144�022140� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������etc/foo etc/symlink ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/conffiles-general/debian/debian/rules���������������������������������0000775�0000000�0000000�00000000324�12310413144�022160� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/make -f pkg=conffiles-general %: dh $@ override_dh_builddeb: mkdir -p debian/$(pkg)/etc/ echo "Hallo World" > debian/$(pkg)/etc/foo dpkg-deb --nocheck --build debian/$(pkg) ../$(pkg)_1.0_all.deb ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/conffiles-general/debian/debian/conffiles�����������������������������0000664�0000000�0000000�00000000115�12310413144�022771� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/etc/foo /etc/rc2.d/file /etc/symlink /usr/share/foo /var/cache/foo etc/foo ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-dh-compat/��������������������������������������������������0000775�0000000�0000000�00000000000�12077065715�016677� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-dh-compat/tags����������������������������������������������0000664�0000000�0000000�00000000516�12077065715�017562� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: debhelper-dh-compat source: debhelper-compatibility-level-not-a-number '{3' E: debhelper-dh-compat source: declares-possibly-conflicting-debhelper-compat-versions rules='{3' compat=9 W: debhelper-dh-compat source: debian-rules-sets-DH_COMPAT line 3 W: debhelper-dh-compat source: package-uses-deprecated-debhelper-compat-version 3 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-dh-compat/desc����������������������������������������������0000664�0000000�0000000�00000000357�12077065715�017545� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: debhelper-dh-compat Sequence: 6000 Version: 1.0 Description: Test the value of DH_COMPAT Test-For: debhelper-compatibility-level-not-a-number debian-rules-sets-DH_COMPAT declares-possibly-conflicting-debhelper-compat-versions ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-dh-compat/debian/�������������������������������������������0000775�0000000�0000000�00000000000�12077065715�020121� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-dh-compat/debian/debian/������������������������������������0000775�0000000�0000000�00000000000�12077065715�021343� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-dh-compat/debian/debian/rules�������������������������������0000775�0000000�0000000�00000000102�12077065715�022414� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/make -f export DH_COMPAT=7 %: dh $@ DH_COMPAT='{3' ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2005/�������������������������������������������������0000775�0000000�0000000�00000000000�12310413146�016360� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2005/upstream/����������������������������������������0000775�0000000�0000000�00000000000�12077065715�020237� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2005/upstream/README����������������������������������0000664�0000000�0000000�00000001101�12077065715�021110� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������This is something close to the results of running dh_make on a basically empty upstream tarball in 2005, but with the example files removed. It's a useful test for the various dh_make template and boilerplate tags, as well as many tags for ways of doing things dh_make used to promote but are now deprecated or old debhelper commands that are now deprecated. Please don't modify anything about the files in this package; instead, add new tags as needed when Lintian adds new checks. This test case is intended to continue to be a test of Lintian's handling of old packages. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2005/post_test����������������������������������������0000664�0000000�0000000�00000000070�12077065715�020343� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2005/pre_build����������������������������������������0000775�0000000�0000000�00000000312�12077065715�020266� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # # dh_make in 2005 didn't generate a compat file for debhelper or a watch # file, so remove the ones that are copied over from the template. rm -f "$1"/debian/compat rm -f "$1"/debian/watch ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2005/tags���������������������������������������������0000664�0000000�0000000�00000002371�12310413146�017244� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: generic-dh-make-2005: changelog-is-dh_make-template E: generic-dh-make-2005: description-is-dh_make-template E: generic-dh-make-2005: helper-templates-in-copyright E: generic-dh-make-2005: section-is-dh_make-template I: generic-dh-make-2005 source: debian-watch-file-is-missing I: generic-dh-make-2005: extended-description-is-probably-too-short W: generic-dh-make-2005 source: ancient-standards-version 3.6.2 (current is CURRENT) W: generic-dh-make-2005 source: debhelper-compat-file-is-missing W: generic-dh-make-2005 source: debian-rules-ignores-make-clean-error line 47 W: generic-dh-make-2005 source: debian-rules-missing-recommended-target build-arch W: generic-dh-make-2005 source: debian-rules-missing-recommended-target build-indep W: generic-dh-make-2005 source: debian-rules-sets-DH_COMPAT line 12 W: generic-dh-make-2005 source: dh_suidregister-is-obsolete line 85 W: generic-dh-make-2005 source: package-uses-deprecated-debhelper-compat-version 2 W: generic-dh-make-2005: copyright-without-copyright-notice W: generic-dh-make-2005: new-package-should-close-itp-bug W: generic-dh-make-2005: readme-debian-contains-debmake-template W: generic-dh-make-2005: wrong-bug-number-in-closes l3:#nnnn X: generic-dh-make-2005: package-contains-no-arch-dependent-files �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2005/desc���������������������������������������������0000664�0000000�0000000�00000001272�12310413146�017223� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: generic-dh-make-2005 Sequence: 6500 Type: non-native Author: Frank Lichtenheld <djpig@debian.org> Version: 1-1 Description: Generic dh_make template generated in 2005 Test-For: ancient-standards-version changelog-is-dh_make-template copyright-without-copyright-notice debian-rules-ignores-make-clean-error debian-rules-sets-DH_COMPAT debian-watch-file-is-missing description-is-dh_make-template dh_suidregister-is-obsolete extended-description-is-probably-too-short helper-templates-in-copyright new-package-should-close-itp-bug package-uses-deprecated-debhelper-compat-version readme-debian-contains-debmake-template section-is-dh_make-template wrong-bug-number-in-closes ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2005/debian/������������������������������������������0000775�0000000�0000000�00000000000�12077065715�017621� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2005/debian/README������������������������������������0000664�0000000�0000000�00000001101�12077065715�020472� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������This is something close to the results of running dh_make on a basically empty upstream tarball in 2005, but with the example files removed. It's a useful test for the various dh_make template and boilerplate tags, as well as many tags for ways of doing things dh_make used to promote but are now deprecated or old debhelper commands that are now deprecated. Please don't modify anything about the files in this package; instead, add new tags as needed when Lintian adds new checks. This test case is intended to continue to be a test of Lintian's handling of old packages. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2005/debian/debian/�����������������������������������0000775�0000000�0000000�00000000000�12077065715�021043� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2005/debian/debian/copyright��������������������������0000664�0000000�0000000�00000000373�12077065715�023001� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������This package was debianized by Frank Lichtenheld <djpig@debian.org> on Thu, 4 Aug 2005 23:09:00 +0200. It was downloaded from <fill in ftp site> Copyright Holder: <put author(s) name and email here> License: <Put the license of the package here> ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2005/debian/debian/changelog��������������������������0000664�0000000�0000000�00000000306�12077065715�022714� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������generic-dh-make-2005 (1-1) unstable; urgency=low * Initial release Closes: #nnnn (nnnn is the bug number of your ITP) -- Frank Lichtenheld <djpig@debian.org> Thu, 4 Aug 2005 23:09:00 +0200 ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2005/debian/debian/rules������������������������������0000775�0000000�0000000�00000003674�12077065715�022135� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/make -f # -*- makefile -*- # Sample debian/rules that uses debhelper. # This file was originally written by Joey Hess and Craig Small. # As a special exception, when this file is copied by dh-make into a # dh-make output file, you may use that output file without restriction. # This special exception was added by Craig Small in version 0.37 of dh-make. # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 export DH_COMPAT=2 CFLAGS = -Wall -g ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) CFLAGS += -O0 else CFLAGS += -O2 endif configure: configure-stamp configure-stamp: dh_testdir # Add here commands to configure the package. touch configure-stamp build: build-stamp build-stamp: configure-stamp dh_testdir # Add here commands to compile the package. # $(MAKE) #docbook-to-man debian/dh-test.sgml > dh-test.1 touch build-stamp clean: dh_testdir dh_testroot rm -f build-stamp configure-stamp # Add here commands to clean up after the build process. -$(MAKE) clean dh_clean install: build dh_testdir dh_testroot dh_clean -k dh_installdirs # Add here commands to install the package into debian/dh-test. # $(MAKE) install DESTDIR=$(CURDIR)/debian/dh-test # Build architecture-independent files here. binary-indep: build install # We have nothing to do by default. # Build architecture-dependent files here. binary-arch: build install # dh_testversion dh_testdir dh_testroot dh_installchangelogs dh_installdocs dh_installexamples # dh_install # dh_installmenu # dh_installdebconf # dh_installlogrotate # dh_installemacsen # dh_installpam # dh_installmime # dh_installinit # dh_installcron # dh_installinfo dh_installman # dh_dhelp dh_suidregister dh_link dh_strip dh_compress dh_fixperms # dh_perl # dh_python # dh_makeshlibs dh_installdeb dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb binary: binary-indep binary-arch .PHONY: build clean binary-indep binary-arch binary install configure ��������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2005/debian/debian/control����������������������������0000664�0000000�0000000�00000000556�12077065715�022454� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Source: generic-dh-make-2005 Section: unknown Priority: optional Maintainer: Frank Lichtenheld <djpig@debian.org> Build-Depends: debhelper (>= 4.0.0) Standards-Version: 3.6.2 Package: generic-dh-make-2005 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: <insert up to 60 chars description> <insert long description, indented with spaces> ��������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2005/debian/debian/README.Debian����������������������0000664�0000000�0000000�00000000266�12077065715�023110� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������dh-test for Debian ------------------ <possible notes regarding this package - if none, delete this file> -- Frank Lichtenheld <djpig@debian.org>, Thu, 4 Aug 2005 23:09:00 +0200 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-adobe-font/�����������������������������������������������������0000775�0000000�0000000�00000000000�12310413144�016170� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-adobe-font/tags�������������������������������������������������0000664�0000000�0000000�00000000540�12310413144�017050� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: fonts-files-adobe-font: license-problem-font-adobe-copyrighted-fragment usr/share/lintian/fonts/bad.pfb E: fonts-files-adobe-font: license-problem-font-adobe-copyrighted-fragment usr/share/lintian/fonts/badwithadobecode.pfb E: fonts-files-adobe-font: license-problem-font-adobe-copyrighted-fragment-no-credit usr/share/lintian/fonts/badnocredit.pfb ����������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-adobe-font/desc�������������������������������������������������0000664�0000000�0000000�00000000335�12310413144�017032� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: files-adobe-font Sequence: 6000 Version: 1.0 Description: Test for adobe font license issues Test-For: license-problem-font-adobe-copyrighted-fragment license-problem-font-adobe-copyrighted-fragment-no-credit ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-adobe-font/debian/����������������������������������������������0000775�0000000�0000000�00000000000�12310413144�017412� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-adobe-font/debian/good.raw��������������������������������������0000664�0000000�0000000�00000000577�12310413144�021066� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������%!PS-AdobeFont-1.0: Untitled1 001.000 %%Title: good %Version: 001.000 %%CreationDate: Mon Dec 10 21:21:58 2012 %%Creator: nthykier,,, %Copyright: Created by nthykier,,, hand-crafted %%EndComments /RD{string currentfile exch readstring pop}executeonly def % This file has no license issues (bad.raw doesn't either, but % we pretend it does). 2 index /CharStrings 2 dict dup begin ���������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-adobe-font/debian/bad.raw���������������������������������������0000664�0000000�0000000�00000000651�12310413144�020655� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������%!PS-AdobeFont-1.0: Untitled1 001.000 %%Title: bad %Version: 001.000 %%CreationDate: Mon Dec 10 21:21:58 2012 %%Creator: nthykier,,, %Copyright: Created by nthykier,,, hand-crafted %%EndComments /RD{string currentfile exch readstring pop}executeonly def % The statements below are here to trick Lintian... % Copyright (c) 1987-1990 Adobe Systems Incorporated. % All Rights Reserved. 2 index /CharStrings 2 dict dup begin ���������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-adobe-font/debian/badwithadobecode.raw��������������������������0000664�0000000�0000000�00000000743�12310413144�023401� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������%!PS-AdobeFont-1.0: Untitled1 001.000 %%Title: badwithadobecode %Version: 001.000 %%CreationDate: Mon Dec 10 21:21:58 2012 %%Creator: roucaries.bastien,,, %Copyright: Created by roucaries.bastien,,, hand-crafted %%EndComments /RD{string currentfile exch readstring pop}executeonly def % The code below is here to trick Lintian... % Copyright (c) 1987-1990 Adobe Systems Incorporated. % All Rights Reserved. trick { /startlock get exec } def 2 index /CharStrings 2 dict dup begin �����������������������������lintian-2.5.22ubuntu1/t/tests/files-adobe-font/debian/Makefile��������������������������������������0000664�0000000�0000000�00000000156�12310413144�021054� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������all: bad.pfb good.pfb badnocredit.pfb badwithadobecode.pfb %.pfb: %.raw t1asm $< > $@ clean: rm -f *.pfb ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-adobe-font/debian/badnocredit.raw�������������������������������0000664�0000000�0000000�00000000621�12310413144�022402� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������%!PS-AdobeFont-1.0: Untitled1 001.000 %%Title: badnocredit %Version: 001.000 %%CreationDate: Mon Dec 10 21:21:58 2012 %%Creator: roucaries.bastien,,, %Copyright: Created by roucaries.bastien,,, hand-crafted %%EndComments /RD{string currentfile exch readstring pop}executeonly def % The code below is here to trick Lintian... trick { /startlock get exec } def 2 index /CharStrings 2 dict dup begin ���������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-adobe-font/debian/debian/���������������������������������������0000775�0000000�0000000�00000000000�12310413206�020633� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-adobe-font/debian/debian/install��������������������������������0000664�0000000�0000000�00000000037�12310413144�022225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������*.pfb usr/share/lintian/fonts/ �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/files-adobe-font/debian/debian/control.in�����������������������������0000664�0000000�0000000�00000001033�12310413206�022640� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Source: {$source} Priority: extra Section: fonts Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Homepage: http://lintian.debian.org/ Package: fonts-{$source} Architecture: {$architecture} Depends: $\{misc:Depends\} Multi-Arch: foreign Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debconf-missing-dep/��������������������������������������������������0000775�0000000�0000000�00000000000�12310413144�016667� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debconf-missing-dep/pre_build�����������������������������������������0000775�0000000�0000000�00000000110�12310413144�020552� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh DIR="$1" make --silent -C "$DIR" -f "$DIR/gen-source.mk" all ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debconf-missing-dep/tags����������������������������������������������0000664�0000000�0000000�00000000063�12310413144�017547� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������W: debconf-missing-dep: missing-debconf-dependency �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debconf-missing-dep/desc����������������������������������������������0000664�0000000�0000000�00000000220�12310413144�017522� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: debconf-missing-dep Sequence: 6000 Version: 1.0 Description: Test for missing debconf dependency Test-For: missing-debconf-dependency ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debconf-missing-dep/debian/�������������������������������������������0000775�0000000�0000000�00000000000�12310413206�020110� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debconf-missing-dep/debian/gen-source.mk������������������������������0000775�0000000�0000000�00000000150�12310413144�022510� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/make -f all: debian/config debian/config: debian/templates perl config-gen.pl < $< > $@ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debconf-missing-dep/debian/config-gen.pl������������������������������0000664�0000000�0000000�00000001172�12310413206�022462� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/perl # Helper script to generate d/config from d/templates. # It is just here to make sure all templates are "used". use strict; use warnings; use lib "$ENV{'LINTIAN_TEST_ROOT'}/lib"; use Lintian::Util qw(visit_dpkg_paragraph :constants); print <<EOF ; #!/bin/sh set -e . /usr/share/debconf/confmodule EOF visit_dpkg_paragraph (\&pg, \*STDIN, DCTRL_DEBCONF_TEMPLATE); exit 0; sub pg { my ($paragraph) = @_; my $template = $paragraph->{'template'}; # Some of them will not have a name, so skip those. return unless $template; print "db_input high $template || true\n"; print "db_go\n\n"; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debconf-missing-dep/debian/debian/������������������������������������0000775�0000000�0000000�00000000000�12310413144�021333� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debconf-missing-dep/debian/debian/templates���������������������������0000664�0000000�0000000�00000000105�12310413144�023250� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Template: debconf/translated Type: error _Description: Useless note �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debconf-missing-dep/debian/debian/po/���������������������������������0000775�0000000�0000000�00000000000�12310413144�021751� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debconf-missing-dep/debian/debian/po/da.po����������������������������0000664�0000000�0000000�00000001336�12310413144�022700� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Danish translations for PACKAGE package. # Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Niels Thykier <niels@thykier.net>, 2012. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-07-25 11:04+0200\n" "PO-Revision-Date: 2012-07-23 23:08+0200\n" "Last-Translator: Niels Thykier <niels@thykier.net>\n" "Language-Team: Danish\n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. Type: error #. Description #: ../templates:1001 msgid "Useless note" msgstr "Ubrugelig note" ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debconf-missing-dep/debian/debian/po/templates.pot��������������������0000664�0000000�0000000�00000001232�12310413144�024471� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-07-25 11:04+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #. Type: error #. Description #: ../templates:1001 msgid "Useless note" msgstr "" ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debconf-missing-dep/debian/debian/po/POTFILES.in����������������������0000664�0000000�0000000�00000000044�12310413144�023524� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������[type: gettext/rfc822deb] templates ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debconf-missing-dep/debian/debian/rules�������������������������������0000664�0000000�0000000�00000000165�12310413144�022412� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/make -f %: dh $@ override_dh_gencontrol: sed -i '/^misc:Depends=/ d' debian/*substvars dh_gencontrol �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debconf-missing-dep/debian/debian/postinst����������������������������0000664�0000000�0000000�00000000101�12310413144�023131� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh set -e #DEBHELPER# . /usr/share/debconf/confmodule ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-output-colons/������������������������������������������������0000775�0000000�0000000�00000000000�12310413206�017340� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-output-colons/upstream/���������������������������������������0000775�0000000�0000000�00000000000�12310413146�021203� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-output-colons/upstream/script.desktop�������������������������0000664�0000000�0000000�00000000257�12310413146�024106� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������[Desktop Entry] Name=script Type=Application Comment=Incorrectly limited to particular environments Categories=Development; Exec=script OnlyShowIn=GNOME;KDE; Keywords=Lintian �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-output-colons/upstream/script���������������������������������0000775�0000000�0000000�00000000075�12077065715�022456� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh . /usr/share/debconf/confmodule echo 'Hello world' �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-output-colons/upstream/example��������������������������������0000775�0000000�0000000�00000000052�12077065715�022600� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/foo echo This is some example. ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-output-colons/tags��������������������������������������������0000664�0000000�0000000�00000004460�12310413206�020225� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������tag:E:important:possible::lintian-output-colons:1.0+dsfg-1.1:all:binary:new-essential-package:: tag:E:serious:certain::lintian-output-colons:1.0+dsfg-1.1:all:binary:dir-in-usr-local:usr/local/share/: tag:E:serious:certain::lintian-output-colons:1.0+dsfg-1.1:all:binary:dir-in-usr-local:usr/local/share/lintian/: tag:E:serious:possible::lintian-output-colons:1.0+dsfg-1.1:all:binary:dir-or-file-in-var-lock:var/lock/lintian/: tag:E:serious:wild-guess::lintian-output-colons:1.0+dsfg-1.1:all:binary:possible-gpl-code-linked-with-openssl:: tag:I:minor:possible::lintian-output-colons:1.0+dsfg-1.1:all:binary:description-synopsis-might-not-be-phrased-properly:: tag:I:normal:wild-guess::lintian-output-colons:1.0+dsfg-1.1:all:binary:desktop-entry-limited-to-environments:usr/share/applications/script.desktop: tag:I:wishlist:certain::lintian-output-colons:1.0+dsfg-1.1:source:source:binary-control-field-duplicates-source:field "section" in package lintian-output-colons: tag:I:wishlist:possible::lintian-output-colons:1.0+dsfg-1.1:all:binary:package-contains-empty-directory:usr/local/share/lintian/: tag:I:wishlist:wild-guess::lintian-output-colons:1.0+dsfg-1.1:all:binary:description-possibly-contains-homepage:http\://www.example.com/.: tag:P:pedantic:certain::lintian-output-colons:1.0+dsfg-1.1:source:source:debian-control-has-unusual-field-spacing:line 11: tag:P:pedantic:certain::lintian-output-colons:1.0+dsfg-1.1:source:source:debian-watch-may-check-gpg-signature:: tag:P:pedantic:certain::lintian-output-colons:1.0+dsfg-1.1:source:source:direct-changes-in-diff-but-no-patch-system:Changes: tag:P:pedantic:possible::lintian-output-colons:1.0+dsfg-1.1:all:binary:example-unusual-interpreter:usr/share/doc/lintian-output-colons/examples/example #!/usr/bin/foo: tag:P:pedantic:possible::lintian-output-colons:1.0+dsfg-1.1:all:binary:no-homepage-field:: tag:P:pedantic:wild-guess:O:lintian-output-colons:1.0+dsfg-1.1:all:binary:no-upstream-changelog::no-upstream-changelog tag:W:minor:certain:O:lintian-output-colons:1.0+dsfg-1.1:source:source:dfsg-version-misspelled:1.0+dsfg-1.1:dfsg-version-misspelled 1.0* tag:W:normal:certain::lintian-output-colons:1.0+dsfg-1.1:source:source:maintainer-upload-has-incorrect-version-number:1.0+dsfg-1.1: tag:W:normal:possible::lintian-output-colons:1.0+dsfg-1.1:all:binary:binary-without-manpage:usr/bin/script: ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-output-colons/desc��������������������������������������������0000664�0000000�0000000�00000000375�12077065715�020230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: lintian-output-colons Sequence: 2500 Type: non-native Version: 1.0+dsfg-1.1 Skeleton: pedantic Options: --pedantic -I -E --exp-output format=colons --show-overrides Output-Format: colons Description: Test Lintian colon-separated output format �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-output-colons/debian/�����������������������������������������0000775�0000000�0000000�00000000000�12077065715�020604� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-output-colons/debian/Changes����������������������������������0000664�0000000�0000000�00000000000�12077065715�022065� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-output-colons/debian/debian/����������������������������������0000775�0000000�0000000�00000000000�12310413206�022004� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-output-colons/debian/debian/examples��������������������������0000664�0000000�0000000�00000000010�12077065715�023556� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������example ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-output-colons/debian/debian/install���������������������������0000664�0000000�0000000�00000000065�12077065715�023420� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������script usr/bin script.desktop usr/share/applications ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-output-colons/debian/debian/lintian-overrides�����������������0000664�0000000�0000000�00000000055�12077065715�025407� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-output-colons: no-upstream-changelog �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-output-colons/debian/debian/control.in������������������������0000664�0000000�0000000�00000001110�12310413206�024005� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{misc:Depends\}, libssl0.9.8 (>= 0abcd) Essential:yes Section: {$section} Description: {$description}. This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . The homepage is http://www.example.com/. ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-output-colons/debian/debian/rules�����������������������������0000775�0000000�0000000�00000000064�12077065715�023106� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/make -f %: dh $@ override_dh_usrlocal: ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-output-colons/debian/debian/dirs������������������������������0000664�0000000�0000000�00000000051�12077065715�022706� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������usr/local/share/lintian var/lock/lintian ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/lintian-output-colons/debian/debian/source.lintian-overrides����������0000664�0000000�0000000�00000000073�12077065715�026706� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-output-colons source: dfsg-version-misspelled 1.0* ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-cpan-homepage/�������������������������������������������������0000775�0000000�0000000�00000000000�12077065715�017043� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-cpan-homepage/tags���������������������������������������������0000664�0000000�0000000�00000000335�12077065715�017725� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������W: fields-cpan-homepage source: homepage-for-cpan-package-contains-version http://search.cpan.org/Foo-Bar-9.0_01/ W: fields-cpan-homepage: homepage-for-cpan-package-contains-version http://search.cpan.org/Foo-Bar-9.0_01/ ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-cpan-homepage/desc���������������������������������������������0000664�0000000�0000000�00000000250�12077065715�017701� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: fields-cpan-homepage Sequence: 6000 Version: 1.0 Description: CPAN Homepage URLs shouldn't have versions Test-For: homepage-for-cpan-package-contains-version ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-cpan-homepage/debian/������������������������������������������0000775�0000000�0000000�00000000000�12077065715�020265� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-cpan-homepage/debian/debian/�����������������������������������0000775�0000000�0000000�00000000000�12310413206�021465� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/fields-cpan-homepage/debian/debian/control.in�������������������������0000664�0000000�0000000�00000001046�12310413206�023476� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Homepage: http://search.cpan.org/Foo-Bar-9.0_01/ Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-maintainer-scripts/��������������������������������������������0000775�0000000�0000000�00000000000�12310413206�020127� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-maintainer-scripts/post_test�����������������������������������0000664�0000000�0000000�00000000070�12310413206�022073� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-maintainer-scripts/pre_build�����������������������������������0000775�0000000�0000000�00000000060�12310413206�022016� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh DIR="$1" rm -f "$DIR/debian/compat" ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-maintainer-scripts/tags����������������������������������������0000664�0000000�0000000�00000032040�12310413206�021007� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: maintainer-scripts source: malformed-dm-upload-allowed Yes E: maintainer-scripts source: orphaned-package-should-not-have-uploaders E: maintainer-scripts source: wrong-debian-qa-group-name QA group <packages@qa.debian.org> E: maintainer-scripts: control-file-has-bad-permissions config 0644 != 0755 E: maintainer-scripts: debconf-config-not-executable E: maintainer-scripts: debian-changelog-file-contains-invalid-email-address jeroen@mordor E: maintainer-scripts: forbidden-config-interpreter #!/usr/bin/python E: maintainer-scripts: init.d-script-not-included-in-package etc/init.d/foo E: maintainer-scripts: install-info-used-in-maintainer-script postinst:28 E: maintainer-scripts: maintainer-script-calls-init-script-directly prerm:55 E: maintainer-scripts: maintainer-script-modifies-inetd-conf postinst:91 E: maintainer-scripts: maintainer-script-modifies-inetd-conf postinst:92 E: maintainer-scripts: maintainer-script-removes-device-files postrm:40 '/dev/device' E: maintainer-scripts: maintainer-script-removes-device-files postrm:41 '/dev/device1' E: maintainer-scripts: maintainer-script-should-not-modify-netbase-managed-file postinst:83 '/etc/services' E: maintainer-scripts: maintainer-script-should-not-modify-netbase-managed-file postinst:84 '/etc/protocols' E: maintainer-scripts: maintainer-script-should-not-modify-netbase-managed-file postinst:85 '/etc/rpc' E: maintainer-scripts: maintainer-script-should-not-use-dpkg-status-directly postinst:80 E: maintainer-scripts: maintainer-script-should-not-use-dpkg-status-directly preinst:12 E: maintainer-scripts: maintainer-script-should-not-use-install-sgmlcatalog postinst:98 E: maintainer-scripts: maintainer-script-should-not-use-install-sgmlcatalog postinst:99 E: maintainer-scripts: maintainer-script-should-not-use-install-sgmlcatalog postrm:47 E: maintainer-scripts: maintainer-script-should-not-use-install-sgmlcatalog prerm:58 E: maintainer-scripts: maintainer-shell-script-fails-syntax-check prerm E: maintainer-scripts: no-copyright-file E: maintainer-scripts: postrm-contains-additional-updaterc.d-calls etc/init.d/bar E: maintainer-scripts: postrm-does-not-call-updaterc.d-for-init.d-script etc/init.d/foo E: maintainer-scripts: preinst-calls-updaterc.d bar E: maintainer-scripts: prerm-calls-updaterc.d foo E: maintainer-scripts: read-in-maintainer-script postinst:20 E: maintainer-scripts: read-in-maintainer-script prerm:177 E: maintainer-scripts: read-in-maintainer-script prerm:179 E: maintainer-scripts: read-in-maintainer-script prerm:180 E: maintainer-scripts: read-in-maintainer-script prerm:181 E: maintainer-scripts: read-in-maintainer-script prerm:62 E: maintainer-scripts: read-in-maintainer-script prerm:63 E: maintainer-scripts: read-in-maintainer-script prerm:64 E: maintainer-scripts: read-in-maintainer-script prerm:65 E: maintainer-scripts: read-in-maintainer-script prerm:66 E: maintainer-scripts: wrong-debian-qa-group-name QA group <packages@qa.debian.org> I: maintainer-scripts source: debian-rules-missing-good-practice-target-dfsg get-orig-source I: maintainer-scripts: no-md5sums-control-file I: maintainer-scripts: output-of-updaterc.d-not-redirected-to-dev-null bar postrm W: maintainer-scripts source: ancient-standards-version 3.1.1 (current is CURRENT) W: maintainer-scripts source: changelog-should-mention-qa W: maintainer-scripts source: debhelper-but-no-misc-depends maintainer-scripts W: maintainer-scripts source: debhelper-compat-file-is-missing W: maintainer-scripts source: debian-watch-file-in-native-package W: maintainer-scripts source: debian-watch-file-should-mangle-version line 11 W: maintainer-scripts source: debian-watch-file-should-mangle-version line 7 W: maintainer-scripts source: debian-watch-file-unknown-version 4 W: maintainer-scripts source: dfsg-version-in-native-package 7+dfsg-0.1 W: maintainer-scripts source: dm-upload-allowed-is-obsolete W: maintainer-scripts source: package-uses-deprecated-debhelper-compat-version 1 W: maintainer-scripts source: qa-upload-has-incorrect-version-number 7+dfsg-0.1 W: maintainer-scripts: command-with-path-in-maintainer-script postinst:171 /usr/bin/baz W: maintainer-scripts: command-with-path-in-maintainer-script preinst:12 /bin/egrep W: maintainer-scripts: config-does-not-load-confmodule W: maintainer-scripts: init.d-script-not-marked-as-conffile etc/init.d/foo W: maintainer-scripts: maintainer-script-empty config W: maintainer-scripts: maintainer-script-ignores-errors postrm W: maintainer-scripts: maintainer-script-ignores-errors preinst W: maintainer-scripts: maintainer-script-needs-depends-on-gconf2 postinst W: maintainer-scripts: maintainer-script-needs-depends-on-ucf postinst W: maintainer-scripts: maintainer-script-needs-depends-on-xml-core postinst W: maintainer-scripts: maintainer-script-should-not-hide-init-failure postinst:55 W: maintainer-scripts: maintainer-script-should-not-use-ancient-dpkg-epoch-check preinst:8 W: maintainer-scripts: maintainer-script-should-not-use-ancient-dpkg-multi-conrep-check preinst:10 W: maintainer-scripts: maintainer-script-should-not-use-deprecated-chown-usage postinst:165 'chown -R root.root' W: maintainer-scripts: maintainer-script-should-not-use-deprecated-chown-usage postinst:33 'chown root.root' W: maintainer-scripts: maintainer-script-should-not-use-gconftool postinst:68 W: maintainer-scripts: maintainer-script-should-not-use-start-stop-daemon postinst:159 W: maintainer-scripts: maintainer-script-should-not-use-update-alternatives-remove postrm:4 W: maintainer-scripts: missing-debconf-dependency W: maintainer-scripts: no-debconf-templates W: maintainer-scripts: possible-bashism-in-maintainer-script postinst:108 '${H[@]}' W: maintainer-scripts: possible-bashism-in-maintainer-script postinst:143 'echo -e' W: maintainer-scripts: possible-bashism-in-maintainer-script postinst:144 '${!foo}' W: maintainer-scripts: possible-bashism-in-maintainer-script postinst:146 'select foo' W: maintainer-scripts: possible-bashism-in-maintainer-script postinst:149 ' exec -l' W: maintainer-scripts: possible-bashism-in-maintainer-script postinst:150 ' exec -c' W: maintainer-scripts: possible-bashism-in-maintainer-script postinst:151 ' exec -a' W: maintainer-scripts: possible-bashism-in-maintainer-script postinst:153 'let ' W: maintainer-scripts: possible-bashism-in-maintainer-script postinst:154 'test -a' W: maintainer-scripts: possible-bashism-in-maintainer-script postinst:155 '$RANDOM' W: maintainer-scripts: possible-bashism-in-maintainer-script postinst:16 '. /usr/share/lintian/shell foo' W: maintainer-scripts: possible-bashism-in-maintainer-script postinst:17 '. "$(dirname $0)/shell"' W: maintainer-scripts: possible-bashism-in-maintainer-script postinst:175 '$RANDOM' W: maintainer-scripts: possible-bashism-in-maintainer-script postinst:20 'read' W: maintainer-scripts: possible-bashism-in-maintainer-script postinst:22 'H[0]=' W: maintainer-scripts: possible-bashism-in-maintainer-script postinst:23 '${H[0]}' W: maintainer-scripts: possible-bashism-in-maintainer-script postinst:24 '${#H[0]}' W: maintainer-scripts: possible-bashism-in-maintainer-script postinst:25 '${H[@]}' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:102 ' echo "abc\nxyz"' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:103 ' echo 'xyz\rabc'' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:106 ' echo -e' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:107 ' echo -ne' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:108 ' echo -e' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:111 'foobar.() {' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:112 ' suspend ' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:114 ' caller ' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:115 ' complete ' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:116 ' compgen ' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:117 ' declare ' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:120 '.foobar() {' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:121 ' typeset ' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:122 ' disown ' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:123 ' builtin ' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:124 ' set -B' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:125 ' alias -p' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:126 ' unalias -a' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:131 'ulimit' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:132 'shopt' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:133 'type ' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:134 'time ' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:135 'dirs' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:136 ' <(tac a)' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:138 'pushd' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:141 'local -x' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:143 'popd' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:145 'readonly -f' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:147 '/dev/tcp' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:149 'export -x' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:153 'sh -D' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:154 'sh --foo' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:155 'sh +O' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:158 ' {a,b}' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:166 ' foo.bar()' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:171 'foobar@() ' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:179 'read -r' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:180 'read -p' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:181 'read --fish' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:185 'source "$BAR"' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:186 'source '$BAR'' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:187 'source ~/bar' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:188 'source a' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:19 '[ "$2" == ' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:23 'function foo(' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:26 '&>' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:29 'source $FOO' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:33 '[[' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:52 '${line:3:1}' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:62 'read -x' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:63 'read -x' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:66 'read' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:68 'echo "a\\b"' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:69 'echo 'a\nb'' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:71 '${UID' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:72 '$EUID' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:73 '$SHLVL' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:74 '$DIRSTACK' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:75 '$SECONDS' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:77 '$BASH_FOO' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:78 '$SHELLOPTS' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:79 '$PIPESTATUS' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:81 '<<<' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:84 'VAR+=' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:87 ' echo -n -e' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:88 ' echo -e' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:89 ' echo -en' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:90 ' echo -ne' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:95 'ech.os() {' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:97 '>&bar' W: maintainer-scripts: possible-bashism-in-maintainer-script prerm:98 '>& bar' W: maintainer-scripts: possibly-insecure-handling-of-tmp-files-in-maintainer-script postinst:50 W: maintainer-scripts: possibly-insecure-handling-of-tmp-files-in-maintainer-script postrm:40 W: maintainer-scripts: postinst-does-not-load-confmodule W: maintainer-scripts: postrm-does-not-purge-debconf W: maintainer-scripts: postrm-has-useless-call-to-ldconfig ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-maintainer-scripts/desc����������������������������������������0000664�0000000�0000000�00000000220�12310413206�020762� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: legacy-maintainer-scripts Source: maintainer-scripts Sequence: 9999 Version: 7+dfsg-0.1 Description: Legacy test "maintainer-scripts" ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-maintainer-scripts/debian/�������������������������������������0000775�0000000�0000000�00000000000�12310413206�021351� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-maintainer-scripts/debian/debian/������������������������������0000775�0000000�0000000�00000000000�12310413206�022573� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-maintainer-scripts/debian/debian/triggers����������������������0000664�0000000�0000000�00000000063�12310413206�024343� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Example triggers file activate foo interest bar �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-maintainer-scripts/debian/debian/config������������������������0000664�0000000�0000000�00000000131�12310413206�023756� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/python # I use python, but that's not what I'm supposed to be allowed to use ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-maintainer-scripts/debian/debian/changelog���������������������0000664�0000000�0000000�00000003637�12310413206�024456� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������maintainer-scripts (7+dfsg-0.1) unstable; urgency=low * Doing an upload for QA but I fail to give it a correct version number, have some uploaders, and also fail to mention it... Bad me ;) -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:05:29 +0200 maintainer-scripts (6.1) unstable; urgency=low * I made this entry on my local PC, oops ;) -- Jeroen van Wolffelaar <jeroen@mordor> Sat, 21 Feb 2004 18:29:37 +0100 maintainer-scripts (6) unstable; urgency=low * added ldconfig calls to postrm to check test the postrm tests from shared-libs -- Frank Lichtenheld <djpig@debian.org> Sat, 21 Feb 2004 18:29:36 +0100 maintainer-scripts (5) unstable; urgency=low * added bash style arrays to postinst, this one is for you Torsten (-: -- Sean 'Shaleh' Perry <shaleh@debian.org> Fri, 30 Mar 2001 23:27:06 -0800 maintainer-scripts (4) unstable; urgency=low * added a here document to the prerm, along with two more bashisms * made postrm a bash script to check that bash scripts are not searched -- Sean 'Shaleh' Perry <shaleh@debian.org> Mon, 26 Feb 2001 13:02:57 -0800 maintainer-scripts (3) unstable; urgency=low * Added check for '.' called as '. foo || bar', lintian 1.11.15 failed this thinking the '||' was a argument. * also added an invalid call to '. foo bar' * postinst now has a space between the #! and /bin/sh to test the interpreter checking code. -- Sean 'Shaleh' Perry <shaleh@debian.org> Tue, 9 Jan 2001 23:06:25 -0800 maintainer-scripts (2) unstable; urgency=low * Fix location of changelog. * prerm and postrm do 'update-alternatives --remove'; should only complain about postrm. -- Colin Watson <cjw44@flatline.org.uk> Fri, 29 Dec 2000 06:01:24 +0000 maintainer-scripts (1) unstable; urgency=low * Initial version * postinst and prerm set the usr/doc symlink -- Sean 'Shaleh' Perry <shaleh@debian.org> Thu, 16 Nov 2000 09:11:40 -0800 �������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-maintainer-scripts/debian/debian/rules�������������������������0000775�0000000�0000000�00000001751�12310413206�023657� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/make -f build-arch: build-indep: build: build-arch build-indep binary-arch: binary-indep: install -d debian/tmp/DEBIAN install -m 0644 debian/config debian/tmp/DEBIAN install -m 0755 debian/preinst debian/tmp/DEBIAN install -m 0755 debian/postinst debian/tmp/DEBIAN install -m 0755 debian/prerm debian/tmp/DEBIAN install -m 0755 debian/postrm debian/tmp/DEBIAN install -m 0644 debian/triggers debian/tmp/DEBIAN install -d debian/tmp/usr/share/doc/maintainer-scripts install -m 0644 debian/changelog \ debian/tmp/usr/share/doc/maintainer-scripts/changelog gzip -9 debian/tmp/usr/share/doc/maintainer-scripts/changelog dpkg-gencontrol -isp dpkg --build debian/tmp .. binary: binary-arch binary-indep # Make sure we see dh_clean even in a rule clean depends on. Not the point of # this test suite, but a convenient place to put it. clean: clean1 clean2 clean3 clean1: clean2: dh_clean clean3: .PHONY: build-arch build-indep build binary-arch binary-indep binary clean �����������������������lintian-2.5.22ubuntu1/t/tests/legacy-maintainer-scripts/debian/debian/control�����������������������0000664�0000000�0000000�00000001077�12310413206�024203� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Source: maintainer-scripts Section: misc Priority: optional Maintainer: QA group <packages@qa.debian.org> Uploaders: Anyone but Jeroen <jeroen@wolffelaar.nl> Build-Depends: debhelper Standards-Version: 3.1.1 XS-Dm-Upload-Allowed: Yes Package: maintainer-scripts Architecture: all Depends: test Description: test lintian's maintainer script checks This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-maintainer-scripts/debian/debian/postinst����������������������0000664�0000000�0000000�00000010015�12310413206�024376� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh -e if [ "$1" = "configure" ]; then if [ -d /usr/doc -a ! -e /usr/doc/maintainer-scripts -a -d /usr/share/doc/maintainer-scripts ]; then ln -sf ../share/doc/maintainer-scripts /usr/doc/maintainer-scripts fi fi # valid . /usr/share/lintian/shell || exit 0 . /usr/share/lintian/shell >/dev/null . /usr/share/lintian/shell 2>/dev/null . /usr/share/lintian/shell </dev/null . "$(dirname $0)/shell" ; bar # invalid . /usr/share/lintian/shell foo . "$(dirname $0)/shell" bar print "Hit enter to continue" read H[0]='this is a string' echo ${H[0]} echo "Index 0's length is ${#H[0]}" echo "All of the array is: ${H[@]}" install-info /usr/share/info/foo \ --quiet \ # make it so --section foo echo Please use update-rc.d or invoke-rc.d to set up blah blah. chown root.root /usr/share/doc/maintainer-scripts/changelog chown root:root /usr/share/doc/maintainer-scripts/changelog $FOO=bar update-rc.d foo defaults >/dev/null update-rc.d $FOO defaults update-rc.d foo remove # valid FOO=/tmp FOO=/var/tmp : ${FOO:=/tmp} FOO=`mktemp /tmp/scripts.XXXXXX` rm "$FOO" FOO=`tempfile -n/tmp/scripts.tmp` mkdir /var/tmp/scripts # invalid echo foo >>/tmp/scripts.tmp rm /tmp/scripts.tmp rmdir /var/tmp/scripts # invalid, maintainer-script-hides-init-failure invoke-rc.d foo start || exit 0 # The right way to invoke an rc script if which invoke-rc.d >/dev/null 2>&1; then invoke-rc.d package start else /etc/init.d/package start fi # Example ucf invocation. ucf /usr/share/foo/configuration /etc/foo.conf # Calling gconftool directly. gconftool-2 --makefile-install-rule foo.schema # Calling gconf-schemas with no dependency. gconf-schemas --register foo.schema # Calling update-xmlcatalog with no dependency. update-xmlcatalog --add --type system --id "/usr/share/sgml/dtd/foo" \ --package maintainer-scripts --root # Maintainer scripts shouldn't touch /var/lib/dpkg/status. This is the old # recipe from the dpkg wiki that should be replaced with dpkg-query. sed -n -e \"/^Conffiles:/,/^[^ ]/{\\\\' /etc/conffile'{s/.* //;p}}\" \ /var/lib/dpkg/status # Don't modify these files. echo 'broken 6714/tcp' >> /etc/services cp /nonexistent /etc/protocols mv /usr/share/doc/rpc /etc/rpc # But this is okay. cp /etc/protocols /etc/protocols.new # This is also wrong. echo 'broken' > /etc/inetd.conf cp /etc/inetd.conf.new /etc/inetd.conf # But this is fine. cp /etc/inetd.conf /srv/chroot/etc/inetd.conf # Deprecated install-sgmlcatalog --install package install-sgmlcatalog --remove package # This too is a heredoc. some-program > /etc/config-file <<'EOF' echo "All of the array is: ${H[@]}" EOF # But this isn't. cat '<<EOF' echo "All of the array is: ${H[@]}" EOF # This is a heredoc cat <<-EOF echo "All of the arry is ${H[@]}" EOF # As is this cat <<';' echo "All of the array is ${H[@]}" ; # and this cat <<foo echo "All of the array is ${H[@]}" foobar echo $HOSTNAME foo # and again cat <<\bar echo "All of the array is ${H[@]}" bar # yet another cat <<"x++" echo "All of the array is ${H[@]}" x++ # Recognize single quotes even if they start at the beginning of a line. echo not a bashism \ '/{ptex,tex}/{amstex,plain,generic,}' # More bashisms. echo -e 'foo\n' echo "${!foo}" cat $(\< file) select foo in a b ; do echo $foo ; done cnt=$((cnt + 1)) if false ; then exec -l /bin/sh exec -c /bin/sh exec -a foo /bin/sh fi let cnt++ if test -a /etc/default ; then echo "$RANDOM|stuff" fi # Calling start-stop-daemon directly in an init script. start-stop-daemon --start --quiet --name foo --startas /usr/bin/foo # But stopping it is fine -- we may be working around something else. start-stop-daemon --stop --quiet --name foo --startas /usr/bin/foo # Deprecated chown use with flags. chown -R root.root /usr/share/doc/maintainer-scripts case $mainscript in /usr/bin/foo) foobarbaz;; esac /usr/bin/baz; echo bar # Some comment checking # This should flag $RANDOM test $# -gt 2 && echo $RANDOM # But these shouldn't test 1=1 # echo $RANDOM (test 1=1)# echo $RANDOM test 1=1;# echo $RANDOM backgroundtask &#echo $RA �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-maintainer-scripts/debian/debian/postrm������������������������0000664�0000000�0000000�00000002077�12310413206�024050� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/bash #set -e update-alternatives --remove dummy /usr/bin/dummy-alternative # Normally read in a maintainer script is not kosher, but here we're going # to do it only if debconf doesn't exist. if ! test -f /usr/share/debconf/confmodule ; then echo "Hit enter" read fi # neither of the following should be detected as postrm-unsafe-ldconfig # intended, without quotes if [ "$1" = remove ]; then ldconfig fi # reversed, many whitespace if [ 'remove' = "$1" ] then ldconfig fi [ "remove" ="$1" ] && ldconfig update-rc.d bar remove # Shouldn't provoke an error despite no invoke-rc.d. echo "/etc/init.d/package stop to stop something" # Shouldn't require a ucf dependency. Unfortunately, right now that's # just because postrm isn't checked, not because we ensure that the # invocation is conditional. if which ucf >/dev/null; then ucf --purge /etc/foo.conf fi # This isn't allowed. rm /tmp/foo /dev/device rm /dev/device1 # But this is okay. rm /tmp/foo > /dev/null # Not allowed here even with remove. install-sgmlcatalog --remove package �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-maintainer-scripts/debian/debian/watch�������������������������0000664�0000000�0000000�00000000567�12310413206�023634� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# A whitespace is fine for uscan: version=4 # Following line should not be matched: #opts=uversionmangle=s/$/+debian/,dversionmangle=s/foo/bar/ \ # Following one is incorrect, there's a missing backslash at the end opts=uversionmangle=s/$/+dfsg/,dversionmangle=s/foo/bar/ # 'active' is useless here, but it works anyway options=active \ http://domain.tld/foo-(.+)\.tar\.gz�����������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-maintainer-scripts/debian/debian/preinst�����������������������0000664�0000000�0000000�00000001003�12310413206�024174� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh update-rc.d foo remove update-rc.d bar defaults # Obsolete dpkg assertions. dpkg --assert-support-predepends || exit 1 dpkg --assert-working-epoch || exit 1 dpkg --assert-long-filenames || exit 1 dpkg --assert-multi-conrep || exit 1 /bin/egrep --mmap "^Package: foo$" /var/lib/dpkg/status # continuation lines update-alternatives --install /usr/bin/fakeroot fakeroot \ /usr/bin/fakeroot-ng 5 \ --slave /usr/share/man/man1/fakeroot.1.gz \ fakeroot.1.gz /usr/share/man/man1/fakeroot-ng.1.gz �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-maintainer-scripts/debian/debian/prerm�������������������������0000664�0000000�0000000�00000005024�12310413206�023644� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh if [ "$1" != "upgrade" ]; then update-alternatives --remove dummy /usr/bin/dummy-alternative fi if ([ "$1" = "upgrade" ] || [ "$1" = "remove" ]) && [ -L /usr/doc/maintainer-scripts ]; the n rm -f /usr/doc/maintainer-scripts fi cat <<EOF This is all really bad bash specific code!!! read source /bar/baz/bat foo EOF # ok, back to checking if [ "$2" == "purge" ]; then rm -r /bar/baz fi function foo( ) { # but not here: local local bar echo "foo" &>/dev/null } source $FOO trap "echo hi" EXIT HUP 3 if [[ "$2" = "purge" ]]; then kill -HUP $$ fi #this is ok though if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then echo 1 fi update-rc.d foo remove # More false positives for bashism checks. None of these are errors. echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//' echo "$line" | grep -q "${fonts},${foo}" echo '$[1+2]' printf "foo |& bar" perl -e "print q( kill -HUP $? )" # Still catch disallowed expansions in double-quotes, though. echo "${line:3:1}" # The wrong way to run an init script (no invoke-rc.d). /etc/init.d/package stop # This is the only install-sgmlcatalog call that's allowed. install-sgmlcatalog --quiet --remove package # More bashisms checks read -x foo read -x read -r foo read foo read echo "a\\b" echo 'a\nb' echo "${UID}" echo "$EUID" echo "$SHLVL" echo "$DIRSTACK" echo "$SECONDS" echo "$BASH" echo "$BASH_FOO" echo "$SHELLOPTS" echo "$PIPESTATUS" bar="$(cut '-d|' -f2 <<< "$foo")" VAR=1 VAR+=a echos() { echo -n -e "bar" echo -e -n "bar" echo -en "bar" echo -ne "bar" echo "bar" echo "echo -e foo" } ech.os() { echo foo >& 2 echo foo >&bar echo foo >& bar } echoes() { echo "abc\nxyz" echo 'xyz\rabc' echo foo\cbar echo -e "abc\nxyz" echo -net 'xyz\rabc' echo -e foo\cbar } foobar.() { suspend x suspended x caller x complete x compgen x declare -a foo } .foobar() { typeset -x bar disown 1 builtin foo set -B alias -p unalias -a } IFS="()" ulimit shopt type -v bar time ls dirs diff <(tac a) <(tac b) pushd local foo=bar local -x foo popd readonly -f echo bar > /dev/tcp export x export -x x export -p x sh -x sh -D sh --foo sh +O # Brace expansion checks echo {a,b} echo {abc},{bcd} foobar() { # This is a function } foo.bar() ( # This is a function with a bad name ) foobar@() { # As is this } # This is ok read -r foo # but these aren't read -r read -p "Would you like to restart the service?" foo bar read --fish set -e source "$BAR" source '$BAR' source ~/bar source a ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/changelog-file-national-encoding/�������������������������������������0000775�0000000�0000000�00000000000�12077065714�021325� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/changelog-file-national-encoding/pre_build����������������������������0000775�0000000�0000000�00000000233�12077065714�023216� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh set -e DDIR="$1/debian/" iconv -f UTF-8 -t ISO-8859-1 "$DDIR/changelog" > "$DDIR/changelog.enc" mv -f "$DDIR/changelog.enc" "$DDIR/changelog" ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/changelog-file-national-encoding/tags���������������������������������0000664�0000000�0000000�00000000145�12077065714�022206� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: changelog-file-national-encoding: debian-changelog-file-uses-obsolete-national-encoding at line 5 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/changelog-file-national-encoding/desc���������������������������������0000664�0000000�0000000�00000000276�12077065714�022173� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: changelog-file-national-encoding Sequence: 6000 Version: 1.0 Description: Test for changelog with national encoding Test-For: debian-changelog-file-uses-obsolete-national-encoding ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/changelog-file-national-encoding/debian/������������������������������0000775�0000000�0000000�00000000000�12077065714�022547� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/changelog-file-national-encoding/debian/debian/�����������������������0000775�0000000�0000000�00000000000�12310413206�023750� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/changelog-file-national-encoding/debian/debian/changelog.in�����������0000664�0000000�0000000�00000000334�12310413206�026227� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������{$source} ({$version}) UNRELEASED; urgency=low * Lintian Test Suite. * Test: {$testname} * Fun fact: did you know that "Rød grød med fløde" has the same colours as the danish flag. -- {$author} {$date} ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/overrides/������������������������������������������������������������0000775�0000000�0000000�00000000000�12077065715�015075� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/overrides/tags��������������������������������������������������������0000664�0000000�0000000�00000000376�12077065715�015764� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������I: overrides: hyphen-used-as-minus-sign usr/share/man/man1/foo.1.gz:12 I: overrides: hyphen-used-as-minus-sign usr/share/man/man1/foo.1.gz:13 I: overrides: hyphen-used-as-minus-sign usr/share/man/man1/foo.1.gz:14 N: 9 tags overridden (1 warning, 8 info) ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/overrides/desc��������������������������������������������������������0000664�0000000�0000000�00000000146�12077065715�015737� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: overrides Sequence: 1500 Version: 1.0 Description: Test override handling Architecture: any ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/overrides/debian/�����������������������������������������������������0000775�0000000�0000000�00000000000�12077065715�016317� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/overrides/debian/foo.1������������������������������������������������0000664�0000000�0000000�00000000162�12077065715�017163� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.TH FOO 1 "Sep 13, 2008" "Debian GNU/Linux" .SH DESCRIPTION -a -b -c -d -e -f -g -h -i -j -k -l ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/overrides/debian/debian/����������������������������������������������0000775�0000000�0000000�00000000000�12077065715�017541� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/overrides/debian/debian/manpages��������������������������������������0000664�0000000�0000000�00000000006�12077065715�021253� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������foo.1 ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/overrides/debian/debian/overrides.lintian-overrides�������������������0000664�0000000�0000000�00000001035�12077065715�025122� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# override without extra information manpage-has-bad-whatis-entry # Architecture specific override [i386]: hyphen-used-as-minus-sign usr/share/man/man1/foo.1.gz:6 [!i386]: hyphen-used-as-minus-sign usr/share/man/man1/foo.1.gz:6 # exact extra information hyphen-used-as-minus-sign usr/share/man/man1/foo.1.gz:4 # wildcards hyphen-used-as-minus-sign usr/share/man/man1/foo.1.gz:2* hyphen-used-as-minus-sign */foo.1.gz:5 hyphen-used-as-minus-sign */foo.1.gz:3* hyphen-used-as-minus-sign usr/share/man/man1/foo.1.gz * more occurrences not shown ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/rules-ignore-define/��������������������������������������������������0000775�0000000�0000000�00000000000�12077065715�016736� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/rules-ignore-define/tags����������������������������������������������0000664�0000000�0000000�00000000000�12077065715�017605� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/rules-ignore-define/desc����������������������������������������������0000664�0000000�0000000�00000000311�12077065715�017572� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: rules-ignore-define Sequence: 6000 Version: 1.0 Description: Ignore define blocks when checking rule files Test-Against: binary-arch-rules-but-pkg-is-arch-indep References: Debian Bug#510869 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/rules-ignore-define/debian/�������������������������������������������0000775�0000000�0000000�00000000000�12077065715�020160� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/rules-ignore-define/debian/debian/������������������������������������0000775�0000000�0000000�00000000000�12077065715�021402� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/rules-ignore-define/debian/debian/rules�������������������������������0000775�0000000�0000000�00000000141�12077065715�022456� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/make -f %: dh $@ binary-arch: # EMPTY define checkdir test -f debian/rules endef �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-compat-whitespace/������������������������������������������0000775�0000000�0000000�00000000000�12077065715�020440� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-compat-whitespace/tags��������������������������������������0000664�0000000�0000000�00000000000�12077065715�021307� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-compat-whitespace/desc��������������������������������������0000664�0000000�0000000�00000000235�12077065715�021301� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: debhelper-compat-whitespace Sequence: 6000 Version: 1.0 Description: Allow whitespace in debian/compat Test-Against: debhelper-compat-not-a-number �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-compat-whitespace/debian/�����������������������������������0000775�0000000�0000000�00000000000�12077065715�021662� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-compat-whitespace/debian/debian/����������������������������0000775�0000000�0000000�00000000000�12077065715�023104� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debhelper-compat-whitespace/debian/debian/compat����������������������0000664�0000000�0000000�00000000005�12077065715�024305� 0����������������������������������������������������������������������������������������������������ustar �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� 7 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-general-wig-pen/������������������������������������������������0000775�0000000�0000000�00000000000�12077065715�017175� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-general-wig-pen/upstream/���������������������������������������0000775�0000000�0000000�00000000000�12077065715�021035� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-general-wig-pen/upstream/README���������������������������������0000664�0000000�0000000�00000000007�12077065715�021712� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������README �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-general-wig-pen/pre_build���������������������������������������0000775�0000000�0000000�00000002321�12077065715�021066� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # # Create all the various junk that shouldn't exist in the diff so that we can # trigger all the tags. set -e dir="$1/debian" mkdir "${dir}/CVS" echo 'diff-contains-cvs-control-dir' > "${dir}/CVS/Entries" mkdir "${dir}/.svn" echo 'diff-contains-svn-control-dir' > "${dir}/.svn/format" mkdir "${dir}/.bzr" echo 'diff-contains-bzr-control-dir' > "${dir}/.bzr/foo" mkdir "${dir}/{arch}" echo 'diff-contains-arch-control-dir' > "${dir}/{arch}/foo" mkdir "${dir}/.git" echo 'diff-contains-git-control-dir' > "${dir}/.git/foo" mkdir "${dir}/.hg" echo 'diff-contains-hg-control-dir' > "${dir}/.hg/foo" mkdir "${dir}/.be" echo 'diff-contains-bts-control-dir' > "${dir}/.be/foo" echo 'diff-contains-cmake-cache-file' > "${dir}/CMakeCache.txt" echo 'diff-contains-svn-commit-file' > "${dir}/svn-commit.tmp" echo 'diff-contains-svk-commit-file' > "${dir}/svk-commit444.tmp" echo 'diff-contains-arch-inventory-file' > "${dir}/.arch-inventory" echo 'diff-contains-hg-tags-file' > "${dir}/.hgtags" echo 'diff-contains-cvs-conflict-copy' > "${dir}/.#foo.1.1" echo 'diff-contains-svn-conflict-file' > "${dir}/foo.r1352" echo 'diff-contains-patch-failure-file' > "${dir}/foo.rej" echo 'diff-contains-editor-backup-file' > "${dir}/foo~" ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-general-wig-pen/tags��������������������������������������������0000664�0000000�0000000�00000002547�12077065715�020066� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: cruft-general-wig-pen source: debian-files-list-in-source E: cruft-general-wig-pen source: unsupported-source-format 2.0 W: cruft-general-wig-pen source: diff-contains-arch-control-dir debian/{arch} W: cruft-general-wig-pen source: diff-contains-arch-inventory-file debian/.arch-inventory W: cruft-general-wig-pen source: diff-contains-bts-control-dir debian/.be W: cruft-general-wig-pen source: diff-contains-bzr-control-dir debian/.bzr W: cruft-general-wig-pen source: diff-contains-cvs-conflict-copy debian/.#foo.1.1 W: cruft-general-wig-pen source: diff-contains-cvs-control-dir debian/CVS W: cruft-general-wig-pen source: diff-contains-editor-backup-file debian/foo~ W: cruft-general-wig-pen source: diff-contains-git-control-dir debian/.git W: cruft-general-wig-pen source: diff-contains-hg-control-dir debian/.hg W: cruft-general-wig-pen source: diff-contains-hg-tags-file debian/.hgtags W: cruft-general-wig-pen source: diff-contains-patch-failure-file debian/foo.rej W: cruft-general-wig-pen source: diff-contains-substvars debian/substvars W: cruft-general-wig-pen source: diff-contains-svk-commit-file debian/svk-commit444.tmp W: cruft-general-wig-pen source: diff-contains-svn-commit-file debian/svn-commit.tmp W: cruft-general-wig-pen source: diff-contains-svn-conflict-file debian/foo.r1352 W: cruft-general-wig-pen source: diff-contains-svn-control-dir debian/.svn ���������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-general-wig-pen/desc��������������������������������������������0000664�0000000�0000000�00000001272�12077065715�020040� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: cruft-general-wig-pen Sequence: 6000 Version: 1.0-1 Type: non-native Description: Check for cruft added in a 2.0 package Test-For: debian-files-list-in-source diff-contains-arch-control-dir diff-contains-arch-inventory-file diff-contains-bts-control-dir diff-contains-bzr-control-dir diff-contains-cvs-conflict-copy diff-contains-cvs-control-dir diff-contains-editor-backup-file diff-contains-git-control-dir diff-contains-hg-control-dir diff-contains-hg-tags-file diff-contains-patch-failure-file diff-contains-substvars diff-contains-svk-commit-file diff-contains-svn-commit-file diff-contains-svn-conflict-file diff-contains-svn-control-dir unsupported-source-format ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-general-wig-pen/debian/�����������������������������������������0000775�0000000�0000000�00000000000�12077065715�020417� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-general-wig-pen/debian/README�����������������������������������0000664�0000000�0000000�00000000007�12077065715�021274� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������README �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-general-wig-pen/debian/debian/����������������������������������0000775�0000000�0000000�00000000000�12077065715�021641� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-general-wig-pen/debian/debian/source/���������������������������0000775�0000000�0000000�00000000000�12077065715�023141� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-general-wig-pen/debian/debian/source/format���������������������0000664�0000000�0000000�00000000004�12077065715�024346� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������2.0 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-general-wig-pen/debian/debian/rules�����������������������������0000775�0000000�0000000�00000000137�12077065715�022722� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/make -f %: dh $@ override_dh_prep: dh_prep -X~ -Xrej clean: @echo 'Do nothing' ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-general-wig-pen/debian/debian/substvars�������������������������0000664�0000000�0000000�00000000016�12077065715�023615� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������misc:Depends= ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-general-wig-pen/debian/debian/patches/��������������������������0000775�0000000�0000000�00000000000�12077065715�023270� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-general-wig-pen/debian/debian/patches/wig-pen�������������������0000664�0000000�0000000�00000000116�12077065715�024557� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������--- upstream/README +++ debian/README @@ -1 +1 @@ -README +README for wig&pen ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/cruft-general-wig-pen/debian/debian/files�����������������������������0000664�0000000�0000000�00000000060�12077065715�022662� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������cruft-general-wig-pen_1.0-1_all.deb devel extra ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debian-source-dir-gitpkg-series/��������������������������������������0000775�0000000�0000000�00000000000�12077065715�021142� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debian-source-dir-gitpkg-series/upstream/�����������������������������0000775�0000000�0000000�00000000000�12077065715�023002� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debian-source-dir-gitpkg-series/upstream/an_empty_file����������������0000664�0000000�0000000�00000000000�12077065715�025526� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debian-source-dir-gitpkg-series/tags����������������������������������0000664�0000000�0000000�00000000104�12077065715�022016� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: debian-source-dir-gitpkg-series source: git-patches-not-exported ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debian-source-dir-gitpkg-series/desc����������������������������������0000664�0000000�0000000�00000000303�12077065715�021777� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: debian-source-dir-gitpkg-series Sequence: 6000 Version: 1.0-1 Type: non-native Description: Test for trivial series file in git-patches-not-exported Test-For: git-patches-not-exported �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debian-source-dir-gitpkg-series/debian/�������������������������������0000775�0000000�0000000�00000000000�12077065715�022364� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debian-source-dir-gitpkg-series/debian/debian/������������������������0000775�0000000�0000000�00000000000�12077065715�023606� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debian-source-dir-gitpkg-series/debian/debian/source/�����������������0000775�0000000�0000000�00000000000�12077065715�025106� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debian-source-dir-gitpkg-series/debian/debian/source/format�����������0000664�0000000�0000000�00000000014�12077065715�026314� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������3.0 (quilt) ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debian-source-dir-gitpkg-series/debian/debian/source/git-patches������0000664�0000000�0000000�00000000164�12077065715�027242� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������upstream/$UPSTREAM_VERSION..patches/$DEB_VERSION # this is an indented comment # some more blank lines ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debian-source-dir-gitpkg-series/debian/debian/patches/����������������0000775�0000000�0000000�00000000000�12077065715�025235� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debian-source-dir-gitpkg-series/debian/debian/patches/series����������0000664�0000000�0000000�00000000252�12077065715�026451� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# some line that ends with quilt-patches-deb-export-hook # this looks like series file # but really it is just a bunch # of blank # lines # and # # comments ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/control-file-national-encoding/���������������������������������������0000775�0000000�0000000�00000000000�12077065714�021056� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/control-file-national-encoding/pre_build������������������������������0000775�0000000�0000000�00000000217�12077065714�022751� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh set -e DDIR="$1/debian/" iconv -f UTF-8 -t EUC-JP "$DDIR/control" > "$DDIR/control.enc" mv -f "$DDIR/control.enc" "$DDIR/control" ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/control-file-national-encoding/tags�����������������������������������0000664�0000000�0000000�00000000151�12077065714�021734� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: control-file-national-encoding source: debian-control-file-uses-obsolete-national-encoding at line 17 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/control-file-national-encoding/desc�����������������������������������0000664�0000000�0000000�00000000270�12077065714�021716� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: control-file-national-encoding Sequence: 6000 Version: 1.0 Description: Test for control with national encoding Test-For: debian-control-file-uses-obsolete-national-encoding ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/control-file-national-encoding/debian/��������������������������������0000775�0000000�0000000�00000000000�12077065714�022300� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/control-file-national-encoding/debian/debian/�������������������������0000775�0000000�0000000�00000000000�12310413206�023501� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/control-file-national-encoding/debian/debian/control.in���������������0000664�0000000�0000000�00000001220�12310413206�025504� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: all Depends: $\{misc:Depends\}, Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . Lintian might be written as リンチアン in Japanese, but the author of this paragraph is not a hundred percent sure. Nevertheless, it makes for an excellent national encoding test. ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debian-source-dir-general/��������������������������������������������0000775�0000000�0000000�00000000000�12077065715�020002� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debian-source-dir-general/pre_build�����������������������������������0000775�0000000�0000000�00000000047�12077065715�021676� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh rm "$1"/debian/source/format �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debian-source-dir-general/tags����������������������������������������0000664�0000000�0000000�00000000213�12077065715�020657� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: debian-source-dir-general source: unknown-file-in-debian-source formt I: debian-source-dir-general source: missing-debian-source-format �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debian-source-dir-general/desc����������������������������������������0000664�0000000�0000000�00000000275�12077065715�020647� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: debian-source-dir-general Sequence: 6000 Version: 1.0 Description: General tests for debian/source/* checks Test-For: missing-debian-source-format unknown-file-in-debian-source �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debian-source-dir-general/debian/�������������������������������������0000775�0000000�0000000�00000000000�12077065715�021224� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debian-source-dir-general/debian/debian/������������������������������0000775�0000000�0000000�00000000000�12077065715�022446� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debian-source-dir-general/debian/debian/source/�����������������������0000775�0000000�0000000�00000000000�12077065715�023746� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/debian-source-dir-general/debian/debian/source/formt������������������0000664�0000000�0000000�00000000004�12077065715�025012� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������1.0 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-filenames/�����������������������������������������������������0000775�0000000�0000000�00000000000�12313542353�016267� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-filenames/post_test��������������������������������������������0000664�0000000�0000000�00000000070�12310413206�020222� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-filenames/tags�������������������������������������������������0000664�0000000�0000000�00000026343�12313542353�017160� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: filename-games: no-copyright-file E: filename-games: package-section-games-but-contains-no-game E: filenames: bad-menu-file-name usr/lib/menu/menu E: filenames: bad-menu-file-name usr/share/menu/menu E: filenames: dir-or-file-in-opt opt/foo/ E: filenames: dir-or-file-in-opt opt/foo/bar E: filenames: dir-or-file-in-srv srv/foo/ E: filenames: dir-or-file-in-srv srv/foo/bar E: filenames: dir-or-file-in-var-www var/www/foo E: filenames: file-in-etc-not-marked-as-conffile etc/gconf/schemas/test.schema E: filenames: file-name-is-not-valid-UTF-8 usr/share/doc/filenames/bokm?l E: filenames: file-name-is-not-valid-UTF-8 usr/share/doc/filenames/bokm\?l E: filenames: lengthy-symlink usr/lib/filenames/symlink4wrong ../filenames/symlink2 E: filenames: lengthy-symlink usr/share/doc/filenames/version.txt.gz ../filenames/doc/version6.txt.gz E: filenames: no-copyright-file E: filenames: non-standard-toplevel-dir files/ E: filenames: package-contains-ancient-file usr/lib/perl5/foo/ancient.pm 1975-01-01 E: filenames: package-contains-unsafe-symlink usr/lib/filenames/symlink2wrong E: filenames: package-installs-file-to-usr-x11r6 usr/X11R6/ E: filenames: package-installs-file-to-usr-x11r6 usr/X11R6/bin/ E: filenames: package-installs-file-to-usr-x11r6 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: subdir-in-usr-bin usr/bin/bin/ E: filenames: symlink-contains-spurious-segments usr/lib/filenames/symlink5wrong ../menu/../somethingelse E: filenames: symlink-contains-spurious-segments usr/lib/filenames/symlink6wrong ./file4 E: filenames: symlink-contains-spurious-segments usr/lib/filenames/symlink7wrong ../menu/./something E: filenames: symlink-has-too-many-up-segments usr/lib/filenames/symlink2wrong ../../../../etc/symlink E: filenames: symlink-should-be-absolute usr/lib/filenames/symlink10wrong ../../.. E: filenames: symlink-should-be-absolute usr/lib/filenames/symlink1wrong ../../../etc/symlink E: filenames: use-of-compat-symlink usr/bin/X11/ E: filenames: use-of-compat-symlink usr/bin/X11/testxbin E: filenames: wrong-file-owner-uid-or-gid usr/lib/filenames/wrong-owner-0:2001 0/2001 E: filenames: wrong-file-owner-uid-or-gid usr/lib/filenames/wrong-owner-100:0 100/0 E: filenames: wrong-file-owner-uid-or-gid usr/lib/filenames/wrong-owner-30001:65535 30001/65535 E: filenames: wrong-file-owner-uid-or-gid usr/lib/filenames/wrong-owner-65535:65001 65535/65001 E: more-filename-games: no-copyright-file I: filename-games: no-md5sums-control-file I: filename-games: package-contains-empty-directory usr/games/ I: filenames: duplicated-compressed-file usr/share/filenames/prototype.js.gz I: filenames: no-md5sums-control-file I: filenames: package-contains-empty-directory usr/lib/perl5/.arch-ids/ I: filenames: package-contains-empty-directory usr/lib/perl5/.be/ I: filenames: package-contains-empty-directory usr/lib/perl5/.bzr/ I: filenames: package-contains-empty-directory usr/lib/perl5/.ditrack/ I: filenames: package-contains-empty-directory usr/lib/perl5/.svn/ I: filenames: package-contains-empty-directory usr/lib/perl5/CVS/ I: filenames: package-contains-empty-directory usr/lib/perl5/{arch}/ I: filenames: using-first-person-in-description line 1: I I: more-filename-games: no-md5sums-control-file W: filename-games: binary-without-manpage usr/bin/test-game W: filename-games: no-priority-field W: filenames source: ancient-standards-version 3.1.1 (current is CURRENT) W: filenames source: diff-contains-arch-control-dir .arch-ids W: filenames source: diff-contains-arch-control-dir {arch} W: filenames source: diff-contains-arch-inventory-file files/.arch-inventory W: filenames source: diff-contains-bzr-control-dir .bzr W: filenames source: diff-contains-cvs-conflict-copy files/.#Maelstrom Sound.1.1.1 W: filenames source: diff-contains-cvs-control-dir CVS W: filenames source: diff-contains-editor-backup-file filenames.c~ W: filenames source: diff-contains-svk-commit-file files/svk-commitsEr9P.tmp W: filenames source: diff-contains-svn-commit-file files/svn-commit.tmp W: filenames source: diff-contains-svn-conflict-file files/Maelstrom Sounce.r121 W: filenames source: diff-contains-svn-control-dir .svn W: filenames source: no-section-field-for-source W: filenames: bad-permissions-for-ali-file usr/lib/ada/adalib/test.ali W: filenames: binary-without-manpage usr/X11R6/bin/testxbin2 W: filenames: binary-without-manpage usr/bin/X11/testxbin W: filenames: binary-without-manpage usr/bin/mh/read W: filenames: debian-news-file-not-compressed usr/share/doc/filenames/NEWS.Debian W: filenames: desktop-file-in-wrong-dir usr/share/gnome/apps/System/foo.desktop W: filenames: embedded-feedparser-library files/feedparser.py W: filenames: embedded-javascript-library usr/share/filenames/jquery.js W: filenames: embedded-javascript-library usr/share/filenames/jquery.lite.js W: filenames: embedded-javascript-library usr/share/filenames/jquery.min.js W: filenames: embedded-javascript-library usr/share/filenames/jquery.pack.js W: filenames: embedded-javascript-library usr/share/filenames/mochikit.js W: filenames: embedded-javascript-library usr/share/filenames/prototype-1.2.3.4.js W: filenames: embedded-javascript-library usr/share/filenames/prototype.js W: filenames: embedded-javascript-library usr/share/filenames/prototype.js.gz W: filenames: embedded-javascript-library usr/share/filenames/scriptaculous.js W: filenames: embedded-javascript-library usr/share/filenames/yahoo-dom-event.js W: filenames: embedded-javascript-library usr/share/filenames/yahoo-min.js W: filenames: executable-not-elf-or-script usr/bin/bin/bad W: filenames: executable-not-elf-or-script usr/bin/mh/read W: filenames: extra-license-file usr/share/pixmaps/COPYING W: filenames: extra-license-file usr/share/pixmaps/license.foo W: filenames: extra-license-file usr/share/pixmaps/license.txt W: filenames: file-in-unusual-dir files/ .tif W: filenames: file-in-unusual-dir files/".tif W: filenames: file-in-unusual-dir files/'\ W: filenames: file-in-unusual-dir files/.#Maelstrom Sound.1.1.1 W: filenames: file-in-unusual-dir files/.arch-inventory W: filenames: file-in-unusual-dir files/.cvsignore W: filenames: file-in-unusual-dir files/Maelstrom Sounce.r121 W: filenames: file-in-unusual-dir files/Maelstrom Sound W: filenames: file-in-unusual-dir files/Maelstrom Sound.mine W: filenames: file-in-unusual-dir files/feedparser.py W: filenames: file-in-unusual-dir files/svk-commitsEr9P.tmp W: filenames: file-in-unusual-dir files/svn-commit.tmp W: filenames: file-in-usr-lib-sgml usr/lib/sgml/package W: filenames: file-name-ends-in-whitespace files/'\ W: filenames: gz-file-not-gzip usr/share/filenames/prototype.js.gz W: filenames: macos-ds-store-file-in-package usr/share/doc/filenames/.DS_Store W: filenames: macos-resource-fork-file-in-package usr/share/doc/filenames/._NEWS.Debian W: filenames: menu-file-in-usr-lib usr/lib/menu/menu W: filenames: no-priority-field W: filenames: no-section-field W: filenames: non-standard-dir-perm usr/lib/filenames/readonly/ 0555 != 0755 W: filenames: package-contains-bts-control-dir usr/lib/perl5/.be/ W: filenames: package-contains-bts-control-dir usr/lib/perl5/.ditrack/ W: filenames: package-contains-devhelp-file-without-symlink usr/share/doc/filenames/bad-devhelp/c.devhelp.gz W: filenames: package-contains-linda-override usr/share/linda/overrides/filenames W: filenames: package-contains-readme-for-other-platform-or-distro usr/share/doc/filenames/README.macosx W: filenames: package-contains-vcs-control-dir usr/lib/perl5/.arch-ids/ W: filenames: package-contains-vcs-control-dir usr/lib/perl5/.bzr/ W: filenames: package-contains-vcs-control-dir usr/lib/perl5/.svn/ W: filenames: package-contains-vcs-control-dir usr/lib/perl5/CVS/ W: filenames: package-contains-vcs-control-dir usr/lib/perl5/{arch}/ W: filenames: package-contains-vcs-control-file files/.arch-inventory W: filenames: package-contains-vcs-control-file files/.cvsignore W: filenames: package-contains-vcs-control-file usr/lib/perl5/foo/.gitignore W: filenames: package-contains-vcs-control-file usr/lib/perl5/foo/.hg_archival.txt W: filenames: package-contains-vcs-control-file usr/lib/perl5/foo/.hgignore W: filenames: package-contains-vcs-control-file usr/lib/perl5/foo/.hgtags W: filenames: package-installs-into-etc-gconf-schemas etc/gconf/schemas/test.schema 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: script-not-executable files/feedparser.py W: filenames: svk-commit-file-in-package files/svk-commitsEr9P.tmp W: filenames: svn-commit-file-in-package files/svn-commit.tmp W: filenames: symlink-ends-with-slash usr/lib/filenames/symlink9wrong ../menu/something/ W: filenames: symlink-has-double-slash usr/lib/filenames/symlink8wrong ../menu//something W: filenames: symlink-is-self-recursive usr/lib/filenames/symlink10wrong ../../.. W: filenames: symlink-is-self-recursive usr/lib/filenames/symlink5ok+warn .. W: filenames: symlink-is-self-recursive usr/lib/filenames/symlink6ok+warn . W: filenames: symlink-is-self-recursive usr/lib/filenames/symlink7ok+warn / W: filenames: symlink-should-be-relative usr/lib/filenames/symlink3wrong /usr/lib/filenames/symlink2 W: filenames: windows-thumbnail-database-in-package usr/share/doc/filenames/Thumbs.db W: filenames: wrong-name-for-debian-news-file usr/share/doc/filenames/news.debian.gz W: filenames: zero-byte-file-in-doc-directory usr/share/doc/filenames/NEWS.Debian W: filenames: zero-byte-file-in-doc-directory usr/share/doc/filenames/README.macosx W: filenames: zero-byte-file-in-doc-directory usr/share/doc/filenames/examples/very_interesting_example2.gz W: filenames: zero-byte-file-in-doc-directory usr/share/doc/filenames/news.debian.gz W: more-filename-games: binary-without-manpage usr/bin/another-test-game W: more-filename-games: binary-without-manpage usr/games/yet-another-test-game W: more-filename-games: package-section-games-but-has-usr-bin X: filenames: package-contains-broken-symlink usr/lib/filenames/symlink1ok ../../share/symlink X: filenames: package-contains-broken-symlink usr/lib/filenames/symlink1wrong ../../../etc/symlink X: filenames: package-contains-broken-symlink usr/lib/filenames/symlink2ok etc/symlink X: filenames: package-contains-broken-symlink usr/lib/filenames/symlink3ok test X: filenames: package-contains-broken-symlink usr/lib/filenames/symlink3wrong usr/lib/filenames/symlink2 X: filenames: package-contains-broken-symlink usr/lib/filenames/symlink4ok ../menu/somethingelse X: filenames: package-contains-broken-symlink usr/lib/filenames/symlink4wrong ../filenames/symlink2 X: filenames: package-contains-broken-symlink usr/lib/filenames/symlink5wrong ../menu/../somethingelse X: filenames: package-contains-broken-symlink usr/lib/filenames/symlink6wrong ./file4 X: filenames: package-contains-broken-symlink usr/lib/filenames/symlink7wrong ../menu/./something X: filenames: package-contains-broken-symlink usr/lib/filenames/symlink8wrong ../menu//something X: filenames: package-contains-broken-symlink usr/lib/filenames/symlink9wrong ../menu/something/ X: filenames: package-contains-broken-symlink usr/share/doc/filenames/version.txt.gz ../filenames/doc/version6.txt.gz X: filenames: package-contains-broken-symlink usr/share/gtk-doc/html/bad ../doc/filenames/bad-devhelp ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-filenames/desc�������������������������������������������������0000664�0000000�0000000�00000000300�12310413206�017110� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: legacy-filenames Source: filenames Sequence: 9999 Version: 1:12-0.1 # tar -t is buggy and does not list \\\ filename Test-Depends: tar (>= 1.27) Description: Legacy test "filenames" ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-filenames/debian/����������������������������������������������0000775�0000000�0000000�00000000000�12310413206�017500� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-filenames/debian/debian/���������������������������������������0000775�0000000�0000000�00000000000�12313542334�020732� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-filenames/debian/debian/changelog������������������������������0000664�0000000�0000000�00000004331�12310413206�022575� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������filenames (1:12-0.1) unstable; urgency=low * /me is doing a correct NMU of this package. -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Sun, 18 Apr 2004 02:04:39 +0200 filenames (11) unstable; urgency=low * Add a README.macos. -- Marc 'HE' Brockschmidt <he@debian.org> Mon, 12 Apr 2004 23:35:24 +0200 filenames (10) unstable; urgency=low * Some new files to check the checks for the use of /usr/*/X11 and /usr/X11R6/*. -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 17:35:20 +0200 filenames (9) unstable; urgency=low * Add a two *.ali files, one with the right permission, one with the more common, but false one. -- Marc 'HE' Brockschmidt <he@debian.org> Sun, 11 Apr 2004 00:18:16 +0200 filenames (8) unstable; urgency=low * Add a real ancient file -- Frank Lichtenheld <djpig@debian.org> Thu, 8 Apr 2004 22:22:40 +0200 filenames (7) unstable; urgency=low * Add a dozen symlinks, some correct, some not -- Jeroen van Wolffelaar <jeroen@wolffelaar.nl> Fri, 27 Feb 2004 01:28:42 +0100 filenames (6) unstable; urgency=low * Add perl files to check if package-installs-nonbinary-perl-in-usr-lib-perl5 is correctly issued even after attempting to suppress it in some cases -- Frank Lichtenheld <djpig@debian.org> Fri, 27 Feb 2004 00:49:44 +0100 filenames (5) unstable; urgency=low * Added check for too long symlink -- Sean 'Shaleh' Perry <shaleh@debian.org> Wed, 3 Jan 2001 13:20:31 -0800 filenames (4) unstable; urgency=low * Add /usr/lib/menu/menu file to test the bad-menu-file-name tag. * Add /usr/lib/menu/README to test the new execption for it. -- Richard Braakman <dark@xs4all.nl> Thu, 22 Oct 1998 15:42:52 +0200 filenames (3) unstable; urgency=low * Don't rely on the installer's umask. -- Richard Braakman <dark@xs4all.nl> Thu, 20 Aug 1998 12:45:47 +0200 filenames (2) unstable; urgency=low * Noted more limitations on what filenames lintian handles. * Added Changes.gz in /usr/doc/filenames and made a symlink from changelog.gz to Changes.gz. -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:46:11 +0200 filenames (1) unstable; urgency=low * Initial version -- Richard Braakman <dark@xs4all.nl> Sat, 4 Jul 1998 15:25:01 +0200 �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-filenames/debian/debian/rules����������������������������������0000775�0000000�0000000�00000024035�12313542334�022016� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/make -f # Copyright (C) 1998 Richard Braakman # # 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. clean: mkdir -p .svn CVS "{arch}" .arch-ids .bzr touch files/.cvsignore files/svn-commit.tmp files/svk-commitsEr9P.tmp touch files/.arch-inventory touch 'files/.#Maelstrom Sound.1.1.1' 'files/Maelstrom Sounce.r121' touch 'files/Maelstrom Sound.mine' touch "files/'\\ " touch filenames.c~ build-arch: build-indep: build: build-arch build-indep binary-arch: binary-indep: install -d debian/tmp/DEBIAN cp -a files debian/tmp chmod -R go=rX debian/tmp/files install -d debian/tmp/usr/lib/filenames install -m 555 -d debian/tmp/usr/lib/filenames/readonly touch debian/tmp/usr/lib/filenames/readonly/test install -d debian/tmp/usr/lib/menu install -d debian/tmp/usr/share/menu touch debian/tmp/usr/lib/menu/README touch debian/tmp/usr/share/menu/README touch debian/tmp/usr/lib/menu/menu touch debian/tmp/usr/share/menu/menu chmod 644 debian/tmp/usr/lib/menu/* install -d debian/tmp/usr/lib/perl5/foo mkdir debian/tmp/usr/lib/perl5/.svn mkdir debian/tmp/usr/lib/perl5/CVS mkdir "debian/tmp/usr/lib/perl5/{arch}" mkdir debian/tmp/usr/lib/perl5/.arch-ids mkdir debian/tmp/usr/lib/perl5/.bzr mkdir debian/tmp/usr/lib/perl5/.be mkdir debian/tmp/usr/lib/perl5/.ditrack install -d debian/tmp/usr/share/perl5 echo foo > debian/tmp/usr/lib/perl5/foo/.gitignore echo foo > debian/tmp/usr/lib/perl5/foo/.hgignore echo foo > debian/tmp/usr/lib/perl5/foo/.hgtags echo foo > debian/tmp/usr/lib/perl5/foo/.hg_archival.txt touch debian/tmp/usr/lib/perl5/foo/.packlist chmod 644 debian/tmp/usr/lib/perl5/foo/.packlist touch debian/tmp/usr/lib/perl5/foo/bar.pm touch -t 197501010101 debian/tmp/usr/lib/perl5/foo/ancient.pm chmod 644 debian/tmp/usr/lib/perl5/foo/bar.pm install -d debian/tmp/usr/share/pixmaps install -d debian/tmp/usr/share/pixmaps/foo touch debian/tmp/usr/share/pixmaps/license.jpeg touch debian/tmp/usr/share/pixmaps/licence.jpg touch debian/tmp/usr/share/pixmaps/copying.xpm touch debian/tmp/usr/share/pixmaps/foo/COPYING.svg touch debian/tmp/usr/share/pixmaps/foo/copying.png touch debian/tmp/usr/share/pixmaps/license.txt touch debian/tmp/usr/share/pixmaps/license.foo touch debian/tmp/usr/share/pixmaps/COPYING install -d debian/tmp/usr/share/python-support/filenames install -d debian/tmp/usr/share/linda/overrides echo 'foo' > debian/tmp/usr/share/linda/overrides/filenames install -d debian/tmp/usr/share/doc/filenames touch debian/tmp/usr/share/doc/filenames/README.macosx echo foo > debian/tmp/usr/share/doc/filenames/bokmål echo foo > debian/tmp/usr/share/doc/filenames/bokm\\ål echo foo > debian/tmp/usr/share/doc/filenames/bokml echo foo > debian/tmp/usr/share/doc/filenames/bokm\\l echo foo > debian/tmp/usr/share/doc/filenames/Thumbs.db echo foo > debian/tmp/usr/share/doc/filenames/.DS_Store echo foo > debian/tmp/usr/share/doc/filenames/._NEWS.Debian touch debian/tmp/usr/share/doc/filenames/news.debian gzip debian/tmp/usr/share/doc/filenames/news.debian touch debian/tmp/usr/share/doc/filenames/NEWS.Debian echo foo > debian/tmp/usr/share/doc/filenames/link-one ln debian/tmp/usr/share/doc/filenames/link-one \ debian/tmp/usr/share/doc/filenames/link-two install -d debian/tmp/usr/share/doc/filenames/examples touch debian/tmp/usr/share/doc/filenames/examples/__init__.py touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example touch debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2 gzip debian/tmp/usr/share/doc/filenames/examples/very_interesting_example2 install -d debian/tmp/usr/lib/ada/adalib/ touch debian/tmp/usr/lib/ada/adalib/test.ali debian/tmp/usr/lib/ada/adalib/test2.ali chmod 0644 debian/tmp/usr/lib/ada/adalib/test.ali chmod 0444 debian/tmp/usr/lib/ada/adalib/test2.ali install -d debian/tmp/usr/bin/X11/ touch debian/tmp/usr/bin/X11/testxbin install -d debian/tmp/usr/X11R6/bin touch debian/tmp/usr/X11R6/bin/testxbin2 install -d debian/tmp/usr/include/X11 touch debian/tmp/usr/include/X11/foo.h install -d debian/tmp/usr/bin/mh touch debian/tmp/usr/bin/mh/read chmod 755 debian/tmp/usr/bin/mh/read install -d debian/tmp/usr/bin/bin touch debian/tmp/usr/bin/bin/bad chmod 755 debian/tmp/usr/bin/bin/bad # Create some files with invalid ownership. set -e; for owner in 100:0 0:2001 30001:65535 65535:65001; do \ touch debian/tmp/usr/lib/filenames/wrong-owner-$$owner ; \ chmod 644 debian/tmp/usr/lib/filenames/wrong-owner-$$owner ; \ chown "$$owner" debian/tmp/usr/lib/filenames/wrong-owner-$$owner ; \ done install -m 644 debian/changelog debian/tmp/usr/share/doc/filenames/Changes gzip -9 debian/tmp/usr/share/doc/filenames/Changes ln -s Changes.gz debian/tmp/usr/share/doc/filenames/changelog.gz install -d debian/tmp/var/www echo foo > debian/tmp/var/www/foo install -d debian/tmp/srv/foo touch debian/tmp/srv/foo/bar install -d debian/tmp/opt/foo touch debian/tmp/opt/foo/bar install -d debian/tmp/etc/gconf/schemas touch debian/tmp/etc/gconf/schemas/test.schema install -d debian/tmp/usr/lib/sgml touch debian/tmp/usr/lib/sgml/package install -d debian/tmp/usr/share/gnome/apps/System touch debian/tmp/usr/share/gnome/apps/System/foo.desktop install -d debian/tmp/usr/share/filenames touch debian/tmp/usr/share/filenames/jquery.js touch debian/tmp/usr/share/filenames/jquery.lite.js touch debian/tmp/usr/share/filenames/jquery.min.js touch debian/tmp/usr/share/filenames/jquery.pack.js touch debian/tmp/usr/share/filenames/mochikit.js touch debian/tmp/usr/share/filenames/prototype-1.2.3.4.js touch debian/tmp/usr/share/filenames/prototype.js touch debian/tmp/usr/share/filenames/prototype.js.gz touch debian/tmp/usr/share/filenames/scriptaculous.js touch debian/tmp/usr/share/filenames/yahoo-dom-event.js touch debian/tmp/usr/share/filenames/yahoo-min.js ln -s '../filenames/doc/version6.txt.gz' debian/tmp/usr/share/doc/filenames/version.txt.gz ln -s ../../share/symlink debian/tmp/usr/lib/filenames/symlink1ok ln -s ../../../etc/symlink debian/tmp/usr/lib/filenames/symlink1wrong ln -s ../../../../etc/symlink debian/tmp/usr/lib/filenames/symlink2wrong ln -s /etc/symlink debian/tmp/usr/lib/filenames/symlink2ok ln -s /usr/lib/filenames/symlink2 debian/tmp/usr/lib/filenames/symlink3wrong ln -s test debian/tmp/usr/lib/filenames/symlink3ok ln -s ../filenames/symlink2 debian/tmp/usr/lib/filenames/symlink4wrong ln -s ../menu/../somethingelse debian/tmp/usr/lib/filenames/symlink5wrong ln -s ../menu/somethingelse debian/tmp/usr/lib/filenames/symlink4ok ln -s ./file4 debian/tmp/usr/lib/filenames/symlink6wrong ln -s ../menu/./something debian/tmp/usr/lib/filenames/symlink7wrong ln -s ../menu//something debian/tmp/usr/lib/filenames/symlink8wrong ln -s ../menu/something/ debian/tmp/usr/lib/filenames/symlink9wrong ln -s .. debian/tmp/usr/lib/filenames/symlink5ok+warn ln -s . debian/tmp/usr/lib/filenames/symlink6ok+warn ln -s / debian/tmp/usr/lib/filenames/symlink7ok+warn ln -s ../../.. debian/tmp/usr/lib/filenames/symlink10wrong # devhelp tests. Files in /usr/share/gtk-doc/html or /usr/share/devhelp/books # are okay. Files elsewhere are okay iff their parent path is symlinked into # one of those paths. install -d debian/tmp/usr/share/devhelp/books/filenames echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/a.devhelp echo 'Not really XML' > debian/tmp/usr/share/devhelp/books/filenames/.devhelp2 gzip -9 debian/tmp/usr/share/devhelp/books/filenames/.devhelp2 install -d debian/tmp/usr/share/gtk-doc/html/filenames echo 'Not really XML' > debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp gzip -9 debian/tmp/usr/share/gtk-doc/html/filenames/b.devhelp install -d debian/tmp/usr/share/doc/filenames/good-devhelp echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/good-devhelp/.devhelp2 install -d debian/tmp/usr/share/doc/filenames/bad-devhelp echo 'Not really XML' > debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp gzip -9 debian/tmp/usr/share/doc/filenames/bad-devhelp/c.devhelp ln -s ../../doc/filenames/good-devhelp debian/tmp/usr/share/gtk-doc/html/good ln -s ../doc/filenames/bad-devhelp debian/tmp/usr/share/gtk-doc/html/bad install -d debian/tmp/usr/share/doc-base install -m 644 debian/doc-base debian/tmp/usr/share/doc-base/filenames dpkg-gencontrol -pfilenames -Pdebian/tmp dpkg --build debian/tmp .. install -d debian/filename-games debian/filename-games/DEBIAN install -d debian/filename-games/usr debian/filename-games/usr/games debian/filename-games/usr/bin echo '#! /bin/sh' > debian/filename-games/usr/bin/test-game chmod 755 debian/filename-games/usr/bin/test-game dpkg-gencontrol -pfilename-games -Pdebian/filename-games dpkg --build debian/filename-games .. install -d debian/more-filename-games debian/more-filename-games/DEBIAN install -d debian/more-filename-games/usr debian/more-filename-games/usr/games debian/more-filename-games/usr/bin echo '#! /bin/sh' > debian/more-filename-games/usr/bin/another-test-game echo '#! /bin/sh' > debian/more-filename-games/usr/games/yet-another-test-game chmod 755 debian/more-filename-games/usr/bin/another-test-game debian/more-filename-games/usr/games/yet-another-test-game dpkg-gencontrol -pmore-filename-games -Pdebian/more-filename-games dpkg --build debian/more-filename-games .. binary: binary-arch binary-indep .PHONY: build-indep build-arch build binary-arch binary-indep binary clean ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-filenames/debian/debian/doc-base�������������������������������0000664�0000000�0000000�00000000454�12310413206�022325� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Document: testing Title: Working doc-base control file Author: Russ Allbery Abstract: This control file ensures that we don't get false positives for correct doc-base files. . There isn't anything wrong with this one. Section: Education Format: Text Files: /usr/share/doc/filenames/README.macosx ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-filenames/debian/debian/control��������������������������������0000664�0000000�0000000�00000003020�12310413206�022320� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Source: filenames Maintainer: Lintian Maintainer <lintian-maint@debian.org> Standards-Version: 3.1.1 Package: filenames Architecture: all Depends: test, python-support Description: see how lintian reacts to weird filenames This package contains files with the most evil names I could find, except for ones that lintian is explicitly not designed to handle. . Lintian does not handle filenames containing newlines, or filenames that contain the strings " link to ", " -> ", or ": ". The last one is used as a separator by the file command, the others are used as separators by tar. . Lintian also does not handle filenames that contain backslashes, or other characters that are mangled by tar's -tv output. Package: filename-games Architecture: all Depends: filenames Section: games Description: Test game filename/location checks This package contains files with slightly less evil names than filenames. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: more-filename-games Architecture: all Depends: filenames, filename-games Section: games Priority: optional Description: More test for game filename/location checks This package contains no evil names, only evil locations. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-filenames/debian/files/����������������������������������������0000775�0000000�0000000�00000000000�12310413206�020602� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-filenames/debian/files/".tif�����������������������������������0000664�0000000�0000000�00000000050�12310413206�021422� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������This filename is really used, by fnlib. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-filenames/debian/files/ .tif�����������������������������������0000664�0000000�0000000�00000000131�12310413206�021420� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������This filename was inspired by the ".tif used by fnlib. The real package uses space.tif. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-filenames/debian/files/Maelstrom Sound�������������������������0000664�0000000�0000000�00000000057�12310413206�023543� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������This filename occurs in the maelstrom package. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/legacy-filenames/debian/files/feedparser.py���������������������������0000664�0000000�0000000�00000000670�12310413206�023277� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/env python """Universal feed parser Handles RSS 0.9x, RSS 1.0, RSS 2.0, CDF, Atom 0.3, and Atom 1.0 feeds Visit http://feedparser.org/ for the latest version Visit http://feedparser.org/docs/ for the latest documentation Required: Python 2.1 or later Recommended: Python 2.3 or later Recommended: CJKCodecs and iconv_codec <http://cjkpython.i18n.org/> """ __version__ = "4.1"# + "$Revision: 1.92 $"[11:15] + "-cvs" # (snip) ������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt-updeb/����������������������������������������������������0000775�0000000�0000000�00000000000�12310413144�016364� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt-updeb/upstream/�������������������������������������������0000775�0000000�0000000�00000000000�12310413144�020224� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt-updeb/upstream/README�������������������������������������0000664�0000000�0000000�00000000007�12310413144�021101� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������README �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt-updeb/upstream/debian/������������������������������������0000775�0000000�0000000�00000000000�12310413144�021446� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt-updeb/upstream/debian/postinst.ex�������������������������0000664�0000000�0000000�00000000000�12310413144�023655� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt-updeb/upstream/debian/basic-quilt-updeb.doc-base.EX�������0000664�0000000�0000000�00000000000�12310413144�026660� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt-updeb/tags������������������������������������������������0000664�0000000�0000000�00000000000�12310413144�017233� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt-updeb/desc������������������������������������������������0000664�0000000�0000000�00000000207�12310413144�017224� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: basic-quilt-updeb Sequence: 0001 Type: non-native Version: 1.0-1 Description: Basic test of a 3.0 (quilt) non-native package �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt-updeb/debian/���������������������������������������������0000775�0000000�0000000�00000000000�12310413144�017606� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt-updeb/debian/README���������������������������������������0000664�0000000�0000000�00000000007�12310413144�020463� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������README �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt-updeb/debian/debian/��������������������������������������0000775�0000000�0000000�00000000000�12310413144�021030� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt-updeb/debian/debian/source/�������������������������������0000775�0000000�0000000�00000000000�12310413144�022330� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt-updeb/debian/debian/source/format�������������������������0000664�0000000�0000000�00000000014�12310413144�023536� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������3.0 (quilt) ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt-updeb/debian/debian/patches/������������������������������0000775�0000000�0000000�00000000000�12310413144�022457� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt-updeb/debian/debian/patches/extra-readme������������������0000664�0000000�0000000�00000000311�12310413144�024753� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������A simple patch applied by dpkg-source --- upstream.orig/README +++ upstream/README @@ -1 +1,4 @@ README + +These are some lines added in the Debian package via a quilt patch +applied by dpkg-source. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/basic-quilt-updeb/debian/debian/patches/series������������������������0000664�0000000�0000000�00000000015�12310413144�023670� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������extra-readme �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/�������������������������������������������������0000775�0000000�0000000�00000000000�12310413146�016363� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/upstream/����������������������������������������0000775�0000000�0000000�00000000000�12077065715�020242� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/upstream/Makefile��������������������������������0000664�0000000�0000000�00000000147�12077065715�021704� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Stub Makefile that's just enough so that the default rules file doesn't # error out. clean install: �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/upstream/README����������������������������������0000664�0000000�0000000�00000001104�12077065715�021116� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������dh_make 0.46 test ================= This is the results of running dh_make 0.46 on an upstream tarball containing only this file. It's a useful test for the various dh_make template and boilerplate tags, as well as many tags for ways of doing things dh_make used to promote but are now deprecated or old debhelper commands that are now deprecated. Please don't modify anything about the files in this package; instead, add new tags as needed when Lintian adds new checks. This test case is intended to continue to be a test of Lintian's handling of old and template packages. ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/post_test����������������������������������������0000664�0000000�0000000�00000000070�12077065715�020346� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/pre_build����������������������������������������0000775�0000000�0000000�00000000224�12077065715�020273� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # # dh_make 0.46 only provides an example watch file, so remove the one that # is copied over from the template. rm -f "$1"/debian/watch ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/tags���������������������������������������������0000664�0000000�0000000�00000005726�12310413146�017256� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������E: generic-dh-make-2008: changelog-is-dh_make-template E: generic-dh-make-2008: copyright-contains-dh_make-todo-boilerplate E: generic-dh-make-2008: description-is-dh_make-template E: generic-dh-make-2008: helper-templates-in-copyright E: generic-dh-make-2008: section-is-dh_make-template I: generic-dh-make-2008 source: debian-watch-file-is-missing I: generic-dh-make-2008: extended-description-is-probably-too-short I: generic-dh-make-2008: package-contains-empty-directory usr/bin/ I: generic-dh-make-2008: package-contains-empty-directory usr/sbin/ P: generic-dh-make-2008: copyright-with-old-dh-make-debian-copyright P: generic-dh-make-2008: no-upstream-changelog W: generic-dh-make-2008 source: ancient-standards-version 3.7.3 (current is CURRENT) W: generic-dh-make-2008 source: bad-homepage <insert the upstream URL, if relevant> W: generic-dh-make-2008 source: debian-rules-missing-recommended-target build-arch W: generic-dh-make-2008 source: debian-rules-missing-recommended-target build-indep W: generic-dh-make-2008 source: dh-clean-k-is-deprecated W: generic-dh-make-2008 source: dh-make-template-in-source debian/cron.d.ex W: generic-dh-make-2008 source: dh-make-template-in-source debian/emacsen-install.ex W: generic-dh-make-2008 source: dh-make-template-in-source debian/emacsen-remove.ex W: generic-dh-make-2008 source: dh-make-template-in-source debian/emacsen-startup.ex W: generic-dh-make-2008 source: dh-make-template-in-source debian/generic-dh-make-2008.default.ex W: generic-dh-make-2008 source: dh-make-template-in-source debian/generic-dh-make-2008.doc-base.EX W: generic-dh-make-2008 source: dh-make-template-in-source debian/init.d.ex W: generic-dh-make-2008 source: dh-make-template-in-source debian/init.d.lsb.ex W: generic-dh-make-2008 source: dh-make-template-in-source debian/manpage.1.ex W: generic-dh-make-2008 source: dh-make-template-in-source debian/manpage.sgml.ex W: generic-dh-make-2008 source: dh-make-template-in-source debian/manpage.xml.ex W: generic-dh-make-2008 source: dh-make-template-in-source debian/menu.ex W: generic-dh-make-2008 source: dh-make-template-in-source debian/postinst.ex W: generic-dh-make-2008 source: dh-make-template-in-source debian/postrm.ex W: generic-dh-make-2008 source: dh-make-template-in-source debian/preinst.ex W: generic-dh-make-2008 source: dh-make-template-in-source debian/prerm.ex W: generic-dh-make-2008 source: dh-make-template-in-source debian/watch.ex W: generic-dh-make-2008 source: superfluous-clutter-in-homepage <insert the upstream URL, if relevant> W: generic-dh-make-2008: bad-homepage <insert the upstream URL, if relevant> W: generic-dh-make-2008: copyright-has-url-from-dh_make-boilerplate W: generic-dh-make-2008: copyright-without-copyright-notice W: generic-dh-make-2008: new-package-should-close-itp-bug W: generic-dh-make-2008: readme-debian-contains-debmake-template W: generic-dh-make-2008: superfluous-clutter-in-homepage <insert the upstream URL, if relevant> W: generic-dh-make-2008: wrong-bug-number-in-closes l3:#nnnn ������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/desc���������������������������������������������0000664�0000000�0000000�00000001454�12310413146�017230� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Testname: generic-dh-make-2008 Sequence: 6500 Type: non-native Author: Russ Allbery <rra@debian.org> Version: 1.0-1 Description: Generic dh_make template generated in 2008 Options: -IE --pedantic Test-For: ancient-standards-version bad-homepage changelog-is-dh_make-template copyright-contains-dh_make-todo-boilerplate copyright-has-url-from-dh_make-boilerplate copyright-with-old-dh-make-debian-copyright copyright-without-copyright-notice debian-watch-file-is-missing description-is-dh_make-template dh-make-template-in-source extended-description-is-probably-too-short new-package-should-close-itp-bug package-contains-empty-directory readme-debian-contains-debmake-template section-is-dh_make-template superfluous-clutter-in-homepage wrong-bug-number-in-closes References: Debian Bug#497347 ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/������������������������������������������0000775�0000000�0000000�00000000000�12077065715�017624� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/Makefile����������������������������������0000664�0000000�0000000�00000000147�12077065715�021266� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Stub Makefile that's just enough so that the default rules file doesn't # error out. clean install: �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/README������������������������������������0000664�0000000�0000000�00000001104�12077065715�020500� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������dh_make 0.46 test ================= This is the results of running dh_make 0.46 on an upstream tarball containing only this file. It's a useful test for the various dh_make template and boilerplate tags, as well as many tags for ways of doing things dh_make used to promote but are now deprecated or old debhelper commands that are now deprecated. Please don't modify anything about the files in this package; instead, add new tags as needed when Lintian adds new checks. This test case is intended to continue to be a test of Lintian's handling of old and template packages. ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/�����������������������������������0000775�0000000�0000000�00000000000�12077065715�021046� 5����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/init.d.ex��������������������������0000664�0000000�0000000�00000010123�12077065715�022566� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh # # skeleton example file to build /etc/init.d/ scripts. # This file should be used to construct scripts for /etc/init.d. # # Written by Miquel van Smoorenburg <miquels@cistron.nl>. # Modified for Debian # by Ian Murdock <imurdock@gnu.ai.mit.edu>. # Further changes by Javier Fernandez-Sanguino <jfs@debian.org> # # Version: @(#)skeleton 1.9 26-Feb-2001 miquels@cistron.nl # PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/sbin/generic-dh-make-2008 NAME=generic-dh-make-2008 DESC=generic-dh-make-2008 test -x $DAEMON || exit 0 LOGDIR=/var/log/generic-dh-make-2008 PIDFILE=/var/run/$NAME.pid DODTIME=1 # Time to wait for the server to die, in seconds # If this value is set too low you might not # let some servers to die gracefully and # 'restart' will not work # Include generic-dh-make-2008 defaults if available if [ -f /etc/default/generic-dh-make-2008 ] ; then . /etc/default/generic-dh-make-2008 fi set -e running_pid() { # Check if a given process pid's cmdline matches a given name pid=$1 name=$2 [ -z "$pid" ] && return 1 [ ! -d /proc/$pid ] && return 1 cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1` # Is this the expected child? [ "$cmd" != "$name" ] && return 1 return 0 } running() { # Check if the process is running looking at /proc # (works for all users) # No pidfile, probably no daemon present [ ! -f "$PIDFILE" ] && return 1 # Obtain the pid and check it against the binary name pid=`cat $PIDFILE` running_pid $pid $DAEMON || return 1 return 0 } force_stop() { # Forcefully kill the process [ ! -f "$PIDFILE" ] && return if running ; then kill -15 $pid # Is it really dead? [ -n "$DODTIME" ] && sleep "$DODTIME"s if running ; then kill -9 $pid [ -n "$DODTIME" ] && sleep "$DODTIME"s if running ; then echo "Cannot kill $LABEL (pid=$pid)!" exit 1 fi fi fi rm -f $PIDFILE return 0 } case "$1" in start) echo -n "Starting $DESC: " start-stop-daemon --start --quiet --pidfile $PIDFILE \ --exec $DAEMON -- $DAEMON_OPTS if running ; then echo "$NAME." else echo " ERROR." fi ;; stop) echo -n "Stopping $DESC: " start-stop-daemon --stop --quiet --pidfile $PIDFILE \ --exec $DAEMON echo "$NAME." ;; force-stop) echo -n "Forcefully stopping $DESC: " force_stop if ! running ; then echo "$NAME." else echo " ERROR." fi ;; #reload) # # If the daemon can reload its config files on the fly # for example by sending it SIGHUP, do it here. # # If the daemon responds to changes in its config file # directly anyway, make this a do-nothing entry. # # echo "Reloading $DESC configuration files." # start-stop-daemon --stop --signal 1 --quiet --pidfile \ # /var/run/$NAME.pid --exec $DAEMON #;; force-reload) # # If the "reload" option is implemented, move the "force-reload" # option to the "reload" entry above. If not, "force-reload" is # just the same as "restart" except that it does nothing if the # daemon isn't already running. # check wether $DAEMON is running. If so, restart start-stop-daemon --stop --test --quiet --pidfile \ /var/run/$NAME.pid --exec $DAEMON \ && $0 restart \ || exit 0 ;; restart) echo -n "Restarting $DESC: " start-stop-daemon --stop --quiet --pidfile \ /var/run/$NAME.pid --exec $DAEMON [ -n "$DODTIME" ] && sleep $DODTIME start-stop-daemon --start --quiet --pidfile \ /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS echo "$NAME." ;; status) echo -n "$LABEL is " if running ; then echo "running" else echo " not running." exit 1 fi ;; *) N=/etc/init.d/$NAME # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 echo "Usage: $N {start|stop|restart|force-reload|status|force-stop}" >&2 exit 1 ;; esac exit 0 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/postrm.ex��������������������������0000664�0000000�0000000�00000001661�12077065715�022734� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # postrm script for generic-dh-make-2008 # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * <postrm> `remove' # * <postrm> `purge' # * <old-postrm> `upgrade' <new-version> # * <new-postrm> `failed-upgrade' <old-version> # * <new-postrm> `abort-install' # * <new-postrm> `abort-install' <old-version> # * <new-postrm> `abort-upgrade' <old-version> # * <disappearer's-postrm> `disappear' <overwriter> # <overwriter-version> # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) ;; *) echo "postrm called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 �������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/emacsen-install.ex�����������������0000664�0000000�0000000�00000002355�12077065715�024470� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#! /bin/sh -e # /usr/lib/emacsen-common/packages/install/generic-dh-make-2008 # Written by Jim Van Zandt <jrv@debian.org>, borrowing heavily # from the install scripts for gettext by Santiago Vila # <sanvila@ctv.es> and octave by Dirk Eddelbuettel <edd@debian.org>. FLAVOR=$1 PACKAGE=generic-dh-make-2008 if [ ${FLAVOR} = emacs ]; then exit 0; fi echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR} #FLAVORTEST=`echo $FLAVOR | cut -c-6` #if [ ${FLAVORTEST} = xemacs ] ; then # SITEFLAG="-no-site-file" #else # SITEFLAG="--no-site-file" #fi FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile" ELDIR=/usr/share/emacs/site-lisp/${PACKAGE} ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE} # Install-info-altdir does not actually exist. # Maybe somebody will write it. if test -x /usr/sbin/install-info-altdir; then echo install/${PACKAGE}: install Info links for ${FLAVOR} install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/share/info/${PACKAGE}.info.gz fi install -m 755 -d ${ELCDIR} cd ${ELDIR} FILES=`echo *.el` cp ${FILES} ${ELCDIR} cd ${ELCDIR} cat << EOF > path.el (setq load-path (cons "." load-path) byte-compile-warnings nil) EOF ${FLAVOR} ${FLAGS} ${FILES} rm -f *.el path.el exit 0 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/manpage.1.ex�����������������������0000664�0000000�0000000�00000003440�12077065715�023154� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Hey, EMACS: -*- nroff -*- .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) .TH GENERIC-DH-MAKE-2008 SECTION "December 29, 2008" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: .\" .nh disable hyphenation .\" .hy enable hyphenation .\" .ad l left justify .\" .ad b justify to both left and right margins .\" .nf disable filling .\" .fi enable filling .\" .br insert line break .\" .sp <n> insert n+1 empty lines .\" for manpage-specific macros, see man(7) .SH NAME generic-dh-make-2008 \- program to do something .SH SYNOPSIS .B generic-dh-make-2008 .RI [ options ] " files" ... .br .B bar .RI [ options ] " files" ... .SH DESCRIPTION This manual page documents briefly the .B generic-dh-make-2008 and .B bar commands. .PP .\" TeX users may be more comfortable with the \fB<whatever>\fP and .\" \fI<whatever>\fP escape sequences to invode bold face and italics, .\" respectively. \fBgeneric-dh-make-2008\fP is a program that... .SH OPTIONS These programs follow the usual GNU command line syntax, with long options starting with two dashes (`-'). A summary of options is included below. For a complete description, see the Info files. .TP .B \-h, \-\-help Show summary of options. .TP .B \-v, \-\-version Show version of program. .SH SEE ALSO .BR bar (1), .BR baz (1). .br The programs are documented fully by .IR "The Rise and Fall of a Fooish Bar" , available via the Info system. .SH AUTHOR generic-dh-make-2008 was written by <upstream author>. .PP This manual page was written by Russ Allbery <rra@debian.org>, for the Debian project (but may be used by others). ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/postinst.ex������������������������0000664�0000000�0000000�00000001714�12077065715�023272� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # postinst script for generic-dh-make-2008 # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * <postinst> `configure' <most-recently-configured-version> # * <old-postinst> `abort-upgrade' <new version> # * <conflictor's-postinst> `abort-remove' `in-favour' <package> # <new-version> # * <postinst> `abort-remove' # * <deconfigured's-postinst> `abort-deconfigure' `in-favour' # <failed-install-package> <version> `removing' # <conflicting-package> <version> # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in configure) ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 ����������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/prerm.ex���������������������������0000664�0000000�0000000�00000001574�12077065715�022540� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # prerm script for generic-dh-make-2008 # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * <prerm> `remove' # * <old-prerm> `upgrade' <new-version> # * <new-prerm> `failed-upgrade' <old-version> # * <conflictor's-prerm> `remove' `in-favour' <package> <new-version> # * <deconfigured's-prerm> `deconfigure' `in-favour' # <package-being-installed> <version> `removing' # <conflicting-package> <version> # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in remove|upgrade|deconfigure) ;; failed-upgrade) ;; *) echo "prerm called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 ������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/copyright��������������������������0000664�0000000�0000000�00000001220�12077065715�022774� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������This package was debianized by Russ Allbery <rra@debian.org> on Mon, 29 Dec 2008 17:33:59 -0800. It was downloaded from <url://example.com> Upstream Author(s): <put author's name and email here> <likewise for another author> Copyright: <Copyright (C) YYYY Name OfAuthor> <likewise for another author> License: <Put the license of the package here indented by 4 spaces> The Debian packaging is (C) 2008, Russ Allbery <rra@debian.org> and is licensed under the GPL, see `/usr/share/common-licenses/GPL'. # Please also look if there are files or directories which have a # different copyright/license attached and list them here. ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/generic-dh-make-2008.doc-base.EX���0000664�0000000�0000000�00000001224�12077065715�026266� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Document: generic-dh-make-2008 Title: Debian generic-dh-make-2008 Manual Author: <insert document author here> Abstract: This manual describes what generic-dh-make-2008 is and how it can be used to manage online manuals on Debian systems. Section: unknown Format: debiandoc-sgml Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.sgml.gz Format: postscript Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.ps.gz Format: text Files: /usr/share/doc/generic-dh-make-2008/generic-dh-make-2008.text.gz Format: HTML Index: /usr/share/doc/generic-dh-make-2008/html/index.html Files: /usr/share/doc/generic-dh-make-2008/html/*.html ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/init.d.lsb.ex����������������������0000664�0000000�0000000�00000022127�12077065715�023354� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # # Example init.d script with LSB support. # # Please read this init.d carefully and modify the sections to # adjust it to the program you want to run. # # Copyright (c) 2007 Javier Fernandez-Sanguino <jfs@debian.org> # # This is free software; you may 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, # or (at your option) any later version. # # This 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 with # the Debian operating system, in /usr/share/common-licenses/GPL; if # not, write to the Free Software Foundation, Inc., 59 Temple Place, # Suite 330, Boston, MA 02111-1307 USA # ### BEGIN INIT INFO # Provides: generic-dh-make-2008 # Required-Start: $network $local_fs # Required-Stop: # Should-Start: $named # Should-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: <Enter a short description of the sortware> # Description: <Enter a long description of the software> # <...> # <...> ### END INIT INFO PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/sbin/generic-dh-make-2008 # Introduce the server's location here NAME=#PACKAGE # Introduce the short server's name here DESC=#PACKAGE # Introduce a short description here LOGDIR=/var/log/generic-dh-make-2008 # Log directory to use PIDFILE=/var/run/$NAME.pid test -x $DAEMON || exit 0 . /lib/lsb/init-functions # Default options, these can be overriden by the information # at /etc/default/$NAME DAEMON_OPTS="" # Additional options given to the server DIETIME=10 # Time to wait for the server to die, in seconds # If this value is set too low you might not # let some servers to die gracefully and # 'restart' will not work #STARTTIME=2 # Time to wait for the server to start, in seconds # If this value is set each time the server is # started (on start or restart) the script will # stall to try to determine if it is running # If it is not set and the server takes time # to setup a pid file the log message might # be a false positive (says it did not start # when it actually did) LOGFILE=$LOGDIR/$NAME.log # Server logfile #DAEMONUSER=generic-dh-make-2008 # Users to run the daemons as. If this value # is set start-stop-daemon will chuid the server # Include defaults if available if [ -f /etc/default/$NAME ] ; then . /etc/default/$NAME fi # Use this if you want the user to explicitly set 'RUN' in # /etc/default/ #if [ "x$RUN" != "xyes" ] ; then # log_failure_msg "$NAME disabled, please adjust the configuration to your needs " # log_failure_msg "and then set RUN to 'yes' in /etc/default/$NAME to enable it." # exit 1 #fi # Check that the user exists (if we set a user) # Does the user exist? if [ -n "$DAEMONUSER" ] ; then if getent passwd | grep -q "^$DAEMONUSER:"; then # Obtain the uid and gid DAEMONUID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $3}'` DAEMONGID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $4}'` else log_failure_msg "The user $DAEMONUSER, required to run $NAME does not exist." exit 1 fi fi set -e running_pid() { # Check if a given process pid's cmdline matches a given name pid=$1 name=$2 [ -z "$pid" ] && return 1 [ ! -d /proc/$pid ] && return 1 cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1` # Is this the expected server [ "$cmd" != "$name" ] && return 1 return 0 } running() { # Check if the process is running looking at /proc # (works for all users) # No pidfile, probably no daemon present [ ! -f "$PIDFILE" ] && return 1 pid=`cat $PIDFILE` running_pid $pid $DAEMON || return 1 return 0 } start_server() { # Start the process using the wrapper if [ -z "$DAEMONUSER" ] ; then start_daemon -p $PIDFILE $DAEMON -- $DAEMON_OPTS errcode=$? else # if we are using a daemonuser then change the user id start-stop-daemon --start --quiet --pidfile $PIDFILE \ --chuid $DAEMONUSER \ --exec $DAEMON -- $DAEMON_OPTS errcode=$? fi return $errcode } stop_server() { # Stop the process using the wrapper if [ -z "$DAEMONUSER" ] ; then killproc -p $PIDFILE $DAEMON errcode=$? else # if we are using a daemonuser then look for process that match start-stop-daemon --stop --quiet --pidfile $PIDFILE \ --user $DAEMONUSER \ --exec $DAEMON errcode=$? fi return $errcode } reload_server() { [ ! -f "$PIDFILE" ] && return 1 pid=pidofproc $PIDFILE # This is the daemon's pid # Send a SIGHUP kill -1 $pid return $? } force_stop() { # Force the process to die killing it manually [ ! -e "$PIDFILE" ] && return if running ; then kill -15 $pid # Is it really dead? sleep "$DIETIME"s if running ; then kill -9 $pid sleep "$DIETIME"s if running ; then echo "Cannot kill $NAME (pid=$pid)!" exit 1 fi fi fi rm -f $PIDFILE } case "$1" in start) log_daemon_msg "Starting $DESC " "$NAME" # Check if it's running first if running ; then log_progress_msg "apparently already running" log_end_msg 0 exit 0 fi if start_server ; then # NOTE: Some servers might die some time after they start, # this code will detect this issue if STARTTIME is set # to a reasonable value [ -n "$STARTTIME" ] && sleep $STARTTIME # Wait some time if running ; then # It's ok, the server started and is running log_end_msg 0 else # It is not running after we did start log_end_msg 1 fi else # Either we could not start it log_end_msg 1 fi ;; stop) log_daemon_msg "Stopping $DESC" "$NAME" if running ; then # Only stop the server if we see it running errcode=0 stop_server || errcode=$? log_end_msg $errcode else # If it's not running don't do anything log_progress_msg "apparently not running" log_end_msg 0 exit 0 fi ;; force-stop) # First try to stop gracefully the program $0 stop if running; then # If it's still running try to kill it more forcefully log_daemon_msg "Stopping (force) $DESC" "$NAME" errcode=0 force_stop || errcode=$? log_end_msg $errcode fi ;; restart|force-reload) log_daemon_msg "Restarting $DESC" "$NAME" errcode=0 stop_server || errcode=$? # Wait some sensible amount, some server need this [ -n "$DIETIME" ] && sleep $DIETIME start_server || errcode=$? [ -n "$STARTTIME" ] && sleep $STARTTIME running || errcode=$? log_end_msg $errcode ;; status) log_daemon_msg "Checking status of $DESC" "$NAME" if running ; then log_progress_msg "running" log_end_msg 0 else log_progress_msg "apparently not running" log_end_msg 1 exit 1 fi ;; # Use this if the daemon cannot reload reload) log_warning_msg "Reloading $NAME daemon: not implemented, as the daemon" log_warning_msg "cannot re-read the config file (use restart)." ;; # And this if it cann #reload) # # If the daemon can reload its config files on the fly # for example by sending it SIGHUP, do it here. # # If the daemon responds to changes in its config file # directly anyway, make this a do-nothing entry. # # log_daemon_msg "Reloading $DESC configuration files" "$NAME" # if running ; then # reload_server # if ! running ; then # Process died after we tried to reload # log_progress_msg "died on reload" # log_end_msg 1 # exit 1 # fi # else # log_progress_msg "server is not running" # log_end_msg 1 # exit 1 # fi #;; *) N=/etc/init.d/$NAME echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2 exit 1 ;; esac exit 0 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/menu.ex����������������������������0000664�0000000�0000000�00000000245�12077065715�022351� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������?package(generic-dh-make-2008):needs="X11|text|vc|wm" section="Applications/see-menu-manual"\ title="generic-dh-make-2008" command="/usr/bin/generic-dh-make-2008" �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/cron.d.ex��������������������������0000664�0000000�0000000�00000000252�12077065715�022566� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # Regular cron jobs for the generic-dh-make-2008 package # 0 4 * * * root [ -x /usr/bin/generic-dh-make-2008_maintenance ] && /usr/bin/generic-dh-make-2008_maintenance ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/emacsen-startup.ex�����������������0000664�0000000�0000000�00000002367�12077065715�024527� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������;; -*-emacs-lisp-*- ;; ;; Emacs startup file, e.g. /etc/emacs/site-start.d/50generic-dh-make-2008.el ;; for the Debian generic-dh-make-2008 package ;; ;; Originally contributed by Nils Naumann <naumann@unileoben.ac.at> ;; Modified by Dirk Eddelbuettel <edd@debian.org> ;; Adapted for dh-make by Jim Van Zandt <jrv@debian.org> ;; The generic-dh-make-2008 package follows the Debian/GNU Linux 'emacsen' policy and ;; byte-compiles its elisp files for each 'emacs flavor' (emacs19, ;; xemacs19, emacs20, xemacs20...). The compiled code is then ;; installed in a subdirectory of the respective site-lisp directory. ;; We have to add this to the load-path: (let ((package-dir (concat "/usr/share/" (symbol-name flavor) "/site-lisp/generic-dh-make-2008"))) ;; If package-dir does not exist, the generic-dh-make-2008 package must have ;; removed but not purged, and we should skip the setup. (when (file-directory-p package-dir) (setq load-path (cons package-dir load-path)) (autoload 'generic-dh-make-2008-mode "generic-dh-make-2008-mode" "Major mode for editing generic-dh-make-2008 files." t) (add-to-list 'auto-mode-alist '("\\.generic-dh-make-2008$" . generic-dh-make-2008-mode)))) �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/changelog��������������������������0000664�0000000�0000000�00000000303�12077065715�022714� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������generic-dh-make-2008 (1.0-1) unstable; urgency=low * Initial release (Closes: #nnnn) <nnnn is the bug number of your ITP> -- Russ Allbery <rra@debian.org> Mon, 29 Dec 2008 17:33:59 -0800 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/compat�����������������������������0000664�0000000�0000000�00000000002�12077065715�022244� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������7 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/rules������������������������������0000775�0000000�0000000�00000003472�12077065715�022134� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/usr/bin/make -f # -*- makefile -*- # Sample debian/rules that uses debhelper. # This file was originally written by Joey Hess and Craig Small. # As a special exception, when this file is copied by dh-make into a # dh-make output file, you may use that output file without restriction. # This special exception was added by Craig Small in version 0.37 of dh-make. # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 configure: configure-stamp configure-stamp: dh_testdir # Add here commands to configure the package. touch configure-stamp build: build-stamp build-stamp: configure-stamp dh_testdir # Add here commands to compile the package. $(MAKE) #docbook-to-man debian/generic-dh-make-2008.sgml > generic-dh-make-2008.1 touch $@ clean: dh_testdir dh_testroot rm -f build-stamp configure-stamp # Add here commands to clean up after the build process. $(MAKE) clean dh_clean install: build dh_testdir dh_testroot dh_clean -k dh_installdirs # Add here commands to install the package into debian/generic-dh-make-2008. $(MAKE) DESTDIR=$(CURDIR)/debian/generic-dh-make-2008 install # Build architecture-independent files here. binary-indep: build install # We have nothing to do by default. # Build architecture-dependent files here. binary-arch: build install dh_testdir dh_testroot dh_installchangelogs dh_installdocs dh_installexamples # dh_install # dh_installmenu # dh_installdebconf # dh_installlogrotate # dh_installemacsen # dh_installpam # dh_installmime # dh_python # dh_installinit # dh_installcron # dh_installinfo dh_installman dh_link dh_strip dh_compress dh_fixperms # dh_perl # dh_makeshlibs dh_installdeb dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb binary: binary-indep binary-arch .PHONY: build clean binary-indep binary-arch binary install configure ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/dirs�������������������������������0000664�0000000�0000000�00000000021�12077065715�021723� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������usr/bin usr/sbin ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/control����������������������������0000664�0000000�0000000�00000000621�12077065715�022450� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Source: generic-dh-make-2008 Section: unknown Priority: extra Maintainer: Russ Allbery <rra@debian.org> Build-Depends: debhelper (>= 7) Standards-Version: 3.7.3 Homepage: <insert the upstream URL, if relevant> Package: generic-dh-make-2008 Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: <insert up to 60 chars description> <insert long description, indented with spaces> ���������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/generic-dh-make-2008.default.ex����0000664�0000000�0000000�00000000422�12077065715�026334� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# Defaults for generic-dh-make-2008 initscript # sourced by /etc/init.d/generic-dh-make-2008 # installed at /etc/default/generic-dh-make-2008 by the maintainer scripts # # This is a POSIX shell fragment # # Additional options that are passed to the Daemon. DAEMON_OPTS="" ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/preinst.ex�������������������������0000664�0000000�0000000�00000001301�12077065715�023063� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/bin/sh # preinst script for generic-dh-make-2008 # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * <new-preinst> `install' # * <new-preinst> `install' <old-version> # * <new-preinst> `upgrade' <old-version> # * <old-preinst> `abort-upgrade' <new-version> # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in install|upgrade) ;; abort-upgrade) ;; *) echo "preinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/manpage.sgml.ex��������������������0000664�0000000�0000000�00000011071�12077065715�023755� 0����������������������������������������������������������������������������������������������������ustar ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [ <!-- Process this file with docbook-to-man to generate an nroff manual page: `docbook-to-man manpage.sgml > manpage.1'. You may view the manual page with: `docbook-to-man manpage.sgml | nroff -man | less'. A typical entry in a Makefile or Makefile.am is: manpage.1: manpage.sgml docbook-to-man $< > $@ The docbook-to-man binary is found in the docbook-to-man package. Please remember that if you create the nroff version in one of the debian/rules file targets (such as build), you will need to include docbook-to-man in your Build-Depends control field. --> <!-- Fill in your name for FIRSTNAME and SURNAME. --> <!ENTITY dhfirstname "<firstname>FIRSTNAME</firstname>"> <!ENTITY dhsurname "<surname>SURNAME</surname>"> <!-- Please adjust the date whenever revising the manpage. --> <!ENTITY dhdate "<date>December 29, 2008</date>"> <!-- SECTION should be 1-8, maybe w/ subsection other parameters are allowed: see man(7), man(1). --> <!ENTITY dhsection "<manvolnum>SECTION</manvolnum>"> <!ENTITY dhemail "<email>rra@debian.org</email>"> <!ENTITY dhusername "Russ Allbery"> <!ENTITY dhucpackage "<refentrytitle>GENERIC-DH-MAKE-2008</refentrytitle>"> <!ENTITY dhpackage "generic-dh-make-2008"> <!ENTITY debian "<productname>Debian</productname>"> <!ENTITY gnu "<acronym>GNU</acronym>"> <!ENTITY gpl "&gnu; <acronym>GPL</acronym>"> ]> <refentry> <refentryinfo> <address> &dhemail; </address> <author> &dhfirstname; &dhsurname; </author> <copyright> <year>2003</year> <holder>&dhusername;</holder> </copyright> &dhdate; </refentryinfo> <refmeta> &dhucpackage; &dhsection; </refmeta> <refnamediv> <refname>&dhpackage;</refname> <refpurpose>program to do something</refpurpose> </refnamediv> <refsynopsisdiv> <cmdsynopsis> <command>&dhpackage;</command> <arg><option>-e <replaceable>this</replaceable></option></arg> <arg><option>--example <replaceable>that</replaceable></option></arg> </cmdsynopsis> </refsynopsisdiv> <refsect1> <title>DESCRIPTION This manual page documents briefly the &dhpackage; and bar commands. This manual page was written for the &debian; distribution because the original program does not have a manual page. Instead, it has documentation in the &gnu; Info format; see below. &dhpackage; is a program that... OPTIONS These programs follow the usual &gnu; command line syntax, with long options starting with two dashes (`-'). A summary of options is included below. For a complete description, see the Info files. Show summary of options. Show version of program. SEE ALSO bar (1), baz (1). The programs are documented fully by The Rise and Fall of a Fooish Bar available via the Info system. AUTHOR This manual page was written by &dhusername; &dhemail; for the &debian; system (but may be used by others). Permission is granted to copy, distribute and/or modify this document under the terms of the &gnu; General Public License, Version 2 any later version published by the Free Software Foundation. On Debian systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL. lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/watch.ex0000664000000000000000000000153312077065715022514 0ustar # Example watch control file for uscan # Rename this file to "watch" and then you can run the "uscan" command # to check for upstream updates and more. # See uscan(1) for format # Compulsory line, this is a version 3 file version=3 # Uncomment to examine a Webpage # #http://www.example.com/downloads.php generic-dh-make-2008-(.*)\.tar\.gz # Uncomment to examine a Webserver directory #http://www.example.com/pub/generic-dh-make-2008-(.*)\.tar\.gz # Uncommment to examine a FTP server #ftp://ftp.example.com/pub/generic-dh-make-2008-(.*)\.tar\.gz debian uupdate # Uncomment to find new files on sourceforge, for devscripts >= 2.9 # http://sf.net/generic-dh-make-2008/generic-dh-make-2008-(.*)\.tar\.gz # Uncomment to find new files on GooglePages # http://example.googlepages.com/foo.html generic-dh-make-2008-(.*)\.tar\.gz lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/README.Debian0000664000000000000000000000031112077065715023102 0ustar generic-dh-make-2008 for Debian ------------------------------- -- Russ Allbery Mon, 29 Dec 2008 17:33:59 -0800 lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/docs0000664000000000000000000000000712077065715021716 0ustar README lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/emacsen-remove.ex0000664000000000000000000000077612077065715024324 0ustar #!/bin/sh -e # /usr/lib/emacsen-common/packages/remove/generic-dh-make-2008 FLAVOR=$1 PACKAGE=generic-dh-make-2008 if [ ${FLAVOR} != emacs ]; then if test -x /usr/sbin/install-info-altdir; then echo remove/${PACKAGE}: removing Info links for ${FLAVOR} install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/share/info/generic-dh-make-2008.info.gz fi echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR} rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE} fi lintian-2.5.22ubuntu1/t/tests/generic-dh-make-2008/debian/debian/manpage.xml.ex0000664000000000000000000002542112077065715023617 0ustar .
will be generated. You may view the manual page with: nroff -man .
| less'. A typical entry in a Makefile or Makefile.am is: DB2MAN = /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl XP = xsltproc -''-nonet -''-param man.charmap.use.subset "0" manpage.1: manpage.xml $(XP) $(DB2MAN) $< The xsltproc binary is found in the xsltproc package. The XSL files are in docbook-xsl. A description of the parameters you can use can be found in the docbook-xsl-doc-* packages. Please remember that if you create the nroff version in one of the debian/rules file targets (such as build), you will need to include xsltproc and docbook-xsl in your Build-Depends control field. Alternatively use the xmlto command/package. That will also automatically pull in xsltproc and docbook-xsl. Notes for using docbook2x: docbook2x-man does not automatically create the AUTHOR(S) and COPYRIGHT sections. In this case, please add them manually as ... . To disable the automatic creation of the AUTHOR(S) and COPYRIGHT sections read /usr/share/doc/docbook-xsl/doc/manpages/authors.html. This file can be found in the docbook-xsl-doc-html package. Validation can be done using: `xmllint -''-noout -''-valid manpage.xml` General documentation about man-pages and man-page-formatting: man(1), man(7), http://www.tldp.org/HOWTO/Man-Page/ --> ]> &dhtitle; &dhpackage; &dhfirstname; &dhsurname; Wrote this manpage for the Debian system.
&dhemail;
2007 &dhusername; This manual page was written for the Debian system (but may be used by others). Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 or (at your option) any later version published by the Free Software Foundation. On Debian systems, the complete text of the GNU General Public License can be found in /usr/share/common-licenses/GPL.
&dhucpackage; &dhsection; &dhpackage; program to do something &dhpackage; this this that &dhpackage; DESCRIPTION This manual page documents briefly the &dhpackage; and bar commands. This manual page was written for the Debian distribution because the original program does not have a manual page. Instead, it has documentation in the GNU info 1 format; see below. &dhpackage; is a program that... OPTIONS The program follows the usual GNU command line syntax, with long options starting with two dashes (`-'). A summary of options is included below. For a complete description, see the info 1 files. Does this and that. Show summary of options. Show version of program. FILES /etc/foo.conf The system-wide configuration file to control the behaviour of &dhpackage;. See foo.conf 5 for further details. ${HOME}/.foo.conf The per-user configuration file to control the behaviour of &dhpackage;. See foo.conf 5 for further details. ENVIONMENT FOO_CONF If used, the defined file is used as configuration file (see also ). DIAGNOSTICS The following diagnostics may be issued on stderr: Bad configuration file. Exiting. The configuration file seems to contain a broken configuration line. Use the option, to get more info. &dhpackage; provides some return codes, that can be used in scripts: Code Diagnostic 0 Program exited successfully. 1 The configuration file seems to be broken. BUGS The program is currently limited to only work with the foobar library. The upstreams BTS can be found at . SEE ALSO bar 1 , baz 1 , foo.conf 5 The programs are documented fully by The Rise and Fall of a Fooish Bar available via the info 1 system.
lintian-2.5.22ubuntu1/t/tests/version-substvars-general/0000775000000000000000000000000012310413146020206 5ustar lintian-2.5.22ubuntu1/t/tests/version-substvars-general/tags0000664000000000000000000000126512310413146021073 0ustar E: version-substvars-general source: not-binnmuable-all-depends-any program-data-extra -> program-bin E: version-substvars-general source: not-binnmuable-any-depends-all program-bin -> program-data E: version-substvars-general source: not-binnmuable-any-depends-all program-utils -> program-data E: version-substvars-general source: not-binnmuable-any-depends-any program-utils -> program-bin E: version-substvars-general source: version-substvar-for-external-package program-data -> foreign-pkg E: version-substvars-general source: version-substvar-for-external-package program-data -> other-foreign-pkg W: version-substvars-general source: substvar-source-version-is-deprecated program-data lintian-2.5.22ubuntu1/t/tests/version-substvars-general/desc0000664000000000000000000000042712077065716021072 0ustar Testname: version-substvars-general Sequence: 6000 Version: 1.0 Description: Test of substvars Test-For: not-binnmuable-all-depends-any not-binnmuable-any-depends-all not-binnmuable-any-depends-any substvar-source-version-is-deprecated version-substvar-for-external-package lintian-2.5.22ubuntu1/t/tests/version-substvars-general/debian/0000775000000000000000000000000012077065716021450 5ustar lintian-2.5.22ubuntu1/t/tests/version-substvars-general/debian/some-file0000664000000000000000000000005712077065716023255 0ustar Hi, I could totally be architecture dependent. lintian-2.5.22ubuntu1/t/tests/version-substvars-general/debian/debian/0000775000000000000000000000000012310413206022647 5ustar lintian-2.5.22ubuntu1/t/tests/version-substvars-general/debian/debian/control.in0000664000000000000000000000360712310413206024665 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: program-bin Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, program-data (= $\{binary:Version\}) Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: program-data Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, foreign-pkg:any (= $\{Source-Version\}) Replaces: other-foreign-pkg:any (<< $\{binary:Version\}) Description: {$description} - data This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . Data package. Package: program-utils Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, program-bin:any (= $\{source:Version\}), program-data (>= $\{binary:Version\}) Description: {$description} - extra utils This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . Extra utils. Package: program-data-extra Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, program-bin:any (= $\{binary:Version\}), Description: {$description} - extra data This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . Extra-Data package. lintian-2.5.22ubuntu1/t/tests/version-substvars-general/debian/debian/rules0000664000000000000000000000023512077065716023747 0ustar #!/usr/bin/make -f %: dh $@ override_dh_auto_install: set -e ; for P in $$(dh_listpackages -a) ; do \ dh_install -p$$P some-file usr/lib/$$P ; \ done lintian-2.5.22ubuntu1/t/tests/init.d-lsb-headers/0000775000000000000000000000000012077065715016447 5ustar lintian-2.5.22ubuntu1/t/tests/init.d-lsb-headers/tags0000664000000000000000000000540712077065715017336 0ustar E: init.d-lsb-headers-local: init.d-script-missing-dependency-on-local_fs etc/init.d/init.d-lsb-headers-local: required-start E: init.d-lsb-headers-parsing: init.d-script-starts-in-stop-runlevel etc/init.d/init.d-lsb-headers-parsing 0 E: init.d-lsb-headers-remote: init.d-script-missing-dependency-on-remote_fs etc/init.d/init.d-lsb-headers-remote: required-start E: init.d-lsb-headers-virtual: init.d-script-depends-on-unknown-virtual-facility etc/init.d/init.d-lsb-headers-virtual $something_that_doesnt_exist E: init.d-lsb-headers: init.d-script-should-depend-on-virtual-facility etc/init.d/init.d-lsb-headers mountall -> $local_fs E: init.d-lsb-headers: init.d-script-should-depend-on-virtual-facility etc/init.d/init.d-lsb-headers mountnfs -> $remote_fs E: init.d-lsb-headers: init.d-script-should-depend-on-virtual-facility etc/init.d/init.d-lsb-headers networking -> $network E: init.d-lsb-headers: init.d-script-should-depend-on-virtual-facility etc/init.d/init.d-lsb-headers portmap -> $portmap E: init.d-lsb-headers: init.d-script-should-depend-on-virtual-facility etc/init.d/init.d-lsb-headers sysklogd -> $syslog E: init.d-lsb-headers: init.d-script-starts-in-stop-runlevel etc/init.d/init.d-lsb-headers 0 E: init.d-lsb-headers: init.d-script-starts-in-stop-runlevel etc/init.d/init.d-lsb-headers 6 I: init.d-lsb-headers-missing: init.d-script-missing-lsb-description etc/init.d/init.d-lsb-headers-missing I: init.d-lsb-headers-missing: init.d-script-missing-lsb-short-description etc/init.d/init.d-lsb-headers-missing I: init.d-lsb-headers: init.d-script-does-not-provide-itself etc/init.d/init.d-lsb-headers W: init.d-lsb-headers-missing: init.d-script-missing-start etc/init.d/init.d-lsb-headers-missing 4 W: init.d-lsb-headers-missing: init.d-script-possible-missing-stop etc/init.d/init.d-lsb-headers-missing 1 W: init.d-lsb-headers-parsing: init.d-script-has-conflicting-start-stop etc/init.d/init.d-lsb-headers-parsing 0 W: init.d-lsb-headers-parsing: init.d-script-possible-missing-stop etc/init.d/init.d-lsb-headers-parsing 1 6 W: init.d-lsb-headers: init-d-script-stops-in-s-runlevel etc/init.d/init.d-lsb-headers W: init.d-lsb-headers: init.d-script-has-bad-start-runlevel etc/init.d/init.d-lsb-headers X W: init.d-lsb-headers: init.d-script-has-bad-stop-runlevel etc/init.d/init.d-lsb-headers Y W: init.d-lsb-headers: init.d-script-has-conflicting-start-stop etc/init.d/init.d-lsb-headers 0 W: init.d-lsb-headers: init.d-script-has-conflicting-start-stop etc/init.d/init.d-lsb-headers 6 W: init.d-lsb-headers: init.d-script-has-duplicate-lsb-keyword etc/init.d/init.d-lsb-headers:13 short-description W: init.d-lsb-headers: init.d-script-possible-missing-stop etc/init.d/init.d-lsb-headers 1 W: init.d-lsb-headers: init.d-script-provides-virtual-facility etc/init.d/init.d-lsb-headers $bad_facility lintian-2.5.22ubuntu1/t/tests/init.d-lsb-headers/desc0000664000000000000000000000141412077065715017310 0ustar Testname: init.d-lsb-headers Sequence: 6000 Version: 1.0 Description: Test tags related to init script LSB headers Test-For: init-d-script-stops-in-s-runlevel init.d-script-depends-on-unknown-virtual-facility init.d-script-does-not-provide-itself init.d-script-has-bad-start-runlevel init.d-script-has-bad-stop-runlevel init.d-script-has-conflicting-start-stop init.d-script-has-duplicate-lsb-keyword init.d-script-missing-dependency-on-remote_fs init.d-script-missing-dependency-on-local_fs init.d-script-missing-lsb-description init.d-script-missing-lsb-short-description init.d-script-missing-start init.d-script-possible-missing-stop init.d-script-provides-virtual-facility init.d-script-should-depend-on-virtual-facility init.d-script-starts-in-stop-runlevel lintian-2.5.22ubuntu1/t/tests/init.d-lsb-headers/debian/0000775000000000000000000000000012077065715017671 5ustar lintian-2.5.22ubuntu1/t/tests/init.d-lsb-headers/debian/debian/0000775000000000000000000000000012310413206021071 5ustar lintian-2.5.22ubuntu1/t/tests/init.d-lsb-headers/debian/debian/init.d-lsb-headers-virtual.init0000664000000000000000000000073612310413146027027 0ustar #!/bin/sh set -e ### BEGIN INIT INFO # Provides: init.d-lsb-headers-virtual # Required-Start: $local_fs $something_that_doesnt_exist # Should-Start: $something_we_might_not_ship # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: Just a test script # Description: The short description pretty much covers it. ### END INIT INFO . /lib/lsb/init-functions case "$1" in start|stop|force-reload|restart|status|*) echo hello world ;; esac lintian-2.5.22ubuntu1/t/tests/init.d-lsb-headers/debian/debian/control.in0000664000000000000000000000512512310413206023104 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: {$source}-parsing Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} -- headers parsing This is a test package designed to exercise the parsing of init scripts by Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: {$source}-remote Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} -- using /usr files This is a test package designed to exercise the checking of init scripts by Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: {$source}-length Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} -- breaking length assumptions Test package designed to exercise the checking of init scripts by Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: {$source}-local Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} -- using /var files This is another test package designed to exercise the checking of init scripts by Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: {$source}-missing Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} -- missing runlevels This is yet another test package designed to exercise the checking of init scripts by Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: {$source}-virtual Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} -- virtual facilities Test package to exercise the virtual facilities in init.d scripts checks by lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/tests/init.d-lsb-headers/debian/debian/init.d-lsb-headers-parsing.init0000664000000000000000000000063112310413146026776 0ustar #!/bin/sh set -e ### BEGIN INIT INFO # Provides: init.d-lsb-headers-parsing # Required-Start: $local_fs # Required-Stop:$local_fs # Default-Start: 0 # Default-Stop: 0 # Short-Description: Do nothing at all # Description: The short description pretty much covers it. ### END INIT INFO . /lib/lsb/init-functions case "$1" in start|stop|force-reload|restart|status|*) echo hello world! ;; esac lintian-2.5.22ubuntu1/t/tests/init.d-lsb-headers/debian/debian/init.d-lsb-headers-missing.init0000664000000000000000000000044312310413146027005 0ustar #!/bin/sh set -e ### BEGIN INIT INFO # Provides: init.d-lsb-headers-missing # Required-Start: # Required-Stop: # Default-Start: 2 3 5 # Default-Stop: 0 6 ### END INIT INFO . /lib/lsb/init-functions case "$1" in start|stop|force-reload|restart|status|*) echo hello world ;; esac lintian-2.5.22ubuntu1/t/tests/init.d-lsb-headers/debian/debian/init.d-lsb-headers-local.init0000664000000000000000000000065412310413146026432 0ustar #!/bin/sh set -e ### BEGIN INIT INFO # Provides: init.d-lsb-headers-local # Required-Start: # Required-Stop: $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Do nothing at all # Description: The short description pretty much covers it. ### END INIT INFO exec >/var/log/foo.log . /lib/lsb/init-functions case "$1" in start|stop|force-reload|restart|status|*) echo hello world! ;; esac lintian-2.5.22ubuntu1/t/tests/init.d-lsb-headers/debian/debian/init.d-lsb-headers-remote.init0000664000000000000000000000070012310413146026623 0ustar #!/bin/sh set -e ### BEGIN INIT INFO # Provides: init.d-lsb-headers-remote # Required-Start: $local_fs # Required-Stop: # Should-Stop: $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: # Short-Description: Do nothing at all # Description: The short description pretty much covers it. ### END INIT INFO . /lib/lsb/init-functions . /usr/share/foo/lib.sh case "$1" in start|stop|force-reload|restart|status|*) echo hello world! ;; esac lintian-2.5.22ubuntu1/t/tests/init.d-lsb-headers/debian/debian/init.d-lsb-headers.init0000664000000000000000000000076412310413146025344 0ustar #!/bin/sh set -e ### BEGIN INIT INFO # Provides: nothing $bad_facility # Required-Start: mountall networking sysklogd # Should-Start: portmap # Required-Stop: mountnfs # Default-Start: 0 6 X # Default-Stop: S Y 0 6 # Short-Description: Do nothing at all # Short-Description: Do nothing at all # Description: The short description pretty much covers it. ### END INIT INFO . /lib/lsb/init-functions case "$1" in start|stop|force-reload|restart|status|*) echo hello world! ;; esac lintian-2.5.22ubuntu1/t/tests/init.d-lsb-headers/debian/debian/init.d-lsb-headers-length.init0000664000000000000000000000060412310413146026614 0ustar #!/bin/sh set -e ### BEGIN INIT INFO # Provides: init.d-lsb-headers-length # Required-Start: # Required-Stop: # Default-Start: # Default-Stop: 0 1 2 6 # Short-Description: Do nothing at all # Description: The short description pretty much covers it. ### END INIT INFO . /lib/lsb/init-functions case "$1" in start|stop|force-reload|restart|status|*) echo hello world! ;; esac lintian-2.5.22ubuntu1/t/tests/cruft-ancient-libtool/0000775000000000000000000000000012077065714017276 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-ancient-libtool/tags0000664000000000000000000000017312077065714020160 0ustar W: cruft-ancient-libtool source: ancient-libtool ltconfig W: cruft-ancient-libtool source: ancient-libtool ltmain.sh 1.3.5 lintian-2.5.22ubuntu1/t/tests/cruft-ancient-libtool/desc0000664000000000000000000000030012077065714020130 0ustar Testname: cruft-ancient-libtool Sequence: 6000 Version: 1.0 Description: Test that an very old ltmain.sh/ltconfig is detected correctly Test-For: ancient-libtool References: Debian Bug#293296 lintian-2.5.22ubuntu1/t/tests/cruft-ancient-libtool/debian/0000775000000000000000000000000012077065714020520 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-ancient-libtool/debian/ltconfig0000664000000000000000000000000012077065714022236 0ustar lintian-2.5.22ubuntu1/t/tests/cruft-ancient-libtool/debian/ltmain.sh0000664000000000000000000000367012077065714022346 0ustar # ltmain.sh - Provide generalized library-building support services. # NOTE: Changing this file will not affect anything until you rerun ltconfig. # # Copyright (C) 1996-1999 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Check that we have a working $echo. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell, and then maybe $echo will work. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <> a; } lintian-2.5.22ubuntu1/t/tests/cruft-contains-waf/upstream/waf.in0000664000000000000000000000054212077065714021552 0ustar #!/usr/bin/python # encoding: ISO-8859-1 # # We just do a little python... for the show import os, sys if sys.hexversion<0x203000f: raise ImportError("Waf requires python >= 2.3") # and we are pretending to be a waf script # okay, thats enough... below we will include a binary tarball... # That is as fun as it sounds (which is to say not a lot). lintian-2.5.22ubuntu1/t/tests/cruft-contains-waf/tags0000664000000000000000000000007512077065714017467 0ustar E: cruft-contains-waf source: source-contains-waf-binary waf lintian-2.5.22ubuntu1/t/tests/cruft-contains-waf/desc0000664000000000000000000000023112077065714017441 0ustar Testname: cruft-contains-waf Sequence: 6000 Version: 1.0-1 Type: non-native Description: Check for sources with waf Test-For: source-contains-waf-binary lintian-2.5.22ubuntu1/t/tests/cruft-contains-waf/pre_upstream0000775000000000000000000000042512077065714021241 0ustar #!/bin/sh # # Time to create a waf binary... set -e dir="$1" cd "$dir" tar cjf waf-bin.tar.bz2 some-source.c cp waf.in waf echo "#==>" >> waf echo -n "#" >> waf perl -pe 's,\n,\#\*,go; s,\r,\#\%,go;' waf-bin.tar.bz2 >> waf echo >> waf echo "#<==" >> waf rm waf-bin.tar.bz2 lintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/0000775000000000000000000000000012077065715020764 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/tags0000664000000000000000000000302312077065715021643 0ustar E: scripts-control-interpreters-forbidden: control-interpreter-without-depends control/postinst #!/usr/bin/python E: scripts-control-interpreters-forbidden: forbidden-config-interpreter #!/usr/bin/python E: scripts-control-interpreters-forbidden: forbidden-postrm-interpreter #!/usr/bin/python E: scripts-control-interpreters-paths: control-interpreter-in-usr-local control/preinst #!/usr/local/bin/bash E: scripts-control-interpreters-paths: control-interpreter-without-depends control/prerm #!/bin/python E: scripts-control-interpreters-paths: wrong-path-for-interpreter #!/bin/python != /usr/bin/python (control/prerm) E: scripts-control-interpreters-paths: wrong-path-for-interpreter #!/usr/bin/bash != /bin/bash (control/postinst) E: scripts-control-interpreters-python: preinst-interpreter-without-predepends #!/usr/bin/python E: scripts-control-interpreters-unknown: unknown-control-interpreter control/postinst #!/usr/bin/unknown W: scripts-control-interpreters-forbidden: unusual-control-interpreter control/postinst #!/usr/bin/python W: scripts-control-interpreters-paths: unusual-control-interpreter control/prerm #!/bin/python W: scripts-control-interpreters-prepython: unusual-control-interpreter control/postinst #!/usr/bin/python W: scripts-control-interpreters-prepython: unusual-control-interpreter control/preinst #!/usr/bin/python W: scripts-control-interpreters-python: unusual-control-interpreter control/postinst #!/usr/bin/python W: scripts-control-interpreters-python: unusual-control-interpreter control/preinst #!/usr/bin/python lintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/desc0000664000000000000000000000066512077065715021634 0ustar Testname: scripts-control-interpreters Sequence: 6000 Type: native Version: 1.0 Description: Check maintainer and config script interpreters Test-For: control-interpreter-in-usr-local wrong-path-for-interpreter forbidden-config-interpreter forbidden-postrm-interpreter unusual-control-interpreter preinst-interpreter-without-predepends control-interpreter-without-depends unknown-control-interpreter References: Debian Bug#508307 lintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/0000775000000000000000000000000012077065715022206 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/0000775000000000000000000000000012310413206023406 5ustar ././@LongLink0000644000000000000000000000017100000000000011602 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/scripts-control-interpreters-forbidden.postinstlintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/scripts-control-interpreter0000664000000000000000000000025212077065715031060 0ustar #!/usr/bin/python import sys """ This is here to fool Lintian to avoid additional tags about debconf. . /usr/share/debconf/confmodule """ sys.exit(0) """ #DEBHELPER# """ ././@LongLink0000644000000000000000000000017200000000000011603 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/scripts-control-interpreters-forbidden.templateslintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/scripts-control-interpreter0000664000000000000000000000014212077065715031056 0ustar Template: scripts-control-interpreters-forbidden/test Type: string _description: Enter something: ././@LongLink0000644000000000000000000000016700000000000011607 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/scripts-control-interpreters-forbidden.configlintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/scripts-control-interpreter0000664000000000000000000000031712077065715031062 0ustar #!/usr/bin/python import sys """ This is here to fool Lintian to avoid additional tags about debconf. . /usr/share/debconf/confmodule db_input low scripts-control-interpreters-forbidden/test """ sys.exit(0) lintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/control.in0000664000000000000000000000427512310413206025426 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source}-paths Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (paths) Interpreters with bad paths. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: {$source}-forbidden Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (forbidden) Forbidden control interpreters. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: {$source}-unknown Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (unknown) Unknown control interpreters. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: {$source}-python Architecture: {$architecture} Depends: python, $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (python) Python control interpreters with depends. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: {$source}-prepython Architecture: {$architecture} Pre-Depends: python Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (python preinst) Python control interpreters with pre-depends. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. ././@LongLink0000644000000000000000000000016500000000000011605 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/scripts-control-interpreters-python.preinstlintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/scripts-control-interpreter0000664000000000000000000000007512077065715031063 0ustar #!/usr/bin/python import sys sys.exit(0) """ #DEBHELPER# """ lintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/po/0000775000000000000000000000000012077065715024046 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/po/de.po0000664000000000000000000000053112077065715024775 0ustar msgid "" msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-12-28 14:30-0800\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" #. Type: string #. description #: ../scripts-control-interpreters-forbidden.templates:1001 msgid "Enter something:" msgstr "Not really a translation:" lintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/po/templates.pot0000664000000000000000000000126612077065715026575 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-12-28 14:30-0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #. Type: string #. description #: ../scripts-control-interpreters-forbidden.templates:1001 msgid "Enter something:" msgstr "" lintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/po/POTFILES.in0000664000000000000000000000011312077065715025616 0ustar [type: gettext/rfc822deb] scripts-control-interpreters-forbidden.templates ././@LongLink0000644000000000000000000000016700000000000011607 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/scripts-control-interpreters-unknown.postinstlintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/scripts-control-interpreter0000664000000000000000000000014012077065715031054 0ustar #!/usr/bin/unknown do the unknown thing shellicate this stuff ( #DEBHELPER# ) yay! exit happily ././@LongLink0000644000000000000000000000016700000000000011607 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/scripts-control-interpreters-forbidden.postrmlintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/scripts-control-interpreter0000664000000000000000000000022312077065715031056 0ustar #!/usr/bin/python import sys """ This is here to fool Lintian to avoid additional tags about debconf. db_purge """ sys.exit(0) """ #DEBHELPER# """ ././@LongLink0000644000000000000000000000017000000000000011601 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/scripts-control-interpreters-prepython.preinstlintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/scripts-control-interpreter0000664000000000000000000000007512077065715031063 0ustar #!/usr/bin/python import sys sys.exit(0) """ #DEBHELPER# """ ././@LongLink0000644000000000000000000000016500000000000011605 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/scripts-control-interpreters-paths.postinstlintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/scripts-control-interpreter0000664000000000000000000000006212077065715031057 0ustar #!/usr/bin/bash set -e run something #DEBHELPER# ././@LongLink0000644000000000000000000000016400000000000011604 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/scripts-control-interpreters-paths.preinstlintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/scripts-control-interpreter0000664000000000000000000000007012077065715031056 0ustar #!/usr/local/bin/bash set -e run something #DEBHELPER# ././@LongLink0000644000000000000000000000017100000000000011602 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/scripts-control-interpreters-prepython.postinstlintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/scripts-control-interpreter0000664000000000000000000000007512077065715031063 0ustar #!/usr/bin/python import sys sys.exit(0) """ #DEBHELPER# """ ././@LongLink0000644000000000000000000000016600000000000011606 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/scripts-control-interpreters-python.postinstlintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/scripts-control-interpreter0000664000000000000000000000007512077065715031063 0ustar #!/usr/bin/python import sys sys.exit(0) """ #DEBHELPER# """ ././@LongLink0000644000000000000000000000016200000000000011602 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/scripts-control-interpreters-paths.prermlintian-2.5.22ubuntu1/t/tests/scripts-control-interpreters/debian/debian/scripts-control-interpreter0000664000000000000000000000007112077065715031057 0ustar #!/bin/python import sys sys.exit(0) """ #DEBHELPER# """ lintian-2.5.22ubuntu1/t/tests/phppear-composer/0000775000000000000000000000000012310413146016340 5ustar lintian-2.5.22ubuntu1/t/tests/phppear-composer/upstream/0000775000000000000000000000000012310413146020200 5ustar lintian-2.5.22ubuntu1/t/tests/phppear-composer/upstream/composer.json0000664000000000000000000000000012310413146022710 0ustar lintian-2.5.22ubuntu1/t/tests/phppear-composer/tags0000664000000000000000000000011412310413146017215 0ustar I: phppear-composer source: composer-package-without-pkg-php-tools-builddep lintian-2.5.22ubuntu1/t/tests/phppear-composer/desc0000664000000000000000000000032412310413146017200 0ustar Testname: phppear-composer Sequence: 6000 Version: 1.0-1 Description: Composer phppear tests Test-For: composer-package-without-pkg-php-tools-builddep Test-Against: missing-pkg-php-tools-addon Type: non-native lintian-2.5.22ubuntu1/t/tests/standards-version-old/0000775000000000000000000000000012310413206017273 5ustar lintian-2.5.22ubuntu1/t/tests/standards-version-old/post_test0000664000000000000000000000007012077065716021262 0ustar s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/ lintian-2.5.22ubuntu1/t/tests/standards-version-old/tags0000664000000000000000000000013212310413206020150 0ustar W: standards-version-old source: out-of-date-standards-version 3.9.4 (current is CURRENT) lintian-2.5.22ubuntu1/t/tests/standards-version-old/desc0000664000000000000000000000023612077065716020160 0ustar Testname: standards-version-old Sequence: 6000 Version: 1.0 Description: Test old standards version on recent package Test-For: out-of-date-standards-version lintian-2.5.22ubuntu1/t/tests/standards-version-old/debian/0000775000000000000000000000000012077065716020540 5ustar lintian-2.5.22ubuntu1/t/tests/standards-version-old/debian/debian/0000775000000000000000000000000012310413206021737 5ustar lintian-2.5.22ubuntu1/t/tests/standards-version-old/debian/debian/changelog.in0000664000000000000000000000032312310413206024214 0ustar {$source} ({$version}) unstable; urgency=low * Lintian Test Suite. * Test: {$testname} * Suppress "should close ITP bug" messages. (Closes: #123456) -- {$author} Sat, 22 February 2014 09:00:00 +0100 lintian-2.5.22ubuntu1/t/tests/standards-version-old/debian/debian/control.in0000664000000000000000000000074612310413206023756 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: 3.9.4 Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/files-zero-byte-doc/0000775000000000000000000000000012077065715016656 5ustar lintian-2.5.22ubuntu1/t/tests/files-zero-byte-doc/post_test0000664000000000000000000000010012077065715020614 0ustar # Ignore all duplicate-files tags /.: .*: duplicate-files .*/ d lintian-2.5.22ubuntu1/t/tests/files-zero-byte-doc/tags0000664000000000000000000000122512077065715017537 0ustar W: files-zero-byte-doc: zero-byte-file-in-doc-directory usr/share/doc/files-zero-byte-doc/NEWS.gz W: files-zero-byte-doc: zero-byte-file-in-doc-directory usr/share/doc/files-zero-byte-doc/foo__init__.py W: files-zero-byte-doc: zero-byte-file-in-doc-directory usr/share/doc/files-zero-byte-doc/html.map W: files-zero-byte-doc: zero-byte-file-in-doc-directory usr/share/doc/files-zero-byte-doc/htmlfoo.map W: files-zero-byte-doc: zero-byte-file-in-doc-directory usr/share/doc/files-zero-byte-doc/manual/foo.map.gz W: files-zero-byte-doc: zero-byte-file-in-doc-directory usr/share/doc/files-zero-byte-doc/some-really-long-file-name-to-make-the-gzip-file-larger.gz lintian-2.5.22ubuntu1/t/tests/files-zero-byte-doc/desc0000664000000000000000000000032212077065715017514 0ustar Testname: files-zero-byte-doc Sequence: 6000 Version: 1.0 Section: doc Description: Check detection of zero-byte files in doc directories Test-For: zero-byte-file-in-doc-directory References: Debian Bug#507273 lintian-2.5.22ubuntu1/t/tests/files-zero-byte-doc/debian/0000775000000000000000000000000012077065715020100 5ustar lintian-2.5.22ubuntu1/t/tests/files-zero-byte-doc/debian/Makefile0000664000000000000000000000144612077065715021545 0ustar ROOT = $(DESTDIR)/usr/share/doc/files-zero-byte-doc default: : install: mkdir -p $(ROOT) # Should be ignored. mkdir -p $(ROOT)/examples touch $(ROOT)/examples/empty touch $(ROOT)/__init__.py mkdir -p $(ROOT)/python/foo touch $(ROOT)/python/foo/__init__.py mkdir -p $(ROOT)/html touch $(ROOT)/html/blah.map mkdir -p $(ROOT)/manual/1/html/foo touch $(ROOT)/manual/1/html/foo/blah.map # Should be diagnosed. touch $(ROOT)/NEWS touch $(ROOT)/foo__init__.py touch $(ROOT)/html.map touch $(ROOT)/htmlfoo.map mkdir -p $(ROOT)/manual touch $(ROOT)/manual/foo.map gzip -9 $(ROOT)/manual/foo.map touch $(ROOT)/some-really-long-file-name-to-make-the-gzip-file-larger gzip -9 $(ROOT)/some-really-long-file-name-to-make-the-gzip-file-larger .PHONY: clean distclean realclean install check test lintian-2.5.22ubuntu1/t/tests/patch-systems-dpatch-description/0000775000000000000000000000000012077065715021461 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-dpatch-description/tags0000664000000000000000000000107612077065715022346 0ustar E: patch-systems-dpatch-description source: build-depends-on-obsolete-package build-depends: dpatch E: patch-systems-dpatch-description source: dpatch-index-references-non-existent-patch 01_not_here_right_now.dpatch E: patch-systems-dpatch-description source: dpatch-index-references-non-existent-patch 01_some_other_patch_thats_not_in_the_package.dpatch I: patch-systems-dpatch-description source: dpatch-missing-description 02_i_dont_have_a_description.patch I: patch-systems-dpatch-description source: dpatch-missing-description 04_i_dont_have_a_description_either.patch lintian-2.5.22ubuntu1/t/tests/patch-systems-dpatch-description/desc0000664000000000000000000000032212077065715022317 0ustar Testname: patch-systems-dpatch-description Sequence: 6000 Version: 1.0 Description: Test patch-system tags for a dpatch package Test-For: dpatch-index-references-non-existent-patch dpatch-missing-description lintian-2.5.22ubuntu1/t/tests/patch-systems-dpatch-description/debian/0000775000000000000000000000000012077065715022703 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-dpatch-description/debian/debian/0000775000000000000000000000000012310413206024103 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-dpatch-description/debian/debian/control.in0000664000000000000000000000077512310413206026124 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), dpatch Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/patch-systems-dpatch-description/debian/debian/README.source0000664000000000000000000000002312077065715026277 0ustar I am using dpatch. lintian-2.5.22ubuntu1/t/tests/patch-systems-dpatch-description/debian/debian/patches/0000775000000000000000000000000012077065715025554 5ustar ././@LongLink0000644000000000000000000000017700000000000011610 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/patch-systems-dpatch-description/debian/debian/patches/04_i_dont_have_a_description_either.patchlintian-2.5.22ubuntu1/t/tests/patch-systems-dpatch-description/debian/debian/patches/04_i_dont_have_0000664000000000000000000000034112077065715030416 0ustar #! /bin/sh /usr/share/dpatch/dpatch-run ## 04_i_dont_have_a_description_either.patch by Adam D. Barratt ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: @DPATCH@ lintian-2.5.22ubuntu1/t/tests/patch-systems-dpatch-description/debian/debian/patches/00list.sparc0000664000000000000000000000006412077065715027721 0ustar 01_some_other_patch_thats_not_in_the_package.dpatch ././@LongLink0000644000000000000000000000017000000000000011601 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/patch-systems-dpatch-description/debian/debian/patches/03_specified_without_dpatch.dpatchlintian-2.5.22ubuntu1/t/tests/patch-systems-dpatch-description/debian/debian/patches/03_specified_wi0000664000000000000000000000024712077065715030436 0ustar #! /bin/sh /usr/share/dpatch/dpatch-run ## All lines beginning with `## DP:' are a description of the patch. ## DP: Listed in 00list without .dpatch suffix. @DPATCH@ lintian-2.5.22ubuntu1/t/tests/patch-systems-dpatch-description/debian/debian/patches/00list0000664000000000000000000000040512077065715026611 0ustar 01_not_here_right_now.dpatch # some comment /* some more elaborate comment which needs DPATCH_OPTION_CPP=1 */02_i_dont_have_a_description.patch 03_specified_without_dpatch // and again a comment 04_i_dont_have_a_description_either.patch 05_dep3.diff ././@LongLink0000644000000000000000000000017000000000000011601 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/patch-systems-dpatch-description/debian/debian/patches/02_i_dont_have_a_description.patchlintian-2.5.22ubuntu1/t/tests/patch-systems-dpatch-description/debian/debian/patches/02_i_dont_have_0000664000000000000000000000040112077065715030411 0ustar #! /bin/sh /usr/share/dpatch/dpatch-run ## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt > ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: No description. @DPATCH@ lintian-2.5.22ubuntu1/t/tests/patch-systems-dpatch-description/debian/debian/patches/00options0000664000000000000000000000002412077065715027326 0ustar DPATCH_OPTION_CPP=1 lintian-2.5.22ubuntu1/t/tests/patch-systems-dpatch-description/debian/debian/patches/05_dep3.diff0000664000000000000000000000027712077065715027553 0ustar #! /bin/sh /usr/share/dpatch/dpatch-run ## 05_dep3.diff by Russ Allbery # # Description: Patch using the DEP-3 patch header # Author: Russ Allbery @DPATCH@ lintian-2.5.22ubuntu1/t/tests/debhelper-arch-depends/0000775000000000000000000000000012077065715017360 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-arch-depends/tags0000664000000000000000000000000012077065715020227 0ustar lintian-2.5.22ubuntu1/t/tests/debhelper-arch-depends/desc0000664000000000000000000000026012077065715020217 0ustar Testname: debhelper-arch-depends Sequence: 6000 Version: 1.0 Description: Test arch-specific dependencies on dh commands Test-Against: missing-build-dependency-for-dh_-command lintian-2.5.22ubuntu1/t/tests/debhelper-arch-depends/debian/0000775000000000000000000000000012077065715020602 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-arch-depends/debian/debian/0000775000000000000000000000000012310413206022002 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-arch-depends/debian/debian/control.in0000664000000000000000000000105112310413206024007 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), cli-common-dev (>= 0.5.7) [i386 sparc amd64 ia64] Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/debhelper-arch-depends/debian/debian/rules0000775000000000000000000000010712077065715023102 0ustar #!/usr/bin/make -f %: dh $@ override_dh_prep: -dh_clideps dh_prep lintian-2.5.22ubuntu1/t/tests/menus-doc-base-registration/0000775000000000000000000000000012077065715020405 5ustar lintian-2.5.22ubuntu1/t/tests/menus-doc-base-registration/tags0000664000000000000000000000026112077065715021265 0ustar I: menus-doc-base-registration-html: possible-documentation-but-no-doc-base-registration I: menus-doc-base-registration-pdf: possible-documentation-but-no-doc-base-registration lintian-2.5.22ubuntu1/t/tests/menus-doc-base-registration/desc0000664000000000000000000000027212077065715021247 0ustar Testname: menus-doc-base-registration Sequence: 6000 Version: 1.0 Description: Test some doc-base registration related tags Test-For: possible-documentation-but-no-doc-base-registration lintian-2.5.22ubuntu1/t/tests/menus-doc-base-registration/debian/0000775000000000000000000000000012077065715021627 5ustar lintian-2.5.22ubuntu1/t/tests/menus-doc-base-registration/debian/doc2.pdf0000664000000000000000000000001412077065715023144 0ustar hello world lintian-2.5.22ubuntu1/t/tests/menus-doc-base-registration/debian/doc1.html0000664000000000000000000000001412077065715023336 0ustar hello world lintian-2.5.22ubuntu1/t/tests/menus-doc-base-registration/debian/debian/0000775000000000000000000000000012310413206023027 5ustar ././@LongLink0000644000000000000000000000016000000000000011600 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/menus-doc-base-registration/debian/debian/menus-doc-base-registration-pdf.installlintian-2.5.22ubuntu1/t/tests/menus-doc-base-registration/debian/debian/menus-doc-base-registration-0000664000000000000000000000003512077065715030361 0ustar doc2.pdf /usr/share/doc/foo/ lintian-2.5.22ubuntu1/t/tests/menus-doc-base-registration/debian/debian/control.in0000664000000000000000000000156312310413206025044 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source}-pdf Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} -- pdf doc This is a test package with fake pdf documentation designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: {$source}-html Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} -- html doc This is a test package with fake html documentation designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. ././@LongLink0000644000000000000000000000015600000000000011605 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/menus-doc-base-registration/debian/debian/menus-doc-base-registration-html.docslintian-2.5.22ubuntu1/t/tests/menus-doc-base-registration/debian/debian/menus-doc-base-registration-0000664000000000000000000000001212077065715030354 0ustar doc1.html lintian-2.5.22ubuntu1/t/tests/fields-uploaders/0000775000000000000000000000000012077065715016335 5ustar lintian-2.5.22ubuntu1/t/tests/fields-uploaders/tags0000664000000000000000000000073612077065715017224 0ustar E: fields-uploaders source: uploader-address-is-on-localhost Mrs. Localhost E: fields-uploaders source: uploader-address-malformed Doris Double-Email > E: fields-uploaders source: uploader-address-malformed Malformed Email <@ddress@myspace.com> E: fields-uploaders source: uploader-address-malformed Mrs. Localhost W: fields-uploaders source: uploader-address-looks-weird Mr. Weird lintian-2.5.22ubuntu1/t/tests/fields-uploaders/desc0000664000000000000000000000031712077065715017177 0ustar Testname: fields-uploaders Sequence: 6000 Version: 1.0 Description: General tests of the uploaders field Test-For: uploader-address-is-on-localhost uploader-address-looks-weird uploader-address-malformed lintian-2.5.22ubuntu1/t/tests/fields-uploaders/debian/0000775000000000000000000000000012077065715017557 5ustar lintian-2.5.22ubuntu1/t/tests/fields-uploaders/debian/debian/0000775000000000000000000000000012310413206020757 5ustar lintian-2.5.22ubuntu1/t/tests/fields-uploaders/debian/debian/control.in0000664000000000000000000000144012310413206022766 0ustar Source: {$source} Priority: extra Section: devel Maintainer: {$author} Uploaders: Mrs. Localhost , Mr. Weird, Malformed Email <@ddress@myspace.com>, John A. J. Doe , Doris Double-Email >, Valid email <0@somehwere.com> Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/runtests-todo/0000775000000000000000000000000012077065715015725 5ustar lintian-2.5.22ubuntu1/t/tests/runtests-todo/tags0000664000000000000000000000005412077065715016605 0ustar E: runtests-todo source: lintian-says-hi ;) lintian-2.5.22ubuntu1/t/tests/runtests-todo/desc0000664000000000000000000000014312077065715016564 0ustar Testname: runtests-todo Sequence: 0700 Version: 1.0 Todo: yes Description: Test todo tests support lintian-2.5.22ubuntu1/t/tests/runtests-todo/debian/0000775000000000000000000000000012077065715017147 5ustar lintian-2.5.22ubuntu1/t/tests/runtests-todo/debian/dummy0000664000000000000000000000001712077065715020223 0ustar hello lintian! lintian-2.5.22ubuntu1/t/tests/runtests-todo/debian/debian/0000775000000000000000000000000012077065715020371 5ustar lintian-2.5.22ubuntu1/t/tests/runtests-todo/debian/debian/install0000664000000000000000000000003112077065715021754 0ustar dummy usr/share/lintian/ lintian-2.5.22ubuntu1/t/tests/copyright-file-general/0000775000000000000000000000000012310413144017412 5ustar lintian-2.5.22ubuntu1/t/tests/copyright-file-general/tags0000664000000000000000000000437112310413144020300 0ustar E: copyright-compressed: copyright-file-compressed E: copyright-full-apache-2: copyright-file-contains-full-apache-2-license E: copyright-full-apache-2: copyright-should-refer-to-common-license-file-for-apache-2 E: copyright-full-gfdl: copyright-file-contains-full-gfdl-license E: copyright-full-gfdl: copyright-should-refer-to-common-license-file-for-gfdl E: copyright-full-gpl-1: copyright-should-refer-to-common-license-file-for-gpl E: copyright-full-gpl-2: copyright-file-contains-full-gpl-license E: copyright-full-gpl-2: copyright-should-refer-to-common-license-file-for-lgpl E: copyright-full-gpl: copyright-file-contains-full-gpl-license E: copyright-full-gpl: copyright-should-refer-to-common-license-file-for-gpl E: copyright-full-lgpl: copyright-should-refer-to-common-license-file-for-lgpl E: copyright-iso-8859-1: debian-copyright-file-uses-obsolete-national-encoding at line 3 E: copyright-misc-errors: copyright-refers-to-compressed-license usr/share/common-licenses/BSD.gz E: copyright-misc-errors: copyright-refers-to-incorrect-directory usr/share/common-licences E: copyright-misc-errors: copyright-refers-to-old-directory E: copyright-misc-errors: helper-templates-in-copyright E: copyright-missing-apache2-license-pointer: copyright-should-refer-to-common-license-file-for-apache-2 E: copyright-missing-perl-license-pointer: copyright-file-lacks-pointer-to-perl-license E: copyright-old-style: FSSTND-dir-in-usr usr/doc/ E: copyright-old-style: no-copyright-file E: copyright-php: copyright-refers-to-bad-php-license E: copyright-php: copyright-refers-to-problematic-php-license E: copyright-poor-common-licenses: copyright-should-refer-to-common-license-file-for-gpl E: copyright-symlink: copyright-file-is-symlink P: copyright-crln: copyright-has-crs W: copyright-full-apache-2: copyright-without-copyright-notice W: copyright-misc-errors: copyright-contains-dh-make-perl-boilerplate W: copyright-misc-errors: copyright-has-url-from-dh_make-boilerplate W: copyright-misc-errors: copyright-refers-to-deprecated-bsd-license-file W: copyright-misc-errors: copyright-refers-to-nonexistent-license-file usr/share/common-licenses/GPL2 W: copyright-old-fsf: old-fsf-address-in-copyright-file W: copyright-poor-common-licenses: copyright-does-not-refer-to-common-license-file /GPL-3 lintian-2.5.22ubuntu1/t/tests/copyright-file-general/desc0000664000000000000000000000236012310413144020254 0ustar Testname: copyright-file-general Sequence: 6000 Version: 1.0 Description: Test checking of copyright files Skeleton: pedantic Options: -IE --pedantic Test-For: FSSTND-dir-in-usr copyright-contains-dh-make-perl-boilerplate copyright-does-not-refer-to-common-license-file copyright-file-compressed copyright-file-contains-full-apache-2-license copyright-file-contains-full-gfdl-license copyright-file-contains-full-gpl-license copyright-file-is-symlink copyright-file-lacks-pointer-to-perl-license copyright-has-crs copyright-has-url-from-dh_make-boilerplate copyright-refers-to-bad-php-license copyright-refers-to-compressed-license copyright-refers-to-deprecated-bsd-license-file copyright-refers-to-incorrect-directory copyright-refers-to-nonexistent-license-file copyright-refers-to-old-directory copyright-refers-to-problematic-php-license copyright-should-refer-to-common-license-file-for-apache-2 copyright-should-refer-to-common-license-file-for-gfdl copyright-should-refer-to-common-license-file-for-gpl copyright-should-refer-to-common-license-file-for-lgpl copyright-without-copyright-notice debian-copyright-file-uses-obsolete-national-encoding helper-templates-in-copyright no-copyright-file old-fsf-address-in-copyright-file lintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/0000775000000000000000000000000012077065714020654 5ustar lintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/debian/0000775000000000000000000000000012310413206022055 5ustar lintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/debian/copyright-full-gpl-2.copyright0000664000000000000000000004365212077065714027731 0ustar A copy of the GNU General Public License is available on the World Wide Web at `http://www.gnu.org/licenses/gpl-2.0.txt'. You can also obtain it by writing to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. lintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/debian/copyright-versionless.copyright0000664000000000000000000000021112077065714030404 0ustar This package is copyright (c) 2009, Some Name and is licensed under the GPL, see `/usr/share/common-licenses/GPL'. lintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/debian/copyright-full-agpl-3.copyright0000664000000000000000000010333012077065714030061 0ustar GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU Affero General Public License is a free, copyleft license for software and other kinds of works, specifically designed to ensure cooperation with the community in the case of network server software. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, our General Public Licenses are intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. Developers that use our General Public Licenses protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License which gives you legal permission to copy, distribute and/or modify the software. A secondary benefit of defending all users' freedom is that improvements made in alternate versions of the program, if they receive widespread use, become available for other developers to incorporate. Many developers of free software are heartened and encouraged by the resulting cooperation. However, in the case of software used on network servers, this result may fail to come about. The GNU General Public License permits making a modified version and letting the public access it on a server without ever releasing its source code to the public. The GNU Affero General Public License is designed specifically to ensure that, in such cases, the modified source code becomes available to the community. It requires the operator of a network server to provide the source code of the modified version running there to the users of that server. Therefore, public use of a modified version, on a publicly accessible server, gives the public access to the source code of the modified version. An older license, called the Affero General Public License and published by Affero, was designed to accomplish similar goals. This is a different license, not a version of the Affero GPL, but Affero has released a new version of the Affero GPL which permits relicensing under this license. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU Affero General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Remote Network Interaction; Use with the GNU General Public License. Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the work with which it is combined will remain governed by version 3 of the GNU General Public License. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU Affero General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU Affero General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU Affero General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU Affero General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 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 Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If your software can interact with users remotely through a computer network, you should also make sure that it provides a way for users to get its source. For example, if your program is a web application, its interface could display a "Source" link that leads users to an archive of the code. There are many ways you could offer source, and different solutions will be better for different programs; see section 13 for the specific requirements. You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU AGPL, see . lintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/debian/control.in0000664000000000000000000002227712310413206024077 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: copyright-iso-8859-1 Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: checks for non-utf-8-encodings Tests non-UTF-8 encodings. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: copyright-full-gpl Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: checks inclusion of GPL in full text Tests the tag for including all of the GPL. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: copyright-full-lgpl Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: checks inclusion of LGPL in full text Tests the tag for including all of the LGPL. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: copyright-full-gfdl Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: checks inclusion of GFDL in full text Tests the tag for including all of the GFDL. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: copyright-full-apache-2 Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: checks inclusion of Apache 2.0 in full text Tests the tag for including all of the Apache 2.0 license. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: copyright-misc-errors Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: checks various errors in copyright files Tests various random errors in copyright files. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: copyright-symlink Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: just use a symlink for the copyright file Tests the check for a symlinked copyright file. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: copyright-compressed Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: include a valid copyright file and compress it Tests the check for a compressed copyright file. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: copyright-old-style Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: use an old-style directory structure Tests a copyright file using an old-style directory structure. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: copyright-full-gpl-1 Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: checks inclusion of GPL1 This should trigger errors as GPL1 is in the common license dir. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: copyright-full-gpl-2 Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: checks inclusion of GPL2 This should trigger errors as GPL2 is in the common license dir. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: copyright-php Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: checks problematic PHP licenses The PHP licenses are problematic for any software that isn't PHP. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: copyright-w3c Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: checks inclusion of the W3C license The W3C license text claims to be "GPL compatible", which shouldn't trigger warnings. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: copyright-no-errors Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: this should not emit any error This copyright file should be fine. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: copyright-versionless Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: checks a valid versionless GPL reference Refers to the GPL and truly doesn't mention any version. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: copyright-missing-perl-license-pointer Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: checks for perl packages not pointing to common-licenses Packages under the "same terms as Perl itself" should reference a license in common-licenses. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: copyright-missing-apache2-license-pointer Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: checks for apache2 packages not pointing to common-licenses Packages under the apache2-license should reference a license in common-licenses. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: copyright-poor-common-licenses Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: checks not referring to common licenses Packages should refer to common licenses with full path if they use a common license. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: copyright-crln Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: check for Windows newlines This package should trigger a tag for having Windows newlines in the copyright file. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: copyright-full-agpl-3 Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: checks inclusion of AGPL-3 in full text This should not trigger a tag as AGPL-3 is not in common-licenses. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: copyright-old-fsf Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: checks use of old FSF address This should trigger a tag for using old FSF address. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/debian/copyright-misc-errors.copyright0000664000000000000000000000125212077065714030303 0ustar This copyright file contains several errors. Downloaded from You should not use the template for Upstream Author(s): Tobias Copyright 2008 Tobias The path /usr/share/common-licences/GPL contains a spelling error. It's wrong to reference a compressed license, like this: /usr/share/common-licenses/BSD.gz This path /usr/share/doc/copyright is obsolete. The path /usr/share/common-licenses/GPL2 is missing a hyphen. This copyright info was automatically extracted from the perl module. It may not be accurate, so you better check the module sources if you don't want to get into legal troubles. References to /usr/share/common-licenses/BSD are deprecated. lintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/debian/copyright-full-lgpl.copyright0000664000000000000000000001735212077065714027744 0ustar A copy of the GNU Lesser General Public License is available on the World Wide Web at `http://www.gnu.org/licenses/lgpl-3.0.txt'. You can also obtain it by writing to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. 0. Additional Definitions. As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License. "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version". The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 2. Conveying Modified Versions. If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the Combined Work with a copy of the GNU GPL and this license document. c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. d) Do one of the following: 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) 5. Combined Libraries. You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 6. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. ././@LongLink0000644000000000000000000000016700000000000011607 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/debian/copyright-missing-apache2-license-pointer.copyrightlintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/debian/copyright-missing-apache2-license0000664000000000000000000000206712310413144030406 0ustar Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: Midnight Commander Source: http://www.midnight-commander.org/downloads Copyright: 1996-2013 Free Software Foundation License: Apache-2.0 Files: * Copyright: 2004,2007 Oren Ben-Kiki License: Apache-2.0 License: Apache-2.0 Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at . http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. lintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/debian/copyright-iso-8859-1.copyright0000664000000000000000000000011712077065714027400 0ustar Copyright (C) 2008 Author uerst rgerlich, falls nicht UTF-8 benutzt wrde. ././@LongLink0000644000000000000000000000016400000000000011604 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/debian/copyright-missing-perl-license-pointer.copyrightlintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/debian/copyright-missing-perl-license-po0000664000000000000000000000036212077065714030475 0ustar This copyright file is for libmythical-perl. The module is licenses under the same terms as Perl itself but we've forgotten to add a reference to the copy of the Perl license in common-licenses. Copyright 2010 The Mythical Perl Module Team ././@LongLink0000644000000000000000000000015400000000000011603 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/debian/copyright-poor-common-licenses.copyrightlintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/debian/copyright-poor-common-licenses.co0000664000000000000000000000204312077065714030476 0ustar GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 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 3 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, see The full text of this license is in common-licenses/GPL-3 lintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/debian/rules0000775000000000000000000000132712077065714023161 0ustar #!/usr/bin/make -f %: dh $@ override_dh_installdocs: dh_installdocs install -m 644 debian/copyright-no-errors.copyright debian/copyright-symlink/usr/share/doc/copyright-symlink/symlink rm debian/copyright-symlink/usr/share/doc/copyright-symlink/copyright ln -s symlink debian/copyright-symlink/usr/share/doc/copyright-symlink/copyright gzip -9 debian/copyright-compressed/usr/share/doc/copyright-compressed/copyright mkdir -p debian/copyright-old-style/usr/doc/copyright # This should (now) trigger a no-copyright-file (as there is no copyright file # in the right location). mv debian/copyright-old-style/usr/share/doc/copyright-old-style/copyright debian/copyright-old-style/usr/doc/copyright/copyright-old-style lintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/debian/copyright-full-gfdl.copyright0000664000000000000000000004766312077065714027732 0ustar GNU Free Documentation License Version 1.2, November 2002 Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. 0. PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. 2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. 3. COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. 4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License. I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section. O. Preserve any Warranty Disclaimers. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. 5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements". 6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. 8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. 9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. ADDENDUM: How to use this License for your documents To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this: with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software. lintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/debian/copyright-w3c.copyright0000664000000000000000000001055412077065714026537 0ustar This package was debianized by J Random Developer on Tue, 8 Nov 2005 00:27:44 +0100. It was downloaded from http://search.cpan.org/dist/W3C-LinkChecker/ Copyright Holder: the software was developed by following people for the W3C: The W3C Link Checker Team License: according to the README file, the source code of the W3C linkchecker is available under the terms of the W3C Software Copyright (compatible with the GNU GPL), which can be found at http://www.w3.org/Consortium/Legal/copyright-software and is reproduced below: W3C � SOFTWARE NOTICE AND LICENSE [1]http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 This work (and included software, documentation such as READMEs, or other related items) is being provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions. Permission to copy, modify, and distribute this software and its documentation, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications: 1. The full text of this NOTICE in a location viewable to users of the redistributed or derivative work. 2. Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the [2]W3C Software Short Notice should be included (hypertext is preferred, text is permitted) within the body of any redistributed or derivative code. 3. Notice of any changes or modifications to the files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.) THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION. The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders. ____________________________________ This formulation of W3C's notice and license became active on December 31 2002. This version removes the copyright ownership notice such that this license can be used with materials other than those owned by the W3C, reflects that ERCIM is now a host of the W3C, includes references to this specific dated version of the license, and removes the ambiguous grant of "use". Otherwise, this version is the same as the [3]previous version and is written so as to preserve the [4]Free Software Foundation's assessment of GPL compatibility and [5]OSI's certification under the [6]Open Source Definition. Please see our [7]Copyright FAQ for common questions about using materials from our site, including specific terms and conditions for packages like libwww, Amaya, and Jigsaw. Other questions about this notice can be directed to [8]site-policy@w3.org. Joseph Reagle <[9]site-policy@w3.org> Last revised $Id: copyright-software-20021231.html,v 1.11 2004/07/06 16:02:49 slesch Exp $ References 1. http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231 2. http://www.w3.org/Consortium/Legal/2002/copyright-software-short-notice-20021231.html 3. http://www.w3.org/Consortium/Legal/copyright-software-19980720 4. http://www.gnu.org/philosophy/license-list.html#GPLCompatibleLicenses 5. http://www.opensource.org/licenses/W3C.php 6. http://www.opensource.org/docs/definition.php 7. http://www.w3.org/Consortium/Legal/IPR-FAQ 8. mailto:site-policy@w3.org 9. mailto:site-policy@w3.org lintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/debian/copyright-full-gpl-1.copyright0000664000000000000000000002471312077065714027725 0ustar A copy of the GNU General Public License is available on the World Wide Web at `http://www.gnu.org/licenses/old-licenses/gpl-1.0.txt'. You can also obtain it by writing to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA THE COPYRIGHT HOLDER DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA, PROFITS, QPA OR GPA, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. GNU GENERAL PUBLIC LICENSE Version 1, February 1989 Copyright (C) 1989 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The license agreements of most software companies try to keep users at the mercy of those companies. By contrast, our General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. The General Public License applies to the Free Software Foundation's software and to any other program whose authors commit to using it. You can use it for your programs, too. When we speak of free software, we are referring to freedom, not price. Specifically, the General Public License is designed to make sure that you have the freedom to give away or sell copies of free software, that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of a such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any work containing the Program or a portion of it, either verbatim or with modifications. Each licensee is addressed as "you". 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this General Public License and to the absence of any warranty; and give any other recipients of the Program a copy of this General Public License along with the Program. You may charge a fee for the physical act of transferring a copy. 2. You may modify your copy or copies of the Program or any portion of it, and copy and distribute such modifications under the terms of Paragraph 1 above, provided that you also do the following: a) cause the modified files to carry prominent notices stating that you changed the files and the date of any change; and b) cause the whole of any work that you distribute or publish, that in whole or in part contains the Program or any part thereof, either with or without modifications, to be licensed at no charge to all third parties under the terms of this General Public License (except that you may choose to grant warranty protection to some or all third parties, at your option). c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the simplest and most usual way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this General Public License. d) You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. Mere aggregation of another independent work with the Program (or its derivative) on a volume of a storage or distribution medium does not bring the other work under the scope of these terms. 3. You may copy and distribute the Program (or a portion or derivative of it, under Paragraph 2) in object code or executable form under the terms of Paragraphs 1 and 2 above provided that you also do one of the following: a) accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Paragraphs 1 and 2 above; or, b) accompany it with a written offer, valid for at least three years, to give any third party free (except for a nominal charge for the cost of distribution) a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Paragraphs 1 and 2 above; or, c) accompany it with the information you received as to where the corresponding source code may be obtained. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form alone.) Source code for a work means the preferred form of the work for making modifications to it. For an executable file, complete source code means all the source code for all modules it contains; but, as a special exception, it need not include source code for modules which are standard libraries that accompany the operating system on which the executable file runs, or for standard header files or definitions files that accompany that operating system. 4. You may not copy, modify, sublicense, distribute or transfer the Program except as expressly provided under this General Public License. Any attempt otherwise to copy, modify, sublicense, distribute or transfer the Program is void, and will automatically terminate your rights to use the Program under this License. However, parties who have received copies, or rights to use copies, from you under this General Public License will not have their licenses terminated so long as such parties remain in full compliance. 5. By copying, distributing or modifying the Program (or any work based on the Program) you indicate your acceptance of this license to do so, and all its terms and conditions. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. 7. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of the license which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the license, you may choose any version ever published by the Free Software Foundation. 8. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS lintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/debian/copyright-php.copyright0000664000000000000000000001547412077065714026640 0ustar A copyright file referring to two problematic PHP licenses. Copyright 2008 Some Guy. -------------------------------------------------------------------- The PHP License, version 2.02 Copyright (c) 1999 - 2002 The PHP Group. All rights reserved. -------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without modification, is permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name "PHP" must not be used to endorse or promote products derived from this software without prior permission from the PHP Group. This does not apply to add-on libraries or tools that work in conjunction with PHP. In such a case the PHP name may be used to indicate that the product supports PHP. 4. The PHP Group may publish revised and/or new versions of the license from time to time. Each version will be given a distinguishing version number. Once covered code has been published under a particular version of the license, you may always continue to use it under the terms of that version. You may also choose to use such covered code under the terms of any subsequent version of the license published by the PHP Group. No one other than the PHP Group has the right to modify the terms applicable to covered code created under this License. 5. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes PHP, freely available from http://www.php.net/". 6. The software incorporates the Zend Engine, a product of Zend Technologies, Ltd. ("Zend"). The Zend Engine is licensed to the PHP Association (pursuant to a grant from Zend that can be found at http://www.php.net/license/ZendGrant/) for distribution to you under this license agreement, only as a part of PHP. In the event that you separate the Zend Engine (or any portion thereof) from the rest of the software, or modify the Zend Engine, or any portion thereof, your use of the separated or modified Zend Engine software shall not be governed by this license, and instead shall be governed by the license set forth at http://www.zend.com/license/ZendLicense/. THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------- This software consists of voluntary contributions made by many individuals on behalf of the PHP Group. The PHP Group can be contacted via Email at group@php.net. For more information on the PHP Group and the PHP project, please see . -------------------------------------------------------------------- The PHP License, version 3.0 Copyright (c) 1999 - 2003 The PHP Group. All rights reserved. -------------------------------------------------------------------- Redistribution and use in source and binary forms, with or without modification, is permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name "PHP" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact group@php.net. 4. Products derived from this software may not be called "PHP", nor may "PHP" appear in their name, without prior written permission from group@php.net. You may indicate that your software works in conjunction with PHP by saying "Foo for PHP" instead of calling it "PHP Foo" or "phpfoo" 5. The PHP Group may publish revised and/or new versions of the license from time to time. Each version will be given a distinguishing version number. Once covered code has been published under a particular version of the license, you may always continue to use it under the terms of that version. You may also choose to use such covered code under the terms of any subsequent version of the license published by the PHP Group. No one other than the PHP Group has the right to modify the terms applicable to covered code created under this License. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes PHP, freely available from ". THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------- This software consists of voluntary contributions made by many individuals on behalf of the PHP Group. The PHP Group can be contacted via Email at group@php.net. For more information on the PHP Group and the PHP project, please see . This product includes the Zend Engine, freely available at . lintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/debian/copyright-crln.copyright0000664000000000000000000000251512077065714026777 0ustar This package was debianized by Tobias Toedter on Thu, 20 Mar 2008 23:48:15 +0100 It was downloaded from Format-Specification: http://wiki.debian.org/Proposals/CopyrightFormat?recall=184 Upstream Authors: Tobias Toedter Copyright: Copyright (C) 2008 Tobias Toedter License: This package 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 package 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 package; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA On Debian systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/GPL-2'. The Debian packaging is Copyright 2008, Tobias Toedter and is licensed under the GPL, see above. lintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/debian/copyright-full-gpl.copyright0000664000000000000000000010451312077065714027564 0ustar GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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 3 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, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . lintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/debian/copyright-no-errors.copyright0000664000000000000000000000245112077065714027766 0ustar This package was debianized by Tobias Toedter on Thu, 20 Mar 2008 23:48:15 +0100 It was downloaded from Format-Specification: http://wiki.debian.org/Proposals/CopyrightFormat?recall=184 Upstream Authors: Tobias Toedter Copyright: Copyright (C) 2008 Tobias Toedter License: This package 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 package 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 package; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA On Debian systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/GPL-2'. The Debian packaging is Copyright 2008, Tobias Toedter and is licensed under the GPL, see above. lintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/debian/copyright-old-fsf.copyright0000664000000000000000000000161112310413144027347 0ustar To the extend this is copyrightable (if at all), it is: Copyright 2012 Niels Thykier . This program is free software; you may 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, or (at your option) any later version. This 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. A copy of the GNU General Public License version 2 is available as /usr/share/common-licenses/GPL-2 in the Debian GNU/Linux distribution or at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. You can also obtain it by writing to the Free Software Foundation, Inc., Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. lintian-2.5.22ubuntu1/t/tests/copyright-file-general/debian/debian/copyright-full-apache-2.copyright0000664000000000000000000002613612077065714030366 0ustar Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. lintian-2.5.22ubuntu1/t/tests/binaries-embedded-libs/0000775000000000000000000000000012077065714017344 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-embedded-libs/tags0000664000000000000000000000145212077065714020227 0ustar E: binaries-embedded-libs: embedded-library usr/bin/libbz2: bzip2 E: binaries-embedded-libs: embedded-library usr/bin/libexpat: expat E: binaries-embedded-libs: embedded-library usr/bin/libjpeg: libjpeg E: binaries-embedded-libs: embedded-library usr/bin/libm: libm E: binaries-embedded-libs: embedded-library usr/bin/libmagic: file E: binaries-embedded-libs: embedded-library usr/bin/libopenjpeg: openjpeg E: binaries-embedded-libs: embedded-library usr/bin/libpcre3: pcre3 E: binaries-embedded-libs: embedded-library usr/bin/libpng: libpng E: binaries-embedded-libs: embedded-library usr/bin/libsqlite: sqlite E: binaries-embedded-libs: embedded-library usr/bin/libtiff: tiff E: binaries-embedded-libs: embedded-library usr/bin/libxml2: libxml2 E: binaries-embedded-libs: embedded-library usr/bin/zlib: zlib lintian-2.5.22ubuntu1/t/tests/binaries-embedded-libs/desc0000664000000000000000000000025012077065714020202 0ustar Testname: binaries-embedded-libs Sequence: 6000 Architecture: any Version: 1.0 Description: Package with binary with library-unique strings Test-For: embedded-library lintian-2.5.22ubuntu1/t/tests/binaries-embedded-libs/debian/0000775000000000000000000000000012077065714020566 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-embedded-libs/debian/libpng.c0000664000000000000000000000047712077065714022215 0ustar #include #include "hardening-trigger.h" /* * The png_zalloc overflow error message is unique enough to be used to * detect embedded or statically-linked copies of libpng. */ static const char zalloc_error[] = "Potential overflow in png_zalloc()"; int main(void) { printf("%s\n", zalloc_error); } lintian-2.5.22ubuntu1/t/tests/binaries-embedded-libs/debian/libsqlite.c0000664000000000000000000000037212077065714022724 0ustar #include #include "hardening-trigger.h" /* * the sqlite_master table is used by sqlite 2 and 3 */ static const char sqlite_create[] = "CREATE TABLE sqlite_master( foo bar moo)"; int main(void) { printf("%s\n", sqlite_create); } lintian-2.5.22ubuntu1/t/tests/binaries-embedded-libs/debian/zlib.c0000664000000000000000000000051712077065714021675 0ustar #include #include "hardening-trigger.h" /* * zlib asks derivative works to include this string, so it's the signature * that we use to detect embedded copies. */ static const char deflate_copyright[] = "deflate 1.2.3.3 Copyright 1995-2006 Jean-loup Gailly"; int main(void) { printf("%s\n", deflate_copyright); } lintian-2.5.22ubuntu1/t/tests/binaries-embedded-libs/debian/template.10000664000000000000000000000172112077065714022464 0ustar .\" Copyright (C) 2010 Raphael Geissert .\" .\" This is free software; you may 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, .\" or (at your option) any later version. .\" .\" This 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 the Debian GNU/Linux system; if not, write to the Free .\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA .\" 02111-1307 USA .TH #BIN# "1" .SH NAME #BIN# \- dummy binary simulating embedding the #BIN# library .SH SYNOPSIS #BIN# .SH DESCRIPTION .B #BIN# is a dummy binary used internally by lintian as a part of its testsuite. lintian-2.5.22ubuntu1/t/tests/binaries-embedded-libs/debian/libpcre3.c0000664000000000000000000000050012077065714022430 0ustar #include #include "hardening-trigger.h" /* * The PCRE_UTF8 message is unique enough to be used to * detect embedded or statically-linked copies of pcre. */ static const char pcre_utf8[] = "this version of PCRE is not compiled with PCRE_UTF8 support"; int main(void) { printf("%s\n", pcre_utf8); } lintian-2.5.22ubuntu1/t/tests/binaries-embedded-libs/debian/libmagic.c0000664000000000000000000000026712077065714022506 0ustar #include #include "hardening-trigger.h" static const char no_magic_files[] = "could not find any magic files!"; int main(void) { printf("%s\n", no_magic_files); } lintian-2.5.22ubuntu1/t/tests/binaries-embedded-libs/debian/libopenjpeg.c0000664000000000000000000000047512077065714023236 0ustar #include #include "hardening-trigger.h" /* * The tcd_decode error message appears to be unique enough to be used to * detect embedded or statically-linked copies of libopenjpeg. */ static const char tcd_error[] = "tcd_decode: incomplete bistream"; int main(void) { printf("%s\n", tcd_error); } lintian-2.5.22ubuntu1/t/tests/binaries-embedded-libs/debian/libxml2.c0000664000000000000000000000031212077065714022277 0ustar #include #include "hardening-trigger.h" static const char root_dtd_mismatch[] = "root and DTD name do not match '%s' and '%s'"; int main(void) { printf("%s\n", root_dtd_mismatch); } lintian-2.5.22ubuntu1/t/tests/binaries-embedded-libs/debian/libexpat.c0000664000000000000000000000043512077065714022544 0ustar #include #include "hardening-trigger.h" /* * The XML_DTD warning string is always present, even if expat was * built with XML_DTD */ static const char xml_dtd[] = "requested feature requires XML_DTD support in Expat"; int main(void) { printf("%s\n", xml_dtd); } lintian-2.5.22ubuntu1/t/tests/binaries-embedded-libs/debian/Makefile0000664000000000000000000000111612077065714022225 0ustar BINARIES := zlib libpng libjpeg libopenjpeg libtiff libpcre3 libbz2 libxml2 \ libmagic libexpat libsqlite libm MANPAGES := $(patsubst %,%.1,$(BINARIES)) all: $(BINARIES) $(MANPAGES) %: %.c gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $* $*.c %.1: template.1 sed 's/#BIN#/$*/g' < $< > $@ install: install -d $(DESTDIR)/usr/bin install -d $(DESTDIR)/usr/share/man/man1 for b in $(BINARIES); do \ install -m 755 -c $$b $(DESTDIR)/usr/bin/$$b; \ install -m 644 -c $$b.1 $(DESTDIR)/usr/share/man/man1/$$b.1; \ done clean distclean: rm -f $(BINARIES) $(MANPAGES) check test: lintian-2.5.22ubuntu1/t/tests/binaries-embedded-libs/debian/libbz2.c0000664000000000000000000000024412077065714022116 0ustar #include #include "hardening-trigger.h" static const char bzip2_bug[] = "This is a bug in bzip2"; int main(void) { printf("%s\n", bzip2_bug); } lintian-2.5.22ubuntu1/t/tests/binaries-embedded-libs/debian/libm.c0000664000000000000000000000026312077065714021656 0ustar #include #include "hardening-trigger.h" static const char domain_error[] = "neg**non-integral: DOMAIN error"; int main(void) { printf("%s\n", domain_error); } lintian-2.5.22ubuntu1/t/tests/binaries-embedded-libs/debian/libjpeg.c0000664000000000000000000000057312077065714022353 0ustar #include #include "hardening-trigger.h" /* * The quantization tables warning message is unique enough to be used to * detect embedded or statically-linked copies of libjpeg. */ static const char quantization_tables_warning[] = "Caution: quantization tables are too coarse for baseline JPEG"; int main(void) { printf("%s\n", quantization_tables_warning); } lintian-2.5.22ubuntu1/t/tests/binaries-embedded-libs/debian/hardening-trigger.h0000664000000000000000000000016512077065714024341 0ustar void e(char *p, int i, void (*f)(char *)){ char test[10]; memcpy(test, p, i); f(test); printf("%s", test); } lintian-2.5.22ubuntu1/t/tests/binaries-embedded-libs/debian/libtiff.c0000664000000000000000000000047012077065714022352 0ustar #include #include "hardening-trigger.h" /* * The PixarLog error message is unique enough to be used to * detect embedded or statically-linked copies of libtiff. */ static const char pixarlog_error[] = "No space for PixarLog state block"; int main(void) { printf("%s\n", pixarlog_error); } lintian-2.5.22ubuntu1/t/tests/watch-file-template/0000775000000000000000000000000012310413205016704 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-template/tags0000664000000000000000000000010612077065716017606 0ustar I: watch-file-template source: debian-watch-contains-dh_make-template lintian-2.5.22ubuntu1/t/tests/watch-file-template/desc0000664000000000000000000000025112077065716017567 0ustar Testname: watch-file-template Sequence: 6000 Type: non-native Version: 1.0-1 Description: Test for dh_make(1) templates Test-For: debian-watch-contains-dh_make-template lintian-2.5.22ubuntu1/t/tests/watch-file-template/debian/0000775000000000000000000000000012077065716020152 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-template/debian/debian/0000775000000000000000000000000012077065716021374 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-template/debian/debian/watch0000664000000000000000000000015612077065716022427 0ustar version=3 # Example watch control file for uscan http://www.example.com/software/foo/ .*/foo-([^-]+)\.tar\.gz lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink/0000775000000000000000000000000012077065716017531 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink/upstream/0000775000000000000000000000000012077065716021371 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink/upstream/code.h0000664000000000000000000000014312077065716022452 0ustar #ifndef CODE_H_ #define CODE_H_ double e(void (*f)(char *)); double energy(double mass); #endif lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink/upstream/Makefile0000664000000000000000000000102112077065716023023 0ustar CC=gcc CFLAGS+= -fPIC SONAMES:= libfoo.so.1 LIBFILES:= $(patsubst %,%.0.1, $(SONAMES)) all: $(LIBFILES) $(LIBFILES): code.o $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc clean: rm -f *.a *.o *.so* install: all install -m 0755 -d $(DESTDIR)/usr/lib install -m 0755 -d $(DESTDIR)/usr/include install -m 0644 *.so* $(DESTDIR)/usr/lib for FILE in $(SONAMES) ; do \ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \ done install -m 0644 code.h $(DESTDIR)/usr/include .PHONY: install clean lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink/upstream/code.c0000664000000000000000000000036012077065716022446 0ustar #include #include #include "code.h" double e(void (*f)(char *)){ char tmp[10]; double x; f(tmp); x = atof(tmp); return exp(x); } double energy(double mass){ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass; } lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink/tags0000664000000000000000000000012412077065716020407 0ustar W: libfoo1: dev-pkg-without-shlib-symlink usr/lib/libfoo.so.1.0.1 usr/lib/libfoo.so lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink/desc0000664000000000000000000000025112077065716020370 0ustar Testname: shared-libs-dev-symlink Sequence: 6000 Version: 1.0-1 Type: non-native Description: Test checks related to dev symlink Test-For: dev-pkg-without-shlib-symlink lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink/debian/0000775000000000000000000000000012077065716020753 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink/debian/debian/0000775000000000000000000000000012310413206022152 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink/debian/debian/control.in0000664000000000000000000000151712310413206024166 0ustar Source: {$source} Priority: extra Section: libs Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: libfoo1 Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: libfoo-dev Architecture: any Section: libdevel Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, libfoo1 (= $\{binary:Version\}) Description: {$description} - dev This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . Dev package. lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink/debian/debian/libfoo1.symbols0000664000000000000000000000007212077065716025141 0ustar libfoo.so.1 libfoo1 #MINVER# e@Base 1.0 energy@Base 0.9 lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink/debian/debian/libfoo-dev.install0000664000000000000000000000001412077065716025606 0ustar usr/include lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink/debian/debian/libfoo1.install0000664000000000000000000000002412077065716025114 0ustar usr/lib/libfoo.so.* lintian-2.5.22ubuntu1/t/tests/debhelper-deprecated/0000775000000000000000000000000012310413144017102 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-deprecated/tags0000664000000000000000000000062712310413144017770 0ustar W: debhelper-deprecated source: dh_desktop-is-deprecated line 25 W: debhelper-deprecated source: dh_installmanpages-is-obsolete line 24 W: debhelper-deprecated source: dh_pysupport-is-obsolete line 28 W: debhelper-deprecated source: dh_scrollkeeper-is-deprecated line 26 W: debhelper-deprecated source: dh_suidregister-is-obsolete line 38 W: debhelper-deprecated source: dh_undocumented-is-obsolete line 39 lintian-2.5.22ubuntu1/t/tests/debhelper-deprecated/desc0000664000000000000000000000045012310413144017742 0ustar Testname: debhelper-deprecated Sequence: 6000 Version: 1.0 Description: Test for use of deprecated dh_* commands Test-For: dh_desktop-is-deprecated dh_installmanpages-is-obsolete dh_pysupport-is-obsolete dh_scrollkeeper-is-deprecated dh_suidregister-is-obsolete dh_undocumented-is-obsolete lintian-2.5.22ubuntu1/t/tests/debhelper-deprecated/debian/0000775000000000000000000000000012077065715020345 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-deprecated/debian/debian/0000775000000000000000000000000012310413206021545 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-deprecated/debian/debian/control.in0000664000000000000000000000073612310413206023563 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), python-support, python-ply (>= 3.4-1~) Package: {$source} Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} This is a test package designed to test various aspects of the debhelper-related QA code in lintian. This may be a useless empty package. . This package should not be installed. lintian-2.5.22ubuntu1/t/tests/debhelper-deprecated/debian/debian/rules0000775000000000000000000000145612310413144022634 0ustar #!/usr/bin/make -f pkg = $(shell dh_listpackages) VERSION=2 build: build-indep build-arch build-arch: build-indep: clean: dh_testdir dh_testroot dh_clean binary: binary-indep binary-arch binary-arch: binary-indep: dh_testdir dh_testroot dh_prep dh_install dh_installchangelogs dh_installdocs dh_installmanpages dh_desktop dh_scrollkeeper -dh_python-ply # neither should this -dh_pysupport # Check not warning about deprecated commands in optional portions, but # commands that have been toast for a long time are still warned about. ifneq "$(LENNY_BACKPORT)" "y" -dh_help dh_scrollkeeper endif dh_link dh_compress dh_fixperms dh_suidregister dh_undocumented dh_installdeb dh_gencontrol dh_md5sums dh_builddeb .PHONY: build-arch build-indep build binary binary-arch binary-indep clean lintian-2.5.22ubuntu1/t/tests/fields-multi-arch/0000775000000000000000000000000012077065715016404 5ustar lintian-2.5.22ubuntu1/t/tests/fields-multi-arch/tags0000664000000000000000000000000012077065715017253 0ustar lintian-2.5.22ubuntu1/t/tests/fields-multi-arch/desc0000664000000000000000000000024612077065715017247 0ustar Testname: fields-multi-arch Sequence: 6000 Version: 1.0 Description: Tests for the Multi-Arch field Test-Against: illegal-multi-arch-value unknown-multi-arch-value lintian-2.5.22ubuntu1/t/tests/fields-multi-arch/debian/0000775000000000000000000000000012310413205017603 5ustar lintian-2.5.22ubuntu1/t/tests/fields-multi-arch/debian/Makefile0000664000000000000000000000017512077065715021271 0ustar all: install: install -d -m 0755 "$(DESTDIR)/usr/lib/package" echo "Hallo World" > "$(DESTDIR)/usr/lib/package/some-file" lintian-2.5.22ubuntu1/t/tests/fields-multi-arch/debian/debian/0000775000000000000000000000000012310413206021026 5ustar lintian-2.5.22ubuntu1/t/tests/fields-multi-arch/debian/debian/control.in0000664000000000000000000000106412310413206023037 0ustar Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source}-same Architecture: any Depends: $\{misc:Depends\}, $\{shlibs:Depends\} Multi-Arch: same Description: {$description} - same This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . This is a test with a valid Multi-Arch field. lintian-2.5.22ubuntu1/t/tests/init.d-symlink/0000775000000000000000000000000012077065715015744 5ustar lintian-2.5.22ubuntu1/t/tests/init.d-symlink/tags0000664000000000000000000000014512077065715016625 0ustar W: init.d-symlink: upstart-job-in-etc-init.d-not-registered-via-update-rc.d etc/init.d/lintian-unreg lintian-2.5.22ubuntu1/t/tests/init.d-symlink/desc0000664000000000000000000000042112077065715016602 0ustar Testname: init.d-symlink Sequence: 6000 Version: 1.0 Description: Check proper handling of symlinked init scripts Test-Against: init.d-script-not-included-in-package init.d-script-not-marked-as-conffile Test-For: upstart-job-in-etc-init.d-not-registered-via-update-rc.d lintian-2.5.22ubuntu1/t/tests/init.d-symlink/debian/0000775000000000000000000000000012077065715017166 5ustar lintian-2.5.22ubuntu1/t/tests/init.d-symlink/debian/debian/0000775000000000000000000000000012077065715020410 5ustar lintian-2.5.22ubuntu1/t/tests/init.d-symlink/debian/debian/links0000664000000000000000000000013012077065715021445 0ustar /lib/init/upstart-job etc/init.d/lintian /lib/init/upstart-job etc/init.d/lintian-unreg lintian-2.5.22ubuntu1/t/tests/init.d-symlink/debian/debian/postinst0000775000000000000000000000010512077065715022215 0ustar #!/bin/sh set -e update-rc.d lintian defaults >/dev/null #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/init.d-symlink/debian/debian/postrm0000775000000000000000000000014512077065715021662 0ustar #!/bin/sh set -e if [ "$1" = purse ] ; then update-rc.d lintian remove >/dev/null fi #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/copyright-file-license-symlink/0000775000000000000000000000000012077065714021123 5ustar lintian-2.5.22ubuntu1/t/tests/copyright-file-license-symlink/tags0000664000000000000000000000034012077065714022001 0ustar P: copyright-file-license-symlink-pedantic: copyright-refers-to-symlink-license usr/share/common-licenses/GPL W: copyright-file-license-symlink-bad: copyright-refers-to-versionless-license-file usr/share/common-licenses/GPL lintian-2.5.22ubuntu1/t/tests/copyright-file-license-symlink/desc0000664000000000000000000000040612077065714021764 0ustar Testname: copyright-file-license-symlink Sequence: 6000 Version: 1.0 Description: Test the versionless license files checks Options: -I -E --pedantic Skeleton: pedantic Test-For: copyright-refers-to-symlink-license copyright-refers-to-versionless-license-file lintian-2.5.22ubuntu1/t/tests/copyright-file-license-symlink/debian/0000775000000000000000000000000012077065714022345 5ustar lintian-2.5.22ubuntu1/t/tests/copyright-file-license-symlink/debian/debian/0000775000000000000000000000000012310413206023546 5ustar lintian-2.5.22ubuntu1/t/tests/copyright-file-license-symlink/debian/debian/control.in0000664000000000000000000000166512310413206025566 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Homepage: http://lintian.debian.org/ Package: {$source}-bad Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: {$source}-pedantic Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} -- pedantic edition :) Checks the pedantic version of the versionless copyright file check. . This is a test package designed to exercise some check of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. ././@LongLink0000644000000000000000000000017500000000000011606 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/copyright-file-license-symlink/debian/debian/copyright-file-license-symlink-pedantic.copyrightlintian-2.5.22ubuntu1/t/tests/copyright-file-license-symlink/debian/debian/copyright-file-license-sy0000664000000000000000000000176712077065714030523 0ustar This is part of the testsuite of lintian. See the file debian/copyright in the lintian source directory for more details. So far as it is copyrightable at all, this template is Copyright © 2008 Frank Lichtenheld This program is free software; you may 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, or (at your option) any later version. This 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. A copy of the GNU General Public License version 2 is available as /usr/share/common-licenses/GPL in the Debian GNU/Linux distribution or at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. You can also obtain it by writing to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. ././@LongLink0000644000000000000000000000017000000000000011601 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/copyright-file-license-symlink/debian/debian/copyright-file-license-symlink-bad.copyrightlintian-2.5.22ubuntu1/t/tests/copyright-file-license-symlink/debian/debian/copyright-file-license-sy0000664000000000000000000000171712077065714030516 0ustar This is part of the testsuite of lintian. See the file debian/copyright in the lintian source directory for more details. So far as it is copyrightable at all, this template is Copyright © 2008 Frank Lichtenheld This program is free software; you may redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation in its version 3. This 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. A copy of the GNU General Public License version 3 is available as /usr/share/common-licenses/GPL in the Debian GNU/Linux distribution or at http://www.gnu.org/licenses/old-licenses/gpl-3.0.html. You can also obtain it by writing to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. lintian-2.5.22ubuntu1/t/tests/changelog-file-experimental/0000775000000000000000000000000012077065714020431 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-experimental/tags0000664000000000000000000000011112077065714021303 0ustar P: changelog-file-experimental: experimental-to-unstable-without-comment lintian-2.5.22ubuntu1/t/tests/changelog-file-experimental/desc0000664000000000000000000000032612077065714021273 0ustar Testname: changelog-file-experimental Sequence: 6000 Version: 1.0 Description: Check experimental to unstable changes Skeleton: pedantic Options: --pedantic -I -E Test-For: experimental-to-unstable-without-comment lintian-2.5.22ubuntu1/t/tests/changelog-file-experimental/debian/0000775000000000000000000000000012077065714021653 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-experimental/debian/debian/0000775000000000000000000000000012310413206023054 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-experimental/debian/debian/changelog.in0000664000000000000000000000036212310413206025334 0ustar {$source} ({$version}) unstable; urgency=low * Lintian Test Suite. * Test: {$testname} -- {$author} {$date} {$source} (0.1) experimental; urgency=low * First upload to experimental. -- {$author} Fri, 06 Feb 2009 22:22:37 -0800 lintian-2.5.22ubuntu1/t/tests/java-classpath/0000775000000000000000000000000012077065715015774 5ustar lintian-2.5.22ubuntu1/t/tests/java-classpath/upstream/0000775000000000000000000000000012077065715017634 5ustar lintian-2.5.22ubuntu1/t/tests/java-classpath/upstream/src/0000775000000000000000000000000012077065715020423 5ustar lintian-2.5.22ubuntu1/t/tests/java-classpath/upstream/src/org/0000775000000000000000000000000012077065715021212 5ustar lintian-2.5.22ubuntu1/t/tests/java-classpath/upstream/src/org/debian/0000775000000000000000000000000012077065715022434 5ustar lintian-2.5.22ubuntu1/t/tests/java-classpath/upstream/src/org/debian/lintian/0000775000000000000000000000000012077065715024072 5ustar lintian-2.5.22ubuntu1/t/tests/java-classpath/upstream/src/org/debian/lintian/TestA.java0000664000000000000000000000017412077065715025757 0ustar package org.debian.lintian; /** A neat empty useless class. */ public class TestA { // An empty class should do. };lintian-2.5.22ubuntu1/t/tests/java-classpath/tags0000664000000000000000000000026312077065715016656 0ustar W: libcp-missing-java: missing-classpath libdepends-java W: libcp-relative-java: classpath-contains-relative-path usr/share/java/cp-relative-1.0.jar: obviously-relative/stuff.jar lintian-2.5.22ubuntu1/t/tests/java-classpath/desc0000664000000000000000000000036012077065715016634 0ustar Testname: java-classpath Type: non-native Sequence: 6000 Version: 1.0-1 Description: Various checks about JAR files Author: Vincent Fourmond Section: java Test-For: missing-classpath classpath-contains-relative-path lintian-2.5.22ubuntu1/t/tests/java-classpath/debian/0000775000000000000000000000000012077065715017216 5ustar lintian-2.5.22ubuntu1/t/tests/java-classpath/debian/debian/0000775000000000000000000000000012310413206020416 5ustar lintian-2.5.22ubuntu1/t/tests/java-classpath/debian/debian/libcp-missing-java.jlibs0000664000000000000000000000001712077065715025142 0ustar cp-missing.jar lintian-2.5.22ubuntu1/t/tests/java-classpath/debian/debian/control.in0000664000000000000000000000145112310413206022427 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), javahelper (>= 0.32~), default-jdk Package: libcp-missing-java Architecture: {$architecture} Depends: $\{misc:Depends\}, libdepends-java Description: {$description} - missing This is a test package designed to test various aspects of the java-related QA code in lintian. This package should not be installed. . Test for missing classpaths. Package: libcp-relative-java Architecture: {$architecture} Depends: $\{misc:Depends\}, libdepends-java Description: {$description} - relative This is a test package designed to test various aspects of the java-related QA code in lintian. This package should not be installed. . Test for relative classpaths. lintian-2.5.22ubuntu1/t/tests/java-classpath/debian/debian/rules0000775000000000000000000000020212310413146021473 0ustar #!/usr/bin/make -f %: dh $@ --with javahelper override_jh_build: jh_build --javacopts='-target 1.4' --javacopts='-source 1.4' lintian-2.5.22ubuntu1/t/tests/java-classpath/debian/debian/libcp-relative-java.manifest0000664000000000000000000000011212077065715026003 0ustar usr/share/java/cp-relative.jar: Class-Path: obviously-relative/stuff.jar lintian-2.5.22ubuntu1/t/tests/java-classpath/debian/debian/libcp-relative-java.jlibs0000664000000000000000000000002012077065715025276 0ustar cp-relative.jar lintian-2.5.22ubuntu1/t/tests/java-classpath/debian/debian/javabuild0000664000000000000000000000004712077065715022325 0ustar cp-missing.jar src cp-relative.jar src lintian-2.5.22ubuntu1/t/tests/lintian-overrides/0000775000000000000000000000000012310413146016512 5ustar lintian-2.5.22ubuntu1/t/tests/lintian-overrides/tags0000664000000000000000000000035112310413146017372 0ustar E: lintian-overrides: malformed-override Possibly wrong package in override at line 1 (got lintian-override, expected lintian-overrides) I: lintian-overrides: unused-override copyright-contains-dh_make-todo-boilerplate foo-bar-extra lintian-2.5.22ubuntu1/t/tests/lintian-overrides/desc0000664000000000000000000000023612077065715017373 0ustar Testname: lintian-overrides Sequence: 2500 Version: 1.0 Description: Test the couple of overrides-related tags Test-For: malformed-override unused-override lintian-2.5.22ubuntu1/t/tests/lintian-overrides/debian/0000775000000000000000000000000012077065715017753 5ustar lintian-2.5.22ubuntu1/t/tests/lintian-overrides/debian/debian/0000775000000000000000000000000012077065715021175 5ustar lintian-2.5.22ubuntu1/t/tests/lintian-overrides/debian/debian/overrides0000664000000000000000000000014012077065715023115 0ustar lintian-override: lintian-overrides: copyright-contains-dh_make-todo-boilerplate foo-bar-extra lintian-2.5.22ubuntu1/t/tests/lintian-overrides/debian/debian/rules0000775000000000000000000000031012077065715022247 0ustar #!/usr/bin/make -f pkg=lintian-overrides %: dh $@ override_dh_fixperms: install -D -m 0644 $(CURDIR)/debian/overrides \ $(CURDIR)/debian/$(pkg)/usr/share/lintian/overrides/$(pkg) dh_fixperms lintian-2.5.22ubuntu1/t/tests/files-gzip/0000775000000000000000000000000012077065715015144 5ustar lintian-2.5.22ubuntu1/t/tests/files-gzip/upstream/0000775000000000000000000000000012077065715017004 5ustar lintian-2.5.22ubuntu1/t/tests/files-gzip/upstream/good.gz0000664000000000000000000000002712077065715020275 0ustar aIzzolintian-2.5.22ubuntu1/t/tests/files-gzip/upstream/bad.gz0000664000000000000000000000000312077065715020065 0ustar hi lintian-2.5.22ubuntu1/t/tests/files-gzip/upstream/unrelated.gz.txt0000664000000000000000000000006612077065715022151 0ustar Only .gz$ files should match, not .gzip, nor .gz.xxxx lintian-2.5.22ubuntu1/t/tests/files-gzip/tags0000664000000000000000000000016112077065715016023 0ustar W: files-gzip: gz-file-not-gzip etc/bad.gz W: files-gzip: gz-file-not-gzip usr/share/doc/files-gzip/changelog.gz lintian-2.5.22ubuntu1/t/tests/files-gzip/desc0000664000000000000000000000023312077065715016003 0ustar Testname: files-gzip Sequence: 6000 Version: 1.0-1 Type: non-native Description: Test for issues handling gz but not gzip files Test-for: gz-file-not-gzip lintian-2.5.22ubuntu1/t/tests/files-gzip/debian/0000775000000000000000000000000012077065715016366 5ustar lintian-2.5.22ubuntu1/t/tests/files-gzip/debian/debian/0000775000000000000000000000000012077065715017610 5ustar lintian-2.5.22ubuntu1/t/tests/files-gzip/debian/debian/install0000664000000000000000000000001312077065715021173 0ustar *.gz* etc/ lintian-2.5.22ubuntu1/t/tests/files-gzip/debian/debian/rules0000775000000000000000000000023712077065715020672 0ustar #!/usr/bin/make -f pkg=files-gzip %: dh $@ override_dh_installdocs: dh_installdocs echo "Hello world :)" > debian/$(pkg)/usr/share/doc/$(pkg)/changelog.gz lintian-2.5.22ubuntu1/t/tests/shared-libs-non-dev-symlink/0000775000000000000000000000000012077065716020321 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-non-dev-symlink/upstream/0000775000000000000000000000000012077065716022161 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-non-dev-symlink/upstream/Makefile0000664000000000000000000000070612077065716023624 0ustar CC=gcc CFLAGS+= -fPIC SONAMES:= libfoo.so.1 LIBFILES:= $(patsubst %,%.0.1, $(SONAMES)) all: $(LIBFILES) $(LIBFILES): code.o $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc clean: rm -f *.a *.o *.so* install: all install -m 0755 -d $(DESTDIR)/usr/lib install -m 0644 *.so* $(DESTDIR)/usr/lib ln -s libfoo.so.1.0.1 $(DESTDIR)/usr/lib/libfoo.so.1 ln -s libfoo.so.1.0.1 $(DESTDIR)/usr/lib/libfoo.so .PHONY: install clean lintian-2.5.22ubuntu1/t/tests/shared-libs-non-dev-symlink/upstream/code.c0000664000000000000000000000033612077065716023241 0ustar #include #include double e(void (*f)(char *)){ char tmp[10]; double x; f(tmp); x = atof(tmp); return exp(x); } double energy(double mass){ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass; } lintian-2.5.22ubuntu1/t/tests/shared-libs-non-dev-symlink/tags0000664000000000000000000000012512077065716021200 0ustar W: libfoo1: non-dev-pkg-with-shlib-symlink usr/lib/libfoo.so.1.0.1 usr/lib/libfoo.so lintian-2.5.22ubuntu1/t/tests/shared-libs-non-dev-symlink/desc0000664000000000000000000000025612077065716021165 0ustar Testname: shared-libs-non-dev-symlink Sequence: 6000 Version: 1.0-1 Type: non-native Description: Test checks related to dev symlink Test-For: non-dev-pkg-with-shlib-symlink lintian-2.5.22ubuntu1/t/tests/shared-libs-non-dev-symlink/debian/0000775000000000000000000000000012077065716021543 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-non-dev-symlink/debian/debian/0000775000000000000000000000000012310413206022742 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-non-dev-symlink/debian/debian/control.in0000664000000000000000000000070312310413206024752 0ustar Source: {$source} Priority: extra Section: libs Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: libfoo1 Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/tests/shared-libs-non-dev-symlink/debian/debian/libfoo1.symbols0000664000000000000000000000007212077065716025731 0ustar libfoo.so.1 libfoo1 #MINVER# e@Base 1.0 energy@Base 0.9 lintian-2.5.22ubuntu1/t/tests/fields-qa-maint-address/0000775000000000000000000000000012077065715017471 5ustar lintian-2.5.22ubuntu1/t/tests/fields-qa-maint-address/tags0000664000000000000000000000044512077065715020355 0ustar E: fields-qa-maint-address source: no-human-maintainers E: fields-qa-maint-address source: wrong-debian-qa-address-set-as-maintainer Debian QA Group E: fields-qa-maint-address: wrong-debian-qa-address-set-as-maintainer Debian QA Group lintian-2.5.22ubuntu1/t/tests/fields-qa-maint-address/desc0000664000000000000000000000024412077065715020332 0ustar Testname: fields-qa-maint-address Sequence: 6000 Version: 1.0 Description: Test for the QA in Maintainer field Test-For: wrong-debian-qa-address-set-as-maintainer lintian-2.5.22ubuntu1/t/tests/fields-qa-maint-address/debian/0000775000000000000000000000000012077065715020713 5ustar lintian-2.5.22ubuntu1/t/tests/fields-qa-maint-address/debian/debian/0000775000000000000000000000000012310413206022113 5ustar lintian-2.5.22ubuntu1/t/tests/fields-qa-maint-address/debian/debian/changelog.in0000664000000000000000000000024512310413206024373 0ustar {$source} ({$version}) unstable; urgency=low * Orphaned. * Lintian Test Suite. * Test: {$testname} -- Debian QA Group {$date} lintian-2.5.22ubuntu1/t/tests/fields-qa-maint-address/debian/debian/control.in0000664000000000000000000000076312310413206024131 0ustar Source: {$source} Priority: extra Section: devel Maintainer: Debian QA Group Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: all Depends: $\{misc:Depends\}, Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/watch-file-general/0000775000000000000000000000000012310413206016507 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-general/tags0000664000000000000000000000216712310413206017376 0ustar I: watch-file-general source: debian-watch-file-should-dversionmangle-not-uversionmangle line 5 P: watch-file-general source: debian-watch-may-check-gpg-signature W: watch-file-general source: debian-watch-file-declares-multiple-versions line 18 W: watch-file-general source: debian-watch-file-declares-multiple-versions line 7 W: watch-file-general source: debian-watch-file-should-mangle-version line 12 W: watch-file-general source: debian-watch-file-should-mangle-version line 14 W: watch-file-general source: debian-watch-file-should-mangle-version line 15 W: watch-file-general source: debian-watch-file-should-use-sf-redirector line 12 W: watch-file-general source: debian-watch-file-should-use-sf-redirector line 14 W: watch-file-general source: debian-watch-file-should-use-sf-redirector line 15 W: watch-file-general source: debian-watch-file-should-use-sf-redirector line 8 W: watch-file-general source: debian-watch-file-specifies-wrong-upstream-version 2.0.ds1-1 line 21 W: watch-file-general source: debian-watch-file-unknown-version 42 W: watch-file-general source: debian-watch-file-uses-deprecated-sf-redirector-method line 5 lintian-2.5.22ubuntu1/t/tests/watch-file-general/desc0000664000000000000000000000110012310413206017340 0ustar Testname: watch-file-general Sequence: 6000 Type: non-native Version: 2.0.ds1-1 Description: General watch file checks Options: -I -E --pedantic Skeleton: pedantic Test-For: debian-watch-file-declares-multiple-versions debian-watch-may-check-gpg-signature debian-watch-file-should-dversionmangle-not-uversionmangle debian-watch-file-should-mangle-version debian-watch-file-should-use-sf-redirector debian-watch-file-specifies-wrong-upstream-version debian-watch-file-unknown-version debian-watch-file-uses-deprecated-sf-redirector-method References: Debian Bug#510398 lintian-2.5.22ubuntu1/t/tests/watch-file-general/debian/0000775000000000000000000000000012310413205017730 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-general/debian/debian/0000775000000000000000000000000012310413206021153 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-general/debian/debian/changelog.in0000664000000000000000000000051612310413206023434 0ustar {$source} ({$version}) unstable; urgency=low * Lintian Test Suite. * Test: {$testname} * Suppress "should close ITP bug" messages. (Closes: #123456) -- {$author} {$date} {$source} (1.0-1) unstable; urgency=low * Provoke debian-watch-file-specifies-old-upstream-version. -- {$author} Thu, 01 Jan 2009 08:34:20 -0800 lintian-2.5.22ubuntu1/t/tests/watch-file-general/debian/debian/watch0000664000000000000000000000137612310413206022213 0ustar # watch file with upstream version mangling version=2 opts="uversionmangle=s/$/ds/" \ http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate version=3 http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdate # Test additional Sourceforge patterns. (See Bug#510398) ftp://upload.sourceforge.net/pub/sourceforge/s/so/soprano/ \ soprano-(.*)\.tar\.bz2 http://sourceforge.net/project/showfiles.php?group_id=100501 \ .*/octaviz/octaviz-([\d\.]+).tar.gz.* http://sourceforge.net/projects/synce/files http://downloads.sourceforge.net/.+/kcemirror-(.+).tar.gz.* # Unknown version number. version=42 # Specifies the same version number as the package. http://example.com/ foo([\d.]+)\.tar\.gz 2.0.ds1-1 uupdate # without any pgpsigurlmanglelintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-description/0000775000000000000000000000000012310413146021335 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-description/tags0000664000000000000000000000045612310413146022223 0ustar I: patch-systems-quilt-description source: quilt-patch-missing-description 02_this_one_has_no_description I: patch-systems-quilt-description source: quilt-patch-missing-description 03_a_git_patch I: patch-systems-quilt-description source: quilt-patch-using-template-description 04_template_description lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-description/desc0000664000000000000000000000042012310413146022172 0ustar Testname: patch-systems-quilt-description Sequence: 6000 Version: 1.0 Description: Test for quilt patches which do not have accompanying descriptions Test-For: quilt-patch-missing-description quilt-patch-using-template-description References: Debian Bug #498892 lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-description/debian/0000775000000000000000000000000012077065715022576 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-description/debian/debian/0000775000000000000000000000000012310413206023776 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-description/debian/debian/control.in0000664000000000000000000000076612310413206026017 0ustar Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: quilt, debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlib:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-description/debian/debian/README.source0000664000000000000000000000010212077065715026170 0ustar This package uses quilt. See /usr/share/doc/quilt/README.source. lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-description/debian/debian/patches/0000775000000000000000000000000012310413146025430 5ustar ././@LongLink0000644000000000000000000000015000000000000011577 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-description/debian/debian/patches/01_this_patch_is_oklintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-description/debian/debian/patches/01_this_patch_is0000664000000000000000000000026312077065715030514 0ustar This is a description of the patch --- a.orig 2008-11-11 19:38:12.000000000 +0000 +++ a 2008-11-11 19:38:26.000000000 +0000 @@ -1 +1,2 @@ sample text +and some more sample text ././@LongLink0000644000000000000000000000016300000000000011603 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-description/debian/debian/patches/02_this_one_has_no_descriptionlintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-description/debian/debian/patches/02_this_one_has_0000664000000000000000000000021712077065715030475 0ustar --- a.orig 2008-11-11 19:38:12.000000000 +0000 +++ a 2008-11-11 19:38:26.000000000 +0000 @@ -1 +1,2 @@ sample text +and some more sample text lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-description/debian/debian/patches/03_a_git_patch0000664000000000000000000000032112077065715030132 0ustar diff --git a/a b/a index eb39593..7258d2f 100644 --- a 2008-11-11 19:38:12.000000000 +0000 +++ a 2008-11-11 19:38:26.000000000 +0000 @@ -1 +1,3 @@ sample text and some more sample text +and yet another line ././@LongLink0000644000000000000000000000015400000000000011603 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-description/debian/debian/patches/04_template_descriptionlintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-description/debian/debian/patches/04_template_desc0000664000000000000000000000116112310413146030466 0ustar Description: This patch include a templated text for description TODO: Put a short summary on the line above and replace this paragraph with a longer explanation of this change. Complete the meta-information with other relevant fields (see below for details). To make it easier, the information below has been extracted from the changelog. Adjust it or drop it. . diff --git a/a b/a index eb39593..7258d2f 100644 --- a 2008-11-11 19:38:12.000000000 +0000 +++ a 2008-11-11 19:38:26.000000000 +0000 @@ -1 +1,4 @@ sample text and some more sample text and yet another line +and so on lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-description/debian/debian/patches/series0000664000000000000000000000013212310413146026641 0ustar 01_this_patch_is_ok 02_this_one_has_no_description 03_a_git_patch 04_template_description lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep/0000775000000000000000000000000012077065716017000 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep/tags0000664000000000000000000000124012077065716017656 0ustar E: scripts-missing-dep: gawk-script-but-no-gawk-dep usr/bin/gawk-script E: scripts-missing-dep: mawk-script-but-no-mawk-dep usr/bin/mawk-script E: scripts-missing-dep: php-script-but-no-phpX-cli-dep usr/bin/php-script E: scripts-missing-dep: python-script-but-no-python-dep usr/bin/python-script E: scripts-missing-dep: ruby-script-but-no-ruby-dep usr/bin/ruby-script E: scripts-missing-dep: tclsh-script-but-no-tclsh-dep usr/bin/tclsh-script E: scripts-missing-dep: wish-script-but-no-wish-dep usr/bin/wish-script W: scripts-missing-dep: maintainer-script-needs-depends-on-adduser postinst W: scripts-missing-dep: maintainer-script-needs-depends-on-update-inetd postinst lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep/desc0000664000000000000000000000066212077065716017645 0ustar Testname: scripts-missing-dep Sequence: 6000 Version: 1.0 Description: Check missing dep on various script interpreters Test-For: wish-script-but-no-wish-dep ruby-script-but-no-ruby-dep gawk-script-but-no-gawk-dep maintainer-script-needs-depends-on-adduser maintainer-script-needs-depends-on-update-inetd mawk-script-but-no-mawk-dep php-script-but-no-phpX-cli-dep python-script-but-no-python-dep tclsh-script-but-no-tclsh-dep lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep/debian/0000775000000000000000000000000012077065716020222 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep/debian/ruby-script0000775000000000000000000000004112077065716022426 0ustar #!/usr/bin/ruby # do something. lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep/debian/tclsh-script0000775000000000000000000000004212077065716022563 0ustar #!/usr/bin/tclsh # do something. lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep/debian/php-script0000775000000000000000000000006012077065716022235 0ustar #!/usr/bin/php lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep/debian/gawk-script0000775000000000000000000000004412077065716022401 0ustar #!/usr/bin/gawk -f # do something. lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep/debian/mawk-script0000775000000000000000000000004412077065716022407 0ustar #!/usr/bin/mawk -f # do something. lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep/debian/wish-script0000775000000000000000000000004112077065716022417 0ustar #!/usr/bin/wish # do something. lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep/debian/python-script0000775000000000000000000000003712077065716022773 0ustar #!/usr/bin/python # whatever lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep/debian/script.pod0000664000000000000000000000037512077065716022237 0ustar =head1 NAME @SCRIPT@ - Cool script to do stuff written in some script language. =head1 SYNOPSIS @SCRIPT@ --cool-argument =head1 DESCRIPTION This script is very awesome and does something you do not even know you need. =head1 AUTHOR I made this lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep/debian/debian/0000775000000000000000000000000012077065716021444 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep/debian/debian/clean0000664000000000000000000000000512077065716022444 0ustar man/ lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep/debian/debian/install0000664000000000000000000000002212077065716023027 0ustar *-script usr/bin/ lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep/debian/debian/rules0000775000000000000000000000027112077065716022524 0ustar #!/usr/bin/make -f %: dh $@ override_dh_auto_build: mkdir man for FILE in *-script ; do \ sed s/@SCRIPT@/$$FILE/g script.pod | \ pod2man --section=1 > man/$$FILE.1 ; \ done lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep/debian/debian/postinst0000664000000000000000000000015412077065716023252 0ustar #!/bin/sh set -e if false ; then adduser some user lalal update-inetd some stuff fi #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/scripts-missing-dep/debian/debian/manpages0000664000000000000000000000001012077065716023151 0ustar man/*.1 lintian-2.5.22ubuntu1/t/tests/debhelper-dh-exec/0000775000000000000000000000000012077065715016340 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-dh-exec/tags0000664000000000000000000000061712077065715017225 0ustar E: debhelper-dh-exec source: dh-exec-install-not-allowed-here debian/manpages E: debhelper-dh-exec source: dh-exec-private-helper debian/manpages E: debhelper-dh-exec source: package-uses-dh-exec-but-lacks-build-depends I: debhelper-dh-exec source: dh-exec-subst-unknown-variable debian/manpages DEB_BUILD_WHATEVER W: debhelper-dh-exec source: dh-exec-script-without-dh-exec-features debian/install lintian-2.5.22ubuntu1/t/tests/debhelper-dh-exec/desc0000664000000000000000000000062512077065715017204 0ustar Testname: debhelper-dh-exec Sequence: 6000 Version: 1.0 Options: --suppress-tags package-needs-versioned-debhelper-build-depends --display-info Description: Tests related to executable, dh-exec using packaging files Test-For: dh-exec-install-not-allowed-here dh-exec-private-helper dh-exec-script-without-dh-exec-features dh-exec-subst-unknown-variable package-uses-dh-exec-but-lacks-build-depends lintian-2.5.22ubuntu1/t/tests/debhelper-dh-exec/debian/0000775000000000000000000000000012077065715017562 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-dh-exec/debian/debian/0000775000000000000000000000000012077065715021004 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-dh-exec/debian/debian/install0000775000000000000000000000003412077065715022375 0ustar #! /usr/bin/dh-exec usr/lib lintian-2.5.22ubuntu1/t/tests/debhelper-dh-exec/debian/debian/compat0000664000000000000000000000000212077065715022202 0ustar 9 lintian-2.5.22ubuntu1/t/tests/debhelper-dh-exec/debian/debian/rules0000775000000000000000000000011512077065715022061 0ustar #!/usr/bin/make -f %: dh $@ override_dh_installman: override_dh_install: lintian-2.5.22ubuntu1/t/tests/debhelper-dh-exec/debian/debian/manpages0000775000000000000000000000015712077065715022530 0ustar #! /usr/lib/dh-exec/dh-exec-subst ## The above works, but is not recommended. foo => bar ${DEB_BUILD_WHATEVER} lintian-2.5.22ubuntu1/t/tests/binaries-unsafe-open/0000775000000000000000000000000012077065714017104 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-unsafe-open/tags0000664000000000000000000000010512077065714017761 0ustar W: binaries-unsafe-open: binary-without-manpage usr/bin/dummy||uname lintian-2.5.22ubuntu1/t/tests/binaries-unsafe-open/desc0000664000000000000000000000023012077065714017740 0ustar Testname: binaries-unsafe-open Sequence: 6000 Architecture: any Version: 1.0 Description: Test for possible command execution when processing filenames lintian-2.5.22ubuntu1/t/tests/binaries-unsafe-open/debian/0000775000000000000000000000000012310413144020306 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-unsafe-open/debian/Makefile0000664000000000000000000000031412077065714021764 0ustar all: gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o dummy dummy.c install: install -d $(DESTDIR)/usr/bin install -m 755 -c dummy $(DESTDIR)/usr/bin/'dummy||uname' clean distclean: rm -f dummy check test: lintian-2.5.22ubuntu1/t/tests/binaries-unsafe-open/debian/dummy.c0000664000000000000000000000044312310413144021606 0ustar #include #include static void hardening_trigger(char *p, int i, void (*f)(char *)) { char test[10]; memcpy(test, p, i); f(test); printf("%s", test); } int main(void) { printf("Hello world!\n"); hardening_trigger(NULL, 0, NULL); return 0; } lintian-2.5.22ubuntu1/t/tests/legacy-scripts/0000775000000000000000000000000012310413206016002 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/0000775000000000000000000000000012310413206017642 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/make-foo0000664000000000000000000000002212310413206021255 0ustar #!/usr/bin/make lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/init-skeleton0000664000000000000000000001016712310413206022357 0ustar #! /bin/sh ### BEGIN INIT INFO # Provides: skeleton # Required-Start: $local_fs $remote_fs # Required-Stop: $local_fs $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: S 0 1 6 # Short-Description: Example initscript # Description: This file should be used to construct scripts to be # placed in /etc/init.d. ### END INIT INFO # Author: Foo Bar # # Please remove the "Author" lines above and replace them # with your own name if you copy and modify this script. # Do NOT "set -e" # PATH should only include /usr/* if it runs after the mountnfs.sh script PATH=/usr/sbin:/usr/bin:/sbin:/bin DESC="Description of the service" NAME=daemonexecutablename DAEMON=/usr/sbin/$NAME DAEMON_ARGS="--options args" PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME # Exit if the package is not installed [ -x "$DAEMON" ] || exit 0 # Read configuration variable file if it is present [ -r /etc/default/$NAME ] && . /etc/default/$NAME # Load the VERBOSE setting and other rcS variables [ -f /etc/default/rcS ] && . /etc/default/rcS # Define LSB log_* functions. # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. . /lib/lsb/init-functions # # Function that starts the daemon/service # do_start() { # Return # 0 if daemon has been started # 1 if daemon was already running # 2 if daemon could not be started start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \ || return 1 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \ $DAEMON_ARGS \ || return 2 # Add code here, if necessary, that waits for the process to be ready # to handle requests from services started subsequently which depend # on this one. As a last resort, sleep for some time. } # # Function that stops the daemon/service # do_stop() { # Return # 0 if daemon has been stopped # 1 if daemon was already stopped # 2 if daemon could not be stopped # other if a failure occurred start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME RETVAL="$?" [ "$RETVAL" = 2 ] && return 2 # Wait for children to finish too if this is a daemon that forks # and if the daemon is only ever run from this initscript. # If the above conditions are not satisfied then add some other code # that waits for the process to drop all resources that could be # needed by services started subsequently. A last resort is to # sleep for some time. start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON [ "$?" = 2 ] && return 2 # Many daemons don't delete their pidfiles when they exit. rm -f $PIDFILE return "$RETVAL" } # # Function that sends a SIGHUP to the daemon/service # do_reload() { # # If the daemon can reload its configuration without # restarting (for example, when it is sent a SIGHUP), # then implement that here. # start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME return 0 } case "$1" in start) [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" do_start case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" do_stop case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; #reload|force-reload) # # If do_reload() is not implemented then leave this commented out # and leave 'force-reload' as an alias for 'restart'. # #log_daemon_msg "Reloading $DESC" "$NAME" #do_reload #log_end_msg $? #;; restart|force-reload) # # If the "reload" option is implemented then remove the # 'force-reload' alias # log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in 0|1) do_start case "$?" in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running *) log_end_msg 1 ;; # Failed to start esac ;; *) # Failed to stop log_end_msg 1 ;; esac ;; *) #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 exit 3 ;; esac : lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/phpfoo0000664000000000000000000000017012310413206021056 0ustar #!/usr/bin/php Dumb PHP script lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/py2foo0000775000000000000000000000011012310413206020776 0ustar #! /usr/bin/env python2.2 if __name__ == '__main__': print 'Hi there' lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/sh-broken0000664000000000000000000000002012310413206021445 0ustar #!/bin/sh if fi lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/csh-foo0000664000000000000000000000001512310413206021117 0ustar #! /bin/csh lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/lefty-foo0000664000000000000000000000003012310413206021462 0ustar #!/usr/local/bin/lefty lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/perl-bizarre-10000664000000000000000000000100712310413206022317 0ustar #! /bin/sh eval '(exit $?0)' && eval 'PERL_BADLANG=x;export PERL_BADLANG;: \ ;exec perl -x -S -- "$0" ${1+"$@"};#'if 0; eval 'setenv PERL_BADLANG x;exec perl -x -S -- "$0" $argv:q;#'.q+ #!perl -w package Htex::a2ping; $0=~/(.*)/s;unshift@INC,'.';do($1);die$@if$@;__END__+if !1; # This Perl script was generated by JustLib2 at Wed Apr 23 09:14:13 2003. # Don't touch/remove any lines above; http://www.inf.bme.hu/~pts/justlib # The above was actually seen in the wild and stresses the # script_is_evil_and_wrong test. lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/xsession-test0000664000000000000000000000002712310413206022414 0ustar #!/bin/sh echo "Foo." lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/perl-bizarre-30000664000000000000000000000042612310413206022325 0ustar eval '(exit $?0)' && eval 'exec perl -wS $0 ${1+"$@"}' & eval 'exec /usr/bin/perl -wS $0 $argv:q' if $running_under_some_shell; # More utterly bizarreness from perlrun. This one even doesn't work if # there's a valid #! line on the first line. I don't understand why.... lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/guile-bizarre0000664000000000000000000000023412310413206022325 0ustar #! /bin/sh # -*- scheme -*- exec guile -s $0 $* # Seen in the wild as build-guile-gtk in libguilegtk-1.2-dev (0.31-5.1) # Tests script_is_evil_and_wrong !# lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/pyfoo0000775000000000000000000000010512310413206020720 0ustar #! /usr/bin/env python if __name__ == '__main__': print 'Hi there' lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/gccbug.dpatch0000775000000000000000000000176212310413206022272 0ustar #! /bin/sh -e # DP: Use sensible-editor instead of vi as fallback editor # Taken from gcc-4.1-source. Chokes bash -n (due to the patch) despite being # a valid dpatch, so don't warn about it if it's in /usr/src. dir= if [ $# -eq 3 -a "$2" = '-d' ]; then pdir="-d $3" dir="$3/" elif [ $# -ne 1 ]; then echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" exit 1 fi case "$1" in -patch) patch $pdir -f --no-backup-if-mismatch -p0 < $0 ;; -unpatch) patch $pdir -f --no-backup-if-mismatch -R -p0 < $0 ;; *) echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" exit 1 esac exit 0 --- gcc/gccbug.in~ 2003-03-01 00:51:42.000000000 +0100 +++ gcc/gccbug.in 2003-03-02 12:08:36.000000000 +0100 @@ -134,7 +134,7 @@ # If they don't have a preferred editor set, then use if [ -z "$VISUAL" ]; then if [ -z "$EDITOR" ]; then - EDIT=vi + EDIT=/usr/bin/sensible-editor else EDIT="$EDITOR" fi lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/perl-bizarre-20000664000000000000000000000034112310413206022320 0ustar #!/bin/sh eval 'exec /usr/bin/perl -wS $0 ${1+"$@"}' if $running_under_some_shell; # I'm someone following perlrun except without using the Perl #! line. # Now something to choke bash. while (<>) { if (/%#/) { print } } lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/fish-foo0000664000000000000000000000002212310413206021271 0ustar #! /usr/bin/fish lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/perlfoo0000664000000000000000000000005112310413206021227 0ustar #! /usr/bin/perl print "Hello, World!"; lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/rubyfoo0000664000000000000000000000017212310413206021252 0ustar #!/bin/ruby1.8 # Ok, that example is really pathetic, but until we have # some better code in checks/scripts, it will do lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/wishfoo0000664000000000000000000000014512310413206021243 0ustar #!/usr/bin/wish # # This is not actually a wish script, here to force a test of wish # dependencies. lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/init-lsb-other0000664000000000000000000000073612310413206022433 0ustar #! /bin/sh ### BEGIN INIT INFO # Provides: lsb-other # Required-Start: $local_fs $remote_fs # Required-Stop: $local_fs $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Description: This is another LSB script test, which has a missing # Short-Description. ### END INIT INFO case "$1" in start|stop|restart|reload|force-reload) echo "Blah" ;; *) echo "Usage: foo start" >&2 exit 3 ;; esac : lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/tkfoo0000775000000000000000000000073712310413206020721 0ustar #!/bin/sh # # Insane amount of empty lines and comments # # # # # # # # # # # # # This line makes the next one a comment in Tcl \ exec wish "$0" -- ${1+"$@"} # lintian should not check the following for syntax # if it detects the line above correctly # Code snippet taken from eTkTab if { [array names prefs keybindings] != "" } { # Read in the file array set unparsed_bindings [ read_settings_file $prefs(keybindings)] } lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/envfoo0000775000000000000000000000010112310413206021054 0ustar #! /bin/env python if __name__ == '__main__': print 'Hi there' lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/jruby-broken0000664000000000000000000000011712310413206022175 0ustar #!/usr/bin/jruby # There's no non-versioned jruby, so this should be an error. lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/suidperlfoo0000664000000000000000000000005512310413206022120 0ustar #! /usr/bin/suidperl print "Hello, World!"; lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/init-no-lsb0000664000000000000000000000043212310413206021717 0ustar #! /bin/sh # No LSB section, but otherwise okay. (Well, the messages are bad, but we # don't check that yet.) case "$1" in start) echo "Blah starting" ;; stop) echo "Blah stopping" ;; restart|force-reload) echo "Blah restarting" ;; esac : lintian-2.5.22ubuntu1/t/tests/legacy-scripts/upstream/init-lsb-broken0000664000000000000000000000154612310413206022572 0ustar #! /bin/sh ### BEGIN INIT INFO # Provides: bad-lsb # Required-Start: $local_fs $remote_fs # Required-Stop: # Default-Start: 1 2 3 4 5 # Default-Stop: S 0 1 6 X # Short-Description: Example initscript # but this can't be continued # Description: An example of a bad LSB section in an init script. # This continuation is allowed (with spaces). # This one is too (with tabs). # X-Debian-Foo: Some unknown but valid keyword. # Foo: Some invalid keyword. # Whoops, no terminating line. # And then we have this duplicate section. ### BEGIN INIT INFO # Required-Start: This one doesn't count. ### END INIT INFO # Hey, look at all of those missing actions! But stop isn't missing. case "$1" in start|stop) echo "Blah" ;; *) echo "Usage: foo start" >&2 exit 3 ;; esac : lintian-2.5.22ubuntu1/t/tests/legacy-scripts/post_test0000664000000000000000000000007012310413206017746 0ustar s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/ lintian-2.5.22ubuntu1/t/tests/legacy-scripts/pre_build0000775000000000000000000000006012310413206017671 0ustar #!/bin/sh DIR="$1" rm -f "$DIR/debian/compat" lintian-2.5.22ubuntu1/t/tests/legacy-scripts/tags0000664000000000000000000001430012310413206016661 0ustar E: scripts source: build-depends-on-obsolete-package build-depends-indep: dpatch E: scripts source: dpatch-index-references-non-existent-patch 01_not_here_right_now.dpatch E: scripts source: dpatch-index-references-non-existent-patch 01_some_other_patch_thats_not_in_the_package.dpatch E: scripts source: missing-build-dependency debhelper E: scripts source: package-uses-debhelper-but-lacks-build-depends E: scripts: copyright-file-lacks-pointer-to-perl-license E: scripts: depends-on-obsolete-package depends: ruby1.8 E: scripts: duplicate-updaterc.d-calls-in-postrm lsb-other E: scripts: init.d-script-does-not-implement-required-option etc/init.d/lsb-broken force-reload E: scripts: init.d-script-does-not-implement-required-option etc/init.d/lsb-broken restart E: scripts: init.d-script-has-duplicate-lsb-section etc/init.d/lsb-broken E: scripts: init.d-script-has-unterminated-lsb-section etc/init.d/lsb-broken:15 E: scripts: missing-dep-for-interpreter jruby => jruby | jruby1.0 | jruby1.1 | jruby1.2 (usr/bin/jruby-broken) E: scripts: missing-dep-for-interpreter lefty => graphviz (usr/bin/lefty-foo) E: scripts: package-installs-python-bytecode usr/lib/python2.3/site-packages/test.pyc E: scripts: php-script-but-no-phpX-cli-dep usr/share/scripts/php5foo E: scripts: php-script-but-no-phpX-cli-dep usr/share/scripts/phpfoo E: scripts: python-script-but-no-python-dep usr/bin/py2foo E: scripts: python-script-but-no-python-dep usr/bin/pyfoo E: scripts: shell-script-fails-syntax-check usr/bin/sh-broken E: scripts: wrong-path-for-interpreter usr/bin/lefty-foo (#!/usr/local/bin/lefty != /usr/bin/lefty) E: scripts: wrong-path-for-interpreter usr/bin/rubyfoo (#!/bin/ruby1.8 != /usr/bin/ruby1.8) I: scripts source: debian-rules-missing-good-practice-target-dfsg get-orig-source I: scripts source: debian-watch-file-should-dversionmangle-not-uversionmangle line 5 I: scripts source: dpatch-missing-description 02_i_dont_have_a_description.patch I: scripts source: dpatch-missing-description 04_i_dont_have_a_description_either.patch I: scripts: init.d-script-does-not-implement-optional-option etc/init.d/lsb-broken status I: scripts: init.d-script-does-not-implement-optional-option etc/init.d/lsb-other status I: scripts: init.d-script-does-not-implement-optional-option etc/init.d/no-lsb status I: scripts: init.d-script-does-not-implement-optional-option etc/init.d/skeleton status I: scripts: init.d-script-does-not-provide-itself etc/init.d/lsb-broken I: scripts: init.d-script-missing-lsb-short-description etc/init.d/lsb-other I: scripts: no-md5sums-control-file I: scripts: script-in-usr-share-doc usr/share/doc/scripts/py2foo I: scripts: script-in-usr-share-doc usr/share/doc/scripts/rubyfoo W: scripts source: ancient-standards-version 3.2.1 (current is CURRENT) W: scripts source: binary-arch-rules-but-pkg-is-arch-indep W: scripts source: changelog-should-mention-nmu W: scripts source: debhelper-but-no-misc-depends scripts W: scripts source: debhelper-compat-file-is-missing W: scripts source: debian-watch-file-declares-multiple-versions line 7 W: scripts source: debian-watch-file-should-use-sf-redirector line 8 W: scripts source: debian-watch-file-specifies-old-upstream-version 5 line 8 W: scripts source: debian-watch-file-uses-deprecated-sf-redirector-method line 5 W: scripts source: package-uses-deprecated-debhelper-compat-version 1 W: scripts source: patch-system-but-no-source-readme W: scripts source: source-nmu-has-incorrect-version-number 6ds-1ubuntu0.5.10.1 W: scripts: binary-without-manpage usr/bin/envfoo W: scripts: binary-without-manpage usr/bin/guile-bizarre W: scripts: binary-without-manpage usr/bin/jruby-broken W: scripts: binary-without-manpage usr/bin/lefty-foo W: scripts: binary-without-manpage usr/bin/make-foo W: scripts: binary-without-manpage usr/bin/perl-bizarre-1 W: scripts: binary-without-manpage usr/bin/perl-bizarre-2 W: scripts: binary-without-manpage usr/bin/perl-bizarre-3 W: scripts: binary-without-manpage usr/bin/perlfoo W: scripts: binary-without-manpage usr/bin/py2foo W: scripts: binary-without-manpage usr/bin/pyfoo W: scripts: binary-without-manpage usr/bin/rubyfoo W: scripts: binary-without-manpage usr/bin/sh-broken W: scripts: binary-without-manpage usr/bin/suidperlfoo W: scripts: binary-without-manpage usr/bin/suidperlfoo2 W: scripts: binary-without-manpage usr/bin/test.sh W: scripts: binary-without-manpage usr/bin/tkfoo W: scripts: binary-without-manpage usr/bin/wishfoo W: scripts: control-file-is-empty prerm W: scripts: executable-is-not-world-readable usr/bin/guile-bizarre 0705 W: scripts: executable-is-not-world-readable usr/bin/perl-bizarre-2 0750 W: scripts: executable-is-not-world-readable usr/bin/suidperlfoo2 4751 W: scripts: executable-not-elf-or-script usr/bin/perl-bizarre-3 W: scripts: init-d-script-stops-in-s-runlevel etc/init.d/lsb-broken W: scripts: init-d-script-stops-in-s-runlevel etc/init.d/skeleton W: scripts: init.d-script-does-not-source-init-functions etc/init.d/lsb-broken W: scripts: init.d-script-does-not-source-init-functions etc/init.d/lsb-other W: scripts: init.d-script-does-not-source-init-functions etc/init.d/no-lsb W: scripts: init.d-script-has-bad-lsb-line etc/init.d/lsb-broken:4 W: scripts: init.d-script-has-bad-lsb-line etc/init.d/lsb-broken:9 W: scripts: init.d-script-has-bad-stop-runlevel etc/init.d/lsb-broken X W: scripts: init.d-script-has-conflicting-start-stop etc/init.d/lsb-broken 1 W: scripts: init.d-script-has-unknown-lsb-keyword etc/init.d/lsb-broken:14 foo W: scripts: init.d-script-missing-lsb-keyword etc/init.d/lsb-broken required-start W: scripts: init.d-script-missing-lsb-section etc/init.d/no-lsb W: scripts: init.d-script-not-marked-as-conffile etc/init.d/skeleton W: scripts: maintainer-script-empty preinst W: scripts: maintainer-script-has-unexpanded-debhelper-token preinst W: scripts: maintainer-script-ignores-errors postinst W: scripts: non-standard-executable-perm usr/bin/perl-bizarre-3 0754 != 0755 W: scripts: non-standard-setuid-executable-perm usr/bin/suidperlfoo 4555 W: scripts: script-uses-bin-env usr/bin/envfoo W: scripts: script-with-language-extension usr/bin/test.sh W: scripts: setuid-binary usr/bin/suidperlfoo 4555 root/root W: scripts: setuid-binary usr/bin/suidperlfoo2 4751 root/root W: scripts: unusual-interpreter usr/bin/suidperlfoo #!/usr/bin/suidperl lintian-2.5.22ubuntu1/t/tests/legacy-scripts/desc0000664000000000000000000000021112310413206016635 0ustar Testname: legacy-scripts Source: scripts Sequence: 9999 Version: 6ds-1ubuntu0.5.10.1 Type: non-native Description: Legacy test "scripts" lintian-2.5.22ubuntu1/t/tests/legacy-scripts/debian/0000775000000000000000000000000012310413206017224 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-scripts/debian/debian/0000775000000000000000000000000012310413206020446 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-scripts/debian/debian/copyright0000664000000000000000000000035412310413206022403 0ustar This file contains the phrase "under the same terms as Perl itself" to trigger warnings about not having common-licenses references. This file contains the phrase "public domain" which should suppress warnings about no copyright date. lintian-2.5.22ubuntu1/t/tests/legacy-scripts/debian/debian/changelog0000664000000000000000000000236612310413206022327 0ustar scripts (6ds-1ubuntu0.5.10.1) unstable; urgency=low * I'm also not able to write my name. * Added a script in /etc/Xsession.d * Bizarre version number courtesy of https://wiki.ubuntu.com/SecurityUpdateProcedures#Prepare -- Mark 'HE' Brokschmitt Thu, 23 Jun 2005 14:32:39 +0200 scripts (5-1) unstable; urgency=low * I'm making a typo in my own name... And I want lintian to warn me about it. -- Jeroen van Wolffelaar Sun, 18 Apr 2004 02:26:34 +0200 scripts (4-1) unstable; urgency=low * Add new example to check that not executable files with a shebang line called *in don't trigger the script-not-executable warning. -- Marc 'HE' Brockschmidt Wed, 14 Apr 2004 19:44:04 +0200 scripts (3-3) unstable; urgency=low * Add suidperlfoo and some code in debian/rules to check the new suidperl checks -- Frank Lichtenheld Wed, 31 Mar 2004 21:06:20 +0000 scripts (2-1) unstable; urgency=low * Add tkfoo script for tk checkings -- Lintian Maintainers Sat, 21 Feb 2004 17:13:36 +0100 scripts (1-0) unstable; urgency=low * Initial version -- Lintian Maintainers Sat, 10 Feb 2001 15:37:31 -0800 lintian-2.5.22ubuntu1/t/tests/legacy-scripts/debian/debian/rules0000775000000000000000000000714112310413206021531 0ustar #!/usr/bin/make -f tmp=debian/tmp build-arch: echo "Hi, in an arch: all package, I am a bug!" build-indep: build: build-arch build-indep binary-arch: echo "Hi, in an arch: all package, I am a bug!" binary-indep: install -d $(tmp)/usr/bin/ install -d $(tmp)/etc/X11/Xsession.d/ install -d $(tmp)/etc/init.d/ install -d $(tmp)/etc/csh/login.d/ install -d $(tmp)/etc/fish.d/ install -d $(tmp)/usr/share/scripts/ install -d $(tmp)/usr/share/doc/scripts/ install -d $(tmp)/usr/lib/python2.3/site-packages/ install -d $(tmp)/usr/lib/cgi-bin install -d $(tmp)/usr/src/scripts install -d $(tmp)/DEBIAN install -m 755 csh-foo $(tmp)/etc/csh/login.d/ install -m 755 envfoo $(tmp)/usr/bin/ install -m 755 fish-foo $(tmp)/etc/fish.d/ install -m 755 jruby-broken $(tmp)/usr/bin/ install -m 755 pyfoo $(tmp)/usr/bin/ install -m 755 py2foo $(tmp)/usr/bin/ # This uses "env" and should trigger script-in-usr-share-doc install -m 755 py2foo $(tmp)/usr/share/doc/scripts/ install -m 755 perlfoo $(tmp)/usr/bin/ install -m 755 rubyfoo $(tmp)/usr/bin/ # This doesn't use "env" but should also trigger script-in-usr-share-doc install -m 755 rubyfoo $(tmp)/usr/share/doc/scripts/ install -m 755 make-foo $(tmp)/usr/bin/ install -m 755 lefty-foo $(tmp)/usr/bin/ install -m 4751 perlfoo $(tmp)/usr/bin/suidperlfoo2 install -m 755 sh-broken $(tmp)/usr/bin/ install -m 4555 suidperlfoo $(tmp)/usr/bin/ install -m 755 tkfoo $(tmp)/usr/bin/ install -m 755 wishfoo $(tmp)/usr/bin/ install -m 644 xsession-test $(tmp)/etc/X11/Xsession.d/ # Permissions here aren't part of what's being tested, but let us exercise # some other errors. install -m 755 perl-bizarre-1 $(tmp)/usr/bin/ install -m 750 perl-bizarre-2 $(tmp)/usr/bin/ install -m 754 perl-bizarre-3 $(tmp)/usr/bin/ install -m 705 guile-bizarre $(tmp)/usr/bin/ # First one should produce a warning; second one shouldn't. install -m 755 gccbug.dpatch $(tmp)/usr/share/scripts/ install -m 755 gccbug.dpatch $(tmp)/usr/src/scripts/ install -m 644 init-skeleton $(tmp)/etc/init.d/skeleton install -m 755 init-no-lsb $(tmp)/etc/init.d/no-lsb install -m 755 init-lsb-broken $(tmp)/etc/init.d/lsb-broken install -m 755 init-lsb-other $(tmp)/etc/init.d/lsb-other install -m 755 phpfoo $(tmp)/usr/share/scripts/ sed 's/php$$/php5/' phpfoo > $(tmp)/usr/share/scripts/php5foo chmod 755 $(tmp)/usr/share/scripts/php5foo echo "#!/usr/bin/perl" >> $(tmp)/usr/share/scripts/foobar.in chmod 644 $(tmp)/usr/share/scripts/foobar.in touch $(tmp)/usr/share/scripts/mono.exe chmod 755 $(tmp)/usr/share/scripts/mono.exe echo "#!/bin/sh" > $(tmp)/usr/share/scripts/foo\$$bar chmod 755 $(tmp)/usr/share/scripts/foo\$$bar echo "#!/bin/sh" > $(tmp)/usr/lib/cgi-bin/cgi-script chmod 755 $(tmp)/usr/lib/cgi-bin/cgi-script echo "#!/bin/sh" > $(tmp)/usr/bin/test.sh chmod 755 $(tmp)/usr/bin/test.sh dh_testroot # dummy to test missing debhelper dependency touch $(tmp)/usr/lib/python2.3/site-packages/test.pyc install -m 644 debian/changelog $(tmp)/usr/share/doc/scripts/changelog.Debian gzip -9 $(tmp)/usr/share/doc/scripts/changelog.Debian install -m 644 debian/copyright $(tmp)/usr/share/doc/scripts/copyright install -m 644 debian/scripts.conffiles $(tmp)/DEBIAN/conffiles install -m 755 debian/preinst $(tmp)/DEBIAN/preinst install -m 755 debian/postinst $(tmp)/DEBIAN/postinst install -m 755 debian/postrm $(tmp)/DEBIAN/postrm touch $(tmp)/DEBIAN/prerm chmod 755 $(tmp)/DEBIAN/prerm dpkg-gencontrol -isp dpkg --build $(tmp) .. binary: binary-arch binary-indep clean: rm -rf debian/files $(tmp) debian/substvars .PHONY: build-arch build-indep build binary-arch binary-indep binary clean lintian-2.5.22ubuntu1/t/tests/legacy-scripts/debian/debian/control0000664000000000000000000000121512310413206022050 0ustar Source: scripts Section: interpreters Priority: extra Maintainer: Lintian Maintainers Uploaders: Jeroen van Wolfelaar , Marc 'HE' Brockschmidt Build-Depends-Indep: python (>= 2.3), python (<< 2.4), dpatch Standards-Version: 3.2.1 Package: scripts Architecture: all Depends: test, ruby1.8, build-essential, libssl0.9.7 Recommends: tk8.4 | wish Description: test lintian's script file checks This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/tests/legacy-scripts/debian/debian/postinst0000664000000000000000000000055512310413206022261 0ustar #!/bin/sh if [ -x "/etc/init.d/lsb-broken" ] ; then update-rc.d lsb-broken defaults >/dev/null fi if [ -x "/etc/init.d/no-lsb" ] ; then update-rc.d no-lsb defaults >/dev/null fi if [ -x "/etc/init.d/skeleton" ] ; then update-rc.d skeleton defaults >/dev/null fi if [ -x "/etc/init.d/lsb-other" ] ; then update-rc.d lsb-other defaults >/dev/null fi lintian-2.5.22ubuntu1/t/tests/legacy-scripts/debian/debian/postrm0000664000000000000000000000040512310413206021714 0ustar #!/bin/sh -e if [ "$1" = purge ] ; then update-rc.d lsb-broken remove >/dev/null update-rc.d no-lsb remove >/dev/null update-rc.d skeleton remove >/dev/null update-rc.d lsb-other remove >/dev/null update-rc.d lsb-other remove >/dev/null fi lintian-2.5.22ubuntu1/t/tests/legacy-scripts/debian/debian/watch0000664000000000000000000000035012310413206021475 0ustar # watch file with upstream version mangling version=2 opts="uversionmangle=s/$/ds/" \ http://qa.debian.org/watch/sf.php?project=foo scripts\.([\d.]+)\.tar\.gz debian uupdate version=3 http://ftp.sf.net/foo/foo_bar(.+)\.Z 5 uupdatelintian-2.5.22ubuntu1/t/tests/legacy-scripts/debian/debian/scripts.conffiles0000664000000000000000000000022012310413206024021 0ustar /etc/init.d/lsb-broken /etc/init.d/lsb-other /etc/init.d/no-lsb /etc/X11/Xsession.d/xsession-test /etc/csh/login.d/csh-foo /etc/fish.d/fish-foo lintian-2.5.22ubuntu1/t/tests/legacy-scripts/debian/debian/patches/0000775000000000000000000000000012310413206022075 5ustar ././@LongLink0000644000000000000000000000015500000000000011604 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/legacy-scripts/debian/debian/patches/04_i_dont_have_a_description_either.patchlintian-2.5.22ubuntu1/t/tests/legacy-scripts/debian/debian/patches/04_i_dont_have_a_description_eith0000664000000000000000000000034112310413206030514 0ustar #! /bin/sh /usr/share/dpatch/dpatch-run ## 04_i_dont_have_a_description_either.patch by Adam D. Barratt ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: @DPATCH@ lintian-2.5.22ubuntu1/t/tests/legacy-scripts/debian/debian/patches/00list.sparc0000664000000000000000000000006412310413206024242 0ustar 01_some_other_patch_thats_not_in_the_package.dpatch ././@LongLink0000644000000000000000000000014600000000000011604 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/legacy-scripts/debian/debian/patches/03_specified_without_dpatch.dpatchlintian-2.5.22ubuntu1/t/tests/legacy-scripts/debian/debian/patches/03_specified_without_dpatch.dpatc0000664000000000000000000000024712310413206030460 0ustar #! /bin/sh /usr/share/dpatch/dpatch-run ## All lines beginning with `## DP:' are a description of the patch. ## DP: Listed in 00list without .dpatch suffix. @DPATCH@ lintian-2.5.22ubuntu1/t/tests/legacy-scripts/debian/debian/patches/00list0000664000000000000000000000037012310413206023133 0ustar 01_not_here_right_now.dpatch # some comment /* some more elaborate comment which needs DPATCH_OPTION_CPP=1 */02_i_dont_have_a_description.patch 03_specified_without_dpatch // and again a comment 04_i_dont_have_a_description_either.patch ././@LongLink0000644000000000000000000000014600000000000011604 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/legacy-scripts/debian/debian/patches/02_i_dont_have_a_description.patchlintian-2.5.22ubuntu1/t/tests/legacy-scripts/debian/debian/patches/02_i_dont_have_a_description.patc0000664000000000000000000000040112310413206030424 0ustar #! /bin/sh /usr/share/dpatch/dpatch-run ## 02_i_dont_have_a_description.patch.dpatch by Marc 'HE' Brockschmidt > ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: No description. @DPATCH@ lintian-2.5.22ubuntu1/t/tests/legacy-scripts/debian/debian/patches/00options0000664000000000000000000000002412310413206023647 0ustar DPATCH_OPTION_CPP=1 lintian-2.5.22ubuntu1/t/tests/legacy-scripts/debian/debian/preinst0000664000000000000000000000026312310413206022056 0ustar #!/bin/sh set -e set -x # # Some comments here # # This serves as an example of an "empty" script, so # please do not add any real code here, thank you :) #DEBHELPER# exit 0 lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/0000775000000000000000000000000012314366614017300 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/tags0000664000000000000000000001247112310413206020150 0ustar E: cruft-gfdl-invariants source: license-problem-gfdl-invariants src/autoconf.texi invariant part is: with no invariant sections, with the front-cover texts being a gnu manual, and with the back-cover texts as in (a) below E: cruft-gfdl-invariants source: license-problem-gfdl-invariants src/frontback.html invariant part is: with the invariant sections being funding free software the front-cover texts being (a) (see below), and with the back-cover texts being (b) (see below) E: cruft-gfdl-invariants source: license-problem-gfdl-invariants src/frontback.texi invariant part is: with no invariant sections, with the front-cover texts being a debian manual , and with the back-cover texts as in (a) below E: cruft-gfdl-invariants source: license-problem-gfdl-invariants src/invariant.txt invariant part is: with the invariant sections being just gnu manifesto with no front-cover texts, and with no back-cover texts E: cruft-gfdl-invariants source: license-problem-gfdl-invariants src/oldmanpagesgfdlproblem.1 invariant part is: with the invariant sections being (l gnu general public license (r and (l funding free software (r the front-cover texts being (a) (see below), and with the back-cover texts being (b) (see below) I: cruft-gfdl-invariants source: license-problem-gfdl-invariants-empty src/empty.texi I: cruft-gfdl-invariants source: license-problem-gfdl-invariants-empty src/emptybis.texi P: cruft-gfdl-invariants source: license-problem-gfdl-non-official-text src/oldfalsepositive/comments.po invariant part is: with no invariant sections, with no front-cover texts, and with no back-cover P: cruft-gfdl-invariants source: license-problem-gfdl-non-official-text src/oldfalsepositive/findsutilsokinlinenewline.c invariant part is: with no invariant sections, with no front-cover texts, and with no back-cover texts P: cruft-gfdl-invariants source: license-problem-gfdl-non-official-text src/oldfalsepositive/findutilsok.c invariant part is: with no invariant sections, with no front-cover texts, and with no back-cover texts P: cruft-gfdl-invariants source: license-problem-gfdl-non-official-text src/oldfalsepositive/gfdltexcomments.tex invariant part is: with no invariant sections, with no front-cover texts, and with no back-cover texts P: cruft-gfdl-invariants source: license-problem-gfdl-non-official-text src/oldfalsepositive/gnashfalsepositive.html invariant part is: with no invariant sections , with no front-cover texts , and with no back-cover texts P: cruft-gfdl-invariants source: license-problem-gfdl-non-official-text src/oldfalsepositive/gnashfalsepositive.info invariant part is: with noinvariant sections , with no front-cover texts , and with no back-cover texts P: cruft-gfdl-invariants source: license-problem-gfdl-non-official-text src/oldfalsepositive/gnashfalsepositive.xml invariant part is: with no invariant sections , with no front-cover texts , and with no back-cover texts P: cruft-gfdl-invariants source: license-problem-gfdl-non-official-text src/oldfalsepositive/hyphen-used-as-minus-sign.diff invariant part is: with no invariant sections, with no front-cover texts, and with no back-cover texts P: cruft-gfdl-invariants source: license-problem-gfdl-non-official-text src/oldfalsepositive/libnss-pgsql.xml invariant part is: there are no invariant sections P: cruft-gfdl-invariants source: license-problem-gfdl-non-official-text src/oldfalsepositive/lilypond.texi invariant part is: with no invariant sections P: cruft-gfdl-invariants source: license-problem-gfdl-non-official-text src/oldfalsepositive/mailutils.texi invariant part is: with no invariant sections, no front-cover, and no back-cover texts P: cruft-gfdl-invariants source: license-problem-gfdl-non-official-text src/oldfalsepositive/make-stds.texi invariant part is: with no invariant sections, with no front-cover texts, and with no back-cover texts P: cruft-gfdl-invariants source: license-problem-gfdl-non-official-text src/oldfalsepositive/normalbkchem.texi invariant part is: no invariant sections, no front-cover texts, no back-cover texts P: cruft-gfdl-invariants source: license-problem-gfdl-non-official-text src/oldfalsepositive/opentoken.txt invariant part is: with no invariant sections, front-cover or back-cover texts P: cruft-gfdl-invariants source: license-problem-gfdl-non-official-text src/oldfalsepositive/parsewiki.txt invariant part is: without any invariant sections P: cruft-gfdl-invariants source: license-problem-gfdl-non-official-text src/oldfalsepositive/partedvariant.txt invariant part is: with the no invariant sections, with the no front-cover texts, and with no back-cover texts P: cruft-gfdl-invariants source: license-problem-gfdl-non-official-text src/oldfalsepositive/patch-c0.diff invariant part is: with no invariant sections, with no front-cover texts, and with no back-cover texts P: cruft-gfdl-invariants source: license-problem-gfdl-non-official-text src/oldfalsepositive/texignu.texi invariant part is: with no invariant sections, with no front-cover texts and with no back-cover texts P: cruft-gfdl-invariants source: license-problem-gfdl-non-official-text src/oldfalsepositive/variantdictfold.txt invariant part is: with no invariant sections, front- or back-cover texts P: cruft-gfdl-invariants source: license-problem-gfdl-non-official-text src/oldfalsepositive/zeroisnotplural.texi invariant part is: with no invariant section, no front-cover text and no back-cover text lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/desc0000664000000000000000000000042312314366614020140 0ustar Testname: cruft-gfdl-invariants Sequence: 6000 Version: 1.0 Description: Check for GFDL invariants sections Options: -I -E --pedantic Skeleton: pedantic Test-For: license-problem-gfdl-invariants license-problem-gfdl-invariants-empty license-problem-gfdl-non-official-text lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/0000775000000000000000000000000012310413144020505 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/0000775000000000000000000000000012310413144021274 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/frontback.texi0000664000000000000000000000065112310413144024142 0ustar Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with the Front-Cover Texts being ``A Debian Manual'', and with the Back-Cover Texts as in (a) below. A copy of the license is included in the section entitled ``GNU Free Documentation License''. lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/autoconf.texi0000664000000000000000000000123412310413144024005 0ustar Permission is granted to copy, distribute and/or modify this document under the terms of the @acronym{GNU} Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with the Front-Cover texts being ``A @acronym{GNU} Manual,'' and with the Back-Cover Texts as in (a) below. A copy of the license is included in the section entitled ``@acronym{GNU} Free Documentation License.'' (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and modify this @acronym{GNU} manual. Buying copies from the @acronym{FSF} supports it in developing @acronym{GNU} and promoting software freedom.'' lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/0000775000000000000000000000000012313535324024660 5ustar ././@LongLink0000644000000000000000000000014700000000000011605 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/normalhtmlcomment.htmllintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/normalhtmlcomment.ht0000664000000000000000000000061612310413206030747 0ustar lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/patch-c0.diff0000664000000000000000000000166012310413144027104 0ustar *** make-stds.texi 2013-02-17 21:44:05.485250349 +0100 --- normal.texi 2012-12-20 21:23:22.829397718 +0100 *************** *** 1,7 **** ! @c Permission is granted to copy, distribute and/or modify this document ! @c under the terms of the GNU Free Documentation License, Version 1.1 ! @c or any later version published by the Free Software Foundation; ! @c with no Invariant Sections, with no ! @c Front-Cover Texts, and with no Back-Cover Texts. ! @c A copy of the license is included in the section entitled ``GNU ! @c Free Documentation License''. --- 1,6 ---- ! Permission is granted to copy, distribute and/or modify this ! document under the terms of the GNU Free Documentation License, ! version 1.3 or any later version published by the Free Software ! Foundation; with no Invariant Sections, no Front-Cover Texts and ! no Back-Cover Texts. A copy of the license is included in the ! section entitled "GNU Free Documentation License". lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/normalmancomment.txt0000664000000000000000000000062312310413206030760 0ustar .\" manual page for blaze, a command wrapper for BlazeBlogger .\" .\" Permission is granted to copy, distribute and/or modify this document .\" under the terms of the GNU Free Documentation License, Version 1.3 or .\" any later version published by the Free Software Foundation; with no .\" Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. .\" A copy of the license is included below.././@LongLink0000644000000000000000000000015000000000000011577 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/gnashfalsepositive.htmllintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/gnashfalsepositive.h0000664000000000000000000000131012310413144030712 0ustar

Copyright 2008, Free Software Foundation.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with noInvariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/variantdictfold.txt0000664000000000000000000000056112310413144030570 0ustar This is ok Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, Front- or Back-Cover Texts. A copy of the license is included in the section entitled "{GNU Free Documentation License}". lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/zeroisnotplural.texi0000664000000000000000000000055512310413144031024 0ustar Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, version 1.3 or any later version published by the Free Software Foundation; with no Invariant Section, no Front-Cover Text and no Back-Cover Text. A copy of the license is included in the section entitled "GNU Free Documentation License". lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/comments.po0000664000000000000000000000072512310413206027040 0ustar # French translation for SANE backend options # # Permission is granted to copy, distribute and/or modify this document # under the terms of the GNU Free Documentation License, Version 1.1 # or any later version published by the Free Software Foundation; # with no Invariant Sections, with no Front-Cover Texts, and with # no Back-Cover. # A copy of the license is included in the section entitled "GNU # Free Documentation License". lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/findutilsok.c0000664000000000000000000000130112310413144027342 0ustar /* false positive from findutils */ static const char *copy_para[]= { "Copyright (C) 1994, 1996, 1998, 2000, 2001, 2003, 2004, 2005, 2006," ,"2007, 2009, 2010, 2011 Free Software Foundation, Inc." ,"" ,"Permission is granted to copy, distribute and/or modify this document" ,"under the terms of the GNU Free Documentation License, Version 1.3 or" ,"any later version published by the Free Software Foundation; with no" ,"Invariant Sections, with no Front-Cover Texts, and with no Back-Cover" ,"Texts. A copy of the license is included in the ``GNU Free" ,"Documentation License'' file as part of this distribution." "" ,NULL }; lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/patch-uR.diff0000664000000000000000000000075412310413144027173 0ustar --- normal.texi 2012-12-20 21:23:22.829397718 +0100 +++ /dev/null 2013-05-15 23:18:30.206386135 +0200 @@ -1,6 +0,0 @@ -Permission is granted to copy, distribute and/or modify this -document under the terms of the GNU Free Documentation License, -version 1.3 or any later version published by the Free Software -Foundation; with no Invariant Sections, no Front-Cover Texts and -no Back-Cover Texts. A copy of the license is included in the -section entitled "GNU Free Documentation License". ././@LongLink0000644000000000000000000000015000000000000011577 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/gfdllicenseexample.texilintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/gfdllicenseexample.t0000664000000000000000000000112312310413144030665 0ustar false positive found in license text: @smallexample @group Copyright (C) @var{year} @var{your name}. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with the Invariant Sections being @var{list their titles}, with the Front-Cover Texts being @var{list}, and with the Back-Cover Texts being @var{list}. A copy of the license is included in the section entitled ``GNU Free Documentation License''. @end group @end smallexample ././@LongLink0000644000000000000000000000015500000000000011604 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/normalwithbreakathyphen.texilintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/normalwithbreakathyp0000664000000000000000000000056212310413144031035 0ustar Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front- Cover Texts and no Back- Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/patch-u.diff0000664000000000000000000000075412310413144027051 0ustar --- /dev/null 2013-05-15 23:18:30.206386135 +0200 +++ normal.texi 2012-12-20 21:23:22.829397718 +0100 @@ -0,0 +1,6 @@ +Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, +version 1.3 or any later version published by the Free Software +Foundation; with no Invariant Sections, no Front-Cover Texts and +no Back-Cover Texts. A copy of the license is included in the +section entitled "GNU Free Documentation License". ././@LongLink0000644000000000000000000000014700000000000011605 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/gnashfalsepositive.xmllintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/gnashfalsepositive.x0000664000000000000000000000132412310413144030737 0ustar

Copyright 2008, Free Software Foundation.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with noInvariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/make-stds.texi0000664000000000000000000000062112310413144027432 0ustar @c Permission is granted to copy, distribute and/or modify this document @c under the terms of the GNU Free Documentation License, Version 1.1 @c or any later version published by the Free Software Foundation; @c with no Invariant Sections, with no @c Front-Cover Texts, and with no Back-Cover Texts. @c A copy of the license is included in the section entitled ``GNU @c Free Documentation License''. lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/citetitle.po0000664000000000000000000000165712310413206027206 0ustar #: C/index.docbook:65(legalnotice/para) msgid "" "Permission is granted to copy, distribute and/or modify this document under " "the terms of the GNU Free Documentation License, " "Version 1.1 or any later version published by the Free Software Foundation " "with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A " "copy of the license is included." msgstr "" "Das vorliegende Dokument kann gemäß den Bedingungen der GNU Free " "Documentation License (GFDL), Version 1.1 oder jeder späteren, von der Free " "Software Foundation veröffentlichten Version ohne unveränderbare Abschnitte " "sowie ohne Texte auf dem vorderen und hinteren Buchdeckel kopiert, verteilt " "und/oder modifiziert werden. Eine Kopie der GFDL finden Sie unter diesem " "Link oder in der mit diesem " "Handbuch gelieferten Datei COPYING-DOCS." lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/normalbkchem.texi0000664000000000000000000000055012310413144030205 0ustar Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, version 1.3 or any later version published by the Free Software Foundation; no Invariant Sections, no Front-Cover Texts, no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/opentoken.txt0000664000000000000000000000054412310413206027415 0ustar Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, Front-Cover or Back-Cover texts. A copy of the license is included in the section entitled ``GNU Free Documentation License''.././@LongLink0000644000000000000000000000015700000000000011606 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/hyphen-used-as-minus-sign.difflintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/hyphen-used-as-minus0000664000000000000000000000660512310413144030565 0ustar Description: hyphen-used-as-minus-sign This manual page seems to contain a hyphen where a minus sign was intended. Author: Ruben Molina Forwarded: no Last-Update: 2011-06-25 Index: kst-2.0.3/src/kst/kst.1.txt =================================================================== --- kst-2.0.3.orig/src/kst/kst.1.txt +++ kst-2.0.3/src/kst/kst.1.txt @@ -47,7 +47,7 @@ kst may be run entirely from within its command line arguments are needed. kst has a powerful wizard for easily setting up new plots. -In the second invocation, kst loads pre-saved plot specifications from the +In the second invocation, kst loads pre\-saved plot specifications from the file .I kstfile and optionally may override some of the settings in that file. @@ -64,7 +64,7 @@ plot all curves in separate plots .TP .B \-a\fR average frames (simple mean) when plotting with -.B -s\fR. +.B \-s\fR. .TP .B \-\-A4\fR use A4 sized paper for printing. Requires @@ -90,7 +90,7 @@ and instead use .B \-f\ STARTFRAME\fR begin plotting at .I STARTFRAME -frames into the data. Set to -1 to start at +frames into the data. Set to \-1 to start at .I NUMFRAMES from the end of the data. .TP @@ -112,7 +112,7 @@ use US Letter sized paper for printing. .B \-n\ NUMFRAMES\fR plot at most .I NUMFRAMES -frames of data. Set to -1 to indicate all of the data. +frames of data. Set to \-1 to indicate all of the data. .TP .B \-P\ PLOTNAME\fR plot all plots in the plot named @@ -145,7 +145,7 @@ frames when plotting. .B \-x\ FIELD\fR use .I FIELD -as the X-axis vector. +as the X\-axis vector. .TP .B \-y\ FIELD\fR plot @@ -158,30 +158,30 @@ plot as an image. .SH EXAMPLES Plot all data in column 2 from data.dat. - kst data.dat -y 2 + kst data.dat \-y 2 Same as above, except only read 20 lines, starting at line 10. - kst data.dat -f 10 -n 20 -y 2 + kst data.dat \-f 10 \-n 20 \-y 2 also read col 1. One plot per curve. - kst data.dat -f 10 -n 20 -y 1 -y 2 + kst data.dat \-f 10 \-n 20 \-y 1 \-y 2 Read col 1 from data2.dat and col 1 from data.dat - kst data.dat -f 10 -n 20 -y 2 data2.dat -y 1 + kst data.dat \-f 10 \-n 20 \-y 2 data2.dat \-y 1 Same as above, except read 40 lines starting at 30 in data2.dat - kst data.dat -f 10 -n 20 -y 2 data2.dat -f 30 -n 40 -y 1 + kst data.dat \-f 10 \-n 20 \-y 2 data2.dat \-f 30 \-n 40 \-y 1 Specify the X vector and error bars: Plot x = col 1 and Y = col 2 and error flags = col 3 from data.dat - kst data.dat -x 1 -e 3 -y 2 + kst data.dat \-x 1 \-e 3 \-y 2 Get the X vector from data1.dat, and the Y vector from data2.dat. - kst data1.dat -x 1 data2.dat -y 1 + kst data1.dat \-x 1 data2.dat \-y 1 Placement: Plot column 2 and column 3 in plot P1 and column 4 in plot P2 - kst data.dat -P P1 -y 2 -y 3 -P P2 -y 4 + kst data.dat \-P P1 \-y 2 \-y 3 \-P P2 \-y 4 .SH BUGS Please report bugs to either the kst mailing list at .I kst@kde.org @@ -198,6 +198,6 @@ Matthew Truch Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no +Invariant Sections, with no Front\-Cover Texts, and with no Back\-Cover Texts. A copy of the license is included in the `COPYING.DOC' file as part of the kst distribution. lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/pipeindent.txt0000664000000000000000000000066212310413144027554 0ustar Some user ident with pipe (|) | Permission is granted to copy, distribute and/or modify this | document under the terms of the GNU Free Documentation License, | version 1.3 or any later version published by the Free Software | Foundation; with no Invariant Sections, no Front-Cover Texts and | no Back-Cover Texts. A copy of the license is included in the | section entitled "GNU Free Documentation License". ././@LongLink0000644000000000000000000000015300000000000011602 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/gfdllicenseexamplesbr.htmllintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/gfdllicenseexamplesb0000664000000000000000000000110412310413144030747 0ustar false positive found in license text:
Copyright (C)  year  your name.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with the
Invariant Sections
being list their titles, with the Front-Cover Texts being list, and with the Back-Cover Texts being list. A copy of the license is included in the section entitled ``GNU Free Documentation License''. lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/maintain.html0000664000000000000000000000231012310413206027331 0ustar

Documentation files should have license notices also. Manuals should use the GNU Free Documentation License. Following is an example of the license notice to use after the copyright line(s) using all the features of the GFDL.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``GNU General Public License'', with the
Front-Cover Texts being ``A GNU Manual'', and with the Back-Cover Texts
as in (a) below.  A copy of the license is included in the section
entitled ``GNU Free Documentation License''.

(a) The FSF's Back-Cover Text is: ``You have the freedom to
copy and modify this GNU manual.  Buying copies from the FSF
supports it in developing GNU and promoting software freedom.''

If the FSF does not publish this manual on paper, then omit the last sentence in (a) that talks about copies from GNU Press. If the FSF is not the copyright holder, then replace ‘FSF’ with the appropriate name.

././@LongLink0000644000000000000000000000014600000000000011604 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/partialtranslation.polintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/partialtranslation.p0000664000000000000000000000152312310413206030744 0ustar För att använda GNU Free Documentation License för ett dokument du har skrivit, inkludera en kopia av licensen [det engelska originalet] i dokumentet och placera följande copyrightklausul omedelbart efter titelsidan:
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of the license is included in the section entitled GNU Free Documentation License.
lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/patch.diff0000664000000000000000000000060212310413144026577 0ustar 0a1,6 > Permission is granted to copy, distribute and/or modify this > document under the terms of the GNU Free Documentation License, > version 1.3 or any later version published by the Free Software > Foundation; with no Invariant Sections, no Front-Cover Texts and > no Back-Cover Texts. A copy of the license is included in the > section entitled "GNU Free Documentation License". lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/parsewiki.txt0000664000000000000000000000044312310413144027410 0ustar Permission is granted to copy, distribute and/or modify this document under \ the terms of the GNU Free Documentation License, Version 1.1 or any later \ version published by the Free Software Foundation; without any Invariant \ Sections. A copy of the license is included in the file GFDL. lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/patch-R.diff0000664000000000000000000000060212310413144026776 0ustar 1,6d0 < Permission is granted to copy, distribute and/or modify this < document under the terms of the GNU Free Documentation License, < version 1.3 or any later version published by the Free Software < Foundation; with no Invariant Sections, no Front-Cover Texts and < no Back-Cover Texts. A copy of the license is included in the < section entitled "GNU Free Documentation License". lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/partedvariant.txt0000664000000000000000000000061612310413144030260 0ustar Parted 2.13 version with strange grammar. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with the no Invariant Sections, with the no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the file, COPYING.DOC. lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/kdoctools/0000775000000000000000000000000012310413144026651 5ustar ././@LongLink0000644000000000000000000000015100000000000011600 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/kdoctools/customization/lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/kdoctools/customizat0000775000000000000000000000000012310413144030774 5ustar ././@LongLink0000644000000000000000000000015400000000000011603 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/kdoctools/customization/ru/lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/kdoctools/customizat0000775000000000000000000000000012310413144030774 5ustar ././@LongLink0000644000000000000000000000016500000000000011605 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/kdoctools/customization/ru/entities/lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/kdoctools/customizat0000775000000000000000000000000012310413144030774 5ustar ././@LongLink0000644000000000000000000000020700000000000011602 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/kdoctools/customization/ru/entities/fdl-notice.docbooklintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/kdoctools/customizat0000664000000000000000000000055412310413144031002 0ustar Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with &FDLInvariantSections;, with &FDLFrontCoverText;, and with &FDLBackCoverText;. A copy of the license is included in . lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/texignu.texi0000664000000000000000000000062012310413206027223 0ustar Permission is granted to copy, distribute and/or modify this document under the terms of the @acronym{GNU} Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover texts and with no Back-Cover Texts. A copy of the license is included in the section entitled ``@acronym{GNU} Free Documentation License.'' ././@LongLink0000644000000000000000000000015000000000000011577 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/gnashfalsepositive.infolintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/gnashfalsepositive.i0000664000000000000000000000124212310413144030717 0ustar To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: Copyright 2008, Free Software Foundation. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, version 1.1 or any later version published by the Free Software Foundation; with noInvariant Sections (*note fdl-invariant::), with no Front-Cover Texts (*note fdl-cover-texts::), and with no Back-Cover Texts (*note fdl-cover-texts::). A copy of the license is included in the section entitled "GNU Free Documentation License". ././@LongLink0000644000000000000000000000014600000000000011604 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/diveintopythonok.htmllintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/diveintopythonok.htm0000664000000000000000000000221412310413144030776 0ustar

Permission is granted to copy, distribute, and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in Appendix G, GNU Free Documentation License.

The example programs in this book are free software; you can redistribute and/or modify them under the terms of the Python license as published by the Python Software Foundation. A copy of the license is included in Appendix H, Python license.

././@LongLink0000644000000000000000000000015400000000000011603 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/findsutilsokinlinenewline.clintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/findsutilsokinlinene0000664000000000000000000000130712310413144031034 0ustar /* false positive from some package */ static const char *copy_para[]= { "Copyright (C) 1994, 1996, 1998, 2000, 2001, 2003, 2004, 2005, 2006," ,"2007, 2009, 2010, 2011 Free Software Foundation, Inc." ,"" ,"Permission is granted to copy, distribute and/or modify this document" ,"under the terms of the GNU Free Documentation License, Version 1.3 or" ,"any later version published by the Free Software Foundation; with no" ,"Invariant\nSections, with no\nFront-Cover Texts,\nand with no Back-Cover" ,"Texts. A copy of the license is included in the ``GNU Free" ,"Documentation License'' file as part of this distribution." "" ,NULL }; ././@LongLink0000644000000000000000000000015000000000000011577 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/gfdllicenseexample.htmllintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/gfdllicenseexample.h0000664000000000000000000000107112310413144030653 0ustar false positive found in license text:
Copyright (C)  year  your name.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with the Invariant Sections being list their titles, with
the Front-Cover Texts being list, and with the Back-Cover Texts
being list.
A copy of the license is included in the section entitled ``GNU Free Documentation License''.

lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/maintain.texi0000664000000000000000000000127712310413144027352 0ustar  Documentation files should have license notices also.  Manuals should
use the GNU Free Documentation License.  Following is an example of the
license notice to use after the copyright line(s) using all the
features of the GFDL.

@smallexample
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``GNU General Public License'', with the
Front-Cover Texts being ``A GNU Manual'', and with the Back-Cover Texts
as in (a) below.  A copy of the license is included in the section
entitled ``GNU Free Documentation License''.
lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/lilypond.texi0000664000000000000000000000050312310413144027373 0ustar  Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.1
or any later version published by the Free Software Foundation;
with no Invariant Sections.
A copy of the license is included in the section entitled ``GNU
Free Documentation License''.
lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/gtk-doc.po0000664000000000000000000000472312310413206026545 0ustar  #: C/fdl-appendix.xml:79(sect1/para)
msgid ""
"A <_:quote-1/> is a named appendix or a front-matter section of the <_:"
"link-2/> that deals exclusively with the relationship of the publishers or "
"authors of the Document to the Document's overall subject (or to related "
"matters) and contains nothing that could fall directly within that overall "
"subject. (For example, if the Document is in part a textbook of mathematics, "
"a Secondary Section may not explain any mathematics.) The relationship could "
"be a matter of historical connection with the subject or with related "
"matters, or of legal, commercial, philosophical, ethical or political "
"position regarding them."
msgstr ""
"Une <_:quote-1/> désigne une annexe au <_:link-2/>, ou toute information "
"indiquant les rapports entre l'auteur ou l'éditeur et le sujet (ou tout "
"autre sujet connexe) du Document, sans toutefois être en rapport direct avec "
"le sujet lui-même (par exemple, si le Document est un manuel de "
"mathématiques, une Section secondaire ne traitera d'aucune notion "
"mathématique). Cette section peut contenir des informations relatives à "
"l'historique du Document, des sources documentaires, des dispositions "
"légales, commerciales, philosophiques, ou des positions éthiques ou "
"politiques susceptibles de concerner le sujet traité."


#: C/fdl-appendix.xml:632(blockquote/para)
#, fuzzy
msgid ""
"Permission is granted to copy, distribute and/or modify this document under "
"the terms of the GNU Free Documentation License, Version 1.1 or any later "
"version published by the Free Software Foundation; with the <_:link-1/> being "
"LIST THEIR TITLES, with the <_:link-2/> being LIST, and with the <_:link-3/> "
"being LIST. A copy of the license is included in the section entitled <_:"
"quote-4/>."
msgstr ""
"Es wird die Erlaubnis gegeben, dieses Dokument zu kopieren, verteilen und/"
"oder zu verändern unter den Bedingungen der GNU Free Documentation License, "
"Version 1.1 oder einer späteren, von der Free Software Foundation "
"veröffentlichten Version; mit den Unveränderlichen Abschnitten. DEREN TITEL AUFGEZÄHLT sind, mit den "
"Vorderseitentexten, die AUFGEZÄHLT "
"sind, und mit den Rückseitentexten, "
"die AUFGEZÄHLT sind. Eine Kopie dieser Lizenz ist in dem Abschnitt enthalten, "
"der mit GNU Free Documentation License betitelt ist."
lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/libnss-pgsql.xml0000664000000000000000000000054612310413144030015 0ustar        
	Permission is granted to copy, distribute and/or modify this document
	under the terms of the GNU Free Documentation License, Version 1.1 or
	any later version published by the Free Software Foundation. There
	are no invariant sections. A copy of the license is included in the
	section entitled "GNU Free Documentation License".
      
lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/mailutils.texi0000664000000000000000000000055412310413144027552 0ustar  Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no
Invariant Sections, no Front-Cover, and no Back-Cover texts.
A copy of the license is included in the section entitled ``GNU Free
Documentation License''.
lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/normal.texi0000664000000000000000000000056012310413144027034 0ustar  Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, no Front-Cover Texts and
no Back-Cover Texts.  A copy of the license is included in the
section entitled "GNU Free Documentation License".
lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/appendix.txt0000664000000000000000000000222012313535324027225 0ustar  ADDENDUM: How to use this License for your documents
====================================================

To use this License in a document you have written, include a copy of
the License in the document and put the following copyright and license
notices just after the title page:

       Copyright (C)  YEAR  YOUR NAME.
       Permission is granted to copy, distribute and/or modify this document
       under the terms of the GNU Free Documentation License, Version 1.3
       or any later version published by the Free Software Foundation;
       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
       Texts.  A copy of the license is included in the section entitled ``GNU
       Free Documentation License''.

   If you have Invariant Sections, Front-Cover Texts and Back-Cover
Texts, replace the "with...Texts."  line with this:

         with the Invariant Sections being LIST THEIR TITLES, with
         the Front-Cover Texts being LIST, and with the Back-Cover Texts
         being LIST.

   If you have Invariant Sections without Cover Texts, or some other
combination of the three, merge those two alternatives to suit the
situation.
lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/gfdltexcomments.tex0000664000000000000000000000061312310413144030575 0ustar  % Permission is granted to copy, distribute and/or modify this document
% under the terms of the GNU Free Documentation License, Version 1.1 or
% any later version published by the Free Software Foundation; with no
% Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
% Texts.  A copy of the license is included in the section entitled
% ``GNU Free Documentation License.''
%
lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldfalsepositive/normal.c0000664000000000000000000000125012310413144026302 0ustar   /*****************************************************************************/
/** \mainpage Cal3D API Reference
  * 
*

* Permission is granted to copy, distribute and/or modify this document * under the terms of the GNU Free Documentation License, Version 1.1 or * any later version published by the Free Software Foundation; * with no Invariant Sections, no Front-Cover Texts and * no Back-Cover Texts; * A copy of the license is included in the section entitled * \link license "GNU Free Documentation License" \endlink . *

*****************************************************************************/ lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/emptybis.texi0000664000000000000000000000044612310413144024027 0ustar Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, version 1.3 or any later version published by the Free Software Foundation. A copy of the license is included in the section entitled "GNU Free Documentation License". lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/oldmanpagesgfdlproblem.10000664000000000000000000000101512310413144026063 0ustar .\" .\" Manpage example .\" .PP Permission is granted to copy, distribute and/or modify this document under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with the Invariant Sections being \*(L"\s-1GNU\s0 General Public License\*(R" and \*(L"Funding Free Software\*(R", the Front-Cover texts being (a) (see below), and with the Back-Cover Texts being (b) (see below). A copy of the license is included in the \fIgfdl\fR\|(7) man page. .PP lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/empty.texi0000664000000000000000000000044512310413144023330 0ustar Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, version 1.3 or any later version published by the Free Software Foundation. A copy of the license is included in the section entitled "GNU Free Documentation License". lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/frontback.html0000664000000000000000000000345012310413144024135 0ustar Some title This is

Copyright © 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
2010, 2011, 2012

 

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with the Invariant Sections being “Funding Free Software”, the Front-Cover Texts being (a) (see below), and with the Back-Cover Texts being (b) (see below). A copy of the license is included in the section entitled “GNU Free Documentation License”.

(a) The Front-Cover Text is:

A GNU Manual

(b) The Back-Cover Text is:

You have freedom to copy and modify this GNU Manual, like GNU software. Copies published raises funds.


lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-invariants/debian/src/invariant.txt0000664000000000000000000000062712310413144024035 0ustar Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with the Invariant Sections being just "GNU Manifesto", with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". lintian-2.5.22ubuntu1/t/tests/runtests-arch-amd64/0000775000000000000000000000000012077065715016606 5ustar lintian-2.5.22ubuntu1/t/tests/runtests-arch-amd64/tags0000664000000000000000000000000012077065715017455 0ustar lintian-2.5.22ubuntu1/t/tests/runtests-arch-amd64/desc0000664000000000000000000000021412077065715017444 0ustar Testname: runtests-arch-amd64 Sequence: 0700 Version: 1.0 Architecture: amd64 Description: Test a package that is supposedly amd64-specific lintian-2.5.22ubuntu1/t/tests/runtests-arch-amd64/debian/0000775000000000000000000000000012077065715020030 5ustar lintian-2.5.22ubuntu1/t/tests/runtests-arch-amd64/debian/dummy0000664000000000000000000000001312077065715021100 0ustar dummy file lintian-2.5.22ubuntu1/t/tests/runtests-arch-amd64/debian/debian/0000775000000000000000000000000012077065715021252 5ustar lintian-2.5.22ubuntu1/t/tests/runtests-arch-amd64/debian/debian/install0000664000000000000000000000002712077065715022642 0ustar dummy usr/lib/package/ lintian-2.5.22ubuntu1/t/tests/scripts-diversions/0000775000000000000000000000000012310413146016726 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-diversions/tags0000664000000000000000000000120312310413146017603 0ustar E: scripts-diversions: diversion-for-unknown-file usr/share/scripts/another-file preinst:16 E: scripts-diversions: diversion-for-unknown-file usr/share/scripts/no-such-file preinst:32 E: scripts-diversions: diversion-for-unknown-file usr/share/scripts/other-file preinst:12 E: scripts-diversions: orphaned-diversion usr/share/scripts/another-file preinst E: scripts-diversions: orphaned-diversion usr/share/scripts/orphan preinst E: scripts-diversions: package-uses-local-diversion postrm:31 E: scripts-diversions: package-uses-local-diversion preinst:12 E: scripts-diversions: remove-of-unknown-diversion usr/share/scripts/old-file postrm:12 lintian-2.5.22ubuntu1/t/tests/scripts-diversions/desc0000664000000000000000000000032712077065715017610 0ustar Testname: scripts-diversions Sequence: 6000 Version: 1.0 Description: Tests of dpkg-divert checks Test-For: diversion-for-unknown-file package-uses-local-diversion orphaned-diversion remove-of-unknown-diversion lintian-2.5.22ubuntu1/t/tests/scripts-diversions/debian/0000775000000000000000000000000012077065715020167 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-diversions/debian/foo0000775000000000000000000000004112077065715020673 0ustar #!/bin/sh echo 'Fake foo binary' lintian-2.5.22ubuntu1/t/tests/scripts-diversions/debian/file.10000664000000000000000000000003612077065715021167 0ustar Some file ending in a number. lintian-2.5.22ubuntu1/t/tests/scripts-diversions/debian/some-file0000664000000000000000000000007612077065715021775 0ustar Some random file that we're going to install after diverting. lintian-2.5.22ubuntu1/t/tests/scripts-diversions/debian/orphan0000664000000000000000000000006712077065715021404 0ustar Some file that we're going to divert and not clean up. lintian-2.5.22ubuntu1/t/tests/scripts-diversions/debian/debian/0000775000000000000000000000000012310413146021372 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-diversions/debian/debian/install0000664000000000000000000000016412077065715023003 0ustar orphan usr/share/scripts some-file usr/share/scripts file.1 usr/share/scripts foo usr/bin foo.1p usr/share/man/man1 lintian-2.5.22ubuntu1/t/tests/scripts-diversions/debian/debian/postinst0000664000000000000000000000053712077065715023224 0ustar #!/bin/sh set -e # This isn't a diversion we create anywhere, but we're allowed to do this in # postinst in case we're cleaning up after a previous version. if [ configure = "$1" ] && dpkg-divert --list '*old-file' >/dev/null ; then dpkg-divert --package scripts-diversions --remove --rename \ /usr/share/scripts/old-file fi #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/scripts-diversions/debian/debian/postrm0000664000000000000000000000231412077065715022660 0ustar #!/bin/sh set -e if [ remove = "$1" ]; then # Clean up the correct diversion from preinst. dpkg-divert --package scripts-diversions --remove --rename \ --divert /usr/share/scripts/some-file.real \ /usr/share/scripts/some-file # Clean up some other diversion that we didn't create. dpkg-divert --package scripts-diversions --remove --rename \ /usr/share/scripts/old-file # Clean up a diversion we did create for a non-existent file. dpkg-divert --remove --package scripts-diversions --rename \ --divert /usr/share/scripts/no-such-file.real \ /usr/share/scripts/no-such-file # Regression test for diversions ending in numbers (Bug#534942) dpkg-divert --remove --package scripts-diversions \ --divert /usr/share/scripts/file.1.real \ /usr/share/scripts/file.1 > /dev/null # Clean up the diversion for a binary man page. dpkg-divert --remove --package scripts-diversions \ --divert /usr/share/man/man1/foo.real.1.gz \ /usr/share/man/man1/foo.1.gz # Clean up a local diversion. dpkg-divert --local --remove --divert /usr/share/scripts/other-file.real \ /usr/share/scripts/other-file fi #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/scripts-diversions/debian/debian/preinst0000664000000000000000000000413612310413146023005 0ustar #!/bin/sh set -e if [ install = "$1" ]; then # This is a correct diversion. dpkg-divert --package scripts-diversions --add --rename \ --divert /usr/share/scripts/some-file.real \ /usr/share/scripts/some-file # This is broken -- can't use local. dpkg-divert --local --add --divert /usr/share/scripts/other-file.real \ /usr/share/scripts/other-file # This was broken until dpkg 1.16.0 (Wheezy), see #679132 dpkg-divert --add --divert /usr/share/scripts/another-file.real \ /usr/share/scripts/another-file # This is also correct, but we're not going to clean it up. While we're # at it, make sure we strip trailing redirections. dpkg-divert --package scripts-diversions --add --rename \ --divert /usr/share/scripts/orphan.real \ /usr/share/scripts/orphan > /dev/null # The same one again, but with a different redirection. dpkg-divert --package scripts-diversions --add --rename \ --divert /usr/share/scripts/orphan.real \ /usr/share/scripts/orphan 2> /dev/null # This is broken because the file doesn't exist. dpkg-divert --add --package scripts-diversions --rename \ --divert /usr/share/scripts/no-such-file.real \ /usr/share/scripts/no-such-file # Regression test for diversions ending in numbers (Bug#534942) dpkg-divert --add --rename --package scripts-diversions \ --divert /usr/share/scripts/file.1.real \ /usr/share/scripts/file.1 > /dev/null # We're allowed to divert a man page to install another man page in a # different section but the same numeric section. (Bug#543781) dpkg-divert --add --rename --package scripts-diversions \ --divert /usr/share/man/man1/foo.real.1.gz \ /usr/share/man/man1/foo.1.gz fi # This isn't a diversion we create anywhere, but we're allowed to do this in # preinst in case we're cleaning up after a previous version. if [ upgrade = "$1" ] && dpkg-divert --list '*old-file' >/dev/null ; then dpkg-divert --package scripts-diversions --remove --rename \ /usr/share/scripts/old-file fi #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/scripts-diversions/debian/foo.1p0000664000000000000000000000006512077065715021215 0ustar .TH foo 1p .SH NAME foo \- a fake man page for a foo lintian-2.5.22ubuntu1/t/tests/binaries-spelling/0000775000000000000000000000000012077065714016501 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-spelling/tags0000664000000000000000000000033712077065714017365 0ustar I: binaries-spelling: spelling-error-in-binary usr/bin/basic exprimental experimental I: binaries-spelling: spelling-error-in-binary usr/bin/basic speling spelling W: binaries-spelling: binary-without-manpage usr/bin/basic lintian-2.5.22ubuntu1/t/tests/binaries-spelling/desc0000664000000000000000000000022612077065714017342 0ustar Testname: binaries-spelling Sequence: 6000 Version: 1.0 Description: Spelling errors in binaries Architecture: any Test-For: spelling-error-in-binary lintian-2.5.22ubuntu1/t/tests/binaries-spelling/debian/0000775000000000000000000000000012310413144017703 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-spelling/debian/Makefile0000664000000000000000000000030312077065714021357 0ustar all: gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o basic basic.c install: install -d $(DESTDIR)/usr/bin install -m 755 -c basic $(DESTDIR)/usr/bin/basic clean distclean: rm -f basic check test: lintian-2.5.22ubuntu1/t/tests/binaries-spelling/debian/basic.c0000664000000000000000000000047112310413144021132 0ustar #include #include static void hardening_trigger(char *p, int i, void (*f)(char *)) { char test[10]; memcpy(test, p, i); f(test); printf("%s", test); } int main(void) { printf("I iz an exprimental speling error!\n"); hardening_trigger(NULL, 0, NULL); return 0; } lintian-2.5.22ubuntu1/t/tests/java-jars/0000775000000000000000000000000012310413146014732 5ustar lintian-2.5.22ubuntu1/t/tests/java-jars/upstream/0000775000000000000000000000000012077065715016611 5ustar lintian-2.5.22ubuntu1/t/tests/java-jars/upstream/src/0000775000000000000000000000000012077065715017400 5ustar lintian-2.5.22ubuntu1/t/tests/java-jars/upstream/src/org/0000775000000000000000000000000012077065715020167 5ustar lintian-2.5.22ubuntu1/t/tests/java-jars/upstream/src/org/debian/0000775000000000000000000000000012077065715021411 5ustar lintian-2.5.22ubuntu1/t/tests/java-jars/upstream/src/org/debian/lintian/0000775000000000000000000000000012077065715023047 5ustar lintian-2.5.22ubuntu1/t/tests/java-jars/upstream/src/org/debian/lintian/TestA.java0000664000000000000000000000017412077065715024734 0ustar package org.debian.lintian; /** A neat empty useless class. */ public class TestA { // An empty class should do. };lintian-2.5.22ubuntu1/t/tests/java-jars/tags0000664000000000000000000000101712310413146015612 0ustar E: libtesta-java: executable-jar-without-main-class usr/bin/testc.jar E: libtesta-java: missing-dep-on-jarwrapper I: libmanifestless-java: missing-manifest usr/share/java/manifestless-1.0.jar I: libtestc-java: javalib-but-no-public-jars W: libcodeless-java: codeless-jar usr/share/java/codeless-1.0.jar W: libtesta-java: binary-without-manpage usr/bin/testc.jar W: libtesta-java: jar-not-in-usr-share usr/lib/testb.jar W: unparsable: zip-parse-error usr/share/unparsable/unparsable.jar: format error: can't find EOCD signature lintian-2.5.22ubuntu1/t/tests/java-jars/desc0000664000000000000000000000052712310413146015577 0ustar Testname: java-jars Type: non-native Sequence: 6000 Version: 1.0-1 Description: Various checks about JAR files Author: Vincent Fourmond Section: java Test-For: codeless-jar executable-jar-without-main-class jar-not-in-usr-share javalib-but-no-public-jars missing-dep-on-jarwrapper missing-manifest zip-parse-error lintian-2.5.22ubuntu1/t/tests/java-jars/debian/0000775000000000000000000000000012077065715016173 5ustar lintian-2.5.22ubuntu1/t/tests/java-jars/debian/debian/0000775000000000000000000000000012310413206017373 5ustar lintian-2.5.22ubuntu1/t/tests/java-jars/debian/debian/clean0000664000000000000000000000000612310413146020377 0ustar *.jar lintian-2.5.22ubuntu1/t/tests/java-jars/debian/debian/control.in0000664000000000000000000000311712310413206021405 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), javahelper, default-jdk Package: libtesta-java Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} - part A This is a test package designed to test various aspects of the java-related QA code in lintian. First part. . This package should not be installed. Package: libcodeless-java Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} - codeless This is a test package designed to test various aspects of the java-related QA code in lintian. This package should not be installed. . This package tests for codeless jars. Package: libmanifestless-java Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} - manifestless This is a test package designed to test various aspects of the java-related QA code in lintian. This package should not be installed. . This package tests for mainifest-less code jars. Package: libtestc-java Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} - part C This is a test package designed to test various aspects of the java-related QA code in lintian. Third part. . This package should not be installed. Package: unparsable Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} - unparable This is a test package designed to test various aspects of the java-related QA code in lintian. The unparsable part. . This package should not be installed. lintian-2.5.22ubuntu1/t/tests/java-jars/debian/debian/libtestc-java.install0000664000000000000000000000004112077065715023530 0ustar testa.jar usr/share/private-jars lintian-2.5.22ubuntu1/t/tests/java-jars/debian/debian/libtesta-java.jlibs0000664000000000000000000000001212077065715023161 0ustar testa.jar lintian-2.5.22ubuntu1/t/tests/java-jars/debian/debian/libcodeless-java.jlibs0000664000000000000000000000001512077065715023645 0ustar codeless.jar lintian-2.5.22ubuntu1/t/tests/java-jars/debian/debian/rules0000775000000000000000000000065112310413146020460 0ustar #!/usr/bin/make -f %: dh $@ --with javahelper override_jh_build: jh_build --javacopts='-target 1.4' --javacopts='-source 1.4' unzip testa.jar zip -r codeless.jar META-INF/ zip -r manifestless.jar org/ printf "PK\003\004Watch the fireworks begin :>" > unparsable.jar override_jh_manifest override_jh_depends: # Skip - it chokes on "unparsable.jar" and we don't need it override_dh_auto_clean: rm -fr META-INF/ org/ lintian-2.5.22ubuntu1/t/tests/java-jars/debian/debian/unparsable.install0000664000000000000000000000004412310413146023120 0ustar unparsable.jar usr/share/unparsable lintian-2.5.22ubuntu1/t/tests/java-jars/debian/debian/libtesta-java.install0000664000000000000000000000004512077065715023532 0ustar testb.jar usr/lib/ testc.jar usr/bin lintian-2.5.22ubuntu1/t/tests/java-jars/debian/debian/javabuild0000664000000000000000000000007012077065715021276 0ustar testa.jar src testb.jar src testc.jar src testd.jar src lintian-2.5.22ubuntu1/t/tests/java-jars/debian/debian/libmanifestless-java.jlibs0000664000000000000000000000002112077065715024536 0ustar manifestless.jar lintian-2.5.22ubuntu1/t/tests/standards-version-invalid/0000775000000000000000000000000012077065716020166 5ustar lintian-2.5.22ubuntu1/t/tests/standards-version-invalid/tags0000664000000000000000000000010312077065716021041 0ustar E: standards-version-invalid source: invalid-standards-version 3.8 lintian-2.5.22ubuntu1/t/tests/standards-version-invalid/desc0000664000000000000000000000022012077065716021021 0ustar Testname: standards-version-invalid Sequence: 6000 Version: 1.0 Description: Test invalid standards version Test-For: invalid-standards-version lintian-2.5.22ubuntu1/t/tests/standards-version-invalid/debian/0000775000000000000000000000000012077065716021410 5ustar lintian-2.5.22ubuntu1/t/tests/standards-version-invalid/debian/debian/0000775000000000000000000000000012310413206022607 5ustar lintian-2.5.22ubuntu1/t/tests/standards-version-invalid/debian/debian/control.in0000664000000000000000000000074412310413206024624 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: 3.8 Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/infofiles-general/0000775000000000000000000000000012310413146016445 5ustar lintian-2.5.22ubuntu1/t/tests/infofiles-general/tags0000664000000000000000000000151512310413146017330 0ustar E: infofiles-general: info-document-missing-dir-entry usr/share/info/bar.info.gz E: infofiles-general: info-document-missing-dir-entry usr/share/info/bar.newinfo.gz E: infofiles-general: info-document-missing-dir-section usr/share/info/bar.info.gz E: infofiles-general: info-document-missing-dir-section usr/share/info/bar.newinfo.gz E: infofiles-general: info-document-not-compressed usr/share/info/foo E: infofiles-general: info-document-not-compressed-with-gzip usr/share/info/foo-nogz.gz E: infofiles-general: info-document-not-compressed-with-max-compression usr/share/info/foo-nomax.gz W: infofiles-general: gz-file-not-gzip usr/share/info/foo-nogz.gz W: infofiles-general: info-document-has-wrong-extension usr/share/info/bar.newinfo.gz W: infofiles-general: info-document-missing-image-file usr/share/info/w-image.info.gz some-image.png lintian-2.5.22ubuntu1/t/tests/infofiles-general/desc0000664000000000000000000000057512310413146017315 0ustar Testname: infofiles-general Sequence: 6000 Version: 1.0 Description: Checks of info files Test-For: info-document-has-wrong-extension info-document-missing-dir-entry info-document-missing-dir-section info-document-missing-image-file info-document-not-compressed info-document-not-compressed-with-gzip info-document-not-compressed-with-max-compression References: Bug#534640 lintian-2.5.22ubuntu1/t/tests/infofiles-general/debian/0000775000000000000000000000000012310413146017667 5ustar lintian-2.5.22ubuntu1/t/tests/infofiles-general/debian/bar.info0000664000000000000000000000012712077065715021327 0ustar This is bar.info, produced by hand from thin air, without the required directory bits. lintian-2.5.22ubuntu1/t/tests/infofiles-general/debian/w-image.info0000664000000000000000000000032112310413146022066 0ustar This is w-image.info, produced by hand from thin air. INFO-DIR-SECTION Lintian START-INFO-DIR-ENTRY * w-image: (w-image). A miracle occurs. END-INFO-DIR-ENTRY [image src="some-image.png"] lintian-2.5.22ubuntu1/t/tests/infofiles-general/debian/foo.info0000664000000000000000000000024612077065715021350 0ustar This is foo.info, produced by hand from thin air. INFO-DIR-SECTION Lintian START-INFO-DIR-ENTRY * foo: (foo). A miracle occurs. END-INFO-DIR-ENTRY lintian-2.5.22ubuntu1/t/tests/infofiles-general/debian/debian/0000775000000000000000000000000012310413146021111 5ustar lintian-2.5.22ubuntu1/t/tests/infofiles-general/debian/debian/rules0000775000000000000000000000153212310413146022172 0ustar #!/usr/bin/make -f tmp = $(CURDIR)/debian/$(shell dh_listpackages) %: dh $@ override_dh_auto_install: install -d $(tmp)/usr/share/info install -m 644 foo.info $(tmp)/usr/share/info/foo.info gzip -9 $(tmp)/usr/share/info/foo.info install -m 644 foo.info $(tmp)/usr/share/info/foo install -m 644 foo.info $(tmp)/usr/share/info/foo-nogz.gz install -m 644 foo.info $(tmp)/usr/share/info/foo-nomax gzip -1 $(tmp)/usr/share/info/foo-nomax install -m 644 bar.info $(tmp)/usr/share/info/bar.info gzip -9 $(tmp)/usr/share/info/bar.info install -m 644 bar.info $(tmp)/usr/share/info/bar.newinfo gzip -9 $(tmp)/usr/share/info/bar.newinfo install -m 644 w-image.info $(tmp)/usr/share/info/w-image.info gzip -9 $(tmp)/usr/share/info/w-image.info override_dh_installinfo: override_dh_compress: gzip -9 $(tmp)/usr/share/doc/infofiles-general/changelog lintian-2.5.22ubuntu1/t/tests/scripts-ancient-dpkg/0000775000000000000000000000000012310413206017102 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-ancient-dpkg/tags0000664000000000000000000000030312310413206017757 0ustar W: scripts-ancient-dpkg: maintainer-script-should-not-use-ancient-dpkg-epoch-check postinst:4 W: scripts-ancient-dpkg: maintainer-script-should-not-use-ancient-dpkg-multi-conrep-check postinst:8 lintian-2.5.22ubuntu1/t/tests/scripts-ancient-dpkg/desc0000664000000000000000000000035512310413206017746 0ustar Testname: scripts-ancient-dpkg Sequence: 6000 Version: 1.0 Description: Tests for ancient dpkg stuff Test-For: maintainer-script-should-not-use-ancient-dpkg-epoch-check maintainer-script-should-not-use-ancient-dpkg-multi-conrep-check lintian-2.5.22ubuntu1/t/tests/scripts-ancient-dpkg/debian/0000775000000000000000000000000012077065715020346 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-ancient-dpkg/debian/debian/0000775000000000000000000000000012077065715021570 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-ancient-dpkg/debian/debian/postinst0000664000000000000000000000021312077065715023372 0ustar #!/bin/sh set -e if dpkg --assert-working-epoch ; then echo Yay fi if dpkg --assert-multi-conrep ; then echo Yay fi #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/shared-libs-symbols-file/0000775000000000000000000000000012310413146017654 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-symbols-file/upstream/0000775000000000000000000000000012077065716021534 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-symbols-file/upstream/someconf.conf0000664000000000000000000000003112077065716024206 0ustar # Yada yada yada Var=Val lintian-2.5.22ubuntu1/t/tests/shared-libs-symbols-file/upstream/Makefile0000664000000000000000000000072012077065716023173 0ustar CC=gcc CFLAGS+= -fPIC SONAMES:= libfoo.so.1 libsym.so.1 libesym.so.1 LIBFILES:= $(patsubst %,%.0.1, $(SONAMES)) all: $(LIBFILES) $(LIBFILES): code.o $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc clean: rm -f *.a *.o *.so* install: all install -m 0755 -d $(DESTDIR)/usr/lib install -m 0644 *.so* $(DESTDIR)/usr/lib for FILE in $(SONAMES) ; do \ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \ done .PHONY: install clean lintian-2.5.22ubuntu1/t/tests/shared-libs-symbols-file/upstream/code.c0000664000000000000000000000033612077065716022614 0ustar #include #include double e(void (*f)(char *)){ char tmp[10]; double x; f(tmp); x = atof(tmp); return exp(x); } double energy(double mass){ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass; } lintian-2.5.22ubuntu1/t/tests/shared-libs-symbols-file/tags0000664000000000000000000000101712310413146020534 0ustar E: libfoo1: duplicate-entry-in-symbols-control-file libfoo 1 E: libfoo1: invalid-template-id-in-symbols-file 9 E: libfoo1: symbols-file-contains-current-version-with-debian-revision on symbol e@Base E: libfoo1: syntax-error-in-symbols-file 10 E: nolibrary: pkg-has-symbols-control-file-but-no-shared-libs I: libsym1: no-symbols-control-file usr/lib/libsym.so.1.0.1 W: libesym1: shlib-missing-in-symbols-control-file libesym 1 for usr/lib/libesym.so.1.0.1 W: libfoo1: symbols-file-contains-debian-revision on symbol energy@Base lintian-2.5.22ubuntu1/t/tests/shared-libs-symbols-file/desc0000664000000000000000000000071712310413146020522 0ustar Testname: shared-libs-symbols-file Sequence: 6000 Version: 1.0-1 Type: non-native Description: Test checks related to symbols files Test-For: duplicate-entry-in-symbols-control-file invalid-template-id-in-symbols-file no-symbols-control-file pkg-has-symbols-control-file-but-no-shared-libs shlib-missing-in-symbols-control-file symbols-file-contains-current-version-with-debian-revision symbols-file-contains-debian-revision syntax-error-in-symbols-file lintian-2.5.22ubuntu1/t/tests/shared-libs-symbols-file/debian/0000775000000000000000000000000012077065716021116 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-symbols-file/debian/debian/0000775000000000000000000000000012310413206022315 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-symbols-file/debian/debian/libsym1.install0000664000000000000000000000002012077065716025300 0ustar usr/lib/libsym* lintian-2.5.22ubuntu1/t/tests/shared-libs-symbols-file/debian/debian/control.in0000664000000000000000000000315312310413206024327 0ustar Source: {$source} Priority: extra Section: libs Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: libfoo1 Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (deb revision) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . Checks for deb revisions in symbols files and other brokenness. Package: libsym1 Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (missing) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . Checks for missing symbol file. Package: libesym1 Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (empty symbols) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . Checks for empty symbol file/missing shlib in symbols file. Package: nolibrary Architecture: all Depends: $\{misc:Depends\} Description: {$description} (not a library) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . Check for shipping a symbols file without a library. lintian-2.5.22ubuntu1/t/tests/shared-libs-symbols-file/debian/debian/nolibrary.install0000664000000000000000000000002312077065716025724 0ustar someconf.conf etc/ lintian-2.5.22ubuntu1/t/tests/shared-libs-symbols-file/debian/debian/rules0000664000000000000000000000073712310413146023404 0ustar #!/usr/bin/make -f %: dh $@ override_dh_builddeb: # Apparently some of the tools are too smart to install # a redundant/empty symbols file in the package, so here # is a non-empty useless symbols file! echo "# Aloha!" > debian/libesym1/DEBIAN/symbols echo "# Aloha!" > debian/nolibrary/DEBIAN/symbols # ... they are also too smart to install slightly broken # variants of symbols files install -m 0644 debian/libfoo1.symbols debian/libfoo1/DEBIAN/symbols dh_builddeb lintian-2.5.22ubuntu1/t/tests/shared-libs-symbols-file/debian/debian/libfoo1.symbols0000664000000000000000000000032212310413146025262 0ustar libfoo.so.1 libfoo1 #MINVER# e@Base 1.0-1 energy@Base 0.9-1 # duplicate # - e@Base has a bad index # - energy@Base is a syntax error (missing version) libfoo.so.1 libfoo1 #MINVER# e@Base 1.0 1 energy@Base lintian-2.5.22ubuntu1/t/tests/shared-libs-symbols-file/debian/debian/libesym1.install0000664000000000000000000000002112077065716025446 0ustar usr/lib/libesym* lintian-2.5.22ubuntu1/t/tests/shared-libs-symbols-file/debian/debian/libfoo1.install0000664000000000000000000000002012077065716025253 0ustar usr/lib/libfoo* lintian-2.5.22ubuntu1/t/tests/source-copyright-ood-uri/0000775000000000000000000000000012077065716017756 5ustar lintian-2.5.22ubuntu1/t/tests/source-copyright-ood-uri/tags0000664000000000000000000000020712077065716020636 0ustar P: source-copyright-ood-uri source: out-of-date-copyright-format-uri http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=135 lintian-2.5.22ubuntu1/t/tests/source-copyright-ood-uri/desc0000664000000000000000000000026612077065716020623 0ustar Testname: source-copyright-ood-uri Sequence: 6000 Version: 1.0 Description: Test for out-of-date DEP-5-like URI Options: -I -E --pedantic Test-For: out-of-date-copyright-format-uri lintian-2.5.22ubuntu1/t/tests/source-copyright-ood-uri/debian/0000775000000000000000000000000012077065716021200 5ustar lintian-2.5.22ubuntu1/t/tests/source-copyright-ood-uri/debian/debian/0000775000000000000000000000000012077065716022422 5ustar lintian-2.5.22ubuntu1/t/tests/source-copyright-ood-uri/debian/debian/copyright0000664000000000000000000000206312077065716024356 0ustar Format-Specification: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=135 Name: Doohickey Maintainer: J. Random Hacker Source: http://examples.com/doohickey/source/ Files: * Copyright: 2011 J. Random Hacker License: GPL-2 This package 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; version 2 dated June, 1991. . This package 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 package; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. . On Debian systems, the full text of the GNU General Public License version 2 can be found in the file `/usr/share/common-licenses/GPL-2'. lintian-2.5.22ubuntu1/t/tests/binaries-multiarch-same/0000775000000000000000000000000012077065714017577 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-multiarch-same/tags0000664000000000000000000000012712077065714020460 0ustar E: libbasic2: arch-dependent-file-not-in-arch-specific-directory usr/lib/libbasic.so.2 lintian-2.5.22ubuntu1/t/tests/binaries-multiarch-same/desc0000664000000000000000000000027412077065714020443 0ustar Testname: binaries-multiarch-same Sequence: 6000 Version: 1.0 Description: Test of multiarch same package with unsafe binaries Test-For: arch-dependent-file-not-in-arch-specific-directory lintian-2.5.22ubuntu1/t/tests/binaries-multiarch-same/debian/0000775000000000000000000000000012310413144021001 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-multiarch-same/debian/Makefile0000664000000000000000000000043412077065714022462 0ustar all: gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-z,defs -Wl,-soname,libbasic.so.2 -o libbasic.so.2 basic.c install: install -d $(DESTDIR)/usr/lib/ install -m 644 -c -s libbasic.so.2 $(DESTDIR)/usr/lib/libbasic.so.2 clean distclean: rm -f libbasic.so.2 check test: lintian-2.5.22ubuntu1/t/tests/binaries-multiarch-same/debian/basic.c0000664000000000000000000000045412310413144022231 0ustar #include #include static void hardening_trigger(char *p, int i, void (*f)(char *)) { char test[10]; memcpy(test, p, i); f(test); printf("%s", test); } int lib_interface(void) { printf("Hello world!\n"); hardening_trigger(NULL, 0, NULL); return 0; } lintian-2.5.22ubuntu1/t/tests/binaries-multiarch-same/debian/debian/0000775000000000000000000000000012310413206022222 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-multiarch-same/debian/debian/control.in0000664000000000000000000000133512310413206024234 0ustar Source: {$source} Priority: extra Section: libs Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: libbasic2 Architecture: any Pre-Depends: $\{misc:Pre-Depends\}, multiarch-support Depends: $\{misc:Depends\}, $\{shlibs:Depends\} Multi-Arch: same Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . Note there is an explicitly pre-depends on multiarch-support, since older versions of debhelper might not use it yet. dpkg-dev will remove the duplicate entry (if any). lintian-2.5.22ubuntu1/t/tests/binaries-multiarch-same/debian/debian/libbasic2.symbols0000664000000000000000000000007112077065714025505 0ustar libbasic.so.2 libbasic2 #MINVER# lib_interface@Base 1.0 lintian-2.5.22ubuntu1/t/tests/apache2-modules-general/0000775000000000000000000000000012310413144017436 5ustar lintian-2.5.22ubuntu1/t/tests/apache2-modules-general/tags0000664000000000000000000000166712310413144020331 0ustar E: libapache2-mod-foo2: apache2-module-does-not-ship-load-file etc/apache2/mods-available/foo2.load E: libapache2-mod-foo2: apache2-reverse-dependency-ships-file-in-not-allowed-directory etc/apache2/mods-enabled/foo.conf E: libapache2-mod-foo: apache2-configuration-files-need-conf-suffix etc/apache2/mods-available/foo E: libapache2-modbaz: apache2-module-depends-on-real-apache2-package apache2.2-common E: libapache2-modbaz: apache2-module-does-not-depend-on-apache2-api W: libapache2-mod-foo2: apache2-reverse-dependency-calls-wrapper-script postinst a2enmod W: libapache2-mod-foo2: apache2-reverse-dependency-calls-wrapper-script postrm a2dismod W: libapache2-mod-foo: apache2-unparsable-dependency etc/apache2/mods-available/foo.load baz4.load W: libapache2-mod-foo: apache2-unparsable-dependency etc/apache2/mods-available/foo.load mod_baz3 W: libapache2-modbaz: non-standard-apache2-module-package-name libapache2-modbaz != libapache2-mod-baz lintian-2.5.22ubuntu1/t/tests/apache2-modules-general/desc0000664000000000000000000000076512310413144020307 0ustar Testname: apache2-modules-general Sequence: 6000 Version: 1.0 Description: Several tests related to Apache2 module packages Test-For: apache2-module-depends-on-real-apache2-package apache2-module-does-not-depend-on-apache2-api non-standard-apache2-module-package-name apache2-module-does-not-ship-load-file apache2-reverse-dependency-ships-file-in-not-allowed-directory apache2-reverse-dependency-calls-wrapper-script apache2-configuration-files-need-conf-suffix apache2-unparsable-dependency lintian-2.5.22ubuntu1/t/tests/apache2-modules-general/debian/0000775000000000000000000000000012077065714020700 5ustar lintian-2.5.22ubuntu1/t/tests/apache2-modules-general/debian/baz.load0000664000000000000000000000007212077065714022314 0ustar LoadModule baz_module /usr/lib/apache2/modules/mod_baz.so lintian-2.5.22ubuntu1/t/tests/apache2-modules-general/debian/foo0000664000000000000000000000001512077065714021402 0ustar lintian-2.5.22ubuntu1/t/tests/apache2-modules-general/debian/Makefile0000664000000000000000000000010212077065714022331 0ustar all: touch mod_baz.so mod_foo2.so mod_foo.so clean: rm -f *.so lintian-2.5.22ubuntu1/t/tests/apache2-modules-general/debian/foo.conf0000664000000000000000000000007412077065714022333 0ustar # Depends: notsupportedhere WithDirectives lintian-2.5.22ubuntu1/t/tests/apache2-modules-general/debian/foo.load0000664000000000000000000000021112077065714022316 0ustar # Depends: baz # Depends: baz baz2 mod_baz3 baz4.load # Conflicts: baz baz2 LoadModule foo_module /usr/lib/apache2/modules/mod_foo.so lintian-2.5.22ubuntu1/t/tests/apache2-modules-general/debian/debian/0000775000000000000000000000000012310413206022101 5ustar lintian-2.5.22ubuntu1/t/tests/apache2-modules-general/debian/debian/libapache2-mod-foo2.install0000664000000000000000000000011112077065714027115 0ustar foo.conf /etc/apache2/mods-enabled mod_foo2.so /usr/lib/apache2/modules/ lintian-2.5.22ubuntu1/t/tests/apache2-modules-general/debian/debian/libapache2-mod-foo2.postinst0000664000000000000000000000012612077065714027340 0ustar #! /bin/sh set -e if [ "$1" = 'configure' ] ; then a2enmod -q foo2 fi #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/apache2-modules-general/debian/debian/libapache2-mod-foo2.postrm0000664000000000000000000000013312077065714026777 0ustar #! /bin/sh set -e if [ "$1" = 'remove' ] ; then a2dismod -q foo2 fi #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/apache2-modules-general/debian/debian/control.in0000664000000000000000000000276312310413206024121 0ustar Source: {$source} Section: web Priority: extra Maintainer: Big Kahuna Uploaders: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: libapache2-mod-foo Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, apache2-api-19700101 Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: libapache2-modbaz Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, apache2.2-common, Description: {$description} don't care This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . To avoid duplicate description warnings this line differs. Ignore me. Package: libapache2-mod-foo2 Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, apache2-api-19700101, Description: {$description} still don't care This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . To avoid duplicate description warnings this line differs. Still ignore me. lintian-2.5.22ubuntu1/t/tests/apache2-modules-general/debian/debian/libapache2-modbaz.dirs0000664000000000000000000000006312077065714026250 0ustar etc/apache2/mods-available usr/lib/apache2/modules lintian-2.5.22ubuntu1/t/tests/apache2-modules-general/debian/debian/libapache2-mod-foo.install0000664000000000000000000000022512077065714027041 0ustar foo.load /etc/apache2/mods-available foo /etc/apache2/mods-available foo.conf /etc/apache2/mods-available mod_foo.so /usr/lib/apache2/modules/ lintian-2.5.22ubuntu1/t/tests/apache2-modules-general/debian/debian/libapache2-modbaz.install0000664000000000000000000000011212077065714026750 0ustar baz.load /etc/apache2/mods-available mod_baz.so /usr/lib/apache2/modules/ lintian-2.5.22ubuntu1/t/tests/apache2-modules-general/debian/debian/libapache2-mod-foo2.dirs0000664000000000000000000000006112077065714026414 0ustar etc/apache2/mods-enabled usr/lib/apache2/modules lintian-2.5.22ubuntu1/t/tests/apache2-modules-general/debian/debian/libapache2-mod-foo.dirs0000664000000000000000000000006312077065714026334 0ustar etc/apache2/mods-available usr/lib/apache2/modules lintian-2.5.22ubuntu1/t/tests/shared-libs-non-pic-i386/0000775000000000000000000000000012077065716017321 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-non-pic-i386/tags0000664000000000000000000000010012077065716020171 0ustar E: libbaz3-1: shlib-with-non-pic-code usr/lib/libbaz3.so.1.0.3b lintian-2.5.22ubuntu1/t/tests/shared-libs-non-pic-i386/desc0000664000000000000000000000024512077065716020163 0ustar Testname: shared-libs-non-pic-i386 Sequence: 6000 Version: 1.0 Architecture: i386 Description: Test checks related to non-pic code Test-For: shlib-with-non-pic-code lintian-2.5.22ubuntu1/t/tests/shared-libs-non-pic-i386/debian/0000775000000000000000000000000012077065716020543 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-non-pic-i386/debian/Makefile0000664000000000000000000000073412077065716022207 0ustar CC=gcc NOPICOBJS=non-pic.o SONAME:=libbaz3.so.1 all: libbaz3.so.1.0.3b # Non-PIC. We can't test this on all architectures libbaz3.so.1.0.3b: $(NOPICOBJS) $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(SONAME) $^ -lc %.o: %.c $(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -c $< clean: rm -f *.a *.o *.so* *.sho install: all install -m 0755 -d $(DESTDIR)/usr/lib install -m 0644 *.so* $(DESTDIR)/usr/lib ln -s libbaz3.so.1.0.3b $(DESTDIR)/usr/lib/$(SONAME) .PHONY: install clean lintian-2.5.22ubuntu1/t/tests/shared-libs-non-pic-i386/debian/non-pic.c0000664000000000000000000000026112077065716022251 0ustar #include #include double pw(double p){ return exp(p); } void stackprotfix(void (*f)(char *, size_t)) { char buffer[10]; f(buffer, sizeof(buffer)); } lintian-2.5.22ubuntu1/t/tests/shared-libs-non-pic-i386/debian/debian/0000775000000000000000000000000012310413206021742 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-non-pic-i386/debian/debian/control.in0000664000000000000000000000072212310413206023753 0ustar Source: {$source} Priority: extra Section: libs Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: libbaz3-1 Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/tests/shared-libs-non-pic-i386/debian/debian/symbols0000664000000000000000000000010212077065716023371 0ustar libbaz3.so libbaz3-1 #MINVER# pw@Base 1.0 stackprotfix@Base 1.0 lintian-2.5.22ubuntu1/t/tests/debconf-config-general/0000775000000000000000000000000012310413144017330 5ustar lintian-2.5.22ubuntu1/t/tests/debconf-config-general/tags0000664000000000000000000000063412310413144020214 0ustar E: debconf-config-general: control-file-has-bad-permissions config 0644 != 0755 E: debconf-config-general: debconf-config-not-executable E: debconf-config-general: unknown-debconf-priority config:13 unknown W: debconf-config-general: config-does-not-load-confmodule W: debconf-config-general: isdefault-flag-is-deprecated config W: debconf-config-general: possible-debconf-note-abuse config:9 debconf/note-abuse lintian-2.5.22ubuntu1/t/tests/debconf-config-general/desc0000664000000000000000000000042012310413144020165 0ustar Testname: debconf-config-general Sequence: 6000 Version: 1.0 Description: Test for various debconf config issues Test-For: config-does-not-load-confmodule debconf-config-not-executable isdefault-flag-is-deprecated possible-debconf-note-abuse unknown-debconf-priority lintian-2.5.22ubuntu1/t/tests/debconf-config-general/debian/0000775000000000000000000000000012310413144020552 5ustar lintian-2.5.22ubuntu1/t/tests/debconf-config-general/debian/debian/0000775000000000000000000000000012310413144021774 5ustar lintian-2.5.22ubuntu1/t/tests/debconf-config-general/debian/debian/templates0000664000000000000000000000051612310413144023717 0ustar Template: debconf/translated Type: error _Description: Useless note Template: debconf/note-abuse Type: note _Description: This is a note abuse Template: debconf/unknown-priority Type: error _Description: Invoked with unknown debconf priority Template: debconf/deprecated-default Type: boolean _Description: Is this use deprecated? lintian-2.5.22ubuntu1/t/tests/debconf-config-general/debian/debian/po/0000775000000000000000000000000012310413144022412 5ustar lintian-2.5.22ubuntu1/t/tests/debconf-config-general/debian/debian/po/da.po0000664000000000000000000000212512310413144023336 0ustar # Danish translations for PACKAGE package. # Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Niels Thykier , 2012. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-10-01 22:49+0200\n" "PO-Revision-Date: 2012-07-23 23:08+0200\n" "Last-Translator: Niels Thykier \n" "Language-Team: Danish\n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. Type: error #. Description #: ../templates:1001 msgid "Useless note" msgstr "Ubrugelig note" #. Type: note #. Description #: ../templates:2001 msgid "This is a note abuse" msgstr "Dette er et note misbrug" #. Type: error #. Description #: ../templates:3001 msgid "Invoked with unknown debconf priority" msgstr "Kaldt med ukendt debconf prioritet" #. Type: boolean #. Description #: ../templates:4001 msgid "Is this use deprecated?" msgstr "Er denne brug forældet?" lintian-2.5.22ubuntu1/t/tests/debconf-config-general/debian/debian/po/templates.pot0000664000000000000000000000167712310413144025147 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-10-01 22:49+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #. Type: error #. Description #: ../templates:1001 msgid "Useless note" msgstr "" #. Type: note #. Description #: ../templates:2001 msgid "This is a note abuse" msgstr "" #. Type: error #. Description #: ../templates:3001 msgid "Invoked with unknown debconf priority" msgstr "" #. Type: boolean #. Description #: ../templates:4001 msgid "Is this use deprecated?" msgstr "" lintian-2.5.22ubuntu1/t/tests/debconf-config-general/debian/debian/po/POTFILES.in0000664000000000000000000000004412310413144024165 0ustar [type: gettext/rfc822deb] templates lintian-2.5.22ubuntu1/t/tests/debconf-config-general/debian/debian/config0000664000000000000000000000047012310413144023165 0ustar #!/bin/sh set -e # Forget to load the confmodule # . /usr/share/debconf/confmodule db_input low debconf/note-abuse db_go db_input unknown debconf/unknown-priority db_go db_fset debconf/deprecated-default isdefault true db_input low debconf/deprecated-default db_go db_input low debconf/translated db_go lintian-2.5.22ubuntu1/t/tests/debconf-config-general/debian/debian/rules0000664000000000000000000000021212310413144023044 0ustar #!/usr/bin/make -f TMP=debian/$(shell dh_listpackages) %: dh $@ override_dh_builddeb: chmod 0644 "$(TMP)/DEBIAN/config" dh_builddeb lintian-2.5.22ubuntu1/t/tests/debconf-config-general/debian/debian/postinst0000664000000000000000000000010112310413144023572 0ustar #!/bin/sh set -e #DEBHELPER# . /usr/share/debconf/confmodule lintian-2.5.22ubuntu1/t/tests/rules-missing-targets-with-known-includes/0000775000000000000000000000000012077065715023252 5ustar lintian-2.5.22ubuntu1/t/tests/rules-missing-targets-with-known-includes/tags0000664000000000000000000000063612077065715024140 0ustar E: rules-missing-targets-with-known-includes source: debian-rules-missing-required-target binary-arch E: rules-missing-targets-with-known-includes source: debian-rules-missing-required-target binary-indep W: rules-missing-targets-with-known-includes source: debian-rules-missing-recommended-target build-arch W: rules-missing-targets-with-known-includes source: debian-rules-missing-recommended-target build-indep lintian-2.5.22ubuntu1/t/tests/rules-missing-targets-with-known-includes/desc0000664000000000000000000000034512077065715024115 0ustar Testname: rules-missing-targets-with-known-includes Sequence: 6000 Version: 1.0 Description: Test for debian/rules with known included file Test-For: debian-rules-missing-required-target debian-rules-missing-recommended-target lintian-2.5.22ubuntu1/t/tests/rules-missing-targets-with-known-includes/debian/0000775000000000000000000000000012077065715024474 5ustar lintian-2.5.22ubuntu1/t/tests/rules-missing-targets-with-known-includes/debian/debian/0000775000000000000000000000000012077065715025716 5ustar lintian-2.5.22ubuntu1/t/tests/rules-missing-targets-with-known-includes/debian/debian/rules0000775000000000000000000000030012077065715026767 0ustar #!/usr/bin/make -f # This should trigger a missing $type targets, since # we know the makefile does not implement them. include /usr/share/javahelper/java-vars.mk clean build binary: dh $@ lintian-2.5.22ubuntu1/t/tests/shared-libs-exec-stack/0000775000000000000000000000000012310413146017276 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-exec-stack/tags0000664000000000000000000000011412310413146020153 0ustar W: libexecstack1: shlib-with-executable-stack usr/lib/libexecstack.so.1.0.1 lintian-2.5.22ubuntu1/t/tests/shared-libs-exec-stack/desc0000664000000000000000000000023412310413146020136 0ustar Testname: shared-libs-exec-stack Sequence: 6000 Version: 1.0 Description: Test checks related to libs with exec stack Test-For: shlib-with-executable-stack lintian-2.5.22ubuntu1/t/tests/shared-libs-exec-stack/debian/0000775000000000000000000000000012310413146020520 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-exec-stack/debian/Makefile0000664000000000000000000000067612310413146022171 0ustar CC=gcc CFLAGS+= -fPIC SONAMES:= libexecstack.so.1 LIBFILES:= $(patsubst %,%.0.1, $(SONAMES)) all: $(LIBFILES) $(LIBFILES): foo.o get.o $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ clean: rm -f *.a *.o *.so* install: all install -m 0755 -d $(DESTDIR)/usr/lib install -m 0755 *.so* $(DESTDIR)/usr/lib for FILE in $(SONAMES) ; do \ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \ done .PHONY: install clean lintian-2.5.22ubuntu1/t/tests/shared-libs-exec-stack/debian/foo.c0000664000000000000000000000017512310413146021452 0ustar extern int get(int, int (*)(int)); int foo(int a) { int b = a; int bar(int a) { return a + b; } return get(a, bar); } lintian-2.5.22ubuntu1/t/tests/shared-libs-exec-stack/debian/get.c0000664000000000000000000000010712310413146021441 0ustar int get(int a, int (*f)(int)) { return f(a); } extern int foo(int); lintian-2.5.22ubuntu1/t/tests/shared-libs-exec-stack/debian/debian/0000775000000000000000000000000012310413206021737 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-exec-stack/debian/debian/control.in0000664000000000000000000000071112310413206023746 0ustar Source: {$source} Priority: extra Section: libs Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: libexecstack1 Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/tests/shared-libs-exec-stack/debian/debian/libexecstack1.symbols0000664000000000000000000000010512310413146026072 0ustar libexecstack.so.1 libexecstack1 #MINVER# foo@Base 1.0 get@Base 1.0 lintian-2.5.22ubuntu1/t/tests/debian-source-dir-gitpkg/0000775000000000000000000000000012310413205017627 5ustar lintian-2.5.22ubuntu1/t/tests/debian-source-dir-gitpkg/tags0000664000000000000000000000000012077065715020521 0ustar lintian-2.5.22ubuntu1/t/tests/debian-source-dir-gitpkg/desc0000664000000000000000000000027412077065715020516 0ustar Testname: debian-source-dir-gitpkg Sequence: 6000 Version: 1.0-1 Type: non-native Description: Test for false positives in git-patches-not-exported Test-Against: git-patches-not-exported lintian-2.5.22ubuntu1/t/tests/debian-source-dir-gitpkg/debian/0000775000000000000000000000000012077065715021074 5ustar lintian-2.5.22ubuntu1/t/tests/debian-source-dir-gitpkg/debian/debian/0000775000000000000000000000000012077065715022316 5ustar lintian-2.5.22ubuntu1/t/tests/debian-source-dir-gitpkg/debian/debian/source/0000775000000000000000000000000012077065715023616 5ustar lintian-2.5.22ubuntu1/t/tests/debian-source-dir-gitpkg/debian/debian/source/format0000664000000000000000000000001412077065715025024 0ustar 3.0 (quilt) lintian-2.5.22ubuntu1/t/tests/debian-source-dir-gitpkg/debian/debian/source/git-patches0000664000000000000000000000016612077065715025754 0ustar # upstream/$UPSTREAM_VERSION..patches/$DEB_VERSION # this is an indented comment # some more blank lines lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-wrong-file/0000775000000000000000000000000012077065716021123 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-wrong-file/upstream/0000775000000000000000000000000012077065716022763 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-wrong-file/upstream/Makefile0000664000000000000000000000074512077065716024431 0ustar CC=gcc CFLAGS+= -fPIC SONAMES:= libfoo.so.1 LIBFILES:= $(patsubst %,%.0.1, $(SONAMES)) all: $(LIBFILES) $(LIBFILES): code.o $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc clean: rm -f *.a *.o *.so* install: all install -m 0755 -d $(DESTDIR)/usr/lib install -m 0644 *.so* $(DESTDIR)/usr/lib echo "Strauss: Also Sprach Zarathustra" > \ $(DESTDIR)/usr/lib/some-other-file ln -s some-other-file $(DESTDIR)/usr/lib/libfoo.so.1 .PHONY: install clean lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-wrong-file/upstream/code.c0000664000000000000000000000033612077065716024043 0ustar #include #include double e(void (*f)(char *)){ char tmp[10]; double x; f(tmp); x = atof(tmp); return exp(x); } double energy(double mass){ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass; } lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-wrong-file/tags0000664000000000000000000000016612077065716022007 0ustar E: libfoo1: ldconfig-symlink-referencing-wrong-file usr/lib/libfoo.so.1 -> some-other-file instead of libfoo.so.1.0.1 lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-wrong-file/desc0000664000000000000000000000030012077065716021755 0ustar Testname: shared-libs-ldconfig-wrong-file Sequence: 6000 Version: 1.0-1 Type: non-native Description: Test ldconfig symlink with wrong target Test-For: ldconfig-symlink-referencing-wrong-file lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-wrong-file/debian/0000775000000000000000000000000012077065716022345 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-wrong-file/debian/debian/0000775000000000000000000000000012310413206023544 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-wrong-file/debian/debian/control.in0000664000000000000000000000070312310413206025554 0ustar Source: {$source} Priority: extra Section: libs Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: libfoo1 Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-wrong-file/debian/debian/libfoo1.symbols0000664000000000000000000000007212077065716026533 0ustar libfoo.so.1 libfoo1 #MINVER# e@Base 1.0 energy@Base 0.9 lintian-2.5.22ubuntu1/t/tests/fields-malformed-py-version/0000775000000000000000000000000012310413144020375 5ustar lintian-2.5.22ubuntu1/t/tests/fields-malformed-py-version/tags0000664000000000000000000000011012310413144021246 0ustar E: fields-malformed-py-version source: malformed-python-version 2.5 2.6 lintian-2.5.22ubuntu1/t/tests/fields-malformed-py-version/desc0000664000000000000000000000023212310413144021233 0ustar Testname: fields-malformed-py-version Sequence: 6000 Version: 1.0 Description: Test for malformed python-version field Test-For: malformed-python-version lintian-2.5.22ubuntu1/t/tests/fields-malformed-py-version/debian/0000775000000000000000000000000012310413144021617 5ustar lintian-2.5.22ubuntu1/t/tests/fields-malformed-py-version/debian/some-file0000664000000000000000000000021312310413144023416 0ustar This file is installed into /usr/share/lintian just to ensure that this package doesn't look like a metapackage for the dependency checks. lintian-2.5.22ubuntu1/t/tests/fields-malformed-py-version/debian/debian/0000775000000000000000000000000012310413206023040 5ustar lintian-2.5.22ubuntu1/t/tests/fields-malformed-py-version/debian/debian/install0000664000000000000000000000003412310413144024427 0ustar some-file usr/share/lintian lintian-2.5.22ubuntu1/t/tests/fields-malformed-py-version/debian/debian/control.in0000664000000000000000000000075212310413206025054 0ustar Source: {$source} Priority: extra Section: java Maintainer: {$author} Standards-Version: {$standards_version} XS-Python-Version: 2.5 2.6 Build-Depends: debhelper (>= 9) Package: {$source} Architecture: all Depends: $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/fields-version-bad/0000775000000000000000000000000012310413205016525 5ustar lintian-2.5.22ubuntu1/t/tests/fields-version-bad/tags0000664000000000000000000000020312310413144017403 0ustar E: fields-version-bad: debian-revision-should-not-be-zero 1.0-0 W: fields-version-bad source: debian-revision-not-well-formed 0-.3 lintian-2.5.22ubuntu1/t/tests/fields-version-bad/desc0000664000000000000000000000027712310413144017376 0ustar Testname: fields-version-bad Sequence: 6000 Version: 0-.3 Description: Test for weird versions Type: non-native Test-For: debian-revision-not-well-formed debian-revision-should-not-be-zero lintian-2.5.22ubuntu1/t/tests/fields-version-bad/debian/0000775000000000000000000000000012077065715017772 5ustar lintian-2.5.22ubuntu1/t/tests/fields-version-bad/debian/debian/0000775000000000000000000000000012077065715021214 5ustar lintian-2.5.22ubuntu1/t/tests/fields-version-bad/debian/debian/rules0000664000000000000000000000012112077065715022263 0ustar #!/usr/bin/make -f %: dh $@ override_dh_gencontrol: dh_gencontrol -- -v1.0-0 lintian-2.5.22ubuntu1/t/tests/filename-length-really-really-really-really-long-package-name/0000775000000000000000000000000012310413205026703 5ustar lintian-2.5.22ubuntu1/t/tests/filename-length-really-really-really-really-long-package-name/tags0000664000000000000000000000052112077065715027605 0ustar W: filename-length-really-really-really-really-long-package-name source: package-has-long-file-name 101 > 80 W: filename-length-really-really-really-really-long-package-name source: source-package-component-has-long-file-name 107 > 80 W: filename-length-really-really-really-really-long-package-name: package-has-long-file-name 105 > 80 lintian-2.5.22ubuntu1/t/tests/filename-length-really-really-really-really-long-package-name/desc0000664000000000000000000000043312077065715027567 0ustar Testname: filename-length-really-really-really-really-long-package-name Sequence: 6000 Version: 1.0.and.a.really.long.version.too-1 Type: non-native Description: General length of package file names Test-For: package-has-long-file-name source-package-component-has-long-file-name lintian-2.5.22ubuntu1/t/tests/rules-dh-unused-target/0000775000000000000000000000000012077065715017403 5ustar lintian-2.5.22ubuntu1/t/tests/rules-dh-unused-target/tags0000664000000000000000000000000012077065715020252 0ustar lintian-2.5.22ubuntu1/t/tests/rules-dh-unused-target/desc0000664000000000000000000000032112077065715020240 0ustar Testname: rules-dh-unused-target Sequence: 6000 Version: 1.0 Description: Allow dh in unused targets Test-Against: binary-arch-rules-but-pkg-is-arch-indep References: <20080806175819.GV11882@mail-vs.djpig.de> lintian-2.5.22ubuntu1/t/tests/rules-dh-unused-target/debian/0000775000000000000000000000000012077065715020625 5ustar lintian-2.5.22ubuntu1/t/tests/rules-dh-unused-target/debian/debian/0000775000000000000000000000000012077065715022047 5ustar lintian-2.5.22ubuntu1/t/tests/rules-dh-unused-target/debian/debian/rules0000775000000000000000000000061112077065715023125 0ustar #!/usr/bin/make -f build-indep: build-arch: build-stamp build-stamp: dh build-arch touch $@ build: build-arch build-indep clean: dh $@ install: install-stamp install-stamp: build-stamp dh install touch $@ binary-arch: install dh $@ binary-indep: install dh $@ binary: binary-arch binary-indep .PHONY: binary binary-arch binary-indep install clean build build-arch build-indep lintian-2.5.22ubuntu1/t/tests/menu-format-general/0000775000000000000000000000000012310413146016721 5ustar lintian-2.5.22ubuntu1/t/tests/menu-format-general/tags0000664000000000000000000000346412310413146017611 0ustar E: menu-broken: bad-test-in-menu-item usr/share/menu/menu-broken:4 E: menu-broken: unparsable-menu-item usr/share/menu/menu-broken:12 E: menu-cmd: menu-icon-not-in-xpm-format usr/share/pixmaps/pargs.png E: menu-cmd: menu-icon-too-big usr/share/pixmaps/too-large.xpm: 256x256 > 32x32 E: menu-section: menu-item-creates-new-root-section Root usr/share/menu/menu-section:3 E: menu-section: non-wm-in-windowmanager-menu-section x11 usr/share/menu/menu-section:15 W: menu-broken: duplicated-tag-in-menu-item usr/share/menu/menu-broken longtitle:12 W: menu-broken: pkg-not-in-package-test wrong-package usr/share/menu/menu-broken W: menu-cmd: menu-command-not-in-package usr/share/menu/menu-cmd:4 usr/bin/not-here W: menu-cmd: menu-icon-cannot-be-parsed usr/share/pixmaps/broken.xpm: looking for XPM header W: menu-none: menu-icon-missing non-existent.xpm W: menu-none: menu-icon-missing non-existent16.xpm W: menu-none: menu-icon-missing non-existent32.xpm W: menu-none: menu-icon-missing usr/share/menu-none/non-existent.xpm W: menu-none: menu-icon-missing usr/share/menu-none/non-existent16.xpm W: menu-none: menu-icon-missing usr/share/menu-none/non-existent32.xpm W: menu-none: menu-icon-uses-relative-path non-existent.xpm W: menu-none: menu-icon-uses-relative-path non-existent16.xpm W: menu-none: menu-icon-uses-relative-path non-existent32.xpm W: menu-none: menu-item-uses-icon-none usr/share/menu/menu-none:4 W: menu-section: menu-item-creates-new-section Games usr/share/menu/menu-section:9 W: menu-section: menu-item-creates-new-section WindowManagers/Programming usr/share/menu/menu-section:15 W: menu-section: menu-item-uses-apps-games-section usr/share/menu/menu-section:6 W: menu-section: menu-item-uses-apps-section usr/share/menu/menu-section:12 W: menu-section: menu-item-uses-windowmanagers-section usr/share/menu/menu-section:15 lintian-2.5.22ubuntu1/t/tests/menu-format-general/desc0000664000000000000000000000111412310413146017557 0ustar Testname: menu-format-general Sequence: 6000 Version: 1.0 Description: Test menu file tags Test-For: bad-test-in-menu-item duplicated-tag-in-menu-item menu-command-not-in-package menu-icon-cannot-be-parsed menu-icon-missing menu-icon-not-in-xpm-format menu-icon-too-big menu-item-creates-new-root-section menu-item-creates-new-section menu-item-uses-apps-games-section menu-item-uses-apps-section menu-item-uses-icon-none menu-icon-uses-relative-path menu-item-uses-windowmanagers-section non-wm-in-windowmanager-menu-section pkg-not-in-package-test unparsable-menu-item lintian-2.5.22ubuntu1/t/tests/menu-format-general/debian/0000775000000000000000000000000012310413146020143 5ustar lintian-2.5.22ubuntu1/t/tests/menu-format-general/debian/pargs0000664000000000000000000000036112077065715021221 0ustar #!/usr/bin/perl use strict; use warnings; print join("\n", @ARGV), "\n"; exit 0; =head1 NAME pargs - print arguments (similar to echo) =head1 SYNOPSIS pargs [...] =head1 DESCRIPTION Prints all arguments separated by newlines. =cut lintian-2.5.22ubuntu1/t/tests/menu-format-general/debian/broken.xpm0000664000000000000000000000006112310413146022146 0ustar /* Pretend to be an XPM file without being it */ lintian-2.5.22ubuntu1/t/tests/menu-format-general/debian/pargs.png0000664000000000000000000000000012310413146021753 0ustar lintian-2.5.22ubuntu1/t/tests/menu-format-general/debian/Makefile0000664000000000000000000000043412077065715021623 0ustar all: pargs sed s/pargs/pargs-broken/ pargs > pargs-broken sed s/pargs/pargs-section/ pargs > pargs-section pod2man --section=1 pargs pargs.1 pod2man --section=1 pargs-broken pargs-broken.1 pod2man --section=1 pargs-section pargs-section.1 clean: rm -f pargs*.1 rm -f pargs-* lintian-2.5.22ubuntu1/t/tests/menu-format-general/debian/too-large.xpm0000664000000000000000000000027112310413146022562 0ustar /* XPM */ /* This is a fake XPM file - it has just enough to fool Lintian into believing this is a 256x256 image... */ "256 256 10 10" /* Lintian is not too bright... :P */ lintian-2.5.22ubuntu1/t/tests/menu-format-general/debian/debian/0000775000000000000000000000000012310413206021362 5ustar lintian-2.5.22ubuntu1/t/tests/menu-format-general/debian/debian/menu-section.manpages0000664000000000000000000000002012077065715025517 0ustar pargs-section.1 lintian-2.5.22ubuntu1/t/tests/menu-format-general/debian/debian/menu-cmd.menu0000664000000000000000000000043112310413146023756 0ustar ?package(menu-cmd):needs="X11" section="Applications/Programming"\ title="pargs (png icon)" command="/usr/bin/not-here"\ longtitle="Argument printer" icon16x16="/usr/share/pixmaps/pargs.png" \ icon="/usr/share/pixmaps/broken.xpm" icon32x32="/usr/share/pixmaps/too-large.xpm" lintian-2.5.22ubuntu1/t/tests/menu-format-general/debian/debian/menu-broken.menu0000664000000000000000000000112212077065715024510 0ustar ?package(menu-broken):needs="X11" section="Applications/Programming"\ title="pargs (missing slash)" command="/usr/bin/pargs-broken"\ longtitle="Argument printer (bad-test)" icon="none" newtag=unquoted-value ?package(wrong-package):needs="X11" section="Applications/Programming"\ title="pargs (wrong pkg)" command="/usr/bin/pargs-broken"\ longtitle="Argument printer" ?package(menu-broken):needs="X11" section="Applications/Programming"\ title="pargs (dup+unparse)" command="/usr/bin/pargs-broken"\ longtitle="Argument printer"\ longtitle="Argument printer"\ unparseable-stuff lintian-2.5.22ubuntu1/t/tests/menu-format-general/debian/debian/menu-section.install0000664000000000000000000000003612077065715025401 0ustar pargs-section usr/bin lintian-2.5.22ubuntu1/t/tests/menu-format-general/debian/debian/control.in0000664000000000000000000000313412310413206023373 0ustar Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: menu-none Architecture: all Depends: $\{misc:Depends\} Description: {$description} (no icon) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . Test for "none" icon and missing icons. Package: menu-cmd Architecture: all Depends: $\{misc:Depends\} Description: {$description} (cmd) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . Test for command not being in the package. Package: menu-broken Architecture: all Depends: $\{misc:Depends\} Description: {$description} (broken) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . Test for broken menu file. Package: menu-section Architecture: all Depends: $\{misc:Depends\} Description: {$description} (section) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . Test for menu file with weird sections. lintian-2.5.22ubuntu1/t/tests/menu-format-general/debian/debian/menu-broken.install0000664000000000000000000000003512077065715025214 0ustar pargs-broken usr/bin lintian-2.5.22ubuntu1/t/tests/menu-format-general/debian/debian/menu-broken.manpages0000664000000000000000000000001712077065715025341 0ustar pargs-broken.1 lintian-2.5.22ubuntu1/t/tests/menu-format-general/debian/debian/menu-cmd.install0000664000000000000000000000006612310413146024464 0ustar *.xpm usr/share/pixmaps/ pargs.png usr/share/pixmaps/ lintian-2.5.22ubuntu1/t/tests/menu-format-general/debian/debian/menu-none.manpages0000664000000000000000000000001012077065715025011 0ustar pargs.1 lintian-2.5.22ubuntu1/t/tests/menu-format-general/debian/debian/menu-none.menu0000664000000000000000000000132712310413146024157 0ustar ?package(menu-none):needs="X11" section="Applications/Programming"\ title="pargs (icon none)" command="/usr/bin/pargs"\ longtitle="Argument printer"\ icon="none" ?package(menu-none):needs="X11" section="Applications/Programming"\ title="pargs (mis. icon)" command="/usr/bin/pargs"\ longtitle="Argument printer"\ icon="/usr/share/menu-none/non-existent.xpm"\ icon32x32="/usr/share/menu-none/non-existent32.xpm"\ icon16x16="/usr/share/menu-none/non-existent16.xpm" ?package(menu-none):needs="X11" section="Applications/Programming"\ title="pargs (rel. icon)" command="/usr/bin/pargs"\ longtitle="Argument printer"\ icon="non-existent.xpm"\ icon32x32="non-existent32.xpm"\ icon16x16="non-existent16.xpm" lintian-2.5.22ubuntu1/t/tests/menu-format-general/debian/debian/menu-none.install0000664000000000000000000000002612077065715024673 0ustar pargs usr/bin lintian-2.5.22ubuntu1/t/tests/menu-format-general/debian/debian/menu-section.menu0000664000000000000000000000136312077065715024703 0ustar ?package(menu-section):needs="X11" section="Root"\ title="pargs (new root)" command="/usr/bin/pargs-section"\ longtitle="Argument printer" ?package(menu-section):needs="X11" section="Apps/Games/Toys"\ title="pargs (apps/games)" command="/usr/bin/pargs-section"\ longtitle="Argument printer" ?package(menu-section):needs="X11" section="Games"\ title="pargs (games)" command="/usr/bin/pargs-section"\ longtitle="Argument printer" ?package(menu-section):needs="X11" section="Apps/Programming"\ title="pargs (apps/prog)" command="/usr/bin/pargs-section"\ longtitle="Argument printer" ?package(menu-section):needs="X11" section="WindowManagers/Programming"\ title="pargs (vm)" command="/usr/bin/pargs-section"\ longtitle="Argument printer" lintian-2.5.22ubuntu1/t/tests/nmu-ubuntu-native/0000775000000000000000000000000012077065715016476 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-ubuntu-native/tags0000664000000000000000000000000012077065715017345 0ustar lintian-2.5.22ubuntu1/t/tests/nmu-ubuntu-native/desc0000664000000000000000000000037212077065715017341 0ustar Testname: nmu-ubuntu-native Sequence: 6000 Version: 1.0 Description: Test NMU tag suppression for Ubuntu native packages Profile: ubuntu/main Test-Against: changelog-should-mention-nmu bad-distribution-in-changes-file References: Debian Bug #507740 lintian-2.5.22ubuntu1/t/tests/nmu-ubuntu-native/debian/0000775000000000000000000000000012077065715017720 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-ubuntu-native/debian/debian/0000775000000000000000000000000012310413206021120 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-ubuntu-native/debian/debian/changelog.in0000664000000000000000000000020512310413206023374 0ustar {$source} ({$version}) lucid; urgency=low * Lintian Test Suite. * Test: {$testname} -- Russ Allbery {$date} lintian-2.5.22ubuntu1/t/tests/shared-libs-exit/0000775000000000000000000000000012077065716016240 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-exit/tags0000664000000000000000000000007512077065716017123 0ustar X: libexecbit1: shlib-calls-exit usr/lib/libexecbit.so.1.0.1 lintian-2.5.22ubuntu1/t/tests/shared-libs-exit/desc0000664000000000000000000000021512077065716017077 0ustar Testname: shared-libs-exit Sequence: 6000 Version: 1.0 Description: Test checks related to libs invoking exit(3) Test-For: shlib-calls-exit lintian-2.5.22ubuntu1/t/tests/shared-libs-exit/debian/0000775000000000000000000000000012077065716017462 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-exit/debian/Makefile0000664000000000000000000000067312077065716021130 0ustar CC=gcc CFLAGS+= -fPIC SONAMES:= libexecbit.so.1 LIBFILES:= $(patsubst %,%.0.1, $(SONAMES)) all: $(LIBFILES) $(LIBFILES): code.o $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc clean: rm -f *.a *.o *.so* install: all install -m 0755 -d $(DESTDIR)/usr/lib install -m 0755 *.so* $(DESTDIR)/usr/lib for FILE in $(SONAMES) ; do \ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \ done .PHONY: install clean lintian-2.5.22ubuntu1/t/tests/shared-libs-exit/debian/code.c0000664000000000000000000000024612077065716020542 0ustar #include double e(void (*f)(char *)){ char tmp[10]; double x; f(tmp); x = atof(tmp); if (x < 0.0) { exit(1); } else { return x; } } lintian-2.5.22ubuntu1/t/tests/shared-libs-exit/debian/debian/0000775000000000000000000000000012310413206020661 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-exit/debian/debian/control.in0000664000000000000000000000070712310413206022675 0ustar Source: {$source} Priority: extra Section: libs Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: libexecbit1 Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/tests/shared-libs-exit/debian/debian/libexecbit1.symbols0000664000000000000000000000006112077065716024506 0ustar libexecbit.so.1 libexecbit1 #MINVER# e@Base 1.0 lintian-2.5.22ubuntu1/t/tests/java-class-format/0000775000000000000000000000000012310413146016366 5ustar lintian-2.5.22ubuntu1/t/tests/java-class-format/upstream/0000775000000000000000000000000012077065715020245 5ustar lintian-2.5.22ubuntu1/t/tests/java-class-format/upstream/src/0000775000000000000000000000000012077065715021034 5ustar lintian-2.5.22ubuntu1/t/tests/java-class-format/upstream/src/org/0000775000000000000000000000000012077065715021623 5ustar lintian-2.5.22ubuntu1/t/tests/java-class-format/upstream/src/org/debian/0000775000000000000000000000000012077065715023045 5ustar lintian-2.5.22ubuntu1/t/tests/java-class-format/upstream/src/org/debian/lintian/0000775000000000000000000000000012077065715024503 5ustar lintian-2.5.22ubuntu1/t/tests/java-class-format/upstream/src/org/debian/lintian/TestB.java0000664000000000000000000000017512077065715026372 0ustar package org.debian.lintian; /** A neat empty useless class. */ public class TestB { // An empty class should do. }; lintian-2.5.22ubuntu1/t/tests/java-class-format/upstream/src/org/debian/lintian/TestA.java0000664000000000000000000000017512077065715026371 0ustar package org.debian.lintian; /** A neat empty useless class. */ public class TestA { // An empty class should do. }; lintian-2.5.22ubuntu1/t/tests/java-class-format/tags0000664000000000000000000000030412310413146017244 0ustar W: libtest-java: incompatible-java-bytecode-format Java7 version (Class format: 51) W: libtest-java: unknown-java-class-version usr/share/java/testa-1.0.jar (org/debian/lintian/TestA.class -> 42) lintian-2.5.22ubuntu1/t/tests/java-class-format/desc0000664000000000000000000000032412077065715017245 0ustar Testname: java-class-format Type: non-native Sequence: 6000 Version: 1.0-1 Description: Various checks for Java Class format Section: java Test-For: incompatible-java-bytecode-format unknown-java-class-version lintian-2.5.22ubuntu1/t/tests/java-class-format/debian/0000775000000000000000000000000012077065715017627 5ustar lintian-2.5.22ubuntu1/t/tests/java-class-format/debian/debian/0000775000000000000000000000000012310413206021027 5ustar lintian-2.5.22ubuntu1/t/tests/java-class-format/debian/debian/control.in0000664000000000000000000000066112310413206023042 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), javahelper, default-jdk Package: libtest-java Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} This is a test package designed to test various aspects of the java-related QA code in lintian. First part. . This package should not be installed. lintian-2.5.22ubuntu1/t/tests/java-class-format/debian/debian/libtest-java.jlibs0000664000000000000000000000002412077065715024457 0ustar testa.jar testb.jar lintian-2.5.22ubuntu1/t/tests/java-class-format/debian/debian/rules0000775000000000000000000000117212310413146022113 0ustar #!/usr/bin/make -f %: dh $@ --with javahelper override_jh_build: jh_build --javacopts='-target 1.4' --javacopts='-source 1.4' unzip test.jar # Unknown class version perl -i -pe 's/^(\xCA\xFE\xBA\xBE...)./$$1\x2A/' org/debian/lintian/TestA.class # Java7 (unsupported) perl -i -pe 's/^(\xCA\xFE\xBA\xBE...)./$$1\x33/' org/debian/lintian/TestB.class # Put them in separate Jars because Lintian stops when the first # "unknown class format" is seen zip -r testa.jar META-INF/ org/debian/lintian/TestA.class zip -r testb.jar META-INF/ org/debian/lintian/TestB.class override_dh_auto_clean: rm -fr META-INF/ org/ rm -f *.jar lintian-2.5.22ubuntu1/t/tests/java-class-format/debian/debian/javabuild0000664000000000000000000000001512077065715022731 0ustar test.jar src lintian-2.5.22ubuntu1/t/tests/fields-unknown-fields/0000775000000000000000000000000012077065715017302 5ustar lintian-2.5.22ubuntu1/t/tests/fields-unknown-fields/tags0000664000000000000000000000007612077065715020166 0ustar W: fields-unknown-fields source: unknown-field-in-dsc comment lintian-2.5.22ubuntu1/t/tests/fields-unknown-fields/desc0000664000000000000000000000021212077065715020136 0ustar Testname: fields-unknown-fields Sequence: 6000 Version: 1.0 Description: General tests for unknown fields Test-For: unknown-field-in-dsc lintian-2.5.22ubuntu1/t/tests/fields-unknown-fields/debian/0000775000000000000000000000000012077065715020524 5ustar lintian-2.5.22ubuntu1/t/tests/fields-unknown-fields/debian/debian/0000775000000000000000000000000012310413206021724 5ustar lintian-2.5.22ubuntu1/t/tests/fields-unknown-fields/debian/debian/control.in0000664000000000000000000000101712310413206023733 0ustar Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) XS-Comment: This is random comment ending up in the dsc file. Package: {$source} Architecture: all Depends: $\{misc:Depends\}, Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/nmu-local-version/0000775000000000000000000000000012077065715016445 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-local-version/tags0000664000000000000000000000000012077065715017314 0ustar lintian-2.5.22ubuntu1/t/tests/nmu-local-version/desc0000664000000000000000000000035612077065715017312 0ustar Testname: nmu-local-version Sequence: 6000 Version: 1.0local1 Description: Test suppression of NMU tags for local packages Test-Against: changelog-should-mention-nmu source-nmu-has-incorrect-version-number References: Debian Bug#501523 lintian-2.5.22ubuntu1/t/tests/nmu-local-version/debian/0000775000000000000000000000000012077065715017667 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-local-version/debian/debian/0000775000000000000000000000000012310413206021067 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-local-version/debian/debian/changelog.in0000664000000000000000000000031212310413206023342 0ustar {$source} ({$version}) unstable; urgency=low * Lintian Test Suite. * Test: {$testname} * Suppress "should close ITP bug" messages. (Closes: #123456) -- Russ Allbery {$date} lintian-2.5.22ubuntu1/t/tests/testsuite-unknown-suite/0000775000000000000000000000000012310413146017731 5ustar lintian-2.5.22ubuntu1/t/tests/testsuite-unknown-suite/tags0000664000000000000000000000010112310413146020602 0ustar W: testsuite-unknown-suite source: unknown-testsuite autopkgtset lintian-2.5.22ubuntu1/t/tests/testsuite-unknown-suite/desc0000664000000000000000000000023512310413146020572 0ustar Testname: testsuite-unknown-suite Sequence: 6000 Version: 1.0 Description: Tests for unknown suite in the control being non-file Test-For: unknown-testsuite lintian-2.5.22ubuntu1/t/tests/testsuite-unknown-suite/debian/0000775000000000000000000000000012310413146021153 5ustar lintian-2.5.22ubuntu1/t/tests/testsuite-unknown-suite/debian/debian/0000775000000000000000000000000012310413206022372 5ustar lintian-2.5.22ubuntu1/t/tests/testsuite-unknown-suite/debian/debian/tests/0000775000000000000000000000000012310413146023537 5ustar lintian-2.5.22ubuntu1/t/tests/testsuite-unknown-suite/debian/debian/tests/test-10000664000000000000000000000002112310413146024570 0ustar #!/bin/sh exit 0 lintian-2.5.22ubuntu1/t/tests/testsuite-unknown-suite/debian/debian/tests/control0000664000000000000000000000001612310413146025137 0ustar Tests: test-1 lintian-2.5.22ubuntu1/t/tests/testsuite-unknown-suite/debian/debian/control.in0000664000000000000000000000101712310413206024401 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) XS-Testsuite: autopkgtset Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/fields-vcs-fields/0000775000000000000000000000000012310413144016355 5ustar lintian-2.5.22ubuntu1/t/tests/fields-vcs-fields/tags0000664000000000000000000000000012077065715017245 0ustar lintian-2.5.22ubuntu1/t/tests/fields-vcs-fields/desc0000664000000000000000000000045512310413144017222 0ustar Testname: fields-vcs-fields Sequence: 6000 Description: Test well formed VCS-* fields Version: 1.0 Test-Against: vcs-field-bitrotted vcs-field-has-unexpected-spaces vcs-field-not-canonical vcs-field-uses-not-recommended-uri-format vcs-field-uses-unknown-uri-format vcs-git-uses-invalid-user-uri lintian-2.5.22ubuntu1/t/tests/fields-vcs-fields/debian/0000775000000000000000000000000012077065715017620 5ustar lintian-2.5.22ubuntu1/t/tests/fields-vcs-fields/debian/debian/0000775000000000000000000000000012310413206021020 5ustar lintian-2.5.22ubuntu1/t/tests/fields-vcs-fields/debian/debian/control.in0000664000000000000000000000156512310413206023037 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Vcs-Browser: https://anonscm.debian.org/viewvc/foobar/trunk Vcs-Svn: svn://anonscm.debian.org/foobar/trunk Vcs-Mtn: www.example.org org.debian.foobar Vcs-Hg: http://anonscm.debian.org/hg/foobar/pkg/foobar Vcs-Git: git://anonscm.debian.org/users/djpig/foobar.git -b master Vcs-Cvs: :pserver:anonymous@anonscm.debian.org:/cvs/foobar module Vcs-Bzr: nosmart+http://anonscm.debian.org/bzr/collab-maint/foobar Package: {$source} Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/control-file-pedantic/0000775000000000000000000000000012077065714017254 5ustar lintian-2.5.22ubuntu1/t/tests/control-file-pedantic/tags0000664000000000000000000000011312077065714020130 0ustar P: control-file-pedantic source: xc-package-type-in-debian-control line 13 lintian-2.5.22ubuntu1/t/tests/control-file-pedantic/desc0000664000000000000000000000031112077065714020110 0ustar Testname: control-file-pedantic Sequence: 6000 Version: 1.0 Skeleton: pedantic Options: --pedantic -I -E Description: Pedantic tests for control file issues Test-For: xc-package-type-in-debian-control lintian-2.5.22ubuntu1/t/tests/control-file-pedantic/debian/0000775000000000000000000000000012077065714020476 5ustar lintian-2.5.22ubuntu1/t/tests/control-file-pedantic/debian/debian/0000775000000000000000000000000012310413206021677 5ustar lintian-2.5.22ubuntu1/t/tests/control-file-pedantic/debian/debian/control.in0000664000000000000000000000107212310413206023707 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Homepage: http://lintian.debian.org/ Package: {$source}-udeb Section: debian-installer Architecture: {$architecture} Depends: $\{misc:Depends\} XC-Package-Type: udeb Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/phppear-pearok/0000775000000000000000000000000012310413146015772 5ustar lintian-2.5.22ubuntu1/t/tests/phppear-pearok/upstream/0000775000000000000000000000000012310413146017632 5ustar lintian-2.5.22ubuntu1/t/tests/phppear-pearok/upstream/MyProject_Packages-0.0.1/0000775000000000000000000000000012310413146023776 5ustar lintian-2.5.22ubuntu1/t/tests/phppear-pearok/upstream/MyProject_Packages-0.0.1/empty.php0000664000000000000000000000000012310413146025633 0ustar lintian-2.5.22ubuntu1/t/tests/phppear-pearok/upstream/package.xml0000664000000000000000000000330512310413146021750 0ustar MyProject_Packages pear.php.net this is a wrapper package for installing dependencies for MyProject <Some random notes> fred fred fred@example.com yes 2009-05-08 0.0.1 0.0.1 alpha alpha LGPL <none> 5.2.1 1.8.0 0.0.1 0.0.1 alpha alpha 2009-05-08 LGPL <none> lintian-2.5.22ubuntu1/t/tests/phppear-pearok/tags0000664000000000000000000000000012310413146016641 0ustar lintian-2.5.22ubuntu1/t/tests/phppear-pearok/desc0000664000000000000000000000067312310413146016641 0ustar Testname: phppear-pearok Sequence: 6000 Version: 1.0-1 Description: phppear tests for PEAR packages Test-Against: missing-pkg-php-tools-addon missing-pkg-php-tools-buildsystem pear-package-but-missing-dependency pear-package-feature-requires-newer-pkg-php-tools pear-package-not-using-substvar pecl-package-requires-build-dependency Type: non-native # pkg-php-tools >= 1.5 is not available in Wheezy Test-Depends: pkg-php-tools (>= 1.5) lintian-2.5.22ubuntu1/t/tests/phppear-pearok/debian/0000775000000000000000000000000012310413146017214 5ustar lintian-2.5.22ubuntu1/t/tests/phppear-pearok/debian/debian/0000775000000000000000000000000012310413206020433 5ustar lintian-2.5.22ubuntu1/t/tests/phppear-pearok/debian/debian/control.in0000775000000000000000000000122012310413206022441 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), pkg-php-tools, php5-dev, dh-php5 Package: {$source} Architecture: {$architecture} Depends: $\{misc:Depends\}, $\{phppear:Debian-Depends\} Recommends: $\{phppear:Debian-Recommends\} Breaks: $\{phppear:Debian-Breaks\} Description: $\{phppear:summary\} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . $\{phppear:description\} lintian-2.5.22ubuntu1/t/tests/phppear-pearok/debian/debian/rules0000775000000000000000000000010212310413146021507 0ustar #!/usr/bin/make -f %: dh $@ --with phppear --buildsystem phppear lintian-2.5.22ubuntu1/t/tests/cruft-general-diff/0000775000000000000000000000000012310413205016514 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-general-diff/pre_build0000775000000000000000000000242712077065715020437 0ustar #!/bin/sh # # Create all the various junk that shouldn't exist in the diff so that we can # trigger all the tags. set -e dir="$1" mkdir "${dir}/CVS" echo 'diff-contains-cvs-control-dir' > "${dir}/CVS/Entries" mkdir "${dir}/.svn" echo 'diff-contains-svn-control-dir' > "${dir}/.svn/format" mkdir "${dir}/.bzr" echo 'diff-contains-bzr-control-dir' > "${dir}/.bzr/foo" mkdir "${dir}/{arch}" echo 'diff-contains-arch-control-dir' > "${dir}/{arch}/foo" mkdir "${dir}/.git" echo 'diff-contains-git-control-dir' > "${dir}/.git/foo" mkdir "${dir}/.hg" echo 'diff-contains-hg-control-dir' > "${dir}/.hg/foo" mkdir "${dir}/.be" echo 'diff-contains-bts-control-dir' > "${dir}/.be/foo" mkdir "${dir}/.pc" echo 'diff-contains-quilt-control-dir' > "${dir}/.pc/foo" echo 'diff-contains-cmake-cache-file' > "${dir}/CMakeCache.txt" echo 'diff-contains-svn-commit-file' > "${dir}/svn-commit.tmp" echo 'diff-contains-svk-commit-file' > "${dir}/svk-commit444.tmp" echo 'diff-contains-arch-inventory-file' > "${dir}/.arch-inventory" echo 'diff-contains-hg-tags-file' > "${dir}/.hgtags" echo 'diff-contains-cvs-conflict-copy' > "${dir}/.#foo.1.1" echo 'diff-contains-svn-conflict-file' > "${dir}/foo.r1352" echo 'diff-contains-patch-failure-file' > "${dir}/foo.rej" echo 'diff-contains-editor-backup-file' > "${dir}/foo~" lintian-2.5.22ubuntu1/t/tests/cruft-general-diff/tags0000664000000000000000000000255512077065715017427 0ustar E: cruft-general-diff source: debian-files-list-in-source E: cruft-general-diff source: diff-contains-cmake-cache-file CMakeCache.txt W: cruft-general-diff source: diff-contains-arch-control-dir {arch} W: cruft-general-diff source: diff-contains-arch-inventory-file .arch-inventory W: cruft-general-diff source: diff-contains-bts-control-dir .be W: cruft-general-diff source: diff-contains-bzr-control-dir .bzr W: cruft-general-diff source: diff-contains-cvs-conflict-copy .#foo.1.1 W: cruft-general-diff source: diff-contains-cvs-control-dir CVS W: cruft-general-diff source: diff-contains-editor-backup-file foo~ W: cruft-general-diff source: diff-contains-git-control-dir .git W: cruft-general-diff source: diff-contains-hg-control-dir .hg W: cruft-general-diff source: diff-contains-hg-tags-file .hgtags W: cruft-general-diff source: diff-contains-patch-failure-file foo.rej W: cruft-general-diff source: diff-contains-quilt-control-dir .pc W: cruft-general-diff source: diff-contains-substvars debian/somepackage.substvars W: cruft-general-diff source: diff-contains-substvars debian/substvars W: cruft-general-diff source: diff-contains-svk-commit-file svk-commit444.tmp W: cruft-general-diff source: diff-contains-svn-commit-file svn-commit.tmp W: cruft-general-diff source: diff-contains-svn-conflict-file foo.r1352 W: cruft-general-diff source: diff-contains-svn-control-dir .svn lintian-2.5.22ubuntu1/t/tests/cruft-general-diff/desc0000664000000000000000000000136612077065715017406 0ustar Testname: cruft-general-diff Sequence: 6000 Version: 1.0-1 Type: non-native Description: Check for cruft added in the diff Test-For: debian-files-list-in-source diff-contains-arch-control-dir diff-contains-arch-inventory-file diff-contains-bts-control-dir diff-contains-bzr-control-dir diff-contains-cmake-cache-file diff-contains-cvs-conflict-copy diff-contains-cvs-control-dir diff-contains-editor-backup-file diff-contains-git-control-dir diff-contains-hg-control-dir diff-contains-hg-tags-file diff-contains-patch-failure-file diff-contains-quilt-control-dir diff-contains-substvars diff-contains-svk-commit-file diff-contains-svn-commit-file diff-contains-svn-conflict-file diff-contains-svn-control-dir References: Debian Bug#598251 lintian-2.5.22ubuntu1/t/tests/cruft-general-diff/debian/0000775000000000000000000000000012310413205017736 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-general-diff/debian/debian/0000775000000000000000000000000012077065715021203 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-general-diff/debian/debian/somepackage.substvars0000664000000000000000000000001612077065715025435 0ustar misc:Depends= lintian-2.5.22ubuntu1/t/tests/cruft-general-diff/debian/debian/rules0000775000000000000000000000013712077065715022264 0ustar #!/usr/bin/make -f %: dh $@ override_dh_prep: dh_prep -X~ -Xrej clean: @echo 'Do nothing' lintian-2.5.22ubuntu1/t/tests/cruft-general-diff/debian/debian/substvars0000664000000000000000000000001612077065715023157 0ustar misc:Depends= lintian-2.5.22ubuntu1/t/tests/cruft-general-diff/debian/debian/files0000664000000000000000000000005512077065715022230 0ustar cruft-general-diff_1.0-1_all.deb devel extra lintian-2.5.22ubuntu1/t/tests/scripts-bashisms/0000775000000000000000000000000012077065715016371 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-bashisms/tags0000664000000000000000000001722612077065715017262 0ustar E: scripts-bashisms: maintainer-shell-script-fails-syntax-check prerm E: scripts-bashisms: read-in-maintainer-script postinst:14 E: scripts-bashisms: read-in-maintainer-script prerm:162 E: scripts-bashisms: read-in-maintainer-script prerm:164 E: scripts-bashisms: read-in-maintainer-script prerm:165 E: scripts-bashisms: read-in-maintainer-script prerm:166 E: scripts-bashisms: read-in-maintainer-script prerm:47 E: scripts-bashisms: read-in-maintainer-script prerm:48 E: scripts-bashisms: read-in-maintainer-script prerm:49 E: scripts-bashisms: read-in-maintainer-script prerm:50 E: scripts-bashisms: read-in-maintainer-script prerm:51 W: scripts-bashisms: possible-bashism-in-maintainer-script postinst:10 '. /usr/share/lintian/shell foo' W: scripts-bashisms: possible-bashism-in-maintainer-script postinst:11 '. "$(dirname $0)/shell"' W: scripts-bashisms: possible-bashism-in-maintainer-script postinst:14 'read' W: scripts-bashisms: possible-bashism-in-maintainer-script postinst:16 'H[0]=' W: scripts-bashisms: possible-bashism-in-maintainer-script postinst:17 '${H[0]}' W: scripts-bashisms: possible-bashism-in-maintainer-script postinst:18 '${#H[0]}' W: scripts-bashisms: possible-bashism-in-maintainer-script postinst:19 '${H[@]}' W: scripts-bashisms: possible-bashism-in-maintainer-script postinst:28 '${H[@]}' W: scripts-bashisms: possible-bashism-in-maintainer-script postinst:63 'echo -e' W: scripts-bashisms: possible-bashism-in-maintainer-script postinst:64 '${!foo}' W: scripts-bashisms: possible-bashism-in-maintainer-script postinst:66 'select foo' W: scripts-bashisms: possible-bashism-in-maintainer-script postinst:69 ' exec -l' W: scripts-bashisms: possible-bashism-in-maintainer-script postinst:70 ' exec -c' W: scripts-bashisms: possible-bashism-in-maintainer-script postinst:71 ' exec -a' W: scripts-bashisms: possible-bashism-in-maintainer-script postinst:73 'let ' W: scripts-bashisms: possible-bashism-in-maintainer-script postinst:74 'test -a' W: scripts-bashisms: possible-bashism-in-maintainer-script postinst:75 '$RANDOM' W: scripts-bashisms: possible-bashism-in-maintainer-script postinst:80 '$RANDOM' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:100 ' complete ' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:101 ' compgen ' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:102 ' declare ' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:105 '.foobar() {' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:106 ' typeset ' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:107 ' disown ' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:108 ' builtin ' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:109 ' set -B' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:110 ' alias -p' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:111 ' unalias -a' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:116 'ulimit' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:117 'shopt' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:118 'type ' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:119 'time ' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:12 '[ "$2" == ' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:120 'dirs' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:121 ' <(tac a)' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:123 'pushd' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:126 'local -x' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:128 'popd' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:130 'readonly -f' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:132 '/dev/tcp' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:134 'export -x' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:138 'sh -D' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:139 'sh --foo' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:140 'sh +O' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:143 ' {a,b}' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:151 ' foo.bar()' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:156 'foobar@() ' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:16 'function foo(' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:164 'read -r' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:165 'read -p' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:166 'read --fish' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:168 'source "$BAR"' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:169 'source '$BAR'' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:170 'source ~/bar' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:171 'source a' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:19 '&>' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:22 'source $FOO' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:26 '[[' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:43 '${line:3:1}' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:47 'read -x' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:48 'read -x' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:51 'read' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:53 'echo "a\\b"' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:54 'echo 'a\nb'' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:56 '${UID' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:57 '$EUID' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:58 '$SHLVL' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:59 '$DIRSTACK' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:60 '$SECONDS' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:62 '$BASH_FOO' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:63 '$SHELLOPTS' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:64 '$PIPESTATUS' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:66 '<<<' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:69 'VAR+=' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:72 ' echo -n -e' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:73 ' echo -e' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:74 ' echo -en' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:75 ' echo -ne' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:80 'ech.os() {' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:82 '>&bar' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:83 '>& bar' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:87 ' echo "abc\nxyz"' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:88 ' echo 'xyz\rabc'' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:91 ' echo -e' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:92 ' echo -ne' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:93 ' echo -e' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:96 'foobar.() {' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:97 ' suspend ' W: scripts-bashisms: possible-bashism-in-maintainer-script prerm:99 ' caller ' lintian-2.5.22ubuntu1/t/tests/scripts-bashisms/desc0000664000000000000000000000021412077065715017227 0ustar Testname: scripts-bashisms Sequence: 6000 Version: 1.0 Description: Check bashism detection Test-For: possible-bashism-in-maintainer-script lintian-2.5.22ubuntu1/t/tests/scripts-bashisms/debian/0000775000000000000000000000000012077065715017613 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-bashisms/debian/debian/0000775000000000000000000000000012077065715021035 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-bashisms/debian/debian/postinst0000664000000000000000000000303212077065715022641 0ustar #! /bin/sh -e # valid . /usr/share/lintian/shell || exit 0 . /usr/share/lintian/shell >/dev/null . /usr/share/lintian/shell 2>/dev/null . /usr/share/lintian/shell /etc/config-file <<'EOF' echo "All of the array is: ${H[@]}" EOF # But this isn't. cat '</dev/null } source $FOO trap "echo hi" EXIT HUP 3 if [[ "$2" = "purge" ]]; then kill -HUP $$ fi #this is ok though if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then echo 1 fi # More false positives for bashism checks. None of these are errors. echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//' echo "$line" | grep -q "${fonts},${foo}" echo '$[1+2]' printf "foo |& bar" perl -e "print q( kill -HUP $? )" # Still catch disallowed expansions in double-quotes, though. echo "${line:3:1}" # More bashisms checks read -x foo read -x read -r foo read foo read echo "a\\b" echo 'a\nb' echo "${UID}" echo "$EUID" echo "$SHLVL" echo "$DIRSTACK" echo "$SECONDS" echo "$BASH" echo "$BASH_FOO" echo "$SHELLOPTS" echo "$PIPESTATUS" bar="$(cut '-d|' -f2 <<< "$foo")" VAR=1 VAR+=a echos() { echo -n -e "bar" echo -e -n "bar" echo -en "bar" echo -ne "bar" echo "bar" echo "echo -e foo" } ech.os() { echo foo >& 2 echo foo >&bar echo foo >& bar } echoes() { echo "abc\nxyz" echo 'xyz\rabc' echo foo\cbar echo -e "abc\nxyz" echo -net 'xyz\rabc' echo -e foo\cbar } foobar.() { suspend x suspended x caller x complete x compgen x declare -a foo } .foobar() { typeset -x bar disown 1 builtin foo set -B alias -p unalias -a } IFS="()" ulimit shopt type -v bar time ls dirs diff <(tac a) <(tac b) pushd local foo=bar local -x foo popd readonly -f echo bar > /dev/tcp export x export -x x export -p x sh -x sh -D sh --foo sh +O # Brace expansion checks echo {a,b} echo {abc},{bcd} foobar() { # This is a function } foo.bar() ( # This is a function with a bad name ) foobar@() # foo { # As is this } # This is ok read -r foo # but these aren't read -r read -p "Would you like to restart the service?" foo bar read --fish source "$BAR" source '$BAR' source ~/bar source a # An example from the X maintainer scripts that used to trigger the trap # bashism check. trap "message;\ message \"Received signal. Aborting $THIS_PACKAGE package $THIS_SCRIPT script.\";\ message;\ exit 1" HUP INT QUIT TERM # Also allow for extended single quotes containing double quotes. trap 'message; message "Received signal. Aborting $THIS_PACKAGE package $THIS_SCRIPT script."; message; exit 1' HUP INT QUIT TERM #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/menus-script-check-ok/0000775000000000000000000000000012077065715017206 5ustar lintian-2.5.22ubuntu1/t/tests/menus-script-check-ok/tags0000664000000000000000000000046012077065715020067 0ustar W: menus-script-check-ok: possible-bashism-in-maintainer-script postinst:11 'if type ' W: menus-script-check-ok: possible-bashism-in-maintainer-script postrm:3 'if type ' W: menus-script-check-ok: postinst-has-useless-call-to-install-docs W: menus-script-check-ok: prerm-has-useless-call-to-install-docs lintian-2.5.22ubuntu1/t/tests/menus-script-check-ok/desc0000664000000000000000000000053712077065715020054 0ustar Testname: menus-script-check-ok Sequence: 6000 Version: 1.0 Description: Correct program checks in maintainer scripts Test-For: postinst-has-useless-call-to-install-docs prerm-has-useless-call-to-install-docs Test-Against: maintainer-script-does-not-check-for-existence-of-installdocs maintainer-script-does-not-check-for-existence-of-updatemenus lintian-2.5.22ubuntu1/t/tests/menus-script-check-ok/debian/0000775000000000000000000000000012077065715020430 5ustar lintian-2.5.22ubuntu1/t/tests/menus-script-check-ok/debian/debian/0000775000000000000000000000000012077065715021652 5ustar lintian-2.5.22ubuntu1/t/tests/menus-script-check-ok/debian/debian/test-script.10000664000000000000000000000017312077065715024216 0ustar .TH test-script 1 .SH NAME test\-script \- some test script .SH SYNOPSIS .B test\-script .SH DESCRIPTION Some test script. lintian-2.5.22ubuntu1/t/tests/menus-script-check-ok/debian/debian/test-doc.txt0000664000000000000000000000003112077065715024127 0ustar This is a test document. lintian-2.5.22ubuntu1/t/tests/menus-script-check-ok/debian/debian/install0000664000000000000000000000031212077065715023237 0ustar debian/test-doc.txt usr/share/doc/menus-script-check-ok debian/test-doc usr/share/doc-base debian/test-menu usr/share/menu debian/test-script usr/bin debian/test-script.1 usr/share/man/man1 lintian-2.5.22ubuntu1/t/tests/menus-script-check-ok/debian/debian/test-script0000664000000000000000000000005312077065715024054 0ustar #!/bin/sh echo 'This script does nothing.' lintian-2.5.22ubuntu1/t/tests/menus-script-check-ok/debian/debian/test-doc0000664000000000000000000000031412077065715023315 0ustar Document: test-doc Title: Test document for Lintian test Author: Russ Allbery Abstract: This is just a test document Section: Debian Format: text Files: /usr/share/doc/menus-script-check-ok/test-doc.txt lintian-2.5.22ubuntu1/t/tests/menus-script-check-ok/debian/debian/test-menu0000664000000000000000000000022412077065715023514 0ustar ?package(menus-script-check-ok):\ section="Applications/Programming"\ needs="text"\ title="Test menu entry"\ command="/usr/bin/test-script" lintian-2.5.22ubuntu1/t/tests/menus-script-check-ok/debian/debian/postinst0000664000000000000000000000075212077065715023464 0ustar #!/bin/sh set -e # Checks that the maintainer script checks for the existence of programs that # it calls. This should produce no warnings except a bashism warning about # using type, a warning about the deprecated wm-menu-config invocation, and a # warning for calling the deprecated install-docs outside of a trigger. if [ -x /usr/bin/update-menus ] ; then update-menus fi if type install-docs >/dev/null 2>&1 ; then install-docs -i /usr/share/doc-base/test-doc fi #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/menus-script-check-ok/debian/debian/postrm0000664000000000000000000000013612077065715023121 0ustar #!/bin/sh set -e if type update-menus >/dev/null 2>&1 ; then update-menus fi #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/menus-script-check-ok/debian/debian/prerm0000664000000000000000000000016212077065715022721 0ustar #!/bin/sh set -e if [ -x "`which install-docs 2>/dev/null`" ] ; then install-docs -r test-doc fi #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/watch-file-should-mangle/0000775000000000000000000000000012310413205017630 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-should-mangle/tags0000664000000000000000000000024712077065716020540 0ustar W: watch-file-should-mangle source: debian-watch-file-should-mangle-version line 11 W: watch-file-should-mangle source: debian-watch-file-should-mangle-version line 5 lintian-2.5.22ubuntu1/t/tests/watch-file-should-mangle/desc0000664000000000000000000000026512077065716020520 0ustar Testname: watch-file-should-mangle Sequence: 6000 Type: non-native Version: 1+dfsg-1 Description: Watch file should mangle version Test-For: debian-watch-file-should-mangle-version lintian-2.5.22ubuntu1/t/tests/watch-file-should-mangle/debian/0000775000000000000000000000000012310413205021052 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-should-mangle/debian/debian/0000775000000000000000000000000012077065716022320 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-should-mangle/debian/debian/watch0000664000000000000000000000062312077065716023352 0ustar # watch file with no version mangling, even though there's a dfsg in the # package version number. version=2 http://www.example.com/dist/ dh7-test\.([\d.]+)\.tar\.gz debian uupdate # version mangling is not needed in this case: http://www.example.com/dist/ dh7-test\.([\d.]+)\.tar\.gz 0.24 uupdate # version mangling *is* needed in this case: http://www.example.com/dist/ dh7-test\.([\d.]+)\.tar\.gz lintian-2.5.22ubuntu1/t/tests/cruft-native-dash-version/0000775000000000000000000000000012077065715020102 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-native-dash-version/tags0000664000000000000000000000010612077065715020760 0ustar W: cruft-native-dash-version source: native-package-with-dash-version lintian-2.5.22ubuntu1/t/tests/cruft-native-dash-version/desc0000664000000000000000000000026212077065715020743 0ustar Testname: cruft-native-dash-version Sequence: 6000 Version: 1.0-1 Type: native Description: Test for native packages with dash version Test-For: native-package-with-dash-version lintian-2.5.22ubuntu1/t/tests/cruft-crlf-eols/0000775000000000000000000000000012077065714016101 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-crlf-eols/tags0000664000000000000000000000021612077065714016761 0ustar E: cruft-crlf-eols source: control-file-with-CRLF-EOLs debian/changelog E: cruft-crlf-eols source: control-file-with-CRLF-EOLs debian/control lintian-2.5.22ubuntu1/t/tests/cruft-crlf-eols/desc0000664000000000000000000000023712077065714016744 0ustar Testname: cruft-crlf-eols Sequence: 6000 Version: 1.0 Description: Check that control files with CRLF EOLs are reported Test-For: control-file-with-CRLF-EOLs lintian-2.5.22ubuntu1/t/tests/cruft-crlf-eols/debian/0000775000000000000000000000000012077065714017323 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-crlf-eols/debian/dummy0000664000000000000000000000001312077065714020373 0ustar dummy file lintian-2.5.22ubuntu1/t/tests/cruft-crlf-eols/debian/debian/0000775000000000000000000000000012310413206020524 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-crlf-eols/debian/debian/changelog.in0000664000000000000000000000027512310413206023007 0ustar {$source} ({$version}) unstable; urgency=low * Lintian Test Suite. * Test: {$testname} * Suppress "should close ITP bug" messages. (Closes: #123456) -- {$author} {$date} lintian-2.5.22ubuntu1/t/tests/cruft-crlf-eols/debian/debian/install0000664000000000000000000000003112077065714022130 0ustar dummy usr/share/doc/foo/ lintian-2.5.22ubuntu1/t/tests/cruft-crlf-eols/debian/debian/control.in0000664000000000000000000000074512310413206022542 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/tests/fields-depends-metapackage/0000775000000000000000000000000012077065715020221 5ustar lintian-2.5.22ubuntu1/t/tests/fields-depends-metapackage/tags0000664000000000000000000000013312077065715021077 0ustar E: fields-depends-metapackage source: build-depends-on-metapackage build-depends: xorg-dev lintian-2.5.22ubuntu1/t/tests/fields-depends-metapackage/desc0000664000000000000000000000031212077065715021056 0ustar Testname: fields-depends-metapackage Sequence: 6000 Version: 1.0 Description: Tests for package dependencies in a metapackage Test-For: build-depends-on-metapackage Test-Against: depends-on-metapackage lintian-2.5.22ubuntu1/t/tests/fields-depends-metapackage/debian/0000775000000000000000000000000012077065715021443 5ustar lintian-2.5.22ubuntu1/t/tests/fields-depends-metapackage/debian/debian/0000775000000000000000000000000012310413206022643 5ustar lintian-2.5.22ubuntu1/t/tests/fields-depends-metapackage/debian/debian/control.in0000664000000000000000000000074712310413206024663 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), xorg-dev Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, xorg Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/tests/debhelper-brace-expansion/0000775000000000000000000000000012310413144020060 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-brace-expansion/tags0000664000000000000000000000131212310413144020736 0ustar W: debhelper-brace-expansion source: brace-expansion-in-debhelper-config-file debian/debhelper-brace-problem-1.install W: debhelper-brace-expansion source: brace-expansion-in-debhelper-config-file debian/debhelper-brace-problem-2.install W: debhelper-brace-expansion source: brace-expansion-in-debhelper-config-file debian/debhelper-brace-problem-3.install W: debhelper-brace-expansion source: brace-expansion-in-debhelper-config-file debian/debhelper-brace-problem-4.install W: debhelper-brace-expansion source: brace-expansion-in-debhelper-config-file debian/debhelper-brace-problem-5.install W: debhelper-brace-expansion source: brace-expansion-in-debhelper-config-file debian/debhelper-brace-problem-6.install lintian-2.5.22ubuntu1/t/tests/debhelper-brace-expansion/desc0000664000000000000000000000032212077065715020737 0ustar Testname: debhelper-brace-expansion Sequence: 6000 Version: 1.0 Description: Check for brace expansion in debhelper config files Test-For: brace-expansion-in-debhelper-config-file References: Debian Bug#480939 lintian-2.5.22ubuntu1/t/tests/debhelper-brace-expansion/debian/0000775000000000000000000000000012077065715021323 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-brace-expansion/debian/debian/0000775000000000000000000000000012310413206022523 5ustar ././@LongLink0000644000000000000000000000015000000000000011577 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/debhelper-brace-expansion/debian/debian/debhelper-brace-problem-3.installlintian-2.5.22ubuntu1/t/tests/debhelper-brace-expansion/debian/debian/debhelper-brace-problem-3.inst0000664000000000000000000000003712310413144030225 0ustar {foo,}.txt usr/share/debhelper ././@LongLink0000644000000000000000000000015000000000000011577 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/debhelper-brace-expansion/debian/debian/debhelper-brace-problem-6.installlintian-2.5.22ubuntu1/t/tests/debhelper-brace-expansion/debian/debian/debhelper-brace-problem-6.inst0000664000000000000000000000003612310413144030227 0ustar {foo}.txt usr/share/debhelper lintian-2.5.22ubuntu1/t/tests/debhelper-brace-expansion/debian/debian/control.in0000664000000000000000000000623712310413206024543 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: debhelper-brace-problem-1 Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} another extra string This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Extra string. It may be an empty package. Package: debhelper-brace-problem-2 Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} another extra string three This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Extra string three. It may be an empty package. Package: debhelper-brace-problem-3 Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} three test case This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Extra string three test case. It may be an empty package. Package: debhelper-brace-problem-4 Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} fourth test case This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Extra string fourth test case. It may be an empty package. Package: debhelper-brace-problem-5 Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} fifth test case This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Extra string fifth test case. It may be an empty package. Package: debhelper-brace-problem-6 Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} sixth test case This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Extra string sixth test case. It may be an empty package. Package: debhelper-brace-problem-good Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} good test case This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Should not trigger lintian test. It may be an empty package. ././@LongLink0000644000000000000000000000015000000000000011577 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/debhelper-brace-expansion/debian/debian/debhelper-brace-problem-1.installlintian-2.5.22ubuntu1/t/tests/debhelper-brace-expansion/debian/debian/debhelper-brace-problem-1.inst0000664000000000000000000000003712310413144030223 0ustar {,foo}.txt usr/share/debhelper ././@LongLink0000644000000000000000000000015000000000000011577 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/debhelper-brace-expansion/debian/debian/debhelper-brace-problem-4.installlintian-2.5.22ubuntu1/t/tests/debhelper-brace-expansion/debian/debian/debhelper-brace-problem-4.inst0000664000000000000000000000004012310413144030220 0ustar {,,foo}.txt usr/share/debhelper ././@LongLink0000644000000000000000000000015300000000000011602 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/debhelper-brace-expansion/debian/debian/debhelper-brace-problem-good.installlintian-2.5.22ubuntu1/t/tests/debhelper-brace-expansion/debian/debian/debhelper-brace-problem-good.i0000664000000000000000000000007412310413144030267 0ustar \{.txt usr/share/debhelper \{good\}.txt usr/share/debhelper lintian-2.5.22ubuntu1/t/tests/debhelper-brace-expansion/debian/debian/rules0000775000000000000000000000026212077065715023625 0ustar #!/usr/bin/make -f %: dh $@ # Skip dh_install since there are braces in the install configuration file and # it would error out on at least some systems. override_dh_install: ././@LongLink0000644000000000000000000000015000000000000011577 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/debhelper-brace-expansion/debian/debian/debhelper-brace-problem-5.installlintian-2.5.22ubuntu1/t/tests/debhelper-brace-expansion/debian/debian/debhelper-brace-problem-5.inst0000664000000000000000000000004012310413144030221 0ustar {,foo,}.txt usr/share/debhelper ././@LongLink0000644000000000000000000000015000000000000011577 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/debhelper-brace-expansion/debian/debian/debhelper-brace-problem-2.installlintian-2.5.22ubuntu1/t/tests/debhelper-brace-expansion/debian/debian/debhelper-brace-problem-2.inst0000664000000000000000000000004212310413144030220 0ustar {foo,bar}.txt usr/share/debhelper lintian-2.5.22ubuntu1/t/tests/menus-foo-calls-bar/0000775000000000000000000000000012077065715016641 5ustar lintian-2.5.22ubuntu1/t/tests/menus-foo-calls-bar/tags0000664000000000000000000000121012077065715017514 0ustar E: menus-foo-calls-bar: maintainer-script-does-not-check-for-existence-of-installdocs postinst E: menus-foo-calls-bar: maintainer-script-does-not-check-for-existence-of-updatemenus postinst:5 E: menus-foo-calls-bar: postrm-calls-installdocs E: menus-foo-calls-bar: preinst-calls-installdocs E: menus-foo-calls-bar: preinst-calls-updatemenus E: menus-foo-calls-bar: prerm-calls-updatemenus W: menus-foo-calls-bar: postinst-has-useless-call-to-install-docs W: menus-foo-calls-bar: postinst-has-useless-call-to-update-menus W: menus-foo-calls-bar: postrm-has-useless-call-to-update-menus W: menus-foo-calls-bar: prerm-has-useless-call-to-install-docs lintian-2.5.22ubuntu1/t/tests/menus-foo-calls-bar/desc0000664000000000000000000000101312077065715017475 0ustar Testname: menus-foo-calls-bar Sequence: 6000 Version: 1.0 Description: check for installdocs and updatemenus calls Test-For: maintainer-script-does-not-check-for-existence-of-installdocs maintainer-script-does-not-check-for-existence-of-updatemenus postinst-has-useless-call-to-install-docs postinst-has-useless-call-to-update-menus postrm-calls-installdocs postrm-has-useless-call-to-update-menus preinst-calls-installdocs preinst-calls-updatemenus prerm-calls-updatemenus prerm-has-useless-call-to-install-docs lintian-2.5.22ubuntu1/t/tests/menus-foo-calls-bar/debian/0000775000000000000000000000000012077065715020063 5ustar lintian-2.5.22ubuntu1/t/tests/menus-foo-calls-bar/debian/debian/0000775000000000000000000000000012077065715021305 5ustar lintian-2.5.22ubuntu1/t/tests/menus-foo-calls-bar/debian/debian/postinst0000664000000000000000000000007112077065715023111 0ustar #!/bin/sh set -e install-docs update-menus #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/menus-foo-calls-bar/debian/debian/postrm0000664000000000000000000000024212077065715022552 0ustar #!/bin/sh set -e if which install-docs >/dev/null 2>&1 ; then install-docs fi if which update-menus >/dev/null 2>&1 ; then update-menus fi #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/menus-foo-calls-bar/debian/debian/preinst0000664000000000000000000000024212077065715022712 0ustar #!/bin/sh set -e if which install-docs >/dev/null 2>&1 ; then install-docs fi if which update-menus >/dev/null 2>&1 ; then update-menus fi #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/menus-foo-calls-bar/debian/debian/prerm0000664000000000000000000000024212077065715022353 0ustar #!/bin/sh set -e if which install-docs >/dev/null 2>&1 ; then install-docs fi if which update-menus >/dev/null 2>&1 ; then update-menus fi #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/binaries-doesnt-match-sonames/0000775000000000000000000000000012077065714020715 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-doesnt-match-sonames/tags0000664000000000000000000000006712077065714021601 0ustar W: mylibany: package-name-doesnt-match-sonames libany1 lintian-2.5.22ubuntu1/t/tests/binaries-doesnt-match-sonames/desc0000664000000000000000000000030312077065714021552 0ustar Testname: binaries-doesnt-match-sonames Sequence: 6000 Architecture: any Version: 1.0 Description: Test for library package that does not match SONAME Test-For: package-name-doesnt-match-sonames lintian-2.5.22ubuntu1/t/tests/binaries-doesnt-match-sonames/debian/0000775000000000000000000000000012077065714022137 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-doesnt-match-sonames/debian/Makefile0000664000000000000000000000076412077065714023606 0ustar CC=gcc MYCFLAGS=-Wall -Winline -O2 -fPIC CFLAGS:=$(MYCFLAGS) $(CPPFLAGS) $(CFLAGS) SONAMES:= libany.so.1 LIBFILES:= $(patsubst %,%.0.1, $(SONAMES)) all: $(LIBFILES) $(LIBFILES): code.o $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc clean: rm -f *.a *.o *.so* install: all install -m 0755 -d $(DESTDIR)/usr/lib install -m 0755 *.so* $(DESTDIR)/usr/lib for FILE in $(SONAMES) ; do \ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \ done .PHONY: install clean lintian-2.5.22ubuntu1/t/tests/binaries-doesnt-match-sonames/debian/code.c0000664000000000000000000000023512077065714023215 0ustar #include #include void e(char *p, int i, void (*f)(char *)){ char test[10]; memcpy(test, p, i); f(test); printf("%s", test); } lintian-2.5.22ubuntu1/t/tests/binaries-doesnt-match-sonames/debian/debian/0000775000000000000000000000000012310413206023340 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-doesnt-match-sonames/debian/debian/control.in0000664000000000000000000000070412310413206025351 0ustar Source: {$source} Priority: extra Section: libs Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: mylibany Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/tests/binaries-doesnt-match-sonames/debian/debian/mylibany.symbols0000664000000000000000000000005212077065714026614 0ustar libany.so.1 mylibany #MINVER# e@Base 1.0 lintian-2.5.22ubuntu1/t/tests/changelog-file-dch-wrong-name-native/0000775000000000000000000000000012077065714022026 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-dch-wrong-name-native/tags0000664000000000000000000000023312077065714022705 0ustar W: changelog-file-dch-wrong-name-native: wrong-name-for-changelog-of-native-package usr/share/doc/changelog-file-dch-wrong-name-native/changelog.Debian.gz lintian-2.5.22ubuntu1/t/tests/changelog-file-dch-wrong-name-native/desc0000664000000000000000000000027112077065714022667 0ustar Testname: changelog-file-dch-wrong-name-native Sequence: 6000 Version: 1.0 Description: Test if Debian changelog has the wrong name Test-For: wrong-name-for-changelog-of-native-package lintian-2.5.22ubuntu1/t/tests/changelog-file-dch-wrong-name-native/debian/0000775000000000000000000000000012077065714023250 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-dch-wrong-name-native/debian/debian/0000775000000000000000000000000012077065714024472 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-dch-wrong-name-native/debian/debian/rules0000775000000000000000000000030612077065714025551 0ustar #!/usr/bin/make -f PKG:=$(shell dh_listpackages) DOC_DIR:=debian/$(PKG)/usr/share/doc/$(PKG) %: dh $@ override_dh_md5sums: mv $(DOC_DIR)/changelog.gz $(DOC_DIR)/changelog.Debian.gz dh_md5sums lintian-2.5.22ubuntu1/t/tests/group-checks-file-conflict/0000775000000000000000000000000012077065715020201 5ustar lintian-2.5.22ubuntu1/t/tests/group-checks-file-conflict/tags0000664000000000000000000000014512077065715021062 0ustar W: group-checks-file-conflict source: binaries-have-file-conflict pkga pkgb usr/share/pkga/data-file lintian-2.5.22ubuntu1/t/tests/group-checks-file-conflict/desc0000664000000000000000000000021712077065715021042 0ustar Testname: group-checks-file-conflict Sequence: 6000 Version: 1.0 Description: Test for overlapping files Test-For: binaries-have-file-conflict lintian-2.5.22ubuntu1/t/tests/group-checks-file-conflict/debian/0000775000000000000000000000000012077065715021423 5ustar lintian-2.5.22ubuntu1/t/tests/group-checks-file-conflict/debian/data-file0000664000000000000000000000000712077065715023171 0ustar README lintian-2.5.22ubuntu1/t/tests/group-checks-file-conflict/debian/debian/0000775000000000000000000000000012310413206022623 5ustar lintian-2.5.22ubuntu1/t/tests/group-checks-file-conflict/debian/debian/control.in0000664000000000000000000000136012310413206024633 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: pkga Architecture: all Depends: $\{misc:Depends\} Description: {$description} - pkga This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . pkga. Package: pkgb Architecture: all Depends: $\{misc:Depends\} Description: {$description} - pkgb This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . pkgb. lintian-2.5.22ubuntu1/t/tests/group-checks-file-conflict/debian/debian/rules0000664000000000000000000000023212077065715023717 0ustar #!/usr/bin/make -f %: dh $@ override_dh_install: for P in $$(dh_listpackages) ; do \ dh_install -p$$P data-file usr/share/pkga/ || exit 1 ;\ done lintian-2.5.22ubuntu1/t/tests/fields-qa-maint-name/0000775000000000000000000000000012077065715016764 5ustar lintian-2.5.22ubuntu1/t/tests/fields-qa-maint-name/tags0000664000000000000000000000026512077065715017650 0ustar E: fields-qa-maint-name source: wrong-debian-qa-group-name Debian QA E: fields-qa-maint-name: wrong-debian-qa-group-name Debian QA lintian-2.5.22ubuntu1/t/tests/fields-qa-maint-name/desc0000664000000000000000000000022212077065715017621 0ustar Testname: fields-qa-maint-name Sequence: 6000 Version: 1.0 Description: Test for the QA in Maintainer field Test-For: wrong-debian-qa-group-name lintian-2.5.22ubuntu1/t/tests/fields-qa-maint-name/debian/0000775000000000000000000000000012077065715020206 5ustar lintian-2.5.22ubuntu1/t/tests/fields-qa-maint-name/debian/debian/0000775000000000000000000000000012310413206021406 5ustar lintian-2.5.22ubuntu1/t/tests/fields-qa-maint-name/debian/debian/changelog.in0000664000000000000000000000023312310413206023663 0ustar {$source} ({$version}) unstable; urgency=low * Orphaned. * Lintian Test Suite. * Test: {$testname} -- Debian QA {$date} lintian-2.5.22ubuntu1/t/tests/fields-qa-maint-name/debian/debian/control.in0000664000000000000000000000075112310413206023421 0ustar Source: {$source} Priority: extra Section: devel Maintainer: Debian QA Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: all Depends: $\{misc:Depends\}, Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/fields-java/0000775000000000000000000000000012310413206015236 5ustar lintian-2.5.22ubuntu1/t/tests/fields-java/tags0000664000000000000000000000114012310413206016113 0ustar E: fields-java source: build-depends-on-obsolete-package build-depends: openjdk-6-jdk I: libfields-java-java: javalib-but-no-public-jars I: libfields-java-java: ored-depends-on-obsolete-package depends: openjdk-6-jre W: fields-java source: build-depends-on-an-obsolete-java-package java-compiler W: fields-java source: build-depends-on-specific-java-doc-package openjdk-6-doc W: fields-java source: virtual-package-depends-without-real-package-depends build-depends: java-compiler W: libfields-java-java-doc: depends-on-specific-java-doc-package recommends W: libfields-java-java: needless-dependency-on-jre lintian-2.5.22ubuntu1/t/tests/fields-java/desc0000664000000000000000000000042612310413206016101 0ustar Testname: fields-java Sequence: 6000 Version: 1.0 Description: General tests for java package (build) dependencies Test-For: build-depends-on-specific-java-doc-package build-depends-on-an-obsolete-java-package depends-on-specific-java-doc-package needless-dependency-on-jre lintian-2.5.22ubuntu1/t/tests/fields-java/debian/0000775000000000000000000000000012077065715016502 5ustar lintian-2.5.22ubuntu1/t/tests/fields-java/debian/some-file0000664000000000000000000000021312077065715020301 0ustar This file is installed into /usr/share/lintian just to ensure that this package doesn't look like a metapackage for the dependency checks. lintian-2.5.22ubuntu1/t/tests/fields-java/debian/debian/0000775000000000000000000000000012310413206017702 5ustar lintian-2.5.22ubuntu1/t/tests/fields-java/debian/debian/install0000664000000000000000000000003412077065715021312 0ustar some-file usr/share/lintian lintian-2.5.22ubuntu1/t/tests/fields-java/debian/debian/control.in0000664000000000000000000000216212310413206021713 0ustar Source: {$source} Priority: extra Section: java Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), openjdk-6-doc, openjdk-6-jdk, java-compiler Package: lib{$source}-java Architecture: all Depends: $\{misc:Depends\}, default-jre-headless | java-runtime-headless | java2-runtime-headless | kaffe | gcj-jdk | openjdk-6-jre | gcj-4.5-jre Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: lib{$source}-java-doc Architecture: all Section: doc Depends: $\{misc:Depends\} Recommends: openjdk-6-doc # Negative testing as well, this should not be triggered. Replaces: openjdk-6-doc Description: {$description} - API This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . Doc package. lintian-2.5.22ubuntu1/t/tests/control-file-suggests-itself/0000775000000000000000000000000012077065714020615 5ustar lintian-2.5.22ubuntu1/t/tests/control-file-suggests-itself/tags0000664000000000000000000000015012077065714021472 0ustar W: control-file-suggests-itself source: package-depends-on-itself control-file-suggests-itself suggests lintian-2.5.22ubuntu1/t/tests/control-file-suggests-itself/desc0000664000000000000000000000022512077065714021455 0ustar Testname: control-file-suggests-itself Sequence: 6000 Version: 1.0 Description: Test a package Suggesting itself Test-For: package-depends-on-itself lintian-2.5.22ubuntu1/t/tests/control-file-suggests-itself/debian/0000775000000000000000000000000012077065714022037 5ustar lintian-2.5.22ubuntu1/t/tests/control-file-suggests-itself/debian/debian/0000775000000000000000000000000012310413206023240 5ustar lintian-2.5.22ubuntu1/t/tests/control-file-suggests-itself/debian/debian/control.in0000664000000000000000000000101112310413206025241 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Suggests: {$source} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/files-privacybreach/0000775000000000000000000000000012313551606017005 5ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/tags0000664000000000000000000001636712313551606017703 0ustar E: files-privacybreach: privacy-breach-donation usr/share/files-privacy-breach/privacy-breach-donation/flattr.html E: files-privacybreach: privacy-breach-donation usr/share/files-privacy-breach/privacy-breach-donation/flattrbuttonhtml4.xml E: files-privacybreach: privacy-breach-donation usr/share/files-privacy-breach/privacy-breach-donation/flattrbuttonhtml5.xml E: files-privacybreach: privacy-breach-donation usr/share/files-privacy-breach/privacy-breach-donation/flattrload.js E: files-privacybreach: privacy-breach-donation usr/share/files-privacy-breach/privacy-breach-donation/flattrloadmanual.js E: files-privacybreach: privacy-breach-donation usr/share/files-privacy-breach/privacy-breach-donation/flattrrender.html E: files-privacybreach: privacy-breach-donation usr/share/files-privacy-breach/privacy-breach-donation/flattrrender.xml E: files-privacybreach: privacy-breach-donation usr/share/files-privacy-breach/privacy-breach-donation/flattrrenderonload.xml E: files-privacybreach: privacy-breach-facebook usr/share/files-privacy-breach/privacy-breach-facebook/facebook.xml E: files-privacybreach: privacy-breach-facebook usr/share/files-privacy-breach/privacy-breach-facebook/facebookfbmlbody2008.html E: files-privacybreach: privacy-breach-facebook usr/share/files-privacy-breach/privacy-breach-facebook/facebookfbmlbody2013.html E: files-privacybreach: privacy-breach-facebook usr/share/files-privacy-breach/privacy-breach-facebook/facebookhtml5like20130810.xml E: files-privacybreach: privacy-breach-facebook usr/share/files-privacy-breach/privacy-breach-facebook/facebookhtml5likebody20130810.xml E: files-privacybreach: privacy-breach-facebook usr/share/files-privacy-breach/privacy-breach-facebook/facebookxfbmllike20130810.xml E: files-privacybreach: privacy-breach-google-adsense usr/share/files-privacy-breach/privacy-breach-google-adsense/adsense.html E: files-privacybreach: privacy-breach-google-adsense usr/share/files-privacy-breach/privacy-breach-google-adsense/adsenseimagemagick.xml E: files-privacybreach: privacy-breach-google-adsense usr/share/files-privacy-breach/privacy-breach-google-adsense/adsenseonlyadds.html E: files-privacybreach: privacy-breach-google-adsense usr/share/files-privacy-breach/privacy-breach-google-adsense/adsenseonlyvar.js E: files-privacybreach: privacy-breach-google-adsense usr/share/files-privacy-breach/privacy-breach-google-adsense/urchin.js E: files-privacybreach: privacy-breach-google-adsense usr/share/files-privacy-breach/privacy-breach-google-adsense/urchinconstructor.js E: files-privacybreach: privacy-breach-google-adsense usr/share/files-privacy-breach/privacy-breach-google-adsense/urchinfragment.xml E: files-privacybreach: privacy-breach-google-adsense usr/share/files-privacy-breach/privacy-breach-google-adsense/urchinloader.js E: files-privacybreach: privacy-breach-google-cse usr/share/files-privacy-breach/privacy-breach-google-cse/googlecse.css E: files-privacybreach: privacy-breach-google-cse usr/share/files-privacy-breach/privacy-breach-google-cse/googlecse.xml E: files-privacybreach: privacy-breach-google-cse usr/share/files-privacy-breach/privacy-breach-google-cse/googlecseform.xml E: files-privacybreach: privacy-breach-google-cse usr/share/files-privacy-breach/privacy-breach-google-cse/googlecseformtracking.xml E: files-privacybreach: privacy-breach-google-cse usr/share/files-privacy-breach/privacy-breach-google-cse/googlecseimagemagick.js E: files-privacybreach: privacy-breach-google-cse usr/share/files-privacy-breach/privacy-breach-google-cse/googlecsejs.xml E: files-privacybreach: privacy-breach-google-plus usr/share/files-privacy-breach/privacy-breach-google-plus/asyncload.html E: files-privacybreach: privacy-breach-google-plus usr/share/files-privacy-breach/privacy-breach-google-plus/explicitload.html E: files-privacybreach: privacy-breach-google-plus usr/share/files-privacy-breach/privacy-breach-google-plus/simplebutton.xml E: files-privacybreach: privacy-breach-logo usr/share/files-privacy-breach/privacy-breach-logo/logosourceforge.xml E: files-privacybreach: privacy-breach-piwik usr/share/files-privacy-breach/privacy-breach-piwik/piwik.html E: files-privacybreach: privacy-breach-piwik usr/share/files-privacy-breach/privacy-breach-piwik/piwikvariant.html E: files-privacybreach: privacy-breach-statistics-website usr/share/files-privacy-breach/privacy-breach-statistics-website/statcounter.xml E: files-privacybreach: privacy-breach-statistics-website usr/share/files-privacy-breach/privacy-breach-statistics-website/statcounter2.js E: files-privacybreach: privacy-breach-twitter usr/share/files-privacy-breach/privacy-breach-twitter/awstat.xml E: files-privacybreach: privacy-breach-twitter usr/share/files-privacy-breach/privacy-breach-twitter/official.js E: files-privacybreach: privacy-breach-w3c-valid-html usr/share/files-privacy-breach/privacy-breach-w3c-valid-html/htmlvalid.html X: files-privacybreach: privacy-breach-generic usr/share/files-privacy-breach/privacy-breach-generic/applet.html 1984.os/trackme X: files-privacybreach: privacy-breach-generic usr/share/files-privacy-breach/privacy-breach-generic/div.html trackme.1984/index-2.html X: files-privacybreach: privacy-breach-generic usr/share/files-privacy-breach/privacy-breach-generic/embed.html 1984.os/givemydata.swf X: files-privacybreach: privacy-breach-generic usr/share/files-privacy-breach/privacy-breach-generic/externalimg.xml 1984.ow/bigbrotheriswatchingyou.png X: files-privacybreach: privacy-breach-generic usr/share/files-privacy-breach/privacy-breach-generic/frame.html 1984.os/trackme_frame_c.htm X: files-privacybreach: privacy-breach-generic usr/share/files-privacy-breach/privacy-breach-generic/genericwebsite.html www.example.com/trackme.js X: files-privacybreach: privacy-breach-generic usr/share/files-privacy-breach/privacy-breach-generic/iframe.html 1984.ow/bigbrotheriswatchingyou.html X: files-privacybreach: privacy-breach-generic usr/share/files-privacy-breach/privacy-breach-generic/import.css 1984.wo/importtracking.css X: files-privacybreach: privacy-breach-generic usr/share/files-privacy-breach/privacy-breach-generic/importcss.html trackme.css/track.css X: files-privacybreach: privacy-breach-generic usr/share/files-privacy-breach/privacy-breach-generic/input.html 1984.os/hiddentrackme.png X: files-privacybreach: privacy-breach-generic usr/share/files-privacy-breach/privacy-breach-generic/link.xml 1984.org/style.css X: files-privacybreach: privacy-breach-generic usr/share/files-privacy-breach/privacy-breach-generic/object.html 1984.os/hellotrackme.swf X: files-privacybreach: privacy-breach-generic usr/share/files-privacy-breach/privacy-breach-generic/source.html 1984.os/tracking.mp3 X: files-privacybreach: privacy-breach-generic usr/share/files-privacy-breach/privacy-breach-generic/track.html 1984.os/notracking.vtt X: files-privacybreach: privacy-breach-generic usr/share/files-privacy-breach/privacy-breach-generic/video.html 1984.os/tuxistrackingme.ogg X: files-privacybreach: privacy-breach-generic usr/share/files-privacy-breach/privacy-breach-generic/videoposter.html 1984.os/tuxistrackingme.ogg X: files-privacybreach: privacy-breach-generic usr/share/files-privacy-breach/privacy-breach-google-plus/asyncload.html www.example.com X: files-privacybreach: privacy-breach-generic usr/share/files-privacy-breach/privacy-breach-google-plus/explicitload.html www.example.com lintian-2.5.22ubuntu1/t/tests/files-privacybreach/desc0000664000000000000000000000063612313551606017653 0ustar Testname: files-privacybreach Sequence: 6000 Version: 1.0 Description: Check for different html privacy breach Test-For: privacy-breach-generic privacy-breach-google-adsense privacy-breach-google-cse privacy-breach-google-plus privacy-breach-donation privacy-breach-facebook privacy-breach-logo privacy-breach-piwik privacy-breach-statistics-website privacy-breach-twitter privacy-breach-w3c-valid-html lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/0000775000000000000000000000000012310413206020215 5ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/0000775000000000000000000000000012313551606021016 5ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-adsense/0000775000000000000000000000000012310413206026575 5ustar ././@LongLink0000644000000000000000000000016000000000000011600 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-adsense/urchinconstructor.jslintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-adsense/urchincon0000664000000000000000000000036512310413206030514 0ustar var re = /loaded|complete/, gaHost = ("https:" == window.doc.location.protocol) ? "https://ssl." : "http://www.", h = window.doc.getElementsByTagName("head")[0], n = construct.create('script', { src: gaHost + "google-analytics.com/ga.js" }, h);././@LongLink0000644000000000000000000000015500000000000011604 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-adsense/adsenseonlyvar.jslintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-adsense/adsenseon0000664000000000000000000000044612310413206030503 0ustar google_ad_client = "pub-123456789"; google_ad_width = 728; google_ad_height = 90; google_ad_format = "728x90_as"; google_ad_type = "text_image"; google_color_border = "FFFFFF"; google_color_bg = "0000FF"; google_color_link = "FFFFFF"; google_color_text = "000000"; google_color_url = "008000"; ././@LongLink0000644000000000000000000000015600000000000011605 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-adsense/urchinfragment.xmllintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-adsense/urchinfra0000664000000000000000000000013212310413206030475 0ustar ././@LongLink0000644000000000000000000000015300000000000011602 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-adsense/urchinloader.jslintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-adsense/urchinloa0000664000000000000000000000052512310413206030506 0ustar function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); }././@LongLink0000644000000000000000000000016200000000000011602 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-adsense/adsenseimagemagick.xmllintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-adsense/adsenseim0000664000000000000000000000020112310413206030461 0ustar ././@LongLink0000644000000000000000000000015000000000000011577 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-adsense/adsense.htmllintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-adsense/adsense.h0000664000000000000000000000075012310413206030372 0ustar Test lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-adsense/urchin.js0000664000000000000000000000005112310413206030417 0ustar _uacct = "UA-2917240-2"; urchinTracker();././@LongLink0000644000000000000000000000016000000000000011600 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-adsense/adsenseonlyadds.htmllintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-adsense/adsenseon0000664000000000000000000000043212310413206030476 0ustar Test lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-logo/0000775000000000000000000000000012310413206024641 5ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-logo/logosourceforge.xml0000664000000000000000000000017412310413206030571 0ustar [SourceForge.net]lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-statistics-website/0000775000000000000000000000000012310413206027533 5ustar ././@LongLink0000644000000000000000000000015700000000000011606 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-statistics-website/statcounter2.jslintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-statistics-website/statc0000664000000000000000000000013212310413206030570 0ustar var sc_project=895001; var sc_invisible=1; var sc_partition=7; var sc_security="5ea85181";././@LongLink0000644000000000000000000000015700000000000011606 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-statistics-website/statcounter.xmllintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-statistics-website/statc0000664000000000000000000000112112310413206030567 0ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-donation/0000775000000000000000000000000012310413206025514 5ustar ././@LongLink0000644000000000000000000000014700000000000011605 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-donation/flattrrender.htmllintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-donation/flattrrender.ht0000664000000000000000000000072712310413206030553 0ustar
././@LongLink0000644000000000000000000000015300000000000011602 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-donation/flattrbuttonhtml4.xmllintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-donation/flattrbuttonhtm0000664000000000000000000000052512310413206030702 0ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-donation/flattrload.js0000664000000000000000000000041512310413206030206 0ustar (function() { var s = document.createElement('script'); var t = document.getElementsByTagName('script')[0]; s.type = 'text/javascript'; s.async = true; s.src = '//api.flattr.com/js/0.6/load.js?mode=auto'; t.parentNode.insertBefore(s, t); })();././@LongLink0000644000000000000000000000015400000000000011603 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-donation/flattrrenderonload.xmllintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-donation/flattrrenderonl0000664000000000000000000000023012310413206030637 0ustar ././@LongLink0000644000000000000000000000014600000000000011604 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-donation/flattrrender.xmllintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-donation/flattrrender.xm0000664000000000000000000000030712310413206030556 0ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-donation/flattr.html0000664000000000000000000000074412310413206027703 0ustar

Flattr

Flattr is a microdonation system. You donate a small amount every month and click Flattr buttons on worthy sites to share the donation among those sites, similar to a tip jar (for more details see Wikipedia's Flattr article).

././@LongLink0000644000000000000000000000015100000000000011600 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-donation/flattrloadmanual.jslintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-donation/flattrloadmanua0000664000000000000000000000014112310413206030611 0ustar window.onload = function(){ doSomeCoolStuffBeforeWeLoadTheFlattrButtons(); FlattrLoader.setup(); ././@LongLink0000644000000000000000000000015300000000000011602 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-donation/flattrbuttonhtml5.xmllintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-donation/flattrbuttonhtm0000664000000000000000000000057512310413206030707 0ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-generic/0000775000000000000000000000000012310413206025315 5ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-generic/import.css0000664000000000000000000000010512310413206027335 0ustar @import url("http://1984.wo/importtracking.css"); p { color : #fff; }lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-generic/track.html0000664000000000000000000000052712310413206027313 0ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-generic/div.html0000664000000000000000000000050512310413206026765 0ustar
Please enable javascript to track me.
lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-generic/input.html0000664000000000000000000000035312310413206027343 0ustar
Account number:
././@LongLink0000644000000000000000000000015000000000000011577 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-generic/genericwebsite.htmllintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-generic/genericwebsite.h0000664000000000000000000000036512310413206030471 0ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-generic/embed.html0000664000000000000000000000017512310413206027262 0ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-generic/videoposter.html0000664000000000000000000000022212310413206030542 0ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-generic/externalimg.xml0000664000000000000000000000013512310413206030355 0ustar Google lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-generic/video.html0000664000000000000000000000020112310413206027302 0ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-generic/applet.html0000664000000000000000000000026112310413206027467 0ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-generic/iframe.html0000664000000000000000000000024312310413206027445 0ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-generic/frame.html0000664000000000000000000000033412310413206027275 0ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-generic/link.xml0000664000000000000000000000012512310413206026772 0ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-generic/importcss.html0000664000000000000000000000023512310413206030226 0ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-generic/object.html0000664000000000000000000000027512310413206027455 0ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-generic/source.html0000664000000000000000000000032112310413206027477 0ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-facebook/0000775000000000000000000000000012310413206025452 5ustar ././@LongLink0000644000000000000000000000015700000000000011606 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-facebook/facebookfbmlbody2013.htmllintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-facebook/facebookfbmlbod0000664000000000000000000000027112310413206030474 0ustar ././@LongLink0000644000000000000000000000015700000000000011606 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-facebook/facebookfbmlbody2008.htmllintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-facebook/facebookfbmlbod0000664000000000000000000000030712310413206030474 0ustar ././@LongLink0000644000000000000000000000016300000000000011603 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-facebook/facebookxfbmllike20130810.xmllintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-facebook/facebookxfbmlli0000664000000000000000000000017712310413206030531 0ustar ././@LongLink0000644000000000000000000000016300000000000011603 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-facebook/facebookhtml5like20130810.xmllintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-facebook/facebookhtml5li0000664000000000000000000000023312310413206030443 0ustar
././@LongLink0000644000000000000000000000016700000000000011607 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-facebook/facebookhtml5likebody20130810.xmllintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-facebook/facebookhtml5li0000664000000000000000000000050612310413206030446 0ustar
lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-facebook/facebook.xml0000664000000000000000000000062512310413206027750 0ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/old-false-positive/0000775000000000000000000000000012310413206024512 5ustar ././@LongLink0000644000000000000000000000015000000000000011577 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/old-false-positive/privacy-breach-generic/lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/old-false-positive/privacy-breach-gener0000775000000000000000000000000012310413206030430 5ustar ././@LongLink0000644000000000000000000000016700000000000011607 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/old-false-positive/privacy-breach-generic/dublin-core.xmllintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/old-false-positive/privacy-breach-gener0000664000000000000000000000007212310413206030431 0ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-w3c-valid-html/0000775000000000000000000000000012310413206026434 5ustar ././@LongLink0000644000000000000000000000015200000000000011601 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-w3c-valid-html/htmlvalid.htmllintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-w3c-valid-html/htmlvalid0000664000000000000000000000054712310413206030351 0ustar test

Valid XHTML 1.0!

lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-twitter/0000775000000000000000000000000012313551606025415 5ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-twitter/official.js0000664000000000000000000000057612313551606027537 0ustar window.twttr = (function (d,s,id) { var t, js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js=d.createElement(s); js.id=id; js.src="https://platform.twitter.com/widgets.js"; fjs.parentNode.insertBefore(js, fjs); return window.twttr || (t = { _e: [], ready: function(f){ t._e.push(f) } }); }(document, "script", "twitter-wjs"));lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-twitter/awstat.xml0000664000000000000000000000067112313551606027446 0ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-cse/0000775000000000000000000000000012310413206025725 5ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-cse/googlecse.css0000664000000000000000000000007212310413206030405 0ustar @import url("http://www.google.com/cse/api/branding.css");lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-cse/googlecse.xml0000664000000000000000000000057412310413206030424 0ustar
././@LongLink0000644000000000000000000000015100000000000011600 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-cse/googlecseform.xmllintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-cse/googlecseform0000664000000000000000000000130612310413206030503 0ustar
Custom Search
././@LongLink0000644000000000000000000000016100000000000011601 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-cse/googlecseformtracking.xmllintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-cse/googlecseform0000664000000000000000000000126212310413206030504 0ustar ././@LongLink0000644000000000000000000000015700000000000011606 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-cse/googlecseimagemagick.jslintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-cse/googlecseimag0000664000000000000000000000065412310413206030462 0ustar // from imagemagick package google.load('search', '1', {language : 'en'}); google.setOnLoadCallback(function() { var customSearchControl = new google.search.CustomSearchControl('002546770416725192290:gpkm0aiuqzq'); customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET); var options = new google.search.DrawOptions(); options.setAutoComplete(true); customSearchControl.draw('cse', options); }, true); ././@LongLink0000644000000000000000000000014700000000000011605 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-cse/googlecsejs.xmllintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-cse/googlecsejs.x0000664000000000000000000000021512310413206030420 0ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-plus/0000775000000000000000000000000012313551606026150 5ustar ././@LongLink0000644000000000000000000000015100000000000011600 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-plus/simplebutton.xmllintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-plus/simplebutton0000664000000000000000000000015412313551606030620 0ustar ././@LongLink0000644000000000000000000000014700000000000011605 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-plus/asyncload.htmllintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-plus/asyncload.ht0000664000000000000000000000107012313551606030460 0ustar +1 Demo: Async load ././@LongLink0000644000000000000000000000015200000000000011601 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-plus/explicitload.htmllintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-google-plus/explicitload0000664000000000000000000000067612313551606030565 0ustar Demo: Explicit load of a +1 button
lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-piwik/0000775000000000000000000000000012310413206025024 5ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-piwik/piwik.html0000664000000000000000000000130612310413206027035 0ustar Test lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/src/privacy-breach-piwik/piwikvariant.html0000664000000000000000000000115612310413206030425 0ustar Test lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/debian/0000775000000000000000000000000012310413206021437 5ustar lintian-2.5.22ubuntu1/t/tests/files-privacybreach/debian/debian/install0000664000000000000000000000004712310413206023031 0ustar src/* /usr/share/files-privacy-breach/ lintian-2.5.22ubuntu1/t/tests/files-python-helpers/0000775000000000000000000000000012310413145017134 5ustar lintian-2.5.22ubuntu1/t/tests/files-python-helpers/tags0000664000000000000000000000011512310413145020012 0ustar E: python-foo: missing-dependency-on-python-support python-support (>= 0.90) lintian-2.5.22ubuntu1/t/tests/files-python-helpers/desc0000664000000000000000000000024712310413145020000 0ustar Testname: files-python-helpers Sequence: 6000 Version: 1.0 Description: Test tags for missing depends on python helpers Test-For: missing-dependency-on-python-support lintian-2.5.22ubuntu1/t/tests/files-python-helpers/debian/0000775000000000000000000000000012077065715020376 5ustar lintian-2.5.22ubuntu1/t/tests/files-python-helpers/debian/python-foo.private0000664000000000000000000000001412077065715024067 0ustar Hallo World lintian-2.5.22ubuntu1/t/tests/files-python-helpers/debian/debian/0000775000000000000000000000000012310413206021576 5ustar lintian-2.5.22ubuntu1/t/tests/files-python-helpers/debian/debian/install0000664000000000000000000000012212310413145023164 0ustar python-foo usr/share/python-support/ python-foo.private usr/share/python-support/ lintian-2.5.22ubuntu1/t/tests/files-python-helpers/debian/debian/control.in0000664000000000000000000000072212310413206023607 0ustar Source: {$source} Priority: extra Section: python Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: python-foo Architecture: all Depends: $\{misc:Depends\}, Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/files-python-helpers/debian/python-foo0000664000000000000000000000001412077065715022416 0ustar Hallo World lintian-2.5.22ubuntu1/t/tests/debconf-maintscripts-deps/0000775000000000000000000000000012310413144020121 5ustar lintian-2.5.22ubuntu1/t/tests/debconf-maintscripts-deps/tags0000664000000000000000000000053012310413144021000 0ustar W: debconf-maintscripts-deps: loads-obsolete-confmodule postrm:6 /usr/share/debconf/confmodule.sh W: debconf-maintscripts-deps: missing-debconf-dependency-for-preinst W: debconf-maintscripts-deps: postinst-does-not-load-confmodule W: debconf-maintscripts-deps: postinst-uses-db-input W: debconf-maintscripts-deps: postrm-does-not-purge-debconf lintian-2.5.22ubuntu1/t/tests/debconf-maintscripts-deps/desc0000664000000000000000000000045112310413144020762 0ustar Testname: debconf-maintscripts-deps Sequence: 6000 Version: 1.0 Description: Test for various debconf maintscripts and dep issues Test-For: loads-obsolete-confmodule missing-debconf-dependency-for-preinst postinst-does-not-load-confmodule postinst-uses-db-input postrm-does-not-purge-debconf lintian-2.5.22ubuntu1/t/tests/debconf-maintscripts-deps/debian/0000775000000000000000000000000012310413144021343 5ustar lintian-2.5.22ubuntu1/t/tests/debconf-maintscripts-deps/debian/debian/0000775000000000000000000000000012310413144022565 5ustar lintian-2.5.22ubuntu1/t/tests/debconf-maintscripts-deps/debian/debian/templates0000664000000000000000000000010512310413144024502 0ustar Template: debconf/translated Type: error _Description: Useless note lintian-2.5.22ubuntu1/t/tests/debconf-maintscripts-deps/debian/debian/po/0000775000000000000000000000000012310413144023203 5ustar lintian-2.5.22ubuntu1/t/tests/debconf-maintscripts-deps/debian/debian/po/da.po0000664000000000000000000000133512310413144024131 0ustar # Danish translations for PACKAGE package. # Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Niels Thykier , 2012. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-07-23 23:07+0200\n" "PO-Revision-Date: 2012-07-23 23:08+0200\n" "Last-Translator: Niels Thykier \n" "Language-Team: Danish\n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. Type: error #. Description #: ../templates:1001 msgid "Useless note" msgstr "Ubrugelig note" lintian-2.5.22ubuntu1/t/tests/debconf-maintscripts-deps/debian/debian/po/templates.pot0000664000000000000000000000123112310413144025722 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-07-23 23:07+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #. Type: error #. Description #: ../templates:1001 msgid "Useless note" msgstr "" lintian-2.5.22ubuntu1/t/tests/debconf-maintscripts-deps/debian/debian/po/POTFILES.in0000664000000000000000000000004412310413144024756 0ustar [type: gettext/rfc822deb] templates lintian-2.5.22ubuntu1/t/tests/debconf-maintscripts-deps/debian/debian/config0000664000000000000000000000012512310413144023753 0ustar #!/bin/sh set -e . /usr/share/debconf/confmodule db_get debconf/translated db_go lintian-2.5.22ubuntu1/t/tests/debconf-maintscripts-deps/debian/debian/rules0000664000000000000000000000072712310413144023650 0ustar #!/usr/bin/make -f PKG=debian/$(shell dh_listpackages) %: dh $@ override_dh_builddeb: # Manually copy the scripts - otherwise debhelper with insert # the "correct magic" in each of them. cp -a debian/preinst debian/postinst debian/postrm "$(PKG)/DEBIAN" chmod 0755 "$(PKG)/DEBIAN/preinst" "$(PKG)/DEBIAN/postinst" \ "$(PKG)/DEBIAN/postrm" sed -i '/#DEBHELPER#/ d' "$(PKG)/DEBIAN/preinst" \ "$(PKG)/DEBIAN/postinst" "$(PKG)/DEBIAN/postrm" dh_builddeb lintian-2.5.22ubuntu1/t/tests/debconf-maintscripts-deps/debian/debian/postinst0000664000000000000000000000011012310413144024363 0ustar #!/bin/sh set -e #DEBHELPER# db_input low debconf/translated db_go lintian-2.5.22ubuntu1/t/tests/debconf-maintscripts-deps/debian/debian/postrm0000664000000000000000000000022612310413144024034 0ustar #!/bin/sh set -e #DEBHELPER# if [ -f /usr/share/debconf/confmodule.sh ] ; then . /usr/share/debconf/confmodule.sh # no debconf purging fi lintian-2.5.22ubuntu1/t/tests/debconf-maintscripts-deps/debian/debian/preinst0000664000000000000000000000015212310413144024172 0ustar #!/bin/sh set -e . /usr/share/debconf/confmodule db_get debconf/translated || true db_go #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/watch-file-prerelease/0000775000000000000000000000000012310413205017220 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-prerelease/tags0000664000000000000000000000014312077065716020123 0ustar I: watch-file-prerelease source: debian-watch-file-should-uversionmangle-not-dversionmangle line 3 lintian-2.5.22ubuntu1/t/tests/watch-file-prerelease/desc0000664000000000000000000000032012077065716020100 0ustar Testname: watch-file-prerelease Sequence: 6000 Type: non-native Version: 1~rc1-1 Description: Check mangling tags for upstream prereleases Test-For: debian-watch-file-should-uversionmangle-not-dversionmangle lintian-2.5.22ubuntu1/t/tests/watch-file-prerelease/debian/0000775000000000000000000000000012077065716020466 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-prerelease/debian/debian/0000775000000000000000000000000012077065716021710 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-prerelease/debian/debian/watch0000664000000000000000000000015412077065716022741 0ustar version=3 opts=dversionmangle=s/~rc/-rc/ \ http://www.example.com/software/foo/ .*/foo-([^-]+)\.tar\.gz lintian-2.5.22ubuntu1/t/tests/files-symlinks/0000775000000000000000000000000012310413145016024 5ustar lintian-2.5.22ubuntu1/t/tests/files-symlinks/tags0000664000000000000000000000171412310413145016710 0ustar E: files-symlinks: compressed-symlink-with-wrong-ext usr/lib/lintian/data/comp-data ../../../share/lintian/data/comp-data.gz E: files-symlinks: package-contains-unsafe-symlink usr/share/lintian/data/pkg.conf E: files-symlinks: symlink-contains-spurious-segments usr/share/lintian/data/spurious ../../lintian-old/../lintian/data/data-file E: files-symlinks: symlink-has-too-many-up-segments usr/share/lintian/data/pkg.conf ../..//..//..//../etc/lintian/pkg.conf E: files-symlinks: symlink-should-be-absolute usr/share/lintian/data/pkg-old.conf ../../../../etc/lintian/pkg.conf W: files-symlinks: symlink-ends-with-slash usr/share/etc-lintian /etc/lintian/ W: files-symlinks: symlink-has-double-slash usr/share/lintian/data/pkg.conf ../..//..//..//../etc/lintian/pkg.conf W: files-symlinks: symlink-is-self-recursive usr/share/lintian/data/self-resursive / W: files-symlinks: symlink-should-be-relative usr/share/lintian/data/data-file.old /usr/share/lintian/data/data-file lintian-2.5.22ubuntu1/t/tests/files-symlinks/desc0000664000000000000000000000052412310413145016666 0ustar Testname: files-symlinks Sequence: 6000 Version: 1.0 Description: Test tags about symlinks Test-For: compressed-symlink-with-wrong-ext symlink-contains-spurious-segments symlink-ends-with-slash symlink-has-double-slash symlink-has-too-many-up-segments symlink-is-self-recursive symlink-should-be-absolute symlink-should-be-relative lintian-2.5.22ubuntu1/t/tests/files-symlinks/debian/0000775000000000000000000000000012077065715017266 5ustar lintian-2.5.22ubuntu1/t/tests/files-symlinks/debian/pkg.conf0000664000000000000000000000002512077065715020713 0ustar # sample config file lintian-2.5.22ubuntu1/t/tests/files-symlinks/debian/data-file0000664000000000000000000000002112077065715021030 0ustar # Some data file.lintian-2.5.22ubuntu1/t/tests/files-symlinks/debian/debian/0000775000000000000000000000000012310413145020470 5ustar lintian-2.5.22ubuntu1/t/tests/files-symlinks/debian/debian/install0000664000000000000000000000054012310413145022060 0ustar data-file usr/share/lintian/data/ pkg.conf etc/lintian/ symlinks/data-file.old usr/share/lintian/data/ symlinks/etc-lintian* usr/share/ symlinks/pkg*.conf usr/share/lintian/data/ symlinks/self-resursive usr/share/lintian/data/ symlinks/spurious usr/share/lintian/data/ symlinks/comp-data usr/lib/lintian/data/ tmp/comp-data.gz usr/share/lintian/data/ lintian-2.5.22ubuntu1/t/tests/files-symlinks/debian/debian/rules0000664000000000000000000000121412310413145021543 0ustar #!/usr/bin/make -f %: dh $@ override_dh_auto_build: mkdir tmp gzip -9c < data-file > tmp/comp-data.gz mkdir symlinks/ ln -s ../../../../etc/lintian/pkg.conf symlinks/pkg-old.conf ln -s ../..//..//..//../etc/lintian/pkg.conf symlinks/pkg.conf ln -s /usr/share/lintian/data/data-file symlinks/data-file.old ln -s /etc/lintian/ symlinks/etc-lintian ln -s / symlinks/self-resursive ln -s ../../lintian-old/../lintian/data/data-file symlinks/spurious ln -s ../../../share/lintian/data/comp-data.gz symlinks/comp-data override_dh_auto_clean: rm -fr symlinks/ tmp override_dh_link: # it will fix our symlinks and ruin the test, so skip it. lintian-2.5.22ubuntu1/t/tests/changelog-file-symlink/0000775000000000000000000000000012077065714017422 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-symlink/tags0000664000000000000000000000030312077065714020277 0ustar W: changelog-file-symlink: debian-changelog-file-is-a-symlink X: changelog-file-symlink: package-contains-broken-symlink usr/share/doc/changelog-file-symlink/changelog.gz ../lintian/changelog.gz lintian-2.5.22ubuntu1/t/tests/changelog-file-symlink/desc0000664000000000000000000000025312077065714020263 0ustar Testname: changelog-file-symlink Sequence: 6000 Type: native Version: 1.0 Description: Test if Debian changelog is a symlink Test-For: debian-changelog-file-is-a-symlink lintian-2.5.22ubuntu1/t/tests/changelog-file-symlink/debian/0000775000000000000000000000000012077065714020644 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-symlink/debian/debian/0000775000000000000000000000000012077065714022066 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-symlink/debian/debian/rules0000775000000000000000000000035212077065714023146 0ustar #!/usr/bin/make -f %: dh $@ override_dh_md5sums: DIR=$$(find debian/*/ -type f -a -name 'changelog.gz' \ -exec dirname {} \; ) ; \ rm -f $$DIR/changelog.gz ; \ ln -s ../lintian/changelog.gz $$DIR/changelog.gz dh_md5sums lintian-2.5.22ubuntu1/t/tests/nmu-team-upload/0000775000000000000000000000000012077065715016100 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-team-upload/tags0000664000000000000000000000011512077065715016756 0ustar W: nmu-team-upload source: team-upload-has-incorrect-version-number 1.0+nmu1 lintian-2.5.22ubuntu1/t/tests/nmu-team-upload/desc0000664000000000000000000000024012077065715016735 0ustar Testname: nmu-team-upload Sequence: 6000 Version: 1.0+nmu1 Description: Test for versioning of a team upload Test-For: team-upload-has-incorrect-version-number lintian-2.5.22ubuntu1/t/tests/nmu-team-upload/debian/0000775000000000000000000000000012077065715017322 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-team-upload/debian/debian/0000775000000000000000000000000012310413206020522 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-team-upload/debian/debian/changelog.in0000664000000000000000000000033312310413206023000 0ustar {$source} ({$version}) unstable; urgency=low * Team upload. * Lintian Test Suite. * Test: {$testname} * Suppress "should close ITP bug" messages. (Closes: #123456) -- Russ Allbery {$date} lintian-2.5.22ubuntu1/t/tests/group-checks-multi-arch/0000775000000000000000000000000012310413146017511 5ustar lintian-2.5.22ubuntu1/t/tests/group-checks-multi-arch/tags0000664000000000000000000000034512310413146020374 0ustar I: group-checks-multi-arch source: debug-package-for-multi-arch-same-pkg-not-coinstallable pkg-dbg => pkg-same W: group-checks-multi-arch source: dependency-is-not-multi-archified pkg-same depends on pkg-foreign (multi-arch: no) lintian-2.5.22ubuntu1/t/tests/group-checks-multi-arch/desc0000664000000000000000000000031412310413146020350 0ustar Testname: group-checks-multi-arch Sequence: 6000 Version: 1.0 Description: Test for multi-arch issues Test-For: debug-package-for-multi-arch-same-pkg-not-coinstallable dependency-is-not-multi-archified lintian-2.5.22ubuntu1/t/tests/group-checks-multi-arch/debian/0000775000000000000000000000000012310413146020733 5ustar lintian-2.5.22ubuntu1/t/tests/group-checks-multi-arch/debian/Makefile0000664000000000000000000000051412310413146022373 0ustar DATAFILE=data-$(shell dpkg-architecture -qDEB_HOST_ARCH) all: echo $(DATAFILE) > $(DATAFILE) install: install -d $(DESTDIR)/usr/lib/pkg-same/ \ $(DESTDIR)/usr/lib/debug/pkg-same/ install -m 0644 $(DATAFILE) $(DESTDIR)/usr/lib/pkg-same/$(DATAFILE) install -m 0644 $(DATAFILE) $(DESTDIR)/usr/lib/debug/pkg-same/$(DATAFILE) lintian-2.5.22ubuntu1/t/tests/group-checks-multi-arch/debian/some-doc.txt0000664000000000000000000000000712077065715023216 0ustar README lintian-2.5.22ubuntu1/t/tests/group-checks-multi-arch/debian/debian/0000775000000000000000000000000012310413206022152 5ustar lintian-2.5.22ubuntu1/t/tests/group-checks-multi-arch/debian/debian/pkg-foreign.docs0000664000000000000000000000001512077065715025252 0ustar some-doc.txt lintian-2.5.22ubuntu1/t/tests/group-checks-multi-arch/debian/debian/pkg-dbg.install0000664000000000000000000000001712310413146025056 0ustar usr/lib/debug/ lintian-2.5.22ubuntu1/t/tests/group-checks-multi-arch/debian/debian/control.in0000664000000000000000000000240512310413206024163 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: pkg-foreign Architecture: all Depends: $\{misc:Depends\} Description: {$description} - pkg-foreign This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . Should have been Multi-arch foreign package. Package: pkg-same Architecture: any Depends: $\{misc:Depends\}, pkg-foreign Multi-Arch: same Description: {$description} - pkg-same This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . Multi-arch same package. Package: pkg-dbg Section: debug Architecture: any Depends: $\{misc:Depends\}, pkg-same (= $\{binary:Version\}), pkg-foreign (>= $\{source:Version\}) Description: {$description} - pkg-dbg This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . Multi-arch debug package. lintian-2.5.22ubuntu1/t/tests/group-checks-multi-arch/debian/debian/pkg-same.install0000664000000000000000000000002312077065715025263 0ustar usr/lib/pkg-same/ lintian-2.5.22ubuntu1/t/tests/changelog-file-etch-nmu/0000775000000000000000000000000012310413205017432 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-etch-nmu/tags0000664000000000000000000000000012077065714020323 0ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-etch-nmu/desc0000664000000000000000000000027512077065714020321 0ustar Testname: changelog-file-etch-nmu Sequence: 6000 Type: non-native Version: 1.0-1etch1.1 Description: Test for a code name in an unstable upload Test-Against: version-refers-to-distribution lintian-2.5.22ubuntu1/t/tests/changelog-file-etch-nmu/debian/0000775000000000000000000000000012310413205020654 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-etch-nmu/debian/debian/0000775000000000000000000000000012310413206022077 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-etch-nmu/debian/debian/changelog.in0000664000000000000000000000024312310413206024355 0ustar {$source} ({$version}) unstable; urgency=low * Non-maintainer upload. * Lintian Test Suite. * Test: {$testname} -- Russ Allbery {$date} lintian-2.5.22ubuntu1/t/tests/files-fonts/0000775000000000000000000000000012077065715015324 5ustar lintian-2.5.22ubuntu1/t/tests/files-fonts/tags0000664000000000000000000000160112077065715016203 0ustar E: files-fonts: file-in-unknown-x11-font-directory usr/share/fonts/X11/other/foo.pcf.gz I: files-fonts: font-in-non-font-package usr/share/fonts/truetype/font.otf I: files-fonts: font-in-non-font-package usr/share/fonts/truetype/font.ttf W: files-fonts: duplicate-font-file usr/share/fonts/truetype/4shadow.ttf also in ttf-aenigma W: files-fonts: file-in-discouraged-x11-font-directory usr/share/fonts/X11/CID/foo.pcf.gz W: files-fonts: file-in-discouraged-x11-font-directory usr/share/fonts/X11/PEX/foo.pcf.gz W: files-fonts: file-in-discouraged-x11-font-directory usr/share/fonts/X11/Speedo/foo.pcf.gz W: files-fonts: file-in-discouraged-x11-font-directory usr/share/fonts/X11/cyrillic/foo.pcf.gz W: files-fonts: package-contains-multiple-dpi-fonts W: files-fonts: package-mixes-misc-and-dpi-fonts W: ttf-files-fonts: duplicate-font-file usr/share/fonts/truetype/4shadow.ttf also in ttf-aenigma lintian-2.5.22ubuntu1/t/tests/files-fonts/desc0000664000000000000000000000043412077065715016166 0ustar Testname: files-fonts Sequence: 6000 Version: 1.0 Description: Font file checks Test-For: duplicate-font-file file-in-discouraged-x11-font-directory file-in-unknown-x11-font-directory font-in-non-font-package package-contains-multiple-dpi-fonts package-mixes-misc-and-dpi-fonts lintian-2.5.22ubuntu1/t/tests/files-fonts/debian/0000775000000000000000000000000012077065715016546 5ustar lintian-2.5.22ubuntu1/t/tests/files-fonts/debian/font.ttf0000664000000000000000000000003212077065715020226 0ustar This is a fake font file. lintian-2.5.22ubuntu1/t/tests/files-fonts/debian/foo.pcf0000664000000000000000000000005512077065715020023 0ustar I'm not really a font, but I play one on TV. lintian-2.5.22ubuntu1/t/tests/files-fonts/debian/font.otf0000664000000000000000000000003212077065715020221 0ustar This is a fake font file. lintian-2.5.22ubuntu1/t/tests/files-fonts/debian/4shadow.ttf0000664000000000000000000000013212077065715020632 0ustar This isn't actually a font. The current test is based on the file name and doesn't care. lintian-2.5.22ubuntu1/t/tests/files-fonts/debian/debian/0000775000000000000000000000000012310413206017746 5ustar lintian-2.5.22ubuntu1/t/tests/files-fonts/debian/debian/ttf-files-fonts.install0000664000000000000000000000015112077065715024401 0ustar font.otf usr/share/fonts/truetype font.ttf usr/share/fonts/truetype 4shadow.ttf usr/share/fonts/truetype lintian-2.5.22ubuntu1/t/tests/files-fonts/debian/debian/control.in0000664000000000000000000000162612310413206021763 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Homepage: http://lintian.debian.org/ Package: {$source} Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} Non-font package containing fonts. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: ttf-{$source} Architecture: {$architecture} # Due to file-conflict Conflicts: {$source} Depends: $\{misc:Depends\} Description: {$description} (okay) Font package containing fonts. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/tests/files-fonts/debian/debian/files-fonts.install0000664000000000000000000000074212077065715023614 0ustar font.otf usr/share/fonts/truetype font.ttf usr/share/fonts/truetype 4shadow.ttf usr/share/fonts/truetype foo.pcf usr/share/fonts/X11/100dpi foo.pcf usr/share/fonts/X11/75dpi foo.pcf usr/share/fonts/X11/misc foo.pcf usr/share/fonts/X11/Type1 foo.pcf usr/share/fonts/X11/encodings foo.pcf usr/share/fonts/X11/util foo.pcf usr/share/fonts/X11/PEX foo.pcf usr/share/fonts/X11/CID foo.pcf usr/share/fonts/X11/Speedo foo.pcf usr/share/fonts/X11/cyrillic foo.pcf usr/share/fonts/X11/other lintian-2.5.22ubuntu1/t/tests/files-fonts/debian/debian/ttf-files-fonts.links0000664000000000000000000000011212077065715024050 0ustar usr/share/fonts/truetype/font.ttf usr/share/fonts/truetype/dejavusans.ttf lintian-2.5.22ubuntu1/t/tests/shared-libs-exit-fork/0000775000000000000000000000000012077065716017177 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-exit-fork/tags0000664000000000000000000000000012077065716020046 0ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-exit-fork/desc0000664000000000000000000000024712077065716020043 0ustar Testname: shared-libs-exit-fork Sequence: 6000 Version: 1.0 Description: Test checks related to libs invoking both exit(3) and fork(2) Test-Against: shlib-calls-exit lintian-2.5.22ubuntu1/t/tests/shared-libs-exit-fork/debian/0000775000000000000000000000000012077065716020421 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-exit-fork/debian/Makefile0000664000000000000000000000067312077065716022067 0ustar CC=gcc CFLAGS+= -fPIC SONAMES:= libexecbit.so.1 LIBFILES:= $(patsubst %,%.0.1, $(SONAMES)) all: $(LIBFILES) $(LIBFILES): code.o $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc clean: rm -f *.a *.o *.so* install: all install -m 0755 -d $(DESTDIR)/usr/lib install -m 0755 *.so* $(DESTDIR)/usr/lib for FILE in $(SONAMES) ; do \ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \ done .PHONY: install clean lintian-2.5.22ubuntu1/t/tests/shared-libs-exit-fork/debian/code.c0000664000000000000000000000025312077065716021477 0ustar #include #include double e(void (*f)(char *)){ char tmp[10]; double x; f(tmp); x = atof(tmp); if (fork() != 0) exit(1); return x; } lintian-2.5.22ubuntu1/t/tests/shared-libs-exit-fork/debian/debian/0000775000000000000000000000000012310413206021620 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-exit-fork/debian/debian/control.in0000664000000000000000000000070712310413206023634 0ustar Source: {$source} Priority: extra Section: libs Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: libexecbit1 Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/tests/shared-libs-exit-fork/debian/debian/libexecbit1.symbols0000664000000000000000000000006112077065716025445 0ustar libexecbit.so.1 libexecbit1 #MINVER# e@Base 1.0 lintian-2.5.22ubuntu1/t/tests/fields-depends-general/0000775000000000000000000000000012310413144017353 5ustar lintian-2.5.22ubuntu1/t/tests/fields-depends-general/tags0000664000000000000000000000314312310413144020235 0ustar E: fields-depends-general: conflicts-with-dependency depends conflict-dep E: fields-depends-general: depends-on-essential-package-without-using-version depends: bash E: fields-depends-general: depends-on-metapackage depends: xorg E: fields-depends-general: depends-on-obsolete-package depends: gaim E: fields-depends-general: needlessly-depends-on-awk depends E: fields-depends-general: package-depends-on-an-x-font-package depends: xfont-a E: libfields-depends-general: depends-on-libdb1-compat depends E: py-fields-depends-general: depends-on-python-minimal depends I: fields-depends-general: conflicts-with-version package-with-version (<< 3.0) I: fields-depends-general: ored-depends-on-obsolete-package depends: xbase-clients W: fields-depends-general source: package-depends-on-itself fields-depends-general depends W: fields-depends-general source: versioned-dependency-satisfied-by-perl build-depends: libmodule-build-perl (>= 0.360700) W: fields-depends-general-doc: doc-package-depends-on-main-package depends W: fields-depends-general: breaks-without-version package-without-version W: fields-depends-general: depends-exclusively-on-makedev depends W: fields-depends-general: depends-on-old-emacs depends: emacs21 W: fields-depends-general: depends-on-old-emacs depends: emacs22 W: fields-depends-general: depends-on-packaging-dev depends W: fields-depends-general: package-relation-with-self breaks: fields-depends-general (<< 0.1) W: fields-depends-general: versioned-dependency-satisfied-by-perl depends: libthreads-shared-perl (>= 1.29) W: libfields-depends-general: lib-recommends-documentation recommends: debconf-doc lintian-2.5.22ubuntu1/t/tests/fields-depends-general/desc0000664000000000000000000000130012077065715020227 0ustar Testname: fields-depends-general Sequence: 6000 Version: 1.0 Description: General tests for binary package dependencies Test-For: breaks-without-version conflicts-with-dependency conflicts-with-version depends-on-essential-package-without-using-version depends-exclusively-on-makedev depends-on-libdb1-compat depends-on-metapackage depends-on-obsolete-package depends-on-old-emacs depends-on-packaging-dev depends-on-python-minimal doc-package-depends-on-main-package lib-recommends-documentation needlessly-depends-on-awk ored-depends-on-obsolete-package package-depends-on-an-x-font-package package-depends-on-itself package-relation-with-self versioned-dependency-satisfied-by-perl lintian-2.5.22ubuntu1/t/tests/fields-depends-general/debian/0000775000000000000000000000000012077065715020616 5ustar lintian-2.5.22ubuntu1/t/tests/fields-depends-general/debian/some-file0000664000000000000000000000021312077065715022415 0ustar This file is installed into /usr/share/lintian just to ensure that this package doesn't look like a metapackage for the dependency checks. lintian-2.5.22ubuntu1/t/tests/fields-depends-general/debian/debian/0000775000000000000000000000000012310413206022016 5ustar lintian-2.5.22ubuntu1/t/tests/fields-depends-general/debian/debian/install0000664000000000000000000000003412077065715023426 0ustar some-file usr/share/lintian lintian-2.5.22ubuntu1/t/tests/fields-depends-general/debian/debian/control.in0000664000000000000000000000410012310413206024021 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), libmodule-build-perl (>= 0.360700) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, xorg, bash, conflict-dep, gawk | awk, new-package | xbase-clients, {$source}, gaim, emacs21, emacs22, makedev, libthreads-shared-perl (>= 1.29), packaging-dev, xfont-a Breaks: package-without-version, {$source} (<< 0.1), replaced-wo-version Replaces: replaced-wo-version Conflicts: package-with-version (<< 3.0), conflict-dep Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: lib{$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, libdb1-compat Recommends: debconf-doc Section: libs Description: {$description} -- fake library This is a fake library designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: py-{$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, python-minimal Description: {$description} - Fake Python package This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . The fake Python package. Package: {$source}-doc Section: doc Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, {$source} Description: {$description} - Fake Doc package This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . The fake doc package. lintian-2.5.22ubuntu1/t/tests/cruft-upstream-binaries/0000775000000000000000000000000012313507507017637 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-upstream-binaries/upstream/0000775000000000000000000000000012077065715021506 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-upstream-binaries/upstream/hello.c0000664000000000000000000000012312077065715022751 0ustar #include int main(void) { printf("Hello world!\n"); return 0; } lintian-2.5.22ubuntu1/t/tests/cruft-upstream-binaries/tags0000664000000000000000000000043712313507507020524 0ustar E: cruft-upstream-binaries source: source-is-missing notsourced P: cruft-upstream-binaries source: debian-watch-may-check-gpg-signature P: cruft-upstream-binaries source: source-contains-prebuilt-binary hello P: cruft-upstream-binaries source: source-contains-prebuilt-binary notsourced lintian-2.5.22ubuntu1/t/tests/cruft-upstream-binaries/desc0000664000000000000000000000036312313507507020502 0ustar Testname: cruft-upstream-binaries Sequence: 6000 Type: non-native Version: 1.0-1 Skeleton: pedantic Options: --pedantic -I -E Description: Check for binaries in the upstream tarball Test-For: source-contains-prebuilt-binary source-is-missing lintian-2.5.22ubuntu1/t/tests/cruft-upstream-binaries/pre_upstream0000775000000000000000000000013512313507507022272 0ustar #!/bin/sh set -e cd "$1" gcc -o hello hello.c # create non source binary cp hello notsourced lintian-2.5.22ubuntu1/t/tests/group-checks-circular-deps/0000775000000000000000000000000012077065715020220 5ustar lintian-2.5.22ubuntu1/t/tests/group-checks-circular-deps/tags0000664000000000000000000000027412077065715021104 0ustar W: group-checks-circular-deps source: intra-source-package-circular-dependency c1-a c1-b c1-c W: group-checks-circular-deps source: intra-source-package-circular-dependency c2-a c2-b c2-c lintian-2.5.22ubuntu1/t/tests/group-checks-circular-deps/desc0000664000000000000000000000024012077065715021055 0ustar Testname: group-checks-circular-deps Sequence: 6000 Version: 1.0 Description: Test for circular dependencies Test-For: intra-source-package-circular-dependency lintian-2.5.22ubuntu1/t/tests/group-checks-circular-deps/debian/0000775000000000000000000000000012077065715021442 5ustar lintian-2.5.22ubuntu1/t/tests/group-checks-circular-deps/debian/some-doc.txt0000664000000000000000000000000712077065715023706 0ustar README lintian-2.5.22ubuntu1/t/tests/group-checks-circular-deps/debian/debian/0000775000000000000000000000000012310413206022642 5ustar lintian-2.5.22ubuntu1/t/tests/group-checks-circular-deps/debian/debian/control.in0000664000000000000000000000564312310413206024662 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: root Architecture: all Depends: $\{misc:Depends\}, c1-a, c1-c, c2-b Description: {$description} - root This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . root. Package: leaf Architecture: all Depends: $\{misc:Depends\} Description: {$description} - leaf This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . leaf. Package: disconnected Architecture: all Depends: $\{misc:Depends\} Description: {$description} - dis This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . disconnected. Package: c1-a Architecture: all Depends: $\{misc:Depends\}, c1-b, leaf Description: {$description} - c1-a This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . c1-a. Package: c1-b Architecture: all Depends: $\{misc:Depends\}, c1-c Description: {$description} - c1-b This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . c1-b. Package: c1-c Architecture: all Depends: $\{misc:Depends\}, c1-a, leaf Description: {$description} - c1-c This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . c1-c. Package: c2-a Architecture: all Depends: $\{misc:Depends\}, c2-b, c2-c, leaf Description: {$description} - c2-a This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . c2-a. Package: c2-b Architecture: all Depends: $\{misc:Depends\}, c2-a, c2-c Description: {$description} - c2-b This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . c2-b. Package: c2-c Architecture: all Depends: $\{misc:Depends\}, c2-a, c2-b, leaf Description: {$description} - c2-c This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . c2-c. lintian-2.5.22ubuntu1/t/tests/group-checks-circular-deps/debian/debian/rules0000664000000000000000000000022512077065715023740 0ustar #!/usr/bin/make -f %: dh $@ override_dh_installdocs: for P in $$(dh_listpackages) ; do \ dh_installdocs -p$$P some-doc.txt || exit 1 ;\ done lintian-2.5.22ubuntu1/t/tests/fields-font-not-multiarch-foreign/0000775000000000000000000000000012310413144021477 5ustar lintian-2.5.22ubuntu1/t/tests/fields-font-not-multiarch-foreign/tags0000664000000000000000000000012012310413144022351 0ustar W: fonts-fields-font-not-multiarch-foreign: font-package-not-multi-arch-foreign lintian-2.5.22ubuntu1/t/tests/fields-font-not-multiarch-foreign/desc0000664000000000000000000000024312310413144022337 0ustar Testname: fields-font-not-multiarch-foreign Sequence: 6000 Version: 1.0 Description: Font package Multi-Arch checks Test-For: font-package-not-multi-arch-foreign lintian-2.5.22ubuntu1/t/tests/fields-font-not-multiarch-foreign/debian/0000775000000000000000000000000012310413144022721 5ustar lintian-2.5.22ubuntu1/t/tests/fields-font-not-multiarch-foreign/debian/font.ttf0000664000000000000000000000003212310413144024401 0ustar This is a fake font file. lintian-2.5.22ubuntu1/t/tests/fields-font-not-multiarch-foreign/debian/font-multiarch-test.ttf0000664000000000000000000000013212310413144027345 0ustar This isn't actually a font. The current test is based on the file name and doesn't care. lintian-2.5.22ubuntu1/t/tests/fields-font-not-multiarch-foreign/debian/debian/0000775000000000000000000000000012310413206024142 5ustar ././@LongLink0000644000000000000000000000017600000000000011607 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/fields-font-not-multiarch-foreign/debian/debian/fonts-fields-font-not-multiarch-foreign.installlintian-2.5.22ubuntu1/t/tests/fields-font-not-multiarch-foreign/debian/debian/fonts-fields-font-not-0000664000000000000000000000014212310413144030277 0ustar font-multiarch-test.ttf usr/share/fonts/truetype font.ttf usr/share/fonts/truetype lintian-2.5.22ubuntu1/t/tests/fields-font-not-multiarch-foreign/debian/debian/control.in0000664000000000000000000000102712310413206026152 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Homepage: http://lintian.debian.org/ Package: fonts-{$source} Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} (okay) Font package containing fonts. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/tests/description-wording/0000775000000000000000000000000012077065715017065 5ustar lintian-2.5.22ubuntu1/t/tests/description-wording/tags0000664000000000000000000000010512077065715017742 0ustar I: description-wording: using-first-person-in-description line 3: we lintian-2.5.22ubuntu1/t/tests/description-wording/desc0000664000000000000000000000022212077065715017722 0ustar Testname: description-wording Version: 1.0 Sequence: 6000 Description: Tests for description wording Test-For: using-first-person-in-description lintian-2.5.22ubuntu1/t/tests/description-wording/debian/0000775000000000000000000000000012077065715020307 5ustar lintian-2.5.22ubuntu1/t/tests/description-wording/debian/debian/0000775000000000000000000000000012310413206021507 5ustar lintian-2.5.22ubuntu1/t/tests/description-wording/debian/debian/control.in0000664000000000000000000000112012310413206023511 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. You should not install it like a regular package, we can guarantee you that. This is a test package. This package does nothing useful at all. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/cruft-unsafe-symlinks/0000775000000000000000000000000012310413144017323 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-unsafe-symlinks/pre_build0000775000000000000000000000077012310413144021222 0ustar #!/bin/sh SOURCE_ROOT="$1" LINK_TARGET=non-existant/path/lintian-should-not-open mkdir -p "$SOURCE_ROOT/bad-symlinks" "$SOURCE_ROOT/tests/" ln -s "../../$LINK_TARGET" "$SOURCE_ROOT/bad-symlinks/relative-escape" ln -s "/../../$LINK_TARGET" "$SOURCE_ROOT/bad-symlinks/absolute-escape" # Lintian ignores these - not sure to what extend it makes sense ln -s "../../$LINK_TARGET" "$SOURCE_ROOT/tests/relative-escape-but-ignored" ln -s "/../../$LINK_TARGET" "$SOURCE_ROOT/tests/absolute-escape-but-ignored" lintian-2.5.22ubuntu1/t/tests/cruft-unsafe-symlinks/tags0000664000000000000000000000027212310413144020205 0ustar E: cruft-unsafe-symlinks source: source-contains-unsafe-symlink bad-symlinks/absolute-escape E: cruft-unsafe-symlinks source: source-contains-unsafe-symlink bad-symlinks/relative-escape lintian-2.5.22ubuntu1/t/tests/cruft-unsafe-symlinks/desc0000664000000000000000000000022312310413144020161 0ustar Testname: cruft-unsafe-symlinks Sequence: 6000 Version: 1.0 Description: General tests of unsafe symlinks Test-For: source-contains-unsafe-symlink lintian-2.5.22ubuntu1/t/tests/source-copyright-unknown-uri/0000775000000000000000000000000012077065716020674 5ustar lintian-2.5.22ubuntu1/t/tests/source-copyright-unknown-uri/tags0000664000000000000000000000021412077065716021552 0ustar P: source-copyright-unknown-uri source: unknown-copyright-format-uri http://bzr.debian.org/loggerhead/dep/dep5/trunk/annotate/110/dep5.mdwn lintian-2.5.22ubuntu1/t/tests/source-copyright-unknown-uri/desc0000664000000000000000000000026112077065716021534 0ustar Testname: source-copyright-unknown-uri Sequence: 6000 Version: 1.0 Description: Test for unkown DEP-5-like URI Options: -I -E --pedantic Test-For: unknown-copyright-format-uri lintian-2.5.22ubuntu1/t/tests/source-copyright-unknown-uri/debian/0000775000000000000000000000000012077065716022116 5ustar lintian-2.5.22ubuntu1/t/tests/source-copyright-unknown-uri/debian/debian/0000775000000000000000000000000012077065716023340 5ustar lintian-2.5.22ubuntu1/t/tests/source-copyright-unknown-uri/debian/debian/copyright0000664000000000000000000000210712077065716025273 0ustar Format-Specification: http://bzr.debian.org/loggerhead/dep/dep5/trunk/annotate/110/dep5.mdwn Upstream-Name: Doohickey Upstream-Contact: J. Random Hacker Source: http://examples.com/doohickey/source/ Files: * Copyright: 2011 J. Random Hacker License: GPL-2 This package 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; version 2 dated June, 1991. . This package 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 package; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. . On Debian systems, the full text of the GNU General Public License version 2 can be found in the file `/usr/share/common-licenses/GPL-2'. lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends/0000775000000000000000000000000012077065714017755 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends/tags0000664000000000000000000000004312077065714020633 0ustar W: libbasic2: missing-depends-line lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends/desc0000664000000000000000000000023312077065714020614 0ustar Testname: binaries-missing-depends Sequence: 6000 Version: 1.0 Description: Test for missing depends line Architecture: any Test-For: missing-depends-line lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends/debian/0000775000000000000000000000000012310413144021157 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends/debian/Makefile0000664000000000000000000000051512077065714022640 0ustar all: gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-z,defs -Wl,-soname,libbasic.so.2 -o libbasic.so.2 basic.c install: # install it under the correct triplet directory install -d $(DESTDIR)/usr/lib/ install -m 644 -c -s libbasic.so.2 $(DESTDIR)/usr/lib/libbasic.so.2 clean distclean: rm -f libbasic.so.2 check test: lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends/debian/basic.c0000664000000000000000000000045412310413144022407 0ustar #include #include static void hardening_trigger(char *p, int i, void (*f)(char *)) { char test[10]; memcpy(test, p, i); f(test); printf("%s", test); } int lib_interface(void) { printf("Hello world!\n"); hardening_trigger(NULL, 0, NULL); return 0; } lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends/debian/debian/0000775000000000000000000000000012310413206022400 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends/debian/debian/control.in0000664000000000000000000000075112310413206024413 0ustar Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), perl Package: libbasic2 Architecture: any Depends: $\{misc:Depends\}, $\{shlib:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends/debian/debian/libbasic2.symbols0000664000000000000000000000007112077065714025663 0ustar libbasic.so.2 libbasic2 #MINVER# lib_interface@Base 1.0 lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends/debian/debian/rules0000664000000000000000000000017112077065714023475 0ustar #!/usr/bin/make -f %: dh $@ override_dh_builddeb: sed -i '/Depends:/ d' debian/libbasic2/DEBIAN/control dh_builddeb lintian-2.5.22ubuntu1/t/tests/runtests-calibration/0000775000000000000000000000000012077065715017247 5ustar lintian-2.5.22ubuntu1/t/tests/runtests-calibration/test_calibration0000775000000000000000000000023212077065715022520 0ustar #!/bin/sh set -e echo "E: runtests-calibration source: lintian-says-goodbye" >> "$2" echo "E: runtests-calibration source: lintian-says-goodbye" > "$3" lintian-2.5.22ubuntu1/t/tests/runtests-calibration/tags0000664000000000000000000000006312077065715020127 0ustar E: runtests-calibration source: lintian-says-hi ;) lintian-2.5.22ubuntu1/t/tests/runtests-calibration/desc0000664000000000000000000000014112077065715020104 0ustar Testname: runtests-calibration Sequence: 0700 Version: 1.0 Description: Test calibration support lintian-2.5.22ubuntu1/t/tests/fields-binary-nmu-version/0000775000000000000000000000000012310413205020060 5ustar lintian-2.5.22ubuntu1/t/tests/fields-binary-nmu-version/tags0000664000000000000000000000025312077065715020764 0ustar W: fields-binary-nmu-version source: binary-nmu-debian-revision-in-source 1.0-1.0.1 W: fields-binary-nmu-version source: source-nmu-has-incorrect-version-number 1.0-1.0.1 lintian-2.5.22ubuntu1/t/tests/fields-binary-nmu-version/desc0000664000000000000000000000026512077065715020747 0ustar Testname: fields-binary-nmu-version Sequence: 6000 Type: non-native Version: 1.0-1.0.1 Description: Check binary NMU version handling Test-For: binary-nmu-debian-revision-in-source lintian-2.5.22ubuntu1/t/tests/fields-binary-nmu-version/debian/0000775000000000000000000000000012310413205021302 5ustar lintian-2.5.22ubuntu1/t/tests/fields-binary-nmu-version/debian/debian/0000775000000000000000000000000012310413206022525 5ustar lintian-2.5.22ubuntu1/t/tests/fields-binary-nmu-version/debian/debian/changelog.in0000664000000000000000000000032312310413206025002 0ustar {$source} ({$version}) unstable; urgency=low * NMU. * Lintian Test Suite. * Test: {$testname} * Suppress "should close ITP bug" messages. (Closes: #123456) -- Russ Allbery {$date} lintian-2.5.22ubuntu1/t/tests/rules-build-dep-pattern/0000775000000000000000000000000012077065715017543 5ustar lintian-2.5.22ubuntu1/t/tests/rules-build-dep-pattern/tags0000664000000000000000000000010312077065715020416 0ustar E: rules-build-dep-pattern source: missing-python-build-dependency lintian-2.5.22ubuntu1/t/tests/rules-build-dep-pattern/desc0000664000000000000000000000026612077065715020410 0ustar Testname: rules-build-dep-pattern Sequence: 6000 Version: 1.0 Description: Check recognition of pattern dependencies Test-For: missing-python-build-dependency References: Bug#536405 lintian-2.5.22ubuntu1/t/tests/rules-build-dep-pattern/debian/0000775000000000000000000000000012077065715020765 5ustar lintian-2.5.22ubuntu1/t/tests/rules-build-dep-pattern/debian/debian/0000775000000000000000000000000012310413206022165 5ustar lintian-2.5.22ubuntu1/t/tests/rules-build-dep-pattern/debian/debian/control.in0000664000000000000000000000076512310413206024205 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/rules-build-dep-pattern/debian/debian/rules0000775000000000000000000000111112077065715023261 0ustar #!/usr/bin/make -f build-indep: build-arch: build-stamp build-stamp: dh build-arch touch $@ build: build-arch build-indep # From deejayd 0.8.2-1 clean: $(PYVERS:%=clean-python%) clean-python%: dh_testdir dh_testroot rm -f build-python* python$* setup.py clean --all find $(CURDIR) -name '*pyc' -exec rm -f {} \; dh_clean install: install-stamp install-stamp: build-stamp dh install touch $@ binary-arch: install dh $@ binary-indep: install dh $@ binary: binary-arch binary-indep .PHONY: binary binary-arch binary-indep install clean build build-arch build-indep lintian-2.5.22ubuntu1/t/tests/debhelper-dh-python-helpers/0000775000000000000000000000000012310413144020354 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-dh-python-helpers/tags0000664000000000000000000000027112310413144021235 0ustar E: debhelper-dh-python-helpers source: python-depends-but-no-python-helper python-cheshire E: debhelper-dh-python-helpers source: python3-depends-but-no-python3-helper python3-cheshire lintian-2.5.22ubuntu1/t/tests/debhelper-dh-python-helpers/desc0000664000000000000000000000040512077065715021235 0ustar Testname: debhelper-dh-python-helpers Sequence: 6000 Version: 1.0 Description: Check if helpers that substitute python:Depends and python3:Depends are called in debian/rules Test-For: python-depends-but-no-python-helper python3-depends-but-no-python3-helper lintian-2.5.22ubuntu1/t/tests/debhelper-dh-python-helpers/debian/0000775000000000000000000000000012077065715021617 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-dh-python-helpers/debian/debian/0000775000000000000000000000000012310413206023017 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-dh-python-helpers/debian/debian/control.in0000664000000000000000000000166412310413206025036 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: python-cheshire Section: python Architecture: all Depends: $\{misc:Depends\}, $\{python:Depends\} Description: Cheshire cheese for Python 2.X This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . For Python 2.X. Package: python3-cheshire Section: python Architecture: all Depends: $\{misc:Depends\}, $\{python3:Depends\} Description: Cheshire cheese for Python 3.X This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . For Python 3.X. lintian-2.5.22ubuntu1/t/tests/lintian-output-xml/0000775000000000000000000000000012310413206016643 5ustar lintian-2.5.22ubuntu1/t/tests/lintian-output-xml/upstream/0000775000000000000000000000000012310413146020506 5ustar lintian-2.5.22ubuntu1/t/tests/lintian-output-xml/upstream/script.desktop0000664000000000000000000000025712310413146023411 0ustar [Desktop Entry] Name=script Type=Application Comment=Incorrectly limited to particular environments Categories=Development; Exec=script OnlyShowIn=GNOME;KDE; Keywords=Lintian lintian-2.5.22ubuntu1/t/tests/lintian-output-xml/upstream/script0000775000000000000000000000007512077065715021761 0ustar #!/bin/sh . /usr/share/debconf/confmodule echo 'Hello world' lintian-2.5.22ubuntu1/t/tests/lintian-output-xml/upstream/example0000775000000000000000000000005212077065715022103 0ustar #!/usr/bin/foo echo This is some example. lintian-2.5.22ubuntu1/t/tests/lintian-output-xml/tags0000664000000000000000000000450512310413206017530 0ustar 1.0+dsfg-1.1 1.0+dsfg-1.1 usr/bin/script usr/share/applications/script.desktop line 11 Changes usr/share/doc/lintian-output-xml/examples/example #!/usr/bin/foo usr/local/share/ usr/local/share/lintian/ var/lock/lintian/ field "section" in package lintian-output-xml usr/local/share/lintian/ http://www.example.com/. lintian-2.5.22ubuntu1/t/tests/lintian-output-xml/desc0000664000000000000000000000035012077065715017524 0ustar Testname: lintian-output-xml Sequence: 2500 Type: non-native Version: 1.0+dsfg-1.1 Skeleton: pedantic Options: --pedantic -I -E --exp-output format=xml --show-overrides Output-Format: xml Description: Test Lintian XML output format lintian-2.5.22ubuntu1/t/tests/lintian-output-xml/debian/0000775000000000000000000000000012077065715020107 5ustar lintian-2.5.22ubuntu1/t/tests/lintian-output-xml/debian/Changes0000664000000000000000000000000012077065715021370 0ustar lintian-2.5.22ubuntu1/t/tests/lintian-output-xml/debian/debian/0000775000000000000000000000000012310413206021307 5ustar lintian-2.5.22ubuntu1/t/tests/lintian-output-xml/debian/debian/examples0000664000000000000000000000001012077065715023061 0ustar example lintian-2.5.22ubuntu1/t/tests/lintian-output-xml/debian/debian/install0000664000000000000000000000006512077065715022723 0ustar script usr/bin script.desktop usr/share/applications lintian-2.5.22ubuntu1/t/tests/lintian-output-xml/debian/debian/lintian-overrides0000664000000000000000000000005212077065715024707 0ustar lintian-output-xml: no-upstream-changelog lintian-2.5.22ubuntu1/t/tests/lintian-output-xml/debian/debian/control.in0000664000000000000000000000111012310413206023310 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{misc:Depends\}, libssl0.9.8 (>= 0abcd) Essential:yes Section: {$section} Description: {$description}. This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . The homepage is http://www.example.com/. lintian-2.5.22ubuntu1/t/tests/lintian-output-xml/debian/debian/rules0000775000000000000000000000006412077065715022411 0ustar #!/usr/bin/make -f %: dh $@ override_dh_usrlocal: lintian-2.5.22ubuntu1/t/tests/lintian-output-xml/debian/debian/dirs0000664000000000000000000000005112077065715022211 0ustar usr/local/share/lintian var/lock/lintian lintian-2.5.22ubuntu1/t/tests/lintian-output-xml/debian/debian/source.lintian-overrides0000664000000000000000000000007012077065715026206 0ustar lintian-output-xml source: dfsg-version-misspelled 1.0* lintian-2.5.22ubuntu1/t/tests/files-general/0000775000000000000000000000000012313541017015573 5ustar lintian-2.5.22ubuntu1/t/tests/files-general/tags0000664000000000000000000000473412313541017016464 0ustar E: files-general: FSSTND-dir-in-usr usr/doc/ E: files-general: FSSTND-dir-in-var var/catman/ E: files-general: bad-perm-for-file-in-etc-sudoers.d etc/sudoers.d/sudotest 0644 != 0440 E: files-general: config-file-reserved etc/pam.conf by libpam-runtime E: files-general: dir-or-file-in-var-lock var/lock/lintian/ E: files-general: dir-or-file-in-var-run var/run/lintian/ E: files-general: executable-manpage usr/share/man/man5/foo.5.gz E: files-general: file-name-in-PATH-is-not-ASCII usr/bin/????????? E: files-general: file-name-is-not-valid-UTF-8 usr/share/foo/bokm?l E: files-general: global-data-in-games-directory usr/share/games/icons/hicolor/22x22/lintian-22x22.png E: files-general: lengthy-symlink usr/share/doc/bar/star ../bar/foo E: files-general: non-conf-file-in-modprobe.d etc/modprobe.d/--lzma E: files-general: non-standard-toplevel-dir new-top-level-dir/ E: files-general: package-contains-info-dir-file usr/share/info/dir.gz E: files-general: package-contains-mime-cache-file usr/share/mime/types E: files-general: package-contains-mimeinfo.cache-file usr/share/applications/mimeinfo.cache E: files-general: package-modifies-ld.so-search-path etc/ld.so.conf.d/lintian-lib.conf E: files-general: star-file usr/share/foo/* E: files-general: stray-directory-in-manpage-directory usr/share/man/man1/random/ I: files-general: duplicated-compressed-file usr/share/doc/lintian/lintian-16x16.png.gz I: files-general: package-contains-empty-directory usr/share/man/man1/random/ W: files-general: backup-file-in-package usr/share/foo/file~ W: files-general: executable-not-elf-or-script usr/share/man/man5/foo.5.gz W: files-general: file-in-unusual-dir new-top-level-dir/file-in-new-top-level-dir W: files-general: file-in-unusual-dir var/catman/do W: files-general: file-name-ends-in-whitespace usr/share/foo/ws W: files-general: icon-size-and-directory-name-mismatch usr/share/apps/lintian/icons/hicolor/22x22/lintian-16x16.png 16x16 W: files-general: icon-size-and-directory-name-mismatch usr/share/apps/lintian/icons/hicolor/64x64/lintian-64x64.png 22x22 W: files-general: icon-size-and-directory-name-mismatch usr/share/icons/hicolor/22x22/apps/lintian-16x16.png 16x16 W: files-general: nfs-temporary-file-in-package usr/share/foo/.nfs-fake-tmpfile W: files-general: obsolete-comments-style-in-php-ini etc/php5/conf.d/php-foo.ini W: files-general: raster-image-in-scalable-directory usr/share/icons/hicolor/scalable/apps/lintian-16x16.png W: files-general: windows-devel-file-in-package usr/lib/foo/foo.vcproj lintian-2.5.22ubuntu1/t/tests/files-general/desc0000664000000000000000000000174612311410541016437 0ustar Testname: files-general Sequence: 6000 Version: 1.0 Description: Test tags for file paths, names, and modes # tar -t is buggy and does not list \\\ filename Test-For: FSSTND-dir-in-usr FSSTND-dir-in-var backup-file-in-package bad-perm-for-file-in-etc-sudoers.d config-file-reserved dir-or-file-in-var-lock dir-or-file-in-var-run duplicated-compressed-file executable-manpage file-in-unusual-dir file-name-ends-in-whitespace file-name-in-PATH-is-not-ASCII file-name-is-not-valid-UTF-8 global-data-in-games-directory icon-size-and-directory-name-mismatch lengthy-symlink nfs-temporary-file-in-package non-conf-file-in-modprobe.d non-standard-toplevel-dir obsolete-comments-style-in-php-ini package-contains-empty-directory package-contains-info-dir-file package-contains-mime-cache-file package-contains-mimeinfo.cache-file package-modifies-ld.so-search-path raster-image-in-scalable-directory star-file stray-directory-in-manpage-directory windows-devel-file-in-package lintian-2.5.22ubuntu1/t/tests/files-general/debian/0000775000000000000000000000000012311410541017010 5ustar lintian-2.5.22ubuntu1/t/tests/files-general/debian/file-in-new-top-level-dir0000664000000000000000000000020212077065715023542 0ustar Since an empty file triggers "empty-dir" tags; we might as well test file-in-unusual-dir together with non-standard-toplevel-dir. lintian-2.5.22ubuntu1/t/tests/files-general/debian/mimeinfo.cache0000664000000000000000000000005312077065715021620 0ustar [MIME Cache] text/plain=foo-editor.desktop lintian-2.5.22ubuntu1/t/tests/files-general/debian/lintian-22x22.png0000664000000000000000000000274112077065715021757 0ustar PNG  IHDR$xgAMA asRGB cHRMz&u0`:pQ<bKGD pHYs   vpAgXIDATHŕ{lg?o/LMתX`ť꾢Qfu_%MesҦnR-fbnFU[{PEu{sr>99ɣ&bcm D+:Zp{l*Q|rn7^x<1 =ϙ@+ackX(|߫z1 FH@E[E *KnTs)1pFh+%z :>$Ș` i]mOJ"0@̔ $&7G0@2K0CÁ(7eW`;Nحy@%\FG,`o7OX6k0;*؈rM@ Pj.F jMW<5UM3W@%PVڜfetbecBl 6t%h"i2tVCh pI2K"L= ݧ \I8JH9"HHSn'qXK"*;p$mYE2Pf9;3D^ѵi6Ѡ-,,,d6o <3J;@[LU|0W!2ubX. ((JͩbٝLpugzJaV.E[ilH\GKkƕe\;\Uzi^Pݍ"L>TYd 1:gci,bd4HY/8MLBeǧ!~axyH)׸J8)'*>x"zTXtCommentxs.JM,IMQ(,Pp 7}IENDB`lintian-2.5.22ubuntu1/t/tests/files-general/debian/foo.50000664000000000000000000000013612077065715017703 0ustar .TH FOO "5" .SH NAME foo \- file format for foo .SH DESCRIPTION This file can store anything. lintian-2.5.22ubuntu1/t/tests/files-general/debian/foo.vcproj0000664000000000000000000000004012077065715021034 0ustar Not actually a VC project file. lintian-2.5.22ubuntu1/t/tests/files-general/debian/lintian.conf0000664000000000000000000000007712077065715021343 0ustar Test file which should not be flagged by the modprobe.d checks lintian-2.5.22ubuntu1/t/tests/files-general/debian/lintian-lib.conf0000664000000000000000000000002112077065715022074 0ustar /usr/lib/lintian lintian-2.5.22ubuntu1/t/tests/files-general/debian/lintian-16x16.png0000664000000000000000000000054312077065715021763 0ustar PNG  IHDRasRGBbKGD pHYs  tIME+|tEXtCommentCreated with GIMPWIDAT8˽K @ @_ڱBA Dq{p[?ƽ)eH/ _Gg" visits the Emacs manual, etc. In Emacs, you can click mouse button 2 on a menu item or cross reference to select it. * Menu: Archiving * Cpio: (cpio). Copy-in-copy-out archiver to tape or disk. lintian-2.5.22ubuntu1/t/tests/files-general/debian/tnu.10000664000000000000000000000022112310413206017673 0ustar .TH 鳥の詩 "1" .SH NAME 鳥の詩 \- command in PATH written in UTF-8 .SH DESCRIPTION 鳥の詩 (Tori no uta) is not really a useful command. lintian-2.5.22ubuntu1/t/tests/files-general/debian/sudotest0000664000000000000000000000000012077065715020615 0ustar lintian-2.5.22ubuntu1/t/tests/files-general/debian/types0000664000000000000000000000000012077065715020107 0ustar lintian-2.5.22ubuntu1/t/tests/files-general/debian/--lzma0000664000000000000000000000015312077065715020051 0ustar Test file to check that various parts of Lintian correctly handle files with names that look like options lintian-2.5.22ubuntu1/t/tests/files-general/debian/debian/0000775000000000000000000000000012311410541020232 5ustar lintian-2.5.22ubuntu1/t/tests/files-general/debian/debian/examples0000664000000000000000000000001312077065715022007 0ustar foo.vcproj lintian-2.5.22ubuntu1/t/tests/files-general/debian/debian/clean0000664000000000000000000000001412310413206021232 0ustar 鳥の詩.1 lintian-2.5.22ubuntu1/t/tests/files-general/debian/debian/links0000664000000000000000000000017212077065715021317 0ustar usr/share/apps/lintian/icons/hicolor/22x22/lintian-22x22.png usr/share/apps/lintian/icons/hicolor/64x64/lintian-64x64.png lintian-2.5.22ubuntu1/t/tests/files-general/debian/debian/install0000664000000000000000000000132112311410541021620 0ustar lintian-16x16.png usr/share/apps/lintian/icons/hicolor/22x22 lintian-16x16.png usr/share/icons/hicolor/22x22/apps lintian-22x22.png usr/share/apps/lintian/icons/hicolor/22x22 lintian-22x22.png usr/share/apps/lintian/icons/hicolor/20x20 lintian-16x16.png usr/share/doc/lintian/ lintian-22x22.png usr/share/games/icons/hicolor/22x22 lintian-16x16.png usr/share/icons/hicolor/scalable/apps lintian-22x22.png usr/share/icons/16x16/animations/ --lzma etc/modprobe.d lintian.conf etc/modprobe.d dir usr/share/info foo.vcproj usr/lib/foo lintian-lib.conf etc/ld.so.conf.d php-foo.ini etc/php5/conf.d types usr/share/mime mimeinfo.cache usr/share/applications file-in-new-top-level-dir new-top-level-dir/ sudotest etc/sudoers.d/ lintian-2.5.22ubuntu1/t/tests/files-general/debian/debian/rules0000775000000000000000000000264012310413206021314 0ustar #!/usr/bin/make -f tmp := $(CURDIR)/debian/$(shell dh_listpackages) %: dh $@ override_dh_install: dh_install echo "#fake conf file" > $(tmp)/etc/pam.conf echo "Back-up file" > $(tmp)/usr/share/foo/file~ # The name of the "binary" is "Tori no Uta" # If it is ever messed up, it can be restored by # using something like: # perl -pe 's/\@FILE\@/\xe9\xb3\xa5\xe3\x81\xae\xe8\xa9\xa9\x0a/' echo "#!/bin/sh" > $(tmp)/usr/bin/鳥の詩 chmod +x $(tmp)/usr/bin/鳥の詩 # Copy the manpage to its correct name so dh_installman can # find it. # - d/clean will remove it again cp -a tnu.1 鳥の詩.1 touch $(tmp)/usr/doc/FSSTND touch $(tmp)/usr/share/foo/'*' touch $(tmp)/usr/share/foo/'ws ' touch $(tmp)/usr/share/foo/.nfs-fake-tmpfile # If the following line gets messed up, it can be # restored with something like: # sed -i 's/@FILE@/bokm\xe5l/' touch $(tmp)/usr/share/foo/bokml touch $(tmp)/var/catman/do override_dh_fixperms: dh_fixperms chmod 755 $(tmp)/usr/share/man/man5/foo.5.gz chmod 644 $(tmp)/etc/sudoers.d/* override_dh_compress: dh_compress # create a .png and .png.gz gzip -1 $(tmp)/usr/share/doc/lintian/lintian-16x16.png zcat $(tmp)/usr/share/doc/lintian/lintian-16x16.png.gz > \ $(tmp)/usr/share/doc/lintian/lintian-16x16.png override_dh_link: dh_link mkdir -p $(tmp)/usr/share/doc/bar echo "Hallo World" > $(tmp)/usr/share/doc/bar/foo ln -s ../bar/foo $(tmp)/usr/share/doc/bar/star lintian-2.5.22ubuntu1/t/tests/files-general/debian/debian/dirs0000664000000000000000000000015012311410541021112 0ustar etc usr/bin usr/doc usr/share/foo usr/share/man/man1/random var/catman var/lock/lintian var/run/lintian lintian-2.5.22ubuntu1/t/tests/files-general/debian/debian/manpages0000664000000000000000000000002212310413206021742 0ustar foo.5 鳥の詩.1 lintian-2.5.22ubuntu1/t/tests/files-general/debian/php-foo.ini0000664000000000000000000000004612077065715021103 0ustar # this style of comments are obsolete lintian-2.5.22ubuntu1/t/tests/unpack-slashes-in-field-name/0000775000000000000000000000000012077065716020420 5ustar lintian-2.5.22ubuntu1/t/tests/unpack-slashes-in-field-name/tags0000664000000000000000000000020512077065716021276 0ustar I: unpack-slashes-in-field-name: unknown-field-in-control ../bar W: unpack-slashes-in-field-name source: unknown-field-in-dsc ../foo lintian-2.5.22ubuntu1/t/tests/unpack-slashes-in-field-name/desc0000664000000000000000000000020212077065716021253 0ustar Testname: unpack-slashes-in-field-name Sequence: 3500 Version: 1.0 Description: Test package with slashes in a control field name lintian-2.5.22ubuntu1/t/tests/unpack-slashes-in-field-name/debian/0000775000000000000000000000000012077065716021642 5ustar lintian-2.5.22ubuntu1/t/tests/unpack-slashes-in-field-name/debian/debian/0000775000000000000000000000000012310413206023041 5ustar lintian-2.5.22ubuntu1/t/tests/unpack-slashes-in-field-name/debian/debian/control.in0000664000000000000000000000102312310413206025045 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) XS-../foo: bar Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} XB-../bar: moo Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/shared-libs-la-files/0000775000000000000000000000000012077065716016763 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-la-files/tags0000664000000000000000000000052612077065716017647 0ustar E: shared-libs-la-files: incorrect-libdir-in-la-file usr/lib/kde3/kio_locate.la /build/buildd/kio-locate-0.4.5+ds/debian/kio-locate/usr/lib/kde3 != /usr/lib/kde3 E: shared-libs-la-files: non-empty-dependency_libs-in-la-file usr/lib/dependency_libs.la X: shared-libs-la-files: package-contains-broken-symlink var/lib/kde3/foo.la kio_locate.la lintian-2.5.22ubuntu1/t/tests/shared-libs-la-files/desc0000664000000000000000000000027612077065716017631 0ustar Testname: shared-libs-la-files Sequence: 6000 Version: 1.0 Description: Test checks related to libtool .la files Test-For: incorrect-libdir-in-la-file non-empty-dependency_libs-in-la-file lintian-2.5.22ubuntu1/t/tests/shared-libs-la-files/debian/0000775000000000000000000000000012077065716020205 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-la-files/debian/trailing-slash.txt0000664000000000000000000000031312077065716023664 0ustar dlname='trailing-slash.so' library_names='trailing-slash.so' old_library='' dependency_libs='' current=0 age=0 revision=0 installed=yes shouldnotlink=no dlopen='' dlpreopen='' libdir='/usr/lib/lintian/' lintian-2.5.22ubuntu1/t/tests/shared-libs-la-files/debian/dependency_libs.txt0000664000000000000000000000043312077065716024075 0ustar # Generated by ltmain.sh - GNU libtool 1.5.18 - (pwn3d by bksys) # # dlname='dependency_libs.so' library_names='dependency_libs.so' old_library='' dependency_libs='/usr/lib/libdep.la' current=0 age=0 revision=0 installed=yes shouldnotlink=no dlopen='' dlpreopen='' libdir='/usr/lib' lintian-2.5.22ubuntu1/t/tests/shared-libs-la-files/debian/Makefile0000664000000000000000000000023112077065716021641 0ustar LA_FILES:=kio_locate.la _python_module.la trailing-slash.la dependency_libs.la %.la: %.txt cp "$<" "$@" all: $(LA_FILES) clean: rm -f $(LA_FILES) lintian-2.5.22ubuntu1/t/tests/shared-libs-la-files/debian/kio_locate.txt0000664000000000000000000000052212077065716023056 0ustar # Generated by ltmain.sh - GNU libtool 1.5.18 - (pwn3d by bksys) # # dlname='kio_locate.so' library_names='kio_locate.so kio_locate.so kio_locate.so' old_library='' dependency_libs='' current=0 age=0 revision=0 installed=yes shouldnotlink=no dlopen='' dlpreopen='' libdir='/build/buildd/kio-locate-0.4.5+ds/debian/kio-locate/usr/lib/kde3'lintian-2.5.22ubuntu1/t/tests/shared-libs-la-files/debian/_python_module.txt0000664000000000000000000000033212077065716023771 0ustar dlname='_python_module.so' library_names='_python_module.so' old_library='' dependency_libs='' current=0 age=0 revision=0 installed=yes shouldnotlink=no dlopen='' dlpreopen='' libdir='/usr/lib/python2.5/site-packages' lintian-2.5.22ubuntu1/t/tests/shared-libs-la-files/debian/debian/0000775000000000000000000000000012310413206021404 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-la-files/debian/debian/links0000664000000000000000000000005712077065716022474 0ustar var/lib/kde3/kio_locate.la var/lib/kde3/foo.la lintian-2.5.22ubuntu1/t/tests/shared-libs-la-files/debian/debian/install0000664000000000000000000000017512077065716023023 0ustar dependency_libs.la usr/lib kio_locate.la usr/lib/kde3 trailing-slash.la usr/lib/lintian _python_module.la usr/share/pyshared lintian-2.5.22ubuntu1/t/tests/shared-libs-la-files/debian/debian/control.in0000664000000000000000000000075112310413206023417 0ustar Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: all Depends: $\{misc:Depends\}, python-support (>= 0.90) Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/lintian-check-tags-file/0000775000000000000000000000000012077065715017455 5ustar lintian-2.5.22ubuntu1/t/tests/lintian-check-tags-file/tag-list0000664000000000000000000000027212077065715021125 0ustar # This is a comment. # Check a couple of tags that we issue section-is-dh_make-template, debhelper-but-no-misc-depends # Check some other tag that we don't issue malformed-override lintian-2.5.22ubuntu1/t/tests/lintian-check-tags-file/tags0000664000000000000000000000022112077065715020331 0ustar E: lintian-check-tags-file: section-is-dh_make-template W: lintian-check-tags-file source: debhelper-but-no-misc-depends lintian-check-tags-file lintian-2.5.22ubuntu1/t/tests/lintian-check-tags-file/desc0000664000000000000000000000030612077065715020315 0ustar Testname: lintian-check-tags-file Sequence: 2500 Version: 1.0 Description: Test checking a specific list of tags from a file Options: --tags-from-file TESTSET/tests/lintian-check-tags-file/tag-list lintian-2.5.22ubuntu1/t/tests/lintian-check-tags-file/debian/0000775000000000000000000000000012077065715020677 5ustar lintian-2.5.22ubuntu1/t/tests/lintian-check-tags-file/debian/debian/0000775000000000000000000000000012310413206022077 5ustar lintian-2.5.22ubuntu1/t/tests/lintian-check-tags-file/debian/debian/control.in0000664000000000000000000000036312310413206024111 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Section: unknown Architecture: {$architecture} Description: {$description} lintian-2.5.22ubuntu1/t/tests/fields-essential-yes-source/0000775000000000000000000000000012077065715020422 5ustar lintian-2.5.22ubuntu1/t/tests/fields-essential-yes-source/tags0000664000000000000000000000000012077065715021271 0ustar lintian-2.5.22ubuntu1/t/tests/fields-essential-yes-source/desc0000664000000000000000000000032612077065715021264 0ustar Testname: fields-essential-yes-source Sequence: 6000 Version: 1.0 Description: Canary test for Essential field-related checks and assumptions Test-Against: new-essential-package essential-in-source-package lintian-2.5.22ubuntu1/t/tests/fields-essential-yes-source/debian/0000775000000000000000000000000012077065715021644 5ustar lintian-2.5.22ubuntu1/t/tests/fields-essential-yes-source/debian/debian/0000775000000000000000000000000012310413206023044 5ustar lintian-2.5.22ubuntu1/t/tests/fields-essential-yes-source/debian/debian/control.in0000664000000000000000000000125012310413206025052 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Essential: yes Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . In the, unlikely, event that dpkg-gencontrol starts considering the source-level Essential field this test should break so that lintian is fixed accordingly. lintian-2.5.22ubuntu1/t/tests/scripts-uses-perl4-libs-with-dep/0000775000000000000000000000000012077065716021232 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-uses-perl4-libs-with-dep/tags0000664000000000000000000000000012077065716022101 0ustar lintian-2.5.22ubuntu1/t/tests/scripts-uses-perl4-libs-with-dep/desc0000664000000000000000000000030412077065716022070 0ustar Testname: scripts-uses-perl4-libs-with-dep Sequence: 6000 Version: 1.0 Description: Check that script-uses-perl4-libs-without-dep works (negative) Test-Against: script-uses-perl4-libs-without-dep lintian-2.5.22ubuntu1/t/tests/scripts-uses-perl4-libs-with-dep/debian/0000775000000000000000000000000012077065716022454 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-uses-perl4-libs-with-dep/debian/naughty-script0000664000000000000000000000041112077065716025354 0ustar #!/usr/bin/perl =head1 NAME naughty-script -- uses obsolete perl4 libs =head1 SYNOPSIS naught-script =head1 DESCRIPTION This manpage is present to avoid a "binary-without-manpage" warning. :) =cut use strict; use warnings; do 'newgetopt.pl'; NGetOpt(); lintian-2.5.22ubuntu1/t/tests/scripts-uses-perl4-libs-with-dep/debian/Makefile0000664000000000000000000000013712077065716024115 0ustar all: naughty-script.1 %.1: % pod2man --section 1 "$<" > "$@" clean: rm -f naughty-script.1 lintian-2.5.22ubuntu1/t/tests/scripts-uses-perl4-libs-with-dep/debian/debian/0000775000000000000000000000000012310413206023653 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-uses-perl4-libs-with-dep/debian/debian/install0000664000000000000000000000002712077065716025266 0ustar naughty-script usr/bin lintian-2.5.22ubuntu1/t/tests/scripts-uses-perl4-libs-with-dep/debian/debian/control.in0000664000000000000000000000105112310413206025660 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), perl Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, libperl4-corelibs-perl | perl (<< 5.12.3-7) Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/scripts-uses-perl4-libs-with-dep/debian/debian/manpages0000664000000000000000000000002112077065716025405 0ustar naughty-script.1 lintian-2.5.22ubuntu1/t/tests/copyright-file-doc-symlink/0000775000000000000000000000000012077065714020246 5ustar lintian-2.5.22ubuntu1/t/tests/copyright-file-doc-symlink/tags0000664000000000000000000000000012077065714021115 0ustar lintian-2.5.22ubuntu1/t/tests/copyright-file-doc-symlink/desc0000664000000000000000000000024512077065714021110 0ustar Testname: copyright-file-doc-symlink Sequence: 6000 Version: 1.0 Description: Test a symlinked /usr/share/doc Test-Against: usr-share-doc-symlink-without-dependency lintian-2.5.22ubuntu1/t/tests/copyright-file-doc-symlink/debian/0000775000000000000000000000000012077065714021470 5ustar lintian-2.5.22ubuntu1/t/tests/copyright-file-doc-symlink/debian/debian/0000775000000000000000000000000012310413206022671 5ustar lintian-2.5.22ubuntu1/t/tests/copyright-file-doc-symlink/debian/debian/control.in0000664000000000000000000000267712310413206024715 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: {$source}-helper Architecture: {$architecture} Depends: {$source} (= {$version}), $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (symlink) Helper package with a legitimate /usr/share/doc symlink. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: {$source}-weak Architecture: {$architecture} Depends: {$source}, $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (weak) Helper package with a /usr/share/doc symlink but an insufficiently strong dependency. Lintian intentionally doesn't diagnose this. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/copyright-file-doc-symlink/debian/debian/rules0000775000000000000000000000044612077065714023776 0ustar #!/usr/bin/make -f pkg := copyright-file-doc-symlink %: dh $@ override_dh_prep: mkdir -p debian/$(pkg)-helper/usr/share/doc ln -s $(pkg) debian/$(pkg)-helper/usr/share/doc/$(pkg)-helper mkdir -p debian/$(pkg)-weak/usr/share/doc ln -s $(pkg) debian/$(pkg)-weak/usr/share/doc/$(pkg)-weak lintian-2.5.22ubuntu1/t/tests/debhelper-dh-clean-k-deprecated/0000775000000000000000000000000012077065715021024 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-dh-clean-k-deprecated/tags0000664000000000000000000000010412077065715021700 0ustar W: debhelper-dh-clean-k-deprecated source: dh-clean-k-is-deprecated lintian-2.5.22ubuntu1/t/tests/debhelper-dh-clean-k-deprecated/desc0000664000000000000000000000025112077065715021663 0ustar Testname: debhelper-dh-clean-k-deprecated Sequence: 6000 Version: 1.0 Description: Test for debhelper >=7 packages using dh_clean -k Test-For: dh-clean-k-is-deprecated lintian-2.5.22ubuntu1/t/tests/debhelper-dh-clean-k-deprecated/debian/0000775000000000000000000000000012077065715022246 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-dh-clean-k-deprecated/debian/debian/0000775000000000000000000000000012310413206023446 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-dh-clean-k-deprecated/debian/debian/control.in0000664000000000000000000000074012310413206025457 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 7) Package: {$source} Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/debhelper-dh-clean-k-deprecated/debian/debian/compat0000664000000000000000000000000212077065715024666 0ustar 7 lintian-2.5.22ubuntu1/t/tests/debhelper-dh-clean-k-deprecated/debian/debian/rules0000775000000000000000000000134012077065715024546 0ustar #!/usr/bin/make -f # # Use an alternate rules file that doesn't call dh to test not warning # about debhelper script tokens if we call no programs that care about # them. pkg = $(shell dh_listpackages) build: build-arch build-indep build-arch: build-indep: clean: dh_testdir dh_testroot dh_clean binary: binary-indep binary-arch binary-arch: binary-indep: dh_testdir dh_testroot dh_clean -k dh_install dh_installchangelogs dh_installdebconf # dh_installdocs may modify maintainer scripts install -m 644 debian/copyright debian/$(pkg)/usr/share/doc/$(pkg) dh_link dh_compress dh_fixperms dh_installdeb dh_gencontrol dh_md5sums dh_builddeb .PHONY: build-arch build-indep build binary binary-arch binary-indep clean lintian-2.5.22ubuntu1/t/tests/cruft-empty-diff/0000775000000000000000000000000012077065714016257 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-empty-diff/upstream/0000775000000000000000000000000012077065714020117 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-empty-diff/upstream/debian/0000775000000000000000000000000012310413206021320 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-empty-diff/upstream/debian/copyright0000664000000000000000000000177112077065714023302 0ustar This is part of the testsuite of lintian. See the file debian/copyright in the lintian source directory for more details. So far as it is copyrightable at all, this template is Copyright © 2008 Frank Lichtenheld This program is free software; you may 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, or (at your option) any later version. This 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. A copy of the GNU General Public License version 2 is available as /usr/share/common-licenses/GPL-2 in the Debian GNU/Linux distribution or at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. You can also obtain it by writing to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. lintian-2.5.22ubuntu1/t/tests/cruft-empty-diff/upstream/debian/source/0000775000000000000000000000000012077065714022641 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-empty-diff/upstream/debian/source/format0000664000000000000000000000000412077065714024046 0ustar 1.0 lintian-2.5.22ubuntu1/t/tests/cruft-empty-diff/upstream/debian/changelog0000664000000000000000000000036612310413206023177 0ustar cruft-empty-diff (1.0-1) unstable; urgency=low * Lintian Test Suite. * Test: basic * Suppress "should close ITP bug" messages. (Closes: #123456) -- Debian Lintian Maintainers Sun, 03 Nov 2013 19:50:00 +0000 lintian-2.5.22ubuntu1/t/tests/cruft-empty-diff/upstream/debian/compat0000664000000000000000000000000212077065714022537 0ustar 7 lintian-2.5.22ubuntu1/t/tests/cruft-empty-diff/upstream/debian/rules0000775000000000000000000000003512077065714022417 0ustar #!/usr/bin/make -f %: dh $@ lintian-2.5.22ubuntu1/t/tests/cruft-empty-diff/upstream/debian/control0000664000000000000000000000102612310413206022722 0ustar Source: cruft-empty-diff Priority: extra Section: devel Maintainer: Debian Lintian Maintainers Standards-Version: 3.9.5 Build-Depends: debhelper (>= 7) Package: cruft-empty-diff Architecture: all Depends: ${shlibs:Depends}, ${misc:Depends} Description: Test an empty Debian diff This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/cruft-empty-diff/upstream/debian/watch0000664000000000000000000000000012077065714022360 0ustar lintian-2.5.22ubuntu1/t/tests/cruft-empty-diff/pre_build0000775000000000000000000000025012077065714020147 0ustar #!/bin/sh # # Remove files copied over from the skeleton but which aren't in the # upstream tarball so that we exactly match. set -e dir="$1" rm "${dir}"/debian/*.in lintian-2.5.22ubuntu1/t/tests/cruft-empty-diff/tags0000664000000000000000000000005612077065714017141 0ustar W: cruft-empty-diff source: empty-debian-diff lintian-2.5.22ubuntu1/t/tests/cruft-empty-diff/desc0000664000000000000000000000025312077065714017120 0ustar Testname: cruft-empty-diff Sequence: 6000 Version: 1.0-1 Type: non-native Description: Test an empty Debian diff Test-For: empty-debian-diff References: Debian Bug#498668 lintian-2.5.22ubuntu1/t/tests/cruft-empty-diff/debian/0000775000000000000000000000000012077065714017501 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-empty-diff/debian/debian/0000775000000000000000000000000012310413206020702 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-empty-diff/debian/debian/copyright0000664000000000000000000000177112077065714022664 0ustar This is part of the testsuite of lintian. See the file debian/copyright in the lintian source directory for more details. So far as it is copyrightable at all, this template is Copyright © 2008 Frank Lichtenheld This program is free software; you may 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, or (at your option) any later version. This 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. A copy of the GNU General Public License version 2 is available as /usr/share/common-licenses/GPL-2 in the Debian GNU/Linux distribution or at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. You can also obtain it by writing to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. lintian-2.5.22ubuntu1/t/tests/cruft-empty-diff/debian/debian/source/0000775000000000000000000000000012077065714022223 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-empty-diff/debian/debian/source/format0000664000000000000000000000000412077065714023430 0ustar 1.0 lintian-2.5.22ubuntu1/t/tests/cruft-empty-diff/debian/debian/changelog0000664000000000000000000000036612310413206022561 0ustar cruft-empty-diff (1.0-1) unstable; urgency=low * Lintian Test Suite. * Test: basic * Suppress "should close ITP bug" messages. (Closes: #123456) -- Debian Lintian Maintainers Sun, 03 Nov 2013 19:50:00 +0000 lintian-2.5.22ubuntu1/t/tests/cruft-empty-diff/debian/debian/compat0000664000000000000000000000000212077065714022121 0ustar 7 lintian-2.5.22ubuntu1/t/tests/cruft-empty-diff/debian/debian/rules0000775000000000000000000000003512077065714022001 0ustar #!/usr/bin/make -f %: dh $@ lintian-2.5.22ubuntu1/t/tests/cruft-empty-diff/debian/debian/control0000664000000000000000000000102612310413206022304 0ustar Source: cruft-empty-diff Priority: extra Section: devel Maintainer: Debian Lintian Maintainers Standards-Version: 3.9.5 Build-Depends: debhelper (>= 7) Package: cruft-empty-diff Architecture: all Depends: ${shlibs:Depends}, ${misc:Depends} Description: Test an empty Debian diff This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/cruft-empty-diff/debian/debian/watch0000664000000000000000000000000012077065714021742 0ustar lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-fp-sliding-win/0000775000000000000000000000000012310413144017734 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-fp-sliding-win/pre_build0000775000000000000000000000220412310413144021625 0ustar #!/usr/bin/perl # Attempt to break the GFDL so that the "redeeming" part of the # license gets in the window /after/ the triggering part. c/cruft # handles this case correctly now and we don't want to mess that up # later. use strict; use warnings; # Keep in sync with checks/cruft use constant BLOCK_SIZE => 4096; my ($rootdir) = @ARGV; my $dir = "$rootdir/debian/src"; my $file = "$dir/good.texi"; unless (-d $dir) { mkdir $dir or die "mkdir $dir: $!"; } my $slash = '/'; my $gfdl_start = <', $file or die "open $file: $!"; print {$fd} $prefix, "\n"; print {$fd} $gfdl_start; print {$fd} $gfdl_end; close $fd or die "close $file: $!"; lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-fp-sliding-win/tags0000664000000000000000000000000012310413144020603 0ustar lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-fp-sliding-win/desc0000664000000000000000000000024612310413144020577 0ustar Testname: cruft-gfdl-fp-sliding-win Sequence: 6000 Version: 1.0 Description: Check for FP with GFDL invariants sections Test-Against: license-problem-gfdl-invariants lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-fp-sliding-win/debian/0000775000000000000000000000000012310413144021156 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-fp-sliding-win/debian/src/0000775000000000000000000000000012310413144021745 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-gfdl-fp-sliding-win/debian/src/normal.texi0000664000000000000000000000056012310413144024131 0ustar Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". lintian-2.5.22ubuntu1/t/tests/fields-doc-pkg-wrong-arch/0000775000000000000000000000000012077065715017730 5ustar lintian-2.5.22ubuntu1/t/tests/fields-doc-pkg-wrong-arch/tags0000664000000000000000000000012512077065715020607 0ustar W: fields-doc-pkg-wrong-arch-doc: documentation-package-not-architecture-independent lintian-2.5.22ubuntu1/t/tests/fields-doc-pkg-wrong-arch/desc0000664000000000000000000000027412077065715020574 0ustar Testname: fields-doc-pkg-wrong-arch Sequence: 6000 Version: 1.0 Type: native Description: Check for doc pkg not being arch all Test-For: documentation-package-not-architecture-independent lintian-2.5.22ubuntu1/t/tests/fields-doc-pkg-wrong-arch/debian/0000775000000000000000000000000012077065715021152 5ustar lintian-2.5.22ubuntu1/t/tests/fields-doc-pkg-wrong-arch/debian/Makefile0000664000000000000000000000017512077065715022615 0ustar all: install: install -d -m 0755 "$(DESTDIR)/usr/lib/package" echo "Hallo World" > "$(DESTDIR)/usr/lib/package/some-file" lintian-2.5.22ubuntu1/t/tests/fields-doc-pkg-wrong-arch/debian/debian/0000775000000000000000000000000012310413206022352 5ustar lintian-2.5.22ubuntu1/t/tests/fields-doc-pkg-wrong-arch/debian/debian/control.in0000664000000000000000000000072212310413206024363 0ustar Source: {$source} Priority: extra Section: doc Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source}-doc Architecture: any Depends: $\{misc:Depends\}, Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/fields-debug-bad/0000775000000000000000000000000012077065715016151 5ustar lintian-2.5.22ubuntu1/t/tests/fields-debug-bad/tags0000664000000000000000000000024212077065715017030 0ustar W: fields-debug-bad source: dbg-package-missing-depends fields-debug-bad-dbg W: fields-debug-bad-dbg: debug-package-should-be-priority-extra fields-debug-bad-dbg lintian-2.5.22ubuntu1/t/tests/fields-debug-bad/desc0000664000000000000000000000026712077065715017017 0ustar Testname: fields-debug-bad Sequence: 6000 Version: 1.0 Description: Test for tags related to debug pkgs Test-For: dbg-package-missing-depends debug-package-should-be-priority-extra lintian-2.5.22ubuntu1/t/tests/fields-debug-bad/debian/0000775000000000000000000000000012077065715017373 5ustar lintian-2.5.22ubuntu1/t/tests/fields-debug-bad/debian/debian/0000775000000000000000000000000012310413206020573 5ustar lintian-2.5.22ubuntu1/t/tests/fields-debug-bad/debian/debian/control.in0000664000000000000000000000154012310413206022603 0ustar Source: {$source} Priority: optional Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: {$source}-dbg Section: debug Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} (dbg) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . The debug package. lintian-2.5.22ubuntu1/t/tests/debian-readme-general/0000775000000000000000000000000012077065715017163 5ustar lintian-2.5.22ubuntu1/t/tests/debian-readme-general/tags0000664000000000000000000000046412077065715020050 0ustar W: debian-readme-general: readme-debian-contains-invalid-email-address unknown@unknown W: debian-readme-general: readme-debian-mentions-usr-doc line 4 W: debian-readme-general: spelling-error-in-readme-debian CHNAGES CHANGES W: debian-readme-general: spelling-error-in-readme-debian accidentaly accidentally lintian-2.5.22ubuntu1/t/tests/debian-readme-general/desc0000664000000000000000000000040012077065715020016 0ustar Testname: debian-readme-general Sequence: 6000 Version: 1.0 Description: General tests for README.Debian Test-For: readme-debian-contains-invalid-email-address readme-debian-mentions-usr-doc spelling-error-in-readme-debian References: Debian Bug#556456 lintian-2.5.22ubuntu1/t/tests/debian-readme-general/debian/0000775000000000000000000000000012077065715020405 5ustar lintian-2.5.22ubuntu1/t/tests/debian-readme-general/debian/debian/0000775000000000000000000000000012077065715021627 5ustar lintian-2.5.22ubuntu1/t/tests/debian-readme-general/debian/debian/README.Debian0000664000000000000000000000070012077065715023665 0ustar This is a test README.Debian with a few problems that Lintian should catch, like accidentaly misspelled words. Here is a reference to /usr/doc/debian-readme-general, which is an old path that nothing should use any more. ALS is not a spelling error for also and ANG is not a spelling error for and. In general, possible acronyms like COMIT should be ignored. But only to a certain length; CHNAGES is still wrong. -- Unknown lintian-2.5.22ubuntu1/t/tests/shared-libs-exec-bit/0000775000000000000000000000000012077065716016767 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-exec-bit/tags0000664000000000000000000000034712077065716017654 0ustar E: libexecbit1: shlib-with-executable-bit usr/lib/libexecbit.so.1.0.1 0755 W: libexecbit1: non-standard-file-perm usr/lib/libbadperm.so.1.0.1 0600 != 0644 W: libexecbit1: shlib-with-bad-permissions usr/lib/libbadperm.so.1.0.1 0600 lintian-2.5.22ubuntu1/t/tests/shared-libs-exec-bit/desc0000664000000000000000000000026312077065716017631 0ustar Testname: shared-libs-exec-bit Sequence: 6000 Version: 1.0 Description: Test checks related to libs with exec bit Test-For: shlib-with-bad-permissions shlib-with-executable-bit lintian-2.5.22ubuntu1/t/tests/shared-libs-exec-bit/debian/0000775000000000000000000000000012077065716020211 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-exec-bit/debian/Makefile0000664000000000000000000000100512077065716021645 0ustar CC=gcc CFLAGS+= -fPIC SONAMES:= libexecbit.so.1 libbadperm.so.1 LIBFILES:= $(patsubst %,%.0.1, $(SONAMES)) all: $(LIBFILES) $(LIBFILES): code.o $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc clean: rm -f *.a *.o *.so* install: all install -m 0755 -d $(DESTDIR)/usr/lib install -m 0755 *execbit*.so* $(DESTDIR)/usr/lib install -m 0600 *badperm*.so* $(DESTDIR)/usr/lib for FILE in $(SONAMES) ; do \ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \ done .PHONY: install clean lintian-2.5.22ubuntu1/t/tests/shared-libs-exec-bit/debian/code.c0000664000000000000000000000033612077065716021271 0ustar #include #include double e(void (*f)(char *)){ char tmp[10]; double x; f(tmp); x = atof(tmp); return exp(x); } double energy(double mass){ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass; } lintian-2.5.22ubuntu1/t/tests/shared-libs-exec-bit/debian/debian/0000775000000000000000000000000012310413206021410 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-exec-bit/debian/debian/control.in0000664000000000000000000000070712310413206023424 0ustar Source: {$source} Priority: extra Section: libs Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: libexecbit1 Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/tests/shared-libs-exec-bit/debian/debian/rules0000664000000000000000000000011112077065716022501 0ustar #!/usr/bin/make -f %: dh $@ override_dh_fixperms: # Do nothing, TYIA lintian-2.5.22ubuntu1/t/tests/shared-libs-exec-bit/debian/debian/libexecbit1.symbols0000664000000000000000000000010212077065716025231 0ustar libexecbit.so.1 libexecbit1 #MINVER# e@Base 1.0 energy@Base 0.9 lintian-2.5.22ubuntu1/t/tests/binaries-misplaced/0000775000000000000000000000000012077065714016625 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-misplaced/tags0000664000000000000000000000017712077065714017513 0ustar E: binaries-misplaced: arch-independent-package-contains-binary-or-object etc/foo E: binaries-misplaced: binary-in-etc etc/foo lintian-2.5.22ubuntu1/t/tests/binaries-misplaced/desc0000664000000000000000000000025112077065714017464 0ustar Testname: binaries-misplaced Sequence: 6000 Version: 1.0 Description: Test binaries in /etc Test-For: arch-independent-package-contains-binary-or-object binary-in-etc lintian-2.5.22ubuntu1/t/tests/binaries-misplaced/debian/0000775000000000000000000000000012077065714020047 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-misplaced/debian/debian/0000775000000000000000000000000012310413144021251 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-misplaced/debian/debian/rules0000775000000000000000000000044012310413144022327 0ustar #!/usr/bin/make -f pkg=binaries-misplaced %: dh $@ override_dh_install: mkdir -p debian/$(pkg)/etc/ cp -a /bin/true debian/$(pkg)/etc/foo # explicitly call dh_shlibdeps since debhelper is being # "smart" and not calling it in newer versons (8.9.something) dh_shlibdeps dh_install lintian-2.5.22ubuntu1/t/tests/fields-depends-wildcard/0000775000000000000000000000000012077065715017550 5ustar lintian-2.5.22ubuntu1/t/tests/fields-depends-wildcard/tags0000664000000000000000000000000012077065715020417 0ustar lintian-2.5.22ubuntu1/t/tests/fields-depends-wildcard/desc0000664000000000000000000000021412077065715020406 0ustar Testname: fields-depends-wildcard Sequence: 6000 Version: 1.0 Architecture: any Description: Check package dependencies with arch wildcards lintian-2.5.22ubuntu1/t/tests/fields-depends-wildcard/debian/0000775000000000000000000000000012077065715020772 5ustar lintian-2.5.22ubuntu1/t/tests/fields-depends-wildcard/debian/Makefile0000664000000000000000000000017512077065715022435 0ustar all: install: install -d -m 0755 "$(DESTDIR)/usr/lib/package" echo "Hallo World" > "$(DESTDIR)/usr/lib/package/some-file" lintian-2.5.22ubuntu1/t/tests/fields-depends-wildcard/debian/debian/0000775000000000000000000000000012310413206022172 5ustar lintian-2.5.22ubuntu1/t/tests/fields-depends-wildcard/debian/debian/control.in0000664000000000000000000000104012310413206024175 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, foo [linux-any], bar [i386], baz [amd64] Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-scripts/0000775000000000000000000000000012077065716020541 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-scripts/tags0000664000000000000000000000050312077065716021420 0ustar E: libfoo1: postinst-must-call-ldconfig usr/lib/libfoo.so.1.0.1 E: libfoo1: postrm-should-call-ldconfig usr/lib/libfoo.so.1.0.1 W: app: postinst-has-useless-call-to-ldconfig W: app: postrm-has-useless-call-to-ldconfig W: libfish1: preinst-calls-ldconfig W: libfish1: prerm-calls-ldconfig W: libuns1: postrm-unsafe-ldconfig lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-scripts/desc0000664000000000000000000000052212077065716021401 0ustar Testname: shared-libs-ldconfig-scripts Sequence: 6000 Version: 1.0 Description: Test checks related to ldconfig in scripts Test-For: postinst-has-useless-call-to-ldconfig postinst-must-call-ldconfig postrm-has-useless-call-to-ldconfig postrm-should-call-ldconfig postrm-unsafe-ldconfig preinst-calls-ldconfig prerm-calls-ldconfig lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-scripts/debian/0000775000000000000000000000000012077065716021763 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-scripts/debian/Makefile0000664000000000000000000000072012077065716023422 0ustar CC=gcc CFLAGS+= -fPIC SONAMES:= libfoo.so.1 libfish.so.1 libuns.so.1 LIBFILES:= $(patsubst %,%.0.1, $(SONAMES)) all: $(LIBFILES) $(LIBFILES): code.o $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lm clean: rm -f *.a *.o *.so* install: all install -m 0755 -d $(DESTDIR)/usr/lib install -m 0644 *.so* $(DESTDIR)/usr/lib for FILE in $(SONAMES) ; do \ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \ done .PHONY: install clean lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-scripts/debian/code.c0000664000000000000000000000033612077065716023043 0ustar #include #include double e(void (*f)(char *)){ char tmp[10]; double x; f(tmp); x = atof(tmp); return exp(x); } double energy(double mass){ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass; } lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-scripts/debian/app0000775000000000000000000000003312077065716022465 0ustar #!/bin/sh echo Hello World lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-scripts/debian/debian/0000775000000000000000000000000012310413206023162 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-scripts/debian/debian/libfoo1.postrm0000775000000000000000000000015112077065716026006 0ustar #!/bin/sh set -e if false ; then true ; fi # -- we will remove all debhelper stuff later. #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-scripts/debian/debian/control.in0000664000000000000000000000312712310413206025175 0ustar Source: {$source} Priority: extra Section: libs Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: libfoo1 Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (missing ldc) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . Checks for missing ldconfig in scripts. Package: libfish1 Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (preinst/rm ldc) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . Checks for ldconfig in preinst/prerm scripts. Package: libuns1 Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (unsafe ldc) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . Checks for unsafe ldconfig usage scripts. Package: app Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (useless ldc) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . Checks for useless ldconfig usage in scripts. lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-scripts/debian/debian/libfish1.install0000664000000000000000000000002112077065716026267 0ustar usr/lib/libfish* lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-scripts/debian/debian/libuns1.install0000664000000000000000000000002012077065716026142 0ustar usr/lib/libuns* lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-scripts/debian/debian/libuns1.postrm0000775000000000000000000000013012077065716026025 0ustar #!/bin/sh set -e ldconfig # -- we will remove all debhelper stuff later. #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-scripts/debian/debian/app.install0000664000000000000000000000002112077065716025346 0ustar app usr/lib/app lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-scripts/debian/debian/rules0000775000000000000000000000061612310413146024250 0ustar #!/usr/bin/make -f %: dh $@ override_dh_builddeb: for P in $$(dh_listpackages) ; do \ for S in postinst postrm preinst prerm ; do \ if [ -f debian/$${P}.$${S} ] ; then \ cp -af debian/$${P}.$${S} debian/$${P}/DEBIAN/$${S} ; \ chmod 0755 debian/$${P}/DEBIAN/$${S} ; \ sed -i '/#DEBHELPER#/ d' debian/$${P}/DEBIAN/$${S} ; \ fi ; \ done ; \ done dh_builddeb lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-scripts/debian/debian/libfoo1.symbols0000664000000000000000000000007212077065716026151 0ustar libfoo.so.1 libfoo1 #MINVER# e@Base 1.0 energy@Base 0.9 lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-scripts/debian/debian/libfish1.preinst0000775000000000000000000000005012077065716026312 0ustar #!/bin/sh set -e ldconfig #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-scripts/debian/debian/app.postinst0000775000000000000000000000005012077065716025570 0ustar #!/bin/sh set -e ldconfig #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-scripts/debian/debian/libuns1.symbols0000664000000000000000000000007212077065716026173 0ustar libuns.so.1 libuns1 #MINVER# e@Base 1.0 energy@Base 0.9 lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-scripts/debian/debian/libfish1.prerm0000775000000000000000000000005012077065716025753 0ustar #!/bin/sh set -e ldconfig #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-scripts/debian/debian/app.postrm0000775000000000000000000000011112077065716025227 0ustar #!/bin/sh set -e if [ "$1" = remove ] ; then ldconfig ; fi #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-scripts/debian/debian/libfish1.symbols0000664000000000000000000000007412077065716026321 0ustar libfish.so.1 libfish1 #MINVER# e@Base 1.0 energy@Base 0.9 lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-scripts/debian/debian/libfoo1.postinst0000775000000000000000000000016612077065716026353 0ustar #!/bin/sh set -e # No ldconfig if false ; then true ; fi # -- we will remove all debhelper stuff later. #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-scripts/debian/debian/libfoo1.install0000664000000000000000000000002012077065716026120 0ustar usr/lib/libfoo* lintian-2.5.22ubuntu1/t/tests/control-file-pedantic-space/0000775000000000000000000000000012077065714020345 5ustar lintian-2.5.22ubuntu1/t/tests/control-file-pedantic-space/tags0000664000000000000000000000040512077065714021225 0ustar P: control-file-pedantic-space source: debian-control-has-unusual-field-spacing line 1 P: control-file-pedantic-space source: debian-control-has-unusual-field-spacing line 2 P: control-file-pedantic-space source: debian-control-has-unusual-field-spacing line 3 lintian-2.5.22ubuntu1/t/tests/control-file-pedantic-space/desc0000664000000000000000000000032712077065714021210 0ustar Testname: control-file-pedantic-space Sequence: 6000 Version: 1.0 Skeleton: pedantic Options: --pedantic -I -E Description: Pedantic tests for control file spacing Test-For: debian-control-has-unusual-field-spacing lintian-2.5.22ubuntu1/t/tests/control-file-pedantic-space/debian/0000775000000000000000000000000012077065714021567 5ustar lintian-2.5.22ubuntu1/t/tests/control-file-pedantic-space/debian/debian/0000775000000000000000000000000012310413206022770 5ustar lintian-2.5.22ubuntu1/t/tests/control-file-pedantic-space/debian/debian/control.in0000664000000000000000000000100512310413206024774 0ustar Source: {$source} Priority:extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Homepage: http://lintian.debian.org/ Package: {$source} Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/changelog-file-become-native/0000775000000000000000000000000012077065714020452 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-become-native/tags0000664000000000000000000000012112077065714021325 0ustar W: changelog-file-become-native: latest-debian-changelog-entry-changed-to-native lintian-2.5.22ubuntu1/t/tests/changelog-file-become-native/desc0000664000000000000000000000034512077065714021315 0ustar Testname: changelog-file-become-native Sequence: 6000 Version: 1.0 Description: Test for packages where the version suddenly becomes native Test-For: latest-debian-changelog-entry-changed-to-native References: Debian Bug #504070 lintian-2.5.22ubuntu1/t/tests/changelog-file-become-native/debian/0000775000000000000000000000000012077065714021674 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-become-native/debian/debian/0000775000000000000000000000000012310413206023075 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-become-native/debian/debian/changelog.in0000664000000000000000000000036112310413206025354 0ustar {$source} ({$version}) unstable; urgency=low * Lintian Test Suite. * Test: {$testname} -- {$author} {$date} {$source} (0.1-2) unstable; urgency=low * An earlier non-native version. -- {$author} Tue, 1 Jan 2008 22:45:57 +0000 lintian-2.5.22ubuntu1/t/tests/systemd-complex-service-file/0000775000000000000000000000000012310413146020564 5ustar lintian-2.5.22ubuntu1/t/tests/systemd-complex-service-file/tags0000664000000000000000000000037312310413146021450 0ustar W: systemd-complex-service-file: systemd-service-file-refers-to-obsolete-target lib/systemd/system/test.service dbus.target W: systemd-complex-service-file: systemd-service-file-refers-to-obsolete-target lib/systemd/system/test2.service syslog.target lintian-2.5.22ubuntu1/t/tests/systemd-complex-service-file/desc0000664000000000000000000000033512310413146021426 0ustar Testname: systemd-complex-service-file Sequence: 6000 Version: 1.0 Description: Verifies the .service file parser properly handles .include within service files. Test-For: systemd-service-file-refers-to-obsolete-target lintian-2.5.22ubuntu1/t/tests/systemd-complex-service-file/debian/0000775000000000000000000000000012310413146022006 5ustar lintian-2.5.22ubuntu1/t/tests/systemd-complex-service-file/debian/debian/0000775000000000000000000000000012310413206023225 5ustar lintian-2.5.22ubuntu1/t/tests/systemd-complex-service-file/debian/debian/install0000664000000000000000000000017112310413206024615 0ustar debian/test.service lib/systemd/system/ debian/test2.service lib/systemd/system/ debian/test3.service lib/systemd/system/lintian-2.5.22ubuntu1/t/tests/systemd-complex-service-file/debian/debian/test.service0000664000000000000000000000014212310413146025566 0ustar [Unit] After=dbus.target [Service] ExecStart=/usr/bin/test [Install] WantedBy=multi-user.target lintian-2.5.22ubuntu1/t/tests/systemd-complex-service-file/debian/debian/test2.service0000664000000000000000000000011512310413146025650 0ustar .include /lib/systemd/system/test.service [Unit] After= After=syslog.target lintian-2.5.22ubuntu1/t/tests/systemd-complex-service-file/debian/debian/test3.service0000664000000000000000000000011712310413206025650 0ustar .include /lib/systemd/system/test.service [Unit] After= After = syslog.target lintian-2.5.22ubuntu1/t/tests/changelog-file-extra-upstream/0000775000000000000000000000000012077065714020715 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-extra-upstream/upstream/0000775000000000000000000000000012077065714022555 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-extra-upstream/upstream/changelog0000664000000000000000000000004612077065714024427 0ustar This is some upstream changelog file. lintian-2.5.22ubuntu1/t/tests/changelog-file-extra-upstream/tags0000664000000000000000000000000012077065714021564 0ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-extra-upstream/desc0000664000000000000000000000030012077065714021547 0ustar Testname: changelog-file-extra-upstream Sequence: 6000 Type: non-native Version: 1.0-1 Description: Check a package with ChangeLog and changelog.gz Test-Against: changelog-file-not-compressed lintian-2.5.22ubuntu1/t/tests/changelog-file-extra-upstream/debian/0000775000000000000000000000000012077065714022137 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-extra-upstream/debian/debian/0000775000000000000000000000000012077065714023361 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-extra-upstream/debian/debian/docs0000664000000000000000000000001212077065714024225 0ustar changelog lintian-2.5.22ubuntu1/t/tests/changelog-file-news-and-changelog-not-compressed/0000775000000000000000000000000012077065714024335 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-news-and-changelog-not-compressed/tags0000664000000000000000000000037512077065714025223 0ustar E: changelog-file-news-and-changelog-not-compressed: changelog-file-not-compressed changelog W: changelog-file-news-and-changelog-not-compressed: debian-news-file-not-compressed usr/share/doc/changelog-file-news-and-changelog-not-compressed/NEWS.Debian lintian-2.5.22ubuntu1/t/tests/changelog-file-news-and-changelog-not-compressed/desc0000664000000000000000000000032412077065714025175 0ustar Testname: changelog-file-news-and-changelog-not-compressed Sequence: 6000 Version: 1.0 Description: General tests for changelog-file tags Test-For: changelog-file-not-compressed debian-news-file-not-compressed lintian-2.5.22ubuntu1/t/tests/changelog-file-news-and-changelog-not-compressed/debian/0000775000000000000000000000000012077065714025557 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-news-and-changelog-not-compressed/debian/debian/0000775000000000000000000000000012077065714027001 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-news-and-changelog-not-compressed/debian/debian/rules0000775000000000000000000000044212077065714030061 0ustar #!/usr/bin/make -f pkg = $(shell dh_listpackages) %: dh $@ override_dh_installchangelogs: install -c -m 644 debian/changelog \ debian/$(pkg)/usr/share/doc/$(pkg)/changelog install -c -m 644 debian/NEWS \ debian/$(pkg)/usr/share/doc/$(pkg)/NEWS.Debian override_dh_compress: lintian-2.5.22ubuntu1/t/tests/changelog-file-news-and-changelog-not-compressed/debian/debian/NEWS0000664000000000000000000000040412077065714027476 0ustar changelog-file-news-and-changelog-not-compressed (1.0) unstable; urgency=low Something increditable important... or maybe this is just a lintian test for an uncompressed NEWS file. -- Niels Thykier Wed, 10 Aug 2011 21:09:24 +0200 lintian-2.5.22ubuntu1/t/tests/rules-dh-unused-target-nonempty/0000775000000000000000000000000012077065715021252 5ustar lintian-2.5.22ubuntu1/t/tests/rules-dh-unused-target-nonempty/tags0000664000000000000000000000012312077065715022127 0ustar W: rules-dh-unused-target-nonempty source: binary-arch-rules-but-pkg-is-arch-indep lintian-2.5.22ubuntu1/t/tests/rules-dh-unused-target-nonempty/desc0000664000000000000000000000035012077065715022111 0ustar Testname: rules-dh-unused-target-nonempty Sequence: 6000 Version: 1.0 Description: Allow dh in unused targets, but nothing else Test-For: binary-arch-rules-but-pkg-is-arch-indep References: <20080806175819.GV11882@mail-vs.djpig.de> lintian-2.5.22ubuntu1/t/tests/rules-dh-unused-target-nonempty/debian/0000775000000000000000000000000012077065715022474 5ustar lintian-2.5.22ubuntu1/t/tests/rules-dh-unused-target-nonempty/debian/debian/0000775000000000000000000000000012077065715023716 5ustar lintian-2.5.22ubuntu1/t/tests/rules-dh-unused-target-nonempty/debian/debian/rules0000775000000000000000000000065312077065715025002 0ustar #!/usr/bin/make -f build: build-stamp build-arch: build-indep: build-stamp: dh build touch $@ clean: dh $@ install: install-stamp install-stamp: build-stamp dh install touch $@ binary-arch: install dh $@ # This target is not empty, but it should be -install foo bar binary-indep: install dh $@ binary: binary-arch binary-indep .PHONY: binary binary-arch binary-indep install clean build build-arch build-indep lintian-2.5.22ubuntu1/t/tests/fields-wrong-section/0000775000000000000000000000000012310413206017113 5ustar lintian-2.5.22ubuntu1/t/tests/fields-wrong-section/tags0000664000000000000000000000314012310413206017772 0ustar I: libfields-wrong-section-java: javalib-but-no-public-jars W: fields-wrong-section-contrib-doc: wrong-section-according-to-package-name fields-wrong-section-contrib-doc => contrib/doc W: fields-wrong-section-dbg: wrong-section-according-to-package-name fields-wrong-section-dbg => debug W: fields-wrong-section-doc: wrong-section-according-to-package-name fields-wrong-section-doc => doc W: gir1.2-fields-wrong-section-0.1: wrong-section-according-to-package-name gir1.2-fields-wrong-section-0.1 => introspection W: libfields-wrong-section-cil: wrong-section-according-to-package-name libfields-wrong-section-cil => cli-mono W: libfields-wrong-section-dev: wrong-section-according-to-package-name libfields-wrong-section-dev => libdevel W: libfields-wrong-section-java: wrong-section-according-to-package-name libfields-wrong-section-java => java W: libfields-wrong-section-ocaml-dev: wrong-section-according-to-package-name libfields-wrong-section-ocaml-dev => ocaml W: libfields-wrong-section-perl: wrong-section-according-to-package-name libfields-wrong-section-perl => perl W: libfields-wrong-section-ruby1.8: wrong-section-according-to-package-name libfields-wrong-section-ruby1.8 => ruby W: libghc-fields-wrong-section: wrong-section-according-to-package-name libghc-fields-wrong-section => haskell W: libphp-fields-wrong-section: wrong-section-according-to-package-name libphp-fields-wrong-section => php W: python-fields-wrong-section: wrong-section-according-to-package-name python-fields-wrong-section => python W: r-cran-fields-wrong-section: wrong-section-according-to-package-name r-cran-fields-wrong-section => gnu-r lintian-2.5.22ubuntu1/t/tests/fields-wrong-section/desc0000664000000000000000000000024112077065715017773 0ustar Testname: fields-wrong-section Sequence: 6000 Version: 1.0 Description: Packages placed in the wrong sections Test-For: wrong-section-according-to-package-name lintian-2.5.22ubuntu1/t/tests/fields-wrong-section/debian/0000775000000000000000000000000012077065715020357 5ustar lintian-2.5.22ubuntu1/t/tests/fields-wrong-section/debian/some-file0000664000000000000000000000005712077065715022164 0ustar Hi, I could totally be architecture dependent. lintian-2.5.22ubuntu1/t/tests/fields-wrong-section/debian/debian/0000775000000000000000000000000012310413206021557 5ustar lintian-2.5.22ubuntu1/t/tests/fields-wrong-section/debian/debian/control.in0000664000000000000000000001466012310413206023576 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} Only here as valid dependency for {$source}-dbg. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: {$source}-doc Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (doc) Test for doc section. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: {$source}-dbg Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, {$source} (= $\{binary:Version\}) Description: {$description} (debug) Test for debug section. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: lib{$source}-dev Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (dev) Test for libdevel section. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: lib{$source}-perl Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (perl) Test for perl section. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: python-{$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (Python) Test for Python section. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: lib{$source}-ocaml-dev Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (OCaml) Test for OCaml section. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: libghc-{$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (Haskell) Test for Haskell section. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: lib{$source}-cil Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (CLI/Mono) Test for CLI/Mono section. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: libphp-{$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (PHP) Test for PHP section. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: lib{$source}-ruby1.8 Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (Ruby) Test for Ruby section. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: lib{$source}-java Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (Java) Test for Java section. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: r-cran-{$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (GNU R) Test for GNU R section. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: lib{$source}-oldlibs-dev Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Section: oldlibs Description: {$description} (oldlibs) Test for oldlibs section. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: {$source}-contrib-doc Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Section: contrib/{$section} Description: {$description} (contrib docs) Test for suggestion for packages not in main. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: gir1.2-{$source}-0.1 Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (gir1.2-pkg) Test for gir1.2 packages. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/fields-wrong-section/debian/debian/rules0000664000000000000000000000023512077065715022656 0ustar #!/usr/bin/make -f %: dh $@ override_dh_auto_install: set -e ; for P in $$(dh_listpackages -a) ; do \ dh_install -p$$P some-file usr/lib/$$P ; \ done lintian-2.5.22ubuntu1/t/tests/strings-elf-detection/0000775000000000000000000000000012077065716017305 5ustar lintian-2.5.22ubuntu1/t/tests/strings-elf-detection/tags0000664000000000000000000000000012077065716020154 0ustar lintian-2.5.22ubuntu1/t/tests/strings-elf-detection/desc0000664000000000000000000000020212077065716020140 0ustar Testname: strings-elf-detection Sequence: 4500 Version: 1.0 Architecture: any Description: Test the ability to detect ELF objects lintian-2.5.22ubuntu1/t/tests/strings-elf-detection/debian/0000775000000000000000000000000012310413146020507 5ustar lintian-2.5.22ubuntu1/t/tests/strings-elf-detection/debian/Makefile0000664000000000000000000000014512077065716022167 0ustar all: gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o true true.c clean distclean: rm -f true check test: lintian-2.5.22ubuntu1/t/tests/strings-elf-detection/debian/true.c0000664000000000000000000000044312310413146021633 0ustar #include #include static void hardening_trigger(char *p, int i, void (*f)(char *)) { char test[10]; memcpy(test, p, i); f(test); printf("%s", test); } int main(void) { printf("Hello world!\n"); hardening_trigger(NULL, 0, NULL); return 0; } lintian-2.5.22ubuntu1/t/tests/strings-elf-detection/debian/debian/0000775000000000000000000000000012077065716021751 5ustar lintian-2.5.22ubuntu1/t/tests/strings-elf-detection/debian/debian/clean0000664000000000000000000000002212077065716022750 0ustar true foo bar::ELF lintian-2.5.22ubuntu1/t/tests/strings-elf-detection/debian/debian/install0000664000000000000000000000014112077065716023336 0ustar foo usr/share/foo/ELF/ bar::ELF usr/share/foo/ELF/ bar::ELF usr/share/foo/ true usr/lib/bar::ELF lintian-2.5.22ubuntu1/t/tests/strings-elf-detection/debian/debian/rules0000775000000000000000000000030112077065716023023 0ustar #!/usr/bin/make -f pkg=strings-elf-detection %: dh $@ override_dh_install: touch foo bar::ELF mkdir -p debian/$(pkg)/usr/lib/foo cp true debian/$(pkg)/usr/lib/foo/true\ false dh_install lintian-2.5.22ubuntu1/t/tests/strings-elf-detection/debian/debian/dirs0000664000000000000000000000003212077065716022630 0ustar usr/share/foo/ELF usr/lib lintian-2.5.22ubuntu1/t/tests/control-file-hardcoded-libc/0000775000000000000000000000000012077065714020311 5ustar lintian-2.5.22ubuntu1/t/tests/control-file-hardcoded-libc/tags0000664000000000000000000000067412077065714021201 0ustar W: control-file-hardcoded-libc source: package-depends-on-hardcoded-libc control-file-hardcoded-libc depends W: control-file-hardcoded-libc source: package-depends-on-hardcoded-libc control-file-hardcoded-libc pre-depends W: control-file-hardcoded-libc source: package-depends-on-hardcoded-libc control-file-hardcoded-libc recommends W: control-file-hardcoded-libc source: package-depends-on-hardcoded-libc control-file-hardcoded-libc suggests lintian-2.5.22ubuntu1/t/tests/control-file-hardcoded-libc/desc0000664000000000000000000000027612077065714021157 0ustar Testname: control-file-hardcoded-libc Sequence: 6000 Version: 1.0 Description: Test hard-coded dependencies on libc Test-For: package-depends-on-hardcoded-libc References: Debian Bug#512196 lintian-2.5.22ubuntu1/t/tests/control-file-hardcoded-libc/debian/0000775000000000000000000000000012077065714021533 5ustar lintian-2.5.22ubuntu1/t/tests/control-file-hardcoded-libc/debian/debian/0000775000000000000000000000000012310413206022734 5ustar lintian-2.5.22ubuntu1/t/tests/control-file-hardcoded-libc/debian/debian/control.in0000664000000000000000000000106712310413206024750 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Pre-Depends: libc0.1 Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, libc6 Recommends: libc6.1 Suggests: libc0.3 Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/fields-architecture/0000775000000000000000000000000012310413144017000 5ustar lintian-2.5.22ubuntu1/t/tests/fields-architecture/tags0000664000000000000000000000000012077065715017670 0ustar lintian-2.5.22ubuntu1/t/tests/fields-architecture/desc0000664000000000000000000000030212310413144017634 0ustar Testname: fields-architecture Sequence: 6000 Version: 1.0 Description: Tests for the Architecture field Architecture: linux-any any-i386 kfreebsd-any hurd-any Test-Against: unknown-architecture lintian-2.5.22ubuntu1/t/tests/fields-architecture/debian/0000775000000000000000000000000012310413205020220 5ustar lintian-2.5.22ubuntu1/t/tests/fields-architecture/debian/Makefile0000664000000000000000000000017512077065715021706 0ustar all: install: install -d -m 0755 "$(DESTDIR)/usr/lib/package" echo "Hallo World" > "$(DESTDIR)/usr/lib/package/some-file" lintian-2.5.22ubuntu1/t/tests/files-arch-indep-not-marked-all/0000775000000000000000000000000012077065715021012 5ustar lintian-2.5.22ubuntu1/t/tests/files-arch-indep-not-marked-all/tags0000664000000000000000000000011512077065715021670 0ustar X: files-arch-indep-not-marked-all: package-contains-no-arch-dependent-files lintian-2.5.22ubuntu1/t/tests/files-arch-indep-not-marked-all/desc0000664000000000000000000000030712077065715021653 0ustar Testname: files-arch-indep-not-marked-all Sequence: 6000 Version: 1.0 Architecture: any Description: Test of arch indep package not marked arch:all Test-For: package-contains-no-arch-dependent-files lintian-2.5.22ubuntu1/t/tests/files-arch-indep-not-marked-all/debian/0000775000000000000000000000000012077065715022234 5ustar lintian-2.5.22ubuntu1/t/tests/files-arch-indep-not-marked-all/debian/some-file0000664000000000000000000000005712077065715024041 0ustar Hi, I could totally be architecture dependent. lintian-2.5.22ubuntu1/t/tests/files-arch-indep-not-marked-all/debian/debian/0000775000000000000000000000000012310413206023434 5ustar lintian-2.5.22ubuntu1/t/tests/files-arch-indep-not-marked-all/debian/debian/install0000664000000000000000000000003412077065715025044 0ustar some-file usr/share/lintian lintian-2.5.22ubuntu1/t/tests/files-arch-indep-not-marked-all/debian/debian/control.in0000664000000000000000000000072712310413206025452 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/tests/source-copyright-unversioned-uri/0000775000000000000000000000000012077065716021536 5ustar lintian-2.5.22ubuntu1/t/tests/source-copyright-unversioned-uri/tags0000664000000000000000000000015612077065716022421 0ustar P: source-copyright-unversioned-uri source: unversioned-copyright-format-uri http://dep.debian.net/deps/dep5/ lintian-2.5.22ubuntu1/t/tests/source-copyright-unversioned-uri/desc0000664000000000000000000000027612077065716022404 0ustar Testname: source-copyright-unversioned-uri Sequence: 6000 Version: 1.0 Description: Test for unversioned DEP-5-like URI Options: -I -E --pedantic Test-For: unversioned-copyright-format-uri lintian-2.5.22ubuntu1/t/tests/source-copyright-unversioned-uri/debian/0000775000000000000000000000000012077065716022760 5ustar lintian-2.5.22ubuntu1/t/tests/source-copyright-unversioned-uri/debian/debian/0000775000000000000000000000000012077065716024202 5ustar lintian-2.5.22ubuntu1/t/tests/source-copyright-unversioned-uri/debian/debian/copyright0000664000000000000000000000202312077065716026132 0ustar Format: http://dep.debian.net/deps/dep5/ Upstream-Name: Doohickey Upstream-Contact: J. Random Hacker Source: http://examples.com/doohickey/source/ Files: * Copyright: 2011 J. Random Hacker License: GPL-2 This package 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; version 2 dated June, 1991. . This package 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 package; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. . On Debian systems, the full text of the GNU General Public License version 2 can be found in the file `/usr/share/common-licenses/GPL-2'. lintian-2.5.22ubuntu1/t/tests/rules-dh-order/0000775000000000000000000000000012077065715015727 5ustar lintian-2.5.22ubuntu1/t/tests/rules-dh-order/tags0000664000000000000000000000071312077065715016611 0ustar W: rules-dh-order source: debian-rules-calls-debhelper-in-odd-order dh_gencontrol (line 11) W: rules-dh-order source: debian-rules-calls-debhelper-in-odd-order dh_installdeb (line 12) W: rules-dh-order source: debian-rules-calls-debhelper-in-odd-order dh_makeshlibs (line 14) W: rules-dh-order source: debian-rules-calls-debhelper-in-odd-order dh_makeshlibs (line 18) W: rules-dh-order source: debian-rules-calls-debhelper-in-odd-order dh_shlibdeps (line 13) lintian-2.5.22ubuntu1/t/tests/rules-dh-order/desc0000664000000000000000000000023312077065715016566 0ustar Testname: rules-dh-order Sequence: 6000 Version: 1.0 Description: Test order of dh command invocations Test-For: debian-rules-calls-debhelper-in-odd-order lintian-2.5.22ubuntu1/t/tests/rules-dh-order/debian/0000775000000000000000000000000012077065715017151 5ustar lintian-2.5.22ubuntu1/t/tests/rules-dh-order/debian/debian/0000775000000000000000000000000012077065715020373 5ustar lintian-2.5.22ubuntu1/t/tests/rules-dh-order/debian/debian/rules0000775000000000000000000000115112077065715021451 0ustar #!/usr/bin/make -f %: dh $@ # Test for calling debhelper commands out of order. We take advantage here # of the fact checks/rules doesn't care what target the commands are called # from by using several uncalled targets. reverse: dh_builddeb dh_gencontrol dh_installdeb dh_shlibdeps dh_makeshlibs shared-order: dh_shlibdeps dh_makeshlibs dh_installdeb dh_gencontrol dh_builddeb multiple-package: dh_makeshlibs -pfoo dh_shlibdeps -pfoo dh_installdeb -pfoo dh_gencontrol -pfoo dh_builddeb -pfoo dh_makeshlibs -pbar dh_gencontrol -pbar dh_installdeb -pbar dh_shlibdeps -pbar dh_builddeb -pbar lintian-2.5.22ubuntu1/t/tests/legacy-foo++/0000775000000000000000000000000012310413206015224 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-foo++/post_test0000664000000000000000000000007012310413206017170 0ustar s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/ lintian-2.5.22ubuntu1/t/tests/legacy-foo++/tags0000664000000000000000000000345412310413206016113 0ustar E: foo++ changes: changed-by-address-malformed Marc 'HE' Brockschmidt E: foo++ source: build-info-in-binary-control-file-section Package foo++ E: foo++ source: debian-control-file-uses-obsolete-national-encoding at line 19 E: foo++ source: malformed-dm-upload-allowed no E: foo++ source: uploader-address-is-on-localhost Jeroen van Wolffelaar E: foo++ source: uploader-address-malformed Josip, I am afraid of spam and think this helps E: foo++ source: uploader-address-malformed Marc 'HE' Brockschmidt E: foo++ source: uploader-address-malformed Yama@gotchi E: foo++ source: uploader-name-missing Yama@gotchi E: foo++ source: wrong-debian-qa-address-set-as-maintainer Lintian Maintainer E: foo++-helper: wrong-debian-qa-address-set-as-maintainer Lintian Maintainer E: foo++: debian-changelog-file-contains-invalid-email-address he@unknown E: foo++: debian-changelog-file-uses-obsolete-national-encoding at line 11 E: foo++: no-copyright-file E: foo++: wrong-debian-qa-address-set-as-maintainer Lintian Maintainer I: foo++ source: duplicate-short-description foo++ foo++-helper I: foo++: no-md5sums-control-file W: foo++ source: ancient-standards-version 3.1.1 (current is CURRENT) W: foo++ source: debian-watch-file-in-native-package W: foo++ source: debian-watch-file-unknown-version 0 W: foo++ source: dm-upload-allowed-is-obsolete W: foo++ source: uploader-address-looks-weird Jeroen van Wolffelaar W: foo++-helper: empty-binary-package W: foo++: debian-changelog-has-wrong-weekday 2003-04-14 is a Monday W: foo++: latest-debian-changelog-entry-without-new-date W: foo++: readme-debian-contains-invalid-email-address foo@unknown lintian-2.5.22ubuntu1/t/tests/legacy-foo++/desc0000664000000000000000000000014012310413206016060 0ustar Testname: legacy-foo++ Source: foo++ Sequence: 9999 Version: 5 Description: Legacy test "foo++" lintian-2.5.22ubuntu1/t/tests/legacy-foo++/debian/0000775000000000000000000000000012310413206016446 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-foo++/debian/debian/0000775000000000000000000000000012310413206017670 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-foo++/debian/debian/copyright0000664000000000000000000000042212310413206021621 0ustar A reference to /usr/share/common-licenses/GPL to make it look like this package is under the GPL and trigger the OpenSSL warning. However, there is also a reference to /usr/share/common-licenses/LGPL, so who knows what bits actually depend on libssl. Copr. 2007 Somebody. lintian-2.5.22ubuntu1/t/tests/legacy-foo++/debian/debian/changelog0000664000000000000000000000157312310413206021550 0ustar foo++ (5) unstable; urgency=low * Add a fake README.Debian to trigger a warning. * This should trigger debian-changelog-file-contains-debmake-default-email-address. -- Marc 'HE' Brockschmidt Wed, 14 Apr 2003 01:35:47 +0200 foo++ (4) unstable; urgency=low * This changelog now includes a ISO-8859-1 character: '' -- Frank Lichtenheld Fri, 5 Mar 2004 13:41:39 +0100 foo++ (3) unstable; urgency=low * Set maintainers + uploaders incorrectly -- Jeroen van Wolffelaar Fri, 5 Mar 2004 04:20:24 +0100 foo++ (2) unstable; urgency=low * Added a foo++-helper package to try and catch even more ++ bugs. -- Sean 'Shaleh' Perry Sat, 10 Feb 2001 23:16:17 -0800 foo++ (1) unstable; urgency=low * Initial version -- Sean 'Shaleh' Perry Thu, 16 Nov 2000 09:11:40 -0800 lintian-2.5.22ubuntu1/t/tests/legacy-foo++/debian/debian/rules0000775000000000000000000000163312310413206020753 0ustar #!/usr/bin/make -f foo=foo++ helper=foo++-helper build-arch: build-indep: build: build-arch build-indep binary-arch: binary-indep: install -d debian/$(foo)/DEBIAN install -d debian/$(foo)/usr/share/doc/$(foo) install -m 644 debian/changelog \ debian/$(foo)/usr/share/doc/$(foo)/changelog gzip -9 debian/$(foo)/usr/share/doc/$(foo)/changelog install -m 644 debian/README.Debian \ debian/$(foo)/usr/share/doc/$(foo)/README.Debian gzip -9 debian/$(foo)/usr/share/doc/$(foo)/README.Debian dpkg-gencontrol -isp -p$(foo) -Pdebian/$(foo) dpkg --build debian/$(foo) .. install -d debian/$(helper)/DEBIAN install -d debian/$(helper)/usr/share/doc/ ln -sf $(foo) debian/$(helper)/usr/share/doc/$(helper) dpkg-gencontrol -isp -p$(helper) -Pdebian/$(helper) dpkg --build debian/$(helper) .. binary: binary-arch binary-indep clean: .PHONY: build-arch build-indep build binary-arch binary-indep binary clean lintian-2.5.22ubuntu1/t/tests/legacy-foo++/debian/debian/control0000664000000000000000000000222312310413206021272 0ustar Source: foo++ Section: misc Priority: optional Maintainer: Lintian Maintainer Uploaders: Marc 'HE' Brockschmidt , Jeroen van Wolffelaar, Frank , Yama@gotchi, Josip, I am afraid of spam and think this helps Standards-Version: 3.1.1 XS-Dm-Upload-Allowed: no Package: foo++ Architecture: all Build-Depends: test Depends: test, libssl0.9.7 Description: see how lintian reacts to plus signs in the package name Regression test to see if lintian tests work on a package with plus signs in its name. . This description also uses non-UTF8 high bytes chars: Package: foo++-helper Architecture: all Depends: test, foo++ Description: see how lintian reacts to plus signs in the package name Regression test to see if lintian tests work on a package with plus signs in its name. This has /usr/share/doc links to foo++ to trigger even more checks. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/tests/legacy-foo++/debian/debian/watch0000664000000000000000000000021612310413206020720 0ustar # A comment \ version=0 # uscan does not interpret the backslash above, it is just part of the comment http://domain.tld/file-(.*)\.tar\.gz lintian-2.5.22ubuntu1/t/tests/legacy-foo++/debian/debian/README.Debian0000664000000000000000000000025412310413206021732 0ustar foo++ for Debian ---------------- This should trigger a warning, as i use a fake mail address. -- Marc 'HE' Brockschmidt , Wed, 14 Apr 2004 01:44:18 +0200 lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-not-symlink/0000775000000000000000000000000012077065716021336 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-not-symlink/upstream/0000775000000000000000000000000012077065716023176 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-not-symlink/upstream/Makefile0000664000000000000000000000062512077065716024641 0ustar CC=gcc CFLAGS+= -fPIC SONAMES:= libfoo.so.1 LIBFILES:= $(patsubst %,%.0.1, $(SONAMES)) all: $(LIBFILES) $(LIBFILES): code.o $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc clean: rm -f *.a *.o *.so* install: all install -m 0755 -d $(DESTDIR)/usr/lib install -m 0644 *.so* $(DESTDIR)/usr/lib install -T -m 0644 *.so* $(DESTDIR)/usr/lib/libfoo.so.1 .PHONY: install clean lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-not-symlink/upstream/code.c0000664000000000000000000000033612077065716024256 0ustar #include #include double e(void (*f)(char *)){ char tmp[10]; double x; f(tmp); x = atof(tmp); return exp(x); } double energy(double mass){ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass; } lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-not-symlink/tags0000664000000000000000000000013212077065716022213 0ustar E: libfoo1: ldconfig-symlink-is-not-a-symlink usr/lib/libfoo.so.1.0.1 usr/lib/libfoo.so.1 lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-not-symlink/desc0000664000000000000000000000027512077065716022203 0ustar Testname: shared-libs-ldconfig-not-symlink Sequence: 6000 Version: 1.0-1 Type: non-native Description: Test ldconfig symlink not being a symlink Test-For: ldconfig-symlink-is-not-a-symlink lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-not-symlink/debian/0000775000000000000000000000000012077065716022560 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-not-symlink/debian/debian/0000775000000000000000000000000012310413206023757 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-not-symlink/debian/debian/control.in0000664000000000000000000000070312310413206025767 0ustar Source: {$source} Priority: extra Section: libs Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: libfoo1 Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/tests/shared-libs-ldconfig-not-symlink/debian/debian/libfoo1.symbols0000664000000000000000000000007212077065716026746 0ustar libfoo.so.1 libfoo1 #MINVER# e@Base 1.0 energy@Base 0.9 lintian-2.5.22ubuntu1/t/tests/fields-no-human-maintainer/0000775000000000000000000000000012077065715020206 5ustar lintian-2.5.22ubuntu1/t/tests/fields-no-human-maintainer/tags0000664000000000000000000000007312077065715021067 0ustar E: fields-no-human-maintainer source: no-human-maintainers lintian-2.5.22ubuntu1/t/tests/fields-no-human-maintainer/desc0000664000000000000000000000033512077065715021050 0ustar Testname: fields-no-human-maintainer Sequence: 6000 Version: 1.0 Description: Checks for a package maintained only by a list Author: Lintian Maintainers Test-For: no-human-maintainers lintian-2.5.22ubuntu1/t/tests/standards-version-timewarp-unrel/0000775000000000000000000000000012077065716021513 5ustar lintian-2.5.22ubuntu1/t/tests/standards-version-timewarp-unrel/tags0000664000000000000000000000000012077065716022362 0ustar lintian-2.5.22ubuntu1/t/tests/standards-version-timewarp-unrel/desc0000664000000000000000000000027512077065716022360 0ustar Testname: standards-version-timewarp-unrel Sequence: 6000 Version: 1.0 Description: Test newer standards version with unreleased old changelog date Test-Against: timewarp-standards-version lintian-2.5.22ubuntu1/t/tests/standards-version-timewarp-unrel/debian/0000775000000000000000000000000012077065716022735 5ustar lintian-2.5.22ubuntu1/t/tests/standards-version-timewarp-unrel/debian/debian/0000775000000000000000000000000012310413206024134 5ustar lintian-2.5.22ubuntu1/t/tests/standards-version-timewarp-unrel/debian/debian/changelog.in0000664000000000000000000000032012310413206026406 0ustar {$source} ({$version}) UNRELEASED; urgency=low * Lintian Test Suite. * Test: {$testname} * Suppress "should close ITP bug" messages. (Closes: #123456) -- {$author} Thu, 15 Mar 2001 07:00:00 +0000 lintian-2.5.22ubuntu1/t/tests/scripts-maintainer-script-empty/0000775000000000000000000000000012077065716021346 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-maintainer-script-empty/tags0000664000000000000000000000041612077065716022230 0ustar W: scripts-maintainer-script-empty: maintainer-script-empty postinst W: scripts-maintainer-script-empty: maintainer-script-empty postrm W: scripts-maintainer-script-empty: maintainer-script-empty preinst W: scripts-maintainer-script-empty: maintainer-script-empty prerm lintian-2.5.22ubuntu1/t/tests/scripts-maintainer-script-empty/desc0000664000000000000000000000022712077065716022210 0ustar Testname: scripts-maintainer-script-empty Sequence: 6000 Version: 1.0 Description: Test for empty maintainer scripts Test-For: maintainer-script-empty lintian-2.5.22ubuntu1/t/tests/scripts-maintainer-script-empty/debian/0000775000000000000000000000000012077065716022570 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-maintainer-script-empty/debian/debian/0000775000000000000000000000000012077065716024012 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-maintainer-script-empty/debian/debian/postinst0000664000000000000000000000171412077065716025623 0ustar #!/bin/sh # postinst script for generic-dh-make-2008 # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `configure' # * `abort-upgrade' # * `abort-remove' `in-favour' # # * `abort-remove' # * `abort-deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in configure) ;; abort-upgrade|abort-remove|abort-deconfigure) ;; *) echo "postinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 lintian-2.5.22ubuntu1/t/tests/scripts-maintainer-script-empty/debian/debian/postrm0000664000000000000000000000166112077065716025265 0ustar #!/bin/sh # postrm script for generic-dh-make-2008 # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `remove' # * `purge' # * `upgrade' # * `failed-upgrade' # * `abort-install' # * `abort-install' # * `abort-upgrade' # * `disappear' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) ;; *) echo "postrm called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 lintian-2.5.22ubuntu1/t/tests/scripts-maintainer-script-empty/debian/debian/preinst0000664000000000000000000000130112077065716025414 0ustar #!/bin/sh # preinst script for generic-dh-make-2008 # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `install' # * `install' # * `upgrade' # * `abort-upgrade' # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in install|upgrade) ;; abort-upgrade) ;; *) echo "preinst called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 lintian-2.5.22ubuntu1/t/tests/scripts-maintainer-script-empty/debian/debian/prerm0000664000000000000000000000157412077065716025071 0ustar #!/bin/sh # prerm script for generic-dh-make-2008 # # see: dh_installdeb(1) set -e # summary of how this script can be called: # * `remove' # * `upgrade' # * `failed-upgrade' # * `remove' `in-favour' # * `deconfigure' `in-favour' # `removing' # # for details, see http://www.debian.org/doc/debian-policy/ or # the debian-policy package case "$1" in remove|upgrade|deconfigure) ;; failed-upgrade) ;; *) echo "prerm called with unknown argument \`$1'" >&2 exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 lintian-2.5.22ubuntu1/t/tests/basic/0000775000000000000000000000000012310413205014131 5ustar lintian-2.5.22ubuntu1/t/tests/basic/tags0000664000000000000000000000000012077065714015022 0ustar lintian-2.5.22ubuntu1/t/tests/basic/desc0000664000000000000000000000013712304200542014774 0ustar Testname: basic Sequence: 0000 Version: 1.0 Description: Simple/basic test of a native package lintian-2.5.22ubuntu1/t/tests/rules-perl-makemaker/0000775000000000000000000000000012077065715017120 5ustar lintian-2.5.22ubuntu1/t/tests/rules-perl-makemaker/tags0000664000000000000000000000012412077065715017776 0ustar W: rules-perl-makemaker source: debian-rules-makemaker-prefix-is-deprecated line 46 lintian-2.5.22ubuntu1/t/tests/rules-perl-makemaker/desc0000664000000000000000000000033212077065715017757 0ustar Testname: rules-perl-makemaker Sequence: 6000 Version: 1.0 Description: Check detection of PREFIX usage in Makefile.PL based packages Test-For: debian-rules-makemaker-prefix-is-deprecated References: Debian Bug#545904 lintian-2.5.22ubuntu1/t/tests/rules-perl-makemaker/debian/0000775000000000000000000000000012077065715020342 5ustar lintian-2.5.22ubuntu1/t/tests/rules-perl-makemaker/debian/Foo.pm0000664000000000000000000000004612077065715021423 0ustar package Foo; our $VERSION = '1.1'; 1; lintian-2.5.22ubuntu1/t/tests/rules-perl-makemaker/debian/Makefile.PL0000664000000000000000000000013512077065715022313 0ustar use ExtUtils::MakeMaker; WriteMakefile( NAME => 'Foo', VERSION_FROM => 'Foo.pm', ); lintian-2.5.22ubuntu1/t/tests/rules-perl-makemaker/debian/debian/0000775000000000000000000000000012077065715021564 5ustar lintian-2.5.22ubuntu1/t/tests/rules-perl-makemaker/debian/debian/rules0000775000000000000000000000213512077065715022645 0ustar #!/usr/bin/make -f #export DH_VERBOSE=1 PERL ?= /usr/bin/perl PACKAGE = $(shell dh_listpackages) TMP = $(CURDIR)/debian/$(PACKAGE) configure: configure-stamp configure-stamp: dh_testdir perl Makefile.PL verbose INSTALLDIRS=vendor touch configure-stamp build-indep: build-arch: build-stamp build-stamp: configure-stamp dh_testdir $(MAKE) OPTIMIZE="-O2 -g -Wall" $(MAKE) test touch build-stamp build: build-arch build-indep clean: dh_testdir dh_testroot [ ! -e Makefile ] || $(MAKE) distclean dh_clean configure-stamp build-stamp install: build dh_testdir dh_testroot dh_prep dh_installdirs $(MAKE) install PREFIX=$(TMP)/usr # Remove any empty directories find $(TMP)/usr -type d -empty -print0 | xargs --no-run-if-empty --null rmdir -p --ignore-fail-on-non-empty binary-arch: binary-indep: build install dh_testdir dh_testroot dh_installdocs dh_installman dh_installchangelogs dh_compress dh_fixperms dh_installdeb dh_perl dh_gencontrol dh_md5sums dh_builddeb binary: binary-indep binary-arch .PHONY: build clean binary-indep binary-arch binary install configure lintian-2.5.22ubuntu1/t/tests/cruft-general-native/0000775000000000000000000000000012077065715017115 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-general-native/pre_build0000775000000000000000000000231212077065715021006 0ustar #!/bin/sh # # Create all the various junk that shouldn't exist in the diff so that we can # trigger all the tags. set -e dir="$1" mkdir "${dir}/CVS" echo 'diff-contains-cvs-control-dir' > "${dir}/CVS/Entries" mkdir "${dir}/.svn" echo 'diff-contains-svn-control-dir' > "${dir}/.svn/format" mkdir "${dir}/.bzr" echo 'diff-contains-bzr-control-dir' > "${dir}/.bzr/foo" mkdir "${dir}/{arch}" echo 'diff-contains-arch-control-dir' > "${dir}/{arch}/foo" mkdir "${dir}/.git" echo 'diff-contains-git-control-dir' > "${dir}/.git/foo" mkdir "${dir}/.hg" echo 'diff-contains-hg-control-dir' > "${dir}/.hg/foo" mkdir "${dir}/.be" echo 'diff-contains-bts-control-dir' > "${dir}/.be/foo" echo 'diff-contains-cmake-cache-file' > "${dir}/CMakeCache.txt" echo 'diff-contains-svn-commit-file' > "${dir}/svn-commit.tmp" echo 'diff-contains-svk-commit-file' > "${dir}/svk-commit444.tmp" echo 'diff-contains-arch-inventory-file' > "${dir}/.arch-inventory" echo 'diff-contains-hg-tags-file' > "${dir}/.hgtags" echo 'diff-contains-cvs-conflict-copy' > "${dir}/.#foo.1.1" echo 'diff-contains-svn-conflict-file' > "${dir}/foo.r1352" echo 'diff-contains-patch-failure-file' > "${dir}/foo.rej" echo 'diff-contains-editor-backup-file' > "${dir}/foo~" lintian-2.5.22ubuntu1/t/tests/cruft-general-native/tags0000664000000000000000000000214512077065715020000 0ustar E: cruft-general-native source: debian-files-list-in-source W: cruft-general-native source: diff-contains-arch-control-dir {arch} W: cruft-general-native source: diff-contains-arch-inventory-file .arch-inventory W: cruft-general-native source: diff-contains-bts-control-dir .be W: cruft-general-native source: diff-contains-bzr-control-dir .bzr W: cruft-general-native source: diff-contains-cvs-conflict-copy .#foo.1.1 W: cruft-general-native source: diff-contains-cvs-control-dir CVS W: cruft-general-native source: diff-contains-editor-backup-file foo~ W: cruft-general-native source: diff-contains-git-control-dir .git W: cruft-general-native source: diff-contains-hg-control-dir .hg W: cruft-general-native source: diff-contains-hg-tags-file .hgtags W: cruft-general-native source: diff-contains-patch-failure-file foo.rej W: cruft-general-native source: diff-contains-svk-commit-file svk-commit444.tmp W: cruft-general-native source: diff-contains-svn-commit-file svn-commit.tmp W: cruft-general-native source: diff-contains-svn-conflict-file foo.r1352 W: cruft-general-native source: diff-contains-svn-control-dir .svn lintian-2.5.22ubuntu1/t/tests/cruft-general-native/desc0000664000000000000000000000117412077065715017761 0ustar Testname: cruft-general-native Sequence: 6000 Version: 1.0 Type: native Description: Check for cruft in a native package Test-For: debian-files-list-in-source diff-contains-arch-control-dir diff-contains-arch-inventory-file diff-contains-bts-control-dir diff-contains-bzr-control-dir diff-contains-cvs-conflict-copy diff-contains-cvs-control-dir diff-contains-editor-backup-file diff-contains-git-control-dir diff-contains-hg-control-dir diff-contains-hg-tags-file diff-contains-patch-failure-file diff-contains-svk-commit-file diff-contains-svn-commit-file diff-contains-svn-conflict-file diff-contains-svn-control-dir lintian-2.5.22ubuntu1/t/tests/cruft-general-native/debian/0000775000000000000000000000000012077065715020337 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-general-native/debian/debian/0000775000000000000000000000000012077065715021561 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-general-native/debian/debian/rules0000775000000000000000000000013712077065715022642 0ustar #!/usr/bin/make -f %: dh $@ override_dh_prep: dh_prep -X~ -Xrej clean: @echo 'Do nothing' lintian-2.5.22ubuntu1/t/tests/cruft-general-native/debian/debian/substvars0000664000000000000000000000001612077065715023535 0ustar misc:Depends= lintian-2.5.22ubuntu1/t/tests/cruft-general-native/debian/debian/files0000664000000000000000000000005512077065715022606 0ustar cruft-general-native_1.0_all.deb devel extra lintian-2.5.22ubuntu1/t/tests/debhelper-dh-nativejava/0000775000000000000000000000000012077065715017544 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-dh-nativejava/tags0000664000000000000000000000000012077065715020413 0ustar lintian-2.5.22ubuntu1/t/tests/debhelper-dh-nativejava/desc0000664000000000000000000000025012077065715020402 0ustar Testname: debhelper-dh-nativejava Sequence: 6000 Version: 1.0 Description: Dependency handling for dh_nativejava Test-Against: missing-build-dependency-for-dh_-command lintian-2.5.22ubuntu1/t/tests/debhelper-dh-nativejava/debian/0000775000000000000000000000000012077065715020766 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-dh-nativejava/debian/debian/0000775000000000000000000000000012310413206022166 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-dh-nativejava/debian/debian/control.in0000664000000000000000000000101012310413206024166 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), gcj-native-helper Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/debhelper-dh-nativejava/debian/debian/rules0000775000000000000000000000010012077065715023257 0ustar #!/usr/bin/make -f %: dh $@ override_dh_prep: -dh_nativejava lintian-2.5.22ubuntu1/t/tests/files-extra-license/0000775000000000000000000000000012077065715016736 5ustar lintian-2.5.22ubuntu1/t/tests/files-extra-license/tags0000664000000000000000000000013112077065715017612 0ustar W: files-extra-license: extra-license-file usr/share/doc/files-extra-license/license.txt lintian-2.5.22ubuntu1/t/tests/files-extra-license/desc0000664000000000000000000000020212077065715017571 0ustar Testname: files-extra-license Sequence: 6000 Version: 1.0 Description: Test for extra license files Test-For: extra-license-file lintian-2.5.22ubuntu1/t/tests/files-extra-license/debian/0000775000000000000000000000000012077065715020160 5ustar lintian-2.5.22ubuntu1/t/tests/files-extra-license/debian/license.ui0000664000000000000000000000010012077065715022130 0ustar Lintian should not mistake this QT UI file for a license file. lintian-2.5.22ubuntu1/t/tests/files-extra-license/debian/license.txt0000664000000000000000000000006612077065715022345 0ustar Lintian should pick up this as an extra license file. lintian-2.5.22ubuntu1/t/tests/files-extra-license/debian/debian/0000775000000000000000000000000012077065715021402 5ustar lintian-2.5.22ubuntu1/t/tests/files-extra-license/debian/debian/docs0000664000000000000000000000001112077065715022245 0ustar license* lintian-2.5.22ubuntu1/t/tests/fields-maintainer/0000775000000000000000000000000012077065715016466 5ustar lintian-2.5.22ubuntu1/t/tests/fields-maintainer/tags0000664000000000000000000000102112077065715017341 0ustar E: fields-maintainer source: maintainer-address-is-on-localhost Mrs. Localhost E: fields-maintainer source: maintainer-address-malformed Mrs. Localhost E: fields-maintainer: maintainer-address-is-on-localhost Mrs. Localhost E: fields-maintainer: maintainer-address-malformed Mrs. Localhost W: fields-maintainer source: maintainer-address-looks-weird Mrs. Localhost W: fields-maintainer: maintainer-address-looks-weird Mrs. Localhost lintian-2.5.22ubuntu1/t/tests/fields-maintainer/desc0000664000000000000000000000032712077065715017331 0ustar Testname: fields-maintainer Sequence: 6000 Version: 1.0 Description: General tests of the maintainer field Test-For: maintainer-address-is-on-localhost maintainer-address-looks-weird maintainer-address-malformed lintian-2.5.22ubuntu1/t/tests/fields-maintainer/debian/0000775000000000000000000000000012077065715017710 5ustar lintian-2.5.22ubuntu1/t/tests/fields-maintainer/debian/debian/0000775000000000000000000000000012310413206021110 5ustar lintian-2.5.22ubuntu1/t/tests/fields-maintainer/debian/debian/control.in0000664000000000000000000000103312310413206023115 0ustar Source: {$source} Priority: extra Section: devel Maintainer: Mrs. Localhost Uploaders: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/files-hardlinks/0000775000000000000000000000000012077065715016152 5ustar lintian-2.5.22ubuntu1/t/tests/files-hardlinks/tags0000664000000000000000000000055212077065715017035 0ustar W: files-hardlinks: package-contains-hardlink usr/share/files-hardlinks/1st/link2 -> usr/share/files-hardlinks/2nd/link3 W: files-hardlinks: package-contains-hardlink usr/share/files-hardlinks/1st/link2 -> usr/share/files-hardlinks/3rd/orig W: files-hardlinks: package-contains-hardlink usr/share/files-hardlinks/1st/link2 -> usr/share/files-hardlinks/4th/link1 lintian-2.5.22ubuntu1/t/tests/files-hardlinks/desc0000664000000000000000000000021712077065715017013 0ustar Testname: files-hardlinks Sequence: 6000 Version: 1.0 Description: Test for (stable) handling of hardlinks Test-For: package-contains-hardlink lintian-2.5.22ubuntu1/t/tests/files-hardlinks/debian/0000775000000000000000000000000012077065715017374 5ustar lintian-2.5.22ubuntu1/t/tests/files-hardlinks/debian/debian/0000775000000000000000000000000012077065715020616 5ustar lintian-2.5.22ubuntu1/t/tests/files-hardlinks/debian/debian/rules0000775000000000000000000000051712077065715021701 0ustar #!/usr/bin/make -f PKG:=files-hardlinks DIR:=$(CURDIR)/debian/$(PKG)/usr/share/$(PKG) %: dh $@ override_dh_install: dh_install mkdir -p $(DIR)/1st $(DIR)/2nd $(DIR)/3rd $(DIR)/4th echo "Hallo world" > $(DIR)/3rd/orig ln $(DIR)/3rd/orig $(DIR)/4th/link1 ln $(DIR)/4th/link1 $(DIR)/1st/link2 ln $(DIR)/3rd/orig $(DIR)/2nd/link3 lintian-2.5.22ubuntu1/t/tests/debconf-syntax-error/0000775000000000000000000000000012077065715017146 5ustar lintian-2.5.22ubuntu1/t/tests/debconf-syntax-error/tags0000664000000000000000000000046312077065715020032 0ustar E: debconf-syntax-error source: syntax-error-in-debconf-template templates: syntax error at line 3: Cannot parse line "Description whoops, I forgot a colon" E: debconf-syntax-error: syntax-error-in-debconf-template templates: syntax error at line 3: Cannot parse line "Description whoops, I forgot a colon" lintian-2.5.22ubuntu1/t/tests/debconf-syntax-error/desc0000664000000000000000000000023212077065715020004 0ustar Testname: debconf-syntax-error Sequence: 6000 Version: 1.0 Description: Test for syntax error in debconf files Test-For: syntax-error-in-debconf-template lintian-2.5.22ubuntu1/t/tests/debconf-syntax-error/debian/0000775000000000000000000000000012077065715020370 5ustar lintian-2.5.22ubuntu1/t/tests/debconf-syntax-error/debian/debian/0000775000000000000000000000000012077065715021612 5ustar lintian-2.5.22ubuntu1/t/tests/debconf-syntax-error/debian/debian/templates0000664000000000000000000000011712077065715023532 0ustar Template: debconf/syntax-error Type: note Description whoops, I forgot a colon lintian-2.5.22ubuntu1/t/tests/debconf-syntax-error/debian/debian/config0000664000000000000000000000006412077065715023002 0ustar #!/bin/sh set -e . /usr/share/debconf/confmodule lintian-2.5.22ubuntu1/t/tests/debconf-syntax-error/debian/debian/postinst0000664000000000000000000000010112077065715023410 0ustar #!/bin/sh set -e #DEBHELPER# . /usr/share/debconf/confmodule lintian-2.5.22ubuntu1/t/tests/fields-indep-without-arch-indep/0000775000000000000000000000000012077065715021147 5ustar lintian-2.5.22ubuntu1/t/tests/fields-indep-without-arch-indep/tags0000664000000000000000000000012212077065715022023 0ustar E: fields-indep-without-arch-indep source: build-depends-indep-without-arch-indep lintian-2.5.22ubuntu1/t/tests/fields-indep-without-arch-indep/desc0000664000000000000000000000024612077065715022012 0ustar Testname: fields-indep-without-arch-indep Sequence: 6000 Version: 1.0 Description: Test for B-D-I and no indep pkgs Test-For: build-depends-indep-without-arch-indep lintian-2.5.22ubuntu1/t/tests/fields-indep-without-arch-indep/debian/0000775000000000000000000000000012077065715022371 5ustar lintian-2.5.22ubuntu1/t/tests/fields-indep-without-arch-indep/debian/Makefile0000664000000000000000000000017512077065715024034 0ustar all: install: install -d -m 0755 "$(DESTDIR)/usr/lib/package" echo "Hallo World" > "$(DESTDIR)/usr/lib/package/some-file" lintian-2.5.22ubuntu1/t/tests/fields-indep-without-arch-indep/debian/debian/0000775000000000000000000000000012310413206023571 5ustar lintian-2.5.22ubuntu1/t/tests/fields-indep-without-arch-indep/debian/debian/control.in0000664000000000000000000000076312310413206025607 0ustar Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Build-Depends-Indep: some-package Package: {$source} Architecture: any Depends: $\{misc:Depends\}, Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/huge-usr-share-percent/0000775000000000000000000000000012077065715017370 5ustar lintian-2.5.22ubuntu1/t/tests/huge-usr-share-percent/tags0000664000000000000000000000011212077065715020243 0ustar I: huge-usr-share-percent: arch-dep-package-has-big-usr-share 2049kB 100% lintian-2.5.22ubuntu1/t/tests/huge-usr-share-percent/desc0000664000000000000000000000027712077065715020237 0ustar Testname: huge-usr-share-percent Sequence: 6000 Version: 1.0 Description: Check passing the percentage limit of /usr/share data Architecture: any Test-For: arch-dep-package-has-big-usr-share lintian-2.5.22ubuntu1/t/tests/huge-usr-share-percent/debian/0000775000000000000000000000000012077065715020612 5ustar lintian-2.5.22ubuntu1/t/tests/huge-usr-share-percent/debian/debian/0000775000000000000000000000000012077065715022034 5ustar lintian-2.5.22ubuntu1/t/tests/huge-usr-share-percent/debian/debian/rules0000775000000000000000000000050012077065715023107 0ustar #!/usr/bin/make -f %: dh $@ override_dh_install: install -d debian/huge-usr-share-percent/usr/lib/a echo "Hallo World" > debian/huge-usr-share-percent/usr/lib/a/some-file install -d debian/huge-usr-share-percent/usr/share/a dd if=/dev/zero of=debian/huge-usr-share-percent/usr/share/a/zero \ bs=1024k count=2 lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-libc/0000775000000000000000000000000012310413144021256 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-libc/tags0000664000000000000000000000025012310413144022134 0ustar E: libbasic2: missing-dependency-on-libc needed by usr/lib/libbasic++.so.2 and 1 others X: libbasic2: missing-dependency-on-libstdc++ needed by usr/lib/libbasic++.so.2 lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-libc/desc0000664000000000000000000000031312310413144022114 0ustar Testname: binaries-missing-depends-on-libc Sequence: 6000 Version: 1.0 Description: Test for missing libc depends Architecture: any Test-For: missing-dependency-on-libc missing-dependency-on-libstdc++ lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-libc/debian/0000775000000000000000000000000012310413206022477 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-libc/debian/Makefile0000664000000000000000000000077312310413144024147 0ustar all: gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-z,defs -Wl,-soname,libbasic.so.2 -o libbasic.so.2 basic.c g++ $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-z,defs \ -Wl,-soname,libbasic++.so.2 -olibbasic++.so.2 cpp.cxx install: install -d $(DESTDIR)/usr/lib/ install -m 644 -c -s libbasic.so.2 $(DESTDIR)/usr/lib/libbasic.so.2 install -m 644 -c -s libbasic++.so.2 $(DESTDIR)/usr/lib/libbasic++.so.2 clean distclean: rm -f libbasic.so.2 libbasic++.so.2 check test: lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-libc/debian/basic.c0000664000000000000000000000045412310413144023730 0ustar #include #include static void hardening_trigger(char *p, int i, void (*f)(char *)) { char test[10]; memcpy(test, p, i); f(test); printf("%s", test); } int lib_interface(void) { printf("Hello world!\n"); hardening_trigger(NULL, 0, NULL); return 0; } lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-libc/debian/cpp.cxx0000664000000000000000000000026112310413206024004 0ustar #include #include using namespace std; template T cxx_lib_interface(vector &v) { cout << ":-) hello world" << endl; return v[0]; } lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-libc/debian/debian/0000775000000000000000000000000012310413206023721 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-libc/debian/debian/control.in0000664000000000000000000000076312310413206025737 0ustar Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), perl Package: libbasic2 Architecture: any Depends: some-pkg, $\{misc:Depends\}, $\{shlib:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-libc/debian/debian/libbasic2.symbols0000664000000000000000000000017512310413144027171 0ustar libbasic.so.2 libbasic2 #MINVER# lib_interface@Base 1.0 libbasic++.so.2 libbasic2 #MINVER# (c++)cxx_lib_interface@Base 1.0 lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-libc/debian/debian/rules0000664000000000000000000000035212077065714025017 0ustar #!/usr/bin/make -f %: dh $@ override_dh_gencontrol: # Remove the shlib:Depends since it will contain libc sed -i '/shlib:Depends=/ d' debian/libbasic2.substvars echo "shlib:depends=" >> debian/libbasic2.substvars dh_gencontrol lintian-2.5.22ubuntu1/t/tests/scripts-diversions-variables/0000775000000000000000000000000012077065715020713 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-diversions-variables/tags0000664000000000000000000000130712077065715021575 0ustar E: scripts-diversions-variables: diversion-for-unknown-file etc/scripts/* preinst:26 E: scripts-diversions-variables: diversion-for-unknown-file usr/share/foo/* preinst:30 E: scripts-diversions-variables: diversion-for-unknown-file usr/share/scripts/other-file preinst:15 E: scripts-diversions-variables: orphaned-diversion usr/share/scripts/other-file preinst E: scripts-diversions-variables: orphaned-diversion usr/share/scripts/t1/* preinst E: scripts-diversions-variables: package-uses-local-diversion preinst:15 E: scripts-diversions-variables: remove-of-unknown-diversion usr/lib/*/old-file postrm:13 E: scripts-diversions-variables: remove-of-unknown-diversion usr/share/scripts/*/no-such-file postrm:18 lintian-2.5.22ubuntu1/t/tests/scripts-diversions-variables/desc0000664000000000000000000000036012077065715021553 0ustar Testname: scripts-diversions-variables Sequence: 6000 Version: 1.0 Description: Tests of dpkg-divert checks with variables Test-For: diversion-for-unknown-file package-uses-local-diversion orphaned-diversion remove-of-unknown-diversion lintian-2.5.22ubuntu1/t/tests/scripts-diversions-variables/debian/0000775000000000000000000000000012077065715022135 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-diversions-variables/debian/some-file0000664000000000000000000000007612077065715023743 0ustar Some random file that we're going to install after diverting. lintian-2.5.22ubuntu1/t/tests/scripts-diversions-variables/debian/orphan0000664000000000000000000000006712077065715023352 0ustar Some file that we're going to divert and not clean up. lintian-2.5.22ubuntu1/t/tests/scripts-diversions-variables/debian/debian/0000775000000000000000000000000012077065715023357 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-diversions-variables/debian/debian/install0000664000000000000000000000017612077065715024754 0ustar orphan usr/share/scripts/t1 some-file usr/share/scripts/t1 orphan usr/share/scripts/t2/foo some-file usr/share/scripts/t2/foo lintian-2.5.22ubuntu1/t/tests/scripts-diversions-variables/debian/debian/postrm0000664000000000000000000000164112077065715024630 0ustar #!/bin/sh set -e if [ remove = "$1" ]; then # Clean up the correct diversion from preinst. dpkg-divert --package scripts-diversions --remove --rename \ --divert /usr/share/scripts/t2/foo/some-file.real \ "/usr/share/scripts/t2/foo/some-file" d=scripts # Clean up some other diversion that we didn't create. dpkg-divert --package scripts-diversions --remove --rename \ /usr/lib/$d/old-file; echo hi # Clean up a diversion we did not create for a non-existent file. dpkg-divert --remove --package scripts-diversions --rename \ --divert /usr/share/scripts/$v/no-such-file.real \ /usr/share/scripts/$v/no-such-file && echo hello # Clean up a diversion we did create for a non-existent file. (dpkg-divert --package foo --remove /etc/scripts/orphan) # another one: { dpkg-divert --package foo --remove /usr/share/foo/$(echo bar); } fi #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/scripts-diversions-variables/debian/debian/preinst0000664000000000000000000000223612077065715024771 0ustar #!/bin/sh set -e if [ install = "$1" ]; then # This is a correct diversion. dpkg-divert --package scripts-diversions --add --rename \ --divert /usr/share/scripts/t2/foo/some-file.real \ /usr/share/scripts/t2/foo/some-file # This is broken -- can't use local. dpkg-divert --local \ --add \ --divert \ /usr/share/scripts/other-file.real \ /usr/share/scripts/other-file f=orphan # This is also correct, but we're not going to clean it up. dpkg-divert --package scripts-diversions --add --rename \ --divert /usr/share/scripts/t1/$f.real \ /usr/share/scripts/t1/"$f" # Try to divert a file we don't ship dpkg-divert --package scripts-diversions --add --rename \ --divert /etc/scripts/$f.real \ /etc/scripts/$f|| true # Another one dpkg-divert --package scripts-diversions --add --rename \ --divert /usr/share/foo/$f.real \ /usr/share/foo/${f#f} # This is correct too. dpkg-divert $SOMETHING --package scripts-diversions --add --rename \ --divert /usr/share/scripts/t2/foo/some-file.real \ /usr/share/scripts/t2/foo/some-file fi #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/files-run-parts-cron/0000775000000000000000000000000012077065715017065 5ustar lintian-2.5.22ubuntu1/t/tests/files-run-parts-cron/tags0000664000000000000000000000015312077065715017745 0ustar W: files-run-parts-cron: run-parts-cron-filename-contains-illegal-chars etc/cron.hourly/cron-script.hourly lintian-2.5.22ubuntu1/t/tests/files-run-parts-cron/desc0000664000000000000000000000025312077065715017726 0ustar Testname: files-run-parts-cron Sequence: 6000 Version: 1.0 Description: Test for cron scripts with dots in them Test-For: run-parts-cron-filename-contains-illegal-chars lintian-2.5.22ubuntu1/t/tests/files-run-parts-cron/debian/0000775000000000000000000000000012077065715020307 5ustar lintian-2.5.22ubuntu1/t/tests/files-run-parts-cron/debian/cron-script.hourly0000775000000000000000000000003612077065715024020 0ustar #!/bin/sh echo "Hallo World" lintian-2.5.22ubuntu1/t/tests/files-run-parts-cron/debian/debian/0000775000000000000000000000000012077065715021531 5ustar lintian-2.5.22ubuntu1/t/tests/files-run-parts-cron/debian/debian/install0000664000000000000000000000004412077065715023120 0ustar cron-script.hourly etc/cron.hourly/ lintian-2.5.22ubuntu1/t/tests/changelog-file-new-upstream/0000775000000000000000000000000012310413144020343 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-new-upstream/tags0000664000000000000000000000012212077065714021237 0ustar W: changelog-file-new-upstream: possible-new-upstream-release-without-new-version lintian-2.5.22ubuntu1/t/tests/changelog-file-new-upstream/desc0000664000000000000000000000032412077065714021223 0ustar Testname: changelog-file-new-upstream Sequence: 6000 Type: non-native Version: 1.0-2 Description: Check a new upstream version without a version change Test-For: possible-new-upstream-release-without-new-version lintian-2.5.22ubuntu1/t/tests/changelog-file-new-upstream/debian/0000775000000000000000000000000012077065714021605 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-new-upstream/debian/debian/0000775000000000000000000000000012310413206023006 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-new-upstream/debian/debian/changelog.in0000664000000000000000000000043412310413206025266 0ustar {$source} ({$version}) unstable; urgency=low * New upstream bugfix release. * Lintian Test Suite. * Test: {$testname} -- {$author} {$date} {$source} (1.0-1) unstable; urgency=low * Old changelog entry to trigger the tag. -- {$author} Sat, 20 Mar 2010 16:09:18 -0700 lintian-2.5.22ubuntu1/t/tests/rules-not-makefile/0000775000000000000000000000000012077065715016576 5ustar lintian-2.5.22ubuntu1/t/tests/rules-not-makefile/tags0000664000000000000000000000007212077065715017456 0ustar E: rules-not-makefile source: debian-rules-not-a-makefile lintian-2.5.22ubuntu1/t/tests/rules-not-makefile/desc0000664000000000000000000000022312077065715017434 0ustar Testname: rules-not-makefile Sequence: 6000 Version: 1.0 Description: Check if the rules file is a makefile Test-For: debian-rules-not-a-makefile lintian-2.5.22ubuntu1/t/tests/rules-not-makefile/debian/0000775000000000000000000000000012077065715020020 5ustar lintian-2.5.22ubuntu1/t/tests/rules-not-makefile/debian/debian/0000775000000000000000000000000012077065715021242 5ustar lintian-2.5.22ubuntu1/t/tests/rules-not-makefile/debian/debian/rules0000775000000000000000000000035612077065715022326 0ustar #!/bin/sh # This should be a makefile. exec dh "$@" # fake targets to trick lintain into believing the # required targets are present (removed unrelated errors). binary: binary-arch: binary-indep: build: build-arch: build-indep: clean: lintian-2.5.22ubuntu1/t/tests/cruft-non-free-rfc/0000775000000000000000000000000012314366623016471 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-non-free-rfc/tags0000664000000000000000000000022612310413206017334 0ustar E: cruft-non-free-rfc source: license-problem-non-free-RFC src/rfc.txt E: cruft-non-free-rfc source: license-problem-non-free-RFC-BCP78 src/bcp78.txt lintian-2.5.22ubuntu1/t/tests/cruft-non-free-rfc/desc0000664000000000000000000000024412314366623017332 0ustar Testname: cruft-non-free-rfc Sequence: 6000 Version: 1.0 Description: Check for the rfc Test-For: license-problem-non-free-RFC license-problem-non-free-RFC-BCP78 lintian-2.5.22ubuntu1/t/tests/cruft-non-free-rfc/debian/0000775000000000000000000000000012310413206017675 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-non-free-rfc/debian/src/0000775000000000000000000000000012310413206020464 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-non-free-rfc/debian/src/bcp78.txt0000664000000000000000000000023412310413206022147 0ustar This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.lintian-2.5.22ubuntu1/t/tests/cruft-non-free-rfc/debian/src/rfc.txt0000664000000000000000000000255012310413206022001 0ustar Copyright (C) The Internet Society (1999). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. lintian-2.5.22ubuntu1/t/tests/lintian-display-level/0000775000000000000000000000000012310413206017257 5ustar lintian-2.5.22ubuntu1/t/tests/lintian-display-level/upstream/0000775000000000000000000000000012077065715021141 5ustar lintian-2.5.22ubuntu1/t/tests/lintian-display-level/upstream/script.desktop0000664000000000000000000000023612077065715024041 0ustar [Desktop Entry] Name=script Type=Application Comment=Incorrectly limited to particular environments Categories=Development; Exec=script OnlyShowIn=GNOME;KDE; lintian-2.5.22ubuntu1/t/tests/lintian-display-level/upstream/script0000775000000000000000000000007512077065715022375 0ustar #!/bin/sh . /usr/share/debconf/confmodule echo 'Hello world' lintian-2.5.22ubuntu1/t/tests/lintian-display-level/upstream/example0000775000000000000000000000005212077065715022517 0ustar #!/usr/bin/foo echo This is some example. lintian-2.5.22ubuntu1/t/tests/lintian-display-level/tags0000664000000000000000000000226012310413206020140 0ustar E: lintian-display-level: dir-in-usr-local usr/local/share/ E: lintian-display-level: dir-in-usr-local usr/local/share/lintian/ E: lintian-display-level: dir-or-file-in-var-lock var/lock/lintian/ E: lintian-display-level: new-essential-package E: lintian-display-level: possible-gpl-code-linked-with-openssl I: lintian-display-level: description-synopsis-might-not-be-phrased-properly I: lintian-display-level: desktop-entry-limited-to-environments usr/share/applications/script.desktop I: lintian-display-level: package-contains-empty-directory usr/local/share/lintian/ P: lintian-display-level source: debian-control-has-unusual-field-spacing line 11 P: lintian-display-level source: debian-watch-may-check-gpg-signature P: lintian-display-level source: direct-changes-in-diff-but-no-patch-system Changes P: lintian-display-level: example-unusual-interpreter usr/share/doc/lintian-display-level/examples/example #!/usr/bin/foo P: lintian-display-level: no-homepage-field W: lintian-display-level source: dfsg-version-misspelled 1.0+dsfg-1.1 W: lintian-display-level source: maintainer-upload-has-incorrect-version-number 1.0+dsfg-1.1 W: lintian-display-level: binary-without-manpage usr/bin/script lintian-2.5.22ubuntu1/t/tests/lintian-display-level/desc0000664000000000000000000000136612077065715020150 0ustar Testname: lintian-display-level Sequence: 2500 Type: non-native Version: 1.0+dsfg-1.1 Skeleton: pedantic Options: --pedantic -I -E -L -wishlist/certain --display-level -<=wild-guess -L +>important -L +normal/wild-guess Description: Test Lintian --display-level handling Test-For: binary-without-manpage debian-control-has-unusual-field-spacing description-synopsis-might-not-be-phrased-properly desktop-entry-limited-to-environments dfsg-version-misspelled dir-in-usr-local dir-or-file-in-var-lock example-unusual-interpreter maintainer-upload-has-incorrect-version-number new-essential-package no-homepage-field possible-gpl-code-linked-with-openssl Test-Against: binary-control-field-duplicates-source description-possibly-contains-homepage lintian-2.5.22ubuntu1/t/tests/lintian-display-level/debian/0000775000000000000000000000000012077065715020523 5ustar lintian-2.5.22ubuntu1/t/tests/lintian-display-level/debian/Changes0000664000000000000000000000000012077065715022004 0ustar lintian-2.5.22ubuntu1/t/tests/lintian-display-level/debian/debian/0000775000000000000000000000000012310413206021723 5ustar lintian-2.5.22ubuntu1/t/tests/lintian-display-level/debian/debian/examples0000664000000000000000000000001012077065715023475 0ustar example lintian-2.5.22ubuntu1/t/tests/lintian-display-level/debian/debian/install0000664000000000000000000000006512077065715023337 0ustar script usr/bin script.desktop usr/share/applications lintian-2.5.22ubuntu1/t/tests/lintian-display-level/debian/debian/control.in0000664000000000000000000000105212310413206023731 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{misc:Depends\}, libssl0.9.8 (>= 0abcd) Essential:yes Section: {$section} Description: {$description}. This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . The homepage is http://www.example.com/. lintian-2.5.22ubuntu1/t/tests/lintian-display-level/debian/debian/rules0000775000000000000000000000006412077065715023025 0ustar #!/usr/bin/make -f %: dh $@ override_dh_usrlocal: lintian-2.5.22ubuntu1/t/tests/lintian-display-level/debian/debian/dirs0000664000000000000000000000005112077065715022625 0ustar usr/local/share/lintian var/lock/lintian lintian-2.5.22ubuntu1/t/tests/fields-virtual-packages/0000775000000000000000000000000012077065715017601 5ustar lintian-2.5.22ubuntu1/t/tests/fields-virtual-packages/tags0000664000000000000000000000044012077065715020460 0ustar E: fields-virtual-packages2: bad-provided-package-name a E: fields-virtual-packages2: bad-provided-package-name iNvAlId-NaMe E: fields-virtual-packages2: versioned-provides versioned (>> 0.1) W: fields-virtual-packages: virtual-package-depends-without-real-package-depends depends: httpd lintian-2.5.22ubuntu1/t/tests/fields-virtual-packages/desc0000664000000000000000000000033412077065715020442 0ustar Testname: fields-virtual-packages Sequence: 6000 Version: 1.0 Description: Tests related to virtual packages Test-For: bad-provided-package-name versioned-provides virtual-package-depends-without-real-package-depends lintian-2.5.22ubuntu1/t/tests/fields-virtual-packages/debian/0000775000000000000000000000000012077065715021023 5ustar lintian-2.5.22ubuntu1/t/tests/fields-virtual-packages/debian/some-file0000664000000000000000000000021312077065715022622 0ustar This file is installed into /usr/share/lintian just to ensure that this package doesn't look like a metapackage for the dependency checks. lintian-2.5.22ubuntu1/t/tests/fields-virtual-packages/debian/debian/0000775000000000000000000000000012310413206022223 5ustar lintian-2.5.22ubuntu1/t/tests/fields-virtual-packages/debian/debian/install0000664000000000000000000000003212077065715023631 0ustar some-file usr/lib/lintian lintian-2.5.22ubuntu1/t/tests/fields-virtual-packages/debian/debian/control.in0000664000000000000000000000200512310413206024230 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, httpd Provides: 123456789, {$source}-$\{source:Version\}, arch-specific [i386], provides-are-allowed [!i386] Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: {$source}2 Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Provides: a, iNvAlId-NaMe, versioned (>> 0.1) Description: {$description} - bogus This is a bogus test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/changelog-file-upstream-html-only/0000775000000000000000000000000012077065714021515 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-upstream-html-only/upstream/0000775000000000000000000000000012077065714023355 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-upstream-html-only/upstream/some-changelog.html0000664000000000000000000000017412077065714027135 0ustar Hallo World

A wonderful changelog written in HTML

lintian-2.5.22ubuntu1/t/tests/changelog-file-upstream-html-only/tags0000664000000000000000000000011212077065714022370 0ustar E: changelog-file-upstream-html-only: html-changelog-without-text-version lintian-2.5.22ubuntu1/t/tests/changelog-file-upstream-html-only/desc0000664000000000000000000000027112077065714022356 0ustar Testname: changelog-file-upstream-html-only Sequence: 6000 Type: non-native Version: 1.0-1 Description: Check HTML-only upstream changelog Test-For: html-changelog-without-text-version lintian-2.5.22ubuntu1/t/tests/changelog-file-upstream-html-only/debian/0000775000000000000000000000000012077065714022737 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-upstream-html-only/debian/debian/0000775000000000000000000000000012077065714024161 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-upstream-html-only/debian/debian/rules0000664000000000000000000000031112077065714025231 0ustar #!/usr/bin/make -f PKG:=$(shell dh_listpackages) DOC:=debian/$(PKG)/usr/share/doc/$(PKG) %: dh $@ override_dh_installchangelogs: dh_installchangelogs cp some-changelog.html $(DOC)/changelog.html lintian-2.5.22ubuntu1/t/tests/fields-perl-provides/0000775000000000000000000000000012310413206017110 5ustar lintian-2.5.22ubuntu1/t/tests/fields-perl-provides/tags0000664000000000000000000000007412310413206017772 0ustar W: libsys-syslog-perl: package-superseded-by-perl with 0.32 lintian-2.5.22ubuntu1/t/tests/fields-perl-provides/desc0000664000000000000000000000022212077065715017767 0ustar Testname: fields-perl-provides Sequence: 6000 Version: 0.26 Description: Test for packages provided by perl Test-For: package-superseded-by-perl lintian-2.5.22ubuntu1/t/tests/fields-perl-provides/debian/0000775000000000000000000000000012077065715020354 5ustar lintian-2.5.22ubuntu1/t/tests/fields-perl-provides/debian/debian/0000775000000000000000000000000012310413206021554 5ustar lintian-2.5.22ubuntu1/t/tests/fields-perl-provides/debian/debian/control.in0000664000000000000000000000165112310413206023567 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: libsys-syslog-perl Section: perl Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: libversion-perl Section: perl Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: another {$description} This is another test package, designed to exercise epoch handling in the 'package-superseded-by-perl' check. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/fields-perl-provides/debian/debian/rules0000775000000000000000000000020712310413144022634 0ustar #!/usr/bin/make -f %: dh $@ override_dh_gencontrol: dh_gencontrol -plibversion-perl -- -v9:999 dh_gencontrol -i -Nlibversion-perl lintian-2.5.22ubuntu1/t/tests/description-empty-paragraph/0000775000000000000000000000000012077065715020515 5ustar lintian-2.5.22ubuntu1/t/tests/description-empty-paragraph/tags0000664000000000000000000000023612077065715021377 0ustar W: description-empty-paragraph-3: extended-description-contains-empty-paragraph W: description-empty-paragraph: extended-description-contains-empty-paragraph lintian-2.5.22ubuntu1/t/tests/description-empty-paragraph/desc0000664000000000000000000000026112077065715021355 0ustar Testname: description-empty-paragraph Sequence: 6000 Version: 1.0 Description: Tests of empty paragraphs in descriptions Test-For: extended-description-contains-empty-paragraph lintian-2.5.22ubuntu1/t/tests/description-empty-paragraph/debian/0000775000000000000000000000000012077065715021737 5ustar lintian-2.5.22ubuntu1/t/tests/description-empty-paragraph/debian/debian/0000775000000000000000000000000012310413206023137 5ustar lintian-2.5.22ubuntu1/t/tests/description-empty-paragraph/debian/debian/control.in0000664000000000000000000000204612310413206025151 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: package to test empty first paragraph . The first paragraph of this description is empty. It is also an empty package. Package: {$source}-2 Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: package to test empty last paragraph The last paragraph of this description is empty. It is also an empty package. . Unfortunately this doesn't trigger the warning, an empty last paragraph seems to get stripped out already before it is handed over. . Package: {$source}-3 Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: package to test empty paragraph in the middle There is an empty paragraph in between. It is also an empty package. . . There is an empty paragraph in between. It is also an empty package. lintian-2.5.22ubuntu1/t/tests/fields-no-source-homepage/0000775000000000000000000000000012310413206020012 5ustar lintian-2.5.22ubuntu1/t/tests/fields-no-source-homepage/tags0000664000000000000000000000010012310413206020662 0ustar I: fields-no-source-homepage source: homepage-in-binary-package lintian-2.5.22ubuntu1/t/tests/fields-no-source-homepage/desc0000664000000000000000000000026012310413206020651 0ustar Testname: fields-no-source-homepage Sequence: 6000 Type: non-native Description: Test check for no Homepage field in source Version: 1.0-1 Test-For: homepage-in-binary-package lintian-2.5.22ubuntu1/t/tests/fields-no-source-homepage/debian/0000775000000000000000000000000012310413206021234 5ustar lintian-2.5.22ubuntu1/t/tests/fields-no-source-homepage/debian/debian/0000775000000000000000000000000012310413206022456 5ustar lintian-2.5.22ubuntu1/t/tests/fields-no-source-homepage/debian/debian/control.in0000664000000000000000000000100412310413206024461 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Homepage: http://lintian.debian.org lintian-2.5.22ubuntu1/t/tests/po-debconf-no-po-debconf/0000775000000000000000000000000012310413146017514 5ustar lintian-2.5.22ubuntu1/t/tests/po-debconf-no-po-debconf/tags0000664000000000000000000000033512310413146020376 0ustar E: po-debconf-no-po-debconf source: not-using-po-debconf E: po-debconf-no-po-debconf source: untranslatable-debconf-templates templates: 4 E: po-debconf-no-po-debconf source: untranslatable-debconf-templates templates: 9 lintian-2.5.22ubuntu1/t/tests/po-debconf-no-po-debconf/desc0000664000000000000000000000021112077065715020366 0ustar Testname: po-debconf-no-po-debconf Sequence: 6000 Version: 1.0 Description: Test for not using po-debconf Test-For: not-using-po-debconf lintian-2.5.22ubuntu1/t/tests/po-debconf-no-po-debconf/debian/0000775000000000000000000000000012077065715020755 5ustar lintian-2.5.22ubuntu1/t/tests/po-debconf-no-po-debconf/debian/debian/0000775000000000000000000000000012077065715022177 5ustar lintian-2.5.22ubuntu1/t/tests/po-debconf-no-po-debconf/debian/debian/templates0000664000000000000000000000043212077065715024117 0ustar Template: po-debconf-general/test Type: string Default: foo Description: This is a string question used for testing: Template: po-debconf-general/test-2 Type: string Default: bar Description: This is a second string question: This one ensures no 100% translation of the template. lintian-2.5.22ubuntu1/t/tests/po-debconf-no-po-debconf/debian/debian/config0000775000000000000000000000020512077065715023367 0ustar #!/bin/sh set -e . /usr/share/debconf/confmodule db_get po-debconf-general/test || true db_get po-debconf-general/test-2 || true lintian-2.5.22ubuntu1/t/tests/po-debconf-no-po-debconf/debian/debian/postinst0000664000000000000000000000010012077065715023774 0ustar #!/bin/sh set -e . /usr/share/debconf/confmodule #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/scripts-maintainer-script-set-e/0000775000000000000000000000000012077065716021225 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-maintainer-script-set-e/tags0000664000000000000000000000011512077065716022103 0ustar P: scripts-maintainer-script-set-e: maintainer-script-without-set-e postinst lintian-2.5.22ubuntu1/t/tests/scripts-maintainer-script-set-e/desc0000664000000000000000000000031712077065716022067 0ustar Testname: scripts-maintainer-script-set-e Sequence: 6000 Version: 1.0 Description: Test for using set -e in script body Skeleton: pedantic Options: --pedantic -I -E Test-For: maintainer-script-without-set-e lintian-2.5.22ubuntu1/t/tests/scripts-maintainer-script-set-e/debian/0000775000000000000000000000000012077065716022447 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-maintainer-script-set-e/debian/debian/0000775000000000000000000000000012077065716023671 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-maintainer-script-set-e/debian/debian/postinst0000664000000000000000000000013612077065716025477 0ustar #!/bin/sh -e if [ "$1" = configure ] ; then frobnicate something fi #DEBHELPER# exit 0 lintian-2.5.22ubuntu1/t/tests/distribution-multiple-bad/0000775000000000000000000000000012077065715020167 5ustar lintian-2.5.22ubuntu1/t/tests/distribution-multiple-bad/tags0000664000000000000000000000052712077065715021054 0ustar E: distribution-multiple-bad changes: bad-distribution-in-changes-file bar E: distribution-multiple-bad changes: bad-distribution-in-changes-file foo E: distribution-multiple-bad changes: bad-distribution-in-changes-file foo-backportss E: distribution-multiple-bad changes: multiple-distributions-in-changes-file stable foo-backportss bar foo lintian-2.5.22ubuntu1/t/tests/distribution-multiple-bad/desc0000664000000000000000000000036012077065715021027 0ustar Testname: distribution-multiple-bad Sequence: 2500 Version: 1.0 Description: Multiple distributions with at least one bad one Test-For: bad-distribution-in-changes-file multiple-distributions-in-changes-file References: Debian Bug#514853 lintian-2.5.22ubuntu1/t/tests/distribution-multiple-bad/debian/0000775000000000000000000000000012077065715021411 5ustar lintian-2.5.22ubuntu1/t/tests/distribution-multiple-bad/debian/debian/0000775000000000000000000000000012310413206022611 5ustar lintian-2.5.22ubuntu1/t/tests/distribution-multiple-bad/debian/debian/changelog.in0000664000000000000000000000021112310413206025062 0ustar {$source} ({$version}) stable foo-backportss bar foo; urgency=low * Lintian Test Suite. * Test: {$testname} -- {$author} {$date} lintian-2.5.22ubuntu1/t/tests/fields-build-profiles-general/0000775000000000000000000000000012314366011020655 5ustar lintian-2.5.22ubuntu1/t/tests/fields-build-profiles-general/tags0000664000000000000000000000154512314366011021543 0ustar E: fields-build-profiles-general source: invalid-restriction-label-in-source-relation bar [build-depends: bpfail3 ] E: fields-build-profiles-general source: invalid-restriction-namespace-in-source-relation foo [build-depends: bpfail2 ] E: fields-build-profiles-general source: invalid-restriction-term-in-source-relation foobar [build-depends: bpfail1 ] W: fields-build-profiles-general source: restriction-list-with-debhelper-with-conflicting-debhelper-version W: fields-build-profiles-general source: restriction-list-with-debhelper-without-debhelper-version W: fields-build-profiles-general source: restriction-list-with-versioned-dpkg-dev-conflict W: fields-build-profiles-general source: restriction-list-without-versioned-dpkg-dev-dependency W: fields-build-profiles-general source: stageX-profile-used-but-no-binary-package-dropped lintian-2.5.22ubuntu1/t/tests/fields-build-profiles-general/desc0000664000000000000000000000123512314366011021517 0ustar Testname: fields-build-profiles-general Sequence: 6000 Version: 1.0 Description: General tests for build profiles # Build-profiles requires dpkg 1.17.2 Test-Depends: dpkg (>= 1.17.2~) Test-For: invalid-restriction-label-in-source-relation invalid-restriction-namespace-in-source-relation invalid-restriction-term-in-source-relation restriction-list-with-debhelper-with-conflicting-debhelper-version restriction-list-with-debhelper-without-debhelper-version restriction-list-with-versioned-dpkg-dev-conflict restriction-list-without-versioned-dpkg-dev-dependency stageX-profile-used-but-no-binary-package-dropped References: Debian Bug#540594, Debian Bug#551793 lintian-2.5.22ubuntu1/t/tests/fields-build-profiles-general/debian/0000775000000000000000000000000012314366011022077 5ustar lintian-2.5.22ubuntu1/t/tests/fields-build-profiles-general/debian/debian/0000775000000000000000000000000012314366011023321 5ustar lintian-2.5.22ubuntu1/t/tests/fields-build-profiles-general/debian/debian/control.in0000664000000000000000000000121112314366011025324 0ustar Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), big , bpfail1 , bpfail2 , bpfail3 , Build-Conflicts: dpkg-dev (>= 1.17.2), debhelper (>= 9.20140227) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/standards-version-newer/0000775000000000000000000000000012077065716017660 5ustar lintian-2.5.22ubuntu1/t/tests/standards-version-newer/post_test0000664000000000000000000000007012077065716021624 0ustar s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/ lintian-2.5.22ubuntu1/t/tests/standards-version-newer/tags0000664000000000000000000000013112077065716020534 0ustar W: standards-version-newer source: newer-standards-version 5.15.0.0 (current is CURRENT) lintian-2.5.22ubuntu1/t/tests/standards-version-newer/desc0000664000000000000000000000021412077065716020516 0ustar Testname: standards-version-newer Sequence: 6000 Version: 1.0 Description: Test too-new standards version Test-For: newer-standards-version lintian-2.5.22ubuntu1/t/tests/standards-version-newer/debian/0000775000000000000000000000000012077065716021102 5ustar lintian-2.5.22ubuntu1/t/tests/standards-version-newer/debian/debian/0000775000000000000000000000000012310413206022301 5ustar lintian-2.5.22ubuntu1/t/tests/standards-version-newer/debian/debian/control.in0000664000000000000000000000075112310413206024314 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: 5.15.0.0 Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/shared-libs-missing-ldconfig-symlink/0000775000000000000000000000000012077065716022207 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-missing-ldconfig-symlink/tags0000664000000000000000000000016712077065716023074 0ustar E: libexecbit1: ldconfig-symlink-missing-for-shlib usr/lib/libexecbit.so.1 usr/lib/libexecbit.so.1.0.1 libexecbit.so.1 lintian-2.5.22ubuntu1/t/tests/shared-libs-missing-ldconfig-symlink/desc0000664000000000000000000000026712077065716023055 0ustar Testname: shared-libs-missing-ldconfig-symlink Sequence: 6000 Version: 1.0 Description: Test for missing ldconfig symlink for shared libs Test-For: ldconfig-symlink-missing-for-shlib lintian-2.5.22ubuntu1/t/tests/shared-libs-missing-ldconfig-symlink/debian/0000775000000000000000000000000012077065716023431 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-missing-ldconfig-symlink/debian/Makefile0000664000000000000000000000054012077065716025070 0ustar CC=gcc CFLAGS+= -fPIC SONAMES:= libexecbit.so.1 LIBFILES:= $(patsubst %,%.0.1, $(SONAMES)) all: $(LIBFILES) $(LIBFILES): code.o $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc clean: rm -f *.a *.o *.so* install: all install -m 0755 -d $(DESTDIR)/usr/lib install -m 0755 *.so* $(DESTDIR)/usr/lib .PHONY: install clean lintian-2.5.22ubuntu1/t/tests/shared-libs-missing-ldconfig-symlink/debian/code.c0000664000000000000000000000021612077065716024506 0ustar #include #include double e(void (*f)(char *)){ char tmp[10]; double x; f(tmp); x = atof(tmp); return exp(x); } lintian-2.5.22ubuntu1/t/tests/shared-libs-missing-ldconfig-symlink/debian/debian/0000775000000000000000000000000012310413206024630 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-missing-ldconfig-symlink/debian/debian/control.in0000664000000000000000000000070712310413206026644 0ustar Source: {$source} Priority: extra Section: libs Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: libexecbit1 Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/tests/shared-libs-missing-ldconfig-symlink/debian/debian/libexecbit1.symbols0000664000000000000000000000006112077065716030455 0ustar libexecbit.so.1 libexecbit1 #MINVER# e@Base 1.0 lintian-2.5.22ubuntu1/t/tests/files-uses-perl4-libs-with-dep/0000775000000000000000000000000012077065715020644 5ustar lintian-2.5.22ubuntu1/t/tests/files-uses-perl4-libs-with-dep/tags0000664000000000000000000000000012077065715021513 0ustar lintian-2.5.22ubuntu1/t/tests/files-uses-perl4-libs-with-dep/desc0000664000000000000000000000030712077065715021505 0ustar Testname: files-uses-perl4-libs-with-dep Sequence: 6000 Version: 1.0 Description: Check that script-uses-perl4-libs-without-dep works (negative) Test-Against: perl-module-uses-perl4-libs-without-dep lintian-2.5.22ubuntu1/t/tests/files-uses-perl4-libs-with-dep/debian/0000775000000000000000000000000012077065715022066 5ustar lintian-2.5.22ubuntu1/t/tests/files-uses-perl4-libs-with-dep/debian/Naughty.pm0000664000000000000000000000010512077065715024037 0ustar package Naughty; use strict; use warnings; require 'assert.pl'; 1; lintian-2.5.22ubuntu1/t/tests/files-uses-perl4-libs-with-dep/debian/debian/0000775000000000000000000000000012310413206023266 5ustar lintian-2.5.22ubuntu1/t/tests/files-uses-perl4-libs-with-dep/debian/debian/install0000664000000000000000000000003312077065715024675 0ustar Naughty.pm usr/share/perl5 lintian-2.5.22ubuntu1/t/tests/files-uses-perl4-libs-with-dep/debian/debian/control.in0000664000000000000000000000104312310413206025274 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, libperl4-corelibs-perl | perl (<< 5.12.3-7) Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/legacy-libbaz/0000775000000000000000000000000012310413206015556 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-libbaz/post_test0000664000000000000000000000011312310413206017520 0ustar /: hardening-.*/ d s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/ lintian-2.5.22ubuntu1/t/tests/legacy-libbaz/tags0000664000000000000000000001251712310413206016445 0ustar E: libbaz source: not-binnmuable-any-depends-any libbaz1-dev -> libbaz1 E: libbaz source: weak-library-dev-dependency libbaz1-dev on libbaz1 (= ${source:Version}) E: libbaz1-dev: missing-dependency-on-libc needed by usr/lib/perl5/auto/Foo/Foo.so E: libbaz1: control-file-has-bad-permissions shlibs 0755 != 0644 E: libbaz1: control-file-has-bad-permissions symbols 0755 != 0644 E: libbaz1: debian-changelog-file-missing-or-wrong-name E: libbaz1: duplicate-entry-in-shlibs-control-file libdoesntexist2 1.0 E: libbaz1: duplicate-entry-in-shlibs-control-file udeb: libdoesntexist2 1.0 E: libbaz1: file-directly-in-usr-share-doc usr/share/doc/README.Debian E: libbaz1: ldconfig-symlink-missing-for-shlib usr/lib/libbaz2.so.1.0 usr/lib/libfoo2.so.1.0.3b libbaz2.so.1.0 E: libbaz1: ldconfig-symlink-missing-for-shlib usr/lib/libbaz3.so.1 usr/lib/libbaz3.so.1.0.3b libbaz3.so.1 E: libbaz1: maintainer-shell-script-fails-syntax-check postinst E: libbaz1: missing-dependency-on-perlapi E: libbaz1: postinst-must-call-ldconfig usr/lib/libfoo2.so.1.0.3b E: libbaz1: sharedobject-in-library-directory-missing-soname usr/lib/libbaz1.so.1.0.3b E: libbaz1: shlib-missing-in-control-file libbaz2 1.0 for usr/lib/libfoo2.so.1.0.3b E: libbaz1: shlib-with-executable-bit usr/lib/libfoo2.so.1.0.3b 0755 E: libbaz1: symbols-declared-but-not-shlib libbaz 2 E: libbaz1: symbols-file-contains-current-version-with-debian-revision on symbol pw E: libbaz1: unstripped-binary-or-object usr/lib/libbaz1.so.1.0.3b E: libbaz1: unstripped-binary-or-object usr/lib/libbaz3.so.1.0.3b E: libbaz1: unstripped-binary-or-object usr/lib/libfoo2.so.1.0.3b E: libbaz2-dbg: debian-changelog-file-missing E: libbaz2-dev: changelog-file-not-compressed changelog E: libbaz2-dev: debian-changelog-file-missing-or-wrong-name E: libbaz2: debian-changelog-file-missing-or-wrong-name I: libbaz1-dev: binary-has-unneeded-section usr/lib/perl5/auto/Foo/Foo.so .comment I: libbaz1-dev: no-md5sums-control-file I: libbaz1-dev: package-contains-empty-directory usr/include/ I: libbaz1: binary-has-unneeded-section usr/lib/perl5/auto/Foo/Foo.so .comment I: libbaz1: no-md5sums-control-file I: libbaz2-dbg: no-md5sums-control-file I: libbaz2-dev: no-md5sums-control-file I: libbaz2: no-md5sums-control-file I: libbaz2: no-symbols-control-file usr/lib/libbaz2.so.1.0.3b N: 4 tags overridden (4 warnings) W: libbaz source: ancient-standards-version 3.2.1 (current is CURRENT) W: libbaz source: binaries-have-file-conflict libbaz1 libbaz1-dev usr/lib/perl5/auto/Foo/Foo.so W: libbaz source: binaries-have-file-conflict libbaz1 libbaz2-dev usr/lib/libbaz2.a W: libbaz source: changelog-should-mention-nmu W: libbaz source: debhelper-but-no-misc-depends libbaz1 W: libbaz source: debhelper-but-no-misc-depends libbaz1-dev W: libbaz source: debhelper-but-no-misc-depends libbaz2 W: libbaz source: debhelper-but-no-misc-depends libbaz2-dbg W: libbaz source: debhelper-but-no-misc-depends libbaz2-dev W: libbaz source: native-package-with-dash-version W: libbaz source: package-depends-on-lower-priority-package libbaz2-dbg:optional depends on libbaz2:extra W: libbaz source: source-nmu-has-incorrect-version-number 1-1 W: libbaz source: substvar-source-version-is-deprecated libbaz2-dev W: libbaz1-dev: wrong-section-according-to-package-name libbaz1-dev => libdevel W: libbaz1: dev-pkg-without-shlib-symlink usr/lib/libbaz.so usr/lib/libbaz.so W: libbaz1: dev-pkg-without-shlib-symlink usr/lib/libbaz3.so.1.0.3b usr/lib/libbaz3.so W: libbaz1: dev-pkg-without-shlib-symlink usr/lib/libfoo2.so.1.0.3b usr/lib/libbaz2.so W: libbaz1: missing-depends-line W: libbaz1: new-package-should-close-itp-bug W: libbaz1: package-name-doesnt-match-sonames libbaz libbaz2-1.0 libbaz3-1 W: libbaz1: shlib-missing-in-symbols-control-file libbaz.so for usr/lib/libbaz.so W: libbaz1: shlib-missing-in-symbols-control-file libbaz2 1.0 for usr/lib/libfoo2.so.1.0.3b W: libbaz1: shlib-missing-in-symbols-control-file libbaz3 1 for usr/lib/libbaz3.so.1.0.3b W: libbaz1: shlib-without-versioned-soname usr/lib/libbaz.so libbaz.so W: libbaz1: shlibs-declares-dependency-on-other-package libbaz1 (>> 1-1) W: libbaz1: shlibs-declares-dependency-on-other-package libbaz2 W: libbaz1: symbols-file-contains-debian-revision on symbol foo W: libbaz1: unused-shlib-entry-in-control-file libbaz2 1.1 W: libbaz1: unused-shlib-entry-in-control-file libbaz4 1 W: libbaz1: unused-shlib-entry-in-control-file libbaz5 1 W: libbaz1: unused-shlib-entry-in-control-file libdoesntexist2 1.0 W: libbaz1: unused-shlib-entry-in-control-file udeb: libdoesntexist2 1.0 W: libbaz1: unused-shlib-entry-in-symbols-control-file libbaz 2 W: libbaz1: zero-byte-file-in-doc-directory usr/share/doc/README.Debian W: libbaz2-dbg: debug-package-should-be-priority-extra libbaz2-dbg W: libbaz2-dbg: wrong-section-according-to-package-name libbaz2-dbg => debug W: libbaz2-dev: new-package-should-close-itp-bug W: libbaz2-dev: wrong-section-according-to-package-name libbaz2-dev => libdevel W: libbaz2: debian-changelog-file-is-a-symlink W: libbaz2: package-name-doesnt-match-sonames libbaz2-1.0 W: libbaz2: symlink-should-be-relative usr/share/doc/libbaz2/changelog.gz /usr/share/doc/lintian/changelog.gz X: libbaz1: package-contains-broken-symlink usr/lib/libfoo.so.0.9 libfoo.so.0.9.1 X: libbaz1: package-contains-broken-symlink usr/lib/libfoo3.so libfoo3.so.0.9 X: libbaz2: package-contains-broken-symlink usr/share/doc/libbaz2/changelog.gz usr/share/doc/lintian/changelog.gz lintian-2.5.22ubuntu1/t/tests/legacy-libbaz/desc0000664000000000000000000000014512310413206016417 0ustar Testname: legacy-libbaz Source: libbaz Sequence: 9999 Version: 1-1 Description: Legacy test "libbaz" lintian-2.5.22ubuntu1/t/tests/legacy-libbaz/debian/0000775000000000000000000000000012310413206017000 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-libbaz/debian/baz.c0000664000000000000000000000007312310413206017720 0ustar #include double pw(double p) { return exp(p); } lintian-2.5.22ubuntu1/t/tests/legacy-libbaz/debian/Makefile0000664000000000000000000000206012310413206020436 0ustar # This is the correct way to build a lib CC=gcc CFLAGS=-g -Wall -Winline -O2 OBJS=baz.o extra.o SHOBJS=baz.sho extra.sho NOPICOBJS = $(SHOBJS) all: libbaz1.a libbaz2.a libbaz1.so.1.0.3b libbaz2.so libbaz3.so.1.0.3b \ libbaz.so libbaz2.so: libbaz2.so.1.0 ln -sf $^ $@ libbaz2.so.1.0: libbaz2.so.1.0.3b ln -sf $^ $@ # Oops, forget the soname altogether libbaz1.so.1.0.3b: $(NOPICOBJS) $(CC) -o $@ -shared $^ -lc libbaz2.so.1.0.3b: $(SHOBJS) $(CC) -o $@ -shared -Wl,-soname,libbaz2.so.1.0 $^ -lc # Non-PIC. We can't test this on all architectures libbaz3.so.1.0.3b: $(NOPICOBJS) $(CC) -o $@ -shared -Wl,-soname,libbaz3.so.1 $^ -lc # Non-versioned SONAME. libbaz.so: $(SHOBJS) $(CC) -o $@ -shared -Wl,-soname,libbaz.so $^ -lc #%.o-noreentrant: %.c # $(CC) $(CFLAGS) -o $@ -c $< %.sho: %.c $(CC) $(CFLAGS) -D_REENTRANT -fPIC -o $@ -c $< %.o: %.c $(CC) $(CFLAGS) -D_REENTRANT -o $@ -c $< libbaz2.a: $(OBJS) ar cq $@ $(OBJS) ranlib $@ # The pic one in the .a (wrong), no archive table libbaz1.a: $(SHOBJS) ar cqS $@ $^ clean: rm -f *.a *.o *.so* *.sho lintian-2.5.22ubuntu1/t/tests/legacy-libbaz/debian/debian/0000775000000000000000000000000012310413206020222 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-libbaz/debian/debian/dev.postinst0000664000000000000000000000004012310413206022577 0ustar #!/bin/sh -e $PKG=libbaz1-dev lintian-2.5.22ubuntu1/t/tests/legacy-libbaz/debian/debian/copyright0000664000000000000000000000061112310413206022153 0ustar This package is released under public domain. This 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. A reference to /usr/share/common-licenses/GPL-2 to make it look like this package is under the GPL and trigger the OpenSSL warning. However, this has an OpenSSL exception. lintian-2.5.22ubuntu1/t/tests/legacy-libbaz/debian/debian/lib.shlibs0000664000000000000000000000032612310413206022177 0ustar libdoesntexist2 1.0 libbaz1 libdoesntexist2 1.0 libbaz1 libbaz2 1.1 libbaz libbaz3 1 libbaz1 (>> 1-1) libbaz4 1 libbaz1 (= 1-1) libbaz5 1 libbaz2 udeb: libdoesntexist2 1.0 libbaz2 udeb: libdoesntexist2 1.0 libbaz2 lintian-2.5.22ubuntu1/t/tests/legacy-libbaz/debian/debian/lib.postinst0000664000000000000000000000032312310413206022573 0ustar #!/bin/sh -e $PKG=libbaz1 if [ "$1" = "configure" ]; then if [ -d /usr/doc -a ! -e /usr/doc/$PKG -a -d /usr/share/doc/$PKG ] ; then ln -sf ../share/doc/$PKG /usr/doc/$PKG fi fi lintian-2.5.22ubuntu1/t/tests/legacy-libbaz/debian/debian/changelog0000664000000000000000000000020512310413206022071 0ustar libbaz (1-1) unstable; urgency=low * Initial setup -- Sean 'Shaleh' Perry Tue, 30 Jan 2001 15:23:59 -0800 lintian-2.5.22ubuntu1/t/tests/legacy-libbaz/debian/debian/compat0000664000000000000000000000000212310413206021420 0ustar 6 lintian-2.5.22ubuntu1/t/tests/legacy-libbaz/debian/debian/lib.symbols0000664000000000000000000000006012310413206022376 0ustar libbaz.so.2 libbaz1 #MINVER# pw 1-1 foo 1.1-1 lintian-2.5.22ubuntu1/t/tests/legacy-libbaz/debian/debian/rules0000775000000000000000000001060712310413206021306 0ustar #!/usr/bin/make -f lib_tmp=debian/tmp-lib dev_tmp=debian/tmp-dev LIB=libbaz1 DEV=libbaz1-dev build-arch: $(MAKE) build-indep: build: build-arch build-indep clean: $(MAKE) clean dh_clean -plibbaz2 -plibbaz2-dev rm -f debian/files debian/substvars rm -rf $(lib_tmp) $(dev_tmp) # Now the correct libbaz2-dev package binary-correct: install -d debian/libbaz2-dev/usr/lib cp -a libbaz2.a libbaz2.so debian/libbaz2-dev/usr/lib # usually, I'd also include some .h files to /usr/include # Now the correct libbaz2 package install -d debian/libbaz2/usr/lib cp -a libbaz2.so.* debian/libbaz2/usr/lib chmod a-x debian/libbaz2/usr/lib/* # General stuff that is tested in other testsets: dh_installdocs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg dh_compress -plibbaz2 -plibbaz2-dev -plibbaz2-dbg # Mess up the libbaz2 changelog files to test the symlink handling. ln -s /usr/share/doc/lintian/changelog.gz \ debian/libbaz2/usr/share/doc/libbaz2/changelog.gz install -m 644 debian/changelog \ debian/libbaz2-dev/usr/share/doc/libbaz2-dev/foo ln -s foo debian/libbaz2-dev/usr/share/doc/libbaz2-dev/changelog # Okay, if either line is omitted, it should be noted dh_strip --dbg-package=libbaz2-dbg -plibbaz2 -plibbaz2-dev dh_makeshlibs -plibbaz2 -plibbaz2-dev -plibbaz2-dbg dh_shlibdeps -plibbaz2 -plibbaz2-dev -plibbaz2-dbg # and again, regular packaging stuff dh_installdeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg echo udeb: libbaz2 1.0 libbaz2 >> debian/libbaz2/DEBIAN/shlibs dh_gencontrol -plibbaz2 -plibbaz2-dev -plibbaz2-dbg dh_builddeb -plibbaz2 -plibbaz2-dev -plibbaz2-dbg # and the incorrect one binary-arch: build-arch binary-correct # first, the lib package install -d $(lib_tmp)/usr/lib # resp. no soname (check), wrong soname (check), and no-pic (check) cp -a libbaz1.so.1.0* $(lib_tmp)/usr/lib cp -a libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/libfoo2.so.1.0.3b install -m644 libbaz3.so.1.0.3b $(lib_tmp)/usr/lib/libbaz3.so.1.0.3b # let's include the .a in the non-dev too (TODO) # Also, libbaz1.a hasn't a symbol table (TODO) cp -a *.a $(lib_tmp)/usr/lib # And a wrong .so symlink (wrong, only in -dev, TODO) ln -s libfoo3.so.0.9 $(lib_tmp)/usr/lib/libfoo3.so # And a wrong .so.X symlink (wrong, should point to a real existing # shlib, TODO) ln -s libfoo.so.0.9.1 $(lib_tmp)/usr/lib/libfoo.so.0.9 # And a plain .so (wrong, TODO) touch $(lib_tmp)/usr/lib/libbar2.so # And a non-versioned SONAME. install -m644 libbaz.so $(lib_tmp)/usr/lib/libbaz.so strip --remove-section=.comment --strip-unneeded $(lib_tmp)/usr/lib/libbaz.so # Pretend to be a Perl module to test a lack of Perl dependencies. install -d $(lib_tmp)/usr/lib/perl5/auto/Foo install -m 644 libbaz2.so.1.0.3b $(lib_tmp)/usr/lib/perl5/auto/Foo/Foo.so strip $(lib_tmp)/usr/lib/perl5/auto/Foo/Foo.so install -d $(lib_tmp)/usr/share/doc/$(LIB) install -m 644 debian/copyright $(lib_tmp)/usr/share/doc/$(LIB) install -m 644 debian/changelog $(lib_tmp)/usr/share/doc/$(LIB) gzip -9 $(lib_tmp)/usr/share/doc/$(LIB)/changelog install -d $(lib_tmp)/DEBIAN install -m 755 debian/lib.postinst $(lib_tmp)/DEBIAN/postinst install -m 755 debian/lib.prerm $(lib_tmp)/DEBIAN/prerm touch $(lib_tmp)/usr/share/doc/README.Debian #dpkg-shlibdeps $(lib_tmp)/usr/lib/libbaz.so.1.0 install -m 755 debian/lib.shlibs $(lib_tmp)/DEBIAN/shlibs install -m 755 debian/lib.symbols $(lib_tmp)/DEBIAN/symbols dpkg-gencontrol -isp -p$(LIB) -P$(lib_tmp) dpkg --build $(lib_tmp) .. # now the -dev package install -d $(dev_tmp)/usr/include install -d $(lib_tmp)/usr/lib # let's also install the .so at the same time... (wrong, TODO) cp -a *.a *.so.* $(lib_tmp)/usr/lib # and fuck up permission (TODO) chmod a+x $(lib_tmp)/usr/lib/*.a # Pretend to be a Perl module to test a lack of Perl dependencies. install -d $(dev_tmp)/usr/lib/perl5/auto/Foo install -m 644 libbaz2.so.1.0.3b $(dev_tmp)/usr/lib/perl5/auto/Foo/Foo.so strip $(dev_tmp)/usr/lib/perl5/auto/Foo/Foo.so install -d $(dev_tmp)/usr/share/doc ln -s $(LIB) $(dev_tmp)/usr/share/doc/$(DEV) install -d $(dev_tmp)/DEBIAN install -m 755 debian/dev.postinst $(dev_tmp)/DEBIAN/postinst install -m 755 debian/dev.prerm $(dev_tmp)/DEBIAN/prerm dpkg-gencontrol -isp -p$(DEV) -P$(dev_tmp) dpkg --build $(dev_tmp) .. binary: binary-arch # The mention of binary-indep here should be sufficient to suppress the # warning that it's not present. .PHONY: build-arch build-indep build binary-arch binary-indep binary clean lintian-2.5.22ubuntu1/t/tests/legacy-libbaz/debian/debian/source.lintian-overrides0000664000000000000000000000006712310413206025105 0ustar libbaz source: maintainer-script-lacks-debhelper-token lintian-2.5.22ubuntu1/t/tests/legacy-libbaz/debian/debian/control0000664000000000000000000000404612310413206021631 0ustar Source: libbaz Section: libs Priority: extra Maintainer: Lintian Maintainer Build-depends: debhelper (>=4) Standards-Version: 3.2.1 Package: libbaz1 Architecture: any Provides: libbaz Description: test handling of library packages Regression test for lintian's handling of libraries. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: libbaz1-dev Architecture: any Depends: libbaz1 (= ${source:Version}), perlapi-5.8.8 Description: development package Regression test for lintian's handling of libraries (dev). . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: libbaz2 Architecture: any Depends: ${shlibs:Depends}, libssl0.9.8 Description: test handling of library packages (good) Regression test for lintian's handling of libraries (good). . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: libbaz2-dev Architecture: any Depends: ${shlibs:Depends}, libbaz2 (= ${Source-Version}) Description: development package (good) Regression test for lintian's handling of libraries (dev good). . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: libbaz2-dbg Architecture: any Depends: libbaz2 (= ${binary:Version}) Priority: optional Description: debugging package Regression test for lintian's handling of libraries (debug). . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/tests/legacy-libbaz/debian/debian/lib.prerm0000664000000000000000000000020612310413206022035 0ustar #!/bin/sh -e $PKG=libbaz1 if [ \( "$1" = "upgrade" -o "$1" = "remove" \) -a -L /usr/doc/$PKG ]; then rm -f /usr/doc/$PKG fi lintian-2.5.22ubuntu1/t/tests/legacy-libbaz/debian/debian/dev.prerm0000664000000000000000000000004012310413206022041 0ustar #!/bin/sh -e $PKG=libbaz1-dev lintian-2.5.22ubuntu1/t/tests/legacy-libbaz/debian/extra.c0000664000000000000000000000000012310413206020255 0ustar lintian-2.5.22ubuntu1/t/tests/files-package-contains-foo/0000775000000000000000000000000012310413206020141 5ustar lintian-2.5.22ubuntu1/t/tests/files-package-contains-foo/tags0000664000000000000000000000335012310413206021023 0ustar W: files-package-contains-foo: macos-ds-store-file-in-package usr/share/files-package-contains-foo/.DS_Store W: files-package-contains-foo: macos-resource-fork-file-in-package usr/share/files-package-contains-foo/._stuff W: files-package-contains-foo: package-contains-bts-control-dir usr/share/files-package-contains-foo/.be/ W: files-package-contains-foo: package-contains-linda-override usr/share/linda/overrides/files-package-contains-foo W: files-package-contains-foo: package-contains-readme-for-other-platform-or-distro usr/share/doc/files-package-contains-foo/README.mac W: files-package-contains-foo: package-contains-readme-for-other-platform-or-distro usr/share/doc/files-package-contains-foo/README.windows W: files-package-contains-foo: package-contains-vcs-control-dir usr/share/files-package-contains-foo/.git/ W: files-package-contains-foo: package-contains-vcs-control-dir usr/share/files-package-contains-foo/.svn/ W: files-package-contains-foo: package-contains-vcs-control-file usr/share/files-package-contains-foo/.git_ignore W: files-package-contains-foo: package-contains-vcs-control-file usr/share/files-package-contains-foo/.gitignore W: files-package-contains-foo: package-contains-vcs-control-file usr/share/files-package-contains-foo/sub-git1/.gitattributes W: files-package-contains-foo: package-contains-vcs-control-file usr/share/files-package-contains-foo/sub-git1/.gitignore.gz W: files-package-contains-foo: package-contains-vcs-control-file usr/share/files-package-contains-foo/sub-git1/.gitmodules W: files-package-contains-foo: svk-commit-file-in-package usr/share/files-package-contains-foo/svk-commit-yeehaa.tmp W: files-package-contains-foo: svn-commit-file-in-package usr/share/files-package-contains-foo/svn-commit-yeehaa.tmp lintian-2.5.22ubuntu1/t/tests/files-package-contains-foo/desc0000664000000000000000000000067412077065715021033 0ustar Testname: files-package-contains-foo Sequence: 6000 Version: 1.0 Description: Test tags about cruft in binary packages Test-For: macos-ds-store-file-in-package macos-resource-fork-file-in-package package-contains-bts-control-dir package-contains-linda-override package-contains-readme-for-other-platform-or-distro package-contains-vcs-control-dir package-contains-vcs-control-file svk-commit-file-in-package svn-commit-file-in-package lintian-2.5.22ubuntu1/t/tests/files-package-contains-foo/debian/0000775000000000000000000000000012077065715021405 5ustar lintian-2.5.22ubuntu1/t/tests/files-package-contains-foo/debian/debian/0000775000000000000000000000000012310413206022605 5ustar lintian-2.5.22ubuntu1/t/tests/files-package-contains-foo/debian/debian/rules0000664000000000000000000000163212310413206023664 0ustar #!/usr/bin/make -f PKG :=$(shell dh_listpackages) SHARE:= debian/$(PKG)/usr/share DATA := $(SHARE)/$(PKG) DOC := $(SHARE)/doc/$(PKG) %: dh $@ override_dh_install: dh_install mkdir -p $(DOC) $(DATA) # Vcs stuff mkdir $(DATA)/.svn $(DATA)/.git touch $(DATA)/.svn/file touch $(DATA)/.git/file touch $(DATA)/.gitignore touch $(DATA)/.git_ignore mkdir $(DATA)/sub-git1/ echo '*.old' | gzip -9n > $(DATA)/sub-git1/.gitignore.gz touch $(DATA)/sub-git1/.gitattributes touch $(DATA)/sub-git1/.gitmodules touch $(DATA)/svn-commit-yeehaa.tmp touch $(DATA)/svk-commit-yeehaa.tmp # bts control dir mkdir $(DATA)/.be touch $(DATA)/.be/file # macos stuff touch $(DATA)/.DS_Store touch $(DATA)/._stuff # Foreign READMEs echo "Hallo World Mac" > $(DOC)/README.mac echo "Hallo World Win" > $(DOC)/README.windows # Linda override mkdir -p $(SHARE)/linda/overrides touch $(SHARE)/linda/overrides/$(PKG) lintian-2.5.22ubuntu1/t/tests/rules-special-variables/0000775000000000000000000000000012310413206017567 5ustar lintian-2.5.22ubuntu1/t/tests/rules-special-variables/tags0000664000000000000000000000014312310413206020446 0ustar W: rules-special-variables source: debian-rules-should-not-use-or-modify-user-only-variable line 3 lintian-2.5.22ubuntu1/t/tests/rules-special-variables/desc0000664000000000000000000000027412310413206020433 0ustar Testname: rules-special-variables Sequence: 6000 Version: 1.0 Description: Test for debian/rules using special variables Test-For: debian-rules-should-not-use-or-modify-user-only-variable lintian-2.5.22ubuntu1/t/tests/rules-special-variables/debian/0000775000000000000000000000000012077065715021033 5ustar lintian-2.5.22ubuntu1/t/tests/rules-special-variables/debian/debian/0000775000000000000000000000000012077065715022255 5ustar lintian-2.5.22ubuntu1/t/tests/rules-special-variables/debian/debian/rules0000664000000000000000000000010412077065715023325 0ustar #!/usr/bin/make -f DEB_CFLAGS_APPEND:= -Wl,--as-needed %: dh $@ lintian-2.5.22ubuntu1/t/tests/cruft-minified-js/0000775000000000000000000000000012315525770016407 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-minified-js/post_test0000664000000000000000000000012712310413206020337 0ustar s/means line length is about [0-9]+ characters$/means line is about NUMBER characters/ lintian-2.5.22ubuntu1/t/tests/cruft-minified-js/pre_build0000775000000000000000000000177612315523160020304 0ustar #!/bin/sh # # Create all the various junk that shouldn't exist in the diff so that we can # trigger all the tags. set -e dir="$1" jsdir="$1/usr/share/javascript/" srcdir="$1" json="$srcdir/debian/missing-sources/json.js" uglyjson="$jsdir/json/json.min.js" mkdir -p "$jsdir" mkdir -p "$jsdir/minwithoutsource" mkdir -p "$jsdir/jswithoutminext" mkdir -p "$jsdir/json" mkdir -p "$jsdir/sourced" mkdir -p "$jsdir/jswithoutminextwithoutsource/" # create a js file #uglifyjs -o "$uglyjson" "$json" # in Ubuntu, we ship the minified version to avoid pulling node into main: cp "$srcdir/debian/missing-sources/json.min.js" "$uglyjson" # fake install of minified js without min.js cp "$uglyjson" "$jsdir/jswithoutminext/json.js" # fake not sourced cp "$uglyjson" "$jsdir/minwithoutsource/notsourced.min.js" # fake install but not sourced cp "$uglyjson" "$jsdir/jswithoutminextwithoutsource/jsonnotsourced.js" # fake source and min alon cp "$uglyjson" "$jsdir/sourced/sourced.min.js" cp "$json" "$jsdir/sourced/sourced.js" lintian-2.5.22ubuntu1/t/tests/cruft-minified-js/tags0000664000000000000000000000176412315525770017300 0ustar E: cruft-minified-js source: source-is-missing usr/share/javascript/jswithoutminextwithoutsource/jsonnotsourced.js E: cruft-minified-js source: source-is-missing usr/share/javascript/minwithoutsource/notsourced.min.js P: cruft-minified-js source: source-contains-prebuilt-javascript-object debian/missing-sources/json.min.js P: cruft-minified-js source: source-contains-prebuilt-javascript-object usr/share/javascript/json/json.min.js P: cruft-minified-js source: source-contains-prebuilt-javascript-object usr/share/javascript/jswithoutminext/json.js means line is about NUMBER characters P: cruft-minified-js source: source-contains-prebuilt-javascript-object usr/share/javascript/jswithoutminextwithoutsource/jsonnotsourced.js means line is about NUMBER characters P: cruft-minified-js source: source-contains-prebuilt-javascript-object usr/share/javascript/minwithoutsource/notsourced.min.js P: cruft-minified-js source: source-contains-prebuilt-javascript-object usr/share/javascript/sourced/sourced.min.js lintian-2.5.22ubuntu1/t/tests/cruft-minified-js/desc0000664000000000000000000000037012311410541017231 0ustar Testname: cruft-minified-js Sequence: 6000 Version: 1.0 Description: Misc errors related to minified javascript Skeleton: pedantic Options: --pedantic -I -E Architecture: any Test-For: source-contains-prebuilt-javascript-object source-is-missing lintian-2.5.22ubuntu1/t/tests/cruft-minified-js/debian/0000775000000000000000000000000012311410541017612 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-minified-js/debian/debian/0000775000000000000000000000000012311410541021034 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-minified-js/debian/debian/install0000664000000000000000000000000512310413206022420 0ustar usr/ lintian-2.5.22ubuntu1/t/tests/cruft-minified-js/debian/debian/missing-sources/0000775000000000000000000000000012315523205024174 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-minified-js/debian/debian/missing-sources/json.js0000664000000000000000000004614112311410541025503 0ustar /* json.js 2012-10-08 Public Domain No warranty expressed or implied. Use at your own risk. This file has been superceded by http://www.JSON.org/json2.js See http://www.JSON.org/js.html This code should be minified before deployment. See http://javascript.crockford.com/jsmin.html USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO NOT CONTROL. This file adds these methods to JavaScript: object.toJSONString(whitelist) This method produce a JSON text from a JavaScript value. It must not contain any cyclical references. Illegal values will be excluded. The default conversion for dates is to an ISO string. You can add a toJSONString method to any date object to get a different representation. The object and array methods can take an optional whitelist argument. A whitelist is an array of strings. If it is provided, keys in objects not found in the whitelist are excluded. string.parseJSON(filter) This method parses a JSON text to produce an object or array. It can throw a SyntaxError exception. The optional filter parameter is a function which can filter and transform the results. It receives each of the keys and values, and its return value is used instead of the original value. If it returns what it received, then structure is not modified. If it returns undefined then the member is deleted. Example: // Parse the text. If a key contains the string 'date' then // convert the value to a date. myData = text.parseJSON(function (key, value) { return key.indexOf('date') >= 0 ? new Date(value) : value; }); This file will break programs with improper for..in loops. See http://yuiblog.com/blog/2006/09/26/for-in-intrigue/ This file creates a global JSON object containing two methods: stringify and parse. JSON.stringify(value, replacer, space) value any JavaScript value, usually an object or array. replacer an optional parameter that determines how object values are stringified for objects. It can be a function or an array of strings. space an optional parameter that specifies the indentation of nested structures. If it is omitted, the text will be packed without extra whitespace. If it is a number, it will specify the number of spaces to indent at each level. If it is a string (such as '\t' or ' '), it contains the characters used to indent at each level. This method produces a JSON text from a JavaScript value. When an object value is found, if the object contains a toJSON method, its toJSON method will be called and the result will be stringified. A toJSON method does not serialize: it returns the value represented by the name/value pair that should be serialized, or undefined if nothing should be serialized. The toJSON method will be passed the key associated with the value, and this will be bound to the object holding the key. For example, this would serialize Dates as ISO strings. Date.prototype.toJSON = function (key) { function f(n) { // Format integers to have at least two digits. return n < 10 ? '0' + n : n; } return this.getUTCFullYear() + '-' + f(this.getUTCMonth() + 1) + '-' + f(this.getUTCDate()) + 'T' + f(this.getUTCHours()) + ':' + f(this.getUTCMinutes()) + ':' + f(this.getUTCSeconds()) + 'Z'; }; You can provide an optional replacer method. It will be passed the key and value of each member, with this bound to the containing object. The value that is returned from your method will be serialized. If your method returns undefined, then the member will be excluded from the serialization. If the replacer parameter is an array of strings, then it will be used to select the members to be serialized. It filters the results such that only members with keys listed in the replacer array are stringified. Values that do not have JSON representations, such as undefined or functions, will not be serialized. Such values in objects will be dropped; in arrays they will be replaced with null. You can use a replacer function to replace those with JSON values. JSON.stringify(undefined) returns undefined. The optional space parameter produces a stringification of the value that is filled with line breaks and indentation to make it easier to read. If the space parameter is a non-empty string, then that string will be used for indentation. If the space parameter is a number, then the indentation will be that many spaces. Example: text = JSON.stringify(['e', {pluribus: 'unum'}]); // text is '["e",{"pluribus":"unum"}]' text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t'); // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]' text = JSON.stringify([new Date()], function (key, value) { return this[key] instanceof Date ? 'Date(' + this[key] + ')' : value; }); // text is '["Date(---current time---)"]' JSON.parse(text, reviver) This method parses a JSON text to produce an object or array. It can throw a SyntaxError exception. The optional reviver parameter is a function that can filter and transform the results. It receives each of the keys and values, and its return value is used instead of the original value. If it returns what it received, then the structure is not modified. If it returns undefined then the member is deleted. Example: // Parse the text. Values that look like ISO date strings will // be converted to Date objects. myData = JSON.parse(text, function (key, value) { var a; if (typeof value === 'string') { a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value); if (a) { return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6])); } } return value; }); myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) { var d; if (typeof value === 'string' && value.slice(0, 5) === 'Date(' && value.slice(-1) === ')') { d = new Date(value.slice(5, -1)); if (d) { return d; } } return value; }); This is a reference implementation. You are free to copy, modify, or redistribute. */ /*jslint evil: true, regexp: true, unparam: true */ /*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply, call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join, lastIndex, length, parse, parseJSON, prototype, push, replace, slice, stringify, test, toJSON, toJSONString, toString, valueOf */ // Create a JSON object only if one does not already exist. We create the // methods in a closure to avoid creating global variables. if (typeof JSON !== 'object') { JSON = {}; } (function () { 'use strict'; function f(n) { // Format integers to have at least two digits. return n < 10 ? '0' + n : n; } if (typeof Date.prototype.toJSON !== 'function') { Date.prototype.toJSON = function (key) { return isFinite(this.valueOf()) ? this.getUTCFullYear() + '-' + f(this.getUTCMonth() + 1) + '-' + f(this.getUTCDate()) + 'T' + f(this.getUTCHours()) + ':' + f(this.getUTCMinutes()) + ':' + f(this.getUTCSeconds()) + 'Z' : null; }; String.prototype.toJSON = Number.prototype.toJSON = Boolean.prototype.toJSON = function (key) { return this.valueOf(); }; } var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, gap, indent, meta = { // table of character substitutions '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', '\\': '\\\\' }, rep; function quote(string) { // If the string contains no control characters, no quote characters, and no // backslash characters, then we can safely slap some quotes around it. // Otherwise we must also replace the offending characters with safe escape // sequences. escapable.lastIndex = 0; return escapable.test(string) ? '"' + string.replace(escapable, function (a) { var c = meta[a]; return typeof c === 'string' ? c : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); }) + '"' : '"' + string + '"'; } function str(key, holder) { // Produce a string from holder[key]. var i, // The loop counter. k, // The member key. v, // The member value. length, mind = gap, partial, value = holder[key]; // If the value has a toJSON method, call it to obtain a replacement value. if (value && typeof value === 'object' && typeof value.toJSON === 'function') { value = value.toJSON(key); } // If we were called with a replacer function, then call the replacer to // obtain a replacement value. if (typeof rep === 'function') { value = rep.call(holder, key, value); } // What happens next depends on the value's type. switch (typeof value) { case 'string': return quote(value); case 'number': // JSON numbers must be finite. Encode non-finite numbers as null. return isFinite(value) ? String(value) : 'null'; case 'boolean': case 'null': // If the value is a boolean or null, convert it to a string. Note: // typeof null does not produce 'null'. The case is included here in // the remote chance that this gets fixed someday. return String(value); // If the type is 'object', we might be dealing with an object or an array or // null. case 'object': // Due to a specification blunder in ECMAScript, typeof null is 'object', // so watch out for that case. if (!value) { return 'null'; } // Make an array to hold the partial results of stringifying this object value. gap += indent; partial = []; // Is the value an array? if (Object.prototype.toString.apply(value) === '[object Array]') { // The value is an array. Stringify every element. Use null as a placeholder // for non-JSON values. length = value.length; for (i = 0; i < length; i += 1) { partial[i] = str(i, value) || 'null'; } // Join all of the elements together, separated with commas, and wrap them in // brackets. v = partial.length === 0 ? '[]' : gap ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : '[' + partial.join(',') + ']'; gap = mind; return v; } // If the replacer is an array, use it to select the members to be stringified. if (rep && typeof rep === 'object') { length = rep.length; for (i = 0; i < length; i += 1) { k = rep[i]; if (typeof k === 'string') { v = str(k, value); if (v) { partial.push(quote(k) + (gap ? ': ' : ':') + v); } } } } else { // Otherwise, iterate through all of the keys in the object. for (k in value) { if (Object.prototype.hasOwnProperty.call(value, k)) { v = str(k, value); if (v) { partial.push(quote(k) + (gap ? ': ' : ':') + v); } } } } // Join all of the member texts together, separated with commas, // and wrap them in braces. v = partial.length === 0 ? '{}' : gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : '{' + partial.join(',') + '}'; gap = mind; return v; } } // If the JSON object does not yet have a stringify method, give it one. if (typeof JSON.stringify !== 'function') { JSON.stringify = function (value, replacer, space) { // The stringify method takes a value and an optional replacer, and an optional // space parameter, and returns a JSON text. The replacer can be a function // that can replace values, or an array of strings that will select the keys. // A default replacer method can be provided. Use of the space parameter can // produce text that is more easily readable. var i; gap = ''; indent = ''; // If the space parameter is a number, make an indent string containing that // many spaces. if (typeof space === 'number') { for (i = 0; i < space; i += 1) { indent += ' '; } // If the space parameter is a string, it will be used as the indent string. } else if (typeof space === 'string') { indent = space; } // If there is a replacer, it must be a function or an array. // Otherwise, throw an error. rep = replacer; if (replacer && typeof replacer !== 'function' && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) { throw new Error('JSON.stringify'); } // Make a fake root object containing our value under the key of ''. // Return the result of stringifying the value. return str('', {'': value}); }; } // If the JSON object does not yet have a parse method, give it one. if (typeof JSON.parse !== 'function') { JSON.parse = function (text, reviver) { // The parse method takes a text and an optional reviver function, and returns // a JavaScript value if the text is a valid JSON text. var j; function walk(holder, key) { // The walk method is used to recursively walk the resulting structure so // that modifications can be made. var k, v, value = holder[key]; if (value && typeof value === 'object') { for (k in value) { if (Object.prototype.hasOwnProperty.call(value, k)) { v = walk(value, k); if (v !== undefined) { value[k] = v; } else { delete value[k]; } } } } return reviver.call(holder, key, value); } // Parsing happens in four stages. In the first stage, we replace certain // Unicode characters with escape sequences. JavaScript handles many characters // incorrectly, either silently deleting them, or treating them as line endings. text = String(text); cx.lastIndex = 0; if (cx.test(text)) { text = text.replace(cx, function (a) { return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); }); } // In the second stage, we run the text against regular expressions that look // for non-JSON patterns. We are especially concerned with '()' and 'new' // because they can cause invocation, and '=' because it can cause mutation. // But just to be safe, we want to reject all unexpected forms. // We split the second stage into 4 regexp operations in order to work around // crippling inefficiencies in IE's and Safari's regexp engines. First we // replace the JSON backslash pairs with '@' (a non-JSON character). Second, we // replace all simple value tokens with ']' characters. Third, we delete all // open brackets that follow a colon or comma or that begin the text. Finally, // we look to see that the remaining characters are only whitespace or ']' or // ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. if (/^[\],:{}\s]*$/ .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { // In the third stage we use the eval function to compile the text into a // JavaScript structure. The '{' operator is subject to a syntactic ambiguity // in JavaScript: it can begin a block or an object literal. We wrap the text // in parens to eliminate the ambiguity. j = eval('(' + text + ')'); // In the optional fourth stage, we recursively walk the new structure, passing // each name/value pair to a reviver function for possible transformation. return typeof reviver === 'function' ? walk({'': j}, '') : j; } // If the text is not JSON parseable, then a SyntaxError is thrown. throw new SyntaxError('JSON.parse'); }; } // Augment the basic prototypes if they have not already been augmented. // These forms are obsolete. It is recommended that JSON.stringify and // JSON.parse be used instead. if (!Object.prototype.toJSONString) { Object.prototype.toJSONString = function (filter) { return JSON.stringify(this, filter); }; Object.prototype.parseJSON = function (filter) { return JSON.parse(this, filter); }; } }()); lintian-2.5.22ubuntu1/t/tests/cruft-minified-js/debian/debian/missing-sources/json.min.js0000644000000000000000000002625012315522722026273 0ustar /* json.js 2012-10-08 Public Domain No warranty expressed or implied. Use at your own risk. This file has been superceded by http://www.JSON.org/json2.js See http://www.JSON.org/js.html This code should be minified before deployment. See http://javascript.crockford.com/jsmin.html USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO NOT CONTROL. This file adds these methods to JavaScript: object.toJSONString(whitelist) This method produce a JSON text from a JavaScript value. It must not contain any cyclical references. Illegal values will be excluded. The default conversion for dates is to an ISO string. You can add a toJSONString method to any date object to get a different representation. The object and array methods can take an optional whitelist argument. A whitelist is an array of strings. If it is provided, keys in objects not found in the whitelist are excluded. string.parseJSON(filter) This method parses a JSON text to produce an object or array. It can throw a SyntaxError exception. The optional filter parameter is a function which can filter and transform the results. It receives each of the keys and values, and its return value is used instead of the original value. If it returns what it received, then structure is not modified. If it returns undefined then the member is deleted. Example: // Parse the text. If a key contains the string 'date' then // convert the value to a date. myData = text.parseJSON(function (key, value) { return key.indexOf('date') >= 0 ? new Date(value) : value; }); This file will break programs with improper for..in loops. See http://yuiblog.com/blog/2006/09/26/for-in-intrigue/ This file creates a global JSON object containing two methods: stringify and parse. JSON.stringify(value, replacer, space) value any JavaScript value, usually an object or array. replacer an optional parameter that determines how object values are stringified for objects. It can be a function or an array of strings. space an optional parameter that specifies the indentation of nested structures. If it is omitted, the text will be packed without extra whitespace. If it is a number, it will specify the number of spaces to indent at each level. If it is a string (such as '\t' or ' '), it contains the characters used to indent at each level. This method produces a JSON text from a JavaScript value. When an object value is found, if the object contains a toJSON method, its toJSON method will be called and the result will be stringified. A toJSON method does not serialize: it returns the value represented by the name/value pair that should be serialized, or undefined if nothing should be serialized. The toJSON method will be passed the key associated with the value, and this will be bound to the object holding the key. For example, this would serialize Dates as ISO strings. Date.prototype.toJSON = function (key) { function f(n) { // Format integers to have at least two digits. return n < 10 ? '0' + n : n; } return this.getUTCFullYear() + '-' + f(this.getUTCMonth() + 1) + '-' + f(this.getUTCDate()) + 'T' + f(this.getUTCHours()) + ':' + f(this.getUTCMinutes()) + ':' + f(this.getUTCSeconds()) + 'Z'; }; You can provide an optional replacer method. It will be passed the key and value of each member, with this bound to the containing object. The value that is returned from your method will be serialized. If your method returns undefined, then the member will be excluded from the serialization. If the replacer parameter is an array of strings, then it will be used to select the members to be serialized. It filters the results such that only members with keys listed in the replacer array are stringified. Values that do not have JSON representations, such as undefined or functions, will not be serialized. Such values in objects will be dropped; in arrays they will be replaced with null. You can use a replacer function to replace those with JSON values. JSON.stringify(undefined) returns undefined. The optional space parameter produces a stringification of the value that is filled with line breaks and indentation to make it easier to read. If the space parameter is a non-empty string, then that string will be used for indentation. If the space parameter is a number, then the indentation will be that many spaces. Example: text = JSON.stringify(['e', {pluribus: 'unum'}]); // text is '["e",{"pluribus":"unum"}]' text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t'); // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]' text = JSON.stringify([new Date()], function (key, value) { return this[key] instanceof Date ? 'Date(' + this[key] + ')' : value; }); // text is '["Date(---current time---)"]' JSON.parse(text, reviver) This method parses a JSON text to produce an object or array. It can throw a SyntaxError exception. The optional reviver parameter is a function that can filter and transform the results. It receives each of the keys and values, and its return value is used instead of the original value. If it returns what it received, then the structure is not modified. If it returns undefined then the member is deleted. Example: // Parse the text. Values that look like ISO date strings will // be converted to Date objects. myData = JSON.parse(text, function (key, value) { var a; if (typeof value === 'string') { a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value); if (a) { return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4], +a[5], +a[6])); } } return value; }); myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) { var d; if (typeof value === 'string' && value.slice(0, 5) === 'Date(' && value.slice(-1) === ')') { d = new Date(value.slice(5, -1)); if (d) { return d; } } return value; }); This is a reference implementation. You are free to copy, modify, or redistribute. *//*jslint evil: true, regexp: true, unparam: true *//*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply, call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join, lastIndex, length, parse, parseJSON, prototype, push, replace, slice, stringify, test, toJSON, toJSONString, toString, valueOf */// Create a JSON object only if one does not already exist. We create the // methods in a closure to avoid creating global variables. typeof JSON!="object"&&(JSON={}),function(){"use strict";function f(e){return e<10?"0"+e:e}function quote(e){return escapable.lastIndex=0,escapable.test(e)?'"'+e.replace(escapable,function(e){var t=meta[e];return typeof t=="string"?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function str(e,t){var n,r,i,s,o=gap,u,a=t[e];a&&typeof a=="object"&&typeof a.toJSON=="function"&&(a=a.toJSON(e)),typeof rep=="function"&&(a=rep.call(t,e,a));switch(typeof a){case"string":return quote(a);case"number":return isFinite(a)?String(a):"null";case"boolean":case"null":return String(a);case"object":if(!a)return"null";gap+=indent,u=[];if(Object.prototype.toString.apply(a)==="[object Array]"){s=a.length;for(n=0;n= 9) Package: some-udeb Architecture: all Depends: $\{misc:Depends\} Package-Type: udeb Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/deb-format-udeb-compression/debian/debian/rules0000664000000000000000000000033212310413144024065 0ustar #!/usr/bin/make -f %: dh $@ override_dh_builddeb: # manually call dpkg-deb because dh_builddeb uses -Zxz and does # not allow us to override it. dpkg-deb -Zlzma --build debian/some-udeb ../some-udeb_1.0_all.udeb lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-numpy-abi/0000775000000000000000000000000012077065714022266 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-numpy-abi/tags0000664000000000000000000000011212077065714023141 0ustar E: binaries-missing-depends-on-numpy-abi: missing-dependency-on-numpy-abi lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-numpy-abi/desc0000664000000000000000000000030712077065714023127 0ustar Testname: binaries-missing-depends-on-numpy-abi Sequence: 6000 Version: 1.0 Description: Test for missing dependency on python-numpy-abiN Architecture: any Test-For: missing-dependency-on-numpy-abi lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-numpy-abi/debian/0000775000000000000000000000000012310413144023470 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-numpy-abi/debian/setup.py0000664000000000000000000000015512077065714025223 0ustar import distutils.core distutils.core.setup( ext_modules=[distutils.core.Extension('basic', ['basic.c'])] ) lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-numpy-abi/debian/basic.c0000664000000000000000000000051212310413144024713 0ustar #include #include #include #include static void hardening_trigger(char *p, int i, void (*f)(char *)) { char test[10]; memcpy(test, p, i); f(test); printf("%s", test); } void do_import_array(void) { import_array(); hardening_trigger(NULL, 0, NULL); } lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-numpy-abi/debian/debian/0000775000000000000000000000000012077065714024732 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-numpy-abi/debian/debian/rules0000664000000000000000000000006612077065714026011 0ustar #!/usr/bin/make -f %: dh $@ override_dh_pysupport: lintian-2.5.22ubuntu1/t/tests/cruft-python/0000775000000000000000000000000012313507507015526 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-python/pre_build0000775000000000000000000000133012313507507017416 0ustar #!/bin/sh # # Create all the various junk that shouldn't exist in the diff so that we can # trigger all the tags. set -e dir="$1" fake="$dir/debian/missing-sources/fake.py" cp "$fake" "$dir" echo 'import fake' > "${dir}/main.py" unset PYTHONDONTWRITEBYTECODE PYTHONPATH="${dir}" python "${dir}/main.py" > /dev/null PYTHONPATH="${dir}" python -O "${dir}/main.py" > /dev/null # now remove source rm -f "${dir}"/main.py rm -f "${dir}"/fake.py cp "$fake" "$dir/fake2.py" echo 'import fake2' > "${dir}/main.py" unset PYTHONDONTWRITEBYTECODE PYTHONPATH="${dir}" python "${dir}/main.py" > /dev/null PYTHONPATH="${dir}" python -O "${dir}/main.py" > /dev/null # now remove source rm -f "${dir}"/main.py rm -f "${dir}"/fake2.py lintian-2.5.22ubuntu1/t/tests/cruft-python/tags0000664000000000000000000000061212313507507016406 0ustar E: cruft-python source: source-is-missing fake2.pyc E: cruft-python source: source-is-missing fake2.pyo P: cruft-python source: source-contains-prebuilt-python-object fake.pyc P: cruft-python source: source-contains-prebuilt-python-object fake.pyo P: cruft-python source: source-contains-prebuilt-python-object fake2.pyc P: cruft-python source: source-contains-prebuilt-python-object fake2.pyo lintian-2.5.22ubuntu1/t/tests/cruft-python/desc0000664000000000000000000000034212313507507016366 0ustar Testname: cruft-python Sequence: 6000 Version: 1.0 Description: Misc errors related to python Skeleton: pedantic Options: --pedantic -I -E Architecture: any Test-For: source-contains-prebuilt-python-object source-is-missing lintian-2.5.22ubuntu1/t/tests/cruft-python/debian/0000775000000000000000000000000012313507507016750 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-python/debian/debian/0000775000000000000000000000000012313507507020172 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-python/debian/debian/missing-sources/0000775000000000000000000000000012313507507023324 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-python/debian/debian/missing-sources/fake.py0000664000000000000000000000002612313507507024602 0ustar # a fake module sourcelintian-2.5.22ubuntu1/t/tests/rules-missing-targets/0000775000000000000000000000000012310413206017321 5ustar lintian-2.5.22ubuntu1/t/tests/rules-missing-targets/tags0000664000000000000000000000053012310413206020200 0ustar I: rules-missing-targets source: debian-rules-missing-good-practice-target-dfsg get-orig-source W: rules-missing-targets source: debian-rules-missing-recommended-target build-arch W: rules-missing-targets source: debian-rules-missing-recommended-target build-indep W: rules-missing-targets source: package-would-benefit-from-build-arch-targets lintian-2.5.22ubuntu1/t/tests/rules-missing-targets/desc0000664000000000000000000000043412310413206020163 0ustar Testname: rules-missing-targets Sequence: 6000 Version: 1.0+dfsg-1 Type: non-native Description: Test for missing targets in debian/rules Test-For: debian-rules-missing-good-practice-target-dfsg debian-rules-missing-recommended-target package-would-benefit-from-build-arch-targets lintian-2.5.22ubuntu1/t/tests/rules-missing-targets/debian/0000775000000000000000000000000012077065715020565 5ustar lintian-2.5.22ubuntu1/t/tests/rules-missing-targets/debian/debian/0000775000000000000000000000000012310413206021765 5ustar lintian-2.5.22ubuntu1/t/tests/rules-missing-targets/debian/debian/control.in0000664000000000000000000000150312310413206023774 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: any Depends: $\{misc:Depends\}, {$source}-data Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: {$source}-data Architecture: all Depends: $\{misc:Depends\}, Description: {$description} - data This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . Data package. lintian-2.5.22ubuntu1/t/tests/rules-missing-targets/debian/debian/rules0000664000000000000000000000015412077065715023064 0ustar #!/usr/bin/make -f # Missing build-arch/build-indep :) build clean binary binary-arch binary-indep: dh $@ lintian-2.5.22ubuntu1/t/tests/source-copyright-typo-field/0000775000000000000000000000000012310413146020434 5ustar lintian-2.5.22ubuntu1/t/tests/source-copyright-typo-field/tags0000664000000000000000000000045512310413146021321 0ustar W: source-copyright-typo-field source: field-name-typo-in-dep5-copyright copyrigth -> copyright (line 7) W: source-copyright-typo-field source: field-name-typo-in-dep5-copyright file -> files (line 6) W: source-copyright-typo-field source: field-name-typo-in-dep5-copyright licens -> license (line 8) lintian-2.5.22ubuntu1/t/tests/source-copyright-typo-field/desc0000664000000000000000000000023512310413146021275 0ustar Testname: source-copyright-typo-field Sequence: 6000 Version: 1.0 Description: Test for typo in DEP-5 field name Test-For: field-name-typo-in-dep5-copyright lintian-2.5.22ubuntu1/t/tests/source-copyright-typo-field/debian/0000775000000000000000000000000012310413146021656 5ustar lintian-2.5.22ubuntu1/t/tests/source-copyright-typo-field/debian/debian/0000775000000000000000000000000012310413146023100 5ustar lintian-2.5.22ubuntu1/t/tests/source-copyright-typo-field/debian/debian/copyright0000664000000000000000000000206512310413146025036 0ustar Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: Doohickey Upstream-Contact: J. Random Hacker Source: http://examples.com/doohickey/source/ File: * Copyrigth: © 2011 J. Random Hacker Licens: GPL-2 This package 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; version 2 dated June, 1991. . This package 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 package; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. . On Debian systems, the full text of the GNU General Public License version 2 can be found in the file `/usr/share/common-licenses/GPL-2'. lintian-2.5.22ubuntu1/t/tests/testsuite-control-syntax/0000775000000000000000000000000012310413146020107 5ustar lintian-2.5.22ubuntu1/t/tests/testsuite-control-syntax/tags0000664000000000000000000000023112310413146020764 0ustar W: testsuite-control-syntax source: syntax-error-in-debian-tests-control line 1: Cannot parse line "This file does not look like a Debian control file." lintian-2.5.22ubuntu1/t/tests/testsuite-control-syntax/desc0000664000000000000000000000026212310413146020750 0ustar Testname: testsuite-control-syntax Sequence: 6000 Version: 1.0 Description: Detection of syntax errors in autopkgtest control file Test-For: syntax-error-in-debian-tests-control lintian-2.5.22ubuntu1/t/tests/testsuite-control-syntax/debian/0000775000000000000000000000000012310413146021331 5ustar lintian-2.5.22ubuntu1/t/tests/testsuite-control-syntax/debian/debian/0000775000000000000000000000000012310413206022550 5ustar lintian-2.5.22ubuntu1/t/tests/testsuite-control-syntax/debian/debian/tests/0000775000000000000000000000000012310413146023715 5ustar lintian-2.5.22ubuntu1/t/tests/testsuite-control-syntax/debian/debian/tests/control0000664000000000000000000000007712310413146025324 0ustar This file does not look like a Debian control file. at all lintian-2.5.22ubuntu1/t/tests/testsuite-control-syntax/debian/debian/control.in0000664000000000000000000000101712310413206024557 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) XS-Testsuite: autopkgtest Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/fields-bad-homepage/0000775000000000000000000000000012077065715016650 5ustar lintian-2.5.22ubuntu1/t/tests/fields-bad-homepage/tags0000664000000000000000000000023312077065715017527 0ustar W: fields-bad-homepage source: bad-homepage ttp://lintian.debian.org/ W: fields-bad-homepage: superfluous-clutter-in-homepage lintian-2.5.22ubuntu1/t/tests/fields-bad-homepage/desc0000664000000000000000000000024312077065715017510 0ustar Testname: fields-bad-homepage Sequence: 6000 Version: 1.0 Description: Test for invalid Homepage protocol Test-For: bad-homepage superfluous-clutter-in-homepage lintian-2.5.22ubuntu1/t/tests/fields-bad-homepage/debian/0000775000000000000000000000000012077065715020072 5ustar lintian-2.5.22ubuntu1/t/tests/fields-bad-homepage/debian/debian/0000775000000000000000000000000012310413206021272 5ustar lintian-2.5.22ubuntu1/t/tests/fields-bad-homepage/debian/debian/control.in0000664000000000000000000000115212310413206023301 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) # Whoops, typo Homepage: ttp://lintian.debian.org/ Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. # ... and some unneeded <> Homepage: lintian-2.5.22ubuntu1/t/tests/rules-general/0000775000000000000000000000000012310413206015616 5ustar lintian-2.5.22ubuntu1/t/tests/rules-general/tags0000664000000000000000000000060112310413206016474 0ustar E: rules-general source: clean-should-be-satisfied-by-build-depends debhelper E: rules-general source: debian-rules-should-not-automatically-update-control line 3 W: rules-general source: debian-rules-should-not-use-DEB_BUILD_OPTS line 10 W: rules-general source: debian-rules-should-not-use-pwd line 10 W: rules-general source: debian-rules-should-not-use-underscore-variable line 11 lintian-2.5.22ubuntu1/t/tests/rules-general/desc0000664000000000000000000000051312310413206016456 0ustar Testname: rules-general Sequence: 6000 Version: 1.0 Description: Test various debian/rules checks Test-For: clean-should-be-satisfied-by-build-depends debian-rules-should-not-automatically-update-control debian-rules-should-not-use-DEB_BUILD_OPTS debian-rules-should-not-use-pwd debian-rules-should-not-use-underscore-variablelintian-2.5.22ubuntu1/t/tests/rules-general/debian/0000775000000000000000000000000012077065715017062 5ustar lintian-2.5.22ubuntu1/t/tests/rules-general/debian/debian/0000775000000000000000000000000012310413206020262 5ustar lintian-2.5.22ubuntu1/t/tests/rules-general/debian/debian/control.in0000664000000000000000000000100312310413206022264 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends-Indep: debhelper (>= 9), python Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/rules-general/debian/debian/pycompat0000664000000000000000000000000212077065715022053 0ustar 1 lintian-2.5.22ubuntu1/t/tests/rules-general/debian/debian/rules0000775000000000000000000000020112310413206021333 0ustar #!/usr/bin/make -f DEB_AUTO_UPDATE_DEBIAN_CONTROL = yes %: dh $@ clean: dh_clean echo $(DEB_BUILD_OPTS) $(PWD) @echo $(_) lintian-2.5.22ubuntu1/t/tests/fields-duplicate-build/0000775000000000000000000000000012077065715017406 5ustar lintian-2.5.22ubuntu1/t/tests/fields-duplicate-build/tags0000664000000000000000000000017712077065715020274 0ustar W: fields-duplicate-build source: package-has-a-duplicate-build-relation perl (>= 5.10) | libmodule-build-perl, perl (>= 5.10) lintian-2.5.22ubuntu1/t/tests/fields-duplicate-build/desc0000664000000000000000000000023712077065715020251 0ustar Testname: fields-duplicate-build Sequence: 6000 Version: 1.0 Description: Check for duplicate build relations Test-For: package-has-a-duplicate-build-relation lintian-2.5.22ubuntu1/t/tests/fields-duplicate-build/debian/0000775000000000000000000000000012077065715020630 5ustar lintian-2.5.22ubuntu1/t/tests/fields-duplicate-build/debian/debian/0000775000000000000000000000000012310413206022030 5ustar lintian-2.5.22ubuntu1/t/tests/fields-duplicate-build/debian/debian/control.in0000664000000000000000000000110012310413206024030 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), perl (>= 5.10) | libmodule-build-perl Build-Depends-Indep: perl (>= 5.10) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/scripts-ocamlrun/0000775000000000000000000000000012077065716016401 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-ocamlrun/tags0000664000000000000000000000007412077065716017263 0ustar W: scripts-ocamlrun: binary-without-manpage usr/bin/script1 lintian-2.5.22ubuntu1/t/tests/scripts-ocamlrun/desc0000664000000000000000000000026612077065716017246 0ustar Testname: scripts-ocamlrun Sequence: 6000 Version: 1.0 Description: Test correct handling of ocamlrun scripts Test-Against: missing-dep-for-interpreter References: Debian Bug#495431 lintian-2.5.22ubuntu1/t/tests/scripts-ocamlrun/debian/0000775000000000000000000000000012077065716017623 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-ocamlrun/debian/Makefile0000664000000000000000000000022612077065716021263 0ustar default: : install: install -d $(DESTDIR)/usr/bin install -m755 script1 $(DESTDIR)/usr/bin/ .PHONY: distclean realclean clean install test check lintian-2.5.22ubuntu1/t/tests/scripts-ocamlrun/debian/script10000664000000000000000000000002412077065716021127 0ustar #!/usr/bin/ocamlrun lintian-2.5.22ubuntu1/t/tests/scripts-ocamlrun/debian/debian/0000775000000000000000000000000012310413206021022 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-ocamlrun/debian/debian/control.in0000664000000000000000000000074312310413206023036 0ustar Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: ocaml-nox-3.10.2, $\{shlib:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/tests/phppear-general/0000775000000000000000000000000012310413146016126 5ustar lintian-2.5.22ubuntu1/t/tests/phppear-general/upstream/0000775000000000000000000000000012310413146017766 5ustar lintian-2.5.22ubuntu1/t/tests/phppear-general/upstream/package.xml0000664000000000000000000000000112310413146022072 0ustar lintian-2.5.22ubuntu1/t/tests/phppear-general/upstream/channel.xml0000664000000000000000000000000012310413146022106 0ustar lintian-2.5.22ubuntu1/t/tests/phppear-general/tags0000664000000000000000000000021612310413146017006 0ustar W: phppear-general source: pear-channel-without-pkg-php-tools-builddep W: phppear-general source: pear-package-without-pkg-php-tools-builddep lintian-2.5.22ubuntu1/t/tests/phppear-general/desc0000664000000000000000000000040112310413146016762 0ustar Testname: phppear-general Sequence: 6000 Version: 1.0-1 Description: General phppear tests Test-For: pear-channel-without-pkg-php-tools-builddep pear-package-without-pkg-php-tools-builddep Test-Against: missing-pkg-php-tools-buildsystem Type: non-native lintian-2.5.22ubuntu1/t/tests/cruft-updated-libtool/0000775000000000000000000000000012077065715017304 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-updated-libtool/tags0000664000000000000000000000000012077065715020153 0ustar lintian-2.5.22ubuntu1/t/tests/cruft-updated-libtool/desc0000664000000000000000000000026612077065715020151 0ustar Testname: cruft-updated-libtool Sequence: 6000 Version: 1.0 Description: Old ltmain.sh/ltconfig is fine with build-depend Test-Against: ancient-libtool References: Debian Bug#534134 lintian-2.5.22ubuntu1/t/tests/cruft-updated-libtool/debian/0000775000000000000000000000000012077065715020526 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-updated-libtool/debian/ltconfig0000664000000000000000000000000012077065715022244 0ustar lintian-2.5.22ubuntu1/t/tests/cruft-updated-libtool/debian/ltmain.sh0000664000000000000000000000367012077065715022354 0ustar # ltmain.sh - Provide generalized library-building support services. # NOTE: Changing this file will not affect anything until you rerun ltconfig. # # Copyright (C) 1996-1999 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Check that we have a working $echo. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then # Yippee, $echo works! : else # Restart under the correct shell, and then maybe $echo will work. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <= 9), libtool Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/files-special-file/0000775000000000000000000000000012077065715016530 5ustar lintian-2.5.22ubuntu1/t/tests/files-special-file/tags0000664000000000000000000000012012077065715017402 0ustar E: files-special-file: special-file usr/share/files-special-file/fifo-pipe 0644 lintian-2.5.22ubuntu1/t/tests/files-special-file/desc0000664000000000000000000000017712077065715017376 0ustar Testname: files-special-file Sequence: 6000 Version: 1.0 Description: Test for special files in the deb Test-For: special-file lintian-2.5.22ubuntu1/t/tests/files-special-file/debian/0000775000000000000000000000000012077065715017752 5ustar lintian-2.5.22ubuntu1/t/tests/files-special-file/debian/debian/0000775000000000000000000000000012077065715021174 5ustar lintian-2.5.22ubuntu1/t/tests/files-special-file/debian/debian/rules0000664000000000000000000000027412077065715022254 0ustar #!/usr/bin/make -f PKG=$(shell dh_listpackages) %: dh $@ override_dh_builddeb: mkdir -p debian/$(PKG)/usr/share/$(PKG)/ mkfifo debian/$(PKG)/usr/share/$(PKG)/fifo-pipe dh_builddeb lintian-2.5.22ubuntu1/t/tests/cruft-non-native-version/0000775000000000000000000000000012310413205017732 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-non-native-version/tags0000664000000000000000000000011312077065715020631 0ustar W: cruft-non-native-version source: non-native-package-with-native-version lintian-2.5.22ubuntu1/t/tests/cruft-non-native-version/desc0000664000000000000000000000027212077065715020617 0ustar Testname: cruft-non-native-version Sequence: 6000 Type: non-native Version: 1.0 Description: Test non-native package with native version Test-For: non-native-package-with-native-version lintian-2.5.22ubuntu1/t/tests/generic-empty/0000775000000000000000000000000012310413146015624 5ustar lintian-2.5.22ubuntu1/t/tests/generic-empty/pre_build0000775000000000000000000000016712077065715017542 0ustar #!/bin/sh # # Remove as many files from the package as possible. rm -f "$1/debian/compat" rm -f "$1/debian/copyright" lintian-2.5.22ubuntu1/t/tests/generic-empty/tags0000664000000000000000000000212212310413146016502 0ustar E: generic-empty changes: bad-urgency-in-changes-file unknown E: generic-empty changes: changed-by-address-malformed a <> E: generic-empty changes: changed-by-address-missing a <> E: generic-empty source: debian-rules-missing-required-target binary-arch E: generic-empty source: debian-rules-missing-required-target binary-indep E: generic-empty source: maintainer-address-missing a E: generic-empty source: no-standards-version-field E: generic-empty: changelog-file-missing-in-native-package E: generic-empty: maintainer-address-missing a E: generic-empty: no-copyright-file E: generic-empty: package-has-no-description W: generic-empty source: changelog-should-mention-nmu W: generic-empty source: debian-rules-missing-recommended-target build-arch W: generic-empty source: debian-rules-missing-recommended-target build-indep W: generic-empty source: no-debian-copyright W: generic-empty source: no-section-field-for-source W: generic-empty source: source-nmu-has-incorrect-version-number 1.0 W: generic-empty: empty-binary-package W: generic-empty: no-priority-field W: generic-empty: no-section-field lintian-2.5.22ubuntu1/t/tests/generic-empty/desc0000664000000000000000000000072312077065715016506 0ustar Testname: generic-empty Sequence: 6500 Version: 1.0 Description: Pathological empty package Test-For: bad-urgency-in-changes-file changed-by-address-malformed changed-by-address-missing changelog-should-mention-nmu debian-rules-missing-required-target maintainer-address-missing no-copyright-file no-priority-field no-section-field no-section-field-for-source no-standards-version-field package-has-no-description source-nmu-has-incorrect-version-number lintian-2.5.22ubuntu1/t/tests/generic-empty/debian/0000775000000000000000000000000012077065715017065 5ustar lintian-2.5.22ubuntu1/t/tests/generic-empty/debian/README0000664000000000000000000000035012077065715017743 0ustar This is the smallest possible Debian package that I can get dpkg-buildpackage to build (with the exception of this documentation). It tests Lintian handling of packages that are missing everything one would normally expect to have. lintian-2.5.22ubuntu1/t/tests/generic-empty/debian/debian/0000775000000000000000000000000012310413206020265 5ustar lintian-2.5.22ubuntu1/t/tests/generic-empty/debian/debian/changelog.in0000664000000000000000000000011312310413206022537 0ustar {$source} ({$version}) unstable; -- a <> Tue, 30 Dec 2008 17:34:02 -0800 lintian-2.5.22ubuntu1/t/tests/generic-empty/debian/debian/control.in0000664000000000000000000000012212310413206022270 0ustar Source: {$source} Maintainer: a Package: {$source} Architecture: {$architecture} lintian-2.5.22ubuntu1/t/tests/generic-empty/debian/debian/rules0000775000000000000000000000034212077065715021366 0ustar #!/usr/bin/make -f build: binary: install -d debian/generic-empty debian/generic-empty/DEBIAN dpkg-gencontrol -pgeneric-empty -Pdebian/generic-empty dpkg --build debian/generic-empty .. clean: rm -rf debian/generic-empty lintian-2.5.22ubuntu1/t/tests/rules-variable-targets/0000775000000000000000000000000012077065715017457 5ustar lintian-2.5.22ubuntu1/t/tests/rules-variable-targets/tags0000664000000000000000000000000012077065715020326 0ustar lintian-2.5.22ubuntu1/t/tests/rules-variable-targets/desc0000664000000000000000000000025512077065715020322 0ustar Testname: rules-variable-targets Sequence: 6000 Version: 1.0 Description: Test against missing targets in debian/rules Test-Against: debian-rules-missing-recommended-target lintian-2.5.22ubuntu1/t/tests/rules-variable-targets/debian/0000775000000000000000000000000012077065715020701 5ustar lintian-2.5.22ubuntu1/t/tests/rules-variable-targets/debian/debian/0000775000000000000000000000000012077065715022123 5ustar lintian-2.5.22ubuntu1/t/tests/rules-variable-targets/debian/debian/rules0000664000000000000000000000021512077065715023176 0ustar #!/usr/bin/make -f TARGETS := build clean binary binary-arch binary-indep build-arch build-indep $(TARGETS): dh $@ .PHONY: $(TARGETS) lintian-2.5.22ubuntu1/t/tests/watch-file-pubkey-missing/0000775000000000000000000000000012310413206020040 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-pubkey-missing/upstream/0000775000000000000000000000000012310413206021700 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-pubkey-missing/upstream/README0000664000000000000000000000000712310413206022555 0ustar README lintian-2.5.22ubuntu1/t/tests/watch-file-pubkey-missing/tags0000664000000000000000000000011612310413206020717 0ustar E: watch-file-pubkey-missing source: debian-watch-file-pubkey-file-is-missing lintian-2.5.22ubuntu1/t/tests/watch-file-pubkey-missing/desc0000664000000000000000000000034312310413206020701 0ustar Testname: watch-file-pubkey-missing Sequence: 6000 Type: non-native Version: 1+dfsg-1 Description: Watch file if verify signature should check d/upstream/signing-key.{pgp,asc} Test-For: debian-watch-file-pubkey-file-is-missing lintian-2.5.22ubuntu1/t/tests/watch-file-pubkey-missing/debian/0000775000000000000000000000000012310413206021262 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-pubkey-missing/debian/README0000664000000000000000000000000712310413206022137 0ustar README lintian-2.5.22ubuntu1/t/tests/watch-file-pubkey-missing/debian/debian/0000775000000000000000000000000012310413206022504 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-pubkey-missing/debian/debian/watch0000664000000000000000000000024612310413206023537 0ustar version=3 opts="uversionmangle=s/-/./,dversionmangle=s/\.dfsg\d+$//,pgpsigurlmangle=s/$/.asc/" \ ftp://ftp.imagemagick.org/pub/ImageMagick/ ImageMagick-(.*)\.tar\.xz lintian-2.5.22ubuntu1/t/tests/nmu-local-changelog/0000775000000000000000000000000012077065715016707 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-local-changelog/tags0000664000000000000000000000000012077065715017556 0ustar lintian-2.5.22ubuntu1/t/tests/nmu-local-changelog/desc0000664000000000000000000000035212077065715017550 0ustar Testname: nmu-local-changelog Sequence: 6000 Version: 1.0 Description: Test suppression of NMU tags for local packages Test-Against: changelog-should-mention-nmu source-nmu-has-incorrect-version-number References: Debian Bug#501523 lintian-2.5.22ubuntu1/t/tests/nmu-local-changelog/debian/0000775000000000000000000000000012077065715020131 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-local-changelog/debian/debian/0000775000000000000000000000000012310413206021331 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-local-changelog/debian/debian/changelog.in0000664000000000000000000000033512310413206023611 0ustar {$source} ({$version}) unstable; urgency=low * Local package. * Lintian Test Suite. * Test: {$testname} * Suppress "should close ITP bug" messages. (Closes: #123456) -- Russ Allbery {$date} lintian-2.5.22ubuntu1/t/tests/watch-file-native/0000775000000000000000000000000012077065716016403 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-native/tags0000664000000000000000000000010112077065716017254 0ustar W: watch-file-native source: debian-watch-file-in-native-package lintian-2.5.22ubuntu1/t/tests/watch-file-native/desc0000664000000000000000000000022512077065716017243 0ustar Testname: watch-file-native Sequence: 6000 Version: 1.0 Description: Native package with a watch file Test-For: debian-watch-file-in-native-package lintian-2.5.22ubuntu1/t/tests/watch-file-native/debian/0000775000000000000000000000000012077065716017625 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-native/debian/debian/0000775000000000000000000000000012077065716021047 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-native/debian/debian/watch0000664000000000000000000000016712077065716022104 0ustar # watch file with upstream version mangling version=3 http://somewhere.debian.org/foo/foo_bar(.+)\.tar\.gz 5 uupdate lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-xapi/0000775000000000000000000000000012077065714021326 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-xapi/tags0000664000000000000000000000020512077065714022204 0ustar E: binaries-missing-depends-on-xapi: missing-dependency-on-perlapi E: binaries-missing-depends-on-xapi: missing-dependency-on-phpapi lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-xapi/desc0000664000000000000000000000031612077065714022167 0ustar Testname: binaries-missing-depends-on-xapi Sequence: 6000 Version: 1.0 Description: Test for missing perlapi depends Architecture: any Test-For: missing-dependency-on-perlapi missing-dependency-on-phpapi lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-xapi/debian/0000775000000000000000000000000012310413144022530 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-xapi/debian/Makefile0000664000000000000000000000067412077065714024217 0ustar all: gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-z,defs -Wl,-soname,libbasic.so.2 -o libbasic.so basic.c install: # install it under the correct triplet directory install -d $(DESTDIR)/usr/lib/perl5 install -m 644 -c -s libbasic.so $(DESTDIR)/usr/lib/perl5/libbasic.so install -d $(DESTDIR)/usr/lib/php5 install -m 644 -c -s libbasic.so $(DESTDIR)/usr/lib/php5/libbasic.so clean distclean: rm -f libbasic.so.2 check test: lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-xapi/debian/basic.c0000664000000000000000000000045412310413144023760 0ustar #include #include static void hardening_trigger(char *p, int i, void (*f)(char *)) { char test[10]; memcpy(test, p, i); f(test); printf("%s", test); } int lib_interface(void) { printf("Hello world!\n"); hardening_trigger(NULL, 0, NULL); return 0; } lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-xapi/debian/debian/0000775000000000000000000000000012077065714023772 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-missing-depends-on-xapi/debian/debian/rules0000664000000000000000000000031612077065714025047 0ustar #!/usr/bin/make -f %: dh $@ override_dh_perl: override_dh_builddeb: # Work around debhelper bug (triggers useless call to ldconfig) rm -f debian/*/DEBIAN/postinst debian/*/DEBIAN/postrm dh_builddeb lintian-2.5.22ubuntu1/t/tests/apache2-webapplications-general/0000775000000000000000000000000012310413144021152 5ustar lintian-2.5.22ubuntu1/t/tests/apache2-webapplications-general/tags0000664000000000000000000000266112310413144022040 0ustar E: phpmyfoo2: apache2-configuration-files-need-conf-suffix etc/apache2/conf-available/phpmyfoo2 W: phpmyfoo2: non-standard-apache2-configuration-name local-phpmyfoo2.conf != phpmyfoo2.conf W: phpmyfoo2: non-standard-apache2-configuration-name phpmyfoo2 != phpmyfoo2.conf W: phpmyfoo3: apache2-deprecated-auth-config W: phpmyfoo3: apache2-deprecated-auth-config W: phpmyfoo3: apache2-deprecated-auth-config Order W: phpmyfoo3: apache2-reverse-dependency-uses-obsolete-directory etc/apache2/conf.d/phpmyfoo.conf W: phpmyfoo3: apache2-unparsable-dependency etc/apache2/conf.d/phpmyfoo.conf bar2.conf W: phpmyfoo3: apache2-unsupported-dependency etc/apache2/conf.d/phpmyfoo.conf Conflicts W: phpmyfoo3: non-standard-apache2-configuration-name phpmyfoo.conf != phpmyfoo3.conf W: phpmyfoo: apache2-deprecated-auth-config W: phpmyfoo: apache2-deprecated-auth-config W: phpmyfoo: apache2-deprecated-auth-config Order W: phpmyfoo: apache2-reverse-dependency-calls-invoke-rc.d postinst W: phpmyfoo: apache2-reverse-dependency-calls-wrapper-script postinst a2enconf W: phpmyfoo: apache2-unparsable-dependency etc/apache2/conf-available/phpmyfoo.conf bar2.conf W: phpmyfoo: apache2-unsupported-dependency etc/apache2/conf-available/phpmyfoo.conf Conflicts W: phpmyfoo: web-application-depends-on-apache2-data-package apache2-bin W: phpmyfoo: web-application-should-not-depend-unconditionally-on-apache2 lintian-2.5.22ubuntu1/t/tests/apache2-webapplications-general/desc0000664000000000000000000000111712310413144022013 0ustar Testname: apache2-webapplications-general Sequence: 6000 Version: 1.0 Description: Several tests related to Apache2 web application packages Test-For: non-standard-apache2-configuration-name apache2-reverse-dependency-calls-invoke-rc.d apache2-reverse-dependency-calls-wrapper-script web-application-depends-on-apache2-data-package web-application-should-not-depend-unconditionally-on-apache2 apache2-reverse-dependency-uses-obsolete-directory apache2-configuration-files-need-conf-suffix apache2-unsupported-dependency apache2-unparsable-dependency apache2-deprecated-auth-config lintian-2.5.22ubuntu1/t/tests/apache2-webapplications-general/debian/0000775000000000000000000000000012310413144022374 5ustar lintian-2.5.22ubuntu1/t/tests/apache2-webapplications-general/debian/local-phpmyfoo2.conf0000664000000000000000000000001512077065714026272 0ustar lintian-2.5.22ubuntu1/t/tests/apache2-webapplications-general/debian/phpmyfoo.conf0000664000000000000000000000035612310413144025110 0ustar # Depends: bar bar2.conf # Conflicts: notsupportedhere Alias /foo /usr/share/foo WebAppConf Order deny, allow Require valid-user AllowOverride None lintian-2.5.22ubuntu1/t/tests/apache2-webapplications-general/debian/phpmyfoo20000664000000000000000000000001512077065714024256 0ustar lintian-2.5.22ubuntu1/t/tests/apache2-webapplications-general/debian/debian/0000775000000000000000000000000012310413206023615 5ustar lintian-2.5.22ubuntu1/t/tests/apache2-webapplications-general/debian/debian/phpmyfoo3.dirs0000664000000000000000000000002412077065714026441 0ustar etc/apache2/conf.d/ lintian-2.5.22ubuntu1/t/tests/apache2-webapplications-general/debian/debian/phpmyfoo.postrm0000664000000000000000000000015412077065714026745 0ustar if [ "$1" = 'configure' ] ; then a2disconf -q phpmyfoo fi invoke-rc.d apache2 reload #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/apache2-webapplications-general/debian/debian/phpmyfoo2.install0000664000000000000000000000013012077065714027143 0ustar phpmyfoo2 /etc/apache2/conf-available local-phpmyfoo2.conf /etc/apache2/conf-available lintian-2.5.22ubuntu1/t/tests/apache2-webapplications-general/debian/debian/control.in0000664000000000000000000000256112310413206025631 0ustar Source: {$source} Section: web Priority: extra Maintainer: Big Kahuna Uploaders: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: phpmyfoo Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, apache2, apache2-bin Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: phpmyfoo2 Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, apache2 | httpd Description: {$description} - ignore me This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . Ignore me. Package: phpmyfoo3 Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, apache2 | lighttpd | httpd Description: {$description} - another ignore me This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . Yet another ignore me. lintian-2.5.22ubuntu1/t/tests/apache2-webapplications-general/debian/debian/phpmyfoo.dirs0000664000000000000000000000003312077065714026356 0ustar etc/apache2/conf-available lintian-2.5.22ubuntu1/t/tests/apache2-webapplications-general/debian/debian/phpmyfoo.postinst0000664000000000000000000000016712077065714027310 0ustar #! /bin/sh set -e if [ "$1" = 'configure' ] ; then a2enconf -q phpmyfoo fi invoke-rc.d apache2 reload #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/apache2-webapplications-general/debian/debian/phpmyfoo.install0000664000000000000000000000005212077065714027064 0ustar phpmyfoo.conf /etc/apache2/conf-available lintian-2.5.22ubuntu1/t/tests/apache2-webapplications-general/debian/debian/phpmyfoo3.install0000664000000000000000000000004312077065714027147 0ustar phpmyfoo.conf /etc/apache2/conf.d/ lintian-2.5.22ubuntu1/t/tests/apache2-webapplications-general/debian/debian/phpmyfoo2.dirs0000664000000000000000000000003312077065714026440 0ustar etc/apache2/conf-available lintian-2.5.22ubuntu1/t/tests/changelog-file-no-dch/0000775000000000000000000000000012077065714017104 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-no-dch/upstream/0000775000000000000000000000000012310413205020722 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-no-dch/upstream/ChangeLog0000664000000000000000000000023312077065714022514 0ustar 2011-09-10 Niels Thykier * This is a non-Debian ChangeLog. Lintian should not be tricked to believe this is a Debian changelog. lintian-2.5.22ubuntu1/t/tests/changelog-file-no-dch/tags0000664000000000000000000000010612077065714017762 0ustar E: changelog-file-no-dch: debian-changelog-file-missing-or-wrong-name lintian-2.5.22ubuntu1/t/tests/changelog-file-no-dch/desc0000664000000000000000000000034512077065714017747 0ustar Testname: changelog-file-no-dch Sequence: 6000 Type: non-native Version: 1.0-1 Description: Test if Debian changelog is missing Test-For: debian-changelog-file-missing-or-wrong-name Test-Against: syntax-error-in-debian-changelog lintian-2.5.22ubuntu1/t/tests/changelog-file-no-dch/debian/0000775000000000000000000000000012077065714020326 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-no-dch/debian/debian/0000775000000000000000000000000012077065714021550 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-no-dch/debian/debian/rules0000775000000000000000000000043712077065714022634 0ustar #!/usr/bin/make -f %: dh $@ override_dh_installchangelogs: # This is needed for Ubuntu, where debhelper does not install # upstream changelogs by default dh_installchangelogs ChangeLog override_dh_md5sums: find debian/*/ -type f -a -iname 'changelog.debian*' -delete dh_md5sums lintian-2.5.22ubuntu1/t/tests/fields-uncanonical-vcs-fields/0000775000000000000000000000000012310413206020644 5ustar lintian-2.5.22ubuntu1/t/tests/fields-uncanonical-vcs-fields/tags0000664000000000000000000000174712310413206021536 0ustar I: fields-uncanonical-vcs-fields source: vcs-field-not-canonical http://hg.debian.org/hg/foobar/pkg/foobar http://anonscm.debian.org/hg/foobar/pkg/foobar I: fields-uncanonical-vcs-fields source: vcs-field-not-canonical nosmart+http://bzr.debian.org/bzr/collab-maint/foobar nosmart+http://anonscm.debian.org/bzr/collab-maint/foobar I: fields-uncanonical-vcs-fields source: vcs-field-not-canonical svn://svn.debian.org/svn/foobar/trunk svn://anonscm.debian.org/foobar/trunk W: fields-uncanonical-vcs-fields source: vcs-field-bitrotted :pserver:anonymous@cvs.alioth.debian.org:/cvsroot/foobar :pserver:anonymous@anonscm.debian.org:/cvs/foobar W: fields-uncanonical-vcs-fields source: vcs-field-bitrotted https://svn.debian.org/wsvn/foobar/trunk?foo=bar;op=log;something=else http://anonscm.debian.org/viewvc/foobar/trunk?foo=bar;something=else W: fields-uncanonical-vcs-fields source: vcs-git-uses-invalid-user-uri git://git.debian.org/~djpig/foobar.git git://anonscm.debian.org/users/djpig/foobar.git lintian-2.5.22ubuntu1/t/tests/fields-uncanonical-vcs-fields/desc0000664000000000000000000000032112310413144021502 0ustar Testname: fields-uncanonical-vcs-fields Sequence: 6000 Description: Test for vcs fields needing canonication Version: 1.0 Test-For: vcs-field-bitrotted vcs-field-not-canonical vcs-git-uses-invalid-user-uri lintian-2.5.22ubuntu1/t/tests/fields-uncanonical-vcs-fields/debian/0000775000000000000000000000000012310413144022067 5ustar lintian-2.5.22ubuntu1/t/tests/fields-uncanonical-vcs-fields/debian/debian/0000775000000000000000000000000012310413206023310 5ustar lintian-2.5.22ubuntu1/t/tests/fields-uncanonical-vcs-fields/debian/debian/control.in0000664000000000000000000000160212310413206025317 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Vcs-Browser: https://svn.debian.org/wsvn/foobar/trunk?foo=bar;op=log;something=else Vcs-Svn: svn://svn.debian.org/svn/foobar/trunk Vcs-Mtn: www.example.org org.debian.foobar Vcs-Hg: http://hg.debian.org/hg/foobar/pkg/foobar Vcs-Git: git://git.debian.org/~djpig/foobar.git -b master Vcs-Cvs: :pserver:anonymous@cvs.alioth.debian.org:/cvsroot/foobar module Vcs-Bzr: nosmart+http://bzr.debian.org/bzr/collab-maint/foobar Package: {$source} Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/README0000664000000000000000000003161212310413206013734 0ustar WRITING A TEST ============== A test in this framework is a directory containing a desc file, providing metadata about the test, and other files used to build the test package. Naming conventions ------------------ Each test name should begin with the name of the part tested, e.g. -... -... lintian-... lintian-info-... Use generic- as a prefix for test cases that don't cover a specific portion of Lintian but instead test Lintian's behavior on a useful special case of package (such as a generic dh-make template). Sequence numbers ---------------- Each test should have a sequence number to get a more deterministic order. You do not need to use unique numbers, only enough to make the order deterministic and to your liking! You should use the middle of the assigned range as default number and only divert from it if you have a reason to. Number ranges: 0000 - 0999 Basic test, that generally just assure that the test suite and lintian are not completly broken 1000 - 1999 Tests for lib/ [1500] 2000 - 2999 Tests for frontend/ [2500] 3000 - 3999 Tests for unpack/ [3500] 4000 - 4999 Tests for collection/[4500] 5000 - 6999 Tests for checks/ [6000] 7000 - 8999 9000 - 9998 Tests for reporting/ [9500] 9999 Tests from the old legacy test suite The desc file ------------- The desc file is formatted like a Debian control file. The required fields are: Testname: Sequence: Version: Description: In addition, the tags (if any) that the test case is testing for should be listed in a Test-For key. The tags that the test case is testing are not issued (checking againts false positives) should be listed in a Test-Against key. In both cases, the tags should be separated by whitespace. The following format is suggested for multiple tags: Test-For: lintian-tag-1 lintian-tag-2 with the tags listed in alphabetical order. The default lintian command-line options are -I -E. You can change these options with an Options field specifying the lintian options to use. This overrides the default, so add -I -E if you want to include those options. For example, to test --show-overrides with the -T option, use: Options: --show-overrides -T no-copyright-file The string TESTSET in the Options field will be replaced with the root of the test suite (the whole test suite, not the test currently running) so that the Lintian options can refer to files in the test suite directory to test options like --suppress-tags-from-file. By default, the Lintian output is sorted before comparing it to the tags file. To suppress the sort (when, for instance, checking non-standard output formats), use: Sort: no By default, all tests are built as native Debian packages. To build the test case as a non-native package, add: Type: non-native to the .desc file. You will also want to change the version number to be non-native unless you're testing a mismatch. By default all tests are run with the default Lintian profile. If a different profile is needed it can be specified via: Profile: test/profile The value will be passed to Lintian via the --profile parameter. There are times when one wants to add a test for something that needs to be done. To mark it as such, preventing the test suite from failing, use: Todo: yes Test cases marked as Todo will suceed if they fail _the testing step_ and fail if they suceed. Although this option can be very useful to document what needs to be done, the ideal situation is to have none of them :) Unless you're writing a test case just to improve Lintian's test coverage, you will normally want to add a References field giving the source of the test or the bug that you're testing for. This should be one of "Debian Bug#nnnn" for a bug report, a URL into the debian-lint-maint mailing list archives, or a message ID for the message to the list. By default, templates/skel and templates/skel.upstream are used as the test skeleton and then the files in the specific test directory are overlaid. To start from a different skeleton, use: Skeleton: The value must match a directory name in the t/templates directory. If this is a non-native package, there must also be a corresponding .upstream directory. Sometimes tests requires certain packages that are not available in the current stable. In this case, you can use: Test-Depends: If any of the dependencies are unavailable, the test will be skipped. All other fields in the .desc file are optional and control the values filled into the template control and changelog files by the test suite harness. The following additional fields are currently supported: Date: Author: Architecture: Section:
Standards-Version: See t/runtests and t/templates/skel/{control,changelog}.in for how they're used. The test directory ------------------ The test directory should contain the following files and directories: debian The file tree forming the unpacked package. This directory should normally have a debian subdirectory containing any files that are different than the template unless exactly the default template values are used. The skeleton will be copied to the build directory for the package and then the contents of this directory will be copied over top of it. upstream For a non-native package, this is the file tree that goes into the upstream tarball. The files here should also be present with the same contents in the debian directory unless you're intentionally creating a diff. However, as normal with a Debian package, you can omit files entirely from the debian directory and the deletions will be ignored by dpkg-buildpackage. tags The expected output of Lintian when run on the package, including info and experimental tags. The Lintian output will be lexicographically sorted before comparing it with tags. This file may be empty if the test case should produce no Lintian output. pre_upstream If present and executable, this script is run for a non-native test type after preparing the upstream directory but before creating the tarball. It receives the path to the package directory as its first argument and can make any modifications that can't easily be represented in the template system (such as creating files that shouldn't be stored in a revision control system). pre_build If present and executable, this script is run after preparing the upstream tarball (if any) and the package directory, but before running dpkg-buildpackage or lintian. It receives the path to the package directory as its first argument and can make any modifications that can't otherwise be represented in the template system (such as deleting files from the template that aren't desired). post_test If present, assumed to be a sed script that is run on the output of Lintian before comparing it to the tags file. The most common use for this script is to remove the architecture from tags produced on the .changes file with a line like: s/_[^ _]* changes/_arch changes/ but it may be useful for other cases where the output of Lintian may change on different systems. test_calibration If present and executable, this script is run after the Lintian output has been generated and after post_test (if present). The script can be used to calibrate the expected output or actual output. It is useful for cases the expected output is architecture dependent beyond what the post_test script can handle. The script will be passed 3 arguments, the "expected output" file, the "actual output" file and file name to write the "calibrated expected output". The script may modify the "actual output" file and create the calibration file, which (if it is created) will be used instead of the original "expected output" file. Be aware that Git doesn't track directories, only files, so any directory must contain at least one file to exist in a fresh Git checkout. Test cases that just use the template must therefore still have some file in the debian directory. Normally, this is handled by creating a small README file; see t/tests/basic for an example. RUNNING THE TEST SUITE ====================== The complete test suite will be run with debian/rules runtests, but this can take quite a lot of time. Normally this is only necessary after significant structural changes or before a release as a final check. To run a specific test case, run: debian/rules runtests onlyrun= You can omit the .desc from the end of . Give only the file name, not the full path. It's often more useful to run every test that is relevant to a particular tag. To do that, run: debian/rules check-tag tag= This will run all tests that list that tag in either Test-For or Test-Against. TEST WRITING TIPS ================= Please keep each test case focused. One of the problems that developed with the old test suite is that each test was serving many separate purposes and testing large swaths of Lintian, which made it difficult to know what could be changed and what would destroy some other useful test. Test cases should only test a set of closely related tags and new tests should be added for new issues that aren't part of that closely-related set. Test cases should be as Lintian-clean as possible except for the tags that they're testing for. The template is intended to help with this. It generates a Lintian-clean basic package for you to start with. You should override only the minimal required to trigger your test, and try to fix any unrelated problems. Sometimes this won't be possible and the only way to trigger a tag is to also trigger another tag, and that's fine, but it shouldn't be the normal case. Test cases should only be listed in Test-For or Test-Against if they're a target of that test case. Tags that are triggered as a side effect of setting up the desired test case should not be listed, since later changes or reworkings may cause those tags to no longer be issued. Be sure to use Test-For and Test-Against for tags that are targets of a particular test case. The test harness will ensure that the test case behaves correctly, and that metadata is used for the check-tag target and when checking test coverage. The test template uses debhelper 7. Use debhelper 7 features whenever possible rather than replacing the rules file with a more verbose one. In other words, if you want to skip a particular debhelper program, do something like: %: dh $@ binary: binary-arch binary-indep binary-arch: binary-indep: dh binary-indep --before dh_install dh binary-indep --after dh_install rather than adding in all of the traditional targets. All you have to do is make dpkg-buildpackage happy (which means that in practice you could just override binary, not binary-arch and binary-indep, but doing it this way may provide some future-proofing). Tests will generally fall into one of four basic types: 1. Tests for a specific tag. To keep the overall size (and therefore run time) of the test suite down, consider combining a test for a new tag into a general test (see below) if it's just another simple addition that's very similar to what's being checked by another test. However, be sure to keep all test cases tightly focused and err on the side of creating new tests. 2. Tests against a specific tag, generally as regression tests for false positives. 3. General tests of a set of closely-related tags. For example, there's no need to create a test case for every weird file in a Debian package that files checks for; one test case that installs a lot of weird files can easily test multiple tags at once without any confusion. Similarly, there's no need to create a separate test case for every type of cruft that could exist in a source package; one test case could contain, for instance, metadata files for every major VCS. Conventionally, these test case names often end in -general. 4. Generic test cases that provide an interesting representative of a type of package and thereby test a lot of tags (possibly from multiple checks scripts) that trigger on that type of package. For example, see generic-dh-make-2008 (the results of running dh_make on an empty source package) or generic-empty (a package missing everything that dpkg-buildpackage will let one get away with missing). If you by any reason need to write an architecture-specific test case, make sure the target architectures are properly listed _in the desc file_. runtests will in then handle this special test correctly. lintian-2.5.22ubuntu1/t/tests/spelling-multiword/0000775000000000000000000000000012077065716016735 5ustar lintian-2.5.22ubuntu1/t/tests/spelling-multiword/tags0000664000000000000000000000061312077065716017616 0ustar W: spelling-multiword: spelling-error-in-description Allows to Allows one to W: spelling-multiword: spelling-error-in-description An other Another W: spelling-multiword: spelling-error-in-description Debian/GNU Linux Debian GNU/Linux W: spelling-multiword: spelling-error-in-description Permits to Permits one to W: spelling-multiword: spelling-error-in-description This packages These packages lintian-2.5.22ubuntu1/t/tests/spelling-multiword/desc0000664000000000000000000000022312077065716017573 0ustar Testname: spelling-multiword Sequence: 6000 Version: 1.0 Description: Multi-word spelling errors detection Test-For: spelling-error-in-description lintian-2.5.22ubuntu1/t/tests/spelling-multiword/debian/0000775000000000000000000000000012077065716020157 5ustar lintian-2.5.22ubuntu1/t/tests/spelling-multiword/debian/debian/0000775000000000000000000000000012310413206021356 5ustar lintian-2.5.22ubuntu1/t/tests/spelling-multiword/debian/debian/control.in0000664000000000000000000000127312310413206023371 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . Spelling errors: * Allows to * An other error * Debian/GNU Linux * Permits to * This packages * This packages (again, but only tagged once) . Not errors: * These packages lintian-2.5.22ubuntu1/t/tests/debhelper-misc-depends-fp/0000775000000000000000000000000012077065715020001 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-misc-depends-fp/tags0000664000000000000000000000000012077065715020650 0ustar lintian-2.5.22ubuntu1/t/tests/debhelper-misc-depends-fp/desc0000664000000000000000000000025012077065715020637 0ustar Testname: debhelper-misc-depends-fp Sequence: 6000 Version: 1.0 Description: Test against missing reading the Depends field Test-Against: debhelper-but-no-misc-depends lintian-2.5.22ubuntu1/t/tests/debhelper-misc-depends-fp/debian/0000775000000000000000000000000012077065715021223 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-misc-depends-fp/debian/debian/0000775000000000000000000000000012310413206022423 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-misc-depends-fp/debian/debian/control.in0000664000000000000000000000076412310413206024442 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends:$\{misc:Depends\}, $\{shlibs:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/rules-ignores-error-clean-fp/0000775000000000000000000000000012077065715020503 5ustar lintian-2.5.22ubuntu1/t/tests/rules-ignores-error-clean-fp/tags0000664000000000000000000000000012077065715021352 0ustar lintian-2.5.22ubuntu1/t/tests/rules-ignores-error-clean-fp/desc0000664000000000000000000000025712077065715021350 0ustar Testname: rules-ignores-error-clean-fp Sequence: 6000 Version: 1.0 Description: Check against Lintian false-positive error Test-Against: debian-rules-ignores-make-clean-error lintian-2.5.22ubuntu1/t/tests/rules-ignores-error-clean-fp/debian/0000775000000000000000000000000012077065715021725 5ustar lintian-2.5.22ubuntu1/t/tests/rules-ignores-error-clean-fp/debian/debian/0000775000000000000000000000000012077065715023147 5ustar lintian-2.5.22ubuntu1/t/tests/rules-ignores-error-clean-fp/debian/debian/Makefile0000664000000000000000000000002112077065715024600 0ustar all: distclean: lintian-2.5.22ubuntu1/t/tests/rules-ignores-error-clean-fp/debian/debian/rules0000775000000000000000000000012412077065715024224 0ustar #!/usr/bin/make -f %: dh $@ override_dh_auto_clean: $(MAKE) -Cdebian distclean lintian-2.5.22ubuntu1/t/tests/binaries-general/0000775000000000000000000000000012310413144016261 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-general/tags0000664000000000000000000000214112310413144017140 0ustar E: binaries-general: arch-dependent-file-in-usr-share usr/share/foo/basic E: binaries-general: arch-dependent-file-in-usr-share usr/share/foo/basicdebug E: binaries-general: binary-or-shlib-defines-rpath usr/lib/foo/basiclibrpath /usr/lib E: binaries-general: binary-or-shlib-defines-rpath usr/share/foo/basic /usr/local/lib E: binaries-general: debug-symbols-directly-in-usr-lib-debug usr/lib/debug/basic E: binaries-general: library-in-debug-or-profile-should-not-be-stripped usr/lib/debug/usr/share/foo/basic E: binaries-general: statically-linked-binary usr/bin/static E: binaries-general: unstripped-binary-or-object usr/bin/unstripped W: binaries-general: binary-compiled-with-profiling-enabled usr/share/foo/basic W: binaries-general: binary-without-manpage usr/bin/static W: binaries-general: binary-without-manpage usr/bin/unstripped W: binaries-general: debug-file-should-use-detached-symbols usr/lib/debug/.build-id/de/deadbeefdeadbeef.debug W: binaries-general: debug-file-with-no-debug-symbols usr/lib/debug/usr/share/foo/basic W: binaries-general: debug-package-should-be-named-dbg usr/lib/debug/.build-id/ lintian-2.5.22ubuntu1/t/tests/binaries-general/desc0000664000000000000000000000070712310413144017126 0ustar Testname: binaries-general Sequence: 6000 Version: 1.0 Description: Misc errors related to binaries Architecture: any Test-For: arch-dependent-file-in-usr-share binary-compiled-with-profiling-enabled binary-or-shlib-defines-rpath debug-symbols-directly-in-usr-lib-debug debug-file-should-use-detached-symbols debug-file-with-no-debug-symbols library-in-debug-or-profile-should-not-be-stripped statically-linked-binary unstripped-binary-or-object lintian-2.5.22ubuntu1/t/tests/binaries-general/debian/0000775000000000000000000000000012310413206017502 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-general/debian/getbuildid0000775000000000000000000000142212310413144021544 0ustar #!/bin/sh # get build-id of binary set -e usage() { echo "Usage: getbuildid [flag] file"; echo " print build-id of an object file" echo "flags:" echo " -f : full build-id (default)." echo " -s : short build-id aka the first two characters." } if test $# -lt 1; then usage; exit 77; fi if test $# -gt 3; then usage; exit 77; fi if test $# -eq 1; then LC_ALL=C readelf -n "$1" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]*\).*/\1/g' else case "x$1" in 'x-f') LC_ALL=C readelf -n "$2" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]*\).*/\1/g' ;; 'x-s') LC_ALL=C readelf -n "$2" | grep -i 'Build Id:' | sed 's/.*:[[:blank:]]*\([[:digit:]|abcdef]\{2\}\).*/\1/g' ;; *) exit 2; esac fi exit 0; lintian-2.5.22ubuntu1/t/tests/binaries-general/debian/Makefile0000664000000000000000000000465012310413206021147 0ustar COMPILE:= $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) # extract from readelf GETBUILDID:=./getbuildid all: # rpath not matching any of the exceptions to the rpath checks # - with profiling enabled. $(COMPILE) -o basic basic.c -pg -Wl,--rpath,/usr/local/lib # rpath shipped in the package, but one of {/usr}?/lib $(COMPILE) -o basiclibrpath basic.c -Wl,--rpath,/usr/lib # non-special rpath shipped in the package $(COMPILE) -o basicshippedrpath basic.c -Wl,--rpath,/usr/share/foo # special rpath shipped in the package, multiple paths $(COMPILE) -o basicshippedrpathmore basic.c -Wl,--rpath,/usr/lib/binaries-general:/usr/lib/binaries-general/bar # static version of basic for debugging checks $(COMPILE) -static -o basic.static basic.c # version with debug $(COMPILE) -o basicdebug -g3 -Wl,--build-id basic.c install: # according to local debian rules /usr/lib/debug is unstripped install -d $(DESTDIR)/usr/share/foo/ install -d $(DESTDIR)/usr/lib/debug/usr/share/foo/ install -d $(DESTDIR)/usr/lib/foo/ install -d $(DESTDIR)/usr/bin install -m 755 -c basic $(DESTDIR)/usr/share/foo/basic objcopy --only-keep-debug basic $(DESTDIR)/usr/lib/debug/usr/share/foo/basic strip -s $(DESTDIR)/usr/lib/debug/usr/share/foo/basic install -m 755 -c basiclibrpath $(DESTDIR)/usr/lib/foo/basiclibrpath install -m 755 -c basicshippedrpath $(DESTDIR)/usr/lib/foo/basicshippedrpath install -m 744 -c basicshippedrpathmore $(DESTDIR)/usr/lib/foo/basicshippedrpathmore objcopy --only-keep-debug basic $(DESTDIR)/usr/lib/debug/basic install -d "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug` install -m 755 -c basicdebug $(DESTDIR)/usr/share/foo/basicdebug # force fake buildid in order to have tag matching ok (deadbeefdeadbeef) install -d "$(DESTDIR)/usr/lib/debug/.build-id/de" objcopy --compress-debug-sections basicdebug \ "$(DESTDIR)/usr/lib/debug/.build-id/de/deadbeefdeadbeef.debug" install -d "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug` objcopy --compress-debug-sections --only-keep-debug basicdebug \ "$(DESTDIR)/usr/lib/debug/.build-id/"`$(GETBUILDID) -s basicdebug`"/"`$(GETBUILDID) -f basicdebug`.debug install -m 755 -c basic.static $(DESTDIR)/usr/lib/debug/ # according to local debian rules unstripped in name avoid dh_strip to do the work install -m 755 basicdebug $(DESTDIR)/usr/bin/unstripped install -m 755 basic.static $(DESTDIR)/usr/bin/static clean distclean: rm -f basic check test: lintian-2.5.22ubuntu1/t/tests/binaries-general/debian/basic.c0000664000000000000000000000030512077065714020746 0ustar #include int main(void) { char t[10]; printf("Hello world!\n"); /* Bad choice for reading from stdin, but it forces a stack protector, so meh. */ gets (t); } lintian-2.5.22ubuntu1/t/tests/binaries-general/debian/debian/0000775000000000000000000000000012310413144020725 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-general/debian/debian/rules0000664000000000000000000000013312310413144021777 0ustar #!/usr/bin/make -f %: dh $@ override_dh_strip: dh_strip -X usr/lib/debug -X unstripped lintian-2.5.22ubuntu1/t/tests/symlinks-unsafe/0000775000000000000000000000000012310413146016204 5ustar lintian-2.5.22ubuntu1/t/tests/symlinks-unsafe/tags0000664000000000000000000000052312310413146017065 0ustar E: symlinks-unsafe: package-contains-unsafe-symlink usr/share/lintian/bad-links/absolute E: symlinks-unsafe: package-contains-unsafe-symlink usr/share/lintian/bad-links/relative-escape E: symlinks-unsafe: symlink-has-too-many-up-segments usr/share/lintian/bad-links/relative-escape ../../../../../non-existant/path/lintian-should-not-open lintian-2.5.22ubuntu1/t/tests/symlinks-unsafe/desc0000664000000000000000000000021612310413146017044 0ustar Testname: symlinks-unsafe Sequence: 6000 Version: 1.0 Description: General tests of unsafe symlinks Test-For: package-contains-unsafe-symlink lintian-2.5.22ubuntu1/t/tests/symlinks-unsafe/debian/0000775000000000000000000000000012310413146017426 5ustar lintian-2.5.22ubuntu1/t/tests/symlinks-unsafe/debian/debian/0000775000000000000000000000000012310413146020650 5ustar lintian-2.5.22ubuntu1/t/tests/symlinks-unsafe/debian/debian/rules0000664000000000000000000000050712310413146021727 0ustar #!/usr/bin/make -f PKG:=$(shell dh_listpackages) LINK_DIR:=debian/$(PKG)/usr/share/lintian/bad-links LINK_TARGET:=non-existant/path/lintian-should-not-open %: dh $@ override_dh_link: mkdir -p "$(LINK_DIR)" ln -s ../../../../../$(LINK_TARGET) \ $(LINK_DIR)/relative-escape ln -s /../$(LINK_TARGET) $(LINK_DIR)/absolute lintian-2.5.22ubuntu1/t/tests/changelog-file-dch-wrong-name/0000775000000000000000000000000012077065714020542 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-dch-wrong-name/upstream/0000775000000000000000000000000012310413205022360 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-dch-wrong-name/upstream/ChangeLog0000664000000000000000000000023312077065714024152 0ustar 2011-09-10 Niels Thykier * This is a non-Debian ChangeLog. Lintian should not be tricked to believe this is a Debian changelog. lintian-2.5.22ubuntu1/t/tests/changelog-file-dch-wrong-name/tags0000664000000000000000000000020712077065714021422 0ustar E: changelog-file-dch-wrong-name: wrong-name-for-debian-changelog-file usr/share/doc/changelog-file-dch-wrong-name/changelog.debian.gz lintian-2.5.22ubuntu1/t/tests/changelog-file-dch-wrong-name/desc0000664000000000000000000000027712077065714021411 0ustar Testname: changelog-file-dch-wrong-name Sequence: 6000 Type: non-native Version: 1.0-1 Description: Test if Debian changelog has the wrong name Test-For: wrong-name-for-debian-changelog-file lintian-2.5.22ubuntu1/t/tests/changelog-file-dch-wrong-name/debian/0000775000000000000000000000000012077065714021764 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-dch-wrong-name/debian/debian/0000775000000000000000000000000012077065714023206 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-dch-wrong-name/debian/debian/rules0000775000000000000000000000031512077065714024265 0ustar #!/usr/bin/make -f PKG:=$(shell dh_listpackages) DOC_DIR:=debian/$(PKG)/usr/share/doc/$(PKG) %: dh $@ override_dh_md5sums: mv $(DOC_DIR)/changelog.Debian.gz $(DOC_DIR)/changelog.debian.gz dh_md5sums lintian-2.5.22ubuntu1/t/tests/scripts-uses-perl4-libs-without-dep/0000775000000000000000000000000012077065716021762 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-uses-perl4-libs-without-dep/tags0000664000000000000000000000016212077065716022642 0ustar W: scripts-uses-perl4-libs-without-dep: script-uses-perl4-libs-without-dep usr/bin/naughty-script:20 newgetopt.pl lintian-2.5.22ubuntu1/t/tests/scripts-uses-perl4-libs-without-dep/desc0000664000000000000000000000030312077065716022617 0ustar Testname: scripts-uses-perl4-libs-without-dep Sequence: 6000 Version: 1.0 Description: Check that script-uses-perl4-libs-without-dep works (positive) Test-For: script-uses-perl4-libs-without-dep lintian-2.5.22ubuntu1/t/tests/scripts-uses-perl4-libs-without-dep/debian/0000775000000000000000000000000012077065716023204 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-uses-perl4-libs-without-dep/debian/naughty-script0000664000000000000000000000041112077065716026104 0ustar #!/usr/bin/perl =head1 NAME naughty-script -- uses obsolete perl4 libs =head1 SYNOPSIS naught-script =head1 DESCRIPTION This manpage is present to avoid a "binary-without-manpage" warning. :) =cut use strict; use warnings; do 'newgetopt.pl'; NGetOpt(); lintian-2.5.22ubuntu1/t/tests/scripts-uses-perl4-libs-without-dep/debian/Makefile0000664000000000000000000000013712077065716024645 0ustar all: naughty-script.1 %.1: % pod2man --section 1 "$<" > "$@" clean: rm -f naughty-script.1 lintian-2.5.22ubuntu1/t/tests/scripts-uses-perl4-libs-without-dep/debian/debian/0000775000000000000000000000000012310413206024403 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-uses-perl4-libs-without-dep/debian/debian/install0000664000000000000000000000002712077065716026016 0ustar naughty-script usr/bin lintian-2.5.22ubuntu1/t/tests/scripts-uses-perl4-libs-without-dep/debian/debian/control.in0000664000000000000000000000077312310413206026422 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), perl Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/scripts-uses-perl4-libs-without-dep/debian/debian/manpages0000664000000000000000000000002112077065716026135 0ustar naughty-script.1 lintian-2.5.22ubuntu1/t/tests/source-copyright-missing/0000775000000000000000000000000012077065716020051 5ustar lintian-2.5.22ubuntu1/t/tests/source-copyright-missing/pre_build0000775000000000000000000000004612077065716021744 0ustar #!/bin/sh rm -f "$1/debian/copyright" lintian-2.5.22ubuntu1/t/tests/source-copyright-missing/tags0000664000000000000000000000014712077065716020734 0ustar E: source-copyright-missing: no-copyright-file W: source-copyright-missing source: no-debian-copyright lintian-2.5.22ubuntu1/t/tests/source-copyright-missing/desc0000664000000000000000000000023112077065716020706 0ustar Testname: source-copyright-missing Sequence: 6000 Version: 1.0 Description: Test for missing copyright Test-For: no-copyright-file no-debian-copyright lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-no-series/0000775000000000000000000000000012077065715020735 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-no-series/upstream/0000775000000000000000000000000012077065715022575 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-no-series/upstream/README0000664000000000000000000000001412077065715023450 0ustar Hallo World lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-no-series/tags0000664000000000000000000000011412077065715021612 0ustar W: patch-systems-quilt-no-series source: quilt-build-dep-but-no-series-file lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-no-series/desc0000664000000000000000000000027012077065715021575 0ustar Testname: patch-systems-quilt-no-series Sequence: 6000 Version: 1.0-1 Type: non-native Description: Test for quilt patches with no series Test-For: quilt-build-dep-but-no-series-file lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-no-series/debian/0000775000000000000000000000000012077065715022157 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-no-series/debian/debian/0000775000000000000000000000000012310413206023357 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-no-series/debian/debian/control.in0000664000000000000000000000076612310413206025400 0ustar Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: quilt, debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlib:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-no-series/debian/debian/README.source0000664000000000000000000000010212077065715025551 0ustar This package uses quilt. See /usr/share/doc/quilt/README.source. lintian-2.5.22ubuntu1/t/tests/shared-libs-unversioned/0000775000000000000000000000000012077065716017630 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-unversioned/tags0000664000000000000000000000010612077065716020506 0ustar W: libfoo: shlib-without-versioned-soname usr/lib/libfoo.so libfoo.so lintian-2.5.22ubuntu1/t/tests/shared-libs-unversioned/desc0000664000000000000000000000041412077065716020470 0ustar Testname: shared-libs-unversioned Sequence: 6000 Version: 1.0 Architecture: any Description: Test handling of shared libraries without versioned SONAMEs Test-For: shlib-without-versioned-soname Test-Against: shlib-missing-in-control-file References: Debian Bug#506673 lintian-2.5.22ubuntu1/t/tests/shared-libs-unversioned/debian/0000775000000000000000000000000012077065716021052 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-unversioned/debian/Makefile0000664000000000000000000000045512077065716022516 0ustar CC = gcc all: libfoo.so libfoo.so: foo.o $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,libfoo.so $^ -lc %.o: %.c $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -o $@ -c $< install: install -d $(DESTDIR)/usr/lib install -m644 libfoo.so $(DESTDIR)/usr/lib/ .PHONY: distclean realclean clean install test check lintian-2.5.22ubuntu1/t/tests/shared-libs-unversioned/debian/foo.c0000664000000000000000000000062712077065716022006 0ustar /* * Be sure that this library uses a function from libc. Otherwise, gcc is * smart enough not to link it with libc and we get more tags for missing * dependency lines. */ #include #include #include double e(void (*f)(char *)){ char tmp[10]; double x; f(tmp); x = atof(tmp); return exp(x); } int foo(int num) { printf("%d\n", num); return num * 42; } lintian-2.5.22ubuntu1/t/tests/shared-libs-unversioned/debian/debian/0000775000000000000000000000000012310413206022251 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-unversioned/debian/debian/control.in0000664000000000000000000000071612310413206024265 0ustar Source: {$source} Priority: extra Section: libs Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: libfoo Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/tests/shared-libs-unversioned/debian/debian/symbols0000664000000000000000000000005012077065716023702 0ustar libfoo.so libfoo #MINVER# foo@Base 1.0 lintian-2.5.22ubuntu1/t/tests/shared-libs-unversioned/debian/debian/postinst0000664000000000000000000000043512077065716024104 0ustar #!/bin/sh # # A single library without a versioned SONAME makes dh_makeshlibs think # there's nothing to do and hence it doesn't add the ldconfig invocation. # Since that's not what we're testing, do it ourselves. set -e if [ "$1" = "configure" ] ; then ldconfig fi #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/shared-libs-unversioned/debian/debian/postrm0000664000000000000000000000043212077065716023542 0ustar #!/bin/sh # # A single library without a versioned SONAME makes dh_makeshlibs think # there's nothing to do and hence it doesn't add the ldconfig invocation. # Since that's not what we're testing, do it ourselves. set -e if [ "$1" = "remove" ] ; then ldconfig fi #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/fields-build-depends-general/0000775000000000000000000000000012314366740020465 5ustar lintian-2.5.22ubuntu1/t/tests/fields-build-depends-general/tags0000664000000000000000000000336712314355443021355 0ustar E: fields-build-depends-general source: build-conflicts-with-build-dependency bd-conflict E: fields-build-depends-general source: build-depends-on-build-essential build-depends E: fields-build-depends-general source: build-depends-on-essential-package-without-using-version build-depends: bash E: fields-build-depends-general source: build-depends-on-metapackage build-depends: xorg-dev E: fields-build-depends-general source: build-depends-on-non-build-package build-depends: java-propose-classpath E: fields-build-depends-general source: build-depends-on-obsolete-package build-depends: x-dev E: fields-build-depends-general source: conflicting-negation-in-source-relation build-depends: baz [i386 !amd64] E: fields-build-depends-general source: depends-on-build-essential-package-without-using-version make [build-depends: make] E: fields-build-depends-general source: invalid-arch-string-in-source-relation all [build-depends: foo [all]] E: fields-build-depends-general source: invalid-arch-string-in-source-relation i3!86 [build-depends: baz [source i3!86]] E: fields-build-depends-general source: invalid-arch-string-in-source-relation source [build-depends: baz [source i3!86]] I: fields-build-depends-general source: build-depends-on-python-dev-with-no-arch-any I: fields-build-depends-general source: ored-build-depends-on-obsolete-package build-depends: xlibmesa-gl-dev W: fields-build-depends-general source: build-depends-on-1-revision build-depends: revision-1 (>= 1.0-1) W: fields-build-depends-general source: build-depends-on-versioned-berkeley-db build-depends:libdb5.1++-dev W: fields-build-depends-general source: build-depends-on-versioned-berkeley-db build-depends:libdb5.1-java-dev W: fields-build-depends-general source: depends-on-packaging-dev build-depends lintian-2.5.22ubuntu1/t/tests/fields-build-depends-general/desc0000664000000000000000000000133012314366740021323 0ustar Testname: fields-build-depends-general Sequence: 6000 Version: 1.0 Description: General tests for build dependencies Test-For: build-conflicts-with-build-dependency build-depends-on-1-revision build-depends-on-build-essential build-depends-on-essential-package-without-using-version build-depends-on-metapackage build-depends-on-non-build-package build-depends-on-obsolete-package build-depends-on-python-dev-with-no-arch-any build-depends-on-versioned-berkeley-db conflicting-negation-in-source-relation depends-on-build-essential-package-without-using-version depends-on-packaging-dev invalid-arch-string-in-source-relation ored-build-depends-on-obsolete-package References: Debian Bug#540594, Debian Bug#551793 lintian-2.5.22ubuntu1/t/tests/fields-build-depends-general/debian/0000775000000000000000000000000012077065715021713 5ustar lintian-2.5.22ubuntu1/t/tests/fields-build-depends-general/debian/debian/0000775000000000000000000000000012314366011023120 5ustar lintian-2.5.22ubuntu1/t/tests/fields-build-depends-general/debian/debian/control.in0000664000000000000000000000152612314366011025134 0ustar Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), bd-conflict, revision-1 (>= 1.0-1), bash, make, x-dev, build-essential, new-package | xlibmesa-gl-dev, xorg-dev, java-propose-classpath, python3.2-dev, foo [all], bar [i386 any], baz [source i3!86], baz [i386 !amd64], other-pkg [kfreebsd-any], yet-another [any-powerpc], packaging-dev, libdb5.1++-dev, libdb5.1-java-dev Build-Conflicts: bd-conflict, Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/menu-format-desktop-general/0000775000000000000000000000000012310413146020370 5ustar lintian-2.5.22ubuntu1/t/tests/menu-format-desktop-general/tags0000664000000000000000000000334012310413146021251 0ustar E: menu-format-desktop-general: executable-desktop-file usr/share/applications/general.desktop 0755 I: menu-format-desktop-general: desktop-entry-contains-encoding-key usr/share/applications/general.desktop:7 Encoding I: menu-format-desktop-general: desktop-entry-lacks-keywords-entry usr/share/applications/general.desktop I: menu-format-desktop-general: desktop-entry-limited-to-environments usr/share/applications/environments.desktop W: menu-format-desktop-general: desktop-command-not-in-package usr/share/applications/environments.desktop foo W: menu-format-desktop-general: desktop-command-not-in-package usr/share/applications/general.desktop foo W: menu-format-desktop-general: desktop-command-not-in-package usr/share/applications/reserved-bad.desktop foo W: menu-format-desktop-general: desktop-command-not-in-package usr/share/applications/reserved.desktop foo W: menu-format-desktop-general: desktop-entry-contains-deprecated-key usr/share/applications/general.desktop:10 TerminalOptions W: menu-format-desktop-general: desktop-entry-contains-unknown-key usr/share/applications/general.desktop:6 Foo W: menu-format-desktop-general: desktop-entry-file-has-crs usr/share/applications/crlf.desktop:1 W: menu-format-desktop-general: desktop-entry-invalid-category Lintian usr/share/applications/general.desktop W: menu-format-desktop-general: desktop-entry-lacks-main-category usr/share/applications/general.desktop W: menu-format-desktop-general: desktop-entry-uses-reserved-category Screensaver usr/share/applications/reserved-bad.desktop W: menu-format-desktop-general: duplicated-key-in-desktop-entry usr/share/applications/general.desktop:3 Name W: menu-format-desktop-general: executable-not-elf-or-script usr/share/applications/general.desktop lintian-2.5.22ubuntu1/t/tests/menu-format-desktop-general/desc0000664000000000000000000000105012310413146021225 0ustar Testname: menu-format-desktop-general Sequence: 6000 Version: 1.0 Description: Test desktop file tags Test-For: desktop-command-not-in-package desktop-entry-contains-deprecated-key desktop-entry-contains-encoding-key desktop-entry-contains-unknown-key desktop-entry-file-has-crs desktop-entry-invalid-category desktop-entry-lacks-keywords-entry desktop-entry-lacks-main-category desktop-entry-limited-to-environments desktop-entry-uses-reserved-category duplicated-key-in-desktop-entry executable-desktop-file References: Debian Bug#537737 lintian-2.5.22ubuntu1/t/tests/menu-format-desktop-general/debian/0000775000000000000000000000000012310413146021612 5ustar lintian-2.5.22ubuntu1/t/tests/menu-format-desktop-general/debian/reserved.desktop0000664000000000000000000000024312310413146025023 0ustar [Desktop Entry] Name=reserved Comment=Entry in a reserved category (correct) Type=Application Categories=Screensaver; Exec=foo OnlyShowIn=GNOME;KDE; Keywords=Blur lintian-2.5.22ubuntu1/t/tests/menu-format-desktop-general/debian/crlf.desktop0000664000000000000000000000021712310413146024133 0ustar [Desktop Entry] Name=general Comment=An entirely correct desktop entry Type=Application Categories=Development;Building; Keywords=Foobar lintian-2.5.22ubuntu1/t/tests/menu-format-desktop-general/debian/missing.desktop0000664000000000000000000000014012077065715024670 0ustar [Desktop Entry] Name=foo Comment=This entry has no Application Categories=Development; Exec=foo lintian-2.5.22ubuntu1/t/tests/menu-format-desktop-general/debian/general.desktop0000664000000000000000000000032012310413146024615 0ustar [Desktop Entry] Name=general Name=general Comment=Various general errors Type=Application Foo=Bar Encoding=UTF-8 Categories=Building;Lintian; Terminal=true TerminalOptions=-g 80x25 Exec=foo #missing Keywords lintian-2.5.22ubuntu1/t/tests/menu-format-desktop-general/debian/environments.desktop0000664000000000000000000000025712310413146025740 0ustar [Desktop Entry] Name=environments Type=Application Comment=Incorrectly limited to particular environments Categories=Development; Exec=foo OnlyShowIn=GNOME;KDE; Keywords=Golf lintian-2.5.22ubuntu1/t/tests/menu-format-desktop-general/debian/reserved-bad.desktop0000664000000000000000000000021612310413146025547 0ustar [Desktop Entry] Name=reserved Comment=Entry in a reserved category (incorrect) Type=Application Categories=Screensaver; Exec=foo Keywords=Fun lintian-2.5.22ubuntu1/t/tests/menu-format-desktop-general/debian/debian/0000775000000000000000000000000012077065715023053 5ustar lintian-2.5.22ubuntu1/t/tests/menu-format-desktop-general/debian/debian/install0000664000000000000000000000041012077065715024437 0ustar crlf.desktop usr/share/applications environments.desktop usr/share/applications general.desktop usr/share/applications missing.desktop usr/share/applications reserved-bad.desktop usr/share/applications reserved.desktop usr/share/applications lintian-2.5.22ubuntu1/t/tests/menu-format-desktop-general/debian/debian/rules0000775000000000000000000000024212077065715024131 0ustar #!/usr/bin/make -f pkg = $(shell dh_listpackages) %: dh $@ override_dh_fixperms: dh_fixperms chmod a+x debian/$(pkg)/usr/share/applications/general.desktop lintian-2.5.22ubuntu1/t/tests/debconf-is-not-registry/0000775000000000000000000000000012310413144017527 5ustar lintian-2.5.22ubuntu1/t/tests/debconf-is-not-registry/pre_build0000775000000000000000000000011012310413144021412 0ustar #!/bin/sh DIR="$1" make --silent -C "$DIR" -f "$DIR/gen-source.mk" all lintian-2.5.22ubuntu1/t/tests/debconf-is-not-registry/tags0000664000000000000000000000011712310413144020407 0ustar W: debconf-is-not-registry: debconf-is-not-a-registry usr/share/lintian/script lintian-2.5.22ubuntu1/t/tests/debconf-is-not-registry/desc0000664000000000000000000000022412310413144020366 0ustar Testname: debconf-is-not-registry Sequence: 6000 Version: 1.0 Description: Test for using debconf as a registry Test-For: debconf-is-not-a-registry lintian-2.5.22ubuntu1/t/tests/debconf-is-not-registry/debian/0000775000000000000000000000000012310413206020750 5ustar lintian-2.5.22ubuntu1/t/tests/debconf-is-not-registry/debian/gen-source.mk0000775000000000000000000000015012310413144023350 0ustar #!/usr/bin/make -f all: debian/config debian/config: debian/templates perl config-gen.pl < $< > $@ lintian-2.5.22ubuntu1/t/tests/debconf-is-not-registry/debian/script0000775000000000000000000000011412310413144022177 0ustar #!/bin/sh . /usr/share/debconf/confmodule db_get debconf/translated db_go lintian-2.5.22ubuntu1/t/tests/debconf-is-not-registry/debian/config-gen.pl0000664000000000000000000000117212310413206023322 0ustar #!/usr/bin/perl # Helper script to generate d/config from d/templates. # It is just here to make sure all templates are "used". use strict; use warnings; use lib "$ENV{'LINTIAN_TEST_ROOT'}/lib"; use Lintian::Util qw(visit_dpkg_paragraph :constants); print <{'template'}; # Some of them will not have a name, so skip those. return unless $template; print "db_input high $template || true\n"; print "db_go\n\n"; } lintian-2.5.22ubuntu1/t/tests/debconf-is-not-registry/debian/debian/0000775000000000000000000000000012310413144022173 5ustar lintian-2.5.22ubuntu1/t/tests/debconf-is-not-registry/debian/debian/install0000664000000000000000000000003112310413144023556 0ustar script usr/share/lintian lintian-2.5.22ubuntu1/t/tests/debconf-is-not-registry/debian/debian/templates0000664000000000000000000000010512310413144024110 0ustar Template: debconf/translated Type: error _Description: Useless note lintian-2.5.22ubuntu1/t/tests/debconf-is-not-registry/debian/debian/po/0000775000000000000000000000000012310413144022611 5ustar lintian-2.5.22ubuntu1/t/tests/debconf-is-not-registry/debian/debian/po/da.po0000664000000000000000000000133612310413144023540 0ustar # Danish translations for PACKAGE package. # Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Niels Thykier , 2012. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-07-25 11:04+0200\n" "PO-Revision-Date: 2012-07-23 23:08+0200\n" "Last-Translator: Niels Thykier \n" "Language-Team: Danish\n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. Type: error #. Description #: ../templates:1001 msgid "Useless note" msgstr "Ubrugelig note" lintian-2.5.22ubuntu1/t/tests/debconf-is-not-registry/debian/debian/po/templates.pot0000664000000000000000000000123212310413144025331 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-07-25 11:04+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #. Type: error #. Description #: ../templates:1001 msgid "Useless note" msgstr "" lintian-2.5.22ubuntu1/t/tests/debconf-is-not-registry/debian/debian/po/POTFILES.in0000664000000000000000000000004412310413144024364 0ustar [type: gettext/rfc822deb] templates lintian-2.5.22ubuntu1/t/tests/debconf-is-not-registry/debian/debian/postinst0000664000000000000000000000010112310413144023771 0ustar #!/bin/sh set -e #DEBHELPER# . /usr/share/debconf/confmodule lintian-2.5.22ubuntu1/t/tests/rules-symlink/0000775000000000000000000000000012077065715015711 5ustar lintian-2.5.22ubuntu1/t/tests/rules-symlink/pre_build0000775000000000000000000000014612077065715017605 0ustar #!/bin/sh # Create d/rules as a symlink. ROOT_DIR="$1" ln -fs rules.real "${ROOT_DIR}/debian/rules" lintian-2.5.22ubuntu1/t/tests/rules-symlink/tags0000664000000000000000000000006112077065715016567 0ustar W: rules-symlink source: debian-rules-is-symlink lintian-2.5.22ubuntu1/t/tests/rules-symlink/desc0000664000000000000000000000021212077065715016545 0ustar Testname: rules-symlink Sequence: 6000 Version: 1.0 Description: Test for debian/rules being a symlink Test-For: debian-rules-is-symlink lintian-2.5.22ubuntu1/t/tests/rules-symlink/debian/0000775000000000000000000000000012077065715017133 5ustar lintian-2.5.22ubuntu1/t/tests/rules-symlink/debian/debian/0000775000000000000000000000000012077065715020355 5ustar lintian-2.5.22ubuntu1/t/tests/rules-symlink/debian/debian/rules.real0000664000000000000000000000003612077065715022353 0ustar #!/usr/bin/make -f %: dh $@ lintian-2.5.22ubuntu1/t/tests/lintian-no-override/0000775000000000000000000000000012077065715016760 5ustar lintian-2.5.22ubuntu1/t/tests/lintian-no-override/tags0000664000000000000000000000007112077065715017637 0ustar W: lintian-no-override: non-standard-dir-in-usr usr/bad/ lintian-2.5.22ubuntu1/t/tests/lintian-no-override/desc0000664000000000000000000000016612077065715017624 0ustar Testname: lintian-no-override Sequence: 1500 Version: 1.0 Description: Test no-override option Options: --no-override lintian-2.5.22ubuntu1/t/tests/lintian-no-override/debian/0000775000000000000000000000000012077065715020202 5ustar lintian-2.5.22ubuntu1/t/tests/lintian-no-override/debian/debian/0000775000000000000000000000000012077065715021424 5ustar ././@LongLink0000644000000000000000000000014600000000000011604 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/lintian-no-override/debian/debian/lintian-no-override.lintian-overrideslintian-2.5.22ubuntu1/t/tests/lintian-no-override/debian/debian/lintian-no-override.lintian-override0000664000000000000000000000004112077065715030501 0ustar non-standard-dir-in-usr usr/bad/ lintian-2.5.22ubuntu1/t/tests/lintian-no-override/debian/debian/dirs0000664000000000000000000000001412077065715022303 0ustar usr/bad/dir lintian-2.5.22ubuntu1/t/tests/ocaml-general/0000775000000000000000000000000012077065715015601 5ustar lintian-2.5.22ubuntu1/t/tests/ocaml-general/tags0000664000000000000000000000155112077065715016464 0ustar E: libocaml-general-ocaml-dev: ocaml-dangling-cmx usr/lib/ocaml/symbol2.cmx E: libocaml-general-ocaml: ocaml-dangling-cmx usr/lib/ocaml/symbol.cmx E: libocaml-general-ocaml: ocaml-dangling-cmxa usr/lib/ocaml/foo.cmxa I: libocaml-general-ocaml-dev: ocaml-dangling-cmi 2 more files not shown I: libocaml-general-ocaml-dev: ocaml-dangling-cmi usr/lib/foo.cmi I: libocaml-general-ocaml-dev: ocaml-dangling-cmi usr/lib/ocaml/bar.cmi I: libocaml-general-ocaml-dev: ocaml-dangling-cmi usr/lib/ocaml/baz.cmi I: libocaml-general-ocaml-dev: ocaml-stray-cmo usr/lib/ocaml/bleh.cma P: libocaml-general-ocaml-dev: ocaml-dev-file-not-in-usr-lib-ocaml 1 file in usr/lib P: libocaml-general-ocaml-dev: ocaml-meta-without-suggesting-findlib P: libocaml-general-ocaml: ocaml-dev-file-in-nondev-package 2 files in usr/lib W: libocaml-general-ocaml: ocaml-dangling-cmxs usr/lib/ocaml/bar.cmxs lintian-2.5.22ubuntu1/t/tests/ocaml-general/desc0000664000000000000000000000060612077065715016444 0ustar Testname: ocaml-general Sequence: 6000 Version: 1.0 Skeleton: pedantic Options: -I -E --pedantic Architecture: any Section: ocaml Description: Test the OCaml-related tags Test-For: ocaml-dev-file-in-nondev-package ocaml-dev-file-not-in-usr-lib-ocaml ocaml-dangling-cmi ocaml-dangling-cmx ocaml-dangling-cmxa ocaml-dangling-cmxs ocaml-meta-without-suggesting-findlib ocaml-stray-cmo lintian-2.5.22ubuntu1/t/tests/ocaml-general/debian/0000775000000000000000000000000012077065715017023 5ustar lintian-2.5.22ubuntu1/t/tests/ocaml-general/debian/symbol.c0000664000000000000000000000004412077065715020472 0ustar int symbol(void) { return 42; } lintian-2.5.22ubuntu1/t/tests/ocaml-general/debian/Makefile0000664000000000000000000000032112077065715020457 0ustar # A simple makefile to build a *.o file and a *.a file to install to test # the OCaml checks for dangling *.cmx files. all: symbol.a symbol-dev.a %.a: %.o ar rv $@ $< symbol-dev.o: symbol.c cc -c $< -o $@ lintian-2.5.22ubuntu1/t/tests/ocaml-general/debian/debian/0000775000000000000000000000000012310413206020223 5ustar lintian-2.5.22ubuntu1/t/tests/ocaml-general/debian/debian/control.in0000664000000000000000000000165212310413206022237 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: libocaml-general-ocaml Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: OCaml library package for tests This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . A library package for OCaml checks. Package: libocaml-general-ocaml-dev Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: OCaml dev package for tests This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . A development package for OCaml checks. lintian-2.5.22ubuntu1/t/tests/ocaml-general/debian/debian/rules0000775000000000000000000000172112077065715021326 0ustar #!/usr/bin/make -f export DH_VERBOSE=1 %: dh $@ override_dh_installdirs: dh_installdirs touch debian/libocaml-general-ocaml/usr/lib/ocaml/foo.cmxa touch debian/libocaml-general-ocaml/usr/lib/ocaml/bar.cmxs touch debian/libocaml-general-ocaml/usr/lib/ocaml/symbol.cmx touch debian/libocaml-general-ocaml-dev/usr/lib/ocaml/foo.cmi touch debian/libocaml-general-ocaml-dev/usr/lib/ocaml/bar.cmi touch debian/libocaml-general-ocaml-dev/usr/lib/ocaml/baz.cmi touch debian/libocaml-general-ocaml-dev/usr/lib/ocaml/boo.cmi touch debian/libocaml-general-ocaml-dev/usr/lib/ocaml/symbol2.cmx touch debian/libocaml-general-ocaml-dev/usr/lib/ocaml/symbol-dev.cmx touch debian/libocaml-general-ocaml-dev/usr/lib/ocaml/bleh.cmo touch debian/libocaml-general-ocaml-dev/usr/lib/ocaml/bleh.cma touch debian/libocaml-general-ocaml-dev/usr/lib/ocaml/META echo foo > debian/libocaml-general-ocaml-dev/usr/lib/ocaml/libbaz.a touch debian/libocaml-general-ocaml-dev/usr/lib/foo.cmi lintian-2.5.22ubuntu1/t/tests/ocaml-general/debian/debian/libocaml-general-ocaml-dev.install0000664000000000000000000000003312077065715026673 0ustar symbol-dev.a usr/lib/ocaml lintian-2.5.22ubuntu1/t/tests/ocaml-general/debian/debian/libocaml-general-ocaml.dirs0000664000000000000000000000001612077065715025413 0ustar usr/lib/ocaml lintian-2.5.22ubuntu1/t/tests/ocaml-general/debian/debian/libocaml-general-ocaml-dev.dirs0000664000000000000000000000001612077065715026167 0ustar usr/lib/ocaml lintian-2.5.22ubuntu1/t/tests/basic-non-native/0000775000000000000000000000000012310413205016205 5ustar lintian-2.5.22ubuntu1/t/tests/basic-non-native/tags0000664000000000000000000000000012077065714017076 0ustar lintian-2.5.22ubuntu1/t/tests/basic-non-native/desc0000664000000000000000000000017212077065714017070 0ustar Testname: basic-non-native Sequence: 0001 Type: non-native Version: 1.0-1 Description: Basic test of a non-native package lintian-2.5.22ubuntu1/t/tests/fields-redundant/0000775000000000000000000000000012077065715016323 5ustar lintian-2.5.22ubuntu1/t/tests/fields-redundant/tags0000664000000000000000000000021112077065715017176 0ustar W: fields-redundant source: redundant-origin-field W: fields-redundant: redundant-bugs-field W: fields-redundant: redundant-origin-field lintian-2.5.22ubuntu1/t/tests/fields-redundant/desc0000664000000000000000000000023312077065715017162 0ustar Testname: fields-redundant Sequence: 6000 Version: 1.0 Description: General tests redundant fields Test-For: redundant-bugs-field redundant-origin-field lintian-2.5.22ubuntu1/t/tests/fields-redundant/debian/0000775000000000000000000000000012077065715017545 5ustar lintian-2.5.22ubuntu1/t/tests/fields-redundant/debian/some-file0000664000000000000000000000021312077065715021344 0ustar This file is installed into /usr/share/lintian just to ensure that this package doesn't look like a metapackage for the dependency checks. lintian-2.5.22ubuntu1/t/tests/fields-redundant/debian/debian/0000775000000000000000000000000012310413206020745 5ustar lintian-2.5.22ubuntu1/t/tests/fields-redundant/debian/debian/install0000664000000000000000000000003412077065715022355 0ustar some-file usr/share/lintian lintian-2.5.22ubuntu1/t/tests/fields-redundant/debian/debian/control.in0000664000000000000000000000077712310413206022770 0ustar Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Bugs: debbugs://bugs.debian.org/ Origin: debian Package: {$source} Architecture: all Depends: $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/control-file-symlink/0000775000000000000000000000000012077065714017153 5ustar lintian-2.5.22ubuntu1/t/tests/control-file-symlink/pre_build0000775000000000000000000000021412077065714021043 0ustar #!/bin/sh ROOT_DIR="$1" mv "${ROOT_DIR}/debian/control" "${ROOT_DIR}/debian/control.real" ln -s control.real "${ROOT_DIR}/debian/control" lintian-2.5.22ubuntu1/t/tests/control-file-symlink/tags0000664000000000000000000000010112077065714020024 0ustar W: control-file-symlink source: debian-control-file-is-a-symlink lintian-2.5.22ubuntu1/t/tests/control-file-symlink/desc0000664000000000000000000000023012077065714020007 0ustar Testname: control-file-symlink Sequence: 6000 Version: 1.0 Description: Test if debian/control is a symlink Test-For: debian-control-file-is-a-symlink lintian-2.5.22ubuntu1/t/tests/debconf-templates-general/0000775000000000000000000000000012310413144020061 5ustar lintian-2.5.22ubuntu1/t/tests/debconf-templates-general/pre_build0000775000000000000000000000011012310413144021744 0ustar #!/bin/sh DIR="$1" make --silent -C "$DIR" -f "$DIR/gen-source.mk" all lintian-2.5.22ubuntu1/t/tests/debconf-templates-general/tags0000664000000000000000000000400612310413144020742 0ustar E: debconf-templates-general: boolean-template-has-bogus-default debconf/boolean-bogus-default lintian E: debconf-templates-general: empty-translated-choices debconf/select-empty-trans-choices choices-da E: debconf-templates-general: malformed-template-name debconf-malformed-template E: debconf-templates-general: mismatch-translated-choices debconf/select-empty-trans-choices choices-da E: debconf-templates-general: no-template-description debconf/no-description E: debconf-templates-general: no-template-name E: debconf-templates-general: no-template-type debconf/no-type E: debconf-templates-general: select-without-choices debconf/select-without-choices E: debconf-templates-general: unknown-field-in-templates debconf/unknown-field unknown-field E: debconf-templates-general: unknown-template-type lintian W: debconf-templates-general source: debconf-translation-using-general-list en_US.po W: debconf-templates-general source: template-uses-unsplit-choices debconf-templates-general - debconf/unsplit-choices W: debconf-templates-general: duplicate-long-description-in-template debconf/duplicate-long-desc W: debconf-templates-general: making-assumptions-about-interfaces-in-templates debconf/assumption W: debconf-templates-general: malformed-prompt-in-templates debconf/malformed-prompt W: debconf-templates-general: malformed-question-in-templates debconf/malformed-question W: debconf-templates-general: malformed-title-in-templates debconf/malformed-note-title W: debconf-templates-general: select-with-boolean-choices debconf/select-boolean-choice W: debconf-templates-general: too-long-extended-description-in-templates debconf/5-green-bottles-on-the-wall W: debconf-templates-general: too-long-short-description-in-templates debconf/too-long-short-desc W: debconf-templates-general: using-first-person-in-templates debconf/first-person W: debconf-templates-general: using-imperative-form-in-templates debconf/imperative-select W: debconf-templates-general: using-question-in-extended-description-in-templates debconf/question-in-extended lintian-2.5.22ubuntu1/t/tests/debconf-templates-general/desc0000664000000000000000000000154712310413144020731 0ustar Testname: debconf-templates-general Sequence: 6000 Version: 1.0 Description: Test for various debconf template issues Test-For: boolean-template-has-bogus-default debconf-translation-using-general-list duplicate-long-description-in-template empty-translated-choices making-assumptions-about-interfaces-in-templates malformed-prompt-in-templates malformed-question-in-templates malformed-template-name malformed-title-in-templates mismatch-translated-choices no-template-description no-template-name no-template-type select-with-boolean-choices select-without-choices template-uses-unsplit-choices too-long-extended-description-in-templates too-long-short-description-in-templates unknown-field-in-templates unknown-template-type using-first-person-in-templates using-imperative-form-in-templates using-question-in-extended-description-in-templates lintian-2.5.22ubuntu1/t/tests/debconf-templates-general/debian/0000775000000000000000000000000012310413206021302 5ustar lintian-2.5.22ubuntu1/t/tests/debconf-templates-general/debian/gen-source.mk0000775000000000000000000000015012310413144023702 0ustar #!/usr/bin/make -f all: debian/config debian/config: debian/templates perl config-gen.pl < $< > $@ lintian-2.5.22ubuntu1/t/tests/debconf-templates-general/debian/config-gen.pl0000664000000000000000000000117212310413206023654 0ustar #!/usr/bin/perl # Helper script to generate d/config from d/templates. # It is just here to make sure all templates are "used". use strict; use warnings; use lib "$ENV{'LINTIAN_TEST_ROOT'}/lib"; use Lintian::Util qw(visit_dpkg_paragraph :constants); print <{'template'}; # Some of them will not have a name, so skip those. return unless $template; print "db_input high $template || true\n"; print "db_go\n\n"; } lintian-2.5.22ubuntu1/t/tests/debconf-templates-general/debian/debian/0000775000000000000000000000000012310413144022525 5ustar lintian-2.5.22ubuntu1/t/tests/debconf-templates-general/debian/debian/templates0000664000000000000000000000611512310413144024451 0ustar Template: debconf/translated Type: error _Description: Useless note Template: debconf/unsplit-choices Type: select _Choices: left, right, up, down _Description: Pick the odd one out Type: text _Description: Missing template field. Template: debconf-malformed-template Type: boolean _Description: Is this a bad template? Template: debconf/no-type _Description: Missing type Template: debconf/unknown-type Type: lintian _Description: Template with unknown type Template: debconf/boolean-bogus-default Type: boolean Default: lintian _Description: How do you like the default? On a scale of "false" to "true". Template: debconf/select-boolean-choice Type: select Choices: yes, no _Description: A boolean type would have been better Template: debconf/select-empty-trans-choices Type: select Choices: sakana, sake Choices-Da: _Description: Preference Template: debconf/select-without-choices Type: select _Description: Missing a Choices field Template: debconf/no-description Type: error Template: debconf/duplicate-long-desc Type: error _Description: Duplicate long description Duplicate long description Template: debconf/unknown-field Type: boolean _Description: Is the field below unknown? Unknown-field: yes, it is. Template: debconf/malformed-prompt Type: string _Description: What is the name of this package checker: Template: debconf/imperative-select Type: select Choices: x,y _Description: Select either x or y Template: debconf/malformed-question Type: boolean _Description: Lintian is the best! Template: debconf/question-in-extended Type: boolean _Description: Do you like sakana? Or do you prefer sake? Template: debconf/malformed-note-title Type: note _Description: Aren't you tired of all these debconf prompts? Template: debconf/too-long-short-desc Type: boolean _Description: This template has a very long short description, is that what you call an oxymoron? Template: debconf/first-person Type: select Choices: lintian, no-lintian _Description: I think Lintian is the best Template: debconf/assumption Type: boolean _Description: Do you like Lintian? Pick "yes" if you do. Template: debconf/5-green-bottles-on-the-wall Type: string _Description: Name the title of this song: Five green bottles sitting on the wall, Five green bottles sitting on the wall, And if one green bottle should accidentally fall, There'll be four green bottles sitting on the wall. . Four green bottles sitting on the wall, Four green bottles sitting on the wall, And if one green bottle should accidentally fall, There'll be three green bottles sitting on the wall. . Three green bottles sitting on the wall, Three green bottles sitting on the wall, And if one green bottle should accidentally fall, There'll be two green bottles sitting on the wall. . Two green bottles sitting on the wall, Two green bottles sitting on the wall, And if one green bottle should accidentally fall, There'll be one green bottle sitting on the wall. . One green bottle sitting on the wall, One green bottle sitting on the wall, And if one green bottle should accidentally fall, There'll be no green bottles sitting on the wall. lintian-2.5.22ubuntu1/t/tests/debconf-templates-general/debian/debian/po/0000775000000000000000000000000012310413144023143 5ustar lintian-2.5.22ubuntu1/t/tests/debconf-templates-general/debian/debian/po/en.po0000664000000000000000000001371612310413144024115 0ustar # English translations for PACKAGE package. # Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Niels Thykier , 2012. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-10-01 22:54+0200\n" "PO-Revision-Date: 2012-10-01 22:54+0200\n" "Last-Translator: Niels Thykier \n" "Language-Team: English\n" "Language: en_US\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #. Type: error #. Description #: ../templates:1001 msgid "Useless note" msgstr "Useless note" #. Type: select #. Choices #: ../templates:2001 msgid "left, right, up, down" msgstr "left, right, up, down" #. Type: select #. Description #: ../templates:2002 msgid "Pick the odd one out" msgstr "Pick the odd one out" #. Type: text #. Description #: ../templates:3001 msgid "Missing template field." msgstr "Missing template field." #. Type: boolean #. Description #: ../templates:4001 msgid "Is this a bad template?" msgstr "Is this a bad template?" #. Type: boolean #. Description #: ../templates:5001 msgid "Missing type" msgstr "Missing type" #. Type: lintian #. Description #: ../templates:6001 msgid "Template with unknown type" msgstr "Template with unknown type" #. Type: boolean #. Description #: ../templates:7001 msgid "How do you like the default?" msgstr "How do you like the default?" #. Type: boolean #. Description #: ../templates:7001 msgid "On a scale of \"false\" to \"true\"." msgstr "On a scale of \"false\" to \"true\"." #. Type: select #. Description #: ../templates:8001 msgid "A boolean type would have been better" msgstr "A boolean type would have been better" #. Type: select #. Description #: ../templates:9001 msgid "Preference" msgstr "Preference" #. Type: select #. Description #: ../templates:10001 msgid "Missing a Choices field" msgstr "Missing a Choices field" #. Type: error #. Description #. Type: error #. Description #: ../templates:12001 msgid "Duplicate long description" msgstr "Duplicate long description" #. Type: boolean #. Description #: ../templates:13001 msgid "Is the field below unknown?" msgstr "Is the field below unknown?" #. Type: string #. Description #: ../templates:14001 msgid "What is the name of this package checker:" msgstr "What is the name of this package checker:" #. Type: select #. Description #: ../templates:15001 msgid "Select either x or y" msgstr "Select either x or y" #. Type: boolean #. Description #: ../templates:16001 msgid "Lintian is the best!" msgstr "Lintian is the best!" #. Type: boolean #. Description #: ../templates:17001 msgid "Do you like sakana?" msgstr "Do you like sakana?" #. Type: boolean #. Description #: ../templates:17001 msgid "Or do you prefer sake?" msgstr "Or do you prefer sake?" #. Type: note #. Description #: ../templates:18001 msgid "Aren't you tired of all these debconf prompts?" msgstr "Aren't you tired of all these debconf prompts?" #. Type: boolean #. Description #: ../templates:19001 msgid "" "This template has a very long short description, is that what you call an " "oxymoron?" msgstr "" "This template has a very long short description, is that what you call an " "oxymoron?" #. Type: select #. Description #: ../templates:20001 msgid "I think Lintian is the best" msgstr "I think Lintian is the best" #. Type: boolean #. Description #: ../templates:21001 msgid "Do you like Lintian?" msgstr "Do you like Lintian?" #. Type: boolean #. Description #: ../templates:21001 msgid "Pick \"yes\" if you do." msgstr "Pick \"yes\" if you do." #. Type: string #. Description #: ../templates:22001 msgid "Name the title of this song:" msgstr "Name the title of this song:" #. Type: string #. Description #: ../templates:22001 msgid "" "Five green bottles sitting on the wall, Five green bottles sitting on the " "wall, And if one green bottle should accidentally fall, There'll be four " "green bottles sitting on the wall." msgstr "" "Five green bottles sitting on the wall, Five green bottles sitting on the " "wall, And if one green bottle should accidentally fall, There'll be four " "green bottles sitting on the wall." #. Type: string #. Description #: ../templates:22001 msgid "" "Four green bottles sitting on the wall, Four green bottles sitting on the " "wall, And if one green bottle should accidentally fall, There'll be three " "green bottles sitting on the wall." msgstr "" "Four green bottles sitting on the wall, Four green bottles sitting on the " "wall, And if one green bottle should accidentally fall, There'll be three " "green bottles sitting on the wall." #. Type: string #. Description #: ../templates:22001 msgid "" "Three green bottles sitting on the wall, Three green bottles sitting on the " "wall, And if one green bottle should accidentally fall, There'll be two " "green bottles sitting on the wall." msgstr "" "Three green bottles sitting on the wall, Three green bottles sitting on the " "wall, And if one green bottle should accidentally fall, There'll be two " "green bottles sitting on the wall." #. Type: string #. Description #: ../templates:22001 msgid "" "Two green bottles sitting on the wall, Two green bottles sitting on the " "wall, And if one green bottle should accidentally fall, There'll be one " "green bottle sitting on the wall." msgstr "" "Two green bottles sitting on the wall, Two green bottles sitting on the " "wall, And if one green bottle should accidentally fall, There'll be one " "green bottle sitting on the wall." #. Type: string #. Description #: ../templates:22001 msgid "" "One green bottle sitting on the wall, One green bottle sitting on the wall, " "And if one green bottle should accidentally fall, There'll be no green " "bottles sitting on the wall." msgstr "" "One green bottle sitting on the wall, One green bottle sitting on the wall, " "And if one green bottle should accidentally fall, There'll be no green " "bottles sitting on the wall." lintian-2.5.22ubuntu1/t/tests/debconf-templates-general/debian/debian/po/en_US.po0000664000000000000000000000123412310413144024514 0ustar # English translations for PACKAGE package. # Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Niels Thykier , 2012. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-10-01 22:54+0200\n" "PO-Revision-Date: 2012-10-01 22:54+0200\n" "Last-Translator: Russ Allbery \n" "Language-Team: English \n" "Language: en_US\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=ASCII\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" lintian-2.5.22ubuntu1/t/tests/debconf-templates-general/debian/debian/po/templates.pot0000664000000000000000000001047612310413144025675 0ustar # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-10-01 22:54+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #. Type: error #. Description #: ../templates:1001 msgid "Useless note" msgstr "" #. Type: select #. Choices #: ../templates:2001 msgid "left, right, up, down" msgstr "" #. Type: select #. Description #: ../templates:2002 msgid "Pick the odd one out" msgstr "" #. Type: text #. Description #: ../templates:3001 msgid "Missing template field." msgstr "" #. Type: boolean #. Description #: ../templates:4001 msgid "Is this a bad template?" msgstr "" #. Type: boolean #. Description #: ../templates:5001 msgid "Missing type" msgstr "" #. Type: lintian #. Description #: ../templates:6001 msgid "Template with unknown type" msgstr "" #. Type: boolean #. Description #: ../templates:7001 msgid "How do you like the default?" msgstr "" #. Type: boolean #. Description #: ../templates:7001 msgid "On a scale of \"false\" to \"true\"." msgstr "" #. Type: select #. Description #: ../templates:8001 msgid "A boolean type would have been better" msgstr "" #. Type: select #. Description #: ../templates:9001 msgid "Preference" msgstr "" #. Type: select #. Description #: ../templates:10001 msgid "Missing a Choices field" msgstr "" #. Type: error #. Description #. Type: error #. Description #: ../templates:12001 msgid "Duplicate long description" msgstr "" #. Type: boolean #. Description #: ../templates:13001 msgid "Is the field below unknown?" msgstr "" #. Type: string #. Description #: ../templates:14001 msgid "What is the name of this package checker:" msgstr "" #. Type: select #. Description #: ../templates:15001 msgid "Select either x or y" msgstr "" #. Type: boolean #. Description #: ../templates:16001 msgid "Lintian is the best!" msgstr "" #. Type: boolean #. Description #: ../templates:17001 msgid "Do you like sakana?" msgstr "" #. Type: boolean #. Description #: ../templates:17001 msgid "Or do you prefer sake?" msgstr "" #. Type: note #. Description #: ../templates:18001 msgid "Aren't you tired of all these debconf prompts?" msgstr "" #. Type: boolean #. Description #: ../templates:19001 msgid "" "This template has a very long short description, is that what you call an " "oxymoron?" msgstr "" #. Type: select #. Description #: ../templates:20001 msgid "I think Lintian is the best" msgstr "" #. Type: boolean #. Description #: ../templates:21001 msgid "Do you like Lintian?" msgstr "" #. Type: boolean #. Description #: ../templates:21001 msgid "Pick \"yes\" if you do." msgstr "" #. Type: string #. Description #: ../templates:22001 msgid "Name the title of this song:" msgstr "" #. Type: string #. Description #: ../templates:22001 msgid "" "Five green bottles sitting on the wall, Five green bottles sitting on the " "wall, And if one green bottle should accidentally fall, There'll be four " "green bottles sitting on the wall." msgstr "" #. Type: string #. Description #: ../templates:22001 msgid "" "Four green bottles sitting on the wall, Four green bottles sitting on the " "wall, And if one green bottle should accidentally fall, There'll be three " "green bottles sitting on the wall." msgstr "" #. Type: string #. Description #: ../templates:22001 msgid "" "Three green bottles sitting on the wall, Three green bottles sitting on the " "wall, And if one green bottle should accidentally fall, There'll be two " "green bottles sitting on the wall." msgstr "" #. Type: string #. Description #: ../templates:22001 msgid "" "Two green bottles sitting on the wall, Two green bottles sitting on the " "wall, And if one green bottle should accidentally fall, There'll be one " "green bottle sitting on the wall." msgstr "" #. Type: string #. Description #: ../templates:22001 msgid "" "One green bottle sitting on the wall, One green bottle sitting on the wall, " "And if one green bottle should accidentally fall, There'll be no green " "bottles sitting on the wall." msgstr "" lintian-2.5.22ubuntu1/t/tests/debconf-templates-general/debian/debian/po/POTFILES.in0000664000000000000000000000004412310413144024716 0ustar [type: gettext/rfc822deb] templates lintian-2.5.22ubuntu1/t/tests/debconf-templates-general/debian/debian/postinst0000664000000000000000000000010112310413144024323 0ustar #!/bin/sh set -e #DEBHELPER# . /usr/share/debconf/confmodule lintian-2.5.22ubuntu1/t/tests/fields-version-bad-rc/0000775000000000000000000000000012310413205017127 5ustar lintian-2.5.22ubuntu1/t/tests/fields-version-bad-rc/tags0000664000000000000000000000033312077065715020032 0ustar W: fields-version-bad-rc source: rc-version-greater-than-expected-version 1.0+rc3 > 1.0 (consider using 1.0~rc3) W: fields-version-bad-rc: rc-version-greater-than-expected-version 1.0+rc3 > 1.0 (consider using 1.0~rc3) lintian-2.5.22ubuntu1/t/tests/fields-version-bad-rc/desc0000664000000000000000000000026712077065715020020 0ustar Testname: fields-version-bad-rc Sequence: 6000 Version: 1.0+rc3-1 Description: Test for bad release cand. versions Type: non-native Test-For: rc-version-greater-than-expected-version lintian-2.5.22ubuntu1/t/tests/binaries-multiarch/0000775000000000000000000000000012310413144016634 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-multiarch/post_test0000664000000000000000000000007712077065714020627 0ustar s/i386-linux-gnu/x86_64-linux-gnu/ s/is for i386/is for amd64/ lintian-2.5.22ubuntu1/t/tests/binaries-multiarch/tags0000664000000000000000000000000012077065714017523 0ustar lintian-2.5.22ubuntu1/t/tests/binaries-multiarch/desc0000664000000000000000000000027012310413144017474 0ustar Testname: binaries-multiarch Sequence: 6000 Version: 1.0 Description: Test of a correct multiarch package Architecture: i386 amd64 Test-Against: triplet-dir-and-architecture-mismatch lintian-2.5.22ubuntu1/t/tests/binaries-multiarch/debian/0000775000000000000000000000000012310413144020056 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-multiarch/debian/Makefile0000664000000000000000000000123212077065714021534 0ustar # Since dpkg in stable (Squeeze) does not support MULTIARCH we cannot use # dpkg-architecture -qDEB_HOST_MULTIARCH # Therefore this test is hardcoded to x86 and amd64 ARCH=$(shell dpkg-architecture -qDEB_HOST_ARCH) ifeq (i386,$(ARCH)) TRIPLET = i386-linux-gnu else TRIPLET = x86_64-linux-gnu endif all: gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-z,defs -Wl,-soname,libbasic.so.2 -o libbasic.so.2 basic.c install: # install it under the correct triplet directory install -d $(DESTDIR)/usr/lib/$(TRIPLET) install -m 644 -c -s libbasic.so.2 $(DESTDIR)/usr/lib/$(TRIPLET)/libbasic.so.2 clean distclean: rm -f libbasic.so.2 check test: lintian-2.5.22ubuntu1/t/tests/binaries-multiarch/debian/basic.c0000664000000000000000000000045412310413144021306 0ustar #include #include static void hardening_trigger(char *p, int i, void (*f)(char *)) { char test[10]; memcpy(test, p, i); f(test); printf("%s", test); } int lib_interface(void) { printf("Hello world!\n"); hardening_trigger(NULL, 0, NULL); return 0; } lintian-2.5.22ubuntu1/t/tests/binaries-multiarch/debian/debian/0000775000000000000000000000000012310413206021277 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-multiarch/debian/debian/control.in0000664000000000000000000000131212310413206023304 0ustar Source: {$source} Priority: extra Section: libs Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: libbasic2 Architecture: any Pre-Depends: $\{misc:Pre-Depends\}, multiarch-support Depends: $\{misc:Depends\}, $\{shlibs:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . Note there is an explicitly pre-depends on multiarch-support, since older versions of debhelper might not use it yet. dpkg-dev will remove the duplicate entry (if any). lintian-2.5.22ubuntu1/t/tests/binaries-multiarch/debian/debian/libbasic2.symbols0000664000000000000000000000007112077065714024562 0ustar libbasic.so.2 libbasic2 #MINVER# lib_interface@Base 1.0 lintian-2.5.22ubuntu1/t/tests/binaries-multiarch/debian/debian/rules0000664000000000000000000000107012077065714022373 0ustar #!/usr/bin/make -f # Since dpkg in stable (Squeeze) does not support MULTIARCH we cannot use # dpkg-architecture -qDEB_HOST_MULTIARCH # Therefore this test is hardcoded to x86 and amd64 ARCH=$(shell dpkg-architecture -qDEB_HOST_ARCH) ifeq (i386,$(ARCH)) TRIPLET = i386-linux-gnu else TRIPLET = x86_64-linux-gnu endif %: dh $@ override_dh_makeshlibs: # dpkg-dev uses ld.so.conf so if we do not pass the lib directly # this will fail on all x86 machines without with libc6 < 2.13-5 dh_makeshlibs -- -edebian/libbasic2/usr/lib/$(TRIPLET)/libbasic.so.2 lintian-2.5.22ubuntu1/t/tests/changelog-file-missing/0000775000000000000000000000000012310413205017363 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-missing/tags0000664000000000000000000000007112077065714020264 0ustar E: changelog-file-missing: debian-changelog-file-missing lintian-2.5.22ubuntu1/t/tests/changelog-file-missing/desc0000664000000000000000000000025112077065714020244 0ustar Testname: changelog-file-missing Sequence: 6000 Type: non-native Version: 1.0-1 Description: Test if Debian changelog is missing Test-For: debian-changelog-file-missinglintian-2.5.22ubuntu1/t/tests/changelog-file-missing/debian/0000775000000000000000000000000012077065714020627 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-missing/debian/debian/0000775000000000000000000000000012077065714022051 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-missing/debian/debian/rules0000775000000000000000000000016712077065714023135 0ustar #!/usr/bin/make -f %: dh $@ override_dh_md5sums: find debian/*/ -type f -a -name 'changelog*' -delete dh_md5sums lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-debian-changes/0000775000000000000000000000000012314111237021642 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-debian-changes/upstream/0000775000000000000000000000000012077065715023521 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-debian-changes/upstream/a0000664000000000000000000000001412077065715023657 0ustar sample text lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-debian-changes/tags0000664000000000000000000000012212077065715022535 0ustar W: patch-systems-quilt-debian-changes source: format-3.0-but-debian-changes-patch lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-debian-changes/desc0000664000000000000000000000053012314111237022501 0ustar Testname: patch-systems-quilt-debian-changes Sequence: 6000 Version: 1.0-1 Description: Test a 3.0 (quilt) package which has a debian-changes-XXX patch Type: non-native # dpkg-dev in Ubuntu Precise re-writes the patch header and thereby # triggers another tag. Test-Depends: dpkg-dev (>= 1.16.5~) Test-For: format-3.0-but-debian-changes-patch lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-debian-changes/debian/0000775000000000000000000000000012077065715023103 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-debian-changes/debian/debian/0000775000000000000000000000000012077065715024325 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-debian-changes/debian/debian/source/0000775000000000000000000000000012077065715025625 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-debian-changes/debian/debian/source/format0000664000000000000000000000001412077065715027033 0ustar 3.0 (quilt) lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-debian-changes/debian/debian/patches/0000775000000000000000000000000012314100544025734 5ustar ././@LongLink0000644000000000000000000000015400000000000011603 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-debian-changes/debian/debian/patches/debian-changes-1.0-1lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-debian-changes/debian/debian/patches/debian-change0000664000000000000000000000026212314100544030324 0ustar This is a description of the patch --- a/a 2008-11-11 19:38:12.000000000 +0000 +++ a/a 2008-11-11 19:38:26.000000000 +0000 @@ -1 +1,2 @@ sample text +and some more sample text lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-debian-changes/debian/debian/patches/series0000664000000000000000000000002512077065715027166 0ustar debian-changes-1.0-1 lintian-2.5.22ubuntu1/t/tests/nmu-multi-author/0000775000000000000000000000000012310413205016277 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-multi-author/tags0000664000000000000000000000000012077065715017171 0ustar lintian-2.5.22ubuntu1/t/tests/nmu-multi-author/desc0000664000000000000000000000025612077065715017166 0ustar Testname: nmu-multi-author Sequence: 6000 Type: non-native Version: 1.0-1.1 Description: Test an NMU with a multi-author changelog Test-Against: changelog-should-mention-nmu lintian-2.5.22ubuntu1/t/tests/nmu-multi-author/debian/0000775000000000000000000000000012077065715017544 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-multi-author/debian/debian/0000775000000000000000000000000012310413206020744 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-multi-author/debian/debian/changelog.in0000664000000000000000000000034012310413206023220 0ustar {$source} ({$version}) unstable; urgency=low [ Russ Allbery ] * Non-maintainer upload. * Test: {$testname} * Suppress "should close ITP bug" messages. (Closes: #123456) -- Russ Allbery {$date} lintian-2.5.22ubuntu1/t/tests/scripts-calls-init-script/0000775000000000000000000000000012077065715020121 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-calls-init-script/tags0000664000000000000000000000012612077065715021001 0ustar E: scripts-calls-init-script: maintainer-script-calls-init-script-directly postinst:5 lintian-2.5.22ubuntu1/t/tests/scripts-calls-init-script/desc0000664000000000000000000000030212077065715020755 0ustar Testname: scripts-calls-init-script Sequence: 6000 Version: 1.0 Description: Test proper use of invoke-rc.d Test-For: maintainer-script-calls-init-script-directly References: Debian Bug#381485 lintian-2.5.22ubuntu1/t/tests/scripts-calls-init-script/debian/0000775000000000000000000000000012310413146021324 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-calls-init-script/debian/test-first0000775000000000000000000000016612077065715023400 0ustar #!/bin/sh if which invoke-rc.d >/dev/null 2>&1 ; then invoke-rc.d ntp restart else /etc/init.d/ntp restart fi lintian-2.5.22ubuntu1/t/tests/scripts-calls-init-script/debian/other-action0000775000000000000000000000020012077065715023655 0ustar #!/bin/sh # Only supported invoke-rc.d actions are required to go through invoke-rc.d. /etc/init.d/foo frobnicate-the-bazerator lintian-2.5.22ubuntu1/t/tests/scripts-calls-init-script/debian/self-invoke0000775000000000000000000000070312310413146023474 0ustar #!/bin/sh ### BEGIN INIT INFO # Provides: self-invoke # Required-Start: # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Test init script # Description: Test init script. ### END INIT INFO . /lib/lsb/init-functions case "$1" in start) : ;; stop) : ;; restart) /etc/init.d/self-invoke start ;; status) : ;; force-reload) : ;; esac lintian-2.5.22ubuntu1/t/tests/scripts-calls-init-script/debian/bad0000775000000000000000000000004212077065715022013 0ustar #!/bin/sh /etc/init.d/ntp restart lintian-2.5.22ubuntu1/t/tests/scripts-calls-init-script/debian/debian/0000775000000000000000000000000012077065715022565 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-calls-init-script/debian/debian/install0000664000000000000000000000016012077065715024153 0ustar bad /etc/cron.daily other-action /etc/cron.daily test-first /etc/cron.daily self-invoke /etc/init.d lintian-2.5.22ubuntu1/t/tests/scripts-calls-init-script/debian/debian/postinst0000664000000000000000000000015112077065715024370 0ustar #!/bin/sh set -e update-rc.d self-invoke defaults >/dev/null /etc/init.d/self-invoke start #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/scripts-calls-init-script/debian/debian/postrm0000664000000000000000000000015612077065715024036 0ustar #!/bin/sh set -e if [ "remove" = "$1" ] ; then update-rc.d self-invoke remove >/dev/null fi #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/copyright-file-symlink/0000775000000000000000000000000012077065714017503 5ustar lintian-2.5.22ubuntu1/t/tests/copyright-file-symlink/tags0000664000000000000000000000043312077065714020364 0ustar E: symlink-outside-usd: usr-share-doc-symlink-points-outside-of-usr-share-doc ../../lib/symlink-outside-usd/copyright E: symlink-to-foreign: usr-share-doc-symlink-to-foreign-package foreign-package E: symlink-without-depends: usr-share-doc-symlink-without-dependency foreign-package lintian-2.5.22ubuntu1/t/tests/copyright-file-symlink/desc0000664000000000000000000000040312077065714020341 0ustar Testname: copyright-file-symlink Sequence: 6000 Version: 1.0 Description: Test for symlinked doc directories Test-For: usr-share-doc-symlink-points-outside-of-usr-share-doc usr-share-doc-symlink-to-foreign-package usr-share-doc-symlink-without-dependency lintian-2.5.22ubuntu1/t/tests/copyright-file-symlink/debian/0000775000000000000000000000000012077065714020725 5ustar lintian-2.5.22ubuntu1/t/tests/copyright-file-symlink/debian/debian/0000775000000000000000000000000012310413206022126 5ustar lintian-2.5.22ubuntu1/t/tests/copyright-file-symlink/debian/debian/control.in0000664000000000000000000000233212310413206024136 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: symlink-to-foreign Architecture: all Depends: $\{misc:Depends\}, foreign-package Description: {$description} (foreign) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . Foreign. Package: symlink-outside-usd Architecture: all Depends: $\{misc:Depends\} Description: {$description} (usd) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . USD. Package: symlink-without-depends Architecture: all Depends: $\{misc:Depends\} Description: {$description} (no-deepnds) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . Symlinks without dependency. lintian-2.5.22ubuntu1/t/tests/copyright-file-symlink/debian/debian/rules0000664000000000000000000000132212077065714023222 0ustar #!/usr/bin/make -f USD:=usr/share/doc %: dh $@ override_dh_md5sums: rm -fr debian/symlink-to-foreign/$(USD)/symlink-to-foreign ln -sf foreign-package \ debian/symlink-to-foreign/$(USD)/symlink-to-foreign rm -fr debian/symlink-without-depends/$(USD)/symlink-without-depends ln -sf foreign-package \ debian/symlink-without-depends/$(USD)/symlink-without-depends # Move all of it to usr/lib// mkdir -p debian/symlink-outside-usd/usr/lib/ mv debian/symlink-outside-usd/$(USD)/symlink-outside-usd \ debian/symlink-outside-usd/usr/lib/symlink-outside-usd/ # with symlink of course :) ln -s ../../lib/symlink-outside-usd/copyright \ debian/symlink-outside-usd/$(USD)/symlink-outside-usd dh_md5sums lintian-2.5.22ubuntu1/t/tests/phppear-pear/0000775000000000000000000000000012310413146015440 5ustar lintian-2.5.22ubuntu1/t/tests/phppear-pear/upstream/0000775000000000000000000000000012310413146017300 5ustar lintian-2.5.22ubuntu1/t/tests/phppear-pear/upstream/package2.xml0000664000000000000000000000000012310413146021465 0ustar lintian-2.5.22ubuntu1/t/tests/phppear-pear/upstream/package.xml0000664000000000000000000000332212310413146021415 0ustar MyProject_Packages pear.php.net this is a wrapper package for installing dependencies for MyProject <Some random notes> fred fred fred@example.com yes 2009-05-08 0.0.1 0.0.1 alpha alpha LGPL <none> 5.2.1 1.8.0 0.0.1 0.0.1 alpha alpha 2009-05-08 LGPL <none> lintian-2.5.22ubuntu1/t/tests/phppear-pear/tags0000664000000000000000000000174512310413146016330 0ustar I: phppear-pear source: pear-package-not-using-substvar ${phppear:description} I: phppear-pear source: pear-package-not-using-substvar ${phppear:summary} W: phppear-pear source: missing-pkg-php-tools-addon php5 W: phppear-pear source: missing-pkg-php-tools-addon phppear W: phppear-pear source: missing-pkg-php-tools-buildsystem phppear W: phppear-pear source: pear-package-but-missing-dependency Breaks W: phppear-pear source: pear-package-but-missing-dependency Depends W: phppear-pear source: pear-package-but-missing-dependency Recommends W: phppear-pear source: pear-package-feature-requires-newer-pkg-php-tools (>= 1.4~) for package2.xml W: phppear-pear source: pear-package-feature-requires-newer-pkg-php-tools (>= 1.5~) for PECL support W: phppear-pear source: pear-package-feature-requires-newer-pkg-php-tools (>= 1~) for package name overrides W: phppear-pear source: pecl-package-requires-build-dependency dh-php5 W: phppear-pear source: pecl-package-requires-build-dependency php5-dev lintian-2.5.22ubuntu1/t/tests/phppear-pear/desc0000664000000000000000000000053612310413146016305 0ustar Testname: phppear-pear Sequence: 6000 Version: 1.0-1 Description: phppear tests for PEAR packages Test-For: missing-pkg-php-tools-addon missing-pkg-php-tools-buildsystem pear-package-but-missing-dependency pear-package-feature-requires-newer-pkg-php-tools pear-package-not-using-substvar pecl-package-requires-build-dependency Type: non-native lintian-2.5.22ubuntu1/t/tests/phppear-pear/debian/0000775000000000000000000000000012310413146016662 5ustar lintian-2.5.22ubuntu1/t/tests/phppear-pear/debian/debian/0000775000000000000000000000000012310413206020101 5ustar lintian-2.5.22ubuntu1/t/tests/phppear-pear/debian/debian/control.in0000664000000000000000000000100412310413206022104 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), pkg-php-tools Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/phppear-pear/debian/debian/pkg-php-tools-overrides0000664000000000000000000000005212310413146024530 0ustar pear.example.org Any_Dummy php-test-dummy lintian-2.5.22ubuntu1/t/tests/menus-doc-base-general/0000775000000000000000000000000012310413146017271 5ustar lintian-2.5.22ubuntu1/t/tests/menus-doc-base-general/tags0000664000000000000000000000115512310413146020154 0ustar E: menus-doc-base-general: doc-base-document-field-not-in-first-line doc2:2 E: menus-doc-base-general: doc-base-file-duplicated-field doc2:5 author E: menus-doc-base-general: doc-base-file-syntax-error doc2:18 W: menus-doc-base-general: doc-base-abstract-field-is-template doc2:10 W: menus-doc-base-general: doc-base-abstract-field-separator-extra-whitespace doc2:8 W: menus-doc-base-general: doc-base-abstract-might-contain-extra-leading-whitespace doc2:10 W: menus-doc-base-general: doc-base-file-separator-extra-whitespace doc2:13 W: menus-doc-base-general: doc-base-uses-applications-section doc2:11 Apps/Programming lintian-2.5.22ubuntu1/t/tests/menus-doc-base-general/desc0000664000000000000000000000100112310413146020122 0ustar Testname: menus-doc-base-general Sequence: 6000 Version: 1.0 Description: Test some doc-base related tags Test-Against: doc-base-unknown-section Test-For: doc-base-abstract-field-is-template doc-base-abstract-field-separator-extra-whitespace doc-base-abstract-might-contain-extra-leading-whitespace doc-base-document-field-not-in-first-line doc-base-file-duplicated-field doc-base-file-separator-extra-whitespace doc-base-file-syntax-error doc-base-uses-applications-section References: Debian Bug#495836 lintian-2.5.22ubuntu1/t/tests/menus-doc-base-general/debian/0000775000000000000000000000000012310413146020513 5ustar lintian-2.5.22ubuntu1/t/tests/menus-doc-base-general/debian/doc2.txt0000664000000000000000000000001312310413146022075 0ustar Document 2 lintian-2.5.22ubuntu1/t/tests/menus-doc-base-general/debian/doc1.txt0000664000000000000000000000001312310413146022074 0ustar Document 1 lintian-2.5.22ubuntu1/t/tests/menus-doc-base-general/debian/debian/0000775000000000000000000000000012310413146021735 5ustar lintian-2.5.22ubuntu1/t/tests/menus-doc-base-general/debian/debian/doc-base.doc10000664000000000000000000000026512310413146024165 0ustar Document: doc1 Title: Document 1 Author: Lintian maintainers Abstract: Document 1 Section: Programming/Something Format: text Files: /usr/share/doc/menus-doc-base-general/doc1.txt lintian-2.5.22ubuntu1/t/tests/menus-doc-base-general/debian/debian/doc-base.doc20000664000000000000000000000064112310413146024164 0ustar Document: doc2 Title: Document 2 Author: Lintian maintainers Author: Duplicate field... oops. Abstract: Document 2 Blah blah manage online manuals Debian blah blah . The second line is totally a template. Oh yeah, a space too much on the " ."-line followed by wrong indentation. Section: Apps/Programming Format: text Files: /usr/share/doc/menus-doc-base-general/doc2.txt oops, this is a syntax error. lintian-2.5.22ubuntu1/t/tests/menus-doc-base-general/debian/debian/docs0000664000000000000000000000002212310413146022602 0ustar doc1.txt doc2.txt lintian-2.5.22ubuntu1/t/tests/cruft-general-quilt/0000775000000000000000000000000012310413205016742 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-general-quilt/pre_build0000775000000000000000000000243612077065715020665 0ustar #!/bin/sh # # Create all the various junk that shouldn't exist in the diff so that we can # trigger all the tags. set -e dir="$1/debian" mkdir "${dir}/CVS" echo 'diff-contains-cvs-control-dir' > "${dir}/CVS/Entries" mkdir "${dir}/.svn" echo 'diff-contains-svn-control-dir' > "${dir}/.svn/format" mkdir "${dir}/.bzr" echo 'diff-contains-bzr-control-dir' > "${dir}/.bzr/foo" mkdir "${dir}/{arch}" echo 'diff-contains-arch-control-dir' > "${dir}/{arch}/foo" mkdir "${dir}/.git" echo 'diff-contains-git-control-dir' > "${dir}/.git/foo" mkdir "${dir}/.hg" echo 'diff-contains-hg-control-dir' > "${dir}/.hg/foo" mkdir "${dir}/.be" echo 'diff-contains-bts-control-dir' > "${dir}/.be/foo" mkdir "${dir}/.pc" echo 'diff-contains-quilt-control-dir' > "${dir}/.pc/foo" echo 'diff-contains-cmake-cache-file' > "${dir}/CMakeCache.txt" echo 'diff-contains-svn-commit-file' > "${dir}/svn-commit.tmp" echo 'diff-contains-svk-commit-file' > "${dir}/svk-commit444.tmp" echo 'diff-contains-arch-inventory-file' > "${dir}/.arch-inventory" echo 'diff-contains-hg-tags-file' > "${dir}/.hgtags" echo 'diff-contains-cvs-conflict-copy' > "${dir}/.#foo.1.1" echo 'diff-contains-svn-conflict-file' > "${dir}/foo.r1352" echo 'diff-contains-patch-failure-file' > "${dir}/foo.rej" echo 'diff-contains-editor-backup-file' > "${dir}/foo~" lintian-2.5.22ubuntu1/t/tests/cruft-general-quilt/tags0000664000000000000000000000264412077065715017654 0ustar E: cruft-general-quilt source: debian-files-list-in-source W: cruft-general-quilt source: diff-contains-arch-control-dir debian/{arch} W: cruft-general-quilt source: diff-contains-arch-inventory-file debian/.arch-inventory W: cruft-general-quilt source: diff-contains-bts-control-dir debian/.be W: cruft-general-quilt source: diff-contains-bzr-control-dir debian/.bzr W: cruft-general-quilt source: diff-contains-cvs-conflict-copy debian/.#foo.1.1 W: cruft-general-quilt source: diff-contains-cvs-control-dir debian/CVS W: cruft-general-quilt source: diff-contains-editor-backup-file debian/foo~ W: cruft-general-quilt source: diff-contains-git-control-dir debian/.git W: cruft-general-quilt source: diff-contains-hg-control-dir debian/.hg W: cruft-general-quilt source: diff-contains-hg-tags-file debian/.hgtags W: cruft-general-quilt source: diff-contains-patch-failure-file debian/foo.rej W: cruft-general-quilt source: diff-contains-quilt-control-dir debian/.pc W: cruft-general-quilt source: diff-contains-substvars debian/somepackage.substvars W: cruft-general-quilt source: diff-contains-substvars debian/substvars W: cruft-general-quilt source: diff-contains-svk-commit-file debian/svk-commit444.tmp W: cruft-general-quilt source: diff-contains-svn-commit-file debian/svn-commit.tmp W: cruft-general-quilt source: diff-contains-svn-conflict-file debian/foo.r1352 W: cruft-general-quilt source: diff-contains-svn-control-dir debian/.svn lintian-2.5.22ubuntu1/t/tests/cruft-general-quilt/desc0000664000000000000000000000134412077065715017630 0ustar Testname: cruft-general-quilt Sequence: 6000 Version: 1.0-1 Type: non-native Description: Check for cruft added in a 3.0 (quilt) package Test-For: debian-files-list-in-source diff-contains-arch-control-dir diff-contains-arch-inventory-file diff-contains-bts-control-dir diff-contains-bzr-control-dir diff-contains-cvs-conflict-copy diff-contains-cvs-control-dir diff-contains-editor-backup-file diff-contains-git-control-dir diff-contains-hg-control-dir diff-contains-hg-tags-file diff-contains-patch-failure-file diff-contains-quilt-control-dir diff-contains-substvars diff-contains-svk-commit-file diff-contains-svn-commit-file diff-contains-svn-conflict-file diff-contains-svn-control-dir References: Debian Bug#598251 lintian-2.5.22ubuntu1/t/tests/cruft-general-quilt/debian/0000775000000000000000000000000012310413205020164 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-general-quilt/debian/debian/0000775000000000000000000000000012077065715021431 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-general-quilt/debian/debian/somepackage.substvars0000664000000000000000000000001612077065715025663 0ustar misc:Depends= lintian-2.5.22ubuntu1/t/tests/cruft-general-quilt/debian/debian/source/0000775000000000000000000000000012077065715022731 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-general-quilt/debian/debian/source/format0000664000000000000000000000001412077065715024137 0ustar 3.0 (quilt) lintian-2.5.22ubuntu1/t/tests/cruft-general-quilt/debian/debian/rules0000775000000000000000000000013712077065715022512 0ustar #!/usr/bin/make -f %: dh $@ override_dh_prep: dh_prep -X~ -Xrej clean: @echo 'Do nothing' lintian-2.5.22ubuntu1/t/tests/cruft-general-quilt/debian/debian/substvars0000664000000000000000000000001612077065715023405 0ustar misc:Depends= lintian-2.5.22ubuntu1/t/tests/cruft-general-quilt/debian/debian/README.source0000664000000000000000000000005012077065715023603 0ustar Some information about the patch system lintian-2.5.22ubuntu1/t/tests/cruft-general-quilt/debian/debian/files0000664000000000000000000000005612077065715022457 0ustar cruft-general-quilt_1.0-1_all.deb devel extra lintian-2.5.22ubuntu1/t/tests/changelog-file-general/0000775000000000000000000000000012310413206017330 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-general/tags0000664000000000000000000000177312310413206020221 0ustar E: changelog-file-general: debian-changelog-file-contains-invalid-email-address unknown@unknown E: changelog-file-general: possible-missing-colon-in-closes Closes #555555 W: changelog-file-general: changelog-not-compressed-with-max-compression changelog.Debian.gz W: changelog-file-general: debian-changelog-file-contains-obsolete-user-emacs-settings W: changelog-file-general: debian-changelog-line-too-long line 14 W: changelog-file-general: debian-changelog-line-too-long line 8 W: changelog-file-general: improbable-bug-number-in-closes 12 W: changelog-file-general: latest-debian-changelog-entry-without-new-date W: changelog-file-general: latest-debian-changelog-entry-without-new-version W: changelog-file-general: syntax-error-in-debian-changelog line 30 "badly formatted heading line" W: changelog-file-general: syntax-error-in-debian-changelog line 32 "found change data where expected next heading or eof" X: changelog-file-general: bad-intended-distibution intended to experimental but uploaded to unstable lintian-2.5.22ubuntu1/t/tests/changelog-file-general/desc0000664000000000000000000000106112310413206020167 0ustar Testname: changelog-file-general Sequence: 6000 Type: non-native Version: 1.0-1 Description: General tests for changelog-file tags Test-For: bad-intended-distibution changelog-not-compressed-with-max-compression debian-changelog-file-contains-invalid-email-address debian-changelog-file-contains-obsolete-user-emacs-settings debian-changelog-line-too-long improbable-bug-number-in-closes latest-debian-changelog-entry-without-new-date latest-debian-changelog-entry-without-new-version possible-missing-colon-in-closes syntax-error-in-debian-changelog lintian-2.5.22ubuntu1/t/tests/changelog-file-general/debian/0000775000000000000000000000000012077065714020573 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-general/debian/debian/0000775000000000000000000000000012310413206021774 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-general/debian/debian/changelog.in0000664000000000000000000000251112310413206024252 0ustar {$source} ({$version}) unstable; urgency=low * Test: {$testname} * Upload to experimental. * improbable-bug-number-in-closes (Closes: #12) * Another bug closer without a colon (Closes #555555) * This line is too long since it contains words and words and words but doesn't have any wrapping except at column 81. * http://www.example.com/but-a-really-long-url-does-not-count-as-a-long-line-at-all See http://www.example.com/but-a-really-long-url-does-not-count-as-a-long-line-at-all even if preceded by See. * Here is another really long in the changelog, and it would be really nice if a certain program would report its line number correctly. Especially since, we have an extra empty line in the start of the entry. * Below is another very long line (UTF-8), which should have a "visual" width of ~75 characters, but consists of over 200 bytes. üüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüü -- {$author} {$date} {$source} ({$version}) unstable; urgency=low * Duplicate changelog entry to trigger tags. -- Unknown {$date} {$source} () unstable; urgency=low * Syntax error here. -- {$author} {$date} Local variables: add-log-mailing-address: "rra@debian.org" End: lintian-2.5.22ubuntu1/t/tests/changelog-file-general/debian/debian/rules0000775000000000000000000000037112077065714023076 0ustar #!/usr/bin/make -f pkg = $(shell dh_listpackages) %: dh $@ override_dh_installchangelogs: install -c -m 644 debian/changelog \ debian/$(pkg)/usr/share/doc/$(pkg)/changelog.Debian gzip -1 debian/$(pkg)/usr/share/doc/$(pkg)/changelog.Debian lintian-2.5.22ubuntu1/t/tests/debhelper-script-token-unneeded/0000775000000000000000000000000012077065715021232 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-script-token-unneeded/tags0000664000000000000000000000000012077065715022101 0ustar lintian-2.5.22ubuntu1/t/tests/debhelper-script-token-unneeded/desc0000664000000000000000000000026212077065715022073 0ustar Testname: debhelper-script-token-unneeded Sequence: 6000 Version: 1.0 Description: Check unnecessary debhelper script token Test-Against: maintainer-script-lacks-debhelper-token lintian-2.5.22ubuntu1/t/tests/debhelper-script-token-unneeded/debian/0000775000000000000000000000000012077065715022454 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-script-token-unneeded/debian/debian/0000775000000000000000000000000012077065715023676 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-script-token-unneeded/debian/debian/rules0000775000000000000000000000147312077065715024763 0ustar #!/usr/bin/make -f # # Use an alternate rules file that doesn't call dh to test not warning # about debhelper script tokens if we call no programs that care about # them. pkg = $(shell dh_listpackages) build: build-indep build-arch build-indep: build-arch: clean: dh_testdir dh_testroot dh_clean binary: binary-indep binary-arch binary-arch: binary-indep: dh_testdir dh_testroot dh_prep dh_install dh_installchangelogs # dh_installdocs may modify maintainer scripts install -m 644 debian/copyright debian/$(pkg)/usr/share/doc/$(pkg) dh_link dh_compress dh_fixperms # dh_installdeb needs #DEBHELPER# token too mkdir -p debian/$(pkg)/DEBIAN install -m 755 debian/postinst debian/$(pkg)/DEBIAN dh_gencontrol dh_md5sums dh_builddeb .PHONY: build-arch build-indep build binary binary-arch binary-indep clean lintian-2.5.22ubuntu1/t/tests/debhelper-script-token-unneeded/debian/debian/postinst0000664000000000000000000000011312077065715025477 0ustar #!/bin/sh set -e run something # We should have a debhelper token. exit 0 lintian-2.5.22ubuntu1/t/tests/files-gzip-ma-same/0000775000000000000000000000000012077065715016462 5ustar lintian-2.5.22ubuntu1/t/tests/files-gzip-ma-same/tags0000664000000000000000000000015312077065715017342 0ustar E: files-gzip-ma-same: gzip-file-is-not-multi-arch-same-safe usr/share/doc/files-gzip-ma-same/changelog.gz lintian-2.5.22ubuntu1/t/tests/files-gzip-ma-same/desc0000664000000000000000000000025212077065715017322 0ustar Testname: files-gzip-ma-same Sequence: 6000 Version: 1.0 Description: Test for issues handling gz in Multi-Arch same pkgs Test-for: gzip-file-is-not-multi-arch-same-safe lintian-2.5.22ubuntu1/t/tests/files-gzip-ma-same/debian/0000775000000000000000000000000012077065715017704 5ustar lintian-2.5.22ubuntu1/t/tests/files-gzip-ma-same/debian/debian/0000775000000000000000000000000012310413206021104 5ustar lintian-2.5.22ubuntu1/t/tests/files-gzip-ma-same/debian/debian/control.in0000664000000000000000000000077612310413206023126 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: any Depends: $\{misc:Depends\}, $\{shlibs:Depends\}, Multi-Arch: same Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/files-gzip-ma-same/debian/debian/rules0000775000000000000000000000043012077065715022203 0ustar #!/usr/bin/make -f pkg=files-gzip-ma-same %: dh $@ override_dh_installchangelogs: dh_installchangelogs [ -f debian/$(pkg)/usr/share/doc/$(pkg)/changelog ] || \ gunzip debian/$(pkg)/usr/share/doc/$(pkg)/changelog.gz gzip --best debian/$(pkg)/usr/share/doc/$(pkg)/changelog lintian-2.5.22ubuntu1/t/tests/files-empty/0000775000000000000000000000000012310413206015307 5ustar lintian-2.5.22ubuntu1/t/tests/files-empty/tags0000664000000000000000000000012212310413206016163 0ustar W: files-empty: empty-binary-package X: files-empty-udeb udeb: empty-udeb-package lintian-2.5.22ubuntu1/t/tests/files-empty/desc0000664000000000000000000000023212310413206016145 0ustar Testname: files-empty Sequence: 6000 Version: 1.0 Description: Test of empty binary package detection Test-For: empty-binary-package empty-udeb-package lintian-2.5.22ubuntu1/t/tests/files-empty/debian/0000775000000000000000000000000012077065715016553 5ustar lintian-2.5.22ubuntu1/t/tests/files-empty/debian/README0000664000000000000000000000000712077065715017430 0ustar README lintian-2.5.22ubuntu1/t/tests/files-empty/debian/debian/0000775000000000000000000000000012310413206017753 5ustar lintian-2.5.22ubuntu1/t/tests/files-empty/debian/debian/control.in0000664000000000000000000000157512310413206021773 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: {$source}-udeb Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Package-Type: udeb Section: debian-installer Description: {$description} (udeb) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . This is the udeb variant of {$source} lintian-2.5.22ubuntu1/t/tests/files-empty/debian/debian/docs0000664000000000000000000000000712077065715020645 0ustar README lintian-2.5.22ubuntu1/t/tests/duplicate-files/0000775000000000000000000000000012310413144016124 5ustar lintian-2.5.22ubuntu1/t/tests/duplicate-files/tags0000664000000000000000000000066112077065715017031 0ustar W: duplicate-files: duplicate-changelog-files usr/share/doc/duplicate-files/NEWS.gz usr/share/doc/duplicate-files/changelog.gz X: duplicate-files: duplicate-files usr/share/doc/duplicate-files/doc-file1 usr/share/doc/duplicate-files/doc-file2 usr/share/doc/duplicate-files/doc-file3 usr/share/doc/duplicate-files/doc-file4 X: duplicate-files: duplicate-files usr/share/doc/duplicate-files/doccy1 usr/share/doc/duplicate-files/doccy2 lintian-2.5.22ubuntu1/t/tests/duplicate-files/desc0000664000000000000000000000027512310413144016771 0ustar Testname: duplicate-files Sequence: 6000 Version: 1.0 Description: Test for duplicate files Skeleton: pedantic Options: -EIL +pedantic Test-For: duplicate-changelog-files duplicate-files lintian-2.5.22ubuntu1/t/tests/duplicate-files/debian/0000775000000000000000000000000012077065715017367 5ustar lintian-2.5.22ubuntu1/t/tests/duplicate-files/debian/doc-file10000664000000000000000000000001412077065715021050 0ustar hallo world lintian-2.5.22ubuntu1/t/tests/duplicate-files/debian/Changes0000664000000000000000000000004412077065715020660 0ustar This is an upstream changelog file. lintian-2.5.22ubuntu1/t/tests/duplicate-files/debian/doccy20000664000000000000000000000001112077065715020465 0ustar Hi Haley lintian-2.5.22ubuntu1/t/tests/duplicate-files/debian/doccy10000664000000000000000000000001112077065715020464 0ustar Hi Haley lintian-2.5.22ubuntu1/t/tests/duplicate-files/debian/doc-file20000664000000000000000000000001412077065715021051 0ustar hallo world lintian-2.5.22ubuntu1/t/tests/duplicate-files/debian/doc-file40000664000000000000000000000001412077065715021053 0ustar hallo world lintian-2.5.22ubuntu1/t/tests/duplicate-files/debian/doc-file30000664000000000000000000000001412077065715021052 0ustar hallo world lintian-2.5.22ubuntu1/t/tests/duplicate-files/debian/NEWS0000664000000000000000000000004412077065715020064 0ustar This is an upstream changelog file. lintian-2.5.22ubuntu1/t/tests/duplicate-files/debian/debian/0000775000000000000000000000000012077065715020611 5ustar lintian-2.5.22ubuntu1/t/tests/duplicate-files/debian/debian/docs0000664000000000000000000000007312077065715021464 0ustar doc-file1 doc-file2 doc-file3 doc-file4 doccy1 doccy2 NEWS lintian-2.5.22ubuntu1/t/tests/debhelper-no-depends/0000775000000000000000000000000012310413144017036 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-no-depends/tags0000664000000000000000000000153012310413144017716 0ustar E: debhelper-no-depends source: missing-build-dependency debhelper E: debhelper-no-depends source: missing-build-dependency-for-dh_-command dh_clideps => cli-common-dev E: debhelper-no-depends source: missing-build-dependency-for-dh_-command dh_dpatch_patch => dpatch E: debhelper-no-depends source: missing-build-dependency-for-dh_-command dh_gtkmodules => libgtk2.0-dev E: debhelper-no-depends source: missing-build-dependency-for-dh_-command dh_lisp => dh-lisp E: debhelper-no-depends source: package-uses-debhelper-but-lacks-build-depends W: debhelper-no-depends source: debhelper-but-no-misc-depends debhelper-no-depends W: debhelper-no-depends source: dh_pysupport-is-obsolete line 20 W: debhelper-no-depends source: package-needs-versioned-debhelper-build-depends 9 W: debhelper-no-depends source: weak-dependency-on-misc-depends debhelper-suggests lintian-2.5.22ubuntu1/t/tests/debhelper-no-depends/desc0000664000000000000000000000054212077065715017721 0ustar Testname: debhelper-no-depends Sequence: 6000 Version: 1.0 Description: Test dependency requirements for debhelper Test-For: debhelper-but-no-misc-depends missing-build-dependency missing-build-dependency-for-dh_-command package-needs-versioned-debhelper-build-depends package-uses-debhelper-but-lacks-build-depends weak-dependency-on-misc-depends lintian-2.5.22ubuntu1/t/tests/debhelper-no-depends/debian/0000775000000000000000000000000012077065715020301 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-no-depends/debian/debian/0000775000000000000000000000000012310413206021501 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-no-depends/debian/debian/control.in0000664000000000000000000000230412310413206023510 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Package: {$source} Architecture: {$architecture} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: debhelper-pre-depends Architecture: {$architecture} Pre-Depends: $\{misc:Depends\} Description: {$description} extra string This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Extra string to not to trigger duplicated description tags. It may be an empty package. Package: debhelper-suggests Architecture: {$architecture} Suggests: $\{misc:Depends\} Description: {$description} another extra string This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Extra string. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/debhelper-no-depends/debian/debian/compat0000664000000000000000000000000212310413144022700 0ustar 9 lintian-2.5.22ubuntu1/t/tests/debhelper-no-depends/debian/debian/rules0000775000000000000000000000073612077065715022611 0ustar #!/usr/bin/make -f %: dh $@ binary: binary-arch binary-indep binary-arch: binary-indep: dh binary-indep --until dh_prep -dh_clideps -dh_gtkmodules dh_lisp || true # Should trigger a versioned dependency requirement for dpatch -dh_dpatch_patch # We don't warn about commands inside make conditionals, so none of these # get any warnings. ifeq "$(USE_DH_PYTHON2)" "y" dh_python2 else ifeq "$(USE_PYSUPPORT)" "y" dh_pysupport endif endif dh binary-indep --remaining lintian-2.5.22ubuntu1/t/tests/debhelper-script-token/0000775000000000000000000000000012077065715017445 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-script-token/tags0000664000000000000000000000013212077065715020322 0ustar W: debhelper-script-token source: maintainer-script-lacks-debhelper-token debian/postinst lintian-2.5.22ubuntu1/t/tests/debhelper-script-token/desc0000664000000000000000000000026012077065715020304 0ustar Testname: debhelper-script-token Sequence: 6000 Version: 1.0 Description: Check debhelper script token with rule minimization Test-For: maintainer-script-lacks-debhelper-token lintian-2.5.22ubuntu1/t/tests/debhelper-script-token/debian/0000775000000000000000000000000012077065715020667 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-script-token/debian/debian/0000775000000000000000000000000012077065715022111 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-script-token/debian/debian/postinst0000664000000000000000000000011312077065715023712 0ustar #!/bin/sh set -e run something # We should have a debhelper token. exit 0 lintian-2.5.22ubuntu1/t/tests/control-file-general/0000775000000000000000000000000012310413144017062 5ustar lintian-2.5.22ubuntu1/t/tests/control-file-general/tags0000664000000000000000000000335512310413144017751 0ustar E: control-file-general source: build-info-in-binary-control-file-section Package control-file-general E: control-file-general source: missing-separator-between-items in control-file-general depends field between '${shlibs:Depends}' and '${some:Depends}' E: control-file-general source: obsolete-relation-form-in-source in control-file-general-1 breaks: libsqlite3-0 (< 3.6.12) E: control-file-general source: obsolete-relation-form-in-source in source build-depends-indep: perl (> 5.8) I: control-file-general source: binary-control-field-duplicates-source field "maintainer" in package control-file-general I: control-file-general source: duplicate-long-description control-file-general control-file-general-1 control-file-general-2 control-file-general-3 control-file-general-4 control-file-general-5 I: control-file-general source: duplicate-short-description control-file-general control-file-general-1 I: control-file-general source: xs-vcs-header-in-debian-control xs-vcs-svn W: control-file-general source: control-file-contains-dh_make-vcs-comment W: control-file-general source: debian-control-repeats-field-name-in-value line 80 W: control-file-general source: no-section-field-for-source W: control-file-general source: package-depends-on-itself control-file-general depends W: control-file-general source: stronger-dependency-implies-weaker control-file-general depends -> recommends foo W: control-file-general source: stronger-dependency-implies-weaker control-file-general depends -> suggests bar | baz W: control-file-general source: stronger-dependency-implies-weaker control-file-general recommends -> suggests bar | baz W: control-file-general source: stronger-dependency-implies-weaker control-file-general recommends -> suggests match${lintian:Match} lintian-2.5.22ubuntu1/t/tests/control-file-general/desc0000664000000000000000000000127612310413144017731 0ustar Testname: control-file-general Sequence: 6000 Version: 1.0 Description: Various problems with debian/control Test-For: binary-control-field-duplicates-source build-info-in-binary-control-file-section control-file-contains-dh_make-vcs-comment debian-control-repeats-field-name-in-value duplicate-long-description duplicate-short-description missing-separator-between-items no-section-field-for-source obsolete-relation-form-in-source package-depends-on-itself stronger-dependency-implies-weaker xs-vcs-header-in-debian-control References: Debian Bug#30020, Debian Bug#409099, Debian Bug#516706, Debian Bug#533202, Debian Bug#557971, Debian Bug#573399, Debian Bug#580494, Debian Bug#657110 lintian-2.5.22ubuntu1/t/tests/control-file-general/debian/0000775000000000000000000000000012077065714020324 5ustar lintian-2.5.22ubuntu1/t/tests/control-file-general/debian/debian/0000775000000000000000000000000012310413206021525 5ustar lintian-2.5.22ubuntu1/t/tests/control-file-general/debian/debian/control.in0000664000000000000000000000670012310413206023540 0ustar Source: {$source} Priority: extra Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), fiddle [amd64 powerpc mips mipsel hppa s390], faddle (>> 2) [ sparc i386 amd64 ] Build-Depends-Indep: perl (> 5.8) XS-Vcs-Svn: svn://svn.example.com/{$source}/trunk #Vcs-Git: git://git.debian.org/collab-maint/.git #Vcs-Browser: http://git.debian.org/?p=collab-maint/.git;a=summary Package: {$source} Section: {$section} Maintainer: {$author} Build-Conflicts: foo Architecture: {$architecture} Depends: {$source}, foo, baz, $\{shlibs:Depends\} $\{some:Depends\}, $\{misc:Depends\} Recommends: foo, bar, no-match$\{lintian:Foo\}, match$\{lintian:Match\}, no-match$\{lintian:Bar\}-foo Suggests: bar | baz, no-match$\{lintian:Bar\}, match$\{lintian:Match\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: {$source}-1 Section: {$section} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Breaks: libsqlite3-0 (< 3.6.12) Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: {$source}-2 Section: {$section} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (two) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: {$source}-3 Section: {$section} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, foo (>= 1), baz (<< 2), fizz (= 2.0), gcc-$\{pv:gcc\} $\{reqv:gcc\} Description: {$description} (three) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: {$source}-4 Section: {$section} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, foo | bar (>= 1), baz Description: {$description} (four) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: {$source}-5 Section: {$section} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: {$source}-udeb Section: debian-installer Package-Type: udeb Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (udeb) udeb tests. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/control-file-general/debian/debian/rules0000664000000000000000000000023412077065714022622 0ustar #!/usr/bin/make -f %: dh $@ override_dh_gencontrol: echo 'pv:gcc=4.3' >> debian/substvars echo 'reqv:gcc=(>= 4.3-1)' >> debian/substvars dh_gencontrol lintian-2.5.22ubuntu1/t/tests/legacy-binary/0000775000000000000000000000000012310413206015577 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-binary/post_test0000664000000000000000000000023512310413206017546 0ustar s/arch-dep-package-has-big-usr-share .*kB .*%/arch-dep-package-has-big-usr-share/ /: hardening-.*/ d s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/ lintian-2.5.22ubuntu1/t/tests/legacy-binary/tags0000664000000000000000000002335712310413206016472 0ustar E: binary source: debian-rules-missing-required-target binary-indep E: binary source: not-binnmuable-all-depends-any binary-data -> binary E: binary source: not-binnmuable-any-depends-all binary -> binary-data E: binary: changelog-file-not-compressed changelog E: binary: debian-changelog-file-missing-or-wrong-name E: binary: debian-copyright-file-uses-obsolete-national-encoding at line 13 E: binary: debian-news-file-uses-obsolete-national-encoding at line 3 E: binary: depends-on-metapackage pre-depends: xorg E: binary: deprecated-kdelnk-file usr/share/applications/hello.kdelnk E: binary: desktop-entry-missing-required-key usr/share/applications/goodbye.desktop Name E: binary: doc-base-document-field-ends-in-whitespace binary:1 E: binary: doc-base-file-duplicated-format binary:36 html E: binary: doc-base-file-lacks-required-field binary:22 files E: binary: doc-base-file-lacks-required-field binary:26 files E: binary: doc-base-file-lacks-required-field binary:26 format E: binary: doc-base-file-no-format binary:26 E: binary: doc-base-file-no-format-section space :0 E: binary: doc-base-file-no-index binary:35 E: binary: doc-base-file-references-missing-file binary:17 /usr/share/doc/binary/binary.sgml.gz E: binary: doc-base-file-references-missing-file binary:21 /usr/share/doc/binary/binary.txt E: binary: doc-base-file-references-missing-file binary:25 /usr/share/doc/binary/html/ch4.html E: binary: doc-base-file-references-missing-file binary:31 /usr/share/doc/binary/hml/*.html E: binary: doc-base-file-references-missing-file binary:34 /usr/share/info/binary.info.gz E: binary: doc-base-file-unknown-field binary:12 unknown E: binary: doc-base-file-unknown-field binary:18 unknown E: binary: doc-base-file-uses-obsolete-national-encoding binary:8 E: binary: doc-base-index-references-multiple-files binary:25 E: binary: doc-base-invalid-document-field binary:1 binary!docs E: binary: executable-desktop-file usr/share/applications/goodbye.desktop 0755 E: binary: file-directly-in-usr-share usr/share/baz E: binary: lengthy-symlink usr/share/doc/binary/html/ch2.html ../html/./ch1.html E: binary: menu-item-missing-required-tag needs usr/lib/menu/binary:6 E: binary: menu-item-missing-required-tag needs usr/share/menu/binary:6 E: binary: menu-item-missing-required-tag section usr/lib/menu/binary:1 E: binary: menu-item-missing-required-tag section usr/share/menu/binary:1 E: binary: menu-method-should-include-menu-h etc/menu-methods/lintian E: binary: non-wm-in-windowmanager-menu-section x11 usr/lib/menu/binary:4 E: binary: non-wm-in-windowmanager-menu-section x11 usr/share/menu/binary:4 E: binary: non-wm-module-in-wm-modules-menu-section wm usr/lib/menu/binary:22 E: binary: non-wm-module-in-wm-modules-menu-section wm usr/share/menu/binary:22 E: binary: possible-gpl-code-linked-with-openssl E: binary: postinst-does-not-call-updatemenus usr/share/menu/binary E: binary: postrm-does-not-call-updatemenus etc/menu-methods/lintian E: binary: statically-linked-binary usr/bin/static-hello E: binary: su-wrapper-without--c usr/lib/menu/binary:2 su-to-root E: binary: su-wrapper-without--c usr/lib/menu/binary:3 sux E: binary: su-wrapper-without--c usr/share/menu/binary:2 su-to-root E: binary: su-wrapper-without--c usr/share/menu/binary:3 sux E: binary: suidregister-used-in-maintainer-script postinst:5 E: binary: symlink-contains-spurious-segments usr/share/doc/binary/html/ch2.html ../html/./ch1.html E: binary: unstripped-binary-or-object usr/bin/hello I: binary source: binary-control-field-duplicates-source field "vcs-svn" in package binary I: binary source: xs-vcs-header-in-debian-control xs-vcs-browser I: binary-data: capitalization-error-in-description subversion Subversion I: binary: arch-dep-package-has-big-usr-share I: binary: binary-has-unneeded-section usr/bin/hello-static .comment I: binary: capitalization-error-in-description debian Debian I: binary: desktop-entry-contains-encoding-key usr/share/applications/goodbye.desktop:11 Encoding I: binary: desktop-entry-contains-encoding-key usr/share/applications/hello.desktop:13 Encoding I: binary: desktop-entry-lacks-keywords-entry usr/share/applications/goodbye.desktop I: binary: desktop-entry-lacks-keywords-entry usr/share/applications/hello.desktop I: binary: no-md5sums-control-file W: binary source: ancient-standards-version 3.2.1 (current is CURRENT) W: binary source: debian-rules-ignores-make-clean-error line 14 W: binary source: debian-rules-missing-recommended-target build-indep W: binary source: debian-rules-should-not-use-pwd line 9 W: binary source: dm-upload-allowed-is-obsolete W: binary source: intra-source-package-circular-dependency binary binary-data W: binary source: maintainer-upload-has-incorrect-version-number 4-1.1 W: binary source: native-package-with-dash-version W: binary source: package-would-benefit-from-build-arch-targets W: binary source: substvar-source-version-is-deprecated binary W: binary source: substvar-source-version-is-deprecated binary-data W: binary-data: control-file-is-empty md5sums W: binary-data: empty-binary-package W: binary: binary-without-manpage usr/bin/hello W: binary: binary-without-manpage usr/bin/hello-static W: binary: binary-without-manpage usr/bin/hello.static W: binary: binary-without-manpage usr/bin/iminusrbin W: binary: binary-without-manpage usr/bin/static-hello W: binary: changelog-news-debian-mismatch distribution unstable != UNRELEASED W: binary: changelog-news-debian-mismatch urgency low != high W: binary: debian-news-entry-has-strange-distribution UNRELEASED W: binary: description-contains-homepage W: binary: desktop-command-not-in-package usr/share/applications/goodbye.desktop goodbye W: binary: desktop-contains-deprecated-header usr/share/applications/hello.desktop:4 W: binary: desktop-entry-contains-unknown-key usr/share/applications/goodbye.desktop:5 SpecialTag W: binary: desktop-entry-contains-unknown-key usr/share/applications/goodbye.desktop:7 icon W: binary: desktop-entry-file-has-crs usr/share/applications/hello.desktop:7 W: binary: desktop-entry-invalid-category WeirdStuff usr/share/applications/goodbye.desktop W: binary: desktop-entry-uses-reserved-category Screensaver usr/share/applications/goodbye.desktop W: binary: doc-base-abstract-field-separator-extra-whitespace binary:7 W: binary: doc-base-file-unknown-format binary:20 esp W: binary: doc-base-unknown-section binary:11 Non/Existant W: binary: executable-not-elf-or-script usr/bin/iminusrbin W: binary: executable-not-elf-or-script usr/share/applications/goodbye.desktop W: binary: file-in-unusual-dir usr/bar W: binary: file-in-unusual-dir usr/bar2 W: binary: file-in-unusual-dir usr/foo W: binary: file-name-ends-in-whitespace usr/share/doc-base/space W: binary: menu-command-not-in-package usr/lib/menu/binary:18 imnothere W: binary: menu-command-not-in-package usr/lib/menu/binary:20 cfdisk W: binary: menu-command-not-in-package usr/lib/menu/binary:4 xfdisk W: binary: menu-command-not-in-package usr/lib/menu/binary:7 imnothere W: binary: menu-command-not-in-package usr/share/menu/binary:18 imnothere W: binary: menu-command-not-in-package usr/share/menu/binary:20 cfdisk W: binary: menu-command-not-in-package usr/share/menu/binary:4 xfdisk W: binary: menu-command-not-in-package usr/share/menu/binary:7 imnothere W: binary: menu-file-in-usr-lib usr/lib/menu/binary W: binary: menu-item-creates-new-section Applications/System usr/lib/menu/binary:2 W: binary: menu-item-creates-new-section Applications/System usr/share/menu/binary:2 W: binary: menu-item-creates-new-section Apps/System usr/lib/menu/binary:7 W: binary: menu-item-creates-new-section Apps/System usr/share/menu/binary:7 W: binary: menu-item-creates-new-section WindowManagers/Modules usr/lib/menu/binary:13 W: binary: menu-item-creates-new-section WindowManagers/Modules usr/share/menu/binary:13 W: binary: menu-item-needs-tag-has-unknown-value wm usr/lib/menu/binary:5 W: binary: menu-item-needs-tag-has-unknown-value wm usr/share/menu/binary:5 W: binary: menu-item-uses-apps-section usr/lib/menu/binary:7 W: binary: menu-item-uses-apps-section usr/share/menu/binary:7 W: binary: menu-item-uses-windowmanagers-section usr/lib/menu/binary:13 W: binary: menu-item-uses-windowmanagers-section usr/share/menu/binary:13 W: binary: old-fsf-address-in-copyright-file W: binary: package-contains-hardlink usr/bar2 -> usr/share/baz W: binary: package-contains-upstream-install-documentation usr/share/doc/binary/INSTALL W: binary: spelling-error-in-description dont don't W: binary: spelling-error-in-doc-base-abstract-field binary:10 speling spelling W: binary: spelling-error-in-doc-base-title-field binary:2 debian Debian W: binary: spelling-error-in-news-debian speling spelling W: binary: spelling-error-in-news-debian usefull useful W: binary: su-to-root-with-usr-sbin usr/lib/menu/binary:4 W: binary: su-to-root-with-usr-sbin usr/share/menu/binary:4 W: binary: su-wrapper-not-su-to-root usr/lib/menu/binary:3 sux W: binary: su-wrapper-not-su-to-root usr/share/applications/hello.desktop kdesu W: binary: su-wrapper-not-su-to-root usr/share/menu/binary:3 sux W: binary: superfluous-clutter-in-homepage W: binary: symlink-should-be-relative usr/share/doc/binary/html/ch3.html /usr/share/doc/binary/htm/ch1.html W: binary: syntax-error-in-debian-changelog line 16 "couldn't parse date The, 15 Apr 2004 23:33:51 +0200" W: binary: syntax-error-in-debian-news-file line 12 "badly formatted trailer line" W: binary: syntax-error-in-debian-news-file line 12 "found eof where expected more change data or trailer" W: binary: unquoted-string-in-menu-item usr/lib/menu/binary needs:1 W: binary: unquoted-string-in-menu-item usr/lib/menu/binary needs:2 W: binary: unquoted-string-in-menu-item usr/share/menu/binary needs:1 W: binary: unquoted-string-in-menu-item usr/share/menu/binary needs:2 X: binary: package-contains-broken-symlink usr/share/doc/binary/html/ch3.html usr/share/doc/binary/htm/ch1.html lintian-2.5.22ubuntu1/t/tests/legacy-binary/desc0000664000000000000000000000014712310413206016442 0ustar Testname: legacy-binary Source: binary Sequence: 9999 Version: 4-1.1 Description: Legacy test "binary" lintian-2.5.22ubuntu1/t/tests/legacy-binary/debian/0000775000000000000000000000000012310413206017021 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-binary/debian/INSTALL0000664000000000000000000001644712310413206020066 0ustar Basic Installation ================== These are generic installation instructions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, a file `config.cache' that saves the results of its tests to speed up reconfiguring, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.in' is used to create `configure' by a program called `autoconf'. You only need `configure.in' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself. Running `configure' takes a while. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package. 4. Type `make install' to install the programs and any data files and documentation. 5. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. You can give `configure' initial values for variables by setting them in the environment. Using a Bourne-compatible shell, you can do that on the command line like this: CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure Or on systems that have the `env' program, you can do it like this: env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you must use a version of `make' that supports the `VPATH' variable, such as GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. If you have to use a `make' that does not supports the `VPATH' variable, you have to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. Installation Names ================== By default, `make install' will install the package's files in `/usr/local/bin', `/usr/local/man', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PATH'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give `configure' the option `--exec-prefix=PATH', the package will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Optional Features ================= Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Specifying the System Type ========================== There may be some features `configure' can not figure out automatically, but needs to determine by the type of host the package will run on. Usually `configure' can figure that out, but if it prints a message saying it can not guess the host type, give it the `--host=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name with three fields: CPU-COMPANY-SYSTEM See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the host type. If you are building compiler tools for cross-compiling, you can also use the `--target=TYPE' option to select the type of system they will produce code for and the `--build=TYPE' option to select the type of system on which you are compiling the package. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Operation Controls ================== `configure' recognizes the following options to control how it operates. `--cache-file=FILE' Use and save the results of the tests in FILE instead of `./config.cache'. Set FILE to `/dev/null' to disable caching, for debugging `configure'. `--help' Print a summary of the options to `configure', and exit. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--version' Print the version of Autoconf used to generate the `configure' script, and exit. `configure' also accepts some other, not widely useful, options. lintian-2.5.22ubuntu1/t/tests/legacy-binary/debian/hello.c0000664000000000000000000000016412310413206020271 0ustar #include #include int main(int argc, char *argv[]) { printf("Hello, World!\n"); exit(0); } lintian-2.5.22ubuntu1/t/tests/legacy-binary/debian/Makefile0000664000000000000000000000025612310413206020464 0ustar all: hello hello-static hello: hello.c gcc hello.c -o hello hello-static: hello.c gcc -static hello.c -o hello-static clean: rm -f hello hello-static distclean: clean lintian-2.5.22ubuntu1/t/tests/legacy-binary/debian/debian/0000775000000000000000000000000012310413206020243 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-binary/debian/debian/hello.desktop0000664000000000000000000000036712310413206022747 0ustar # some random comment # [Foo Bar] [KDE Desktop Entry] Name=Hello Name[en_US]=Hello Comment=Say hello! Exec=kdesu hello Icon=hello Terminal=true Type=Application Categories=GNOME;GTK;System;Applet;X-Foo;Settings; Encoding=UTF-8 OnlyShowIn=GNOME; lintian-2.5.22ubuntu1/t/tests/legacy-binary/debian/debian/templates0000664000000000000000000000066012310413206022166 0ustar # The debconf templates defined here are the sort that you'd use if # providing a wordlist and an ispell dictionary for the language # "perl". This shouldn't trigger warnings about not using debconf-po. Template: shared/packages-ispell Type: text Description: Template: shared/packages-wordlist Type: text Description: Template: miscfiles/languages Type: text Default: perl (Pathologically Eclectic Rubbish Lister) Description: lintian-2.5.22ubuntu1/t/tests/legacy-binary/debian/debian/copyright0000664000000000000000000000106712310413206022202 0ustar hello.c is released under public domain. This 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. A reference to /usr/share/common-licenses/GPL-2 to make it look like this package is under the GPL and trigger the OpenSSL warning. Test for old FSF address: Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Test for deprecated ntionl ncoding. Improper capitalization of linux or debian isn't caught here. lintian-2.5.22ubuntu1/t/tests/legacy-binary/debian/debian/menu-method0000664000000000000000000000052412310413206022411 0ustar #!/usr/bin/install-menu # -*- mode: shell-script; -*- #I need menu-1! # !include notmenu.h compat="menu-2" outputencoding="UTF-8"; outputlanguage="C"; x11 = AppEntry("false"); text = AppEntry("true"); startmenu = ""; endmenu = ""; submenutitle = ""; rootprefix = "/var/lib/lintian/menu"; userprefix = ".local/share/lintian/menu"; lintian-2.5.22ubuntu1/t/tests/legacy-binary/debian/debian/changelog0000664000000000000000000000264412310413206022123 0ustar binary (4-1.1) unstable; urgency=low * I'm doing an comaintainer-upload, acknowledging a NMU, but with a version number which suggests I'm doing a NMU myself. Lintian-maintainers: Please don't update this changelog, otherwise you'll probably break the checks/nmu checks. -- Jeroen van Wolffelaar Sun, 18 Apr 2004 01:49:42 +0200 binary (4-1) unstable; urgency=low * Weird version number for the new check for accidents with native packaging. -- Marc 'HE' Brockschmidt The, 15 Apr 2004 23:33:51 +0200 binary (4) unstable; urgency=low * Add big file to /usr/share to trigger the big-usr-share check -- Jeroen van Wolffelaar Fri, 27 Feb 2004 10:15:59 +0100 binary (3) unstable; urgency=unlimited * Add some bogus menu entries using su-to-root in a bogus way -- Jeroen van Wolffelaar Thu, 12 Feb 2004 20:11:22 +0100 binary (2) unstable; urgency=low * Added an INSTALL document which policy 6.3 suggests not to do -- Sean 'Shaleh' Perry Tue, 30 Jan 2001 15:23:59 -0800 binary (1) unstable; urgency=low * hello.c added * hello-static is same as hello, but compiled statically * added a menu entry which lacks a Section * added a postinst * postinst calls suidregister which is no longer policy compliant -- Sean 'Shaleh' Perry Wed, 10 Jan 2001 08:55:34 -0800 lintian-2.5.22ubuntu1/t/tests/legacy-binary/debian/debian/rules0000775000000000000000000000646612310413206021337 0ustar #!/usr/bin/make -f tmp=debian/tmp # This reference to $(PWD) should not cause an error but the one below # should. build-arch: make echo $(PWD) build: build-arch clean: make -i clean rm -f debian/files debian/substvars binary-arch: build install -d $(tmp)/usr/bin install -d $(tmp)/boot/hello install -m 755 hello $(tmp)/usr/bin touch $(tmp)/usr/bin/iminusrbin chmod 755 $(tmp)/usr/bin/iminusrbin install -m 755 hello-static $(tmp)/usr/bin strip $(tmp)/usr/bin/hello-static install -m 755 hello-static $(tmp)/usr/bin/hello.static strip --remove-section=.comment --remove-section=.note $(tmp)/usr/bin/hello.static ln $(tmp)/usr/bin/hello.static $(tmp)/usr/bin/static-hello install -m 755 hello-static $(tmp)/boot/hello strip --remove-section=.comment --remove-section=.note $(tmp)/boot/hello/hello-static install -d $(tmp)/usr/share/doc/binary install -m 644 INSTALL $(tmp)/usr/share/doc/binary install -d $(tmp)/usr/share/doc/binary/html echo '' > $(tmp)/usr/share/doc/binary/html/index.html echo '' > $(tmp)/usr/share/doc/binary/html/ch1.html ln -s ../html/./ch1.html $(tmp)/usr/share/doc/binary/html/ch2.html ln -s /usr/share/doc/binary/htm/ch1.html $(tmp)/usr/share/doc/binary/html/ch3.html echo '' > $(tmp)/usr/share/doc/binary/html/ch5.html ln $(tmp)/usr/share/doc/binary/html/ch5.html \ $(tmp)/usr/share/doc/binary/html/ch6.html install -d $(tmp)/usr/share/menu install -d $(tmp)/usr/lib/menu install -d $(tmp)/usr/share/binary install -m 644 debian/menu $(tmp)/usr/share/menu/binary install -m 644 debian/menu $(tmp)/usr/lib/menu/binary install -d $(tmp)/etc/menu-methods install -m 755 debian/menu-method $(tmp)/etc/menu-methods/lintian install -d $(tmp)/usr/share/doc-base install -m 644 debian/doc-base $(tmp)/usr/share/doc-base/binary touch '$(tmp)/usr/share/doc-base/space ' install -m 644 debian/README.Debian $(tmp)/usr/share/doc/binary install -m 644 debian/NEWS.Debian $(tmp)/usr/share/doc/binary gzip -9 $(tmp)/usr/share/doc/binary/NEWS.Debian install -m 644 debian/copyright $(tmp)/usr/share/doc/binary install -m 644 debian/changelog $(tmp)/usr/share/doc/binary #gzip -9 $(tmp)/usr/share/doc/binary/changelog install -d $(tmp)/DEBIAN install -m 755 debian/postinst $(tmp)/DEBIAN install -m 644 debian/conffiles $(tmp)/DEBIAN install -d $(tmp)/usr/share/applications install -m 644 debian/hello.desktop \ $(tmp)/usr/share/applications/hello.desktop install -m 644 debian/hello.desktop \ $(tmp)/usr/share/applications/hello.kdelnk install -m 755 debian/goodbye.desktop \ $(tmp)/usr/share/applications/goodbye.desktop # should be ok... echo boe > $(tmp)/usr/bar ln $(tmp)/usr/bar $(tmp)/usr/foo # but this isn't echo boe > $(tmp)/usr/bar2 ln $(tmp)/usr/bar2 $(tmp)/usr/share/baz dd if=/dev/zero of=$(tmp)/usr/share/binary/largefile bs=1024 count=4000 install -d debian/binary-data/DEBIAN install -d debian/binary-data/usr/share/doc ln -s binary debian/binary-data/usr/share/doc/binary-data dpkg-shlibdeps $(tmp)/usr/bin/hello dpkg-gencontrol -pbinary -isp dpkg-gencontrol -pbinary-data -Pdebian/binary-data -isp # Test an md5sums check while we're here. touch debian/binary-data/DEBIAN/md5sums dpkg --build debian/tmp .. dpkg --build debian/binary-data .. binary: binary-arch .PHONY: build-arch build binary-arch binary clean lintian-2.5.22ubuntu1/t/tests/legacy-binary/debian/debian/NEWS.Debian0000664000000000000000000000053412310413206022125 0ustar binary (4-1.1) UNRELEASED; urgency=high This is a Debian NEWS entry that isn't encoded properly in UTF-8: . It also has a usefull speling error. -- Russ Allbery Sun, 14 Oct 2007 17:11:36 -0700 binary (1) unstable; urgency=low This is another entry but this one isn't syntactically valid. -- Russ Allbery 2007-10-14 lintian-2.5.22ubuntu1/t/tests/legacy-binary/debian/debian/doc-base0000664000000000000000000000177112310413206021651 0ustar Document: binary!docs Title: Broken debian binary doc-base control file Author: Russ Allbery Abstract: This control file exercises various tests of doc-base control files, including several things that aren't tested yet. The third and fourth one has trailing whitespace. . This section has a speling error and bad character. . The above separator was fine. Section: Non/Existant Unknown: Some field Format: debiandoc-sgML Files: /usr/share/doc/binary/binary.sgml.gz Unknown: Some field Format: ESP Index: /usr/share/doc/binary/binary.txt Index: /usr/share/doc/binary/html/index.html /usr/share/doc/binary/html/ch1.html /usr/share/doc/binary/html/ch4.html Format: HTML Index: /usr/share/doc/binary/html/index.html Files: /usr/share/doc/binary/html/ch?.h*l /usr/share/doc/binary/hml/*.html Format: inFO Files: /usr/share/info/binary.info.gz Format: HTML Index: /usr/share/doc/binary/html/index.html Files: /usr/share/doc/binary/html/ch5.html /usr/share/doc/binary/html/ch6.html lintian-2.5.22ubuntu1/t/tests/legacy-binary/debian/debian/control0000664000000000000000000000302112310413206021642 0ustar Source: binary Section: misc Priority: extra Maintainer: Lintian Maintainers Uploaders: Co-maintainer one , Jeroen van Wolffelaar , Co-maintainer three Standards-Version: 3.2.1 Homepage: http://lintian.debian.org/ Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk XS-Vcs-Browser: http://svn.wolffelaar.nl/lintian/trunk XS-Dm-Upload-Allowed: yes Package: binary Architecture: any Pre-Depends: ${shlibs:Depends}, xorg, binary-data (= ${Source-Version}), libssl0.9.8 Homepage: Vcs-Svn: http://svn.wolffelaar.nl/lintian/trunk Description: test handling of binary files Regression test for lintian's handling of binary files for debian. This is checked for picky spelling errors. . This package list [ subversion | gconf ] should not be flagged as a spelling mistake. The spelling correction for dont should be correct. . Homepage: http://lintian.debian.org/ Package: binary-data Architecture: all Depends: binary (= ${Source-Version}), libssl-not-openssl, libssl0.9.8 | or-something-else Description: test handling of binary relationships Regression test for lintian's checking of package relationships between arch:any and arch:all packages. . This mention of subversion should be flagged as a spelling mistake. #Package: binary-comment #Architecture: space-almonds #Depends: * #Depends: * #Description: test comment support # Yes, comments are actually allowed in debian/control, so none of the # above should produce errors. lintian-2.5.22ubuntu1/t/tests/legacy-binary/debian/debian/postinst0000664000000000000000000000013412310413206022047 0ustar #! /bin/bash -e if [ $1 eq 'configure' ] then suidregister hello-static root root 4755 fi lintian-2.5.22ubuntu1/t/tests/legacy-binary/debian/debian/goodbye.desktop0000664000000000000000000000035012310413206023264 0ustar [Desktop Entry] Name:Goodbye # Name=Goodbye Comment=Say hello! SpecialTag=This doesn't exist! Exec=goodbye icon=hello Terminal=true Type=Application Categories=WeirdStuff;Screensaver; Encoding=ISO-10646-1 [Other Entry] Name=Goodbye lintian-2.5.22ubuntu1/t/tests/legacy-binary/debian/debian/conffiles0000664000000000000000000000003212310413206022131 0ustar /etc/menu-methods/lintian lintian-2.5.22ubuntu1/t/tests/legacy-binary/debian/debian/README.Debian0000664000000000000000000000031612310413206022304 0ustar this is a binary package to test lintian's handling of bins. Check handling of D-Bus and dbus (neither of which should produce warnings). -- Russ Allbery , Wed, 6 Feb 2008 18:35:11 -0800 lintian-2.5.22ubuntu1/t/tests/legacy-binary/debian/debian/menu0000664000000000000000000000371712310413206021142 0ustar ?package(binary):needs=text title="Hello World" command="/usr/bin/hello" ?package(binary):needs=text section="Applications/System" title="Run cfdisk (0)" command="/usr/bin/su-to-root cfdisk" ?package(binary):needs="text" section="Applications/System/Hardware" title="Run cfdisk (1)" command="sux -p cfdisk" ?package(binary):needs="x11" section="Window Managers" title="Run xfdisk" command="/usr/sbin/su-to-root -c xfdisk" ?package(binary):needs="wm" section="Applications/System/Administration" title="Run fdisk-wm" command="su-to-root -c hello" ?package(binary):section="Apps/Games" title="I'm not root!" command="su-to-root -c imnothere" ?package(binary):needs="text" section="Apps/System" title="I'm not here!" command="/imnothere" ?package(binary,other-binary):\ needs="text"\ section="Applications/Shells"\ title="more than one required"\ command="other-bin -s omething" ?package(binary):needs="wmmodule" section="WindowManagers/Modules" title="somemodule" command="ModuleCmd" ?package(binary):needs="wmmodule" section="FVWM Modules" title="somemodule" command="ModuleCmd" ?package(binary):needs="text" section="Applications/System/Administration" title="I'm not in /usr/bin!" command="iminusrbin" ?package(binary):needs="text"\ section="Applications/System/Administration"\ title="I'm not root!" command="su-to-root -c imnothere" ?package(binary):needs="text" section="Applications/System/Administration"\ title="Run cfdisk (0)" command="cfdisk" ?package(binary):needs="text" section="Applications/System/Administration" title="Hello World" command="/usr/bin/hello" ?package(binary):needs="wm" section="FVWM Modules" title="Fake Module" command="hello" ?package(binary):needs="fvwmmodule" section="Window Maker" title="Fake Module"\ command="hello" ?package(binary):needs="x11" section="Applications/System/Hardware" title="Run xfdisk" command="su-to-root -c 'xfdisk -f'" ?package(binary):needs="text" section="Applications/System/Administration" title="foo" command="sh /path/to/foo" lintian-2.5.22ubuntu1/t/tests/debhelper-executable-files-compat-9/0000775000000000000000000000000012077065715021673 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-executable-files-compat-9/tags0000664000000000000000000000016212077065715022553 0ustar E: debhelper-executable-files-compat-9 source: executable-debhelper-file-without-being-executable debian/manpages lintian-2.5.22ubuntu1/t/tests/debhelper-executable-files-compat-9/desc0000664000000000000000000000041212077065715022531 0ustar Testname: debhelper-executable-files-compat-9 Sequence: 6000 Version: 1.0 Options: --suppress-tags package-needs-versioned-debhelper-build-depends Description: Tests related to executable packaging files Test-For: executable-debhelper-file-without-being-executable lintian-2.5.22ubuntu1/t/tests/debhelper-executable-files-compat-9/debian/0000775000000000000000000000000012077065715023115 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-executable-files-compat-9/debian/debian/0000775000000000000000000000000012077065715024337 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-executable-files-compat-9/debian/debian/compat0000664000000000000000000000000212077065715025535 0ustar 9 lintian-2.5.22ubuntu1/t/tests/debhelper-executable-files-compat-9/debian/debian/rules0000775000000000000000000000006712077065715025422 0ustar #!/usr/bin/make -f %: dh $@ override_dh_installman: lintian-2.5.22ubuntu1/t/tests/debhelper-executable-files-compat-9/debian/debian/manpages0000775000000000000000000000002612077065715026056 0ustar # /o\ this is bad... lintian-2.5.22ubuntu1/t/tests/debhelper-executable-files-compat-9/debian/debian/docs0000775000000000000000000000006112077065715025212 0ustar #! /bin/sh # This is acceptable (though useless) lintian-2.5.22ubuntu1/t/tests/legacy-debug/0000775000000000000000000000000012310413206015401 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-debug/post_test0000664000000000000000000000011312310413206017343 0ustar /: hardening-.*/ d s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/ lintian-2.5.22ubuntu1/t/tests/legacy-debug/pre_build0000775000000000000000000000006012310413206017270 0ustar #!/bin/sh DIR="$1" rm -f "$DIR/debian/compat" lintian-2.5.22ubuntu1/t/tests/legacy-debug/tags0000664000000000000000000000652512310413206016272 0ustar E: debug source: build-depends-indep-without-arch-indep E: debug source: version-substvar-for-external-package libhello0-dbg -> libhello E: hello-dbg: changelog-file-missing-in-native-package E: hello: binary-with-bad-dynamic-table usr/bin/hello.dbg E: hello: pkg-has-symbols-control-file-but-no-shared-libs E: hello: statically-linked-binary usr/bin/hello.dbg E: hello: unstripped-binary-or-object usr/bin/hello.dbg E: libhello0-dbg: binary-with-bad-dynamic-table usr/lib/libhello.so.dbg E: libhello0-dbg: missing-dependency-on-libc needed by usr/lib/debug/lib/libhello.so.0.0 and 1 others E: libhello0-dbg: sharedobject-in-library-directory-missing-soname usr/lib/libhello.so.dbg E: libhello0: duplicate-entry-in-symbols-control-file libhello 0 E: libhello0: invalid-template-id-in-symbols-file 12 E: libhello0: invalid-template-id-in-symbols-file 14 E: libhello0: invalid-template-id-in-symbols-file 4 E: libhello0: symbols-declared-but-not-shlib libhello 2 E: libhello0: syntax-error-in-symbols-file 1 E: libhello0: syntax-error-in-symbols-file 11 E: libhello0: syntax-error-in-symbols-file 15 E: libhello0: syntax-error-in-symbols-file 19 E: libhello0: syntax-error-in-symbols-file 3 E: libhello0: syntax-error-in-symbols-file 4 E: libhello0: unknown-meta-field-in-symbols-file Build-Dep-Foo, line 11 W: debug source: ancient-standards-version 3.7.0 (current is CURRENT) W: debug source: changelog-should-not-mention-nmu W: debug source: dbg-package-missing-depends hi-dbg W: debug source: dbg-package-missing-depends libhello0-dbg W: debug source: debhelper-but-no-misc-depends hello-hello-dbg W: debug source: debhelper-but-no-misc-depends hi-dbg W: debug source: debhelper-compat-file-is-missing W: debug source: debian-rules-sets-DH_COMPAT line 5 W: debug source: timewarp-standards-version (2006-04-04 < 2006-04-26) W: hello-dbg: debug-file-with-no-debug-symbols usr/lib/debug/usr/bin/hello W: hello-hello-dbg: latest-debian-changelog-entry-without-new-version W: hello: binary-without-manpage usr/bin/hello W: hello: binary-without-manpage usr/bin/hello.dbg W: hello: latest-debian-changelog-entry-without-new-version W: hi-dbg: latest-debian-changelog-entry-without-new-version W: libhello0-dbg: debug-file-should-use-detached-symbols usr/lib/debug/lib/libhello.so.0.0 W: libhello0-dbg: debug-file-with-no-debug-symbols usr/lib/debug/lib/libhello.so.0.0 W: libhello0-dbg: debug-file-with-no-debug-symbols usr/lib/debug/usr/lib/libhello.so.0.0 W: libhello0-dbg: latest-debian-changelog-entry-without-new-version W: libhello0-dbg: shared-lib-without-dependency-information usr/lib/libhello.so.dbg W: libhello0: latest-debian-changelog-entry-without-new-version W: libhello0: symbols-declares-dependency-on-other-package foobar (= 1.2) W: libhello0: symbols-declares-dependency-on-other-package hello-dbg W: libhello0: symbols-declares-dependency-on-other-package hello-dbg2 W: libhello0: symbols-declares-dependency-on-other-package hello-dbg3 W: libhello0: symbols-declares-dependency-on-other-package libhello0c2 (>= 1.2) W: libhello0: symbols-declares-dependency-on-other-package libhello2 #MINVER# W: libhello0: symbols-declares-dependency-on-other-package libhello2 (>= 1:2.3) W: libhello0: symbols-declares-dependency-on-other-package libhelloc0c2 (<< 1.3) W: libhello0: symbols-declares-dependency-on-other-package libhelloc0c3 W: libhello0: unused-shlib-entry-in-symbols-control-file libhello 2 lintian-2.5.22ubuntu1/t/tests/legacy-debug/desc0000664000000000000000000000014212310413206016237 0ustar Testname: legacy-debug Source: debug Sequence: 9999 Version: 1.0 Description: Legacy test "debug" lintian-2.5.22ubuntu1/t/tests/legacy-debug/debian/0000775000000000000000000000000012310413206016623 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-debug/debian/libhello.c0000664000000000000000000000010512310413206020555 0ustar #include void hello(void) { printf("Hello, World!\n"); } lintian-2.5.22ubuntu1/t/tests/legacy-debug/debian/hello.c0000664000000000000000000000012212310413206020065 0ustar #include #include "libhello.h" int main(void) { hello(); exit(0); } lintian-2.5.22ubuntu1/t/tests/legacy-debug/debian/libhello.h0000664000000000000000000000002212310413206020560 0ustar void hello(void); lintian-2.5.22ubuntu1/t/tests/legacy-debug/debian/debian/0000775000000000000000000000000012310413206020045 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-debug/debian/debian/_symbols0000664000000000000000000000104212310413206021614 0ustar This line should flag a syntax error # but this one shouldn't | although this one should, but for a different reason and so should this libhello.so.0 libhello0 #MINVER# | libhello0c2 (>= 1.2) , libhelloc0c2 (<< 1.3) | hello-dbg3| libhelloc0c3|foobar (= 1.2) |hello-dbg2 | hello-dbg hello@Base 1.0 * Build-Dep-Foo: bar hello2@Base 2.0 4 hello3@Base 2.0 1 hello3@Base 2.0 A dummy libhello.so.2 libhello2 #MINVER# * Build-Depends-Package: libbar | libhello2 (>= 1:2.3) hello@Base 2.0 libhello.so.0 libhello0 #MINVER# duplicate@Base 1.0 lintian-2.5.22ubuntu1/t/tests/legacy-debug/debian/debian/copyright0000664000000000000000000000023012310413206021773 0ustar Written Sat, 04 Mar 2006 21:30:01 -0800 by Russ Allbery . Test for copyright in capital letters. (#464992) COPYRIGHT RUSS ALLBERY 2006 lintian-2.5.22ubuntu1/t/tests/legacy-debug/debian/debian/changelog0000664000000000000000000000046012310413206021717 0ustar debug (1.0) unstable; urgency=low * NMU. (uploaded by the maintainer and with repeated version number) -- Russ Allbery Tue, 4 Apr 2006 20:27:22 +0000 debug (1.0) unstable; urgency=low * Initial version. -- Russ Allbery Sat, 4 Mar 2006 21:31:06 -0800 lintian-2.5.22ubuntu1/t/tests/legacy-debug/debian/debian/rules0000775000000000000000000000517612310413206021136 0ustar #!/usr/bin/make -f # Sample debian/rules that uses debhelper. # This file is public domain software, originally written by Joey Hess. export DH_COMPAT := 5 build-indep: build-arch: build-stamp build-stamp: dh_testdir gcc -D_REENTRANT -fPIC -c libhello.c gcc -o libhello.so.0.0 -shared -Wl,-soname,libhello.so.0 libhello.o ln -s libhello.so.0.0 libhello.so gcc -o hello hello.c -L. -lhello touch build-stamp build: build-arch build-indep clean: dh_testdir dh_testroot rm -f build-stamp *.o libhello.so.0.0 dh_clean install: build-stamp dh_testdir dh_testroot dh_clean -k install -D hello $(CURDIR)/debian/hello/usr/bin/hello install -D libhello.so.0.0 \ $(CURDIR)/debian/libhello0/usr/lib/libhello.so.0.0 ln -s libhello.so.0.0 \ $(CURDIR)/debian/libhello0/usr/lib/libhello.so.0 # Build architecture-dependent files here. export DH_OPTIONS binary-arch: DH_OPTIONS=-a binary-arch: build-stamp install dh_testdir dh_testroot dh_installchangelogs -N hello-dbg dh_installdocs DH_OPTIONS= dh_strip -phello --dbg-package=hello-dbg DH_OPTIONS= dh_strip -plibhello0 --dbg-package=libhello0-dbg # Now break a few things. Copy the debugging data into places it # shouldn't be. cp $(CURDIR)/debian/hello-dbg/usr/lib/debug/usr/bin/hello \ $(CURDIR)/debian/hello/usr/bin/hello.dbg cp $(CURDIR)/debian/libhello0-dbg/usr/lib/debug/usr/lib/libhello.so.0.0 \ $(CURDIR)/debian/libhello0-dbg/usr/lib/libhello.so.dbg # Put a full copy of the library in libhello0-dbg in /usr/lib/debug, # which is okay. install -m 644 libhello.so.0.0 \ $(CURDIR)/debian/libhello0-dbg/usr/lib/debug/libhello.so.0.0 # Also put it in /usr/lib/debug/lib, which isn't. install -D -m 644 libhello.so.0.0 \ $(CURDIR)/debian/libhello0-dbg/usr/lib/debug/lib/libhello.so.0.0 # Requires a versioned dependency. dh_icons dh_link dh_compress dh_fixperms dh_makeshlibs -X debug dh_installdeb dh_shlibdeps -X debug # We do this by hand as otherwise dpkg-gensymbols # will error due to the broken symbols file # and abort the build; similarly the file in # the source tree is _symbols so that dpkg # doesn't attempt to sanity check it install -d $(CURDIR)/debian/libhello0/DEBIAN install -m 644 $(CURDIR)/debian/_symbols \ $(CURDIR)/debian/libhello0/DEBIAN/symbols # hello doesn't contain any shlibs, but we # make it contain a symbols file install -d $(CURDIR)/debian/hello/DEBIAN install -m 644 $(CURDIR)/debian/_symbols \ $(CURDIR)/debian/hello/DEBIAN/symbols dh_gencontrol dh_md5sums dh_builddeb binary-indep: binary: binary-indep binary-arch .PHONY: build-arch build-indep build binary binary-indep binary-arch clean install lintian-2.5.22ubuntu1/t/tests/legacy-debug/debian/debian/control0000664000000000000000000000613512310413206021455 0ustar Source: debug Section: utils Priority: optional Maintainer: Russ Allbery Build-Depends: debhelper (>= 5.0.0) Build-Depends-Indep: not-debhelper (>= 0.4.3) Standards-Version: 3.7.0 Package: hello Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: Test for external debugging information Lintian regression test for external debugging file handling. This test contains the binary. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: hello-dbg Priority: extra Section: debug Architecture: any Depends: hello (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} Description: Test for external debugging information (symbols) Lintian regression test for external debugging file handling. This test contains the binary symbols. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: libhello0 Section: libs Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: Test for external debugging information (library) Lintian regression test for external debugging file handling. This test contains a library. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: libhello0-dbg Section: debug Priority: extra Architecture: any Depends: libhello (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends} Description: Test for external debugging information (library symbols) Lintian regression test for external debugging file handling. This test contains the library symbols. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: hi-dbg Section: debug Priority: extra Architecture: any Depends: foo-pkg, not-libhello0 Description: Test for external debugging symbols Lintian regression test for external debugging files handling. This test contains the library symbols. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: hello-hello-dbg Section: debug Priority: extra Architecture: any Depends: foo-pkg, not-libhello0, hello Description: Test for external debugging symbols - another try Lintian regression test for external debugging files handling. This test contains the library symbols. This package actually tests a combination of the above. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/symlinks-broken/0000775000000000000000000000000012310413146016203 5ustar lintian-2.5.22ubuntu1/t/tests/symlinks-broken/tags0000664000000000000000000000050012310413146017057 0ustar W: broken-links: package-contains-broken-symlink-wildcard usr/lib/broken-links/some-other.conf etc/some-*.conf X: broken-links: package-contains-broken-symlink usr/lib/broken-links/some.conf etc/some.conf X: broken-links: package-contains-broken-symlink usr/lib/broken-links/some.data ../../share/broken-links/some.data lintian-2.5.22ubuntu1/t/tests/symlinks-broken/desc0000664000000000000000000000026612310413146017050 0ustar Testname: symlinks-broken Sequence: 6000 Version: 1.0 Description: General tests broken symlinks Test-For: package-contains-broken-symlink package-contains-broken-symlink-wildcard lintian-2.5.22ubuntu1/t/tests/symlinks-broken/debian/0000775000000000000000000000000012077065716017445 5ustar lintian-2.5.22ubuntu1/t/tests/symlinks-broken/debian/valid.conf0000664000000000000000000000003512077065716021411 0ustar # lalalalal - some conf file lintian-2.5.22ubuntu1/t/tests/symlinks-broken/debian/debian/0000775000000000000000000000000012310413206020644 5ustar lintian-2.5.22ubuntu1/t/tests/symlinks-broken/debian/debian/broken-links.links0000664000000000000000000000056412310413146024314 0ustar # broken links usr/share/broken-links/some.data usr/lib/broken-links/some.data etc/some.conf usr/lib/broken-links/some.conf # At the time of writing, debhelper does not expand wildcard in # links files. etc/some-*.conf usr/lib/broken-links/some-other.conf # valid links usr/share/data-pkg/valid.data usr/lib/data-pkg/valid.data etc/valid.conf usr/lib/data-pkg/valid.conf lintian-2.5.22ubuntu1/t/tests/symlinks-broken/debian/debian/control.in0000664000000000000000000000154512310413206022661 0ustar Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: broken-links Architecture: all Depends: $\{misc:Depends\}, data-pkg Description: {$description} - symlinks This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . Contains only symlinks. Package: data-pkg Architecture: all Depends: $\{misc:Depends\} Description: {$description} - data This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . Contains actual files. lintian-2.5.22ubuntu1/t/tests/symlinks-broken/debian/debian/data-pkg.install0000664000000000000000000000005712077065716023751 0ustar valid.conf etc/ valid.data usr/share/data-pkg/ lintian-2.5.22ubuntu1/t/tests/symlinks-broken/debian/valid.data0000664000000000000000000000002612077065716021375 0ustar Hallo world data file lintian-2.5.22ubuntu1/t/tests/files-override-misplaced/0000775000000000000000000000000012077065715017751 5ustar lintian-2.5.22ubuntu1/t/tests/files-override-misplaced/tags0000664000000000000000000000055512077065715020637 0ustar E: files-override-misplaced: override-file-in-wrong-location usr/share/doc/files-override-misplaced/override.Lintian.gz E: files-override-misplaced: override-file-in-wrong-location usr/share/doc/files-override-misplaced/override.lintian E: files-override-misplaced: override-file-in-wrong-location usr/share/lintian/overrides/files-override-misplaced/some-override lintian-2.5.22ubuntu1/t/tests/files-override-misplaced/desc0000664000000000000000000000024212077065715020610 0ustar Testname: files-override-misplaced Sequence: 6000 Version: 1.0 Description: Check for misplaced override file detection Test-For: override-file-in-wrong-location lintian-2.5.22ubuntu1/t/tests/files-override-misplaced/debian/0000775000000000000000000000000012077065715021173 5ustar lintian-2.5.22ubuntu1/t/tests/files-override-misplaced/debian/Makefile0000664000000000000000000000124512077065715022635 0ustar ROOT = $(DESTDIR)/usr/share/doc/files-override-misplaced default: : install: mkdir -p $(DESTDIR)/usr/share/doc/files-override-misplaced echo 'files-override-misplaced: some-override' \ > $(DESTDIR)/usr/share/doc/files-override-misplaced/override.lintian echo 'files-override-misplaced: some-override' \ > $(DESTDIR)/usr/share/doc/files-override-misplaced/override.Lintian gzip -9 $(DESTDIR)/usr/share/doc/files-override-misplaced/override.Lintian mkdir -p $(DESTDIR)/usr/share/lintian/overrides/files-override-misplaced touch $(DESTDIR)/usr/share/lintian/overrides/files-override-misplaced/some-override .PHONY: clean distclean realclean install check test lintian-2.5.22ubuntu1/t/tests/debhelper-dh-with-quilt/0000775000000000000000000000000012077065715017523 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-dh-with-quilt/tags0000664000000000000000000000013012077065715020376 0ustar E: debhelper-dh-with-quilt source: missing-build-dependency-for-dh-addon quilt => quilt lintian-2.5.22ubuntu1/t/tests/debhelper-dh-with-quilt/desc0000664000000000000000000000025512077065715020366 0ustar Testname: debhelper-dh-with-quilt Sequence: 6000 Version: 1.0 Description: Check dependency requirements for dh --with quilt Test-For: missing-build-dependency-for-dh-addon lintian-2.5.22ubuntu1/t/tests/debhelper-dh-with-quilt/debian/0000775000000000000000000000000012077065715020745 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-dh-with-quilt/debian/debian/0000775000000000000000000000000012077065715022167 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-dh-with-quilt/debian/debian/rules0000775000000000000000000000005212077065715023244 0ustar #!/usr/bin/make -f %: dh $@ --with quilt lintian-2.5.22ubuntu1/t/tests/rules-including-deprecated-makefiles/0000775000000000000000000000000012077065715022233 5ustar lintian-2.5.22ubuntu1/t/tests/rules-including-deprecated-makefiles/tags0000664000000000000000000000021012077065715023105 0ustar W: rules-including-deprecated-makefiles source: debian-rules-uses-deprecated-makefile line 4 /usr/share/cdbs/1/rules/simple-patchsys.mk lintian-2.5.22ubuntu1/t/tests/rules-including-deprecated-makefiles/desc0000664000000000000000000000027512077065715023100 0ustar Testname: rules-including-deprecated-makefiles Sequence: 6000 Version: 1.0 Description: Test for debian/rules with deprecated included file Test-For: debian-rules-uses-deprecated-makefile lintian-2.5.22ubuntu1/t/tests/rules-including-deprecated-makefiles/debian/0000775000000000000000000000000012077065715023455 5ustar lintian-2.5.22ubuntu1/t/tests/rules-including-deprecated-makefiles/debian/debian/0000775000000000000000000000000012310413206024655 5ustar lintian-2.5.22ubuntu1/t/tests/rules-including-deprecated-makefiles/debian/debian/control.in0000664000000000000000000000072612310413206026672 0ustar Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), cdbs Package: {$source} Architecture: all Depends: $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/rules-including-deprecated-makefiles/debian/debian/rules0000775000000000000000000000016512077065715025761 0ustar #!/usr/bin/make -f include /usr/share/cdbs/1/rules/debhelper.mk include /usr/share/cdbs/1/rules/simple-patchsys.mk lintian-2.5.22ubuntu1/t/tests/legacy-fields/0000775000000000000000000000000012310413206015561 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-fields/post_test0000664000000000000000000000007012310413206017525 0ustar s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/ lintian-2.5.22ubuntu1/t/tests/legacy-fields/pre_build0000775000000000000000000000006012310413206017450 0ustar #!/bin/sh DIR="$1" rm -f "$DIR/debian/compat" lintian-2.5.22ubuntu1/t/tests/legacy-fields/tags0000664000000000000000000000211112310413206016435 0ustar E: another-version: debian-changelog-file-missing E: another-version: debian-revision-should-not-be-zero 123.4-0 E: another-version: new-essential-package E: another-version: no-copyright-file E: fields source: missing-build-dependency debhelper E: fields source: package-uses-debhelper-but-lacks-build-depends E: fields: debian-changelog-file-missing-or-wrong-name E: fields: depends-on-python-minimal depends E: fields: no-copyright-file W: fields source: ancient-standards-version 3.9.2 (current is CURRENT) W: fields source: changelog-should-mention-nmu W: fields source: debhelper-but-no-misc-depends another-version W: fields source: debhelper-but-no-misc-depends fields W: fields source: debhelper-compat-file-is-missing W: fields source: debian-revision-not-well-formed 1.5-.3 W: fields source: native-package-with-dash-version W: fields source: package-uses-deprecated-debhelper-compat-version 1 W: fields source: source-nmu-has-incorrect-version-number 1.5-.3 W: fields: debian-revision-not-well-formed 1.5-.3 W: fields: essential-no-not-needed W: fields: unknown-section does-not-exist lintian-2.5.22ubuntu1/t/tests/legacy-fields/desc0000664000000000000000000000015012310413206016416 0ustar Testname: legacy-fields Source: fields Sequence: 9999 Version: 1.5-.3 Description: Legacy test "fields" lintian-2.5.22ubuntu1/t/tests/legacy-fields/debian/0000775000000000000000000000000012310413206017003 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-fields/debian/debian/0000775000000000000000000000000012310413206020225 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-fields/debian/debian/changelog0000664000000000000000000000051612310413206022101 0ustar fields (1.5-.3) unstable; urgency=low * This package adds tests for the following tags: - debian-revision-not-well-formed - depends-on-python-minimal - essential-no-not-needed - debian-revision-should-not-be-zero - new-essential-package -- Tobias Quathamer Sun, 10 Apr 2011 14:30:00 +0100 lintian-2.5.22ubuntu1/t/tests/legacy-fields/debian/debian/rules0000775000000000000000000000132112310413206021302 0ustar #!/usr/bin/make -f tmp=debian/tmp build-arch: build-indep: build: build-arch build-indep binary-arch: binary-indep: install -d $(tmp)/usr/share/doc/fields install -m 644 debian/changelog \ $(tmp)/usr/share/doc/fields/changelog gzip -9 $(tmp)/usr/share/doc/fields/changelog dh_md5sums -pfields -P$(tmp) dpkg-gencontrol -pfields -P$(tmp) dpkg --build $(tmp) .. rm -rf $(tmp) # Create another package with a different version dh_md5sums -panother-version -P$(tmp) dpkg-gencontrol -panother-version -v123.4-0 -P$(tmp) dpkg --build $(tmp) .. binary: binary-arch binary-indep clean: rm -rf debian/files $(tmp) debian/substvars .PHONY: build-arch build-indep build binary-arch binary-indep binary clean lintian-2.5.22ubuntu1/t/tests/legacy-fields/debian/debian/control0000664000000000000000000000161512310413206021633 0ustar Source: fields Section: does-not-exist Priority: standard Maintainer: Lintian Maintainers Standards-Version: 3.9.2 Package: fields Essential: no Architecture: all Depends: python-minimal Description: Generate some errors This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: another-version Essential: yes Section: admin Architecture: all Description: Also generate some errors This package gets another version number and tries to sneak in a new essential package. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/fields-no-homepage/0000775000000000000000000000000012310413206016514 5ustar lintian-2.5.22ubuntu1/t/tests/fields-no-homepage/tags0000664000000000000000000000015412310413206017375 0ustar P: fields-no-homepage source: debian-watch-may-check-gpg-signature P: fields-no-homepage: no-homepage-field lintian-2.5.22ubuntu1/t/tests/fields-no-homepage/desc0000664000000000000000000000031412077065715017375 0ustar Testname: fields-no-homepage Sequence: 6000 Type: non-native Description: Test pedantic check for no Homepage field Version: 1.0-1 Options: -I -E --pedantic Skeleton: pedantic Test-For: no-homepage-field lintian-2.5.22ubuntu1/t/tests/fields-no-homepage/debian/0000775000000000000000000000000012077065715017760 5ustar lintian-2.5.22ubuntu1/t/tests/fields-no-homepage/debian/debian/0000775000000000000000000000000012310413206021160 5ustar lintian-2.5.22ubuntu1/t/tests/fields-no-homepage/debian/debian/control.in0000664000000000000000000000074012310413206023171 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/source-copyright-dep5-general/0000775000000000000000000000000012310413146020630 5ustar lintian-2.5.22ubuntu1/t/tests/source-copyright-dep5-general/tags0000664000000000000000000000224012310413146021507 0ustar I: source-copyright-dep5-general source: unused-license-paragraph-in-dep5-copyright bsd-3 (paragraph at line 22) I: source-copyright-dep5-general source: unused-license-paragraph-in-dep5-copyright expat (paragraph at line 44) W: source-copyright-dep5-general source: ambiguous-paragraph-in-dep5-copyright paragraph at line 22 W: source-copyright-dep5-general source: comma-separated-files-in-dep5-copyright paragraph at line 8 W: source-copyright-dep5-general source: missing-field-in-dep5-copyright copyright (paragraph at line 15) W: source-copyright-dep5-general source: missing-field-in-dep5-copyright license (paragraph at line 12) W: source-copyright-dep5-general source: missing-license-paragraph-in-dep5-copyright mit (paragraph at line 18) W: source-copyright-dep5-general source: missing-license-text-in-dep5-copyright bsd-3 (paragraph at line 22) W: source-copyright-dep5-general source: missing-license-text-in-dep5-copyright gpl-3 (paragraph at line 42) W: source-copyright-dep5-general source: obsolete-field-in-dep5-copyright upstream-maintainer upstream-contact (line 3) W: source-copyright-dep5-general source: unknown-paragraph-in-dep5-copyright paragraph at line 6 lintian-2.5.22ubuntu1/t/tests/source-copyright-dep5-general/desc0000664000000000000000000000070512310413146021473 0ustar Testname: source-copyright-dep5-general Sequence: 6000 Version: 1.0 Description: Test for various errors in DEP-5 copyright files Test-For: ambiguous-paragraph-in-dep5-copyright comma-separated-files-in-dep5-copyright missing-field-in-dep5-copyright missing-license-paragraph-in-dep5-copyright missing-license-text-in-dep5-copyright obsolete-field-in-dep5-copyright unknown-paragraph-in-dep5-copyright unused-license-paragraph-in-dep5-copyright lintian-2.5.22ubuntu1/t/tests/source-copyright-dep5-general/debian/0000775000000000000000000000000012077065716022072 5ustar lintian-2.5.22ubuntu1/t/tests/source-copyright-dep5-general/debian/debian/0000775000000000000000000000000012310413146023274 5ustar lintian-2.5.22ubuntu1/t/tests/source-copyright-dep5-general/debian/debian/copyright0000664000000000000000000000472712310413146025241 0ustar Format: http://anonscm.debian.org/viewvc/dep/web/deps/dep5.mdwn?revision=174 Upstream-Name: Doohickey Upstream-Maintainer: J. Random Hacker Source: http://examples.com/doohickey/source/ Comment: I'm a bogus paragraph. Files: a/*, b/* Copyright: 2011 J. Random Hacker License: GPL-2 Files: c Copyright: 2010 J. Random Hacker Files: d License: GPL-3 Files: 5 License: MIT Copyright: 2010 J. Random Hacker Comment: Oops, missing a Files for this paragraph. License: BSD-3 Copyright: 2010 J. Random Hacker License: GPL-2 This package 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; version 2 dated June, 1991. . This package 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 package; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. . On Debian systems, the full text of the GNU General Public License version 2 can be found in the file `/usr/share/common-licenses/GPL-2'. License: GPL-3 License: Expat Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: . The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. . THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. lintian-2.5.22ubuntu1/t/tests/rules-ignores-error-clean/0000775000000000000000000000000012077065715020100 5ustar lintian-2.5.22ubuntu1/t/tests/rules-ignores-error-clean/tags0000664000000000000000000000012212077065715020754 0ustar W: rules-ignores-error-clean source: debian-rules-ignores-make-clean-error line 6 lintian-2.5.22ubuntu1/t/tests/rules-ignores-error-clean/desc0000664000000000000000000000024212077065715020737 0ustar Testname: rules-ignores-error-clean Sequence: 6000 Version: 1.0 Description: Check for rules ignoring clean error Test-For: debian-rules-ignores-make-clean-error lintian-2.5.22ubuntu1/t/tests/rules-ignores-error-clean/debian/0000775000000000000000000000000012077065715021322 5ustar lintian-2.5.22ubuntu1/t/tests/rules-ignores-error-clean/debian/Makefile0000664000000000000000000000002112077065715022753 0ustar all: distclean: lintian-2.5.22ubuntu1/t/tests/rules-ignores-error-clean/debian/debian/0000775000000000000000000000000012077065715022544 5ustar lintian-2.5.22ubuntu1/t/tests/rules-ignores-error-clean/debian/debian/rules0000775000000000000000000000011412077065715023620 0ustar #!/usr/bin/make -f %: dh $@ override_dh_auto_clean: -$(MAKE) distclean lintian-2.5.22ubuntu1/t/tests/watch-file-old-upstream-version/0000775000000000000000000000000012310413205021170 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-old-upstream-version/tags0000664000000000000000000000014712077065716022077 0ustar W: watch-file-old-upstream-version source: debian-watch-file-specifies-old-upstream-version 1.0 line 3 lintian-2.5.22ubuntu1/t/tests/watch-file-old-upstream-version/desc0000664000000000000000000000030612077065716022054 0ustar Testname: watch-file-old-upstream-version Sequence: 6000 Type: non-native Version: 2.0-1 Description: Watch file with old upstream version Test-For: debian-watch-file-specifies-old-upstream-version lintian-2.5.22ubuntu1/t/tests/watch-file-old-upstream-version/debian/0000775000000000000000000000000012077065716022436 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-old-upstream-version/debian/debian/0000775000000000000000000000000012310413206023635 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-old-upstream-version/debian/debian/changelog.in0000664000000000000000000000047312310413206026120 0ustar {$source} ({$version}) unstable; urgency=low * New upstream release. * Lintian Test Suite. * Test: {$testname} * We forgot to update the watch file, lalala. -- {$author} {$date} {$source} (1.0-1) unstable; urgency=low * An earlier non-native version. -- {$author} Tue, 1 Jan 2008 22:45:57 +0000 lintian-2.5.22ubuntu1/t/tests/watch-file-old-upstream-version/debian/debian/watch0000664000000000000000000000012012077065716024702 0ustar version=3 http://www.example.com/dist/ dh7-test\.([\d.]+)\.tar\.gz 1.0 uupdate lintian-2.5.22ubuntu1/t/tests/manpages-wrong-dir/0000775000000000000000000000000012077065715016574 5ustar lintian-2.5.22ubuntu1/t/tests/manpages-wrong-dir/tags0000664000000000000000000000024212077065715017453 0ustar E: manpages-wrong-dir: manpage-in-wrong-directory usr/share/man/man-lintian/zecho.1.gz E: manpages-wrong-dir: manpage-in-wrong-directory usr/share/man/zecho.1.gz lintian-2.5.22ubuntu1/t/tests/manpages-wrong-dir/desc0000664000000000000000000000021312077065715017431 0ustar Testname: manpages-wrong-dir Sequence: 6000 Version: 1.0 Description: Test for manpages in wrong dirs Test-For: manpage-in-wrong-directory lintian-2.5.22ubuntu1/t/tests/manpages-wrong-dir/debian/0000775000000000000000000000000012077065715020016 5ustar lintian-2.5.22ubuntu1/t/tests/manpages-wrong-dir/debian/Makefile0000664000000000000000000000025712077065715021462 0ustar all: pecho.1.gz zecho.1.gz %.gz: % gzip --best $< %.1: % pod2man --section 1 $< > $@ zecho: pecho sed s/$ $@ chmod 0755 $@ clean: rm -f pecho.1.gz zecho* lintian-2.5.22ubuntu1/t/tests/manpages-wrong-dir/debian/pecho0000664000000000000000000000043212077065715021036 0ustar #!/usr/bin/perl use strict; use warnings; print join(' ', @ARGV), "\n"; =head1 NAME pecho - POSIX compliant Perl implementation of echo =head1 SYNOPSIS pecho [args ...] =head1 DESCRIPTION Prints arguments to stdout. =head1 AUTHORS Niels Thykier =cut lintian-2.5.22ubuntu1/t/tests/manpages-wrong-dir/debian/debian/0000775000000000000000000000000012077065715021240 5ustar lintian-2.5.22ubuntu1/t/tests/manpages-wrong-dir/debian/debian/install0000664000000000000000000000007612077065715022634 0ustar zecho.1.gz usr/share/man zecho.1.gz usr/share/man/man-lintian lintian-2.5.22ubuntu1/t/tests/files-python-modules/0000775000000000000000000000000012077065715017162 5ustar lintian-2.5.22ubuntu1/t/tests/files-python-modules/tags0000664000000000000000000000122512077065715020043 0ustar W: python-foo: python-module-in-wrong-location usr/lib/python2.5/dist-packages/python-foo usr/lib/python2.5/site-packages/python-foo W: python-foo: python-module-in-wrong-location usr/lib/python2.6/site-packages/python-foo usr/lib/python2.6/dist-packages/python-foo W: python-foo: python-module-in-wrong-location usr/lib/python2.7/site-packages/python-foo usr/lib/python2.7/dist-packages/python-foo W: python-foo: python-module-in-wrong-location usr/lib/python3.2/dist-packages/python-foo usr/lib/python3/dist-packages/python-foo W: python-foo: python-module-in-wrong-location usr/lib/python3.2/site-packages/python-foo usr/lib/python3/dist-packages/python-foo lintian-2.5.22ubuntu1/t/tests/files-python-modules/desc0000664000000000000000000000023212077065715020020 0ustar Testname: files-python-modules Sequence: 6000 Version: 1.0 Description: Test tags for misplaced Python modules Test-For: python-module-in-wrong-location lintian-2.5.22ubuntu1/t/tests/files-python-modules/debian/0000775000000000000000000000000012077065715020404 5ustar lintian-2.5.22ubuntu1/t/tests/files-python-modules/debian/debian/0000775000000000000000000000000012310413206021604 5ustar lintian-2.5.22ubuntu1/t/tests/files-python-modules/debian/debian/install0000664000000000000000000000063512077065715023223 0ustar # GOOD python-foo /usr/lib/python2.5/site-packages/ python-foo /usr/lib/python2.6/dist-packages/ python-foo /usr/lib/python2.7/dist-packages/ python-foo /usr/lib/python3/dist-packages/ # BAD python-foo usr/lib/python2.5/dist-packages/ python-foo usr/lib/python2.6/site-packages/ python-foo usr/lib/python2.7/site-packages/ python-foo usr/lib/python3.2/dist-packages/ python-foo usr/lib/python3.2/site-packages/ lintian-2.5.22ubuntu1/t/tests/files-python-modules/debian/debian/control.in0000664000000000000000000000072212310413206023615 0ustar Source: {$source} Priority: extra Section: python Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: python-foo Architecture: all Depends: $\{misc:Depends\}, Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/files-python-modules/debian/debian/rules0000664000000000000000000000006712077065715022706 0ustar #!/usr/bin/make -f %: dh $@ override_dh_pysupport: lintian-2.5.22ubuntu1/t/tests/files-python-modules/debian/python-foo0000664000000000000000000000001412077065715022424 0ustar Hallo World lintian-2.5.22ubuntu1/t/tests/files-pkgconfig/0000775000000000000000000000000012310413145016122 5ustar lintian-2.5.22ubuntu1/t/tests/files-pkgconfig/tags0000664000000000000000000000013212310413145016777 0ustar E: pkgconfig-all: pkg-config-multi-arch-wrong-dir usr/lib/pkgconfig/indep-include-arch.pc lintian-2.5.22ubuntu1/t/tests/files-pkgconfig/desc0000664000000000000000000000022712310413145016764 0ustar Testname: files-pkgconfig Sequence: 6000 Version: 1.0 Description: Check for detection of pkgconfig problem Test-For: pkg-config-multi-arch-wrong-dir lintian-2.5.22ubuntu1/t/tests/files-pkgconfig/debian/0000775000000000000000000000000012310413145017344 5ustar lintian-2.5.22ubuntu1/t/tests/files-pkgconfig/debian/generated/0000775000000000000000000000000012310413145021302 5ustar lintian-2.5.22ubuntu1/t/tests/files-pkgconfig/debian/generated/arch-good.pc.in0000664000000000000000000000015612310413145024100 0ustar Name: indep-good Description: A library good Requires: Version: 3.1.3 Libs: Cflags: -I/usr/include/indep-good lintian-2.5.22ubuntu1/t/tests/files-pkgconfig/debian/generated/indep-include-arch.pc.in0000664000000000000000000000023412310413145025665 0ustar Name: indep-include-arch Description: A library that include some arch dir Requires: Version: 3.1.3 Libs: Cflags: -I/usr/include/$(ARCH)/indep-include-arch lintian-2.5.22ubuntu1/t/tests/files-pkgconfig/debian/indep-good.pc0000664000000000000000000000015612310413145021717 0ustar Name: indep-good Description: A library good Requires: Version: 3.1.3 Libs: Cflags: -I/usr/include/indep-good lintian-2.5.22ubuntu1/t/tests/files-pkgconfig/debian/Makefile0000664000000000000000000000104412310413145021003 0ustar ARCH=$(shell dpkg-architecture -qDEB_HOST_MULTIARCH) all: find generated -name '*.pc.in' -exec sh -c 'echo "build" {} && sed s/\$$\(ARCH\)/$(ARCH)/ {} > `echo {} | sed s/\.pc\.in$$/\.pc/g`' \; install: install -d $(DESTDIR)/usr/lib/pkgconfig/ install -d $(DESTDIR)/usr/lib/$(ARCH)/pkgconfig/ install -m 644 indep-*.pc $(DESTDIR)/usr/lib/pkgconfig/ install -m 644 generated/arch-*.pc $(DESTDIR)/usr/lib/$(ARCH)/pkgconfig/ install -m 644 generated/indep-*.pc $(DESTDIR)/usr/lib/pkgconfig/ clean distclean: rm -f generated/*.pc check test: lintian-2.5.22ubuntu1/t/tests/files-pkgconfig/debian/debian/0000775000000000000000000000000012310413206020564 5ustar lintian-2.5.22ubuntu1/t/tests/files-pkgconfig/debian/debian/pkgconfig-any.install0000664000000000000000000000003512310413145024710 0ustar usr/lib/*-*-*/pkgconfig/*.pc lintian-2.5.22ubuntu1/t/tests/files-pkgconfig/debian/debian/pkgconfig-all.install0000664000000000000000000000002712310413145024672 0ustar usr/lib/pkgconfig/*.pc lintian-2.5.22ubuntu1/t/tests/files-pkgconfig/debian/debian/control.in0000664000000000000000000000165712310413206022605 0ustar Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: pkgconfig-all Architecture: all Depends: $\{misc:Depends\}, $\{shlib:Depends\} Description: Contains test file for pkgconfig arch all This is a test package designed to exercise some feature or tag of Lintian for arch all pkgconfig files. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: pkgconfig-any Architecture: any Depends: $\{misc:Depends\}, $\{shlib:Depends\} Description: Contains test file for pkgconfig arch any This is a test package designed to exercise some feature or tag of Lintian for arch any pkgconfig files. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/spelling-package-name/0000775000000000000000000000000012077065716017220 5ustar lintian-2.5.22ubuntu1/t/tests/spelling-package-name/tags0000664000000000000000000000000012077065716020067 0ustar lintian-2.5.22ubuntu1/t/tests/spelling-package-name/desc0000664000000000000000000000024212077065716020057 0ustar Testname: spelling-package-name Sequence: 6000 Version: 1.0 Description: Spell check test for excluding package name Test-Against: spelling-error-in-description lintian-2.5.22ubuntu1/t/tests/spelling-package-name/debian/0000775000000000000000000000000012077065716020442 5ustar lintian-2.5.22ubuntu1/t/tests/spelling-package-name/debian/debian/0000775000000000000000000000000012310413206021641 5ustar lintian-2.5.22ubuntu1/t/tests/spelling-package-name/debian/debian/control.in0000664000000000000000000000110512310413206023646 0ustar Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: nam Architecture: all Depends: $\{misc:Depends\}, Description: {$description} This is a test to see if the spell checker realizes that nam is not a spelling mistake, but the name of the package. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-general/0000775000000000000000000000000012310413205020423 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-general/tags0000664000000000000000000000114612077065715021331 0ustar E: patch-systems-quilt-general source: build-depends-on-obsolete-package build-depends: dpatch E: patch-systems-quilt-general source: patch-modifying-debian-files some-file debian/some-file E: patch-systems-quilt-general source: quilt-series-references-non-existent-patch some-nonexistent-patch W: patch-systems-quilt-general source: dpatch-build-dep-but-no-patch-list W: patch-systems-quilt-general source: more-than-one-patch-system W: patch-systems-quilt-general source: patch-system-but-direct-changes-in-diff README W: patch-systems-quilt-general source: quilt-patch-with-non-standard-options some-other-file lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-general/desc0000664000000000000000000000055412077065715021313 0ustar Testname: patch-systems-quilt-general Sequence: 6000 Type: non-native Version: 1.0-1 Description: General tests of a quilt patch system Test-For: dpatch-build-dep-but-no-patch-list more-than-one-patch-system patch-modifying-debian-files patch-system-but-direct-changes-in-diff quilt-patch-with-non-standard-options quilt-series-references-non-existent-patch lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-general/debian/0000775000000000000000000000000012077065715021670 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-general/debian/README0000664000000000000000000000001612077065715022545 0ustar Debian README lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-general/debian/debian/0000775000000000000000000000000012310413206023070 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-general/debian/debian/control.in0000664000000000000000000000100412310413206025073 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), quilt, dpatch Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-general/debian/debian/README.source0000664000000000000000000000003512077065715025267 0ustar Some stuff about quilt here. lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-general/debian/debian/patches/0000775000000000000000000000000012077065715024541 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-general/debian/debian/patches/some-file0000664000000000000000000000021412077065715026341 0ustar Some regular patch creating a file. --- /dev/null +++ debian/debian/some-file @@ -0,0 +1,6 @@ +Some +file +created +in +debian +directory. lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-general/debian/debian/patches/series0000664000000000000000000000024012077065715025752 0ustar some-file some-other-file -p0 some-nonexistent-patch # this is to test for directory traversals # 'debian-patch' is a file in the laboratory ../../debian-patch lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-general/debian/debian/patches/some-other-file0000664000000000000000000000021612077065715027462 0ustar Some -p0 patch creating a file. --- /dev/null +++ debian/some-other-file @@ -0,0 +1,7 @@ +Some +other +file +created +in +debian +directory. lintian-2.5.22ubuntu1/t/tests/patch-systems-empty-series/0000775000000000000000000000000012310413205020300 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-empty-series/tags0000664000000000000000000000000012077065715021172 0ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-empty-series/desc0000664000000000000000000000030712077065715021164 0ustar Testname: patch-systems-empty-series Sequence: 6000 Version: 1.0 Description: Test for quilt patches with empty series Test-Against: quilt-build-dep-but-no-series-file References: Debian Bug #525005 lintian-2.5.22ubuntu1/t/tests/patch-systems-empty-series/debian/0000775000000000000000000000000012077065715021545 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-empty-series/debian/debian/0000775000000000000000000000000012310413206022745 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-empty-series/debian/debian/control.in0000664000000000000000000000076612310413206024766 0ustar Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: quilt, debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlib:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/patch-systems-empty-series/debian/debian/README.source0000664000000000000000000000010212077065715025137 0ustar This package uses quilt. See /usr/share/doc/quilt/README.source. lintian-2.5.22ubuntu1/t/tests/patch-systems-empty-series/debian/debian/patches/0000775000000000000000000000000012077065715024416 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-empty-series/debian/debian/patches/series0000664000000000000000000000000012077065715025621 0ustar lintian-2.5.22ubuntu1/t/tests/overrides-shown/0000775000000000000000000000000012077065715016231 5ustar lintian-2.5.22ubuntu1/t/tests/overrides-shown/tags0000664000000000000000000000226612077065715017120 0ustar N: override without extra information O: overrides-shown: manpage-has-bad-whatis-entry usr/share/man/man1/foo.1.gz N: exact extra information O: overrides-shown: hyphen-used-as-minus-sign usr/share/man/man1/foo.1.gz:4 N: These are wildcard overrides O: overrides-shown: hyphen-used-as-minus-sign usr/share/man/man1/foo.1.gz:5 N: Architecture specific override O: overrides-shown: hyphen-used-as-minus-sign usr/share/man/man1/foo.1.gz:6 I: overrides-shown: hyphen-used-as-minus-sign usr/share/man/man1/foo.1.gz:12 I: overrides-shown: hyphen-used-as-minus-sign usr/share/man/man1/foo.1.gz:13 I: overrides-shown: hyphen-used-as-minus-sign usr/share/man/man1/foo.1.gz:14 N: These are wildcard overrides O: overrides-shown: hyphen-used-as-minus-sign usr/share/man/man1/foo.1.gz:21 N: These are wildcard overrides O: overrides-shown: hyphen-used-as-minus-sign usr/share/man/man1/foo.1.gz:22 N: These are wildcard overrides O: overrides-shown: hyphen-used-as-minus-sign usr/share/man/man1/foo.1.gz:23 N: These are wildcard overrides O: overrides-shown: hyphen-used-as-minus-sign usr/share/man/man1/foo.1.gz:30 O: overrides-shown: hyphen-used-as-minus-sign usr/share/man/man1/foo.1.gz 2 more occurrences not shown lintian-2.5.22ubuntu1/t/tests/overrides-shown/desc0000664000000000000000000000022512077065715017071 0ustar Testname: overrides-shown Sequence: 1500 Version: 1.0 Options: --show-overrides -I -E Sort: no Architecture: any Description: Test override handling lintian-2.5.22ubuntu1/t/tests/overrides-shown/debian/0000775000000000000000000000000012077065715017453 5ustar lintian-2.5.22ubuntu1/t/tests/overrides-shown/debian/foo.10000664000000000000000000000016212077065715020317 0ustar .TH FOO 1 "Sep 13, 2008" "Debian GNU/Linux" .SH DESCRIPTION -a -b -c -d -e -f -g -h -i -j -k -l lintian-2.5.22ubuntu1/t/tests/overrides-shown/debian/debian/0000775000000000000000000000000012077065715020675 5ustar lintian-2.5.22ubuntu1/t/tests/overrides-shown/debian/debian/overrides-shown.lintian-overrides0000664000000000000000000000131012077065715027406 0ustar # This comment will not appear in the output, also the last # tag should not have a comment due to the empty line between # it and the one before it. # override without extra information manpage-has-bad-whatis-entry # Architecture specific override [i386]: hyphen-used-as-minus-sign usr/share/man/man1/foo.1.gz:6 [!i386]: hyphen-used-as-minus-sign usr/share/man/man1/foo.1.gz:6 # exact extra information hyphen-used-as-minus-sign usr/share/man/man1/foo.1.gz:4 # These are wildcard overrides hyphen-used-as-minus-sign usr/share/man/man1/foo.1.gz:2* hyphen-used-as-minus-sign */foo.1.gz:5 hyphen-used-as-minus-sign */foo.1.gz:3* hyphen-used-as-minus-sign usr/share/man/man1/foo.1.gz * more occurrences not shown lintian-2.5.22ubuntu1/t/tests/overrides-shown/debian/debian/manpages0000664000000000000000000000000612077065715022407 0ustar foo.1 lintian-2.5.22ubuntu1/t/tests/fields-aspell/0000775000000000000000000000000012077065715015617 5ustar lintian-2.5.22ubuntu1/t/tests/fields-aspell/tags0000664000000000000000000000005212077065715016475 0ustar W: aspell-en: aspell-package-not-arch-all lintian-2.5.22ubuntu1/t/tests/fields-aspell/desc0000664000000000000000000000024512077065715016461 0ustar Testname: fields-aspell Sequence: 6000 Version: 1.0 Description: Tests for Architecture of an aspell package Architecture: any Test-For: aspell-package-not-arch-all lintian-2.5.22ubuntu1/t/tests/fields-aspell/debian/0000775000000000000000000000000012077065715017041 5ustar lintian-2.5.22ubuntu1/t/tests/fields-aspell/debian/debian/0000775000000000000000000000000012310413206020241 5ustar lintian-2.5.22ubuntu1/t/tests/fields-aspell/debian/debian/control.in0000664000000000000000000000076012310413206022254 0ustar Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: aspell-en Architecture: {$architecture} Depends: $\{misc:Depends\}, $\{shlibs:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/binaries-from-other-arch/0000775000000000000000000000000012310413144017641 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-from-other-arch/tags0000664000000000000000000000045312310413144020524 0ustar E: binaries-from-other-arch: binary-from-other-architecture usr/bin/elfobject E: binaries-from-other-arch: statically-linked-binary usr/bin/elfobject W: binaries-from-other-arch: apparently-corrupted-elf-binary usr/bin/elfobject W: binaries-from-other-arch: binary-without-manpage usr/bin/elfobject lintian-2.5.22ubuntu1/t/tests/binaries-from-other-arch/desc0000664000000000000000000000035112310413144020501 0ustar Testname: binaries-from-other-arch Sequence: 6000 Architecture: any Version: 1.0 Description: Test package with a pseudo binary from a different architecture Test-For: apparently-corrupted-elf-binary binary-from-other-architecture lintian-2.5.22ubuntu1/t/tests/binaries-from-other-arch/debian/0000775000000000000000000000000012077065714021103 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-from-other-arch/debian/debian/0000775000000000000000000000000012077065714022325 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-from-other-arch/debian/debian/install0000664000000000000000000000003312077065714023712 0ustar debian/elfobject usr/bin/ lintian-2.5.22ubuntu1/t/tests/binaries-from-other-arch/debian/debian/rules0000775000000000000000000000021712077065714023405 0ustar #!/usr/bin/make -f DEB_BUILD_OPTIONS := nostrip export DEB_BUILD_OPTIONS %: dh $@ binary: sh debian/dumpobj > debian/elfobject dh binary lintian-2.5.22ubuntu1/t/tests/binaries-from-other-arch/debian/debian/dumpobj0000664000000000000000000000161612077065714023714 0ustar #!/bin/sh set -e DEB_BUILD_GNU_TYPE="$(dpkg-architecture -qDEB_BUILD_GNU_TYPE)" case $DEB_BUILD_GNU_TYPE in i486-linux-gnu|i686-linux-gnu|x86_64-linux-gnu) base64 -d < Description: Test case-insensitive matching of e-mail addresses Test-Against: changelog-should-mention-nmu source-nmu-has-incorrect-version-number References: Debian Bug#486795 lintian-2.5.22ubuntu1/t/tests/nmu-case-insensitive/debian/0000775000000000000000000000000012077065715020363 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-case-insensitive/debian/debian/0000775000000000000000000000000012310413206021563 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-case-insensitive/debian/debian/changelog.in0000664000000000000000000000021012310413206024033 0ustar {$source} ({$version}) unstable; urgency=low * Lintian Test Suite. * Test: {$testname} -- Russ Allbery {$date} lintian-2.5.22ubuntu1/t/tests/control-file-duplicate/0000775000000000000000000000000012077065714017437 5ustar lintian-2.5.22ubuntu1/t/tests/control-file-duplicate/tags0000664000000000000000000000111312077065714020314 0ustar P: control-file-duplicate source: duplicate-in-relation-field in control-file-duplicate depends: ${misc:Depends}, ${misc:Depends} P: control-file-duplicate source: duplicate-in-relation-field in control-file-duplicate suggests: baz (= 1.0), baz, baz (>= 2.0) P: control-file-duplicate source: duplicate-in-relation-field in source build-conflicts: bar, bar [i386] P: control-file-duplicate source: duplicate-in-relation-field in source build-depends-indep: foobar, foobar P: control-file-duplicate source: duplicate-in-relation-field in source build-depends: debhelper (>= 9), debhelper lintian-2.5.22ubuntu1/t/tests/control-file-duplicate/desc0000664000000000000000000000030312077065714020274 0ustar Testname: control-file-duplicate Sequence: 6000 Version: 1.0 Skeleton: pedantic Options: --pedantic -I -E Description: Pedantic test for duplicate relations Test-For: duplicate-in-relation-field lintian-2.5.22ubuntu1/t/tests/control-file-duplicate/debian/0000775000000000000000000000000012077065714020661 5ustar lintian-2.5.22ubuntu1/t/tests/control-file-duplicate/debian/debian/0000775000000000000000000000000012310413206022062 5ustar lintian-2.5.22ubuntu1/t/tests/control-file-duplicate/debian/debian/control.in0000664000000000000000000000126112310413206024072 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), debhelper Build-Depends-Indep: foobar, foo, foobar Build-Conflicts: bar, baz, bar [i386] Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, $\{misc:Depends\} Recommends: foo (>> 1.0) | bar, foo Suggests: baz (= 1.0), baz, baz (>= 2.0) Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/conffiles-etc-not-marked/0000775000000000000000000000000012077065714017652 5ustar lintian-2.5.22ubuntu1/t/tests/conffiles-etc-not-marked/tags0000664000000000000000000000012312077065714020527 0ustar E: conffiles-etc-not-marked: file-in-etc-not-marked-as-conffile etc/something.conf lintian-2.5.22ubuntu1/t/tests/conffiles-etc-not-marked/desc0000664000000000000000000000025712077065714020517 0ustar Testname: conffiles-etc-not-marked Sequence: 6000 Version: 1.0 Description: Test checking etc files not being marked as conffiles Test-For: file-in-etc-not-marked-as-conffile lintian-2.5.22ubuntu1/t/tests/conffiles-etc-not-marked/debian/0000775000000000000000000000000012077065714021074 5ustar lintian-2.5.22ubuntu1/t/tests/conffiles-etc-not-marked/debian/something.conf0000664000000000000000000000001412077065714023733 0ustar hello=world lintian-2.5.22ubuntu1/t/tests/conffiles-etc-not-marked/debian/debian/0000775000000000000000000000000012077065714022316 5ustar lintian-2.5.22ubuntu1/t/tests/conffiles-etc-not-marked/debian/debian/install0000664000000000000000000000002412077065714023703 0ustar something.conf etc/ lintian-2.5.22ubuntu1/t/tests/conffiles-etc-not-marked/debian/debian/rules0000664000000000000000000000030212077065714023366 0ustar #!/usr/bin/make -f %: dh $@ override_dh_builddeb: DIR=$$(find -name 'DEBIAN'); \ rm "$$DIR/conffiles" && \ md5sum something.conf | sed 's/ s/ etc\/s/' >> "$$DIR/md5sums" dh_builddeb lintian-2.5.22ubuntu1/t/tests/fields-section-general/0000775000000000000000000000000012077065715017416 5ustar lintian-2.5.22ubuntu1/t/tests/fields-section-general/tags0000664000000000000000000000022512077065715020276 0ustar E: fields-section-general source: section-area-mismatch Package fields-section-general-main W: fields-section-general: unknown-section contrib/dveel lintian-2.5.22ubuntu1/t/tests/fields-section-general/desc0000664000000000000000000000024112077065715020254 0ustar Testname: fields-section-general Sequence: 6000 Version: 1.0 Description: Test for general section/area issues Test-For: section-area-mismatch unknown-section lintian-2.5.22ubuntu1/t/tests/fields-section-general/debian/0000775000000000000000000000000012077065715020640 5ustar lintian-2.5.22ubuntu1/t/tests/fields-section-general/debian/debian/0000775000000000000000000000000012310413206022040 5ustar lintian-2.5.22ubuntu1/t/tests/fields-section-general/debian/debian/control.in0000664000000000000000000000173012310413206024051 0ustar Source: {$source} Priority: extra Section: contrib/{$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: all Section: contrib/dveel Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (typo) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . This package has a typo in its section fields. Package: {$source}-main Architecture: all Section: {$section} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (main) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . This package can go to main. lintian-2.5.22ubuntu1/t/tests/init.d-script-registration/0000775000000000000000000000000012310413146020253 5ustar lintian-2.5.22ubuntu1/t/tests/init.d-script-registration/tags0000664000000000000000000000066412310413146021142 0ustar E: init.d-script-registration: init-script-is-not-a-file etc/init.d/bar W: init.d-script-registration: init.d-script-missing-lsb-section etc/init.d/foo.in W: init.d-script-registration: script-in-etc-init.d-not-registered-via-update-rc.d etc/init.d/bar W: init.d-script-registration: script-in-etc-init.d-not-registered-via-update-rc.d etc/init.d/foo.in X: init.d-script-registration: package-contains-broken-symlink etc/init.d/bar foo lintian-2.5.22ubuntu1/t/tests/init.d-script-registration/desc0000664000000000000000000000034612077065715021136 0ustar Testname: init.d-script-registration Sequence: 6000 Version: 1.0 Description: Test tags related to the registration of init scripts Test-For: init.d-script-missing-lsb-section script-in-etc-init.d-not-registered-via-update-rc.d lintian-2.5.22ubuntu1/t/tests/init.d-script-registration/debian/0000775000000000000000000000000012310413146021475 5ustar lintian-2.5.22ubuntu1/t/tests/init.d-script-registration/debian/skeleton0000664000000000000000000000014012077065715023256 0ustar The skeleton file looks like an init script, but we don't want to check it like an init script. lintian-2.5.22ubuntu1/t/tests/init.d-script-registration/debian/README0000664000000000000000000000011312077065715022367 0ustar Just a dummy file (normally with instructions), not an init script at all! lintian-2.5.22ubuntu1/t/tests/init.d-script-registration/debian/foo.in0000664000000000000000000000026312310413146022611 0ustar #!/bin/sh -e . /lib/lsb/init-functions case "$1" in start) ;; stop) ;; reload) ;; restart|force-reload) ;; status) ;; *) ;; esac lintian-2.5.22ubuntu1/t/tests/init.d-script-registration/debian/debian/0000775000000000000000000000000012077065715022736 5ustar lintian-2.5.22ubuntu1/t/tests/init.d-script-registration/debian/debian/links0000664000000000000000000000003612077065715024000 0ustar etc/init.d/foo etc/init.d/bar lintian-2.5.22ubuntu1/t/tests/init.d-script-registration/debian/debian/install0000664000000000000000000000007612077065715024332 0ustar foo.in /etc/init.d/ README /etc/init.d/ skeleton /etc/init.d/ lintian-2.5.22ubuntu1/t/tests/init.d-script-registration/debian/debian/rules0000775000000000000000000000030012077065715024007 0ustar #!/usr/bin/make -f %: dh $@ override_dh_fixperms: dh_fixperms chmod -x debian/init.d-script-registration/etc/init.d/README chmod -x debian/init.d-script-registration/etc/init.d/skeleton lintian-2.5.22ubuntu1/t/tests/shared-libs-no-shared-lib/0000775000000000000000000000000012077065716017713 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-no-shared-lib/tags0000664000000000000000000000010212077065716020565 0ustar E: libfoo1: pkg-has-shlibs-control-file-but-no-actual-shared-libs lintian-2.5.22ubuntu1/t/tests/shared-libs-no-shared-lib/desc0000664000000000000000000000025212077065716020553 0ustar Testname: shared-libs-no-shared-lib Sequence: 6000 Version: 1.0 Description: Test checks shlib without SO Test-For: pkg-has-shlibs-control-file-but-no-actual-shared-libs lintian-2.5.22ubuntu1/t/tests/shared-libs-no-shared-lib/debian/0000775000000000000000000000000012077065716021135 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-no-shared-lib/debian/some-lib0000664000000000000000000000001412077065716022562 0ustar Aloah world lintian-2.5.22ubuntu1/t/tests/shared-libs-no-shared-lib/debian/debian/0000775000000000000000000000000012310413206022334 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-no-shared-lib/debian/debian/control.in0000664000000000000000000000070312310413206024344 0ustar Source: {$source} Priority: extra Section: libs Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: libfoo1 Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/tests/shared-libs-no-shared-lib/debian/debian/libfoo1.symbols0000664000000000000000000000007212077065716025323 0ustar libfoo.so.1 libfoo1 #MINVER# e@Base 1.0 energy@Base 0.9 lintian-2.5.22ubuntu1/t/tests/shared-libs-no-shared-lib/debian/debian/libfoo1.shlibs0000664000000000000000000000003212077065716025113 0ustar libfoo 1 libfoo1 (>= 1.0) lintian-2.5.22ubuntu1/t/tests/shared-libs-no-shared-lib/debian/debian/libfoo1.install0000664000000000000000000000002112077065716025273 0ustar some-lib usr/lib lintian-2.5.22ubuntu1/t/tests/debhelper-internal-files/0000775000000000000000000000000012077065715017737 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-internal-files/tags0000664000000000000000000000014412077065715020617 0ustar E: debhelper-internal-files source: temporary-debhelper-file package.postinst.debhelper and 1 other lintian-2.5.22ubuntu1/t/tests/debhelper-internal-files/desc0000664000000000000000000000024112077065715020575 0ustar Testname: debhelper-internal-files Sequence: 6000 Version: 1.0 Description: Test for spotting unremoved debhelper temp files Test-For: temporary-debhelper-file lintian-2.5.22ubuntu1/t/tests/debhelper-internal-files/debian/0000775000000000000000000000000012077065715021161 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-internal-files/debian/debian/0000775000000000000000000000000012077065715022403 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-internal-files/debian/debian/package.postinst.debhelper0000664000000000000000000000004412077065715027532 0ustar Internal debhelper file for package lintian-2.5.22ubuntu1/t/tests/debhelper-internal-files/debian/debian/rules0000775000000000000000000000006712077065715023466 0ustar #!/usr/bin/make -f %: dh $@ clean: # No such thing lintian-2.5.22ubuntu1/t/tests/debhelper-internal-files/debian/debian/package.debhelper.log0000664000000000000000000000003712077065715026432 0ustar debhelper log file for package lintian-2.5.22ubuntu1/t/tests/nmu-qa-upload/0000775000000000000000000000000012310413146015534 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-qa-upload/tags0000664000000000000000000000030212310413146016410 0ustar E: nmu-qa-upload source: orphaned-package-should-not-have-uploaders W: nmu-qa-upload source: changelog-should-mention-qa W: nmu-qa-upload source: qa-upload-has-incorrect-version-number 1.0+nmu1 lintian-2.5.22ubuntu1/t/tests/nmu-qa-upload/desc0000664000000000000000000000041412310413146016374 0ustar Testname: nmu-qa-upload Sequence: 6000 Version: 1.0+nmu1 Description: Test for QA upload issues Author: Debian QA Group Test-For: changelog-should-mention-qa orphaned-package-should-not-have-uploaders qa-upload-has-incorrect-version-number lintian-2.5.22ubuntu1/t/tests/nmu-qa-upload/debian/0000775000000000000000000000000012310413146016756 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-qa-upload/debian/debian/0000775000000000000000000000000012310413206020175 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-qa-upload/debian/debian/changelog.in0000664000000000000000000000031612310413206022454 0ustar {$source} ({$version}) unstable; urgency=low * Lintian Test Suite. * Test: {$testname} * Suppress "should close ITP bug" messages. (Closes: #123456) -- Niels Thykier {$date} lintian-2.5.22ubuntu1/t/tests/nmu-qa-upload/debian/debian/control.in0000664000000000000000000000104212310413206022202 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Uploaders: Niels Thykier Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/fields-transitional/0000775000000000000000000000000012077065715017046 5ustar lintian-2.5.22ubuntu1/t/tests/fields-transitional/tags0000664000000000000000000000012412077065715017724 0ustar W: fields-transitional: transitional-package-should-be-oldlibs-extra devel/standard lintian-2.5.22ubuntu1/t/tests/fields-transitional/desc0000664000000000000000000000025512077065715017711 0ustar Testname: fields-transitional Sequence: 6000 Version: 1.0 Description: Test for transitional package in wrong section Test-For: transitional-package-should-be-oldlibs-extra lintian-2.5.22ubuntu1/t/tests/fields-transitional/debian/0000775000000000000000000000000012077065715020270 5ustar lintian-2.5.22ubuntu1/t/tests/fields-transitional/debian/some-file0000664000000000000000000000021312077065715022067 0ustar This file is installed into /usr/share/lintian just to ensure that this package doesn't look like a metapackage for the dependency checks. lintian-2.5.22ubuntu1/t/tests/fields-transitional/debian/debian/0000775000000000000000000000000012310413206021470 5ustar lintian-2.5.22ubuntu1/t/tests/fields-transitional/debian/debian/install0000664000000000000000000000003412077065715023100 0ustar some-file usr/share/lintian lintian-2.5.22ubuntu1/t/tests/fields-transitional/debian/debian/control.in0000664000000000000000000000055012310413206023500 0ustar Source: {$source} Priority: standard Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: all Depends: $\{misc:Depends\}, some-replacement Description: {$description} This is a transitional package that should have been in section oldlibs and priority extra. lintian-2.5.22ubuntu1/t/tests/changelog-file-stable/0000775000000000000000000000000012310413205017164 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-stable/tags0000664000000000000000000000000012077065714020055 0ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-stable/desc0000664000000000000000000000033012077065714020043 0ustar Testname: changelog-file-stable Sequence: 6000 Type: non-native Version: 1.0-1etch1 Description: Test a stable-proposed-updates package Test-Against: bad-distribution-in-changes-file version-refers-to-distribution lintian-2.5.22ubuntu1/t/tests/changelog-file-stable/debian/0000775000000000000000000000000012310413205020406 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-stable/debian/debian/0000775000000000000000000000000012310413206021631 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-stable/debian/debian/changelog.in0000664000000000000000000000020312310413206024103 0ustar {$source} ({$version}) stable-proposed-updates; urgency=low * Lintian Test Suite. * Test: {$testname} -- {$author} {$date} lintian-2.5.22ubuntu1/t/tests/runtests-arch-i386/0000775000000000000000000000000012077065715016364 5ustar lintian-2.5.22ubuntu1/t/tests/runtests-arch-i386/tags0000664000000000000000000000000012077065715017233 0ustar lintian-2.5.22ubuntu1/t/tests/runtests-arch-i386/desc0000664000000000000000000000021112077065715017217 0ustar Testname: runtests-arch-i386 Sequence: 0700 Version: 1.0 Architecture: i386 Description: Test a package that is supposedly i386-specific lintian-2.5.22ubuntu1/t/tests/runtests-arch-i386/debian/0000775000000000000000000000000012077065715017606 5ustar lintian-2.5.22ubuntu1/t/tests/runtests-arch-i386/debian/dummy0000664000000000000000000000001312077065715020656 0ustar dummy file lintian-2.5.22ubuntu1/t/tests/runtests-arch-i386/debian/debian/0000775000000000000000000000000012077065715021030 5ustar lintian-2.5.22ubuntu1/t/tests/runtests-arch-i386/debian/debian/install0000664000000000000000000000002712077065715022420 0ustar dummy usr/lib/package/ lintian-2.5.22ubuntu1/t/tests/debhelper-executable-files/0000775000000000000000000000000012077065715020244 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-executable-files/pre_build0000775000000000000000000000015112077065715022134 0ustar #!/bin/sh DIR="$1" for FILE in control copyright changelog ; do chmod +x "$DIR/debian/$FILE" done lintian-2.5.22ubuntu1/t/tests/debhelper-executable-files/tags0000664000000000000000000000050512077065715021125 0ustar W: debhelper-executable-files source: package-file-is-executable debian/changelog W: debhelper-executable-files source: package-file-is-executable debian/control W: debhelper-executable-files source: package-file-is-executable debian/copyright W: debhelper-executable-files source: package-file-is-executable debian/manpages lintian-2.5.22ubuntu1/t/tests/debhelper-executable-files/desc0000664000000000000000000000023712077065715021107 0ustar Testname: debhelper-executable-files Sequence: 6000 Version: 1.0 Description: Tests related to executable packaging files Test-For: package-file-is-executable lintian-2.5.22ubuntu1/t/tests/debhelper-executable-files/debian/0000775000000000000000000000000012077065715021466 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-executable-files/debian/debian/0000775000000000000000000000000012077065715022710 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-executable-files/debian/debian/compat0000664000000000000000000000000212077065715024106 0ustar 8 lintian-2.5.22ubuntu1/t/tests/debhelper-executable-files/debian/debian/manpages0000775000000000000000000000001212077065715024422 0ustar #!/bin/sh lintian-2.5.22ubuntu1/t/tests/scripts-killall/0000775000000000000000000000000012077065715016204 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-killall/tags0000664000000000000000000000006412077065715017065 0ustar W: scripts-killall: killall-is-dangerous postinst:5 lintian-2.5.22ubuntu1/t/tests/scripts-killall/desc0000664000000000000000000000021112077065715017037 0ustar Testname: scripts-killall Sequence: 6000 Version: 1.0 Description: Test for killall usage in maint script Test-For: killall-is-dangerous lintian-2.5.22ubuntu1/t/tests/scripts-killall/debian/0000775000000000000000000000000012077065715017426 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-killall/debian/debian/0000775000000000000000000000000012077065715020650 5ustar lintian-2.5.22ubuntu1/t/tests/scripts-killall/debian/debian/postinst0000664000000000000000000000005612077065715022457 0ustar #!/bin/sh set -e killall fish #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/fields-version-dfsg-native/0000775000000000000000000000000012310413205020206 5ustar lintian-2.5.22ubuntu1/t/tests/fields-version-dfsg-native/tags0000664000000000000000000000011712077065715021111 0ustar W: fields-version-dfsg-native source: dfsg-version-in-native-package 1.0.dfsg1 lintian-2.5.22ubuntu1/t/tests/fields-version-dfsg-native/desc0000664000000000000000000000023512077065715021072 0ustar Testname: fields-version-dfsg-native Sequence: 6000 Version: 1.0.dfsg1 Description: Use of dfsg in a native package Test-For: dfsg-version-in-native-package lintian-2.5.22ubuntu1/t/tests/fields-dmua/0000775000000000000000000000000012310413144015244 5ustar lintian-2.5.22ubuntu1/t/tests/fields-dmua/tags0000664000000000000000000000015312310413144016124 0ustar E: fields-dmua source: malformed-dm-upload-allowed no W: fields-dmua source: dm-upload-allowed-is-obsolete lintian-2.5.22ubuntu1/t/tests/fields-dmua/desc0000664000000000000000000000024212310413144016103 0ustar Testname: fields-dmua Sequence: 6000 Version: 1.0 Description: Test for invalid DMUA field Test-For: dm-upload-allowed-is-obsolete malformed-dm-upload-allowed lintian-2.5.22ubuntu1/t/tests/fields-dmua/debian/0000775000000000000000000000000012077065715016507 5ustar lintian-2.5.22ubuntu1/t/tests/fields-dmua/debian/debian/0000775000000000000000000000000012310413206017707 5ustar lintian-2.5.22ubuntu1/t/tests/fields-dmua/debian/debian/control.in0000664000000000000000000000077112310413206021724 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) XS-DM-Upload-Allowed: no Package: {$source} Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/fields-maintainer-bounces/0000775000000000000000000000000012077065715020122 5ustar lintian-2.5.22ubuntu1/t/tests/fields-maintainer-bounces/tags0000664000000000000000000000107412077065715021005 0ustar E: fields-maintainer-bounces source: maintainer-address-causes-mail-loops-or-bounces Ubuntu Developers E: fields-maintainer-bounces source: uploader-address-causes-mail-loops-or-bounces I Will Loop E: fields-maintainer-bounces source: uploader-address-causes-mail-loops-or-bounces I Will Loop Too E: fields-maintainer-bounces: maintainer-address-causes-mail-loops-or-bounces Ubuntu Developers lintian-2.5.22ubuntu1/t/tests/fields-maintainer-bounces/desc0000664000000000000000000000054112077065715020763 0ustar Testname: fields-maintainer-bounces Sequence: 6000 Version: 1.0 Description: test e-mail addresses which are known to bounce e-mails # To avoid NMU warnings / having a changelog.in Author: Ubuntu Developers Test-For: uploader-address-causes-mail-loops-or-bounces maintainer-address-causes-mail-loops-or-bounces lintian-2.5.22ubuntu1/t/tests/fields-maintainer-bounces/debian/0000775000000000000000000000000012077065715021344 5ustar lintian-2.5.22ubuntu1/t/tests/fields-maintainer-bounces/debian/debian/0000775000000000000000000000000012310413206022544 5ustar lintian-2.5.22ubuntu1/t/tests/fields-maintainer-bounces/debian/debian/control.in0000664000000000000000000000125512310413206024557 0ustar Source: {$source} Priority: extra Section: devel Maintainer: Ubuntu Developers Uploaders: I Will Loop , I Will Loop Too Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-no-depends/0000775000000000000000000000000012077065715021065 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-no-depends/upstream/0000775000000000000000000000000012077065715022725 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-no-depends/upstream/README0000664000000000000000000000001412077065715023600 0ustar Hello World lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-no-depends/tags0000664000000000000000000000011012077065715021736 0ustar W: patch-systems-quilt-no-depends source: quilt-series-but-no-build-dep lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-no-depends/desc0000664000000000000000000000024712077065715021731 0ustar Testname: patch-systems-quilt-no-depends Sequence: 6000 Version: 1.0 Description: Test for quilt series but no B-D on quilt Test-For: quilt-series-but-no-build-dep lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-no-depends/debian/0000775000000000000000000000000012077065715022307 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-no-depends/debian/debian/0000775000000000000000000000000012077065715023531 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-no-depends/debian/debian/source/0000775000000000000000000000000012077065715025031 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-no-depends/debian/debian/source/format0000664000000000000000000000000412077065715026236 0ustar 1.0 lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-no-depends/debian/debian/patches/0000775000000000000000000000000012077065715025160 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-no-depends/debian/debian/patches/some-change.patch0000664000000000000000000000032212077065715030364 0ustar Description: Does something very useful - it hides "empty-series" tag --- a/README 2010-12-27 14:09:55.025074505 +0100 +++ b/README 2010-12-27 14:10:09.656080199 +0100 @@ -1 +1,2 @@ Hello World +Goodbye world lintian-2.5.22ubuntu1/t/tests/patch-systems-quilt-no-depends/debian/debian/patches/series0000664000000000000000000000002212077065715026367 0ustar some-change.patch lintian-2.5.22ubuntu1/t/tests/watch-file-no-version/0000775000000000000000000000000012310413205017170 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-no-version/tags0000664000000000000000000000010312077065716020067 0ustar W: watch-file-no-version source: debian-watch-file-missing-version lintian-2.5.22ubuntu1/t/tests/watch-file-no-version/desc0000664000000000000000000000024312077065716020054 0ustar Testname: watch-file-no-version Sequence: 6000 Type: non-native Version: 1.0-1 Description: Watch file with no version Test-For: debian-watch-file-missing-version lintian-2.5.22ubuntu1/t/tests/watch-file-no-version/debian/0000775000000000000000000000000012310413205020412 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-no-version/debian/debian/0000775000000000000000000000000012077065716021660 5ustar lintian-2.5.22ubuntu1/t/tests/watch-file-no-version/debian/debian/watch0000664000000000000000000000011012077065716022701 0ustar http://www.example.com/dist/ dh7-test\.([\d.]+)\.tar\.gz debian uupdate lintian-2.5.22ubuntu1/t/tests/po-debconf-missing/0000775000000000000000000000000012077065715016556 5ustar lintian-2.5.22ubuntu1/t/tests/po-debconf-missing/tags0000664000000000000000000000014612077065715017440 0ustar W: po-debconf-missing source: missing-potfiles-in W: po-debconf-missing source: missing-templates-pot lintian-2.5.22ubuntu1/t/tests/po-debconf-missing/desc0000664000000000000000000000023612077065715017420 0ustar Testname: po-debconf-missing Sequence: 6000 Version: 1.0 Description: Test for missing po-debconf files Test-For: missing-potfiles-in missing-templates-pot lintian-2.5.22ubuntu1/t/tests/po-debconf-missing/debian/0000775000000000000000000000000012077065715020000 5ustar lintian-2.5.22ubuntu1/t/tests/po-debconf-missing/debian/debian/0000775000000000000000000000000012310413146021203 5ustar lintian-2.5.22ubuntu1/t/tests/po-debconf-missing/debian/debian/templates0000664000000000000000000000043412310413146023125 0ustar Template: po-debconf-general/test Type: string Default: foo _Description: This is a string question used for testing: Template: po-debconf-general/test-2 Type: string Default: bar _Description: This is a second string question: This one ensures no 100% translation of the template. lintian-2.5.22ubuntu1/t/tests/po-debconf-missing/debian/debian/po/0000775000000000000000000000000012077065715021640 5ustar lintian-2.5.22ubuntu1/t/tests/po-debconf-missing/debian/debian/po/en.po0000664000000000000000000000114312077065715022601 0ustar # Woohoo, translations - here to suppress a "no-complete-translation" # msgid "" msgstr "" "Project-Id-Version: po-debconf-missing\n" "Report-Msgid-Bugs-To: po-debconf-missing@packages.debian.org\n" "POT-Creation-Date: 2009-08-24 19:24+0200\n" "PO-Revision-Date: 2010-09-03 23:51+0200\n" "Last-Translator: Lintian Maintainers \n" "Language-Team: Lintian Maintainers \n" "Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" lintian-2.5.22ubuntu1/t/tests/po-debconf-missing/debian/debian/config0000775000000000000000000000020512077065715022412 0ustar #!/bin/sh set -e . /usr/share/debconf/confmodule db_get po-debconf-general/test || true db_get po-debconf-general/test-2 || true lintian-2.5.22ubuntu1/t/tests/po-debconf-missing/debian/debian/postinst0000664000000000000000000000010012077065715023017 0ustar #!/bin/sh set -e . /usr/share/debconf/confmodule #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/files-foo-in-bar/0000775000000000000000000000000012310413206016102 5ustar lintian-2.5.22ubuntu1/t/tests/files-foo-in-bar/post_test0000664000000000000000000000010012077065715020062 0ustar # Ignore all duplicate-files tags /.: .*: duplicate-files .*/ d lintian-2.5.22ubuntu1/t/tests/files-foo-in-bar/tags0000664000000000000000000001150712310413206016767 0ustar E: files-foo-in-bar: dir-in-usr-local usr/local/foo/ E: files-foo-in-bar: dir-or-file-in-build-tree var/cache/pbuilder/build/bar E: files-foo-in-bar: dir-or-file-in-build-tree var/lib/buildd/bar E: files-foo-in-bar: dir-or-file-in-build-tree var/lib/sbuild/bar E: files-foo-in-bar: dir-or-file-in-etc-opt etc/opt/bar E: files-foo-in-bar: dir-or-file-in-home home/johndoe/ E: files-foo-in-bar: dir-or-file-in-home home/johndoe/bar E: files-foo-in-bar: dir-or-file-in-home root/bar E: files-foo-in-bar: dir-or-file-in-mnt mnt/foo/ E: files-foo-in-bar: dir-or-file-in-mnt mnt/foo/bar E: files-foo-in-bar: dir-or-file-in-run run/foo/ E: files-foo-in-bar: dir-or-file-in-run run/foo/bar E: files-foo-in-bar: dir-or-file-in-srv srv/foo/ E: files-foo-in-bar: dir-or-file-in-srv srv/foo/bar E: files-foo-in-bar: dir-or-file-in-tmp tmp/foo/ E: files-foo-in-bar: dir-or-file-in-tmp tmp/foo/bar E: files-foo-in-bar: dir-or-file-in-var-lock var/lock/foo/ E: files-foo-in-bar: dir-or-file-in-var-lock var/lock/foo/bar E: files-foo-in-bar: dir-or-file-in-var-run var/run/foo/ E: files-foo-in-bar: dir-or-file-in-var-run var/run/foo/bar E: files-foo-in-bar: dir-or-file-in-var-www var/www/foo/ E: files-foo-in-bar: dir-or-file-in-var-www var/www/foo/bar E: files-foo-in-bar: file-directly-in-usr-share usr/share/bar E: files-foo-in-bar: file-directly-in-usr-share-doc usr/share/doc/bar E: files-foo-in-bar: file-in-usr-lib-site-python usr/lib/site-python/foo/ E: files-foo-in-bar: file-in-usr-lib-site-python usr/lib/site-python/foo/bar E: files-foo-in-bar: file-in-usr-local usr/local/foo/bar E: files-foo-in-bar: nested-examples-directory usr/share/doc/files-foo-in-bar/examples/examples/ E: files-foo-in-bar: non-standard-dir-in-var var/foo/ E: files-foo-in-bar: non-standard-toplevel-dir emul/ E: files-foo-in-bar: package-contains-xvpics-dir usr/share/doc/files-foo-in-bar/.xvpics/ E: files-foo-in-bar: package-installs-file-to-usr-x11r6 usr/X11R6/ E: files-foo-in-bar: package-installs-file-to-usr-x11r6 usr/X11R6/bin/ E: files-foo-in-bar: package-installs-file-to-usr-x11r6 usr/X11R6/bin/bar E: files-foo-in-bar: package-installs-file-to-usr-x11r6 usr/X11R6/lib/ E: files-foo-in-bar: package-installs-file-to-usr-x11r6 usr/X11R6/lib/X11/ E: files-foo-in-bar: package-installs-file-to-usr-x11r6 usr/X11R6/lib/X11/fonts/ E: files-foo-in-bar: package-installs-file-to-usr-x11r6 usr/X11R6/lib/X11/fonts/bar E: files-foo-in-bar: package-installs-file-to-usr-x11r6 usr/X11R6/man/ E: files-foo-in-bar: package-installs-file-to-usr-x11r6 usr/X11R6/man/man1/ E: files-foo-in-bar: package-installs-file-to-usr-x11r6 usr/X11R6/man/man1/bar.1.gz E: files-foo-in-bar: package-installs-into-etc-rc.boot etc/rc.boot/bar E: files-foo-in-bar: package-installs-into-etc-rc.d etc/rc.d/bar E: files-foo-in-bar: perl-module-in-core-directory usr/lib/perl/bar E: files-foo-in-bar: perl-module-in-core-directory usr/share/perl/bar E: files-foo-in-bar: subdir-in-bin bin/foo/ E: files-foo-in-bar: subdir-in-usr-bin usr/bin/foo/ E: files-foo-in-bar: udev-rule-in-etc etc/udev/rules.d/bar W: files-foo-in-bar: debug-package-should-be-named-dbg usr/lib/debug/bar W: files-foo-in-bar: executable-not-elf-or-script bin/foo/bar W: files-foo-in-bar: executable-not-elf-or-script usr/bin/foo/bar W: files-foo-in-bar: file-in-unusual-dir emul/bar W: files-foo-in-bar: file-in-unusual-dir usr/foo/bar W: files-foo-in-bar: file-in-unusual-dir usr/local/foo/bar W: files-foo-in-bar: file-in-unusual-dir var/cache/pbuilder/build/bar W: files-foo-in-bar: file-in-unusual-dir var/foo/bar W: files-foo-in-bar: file-in-unusual-dir var/lock/foo/bar W: files-foo-in-bar: file-in-unusual-dir var/run/foo/bar W: files-foo-in-bar: file-in-usr-lib-sgml usr/lib/sgml/bar W: files-foo-in-bar: image-file-in-usr-lib usr/lib/files-foo-in-bar/bar.png W: files-foo-in-bar: non-multi-arch-lib-dir lib32/ W: files-foo-in-bar: non-multi-arch-lib-dir lib64/ W: files-foo-in-bar: non-multi-arch-lib-dir libx32/ W: files-foo-in-bar: non-multi-arch-lib-dir usr/lib32/ W: files-foo-in-bar: non-multi-arch-lib-dir usr/lib64/ W: files-foo-in-bar: non-multi-arch-lib-dir usr/libx32/ W: files-foo-in-bar: non-standard-dir-in-usr usr/foo/ W: files-foo-in-bar: package-install-into-obsolete-dir etc/dhcp3/ : ^etc/dhcp3/ -> etc/dhcp (see also http://bugs.debian.org/673029) W: files-foo-in-bar: package-install-into-obsolete-dir etc/dhcp3/bar : ^etc/dhcp3/ -> etc/dhcp (see also http://bugs.debian.org/673029) W: files-foo-in-bar: package-installs-into-etc-gconf-schemas etc/gconf/schemas/bar W: files-foo-in-bar: package-installs-nonbinary-perl-in-usr-lib-perl5 usr/lib/perl5/Foo/Bar.pm W: files-foo-in-bar: package-installs-perllocal-pod usr/lib/perl-foo/perllocal.pod W: files-foo-in-bar: third-party-package-in-python-dir usr/lib/python2.7/bar W: files-foo-in-bar: vim-addon-within-vim-runtime-path usr/share/vim/vim73/bar W: files-foo-in-bar: vim-addon-within-vim-runtime-path usr/share/vim/vimcurrent/bar lintian-2.5.22ubuntu1/t/tests/files-foo-in-bar/desc0000664000000000000000000000214112310413206016741 0ustar Testname: files-foo-in-bar Sequence: 6000 Version: 1.0 Description: Test tags about files or dirs in given paths Test-For: dir-in-usr-local dir-or-file-in-build-tree dir-or-file-in-etc-opt dir-or-file-in-home dir-or-file-in-mnt dir-or-file-in-run dir-or-file-in-srv dir-or-file-in-tmp dir-or-file-in-var-lock dir-or-file-in-var-run dir-or-file-in-var-www file-directly-in-usr-share file-directly-in-usr-share-doc file-in-usr-lib-sgml file-in-usr-lib-site-python file-in-usr-local image-file-in-usr-lib non-multi-arch-lib-dir non-standard-toplevel-dir package-contains-xvpics-dir package-installs-file-to-usr-x11r6 package-installs-into-etc-gconf-schemas package-installs-into-etc-rc.boot package-installs-into-etc-rc.d package-install-into-obsolete-dir package-installs-nonbinary-perl-in-usr-lib-perl5 package-installs-perllocal-pod perl-module-in-core-directory perl-module-in-core-directory nested-examples-directory non-standard-dir-in-usr non-standard-dir-in-var subdir-in-bin subdir-in-usr-bin third-party-package-in-python-dir udev-rule-in-etc vim-addon-within-vim-runtime-path lintian-2.5.22ubuntu1/t/tests/files-foo-in-bar/debian/0000775000000000000000000000000012077065715017346 5ustar lintian-2.5.22ubuntu1/t/tests/files-foo-in-bar/debian/bar0000664000000000000000000000001512077065715020031 0ustar Hello World! lintian-2.5.22ubuntu1/t/tests/files-foo-in-bar/debian/bar.pod0000664000000000000000000000022012077065715020610 0ustar =head1 NAME bar - does stuff =head1 SYNOPSIS bar =head1 DESCRIPTION Does nothing. =head1 AUTHOR Niels Thykier =cut lintian-2.5.22ubuntu1/t/tests/files-foo-in-bar/debian/debian/0000775000000000000000000000000012310413206020546 5ustar lintian-2.5.22ubuntu1/t/tests/files-foo-in-bar/debian/debian/clean0000664000000000000000000000004412077065715021573 0ustar bar.1* Bar.pm bar.png perllocal.pod lintian-2.5.22ubuntu1/t/tests/files-foo-in-bar/debian/debian/install0000664000000000000000000000157112310413206022143 0ustar bar bin/foo bar emul bar etc/gconf/schemas/ bar etc/rc.boot bar etc/rc.d bar etc/udev/rules.d bar lib32 bar lib64 bar libx32 bar mnt/foo bar run/foo bar srv/foo bar tmp/foo bar usr/bin/foo bar usr/foo bar usr/lib/debug/ bar usr/lib32 bar usr/lib64 bar usr/libx32 bar usr/lib/perl/ bar usr/lib/python2.7/ bar usr/lib/sgml bar usr/lib/site-python/foo bar usr/local/foo bar usr/share bar usr/share/doc bar usr/share/doc/files-foo-in-bar/.xvpics/ bar usr/share/doc/files-foo-in-bar/examples/examples bar usr/share/perl/ bar usr/share/vim/vimcurrent/ bar usr/share/vim/vim73/ bar usr/X11R6/bin bar usr/X11R6/lib/X11/fonts/ bar var/foo bar var/lock/foo bar var/run/foo bar var/www/foo bar home/johndoe bar root bar etc/opt bar var/cache/pbuilder/build bar var/lib/sbuild bar var/lib/buildd bar etc/dhcp3 Bar.pm usr/lib/perl5/Foo bar.png usr/lib/files-foo-in-bar perllocal.pod usr/lib/perl-foo lintian-2.5.22ubuntu1/t/tests/files-foo-in-bar/debian/debian/rules0000775000000000000000000000043012077065715021645 0ustar #!/usr/bin/make -f %: dh $@ override_dh_auto_build: pod2man --section 1 bar.pod > bar.1 gzip --best bar.1 cp bar Bar.pm cp bar bar.png cp bar perllocal.pod override_dh_auto_install: dh_install bar.1.gz usr/X11R6/man/man1/ override_dh_usrlocal override_dh_gconf: # skip lintian-2.5.22ubuntu1/t/tests/files-foo-in-bar/debian/debian/dirs0000664000000000000000000000026212077065715021454 0ustar bin/foo mnt/foo tmp/foo usr/bin/foo usr/foo usr/lib/debug usr/local/foo usr/lib/site-python/foo usr/share/doc/files-foo-in-bar/examples/examples var/foo var/lock/foo var/run/foo lintian-2.5.22ubuntu1/t/tests/files-foo-in-bar/debian/debian/manpages0000664000000000000000000000000012077065715022274 0ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-news-general/0000775000000000000000000000000012077065714020323 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-news-general/tags0000664000000000000000000000133612077065714021207 0ustar E: changelog-file-news-general: debian-news-file-uses-obsolete-national-encoding at line 4 I: changelog-file-news-general: debian-news-entry-uses-asterisk W: changelog-file-news-general: changelog-news-debian-mismatch distribution unstable != UNRELEASED W: changelog-file-news-general: changelog-news-debian-mismatch urgency low != high W: changelog-file-news-general: debian-news-entry-has-strange-distribution UNRELEASED W: changelog-file-news-general: spelling-error-in-news-debian speling spelling W: changelog-file-news-general: syntax-error-in-debian-news-file line 11 "badly formatted trailer line" W: changelog-file-news-general: syntax-error-in-debian-news-file line 11 "found eof where expected more change data or trailer" lintian-2.5.22ubuntu1/t/tests/changelog-file-news-general/desc0000664000000000000000000000053012077065714021162 0ustar Testname: changelog-file-news-general Sequence: 6000 Version: 1.0 Description: General checks for NEWS.Debian Test-For: changelog-news-debian-mismatch debian-news-entry-has-strange-distribution debian-news-entry-uses-asterisk debian-news-file-uses-obsolete-national-encoding spelling-error-in-news-debian syntax-error-in-debian-news-file lintian-2.5.22ubuntu1/t/tests/changelog-file-news-general/debian/0000775000000000000000000000000012077065714021545 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-news-general/debian/debian/0000775000000000000000000000000012077065714022767 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-news-general/debian/debian/NEWS0000664000000000000000000000067212077065714023473 0ustar changelog-file-news-general (1.0) UNRELEASED; urgency=high * This is a major change, which shouldn't be using an asterisk. It also has an ISO 8859-1 character: and a speling error. -- Russ Allbery Fri, 01 Jan 2010 20:57:15 -0800 changelog-file-news-general (0.9) unstable; urgency=low Another entry, this one with a syntax error in the date. -- Russ Allbery Fri, 01 Jan 2010 20:57:15 -080 lintian-2.5.22ubuntu1/t/tests/automake-general/0000775000000000000000000000000012310413144016273 5ustar lintian-2.5.22ubuntu1/t/tests/automake-general/tags0000664000000000000000000000007212310413144017153 0ustar X: automake-general source: deprecated-configure-filename lintian-2.5.22ubuntu1/t/tests/automake-general/desc0000664000000000000000000000025712310413144017140 0ustar Testname: automake-general Sequence: 6000 Version: 1.0 Description: Test if the package uses the deprecated configure.in for automake Test-For: deprecated-configure-filename lintian-2.5.22ubuntu1/t/tests/automake-general/debian/0000775000000000000000000000000012310413144017515 5ustar lintian-2.5.22ubuntu1/t/tests/automake-general/debian/Makefile.am0000664000000000000000000000000012310413144021537 0ustar lintian-2.5.22ubuntu1/t/tests/automake-general/debian/configure.in0000664000000000000000000000000012310413144022014 0ustar lintian-2.5.22ubuntu1/t/tests/basic-3.0-native/0000775000000000000000000000000012077065714015735 5ustar lintian-2.5.22ubuntu1/t/tests/basic-3.0-native/tags0000664000000000000000000000000012077065714016604 0ustar lintian-2.5.22ubuntu1/t/tests/basic-3.0-native/desc0000664000000000000000000000014712077065714016600 0ustar Testname: basic-3.0-native Sequence: 0001 Version: 1.0 Description: Basic test of a native 3.0 package lintian-2.5.22ubuntu1/t/tests/basic-3.0-native/debian/0000775000000000000000000000000012310413205017135 5ustar lintian-2.5.22ubuntu1/t/tests/basic-3.0-native/debian/debian/0000775000000000000000000000000012077065714020401 5ustar lintian-2.5.22ubuntu1/t/tests/basic-3.0-native/debian/debian/source/0000775000000000000000000000000012077065714021701 5ustar lintian-2.5.22ubuntu1/t/tests/basic-3.0-native/debian/debian/source/format0000664000000000000000000000001512077065714023110 0ustar 3.0 (native) lintian-2.5.22ubuntu1/t/tests/runtests-todo-test-for/0000775000000000000000000000000012077065715017466 5ustar lintian-2.5.22ubuntu1/t/tests/runtests-todo-test-for/tags0000664000000000000000000000000012077065715020335 0ustar lintian-2.5.22ubuntu1/t/tests/runtests-todo-test-for/desc0000664000000000000000000000021112077065715020321 0ustar Testname: runtests-todo-test-for Sequence: 0700 Version: 1.0 Todo: yes Description: Test todo tests support Test-For: lintian-easter-egg lintian-2.5.22ubuntu1/t/tests/runtests-todo-test-for/debian/0000775000000000000000000000000012077065715020710 5ustar lintian-2.5.22ubuntu1/t/tests/runtests-todo-test-for/debian/dummy0000664000000000000000000000001712077065715021764 0ustar hello lintian! lintian-2.5.22ubuntu1/t/tests/runtests-todo-test-for/debian/debian/0000775000000000000000000000000012077065715022132 5ustar lintian-2.5.22ubuntu1/t/tests/runtests-todo-test-for/debian/debian/install0000664000000000000000000000003112077065715023515 0ustar dummy usr/share/lintian/ lintian-2.5.22ubuntu1/t/tests/cruft-current-libtool/0000775000000000000000000000000012077065714017337 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-current-libtool/tags0000664000000000000000000000000012077065714020206 0ustar lintian-2.5.22ubuntu1/t/tests/cruft-current-libtool/desc0000664000000000000000000000027112077065714020200 0ustar Testname: cruft-current-libtool Sequence: 6000 Version: 1.0 Description: Test that a current ltmain.sh is detected correctly Test-Against: ancient-libtool References: Debian Bug#293296 lintian-2.5.22ubuntu1/t/tests/cruft-current-libtool/debian/0000775000000000000000000000000012077065714020561 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-current-libtool/debian/ltmain.sh0000664000000000000000000000356612077065714022413 0ustar # ltmain.sh - Provide generalized library-building support services. # NOTE: Changing this file will not affect anything until you rerun configure. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, # 2007 Free Software Foundation, Inc. # Originally by Gordon Matzigkeit , 1996 # # 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, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. basename="s,^.*/,,g" # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" # The name of this program: progname=`echo "$progpath" | $SED $basename` modename="$progname" # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 PROGRAM=ltmain.sh PACKAGE=libtool VERSION="1.5.24 Debian 1.5.24-1ubuntu1" TIMESTAMP=" (1.1220.2.456 2007/06/24 02:25:32)" lintian-2.5.22ubuntu1/t/tests/nmu-not-a-nmu/0000775000000000000000000000000012310413146015464 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-not-a-nmu/tags0000664000000000000000000000007212310413146016344 0ustar W: nmu-not-a-nmu source: changelog-should-not-mention-nmu lintian-2.5.22ubuntu1/t/tests/nmu-not-a-nmu/desc0000664000000000000000000000026212310413146016325 0ustar Testname: nmu-not-a-nmu Sequence: 6000 Version: 1.0 Description: Test for MU declared as NMU Author: Niels Thykier Test-For: changelog-should-not-mention-nmu lintian-2.5.22ubuntu1/t/tests/nmu-not-a-nmu/debian/0000775000000000000000000000000012310413146016706 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-not-a-nmu/debian/debian/0000775000000000000000000000000012310413206020125 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-not-a-nmu/debian/debian/changelog.in0000664000000000000000000000032112310413206022400 0ustar {$source} ({$version}) unstable; urgency=low * Non-maintainer upload. * Lintian Test Suite. * Test: {$testname} * Suppress "should close ITP bug" messages. (Closes: #123456) -- {$author} {$date} lintian-2.5.22ubuntu1/t/tests/changelog-file-no-upstream-changelog/0000775000000000000000000000000012310413206022112 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-no-upstream-changelog/upstream/0000775000000000000000000000000012077065714023773 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-no-upstream-changelog/upstream/changelog0000664000000000000000000000004612077065714025645 0ustar This is some upstream changelog file. lintian-2.5.22ubuntu1/t/tests/changelog-file-no-upstream-changelog/tags0000664000000000000000000000022412310413206022771 0ustar P: changelog-file-no-upstream-changelog source: debian-watch-may-check-gpg-signature P: changelog-file-no-upstream-changelog: no-upstream-changelog lintian-2.5.22ubuntu1/t/tests/changelog-file-no-upstream-changelog/desc0000664000000000000000000000034412077065714022775 0ustar Testname: changelog-file-no-upstream-changelog Sequence: 6000 Type: non-native Version: 1.0-1 Skeleton: pedantic Options: --pedantic -IE Description: Check a package without an upstream changelog Test-For: no-upstream-changelog lintian-2.5.22ubuntu1/t/tests/changelog-file-no-upstream-changelog/debian/0000775000000000000000000000000012077065714023355 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-no-upstream-changelog/debian/debian/0000775000000000000000000000000012077065714024577 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-no-upstream-changelog/debian/debian/rules0000664000000000000000000000032012077065714025647 0ustar #!/usr/bin/make -f PKG:=$(shell dh_listpackages) DOCDIR:=debian/$(PKG)/usr/share/doc/$(PKG) %: dh $@ override_dh_installchangelogs: dh_installchangelogs rm -f $(DOCDIR)/changelog $(DOCDIR)/changelog.gz lintian-2.5.22ubuntu1/t/tests/fields-maintainer-general/0000775000000000000000000000000012077065715020101 5ustar lintian-2.5.22ubuntu1/t/tests/fields-maintainer-general/tags0000664000000000000000000000150212077065715020760 0ustar E: fields-maintainer-general source: maintainer-name-missing E: fields-maintainer-general source: uploader-address-causes-mail-loops-or-bounces I L. Oop E: fields-maintainer-general source: uploader-address-malformed Mr. Missing Comma Mrs. Missing Comma E: fields-maintainer-general source: uploader-name-missing E: fields-maintainer-general: maintainer-name-missing W: fields-maintainer-general source: changelog-should-mention-nmu W: fields-maintainer-general source: duplicate-uploader Russ Allbery W: fields-maintainer-general source: maintainer-also-in-uploaders W: fields-maintainer-general source: source-nmu-has-incorrect-version-number 1.0 lintian-2.5.22ubuntu1/t/tests/fields-maintainer-general/desc0000664000000000000000000000046212077065715020744 0ustar Testname: fields-maintainer-general Sequence: 6000 Version: 1.0 Description: Tests of various maintainer and uploader tags Test-For: duplicate-uploader maintainer-also-in-uploaders maintainer-name-missing uploader-address-malformed uploader-name-missing uploader-address-causes-mail-loops-or-bounces lintian-2.5.22ubuntu1/t/tests/fields-maintainer-general/debian/0000775000000000000000000000000012077065715021323 5ustar lintian-2.5.22ubuntu1/t/tests/fields-maintainer-general/debian/debian/0000775000000000000000000000000012310413206022523 5ustar lintian-2.5.22ubuntu1/t/tests/fields-maintainer-general/debian/debian/control.in0000664000000000000000000000136512310413206024540 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: Uploaders: , Russ Allbery , Russ Allbery , I L. Oop , Mr. Missing Comma Mrs. Missing Comma Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/legacy-relations/0000775000000000000000000000000012310413206016313 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-relations/post_test0000664000000000000000000000007012310413206020257 0ustar s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/ lintian-2.5.22ubuntu1/t/tests/legacy-relations/tags0000664000000000000000000001144212310413206017176 0ustar E: relations source: build-conflicts-with-build-dependency bar [alpha test] E: relations source: build-conflicts-with-build-dependency debmake [!powerpc] E: relations source: build-depends-on-build-essential build-depends-indep E: relations source: build-depends-on-essential-package-without-using-version build-depends-indep: bash E: relations source: build-depends-on-essential-package-without-using-version build-depends: findutils E: relations source: build-depends-on-obsolete-package build-depends-indep: debmake E: relations source: depends-on-build-essential-package-without-using-version libc6-dev [build-depends: libc6-dev] E: relations source: depends-on-build-essential-package-without-using-version make [build-depends-indep: make] E: relations source: invalid-arch-string-in-source-relation test [build-conflicts: bar [alpha test]] E: relations source: section-area-mismatch Package relations-multiple-libs E: relations-multiple-libs: conflicts-with-dependency depends libpng2 E: relations-multiple-libs: depends-on-obsolete-package recommends: gs E: relations-multiple-libs: depends-on-obsolete-package recommends: gs-gpl E: relations-multiple-libs: depends-on-obsolete-package suggests: x-dev E: relations-multiple-libs: description-synopsis-is-duplicated E: relations-multiple-libs: package-depends-on-multiple-libpng-versions libpng2 libpng3 E: relations-multiple-libs: package-depends-on-multiple-libstdc-versions libstdc++2.10 libstdc++2.10-glibc2.2 libstdc++3.0 E: relations-multiple-libs: package-depends-on-multiple-tcl-versions tcl8.0 tcl8.2 E: relations-multiple-libs: package-depends-on-multiple-tk-versions tk8.2 tk8.3 E: relations-multiple-libs: package-depends-on-multiple-tkx-versions tkx8.2 tkx8.3 E: relations-multiple-libs: usr-share-doc-symlink-without-dependency relations E: relations: changelog-file-missing-in-native-package E: relations: conflicts-with-dependency depends foo E: relations: conflicts-with-dependency depends relations E: relations: depends-on-essential-package-without-using-version depends: coreutils E: relations: depends-on-essential-package-without-using-version depends: dpkg E: relations: depends-on-obsolete-package recommends: gs E: relations: needlessly-depends-on-awk pre-depends E: relations: no-copyright-file I: relations source: build-depends-on-python-dev-with-no-arch-any I: relations source: ored-build-depends-on-obsolete-package build-depends-indep: gs I: relations-multiple-libs: description-synopsis-might-not-be-phrased-properly I: relations-multiple-libs: ored-depends-on-obsolete-package suggests: gs I: relations: conflicts-with-version foobar (<< 5+5) I: relations: ored-depends-on-obsolete-package recommends: gs-aladdin W: relations source: ancient-standards-version 3.7.3 (current is CURRENT) W: relations source: bad-homepage lintian.debian.org W: relations source: build-depends-on-1-revision build-depends-indep: libfoo (>= 1.2-1) W: relations source: package-depends-on-itself relations depends W: relations source: package-depends-on-itself relations-multiple-libs recommends W: relations source: package-has-a-duplicate-build-relation foo (= 3) [!amd64 !i386], foo (<< 4) [!amd64 !i386] W: relations source: package-has-a-duplicate-build-relation perl, perl (>= 5.0) W: relations source: patch-system-but-no-source-readme W: relations source: quilt-build-dep-but-no-series-file W: relations source: redundant-origin-field W: relations source: stronger-dependency-implies-weaker relations depends -> recommends dpkg W: relations source: stronger-dependency-implies-weaker relations depends -> recommends null W: relations source: stronger-dependency-implies-weaker relations pre-depends -> depends gawk | awk W: relations source: stronger-dependency-implies-weaker relations recommends -> suggests some-other-package W: relations source: stronger-dependency-implies-weaker relations-multiple-libs depends -> recommends ${shlibs:Depends} W: relations source: timewarp-standards-version (2007-12-02 < 2007-12-03) W: relations source: virtual-package-depends-without-real-package-depends build-depends: mail-transport-agent W: relations-multiple-libs: bad-homepage lintian.debian.org W: relations-multiple-libs: breaks-without-version libpng2 W: relations-multiple-libs: redundant-bugs-field W: relations-multiple-libs: redundant-origin-field W: relations: bad-homepage lintian.debian.org W: relations: depends-exclusively-on-makedev depends W: relations: depends-on-old-emacs recommends: emacs21 W: relations: package-relation-with-self depends: relations (<< 3) W: relations: redundant-bugs-field W: relations: redundant-origin-field W: relations: versioned-dependency-satisfied-by-perl depends: libthreads-shared-perl (>= 1.29) W: relations: virtual-package-depends-without-real-package-depends depends: mail-transport-agent W: relations: virtual-package-depends-without-real-package-depends pre-depends: awk lintian-2.5.22ubuntu1/t/tests/legacy-relations/desc0000664000000000000000000000015412310413206017154 0ustar Testname: legacy-relations Source: relations Sequence: 9999 Version: 5 Description: Legacy test "relations" lintian-2.5.22ubuntu1/t/tests/legacy-relations/debian/0000775000000000000000000000000012310413206017535 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-relations/debian/debian/0000775000000000000000000000000012310413206020757 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-relations/debian/debian/changelog0000664000000000000000000000202512310413206022630 0ustar relations (5) unstable; urgency=low * I'm orphaning this package -- I'm sick of it: it's completely broken, lintian complains all over the place. -- Jeroen van Wolffelaar Sun, 02 Dec 2007 15:59:59 -0800 relations (4) unstable; urgency=low * Added a package that tests dependencies for multiple versions of libraries, and test some description stuff in there as well. -- Josip Rodin Fri, 29 Nov 2002 20:13:33 +0100 relations (3) unstable; urgency=low * Added a virtual provides to test against my virtual depends without a real package first test -- Sean 'Shaleh' Perry Thu, 8 Feb 2001 11:29:53 -0800 relations (2) unstable; urgency=low * Added a ddepends on dpkg (violates policy) and a versioned depends on bash (follows policy) -- Sean 'Shaleh' Perry Fri, 2 Feb 2001 12:37:17 -0800 relations (1) unstable; urgency=low * Initial version -- Richard Braakman Tue, 7 Jul 1998 16:27:56 +0200 lintian-2.5.22ubuntu1/t/tests/legacy-relations/debian/debian/tmp/0000775000000000000000000000000012310413206021557 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-relations/debian/debian/tmp/DEBIAN/0000775000000000000000000000000012310413206022501 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-relations/debian/debian/tmp/DEBIAN/control0000664000000000000000000000111512310413206024102 0ustar Package: relations-multiple-libs Version: 4 Section: misc Priority: optional Architecture: all Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3 Installed-Size: 12 Maintainer: Lintian Maintainer Source: relations Description: Duplicate library dependency relationships. Duplicate library dependency relationships. This tests the depending on different versions of the same library at the same time. . At the same time, it conveniently tests some description file checks. :) lintian-2.5.22ubuntu1/t/tests/legacy-relations/debian/debian/rules0000775000000000000000000000325512310413206022044 0ustar #!/usr/bin/make -f # Copyright (C) 1998 Richard Braakman # # 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. build-arch: build-indep: build: build-arch build-indep binary-arch: binary-indep: install -d debian/tmp/DEBIAN dpkg-gencontrol -prelations -isp dpkg --build debian/tmp ../relations_5_all.deb install -d debian/tmp/usr/share/doc/ ln -s relations debian/tmp/usr/share/doc/relations-multiple-libs dpkg-gencontrol -prelations-multiple-libs -isp dpkg --build debian/tmp ../relations-multiple-libs_5_all.deb binary: binary-arch binary-indep clean:: rm -rf debian/tmp debian/files # Test that python-all-dev satisfies a Python requirement. python -V || true # Test allowing quilt Build-Depends for manual quilt invocations. TESTING=foo ANOTHER=bar quilt || true # Test requiring perl Build-Depends for manual perl invocations. [ ! -f Build ] || $(PERL) Build distclean .PHONY: build-arch build-indep build binary-arch binary-indep binary clean lintian-2.5.22ubuntu1/t/tests/legacy-relations/debian/debian/control0000664000000000000000000000466012310413206022370 0ustar Source: relations Section: misc Priority: optional Build-Depends: mail-transport-agent, libc6-dev, findutils, foo (= 3) [!amd64 !i386], bar, arch-test1 [i386], arch-test2 [!i386], quilt (>= 0.40), perl, python-all-dev Build-Depends-Indep: make, bash, debmake, build-essential, baz (= 2.0), ghostscript | gs, car (>= 1.0), car (<= 2.0), caz (= 1.0) [amd64], caz (>= 2.0) [i386], caz (= 2.0) [powerpc], perl (>= 5.0), foo (<< 4) [!amd64 !i386], libfoo (>= 1.2-1), bozzle [kfreebsd-i386] Build-Conflicts: foo [amd64 i386], bar [alpha test], xlibs-dev, arch-test1 [powerpc], arch-test2 [!sparc] Build-Conflicts-Indep: debmake [!powerpc] Maintainer: Debian QA Group Standards-Version: 3.7.3 Homepage: lintian.debian.org Origin: Debian Bugs: debbugs://bugs.debian.org/ Package: relations Architecture: all Section: contrib/misc Pre-Depends: awk|gawk Depends: relations(<< 3), dpkg, bash (>> 2.0 ), mail-transport-agent, gawk | awk, foo (>> 2.0), foo (<< 2.2), coreutils, ,null (>= 0), ${misc:Depends}, makedev, libthreads-shared-perl (>= 1.29) Provides: mail-reader Replaces: relations Conflicts: foobar (<< 5+5), foo, relations, gnuwdf, Suggests: alpha, gnu (>= 44-3-4-8-11.4) | ung (<< 89beta) | nug | ngu, beta, some-other-package Recommends: emacs21 | emacsen, dpkg, null, some-other-package, ${f-oo:b-ar}, gs | ghostscript | gs-aladdin Description: Strange dependency relationships (dummy) This package declares relationships designed to tickle lintian's "fields" check. It should generate a number of tags for these. . The package is built with "dpkg --build --no-check", because some of the relationships used here are normally rejected by dpkg. Package: relations-multiple-libs Architecture: all Section: non-free/misc Depends: libstdc++2.10, libstdc++2.10-glibc2.2, libstdc++3.0, tk8.2, tk8.3, tcl8.0, tcl8.2, tkx8.2, tkx8.3, tclx8.2, libpng2, libpng3, xorg, ${shlibs:Depends}, makedev | udev Provides: awk Enhances: foo Recommends: ${shlibs:Depends}, relations-multiple-libs, gs | gs-gpl, makedev Breaks: libpng3 (<< 1.0), libpng2 Suggests: x-dev, ghostscript | gs Description: Duplicate library dependency relationships. Duplicate library dependency relationships. This tests the depending on different versions of the same library at the same time. . At the same time, it conveniently tests some description file checks. :) . It is a metapackage from the lintian perspective, so the xorg dependency should be allowed. lintian-2.5.22ubuntu1/t/tests/debhelper-compat-empty/0000775000000000000000000000000012077065715017442 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-compat-empty/tags0000664000000000000000000000022612077065715020323 0ustar E: debhelper-compat-empty source: debhelper-compat-file-is-empty W: debhelper-compat-empty source: package-uses-deprecated-debhelper-compat-version 1 lintian-2.5.22ubuntu1/t/tests/debhelper-compat-empty/desc0000664000000000000000000000030412077065715020300 0ustar Testname: debhelper-compat-empty Sequence: 6000 Version: 1.0 Description: Test empty debian/compat file Test-For: debhelper-compat-file-is-empty package-uses-deprecated-debhelper-compat-version lintian-2.5.22ubuntu1/t/tests/debhelper-compat-empty/debian/0000775000000000000000000000000012077065715020664 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-compat-empty/debian/debian/0000775000000000000000000000000012077065715022106 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-compat-empty/debian/debian/compat0000664000000000000000000000000112077065715023303 0ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink-fp/0000775000000000000000000000000012077065716020134 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink-fp/upstream/0000775000000000000000000000000012077065716021774 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink-fp/upstream/code.h0000664000000000000000000000014312077065716023055 0ustar #ifndef CODE_H_ #define CODE_H_ double e(void (*f)(char *)); double energy(double mass); #endif lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink-fp/upstream/Makefile0000664000000000000000000000131012077065716023427 0ustar CC=gcc CFLAGS+= -fPIC SONAME:= libfoo-1.so LSONAME:= libbar-1.so devsymlink=$(shell echo $(1) | perl -pe 's:-[\d\.]*\.so$$:\.so:') LIBFILES:=$(SONAME) $(LSONAME) all: $(LIBFILES) $(LIBFILES): code.o $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$@ $^ -lc clean: rm -f *.a *.o *.so* install: all install -m 0755 -d $(DESTDIR)/lib install -m 0755 -d $(DESTDIR)/usr/lib install -m 0755 -d $(DESTDIR)/usr/include install -m 0644 $(LSONAME) $(DESTDIR)/lib install -m 0644 $(SONAME) $(DESTDIR)/usr/lib ln -s /lib/$(LSONAME) $(DESTDIR)/usr/lib/$(call devsymlink,$(LSONAME)) ln -s $(SONAME) $(DESTDIR)/usr/lib/$(call devsymlink,$(SONAME)) install -m 0644 code.h $(DESTDIR)/usr/include .PHONY: install clean lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink-fp/upstream/code.c0000664000000000000000000000036012077065716023051 0ustar #include #include #include "code.h" double e(void (*f)(char *)){ char tmp[10]; double x; f(tmp); x = atof(tmp); return exp(x); } double energy(double mass){ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass; } lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink-fp/tags0000664000000000000000000000000012077065716021003 0ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink-fp/desc0000664000000000000000000000025112077065716020773 0ustar Testname: shared-libs-dev-symlink-fp Sequence: 6000 Version: 1.0-1 Type: non-native Description: Test against dev symlink fp Test-Against: dev-pkg-without-shlib-symlink lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink-fp/debian/0000775000000000000000000000000012077065716021356 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink-fp/debian/debian/0000775000000000000000000000000012310413206022555 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink-fp/debian/debian/libfoo-1.symbols0000664000000000000000000000016712077065716025626 0ustar libfoo-1.so libfoo-1 #MINVER# e@Base 1.0 energy@Base 0.9 libbar-1.so libfoo-1 #MINVER# e@Base 1.0 energy@Base 0.9 lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink-fp/debian/debian/control.in0000664000000000000000000000152112310413206024564 0ustar Source: {$source} Priority: extra Section: libs Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: libfoo-1 Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: libfoo-dev Architecture: any Section: libdevel Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, libfoo-1 (= $\{binary:Version\}) Description: {$description} - dev This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . Dev package. lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink-fp/debian/debian/libfoo-dev.install0000664000000000000000000000006012077065716026212 0ustar usr/include usr/lib/libbar.so usr/lib/libfoo.so lintian-2.5.22ubuntu1/t/tests/shared-libs-dev-symlink-fp/debian/debian/libfoo-1.install0000664000000000000000000000004412077065716025576 0ustar lib/libbar-1.so usr/lib/libfoo-1.so lintian-2.5.22ubuntu1/t/tests/cruft-general-test-suite/0000775000000000000000000000000012310413206017713 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-general-test-suite/upstream/0000775000000000000000000000000012077065715021575 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-general-test-suite/upstream/hello.c0000664000000000000000000000012312077065715023040 0ustar #include int main(void) { printf("Hello world!\n"); return 0; } lintian-2.5.22ubuntu1/t/tests/cruft-general-test-suite/tags0000664000000000000000000000011112310413206020565 0ustar P: cruft-general-test-suite source: debian-watch-may-check-gpg-signature lintian-2.5.22ubuntu1/t/tests/cruft-general-test-suite/desc0000664000000000000000000000127112077065715020577 0ustar Testname: cruft-general-test-suite Sequence: 6000 Version: 1.0-1 Type: non-native Skeleton: pedantic Options: --pedantic -I -E Description: Check that cruft in test suites is okay Test-Against: configure-generated-file-in-source source-contains-arch-control-dir source-contains-arch-inventory-file source-contains-bts-control-dir source-contains-bzr-control-dir source-contains-cvs-conflict-copy source-contains-cvs-control-dir source-contains-git-control-dir source-contains-hg-control-dir source-contains-hg-tags-file source-contains-prebuilt-binary source-contains-svk-commit-file source-contains-svn-commit-file source-contains-svn-conflict-file source-contains-svn-control-dir lintian-2.5.22ubuntu1/t/tests/cruft-general-test-suite/pre_upstream0000775000000000000000000000256312077065715022377 0ustar #!/bin/sh # # Create all the various junk that shouldn't exist upstream. We do much of it # here rather than in the template so that Lintian itself can be imported into # revision control systems. set -e dir="$1" mkdir -p "${dir}/t/CVS" echo 'source-contains-cvs-control-dir' > "${dir}/t/CVS/Entries" mkdir -p "${dir}/foo/t/.svn" echo 'source-contains-svn-control-dir' > "${dir}/foo/t/.svn/format" mkdir -p "${dir}/test/.bzr" echo 'source-contains-bzr-control-dir' > "${dir}/test/.bzr/foo" mkdir -p "${dir}/bar/test/{arch}" echo 'source-contains-arch-control-dir' > "${dir}/bar/test/{arch}/foo" mkdir -p "${dir}/tests/.git" echo 'source-contains-git-control-dir' > "${dir}/tests/.git/foo" mkdir -p "${dir}/baz/foo/tests/.hg" echo 'source-contains-hg-control-dir' > "${dir}/baz/foo/tests/.hg/foo" mkdir -p "${dir}/testset/.be" echo 'source-contains-bts-control-dir' > "${dir}/testset/.be/foo" echo 'source-contains-svn-commit-file' > "${dir}/t/svn-commit.tmp" echo 'source-contains-svk-commit-file' > "${dir}/t/svk-commit444.tmp" echo 'source-contains-arch-inventory-file' > "${dir}/t/.arch-inventory" echo 'source-contains-hg-tags-file' > "${dir}/t/.hgtags" echo 'source-contains-cvs-conflict-copy' > "${dir}/t/.#foo.1.1" echo 'source-contains-svn-conflict-file' > "${dir}/t/foo.r1352" echo 'configure-generated-file-in-source' > "${dir}/tests/config.cache" cd "$1" gcc -o t/hello hello.c lintian-2.5.22ubuntu1/t/tests/files-flash-non-free/0000775000000000000000000000000012077065715016777 5ustar lintian-2.5.22ubuntu1/t/tests/files-flash-non-free/tags0000664000000000000000000000034412077065715017661 0ustar E: files-flash-non-free source: section-area-mismatch Package files-flash-non-free-non-free E: files-flash-non-free: non-free-flash usr/share/foo/flvplayer.swf E: files-flash-non-free: non-free-flash usr/share/foo/mp3player.swf lintian-2.5.22ubuntu1/t/tests/files-flash-non-free/desc0000664000000000000000000000016612077065715017643 0ustar Testname: files-flash-non-free Sequence: 6000 Version: 1.0 Description: non-free flash files Test-For: non-free-flash lintian-2.5.22ubuntu1/t/tests/files-flash-non-free/debian/0000775000000000000000000000000012077065715020221 5ustar lintian-2.5.22ubuntu1/t/tests/files-flash-non-free/debian/dewplayer-slim.swf0000664000000000000000000000000012077065715023666 0ustar lintian-2.5.22ubuntu1/t/tests/files-flash-non-free/debian/flvplayer.swf0000664000000000000000000000000012077065715022734 0ustar lintian-2.5.22ubuntu1/t/tests/files-flash-non-free/debian/dewplayer.swf0000664000000000000000000000000012077065715022724 0ustar lintian-2.5.22ubuntu1/t/tests/files-flash-non-free/debian/mp3player.swf0000664000000000000000000000000012077065715022644 0ustar lintian-2.5.22ubuntu1/t/tests/files-flash-non-free/debian/debian/0000775000000000000000000000000012310413206021421 5ustar ././@LongLink0000644000000000000000000000014700000000000011605 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-flash-non-free/debian/debian/files-flash-non-free-non-free.installlintian-2.5.22ubuntu1/t/tests/files-flash-non-free/debian/debian/files-flash-non-free-non-free.insta0000664000000000000000000000007712077065715030122 0ustar dewplayer.swf usr/share/foo/ dewplayer-slim.swf usr/share/foo/ lintian-2.5.22ubuntu1/t/tests/files-flash-non-free/debian/debian/control.in0000664000000000000000000000163612310413206023437 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Homepage: http://lintian.debian.org/ Package: {$source} Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: {$source}-non-free Section: non-free/{$section} Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} (okay) non-free in non-free, nice. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/files-flash-non-free/debian/debian/files-flash-non-free.install0000664000000000000000000000007212077065715026736 0ustar flvplayer.swf usr/share/foo/ mp3player.swf usr/share/foo/ lintian-2.5.22ubuntu1/t/tests/testsuite-general/0000775000000000000000000000000012310413146016520 5ustar lintian-2.5.22ubuntu1/t/tests/testsuite-general/pre_build0000775000000000000000000000007412310413146020414 0ustar #!/bin/sh set -e DIR="$1" mkfifo "$DIR/debian/tests/fifo" lintian-2.5.22ubuntu1/t/tests/testsuite-general/tags0000664000000000000000000000122412310413146017400 0ustar I: testsuite-general source: inconsistent-testsuite-field I: testsuite-general source: runtime-test-file-is-not-a-regular-file debian/tests/fifo P: testsuite-general source: unknown-runtime-tests-feature unknownfeature P: testsuite-general source: unknown-runtime-tests-field comment P: testsuite-general source: unknown-runtime-tests-restriction unknownrestriction W: testsuite-general source: debian-tests-control-uses-national-encoding at line 2 W: testsuite-general source: illegal-runtime-test-name under_score W: testsuite-general source: missing-runtime-test-file debian/tests/missing-test W: testsuite-general source: missing-runtime-tests-field tests lintian-2.5.22ubuntu1/t/tests/testsuite-general/desc0000664000000000000000000000072012310413146017360 0ustar Testname: testsuite-general Sequence: 6000 Version: 1.0 Description: General tests of the autopkgtest control file Options: -I -E --pedantic Skeleton: pedantic Test-For: debian-tests-control-uses-national-encoding illegal-runtime-test-name inconsistent-testsuite-field missing-runtime-test-file missing-runtime-tests-field runtime-test-file-is-not-a-regular-file unknown-runtime-tests-feature unknown-runtime-tests-field unknown-runtime-tests-restriction lintian-2.5.22ubuntu1/t/tests/testsuite-general/debian/0000775000000000000000000000000012310413146017742 5ustar lintian-2.5.22ubuntu1/t/tests/testsuite-general/debian/subdir/0000775000000000000000000000000012310413146021232 5ustar lintian-2.5.22ubuntu1/t/tests/testsuite-general/debian/subdir/test-in-subdir0000664000000000000000000000002112310413146024017 0ustar #!/bin/sh exit 0 lintian-2.5.22ubuntu1/t/tests/testsuite-general/debian/debian/0000775000000000000000000000000012310413146021164 5ustar lintian-2.5.22ubuntu1/t/tests/testsuite-general/debian/debian/tests/0000775000000000000000000000000012310413146022326 5ustar lintian-2.5.22ubuntu1/t/tests/testsuite-general/debian/debian/tests/test-10000664000000000000000000000002112310413146023357 0ustar #!/bin/sh exit 0 lintian-2.5.22ubuntu1/t/tests/testsuite-general/debian/debian/tests/under_score0000664000000000000000000000002112310413146024552 0ustar #!/bin/sh exit 0 lintian-2.5.22ubuntu1/t/tests/testsuite-general/debian/debian/tests/control0000664000000000000000000000047712310413146023741 0ustar Tests: test-1 Comment: Test-1 is h so good. Last paragraph misses a Tests field. Tests: fifo missing-test under_score Tests: test-in-subdir Restrictions: rw-build-tree breaks-testbed needs-root build-needed Depends: @ Features: Tests-Directory: subdir Features: unknownfeature Restrictions: unknownrestriction lintian-2.5.22ubuntu1/t/tests/manpages-general/0000775000000000000000000000000012310413146016262 5ustar lintian-2.5.22ubuntu1/t/tests/manpages-general/post_test0000664000000000000000000000024012310413146020225 0ustar # pod2man from perl 5.14 and 5.18 add different amounts of "groff # boilerplate", so the line number differs. s/simple\.pod\.gz:[0-9][0-9]*/simple.pod.gz:LINE/ lintian-2.5.22ubuntu1/t/tests/manpages-general/tags0000664000000000000000000000736412310413146017155 0ustar E: manpages-general: bad-link-to-undocumented-manpage usr/share/man/man1/sbin-binary.1.gz E: manpages-general: bad-so-link-within-manual-page usr/share/man/man1/bad-so.1.gz E: manpages-general: empty-manual-page usr/share/man/de/man1/binary-without-english-manpage.1 E: manpages-general: empty-manual-page usr/share/man/man1/usr-bin-binary-alt.1.gz E: manpages-general: empty-manual-page usr/share/man/man1/usr-sbin-binary.1.gz E: manpages-general: empty-manual-page usr/share/man/man6/usr-games-binary.6.gz E: manpages-general: manpage-has-wrong-extension usr/share/man/man6/simple.pod.gz E: manpages-general: manpage-is-dh_make-template usr/X11R6/man/man1/rstartd.1x.gz E: manpages-general: manpage-is-dh_make-template usr/share/man/man1/program.1.gz E: manpages-general: manpage-named-after-build-path usr/share/man/man6/_build_buildd-openchangex_1.0-3-i386-mbKpOA_openchange-1.0_simple.6.gz E: manpages-general: manpage-not-compressed usr/share/man/de/man1/binary-without-english-manpage.1 E: manpages-general: manpage-not-compressed usr/share/man/man1/usr-bin-binary.1 E: manpages-general: manpage-not-compressed-with-gzip usr/share/man/man1/usr-bin-binary-alt.1.gz E: manpages-general: manpage-not-compressed-with-gzip usr/share/man/man1/usr-sbin-binary.1.gz E: manpages-general: manpage-not-compressed-with-max-compression usr/share/man/man6/usr-games-binary.6.gz E: manpages-general: package-installs-file-to-usr-x11r6 usr/X11R6/ E: manpages-general: package-installs-file-to-usr-x11r6 usr/X11R6/bin/ E: manpages-general: package-installs-file-to-usr-x11r6 usr/X11R6/bin/rstartd E: manpages-general: package-installs-file-to-usr-x11r6 usr/X11R6/man/ E: manpages-general: package-installs-file-to-usr-x11r6 usr/X11R6/man/man1/ E: manpages-general: package-installs-file-to-usr-x11r6 usr/X11R6/man/man1/rstartd.1x.gz I: manpages-general: FSSTND-dir-in-manual-page usr/share/man/man1/test.1p.gz:13 /var/catman/ I: manpages-general: hyphen-used-as-minus-sign usr/share/man/man3/include.3.gz:11 I: manpages-general: hyphen-used-as-minus-sign usr/share/man/man3/include.3.gz:12 I: manpages-general: hyphen-used-as-minus-sign usr/share/man/man3/include.3.gz:13 I: manpages-general: hyphen-used-as-minus-sign usr/share/man/man3/include.3.gz:14 I: manpages-general: hyphen-used-as-minus-sign usr/share/man/man3/include.3.gz:15 I: manpages-general: hyphen-used-as-minus-sign usr/share/man/man3/include.3.gz:9 I: manpages-general: spelling-error-in-manpage usr/X11R6/man/man1/rstartd.1x.gz speling spelling I: manpages-general: spelling-error-in-manpage usr/share/man/man1/program.1.gz speling spelling W: manpages-general: binary-without-english-manpage usr/bin/binary-without-english-manpage W: manpages-general: gz-file-not-gzip usr/share/man/man1/usr-bin-binary-alt.1.gz W: manpages-general: gz-file-not-gzip usr/share/man/man1/usr-sbin-binary.1.gz W: manpages-general: link-to-undocumented-manpage usr/share/man/man1/bin-binary.1.gz W: manpages-general: link-to-undocumented-manpage usr/share/man/man3/function.3.gz W: manpages-general: manpage-has-bad-whatis-entry usr/share/man/man1/usr-bin-binary.1 W: manpages-general: manpage-has-errors-from-man usr/share/man/man1/test.1p.gz 14: warning: macro `dep' not defined (possibly missing space after `de') W: manpages-general: manpage-has-errors-from-man usr/share/man/man3/included.3.gz 6: warning: macro `zY' not defined W: manpages-general: manpage-has-errors-from-pod2man usr/share/man/man1/test.1p.gz:19 W: manpages-general: manpage-has-useless-whatis-entry usr/share/man/man1/true.1.gz W: manpages-general: manpage-locale-dir-country-specific usr/share/man/de_DE/man1/test-utf8-chars.1p.gz W: manpages-general: manpage-section-mismatch usr/X11R6/man/man1/rstartd.1x.gz:5 1x != 1 W: manpages-general: manpage-section-mismatch usr/share/man/man6/simple.pod.gz:LINE pod != 6 lintian-2.5.22ubuntu1/t/tests/manpages-general/desc0000664000000000000000000000132112310413146017120 0ustar Testname: manpages-general Sequence: 6000 Version: 1.0 Description: General tests for manpage checks Test-For: FSSTND-dir-in-manual-page bad-link-to-undocumented-manpage bad-so-link-within-manual-page binary-without-english-manpage empty-manual-page hyphen-used-as-minus-sign link-to-undocumented-manpage manpage-has-bad-whatis-entry manpage-has-errors-from-man manpage-has-errors-from-pod2man manpage-has-useless-whatis-entry manpage-has-wrong-extension manpage-is-dh_make-template manpage-locale-dir-country-specific manpage-named-after-build-path manpage-not-compressed manpage-not-compressed-with-gzip manpage-not-compressed-with-max-compression manpage-section-mismatch spelling-error-in-manpage lintian-2.5.22ubuntu1/t/tests/manpages-general/debian/0000775000000000000000000000000012310413146017504 5ustar lintian-2.5.22ubuntu1/t/tests/manpages-general/debian/sketch.10000664000000000000000000000576512077065715021103 0ustar '\" t .\" Title: SKETCH .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets v1.75.2 .\" Date: July 7, 2009 .\" Manual: User Commands .\" Source: sketch 0.2.159 .\" Language: English .\" .TH "SKETCH" "1" "July 7, 2009" "sketch 0\&.2\&.159" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" sketch \- Produce 3D line drawings from scene description language .SH "DESCRIPTION" .PP sketch [options] file1 [\-D tag] [\-U tag] file2\&.\&.\&. .PP \fB\-h\fR .RS 4 Print a summary of options to stderr .RE .PP \fB\-v\fR .RS 4 Print version info to standard output .RE .PP \fB\-d\fR .RS 4 Debug parser (for developers) .RE .PP \fB\-b\fR .RS 4 Use BSP rather than Painters algorithm for hidden surface removal .RE .PP \fB\-T\fR[u|e][p[P|T]] .RS 4 Produce a complete LaTeX document .PP u .RS 4 U\&.S\&. paper size (8\&.5 x 11 inches) (default) .RE .PP e .RS 4 European A4 paper size (297 x 210 mm) .RE .PP p .RS 4 Print document template to stdout .RE .PP P .RS 4 Print PSTricks version of doc template (default) .RE .PP T .RS 4 Print TikZ version of doc template .RE .RE .PP \fB\-t\fR templatefile .RS 4 Load user document template (any text file with escape %SKETCH_OUTPUT%) .RE .PP \fB\-o\fR outfile .RS 4 Put output in outfile (default is stdout) .RE .PP \fB\-D\fR tag .RS 4 Define given tag .RE .PP \fB\-U\fR tag .RS 4 Undefine given tag .RE .SH "SEE ALSO" .PP The full documentation for \fBsketch\fR is maintained as a Texinfo manual\&. If the \fBinfo\fR and \fBsketch\fR programs are properly installed at your site, the command .PP \fBinfo sketch\fR .PP should give you access to the complete manual\&. .SH "AUTHOR" .PP This manual page was written by David Bremner bremner@unb\&.ca for the Debian(TM) system (but may be used by others)\&. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU General Public License, Version 2 any later version published by the Free Software Foundation\&. .PP On Debian systems, the complete text of the GNU General Public License can be found in /usr/share/common\-licenses/GPL\&. .SH "COPYRIGHT" .br Copyright \(co 2009 David Bremner .br lintian-2.5.22ubuntu1/t/tests/manpages-general/debian/included.30000664000000000000000000000032312077065715021374 0ustar .if \n(zY=1 .ig zY .TH INCLUDED 3 .SH NAME included \- both a man page and a dessert topping .SH INCLUDED BIT .zY This stuff ends up in both man pages. Isn't it neat? .if \n(zY=1 .ig zY .SH SEE ALSO include(3) lintian-2.5.22ubuntu1/t/tests/manpages-general/debian/test.1p.utf-80000664000000000000000000000050312077065715021704 0ustar .IX Title "TEST 1" .TH TEST 1P "2004-12-18" "Debian Project" "Debian GNU/Linux Handbuch" .SH "NAME" \&\fBTEST\fR \- Eine Test-Manpage mit .1P Erweiterung. .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBTEST\fR tests lintian. .PP Diese Seite dient hauptsächlich dem Testen von latin1-Buchstaben, wie äöüß in Manpages. lintian-2.5.22ubuntu1/t/tests/manpages-general/debian/test.1p.de0000664000000000000000000000047612077065715021342 0ustar .IX Title "TEST 1" .TH TEST 1P "2004-12-18" "Debian Project" "Debian GNU/Linux Handbuch" .SH "NAME" \&\fBTEST\fR \- Eine Test-Manpage mit .1P Erweiterung. .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBTEST\fR tests lintian. .PP Diese Seite dient hauptschlich dem Testen von latin1-Buchstaben, wie in Manpages. lintian-2.5.22ubuntu1/t/tests/manpages-general/debian/test.1p0000664000000000000000000000140712310413146020727 0ustar .IX Title "TEST 1" .TH TEST 1P "2004-12-18" "Debian Project" "Debian GNU/Linux manual" .SH "NAME" \&\fBTEST\fR \- A test manpage with a .1P extension. .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBTEST\fR tests lintian. .PP Use more up-level tools like human brains to understand lintian. Here's a bad undefined macro. Here's a serious syntax error. .SH "FILES" This program does not use /var/catman/do or any other FSSTND location. .dep .PP .nh http://example.org/really/long/url/that/cannot/be/wrapped/and/will/produce/errors/from/man .\" Copied from caff(1) .SH "POD ERRORS" .IX Header "POD ERRORS" Hey! \fBThe above document had some coding errors, which are explained below:\fR .IP "Around line 138:" 4 .IX Item "Around line 138:" You forgot a '=back' before '=head2' lintian-2.5.22ubuntu1/t/tests/manpages-general/debian/usr-bin-binary.10000664000000000000000000000006312310413146022426 0ustar .TH PROGRAM 1 "2013-07-22" .SH NAME usr-bin-binary lintian-2.5.22ubuntu1/t/tests/manpages-general/debian/include.30000664000000000000000000000150212077065715021230 0ustar .TH INCLUDE 3 .SH NAME include \- include another chunk of a man page .SH INCLUDED BIT .nr zY 1 .so man3/included.3 .SH HYPHENS This isn't a hyphen\*(--just a long dash\*(--and \h'-1' also isn't, nor should we warn about `\-' or \-a, but -a and `-' (nope, that's fine) are bad news. So is --foo and (--bar) "--baz" and '--foo'. So is \f[C]--foo\f[P]. .\" Draft Mode example from sinfo man page from slurm-llnl. Draft mode .\" disables the normal operation of the backslash character, so we can't .\" tell users to use \- inside draft mode. These hyphens should .\" therefore not warn. .eo .nf > sinfo PARTITION AVAIL TIMELIMIT NODES STATE NODELIST batch up infinite 2 alloc adev[8-9] batch up infinite 6 idle adev[10-15] debug* up 30:00 8 idle adev[0-7] .fi .ec .SH SEE ALSO included(3) lintian-2.5.22ubuntu1/t/tests/manpages-general/debian/true.10000664000000000000000000000227512077065715020572 0ustar .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.36. .TH TRUE "1" "July 2006" "true 5.96" "User Commands" .SH NAME true \- manual page for true 5.96 .SH SYNOPSIS .B true [\fIignored command line arguments\fR] .br .B true \fIOPTION\fR .SH DESCRIPTION Exit with a status code indicating success. .TP \fB\-\-help\fR display this help and exit .TP \fB\-\-version\fR output version information and exit .PP NOTE: your shell may have its own version of true, which usually supersedes the version described here. Please refer to your shell's documentation for details about the options it supports. .SH AUTHOR Written by Jim Meyering. .SH "REPORTING BUGS" Report bugs to . .SH COPYRIGHT Copyright \(co 2006 Free Software Foundation, Inc. .br This is free software. You may redistribute copies of it under the terms of the GNU General Public License . There is NO WARRANTY, to the extent permitted by law. .SH "SEE ALSO" The full documentation for .B true is maintained as a Texinfo manual. If the .B info and .B true programs are properly installed at your site, the command .IP .B info true .PP should give you access to the complete manual. lintian-2.5.22ubuntu1/t/tests/manpages-general/debian/test.3p0000664000000000000000000000111312077065715020742 0ustar .IX Title "TEST 3" .TH TEST 3P "2009-08-26" "Debian Project" "Debian GNU/Linux manual" .SH "NAME" \&\fBTEST\fR \- A test manpage with a .3P extension. .SH "DESCRIPTION" .IX Header "DESCRIPTION" .PP Use more up-level tools like human brains to understand lintian. .PP .nh https://example.org/really/long/url/that/cannot/be/wrapped/and/will/produce/errors/from/man .\" URL extension, copied from wmweather+. Should not be tagged as too .\" long of a line. .UR http://weather.noaa.gov/pub/data/observations/metar/stations/ http://weather.noaa.gov/pub/data/observations/metar/stations/ .UE lintian-2.5.22ubuntu1/t/tests/manpages-general/debian/simple.pod0000664000000000000000000000035712077065715021525 0ustar =head1 NAME simple - some interesting manpage =head1 SYNOPSIS Explains something interesting =head1 DESCRIPTION A very long description of something very interesting. Really! =head1 AUTHORS Niels Thykier =cut lintian-2.5.22ubuntu1/t/tests/manpages-general/debian/program.10000664000000000000000000000333012077065715021253 0ustar .\" Hey, EMACS: -*- nroff -*- .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) .TH PROGRAM 1 "2007-06-18" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: .\" .nh disable hyphenation .\" .hy enable hyphenation .\" .ad l left justify .\" .ad b justify to both left and right margins .\" .nf disable filling .\" .fi enable filling .\" .br insert line break .\" .sp insert n+1 empty lines .\" for manpage-specific macros, see man(7) .SH NAME program \- program to do something .SH SYNOPSIS .B program .RI [ options ] " files" ... .br .B bar .RI [ options ] " files" ... .SH DESCRIPTION This manual page documents briefly the .B program and .B bar commands. .PP .\" TeX users may be more comfortable with the \fB\fP and .\" \fI\fP escape sequences to invode bold face and italics, .\" respectively. \fBprogram\fP is a program that... .SH OPTIONS These programs follow the usual GNU command line syntax, with long options starting with two dashes (`-'). A summary of options is included below. For a complete description, see the Info files. This is a speling mistake. .TP .B \-h, \-\-help Show summary of options. .TP .B \-v, \-\-version Show version of program. .SH SEE ALSO .BR bar (1), .BR baz (1). .br The programs are documented fully by .IR "The Rise and Fall of a Fooish Bar" , available via the Info system. .SH AUTHOR program was written by . .PP This manual page was written by #USERNAME# <#EMAIL#>, for the Debian project (but may be used by others). lintian-2.5.22ubuntu1/t/tests/manpages-general/debian/debian/0000775000000000000000000000000012310413146020726 5ustar lintian-2.5.22ubuntu1/t/tests/manpages-general/debian/debian/rules0000775000000000000000000000525112310413146022011 0ustar #!/usr/bin/make -f tmp := $(CURDIR)/debian/$(shell dh_listpackages) %: dh $@ override_dh_auto_install: install -d $(tmp)/usr/share/man/man1 $(tmp)/usr/share/man/man3 \ $(tmp)/usr/share/man/man6 \ $(tmp)/usr/bin $(tmp)/usr/sbin $(tmp)/usr/X11R6/bin \ $(tmp)/usr/share/man/de/man1 $(tmp)/usr/X11R6/man/man1 printf '#!/bin/sh\ntrue\n' > $(tmp)/usr/bin/usr-bin-binary-alt chmod 755 $(tmp)/usr/bin/usr-bin-binary-alt printf '#!/bin/sh\ntrue\n' > $(tmp)/usr/sbin/usr-sbin-binary chmod 755 $(tmp)/usr/sbin/usr-sbin-binary printf '#!/bin/sh\ntrue\n' > $(tmp)/usr/X11R6/bin/rstartd chmod 755 $(tmp)/usr/X11R6/bin/rstartd printf '#!/bin/sh\ntrue\n' \ > $(tmp)/usr/bin/binary-without-english-manpage chmod 755 $(tmp)/usr/bin/binary-without-english-manpage gzip -c9 < test.1p > $(tmp)/usr/share/man/man1/test.1p.gz gzip -c9 < test.3p > $(tmp)/usr/share/man/man3/test.3p.gz gzip -c9 < true.1 > $(tmp)/usr/share/man/man1/true.1.gz gzip -c9 < program.1 > $(tmp)/usr/share/man/man1/program.1.gz ln -s ../X11R6/bin/rstartd $(tmp)/usr/bin/rstartd gzip -c9 < program.1 > $(tmp)/usr/X11R6/man/man1/rstartd.1x.gz ln -s ../man7/undocumented.7.gz \ $(tmp)/usr/share/man/man1/bin-binary.1.gz ln -s undocumented.7.gz $(tmp)/usr/share/man/man1/sbin-binary.1.gz ln -s undocumented.3.gz $(tmp)/usr/share/man/man3/function.3.gz install -m 0644 usr-bin-binary.1 \ $(tmp)/usr/share/man/man1/usr-bin-binary.1 touch $(tmp)/usr/share/man/man1/usr-sbin-binary.1.gz chmod 644 $(tmp)/usr/share/man/man1/usr-sbin-binary.1.gz cd $(tmp)/usr/share/man/man1 \ && ln usr-sbin-binary.1.gz usr-bin-binary-alt.1.gz touch $(tmp)/usr/share/man/man6/usr-games-binary.6 chmod 644 $(tmp)/usr/share/man/man6/usr-games-binary.6 gzip -1 $(tmp)/usr/share/man/man6/usr-games-binary.6 touch $(tmp)/usr/share/man/de/man1/binary-without-english-manpage.1 pod2man --section 6 simple.pod | gzip -c --best > \ $(tmp)/usr/share/man/man6/simple.pod.gz pod2man --section 6 simple.pod | gzip -c --best > \ $(tmp)/usr/share/man/man6/_build_buildd-openchangex_1.0-3-i386-mbKpOA_openchange-1.0_simple.6.gz gzip -c9 < test.1p.de \ > $(tmp)/usr/share/man/man1/test-latin1-chars.1p.gz gzip -c9 < test.1p.de \ > $(tmp)/usr/share/man/de/man1/test-latin1-chars.1p.gz install -d $(tmp)/usr/share/man/de_DE/man1 gzip -c9 < test.1p.utf-8 \ > $(tmp)/usr/share/man/de_DE/man1/test-utf8-chars.1p.gz gzip -c9 < bad-so.1 > $(tmp)/usr/share/man/man1/bad-so.1.gz gzip -c9 $(tmp)/usr/share/man/man3/include.3.gz gzip -c9 $(tmp)/usr/share/man/man3/included.3.gz override_dh_fixperms: override_dh_installman: override_dh_compress: gzip -9 $(tmp)/usr/share/doc/manpages-general/changelog lintian-2.5.22ubuntu1/t/tests/manpages-general/debian/bad-so.10000664000000000000000000000004312310413146020730 0ustar .so ../somewhere/invalid/manpage.1 lintian-2.5.22ubuntu1/t/tests/binaries-libc-link/0000775000000000000000000000000012314115153016513 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-libc-link/post_test0000664000000000000000000000017412310413144020461 0ustar # The LDFLAGS parts of the hardening flags are a bit difficult to pass # to the linker so just drop them. /hardening-no-/ d lintian-2.5.22ubuntu1/t/tests/binaries-libc-link/tags0000664000000000000000000000037112310413144017372 0ustar E: binaries-libc-link: library-not-linked-against-libc usr/lib/basic/libbasic-nolibc E: binaries-libc-link: program-not-linked-against-libc usr/bin/basic W: binaries-libc-link: shared-lib-without-dependency-information usr/lib/basic/libbasic-nodeps lintian-2.5.22ubuntu1/t/tests/binaries-libc-link/desc0000664000000000000000000000106312314115153017354 0ustar Testname: binaries-libc-link Sequence: 6000 Version: 1.0 Description: Binaries not linked against libc Architecture: any # Ubuntu Precise emits so weird "readelf: Error: 'EXEC': No such file" # errors. They appear from coll/hardening-info (or/and its helper). # That makes hardening-check the likely suspect. The version in Wheezy # appears to work fine though, so presume >= 2.2 will work just fine. Test-Depends: hardening-includes (>= 2.2) Test-For: library-not-linked-against-libc program-not-linked-against-libc shared-lib-without-dependency-information lintian-2.5.22ubuntu1/t/tests/binaries-libc-link/debian/0000775000000000000000000000000012310413144017732 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-libc-link/debian/Makefile0000664000000000000000000000111312310413144021366 0ustar all: basic basic.1 libbasic-nodeps libbasic-nolibc basic.1: basic.pod pod2man --section 1 < $< > $@ basic: basic.o ld -o$@ $< -lm $(LFLAGS) libbasic-nodeps: basic.o ld --shared -o$@ $< libbasic-nolibc: basic.o ld --shared -o$@ $< -lm install: install -d $(DESTDIR)/usr/bin install -d $(DESTDIR)/usr/lib/basic install -d $(DESTDIR)/usr/share/man/man1 install -m 755 -c basic $(DESTDIR)/usr/bin/basic install -m 755 -c libbasic-* $(DESTDIR)/usr/lib/basic install -m 644 -c basic.1 $(DESTDIR)/usr/share/man/man1 clean distclean: rm -f basic libbasic-* basic.1 check test: lintian-2.5.22ubuntu1/t/tests/binaries-libc-link/debian/basic.c0000664000000000000000000000003712310413144021157 0ustar int main(void) { return 0; } lintian-2.5.22ubuntu1/t/tests/binaries-libc-link/debian/basic.pod0000664000000000000000000000023712310413144021521 0ustar =head1 NAME basic -- segfaults =head1 SYNOPSIS basic =head1 DESCRIPTION It tends to seg. fault, but if it doesn't it will return 0 like /bin/true. =cut lintian-2.5.22ubuntu1/t/tests/spelling-general/0000775000000000000000000000000012077065716016324 5ustar lintian-2.5.22ubuntu1/t/tests/spelling-general/tags0000664000000000000000000000065612077065716017214 0ustar I: spelling-general: spelling-error-in-copyright deafult default W: spelling-general: spelling-error-in-changelog speling spelling W: spelling-general: spelling-error-in-doc-base-abstract-field spelling-general:5 meta-package metapackage W: spelling-general: spelling-error-in-doc-base-abstract-field spelling-general:5 speling spelling W: spelling-general: spelling-error-in-doc-base-title-field spelling-general:2 debian Debian lintian-2.5.22ubuntu1/t/tests/spelling-general/desc0000664000000000000000000000037612077065716017173 0ustar Testname: spelling-general Sequence: 6000 Version: 1.0 Description: General checks for spelling errors Test-For: spelling-error-in-changelog spelling-error-in-copyright spelling-error-in-doc-base-abstract-field spelling-error-in-doc-base-title-field lintian-2.5.22ubuntu1/t/tests/spelling-general/debian/0000775000000000000000000000000012077065716017546 5ustar lintian-2.5.22ubuntu1/t/tests/spelling-general/debian/debian/0000775000000000000000000000000012310413206020745 5ustar lintian-2.5.22ubuntu1/t/tests/spelling-general/debian/debian/changelog.in0000664000000000000000000000053112310413206023223 0ustar {$source} ({$version}) unstable; urgency=low * Lintian Test Suite. * Test: {$testname} * Suppress "should close ITP bug" messages. (Closes: #123456) * This line has a speling error. - This line has the same speling error, but we should only get one tag for it. * Corrected spelling: abov -> above. -- {$author} {$date} lintian-2.5.22ubuntu1/t/tests/spelling-general/debian/debian/copyright0000664000000000000000000000110712077065716022722 0ustar This is part of the testsuite of lintian. See the file debian/copyright in the lintian source directory for more details. Insofar as this is copyrightable, it is: Copyright 2010 Russ Allbery This text should not generate a spelling error for "ment": computer software documentation," as such terms are used in 48 C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Govern- ment only as a commercial end item. Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), But deafult is still a spelling error. lintian-2.5.22ubuntu1/t/tests/spelling-general/debian/debian/doc-base0000664000000000000000000000045212077065716022371 0ustar Document: spelling-general Title: Check for debian doc-base spelling errors Author: Russ Allbery Abstract: This control file exercises, picky, speling error checks for Debian doc-base files, such as meta-package. Section: Programming Format: text Files: /usr/share/doc/spelling-general/copyright lintian-2.5.22ubuntu1/t/tests/debhelper-compat-missing/0000775000000000000000000000000012077065715017755 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-compat-missing/tags0000664000000000000000000000023412077065715020635 0ustar W: debhelper-compat-missing source: debhelper-compat-file-is-missing W: debhelper-compat-missing source: package-uses-deprecated-debhelper-compat-version 1 lintian-2.5.22ubuntu1/t/tests/debhelper-compat-missing/desc0000664000000000000000000000022612077065715020616 0ustar Testname: debhelper-compat-missing Sequence: 6000 Version: 1.0 Description: Test for missing debian/compat Test-For: debhelper-compat-file-is-missing lintian-2.5.22ubuntu1/t/tests/debhelper-compat-missing/debian/0000775000000000000000000000000012077065715021177 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-compat-missing/debian/debian/0000775000000000000000000000000012077065715022421 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-compat-missing/debian/debian/source/0000775000000000000000000000000012077065715023721 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-compat-missing/debian/debian/source/options0000664000000000000000000000003712077065715025337 0ustar tar-ignore tar-ignore=*/compat lintian-2.5.22ubuntu1/t/tests/source-copyright-dep5-syntax-error/0000775000000000000000000000000012310413206021665 5ustar lintian-2.5.22ubuntu1/t/tests/source-copyright-dep5-syntax-error/tags0000664000000000000000000000023412310413206022545 0ustar W: source-copyright-dep5-syntax-error source: syntax-error-in-dep5-copyright line 13: Continuation line outside a paragraph (maybe line 12 should be " ."). lintian-2.5.22ubuntu1/t/tests/source-copyright-dep5-syntax-error/desc0000664000000000000000000000023412077065716022550 0ustar Testname: source-copyright-dep5-syntax-error Sequence: 6000 Version: 1.0 Description: Test for DEP-5 syntax error Test-For: syntax-error-in-dep5-copyright lintian-2.5.22ubuntu1/t/tests/source-copyright-dep5-syntax-error/debian/0000775000000000000000000000000012077065716023132 5ustar lintian-2.5.22ubuntu1/t/tests/source-copyright-dep5-syntax-error/debian/debian/0000775000000000000000000000000012077065716024354 5ustar lintian-2.5.22ubuntu1/t/tests/source-copyright-dep5-syntax-error/debian/debian/copyright0000664000000000000000000000206112077065716026306 0ustar Format: http://anonscm.debian.org/viewvc/dep/web/deps/dep5.mdwn?revision=174 Upstream-Name: Doohickey Upstream-Contact: J. Random Hacker Source: http://examples.com/doohickey/source/ Files: * Copyright: 2011 J. Random Hacker License: GPL-2 This package 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; version 2 dated June, 1991. This package 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 package; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. On Debian systems, the full text of the GNU General Public License version 2 can be found in the file `/usr/share/common-licenses/GPL-2'. lintian-2.5.22ubuntu1/t/tests/manpages-dependencies/0000775000000000000000000000000012077065715017312 5ustar lintian-2.5.22ubuntu1/t/tests/manpages-dependencies/tags0000664000000000000000000000000012077065715020161 0ustar lintian-2.5.22ubuntu1/t/tests/manpages-dependencies/desc0000664000000000000000000000022012077065715020145 0ustar Testname: manpages-dependencies Sequence: 6000 Version: 1.0 Description: Test for manpages in dependencies Test-Against: binary-without-manpage lintian-2.5.22ubuntu1/t/tests/manpages-dependencies/debian/0000775000000000000000000000000012077065715020534 5ustar lintian-2.5.22ubuntu1/t/tests/manpages-dependencies/debian/Makefile0000664000000000000000000000012012077065715022165 0ustar all: pecho.1 pecho.1: pecho pod2man --section 1 $< $@ clean: rm -f pecho.1 lintian-2.5.22ubuntu1/t/tests/manpages-dependencies/debian/pecho0000664000000000000000000000043212077065715021554 0ustar #!/usr/bin/perl use strict; use warnings; print join(' ', @ARGV), "\n"; =head1 NAME pecho - POSIX compliant Perl implementation of echo =head1 SYNOPSIS pecho [args ...] =head1 DESCRIPTION Prints arguments to stdout. =head1 AUTHORS Niels Thykier =cut lintian-2.5.22ubuntu1/t/tests/manpages-dependencies/debian/debian/0000775000000000000000000000000012310413206021734 5ustar lintian-2.5.22ubuntu1/t/tests/manpages-dependencies/debian/debian/control.in0000664000000000000000000000146112310413206023746 0ustar Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: pecho Architecture: all Depends: $\{misc:Depends\}, pecho-data Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: pecho-data Architecture: all Depends: $\{misc:Depends\} Description: {$description} - data This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . Data package. lintian-2.5.22ubuntu1/t/tests/manpages-dependencies/debian/debian/pecho-data.manpages0000664000000000000000000000001012077065715025467 0ustar pecho.1 lintian-2.5.22ubuntu1/t/tests/manpages-dependencies/debian/debian/pecho.install0000664000000000000000000000001612077065715024441 0ustar pecho usr/bin lintian-2.5.22ubuntu1/t/tests/rules-missing-targets-with-includes/0000775000000000000000000000000012077065715022120 5ustar lintian-2.5.22ubuntu1/t/tests/rules-missing-targets-with-includes/tags0000664000000000000000000000000012077065715022767 0ustar lintian-2.5.22ubuntu1/t/tests/rules-missing-targets-with-includes/desc0000664000000000000000000000035212077065715022761 0ustar Testname: rules-missing-targets-with-includes Sequence: 6000 Version: 1.0 Description: Test for debian/rules with targets implemented in included file. Test-Against: debian-rules-missing-required-target References: Debian Bug#607281 lintian-2.5.22ubuntu1/t/tests/rules-missing-targets-with-includes/debian/0000775000000000000000000000000012077065715023342 5ustar lintian-2.5.22ubuntu1/t/tests/rules-missing-targets-with-includes/debian/debian/0000775000000000000000000000000012077065715024564 5ustar lintian-2.5.22ubuntu1/t/tests/rules-missing-targets-with-includes/debian/debian/rules0000775000000000000000000000005512077065715025644 0ustar #!/usr/bin/make -f include debian/rules.mk lintian-2.5.22ubuntu1/t/tests/rules-missing-targets-with-includes/debian/debian/rules.mk0000664000000000000000000000001212077065715026240 0ustar %: dh $@ lintian-2.5.22ubuntu1/t/tests/cruft-nvidia-intellectual/0000775000000000000000000000000012310413206020127 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-nvidia-intellectual/tags0000664000000000000000000000025312310413206021010 0ustar E: cruft-nvidia-intellectual source: license-problem-nvidia-intellectual src/badcv.c E: cruft-nvidia-intellectual source: license-problem-nvidia-intellectual src/badcv2.c lintian-2.5.22ubuntu1/t/tests/cruft-nvidia-intellectual/desc0000664000000000000000000000024512310413206020771 0ustar Testname: cruft-nvidia-intellectual Sequence: 6000 Version: 1.0 Description: Check for the Nvidia intellectual license Test-For: license-problem-nvidia-intellectual lintian-2.5.22ubuntu1/t/tests/cruft-nvidia-intellectual/debian/0000775000000000000000000000000012310413206021351 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-nvidia-intellectual/debian/src/0000775000000000000000000000000012310413206022140 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-nvidia-intellectual/debian/src/badcv2.c0000664000000000000000000000067612310413206023456 0ustar /* * Copyright 1993-2010 NVIDIA Corporation. All rights reserved. * * NVIDIA Corporation and its licensors retain all intellectual * property and proprietary rights in and to this software and * related documentation and any modifications thereto. * Any use, reproduction, disclosure, or distribution of this * software and related documentation without an express license * agreement from NVIDIA Corporation is strictly prohibited. */ lintian-2.5.22ubuntu1/t/tests/cruft-nvidia-intellectual/debian/src/badcv.c0000664000000000000000000000102012310413206023354 0ustar /* * Acme Corporation and its licensors retain all intellectual property and * proprietary rights in and to this software and related documentation. * Any use, reproduction, disclosure, or distribution of this software * and related documentation without an express license agreement from * Acme Corporation is strictly prohibited. * * Please refer to the applicable Acme end user license agreement (EULA) * associated with this source code for terms and conditions that govern * your use of this Acme software. * */ lintian-2.5.22ubuntu1/t/tests/cruft-nvidia-intellectual/debian/src/falsepositive/0000775000000000000000000000000012310413206025015 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-nvidia-intellectual/debian/src/falsepositive/allmankind.c0000664000000000000000000000117012310413206027272 0ustar /* * The technologies, software, hardware, designs, drawings, scheumatics, board * layouts and/or artwork, concepts, methodologies (including the use of all * of these, and that which is derived from the use of all of these), all other * intellectual properties contained herein, and all intellectual property * rights have been and shall continue to be expressly for the benefit of all * mankind, and are perpetually placed in the public domain, and may be used, * copied, and/or modified by anyone, in any manner, for any legal purpose, * without restriction. * * This module written by Stephen Underwood. */ lintian-2.5.22ubuntu1/t/tests/binaries-multiarch-wrong-dir/0000775000000000000000000000000012077065714020562 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-multiarch-wrong-dir/post_test0000664000000000000000000000007712077065714022535 0ustar s/i386-linux-gnu/x86_64-linux-gnu/ s/is for i386/is for amd64/ lintian-2.5.22ubuntu1/t/tests/binaries-multiarch-wrong-dir/tags0000664000000000000000000000031612077065714021443 0ustar E: binaries-multiarch-wrong-dir: triplet-dir-and-architecture-mismatch usr/lib/x86_64-linux-gnu/ is for amd64 I: binaries-multiarch-wrong-dir: no-symbols-control-file usr/lib/x86_64-linux-gnu/libbasic.so.2 lintian-2.5.22ubuntu1/t/tests/binaries-multiarch-wrong-dir/desc0000664000000000000000000000031312077065714021420 0ustar Testname: binaries-multiarch-wrong-dir Sequence: 6000 Version: 1.0 Description: Multiarch-related tests but not multiarch itself Architecture: i386 amd64 Test-For: triplet-dir-and-architecture-mismatch lintian-2.5.22ubuntu1/t/tests/binaries-multiarch-wrong-dir/debian/0000775000000000000000000000000012310413144021764 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-multiarch-wrong-dir/debian/Makefile0000664000000000000000000000124712077065714023450 0ustar # Since dpkg in stable (Squeeze) does not support MULTIARCH we cannot use # dpkg-architecture -qDEB_HOST_MULTIARCH # Therefore this test is hardcoded to x86 and amd64 ARCH=$(shell dpkg-architecture -qDEB_HOST_ARCH) ifeq (i386,$(ARCH)) WRONG_TRIPLET = x86_64-linux-gnu else WRONG_TRIPLET = i386-linux-gnu endif all: gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-z,defs -Wl,-soname,libbasic.so.2 -o libbasic.so.2 basic.c install: # Install it once under the wrong dir install -d $(DESTDIR)/usr/lib/$(WRONG_TRIPLET) install -m 644 -c -s libbasic.so.2 $(DESTDIR)/usr/lib/$(WRONG_TRIPLET)/libbasic.so.2 clean distclean: rm -f libbasic.so.2 check test: lintian-2.5.22ubuntu1/t/tests/binaries-multiarch-wrong-dir/debian/basic.c0000664000000000000000000000045412310413144023214 0ustar #include #include static void hardening_trigger(char *p, int i, void (*f)(char *)) { char test[10]; memcpy(test, p, i); f(test); printf("%s", test); } int lib_interface(void) { printf("Hello world!\n"); hardening_trigger(NULL, 0, NULL); return 0; } lintian-2.5.22ubuntu1/t/tests/files-uses-perl4-libs-without-dep/0000775000000000000000000000000012077065715021374 5ustar lintian-2.5.22ubuntu1/t/tests/files-uses-perl4-libs-without-dep/tags0000664000000000000000000000016512077065715022257 0ustar W: files-uses-perl4-libs-without-dep: perl-module-uses-perl4-libs-without-dep usr/share/perl5/Naughty.pm:5 assert.pl lintian-2.5.22ubuntu1/t/tests/files-uses-perl4-libs-without-dep/desc0000664000000000000000000000030612077065715022234 0ustar Testname: files-uses-perl4-libs-without-dep Sequence: 6000 Version: 1.0 Description: Check that script-uses-perl4-libs-without-dep works (positive) Test-For: perl-module-uses-perl4-libs-without-dep lintian-2.5.22ubuntu1/t/tests/files-uses-perl4-libs-without-dep/debian/0000775000000000000000000000000012077065715022616 5ustar lintian-2.5.22ubuntu1/t/tests/files-uses-perl4-libs-without-dep/debian/Naughty.pm0000664000000000000000000000010512077065715024567 0ustar package Naughty; use strict; use warnings; require 'assert.pl'; 1; lintian-2.5.22ubuntu1/t/tests/files-uses-perl4-libs-without-dep/debian/debian/0000775000000000000000000000000012310413206024016 5ustar lintian-2.5.22ubuntu1/t/tests/files-uses-perl4-libs-without-dep/debian/debian/install0000664000000000000000000000003312077065715025425 0ustar Naughty.pm usr/share/perl5 lintian-2.5.22ubuntu1/t/tests/files-uses-perl4-libs-without-dep/debian/debian/control.in0000664000000000000000000000077312310413206026035 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), perl Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/lintian-output-letter/0000775000000000000000000000000012310413206017342 5ustar lintian-2.5.22ubuntu1/t/tests/lintian-output-letter/upstream/0000775000000000000000000000000012310413146021205 5ustar lintian-2.5.22ubuntu1/t/tests/lintian-output-letter/upstream/script.desktop0000664000000000000000000000025712310413146024110 0ustar [Desktop Entry] Name=script Type=Application Comment=Incorrectly limited to particular environments Categories=Development; Exec=script OnlyShowIn=GNOME;KDE; Keywords=Lintian lintian-2.5.22ubuntu1/t/tests/lintian-output-letter/upstream/script0000775000000000000000000000007512077065715022460 0ustar #!/bin/sh . /usr/share/debconf/confmodule echo 'Hello world' lintian-2.5.22ubuntu1/t/tests/lintian-output-letter/upstream/example0000775000000000000000000000005212077065715022602 0ustar #!/usr/bin/foo echo This is some example. lintian-2.5.22ubuntu1/t/tests/lintian-output-letter/tags0000664000000000000000000000277712310413206020240 0ustar E[I ]: lintian-output-letter: new-essential-package E[S ]: lintian-output-letter: dir-or-file-in-var-lock var/lock/lintian/ E[S!]: lintian-output-letter: dir-in-usr-local usr/local/share/ E[S!]: lintian-output-letter: dir-in-usr-local usr/local/share/lintian/ E[S?]: lintian-output-letter: possible-gpl-code-linked-with-openssl I[M ]: lintian-output-letter: description-synopsis-might-not-be-phrased-properly I[N?]: lintian-output-letter: desktop-entry-limited-to-environments usr/share/applications/script.desktop I[W ]: lintian-output-letter: package-contains-empty-directory usr/local/share/lintian/ I[W!]: lintian-output-letter source: binary-control-field-duplicates-source field "section" in package lintian-output-letter I[W?]: lintian-output-letter: description-possibly-contains-homepage http://www.example.com/. O[M!]: lintian-output-letter source: dfsg-version-misspelled 1.0+dsfg-1.1 O[P?]: lintian-output-letter: no-upstream-changelog P[P ]: lintian-output-letter: example-unusual-interpreter usr/share/doc/lintian-output-letter/examples/example #!/usr/bin/foo P[P ]: lintian-output-letter: no-homepage-field P[P!]: lintian-output-letter source: debian-control-has-unusual-field-spacing line 11 P[P!]: lintian-output-letter source: debian-watch-may-check-gpg-signature P[P!]: lintian-output-letter source: direct-changes-in-diff-but-no-patch-system Changes W[N ]: lintian-output-letter: binary-without-manpage usr/bin/script W[N!]: lintian-output-letter source: maintainer-upload-has-incorrect-version-number 1.0+dsfg-1.1 lintian-2.5.22ubuntu1/t/tests/lintian-output-letter/desc0000664000000000000000000000040712077065715020226 0ustar Testname: lintian-output-letter Sequence: 2500 Type: non-native Version: 1.0+dsfg-1.1 Skeleton: pedantic Options: --pedantic -I -E --exp-output format=letterqualifier --show-overrides Output-Format: letter Description: Test Lintian letter qualifier output format lintian-2.5.22ubuntu1/t/tests/lintian-output-letter/debian/0000775000000000000000000000000012077065715020606 5ustar lintian-2.5.22ubuntu1/t/tests/lintian-output-letter/debian/Changes0000664000000000000000000000000012077065715022067 0ustar lintian-2.5.22ubuntu1/t/tests/lintian-output-letter/debian/debian/0000775000000000000000000000000012310413206022006 5ustar lintian-2.5.22ubuntu1/t/tests/lintian-output-letter/debian/debian/examples0000664000000000000000000000001012077065715023560 0ustar example lintian-2.5.22ubuntu1/t/tests/lintian-output-letter/debian/debian/install0000664000000000000000000000006512077065715023422 0ustar script usr/bin script.desktop usr/share/applications lintian-2.5.22ubuntu1/t/tests/lintian-output-letter/debian/debian/lintian-overrides0000664000000000000000000000005512077065715025411 0ustar lintian-output-letter: no-upstream-changelog lintian-2.5.22ubuntu1/t/tests/lintian-output-letter/debian/debian/control.in0000664000000000000000000000111012310413206024007 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{misc:Depends\}, libssl0.9.8 (>= 0abcd) Essential:yes Section: {$section} Description: {$description}. This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . The homepage is http://www.example.com/. lintian-2.5.22ubuntu1/t/tests/lintian-output-letter/debian/debian/rules0000775000000000000000000000006412077065715023110 0ustar #!/usr/bin/make -f %: dh $@ override_dh_usrlocal: lintian-2.5.22ubuntu1/t/tests/lintian-output-letter/debian/debian/dirs0000664000000000000000000000005112077065715022710 0ustar usr/local/share/lintian var/lock/lintian lintian-2.5.22ubuntu1/t/tests/lintian-output-letter/debian/debian/source.lintian-overrides0000664000000000000000000000007312077065715026710 0ustar lintian-output-letter source: dfsg-version-misspelled 1.0* lintian-2.5.22ubuntu1/t/tests/binaries-missing-lfs/0000775000000000000000000000000012310413144017077 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-missing-lfs/tags0000664000000000000000000000011212310413144017752 0ustar X: libbasic2: binary-file-built-without-LFS-support usr/lib/libbasic.so.2 lintian-2.5.22ubuntu1/t/tests/binaries-missing-lfs/desc0000664000000000000000000000024012310413144017734 0ustar Testname: binaries-missing-lfs Sequence: 6000 Version: 1.0 Description: Test for missing lfs Architecture: i386 Test-For: binary-file-built-without-LFS-support lintian-2.5.22ubuntu1/t/tests/binaries-missing-lfs/debian/0000775000000000000000000000000012310413144020321 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-missing-lfs/debian/Makefile0000664000000000000000000000052312310413144021761 0ustar all: gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -Wl,-z,defs -Wl,-soname,libbasic.so.2 -o libbasic.so.2 lfs.c basic.c install: # install it under the correct triplet directory install -d $(DESTDIR)/usr/lib/ install -m 644 -c -s libbasic.so.2 $(DESTDIR)/usr/lib/libbasic.so.2 clean distclean: rm -f libbasic.so.2 check test: lintian-2.5.22ubuntu1/t/tests/binaries-missing-lfs/debian/basic.c0000664000000000000000000000065212310413144021551 0ustar #include #include #include #include #include static void hardening_trigger(char *p, int i, void (*f)(char *)) { char test[10]; memcpy(test, p, i); f(test); printf("%s", test); } int lib_interface(void) { printf("Hello world!\n"); hardening_trigger(NULL, 0, NULL); return 0; } int do_open (char *file) { return open (file, O_RDONLY); } lintian-2.5.22ubuntu1/t/tests/binaries-missing-lfs/debian/lfs.c0000664000000000000000000000023412310413144021250 0ustar #define _FILE_OFFSET_BITS 64 #include #include #include int zz_open (char *file) { return open (file, O_RDONLY); } lintian-2.5.22ubuntu1/t/tests/binaries-missing-lfs/debian/debian/0000775000000000000000000000000012310413206021542 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-missing-lfs/debian/debian/control.in0000664000000000000000000000075212310413206023556 0ustar Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9), perl Package: libbasic2 Architecture: any Depends: $\{misc:Depends\}, $\{shlibs:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/binaries-missing-lfs/debian/debian/libbasic2.symbols0000664000000000000000000000013512310413144025006 0ustar libbasic.so.2 libbasic2 #MINVER# do_open@Base 1.0 lib_interface@Base 1.0 zz_open@Base 1.0 lintian-2.5.22ubuntu1/t/tests/changelog-file-wrong-name-upstream/0000775000000000000000000000000012077065714021644 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-wrong-name-upstream/upstream/0000775000000000000000000000000012077065714023504 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-wrong-name-upstream/upstream/some-changelog0000664000000000000000000000001412077065714026312 0ustar Hallo World lintian-2.5.22ubuntu1/t/tests/changelog-file-wrong-name-upstream/tags0000664000000000000000000000020212077065714022517 0ustar W: changelog-file-wrong-name-upstream: wrong-name-for-upstream-changelog usr/share/doc/changelog-file-wrong-name-upstream/Changes lintian-2.5.22ubuntu1/t/tests/changelog-file-wrong-name-upstream/desc0000664000000000000000000000030212077065714022500 0ustar Testname: changelog-file-wrong-name-upstream Sequence: 6000 Type: non-native Version: 1.0-1 Description: Check a wrong name for an upstream changelog Test-For: wrong-name-for-upstream-changelog lintian-2.5.22ubuntu1/t/tests/changelog-file-wrong-name-upstream/debian/0000775000000000000000000000000012077065714023066 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-wrong-name-upstream/debian/debian/0000775000000000000000000000000012077065714024310 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-wrong-name-upstream/debian/debian/rules0000664000000000000000000000027512077065714025371 0ustar #!/usr/bin/make -f PKG:=$(shell dh_listpackages) DOC:=debian/$(PKG)/usr/share/doc/$(PKG) %: dh $@ override_dh_installchangelogs: dh_installchangelogs cp some-changelog $(DOC)/Changes lintian-2.5.22ubuntu1/t/tests/files-python-general/0000775000000000000000000000000012077065715017127 5ustar lintian-2.5.22ubuntu1/t/tests/files-python-general/tags0000664000000000000000000000121612077065715020010 0ustar E: python-kinterbasdb: package-installs-python-bytecode usr/share/python-kinterbasdb/code.pyc E: python-kinterbasdb: package-installs-python-bytecode usr/share/python-kinterbasdb/code.pyo E: python-kinterbasdb: package-installs-python-egg usr/share/python-kinterbasdb/python.egg E: python-kinterbasdb: package-installs-python-pycache-dir usr/share/python-kinterbasdb/__pycache__/ W: python-kinterbasdb-dbg: python-debug-in-wrong-location usr/lib/debug/usr/lib/pyshared/python2.7/python-module.so usr/lib/debug/usr/lib/pymodules/python2.7/python-module.so W: python-kinterbasdb: compressed-objects.inv usr/share/doc/python-kinterbasdb/docs/objects.inv.gz lintian-2.5.22ubuntu1/t/tests/files-python-general/desc0000664000000000000000000000050012077065715017763 0ustar Testname: files-python-general Sequence: 6000 Version: 1.0 Description: Test general python related tags References: Debian Bug#608810, Debian Bug#756005 Test-For: compressed-objects.inv package-installs-python-bytecode package-installs-python-egg package-installs-python-pycache-dir python-debug-in-wrong-location lintian-2.5.22ubuntu1/t/tests/files-python-general/debian/0000775000000000000000000000000012077065715020351 5ustar lintian-2.5.22ubuntu1/t/tests/files-python-general/debian/objects.inv0000664000000000000000000003023012077065715022516 0ustar # Sphinx inventory version 1 # Project: KInterbasDB # Version: 3.3 kinterbasdb.typeconv_23plus_lowmem mod beyond-python-db-api.html kinterbasdb mod index.html kinterbasdb.typeconv_naked mod beyond-python-db-api.html kinterbasdb.typeconv_fixed_fixedpoint mod beyond-python-db-api.html kinterbasdb.typeconv_23plus mod beyond-python-db-api.html kinterbasdb.typeconv_fixed_decimal mod beyond-python-db-api.html kinterbasdb.typeconv_fixed_stdlib mod beyond-python-db-api.html kinterbasdb.typeconv_datetime_stdlib mod beyond-python-db-api.html kinterbasdb.typeconv_text_unicode mod beyond-python-db-api.html kinterbasdb.typeconv_datetime_mx mod beyond-python-db-api.html kinterbasdb.typeconv_backcompat mod beyond-python-db-api.html kinterbasdb.services mod beyond-python-db-api.html kinterbasdb.typeconv_24plus mod beyond-python-db-api.html kinterbasdb.services.Connection.getArchitecture method beyond-python-db-api.html kinterbasdb.connect function python-db-api-compliance.html kinterbasdb.Cursor.transaction attribute beyond-python-db-api.html Cursor.executemany method Python-DB-API-2.0.html kinterbasdb.TableReservation.render method beyond-python-db-api.html Error exception Python-DB-API-2.0.html kinterbasdb.PreparedStatement.description attribute beyond-python-db-api.html kinterbasdb.DATETIME data python-db-api-compliance.html kinterbasdb.Connection.prepare method beyond-python-db-api.html kinterbasdb.PreparedStatement.sql attribute beyond-python-db-api.html kinterbasdb.Transaction.cursors attribute beyond-python-db-api.html kinterbasdb.Connection.trans method beyond-python-db-api.html kinterbasdb.services.Conenction.setWriteMode method beyond-python-db-api.html kinterbasdb.Connection.event_conduit method beyond-python-db-api.html kinterbasdb.BlobReader.chunks method beyond-python-db-api.html kinterbasdb.ConnectionGroup.prepare method beyond-python-db-api.html kinterbasdb.TableReservation class beyond-python-db-api.html Cursor.close method Python-DB-API-2.0.html kinterbasdb.Transaction.n_physical attribute beyond-python-db-api.html TimestampFromTicks function Python-DB-API-2.0.html kinterbasdb.CT_NONTRANSPARENT data beyond-python-db-api.html kinterbasdb.TPB.isolation_level attribute beyond-python-db-api.html kinterbasdb.Transaction.close method beyond-python-db-api.html kinterbasdb.PreparedStatement.n_output_params attribute beyond-python-db-api.html Cursor.nextset method Python-DB-API-2.0.html DATETIME data Python-DB-API-2.0.html kinterbasdb.Cursor.rowcount attribute python-db-api-compliance.html kinterbasdb.Connection.database_info method beyond-python-db-api.html kinterbasdb.ConnectionGroup.remove method beyond-python-db-api.html kinterbasdb.TPB.render method beyond-python-db-api.html kinterbasdb.services.Conenction.modifyUser method beyond-python-db-api.html kinterbasdb.services.Conenction.rollbackLimboTransaction method beyond-python-db-api.html kinterbasdb.Transaction.__init__ method beyond-python-db-api.html kinterbasdb.services.Connection.getHomeDir method beyond-python-db-api.html kinterbasdb.Cursor.setinputsizes method python-db-api-compliance.html paramstyle data Python-DB-API-2.0.html kinterbasdb.TPB.lock_timeout attribute beyond-python-db-api.html Connection.rollback method Python-DB-API-2.0.html kinterbasdb.EventConduit.close method beyond-python-db-api.html kinterbasdb.Cursor.arraysize attribute python-db-api-compliance.html DatabaseError exception Python-DB-API-2.0.html kinterbasdb.Cursor.description attribute python-db-api-compliance.html kinterbasdb.EventConduit.flush method beyond-python-db-api.html kinterbasdb.services.Connection.close method beyond-python-db-api.html kinterbasdb.services.Conenction.activateShadowFile method beyond-python-db-api.html kinterbasdb.Cursor.setoutputsize method python-db-api-compliance.html kinterbasdb.ConnectionGroup.commit method beyond-python-db-api.html kinterbasdb.services.Conenction.setSQLDialect method beyond-python-db-api.html connect function Python-DB-API-2.0.html Cursor.setinputsizes method Python-DB-API-2.0.html kinterbasdb.Connection.dialect attribute python-db-api-compliance.html kinterbasdb.Connection.execute_immediate method python-db-api-compliance.html kinterbasdb.create_database function beyond-python-db-api.html kinterbasdb.Connection.get_type_trans_in method beyond-python-db-api.html kinterbasdb.TPB class beyond-python-db-api.html kinterbasdb.services.connect function beyond-python-db-api.html kinterbasdb.Transaction.commit method beyond-python-db-api.html kinterbasdb.Connection.charset attribute python-db-api-compliance.html TimeFromTicks function Python-DB-API-2.0.html kinterbasdb.Connection.savepoint method beyond-python-db-api.html kinterbasdb.Cursor.fetchallmap method python-db-api-compliance.html kinterbasdb.PreparedStatement.statement_type attribute beyond-python-db-api.html kinterbasdb.Cursor class beyond-python-db-api.html kinterbasdb.services.Conenction.setShouldReservePageSpace method beyond-python-db-api.html kinterbasdb.ConnectionGroup class beyond-python-db-api.html Cursor.callproc method Python-DB-API-2.0.html kinterbasdb.services.Connection class beyond-python-db-api.html kinterbasdb.services.Connection.getServiceManagerVersion method beyond-python-db-api.html IntegrityError exception Python-DB-API-2.0.html kinterbasdb.Transaction class beyond-python-db-api.html Cursor class Python-DB-API-2.0.html kinterbasdb.Connection.drop_database method beyond-python-db-api.html Connection.commit method Python-DB-API-2.0.html kinterbasdb.services.Conenction.userExists method beyond-python-db-api.html kinterbasdb.Cursor.fetchone method python-db-api-compliance.html kinterbasdb.Connection.transactions attribute beyond-python-db-api.html kinterbasdb.ConnectionGroup.disband method beyond-python-db-api.html InterfaceError exception Python-DB-API-2.0.html kinterbasdb.Transaction.connection attribute beyond-python-db-api.html kinterbasdb.Connection.rollback method python-db-api-compliance.html kinterbasdb.services.Connection.getStatistics method beyond-python-db-api.html kinterbasdb.TPB.access_mode attribute beyond-python-db-api.html kinterbasdb.services.Connection.getCapabilityMask method beyond-python-db-api.html kinterbasdb.Connection.precision_mode attribute python-db-api-compliance.html kinterbasdb.Connection.transaction_info method beyond-python-db-api.html kinterbasdb.EventConduit class beyond-python-db-api.html BINARY data Python-DB-API-2.0.html kinterbasdb.Connection.db_info method beyond-python-db-api.html kinterbasdb.ConnectionGroup.add method beyond-python-db-api.html Binary function Python-DB-API-2.0.html kinterbasdb.init function beyond-python-db-api.html Cursor.setoutputsize method Python-DB-API-2.0.html kinterbasdb.CT_COMMIT data beyond-python-db-api.html kinterbasdb.services.Connection.getConnectionCount method beyond-python-db-api.html kinterbasdb.services.Connection.getLockFileDir method beyond-python-db-api.html kinterbasdb.ConnectionGroup.contains method beyond-python-db-api.html kinterbasdb.ConnectionGroup.rollback method beyond-python-db-api.html kinterbasdb.Connection.set_type_trans_in method beyond-python-db-api.html kinterbasdb.Transaction.trans_info method beyond-python-db-api.html Cursor.rowcount attribute Python-DB-API-2.0.html threadsafety data Python-DB-API-2.0.html kinterbasdb.services.Connection.restore method beyond-python-db-api.html Warning exception Python-DB-API-2.0.html kinterbasdb.services.Connection.getSecurityDatabasePath method beyond-python-db-api.html Timestamp function Python-DB-API-2.0.html kinterbasdb.Cursor.fetchmanymap method python-db-api-compliance.html kinterbasdb.Transaction.closed attribute beyond-python-db-api.html kinterbasdb.Cursor.fetchonemap method python-db-api-compliance.html Date function Python-DB-API-2.0.html kinterbasdb.ConnectionGroup.count method beyond-python-db-api.html kinterbasdb.services.Connection.setSweepInterval method beyond-python-db-api.html ProgrammingError exception Python-DB-API-2.0.html kinterbasdb.Transaction.begin method beyond-python-db-api.html kinterbasdb.CT_ROLLBACK data beyond-python-db-api.html kinterbasdb.Cursor.set_type_trans_in method beyond-python-db-api.html kinterbasdb.services.Conenction.shutdown method beyond-python-db-api.html kinterbasdb.services.Connection.getAttachedDatabaseNames method beyond-python-db-api.html kinterbasdb.Cursor.fetchall method python-db-api-compliance.html kinterbasdb.services.Connection.backup method beyond-python-db-api.html Connection class Python-DB-API-2.0.html kinterbasdb.ConnectionGroup.begin method beyond-python-db-api.html Time function Python-DB-API-2.0.html kinterbasdb.services.Connection.getMessageFileDir method beyond-python-db-api.html kinterbasdb.Transaction.resolution attribute beyond-python-db-api.html Connection.cursor method Python-DB-API-2.0.html kinterbasdb.ConnectionGroup.__init__ method beyond-python-db-api.html kinterbasdb.Cursor.itermap method python-db-api-compliance.html kinterbasdb.services.User class beyond-python-db-api.html DataError exception Python-DB-API-2.0.html kinterbasdb.CT_VETO data beyond-python-db-api.html kinterbasdb.services.Conenction.bringOnline method beyond-python-db-api.html apilevel data Python-DB-API-2.0.html kinterbasdb.Cursor.get_type_trans_in method beyond-python-db-api.html InternalError exception Python-DB-API-2.0.html NUMBER data Python-DB-API-2.0.html kinterbasdb.services.Conenction.repair method beyond-python-db-api.html Cursor.fetchall method Python-DB-API-2.0.html kinterbasdb.Transaction.prepare method beyond-python-db-api.html kinterbasdb.Transaction.rollback method beyond-python-db-api.html kinterbasdb.services.Conenction.setAccessMode method beyond-python-db-api.html Cursor.fetchmany method Python-DB-API-2.0.html kinterbasdb.services.Connection.getServerVersion method beyond-python-db-api.html kinterbasdb.Transaction.cursor method beyond-python-db-api.html kinterbasdb.services.Conenction.commitLimboTransaction method beyond-python-db-api.html kinterbasdb.Cursor.fetchmany method python-db-api-compliance.html Cursor.execute method Python-DB-API-2.0.html kinterbasdb.services.Conenction.removeUser method beyond-python-db-api.html kinterbasdb.Cursor.name attribute beyond-python-db-api.html kinterbasdb.ConnectionGroup.clear method beyond-python-db-api.html kinterbasdb.Connection class beyond-python-db-api.html kinterbasdb.Connection.main_transaction attribute beyond-python-db-api.html kinterbasdb.Cursor.prep method beyond-python-db-api.html kinterbasdb.Cursor.nextset method python-db-api-compliance.html kinterbasdb.BlobReader class beyond-python-db-api.html kinterbasdb.TPB.lock_resolution attribute beyond-python-db-api.html kinterbasdb.services.Conenction.getLimboTransactionIDs method beyond-python-db-api.html STRING data Python-DB-API-2.0.html Cursor.description attribute Python-DB-API-2.0.html NotSupportedError exception Python-DB-API-2.0.html kinterbasdb.PreparedStatement class beyond-python-db-api.html kinterbasdb.ConnectionGroup.members method beyond-python-db-api.html kinterbasdb.services.Conenction.addUser method beyond-python-db-api.html kinterbasdb.PreparedStatement.n_input_params attribute beyond-python-db-api.html kinterbasdb.services.Conenction.setDefaultPageBuffers method beyond-python-db-api.html kinterbasdb.Connection.server_version attribute python-db-api-compliance.html Connection.close method Python-DB-API-2.0.html kinterbasdb.Connection.trans_info method beyond-python-db-api.html kinterbasdb.Cursor.iter method python-db-api-compliance.html DateFromTicks function Python-DB-API-2.0.html kinterbasdb.EventConduit.wait method beyond-python-db-api.html kinterbasdb.EventConduit.__init__ method beyond-python-db-api.html Cursor.fetchone method Python-DB-API-2.0.html kinterbasdb.Transaction.savepoint method beyond-python-db-api.html kinterbasdb.services.Conenction.getUsers method beyond-python-db-api.html kinterbasdb.TPB.table_reservation attribute beyond-python-db-api.html kinterbasdb.Transaction.transaction_info method beyond-python-db-api.html kinterbasdb.PreparedStatement.plan attribute beyond-python-db-api.html kinterbasdb.services.Connection.getLog method beyond-python-db-api.html ROWID data Python-DB-API-2.0.html kinterbasdb.Connection.begin method beyond-python-db-api.html kinterbasdb.services.Connection.sweep method beyond-python-db-api.html kinterbasdb.Connection.commit method python-db-api-compliance.html OperationalError exception Python-DB-API-2.0.html lintian-2.5.22ubuntu1/t/tests/files-python-general/debian/Makefile0000664000000000000000000000031512077065715022010 0ustar all: lib.c echo 'Hallo World' > code.pyc echo 'Hallo World' > code.pyo gcc $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -fPIC -shared -o python-module.so lib.c distclean: rm -f code.pyc code.pyo python-module.so lintian-2.5.22ubuntu1/t/tests/files-python-general/debian/python.egg0000664000000000000000000000001412077065715022351 0ustar Hallo World lintian-2.5.22ubuntu1/t/tests/files-python-general/debian/debian/0000775000000000000000000000000012310413206021551 5ustar lintian-2.5.22ubuntu1/t/tests/files-python-general/debian/debian/control.in0000664000000000000000000000172512310413206023566 0ustar Source: {$source} Priority: extra Section: python Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 7.0.50~), dpkg-dev (>= 1.16.1~) Package: python-kinterbasdb Architecture: any Depends: $\{misc:Depends\}, $\{shlibs:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: python-kinterbasdb-dbg Architecture: any Section: debug Depends: $\{misc:Depends\}, python-kinterbasdb (= $\{binary:Version\}), $\{shlibs:Depends\} Description: {$description} - debug This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . This is a fake debug package. lintian-2.5.22ubuntu1/t/tests/files-python-general/debian/debian/compat0000664000000000000000000000000212077065715022771 0ustar 7 lintian-2.5.22ubuntu1/t/tests/files-python-general/debian/debian/rules0000664000000000000000000000073112077065715022651 0ustar #!/usr/bin/make -f DPKG_EXPORT_BUILDFLAGS:=1 include /usr/share/dpkg/buildflags.mk DOCS:=debian/python-kinterbasdb/usr/share/doc/python-kinterbasdb/docs %: dh $@ override_dh_strip: dh_strip -ppython-kinterbasdb --dbg-package=python-kinterbasdb-dbg dh_strip --remaining-packages override_dh_compress: dh_compress # Manually compress it, since debhelper will fix #608907 # in the "near" future. [ -f "$(DOCS)/objects.inv.gz" ] || gzip --best "$(DOCS)/objects.inv" lintian-2.5.22ubuntu1/t/tests/files-python-general/debian/debian/python-kinterbasdb.install0000664000000000000000000000047412077065715026777 0ustar code.pyc usr/share/python-kinterbasdb/ code.pyo usr/share/python-kinterbasdb/ code.pyc usr/share/python-kinterbasdb/__pycache__/ code.pyo usr/share/python-kinterbasdb/__pycache__/ objects.inv usr/share/doc/python-kinterbasdb/docs/ python.egg usr/share/python-kinterbasdb/ python-module.so usr/lib/pyshared/python2.7 lintian-2.5.22ubuntu1/t/tests/files-python-general/debian/lib.c0000664000000000000000000000011112077065715021254 0ustar int do_something(int (*a)(char *)){ char test[10]; return a(test); } lintian-2.5.22ubuntu1/t/tests/patch-systems-no-readme-source/0000775000000000000000000000000012077065715021042 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-no-readme-source/tags0000664000000000000000000000011412077065715021717 0ustar W: patch-systems-no-readme-source source: patch-system-but-no-source-readme lintian-2.5.22ubuntu1/t/tests/patch-systems-no-readme-source/desc0000664000000000000000000000030012077065715021674 0ustar Testname: patch-systems-no-readme-source Sequence: 6000 Version: 1.0 Description: Patch system with no README.source Test-For: patch-system-but-no-source-readme References: Debian Bug #537969 lintian-2.5.22ubuntu1/t/tests/patch-systems-no-readme-source/debian/0000775000000000000000000000000012077065715022264 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-no-readme-source/debian/debian/0000775000000000000000000000000012310413206023464 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-no-readme-source/debian/debian/control.in0000664000000000000000000000076612310413206025505 0ustar Source: {$source} Priority: extra Section: devel Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: quilt, debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlib:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/patch-systems-no-readme-source/debian/debian/patches/0000775000000000000000000000000012077065715025135 5ustar ././@LongLink0000644000000000000000000000014700000000000011605 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/patch-systems-no-readme-source/debian/debian/patches/01_this_patch_is_oklintian-2.5.22ubuntu1/t/tests/patch-systems-no-readme-source/debian/debian/patches/01_this_patch_is_0000664000000000000000000000026312077065715030341 0ustar This is a description of the patch --- a.orig 2008-11-11 19:38:12.000000000 +0000 +++ a 2008-11-11 19:38:26.000000000 +0000 @@ -1 +1,2 @@ sample text +and some more sample text lintian-2.5.22ubuntu1/t/tests/patch-systems-no-readme-source/debian/debian/patches/series0000664000000000000000000000002412077065715026346 0ustar 01_this_patch_is_ok lintian-2.5.22ubuntu1/t/tests/changelog-file-news-version/0000775000000000000000000000000012077065714020373 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-news-version/tags0000664000000000000000000000011212077065714021246 0ustar W: changelog-file-news-version: debian-news-entry-has-unknown-version 2.0 lintian-2.5.22ubuntu1/t/tests/changelog-file-news-version/desc0000664000000000000000000000025312077065714021234 0ustar Testname: changelog-file-news-version Sequence: 6000 Version: 1.0 Description: Check mismatches of the NEWS.Debian version Test-For: debian-news-entry-has-unknown-version lintian-2.5.22ubuntu1/t/tests/changelog-file-news-version/debian/0000775000000000000000000000000012077065714021615 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-news-version/debian/debian/0000775000000000000000000000000012077065714023037 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-news-version/debian/debian/NEWS0000664000000000000000000000025112077065714023534 0ustar changelog-file-news-version (2.0) unstable; urgency=low This is some news entry about something. -- Russ Allbery Fri, 01 Jan 2010 22:09:12 -0800 lintian-2.5.22ubuntu1/t/tests/standards-version-timewarp/0000775000000000000000000000000012077065716020370 5ustar lintian-2.5.22ubuntu1/t/tests/standards-version-timewarp/post_test0000664000000000000000000000005212077065716022334 0ustar s/< [0-9]{4}-[0-9]{2}-[0-9]{2}/< CURRENT/ lintian-2.5.22ubuntu1/t/tests/standards-version-timewarp/tags0000664000000000000000000000013012077065716021243 0ustar W: standards-version-timewarp source: timewarp-standards-version (2001-03-15 < CURRENT) lintian-2.5.22ubuntu1/t/tests/standards-version-timewarp/desc0000664000000000000000000000025012077065716021226 0ustar Testname: standards-version-timewarp Sequence: 6000 Version: 1.0 Description: Test newer standards version with old changelog date Test-For: timewarp-standards-version lintian-2.5.22ubuntu1/t/tests/standards-version-timewarp/debian/0000775000000000000000000000000012077065716021612 5ustar lintian-2.5.22ubuntu1/t/tests/standards-version-timewarp/debian/debian/0000775000000000000000000000000012310413206023011 5ustar lintian-2.5.22ubuntu1/t/tests/standards-version-timewarp/debian/debian/changelog.in0000664000000000000000000000031612310413206025270 0ustar {$source} ({$version}) unstable; urgency=low * Lintian Test Suite. * Test: {$testname} * Suppress "should close ITP bug" messages. (Closes: #123456) -- {$author} Thu, 15 Mar 2001 07:00:00 +0000 lintian-2.5.22ubuntu1/t/tests/nmu-with-maintainer-ack/0000775000000000000000000000000012310413205017501 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-with-maintainer-ack/tags0000664000000000000000000000000012077065715020373 0ustar lintian-2.5.22ubuntu1/t/tests/nmu-with-maintainer-ack/desc0000664000000000000000000000025312077065715020365 0ustar Testname: nmu-with-maintainer-ack Sequence: 6000 Type: non-native Description: Test a variation on NMU wording Version: 1.0-1.1 Test-Against: changelog-should-mention-nmu lintian-2.5.22ubuntu1/t/tests/nmu-with-maintainer-ack/debian/0000775000000000000000000000000012077065715020746 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-with-maintainer-ack/debian/debian/0000775000000000000000000000000012310413206022146 5ustar lintian-2.5.22ubuntu1/t/tests/nmu-with-maintainer-ack/debian/debian/changelog.in0000664000000000000000000000055612310413206024433 0ustar {$source} ({$version}) unstable; urgency=low * NMU with ACK from maintainer. * This should not trigger changelog-should-mention-nmu even though it has "ACK" in the first line. -- Russ Allbery {$date} {$source} (1.0-1) unstable; urgency=low * Lintian Test Suite. * Test: {$testname} -- {$author} Sat, 24 Jan 2009 15:39:06 -0800 lintian-2.5.22ubuntu1/t/tests/cruft-non-free-md5sums/0000775000000000000000000000000012310413206017276 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-non-free-md5sums/tags0000664000000000000000000000075312310413206020164 0ustar E: cruft-non-free-md5sums source: license-problem-md5sum-non-distributable-file data-forbidden-lintian-files usual name is data-forbidden-lintian-files. This is part of lintian test suite, used for testing this tag See also http://lintian.debian.org. E: cruft-non-free-md5sums source: license-problem-md5sum-non-free-file data-non-free-lintian-files usual name is data-non-free-lintian-files. This is part of lintian test suite, used for testing this tag See also http://lintian.debian.org. lintian-2.5.22ubuntu1/t/tests/cruft-non-free-md5sums/desc0000664000000000000000000000030712310413206020137 0ustar Testname: cruft-non-free-md5sums Sequence: 6000 Version: 1.0 Description: Test of md5sums forbidden-file Test-For: license-problem-md5sum-non-distributable-file license-problem-md5sum-non-free-filelintian-2.5.22ubuntu1/t/tests/cruft-non-free-md5sums/debian/0000775000000000000000000000000012310413206020520 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-non-free-md5sums/debian/data-non-free-lintian-files0000664000000000000000000000020612310413206025615 0ustar This file is here to test lintian md5sums non free file It is a free software under CC0 license if copyrightable. Bastien ROUCARIÈSlintian-2.5.22ubuntu1/t/tests/cruft-non-free-md5sums/debian/data-forbidden-lintian-files0000664000000000000000000000021512310413206026040 0ustar This file is here to test lintian md5sums forbidden data file. It is a free software under CC0 license if copyrightable. Bastien ROUCARIÈSlintian-2.5.22ubuntu1/t/tests/cruft-non-free-md5sums/debian/debian/0000775000000000000000000000000012310413206021742 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-non-free-md5sums/debian/debian/install0000664000000000000000000000003112310413206023325 0ustar data* usr/share/lintian/ lintian-2.5.22ubuntu1/t/tests/cruft-evil-json/0000775000000000000000000000000012310413144016101 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-evil-json/tags0000664000000000000000000000010012310413144016751 0ustar E: cruft-evil-json source: license-problem-json-evil src/evil.c lintian-2.5.22ubuntu1/t/tests/cruft-evil-json/desc0000664000000000000000000000021112310413144016734 0ustar Testname: cruft-evil-json Sequence: 6000 Version: 1.0 Description: Check for the "Evil JSON" license Test-For: license-problem-json-evil lintian-2.5.22ubuntu1/t/tests/cruft-evil-json/debian/0000775000000000000000000000000012310413144017323 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-evil-json/debian/src/0000775000000000000000000000000012310413144020112 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-evil-json/debian/src/evil.c0000664000000000000000000000025312310413144021215 0ustar /** * The non-free pet-phase in the JSON license that triggers * the Lintian tag. * * "The software shall be used for good, not evil" */ int main() { return 0; } lintian-2.5.22ubuntu1/t/tests/changelog-file-no-dch-native/0000775000000000000000000000000012310413144020350 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-no-dch-native/tags0000664000000000000000000000011212310413144021223 0ustar E: changelog-file-no-dch-native: changelog-file-missing-in-native-package lintian-2.5.22ubuntu1/t/tests/changelog-file-no-dch-native/desc0000664000000000000000000000026512310413144021214 0ustar Testname: changelog-file-no-dch-native Sequence: 6000 Version: 1.0 Description: Test if Debian changelog is missing in native pkg Test-For: changelog-file-missing-in-native-package lintian-2.5.22ubuntu1/t/tests/changelog-file-no-dch-native/debian/0000775000000000000000000000000012310413144021572 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-no-dch-native/debian/debian/0000775000000000000000000000000012310413144023014 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-no-dch-native/debian/debian/rules0000775000000000000000000000017012310413144024072 0ustar #!/usr/bin/make -f %: dh $@ override_dh_md5sums: find debian/*/ -type f -a -iname 'changelog.*' -delete dh_md5sums lintian-2.5.22ubuntu1/t/tests/shared-libs-control-file/0000775000000000000000000000000012310413146017644 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-control-file/tags0000664000000000000000000000062112310413146020524 0ustar E: libdupshf1: duplicate-entry-in-shlibs-control-file libdupshf 1 E: libeshf1: shlib-missing-in-control-file libeshf 1 for usr/lib/libeshf.so.1.0.1 E: libnoshf1: no-shlibs-control-file usr/lib/libnoshf.so.1.0.1 W: libfdshf1: shlibs-declares-dependency-on-other-package libforeign1 W: libunshf1: shlibs-uses-obsolete-relation libunshf1 (> 0.1) W: libunshf1: unused-shlib-entry-in-control-file libfoo 1 lintian-2.5.22ubuntu1/t/tests/shared-libs-control-file/desc0000664000000000000000000000051212310413146020503 0ustar Testname: shared-libs-control-file Sequence: 6000 Version: 1.0 Description: Test checks related to shlibs files Test-For: duplicate-entry-in-shlibs-control-file no-shlibs-control-file shlib-missing-in-control-file shlibs-declares-dependency-on-other-package shlibs-uses-obsolete-relation unused-shlib-entry-in-control-file lintian-2.5.22ubuntu1/t/tests/shared-libs-control-file/debian/0000775000000000000000000000000012077065716021106 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-control-file/debian/Makefile0000664000000000000000000000076612077065716022557 0ustar CC=gcc CFLAGS+= -fPIC SONAMES:= libnoshf.so.1 libeshf.so.1 libunshf.so.1 libfdshf.so.1 \ libdupshf.so.1 LIBFILES:= $(patsubst %,%.0.1, $(SONAMES)) all: $(LIBFILES) $(LIBFILES): code.o $(CC) $(LDFLAGS) -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc clean: rm -f *.a *.o *.so* install: all install -m 0755 -d $(DESTDIR)/usr/lib install -m 0644 *.so* $(DESTDIR)/usr/lib for FILE in $(SONAMES) ; do \ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \ done .PHONY: install clean lintian-2.5.22ubuntu1/t/tests/shared-libs-control-file/debian/code.c0000664000000000000000000000033612077065716022166 0ustar #include #include double e(void (*f)(char *)){ char tmp[10]; double x; f(tmp); x = atof(tmp); return exp(x); } double energy(double mass){ return pow(10.0, 8.0) * pow(3.0, 2.0) * mass; } lintian-2.5.22ubuntu1/t/tests/shared-libs-control-file/debian/debian/0000775000000000000000000000000012310413206022305 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-control-file/debian/debian/libeshf1.symbols0000664000000000000000000000007412077065716025440 0ustar libeshf.so.1 libeshf1 #MINVER# e@Base 1.0 energy@Base 0.9 lintian-2.5.22ubuntu1/t/tests/shared-libs-control-file/debian/debian/libunshf1.install0000664000000000000000000000002212077065716025605 0ustar usr/lib/libunshf* lintian-2.5.22ubuntu1/t/tests/shared-libs-control-file/debian/debian/libfdshf1.install0000664000000000000000000000002212077065716025554 0ustar usr/lib/libfdshf* lintian-2.5.22ubuntu1/t/tests/shared-libs-control-file/debian/debian/control.in0000664000000000000000000000371012310413206024316 0ustar Source: {$source} Priority: extra Section: libs Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: libnoshf1 Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (no shlibs file) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . Checks for missing shlibs file. Package: libeshf1 Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (empty shlibs file) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . Checks for empty shlibs file. Package: libunshf1 Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (unused entry) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . Checks for unused entry in shlibs file. Package: libfdshf1 Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (foreign dep) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . Checks for foreign dependency entry in shlibs file. Package: libdupshf1 Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (dup entry) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . Checks for duplicate entry in shlibs file. lintian-2.5.22ubuntu1/t/tests/shared-libs-control-file/debian/debian/libeshf1.install0000664000000000000000000000002112077065716025406 0ustar usr/lib/libeshf* lintian-2.5.22ubuntu1/t/tests/shared-libs-control-file/debian/debian/libdupshf1.symbols0000664000000000000000000000010012077065716025772 0ustar libdupshf.so.1 libdupshf1 #MINVER# e@Base 1.0 energy@Base 0.9 lintian-2.5.22ubuntu1/t/tests/shared-libs-control-file/debian/debian/libfdshf1.symbols0000664000000000000000000000007612077065716025607 0ustar libfdshf.so.1 libfdshf1 #MINVER# e@Base 1.0 energy@Base 0.9 lintian-2.5.22ubuntu1/t/tests/shared-libs-control-file/debian/debian/libdupshf1.install0000664000000000000000000000002312077065716025754 0ustar usr/lib/libdupshf* lintian-2.5.22ubuntu1/t/tests/shared-libs-control-file/debian/debian/rules0000664000000000000000000000073612310413146023373 0ustar #!/usr/bin/make -f DUPSHF:=debian/libdupshf1/DEBIAN/shlibs %: dh $@ override_dh_builddeb: # Work around "smart tools" that check the shlibs # before installing them. rm -f debian/libnoshf1/DEBIAN/shlibs echo "# aloha" > debian/libeshf1/DEBIAN/shlibs echo "libfoo 1 libunshf1 (> 0.1)" >> debian/libunshf1/DEBIAN/shlibs sed -i 's/libfdshf1/libforeign1/' debian/libfdshf1/DEBIAN/shlibs cat $(DUPSHF) $(DUPSHF) > $(DUPSHF).tmp mv -f $(DUPSHF).tmp $(DUPSHF) dh_builddeb lintian-2.5.22ubuntu1/t/tests/shared-libs-control-file/debian/debian/libnoshf1.install0000664000000000000000000000002212077065716025577 0ustar usr/lib/libnoshf* lintian-2.5.22ubuntu1/t/tests/shared-libs-control-file/debian/debian/libunshf1.symbols0000664000000000000000000000007612077065716025640 0ustar libunshf.so.1 libunshf1 #MINVER# e@Base 1.0 energy@Base 0.9 lintian-2.5.22ubuntu1/t/tests/shared-libs-control-file/debian/debian/libnoshf1.symbols0000664000000000000000000000007612077065716025632 0ustar libnoshf.so.1 libnoshf1 #MINVER# e@Base 1.0 energy@Base 0.9 lintian-2.5.22ubuntu1/t/tests/description-homepage/0000775000000000000000000000000012077065715017201 5ustar lintian-2.5.22ubuntu1/t/tests/description-homepage/tags0000664000000000000000000000013312077065715020057 0ustar I: description-homepage: description-possibly-contains-homepage http://lintian.debian.org/ lintian-2.5.22ubuntu1/t/tests/description-homepage/desc0000664000000000000000000000032712077065715020044 0ustar Testname: description-homepage Sequence: 6000 Version: 1.0 Skeleton: pedantic Options: --pedantic -I -E Description: Test for a homepage reference in the description Test-For: description-possibly-contains-homepage lintian-2.5.22ubuntu1/t/tests/description-homepage/debian/0000775000000000000000000000000012077065715020423 5ustar lintian-2.5.22ubuntu1/t/tests/description-homepage/debian/debian/0000775000000000000000000000000012310413206021623 5ustar lintian-2.5.22ubuntu1/t/tests/description-homepage/debian/debian/control.in0000664000000000000000000000103612310413206023633 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. . See the package web site at . lintian-2.5.22ubuntu1/t/tests/group-checks-wrong-priorities/0000775000000000000000000000000012077065715021006 5ustar lintian-2.5.22ubuntu1/t/tests/group-checks-wrong-priorities/tags0000664000000000000000000000020412077065715021663 0ustar W: group-checks-wrong-priorities source: package-depends-on-lower-priority-package pkg-optional:optional depends on pkg-extra:extra lintian-2.5.22ubuntu1/t/tests/group-checks-wrong-priorities/desc0000664000000000000000000000023612077065715021650 0ustar Testname: group-checks-wrong-priorities Sequence: 6000 Version: 1.0 Description: Test for priority issues Test-For: package-depends-on-lower-priority-package lintian-2.5.22ubuntu1/t/tests/group-checks-wrong-priorities/debian/0000775000000000000000000000000012077065715022230 5ustar lintian-2.5.22ubuntu1/t/tests/group-checks-wrong-priorities/debian/some-doc.txt0000664000000000000000000000000712077065715024474 0ustar README lintian-2.5.22ubuntu1/t/tests/group-checks-wrong-priorities/debian/debian/0000775000000000000000000000000012310413206023430 5ustar lintian-2.5.22ubuntu1/t/tests/group-checks-wrong-priorities/debian/debian/control.in0000664000000000000000000000145512310413206025445 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: pkg-optional Architecture: all Priority: optional Depends: $\{misc:Depends\}, pkg-extra Description: {$description} - pkg-optional This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . optional. Package: pkg-extra Architecture: all Depends: $\{misc:Depends\} Description: {$description} - pkg-extra This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . extra. lintian-2.5.22ubuntu1/t/tests/group-checks-wrong-priorities/debian/debian/rules0000664000000000000000000000022512077065715024526 0ustar #!/usr/bin/make -f %: dh $@ override_dh_installdocs: for P in $$(dh_listpackages) ; do \ dh_installdocs -p$$P some-doc.txt || exit 1 ;\ done lintian-2.5.22ubuntu1/t/tests/changelog-file-unreleased/0000775000000000000000000000000012077065714020063 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-unreleased/tags0000664000000000000000000000000012077065714020732 0ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-unreleased/desc0000664000000000000000000000032112077065714020720 0ustar Testname: changelog-file-unreleased Sequence: 6000 Version: 2.0 Description: Supress new date warnings for UNRELEASED Test-Against: latest-debian-changelog-entry-without-new-date References: Debian Bug#560149 lintian-2.5.22ubuntu1/t/tests/changelog-file-unreleased/debian/0000775000000000000000000000000012077065714021305 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-unreleased/debian/debian/0000775000000000000000000000000012310413206022506 5ustar lintian-2.5.22ubuntu1/t/tests/changelog-file-unreleased/debian/debian/changelog.in0000664000000000000000000000047112310413206024767 0ustar {$source} ({$version}) UNRELEASED; urgency=low * Lintian Test Suite. * Test: {$testname} -- {$author} {$date} {$source} (1.0) unstable; urgency=low * An older changelog entry to test suppression of errors about the changelog entry having the same date as the previous one. -- {$author} {$date} lintian-2.5.22ubuntu1/t/tests/testsuite-control-not-file/0000775000000000000000000000000012310413146020276 5ustar lintian-2.5.22ubuntu1/t/tests/testsuite-control-not-file/pre_build0000775000000000000000000000013412310413146022167 0ustar #!/bin/sh set -e DIR="$1" mkdir -p "$DIR/debian/tests" mkfifo "$DIR/debian/tests/control" lintian-2.5.22ubuntu1/t/tests/testsuite-control-not-file/tags0000664000000000000000000000012112310413146021151 0ustar I: testsuite-control-not-file source: debian-tests-control-is-not-a-regular-file lintian-2.5.22ubuntu1/t/tests/testsuite-control-not-file/desc0000664000000000000000000000026412310413146021141 0ustar Testname: testsuite-control-not-file Sequence: 6000 Version: 1.0 Description: Tests for the autopkgtest control being non-file Test-For: debian-tests-control-is-not-a-regular-file lintian-2.5.22ubuntu1/t/tests/testsuite-control-not-file/debian/0000775000000000000000000000000012310413146021520 5ustar lintian-2.5.22ubuntu1/t/tests/testsuite-control-not-file/debian/debian/0000775000000000000000000000000012310413206022737 5ustar lintian-2.5.22ubuntu1/t/tests/testsuite-control-not-file/debian/debian/control.in0000664000000000000000000000101712310413206024746 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) XS-Testsuite: autopkgtest Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/binaries-hardening/0000775000000000000000000000000012310413206016602 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-hardening/test_calibration0000775000000000000000000000225612310413206022063 0ustar #!/usr/bin/perl use strict; use warnings; use lib "$ENV{LINTIAN_TEST_ROOT}/lib"; use Lintian::Data; use Lintian::Profile; sub _split_hash { my (undef, $val) = @_; my $hash = {}; map { $hash->{$_} = 1 } split m/\s*,\s*/o, $val; return $hash; } my $PROFILE = Lintian::Profile->new ('debian/main', [$ENV{'LINTIAN_TEST_ROOT'}]); Lintian::Data->set_vendor ($PROFILE); my $HARDENING = Lintian::Data->new ('binaries/hardening-tags', qr/\s*\|\|\s*/o, \&_split_hash); my ($expected, undef, $calibrated) = @ARGV; my $arch = `dpkg-architecture -qDEB_HOST_ARCH`; chomp $arch; die "Unknown architecture: $arch" unless $HARDENING->known ($arch); open my $cfd, '>', $calibrated or die "open $calibrated: $!"; open my $efd, '<', $expected or die "open $expected: $!"; while (my $line = <$efd>) { my $dp = 0; if ($line =~ m/^.: [^:]++: (hardening-\S+)/) { # It is a hardening flag, maybe it is not for this architecture $dp = 1 if $HARDENING->value ($arch)->{$1}; } else { # only calibrate hardening flags. $dp = 1; } print $cfd $line if $dp; } close $efd; close $cfd or die "close $expected: $!"; lintian-2.5.22ubuntu1/t/tests/binaries-hardening/tags0000664000000000000000000000027212310413144017465 0ustar I: binaries-hardening: hardening-no-fortify-functions usr/bin/weak I: binaries-hardening: hardening-no-stackprotector usr/bin/weak W: binaries-hardening: hardening-no-relro usr/bin/weak lintian-2.5.22ubuntu1/t/tests/binaries-hardening/desc0000664000000000000000000000037712077065714017473 0ustar Testname: binaries-hardening Sequence: 6000 Version: 1.0 Description: Check for missing hardening features Architecture: amd64 i386 Profile: debian/extra-hardening Test-For: hardening-no-relro hardening-no-stackprotector hardening-no-fortify-functions lintian-2.5.22ubuntu1/t/tests/binaries-hardening/debian/0000775000000000000000000000000012077065714020045 5ustar lintian-2.5.22ubuntu1/t/tests/binaries-hardening/debian/hello.c0000664000000000000000000000034212077065714021313 0ustar #include void report(char *string) { char buf[80]; int len; strcpy(buf, string); fprintf(stdout, "Hello world from %s!\n%n", buf, &len); } int main(int argc, char *argv[]) { report(argv[0]); } lintian-2.5.22ubuntu1/t/tests/binaries-hardening/debian/Makefile0000664000000000000000000000140712077065714021507 0ustar all: weak.1 strong.1 # Build without dpkg-buildflags. gcc -o weak \ -fno-stack-protector \ -Wl,-z,norelro \ -U_FORTIFY_SOURCE \ hello.c gcc -o strong \ $(shell dpkg-buildflags --get CPPFLAGS) \ $(shell dpkg-buildflags --get CFLAGS) \ $(shell dpkg-buildflags --get LDFLAGS) \ hello.c %.1: base.pod sed s/@NAME@/$(basename $@)/g < $< | \ pod2man --name $(basename $@) --section 1 > $@ install: install -d $(DESTDIR)/usr/bin/ install -d $(DESTDIR)/usr/share/man/man1 install -m 755 -c weak $(DESTDIR)/usr/bin/weak install -m 755 -c strong $(DESTDIR)/usr/bin/strong install -m 644 -c weak.1 $(DESTDIR)/usr/share/man/man1/weak.1 install -m 644 -c strong.1 $(DESTDIR)/usr/share/man/man1/strong.1 clean distclean: rm -f weak strong *.1 check test: lintian-2.5.22ubuntu1/t/tests/binaries-hardening/debian/base.pod0000664000000000000000000000021712077065714021463 0ustar =head1 NAME @NAME@ -- binary that does something =head1 SYNOPSIS @NAME@ [options] =head1 DESCRIPTION @NAME@ does something very useful. lintian-2.5.22ubuntu1/t/tests/cruft-ancient-autotools/0000775000000000000000000000000012077065714017663 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-ancient-autotools/tags0000664000000000000000000000026112077065714020543 0ustar E: cruft-ancient-autotools source: ancient-autotools-helper-file config.sub 2001-10-05 W: cruft-ancient-autotools source: outdated-autotools-helper-file config.guess 2004-09-07 lintian-2.5.22ubuntu1/t/tests/cruft-ancient-autotools/desc0000664000000000000000000000027012077065714020523 0ustar Testname: cruft-ancient-autotools Sequence: 6000 Version: 1.0 Description: Test for old autotools helper files Test-For: ancient-autotools-helper-file outdated-autotools-helper-file lintian-2.5.22ubuntu1/t/tests/cruft-ancient-autotools/debian/0000775000000000000000000000000012077065714021105 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-ancient-autotools/debian/good/0000775000000000000000000000000012310413144022015 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-ancient-autotools/debian/good/config.guess0000775000000000000000000012762612310413144024353 0ustar #! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. timestamp='2012-04-18' # Actually this is the 2008-01-23 version, but ssssh! ;) # This file 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, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[456]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:[3456]*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; EM64T | authenticamd) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else echo ${UNAME_MACHINE}-unknown-linux-gnueabi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips64 #undef mips64el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mips64el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips64 #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) LIBC=gnu #else LIBC=gnuaout #endif #endif #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^LIBC/{ s: ::g p }'`" test x"${LIBC}" != x && { echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit } test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: lintian-2.5.22ubuntu1/t/tests/cruft-ancient-autotools/debian/config.sub0000775000000000000000000006725412077065714023106 0ustar #! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 # Free Software Foundation, Inc. timestamp='2001-10-05' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit 0;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | c4x | clipper \ | d10v | d30v | dsp16xx \ | fr30 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | m32r | m68000 | m68k | m88k | mcore \ | mips16 | mips64 | mips64el | mips64orion | mips64orionel \ | mips64vr4100 | mips64vr4100el | mips64vr4300 \ | mips64vr4300el | mips64vr5000 | mips64vr5000el \ | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \ | mipsisa32 \ | mn10200 | mn10300 \ | ns16k | ns32k \ | openrisc \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | s390 | s390x \ | sh | sh[34] | sh[34]eb | shbe | shle \ | sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \ | stormy16 | strongarm \ | tahoe | thumb | tic80 | tron \ | v850 \ | we32k \ | x86 | xscale \ | z8k) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alphapca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armv*-* \ | avr-* \ | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c54x-* \ | clipper-* | cray2-* | cydra-* \ | d10v-* | d30v-* \ | elxsi-* \ | f30[01]-* | f700-* | fr30-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | m32r-* \ | m68000-* | m680[01234]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | mcore-* \ | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \ | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \ | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | s390-* | s390x-* \ | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \ | sparc-* | sparc64-* | sparc86x-* | sparclite-* \ | sparcv9-* | sparcv9b-* | stormy16-* | strongarm-* | sv1-* \ | t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ | v850-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xmp-* | xps100-* | xscale-* \ | ymp-* \ | z8k-*) ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | ymp) basic_machine=ymp-cray os=-unicos ;; cray2) basic_machine=cray2-cray os=-unicos ;; [cjt]90) basic_machine=${basic_machine}-cray os=-unicos ;; crds | unos) basic_machine=m68k-crds ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mipsel*-linux*) basic_machine=mipsel-unknown os=-linux-gnu ;; mips*-linux*) basic_machine=mips-unknown os=-linux-gnu ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; mmix*) basic_machine=mmix-knuth os=-mmixware ;; monitor) basic_machine=m68k-rom68k os=-coff ;; msdos) basic_machine=i386-pc os=-msdos ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon) basic_machine=i686-pc ;; pentiumii | pentium2) basic_machine=i686-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=t3e-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; tower | tower-32) basic_machine=m68k-ncr ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; windows32) basic_machine=i386-pc os=-windows32-msvcrt ;; xmp) basic_machine=xmp-cray os=-unicos ;; xps | xps100) basic_machine=xps100-honeywell ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; mips) if [ x$os = x-linux-gnu ]; then basic_machine=mips-unknown else basic_machine=mips-mips fi ;; romp) basic_machine=romp-ibm ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh3 | sh4 | sh3eb | sh4eb) basic_machine=sh-unknown ;; sparc | sparcv9 | sparcv9b) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; c4x*) basic_machine=c4x-none os=-coff ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto*) os=-nto-qnx ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-ibm) os=-aix ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -ptx*) vendor=sequent ;; -vxsim* | -vxworks*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: lintian-2.5.22ubuntu1/t/tests/cruft-ancient-autotools/debian/config.guess0000775000000000000000000012450412077065714023433 0ustar #! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. timestamp='2004-09-07' # This file 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit 0 ;; --version | -v ) echo "$version" ; exit 0 ;; --help | --h* | -h ) echo "$usage"; exit 0 ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit 0 ;; amd64:OpenBSD:*:*) echo x86_64-unknown-openbsd${UNAME_RELEASE} exit 0 ;; amiga:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; cats:OpenBSD:*:*) echo arm-unknown-openbsd${UNAME_RELEASE} exit 0 ;; hp300:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; luna88k:OpenBSD:*:*) echo m88k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mac68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; macppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme68k:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvme88k:OpenBSD:*:*) echo m88k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; mvmeppc:OpenBSD:*:*) echo powerpc-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sgi:OpenBSD:*:*) echo mips64-unknown-openbsd${UNAME_RELEASE} exit 0 ;; sun3:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; *:OpenBSD:*:*) echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} exit 0 ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit 0 ;; macppc:MirBSD:*:*) echo powerppc-unknown-mirbsd${UNAME_RELEASE} exit 0 ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit 0 ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit 0 ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit 0 ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit 0 ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit 0;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit 0 ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit 0 ;; *:OS/390:*:*) echo i370-ibm-openedition exit 0 ;; *:OS400:*:*) echo powerpc-ibm-os400 exit 0 ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit 0;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit 0;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit 0 ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit 0 ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit 0 ;; DRS?6000:UNIX_SV:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7 && exit 0 ;; esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; i86pc:SunOS:5.*:*) echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit 0 ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit 0 ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit 0 ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit 0 ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit 0 ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit 0 ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit 0 ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit 0 ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit 0 ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit 0 ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit 0 ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit 0 ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit 0 ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit 0 ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c \ && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ && exit 0 echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit 0 ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit 0 ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit 0 ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit 0 ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit 0 ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit 0 ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit 0 ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit 0 ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit 0 ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit 0 ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit 0 ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit 0 ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit 0 ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit 0 ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit 0 ;; *:AIX:*:[45]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit 0 ;; *:AIX:*:*) echo rs6000-ibm-aix exit 0 ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit 0 ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit 0 ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit 0 ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit 0 ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit 0 ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit 0 ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then # avoid double evaluation of $set_cc_for_build test -n "$CC_FOR_BUILD" || eval $set_cc_for_build if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit 0 ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 echo unknown-hitachi-hiuxwe2 exit 0 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit 0 ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit 0 ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit 0 ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit 0 ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit 0 ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit 0 ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit 0 ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit 0 ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit 0 ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit 0 ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit 0 ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit 0 ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit 0 ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit 0 ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit 0 ;; *:FreeBSD:*:*) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit 0 ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit 0 ;; i*:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit 0 ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit 0 ;; x86:Interix*:[34]*) echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' exit 0 ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit 0 ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit 0 ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit 0 ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit 0 ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit 0 ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit 0 ;; arm*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit 0 ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit 0 ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit 0 ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 ;; mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips64 #undef mips64el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mips64el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips64 #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit 0 ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit 0 ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit 0 ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit 0 ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit 0 ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit 0 ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit 0 ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit 0 ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit 0 ;; coff-i386) echo "${UNAME_MACHINE}-pc-linux-gnucoff" exit 0 ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit 0 ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #ifdef __INTEL_COMPILER LIBC=gnu #else LIBC=gnuaout #endif #endif #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit 0 ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit 0 ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit 0 ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit 0 ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit 0 ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit 0 ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit 0 ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit 0 ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit 0 ;; i*86:*:5:[78]*) case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit 0 ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit 0 ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit 0 ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit 0 ;; paragon:*:*:*) echo i860-intel-osf1 exit 0 ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit 0 ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit 0 ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit 0 ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit 0 ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4.3${OS_REL} && exit 0 /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && echo i486-ncr-sysv4 && exit 0 ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit 0 ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit 0 ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit 0 ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit 0 ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit 0 ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit 0 ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit 0 ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit 0 ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit 0 ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit 0 ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit 0 ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit 0 ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit 0 ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit 0 ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit 0 ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit 0 ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit 0 ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit 0 ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit 0 ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit 0 ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit 0 ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in *86) UNAME_PROCESSOR=i686 ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit 0 ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit 0 ;; *:QNX:*:4*) echo i386-pc-qnx exit 0 ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit 0 ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit 0 ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit 0 ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit 0 ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit 0 ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit 0 ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit 0 ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit 0 ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit 0 ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit 0 ;; *:ITS:*:*) echo pdp10-unknown-its exit 0 ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit 0 ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit 0 ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms && exit 0 ;; I*) echo ia64-dec-vms && exit 0 ;; V*) echo vax-dec-vms && exit 0 ;; esac esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit 0 ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit 0 ;; c34*) echo c34-convex-bsd exit 0 ;; c38*) echo c38-convex-bsd exit 0 ;; c4*) echo c4-convex-bsd exit 0 ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: lintian-2.5.22ubuntu1/t/tests/patch-systems-no-patch-system/0000775000000000000000000000000012310413206020706 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-no-patch-system/tags0000664000000000000000000000025112310413206021565 0ustar P: patch-systems-no-patch-system source: debian-watch-may-check-gpg-signature P: patch-systems-no-patch-system source: direct-changes-in-diff-but-no-patch-system README lintian-2.5.22ubuntu1/t/tests/patch-systems-no-patch-system/desc0000664000000000000000000000034612077065715021574 0ustar Testname: patch-systems-no-patch-system Sequence: 6000 Type: non-native Version: 1.0-1 Description: Diagnose lack of a patch system Options: -I -E --pedantic Skeleton: pedantic Test-For: direct-changes-in-diff-but-no-patch-system lintian-2.5.22ubuntu1/t/tests/patch-systems-no-patch-system/debian/0000775000000000000000000000000012077065715022152 5ustar lintian-2.5.22ubuntu1/t/tests/patch-systems-no-patch-system/debian/README0000664000000000000000000000006012077065715023026 0ustar README with some Debian change to create a diff lintian-2.5.22ubuntu1/t/tests/source-copyright-symlink/0000775000000000000000000000000012077065716020066 5ustar lintian-2.5.22ubuntu1/t/tests/source-copyright-symlink/pre_build0000775000000000000000000000017512077065716021764 0ustar #!/bin/sh cd "$1/debian" mv copyright source-copyright-symlink.copyright ln -sf source-copyright-symlink.copyright copyright lintian-2.5.22ubuntu1/t/tests/source-copyright-symlink/tags0000664000000000000000000000010012077065716020736 0ustar W: source-copyright-symlink source: debian-copyright-is-symlink lintian-2.5.22ubuntu1/t/tests/source-copyright-symlink/desc0000664000000000000000000000022612077065716020727 0ustar Testname: source-copyright-symlink Sequence: 6000 Version: 1.0 Description: Test for symlinked debian/copyright Test-For: debian-copyright-is-symlink lintian-2.5.22ubuntu1/t/tests/debhelper-lacks-versioned-deps/0000775000000000000000000000000012077065715021045 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-lacks-versioned-deps/tags0000664000000000000000000000013712077065715021727 0ustar P: debhelper-lacks-versioned-deps source: package-lacks-versioned-build-depends-on-debhelper 7 lintian-2.5.22ubuntu1/t/tests/debhelper-lacks-versioned-deps/desc0000664000000000000000000000033612077065715021710 0ustar Testname: debhelper-lacks-versioned-deps Sequence: 6000 Version: 1.0 Description: Test pedantic dependency requirements for debhelper Options: -I -E --pedantic Test-For: package-lacks-versioned-build-depends-on-debhelper lintian-2.5.22ubuntu1/t/tests/debhelper-lacks-versioned-deps/debian/0000775000000000000000000000000012077065715022267 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-lacks-versioned-deps/debian/debian/0000775000000000000000000000000012310413206023467 5ustar lintian-2.5.22ubuntu1/t/tests/debhelper-lacks-versioned-deps/debian/debian/control.in0000664000000000000000000000073112310413206025500 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper Package: {$source} Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/debhelper-lacks-versioned-deps/debian/debian/compat0000664000000000000000000000000212077065715024707 0ustar 7 lintian-2.5.22ubuntu1/t/tests/fields-essential/0000775000000000000000000000000012077065715016326 5ustar lintian-2.5.22ubuntu1/t/tests/fields-essential/tags0000664000000000000000000000040012077065715017201 0ustar E: fields-essential source: essential-in-source-package E: fields-essential2: unknown-essential-value E: fields-essential: new-essential-package W: fields-essential source: essential-no-not-needed W: fields-essential source: unknown-field-in-dsc essential lintian-2.5.22ubuntu1/t/tests/fields-essential/desc0000664000000000000000000000033412077065715017167 0ustar Testname: fields-essential Sequence: 6000 Version: 1.0 Description: Test for Essential field-related errors Test-For: essential-in-source-package essential-no-not-needed new-essential-package unknown-essential-value lintian-2.5.22ubuntu1/t/tests/fields-essential/debian/0000775000000000000000000000000012077065715017550 5ustar lintian-2.5.22ubuntu1/t/tests/fields-essential/debian/debian/0000775000000000000000000000000012310413206020750 5ustar lintian-2.5.22ubuntu1/t/tests/fields-essential/debian/debian/control.in0000664000000000000000000000162712310413206022766 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} XS-Essential: no Build-Depends: debhelper (>= 9) Package: {$source} Essential: yes Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: {$source}2 Essential: maybe Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} -- maybe This is another test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/tests/fields-essential/debian/debian/rules0000775000000000000000000000027512077065715022056 0ustar #!/usr/bin/make -f pkg=fields-essential export DH_VERBOSE=1 %: dh $@ override_dh_builddeb: dh_builddeb --package=$(pkg) dpkg-deb --nocheck --build debian/$(pkg)2 ../$(pkg)2_1.0_all.deb lintian-2.5.22ubuntu1/t/tests/files-embedded/0000775000000000000000000000000012077065715015724 5ustar lintian-2.5.22ubuntu1/t/tests/files-embedded/tags0000664000000000000000000000042512077065715016606 0ustar W: files-embedded: embedded-feedparser-library usr/share/php/feedparser.py W: files-embedded: embedded-javascript-library usr/share/php/jquery.js W: files-embedded: embedded-php-library usr/share/php/rss_parse.php X: files-embedded: embedded-pear-module usr/share/php/IPv4.php lintian-2.5.22ubuntu1/t/tests/files-embedded/desc0000664000000000000000000000041112077065715016561 0ustar Testname: files-embedded Sequence: 6000 Version: 1.0 Description: Check for detection of embedded PEAR modules References: Test-For: embedded-feedparser-library embedded-javascript-library embedded-php-library embedded-pear-module lintian-2.5.22ubuntu1/t/tests/files-embedded/debian/0000775000000000000000000000000012077065715017146 5ustar lintian-2.5.22ubuntu1/t/tests/files-embedded/debian/jquery.js0000664000000000000000000000004712077065715021024 0ustar This is an embedded javascript library lintian-2.5.22ubuntu1/t/tests/files-embedded/debian/rss_parse.php0000664000000000000000000000003012077065715021651 0ustar This is not a php file. lintian-2.5.22ubuntu1/t/tests/files-embedded/debian/IPv4.php0000664000000000000000000000006712077065715020444 0ustar /* @link http://pear.php.net/package/Net_IPv4 */ lintian-2.5.22ubuntu1/t/tests/files-embedded/debian/feedparser.py0000664000000000000000000000011212077065715021632 0ustar This is not the "Universal feed parser", but it will do for this test. :) lintian-2.5.22ubuntu1/t/tests/files-embedded/debian/debian/0000775000000000000000000000000012077065715020370 5ustar lintian-2.5.22ubuntu1/t/tests/files-embedded/debian/debian/install0000664000000000000000000000014712077065715021763 0ustar IPv4.php usr/share/php jquery.js usr/share/php feedparser.py usr/share/php rss_parse.php usr/share/php lintian-2.5.22ubuntu1/t/tests/file-info-errors/0000775000000000000000000000000012077065715016255 5ustar lintian-2.5.22ubuntu1/t/tests/file-info-errors/tags0000664000000000000000000000000012077065715017124 0ustar lintian-2.5.22ubuntu1/t/tests/file-info-errors/desc0000664000000000000000000000014612077065715017117 0ustar Testname: file-info-errors Sequence: 4500 Version: 1.0 Description: Test handling of errors from file lintian-2.5.22ubuntu1/t/tests/file-info-errors/debian/0000775000000000000000000000000012077065715017477 5ustar lintian-2.5.22ubuntu1/t/tests/file-info-errors/debian/split.clam.ole.docaa0000664000000000000000000002000012077065715023304 0ustar ࡱ> q`bjbjqPqP.::  2222222lnnnnnn$h <2222222PPP222lP2lPPP2 092 Pl0PG< GPGP22P22222F 2222222$  EMBED Package  j7@L h3>CJUVaJh3>jh3>U,1h. A!n"n#$n% Dd W0  # A2\6C@nD`!f\6C@t82Hi4xcdd``bg``bPdcV fx,dL_3F  ! ظD3X +8(gfOSfe 7 K,Gc  @Af`p[JI #C(p8% xh%6| `QG5Qc>u30L(7Tl!a>DipPcuX9'1W/"U {tLLJ%$ҩ~ #3Xp%lintian-2.5.22ubuntu1/t/tests/file-info-errors/debian/README0000664000000000000000000000010312077065715020351 0ustar File taken from clamav 0.94.dfsg.2. Causes errors with file 5.00. lintian-2.5.22ubuntu1/t/tests/files-games-section/0000775000000000000000000000000012077065715016731 5ustar lintian-2.5.22ubuntu1/t/tests/files-games-section/tags0000664000000000000000000000032312077065715017610 0ustar E: files-games-section-no-games: package-section-games-but-contains-no-game W: files-games-section-both: package-section-games-but-has-usr-bin W: files-games-section-wrong: games-package-should-be-section-games lintian-2.5.22ubuntu1/t/tests/files-games-section/desc0000664000000000000000000000037512077065715017577 0ustar Testname: files-games-section Sequence: 6000 Section: games Version: 1.0 Description: Correct section for games packages Test-For: games-package-should-be-section-games package-section-games-but-contains-no-game package-section-games-but-has-usr-bin lintian-2.5.22ubuntu1/t/tests/files-games-section/debian/0000775000000000000000000000000012077065715020153 5ustar lintian-2.5.22ubuntu1/t/tests/files-games-section/debian/shell-blaster0000775000000000000000000000006012077065715022636 0ustar #!/bin/sh echo "I'll be a game when I grow up!" lintian-2.5.22ubuntu1/t/tests/files-games-section/debian/shell-blaster.10000664000000000000000000000027612077065715023003 0ustar .TH SHELL-BLASTER 1 "2008-12-30" .SH "NAME" shell\-blaster \- A simple shell non\-game .SH "SYNOPSIS" .B shell\-blaster .SH "DESCRIPTION" .B shell\-blaster wants to be a game but isn't yet. lintian-2.5.22ubuntu1/t/tests/files-games-section/debian/shell-blaster.60000664000000000000000000000027612077065715023010 0ustar .TH SHELL-BLASTER 6 "2008-12-30" .SH "NAME" shell\-blaster \- A simple shell non\-game .SH "SYNOPSIS" .B shell\-blaster .SH "DESCRIPTION" .B shell\-blaster wants to be a game but isn't yet. lintian-2.5.22ubuntu1/t/tests/files-games-section/debian/debian/0000775000000000000000000000000012310413206021353 5ustar lintian-2.5.22ubuntu1/t/tests/files-games-section/debian/debian/files-games-section-wrong.manpages0000664000000000000000000000002012077065715030072 0ustar shell-blaster.6 lintian-2.5.22ubuntu1/t/tests/files-games-section/debian/debian/control.in0000664000000000000000000000334012310413206023363 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source}-both Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Conflicts: {$source}-good, {$source}-wrong, {$source}-no-games Description: {$description} (both) Package has both regular binaries and games. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: {$source}-good Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (good) Games package in games section. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: {$source}-no-games Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} (no games) Games package without any games. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: {$source}-wrong Section: devel Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Conflicts: {$source}-good Description: {$description} (wrong) Games package in wrong section. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/tests/files-games-section/debian/debian/files-games-section-good.install0000664000000000000000000000003012077065715027542 0ustar shell-blaster usr/games lintian-2.5.22ubuntu1/t/tests/files-games-section/debian/debian/files-games-section-wrong.install0000664000000000000000000000003012077065715027746 0ustar shell-blaster usr/games lintian-2.5.22ubuntu1/t/tests/files-games-section/debian/debian/files-games-section-good.manpages0000664000000000000000000000002012077065715027666 0ustar shell-blaster.6 lintian-2.5.22ubuntu1/t/tests/files-games-section/debian/debian/files-games-section-both.install0000664000000000000000000000005612077065715027556 0ustar shell-blaster usr/bin shell-blaster usr/games lintian-2.5.22ubuntu1/t/tests/files-games-section/debian/debian/files-games-section-both.manpages0000664000000000000000000000004012077065715027674 0ustar shell-blaster.1 shell-blaster.6 ././@LongLink0000644000000000000000000000014600000000000011604 Lustar rootrootlintian-2.5.22ubuntu1/t/tests/files-games-section/debian/debian/files-games-section-no-games.manpageslintian-2.5.22ubuntu1/t/tests/files-games-section/debian/debian/files-games-section-no-games.manpage0000664000000000000000000000002012077065715030261 0ustar shell-blaster.1 lintian-2.5.22ubuntu1/t/tests/files-games-section/debian/debian/files-games-section-no-games.install0000664000000000000000000000002612077065715030325 0ustar shell-blaster usr/bin lintian-2.5.22ubuntu1/t/tests/legacy-debconf/0000775000000000000000000000000012310413206015713 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-debconf/post_test0000664000000000000000000000007012310413206017657 0ustar s/\(current is ([0-9]+\.)+[0-9]\)/(current is CURRENT)/ lintian-2.5.22ubuntu1/t/tests/legacy-debconf/tags0000664000000000000000000001154712310413206016604 0ustar E: debconf source: build-depends-on-obsolete-package build-depends: dpatch E: debconf source: declares-possibly-conflicting-debhelper-compat-versions rules=4 compat=4 E: debconf source: untranslatable-debconf-templates debconf-test.templates: 47 E: debconf source: untranslatable-debconf-templates debconf-test.templates: 58 E: debconf-test-noscripts: copyright-contains-dh_make-todo-boilerplate E: debconf-test-noscripts: no-debconf-config E: debconf-test-postinst: copyright-contains-dh_make-todo-boilerplate E: debconf-test-postinst: no-debconf-config E: debconf-test-preinst: copyright-contains-dh_make-todo-boilerplate E: debconf-test: copyright-contains-dh_make-todo-boilerplate E: debconf-test: extended-description-is-empty E: debconf-test: mismatch-translated-choices debconf/testmulti-escape choices-de.utf-8 E: debconf-test: no-template-description debconf/no-description E: debconf-test: no-template-type debconf/language E: debconf-test: unknown-debconf-priority config:10 LOW E: debconf-test: unknown-debconf-priority config:11 normal E: debconf-udeb udeb: udeb-postinst-must-not-call-ldconfig I: debconf source: no-complete-debconf-translation I: debconf-test-noscripts: unused-debconf-template debconf/test I: debconf-test: unused-debconf-template debconf/1st-person I: debconf-test: unused-debconf-template debconf/error I: debconf-test: unused-debconf-template debconf/internal I: debconf-test: unused-debconf-template debconf/language I: debconf-test: unused-debconf-template debconf/no-description I: debconf-test: unused-debconf-template debconf/should-be-boolean I: debconf-test: unused-debconf-template debconf/should-be-no-longer-a-problem I: debconf-test: unused-debconf-template debconf/testboolean I: debconf-test: unused-debconf-template debconf/testmulti I: debconf-test: unused-debconf-template debconf/testmulti-escape I: debconf-test: unused-debconf-template debconf/testnote I: debconf-test: unused-debconf-template debconf/teststring I: debconf-test: unused-debconf-template debconf/translate W: debconf source: ancient-standards-version 3.7.2 (current is CURRENT) W: debconf source: debian-rules-calls-debhelper-in-odd-order dh_makeshlibs (line 56) W: debconf source: debian-rules-calls-debhelper-in-odd-order dh_makeshlibs (line 60) W: debconf source: debian-rules-sets-DH_COMPAT line 3 W: debconf source: dpatch-build-dep-but-no-patch-list W: debconf source: invalid-po-file debian/po/fr.po W: debconf source: invalid-po-file debian/po/sample-file.po W: debconf source: maintainer-script-lacks-debhelper-token debian/debconf-test.postinst W: debconf source: misnamed-po-file debian/po/lang.po W: debconf source: misnamed-po-file debian/po/sample-file.po W: debconf source: newer-debconf-templates W: debconf source: package-uses-deprecated-debhelper-compat-version 4 W: debconf source: patch-system-but-no-source-readme W: debconf source: stray-translated-debconf-templates debconf-test.templates.de W: debconf source: template-uses-unsplit-choices debconf-test - debconf/testmulti-escape W: debconf source: translated-default-field debconf-test.templates: 67 W: debconf source: translated-default-field debconf-test.templates: 72 W: debconf source: unknown-encoding-in-po-file debian/po/fr.po W: debconf-test-noscripts: old-fsf-address-in-copyright-file W: debconf-test-noscripts: postrm-does-not-purge-debconf W: debconf-test-postinst: old-fsf-address-in-copyright-file W: debconf-test-postinst: possible-debconf-note-abuse postinst:6 debconf/test W: debconf-test-postinst: postinst-uses-db-input W: debconf-test-preinst: loads-obsolete-confmodule preinst:5 /usr/share/debconf/confmodule.sh W: debconf-test-preinst: missing-debconf-dependency-for-preinst W: debconf-test-preinst: old-fsf-address-in-copyright-file W: debconf-test-preinst: possible-debconf-note-abuse preinst:9 debconf/test W: debconf-test: making-assumptions-about-interfaces-in-templates debconf/testboolean W: debconf-test: malformed-prompt-in-templates debconf/teststring W: debconf-test: malformed-question-in-templates debconf/should-be-no-longer-a-problem W: debconf-test: malformed-question-in-templates debconf/testboolean W: debconf-test: malformed-title-in-templates debconf/testnote W: debconf-test: old-fsf-address-in-copyright-file W: debconf-test: possible-debconf-note-abuse config:19 debconf/test W: debconf-test: possible-debconf-note-abuse postinst:8 debconf/test W: debconf-test: select-with-boolean-choices debconf/should-be-boolean W: debconf-test: too-long-extended-description-in-templates debconf/teststring W: debconf-test: too-long-short-description-in-templates debconf/testnote W: debconf-test: using-first-person-in-templates debconf/1st-person W: debconf-test: using-imperative-form-in-templates debconf/1st-person W: debconf-test: using-imperative-form-in-templates debconf/should-be-boolean W: debconf-test: using-question-in-extended-description-in-templates debconf/testboolean W: debconf-udeb udeb: missing-debconf-dependency lintian-2.5.22ubuntu1/t/tests/legacy-debconf/desc0000664000000000000000000000015212310413206016552 0ustar Testname: legacy-debconf Source: debconf Sequence: 9999 Version: 1~rc1 Description: Legacy test "debconf" lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/0000775000000000000000000000000012310413206017135 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/0000775000000000000000000000000012310413206020357 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/debconf-test.config0000664000000000000000000000074312310413206024127 0ustar #!/bin/sh set -e . /usr/share/debconf/confmodule db_settitle "Funky lintian test" # Bad priorities. db_text LOW debconf/test db_input normal debconf/test # Valid priorities. db_text \ high debconf/test foo=medium db_input $foo debconf/test db_input "$foo" debconf/test db_input 'medium' debconf/test # debconf/transtring should not be flagged as unused # (it's aliased to debconf/alias, which is used) db_register debconf/transtring debconf/alias db_input medium debconf/alias lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/debconf-test.templates.de0000664000000000000000000000011312310413206025236 0ustar Template: debconf/testmulti Type: multiselect Choices: foo, bar\, boo, boo lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/debconf-test-preinst.templates0000664000000000000000000000010112310413206026326 0ustar Template: debconf/test Type: text _description: Enter something: lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/debconf-udeb.postinst0000664000000000000000000000010312310413206024473 0ustar #!/bin/sh set -e . /usr/share/debconf/confmodule ldconfig true lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/debconf-test-postinst.postinst0000664000000000000000000000014312310413206026420 0ustar #!/bin/sh set -e . /usr/share/debconf/confmodule db_input medium debconf/test #DEBHELPER# true lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/debconf-test-postinst.postrm0000664000000000000000000000022312310413206026060 0ustar #!/bin/sh set -e if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then . /usr/share/debconf/confmodule db_purge fi #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/copyright0000664000000000000000000000050112310413206022306 0ustar Copyright (C) 2004 Frank Lichtenheld Test for really old FSF address: Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Test for a dh-make boilerplate: # Please also look if there are files or directories which have a # different copyright/license attached and list them here. lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/po/0000775000000000000000000000000012310413206020775 5ustar lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/po/output0000664000000000000000000000000712310413206022255 0ustar 2 utf8 lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/po/pt_BR.po0000664000000000000000000000055712310413206022352 0ustar msgid "" msgstr "" "Project-Id-Version: debconf-test 1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2004-12-06 00:51+0100\n" "PO-Revision-Date: 2005-10-13 15:03+0200\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Type: text #. description #: ../debconf-test.templates:3 msgid "Foo bar (2)" msgstr "" lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/po/de.po0000664000000000000000000000310312310413206021722 0ustar # # Translators, if you are not familiar with the PO format, gettext # documentation is worth reading, especially sections dedicated to # this format, e.g. by running: # info -n '(gettext)PO Files' # info -n '(gettext)Header Entry' # # Some information specific to po-debconf are available at # /usr/share/doc/po-debconf/README-trans # or http://www.debian.org/intl/l10n/po-debconf/README-trans # # Developers do not need to manually edit POT or PO files. # msgid "" msgstr "" "Project-Id-Version: debconf-test 1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2004-12-06 00:51+0100\n" "PO-Revision-Date: 2004-12-06 01:01+0100\n" "Last-Translator: Frank Lichtenheld \n" "Language-Team: debian-l10n-german@l.d.o\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Type: text #. description #: ../debconf-test.templates:3 msgid "Foo bar (2)" msgstr "" #. Type: multiselect #. Choices #: ../debconf-test.templates:7 msgid "foo" msgstr "foo" #. Type: multiselect #. Choices #: ../debconf-test.templates:7 msgid "bar" msgstr "bar, boo" #. Type: multiselect #. Choices #: ../debconf-test.templates:7 msgid "boo" msgstr "boo" #. Type: multiselect #. Description #: ../debconf-test.templates:8 msgid "test comma usages in choices fields" msgstr "" #. Type: multiselect #. Choices #: ../debconf-test.templates:11 msgid "foo\\, bar, boo" msgstr "foo, bar, boo" #. Type: text #. description #: ../debconf-udeb.templates:3 msgid "This is just a test" msgstr "Dies ist nur ein Test" lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/po/lang.po0000664000000000000000000000055712310413206022265 0ustar msgid "" msgstr "" "Project-Id-Version: debconf-test 1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2004-12-06 00:51+0100\n" "PO-Revision-Date: 2005-10-13 15:03+0200\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Type: text #. description #: ../debconf-test.templates:3 msgid "Foo bar (2)" msgstr "" lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/po/sample-file.po0000664000000000000000000000007012310413206023530 0ustar This is some file that isn't actually a valid .po file. lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/po/templates.pot0000664000000000000000000000265512310413206023527 0ustar # # Translators, if you are not familiar with the PO format, gettext # documentation is worth reading, especially sections dedicated to # this format, e.g. by running: # info -n '(gettext)PO Files' # info -n '(gettext)Header Entry' # # Some information specific to po-debconf are available at # /usr/share/doc/po-debconf/README-trans # or http://www.debian.org/intl/l10n/po-debconf/README-trans # # Developers do not need to manually edit POT or PO files. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2004-12-06 00:51+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #. Type: text #. description #: ../debconf-test.templates:3 msgid "Foo bar (2)" msgstr "" #. Type: multiselect #. Choices #: ../debconf-test.templates:7 msgid "foo" msgstr "" #. Type: multiselect #. Choices #: ../debconf-test.templates:7 msgid "bar" msgstr "" #. Type: multiselect #. Choices #: ../debconf-test.templates:7 msgid "boo" msgstr "" #. Type: multiselect #. Description #: ../debconf-test.templates:8 msgid "test comma usages in choices fields" msgstr "" #. Type: text #. description #: ../debconf-udeb.templates:3 msgid "This is just a test" msgstr "" lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/po/fr.po0000664000000000000000000000267712310413206021760 0ustar # # Translators, if you are not familiar with the PO format, gettext # documentation is worth reading, especially sections dedicated to # this format, e.g. by running: # info -n '(gettext)PO Files' # info -n '(gettext)Header Entry' # # Some information specific to po-debconf are available at # /usr/share/doc/po-debconf/README-trans # or http://www.debian.org/intl/l10n/po-debconf/README-trans # # Developers do not need to manually edit POT or PO files. # msgid "" msgstr "" "Project-Id-Version: debconf-test 1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2004-12-06 00:51+0100\n" "PO-Revision-Date: 2005-10-13 15:03+0200\n" "Last-Translator: Frank Lichtenheld \n" "Language-Team: debian-l10n-german@l.d.o\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #. Type: text #. description #: ../debconf-test.templates:3 msgid "Foo bar (2)" msgstr "" #. Type: multiselect #. Choices #: ../debconf-test.templates:7 msgid "foo" msgstr "foo" #. Type: multiselect #. Choices #: ../debconf-test.templates:7 msgid "bar" msgstr "bar, boo" #. Type: multiselect #. Choices #: ../debconf-test.templates:7 msgid "boo" msgstr "boo" #. Type: multiselect #. Description #: ../debconf-test.templates:8 msgid "test comma usages in choices fields" msgstr "" #. Type: text #. description #: ../debconf-udeb.templates:3 msgid "This is just a test" msgstr " lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/po/POTFILES.in0000664000000000000000000000014212310413206022547 0ustar [type: gettext/rfc822deb] debconf-test.templates [type: gettext/rfc822deb] debconf-udeb.templates lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/po/nds.po0000664000000000000000000000055712310413206022130 0ustar msgid "" msgstr "" "Project-Id-Version: debconf-test 1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2004-12-06 00:51+0100\n" "PO-Revision-Date: 2005-10-13 15:03+0200\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. Type: text #. description #: ../debconf-test.templates:3 msgid "Foo bar (2)" msgstr "" lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/debconf-test-preinst.preinst0000664000000000000000000000025212310413206026023 0ustar #!/bin/sh set -e # Obsolete name for the confmodule . /usr/share/debconf/confmodule.sh . /usr/share/debconf/confmodule db_input medium debconf/test #DEBHELPER# true lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/pycompat0000664000000000000000000000000212310413206022126 0ustar 2 lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/changelog0000664000000000000000000000034512310413206022233 0ustar debconf (1~rc1) unstable; urgency=low * Initial Release * Changelog line with exactly 80 characters which tests the line-too-long tag. -- Lintian Maintainers Wed, 3 May 2006 18:07:19 -0500 lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/debconf-test.templates.in0000664000000000000000000000000012310413206025247 0ustar lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/compat0000664000000000000000000000000212310413206021555 0ustar 4 lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/rules0000775000000000000000000000244212310413206021441 0ustar #!/usr/bin/make -f export DH_COMPAT = 4 deb_dir = debian/debconf udeb_dir = debian/debconf-udeb build_dirs = $(deb_dir) $(udeb_dir) build-indep: # There are no architecture-independent files to be built # by this package. If there were any they would be made # here. build-arch: dh_testdir touch build build: build-indep build-arch clean: dh_testdir dh_testroot -rm -f build dh_clean binary-indep: build # There are no architecture-independent files to be uploaded # generated by this package. If there were any they would be # made here. binary-arch: build dh_testdir dh_testroot dh_clean -k -a dh_installdirs -a dh_installchangelogs -a dh_installdocs -a dh_installdebconf -pdebconf-test dh_installdebconf -pdebconf-test-noscripts --noscripts dh_installdebconf -pdebconf-test-preinst --noscripts dh_installdebconf -pdebconf-test-postinst --noscripts dh_installdebconf -pdebconf-udeb dh_compress -a dh_fixperms -a # The shlibs stuff doesn't matter here so do it in a weird order to # test wwarnings. dh_installdeb -a dh_shlibdeps -a dh_makeshlibs -a dh_gencontrol -a dh_md5sums dh_builddeb -a dh_makeshlibs -a # Below here is fairly generic really binary: binary-indep binary-arch .PHONY: build-arch build-indep build binary binary-arch binary-indep clean checkroot lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/control0000664000000000000000000000347512310413206021773 0ustar Source: debconf Section: utils Priority: optional Build-Depends: debhelper (>= 4), dpatch Maintainer: Lintian Maintainers Standards-Version: 3.7.2 Package: debconf-test Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: Test package for the debconf checks of lintian (dummy) Package: debconf-test-noscripts Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: Test package for the debconf checks of lintian (noscripts) Package missing postinst/postrm/config. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: debconf-test-preinst Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: Test package for the debconf checks of lintian (preinst) Package uses debconf only in preinst. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: debconf-test-postinst Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: Test package for the debconf checks of lintian (postinst) Package uses debconf only in postinst. . This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. Package: debconf-udeb Section: debian-installer XC-Package-Type: udeb XB-Installer-Menu-Item: 100 Architecture: any Depends: ${shlibs:Depends} Description: Test udeb package for the debconf checks of lintian (dummy) lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/debconf-udeb.templates0000664000000000000000000000013312310413206024611 0ustar Template: debian-installer/debconf-udeb/title Type: text _description: This is just a test lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/debconf-test-noscripts.templates0000664000000000000000000000007412310413206026677 0ustar Template: debconf/test Type: text _description: Foo bar (1) lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/debconf-test.postinst0000664000000000000000000000016712310413206024545 0ustar #!/bin/sh set -e . /usr/share/debconf/confmodule # Not supposed to do this here. db_input medium debconf/test true lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/debconf-test-postinst.templates0000664000000000000000000000010112310413206026525 0ustar Template: debconf/test Type: text _description: Enter something: lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/debconf-test-preinst.postrm0000664000000000000000000000022312310413206025661 0ustar #!/bin/sh set -e if [ "$1" = purge ] && [ -e /usr/share/debconf/confmodule ]; then . /usr/share/debconf/confmodule db_purge fi #DEBHELPER# lintian-2.5.22ubuntu1/t/tests/legacy-debconf/debian/debian/debconf-test.templates0000664000000000000000000000551012310413206024655 0ustar Template: debconf/test Type: text _description: Foo bar (1) Template: debconf/testmulti Type: multiselect __Choices: foo, bar, boo _Description: test comma usages in choices fields Template: debconf/testmulti-escape Type: multiselect _Choices: foo\, bar, boo _Description: test escaped comma usages in choices fields: Template: debconf/testboolean Type: boolean _Description: Enter yes or no: Do you want to answer this question? Template: debconf/teststring Type: string _Description: This template goes on and on. This template goes on and on. This template goes on and on. This template goes on and on. This template goes on and on. This template goes on and on. This template goes on and on. This template goes on and on. This template goes on and on. This template goes on and on. This template goes on and on. This template goes on and on. This template goes on and on. This template goes on and on. This template goes on and on. This template goes on and on. This template goes on and on. This template goes on and on. This template goes on and on. This template goes on and on. This template goes on and on. This template goes on and on. Template: debconf/testnote Type: note Description: This should be a title and not a really long sentence that ends in a regular period. Template: debconf/1st-person Type: select __Choices: one, two _Description: Select one of these: I am a stupid test of first-person syntax that tells you to select yes even though yes isn't an option in this prompt. Template: debconf/internal Type: boolean Description: For internal use only We are testing that style checks are not applied to templates that are marked as internal. Template: debconf/no-description Type: string Template: debconf/translate Type: boolean _Default: false _Description: Should this really be translated? Template: debconf/transtring Type: string _Default: 1 _Description: Count of templates: The number of useless numbers that a translator would have to translate for this template. Template: debconf/language __Choices: English, Spanish, German, French # This is the default choice. Translators should put their own language, # if available, here instead, but the value MUST be the English version # of the value for the package scripts to work properly. _Default: English[ translators, see the comment in the PO files] _Description: The default language, an example of a default that should be translated. Template: debconf/error Type: error _Description: An error occurred This is a sample Debconf error template. Template: debconf/should-be-boolean Type: select __Choices: yes, no _Description: Choose: Pick yes or no. Template: debconf/should-be-no-longer-a-problem Type: boolean _Description: Decide, lintian Using "no longer" should no longer be detected as making-assumptions-about-interfaces-in-templates by lintian. lintian-2.5.22ubuntu1/t/tests/shared-libs-multi-arch-foreign/0000775000000000000000000000000012077065716020763 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-multi-arch-foreign/tags0000664000000000000000000000011412077065716021640 0ustar E: libhallo1: shlib-in-multi-arch-foreign-package usr/lib/libhallo.so.1.0.1 lintian-2.5.22ubuntu1/t/tests/shared-libs-multi-arch-foreign/desc0000664000000000000000000000025112077065716021622 0ustar Testname: shared-libs-multi-arch-foreign Sequence: 6000 Version: 1.0 Description: Test for shared libs in m-a foreign pkgs Test-For: shlib-in-multi-arch-foreign-package lintian-2.5.22ubuntu1/t/tests/shared-libs-multi-arch-foreign/debian/0000775000000000000000000000000012077065716022205 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-multi-arch-foreign/debian/Makefile0000664000000000000000000000067712077065716023657 0ustar CC=gcc CFLAGS+= -fPIC SONAMES:= libhallo.so.1 LIBFILES:= $(patsubst %,%.0.1, $(SONAMES)) all: $(LIBFILES) $(LIBFILES): code.o $(CC) $(LDFLAGS) -fPIC -o $@ -shared -Wl,-soname,$(patsubst %.0.1,%,$@) $^ -lc clean: rm -f *.a *.o *.so* install: all install -m 0755 -d $(DESTDIR)/usr/lib install -m 0755 *.so* $(DESTDIR)/usr/lib for FILE in $(SONAMES) ; do \ ln -s $${FILE}.0.1 $(DESTDIR)/usr/lib/$$FILE ; \ done .PHONY: install clean lintian-2.5.22ubuntu1/t/tests/shared-libs-multi-arch-foreign/debian/code.c0000664000000000000000000000021612077065716023262 0ustar #include #include double e(void (*f)(char *)){ char tmp[10]; double x; f(tmp); x = atof(tmp); return exp(x); } lintian-2.5.22ubuntu1/t/tests/shared-libs-multi-arch-foreign/debian/debian/0000775000000000000000000000000012310413206023404 5ustar lintian-2.5.22ubuntu1/t/tests/shared-libs-multi-arch-foreign/debian/debian/control.in0000664000000000000000000000073112310413206025415 0ustar Source: {$source} Priority: extra Section: libs Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: libhallo1 Architecture: any Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Multi-Arch: foreign Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/tests/shared-libs-multi-arch-foreign/debian/debian/libhallo1.symbols0000664000000000000000000000006112077065716026705 0ustar libexecbit.so.1 libexecbit1 #MINVER# e@Base 1.0 lintian-2.5.22ubuntu1/t/tests/cruft-contains-waf-stripped/0000775000000000000000000000000012077065714020434 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-contains-waf-stripped/upstream/0000775000000000000000000000000012077065714022274 5ustar lintian-2.5.22ubuntu1/t/tests/cruft-contains-waf-stripped/upstream/waf0000664000000000000000000000047112077065714022776 0ustar #!/usr/bin/python # encoding: ISO-8859-1 # # We just do a little python... for the show import os, sys if sys.hexversion<0x203000f: raise ImportError("Waf requires python >= 2.3") # and we are pretending to be a waf script # okay, thats enough... #==> # Here one would expect to find a tar.bz2 file... #<== lintian-2.5.22ubuntu1/t/tests/cruft-contains-waf-stripped/tags0000664000000000000000000000000012077065714021303 0ustar lintian-2.5.22ubuntu1/t/tests/cruft-contains-waf-stripped/desc0000664000000000000000000000024612077065714021277 0ustar Testname: cruft-contains-waf-stripped Sequence: 6000 Version: 1.0-1 Type: non-native Description: Check for sources with waf Test-Against: source-contains-waf-binary lintian-2.5.22ubuntu1/t/templates/0000775000000000000000000000000012077065714013726 5ustar lintian-2.5.22ubuntu1/t/templates/tests/0000775000000000000000000000000012077065714015070 5ustar lintian-2.5.22ubuntu1/t/templates/tests/skel/0000775000000000000000000000000012077065714016026 5ustar lintian-2.5.22ubuntu1/t/templates/tests/skel/debian/0000775000000000000000000000000012310413206017227 5ustar lintian-2.5.22ubuntu1/t/templates/tests/skel/debian/changelog.in0000664000000000000000000000027512310413206021512 0ustar {$source} ({$version}) {$distribution}; urgency=low * Lintian Test Suite. * Test: {$testname} * Suppress "should close ITP bug" messages. (Closes: #123456) -- {$author} {$date} lintian-2.5.22ubuntu1/t/templates/tests/skel/debian/control.in0000664000000000000000000000076512310413206021247 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/templates/tests/skel/debian/copyright0000664000000000000000000000177112077065714021211 0ustar This is part of the testsuite of lintian. See the file debian/copyright in the lintian source directory for more details. So far as it is copyrightable at all, this template is Copyright © 2008 Frank Lichtenheld This program is free software; you may 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, or (at your option) any later version. This 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. A copy of the GNU General Public License version 2 is available as /usr/share/common-licenses/GPL-2 in the Debian GNU/Linux distribution or at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. You can also obtain it by writing to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. lintian-2.5.22ubuntu1/t/templates/tests/skel/debian/source/0000775000000000000000000000000012077065714020550 5ustar lintian-2.5.22ubuntu1/t/templates/tests/skel/debian/source/format0000664000000000000000000000000412077065714021755 0ustar 1.0 lintian-2.5.22ubuntu1/t/templates/tests/skel/debian/changelog0000664000000000000000000000177612077065714021135 0ustar skel (1.2) unstable; urgency=low * Raise the default dependency on debhelper to 7.0.50~ so that tests can freely use overrides without a modified control.in. -- Russ Allbery Sat, 15 Aug 2009 19:09:15 -0700 skel (1.1) unstable; urgency=low * Parameterize the package section to make it easier to avoid spurious tags for section mismatches when testing some types of packages. * ${shlibs:Depends}, not ${shlib:Depends}, in the control template. * Expand the default long description to three lines to not trigger extended-description-is-probably-too-short. Tell anyone looking at a test package that it shouldn't be installed like a normal package. -- Russ Allbery Sat, 27 Dec 2008 13:16:40 -0800 skel (1.0) unstable; urgency=low * Initial design. Please see changelog.in for the actual changelog that will be used unless it is overwritten in the individual test. -- Frank Lichtenheld Sun, 03 Aug 2008 16:46:13 +0200 lintian-2.5.22ubuntu1/t/templates/tests/skel/debian/compat0000664000000000000000000000000212077065714020446 0ustar 9 lintian-2.5.22ubuntu1/t/templates/tests/skel/debian/rules0000775000000000000000000000003512077065714020326 0ustar #!/usr/bin/make -f %: dh $@ lintian-2.5.22ubuntu1/t/templates/tests/pedantic/0000775000000000000000000000000012077065714016657 5ustar lintian-2.5.22ubuntu1/t/templates/tests/pedantic/debian/0000775000000000000000000000000012310413206020060 5ustar lintian-2.5.22ubuntu1/t/templates/tests/pedantic/debian/changelog.in0000664000000000000000000000026612310413206022343 0ustar {$source} ({$version}) unstable; urgency=low * Lintian Test Suite. * Test: {$testname} * Suppress "should close ITP bug" messages. (Closes: #123456) -- {$author} {$date} lintian-2.5.22ubuntu1/t/templates/tests/pedantic/debian/control.in0000664000000000000000000000100512310413206022064 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 9) Homepage: http://lintian.debian.org/ Package: {$source} Architecture: {$architecture} Depends: $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/templates/tests/pedantic/debian/copyright0000664000000000000000000000177112077065714022042 0ustar This is part of the testsuite of lintian. See the file debian/copyright in the lintian source directory for more details. So far as it is copyrightable at all, this template is Copyright © 2008 Frank Lichtenheld This program is free software; you may 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, or (at your option) any later version. This 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. A copy of the GNU General Public License version 2 is available as /usr/share/common-licenses/GPL-2 in the Debian GNU/Linux distribution or at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. You can also obtain it by writing to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. lintian-2.5.22ubuntu1/t/templates/tests/pedantic/debian/source/0000775000000000000000000000000012077065714021401 5ustar lintian-2.5.22ubuntu1/t/templates/tests/pedantic/debian/source/format0000664000000000000000000000000412077065714022606 0ustar 1.0 lintian-2.5.22ubuntu1/t/templates/tests/pedantic/debian/changelog0000664000000000000000000000253312077065714021756 0ustar pedantic (1.3) unstable; urgency=low * Raise the default dependency on debhelper to 7.0.50~ so that tests can freely use overrides without a modified control.in. -- Russ Allbery Sat, 15 Aug 2009 19:09:44 -0700 pedantic (1.2) unstable; urgency=low * New template based on the default skel template. * Add Homepage to the default control file. * Remove ${shlibs:Depends} from the default control file to avoid triggering warnings about ${shlibs:Depends} in arch: all packages. -- Russ Allbery Fri, 30 Jan 2009 22:09:43 -0800 skel (1.1) unstable; urgency=low * Parameterize the package section to make it easier to avoid spurious tags for section mismatches when testing some types of packages. * ${shlibs:Depends}, not ${shlib:Depends}, in the control template. * Expand the default long description to three lines to not trigger extended-description-is-probably-too-short. Tell anyone looking at a test package that it shouldn't be installed like a normal package. -- Russ Allbery Sat, 27 Dec 2008 13:16:40 -0800 skel (1.0) unstable; urgency=low * Initial design. Please see changelog.in for the actual changelog that will be used unless it is overwritten in the individual test. -- Frank Lichtenheld Sun, 03 Aug 2008 16:46:13 +0200 lintian-2.5.22ubuntu1/t/templates/tests/pedantic/debian/compat0000664000000000000000000000000212077065714021277 0ustar 9 lintian-2.5.22ubuntu1/t/templates/tests/pedantic/debian/rules0000775000000000000000000000036412077065714021164 0ustar #!/usr/bin/make -f %: dh $@ # In Ubuntu, dh does not catch this file by default. # They have diffed it to reduce the size of packages. ifneq (,$(strip $(wildcard Changes))) override_dh_installchangelogs: dh_installchangelogs Changes endif lintian-2.5.22ubuntu1/t/templates/tests/skel.upstream/0000775000000000000000000000000012077065714017665 5ustar lintian-2.5.22ubuntu1/t/templates/tests/skel.upstream/.dummy0000664000000000000000000000000012077065714021007 0ustar lintian-2.5.22ubuntu1/t/templates/tests/pedantic.upstream/0000775000000000000000000000000012077065714020516 5ustar lintian-2.5.22ubuntu1/t/templates/tests/pedantic.upstream/Changes0000664000000000000000000000010212077065714022002 0ustar This is a dummy upstream changelog file for dh_installchangelogs. lintian-2.5.22ubuntu1/t/templates/debs/0000775000000000000000000000000012077065714014643 5ustar lintian-2.5.22ubuntu1/t/templates/debs/skel/0000775000000000000000000000000012310413206015560 5ustar lintian-2.5.22ubuntu1/t/templates/debs/skel/changelog.in0000664000000000000000000000026612310413206020043 0ustar {$source} ({$version}) unstable; urgency=low * Lintian Test Suite. * Test: {$testname} * Suppress "should close ITP bug" messages. (Closes: #123456) -- {$author} {$date} lintian-2.5.22ubuntu1/t/templates/debs/skel/control.in0000664000000000000000000000057712310413206017601 0ustar Package: {$source} Version: {$version} Architecture: {$architecture} Maintainer: {$author} Section: {$section} Priority: extra Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/templates/debs/skel/copyright0000664000000000000000000000176312077065714017543 0ustar This is part of the testsuite of lintian. See the file debian/copyright in the lintian source directory for more details. So far as it is copyrightable at all, this test case is Copyright © 2009 Russ Allbery This program is free software; you may 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, or (at your option) any later version. This 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. A copy of the GNU General Public License version 2 is available as /usr/share/common-licenses/GPL-2 in the Debian GNU/Linux distribution or at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. You can also obtain it by writing to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. lintian-2.5.22ubuntu1/t/templates/debs/skel/Makefile.in0000664000000000000000000000135512310413206017631 0ustar name = {$source} all: fix-perm create-deb -o $(name).deb control clean: rm -f *.tar.gz *.deb md5sums debian-binary rm -rf root/ # If root/ exists, it is because the test ships with it. Since the # test may have been checked out (or unpacked) with a "whack umask" # (anything but 0022), we reset the permissions to a reasonable # default. # # The contents of the deb usually is not what is tested by this suite # (t/tests is preferred for this), so the below merely handles the # AVERAGE CASE. Tests that need special permissions (anything but # 0644 for files and 0755 for dirs) require manually setting the # permissions. fix-perm: [ ! -d root/ ] || (find root/ -type d | xargs chmod 0755 && \ find root/ -type f | xargs chmod 0644) lintian-2.5.22ubuntu1/t/templates/source/0000775000000000000000000000000012077065714015226 5ustar lintian-2.5.22ubuntu1/t/templates/source/skel/0000775000000000000000000000000012310413206016143 5ustar lintian-2.5.22ubuntu1/t/templates/source/skel/changelog.in0000664000000000000000000000026612310413206020426 0ustar {$source} ({$version}) unstable; urgency=low * Lintian Test Suite. * Test: {$testname} * Suppress "should close ITP bug" messages. (Closes: #123456) -- {$author} {$date} lintian-2.5.22ubuntu1/t/templates/source/skel/control.in0000664000000000000000000000077312310413206020162 0ustar Source: {$source} Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 7.0.50~) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/templates/source/skel/copyright0000664000000000000000000000176312077065714020126 0ustar This is part of the testsuite of lintian. See the file debian/copyright in the lintian source directory for more details. So far as it is copyrightable at all, this test case is Copyright © 2009 Russ Allbery This program is free software; you may 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, or (at your option) any later version. This 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. A copy of the GNU General Public License version 2 is available as /usr/share/common-licenses/GPL-2 in the Debian GNU/Linux distribution or at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. You can also obtain it by writing to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. lintian-2.5.22ubuntu1/t/templates/source/skel/rules0000775000000000000000000000003512077065714017242 0ustar #!/usr/bin/make -f %: dh $@ lintian-2.5.22ubuntu1/t/debs/0000775000000000000000000000000012310413144012625 5ustar lintian-2.5.22ubuntu1/t/debs/deb-format-ancient-file/0000775000000000000000000000000012310413206017200 5ustar lintian-2.5.22ubuntu1/t/debs/deb-format-ancient-file/Makefile0000664000000000000000000000105212310413206020636 0ustar name = deb-format-ancient-file all: mkdir -p root/usr/share/doc/$(name) install -m0644 copyright changelog root/usr/share/doc/$(name) gzip -9 root/usr/share/doc/$(name)/changelog env TZ=GMT touch -t 197001010000 \ root/usr/share/doc/$(name)/changelog.gz chown 0:0 control chmod 644 control env TZ=GMT touch -d@-1 control # Use --no-fix-perm to avoid it messing with the # our created "mod-times" create-deb -o $(name).deb --no-fix-perm \ --root root/ control clean: rm -f *.tar.gz *.deb md5sums debian-binary rm -rf root lintian-2.5.22ubuntu1/t/debs/deb-format-ancient-file/tags0000664000000000000000000000034412310413206020062 0ustar E: deb-format-ancient-file: package-contains-ancient-file usr/share/doc/deb-format-ancient-file/changelog.gz 1970-01-01 E: deb-format-ancient-file: tar-errors-from-control control: implausibly old time stamp 1969-12-31 23:59:59 lintian-2.5.22ubuntu1/t/debs/deb-format-ancient-file/desc0000664000000000000000000000026512077065714020065 0ustar Testname: deb-format-ancient-file Sequence: 6000 Version: 1.0 Description: Test package containing an ancient file Test-For: package-contains-ancient-file tar-errors-from-control lintian-2.5.22ubuntu1/t/debs/deb-format-ancient-file/control0000664000000000000000000000067112077065714020630 0ustar Package: deb-format-ancient-file Version: 1.0 Architecture: all Maintainer: Debian Lintian Maintainers Section: devel Priority: extra Description: Test package containing an ancient file This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/debs/control-field-traversal-4/0000775000000000000000000000000012077065714017550 5ustar lintian-2.5.22ubuntu1/t/debs/control-field-traversal-4/Makefile0000664000000000000000000000147112077065714021213 0ustar name = control-field-traversal-4 all: mkdir -p root/usr/share/doc/ # create a symlink to (usr/share/doc/)dpkg which will make # copyright-file warn that it can't check whether the symlink # points to a foreign package if the directory traversal did # not happen. # If, on the other hand, warns that they don't belong to the # same package, there's a directory traversal issue. # This is because the 'binary//source' symlink in the # laboratory will point to '../../source/../binary/' # if the bogus source package name is not catched. This results # into a valid symlink which is enough for copyright-file to # determine that 'source/dpkg' does not exist. ln -s dpkg root/usr/share/doc/$(name) create-deb -o $(name).deb --root root/ control clean: rm -f *.tar.gz *.deb debian-binary rm -rf root lintian-2.5.22ubuntu1/t/debs/control-field-traversal-4/tags0000664000000000000000000000010612077065714020426 0ustar warning: tainted binary package 'control-field-traversal-4', skipping lintian-2.5.22ubuntu1/t/debs/control-field-traversal-4/desc0000664000000000000000000000021412077065714020406 0ustar Testname: control-field-traversal-4 Sequence: 6000 Version: 1.0 Description: Test for directory traversal issues via field names or values lintian-2.5.22ubuntu1/t/debs/control-field-traversal-4/control0000664000000000000000000000077512077065714021164 0ustar Package: control-field-traversal-4 Version: 1.0 Architecture: all Maintainer: Debian Lintian Maintainers Section: devel Priority: extra Source: ../binary/control-field-traversal-4 Description: Test for directory traversal issues via field names or values This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/debs/copyright-file-foreign-package/0000775000000000000000000000000012077065714020612 5ustar lintian-2.5.22ubuntu1/t/debs/copyright-file-foreign-package/Makefile0000664000000000000000000000036212077065714022253 0ustar name = copyright-file-foreign-package all: mkdir -p root/usr/share/doc/ ln -s other-package root/usr/share/doc/$(name) create-deb -o $(name).deb --no-md5sums --root root/ control clean: rm -f *.tar.gz *.deb debian-binary rm -rf root/ lintian-2.5.22ubuntu1/t/debs/copyright-file-foreign-package/tags0000664000000000000000000000015012077065714021467 0ustar I: copyright-file-foreign-package: cannot-check-whether-usr-share-doc-symlink-points-to-foreign-package lintian-2.5.22ubuntu1/t/debs/copyright-file-foreign-package/desc0000664000000000000000000000030612077065714021452 0ustar Testname: copyright-file-foreign-package Sequence: 6000 Version: 1.0 Description: Test for foreign symlink in package Test-For: cannot-check-whether-usr-share-doc-symlink-points-to-foreign-package lintian-2.5.22ubuntu1/t/debs/copyright-file-foreign-package/control0000664000000000000000000000072312077065714022217 0ustar Package: copyright-file-foreign-package Version: 1.0 Architecture: all Maintainer: Debian Lintian Maintainers Section: devel Priority: extra Depends: other-package Description: test for foreign symlink in package This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/debs/fields-multi-arch-unknown/0000775000000000000000000000000012077065714017653 5ustar lintian-2.5.22ubuntu1/t/debs/fields-multi-arch-unknown/tags0000664000000000000000000000013012077065714020526 0ustar E: fields-multi-arch-unknown: unknown-multi-arch-value fields-multi-arch-unknown cheese lintian-2.5.22ubuntu1/t/debs/fields-multi-arch-unknown/desc0000664000000000000000000000023612077065714020515 0ustar Testname: fields-multi-arch-unknown Sequence: 6000 Version: 1.0 Description: Test package with an unknown Multi-arch value Test-For: unknown-multi-arch-value lintian-2.5.22ubuntu1/t/debs/fields-multi-arch-unknown/control0000664000000000000000000000072412077065714021261 0ustar Package: fields-multi-arch-unknown Version: 1.0 Architecture: all Multi-arch: cheese Maintainer: Debian Lintian Maintainers Section: devel Priority: extra Description: Test package with an unknown Multi-arch value This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/debs/md5sums-traversal/0000775000000000000000000000000012310413144016223 5ustar lintian-2.5.22ubuntu1/t/debs/md5sums-traversal/Makefile0000664000000000000000000000025012310413144017660 0ustar name = md5sums-traversal all: ln -s ../copyright md5sums create-deb -o $(name).deb control md5sums clean: rm -f *.tar.gz *.deb md5sums debian-binary rm -rf root/ lintian-2.5.22ubuntu1/t/debs/md5sums-traversal/tags0000664000000000000000000000007112310413144017102 0ustar E: md5sums-traversal: control-file-is-not-a-file md5sums lintian-2.5.22ubuntu1/t/debs/md5sums-traversal/desc0000664000000000000000000000041612310413144017065 0ustar Testname: md5sums-traversal Sequence: 6000 Version: 1.0 Description: Test for traversals via md5sums symlink Options: -C copyright-file,md5sums,control-files -IE Test-For: control-file-is-not-a-file Test-Against: file-missing-in-md5sums malformed-md5sums-control-file lintian-2.5.22ubuntu1/t/debs/deb-format-lzma/0000775000000000000000000000000012077065714015626 5ustar lintian-2.5.22ubuntu1/t/debs/deb-format-lzma/Makefile0000664000000000000000000000022412077065714017264 0ustar name = deb-format-lzma all: create-deb -o $(name).deb -c lzma control clean: rm -f *.tar.gz *.tar.lzma *.deb md5sums debian-binary rm -rf root lintian-2.5.22ubuntu1/t/debs/deb-format-lzma/tags0000664000000000000000000000004512077065714016506 0ustar E: deb-format-lzma: lzma-deb-archive lintian-2.5.22ubuntu1/t/debs/deb-format-lzma/desc0000664000000000000000000000020112077065714016460 0ustar Testname: deb-format-lzma Sequence: 6000 Version: 1.0 Description: Test package with LZMA compression Test-For: lzma-deb-archive lintian-2.5.22ubuntu1/t/debs/deb-format-lzma/control0000664000000000000000000000065412077065714017236 0ustar Package: deb-format-lzma Version: 1.0 Architecture: all Maintainer: Debian Lintian Maintainers Section: devel Priority: extra Description: Test package with LZMA compression This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/debs/deb-format-record-size/0000775000000000000000000000000012077065714017111 5ustar lintian-2.5.22ubuntu1/t/debs/deb-format-record-size/Makefile0000664000000000000000000000112512077065714020550 0ustar name = deb-format-record-size # Build the deb manully, since we need to fiddle with # with the record-size. all: echo '2.0' > debian-binary mkdir -p usr/share/doc/$(name) install -m0644 copyright changelog usr/share/doc/$(name) gzip -9 usr/share/doc/$(name)/changelog tar --record-size=4096 -c -z -f data.tar.gz usr chown 0:0 control chmod 644 control md5sum usr/share/doc/$(name)/* > md5sums tar --record-size=4096 -c -z -f control.tar.gz control md5sums ar rc $(name).deb \ debian-binary control.tar.gz data.tar.gz clean: rm -f *.tar.gz *.deb md5sums debian-binary rm -rf usr lintian-2.5.22ubuntu1/t/debs/deb-format-record-size/tags0000664000000000000000000000000012077065714017760 0ustar lintian-2.5.22ubuntu1/t/debs/deb-format-record-size/desc0000664000000000000000000000017312077065714017753 0ustar Testname: deb-format-record-size Sequence: 6000 Version: 1.0 Description: Test package with a non-standard tar record size lintian-2.5.22ubuntu1/t/debs/deb-format-record-size/control0000664000000000000000000000070112077065714020512 0ustar Package: deb-format-record-size Version: 1.0 Architecture: all Maintainer: Debian Lintian Maintainers Section: devel Priority: extra Description: Test package with a non-standard tar record size This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/debs/control-files-weird-files/0000775000000000000000000000000012077065714017635 5ustar lintian-2.5.22ubuntu1/t/debs/control-files-weird-files/Makefile0000664000000000000000000000031512077065714021274 0ustar name = control-files-weird-files all: touch triggers create-deb -o $(name).deb control triggers \ special-file isinstallable clean: rm -f *.tar.gz *.deb md5sums debian-binary triggers rm -rf root/ lintian-2.5.22ubuntu1/t/debs/control-files-weird-files/tags0000664000000000000000000000030212077065714020511 0ustar E: control-files-weird-files: not-allowed-control-file isinstallable W: control-files-weird-files: control-file-is-empty triggers W: control-files-weird-files: unknown-control-file special-file lintian-2.5.22ubuntu1/t/debs/control-files-weird-files/special-file0000664000000000000000000000004112077065714022110 0ustar This is an unknown control file. lintian-2.5.22ubuntu1/t/debs/control-files-weird-files/desc0000664000000000000000000000030212077065714020471 0ustar Testname: control-files-weird-files Sequence: 6000 Version: 1.0 Description: Test for bad owner of control files Test-For: not-allowed-control-file control-file-is-empty unknown-control-file lintian-2.5.22ubuntu1/t/debs/control-files-weird-files/control0000664000000000000000000000066712077065714021251 0ustar Package: control-files-weird-files Version: 1.0 Architecture: all Maintainer: Debian Lintian Maintainers Section: devel Priority: extra Description: test for bad owner of control files This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/debs/control-files-weird-files/isinstallable0000664000000000000000000000006712077065714022411 0ustar This is a udeb file and should be in a binary package. lintian-2.5.22ubuntu1/t/debs/fields-general-missing/0000775000000000000000000000000012310413206017154 5ustar lintian-2.5.22ubuntu1/t/debs/fields-general-missing/root/0000775000000000000000000000000012077065714020160 5ustar lintian-2.5.22ubuntu1/t/debs/fields-general-missing/root/usr/0000775000000000000000000000000012077065714020771 5ustar lintian-2.5.22ubuntu1/t/debs/fields-general-missing/root/usr/lib/0000775000000000000000000000000012077065714021537 5ustar lintian-2.5.22ubuntu1/t/debs/fields-general-missing/root/usr/lib/lintian/0000775000000000000000000000000012077065714023175 5ustar lintian-2.5.22ubuntu1/t/debs/fields-general-missing/root/usr/lib/lintian/some-file0000664000000000000000000000005712077065714025002 0ustar Hi, I could totally be architecture dependent. lintian-2.5.22ubuntu1/t/debs/fields-general-missing/Makefile.in0000664000000000000000000000144112310413206021221 0ustar name = {$source} all: fix-perm create-deb --package-name $(name) --package-version {$version} -o $(name).deb control clean: rm -f *.tar.gz *.deb md5sums debian-binary rm -rf root/ # If root/ exists, it is because the test ships with it. Since the # test may have been checked out (or unpacked) with a "whack umask" # (anything but 0022), we reset the permissions to a reasonable # default. # # The contents of the deb usually is not what is tested by this suite # (t/tests is preferred for this), so the below merely handles the # AVERAGE CASE. Tests that need special permissions (anything but # 0644 for files and 0755 for dirs) require manually setting the # permissions. fix-perm: [ ! -d root/ ] || (find root/ -type d | xargs chmod 0755 && \ find root/ -type f | xargs chmod 0644) lintian-2.5.22ubuntu1/t/debs/fields-general-missing/tags0000664000000000000000000000026712077065714020063 0ustar E: fields-general-missing: no-architecture-field E: fields-general-missing: no-maintainer-field E: fields-general-missing: no-package-name E: fields-general-missing: no-version-field lintian-2.5.22ubuntu1/t/debs/fields-general-missing/desc0000664000000000000000000000031112077065714020031 0ustar Testname: fields-general-missing Sequence: 6000 Version: 1.0-1 Description: Test for missing control fields Test-For: no-architecture-field no-maintainer-field no-package-name no-version-field lintian-2.5.22ubuntu1/t/debs/fields-general-missing/control0000664000000000000000000000050212077065714020575 0ustar Section: devel Priority: extra Depends: some-pkg Description: test for bad source package name This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/debs/deb-format-errors-tar/0000775000000000000000000000000012310413144016743 5ustar lintian-2.5.22ubuntu1/t/debs/deb-format-errors-tar/Makefile0000664000000000000000000000076212310413144020410 0ustar name = deb-format-errors-tar all: mkdir -p usr/share/doc/$(name) install -m0644 copyright changelog usr/share/doc/$(name) gzip -9 usr/share/doc/$(name)/changelog tar --xform 's,^,/,' -czf data.tar.gz usr/ md5sum usr/share/doc/$(name)/* > md5sums chmod 644 control md5sums chown 0:0 control md5sums echo '2.0' > debian-binary tar czf control.tar.gz control md5sums ar rc $(name).deb \ debian-binary control.tar.gz data.tar.gz clean: rm -f *.tar.gz *.deb md5sums debian-binary lintian-2.5.22ubuntu1/t/debs/deb-format-errors-tar/tags0000664000000000000000000000025412310413144017625 0ustar E: deb-format-errors-tar: tar-errors-from-data Removing leading `/' from member names E: deb-format-errors-tar: tar-errors-from-data Removing leading `/' from member names lintian-2.5.22ubuntu1/t/debs/deb-format-errors-tar/desc0000664000000000000000000000021712310413144017604 0ustar Testname: deb-format-errors-tar Sequence: 6000 Version: 1.0 Description: Test package emitting errors from tar Test-For: tar-errors-from-data lintian-2.5.22ubuntu1/t/debs/fields-multi-arch-illegal/0000775000000000000000000000000012077065714017565 5ustar lintian-2.5.22ubuntu1/t/debs/fields-multi-arch-illegal/tags0000664000000000000000000000010012077065714020435 0ustar E: fields-multi-arch-illegal: illegal-multi-arch-value all same lintian-2.5.22ubuntu1/t/debs/fields-multi-arch-illegal/desc0000664000000000000000000000023312077065714020424 0ustar Testname: fields-multi-arch-illegal Sequence: 6000 Version: 1.0 Description: Test package with illegal Multi-arch value Test-For: illegal-multi-arch-value lintian-2.5.22ubuntu1/t/debs/fields-multi-arch-illegal/control0000664000000000000000000000071712077065714021175 0ustar Package: fields-multi-arch-illegal Version: 1.0 Architecture: all Multi-arch: same Maintainer: Debian Lintian Maintainers Section: devel Priority: extra Description: Test package with illegal Multi-arch value This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/debs/fields-general-bad/0000775000000000000000000000000012077065714016252 5ustar lintian-2.5.22ubuntu1/t/debs/fields-general-bad/root/0000775000000000000000000000000012077065714017235 5ustar lintian-2.5.22ubuntu1/t/debs/fields-general-bad/root/usr/0000775000000000000000000000000012077065714020046 5ustar lintian-2.5.22ubuntu1/t/debs/fields-general-bad/root/usr/lib/0000775000000000000000000000000012077065714020614 5ustar lintian-2.5.22ubuntu1/t/debs/fields-general-bad/root/usr/lib/lintian/0000775000000000000000000000000012077065714022252 5ustar lintian-2.5.22ubuntu1/t/debs/fields-general-bad/root/usr/lib/lintian/some-file0000664000000000000000000000005712077065714024057 0ustar Hi, I could totally be architecture dependent. lintian-2.5.22ubuntu1/t/debs/fields-general-bad/tags0000664000000000000000000000113412077065714017132 0ustar E: fields-general-BAD?: alternates-not-allowed conflicts E: fields-general-BAD?: bad-package-name E: fields-general-BAD?: bad-relation depends: another-package (>< 1.0) E: fields-general-BAD?: bad-version-in-relation depends: other-package (>= 1.0?) E: fields-general-BAD?: bad-version-number 1.0? E: fields-general-BAD?: multiline-field priority E: fields-general-BAD?: package-not-lowercase E: fields-general-BAD?: too-many-architectures E: fields-general-BAD?: unknown-priority is weird I: fields-general-BAD?: unknown-field-in-control unknown-field W: fields-general-BAD?: unknown-architecture weird lintian-2.5.22ubuntu1/t/debs/fields-general-bad/desc0000664000000000000000000000054012077065714017112 0ustar Testname: fields-general-bad Sequence: 6000 Version: 1.0 Description: Test for package with control bad values Test-For: alternates-not-allowed bad-package-name bad-relation bad-version-in-relation bad-version-number multiline-field package-not-lowercase too-many-architectures unknown-architecture unknown-field-in-control unknown-priority lintian-2.5.22ubuntu1/t/debs/fields-general-bad/control0000664000000000000000000000112112077065714017650 0ustar Package: fields-general-BAD? Source: fields-general-bad Version: 1.0? Architecture: weird i386 amd64 Maintainer: Debian Lintian Maintainers Section: devel Priority: is weird Unknown-Field: Hallo World Depends: other-package (>= 1.0?), another-package (>< 1.0) Conflicts: somepkg | anotherpkg Description: test for bad source package name This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/debs/fields-wildcard-binary/0000775000000000000000000000000012077065714017164 5ustar lintian-2.5.22ubuntu1/t/debs/fields-wildcard-binary/root/0000775000000000000000000000000012077065714020147 5ustar lintian-2.5.22ubuntu1/t/debs/fields-wildcard-binary/root/usr/0000775000000000000000000000000012077065714020760 5ustar lintian-2.5.22ubuntu1/t/debs/fields-wildcard-binary/root/usr/lib/0000775000000000000000000000000012077065714021526 5ustar lintian-2.5.22ubuntu1/t/debs/fields-wildcard-binary/root/usr/lib/lintian/0000775000000000000000000000000012077065714023164 5ustar lintian-2.5.22ubuntu1/t/debs/fields-wildcard-binary/root/usr/lib/lintian/some-file0000664000000000000000000000005712077065714024771 0ustar Hi, I could totally be architecture dependent. lintian-2.5.22ubuntu1/t/debs/fields-wildcard-binary/tags0000664000000000000000000000010412077065714020040 0ustar E: fields-wildcard-binary: arch-wildcard-in-binary-package any-i386 lintian-2.5.22ubuntu1/t/debs/fields-wildcard-binary/desc0000664000000000000000000000024612077065714020027 0ustar Testname: fields-wildcard-binary Sequence: 6000 Version: 1.0 Description: Test for architecture wildcard in binary package Test-For: arch-wildcard-in-binary-package lintian-2.5.22ubuntu1/t/debs/fields-wildcard-binary/control0000664000000000000000000000070612077065714020572 0ustar Package: fields-wildcard-binary Version: 1.0 Architecture: any-i386 Maintainer: Debian Lintian Maintainers Section: devel Priority: extra Description: Test for architecture wildcard in binary package This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/debs/fields-malformed-source/0000775000000000000000000000000012077065714017355 5ustar lintian-2.5.22ubuntu1/t/debs/fields-malformed-source/tags0000664000000000000000000000007512077065714020240 0ustar E: fields-malformed-source: source-field-malformed Malformed lintian-2.5.22ubuntu1/t/debs/fields-malformed-source/desc0000664000000000000000000000021512077065714020214 0ustar Testname: fields-malformed-source Sequence: 6000 Version: 1.0 Description: Test for bad source package name Test-For: source-field-malformed lintian-2.5.22ubuntu1/t/debs/fields-malformed-source/control0000664000000000000000000000070412077065714020761 0ustar Package: fields-malformed-source Source: Malformed Version: 1.0 Architecture: all Maintainer: Debian Lintian Maintainers Section: devel Priority: extra Description: test for bad source package name This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/debs/deb-format-wrong-order/0000775000000000000000000000000012310413206017107 5ustar lintian-2.5.22ubuntu1/t/debs/deb-format-wrong-order/Makefile0000664000000000000000000000110312077065714020563 0ustar name = deb-format-wrong-order # Done by hand, create-deb cannot do this and it would # be "too much effort" to make it be able to do it. all: echo '2.0' > debian-binary mkdir -p usr/share/doc/$(name) install -m 0644 copyright changelog usr/share/doc/$(name) gzip -9 usr/share/doc/$(name)/changelog tar cfz data.tar.gz usr chown 0:0 control chmod 644 control md5sum usr/share/doc/$(name)/* > md5sums tar cfz control.tar.gz control md5sums ar rc $(name).deb \ debian-binary data.tar.gz control.tar.gz clean: rm -f *.tar.gz *.deb md5sums debian-binary rm -rf usr lintian-2.5.22ubuntu1/t/debs/deb-format-wrong-order/tags0000664000000000000000000000015112310413206017765 0ustar E: deb-format-wrong-order: malformed-deb-archive second (official) member data.tar.gz not control.tar.gz lintian-2.5.22ubuntu1/t/debs/deb-format-wrong-order/desc0000664000000000000000000000041312310413206017746 0ustar Testname: deb-format-wrong-order Sequence: 6000 Version: 1.0 Description: Test package for an ar archive in the wrong order Test-For: malformed-deb-archive # dpkg 1.17.2 Do not allow deb packages with control # and data members swapped Test-Depends: dpkg (<< 1.17.2) lintian-2.5.22ubuntu1/t/debs/deb-format-wrong-order/control0000664000000000000000000000070212077065714020532 0ustar Package: deb-format-wrong-order Version: 1.0 Architecture: all Maintainer: Debian Lintian Maintainers Section: devel Priority: extra Description: Test package for an ar archive in the wrong order This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/debs/fields-obsolete-relation/0000775000000000000000000000000012077065714017540 5ustar lintian-2.5.22ubuntu1/t/debs/fields-obsolete-relation/tags0000664000000000000000000000024312077065714020420 0ustar I: fields-obsolete-relation: conflicts-with-version libsqlite3-0 (< 3.6.12) W: fields-obsolete-relation: obsolete-relation-form conflicts: libsqlite3-0 (< 3.6.12) lintian-2.5.22ubuntu1/t/debs/fields-obsolete-relation/desc0000664000000000000000000000024312077065714020400 0ustar Testname: fields-obsolete-relation Sequence: 6000 Version: 1.0 Description: Test for obsolete relation syntax in a binary package Test-For: obsolete-relation-form lintian-2.5.22ubuntu1/t/debs/fields-obsolete-relation/control0000664000000000000000000000075312077065714021150 0ustar Package: fields-obsolete-relation Version: 1.0 Architecture: all Maintainer: Debian Lintian Maintainers Section: devel Priority: extra Conflicts: libsqlite3-0 (< 3.6.12) Description: Test for obsolete relation syntax in a binary package This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/debs/README0000664000000000000000000000765712077065714013544 0ustar WRITING A TEST ============== This test framework is intended to test low-level Lintian checks and behavior with very malformed packages. It provides a mechanism to manually construct pathological deb files and run lintian on them. It should only be used when this degree of low-level control is necessary. For other, more conventional cases, use the tests framework. A test in this framework is a directory containing (at least) a tags file and a Makefile. The directory may contain other files as needed for that test. The tags file ------------- The expected output of Lintian when run on the package, including info and experimental tags. The Lintian output will be lexicographically sorted before comparing it with tags. This file may be empty if the test case should produce no Lintian output. The Makefile ------------ Makefile must be a GNU makefile which, when invoked via make (using the default target), creates a .deb file in the current directory. must match the directory name. This makefile may assume that the current working directory when it is invoked is the directory in which it's located (or a copy of it). It can take any action needed to generate the deb file, such as running dpkg-deb or ar. The Makefile does not have to clean up after itself. It can assume that the directory is deleted and recreated between test runs. The packages are constructed using fakeroot, so the Makefile doesn't need to worry about file ownership when creating the files as long as all files included in the archive are newly created or chowned before creating the deb. Note that t/helper/bin/create-deb can handle most of the common deb creation cases; the Makefile can assume this script is in PATH. The desc file ------------- Please refer to t/tests/README for the full description of the desc file. Skipping tests -------------- To mark a test to be skipped, create a file named "skip" in the test directory containing the reason for why this test should be skipped. This should be used for tests for work that hasn't been finished or tests that must be temporarily skipped due to bugs in other packages. TEST NAMING CONVENTIONS ======================= Each test name should begin with the name of the part tested, e.g. -... -... lintian-... lintian-info-... Use generic- as a prefix for test cases that don't cover a specific portion of Lintian but instead test Lintian's behavior on a useful special case of package (such as a minimal package). RUNNING THE TEST SUITE ====================== The complete test suite will be run with debian/rules runtests, but this can take quite a lot of time. Normally this is only necessary after significant structural changes or before a release as a final check. To run a specific test case, run: debian/rules runtests onlyrun= It's often more useful to run every test that is relevant to a particular tag. To do that, run: debian/rules check-tag tag= This will run all tests that list that tag in the tags file. TEST WRITING TIPS ================= Please keep each test case focused. One of the problems that developed with the old test suite is that each test was serving many separate purposes and testing large swaths of Lintian, which made it difficult to know what could be changed and what would destroy some other useful test. Test cases should only test a set of closely related tags and new tests should be added for new issues that aren't part of that closely-related set. Test cases should be as Lintian-clean as possible except for the tags that they're testing for. The template is intended to help with this. It generates a Lintian-clean basic package for you to start with. You should override only the minimal required to trigger your test, and try to fix any unrelated problems. Sometimes this won't be possible and the only way to trigger a tag is to also trigger another tag, and that's fine, but it shouldn't be the normal case. lintian-2.5.22ubuntu1/t/debs/control-files-traversal/0000775000000000000000000000000012077065714017426 5ustar lintian-2.5.22ubuntu1/t/debs/control-files-traversal/Makefile0000664000000000000000000000026012077065714021064 0ustar name = control-files-traversal all: ln -s ../md5sums conffiles create-deb -o $(name).deb conffiles control clean: rm -f *.tar.gz *.deb md5sums debian-binary rm -rf root/ lintian-2.5.22ubuntu1/t/debs/control-files-traversal/tags0000664000000000000000000000010112077065714020277 0ustar E: control-files-traversal: control-file-is-not-a-file conffiles lintian-2.5.22ubuntu1/t/debs/control-files-traversal/desc0000664000000000000000000000030412077065714020264 0ustar Testname: control-files-traversal Sequence: 6000 Version: 1.0 Description: Test for bad owner of control files Options: -C conffiles,md5sums,control-files -IE Test-For: control-file-is-not-a-file lintian-2.5.22ubuntu1/t/debs/description-synopsis-spaces/0000775000000000000000000000000012077065714020331 5ustar lintian-2.5.22ubuntu1/t/debs/description-synopsis-spaces/tags0000664000000000000000000000000012077065714021200 0ustar lintian-2.5.22ubuntu1/t/debs/description-synopsis-spaces/desc0000664000000000000000000000017212077065714021172 0ustar Testname: description-synopsis-spaces Sequence: 6000 Version: 1.0 Description: Test for the synopsis starting with spaces lintian-2.5.22ubuntu1/t/debs/description-synopsis-spaces/control0000664000000000000000000000066512077065714021743 0ustar Package: description-synopsis-spaces Version: 1.0 Architecture: all Maintainer: Debian Lintian Maintainers Section: devel Priority: extra Description: synopsis starts with spaces This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/debs/control-files-bad/0000775000000000000000000000000012077065714016151 5ustar lintian-2.5.22ubuntu1/t/debs/control-files-bad/Makefile0000664000000000000000000000137012077065714017612 0ustar name = control-files-bad all: mkdir -p root/usr/share/doc/$(name) install -m0644 copyright changelog root/usr/share/doc/$(name) gzip -9 root/usr/share/doc/$(name)/changelog chown 0:0 control chmod 644 control cd root && md5sum usr/share/doc/$(name)/* > ../md5sums chmod 755 md5sums # create a "special control.tar.gz" ; create-deb will # use it, instead of creating its own. tar czf control.tar.gz --owner=nobody control md5sums # --no-fix-perm and --no-md5sums are not strictly needed # but the former is to make it explicit and the latter # prevents it from re-generating an unused md5sums file create-deb -o $(name).deb --no-fix-perm --no-md5sums \ --root root/ clean: rm -f *.tar.gz *.deb md5sums debian-binary rm -rf root/ lintian-2.5.22ubuntu1/t/debs/control-files-bad/tags0000664000000000000000000000023612077065714017033 0ustar E: control-files-bad: control-file-has-bad-owner md5sums nobody/root != root/root E: control-files-bad: control-file-has-bad-permissions md5sums 0755 != 0644 lintian-2.5.22ubuntu1/t/debs/control-files-bad/desc0000664000000000000000000000026112077065714017011 0ustar Testname: control-files-bad Sequence: 6000 Version: 1.0 Description: Test for bad owner of control files Test-For: control-file-has-bad-owner control-file-has-bad-permissions lintian-2.5.22ubuntu1/t/debs/control-files-bad/control0000664000000000000000000000065712077065714017564 0ustar Package: control-files-bad Version: 1.0 Architecture: all Maintainer: Debian Lintian Maintainers Section: devel Priority: extra Description: test for bad owner of control files This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/debs/deb-format-extra-member/0000775000000000000000000000000012310413206017232 5ustar lintian-2.5.22ubuntu1/t/debs/deb-format-extra-member/Makefile0000664000000000000000000000036212077065714020714 0ustar name = deb-format-extra-member all: create-deb -o $(name).deb control # add the extra element in the end echo 'foo' > extra-stuff ar q $(name).deb extra-stuff clean: rm -f *.tar.gz *.deb md5sums debian-binary extra-stuff rm -rf root lintian-2.5.22ubuntu1/t/debs/deb-format-extra-member/tags0000664000000000000000000000015012310413206020107 0ustar E: deb-format-extra-member: misplaced-extra-member-in-deb extra-stuff (unexpected member at position 3) lintian-2.5.22ubuntu1/t/debs/deb-format-extra-member/desc0000664000000000000000000000024512310413206020074 0ustar Testname: deb-format-extra-member Sequence: 6000 Version: 1.0 Description: Test package for an ar archive in the wrong order Test-For: misplaced-extra-member-in-deb lintian-2.5.22ubuntu1/t/debs/deb-format-extra-member/control0000664000000000000000000000070312077065714020656 0ustar Package: deb-format-extra-member Version: 1.0 Architecture: all Maintainer: Debian Lintian Maintainers Section: devel Priority: extra Description: Test package for an ar archive in the wrong order This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/debs/unpack-numerical-owner/0000775000000000000000000000000012077065714017233 5ustar lintian-2.5.22ubuntu1/t/debs/unpack-numerical-owner/Makefile0000664000000000000000000000025612077065714020676 0ustar name = copyright-file-foreign-package all: create-deb -o $(name).deb --tar-opts='--numeric-owner' \ control clean: rm -f *.tar.gz *.deb debian-binary rm -rf root/ lintian-2.5.22ubuntu1/t/debs/unpack-numerical-owner/tags0000664000000000000000000000000012077065714020102 0ustar lintian-2.5.22ubuntu1/t/debs/unpack-numerical-owner/desc0000664000000000000000000000027012077065714020073 0ustar Testname: unpack-numerical-owner Sequence: 6000 Version: 1.0 Description: Test for tarballs with numerical owner only Test-Against: bad-owner-for-doc-file control-file-has-bad-owner lintian-2.5.22ubuntu1/t/changes/0000775000000000000000000000000012310413206013317 5ustar lintian-2.5.22ubuntu1/t/changes/changes-file-size-checksum-mismatch.desc0000664000000000000000000000031712077065714023101 0ustar Testname: changes-file-size-checksum-mismatch Sequence: 6000 Version: 1.0 Description: Test for file size and checksums check Test-For: checksum-mismatch-in-changes-file file-size-mismatch-in-changes-file lintian-2.5.22ubuntu1/t/changes/changes-file-bad-section.tags0000664000000000000000000000014712077065714020735 0ustar E: changes-file-bad-section changes: bad-section-in-changes-file changes-file-bad-section.log non-free lintian-2.5.22ubuntu1/t/changes/changed-by-localhost.desc0000664000000000000000000000024212077065714020165 0ustar Testname: changed-by-localhost Sequence: 6000 Version: 1.0 Description: Test Changed-By field with localhost address Test-For: changed-by-address-is-on-localhost lintian-2.5.22ubuntu1/t/changes/changes-missing-fields.desc0000664000000000000000000000026012077065714020521 0ustar Testname: changes-missing-fields Sequence: 6000 Version: 1.0 Description: Test for changes missing fields Test-For: no-description-in-changes-file no-urgency-in-changes-file lintian-2.5.22ubuntu1/t/changes/changes-bad-ubuntu-distribution.changes.in0000664000000000000000000000034112310413206023445 0ustar Format: 1.8 Date: {$date} Source: {$source} Binary: {$source} Architecture: source all Version: {$version} Distribution: wispy Urgency: low Maintainer: {$author} Changed-By: {$author} Description: {$source} - {$description} lintian-2.5.22ubuntu1/t/changes/changed-by-no-name.desc0000664000000000000000000000022112077065714017524 0ustar Testname: changed-by-no-name Sequence: 6000 Version: 1.0 Description: Test Changed-By field with missing name Test-For: changed-by-name-missing lintian-2.5.22ubuntu1/t/changes/changes-file-size-checksum-mismatch.tags0000664000000000000000000000100112077065714023110 0ustar E: changes-file-size-checksum-mismatch changes: checksum-mismatch-in-changes-file md5 changes-file-size-checksum-mismatch.log E: changes-file-size-checksum-mismatch changes: checksum-mismatch-in-changes-file sha1 changes-file-size-checksum-mismatch.log E: changes-file-size-checksum-mismatch changes: checksum-mismatch-in-changes-file sha256 changes-file-size-checksum-mismatch.log E: changes-file-size-checksum-mismatch changes: file-size-mismatch-in-changes-file changes-file-size-checksum-mismatch.log 0 != 12 lintian-2.5.22ubuntu1/t/changes/changes-directory-traversal.desc0000664000000000000000000000017612077065714021617 0ustar Testname: changes-directory-traversal Sequence: 6000 Version: 1.0 Description: Test directory traversal when processing Files lintian-2.5.22ubuntu1/t/changes/changed-by-malformed.tags0000664000000000000000000000023012077065714020160 0ustar E: changed-by-malformed changes: changed-by-address-malformed Foo Baz W: changed-by-malformed changes: changed-by-address-looks-weird Foo Baz lintian-2.5.22ubuntu1/t/changes/changed-by-localhost.changes.in0000664000000000000000000000040212310413206021241 0ustar Format: 1.8 Date: {$date} Source: {$source} Binary: {$source} Architecture: source all Version: {$version} Distribution: unstable Urgency: low Maintainer: {$author} Changed-By: Someone Description: {$source} - {$description} lintian-2.5.22ubuntu1/t/changes/changes-file-bad-section.desc0000664000000000000000000000022712077065714020714 0ustar Testname: changes-file-bad-section Sequence: 6000 Version: 1.0 Description: Test for bad section in changes file Test-For: bad-section-in-changes-file lintian-2.5.22ubuntu1/t/changes/changed-by-no-name.changes.in0000664000000000000000000000035612310413206020613 0ustar Format: 1.8 Date: {$date} Source: {$source} Binary: {$source} Architecture: source all Version: {$version} Distribution: unstable Urgency: low Maintainer: {$author} Changed-By: someone@example.com Description: {$source} - {$description} lintian-2.5.22ubuntu1/t/changes/changes-file-bad-section.log0000664000000000000000000000001412077065714020551 0ustar Hallo World lintian-2.5.22ubuntu1/t/changes/changes-missing-fields.tags0000664000000000000000000000020012077065714020533 0ustar E: changes-missing-fields changes: no-description-in-changes-file W: changes-missing-fields changes: no-urgency-in-changes-file lintian-2.5.22ubuntu1/t/changes/changes-directory-traversal.changes.in0000664000000000000000000000045712310413206022677 0ustar Format: 1.8 Date: {$date} Source: {$source} Binary: {$source} Architecture: source all Version: {$version} Distribution: unstable Urgency: low Maintainer: {$author} Changed-By: {$author} Description: {$source} - {$description} Files: 12345678901234567890123456789012 123 admin optional ../foo-bar-moo lintian-2.5.22ubuntu1/t/changes/changed-by-malformed.desc0000664000000000000000000000026012077065714020143 0ustar Testname: changed-by-malformed Sequence: 6000 Version: 1.0 Description: Test malformed Changed-By field Test-For: changed-by-address-malformed changed-by-address-looks-weird lintian-2.5.22ubuntu1/t/changes/changes-bad-ubuntu-distribution.tags0000664000000000000000000000012312077065714022405 0ustar E: changes-bad-ubuntu-distribution changes: bad-distribution-in-changes-file wispy lintian-2.5.22ubuntu1/t/changes/changes-missing-format.changes.in0000664000000000000000000000033012310413206021617 0ustar Date: {$date} Source: {$source} Binary: {$source} Architecture: source all Version: {$version} Distribution: unstable Urgency: low Maintainer: {$author} Changed-By: {$author} Description: {$source} - {$description} lintian-2.5.22ubuntu1/t/changes/README0000664000000000000000000000635112077065714014225 0ustar WRITING A TEST ============== A test in this framework consists of three components: a .desc file with basic metadata, a .changes (or a .changes.in) file on which lintian is run and a .tags file giving the (sorted) expected output of lintian when run on that .changes file. All files should have the same name prior to the extension. If the .changes(.in) file references additional files, they should also have the same name up to the extension and shouldn't end in .desc, .changes(.in) or .tags. This framework should be used to test the checks performed by the lintian front-end itself on the .changes file. Do not include .deb, .dsc, .orig.tar.gz, .tar.gz, or .diff.gz files in this test framework. To build a complete package, the tests framework is more appropriate. If the test provides a .changes file, this will be tested as is. Otherwise, if it provides a .changes.in, the .in file will be considered a template and the fields from the .desc file can be expanded in the .changes file. This is particularly useful, since the test-runner provides values for a lot of common variables. This feature is (and the variables) inherited from the "t/tests" framework. The .desc file is described in detail in "t/tests/README". Please note that there is no "skeleton" for this framework, since it does not make sense to have them for this suite. :) TEST NAMING CONVENTIONS ======================= Try to avoid naming conflicts between checks in this directory and checks in the other frameworks. For tests to trigger certain tags, please use the check name as a prefix. Otherwise, there is no strict naming convention here since there are few enough tags to check that require a custom .changes file that there shouldn't be too many tests in this framework. RUNNING THE TEST SUITE ====================== The complete test suite will be run with debian/rules runtests, but this can take quite a lot of time. Normally this is only necessary after significant structural changes or before a release as a final check. To run a specific test case, run: debian/rules runtests onlyrun= Give only the test name, not the full path. It's often more useful to run every test that is relevant to a particular tag. To do that, run: debian/rules check-tag tag= This will run all tests that list that tag in the .tags file. TEST WRITING TIPS ================= Please keep each test case focused. One of the problems that developed with the old test suite is that each test was serving many separate purposes and testing large swaths of Lintian, which made it difficult to know what could be changed and what would destroy some other useful test. Test cases should only test a set of closely related tags and new tests should be added for new issues that aren't part of that closely-related set. Test cases should be as Lintian-clean as possible except for the tags that they're testing for. The template is intended to help with this. It generates a Lintian-clean basic package for you to start with. You should override only the minimal required to trigger your test, and try to fix any unrelated problems. Sometimes this won't be possible and the only way to trigger a tag is to also trigger another tag, and that's fine, but it shouldn't be the normal case. lintian-2.5.22ubuntu1/t/changes/changes-directory-traversal.tags0000664000000000000000000000000012077065714021621 0ustar lintian-2.5.22ubuntu1/t/changes/changes-file-size-checksum-mismatch.log0000664000000000000000000000001412077065714022736 0ustar Hallo World lintian-2.5.22ubuntu1/t/changes/changes-missing-format.desc0000664000000000000000000000021112077065714020537 0ustar Testname: changes-missing-format Sequence: 6000 Version: 1.0 Description: Test for missing format field Test-For: malformed-changes-file lintian-2.5.22ubuntu1/t/changes/changes-file-size-checksum-mismatch.changes.in0000664000000000000000000000073212310413206024160 0ustar Format: 1.8 Date: {$date} Source: {$source} Binary: {$source} Architecture: source all Version: {$version} Distribution: unstable Urgency: low Maintainer: {$author} Changed-By: {$author} Files: d41d8cd98f00b204e9800998ecf8427e 0 devel optional {$source}.log Checksums-Sha1: da39a3ee5e6b4b0d3255bfef95601890afd80709 0 {$source}.log Checksums-Sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 0 {$source}.log Description: {$source} - {$description} lintian-2.5.22ubuntu1/t/changes/changed-by-malformed.changes.in0000664000000000000000000000034712310413206021227 0ustar Format: 1.8 Date: {$date} Source: {$source} Binary: {$source} Architecture: source all Version: {$version} Distribution: unstable Urgency: low Maintainer: {$author} Changed-By: Foo Baz Description: {$source} - {$description} lintian-2.5.22ubuntu1/t/changes/changes-missing-fields.changes.in0000664000000000000000000000025612310413206021604 0ustar Format: 1.8 Date: {$date} Source: {$source} Binary: {$source} Architecture: source all Version: {$version} Distribution: unstable Maintainer: {$author} Changed-By: {$author} lintian-2.5.22ubuntu1/t/changes/changed-by-no-name.tags0000664000000000000000000000011312077065714017544 0ustar E: changed-by-no-name changes: changed-by-name-missing someone@example.com lintian-2.5.22ubuntu1/t/changes/changes-file-bad-section.changes.in0000664000000000000000000000074012310413206021772 0ustar Format: 1.8 Date: {$date} Source: {$source} Binary: {$source} Architecture: source all Version: {$version} Distribution: unstable Urgency: low Maintainer: {$author} Changed-By: {$author} Files: 8de2b87704ef0a11144b57d243db88ec 12 non-free optional {$source}.log Checksums-Sha1: c54c65218154f15c32ca252946786e0ad09aa99b 12 {$source}.log Checksums-Sha256: e6c1396639c0b79bebc94e4448cfe2700b871d45d0d38d98df6ee9da3f09d35c 12 {$source}.log Description: {$source} - {$description} lintian-2.5.22ubuntu1/t/changes/changes-bad-ubuntu-distribution.desc0000664000000000000000000000030112077065714022363 0ustar Testname: changes-bad-ubuntu-distribution Sequence: 6000 Version: 1.0+ubuntu2 Description: Test for invalid Ubuntu distribution Profile: ubuntu/main Test-For: bad-distribution-in-changes-file lintian-2.5.22ubuntu1/t/changes/changes-missing-format.tags0000664000000000000000000000007212077065714020564 0ustar E: changes-missing-format changes: malformed-changes-file lintian-2.5.22ubuntu1/t/changes/changed-by-localhost.tags0000664000000000000000000000015412077065714020207 0ustar E: changed-by-localhost changes: changed-by-address-is-on-localhost Someone lintian-2.5.22ubuntu1/t/source/0000775000000000000000000000000012310413144013210 5ustar lintian-2.5.22ubuntu1/t/source/unpack-srcpkg-dot-subdir/0000775000000000000000000000000012310413206020031 5ustar lintian-2.5.22ubuntu1/t/source/unpack-srcpkg-dot-subdir/Makefile0000664000000000000000000000103212310413206021465 0ustar name = unpack-srcpkg-dot-subdir all: mkdir -p $(name) echo 'Some upstream README' > $(name)/README echo '/* some C program */' > $(name)/foo.c echo '/* some header */' > $(name)/foo.h tar -c -z -f $(name)_1.0.orig.tar.gz ./$(name) mkdir -p $(name)/debian cp changelog copyright control rules $(name)/debian/ echo 7 > $(name)/debian/compat echo > $(name)/debian/watch mkdir $(name)/debian/source echo 1.0 > $(name)/debian/source/format dpkg-source -sp -b $(name) clean: rm -rf $(name) rm -f $(name)_1.0* README foo.c foo.h lintian-2.5.22ubuntu1/t/source/unpack-srcpkg-dot-subdir/tags0000664000000000000000000000000012077065714020721 0ustar lintian-2.5.22ubuntu1/t/source/unpack-srcpkg-dot-subdir/desc0000664000000000000000000000022412077065714020711 0ustar Testname: unpack-srcpkg-dot-subdir Sequence: 6000 Version: 1.0-1 Type: non-native Description: Test package for upstream tar files with a ./ prefix lintian-2.5.22ubuntu1/t/source/control-file-syntax-error/0000775000000000000000000000000012310413206020257 5ustar lintian-2.5.22ubuntu1/t/source/control-file-syntax-error/control.in0000664000000000000000000000076312310413206022275 0ustar Source: {$source} Section: devel Priority: optional Maintainer: {$author} Build-Depends: debhelper (>= 7) Standards-Version: {$standards_version} Package: {$source} Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Recommends a-colon, after-the-field, name Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/source/control-file-syntax-error/Makefile0000664000000000000000000000056212310413144021723 0ustar name = control-file-syntax-error dir = $(name)-1 all: mkdir $(dir) mkdir $(dir)/debian cp changelog copyright control rules $(dir)/debian/ echo 7 > $(dir)/debian/compat mkdir $(dir)/debian/source echo 1.0 > $(dir)/debian/source/format tar cfz $(name)_1.tar.gz $(dir) subst-dsc $(name)_1.tar.gz < dsc.in > $(name)_1.dsc clean: rm -rf $(dir) rm -f $(name)_1* lintian-2.5.22ubuntu1/t/source/control-file-syntax-error/tags0000664000000000000000000000025112077065714021157 0ustar E: control-file-syntax-error source: syntax-error-in-control-file debian/control: syntax error at line 11: Cannot parse line "Recommends a-colon, after-the-field, name" lintian-2.5.22ubuntu1/t/source/control-file-syntax-error/desc0000664000000000000000000000023312077065714021137 0ustar Testname: control-file-syntax-error Sequence: 6000 Version: 1.0 Description: Test for d/control with syntax errors Test-For: syntax-error-in-control-file lintian-2.5.22ubuntu1/t/source/control-file-syntax-error/dsc.in0000664000000000000000000000065012310413206021361 0ustar Format: 1.0 Source: control-file-syntax-error Binary: control-file-syntax-error Architecture: all Version: 1 Maintainer: Debian Lintian Maintainers Standards-Version: 3.9.5 Build-Depends: debhelper (>= 7) Checksums-Sha1: @SHA1@ @SIZE@ control-file-syntax-error_1.tar.gz Checksums-Sha256: @SHA256@ @SIZE@ control-file-syntax-error_1.tar.gz Files: @MD5@ @SIZE@ control-file-syntax-error_1.tar.gz lintian-2.5.22ubuntu1/t/source/control-field-traversal-2/0000775000000000000000000000000012310413206020110 5ustar lintian-2.5.22ubuntu1/t/source/control-field-traversal-2/Makefile0000664000000000000000000000056212310413144021554 0ustar name = control-field-traversal-2 dir = $(name)-1 all: mkdir $(dir) mkdir $(dir)/debian cp changelog copyright control rules $(dir)/debian/ echo 7 > $(dir)/debian/compat mkdir $(dir)/debian/source echo 1.0 > $(dir)/debian/source/format tar cfz $(name)_1.tar.gz $(dir) subst-dsc $(name)_1.tar.gz < dsc.in > $(name)_1.dsc clean: rm -rf $(dir) rm -f $(name)_1* lintian-2.5.22ubuntu1/t/source/control-field-traversal-2/tags0000664000000000000000000000000012077065714021000 0ustar lintian-2.5.22ubuntu1/t/source/control-field-traversal-2/desc0000664000000000000000000000021312077065714020766 0ustar Testname: control-field-traversal-2 Sequence: 6000 Version: 1.0 Description: Test for directory traversal issues via field names or values lintian-2.5.22ubuntu1/t/source/control-field-traversal-2/dsc.in0000664000000000000000000000065612310413206021220 0ustar Format: 1.0 Source: control-field-traversal-2 Binary: ../../control-field-traversal-2 Architecture: all Version: 1 Maintainer: Debian Lintian Maintainers Standards-Version: 3.9.5 Build-Depends: debhelper (>= 7) Checksums-Sha1: @SHA1@ @SIZE@ control-field-traversal-2_1.tar.gz Checksums-Sha256: @SHA256@ @SIZE@ control-field-traversal-2_1.tar.gz Files: @MD5@ @SIZE@ control-field-traversal-2_1.tar.gz lintian-2.5.22ubuntu1/t/source/unpack-srcpkg-dot-dir/0000775000000000000000000000000012077065714017340 5ustar lintian-2.5.22ubuntu1/t/source/unpack-srcpkg-dot-dir/Makefile0000664000000000000000000000104512077065714021000 0ustar name = unpack-srcpkg-dot-dir dir = $(name)-1.0 all: echo 'Some upstream README' > README echo '/* some C program */' > foo.c echo '/* some header */' > foo.h tar -c -z -f $(name)_1.0.orig.tar.gz ./README ./foo.c ./foo.h mkdir -p $(dir)/debian cp README foo.c foo.h $(dir) cp changelog copyright control rules $(dir)/debian/ echo 7 > $(dir)/debian/compat echo > $(dir)/debian/watch mkdir $(dir)/debian/source echo 1.0 > $(dir)/debian/source/format dpkg-source -sp -b $(dir) clean: rm -rf $(dir) rm -f $(name)_1.0* README foo.c foo.h lintian-2.5.22ubuntu1/t/source/unpack-srcpkg-dot-dir/tags0000664000000000000000000000000012077065714020207 0ustar lintian-2.5.22ubuntu1/t/source/unpack-srcpkg-dot-dir/desc0000664000000000000000000000022112077065714020174 0ustar Testname: unpack-srcpkg-dot-dir Sequence: 6000 Version: 1.0-1 Type: non-native Description: Test package for upstream tar files with a ./ prefix lintian-2.5.22ubuntu1/t/source/magic-architecture-srcpkg-wrong/0000775000000000000000000000000012077065714021411 5ustar lintian-2.5.22ubuntu1/t/source/magic-architecture-srcpkg-wrong/Makefile0000664000000000000000000000073212077065714023053 0ustar name = magic-architecture-srcpkg-wrong dir = $(name)-1.0 all: mkdir $(dir) echo 'Some upstream README' > $(dir)/README tar -c -f $(name)_1.0.orig.tar.gz -z $(dir) mkdir $(dir)/debian cp changelog copyright control rules $(dir)/debian/ echo 7 > $(dir)/debian/compat echo '# foo' > $(dir)/debian/watch mkdir $(dir)/debian/source echo 1.0 > $(dir)/debian/source/format dpkg-source -DArchitecture="amd64 any" -sp -b $(dir) clean: rm -rf $(dir) rm -f $(name)_1.0* lintian-2.5.22ubuntu1/t/source/magic-architecture-srcpkg-wrong/tags0000664000000000000000000000010312077065714022264 0ustar E: magic-architecture-srcpkg-wrong source: magic-arch-in-arch-list lintian-2.5.22ubuntu1/t/source/magic-architecture-srcpkg-wrong/desc0000664000000000000000000000027312077065714022254 0ustar Testname: magic-architecture-srcpkg-wrong Sequence: 6000 Version: 1.0-1 Type: non-native Description: Test package for "any" plus specific arch in .dscs Test-For: magic-arch-in-arch-list lintian-2.5.22ubuntu1/t/source/debian-symlink/0000775000000000000000000000000012310413206016115 5ustar lintian-2.5.22ubuntu1/t/source/debian-symlink/Makefile0000664000000000000000000000055112310413144017557 0ustar name = debian-symlink dir = $(name)-1 all: mkdir $(dir) ln -s . $(dir)/debian cp changelog copyright control rules $(dir)/debian/ echo 7 > $(dir)/debian/compat mkdir $(dir)/debian/source echo 1.0 > $(dir)/debian/source/format tar cfz $(name)_1.tar.gz $(dir) subst-dsc $(name)_1.tar.gz < dsc.in > $(name)_1.dsc clean: rm -rf $(dir) rm -f $(name)_1* lintian-2.5.22ubuntu1/t/source/debian-symlink/tags0000664000000000000000000000000012077065714017005 0ustar lintian-2.5.22ubuntu1/t/source/debian-symlink/desc0000664000000000000000000000014612077065714017000 0ustar Testname: debian-symlink Sequence: 6000 Version: 1.0 Description: Test for debian-dir being a symlink lintian-2.5.22ubuntu1/t/source/debian-symlink/dsc.in0000664000000000000000000000056112310413206017220 0ustar Format: 1.0 Source: debian-symlink Binary: debian-symlink Architecture: all Version: 1 Maintainer: Debian Lintian Maintainers Standards-Version: 3.9.5 Build-Depends: debhelper (>= 7) Checksums-Sha1: @SHA1@ @SIZE@ debian-symlink_1.tar.gz Checksums-Sha256: @SHA256@ @SIZE@ debian-symlink_1.tar.gz Files: @MD5@ @SIZE@ debian-symlink_1.tar.gz lintian-2.5.22ubuntu1/t/source/changelog-file-symlink/0000775000000000000000000000000012310413206017537 5ustar lintian-2.5.22ubuntu1/t/source/changelog-file-symlink/Makefile0000664000000000000000000000073612310413144021206 0ustar name = changelog-file-symlink dir = $(name)-1 all: mkdir $(dir) mkdir $(dir)/debian cp changelog copyright control rules $(dir)/debian/ mv $(dir)/debian/changelog $(dir)/debian/changelog.old ln -s changelog.old $(dir)/debian/changelog echo 7 > $(dir)/debian/compat mkdir $(dir)/debian/source echo '3.0 (quilt)' > $(dir)/debian/source/format tar cfz $(name)_1.tar.gz $(dir) subst-dsc $(name)_1.tar.gz < dsc.in > $(name)_1.dsc clean: rm -rf $(dir) rm -f $(name)_1* lintian-2.5.22ubuntu1/t/source/changelog-file-symlink/tags0000664000000000000000000000006712077065714020444 0ustar W: changelog-file-symlink source: changelog-is-symlink lintian-2.5.22ubuntu1/t/source/changelog-file-symlink/changelog0000664000000000000000000000041112077065714021426 0ustar changelog-file-symlink (1) unstable; urgency=low * Lintian Test Suite. * Test: changelog-file-symlink * Suppress "should close ITP bug" messages. (Closes: #123456) -- Debian Lintian Maintainers Mon, 28 Jun 2010 01:01:01 -0001 lintian-2.5.22ubuntu1/t/source/changelog-file-symlink/desc0000664000000000000000000000021612077065714020420 0ustar Testname: changelog-file-symlink Sequence: 6000 Version: 1.0 Description: Test for d/changelog being a symlink Test-For: changelog-is-symlink lintian-2.5.22ubuntu1/t/source/changelog-file-symlink/dsc.in0000664000000000000000000000063112310413206020640 0ustar Format: 1.0 Source: changelog-file-symlink Binary: changelog-file-symlink Architecture: all Version: 1 Maintainer: Debian Lintian Maintainers Standards-Version: 3.9.5 Build-Depends: debhelper (>= 7) Checksums-Sha1: @SHA1@ @SIZE@ changelog-file-symlink_1.tar.gz Checksums-Sha256: @SHA256@ @SIZE@ changelog-file-symlink_1.tar.gz Files: @MD5@ @SIZE@ changelog-file-symlink_1.tar.gz lintian-2.5.22ubuntu1/t/source/changelog-file-symlink/control0000664000000000000000000000102212077065714021156 0ustar Source: changelog-file-symlink Section: devel Priority: optional Maintainer: Debian Lintian Maintainers Build-Depends: debhelper (>= 7) Standards-Version: 3.9.1 Package: changelog-file-symlink Architecture: all Depends: ${shlibs:Depends}, ${misc:Depends} Description: Test for d/changelog being a symlink This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/source/control-file-duplicate-field/0000775000000000000000000000000012310413206020635 5ustar lintian-2.5.22ubuntu1/t/source/control-file-duplicate-field/control.in0000664000000000000000000000107712077065714022673 0ustar Source: control-file-duplicate-field Section: devel Priority: optional Maintainer: {$author} Build-Depends: debhelper (>= 7) Standards-Version: {$standards_version} Package: control-file-duplicate-field Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: Test for d/control containing duplicate fields This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/source/control-file-duplicate-field/Makefile0000664000000000000000000000056512310413144022304 0ustar name = control-file-duplicate-field dir = $(name)-1 all: mkdir $(dir) mkdir $(dir)/debian cp changelog copyright control rules $(dir)/debian/ echo 7 > $(dir)/debian/compat mkdir $(dir)/debian/source echo 1.0 > $(dir)/debian/source/format tar cfz $(name)_1.tar.gz $(dir) subst-dsc $(name)_1.tar.gz < dsc.in > $(name)_1.dsc clean: rm -rf $(dir) rm -f $(name)_1* lintian-2.5.22ubuntu1/t/source/control-file-duplicate-field/tags0000664000000000000000000000020712077065714021536 0ustar E: control-file-duplicate-field source: syntax-error-in-control-file debian/control: syntax error at line 11: Duplicate field depends. lintian-2.5.22ubuntu1/t/source/control-file-duplicate-field/desc0000664000000000000000000000024612077065714021521 0ustar Testname: control-file-duplicate-field Sequence: 6000 Version: 1.0 Description: Test for d/control containing duplicate fields Test-For: syntax-error-in-control-file lintian-2.5.22ubuntu1/t/source/control-file-duplicate-field/dsc.in0000664000000000000000000000066712310413206021747 0ustar Format: 1.0 Source: control-file-duplicate-field Binary: control-file-duplicate-field Architecture: all Version: 1 Maintainer: Debian Lintian Maintainers Standards-Version: 3.9.5 Build-Depends: debhelper (>= 7) Checksums-Sha1: @SHA1@ @SIZE@ control-file-duplicate-field_1.tar.gz Checksums-Sha256: @SHA256@ @SIZE@ control-file-duplicate-field_1.tar.gz Files: @MD5@ @SIZE@ control-file-duplicate-field_1.tar.gz lintian-2.5.22ubuntu1/t/source/package-version-0/0000775000000000000000000000000012077065714016443 5ustar lintian-2.5.22ubuntu1/t/source/package-version-0/Makefile0000664000000000000000000000045712077065714020111 0ustar name = package-version-0 dir = $(name)-0 all: mkdir $(dir) mkdir $(dir)/debian cp changelog copyright control rules $(dir)/debian/ echo 7 > $(dir)/debian/compat mkdir $(dir)/debian/source echo 1.0 > $(dir)/debian/source/format dpkg-source -sn -b $(dir) clean: rm -rf $(dir) rm -f $(name)_0* lintian-2.5.22ubuntu1/t/source/package-version-0/tags0000664000000000000000000000000012077065714017312 0ustar lintian-2.5.22ubuntu1/t/source/package-version-0/desc0000664000000000000000000000014112077065714017300 0ustar Testname: package-version-0 Sequence: 6000 Version: 0 Description: Test a package with version 0 lintian-2.5.22ubuntu1/t/source/debian-source-dir-unknown-source-format/0000775000000000000000000000000012310413206022764 5ustar lintian-2.5.22ubuntu1/t/source/debian-source-dir-unknown-source-format/Makefile0000664000000000000000000000062312310413144024426 0ustar name = debian-source-dir-unknown-source-format dir = $(name)-1 all: mkdir $(dir) mkdir $(dir)/debian cp changelog copyright control rules $(dir)/debian/ echo 7 > $(dir)/debian/compat mkdir $(dir)/debian/source echo "3.0 (unknown-format)" > $(dir)/debian/source/format tar cfz $(name)_1.tar.gz $(dir) subst-dsc $(name)_1.tar.gz < dsc.in > $(name)_1.dsc clean: rm -rf $(dir) rm -f $(name)_1* lintian-2.5.22ubuntu1/t/source/debian-source-dir-unknown-source-format/tags0000664000000000000000000000013612077065714023666 0ustar E: debian-source-dir-unknown-source-format source: unknown-source-format 3.0 (unknown-format) lintian-2.5.22ubuntu1/t/source/debian-source-dir-unknown-source-format/desc0000664000000000000000000000024012077065714023642 0ustar Testname: debian-source-dir-unknown-source-format Sequence: 6000 Version: 1.0 Description: Test for d/changelog being a symlink Test-For: unknown-source-format lintian-2.5.22ubuntu1/t/source/debian-source-dir-unknown-source-format/dsc.in0000664000000000000000000000075612310413206024075 0ustar Format: 1.0 Source: debian-source-dir-unknown-source-format Binary: debian-source-dir-unknown-source-format Architecture: all Version: 1 Maintainer: Debian Lintian Maintainers Standards-Version: 3.9.5 Build-Depends: debhelper (>= 7) Checksums-Sha1: @SHA1@ @SIZE@ debian-source-dir-unknown-source-format_1.tar.gz Checksums-Sha256: @SHA256@ @SIZE@ debian-source-dir-unknown-source-format_1.tar.gz Files: @MD5@ @SIZE@ debian-source-dir-unknown-source-format_1.tar.gz lintian-2.5.22ubuntu1/t/source/debconf-traversal/0000775000000000000000000000000012310413206016610 5ustar lintian-2.5.22ubuntu1/t/source/debconf-traversal/Makefile0000664000000000000000000000061712310413144020255 0ustar name = debconf-traversal dir = $(name)-1 all: mkdir $(dir) mkdir $(dir)/debian cp changelog copyright control rules $(dir)/debian/ echo 7 > $(dir)/debian/compat mkdir $(dir)/debian/source echo 1.0 > $(dir)/debian/source/format tar cfz $(name)_1.tar.gz $(dir) subst-dsc $(name)_1.tar.gz < dsc.in | \ perl -pe 's/\@NULL\@/\0/g' > $(name)_1.dsc clean: rm -rf $(dir) rm -f $(name)_1* lintian-2.5.22ubuntu1/t/source/debconf-traversal/tags0000664000000000000000000000000012310413144017460 0ustar lintian-2.5.22ubuntu1/t/source/debconf-traversal/desc0000664000000000000000000000024412310413144017452 0ustar Testname: debconf-traversal Sequence: 6000 Version: 1.0 Description: Test for traversal issues via debconf templates Test-Against: syntax-error-in-debconf-template lintian-2.5.22ubuntu1/t/source/debconf-traversal/dsc.in0000664000000000000000000000062112310413206017710 0ustar Format: 1.0 Source: debconf-traversal Binary: ../unpacked/debian/changelog@NULL@ Architecture: all Version: 1 Maintainer: Debian Lintian Maintainers Standards-Version: 3.9.5 Build-Depends: debhelper (>= 7) Checksums-Sha1: @SHA1@ @SIZE@ debconf-traversal_1.tar.gz Checksums-Sha256: @SHA256@ @SIZE@ debconf-traversal_1.tar.gz Files: @MD5@ @SIZE@ debconf-traversal_1.tar.gz lintian-2.5.22ubuntu1/t/source/control-field-traversal-3/0000775000000000000000000000000012310413144020112 5ustar lintian-2.5.22ubuntu1/t/source/control-field-traversal-3/Makefile0000664000000000000000000000056212310413144021555 0ustar name = control-field-traversal-3 dir = $(name)-1 all: mkdir $(dir) mkdir $(dir)/debian cp changelog copyright control rules $(dir)/debian/ echo 7 > $(dir)/debian/compat mkdir $(dir)/debian/source echo 1.0 > $(dir)/debian/source/format tar cfz $(name)_1.tar.gz $(dir) subst-dsc $(name)_1.tar.gz < dsc.in > $(name)_1.dsc clean: rm -rf $(dir) rm -f $(name)_1* lintian-2.5.22ubuntu1/t/source/control-field-traversal-3/tags0000664000000000000000000000011112077065714021004 0ustar warning: tainted source package '.._control-field-traversal-3', skipping lintian-2.5.22ubuntu1/t/source/control-field-traversal-3/desc0000664000000000000000000000021312077065714020767 0ustar Testname: control-field-traversal-3 Sequence: 6000 Version: 1.0 Description: Test for directory traversal issues via field names or values lintian-2.5.22ubuntu1/t/source/control-field-traversal-3/dsc.in0000664000000000000000000000065612077065714021242 0ustar Format: 1.0 Source: ../control-field-traversal-3 Binary: control-field-traversal-3 Architecture: all Version: 1 Maintainer: Debian Lintian Maintainers Standards-Version: 3.9.1 Build-Depends: debhelper (>= 7) Checksums-Sha1: @SHA1@ @SIZE@ control-field-traversal-3_1.tar.gz Checksums-Sha256: @SHA256@ @SIZE@ control-field-traversal-3_1.tar.gz Files: @MD5@ @SIZE@ ../control-field-traversal-3_1.tar.gz lintian-2.5.22ubuntu1/t/source/unpack-srcpkg-xz/0000775000000000000000000000000012077065714016437 5ustar lintian-2.5.22ubuntu1/t/source/unpack-srcpkg-xz/Makefile0000664000000000000000000000076412077065714020106 0ustar name = unpack-srcpkg-xz dir = $(name)-1.0 all: mkdir $(dir) echo 'Some upstream README' > $(dir)/README tar -c -f $(name)_1.0.orig.tar.xz --xz $(dir) mkdir $(dir)/debian cp changelog copyright control rules $(dir)/debian/ echo 7 > $(dir)/debian/compat touch $(dir)/debian/watch mkdir $(dir)/debian/source echo '3.0 (quilt)' > $(dir)/debian/source/format echo 'Information about patching' > $(dir)/debian/README.source dpkg-source -sp -b $(dir) clean: rm -rf $(dir) rm -f $(name)_1.0* lintian-2.5.22ubuntu1/t/source/unpack-srcpkg-xz/tags0000664000000000000000000000000012077065714017306 0ustar lintian-2.5.22ubuntu1/t/source/unpack-srcpkg-xz/desc0000664000000000000000000000020612077065714017276 0ustar Testname: unpack-srcpkg-xz Sequence: 6000 Version: 1.0-1 Type: non-native Description: Test package for xz-compressed source packages lintian-2.5.22ubuntu1/t/source/control-field-traversal-1/0000775000000000000000000000000012310413144020110 5ustar lintian-2.5.22ubuntu1/t/source/control-field-traversal-1/Makefile0000664000000000000000000000056212310413144021553 0ustar name = control-field-traversal-1 dir = $(name)-1 all: mkdir $(dir) mkdir $(dir)/debian cp changelog copyright control rules $(dir)/debian/ echo 7 > $(dir)/debian/compat mkdir $(dir)/debian/source echo 1.0 > $(dir)/debian/source/format tar cfz $(name)_1.tar.gz $(dir) subst-dsc $(name)_1.tar.gz < dsc.in > $(name)_1.dsc clean: rm -rf $(dir) rm -f $(name)_1* lintian-2.5.22ubuntu1/t/source/control-field-traversal-1/tags0000664000000000000000000000011112077065714021002 0ustar warning: tainted source package '.._control-field-traversal-1', skipping lintian-2.5.22ubuntu1/t/source/control-field-traversal-1/desc0000664000000000000000000000021312077065714020765 0ustar Testname: control-field-traversal-1 Sequence: 6000 Version: 1.0 Description: Test for directory traversal issues via field names or values lintian-2.5.22ubuntu1/t/source/control-field-traversal-1/dsc.in0000664000000000000000000000065312077065714021235 0ustar Format: 1.0 Source: ../control-field-traversal-1 Binary: control-field-traversal-1 Architecture: all Version: 1 Maintainer: Debian Lintian Maintainers Standards-Version: 3.9.1 Build-Depends: debhelper (>= 7) Checksums-Sha1: @SHA1@ @SIZE@ control-field-traversal-1_1.tar.gz Checksums-Sha256: @SHA256@ @SIZE@ control-field-traversal-1_1.tar.gz Files: @MD5@ @SIZE@ control-field-traversal-1_1.tar.gz lintian-2.5.22ubuntu1/t/source/README0000664000000000000000000000727112077065714014117 0ustar WRITING A TEST ============== This test framework is intended to test low-level Lintian checks and behavior with manually constructed source packages. It provides a mechanism to manually construct pathological source packages and run lintian on them. It should only be used when this degree of low-level control is necessary. For other, more conventional cases, use the tests framework. A test in this framework is a directory containing (at least) a tags file and a Makefile. The directory may contain other files as needed for that test. The tags file ------------- The expected output of Lintian when run on the package, including info and experimental tags. The Lintian output will be lexicographically sorted before comparing it with tags. This file may be empty if the test case should produce no Lintian output. The Makefile ------------ Makefile must be a GNU makefile which, when invoked via make (using the default target), creates a .dsc file in the current directory and any other files needed to make up a source package. Any .dsc file found in the directory will be checked. must match the directory name. This makefile may assume that the current working directory when it is invoked is the directory in which it's located (or a copy of it). It can take any action needed to generate the deb file, such as running dpkg-source. The Makefile does not have to clean up after itself. It can assume that the directory is deleted and recreated between test runs. The desc file ------------- Please refer to t/tests/README for the full description of the desc file. Skipping tests -------------- To mark a test to be skipped, create a file named "skip" in the test directory containing the reason for why this test should be skipped. This should be used for tests for work that hasn't been finished or tests that must be temporarily skipped due to bugs in other packages. TEST NAMING CONVENTIONS ======================= Each test name should begin with the name of the part tested, e.g. -... -... lintian-... lintian-info-... Use generic- as a prefix for test cases that don't cover a specific portion of Lintian but instead test Lintian's behavior on a useful special case of package (such as a minimal package). RUNNING THE TEST SUITE ====================== The complete test suite will be run with debian/rules runtests, but this can take quite a lot of time. Normally this is only necessary after significant structural changes or before a release as a final check. To run a specific test case, run: debian/rules runtests onlyrun= It's often more useful to run every test that is relevant to a particular tag. To do that, run: debian/rules check-tag tag= This will run all tests that list that tag in the tags file. TEST WRITING TIPS ================= Please keep each test case focused. One of the problems that developed with the old test suite is that each test was serving many separate purposes and testing large swaths of Lintian, which made it difficult to know what could be changed and what would destroy some other useful test. Test cases should only test a set of closely related tags and new tests should be added for new issues that aren't part of that closely-related set. Test cases should be as Lintian-clean as possible except for the tags that they're testing for. The template is intended to help with this. It generates a Lintian-clean basic package for you to start with. You should override only the minimal required to trigger your test, and try to fix any unrelated problems. Sometimes this won't be possible and the only way to trigger a tag is to also trigger another tag, and that's fine, but it shouldn't be the normal case. lintian-2.5.22ubuntu1/t/source/debian-source-dir-traversal-1/0000775000000000000000000000000012310413206020642 5ustar lintian-2.5.22ubuntu1/t/source/debian-source-dir-traversal-1/Makefile0000664000000000000000000000145312310413144022306 0ustar name = debian-source-dir-traversal-1 dir = $(name)-1 all: mkdir $(dir) mkdir $(dir)/debian cp changelog copyright control rules $(dir)/debian/ # prevent patch-system-but-no-source-readme echo "Hallo World" > $(dir)/debian/README.source echo 7 > $(dir)/debian/compat mkdir $(dir)/debian/source echo 1.0 > $(dir)/debian/source/format # link to index file for the lab entry # - NB: This should not trigger source-contains-unsafe-symlink # because the link it self is not unsafe (i.e. it is safe # relative to unpacked, but unsafe relative to debfiles) ln -s ../../index $(dir)/debian/source/git-patches mkdir $(dir)/debian/patches touch $(dir)/debian/patches/series tar cfz $(name)_1.tar.gz $(dir) subst-dsc $(name)_1.tar.gz < dsc.in > $(name)_1.dsc clean: rm -rf $(dir) rm -f $(name)_1* lintian-2.5.22ubuntu1/t/source/debian-source-dir-traversal-1/tags0000664000000000000000000000000012304620045021515 0ustar lintian-2.5.22ubuntu1/t/source/debian-source-dir-traversal-1/desc0000664000000000000000000000017512077065714021527 0ustar Testname: debian-source-dir-traversal-1 Sequence: 6000 Version: 1.0 Description: Test for information discloure via d/source lintian-2.5.22ubuntu1/t/source/debian-source-dir-traversal-1/dsc.in0000664000000000000000000000070312310413206021743 0ustar Format: 1.0 Source: debian-source-dir-traversal-1 Binary: debian-source-dir-traversal-1 Architecture: all Version: 1 Maintainer: Debian Lintian Maintainers Standards-Version: 3.9.5 Build-Depends: debhelper (>= 7), quilt Checksums-Sha1: @SHA1@ @SIZE@ debian-source-dir-traversal-1_1.tar.gz Checksums-Sha256: @SHA256@ @SIZE@ debian-source-dir-traversal-1_1.tar.gz Files: @MD5@ @SIZE@ debian-source-dir-traversal-1_1.tar.gz lintian-2.5.22ubuntu1/t/source/debian-source-dir-traversal-2/0000775000000000000000000000000012310413206020643 5ustar lintian-2.5.22ubuntu1/t/source/debian-source-dir-traversal-2/Makefile0000664000000000000000000000065312310413144022310 0ustar name = debian-source-dir-traversal-2 dir = $(name)-1 all: mkdir $(dir) mkdir $(dir)/debian cp changelog copyright control rules $(dir)/debian/ # Link to the lab entry - should trigger a myriad of # "unknown-file-in-debian-source" tags, if lintian is vulnerable ln -s ../ $(dir)/debian/source tar cfz $(name)_1.tar.gz $(dir) subst-dsc $(name)_1.tar.gz < dsc.in > $(name)_1.dsc clean: rm -rf $(dir) rm -f $(name)_1* lintian-2.5.22ubuntu1/t/source/debian-source-dir-traversal-2/tags0000664000000000000000000000035412077065714021547 0ustar I: debian-source-dir-traversal-2 source: missing-debian-source-format W: debian-source-dir-traversal-2 source: debhelper-compat-file-is-missing W: debian-source-dir-traversal-2 source: package-uses-deprecated-debhelper-compat-version 1 lintian-2.5.22ubuntu1/t/source/debian-source-dir-traversal-2/desc0000664000000000000000000000017512077065714021530 0ustar Testname: debian-source-dir-traversal-2 Sequence: 6000 Version: 1.0 Description: Test for information discloure via d/source lintian-2.5.22ubuntu1/t/source/debian-source-dir-traversal-2/dsc.in0000664000000000000000000000067412310413206021753 0ustar Format: 1.0 Source: debian-source-dir-traversal-2 Binary: debian-source-dir-traversal-2 Architecture: all Version: 1 Maintainer: Debian Lintian Maintainers Standards-Version: 3.9.5 Build-Depends: debhelper (>= 7) Checksums-Sha1: @SHA1@ @SIZE@ debian-source-dir-traversal-2_1.tar.gz Checksums-Sha256: @SHA256@ @SIZE@ debian-source-dir-traversal-2_1.tar.gz Files: @MD5@ @SIZE@ debian-source-dir-traversal-2_1.tar.gz lintian-2.5.22ubuntu1/t/source/magic-architecture-srcpkg-ok/0000775000000000000000000000000012310413206020645 5ustar lintian-2.5.22ubuntu1/t/source/magic-architecture-srcpkg-ok/control.in0000664000000000000000000000156712310413206022666 0ustar Source: {$source} Section: {$section} Priority: optional Maintainer: {$author} Build-Depends: debhelper (>= 7) Standards-Version: {$standards_version} Package: magic-architecture-srcpkg-ok-data Architecture: all Depends: $\{misc:Depends\} Description: Test package for "all" plus specific arch in .dscs This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. Package: magic-architecture-srcpkg-ok Architecture: amd64 Depends: $\{misc:Depends\} Description: Test package for "all" plus specific arch in .dscs (a) This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. . Architecture specific package. lintian-2.5.22ubuntu1/t/source/magic-architecture-srcpkg-ok/Makefile0000664000000000000000000000067412077065714022335 0ustar name = magic-architecture-srcpkg-ok dir = $(name)-1.0 all: mkdir $(dir) echo 'Some upstream README' > $(dir)/README tar -c -f $(name)_1.0.orig.tar.gz -z $(dir) mkdir $(dir)/debian cp changelog copyright control rules $(dir)/debian/ echo 7 > $(dir)/debian/compat echo '# foo' > $(dir)/debian/watch mkdir $(dir)/debian/source echo 1.0 > $(dir)/debian/source/format dpkg-source -sp -b $(dir) clean: rm -rf $(dir) rm -f $(name)_1.0* lintian-2.5.22ubuntu1/t/source/magic-architecture-srcpkg-ok/tags0000664000000000000000000000000012077065714021535 0ustar lintian-2.5.22ubuntu1/t/source/magic-architecture-srcpkg-ok/desc0000664000000000000000000000027412077065714021532 0ustar Testname: magic-architecture-srcpkg-ok Sequence: 6000 Version: 1.0-1 Type: non-native Description: Test package for "all" plus specific arch in .dscs Test-Against: magic-arch-in-arch-list lintian-2.5.22ubuntu1/t/source/fields-src-fields-filename/0000775000000000000000000000000012310413206020264 5ustar lintian-2.5.22ubuntu1/t/source/fields-src-fields-filename/control.in0000664000000000000000000000100112310413206022264 0ustar Source: some-other-name Priority: extra Section: {$section} Maintainer: {$author} Standards-Version: {$standards_version} Build-Depends: debhelper (>= 7.0.50~) Package: {$source} Architecture: {$architecture} Depends: $\{shlibs:Depends\}, $\{misc:Depends\} Description: {$description} This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. It may be an empty package. lintian-2.5.22ubuntu1/t/source/fields-src-fields-filename/Makefile0000664000000000000000000000067112310413144021731 0ustar name = fields-src-fields-filename dsc = some-other-name dir = $(dsc)-1 all: mkdir $(dir) mkdir $(dir)/debian mkdir $(dir)/debian/source echo "1.0" > $(dir)/debian/source/format echo 7 > $(dir)/debian/compat cp changelog copyright control rules $(dir)/debian/ tar cfz $(dsc)_1.tar.gz $(dir) subst-dsc $(dsc)_1.tar.gz < dsc.in > $(dsc)_1.dsc mv $(dsc)_1.dsc $(name)_1.dsc clean: rm -rf $(dir) rm -f $(name)_1* rm -fr $(tar)_1* lintian-2.5.22ubuntu1/t/source/fields-src-fields-filename/tags0000664000000000000000000000015612077065714021170 0ustar E: some-other-name source: source-field-does-not-match-pkg-name some-other-name != fields-src-fields-filename lintian-2.5.22ubuntu1/t/source/fields-src-fields-filename/desc0000664000000000000000000000025012077065714021143 0ustar Testname: fields-src-fields-filename Sequence: 6000 Version: 1 Description: Test package for src field filename mismatch Test-For: source-field-does-not-match-pkg-name lintian-2.5.22ubuntu1/t/source/fields-src-fields-filename/dsc.in0000664000000000000000000000060112310413206021362 0ustar Format: 1.0 Source: some-other-name Binary: fields-src-fields-filename Architecture: all Version: 1 Maintainer: Debian Lintian Maintainers Standards-Version: 3.9.5 Build-Depends: debhelper (>= 7) Checksums-Sha1: @SHA1@ @SIZE@ some-other-name_1.tar.gz Checksums-Sha256: @SHA256@ @SIZE@ some-other-name_1.tar.gz Files: @MD5@ @SIZE@ some-other-name_1.tar.gz lintian-2.5.22ubuntu1/t/source/control-file-missing-separator/0000775000000000000000000000000012310413206021251 5ustar lintian-2.5.22ubuntu1/t/source/control-file-missing-separator/control.in0000664000000000000000000000126212077065714023303 0ustar Source: control-file-missing-separator Section: devel Priority: optional Maintainer: {$author} Build-Depends: debhelper (>= 7), fiddle [amd64 powerpc mips mipsel hppa s390], faddle (>> 2) [ sparc i386 amd64 ] Standards-Version: {$standards_version} Package: control-file-missing-separator Architecture: all Depends: $\{shlibs:Depends\}, $\{misc:Depends\}, foo (>= 1) baz (<< 2), fizz (= 2.0) Suggests: p1 p2 p3 p4 p5 Description: Test for missing separators in control files This is a test package designed to exercise some feature or tag of Lintian. It is part of the Lintian test suite and may do very odd things. It should not be installed like a regular package. lintian-2.5.22ubuntu1/t/source/control-file-missing-separator/Makefile0000664000000000000000000000056712310413144022722 0ustar name = control-file-missing-separator dir = $(name)-1 all: mkdir $(dir) mkdir $(dir)/debian cp changelog copyright control rules $(dir)/debian/ echo 7 > $(dir)/debian/compat mkdir $(dir)/debian/source echo 1.0 > $(dir)/debian/source/format tar cfz $(name)_1.tar.gz $(dir) subst-dsc $(name)_1.tar.gz < dsc.in > $(name)_1.dsc clean: rm -rf $(dir) rm -f $(name)_1* lintian-2.5.22ubuntu1/t/source/control-file-missing-separator/tags0000664000000000000000000000046112077065714022154 0ustar E: control-file-missing-separator source: missing-separator-between-items in control-file-missing-separator depends field between 'foo (>= 1)' and 'baz (<< 2)' E: control-file-missing-separator source: missing-separator-between-items in control-file-missing-separator suggests field between 'p1' and 'p2' lintian-2.5.22ubuntu1/t/source/control-file-missing-separator/desc0000664000000000000000000000025112077065714022131 0ustar Testname: control-file-missing-separator Sequence: 6000 Version: 1.0 Description: Test for missing separators in control files Test-For: missing-separator-between-items lintian-2.5.22ubuntu1/t/source/control-file-missing-separator/dsc.in0000664000000000000000000000102112310413206022344 0ustar Format: 1.0 Source: control-file-missing-separator Binary: control-file-missing-separator Architecture: all Version: 1 Maintainer: Debian Lintian Maintainers Standards-Version: 3.9.5 Build-Depends: debhelper (>= 7), fiddle [amd64 powerpc mips mipsel hppa s390], faddle (>> 2) [sparc i386 amd64] Checksums-Sha1: @SHA1@ @SIZE@ control-file-missing-separator_1.tar.gz Checksums-Sha256: @SHA256@ @SIZE@ control-file-missing-separator_1.tar.gz Files: @MD5@ @SIZE@ control-file-missing-separator_1.tar.gz lintian-2.5.22ubuntu1/t/source/unpack-srcpkg-no-subdir/0000775000000000000000000000000012077065714017700 5ustar lintian-2.5.22ubuntu1/t/source/unpack-srcpkg-no-subdir/Makefile0000664000000000000000000000104112077065714021334 0ustar name = unpack-srcpkg-no-subdir dir = $(name)-1.0 all: echo 'Some upstream README' > README echo '/* some C program */' > foo.c echo '/* some header */' > foo.h tar -c -z -f $(name)_1.0.orig.tar.gz README foo.c foo.h mkdir -p $(dir)/debian cp README foo.c foo.h $(dir) cp changelog copyright control rules $(dir)/debian/ echo 7 > $(dir)/debian/compat echo > $(dir)/debian/watch mkdir $(dir)/debian/source echo 1.0 > $(dir)/debian/source/format dpkg-source -sp -b $(dir) clean: rm -rf $(dir) rm -f $(name)_1.0* README foo.c foo.h lintian-2.5.22ubuntu1/t/source/unpack-srcpkg-no-subdir/tags0000664000000000000000000000000012077065714020547 0ustar lintian-2.5.22ubuntu1/t/source/unpack-srcpkg-no-subdir/desc0000664000000000000000000000023112077065714020535 0ustar Testname: unpack-srcpkg-no-subdir Sequence: 6000 Version: 1.0-1 Type: non-native Description: Test package for upstream tar files with no subdirectories lintian-2.5.22ubuntu1/t/source/cruft-ancient-file/0000775000000000000000000000000012310413206016666 5ustar lintian-2.5.22ubuntu1/t/source/cruft-ancient-file/Makefile0000664000000000000000000000073012310413206020326 0ustar name = cruft-ancient-file dir = $(name)-1.0 all: mkdir $(dir) echo 'Some upstream README' > $(dir)/README env TZ=GMT touch -d@-1 $(dir)/README tar -c -f $(name)_1.0.orig.tar.gz -z $(dir) mkdir $(dir)/debian cp changelog copyright control rules $(dir)/debian/ echo 7 > $(dir)/debian/compat echo '# foo' > $(dir)/debian/watch mkdir $(dir)/debian/source echo 1.0 > $(dir)/debian/source/format dpkg-source -sp -b $(dir) clean: rm -rf $(dir) rm -f $(name)_1.0* lintian-2.5.22ubuntu1/t/source/cruft-ancient-file/tags0000664000000000000000000000020312310413206017542 0ustar I: cruft-ancient-file source: tar-errors-from-source cruft-ancient-file-1.0/README: implausibly old time stamp 1969-12-31 23:59:59 lintian-2.5.22ubuntu1/t/source/cruft-ancient-file/desc0000664000000000000000000000025612077065714017553 0ustar Testname: cruft-ancient-file Sequence: 6000 Version: 1.0-1 Type: non-native Description: Test package for ancient files producing tar errors Test-For: tar-errors-from-source lintian-2.5.22ubuntu1/t/runtests0000775000000000000000000010505612314122207013535 0ustar #!/usr/bin/perl # Copyright © 1998 Richard Braakman # Copyright © 2008 Frank Lichtenheld # Copyright © 2008, 2009 Russ Allbery # # 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. # The harness for Lintian's new test suite. Normally run through the runtests # or check-tag targets in debian/rules. For detailed information on the test # suite layout and naming conventions, see t/tests/README. # # The build output is directed to build.pkgname in the testing-directory. use strict; use warnings; use autodie; use Cwd(); use threads; use threads::shared; use Thread::Queue; use Getopt::Long qw(GetOptions); use List::MoreUtils qw(none); use constant SUITES => qw(scripts changes debs source tests); our ($LINTIAN_ROOT, $LINTIAN, @LINTIAN_CMD); BEGIN { if (($ENV{'LINTIAN_TEST_INSTALLED'}//'no') eq 'yes') { $LINTIAN_ROOT = '/usr/share/lintian'; $LINTIAN = '/usr/bin/lintian'; } else { $LINTIAN_ROOT = Cwd::cwd(); $LINTIAN = "$LINTIAN_ROOT/frontend/lintian"; } $ENV{'LINTIAN_TEST_ROOT'} = $LINTIAN_ROOT; $ENV{'LINTIAN_FRONTEND'} = $LINTIAN; @LINTIAN_CMD = ($LINTIAN); delete $ENV{'LINTIAN_CFG'}; delete $ENV{'LINTIAN_LAB'}; delete($ENV{'LINTIAN_PROFILE'}); delete($ENV{'LINTIAN_COVERAGE'}); # Some of the tests don't cope too well with "-j" in MAKEFLAGS delete($ENV{'MAKEFLAGS'}); # Ensure Lintian works without $ENV{HOME} delete($ENV{'HOME'}); # Ubuntu auto-builders run pkg-mangle which messes with our # test packages, so ask it not to do so by default. $ENV{'NO_PKG_MANGLE'} = 'true' unless exists($ENV{'NO_PKG_MANGLE'}); $ENV{'LC_ALL'} = 'C'; # Set standard umask because many of the test packages rely on this # when creating files from the debian/rules script. umask(022); } use lib "$LINTIAN_ROOT/lib"; use Lintian::Internal::FrontendUtil qw(default_parallel); use Lintian::Util qw(delete_dir fail parse_boolean rstrip slurp_entire_file touch_file); use Test::Lintian::Harness qw(chdir_runcmd check_test_depends copy_template_dir fill_in_tmpl find_tests_for_tag read_test_desc runsystem runsystem_ok skip_reason up_to_date); # --- Global configuration our @DPKG_BUILDPACKAGE_CMD = ( qw(dpkg-buildpackage -rfakeroot -us -uc -d), qw(-iNEVER_MATCH_ANYTHING -INEVER_MATCH_ANYTHING), qw(--source-option=--auto-commit), ); our $STANDARDS_VERSION = '3.9.5'; our $ARCHITECTURE = `dpkg-architecture -qDEB_HOST_ARCH`; chomp $ARCHITECTURE; my %TEMPLATES = ( 'tests' => ['debian/changelog', 'debian/control'], 'debs' => ['changelog', 'control', 'Makefile'], 'source' => ['changelog', 'control'], ); my $DATE = `date -R`; chomp $DATE; my $output_is_tty = -t STDOUT; # --- Usage information sub usage { my ($exitcode) = @_; print unquote(<<"END"); : Usage: $0 [options] [-j []] [] : : --coverage Run Lintian under Devel::Cover (Warning: painfully slow) : -d Display additional debugging information : --dump-logs Print build log to STDOUT, if a build fails. : -j [] Run up to jobs in parallel. : If -j is passed without specifying , the number : of jobs started is +1. : -k Do not stop after one failed test : -v Be more verbose : --help, -h Print this help and exit : : The optional 3rd parameter causes runtests to only run tests that match : the particular selection. This parameter can be one of: : : * : - Run the test(s) named exactly . Note that each suite : can reuse the name of the test, so this may run more than one : test. : * : - Run all "scripts"-tests within a given dir. E.g. "01-critic" : will run all tests in "t/scripts/01-critic/". : * : - Run all tests related to the given check. This is based on the : name of the test (i.e. it must start with "-"). : * legacy : - Run all "legacy" tests (i.e. t/tests/legacy-*), which were : imported from the old test suite. : * suite:[,] : - Run all tests in the listed suites. : * tag: : - Run any test that lists in "Test-For" or : "Test-Against". : : : Test artifacts are cached in and will be reused if : deemed "up-to-date". This cache can greatly reduce the run time of the : test suite. END exit($exitcode//2); } # --- Parse options and arguments our $DEBUG = 0; our $VERBOSE = 0; our $RUNDIR; our $TESTSET; our $JOBS = -1; our $DUMP_LOGS = ''; my ($run_all_tests, $tag, $coverage); Getopt::Long::Configure('bundling'); GetOptions( 'd|debug' => \$DEBUG, 'j|jobs:i' => \$JOBS, 'k|keep-going' => \$run_all_tests, 'dump-logs!' => \$DUMP_LOGS, 'v|verbose' => \$VERBOSE, 'coverage:s' => \$coverage, 'help|h' => sub {usage(0); }, ) or usage; if ($#ARGV < 1 || $#ARGV > 2) { usage; } my $singletest; ($TESTSET, $RUNDIR, $singletest) = @ARGV; if (-d $RUNDIR) { my $abs = Cwd::abs_path($RUNDIR); fail("Cannot resolve $RUNDIR: $!") if not defined($abs); $RUNDIR = $abs; } else { fail("test directory $RUNDIR does not exist"); } unless (-d $TESTSET) { fail("test set directory $TESTSET does not exist"); } if (defined($coverage)) { my $harness_perl_switches = $ENV{'HARNESS_PERL_SWITCHES'}//''; # Only collect coverage for stuff that D::NYTProf and # Test::Pod::Coverage cannot do for us. This makes cover use less # RAM in the other end. my @criteria = qw(statement branch condition path subroutine); my $coverage_arg = '-MDevel::Cover=-silent,1,+ignore,^(.*/)?t/scripts/.+'; $coverage_arg .= ',-coverage,' . join(',-coverage,', @criteria); $coverage_arg .= ',' . $coverage if $coverage ne ''; $ENV{'LINTIAN_COVERAGE'} = 1; $harness_perl_switches .= ' ' . $coverage_arg; $ENV{'HARNESS_PERL_SWITCHES'} = $harness_perl_switches; unshift(@LINTIAN_CMD, 'perl', $coverage_arg); } if ($DEBUG) { require Data::Dumper; import Data::Dumper; } if (-d "$TESTSET/helpers/bin") { # Add the test helpers to PATH my $tpath = Cwd::abs_path("$TESTSET/helpers/bin"); fail "Cannot resolve $TESTSET/helpers/bin: $!" unless $tpath; $ENV{'PATH'} = "$tpath:$ENV{'PATH'}"; } # Getopt::Long assigns 0 as default value if none was specified # (i.e. "-j"). Otherwise, $JOBS can also be -1 if "-j" was not # specified at all. if ($JOBS <= 0) { $JOBS = default_parallel(); print "Doing up to $JOBS concurrent builds/tests\n" if $DEBUG; } # --- Display output immediately STDOUT->autoflush; # --- Exit status for the test suite driver # Exit codes: # 0 - success # 1 - one or more tests failed # 2 - an error prevented proper running of the tests # NB: Also locks $failed (as they are always updated together). my $status :shared = 0; # Tests that were skipped and why # - $suite => $testname => $reason my $skipped = shared_clone({}); # Tests that failed # - Use $status as lock (since when $failed is updated, # then $status is as well) my $failed = shared_clone([]); # If we don't run any tests, we'll want to warn that we couldn't find # anything. my $tests_run = 0; my (%suites, @tests, $prev); my $q = Thread::Queue->new(); our $MSG_Q = Thread::Queue->new(); if ($singletest && $singletest =~ s/^tag://) { $tag = $singletest; # clear singletest to avoid find a "single" test. $singletest = ''; } elsif ($singletest && $singletest =~ m/^suite:(.++)/) { my $list = $1; %suites = (); foreach my $s (split m/\s*+,\s*+/, $list) { $suites{$s} = 1; } # clear singletest to avoid find a "single" test. $singletest = ''; } else { # run / check all of them foreach my $s (SUITES) { $suites{$s} = 1; } } sub msg_flush; sub msg_print; sub msg_queue_handler; # Thread to nicely handle the output of each thread: threads->create('msg_queue_handler')->detach(); # --- Run all test scripts if ($singletest) { my $script = "$TESTSET/scripts/$singletest.t"; if (-f $script) { @tests = ($script); } elsif (-d "$TESTSET/scripts/$singletest") { @tests = ("$TESTSET/scripts/$singletest"); } } elsif (!$tag && $suites{'scripts'}) { unless (-d "$TESTSET/scripts") { fail("cannot find $TESTSET/scripts: $!"); } @tests = ("$TESTSET/scripts"); } if (@tests) { print "Test scripts:\n"; if ( system('prove', '-j', $JOBS, '-r', '-I', "$LINTIAN_ROOT/lib", @tests) != 0) { exit 1 unless $run_all_tests; $status = 1; } $tests_run++; print "\n"; } # --- Run all changes tests $prev = scalar(@tests); @tests = (); if ($singletest) { my $desc = "$TESTSET/changes/$singletest"; $desc =~ s/\.changes$//; $desc = "$desc.desc"; if (-f $desc) { push @tests, read_test_desc($desc); } } elsif ($tag) { @tests = find_tests_for_tag($tag, "$TESTSET/changes/*.desc"); } elsif ($suites{'changes'}) { unless (-d "$TESTSET/changes") { fail("cannot find $TESTSET/changes: $!"); } @tests = map { read_test_desc($_) } sort(glob("$TESTSET/changes/*.desc")); } print "Found the following changes tests: @tests\n" if $DEBUG; print "Changes tests:\n" if @tests; run_tests(\&test_changes, @tests); $tests_run += scalar(@tests); msg_flush; my @test_suite_info = ([ 'debs', "$TESTSET/debs/*/desc", sub { generic_test_runner('debs', 'deb', @_) } ], [ 'source', "$TESTSET/source/*/desc", sub { generic_test_runner('source', 'dsc', @_) } ], ['tests', "$TESTSET/tests/*/desc", sub { test_package('tests', @_) }] ); foreach my $tsi (@test_suite_info) { my ($tdir, $globstr, $runner) = @$tsi; $prev = $prev || scalar(@tests); @tests = (); if ($singletest) { my $test = $singletest; if (-d "$TESTSET/$tdir/$test") { push @tests, read_test_desc("$TESTSET/$tdir/$test/desc"); } elsif (-f "$LINTIAN_ROOT/checks/$singletest.desc" || $singletest eq 'legacy') { @tests = map { read_test_desc($_) } glob("$TESTSET/$tdir/$singletest-*/desc"); } } elsif ($tag) { @tests = find_tests_for_tag($tag, $globstr); } elsif ($suites{$tdir}) { unless (-d "$TESTSET/$tdir/") { fail("cannot find $TESTSET/$tdir: $!"); } @tests = map { read_test_desc($_) } glob($globstr); } @tests = sort { $a->{sequence} <=> $b->{sequence} || $a->{testname} cmp $b->{testname} } @tests; print "\n" if ($prev and @tests); if ($DEBUG) { print 'Found the following tests: '; print join(' ', map { $_->{testname} } @tests); print "\n"; } print "Package tests ($tdir):\n" if @tests; run_tests($runner, @tests); $tests_run += scalar(@tests); msg_flush; } # --- Check whether we ran any tests if (!$tests_run) { if ($singletest) { print "W: No tests run, did you specify a valid test name?\n"; } elsif ($tag) { print "I: No tests found for that tag.\n"; } else { print "E: No tests run, did you specify a valid testset directory?\n"; } } else { if (%{$skipped}) { print "\nSkipped/disabled tests:\n"; for my $suite (SUITES) { if (exists($skipped->{$suite})) { print " [$suite]\n"; for my $testname (sort(keys(%{ $skipped->{$suite} }))) { my $reason = $skipped->{$suite}{$testname}; print " $testname: $reason\n"; } } } } if (my $number = @{$failed}) { print "\nFailed tests ($number)\n"; for my $test (@{$failed}) { print " $test\n"; } } } exit $status; # --- Full package testing # Run a package test and show any diffs in the expected tags or any other # errors detected. Takes the description data for the test. Returns true if # the test passes and false if it fails. sub test_package { my ($suite, $testdata) = @_; my $testname = $testdata->{testname}; if (!check_test_is_sane($TESTSET, $testdata)) { return skip_test($suite, $testname, 'architecture mismatch'); } msg_print "Running $testdata->{testname} $testdata->{version}... "; my $pkg = $testdata->{source}; my $rundir = "$RUNDIR/$suite/$pkg"; my $origdir = "$TESTSET/$suite/$testname"; my $orig_version = $testdata->{version}; my $expected = "$origdir/tags"; my $origexp = $expected; my $stampfile = "$rundir/build-stamp"; my $epochless_version = $orig_version; $epochless_version =~ s/^\d+://; if (-f "$origdir/skip") { my $reason = skip_reason("$origdir/skip"); return skip_test($suite, $testname, "(disabled) $reason"); } if ($testdata->{'test-depends'}) { my $missing = check_test_depends($testdata); if ($missing) { return skip_test($suite, $testname, "Unsatisified Depends: $missing"); } } if (not up_to_date($stampfile, $origdir)) { my $tmpldir = "$TESTSET/templates/$suite/"; my $skel = $testdata->{skeleton}; my $is_native = ($testdata->{type} eq 'native'); my $pkgdir = "$pkg-$testdata->{version}"; my $targetdir = "$rundir/$pkgdir"; # Strip the Debian revision off of the name of the target # directory and the *.orig.tar.gz file if the package is # non-native. Otherwise, it confuses dpkg-source, which then # fails to find the upstream tarball and builds a native # package. unless ($is_native) { for ($orig_version, $pkgdir, $targetdir) { s/-[^-]+$//; s/(-|^)(\d+):/$1/; } } print "Cleaning up and repopulating $targetdir...\n" if $DEBUG; runsystem_ok('rm', '-rf', $rundir); runsystem_ok('mkdir', '-p', $rundir); unless ($is_native) { copy_template_dir("$tmpldir/${skel}.upstream", "$origdir/upstream/",$targetdir); unlink "$targetdir/.dummy" if -e "$targetdir/.dummy"; if (-x "$origdir/pre_upstream") { msg_print 'running pre_upstream hook... ' if $VERBOSE; runsystem("$origdir/pre_upstream", $targetdir); } chdir_runcmd($rundir, ['tar', 'czf', "${pkg}_${orig_version}.orig.tar.gz", $pkgdir]); if (-f "$origdir/debian/debian/source/format") { my $format = slurp_entire_file("$origdir/debian/debian/source/format"); chomp $format; if ($format =~ m/^3.\d+ \(quilt\)$/) { delete_dir("$targetdir/debian/"); } } } copy_template_dir("$tmpldir/$skel", "$origdir/debian/", $targetdir, ['--exclude=debian/changelog']); foreach my $tfile (@{ $TEMPLATES{$suite} }) { unless (-e "$targetdir/$tfile") { fill_in_tmpl("$targetdir/$tfile", $testdata); } } unless ($is_native || -e "$targetdir/debian/watch") { my $f = "$targetdir/debian/watch"; # Create a watch file with "content" as lintian checks for # non-zero file size. open(my $fd, '>', $f); print {$fd} "# Empty watch file\n"; close($fd); } if (-x "$origdir/pre_build") { msg_print 'running pre_build hook... ' if $VERBOSE; runsystem("$origdir/pre_build", $targetdir); } _builder_tests($testdata, "$rundir/$pkgdir", "$rundir/build.$pkg"); touch_file($stampfile); } else { msg_print 'building (cached)... '; } my $file = "${pkg}_${epochless_version}_${ARCHITECTURE}.changes"; run_lintian($testdata, "$rundir/$file", "$rundir/tags.$pkg"); # Run a sed-script if it exists, for tests that have slightly variable # output runsystem_ok('sed', '-ri', '-f', "$origdir/post_test", "$rundir/tags.$pkg") if -e "$origdir/post_test"; if (-x "$origdir/test_calibration") { my $calibrated = "$rundir/expected.$pkg.calibrated"; msg_print 'running test_calibration hook... ' if $VERBOSE; runsystem_ok( "$origdir/test_calibration", $expected, "$rundir/tags.$pkg", $calibrated ); $expected = $calibrated if -e $calibrated; } return _check_result($testdata, $expected, "$rundir/tags.$pkg", $origexp); } sub _builder_tests { my ($testdata, $testdir, $log) = @_; msg_print 'building... '; my $res = chdir_runcmd($testdir, \@DPKG_BUILDPACKAGE_CMD, $log); if ($res){ my $pkg = $testdata->{source}; dump_log($pkg, $log) if $DUMP_LOGS; fail("cd $testdir && @DPKG_BUILDPACKAGE_CMD >$log 2>&1"); } return; } sub run_lintian { my ($testdata, $file, $out) = @_; msg_print 'testing... '; my @options = split(' ', $testdata->{options}//''); unshift(@options, '--allow-root', '--no-cfg'); unshift(@options, '--profile', $testdata->{profile}); unshift(@options, '--no-user-dirs'); my $pid = open(my $in, '-|'); if ($pid) { my @data = <$in>; my $status = 0; eval {close($in);}; if (my $err = $@) { fail("close pipe: $!") if $err->errno; $status = ($? >> 8) & 255; } if (defined($coverage)) { # Devel::Cover causes some annoying deep recursion # warnings. Filter them out, but only during coverage. # - This is not flawless, but it gets most of them @data = grep { !m{^Deep [ ] recursion [ ] on [ ] subroutine [ ] "[^"]+" [ ] at [ ] .*B/Deparse.pm [ ] line [ ] \d+}xsm } @data; } unless ($status == 0 or $status == 1) { msg_print "FAILED\n"; for my $line (@data) { #NB: $line has trailing newline. msg_print "$testdata->{testname}: $line"; } fail "@LINTIAN_CMD @options $file exited with status $status"; } else { @data = sort @data if $testdata->{sort}; open(my $fd, '>', $out); print $fd $_ for @data; close($fd); } } else { open(STDERR, '>&', \*STDOUT); exec {$LINTIAN_CMD[0]} @LINTIAN_CMD, @options, $file or fail "exec failed: $!"; } return 1; } # --- Changes file testing # Run a test on a changes file and show any diffs in the expected tags or any # other errors detected. Takes the test name. Returns true if the test # passes and false if it fails. sub test_changes { my ($testdata) = @_; my $testname = $testdata->{testname}; if (!check_test_is_sane($TESTSET, $testdata)) { return skip_test('changes', $testname, 'architecture mismatch'); } if ($testdata->{'test-depends'}) { # Not sure this makes sense for .changes tests, but at least it # makes it consistent. my $missing = check_test_depends($testdata); if ($missing) { return skip_test('changes', $testname,"Missing Depends: $missing"); } } mkdir("$RUNDIR/changes") if not -d "$RUNDIR/changes"; msg_print "Running $testname $testdata->{version}... "; my $test = $testdata->{source}; my $testdir = "$TESTSET/changes"; my $file = "$testdir/$test.changes"; # Check if we need to copy these files over. if (!-e $file && -e "$file.in") { my @files; msg_print 'building... '; # copy all files but "tags" and desc. Usually this will only # be ".changes.in", but in rare cases we have "other files" # as well. # # the _glob-call emulates glob("$testdir/$test.*") # (see #723805) @files = grep { !/\.(?:desc|tags)$/o } _glob($testdir, qr/\Q$test.\E.*/); runsystem('cp', '-f', @files, "$RUNDIR/changes"); $file = "$RUNDIR/changes/${test}.changes"; fill_in_tmpl($file, $testdata); } run_lintian($testdata, $file, "$RUNDIR/changes/tags.$test"); return _check_result($testdata, "$testdir/$test.tags", "$RUNDIR/changes/tags.$test"); } # -------------- # Unquote a heredoc, used to make them a bit more readable in Perl code. sub unquote { my ($string) = @_; $string =~ s/^:( {0,7}|\t)//gm; return $string; } # generic_test_runner($dir, $ext, $test) # # Runs the test called $test assumed to be located in $TESTSET/$dir/$test/. # The resulting package produced by the test is assumed to have the extension # $ext. # # Returns a truth value on success, undef on test failure. May call die/fail # if the test is broken. sub generic_test_runner { my ($suite, $ext, $testdata) = @_; my $testname = $testdata->{testname}; if (!check_test_is_sane($TESTSET, $testdata)) { return skip_test($suite, $testname, 'architecture mismatch'); } msg_print "Running $testname... "; my $testdir = "$TESTSET/$suite/$testname"; my $targetdir = "$RUNDIR/$suite/$testname"; my $stampfile = "$RUNDIR/$suite/$testname-build-stamp"; if (-f "$testdir/skip") { my $reason = skip_reason("$testdir/skip"); return skip_test($suite, $testname, "(disabled) $reason"); } if ($testdata->{'test-depends'}) { my $missing = check_test_depends($testdata); if ($missing) { return skip_test($suite, $testname, "Missing Depends: $missing"); } } if (not up_to_date($stampfile, $testdir)) { my $skel = $testdata->{skeleton}; my $tmpldir = "$TESTSET/templates/$suite/"; print "Cleaning up and repopulating $targetdir...\n" if $DEBUG; runsystem_ok('rm', '-rf', $targetdir); runsystem_ok('mkdir', '-p', $targetdir); runsystem('cp', '-rp', $testdir, $targetdir); copy_template_dir("$tmpldir/$skel", "$testdir/", $targetdir, ['--exclude=changelog'], ['--exclude=desc']); foreach my $tfile (@{ $TEMPLATES{$suite} }) { unless (-e "$targetdir/$tfile") { fill_in_tmpl("$targetdir/$tfile", $testdata); } } msg_print 'building... '; my $res= chdir_runcmd($targetdir, ['fakeroot', 'make'], "../build.$testname"); if ($res){ dump_log($testname, "$RUNDIR/build.$testname") if $DUMP_LOGS; fail("cd $targetdir && fakeroot make >../build.$testname 2>&1"); } touch_file($stampfile); } else { msg_print 'building (cached)...'; } # The _glob call emulates glob("$targetdir/*.$ext") # (see #723805) my @matches = _glob($targetdir, qr/.*\.\Q$ext\E/); my $file = shift @matches; unless ($file && -e $file) { $file //= ''; fail join(q{ }, "$testname did not produce any file matching", "\"$targetdir/*.$ext\" ($file)"); } fail "$testname produced more than one file matching \"$targetdir/*.$ext\"" if @matches; run_lintian($testdata, $file, "$RUNDIR/$suite/tags.$testname"); return _check_result($testdata, "$testdir/tags", "$RUNDIR/$suite/tags.$testname"); } # Makeshift replacement for "glob" to work around #723805 sub _glob { my ($dir, $pattern) = @_; my @matches; opendir(my $dirfd, $dir); for my $file (readdir($dirfd)) { next if $file eq '.' or $file eq '..'; push(@matches, "$dir/$file") if $file =~ m{\A $pattern \Z}xsm; } closedir($dirfd); return @matches; } sub _check_result { my ($testdata, $expected, $actual, $origexp) = @_; # Compare the output to the expected tags. my $testok = runsystem_ok('cmp', '-s', $expected, $actual); if ($testok) { msg_print "ok.\n"; # Continue to check the "test-for/test-against" tags } else { if ($testdata->{'todo'} eq 'yes') { msg_print "TODO\n"; return 1; } else { msg_print "FAILED\n"; runsystem_ok('diff', '-u', $expected, $actual); return; } } return 1 unless $testdata; # Check the output for invalid lines. Also verify that all Test-For tags # are seen and all Test-Against tags are not. Skip this part of the test # if neither Test-For nor Test-Against are set and Sort is also not set, # since in that case we probably have non-standard output. my %test_for = map { $_ => 1 } split(' ', $testdata->{'test-for'}); my %test_against = map { $_ => 1 } split(' ', $testdata->{'test-against'}); if ( not %test_for and not %test_against and $testdata->{'output-format'} ne 'EWI') { if ($testdata->{'todo'} eq 'yes') { msg_print "E: marked as TODO but succeeded.\n"; return; } else { return 1; } } else { my $okay = 1; open(my $etags, '<', $actual); while (<$etags>) { next if m/^N: /; # Some of the traversal tests creates packages that are # skipped; accept that in the output next if m/tainted/o && m/skipping/o; # Looks for "$code: $package[ $type]: $tag" if (not /^.: \S+(?: (?:changes|source|udeb))?: (\S+)/o) { msg_print(($testdata->{'todo'} eq 'yes')? 'TODO' : 'E'); msg_print ": Invalid line:\n$_"; $okay = 0; next; } my $tag = $1; if ($test_against{$tag}) { msg_print(($testdata->{'todo'} eq 'yes')? 'TODO' : 'E'); msg_print ": Tag $tag seen but listed in Test-Against\n"; $okay = 0; # Warn only once about each "test-against" tag delete $test_against{$tag}; } delete $test_for{$tag}; } close($etags); if (%test_for) { if ($origexp && $origexp ne $expected) { # Test has been calibrated, check if some of the # "Test-For" has been calibrated out. (Happens with # binaries-hardening on some architectures). open(my $oe, '<', $expected); my %cp_tf = %test_for; while (<$oe>) { next if m/^N: /; # Some of the traversal tests creates packages that are # skipped; accept that in the output next if m/tainted/o && m/skipping/o; if (not /^.: \S+(?: (?:changes|source|udeb))?: (\S+)/o) { msg_print( ($testdata->{'todo'} eq 'yes')? 'TODO' : 'E'); msg_print ": Invalid line:\n$_"; $okay = 0; next; } print STDERR "N: Kept tag: $1\n"; delete $cp_tf{$1}; } close($oe); # Remove tags that has been calibrated out. foreach my $tag (keys %cp_tf) { delete $test_for{$tag}; } } for my $tag (sort keys %test_for) { msg_print(($testdata->{'todo'} eq 'yes')? 'TODO' : 'E'); msg_print ": Tag $tag listed in Test-For but not found\n"; $okay = 0; } } if ($okay && $testdata->{'todo'} eq 'yes') { msg_print "E: marked as TODO but succeeded.\n"; return; } else { return ($okay || $testdata->{'todo'} eq 'yes'); } } } # run_tests(&subref, @tests) # # Runs all the tests by passing them (one at the time) to &subref; # note that it may do so in a threaded manner so &subref must be # re-entrant. Blocks until all tests have been run. # # If &subref returns a truth value, the test is considered for passed # (also used for skipped tests). Otherwise it is a failure. # # Note, if "continue on error" is not set ($run_all_tests) a failing # test will terminate the program. # sub run_tests{ my ($code, @tsts) = @_; $q->enqueue(@tsts); for (my $i = 0; $i < $JOBS; $i++) { threads->create( sub { while (my $t = $q->dequeue_nb()) { my $okay = eval { $code->($t); }; if (!$okay || $@) { if (my $err = $@) { msg_print "FAILED\n"; print STDERR "$err\n"; } exit 1 unless $run_all_tests; my $name = $t; if (ref($t) eq 'HASH' && exists $t->{'testname'}) { $name = $t->{'testname'}; } if (1) { lock($status); $status ||= 1; push(@{$failed}, $name); } } } }); # treads->create( sub { ... } # for loop # wait for the results; for my $thr (threads->list()) { $thr->join(); if ($thr->error){ # This should not happen, but if a thread terminate # badly make sure we do not return success. lock($status); $status = 1; } } return; } sub dump_log{ my ($pkg, $logf) = @_; no autodie qw(open); if (open(my $log, '<', $logf)){ print "$pkg: ---- START BUILD LOG\n"; print "$pkg: $_" while (<$log>); print "$pkg: ---- END BUILD LOG\n"; close($log); } else { msg_print "!!! Could not dump $logf: $!"; } return 1; } sub check_test_is_sane { my ($dir, $data) = @_; if ($DEBUG) { print 'check_test_is_sane <= ' . Dumper($data); } unless ($data->{testname} && exists $data->{version}) { fail('Name or Version missing'); } $data->{source} ||= $data->{testname}; $data->{type} ||= 'native'; $data->{date} ||= $DATE; $data->{distribution} ||= 'unstable'; $data->{description} ||= 'No Description Available'; $data->{author}||= 'Debian Lintian Maintainers '; $data->{architecture} ||= 'all'; $data->{profile} ||= 'debian'; $data->{section} ||= 'devel'; $data->{'standards_version'} ||= $STANDARDS_VERSION; $data->{sort} ||= 'yes'; $data->{sort} = parse_boolean($data->{sort}); $data->{'output-format'} ||= 'EWI'; $data->{'test-for'} ||= ''; $data->{'test-against'} ||= ''; $data->{skeleton} ||= 'skel'; $data->{options} ||= '-I -E'; $data->{todo} ||= 'no'; $data->{'test-depends'} //= ''; # Unwrap the options in case we used continuation lines. $data->{options} =~ s/\n//g; # Allow options relative to the root of the test directory. $data->{options} =~ s/TESTSET/$dir/g; if ($DEBUG) { print 'check_test_is_sane => '.Dumper($data); } my @architectures = qw(all any); push @architectures, $ARCHITECTURE; # Check for arch-specific tests # FIXME: deal with wildcards correctly. if (none { $data->{architecture} =~ m/\b$_\b/ } @architectures) { return 0; } return 1; } sub skip_test { my ($suite, $testname, $reason) = @_; msg_print "Skipped $testname.\n"; if (1) { lock($skipped); if (!exists($skipped->{$suite})) { $skipped->{$suite} = shared_clone({}); } $skipped->{$suite}->{$testname} = $reason; } return 1; } sub msg_flush { my %msg = (id => threads->tid); $MSG_Q->enqueue(\%msg); return; } sub msg_print { my %msg = (id => threads->tid, msg => "@_"); $MSG_Q->enqueue(\%msg); return; } sub _flush { my ($thrs, $id, $length) = @_; print(' 'x$length,"\r"); while (my $m = shift @{$thrs->{$id}}) { print $m; } print "\n"; delete $thrs->{$id}; return; } sub msg_queue_handler { # if _msg_qh fails eval {_msg_qh();}; die "Error (msg_queue_handler): $@\n" if $@; die "_msg_qh returned!?\n"; } sub _msg_qh { my %thrs; my $length = 0; while (my $msg = $MSG_Q->dequeue()) { my $id = $msg->{'id'}; # master thread calls msg_flush to flush all messages if ($id == 0) { for my $tid (keys %thrs) { _flush(\%thrs, $tid, $length); } $length = 0; } else { if (!exists($msg->{'msg'}) && exists($thrs{$id})) { _flush(\%thrs, $id, $length); $length = 0; } elsif (exists($msg->{'msg'})) { $thrs{$id} = [] unless (exists($thrs{$id})); my $flush = 0; # We split by line. Every time a newline is found the # messages queue is flushed (by the above code) for my $line (split /(?=\n)/, $msg->{'msg'}) { $flush = 1 if ($line =~ s/^\n//); push @{$thrs{$id}}, $line; } # Insert a flush request, if needed if ($flush) { _flush(\%thrs, $id, $length); $length = 0; } } } # Status line: 'thr1 msg || thr2 msg || ...' my @output; for my $tid (keys %thrs) { my $p = $thrs{$tid}[-1]; rstrip($p); push @output, $p; } my $output = join(' || ', @output); # Only use \r (etc.) if the output seems to be a terminal # - This is to make build logs more readable. printf "%-${length}s\r", $output if $output_is_tty; $length = length($output); } # This should not be reachable, but perlcritic doesn't know that. return; } # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/t/COVERAGE0000664000000000000000000001257512314367131013050 0ustar Last generated 2014-03-25 Coverage (Tags): 1000/1071 (93.37%), w. legacy tests: 1060/1071 (98.97%) Coverage (Checks): 38/45 (84.44%), w. legacy tests: 40/45 (88.89%) The following tags are not tested by the test suite: binaries binary-file-compressed-with-upx binaries ocaml-custom-executable files debug-package-should-be-named-dbg files udeb-contains-documentation-file menu-format menu-item-contains-unknown-tag menu-format menu-item-needs-dwww menu-format old-format-menu-file menu-format whitespace-after-continuation-character menus executable-in-usr-share-docbase menus executable-menu-file shared-libs shlib-without-PT_GNU_STACK-section The following tags are only tested by the legacy test suite: binaries binary-has-unneeded-section binaries binary-with-bad-dynamic-table files desktop-file-in-wrong-dir files package-contains-devhelp-file-without-symlink files package-contains-upstream-install-documentation files package-installs-packlist files script-in-usr-share-doc files script-with-language-extension files use-of-compat-symlink files windows-thumbnail-database-in-package files wrong-file-owner-uid-or-gid init.d duplicate-updaterc.d-calls-in-postrm init.d init.d-script-has-bad-lsb-line init.d init.d-script-has-duplicate-lsb-section init.d init.d-script-has-unknown-lsb-keyword init.d init.d-script-has-unterminated-lsb-section init.d init.d-script-missing-lsb-keyword init.d init.d-script-not-included-in-package init.d init.d-script-not-marked-as-conffile init.d output-of-updaterc.d-not-redirected-to-dev-null init.d postrm-contains-additional-updaterc.d-calls init.d postrm-does-not-call-updaterc.d-for-init.d-script init.d preinst-calls-updaterc.d init.d prerm-calls-updaterc.d menu-format deprecated-kdelnk-file menu-format desktop-contains-deprecated-header menu-format desktop-entry-missing-required-key menu-format menu-item-missing-required-tag menu-format menu-item-needs-tag-has-unknown-value menu-format non-wm-module-in-wm-modules-menu-section menu-format su-to-root-with-usr-sbin menu-format su-wrapper-not-su-to-root menu-format su-wrapper-without--c menu-format unquoted-string-in-menu-item menus bad-menu-file-name menus doc-base-document-field-ends-in-whitespace menus doc-base-file-duplicated-format menus doc-base-file-lacks-required-field menus doc-base-file-no-format menus doc-base-file-no-format-section menus doc-base-file-no-index menus doc-base-file-references-missing-file menus doc-base-file-unknown-field menus doc-base-file-unknown-format menus doc-base-file-uses-obsolete-national-encoding menus doc-base-index-references-multiple-files menus doc-base-invalid-document-field menus doc-base-unknown-section menus menu-file-in-usr-lib menus menu-method-should-include-menu-h menus postinst-does-not-call-updatemenus menus postrm-does-not-call-updatemenus po-debconf newer-debconf-templates po-debconf unknown-encoding-in-po-file shared-libs sharedobject-in-library-directory-missing-soname shared-libs symbols-declared-but-not-shlib shared-libs symbols-declares-dependency-on-other-package shared-libs udeb-postinst-must-not-call-ldconfig shared-libs unknown-meta-field-in-symbols-file shared-libs unused-shlib-entry-in-symbols-control-file Breakdown of remaining tags in legacy test suite by test case: binary binary-has-unneeded-section deprecated-kdelnk-file desktop-contains-deprecated-header desktop-entry-missing-required-key doc-base-document-field-ends-in-whitespace doc-base-file-duplicated-format doc-base-file-lacks-required-field doc-base-file-no-format doc-base-file-no-format-section doc-base-file-no-index doc-base-file-references-missing-file doc-base-file-unknown-field doc-base-file-unknown-format doc-base-file-uses-obsolete-national-encoding doc-base-index-references-multiple-files doc-base-invalid-document-field doc-base-unknown-section menu-file-in-usr-lib menu-item-missing-required-tag menu-item-needs-tag-has-unknown-value menu-method-should-include-menu-h non-wm-module-in-wm-modules-menu-section package-contains-upstream-install-documentation postinst-does-not-call-updatemenus postrm-does-not-call-updatemenus su-to-root-with-usr-sbin su-wrapper-not-su-to-root su-wrapper-without--c unquoted-string-in-menu-item debconf newer-debconf-templates udeb-postinst-must-not-call-ldconfig unknown-encoding-in-po-file debug binary-with-bad-dynamic-table sharedobject-in-library-directory-missing-soname symbols-declared-but-not-shlib symbols-declares-dependency-on-other-package unknown-meta-field-in-symbols-file unused-shlib-entry-in-symbols-control-file etcfiles fields filenames bad-menu-file-name desktop-file-in-wrong-dir package-contains-devhelp-file-without-symlink package-installs-packlist use-of-compat-symlink windows-thumbnail-database-in-package wrong-file-owner-uid-or-gid foo++ libbaz maintainer-scripts init.d-script-not-included-in-package init.d-script-not-marked-as-conffile output-of-updaterc.d-not-redirected-to-dev-null postrm-contains-additional-updaterc.d-calls postrm-does-not-call-updaterc.d-for-init.d-script preinst-calls-updaterc.d prerm-calls-updaterc.d relations scripts duplicate-updaterc.d-calls-in-postrm init.d-script-has-bad-lsb-line init.d-script-has-duplicate-lsb-section init.d-script-has-unknown-lsb-keyword init.d-script-has-unterminated-lsb-section init.d-script-missing-lsb-keyword script-in-usr-share-doc script-with-language-extension lintian-2.5.22ubuntu1/t/scripts/0000775000000000000000000000000012314366011013403 5ustar lintian-2.5.22ubuntu1/t/scripts/Lintian/0000775000000000000000000000000012077065714015015 5ustar lintian-2.5.22ubuntu1/t/scripts/Lintian/Relation/0000775000000000000000000000000012310413144016552 5ustar lintian-2.5.22ubuntu1/t/scripts/Lintian/Relation/02-architecture.t0000664000000000000000000000044412077065714021662 0ustar #!/usr/bin/perl use strict; use warnings; use Test::More tests => 2; use Lintian::Relation; my $relation = Lintian::Relation->new_noarch('pkgA [i386], pkgB [amd64]'); ok($relation->implies('pkgA'), 'Implies arch alt [i386]'); ok($relation->implies('pkgB'), 'Implies arch alt [amd64]'); lintian-2.5.22ubuntu1/t/scripts/Lintian/Relation/04-multiarch.t0000664000000000000000000000311412310413144021147 0ustar #!/usr/bin/perl use strict; use warnings; use Test::More tests => 12; use Lintian::Relation; my $orig = 'pkgA:any, pkgB, pkgC:i386'; my $relation = Lintian::Relation->new($orig); ok($relation->implies('pkgA:any'), 'identity implies [pkgA]'); ok($relation->implies('pkgB'), 'identity implies [pkgB]'); ok(!$relation->implies('pkgC'), 'archless implies [pkgC]'); ok($relation->implies('pkgC:i386'), 'identity implies [pkgC]'); TODO: { local $TODO = ':X => :Y cases are not implemented'; ok($relation->implies('pkgA'), 'archless implies [pkgA]'); ok($relation->implies('pkgB:any'), 'arch any implies [pkgB]'); ok($relation->implies('pkgC:any'), 'arch any implies [pkgC]'); } is($relation->unparse, $orig, 'unparse eq original'); my @dups1 = Lintian::Relation->new('pkgD, pkgD:any')->duplicates; my @dups2 = Lintian::Relation->new('pkgD:i386, pkgD:any')->duplicates; my @dups3 = Lintian::Relation->new('pkgD:i386, pkgD')->duplicates; my @dups4 = Lintian::Relation->new('pkgD:i386, pkgD:i386 (>= 1.0)')->duplicates; is_deeply(\@dups3, [],'pkgD:i386 and pkgD are not dups'); is_deeply( \@dups4, [['pkgD:i386', 'pkgD:i386 (>= 1.0)']], 'Can detect pkgD:i386 dups' ); TODO: { local $TODO = ':X => :Y cases are not implemented'; is_deeply(\@dups1,[['pkgD', 'pkgD:any']],'pkgD and pkgD:any are dups'); is_deeply( \@dups2, [['pkgD:i386', 'pkgD:any']], 'pkgD:i386 and pkgD:any are dups' ); } # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/t/scripts/Lintian/Relation/01-basic.t0000664000000000000000000000041312077065714020254 0ustar #!/usr/bin/perl use strict; use warnings; use Test::More tests => 3; BEGIN { use_ok('Lintian::Relation'); } my $relation = Lintian::Relation->new('pkgA, altA | altB'); ok($relation->implies('pkgA'), 'Implies'); ok(!$relation->implies('altA'), 'Implies alt'); lintian-2.5.22ubuntu1/t/scripts/Lintian/Relation/03-duplicates.t0000664000000000000000000000057512077065714021343 0ustar #!/usr/bin/perl use strict; use warnings; use Test::More tests => 2; use Lintian::Relation; my $relationA = Lintian::Relation->new_noarch('pkgA, pkgB, pkgC, pkgA | pkgD'); my $relationB = Lintian::Relation->new_noarch('pkgA, pkgB, pkgC, pkgD | pkgE'); is_deeply($relationA->duplicates, (['pkgA', 'pkgA | pkgD']), 'Duplicates'); is($relationB->duplicates, 0, 'No duplicates'); lintian-2.5.22ubuntu1/t/scripts/Lintian/DepMap/0000775000000000000000000000000012310413144016143 5ustar lintian-2.5.22ubuntu1/t/scripts/Lintian/DepMap/03pending.t0000664000000000000000000000073312077065714020142 0ustar #!/usr/bin/perl use warnings; use strict; use Test::More tests => 5; use Lintian::DepMap; my $map = Lintian::DepMap->new(); $map->add('A'); is($map->pending(), 1, 'A added, one pending'); $map->add('B'); is($map->pending(), 2, 'B added, two pending'); $map->select('A'); is($map->pending(), 2, 'A selected, two pending'); $map->satisfy('B'); is($map->pending(), 1, 'B satisfied, one pending'); $map->satisfy('A'); is($map->pending(), 0, 'A satisfied, zero pending'); lintian-2.5.22ubuntu1/t/scripts/Lintian/DepMap/Properties/0000775000000000000000000000000012310413144020277 5ustar lintian-2.5.22ubuntu1/t/scripts/Lintian/DepMap/Properties/00construct.t0000664000000000000000000000113612310413144022651 0ustar #!/usr/bin/perl -w use strict; use warnings; use Test::More qw(no_plan); BEGIN { use_ok('Lintian::DepMap::Properties'); } my $map; ok(eval { $map = Lintian::DepMap::Properties->new(); }, 'Create'); my %prop = (name => 'John Doe', age => 20); ok($map->add('P1', \%prop), 'Add node with properties as a hash'); is_deeply($map->getp('P1'), \%prop, 'Properties are preserved'); ok($map->add('P2', 'P1'), 'Nodes can be added without properties'); ok(eval {$map->satisfy('P1');}, 'Nodes can be satisfied'); ok($map->addp('foo', 'P', '1', '2', {name => 'test'}), 'Nodes can be added with prefix'); lintian-2.5.22ubuntu1/t/scripts/Lintian/DepMap/01add-select-satisfy.t0000664000000000000000000000275212310413144022164 0ustar #!/usr/bin/perl use strict; use warnings; use Test::More tests => 24; BEGIN { use_ok('Lintian::DepMap'); } my $map; ok(eval { $map = Lintian::DepMap->new(); }, 'Create'); is_deeply([$map->selectable()], [], 'Empty, nothing is selectable'); is_deeply([$map->selected()], [], 'Empty, nothing has been selected'); ok($map->pending() == 0, 'Empty, nothing is pending'); is_deeply([$map->known()], [], 'Empty, nothing is known'); is_deeply([$map->missing()], [], 'Empty, nothing is missing'); ok(eval { $map->add('A'); }, 'Add A'); is_deeply([$map->selectable()], ['A'], 'A is selectable'); ok($map->pending() == 1, 'A is pending'); is_deeply([$map->known()], ['A'], 'A added, it is known'); is_deeply([$map->missing()], [], 'A added, it is not missing'); ok(eval { $map->select('A'); }, 'Select A'); is_deeply([$map->selectable()], [], 'A selected, nothing is selectable'); ok($map->selected('A'), 'A selected, A has been selected'); ok($map->pending() == 1, 'A selected, A is still pending'); is_deeply([$map->known()], ['A'], 'A selected, it is known'); is_deeply([$map->missing()], [], 'A selected, nothing is missing'); ok(eval { $map->satisfy('A'); }, 'Satisfy A'); is_deeply([$map->selectable()], [], 'A satisfied, nothing is selectable'); is_deeply([$map->selected()], [], 'A satisfied, nothing is selected'); ok($map->pending() == 0, 'A satisfied, nothing is pending'); is_deeply([$map->known()], ['A'], 'A satisfied, it is known'); is_deeply([$map->missing()], [], 'A satisfied, nothing is missing'); lintian-2.5.22ubuntu1/t/scripts/Lintian/DepMap/04satisfiability.t0000664000000000000000000000075112310413144021517 0ustar #!/usr/bin/perl -w use strict; use warnings; use Test::More tests => 4; use Lintian::DepMap; my $obj = Lintian::DepMap->new(); ok($obj->add('A', 'B'), 'Nodes can be added in any order'); eval {$obj->satisfy('Z')}; isnt($@, '', 'Nodes that were not added can not be satisfied'); eval {$obj->satisfy('B')}; isnt($@, '', 'Nodes that were not added and are missing() can not be satisfied'); ok(!$obj->satisfy('A'), 'Nodes can not be satisfied if they still have dependencies'); lintian-2.5.22ubuntu1/t/scripts/Lintian/DepMap/05multi-add.t0000664000000000000000000000121112310413144020350 0ustar #!/usr/bin/perl use warnings; use strict; use Test::More tests => 4; use Lintian::DepMap; my $map = Lintian::DepMap->new(); $map->add('A'); $map->add('B'); $map->add('C'); $map->add('D'); $map->add('D', 'A'); $map->add('D', 'B', 'C'); is_deeply( [sort($map->selectable)], ['A', 'B', 'C'], 'D has dependencies, not selectable' ); $map->satisfy('A'); is_deeply( [sort($map->selectable)], ['B', 'C'], 'A satisfied, B and C selectable' ); $map->satisfy('B'); is_deeply([$map->selectable()], ['C'], 'B satisfied, C selectable'); $map->satisfy('C'); is_deeply([$map->selectable()], ['D'], 'C satisfied, D now selectable'); lintian-2.5.22ubuntu1/t/scripts/Lintian/DepMap/06parents.t0000664000000000000000000000044412310413144020154 0ustar #!/usr/bin/perl use warnings; use strict; use Test::More tests => 2; use Lintian::DepMap; my $map = Lintian::DepMap->new(); $map->add('A'); $map->add('B', 'A'); my @parents; ok(eval {@parents = $map->parents('B'); }, q{Get B's parents}); is_deeply(\@parents, ['A'], q{B's parent is A}); lintian-2.5.22ubuntu1/t/scripts/Lintian/DepMap/08initialise2.t0000664000000000000000000000065112310413144020716 0ustar #!/usr/bin/perl -w use strict; use warnings; use Test::More tests => 2; use Lintian::DepMap; my $obj = Lintian::DepMap->new(); $obj->initialise(); $obj->add('A'); $obj->add('B', 'A'); $obj->satisfy('A'); $obj->initialise(); is(join(', ', $obj->selectable), 'A','Only A is selectable after reinitialising'); $obj->satisfy('A'); is(join(', ', $obj->selectable), 'B','B is selectable after A has been satisfied'); lintian-2.5.22ubuntu1/t/scripts/Lintian/DepMap/09unlink.t0000664000000000000000000000266212310413144020007 0ustar #!/usr/bin/perl use strict; use warnings; use Test::More tests => 15; use Lintian::DepMap; my $map; $map = Lintian::DepMap->new(); $map->add('A'); ok(eval {$map->unlink('A')}, 'Unlink A'); is_deeply([$map->selectable()], [], 'A unlinked, not selectable'); is($map->pending(), 0, 'A unlinked, nothing pending'); $map->add('B', 'A'); is_deeply([$map->selectable()], [], 'A unlinked, B added but not selectable'); is($map->pending(), 0, 'A unlinked, B added but not pending'); $map->add('A'); is_deeply([$map->selectable()], ['A'], 'A re-added, selectable'); is($map->pending(), 1, 'A re-added, pending'); $map->satisfy('A'); is_deeply([$map->selectable()], ['B'], 'A satisfied, B is now selectable'); # re-add A for the following tests $map->add('A'); ok(eval {$map->unlink('B')}, 'Unlink B'); is_deeply([$map->selectable()], ['A'], 'B unlinked, A selectable'); is($map->pending(), 1, 'B unlinked, pending'); $map->satisfy('A'); is_deeply([$map->selectable()], [], 'A satisfied, nothing selectable'); is($map->pending(), 0, 'A satisfied, nothing pending'); $map->add('A', 'B'); $map->add('B'); $map->unlink('B', 'soft'); ok(!$map->satisfy('A'), 'A cannot be satisfied because it depends on the soft-unlinked B'); TODO: { local $TODO = 'When re-adding B there are still references to the old B, and old $B != new $B'; $map->add('B'); $map->satisfy('B'); ok(eval {$map->satisfy('A')}, 'B re-added, A can be satisfied'); } lintian-2.5.22ubuntu1/t/scripts/Lintian/DepMap/12done.t0000664000000000000000000000055212310413144017422 0ustar #!/usr/bin/perl -w use strict; use warnings; use Test::More tests => 4; use Lintian::DepMap; my $obj = Lintian::DepMap->new(); $obj->add('A'); ok(!$obj->done('A'), 'A is not done yet'); ok(!$obj->done('B'), 'B is not done yet'); $obj->select('A'); ok(!$obj->done('A'), 'A is still not done'); $obj->satisfy('A'); ok($obj->done('A'), 'A is finally done'); lintian-2.5.22ubuntu1/t/scripts/Lintian/DepMap/10circular.t0000664000000000000000000000172612310413144020303 0ustar #!/usr/bin/perl use warnings; use strict; use Test::More tests => 5; use Lintian::DepMap; my $map = Lintian::DepMap->new(); $map->add('A', 'B'); $map->add('B', 'A'); is(join(', ', sort($map->circular)), 'A, B', 'A and B cause a circular dependency'); $map->add('C'); is(join(', ', sort($map->circular)), 'A, B', 'A and B cause a circular dependency (2nd)'); $map = Lintian::DepMap->new(); $map->add('A', 'B'); $map->add('B', 'C'); $map->add('C', 'A'); is(join(', ', sort($map->circular('deep'))), 'A, B, C', 'A, B and C cause a deep circular dependency'); TODO: { local $TODO = 'When C is unlinked, A and B are not reconsidered to be added to {"map"}'; # We break the circular dependency: $map->unlink('C'); is(join(', ', $map->circular('deep')), '', 'Deep circular dependency is now broken (w/o C)'); $map->add('C'); is(join(', ', $map->circular('deep')), '', 'C re-added, circular dependency still broken'); } lintian-2.5.22ubuntu1/t/scripts/Lintian/DepMap/11prefix.t0000664000000000000000000000047112310413144017771 0ustar #!/usr/bin/perl use warnings; use strict; use Test::More tests => 2; use Lintian::DepMap; my $map = Lintian::DepMap->new(); $map->add('pA'); $map->add('pB', 'pA'); ok(eval {$map->addp('foo', 'p', 'A')}, 'Add foo depending on "p"+"A"'); $map->satisfy('pA'); ok($map->selectable('foo'), 'foo is selectable'); lintian-2.5.22ubuntu1/t/scripts/Lintian/DepMap/08initialise.t0000664000000000000000000000162412310413144020635 0ustar #!/usr/bin/perl -w use strict; use warnings; use Test::More tests => 7; use Lintian::DepMap; my $obj = Lintian::DepMap->new(); ok($obj->initialise(), 'Map can be initialised'); $obj->add('A'); $obj->select('A'); $obj->initialise(); is(join(', ', $obj->selectable), 'A','A is selectable once again after being selected'); $obj->satisfy('A'); $obj->initialise(); is(join(', ', $obj->selectable), 'A','A is selectable once again after being satisfied'); $obj->add('B'); $obj->satisfy('B'); $obj->initialise(); is(join(', ', sort($obj->selectable)), 'A, B','A and B are selectable once again after being satisfied'); $obj->add('B', 'A'); $obj->satisfy('A'); $obj->initialise(); is(join(', ', $obj->parents('B')), 'A','A is parent of B'); $obj->add('Z', 'X'); $obj->initialise(); is(join(', ', $obj->missing()), 'X', 'X is unknown'); is(join(', ', sort($obj->known())), 'A, B, Z', 'X is not known'); lintian-2.5.22ubuntu1/t/scripts/Lintian/Util/0000775000000000000000000000000012310413144015712 5ustar lintian-2.5.22ubuntu1/t/scripts/Lintian/Util/path.t0000664000000000000000000000372112310413144017036 0ustar #!/usr/bin/perl use strict; use warnings; use Test::More tests => 18; # Lintian::Util exports fail, which clashes with Test::More, so we # have to be explicit about the import(s). BEGIN { use_ok('Lintian::Util', qw(normalize_pkg_path)); } # Safe - absolute is(normalize_pkg_path('usr/share/java', '/usr/share/ant/file'), 'usr/share/ant/file', 'Safe absolute path'); is(normalize_pkg_path('usr/share/ant', '/'), q{}, 'Safe absolute root'); # Safe - relative is(normalize_pkg_path('/usr/share/java', './file/.'), 'usr/share/java/file', 'Safe simple same-dir path'); is(normalize_pkg_path('/usr/share/java', '../ant/./file'), 'usr/share/ant/file', 'Safe simple relative path'); is( normalize_pkg_path( 'usr/share/java', '../../../usr/./share/../share/./ant/file' ), 'usr/share/ant/file', 'Safe absurd relative path' ); is( normalize_pkg_path( 'usr/share/java/../../../usr/./share/../share/./ant/file'), 'usr/share/ant/file', 'Safe absurd single path argument' ); is(normalize_pkg_path('usr/share/java', '.'), 'usr/share/java', 'Safe relative dot path'); is(normalize_pkg_path('/', '.'), q{}, 'Safe relative root dot'); is(normalize_pkg_path('/', 'usr/..'), q{}, 'Safe absurd relative root path'); is(normalize_pkg_path('usr/share/java', '../../../'), q{}, 'Safe absurd relative path to root'); is(normalize_pkg_path('.'), q{}, 'Safe single argument root dot'); is(normalize_pkg_path('/'), q{}, 'Safe single argument root slash'); is(normalize_pkg_path('usr/..'), q{},'Safe absurd single relative root path'); is(normalize_pkg_path('usr/share/java/../../../'), q{}, 'Safe absurd single relative path to root'); # Unsafe is(normalize_pkg_path('/usr/share/ant', '../../../../etc/passwd'), undef, 'Unsafe - relative escape root'); is(normalize_pkg_path('/usr/share/ant', '/../etc/passwd'), undef, 'Unsafe - absolute escape root'); is(normalize_pkg_path('/usr/../../etc/passwd'), undef, 'Unsafe - single path escape root'); lintian-2.5.22ubuntu1/t/scripts/Lintian/Util/data/0000775000000000000000000000000012310413144016623 5ustar lintian-2.5.22ubuntu1/t/scripts/Lintian/Util/data/pgp-malformed-header0000664000000000000000000000023412310413144022525 0ustar # Missing a dash in the end -----BEGIN PGP SIGNED MESSAGE---- Package: lintian -----BEGIN PGP SIGNATURE---- Some signature. -----END PGP SIGNATURE---- lintian-2.5.22ubuntu1/t/scripts/Lintian/Util/data/pgp-unexpected-header0000664000000000000000000000013612310413144022724 0ustar -----BEGIN PGP MESSAGE----- We are expecting a "SIGNED" message. -----END PGP MESSAGE----- lintian-2.5.22ubuntu1/t/scripts/Lintian/Util/data/pgp-eof-missing-sign0000664000000000000000000000012012310413144022501 0ustar -----BEGIN PGP SIGNED MESSAGE----- Package: lintian # Missing signature block lintian-2.5.22ubuntu1/t/scripts/Lintian/Util/data/pgp-no-end-pgp-header0000664000000000000000000000017412310413144022526 0ustar -----BEGIN PGP SIGNED MESSAGE----- Package: lintian -----BEGIN PGP SIGNATURE----- Some signature, missing an end marker. lintian-2.5.22ubuntu1/t/scripts/Lintian/Util/data/pgp-leading-unsigned0000664000000000000000000000027012310413144022546 0ustar Package: dpkg # Unsigned above, signed below (bad) -----BEGIN PGP SIGNED MESSAGE----- Package: lintian -----BEGIN PGP SIGNATURE----- Some signature. -----END PGP SIGNATURE----- lintian-2.5.22ubuntu1/t/scripts/Lintian/Util/data/pgp-two-signatures0000664000000000000000000000032312310413144022323 0ustar -----BEGIN PGP SIGNED MESSAGE----- Package: lintian -----BEGIN PGP SIGNATURE----- Some signature. -----END PGP SIGNATURE----- -----BEGIN PGP SIGNATURE----- Another signature. -----END PGP SIGNATURE----- lintian-2.5.22ubuntu1/t/scripts/Lintian/Util/data/pgp-two-signed-msgs0000664000000000000000000000040412310413144022357 0ustar -----BEGIN PGP SIGNED MESSAGE----- Package: lintian -----BEGIN PGP SIGNATURE----- Some signature. -----END PGP SIGNATURE----- -----BEGIN PGP SIGNED MESSAGE----- Package: dpkg -----BEGIN PGP SIGNATURE----- Aother signature. -----END PGP SIGNATURE----- lintian-2.5.22ubuntu1/t/scripts/Lintian/Util/data/pgp-sig-before-start0000664000000000000000000000013612310413144022507 0ustar Package: lintian -----BEGIN PGP SIGNATURE----- Some signature. -----END PGP SIGNATURE----- lintian-2.5.22ubuntu1/t/scripts/Lintian/Util/data/pgp-trailing-unsigned0000664000000000000000000000027012310413144022754 0ustar -----BEGIN PGP SIGNED MESSAGE----- Package: lintian -----BEGIN PGP SIGNATURE----- Some signature. -----END PGP SIGNATURE----- # Signed above, unsigned below (bad) Package: dpkg lintian-2.5.22ubuntu1/t/scripts/Lintian/Util/parse_bool.t0000664000000000000000000000162712310413144020232 0ustar #!/usr/bin/perl use strict; use warnings; use Test::More; BEGIN { use_ok('Lintian::Util', qw(parse_boolean)); } my @truth_vals = (qw( YES y TrUE 1 10 1 01 )); my @false_vals = (qw( No n 0 00 )); my @not_bools = ('', 'random-string', ' 0', '0 ', '1 ', ' 1'); foreach my $truth (@truth_vals) { eval {ok(parse_boolean($truth), "$truth should be true value");}; fail("$truth should be parsable as a bool") if $@; } foreach my $false (@false_vals) { eval {ok(!parse_boolean($false), "$false should be false");}; fail("$false should be parsable as a bool") if $@; } foreach my $not_bool (@not_bools) { eval { parse_boolean($not_bool); fail("$not_bool should not be parsed as a bool"); }; if ($@) { pass("$not_bool is not a boolean"); } } plan tests =>(1 + scalar @truth_vals + scalar @false_vals + scalar @not_bools); lintian-2.5.22ubuntu1/t/scripts/Lintian/Util/dctrl-parser.t0000664000000000000000000000331612310413144020504 0ustar #!/usr/bin/perl use strict; use warnings; use autodie; use Test::More; use Lintian::Util qw(visit_dpkg_paragraph); my $syntax_error = qr/syntax error at line \d+/; my %TESTS_BAD = ( #<<< no perl tidy (TODO: lines slightly too long) 'pgp-sig-before-start' => qr/${syntax_error}: PGP signature seen before start of signed message/, 'pgp-two-signatures' => qr/${syntax_error}: Two PGP signatures \(first one at line \d+\)/, 'pgp-unexpected-header' => qr/${syntax_error}: Unexpected .+ header/, 'pgp-malformed-header' => qr/${syntax_error}: Malformed PGP header/, 'pgp-two-signed-msgs' => qr/${syntax_error}: Expected at most one signed message \(previous at line \d+\)/, 'pgp-no-end-pgp-header' => qr/${syntax_error}: End of file but expected a "END PGP SIGNATURE" header/, 'pgp-leading-unsigned' => qr/${syntax_error}: PGP MESSAGE header must be first content if present/, 'pgp-trailing-unsigned' => qr/${syntax_error}: Data after the PGP SIGNATURE/, 'pgp-eof-missing-sign' => qr/${syntax_error}: End of file before "BEGIN PGP SIGNATURE"/, #<<< ); my $DATADIR = $0; $DATADIR =~ s,[^/]+$,,o; if ($DATADIR) { # invokved in some other dir $DATADIR = "$DATADIR/data"; } else { # current dir $DATADIR = 'data'; } plan skip_all => 'Data files not available' unless -d $DATADIR; plan tests => scalar keys %TESTS_BAD; foreach my $filename (sort keys %TESTS_BAD) { my $fail_regex = $TESTS_BAD{$filename}; my $path = "$DATADIR/$filename"; open(my $fd, '<', $path); eval { visit_dpkg_paragraph(sub {}, $fd); }; close($fd); if (my $err = $@) { like($err, $fail_regex, $filename); } else { fail("$path was parsed successfully"); } } lintian-2.5.22ubuntu1/t/scripts/Lintian/Lab/0000775000000000000000000000000012310413144015473 5ustar lintian-2.5.22ubuntu1/t/scripts/Lintian/Lab/data/0000775000000000000000000000000012310413144016404 5ustar lintian-2.5.22ubuntu1/t/scripts/Lintian/Lab/data/changes/0000775000000000000000000000000012310413144020014 5ustar lintian-2.5.22ubuntu1/t/scripts/Lintian/Lab/data/changes/lintian_2.5.10_source.changes0000664000000000000000000000731212310413144025172 0ustar Format: 1.8 Date: Sun, 17 Jun 2012 23:25:06 +0200 Source: lintian Binary: lintian Architecture: source Version: 2.5.10 Distribution: UNRELEASED Urgency: low Maintainer: Debian Lintian Maintainers Changed-By: Niels Thykier Description: lintian - Debian package checker Closes: 673276 678775 Changes: lintian (2.5.10) UNRELEASED; urgency=low . * Summary of tag changes: + Added: - incompatible-java-bytecode-format - unknown-java-class-version . * checks/changes-file.desc: + [NT] Fix typo in tag description. Thanks to Luca Falavigna for spotting it. * checks/files: + [NT] Use new gzip decompressor from L::Util. * checks/java{,.desc}: + [NT] Catch unknown Java class versions. + [NT] Catch uses of Java7 byte code as an experimental check. It lacks the proper checks for cases where packages have the proper dependencies for Java7 byte code. (Closes: #673276) . * collection/*: + [NT] Add missing loads of FileHandle module. * collection/java-info{,.desc}: + [NT] Use Archive::Zip instead of zipinfo + unzip to extract information from Jar files. + [NT] Limit java-info to files classified as "Zip Archive" by file(1). * collection/objdump-info: + [NT] Only call readelf once per binary. + [NT] Use xargs + a new helper to reduce the number of readelf calls even further. * collection/objdump-info-helper: + [NT] New file. * collection/strings: + [NT] Optimize for the "common case" file names with a fall-back to previous behaviour with special file names. * collection/strings-helper: + [NT] New file. . * debian/control: + [NT] Add (Build-)Dependency on libarchive-zip-perl. + [NT] Remove runtime dependency on unzip (replaced by libarchive-zip-perl). + [NT] Add explicit Build-Dependency on xz-utils instead of relying on dpkg-dev's dependency on it. + [NT] Add versioned xz-utils as alternative to xz-lzma or lzma. (Closes: #678775) + [NT] Add missing suggests for lzma packages. lzma is only used for source packages compressed with lzma. + [NT] Add suggests on libperlio-gzip-perl. . * frontend/lintian: + [NT] Check if some collections can be skipped for existing entries. This is mostly useful for static labs, where certain checks can be now be rerun without having to run "unpacked". + [NT] Emit run times of collections and checks with debug level 2 (or higher). + [NT] Load lintian's libraries earlier. + [NT] Add new option "--jobs" to control the number of unpacking jobs Lintian will schedule in parallel. + [NT] Improve Lintian's job scheduler to schedule unpacking jobs on a group level rather than just a package level. . * lib/Lintian/Collect/[Binary,Package}.pm: + [NT] Use new gzip decompressor from L::Util. * lib/Lintian/CollScript.pm: + [NT] New file. * lib/Lintian/Util.pm: + [NT] Add gzip decompressor preferring libperlio-perl if available, but with fallback to a "fork+exec" of gzip. + [NT] Load Digest::SHA immediately like Digest::MD5. Checksums-Sha1: b4b96b4d27c2cda31acf6d01b2e0654b6a09a132 1670 lintian_2.5.10.dsc 8ea77c3b4a81fcbb63bac6a0847c687d4ddf2534 1105415 lintian_2.5.10.tar.gz Checksums-Sha256: e15ca14cfbf30e0086cb5942b395f34a7d933e5668b3c7fa2b3900fed1ee98d2 1670 lintian_2.5.10.dsc 5b91379747dfb6a779e4117db4a5bfb41154e97854de11b21475ddd273343c9c 1105415 lintian_2.5.10.tar.gz Files: dda8d51e21900fd23393d2d4401e13d8 1670 devel optional lintian_2.5.10.dsc b99b2e42c3b933efb8b147745dabdc46 1105415 devel optional lintian_2.5.10.tar.gz lintian-2.5.22ubuntu1/t/scripts/Lintian/Lab/data/changes/lintian_2.5.11_amd64.changes0000664000000000000000000003063612310413144024613 0ustar Format: 1.8 Date: Tue, 11 Dec 2012 22:12:06 +0100 Source: lintian Binary: lintian Architecture: source all Version: 2.5.11 Distribution: experimental Urgency: low Maintainer: Debian Lintian Maintainers Changed-By: Niels Thykier Description: lintian - Debian package checker Closes: 623265 658474 660655 672273 673073 677874 677890 678639 678896 680391 681410 681769 681894 683224 683516 685497 686179 686352 687464 688320 688494 690014 690910 691489 692232 692616 693013 693442 693589 694328 Changes: lintian (2.5.11) experimental; urgency=low . * Summary of tag changes: + Added: - conffile-has-bad-file-type - debug-package-for-multi-arch-same-pkg-not-coinstallable - dm-upload-allowed-is-obsolete - field-name-typo-in-dep5-copyright - font-adobe-copyrighted-fragment - license-problem-json-evil - maintainer-script-has-unexpanded-debhelper-token - shlibs-uses-obsolete-relation - untranslatable-debconf-templates + Removed: - apparently-truncated-elf-binary - data.tar.xz-member-without-dpkg-pre-depends - debhelper-overrides-need-versioned-build-depends - no-source-field - preinst-uses-dpkg-maintscript-helper-without-predepends . * checks/*: + [NT] Remove assumption that lintian will chdir into the the lab before calling the check. + [NT] Be better at avoiding false-positive spelling errors for references to packages that also happen to be common spelling mistake. Thanks to Paul Tagliamonte for the report. (Closes: #687464) * checks/binaries{,.desc}: + [NT] Merge apparently-truncated-elf-binary into apparently-corrupted-elf-binary. + [NT] Remove some references to objdump in tag descriptions as Lintian uses readelf. + [JW,NT] Update the "extract SONAME" shell snippet to properly handle SONAMEs with uppercase letters. + [JW] Recognise any path with matching the GNU multi-arch triplet as a "Multi-arch: same"-safe directory. Thanks to Matthias Klose for the report. (Closes: #681410) * checks/changelog-file: + [NT] Emit "missing changelog" for packages that are missing their usr/share/doc// dir and do not have a doc symlink. Thanks to Faheem Mitha for the report. (Closes: #683224) * checks/conffiles{,.desc}: + [NT] Remove leading slash on the filename when emitting file-in-etc-rc.d-marked-as-conffile. + [NT] Add check for "non-file" conffiles. Thanks to Guillem Jover for the report. (Closes: #690910) * checks/control-file.desc: + [NT] Bump obsolete-relation-form-in-source to serious as these forms are now "must not" instead of "should not". * checks/copyright.desc: + [NT] Bump debian-copyright-file-uses-obsolete-national-encoding to serious as copyright files must now be UTF-8 encoded. * checks/cruft{,.desc}: + [NT] Detect MS-DOS executables as windows binaries. + [NT] Bump the version of config.{guess,sub} needed for triggering the "outdated-autotools-helper-file" tag for arm64 support. Thanks to Paul Wise for the report and the investigative work. (Closes: #690014) + [RA,NT] Extend the description of the tags {outdated,ancient}- autotools-helper-file to mention that dh-autoreconf might be helpful tool. + [NT] Apply patch from Bastien Roucariès to detect file licensed under the "Good, not Evil"-JSON license. (Closes: #692616) * checks/deb-format{,.desc}: + [NT] Retire data.tar.xz tag. (Closes: #680391) * checks/debhelper{,.desc}: + [JW,NT] Consider missing versioned build-depends on debhelper for compat 8 (or less) a pedantic issue. (Closes: #681894) + [NT] Retire debhelper-overrides-need-versioned-build-depends. * checks/fields{,.desc}: + [NT] Retire no-source-field since Lintian cannot emit it any more due to dpkg-source refusing to extract such source packages. + [NT] Add tag for using the obsolete DMUA field. Thanks to Ansgar Burchardt for the report. (Closes: #688494) + [NT] Apply patches from Bernhard R. Link to check for unintentional whitespace and use of non-cannical URIs in Vcs-* fields. (Closes: #681769) + [NT] Fix false-positive caused by insignificant whitespace. Thanks to Dima Kogan for the report. (Closes: #693589) * checks/files: + [RG] Recognise smarty3 as smarty itself. + [NT] Consider "tasksel tasks" as a meta package. (Closes: #691489) + [NT] Add patch from Bastien Roucariès to check for adobe font license issues. (Closes: #694328) * checks/group-checks{,.desc}: + [NT] Detect debug packages not co-installable with itself, when it provides debug symbols for a Multi-Arch: same package. Thanks to Carsten Hey for the report. (Closes: #678896) * checks/infofiles: + [NT] Use L::Util's gzip decompressor rather than zcat. * checks/init.d{,.desc}: + [NT] Move file-in-etc-rc.d-marked-as-conffile to conffiles check. + [NT] Use L::Collect's conffile API instead of accessing the "conffiles" control file directly. * checks/java.desc: + [NT] Remove the "experimental" marker of the Java byte-code check. * checks/manpages{,.desc}: + [CW,NT] Manually do redirects and chdir rather than invoking a shell when calling man and lexgrog. + [CW,NT] Be stricter with missing roff preprocessors by setting MANROFFSEQ to the empty string when calling man. + [CW,NT] Pass -Tutf8 -Z to man to skip an unused part of the groff pipeline. (Closes: #677874) + [CW,NT] Use the L::Util gzip decompressor to open gzipped manpages. * checks/menu-format{,.desc}: + [NT] Move a table of categories to a data file. + [NT] Update description of menu-icon-missing. Lintian is now sometimes able to find the icon in dependencies (if they are built from the same source). Thanks to Ryan Kavanagh for the report and the suggested patch. (Closes: #683516) * checks/md5sums: + [NT] Use L::Collect's conffile API instead of accessing the "conffiles" control file directly. * checks/po-debconf{,.desc}: + [NT] Check for untranslatable templates that should be translatable. Thanks to David Prévot for the report and the patch. (Closes: #686179) * checks/scripts{,.desc}: + [NT] Retire check for dpkg-maintscript-helper in preinst. (Closes: #685497) + [NT] Fix false positive "executable-not-elf-or-script" when the file is an executable hardlink to a script. + [NT] Check maintainer scripts for unexpanded #DEBHELPER# tokens. Thanks to Cyril "KiBi" Brulebois for the suggestion. + [NT] Fix false-positive for removal of device files as /dev/shm is not a device. Thanks to Steve Langasek for the report and Roger Leigh for the extra info. (Closes: #693442) * checks/shared-libs{,.desc}: + [NT] Clearify the description of dev-pkg-without-shlib-symlink to mention that the dev symlink is always expected in /usr. + [NT] Add missing "+" in libtool regex. Thanks to Leo 'costela' Antunes for the report. + [RA,NT] Check for use of obsolete "<" and ">" in shlibs control files. (Closes: #660655) * checks/source-copyright{,.desc}: + [NT] Check for possible misspellings of known field names. (Closes: #678639) + [NT] Fix typo of paragraph. Thanks to Logan Rosen for spotting it. (Closes: #693013) * checks/version-substvars{,.desc}: + [JW,NT] Extend version-substvar-for-external-package to all relations. Previously it was only triggered for strong dependnecy relations. (Closes: #658474) . * collection/deb-format.desc: + [NT] Remove unneeded changelog-file from "Needs-Info". * collection/objdump-info{,-helper,.desc}: + [NT] Change the output format for the collection and bump the version of the collection accordingly. + [NT] Apply patch from Peter Pentchev to ensure set{u,g}id ELF binaries are properly processed, even when Lintian is run as root. (Closes: #686352) . * data/binaries/embedded-libs: + [RG] Check for embedded copies of jsoncpp. * data/fields/archive-sections: + [NT] Add new "tasks" section. * data/menu-format/add-categories: + [NT] New file. * data/output/ftp-master-{,non}fatal: + [NT] Removed, not used at run time. * data/scripts/interpreters: + [NT] Add nodejs and Rscript as a known interpreter. Thanks to Marcelo Jorge Vieira and Sébastien Boisvert for the report. (Closes: #623265, #692232) * data/spelling/corrections: + [NT,RG] Add more corrections. + [RG] Re-sort the corrections. . * debian/control: + [NT] Add (Build-)Depends on libtext-levenshtein-perl. + [NT] Use anonscm.d.o in the Vcs-* fields instead of git.d.o. * debian/lintian.install: + [NT] Install Lintian perl modules in /usr/share/perl5. * debian/rules: + [NT] Add target to generate HTML API doc. Currently this is only run manually. . * frontend/lintian: + [NT] Remove chdir calls for checks. + [NT] Retire depreciated command line and config options. + [NT] Refactor unpackaging into Lintian::Unpacker. + [NT] Make parameter for --jobs optional. In its absence Lintian will not limit the number of parallel jobs. + [JW,NT] During the unpack phase, emit the name of the group currently being unpacked when --verbose is given. (Closes: #677890) + [JW] Fix typo of Parallelization. + [NT] Fix regression where --suppress-tags{,-from-file} was ignored if -C or -X was passed. Thanks to Thorsten Glaser for reporting it. (Closes: #688320) . * lib/Lintian/Collect{,/Source}.pm: + [NT] Add optional parameter to field (and X_field) methods that denotes the default value if a field is missing. This avoid some boiler plate for callers of the methods. * lib/Lintian/Collect/Binary.pm: + [NT] Bump API for objdump method. + [NT] Add API for checking if a file is considered a conffile. * lib/Lintian/Collect/Package.pm: + [NT] Strip leading slash off files extracted from tar. * lib/Lintian/Command.pm: + [NT] Work around a leak in IPC::Run (see #301774). * lib/Lintian/Internal/FrontendUtil.pm: + [NT] Always use Dpkg::Vendor to determine the default vendor. Previously dpkg-vendor would be preferred if available. * lib/Lintian/Lab/Entry.pm: + [NT] Use the L::Collect during creation instead of manually reading the dsc for source packages. * lib/Lintian/Profile.pm: + [NT] Add support for the new optional "Load-Checks" field in profiles. + [NT] Ensure that the "lintian" check is always loaded as these tags are not emitted by check modules. Also enable the tags from the check by default. * lib/Lintian/Tags.pm: + [NT] Be explicit about the reason when rejecting an override. Thanks to Yves-Alexis Perez for the report. (Closes: #673073) * lib/Lintian/Unpacker.pm: + [NT] New file. . * man/lintian.pod.in: + [NT] Remove documentation about removed options. . * reporting/graphs/{statistics,tags}.gpi: + [JP] New file. * reporting/html_reports: + [JP,NT] Generate graphs of the collected history data. (Closes: #672273) + [NT] Make the mirror name configurable. . * vendors/ubuntu/main/data/changes-file/known-dists: + [NT] Add "raring" as known Ubuntu distribution. Thanks to Dmitry Shachnev. (LP: #1068208) Checksums-Sha1: 850fcd4ceaf870dd6ac276c15c43b104dba52e9b 2602 lintian_2.5.11.dsc c83143fc76461efbdfd687ea63964c650de9511e 1140318 lintian_2.5.11.tar.gz 2148b6ee048eb28026990c33a25d16d2ea555d7e 733808 lintian_2.5.11_all.deb Checksums-Sha256: 482bf299f9e3e77467b06fe7a49e719d961584a4826db73a84333fe709a209a5 2602 lintian_2.5.11.dsc 91f96295eac39c4711a1e53715f9c4324539665ef8aa4c1500af5ba5efd39cd5 1140318 lintian_2.5.11.tar.gz 9f33060a392f8cf1adf8ed37041d66fe2a270d01732386ea5fbb3fe700c4670d 733808 lintian_2.5.11_all.deb Files: 8b4bd5c4bea641f0ff2f0d957fbbea78 2602 devel optional lintian_2.5.11.dsc 90000a9fc6b5a7061f63154a946f9b79 1140318 devel optional lintian_2.5.11.tar.gz 5bd3ff3eb29a80322a57cdbe2676bfbd 733808 devel optional lintian_2.5.11_all.deb lintian-2.5.22ubuntu1/t/scripts/Lintian/Lab/data/changes/lintian_2.5.9_amd64.changes0000664000000000000000000001020512310413144024530 0ustar Format: 1.8 Date: Fri, 15 Jun 2012 21:29:03 +0200 Source: lintian Binary: lintian Architecture: source all Version: 2.5.9 Distribution: unstable Urgency: low Maintainer: Debian Lintian Maintainers Changed-By: Niels Thykier Description: lintian - Debian package checker Closes: 675139 675358 675826 675832 676799 677142 677310 677649 Changes: lintian (2.5.9) unstable; urgency=low . * Summary of tag changes: + Added: - run-parts-cron-filename-contains-illegal-chars + Removed: - run-parts-cron-filename-contains-full-stop . * checks/*: + [NT] Migrate to new Lintian::Path API. * checks/fields: + [NT] Also classify lib*-cli-dev as belonging to the section cli-mono (rather than libdevel). Thanks to Chow Loong Jin for the report and the patch. (Closes: #675358) * checks/files{,.desc}: + [NT] Rename run-parts-cron-filename-contains-full-stop and have it catch "+" in the filename as well. Add reference to policy 9.5.1 in the tag description. * checks/init.d: + [NT] Use the proper regex for matching package names rather than an ad-hoc regex. Thanks to Thorsten Alteholz for the report and suggested patch. (Closes: #677142) * checks/shared-libs: + [NT] Reverse order of two subst expressions to prevent dev-pkg-without-shlib-symlink false positives. Thanks to Aurelien Jarno, Yves-Alexis Perez and Stephen M. Webb for the reports and the patch. (Closes: #675826, #677310, #675832) + [NT] Clarify that dev-pkg-without-shlib-symlink is emitted on library and not "-dev" packages. . * collection/hardening-info: + [NT] Process binaries with hardening-check via xargs. This greatly reduces the processing time for packages with many binaries (like some of the linux binaries). Thanks to Bastian Blank for the heads up. + [NT] Skip kernel modules (.ko files). * collection/hardening-info-helper: + [NT] New file. . * data/*: + [NT] Refresh with tools/data from sid. * data/scripts/interpreters: + [NT] Replace ngp2 with ngraph. Thanks to Koichi Akabe for the report. (Closes: #675139) * data/spelling/corrections: + [NT] Add corrections for usage, invocation(s) and ancient. . * debian/changelog: + [NT] raster-image-in-scalable-directory was added in 2.5.7, not removed. . * frontend/lintian{,-info}: + [NT] Remove assumption that $ENV{HOME} is set/defined. If $ENV{HOME} is not sent, user specific profiles will simply be ignored. * frontend/lintian: + [NT] Attempt to automatically determine what to process, if no packages are given and debian/changelog exists. Thanks to Gilles Filippini for the suggestion. (Closes: #676799) . * lib/Lintian/Check.pm: + [NT] Add regex to match valid package names. * lib/Lintian/Collect/Package.pm: + [NT] sorted_index now returns a list rather than a list ref. + [NT] Represent files (from index) as Lintian::Path objects. * lib/Lintian/Collect/Source.pm: + [NT] Recognise "Package-Type" as an alternative of the "X-" field of same name. Thanks to Christian Perrier for the report. (Closes: #677649) * lib/Lintian/Data.pm: + [NT] Gracefully handle the absence of $ENV{HOME}. * lib/Lintian/Path.pm: + [NT] New file. Checksums-Sha1: 5910ab721c5785b01400b3444cb9d6904ad6a876 2485 lintian_2.5.9.dsc 0f0de9cbf56a6702509a95c2c976ca8f6bafef47 1100166 lintian_2.5.9.tar.gz 40be3ed688b6d01c66bf9440fccefb5c32b189f3 702742 lintian_2.5.9_all.deb Checksums-Sha256: 9263501f00c3e3a762803375c8febc9cd651a34d4a3710f48e0d13266d3ead8d 2485 lintian_2.5.9.dsc bd5c285d46ab54588819879e10e16d301542162cc886939c29ec2a4da05b7357 1100166 lintian_2.5.9.tar.gz 6caf9ba0dd9b98713356d03818f844be36f4e58af44d14374ec1366631eb3a2a 702742 lintian_2.5.9_all.deb Files: 152a018943890d860377d5438d58f6fa 2485 devel optional lintian_2.5.9.dsc d5abfd1dbca688d0bcaa90890052b758 1100166 devel optional lintian_2.5.9.tar.gz 44934b36c0b11b01579cc4713772897c 702742 devel optional lintian_2.5.9_all.deb lintian-2.5.22ubuntu1/t/scripts/Lintian/Lab/data/changes/lintian_2.5.10_amd64.changes0000664000000000000000000000770512310413144024613 0ustar Format: 1.8 Date: Sat, 30 Jun 2012 17:21:27 +0200 Source: lintian Binary: lintian Architecture: source all Version: 2.5.10 Distribution: unstable Urgency: low Maintainer: Debian Lintian Maintainers Changed-By: Niels Thykier Description: lintian - Debian package checker Closes: 673276 678775 Changes: lintian (2.5.10) unstable; urgency=low . * Summary of tag changes: + Added: - incompatible-java-bytecode-format - unknown-java-class-version . * checks/changes-file.desc: + [NT] Fix typo in tag description. Thanks to Luca Falavigna for spotting it. * checks/files: + [NT] Use new gzip decompressor from L::Util. * checks/java{,.desc}: + [NT] Catch unknown Java class versions. + [NT] Catch uses of Java7 byte code as an experimental check. It lacks the proper checks for cases where packages have the proper dependencies for Java7 byte code. (Closes: #673276) . * collection/*: + [NT] Add missing load of the FileHandle module. * collection/java-info{,.desc}: + [NT] Use Archive::Zip instead of zipinfo + unzip to extract information from Jar files. + [NT] Limit java-info to files classified as "Zip Archive" by file(1). * collection/objdump-info: + [NT] Only call readelf once per binary. + [NT] Use xargs + a new helper to reduce the number of readelf calls even further. * collection/objdump-info-helper: + [NT] New file. * collection/strings: + [NT] Optimize for the "common case" file names with a fall-back to previous behaviour with special file names. * collection/strings-helper: + [NT] New file. . * debian/control: + [NT] Add (Build-)Dependency on libarchive-zip-perl. + [NT] Remove runtime dependency on unzip (replaced by libarchive-zip-perl). + [NT] Add explicit Build-Dependency on xz-utils instead of relying on dpkg-dev's dependency on it. + [NT] Add versioned xz-utils as alternative to xz-lzma or lzma. (Closes: #678775) + [NT] Add missing suggests for lzma packages. lzma is only used for source packages compressed with lzma. + [NT] Add suggests on libperlio-gzip-perl. . * frontend/lintian: + [NT] Check if some collections can be skipped for existing entries. This is mostly useful for static labs, where certain checks can be now be rerun without having to run "unpacked". + [NT] Emit run times of collections and checks with debug level 2 (or higher). + [NT] Load lintian's libraries earlier. + [NT] Add new option "--jobs" to control the number of unpacking jobs Lintian will schedule in parallel. + [NT] Improve Lintian's job scheduler to schedule unpacking jobs on a group level rather than just a package level. . * lib/Lintian/Collect/[Binary,Package}.pm: + [NT] Use new gzip decompressor from L::Util. * lib/Lintian/CollScript.pm: + [NT] New file. * lib/Lintian/Util.pm: + [NT] Add gzip decompressor preferring libperlio-perl if available, but with fallback to a "fork+exec" of gzip. + [NT] Load Digest::SHA immediately like Digest::MD5. Checksums-Sha1: ea252bf1960aed48a93766b7bdc6a0c9f18f51d1 2556 lintian_2.5.10.dsc 4fc358f2aeb6b797f580b75a254390f7cf2f7551 1105393 lintian_2.5.10.tar.gz 736dc7b2ef09398327ea270bdcb1b51ccf479758 707676 lintian_2.5.10_all.deb Checksums-Sha256: b29adb3b1eadbc00be0274f09f5345954e1340672e76f7b3f56af2b153a08b74 2556 lintian_2.5.10.dsc 249f1a23d14d824151181728cc026e0971a5960ce7f7b1b383cc1e42e4244961 1105393 lintian_2.5.10.tar.gz d1405f3aeffe079c75d2a2ee56666b3e6f20eb3e3ce5c77f7888bf4838400f31 707676 lintian_2.5.10_all.deb Files: 8767bfbf1b004474936eb319b60f8dae 2556 devel optional lintian_2.5.10.dsc 5dd1d5ca1ab71f672b34992e249064ca 1105393 devel optional lintian_2.5.10.tar.gz e45c47e1110e05f76dc7df35f5f501c4 707676 devel optional lintian_2.5.10_all.deb lintian-2.5.22ubuntu1/t/scripts/Lintian/Lab/data/changes/lintian_2.5.8_amd64.changes0000664000000000000000000001142512310413144024534 0ustar Format: 1.8 Date: Tue, 29 May 2012 11:49:47 +0200 Source: lintian Binary: lintian Architecture: source all Version: 2.5.8 Distribution: unstable Urgency: low Maintainer: Debian Lintian Maintainers Changed-By: Niels Thykier Description: lintian - Debian package checker Closes: 662134 667895 669911 671387 673106 673109 673112 673198 673352 673449 673451 673611 673613 673862 Changes: lintian (2.5.8) unstable; urgency=low . Its like 2.5.7, only with less false positives and no FTBFS. . * checks/binaries{,.desc}: + [NT] Fix a too strict regex causing false-positives for biarch packages. This was a regression introduced in version 2.5.7. Thanks to Sven Joachim for reporting it. (Closes: #673106) + [NT] Demote certainty of hardening-no-stackprotector to wild-guess and move it to debian/extra-hardening profile. + [NT] Skip hardening-no-fortify-functions for binaries only using the unprotected memcpy. This greatly reduces the number of false positives for binaries compiled with gcc-4.7 -O2 (or higher optimization). (Closes: #673112) * checks/files: + [NT] Properly handle symlinks in icon directories. Thanks to Nicholas Breen for the report and Felix Geyer for the patches. (Closes: #673352) + [NT] Ignore wrong sizes on images in animations as it may be a method to implement the animation. Thanks to Matthias Klumpp for the report and Felix Geyer for the patch. (Closes: #673862) + [NT] Ignore wrong icon sizes if the size difference is at most 2px. Thanks to Felix Geyer for the patch. * checks/scripts: + [NT] Refactor the %versioned_interpreters into a new data file. * checks/shared-libs: + [NT] Fix false positive "dev-pkg-without-shlib-symlink" for shared libraries using "libtool -release X.Y". Thanks to Sven Joachim for the report. (Closes: #673109) + [NT] Fix false positive "dev-pkg-without-shlib-symlink" for shared libraries installed in /lib. Lintian now correctly expects the dev-symlink beneath /usr/lib. Thanks to Guillem Jover for the report. * checks/source-copyright: + [NT] Use the in-memory contents of the copyright file instead of re-reading the file when parsing it as a DEP-5 copyright file. . * collection/objdump-info{,.desc}: + [NT] Drop -D flag for readelf when looking for symbols. This makes some checks more reliable in Ubuntu. Thanks to Marc Deslauriers for the report and the patch. (Closes: #673451) . * debian/control: + [NT] Add versioned Build-Depends on dpkg-dev (>= 1.16.1~) as the test suite relies on it. Thanks to Luca Falavigna for reporting it. + [NT] Update the description to mention that the version of Lintian is calibrated for version 3.9.3 of the Policy. * debian/lintian.install: + [NT] Remove usr/share/lintian/data - Lintian does not need it and dpkg will not replace the dir with a symlink. . * data/scripts/interpreters: + [NT] Add falcon, gbr3, jython and ngp2 as known interpreters. (Closes: #669911, #671387, #662134, #667895) * data/scripts/versioned-interpreters: + [NT] New file. + [NT] Added python2.7 to the list of known Python 2 interpreters. * data/spelling/corrections: + [RA] Remove corrections for "writeable" and "overwriteable". These spellings are permitted by the OED in UK English. (Closes: #673611) + [NT] Add correction for "pointer". . * lib/Lintian/Collect/*.pm: + [NT] Localize "$_" to avoid truncating caller's variable. (Closes: #673613) . * t: + [NT] Generate empty ".so" files used in the test. This resolves an issue where dpkg-source would exclude them causing a FTBFS. (Closes: #673198) + [NT] Fix test failure in derivatives where some hardening flags are enabled by default. Thanks to Marc Deslauriers for the report and the patch. (Closes: #673449) Checksums-Sha1: de2ae82463727f45b3d28dce15b89bbea8fc641c 2485 lintian_2.5.8.dsc 576c06a94e7758e358a43b549b123052a7e49fdc 1092923 lintian_2.5.8.tar.gz d6f247358c070a7e37c9f22c84aee63fbfd816fb 697324 lintian_2.5.8_all.deb Checksums-Sha256: 20fd9f4084197aaa923af9a7bb7dba8cc06bd1ed307a16c8b14e275d91e1093f 2485 lintian_2.5.8.dsc b0a6016d9a0e5ba3ed1fc00cabd8b3be75c572fcfee7cd5079d06c64f626d343 1092923 lintian_2.5.8.tar.gz 587c014c2f87ea1359f139e5a37bce1acd0b1552d7c49ca0e54e5e8b24f57c5c 697324 lintian_2.5.8_all.deb Files: 71653df24991d1734fea17f3205ef042 2485 devel optional lintian_2.5.8.dsc 1121be8bcccaf75a571e4c17197bebbc 1092923 devel optional lintian_2.5.8.tar.gz 4fd057457a01384ffdc4fa39888f4f4d 697324 devel optional lintian_2.5.8_all.deb lintian-2.5.22ubuntu1/t/scripts/Lintian/Lab/data/changes/lintian_2.5.7_amd64.changes0000664000000000000000000002735312310413144024542 0ustar Format: 1.8 Date: Mon, 14 May 2012 23:45:08 +0200 Source: lintian Binary: lintian Architecture: source all Version: 2.5.7 Distribution: unstable Urgency: low Maintainer: Debian Lintian Maintainers Changed-By: Niels Thykier Description: lintian - Debian package checker Closes: 614034 628189 648777 649277 649852 650536 657402 660845 663516 664061 664471 664600 666207 666765 668546 671024 671537 672615 Changes: lintian (2.5.7) unstable; urgency=low . * Summary of tag changes: + Added: - apache2-configuration-files-need-conf-suffix - apache2-deprecated-auth-config - apache2-module-depends-on-real-apache2-package - apache2-module-does-not-depend-on-apache2-api - apache2-module-does-not-ship-load-file - apache2-reverse-dependency-calls-invoke-rc.d - apache2-reverse-dependency-calls-wrapper-script - apache2-reverse-dependency-ships-file-in-not-allowed-directory - apache2-reverse-dependency-uses-obsolete-directory - apache2-unparseable-dependency - apache2-unsupported-dependency - diff-contains-quilt-control-dir - hardening-no-fortify-functions - hardening-no-relro - hardening-no-stackprotector - non-standard-apache2-configuration-name - non-standard-apache2-module-package-name - rc-version-greater-than-expected-version - udeb-uses-unsupported-compression-for-data-tarball - web-application-depends-on-apache2-data-package - web-application-should-not-depend-unconditionally-on-apache2 + Removed: - ancient-dpkg-long-filenames-check - ancient-dpkg-predepends-check - bad-ubuntu-distribution-in-changes-file - binary-nmu-uses-old-version-style - debian-control-with-duplicate-fields - doc-base-file-references-usr-doc - duplicate-fields-in-templates - manpage-for-non-x11-binary-in-wrong-directory - manpage-for-x11-binary-in-wrong-directory - missing-dependency-on-install-info - obsolete-field - old-app-defaults-directory - old-style-copyright-file - old-style-example-dir - package-installs-file-to-usr-x11r6-bin - package-installs-font-to-usr-x11r6 - package-uses-obsolete-file - postinst-should-not-set-usr-doc-link - raster-image-in-scalable-directory - udeb-uses-non-gzip-data-tarball - x11-games-should-be-in-usr-games . * checks/*: + [NT] Remove some old tags that are no longer useful. (Closes: #663516) + [NT] Migrate to sorted_index from sorted_file_info. + [NT] Explicitly import needed subs from L::Util. * checks/apache2{,.desc}: + [NT] New files to check for apache2 related packages. Thanks to Arno Töll and Stefan Fritsch for the patches. (Closes: #668546) + [NT] This check is not enabled by default. It can be used via the debian/extra-apache2 profile. * checks/binaries{,.desc}: + [NT] Move embedded library data to a data file. + [NT] Add ELF hardening checks. Thanks to Kees Cook for report and the patches. (Closes: 650536) + [NT] Replace architecture tables with data files. + [JW] Check for missing Python3 numpy ABI dependency. (Closes: #671024) * checks/changelog-file: + [NT] Output the correct line number for the "line-too-long" tag. Thanks to Arno Töll for the report. (Closes: #657402) * checks/changes-file{,.desc}: + [NT] Remove Ubuntu specific handling of distribution names. Instead replace it with a more generalized one that derivatives can reuse by extending vendor specific data files. Thanks to Daniel Dehennin for the suggestion. (Closes: #648777) * checks/control-file: + [NT] Rewrote parts to use Lintian::Collect for fetching data. * checks/cruft{,.desc}: + [NT] Check for quilt control dirs in the debian packaging files. * checks/deb-format{,.desc}: + [NT] Replace old udeb compression tag with a more general one. (Closes: #664600) + [NT] Remove logic for checking if a deb is meant for Ubuntu. Instead unconditionally emit the tag and let the vendor profiles handle it. * checks/debconf: + [NT] Special case debconf providers for purge-debconf tag. Generally they cannot use db_purge in postrm (for obvious reasons), so the tag will be a false-positive in such cases. * checks/fields{,.desc}: + [NT] Add devref reference. + [NT] Remove special handling of the Ubuntu specific field, "original-maintainer". This field is now handled by vendor specific data files. (Closes: #649852) + [JW,NT] Check for common mistakes with preview release and release candidate versions. For non-native packages, this check is only done on initial uploads of new upstream releases. Thanks to Stefano Rivera and Julian Taylor for their additional suggestions. (Closes: #649277) * checks/filename-length.desc: + [ADB, NT] Reword description of package-has-long-file-name. Thanks to Andreas Beckmann for suggestion. * checks/files{,.desc}: + [NT] Remove "manual" lazy loads of data files. + [NT] Remove code for the uses-FHS-doc-dir tag. + [NT] Extend icon checks to all icon directories and look for raster images in "scalable" icon directories. Thanks to Paul Wise for the report and Felix Geyer for the patches. (Closes: #628189) * checks/group-checks: + [NT] Include Provides when checking for conflict relations. Thanks to Damyan Ivanov for the report. (Closes: #672615) * checks/java: + [NT] Ignore "codeless" jars if they appear to be maven javadoc jars. Thanks to Ludovic Claude for the patch. (Closes: #660845) * checks/lintian.desc: + [NT] Updated the description of the override tags. * checks/manpages{,.desc}: + [RA] Detect hyphen used as minus sign following a groff \f[C] font change. Thanks, Iustin Pop. (Closes: #664471) * checks/menu-format: + [NT] Move menu section lists into a data file. + [NT] If a package is missing a menu icon, check its direct strong dependencies built from the same source (if any) for the icon. This fixes false-positives menu-icon-missing in some cases. * checks/menus{,.desc}: + [NT] Remove "manual" lazy load of data file. * checks/nmu: + [NT] Remove Ubuntu specific code to handle their (lack of) NMUs. These tags are instead suppressed by the Ubuntu profile. * chekcs/rules: + [NT] Fix false-positive "ignores-make-clean-error" tag caused by using make with -C and a dir containing the letter "i". Thanks to Tobias Hansen for the report. (Closes: #671537) * checks/scripts{,.desc}: + [NT] Mention devref 6.4 in command-with-path-in-maintainer-script. Thanks to Arno Töll for the patch. + [NT] Do not emit unusual-interpreter if the package provides the interpreter itself. + [NT] Ignore the lack of exec bit on th debconf shell modules. * checks/standards-version.desc: + [NT] Add references to the Policy upgrading checklist. Thanks to Simon Paillard for the patch. . * collection/*: + [NT] Use Lintian::Collect to access the package index. * collection/bin-pkg-control{,.desc}: + [NT] Compress control-index file and bump version of bin-pkg-control. * collection/copyright-file: + [NT] Remove code to look for old-style copyright file. * collection/file-info{,.desc}: + [NT] Compress file-info output and bump version of file-info. * collection/hardening-info{,.desc}: + [NT] New files. Thanks to Kees Cook for the patch. * collection/index{,.desc}: + [NT] Compress index output and bump version of index. * collection/java-info{,.desc}: + [NT] Compress java-info output and bump version of java-info. * collection/objdump-info: + [NT] Use "fail" from Lintian::Util.pm rather than embedding a copy of it. + [NT] Use Lintian::Collect to find ELF files. + [NT] Replace all usage of objdump with readelf. (Closes: #614034) + [NT] Compress objdump-info output and bump version of objdump-info. * collection/strings{,.desc}: + [NT] Compress strings output and bump version of strings. . * data: + [NT] Move to vendors/debian/ftp-master-auto-reject and replace it with a symlink. * data/binaries/{arch-{64bit-equivs,regex},hardening-tags}: + [NT] New file. * data/binaries/embedded-libs: + [NT] New file. + [NT] Add libav libraries. Thanks to Andres Mejia for the suggestion and the suggested patch. (Closes: #666765) * data/changes-file/{debian-dists -> known-dists}: + [NT] Renamed file. * data/menu-format/menu-sections: + [NT] New file. . * debian/changelog: + [NT] Amend the 2.5.5 to mention that it also added the tag binaries-have-file-conflict. . * frontend/lintian: + [JW] Fix typo in error message. + [JW,NT] Fix handling of "override" option in the lintianrc file. (Closes: #666207) . * lib/Lintian/Architecture.pm: + [NT] Lazily evaluate the data file. * lib/Lintian/Collect/Package.pm: + [NT] Remove an extra level of quoting in index. + [NT] Remove root dir from sorted_index. + [NT] Keep trailing slash in dir names for file_info. * lib/Lintian/Collect/Binary.pm: + [NT] Remove sorted_file_info as sorted_index now produces an identical list. * lib/Lintian/Data.pm: + [NT] Lazily load data files. + [NT] Allow pre-process sub to alter existing value for a key by passing the previous value as third argument. + [NT] Allow vendor specific data files. They will be loaded from LINTIAN_ROOT/vendors/$profile/data. * lib/Lintian/Output{,/*}.pm: + [NT] Replace non-printables with "?" in output. * lib/Lintian/Profile.pm: + [NT] Normalize profile name and replace "parents" with "profile_list". The latter also includes the current profile name. * lib/Lintian/Tag/Info.pm: + [NT] Use Lintian::Data to load the manual-references data file instead using an ad-hoc parser. * lib/{Text_utils => Lintian/Tag/TextUtil}.pm: + [NT] Renamed module. * lib/{Util => Lintian/Util}.pm: + [NT] Renamed Util to Lintian::Util. + [JW] Consider duplicate fields a syntax error in dctrl files. Previously, duplicate fields were silently ignored (except when a separate tag would check for it). (Closes: #664061) + [NT] Stop exported a majority of all subs by default. . * profiles/ubuntu/main.profile: + [NT] Add a number of NMU related tags to the list of disabled tags. . * vendors/ubuntu/main/data/changes-file/known-dists: + [NT] New file based on data/changes-file/ubuntu-dists. + [ADB] Add "quantal" (Quetzal) * vendors/ubuntu/main/data/common/source-fields: + [NT] New file. * vendors/ubuntu/main/data/fields/{binary,udeb}-fields: + [NT] New files. Checksums-Sha1: 0b03babd3aa8571eb0af02af768f7c4fade12fbd 2462 lintian_2.5.7.dsc 3af1c36dbe4ae3dc7b70aa375107928c28c8555f 1087847 lintian_2.5.7.tar.gz 2ebf64764da8e9b03cea8555ec6db1cf5da38f59 692506 lintian_2.5.7_all.deb Checksums-Sha256: 0dd400eff2da35e2e1b39370a0edf8a918ce3e3cdd68b6be2fcb53ae8a143e5f 2462 lintian_2.5.7.dsc c56d7550e10acb7672708911c7636611d128ab7ec3eded8e70035737581f1a26 1087847 lintian_2.5.7.tar.gz 5fd3554d5e76aa70334a4a56f87c75fe6a287b9723d64330621d7a423fffb2a0 692506 lintian_2.5.7_all.deb Files: ab60445e9f6618d0b9349dbc8e3455c3 2462 devel optional lintian_2.5.7.dsc ec47bdf0735e61fffd0a582cd76cdb74 1087847 devel optional lintian_2.5.7.tar.gz af45b86b4b0a254ab0cb46fab4de2bbf 692506 devel optional lintian_2.5.7_all.deb lintian-2.5.22ubuntu1/t/scripts/Lintian/Lab/Manifest/0000775000000000000000000000000012310413144017241 5ustar lintian-2.5.22ubuntu1/t/scripts/Lintian/Lab/Manifest/02-io.t0000664000000000000000000000301712310413144020255 0ustar #!/usr/bin/perl use strict; use warnings; use Test::More; use Lintian::Lab::Manifest; my $DATADIR = $0; $DATADIR =~ s,[^/]+$,,o; if ($DATADIR) { # invokved in some other dir $DATADIR = "$DATADIR/data"; } else { # current dir $DATADIR = 'data'; } plan skip_all => 'Data files not available' unless -d $DATADIR; plan tests => 9; my $plist = Lintian::Lab::Manifest->new('changes'); my $olist = Lintian::Lab::Manifest->new('changes'); $plist->read_list("$DATADIR/changes1-info"); my @all; my $inmemdata; $plist->visit_all(sub { push @all, $_[1] }); is(@all, 3, 'Read 3 elements from the data file'); for (my $i = 0; $i < scalar @all; $i++) { my $no = $i + 1; is($all[$i], "pkg$no", "Element $no is pkg$no"); } ok( eval { $plist->write_list(\$inmemdata); $olist->read_list(\$inmemdata); 1; }, 'Wrote and read the data' ); SKIP: { my @pkeys; my @pval; my @oval; my $pv = sub { my ($v, @k) = @_; push @pval, $v; push @pkeys, \@k }; my $ov = sub { push @oval, $_[0] }; if ($@) { diag("Write/Read issue: $@"); skip 'Write test failed; the rest of the tests will not work', 4; } $plist->visit_all($pv); $olist->visit_all($ov); is_deeply(\@pval, \@oval, 'The lists contents the same elements'); for (my $i = 0 ; $i < scalar @pkeys ; $i++) { my $no = $i + 1; my $e = $plist->get(@{ $pkeys[$i] }); my $oe = $olist->get(@{ $pkeys[$i] }); is_deeply($e, $oe, "Element no. $no are identical"); } } lintian-2.5.22ubuntu1/t/scripts/Lintian/Lab/Manifest/data/0000775000000000000000000000000012077065714020172 5ustar lintian-2.5.22ubuntu1/t/scripts/Lintian/Lab/Manifest/data/changes1-info0000664000000000000000000000027412077065714022542 0ustar Lintian's list of changes packages in the archive--V1 pkg1;1.0;i386;pkg1_1.0.changes;1264616563 pkg2;1.0-1;i386;pkg1_1.0-1.changes;1264616564 pkg3;1.1-1;i386;pkg1_1.1-1.changes;1264616565 lintian-2.5.22ubuntu1/t/scripts/Lintian/Lab/Manifest/data/orig-list-info0000664000000000000000000000030712077065714022757 0ustar Lintian's list of changes packages in the archive--V1 modpkg;1.0-1;i386;modpkg1_1.0-1.changes;1264616564 oldpkg;1.0;i386;oldpkg_1.0.changes;1264616563 umodpkg;1.0;i386;umodpkg_1.0.changes;1264616567 lintian-2.5.22ubuntu1/t/scripts/Lintian/Lab/Manifest/data/new-list-info0000664000000000000000000000030712077065714022610 0ustar Lintian's list of changes packages in the archive--V1 modpkg;1.0-1;i386;modpkg1_1.0-1.changes;1264626564 newpkg;1.0;i386;oldpkg_1.0.changes;1264616563 umodpkg;1.0;i386;umodpkg_1.0.changes;1264616567 lintian-2.5.22ubuntu1/t/scripts/Lintian/Lab/Manifest/03-diff.t0000664000000000000000000000352612310413144020564 0ustar #!/usr/bin/perl use strict; use warnings; use Test::More; use Lintian::Lab::Manifest; my $DATADIR = $0; $DATADIR =~ s,[^/]+$,,o; if ($DATADIR) { # invokved in some other dir $DATADIR = "$DATADIR/data"; } else { # current dir $DATADIR = 'data'; } plan skip_all => 'Data files not available' unless -d $DATADIR; my $origm = Lintian::Lab::Manifest->new('changes'); my $newm = Lintian::Lab::Manifest->new('changes'); my $diff; my ($added, $changed, $removed); $origm->read_list("$DATADIR/orig-list-info"); $newm->read_list("$DATADIR/new-list-info"); $diff = $origm->diff($newm); # We are good to go :) plan tests => 12; $added = $diff->added; $changed = $diff->changed; $removed = $diff->removed; # Do we get the expected amount of changes ? is(@{$added}, 1, 'One new package'); is(@{$changed}, 1, 'One changed package'); is(@{$removed}, 1, 'One removed package'); # Are the names of the packages involved in the changes correct? is($added->[0][0], 'newpkg', 'The new package is "newpkg"'); is($changed->[0][0], 'modpkg', 'The changed package is "modpkg"'); is($removed->[0][0], 'oldpkg', 'The removed package is "oldpkg"'); # Do the change packages appear in the right lists? ok($newm->get(@{ $added->[0] }), 'The new package can be looked up in new-list'); is($origm->get(@{ $added->[0] }), undef, 'The new package cannot be looked up in orig-list'); ok($newm->get(@{ $changed->[0] }), 'The changed package can be looked up in new-list'); ok($origm->get(@{ $changed->[0] }), 'The changed package can be looked up in orig-list'); is($newm->get(@{ $removed->[0] }), undef, 'The old package cannot be looked up in new-list'); ok($origm->get(@{ $removed->[0] }), 'The old package can be looked up in orig-list'); # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/t/scripts/Lintian/Lab/Manifest/01-basic.t0000664000000000000000000000222112310413144020722 0ustar #!/usr/bin/perl use strict; use warnings; use Test::More tests => 7; BEGIN { use_ok('Lintian::Lab::Manifest'); } my $plist = Lintian::Lab::Manifest->new('changes'); my $input = { 'source' => 'src', 'version' => '0.10', 'file' => 'src_0.10.changes', 'architecture' => 'i386', # Release date of S-V 3.8.4 (according to our data files) 'timestamp' => '1264616563', 'random-field' => 'hallo world', }; my $output; my @contents; my @keys; my $orig_file = $input->{'file'}; # save for later $plist->set($input); # Collect all entries and their keys $plist->visit_all(sub { my ($v, @k) = @_; push @contents, $v; push @keys, \@k} ); is(@contents, 1, 'Contents one element'); is($contents[0]->{'source'}, $input->{'source'}, 'Element has the right name'); # Change input, output should be unaffected $input->{'file'} = 'lalalala'; $output = $plist->get(@{ $keys[0] }); ok($output, 'get returns a defined object'); is($output->{'source'}, $input->{'source'}, 'Input{source} eq Output{source}'); isnt($output->{'random-field'}, 'Output contains random-field'); is($output->{'file'}, $orig_file,'Output{file} is unaffected by modification'); lintian-2.5.22ubuntu1/t/scripts/Lintian/Lab/repair.t0000775000000000000000000001026012310413144017144 0ustar #!/usr/bin/perl use strict; use warnings; use autodie qw(opendir closedir); use Test::More; use Lintian::Lab; use Lintian::Lab::Manifest; use Lintian::Processable::Package; my $DATADIR = $0; $DATADIR =~ s,[^/]+$,,o; if ($DATADIR) { # invokved in some other dir $DATADIR = "$DATADIR/data"; } else { # current dir $DATADIR = 'data'; } plan skip_all => 'Data files not available' unless -d $DATADIR; plan tests => 2; my $LAB_A = Lintian::Lab->new; my $LAB_B = Lintian::Lab->new; my $err = undef; eval { $LAB_A->create({ 'keep-lab' => 1}); $LAB_B->create({ 'keep-lab' => 1}); subtest 'Lab test' => \&do_tests; }; $err = $@ if $@; $LAB_A->remove if $LAB_A->exists; $LAB_B->remove if $LAB_B->exists; is($err, undef, 'Test had no errors'); exit 0; sub do_tests { # The grand scheme of things; import packages into Lab A. Check # that repair is "non-destructive" on a "good lab". Then close it; # swap the manifests of Lab A and B. Now they will both be wrong. # # Repair of A should result in the manifest being restored and repair # of B should result in the Lab being empty. my $full_manifest; my $empty_manifest; my $diff; my $added = 0; $LAB_A->open; $empty_manifest = $LAB_A->_get_lab_index('changes')->clone; opendir(my $dirfd, "$DATADIR/changes"); foreach my $pkgbase (readdir $dirfd) { next unless $pkgbase =~ m/\.(?:changes|u?deb|dsc)$/; my $path = "$DATADIR/changes/$pkgbase"; my $proc = Lintian::Processable::Package->new($path); my $entry = $LAB_A->get_package($proc); $entry->create; $added++; } closedir($dirfd); $full_manifest = $LAB_A->_get_lab_index('changes')->clone; $LAB_A->close; $diff = $empty_manifest->diff($full_manifest); cmp_ok(scalar @{ $diff->added }, '==', $added, 'Packages have been added to the lab'); $diff = undef; # Test that repair is non-destructive on a "mint condition" lab. $LAB_A->open; $LAB_A->repair; $diff = $full_manifest->diff($LAB_A->_get_lab_index('changes')); cmp_ok(scalar @{ $diff->added }, '==', 0, 'Lab A (mint): new appeared with repair'); cmp_ok(scalar @{ $diff->removed }, '==', 0, 'Lab A (mint): Nothing disappeared with repair'); # Currently nothing changes (no pun intended) when repairing; it # might in the future, but for now disallow it. cmp_ok(scalar @{ $diff->changed }, '==', 0, 'Lab A (mint): Nothing changed with repair'); $LAB_A->close; $diff = undef; # Time for the swap rename $LAB_A->dir . '/pool', $LAB_A->dir . '/pool-old' or die "rename LAB_A pool: $!"; rename $LAB_B->dir . '/pool', $LAB_A->dir . '/pool' or die "rename LAB_B -> LAB_A pool: $!"; rename $LAB_A->dir . '/pool-old', $LAB_B->dir . '/pool' or die "rename LAB_A -> LAB_B pool: $!"; # Test that repair restores entries that are available $LAB_A->open; $LAB_A->repair; $diff = $full_manifest->diff($LAB_A->_get_lab_index('changes')); cmp_ok(scalar @{ $diff->added }, '==', 0, 'Lab A (broken): Nothing new appeared with repair'); TODO: { local $TODO = 'Restoration not implemented yet'; cmp_ok(scalar @{ $diff->removed }, '==', 0, 'Lab A (broken): Nothing disappeared with repair'); } # Currently nothing changes (no pun intended) when repairing; it # might in the future, but for now disallow it. cmp_ok(scalar @{ $diff->changed }, '==', 0, 'Lab A (broken): Nothing changed with repair'); $LAB_A->close; $diff = undef; # Test that repair prunes missing entries from the manifest $LAB_B->open; $LAB_B->repair; $diff = $empty_manifest->diff($LAB_B->_get_lab_index('changes')); cmp_ok(scalar @{ $diff->added }, '==', 0, 'Lab B: Nothing new appeared with repair'); cmp_ok(scalar @{ $diff->removed }, '==', 0, 'Lab B: Nothing disappeared with repair'); # Currently nothing changes (no pun intended) when repairing; it # might in the future, but for now disallow it. cmp_ok(scalar @{ $diff->changed }, '==', 0, 'Lab B: Nothing changed with repair'); $LAB_B->close; return done_testing; } lintian-2.5.22ubuntu1/t/scripts/Lintian/Command/0000775000000000000000000000000012077065714016373 5ustar lintian-2.5.22ubuntu1/t/scripts/Lintian/Command/Simple/0000775000000000000000000000000012310413144017604 5ustar lintian-2.5.22ubuntu1/t/scripts/Lintian/Command/Simple/04-kill-multiple-jobs.t0000664000000000000000000000054212310413144023732 0ustar #!/usr/bin/perl use strict; use warnings; use Test::More tests => 2; use Lintian::Command::Simple qw(background kill_all wait_any); my $c = 4; my %jobs; while ($c) { my $pid = background('sleep', 10); $jobs{$pid} = $1; $c--; } is(kill_all(\%jobs), 4, '4 jobs were killed'); is(wait_any(\%jobs), undef, 'kill(hashref) kills and reaps'); lintian-2.5.22ubuntu1/t/scripts/Lintian/Command/Simple/03-multiple-jobs.t0000664000000000000000000000230512310413144022777 0ustar #!/usr/bin/perl use strict; use warnings; use Test::More tests => 22; use Lintian::Command::Simple qw(background wait_any); my $c = 4; my %jobs; while ($c) { my $pid = background('sleep', 1); $jobs{$pid} = 'value'; $c--; } while (my $value = wait_any(\%jobs)) { is($?, 0, 'One job terminated successfully'); is($value, 'value', 'wait_any returned the value'); $c++; } is($c, 4, '4 jobs were started, 4 reaped'); # again, but in list context while ($c) { my $pid = background('sleep', 1); $jobs{$pid} = "value $pid"; $c--; } while (my ($pid, $value) = wait_any(\%jobs)) { is($?, 0, "Pid $pid terminated successfully"); is($value, "value $pid", 'wait_any returned the right value'); $c++; } is($c, 4, '4 more jobs were started, 4 reaped'); # Make sure the case of an empty hash is handled properly # (i.e. undef is returned and no process is reaped) %jobs = (); my $pid = background('true'); is(wait_any(\%jobs), undef, 'With an empty hash ref, wait() returns undef'); is(my @list = wait_any(\%jobs), 0,'With an empty hash ref, in list context wait() returns null'); is(waitpid($pid, 0), $pid, 'Reap successful'); is($?, 0, 'Child returned successfully'); lintian-2.5.22ubuntu1/t/scripts/Lintian/Command/Simple/02-background.t0000664000000000000000000000042612310413144022331 0ustar #!/usr/bin/perl use strict; use warnings; use Test::More tests => 3; use Lintian::Command::Simple qw(background); my $pid = background('true'); cmp_ok($pid, '>', 0, 'Basic background (true)'); is(waitpid($pid, 0), $pid, 'Waiting for pid'); is($?, 0, 'Return status is 0'); lintian-2.5.22ubuntu1/t/scripts/Lintian/Command/Simple/01-basic.t0000664000000000000000000000030212310413144021263 0ustar #!/usr/bin/perl use strict; use warnings; use Test::More tests => 2; BEGIN { use_ok('Lintian::Command::Simple', 'rundir'); } is(rundir('/bin', './true'), 0, 'Basic run (cd /bin && ./true)'); lintian-2.5.22ubuntu1/t/scripts/pod-coverage.t0000775000000000000000000000352412310413206016145 0ustar #!/usr/bin/perl use strict; use warnings; use Test::More; plan skip_all => 'Not needed for coverage of Lintian' if $ENV{'LINTIAN_COVERAGE'}; eval 'use Test::Pod::Coverage'; plan skip_all => 'Test::Pod::Coverage is required for testing POD coverage' if $@; # Association of modules to check with additional regexes of private symbols. # If one is inclined, one can consider the presence of regexes as a TODO to # add underscores; personally, I (rra) think they make the code hard to read. our %MODULES =( 'Lintian::CheckScript' => [], 'Lintian::Collect' => [], 'Lintian::Collect::Group' => [], 'Lintian::Command' => [], 'Lintian::Command::Simple' => [], 'Lintian::Data' => [], 'Lintian::DepMap' => [], 'Lintian::DepMap::Properties' => [], 'Lintian::Lab' => [], 'Lintian::Lab::Entry' => [], 'Lintian::Lab::Manifest' => [], 'Lintian::Lab::ManifestDiff' => [], 'Lintian::Profile' => [], 'Lintian::Processable' => [qr/^new$/], 'Lintian::ProcessableGroup' => [], 'Lintian::ProcessablePool' => [], 'Lintian::Relation' => [qr/^parse_element$/,qr/^implies_(element|array)/], 'Lintian::Relation::Version' => [qr/^compare$/], 'Lintian::Tags' => [], 'Lintian::Tag::Info' => [], 'Lintian::Tag::Override' => [], ); # TODO: # Lintian::Collect::Binary # Lintian::Collect::Source # Lintian::Output # Lintian::Output::ColonSeparated # Lintian::Output::LetterQualifier # Lintian::Output::XML plan tests => scalar keys(%MODULES); # Ensure the following modules are documented: for my $module (sort keys %MODULES) { pod_coverage_ok( $module, { also_private => $MODULES{$module} }, "$module is covered" ); } lintian-2.5.22ubuntu1/t/scripts/01-critic/0000775000000000000000000000000012313551606015103 5ustar lintian-2.5.22ubuntu1/t/scripts/01-critic/checks.t0000777000000000000000000000000012310413206020357 2runner.plustar lintian-2.5.22ubuntu1/t/scripts/01-critic/collection.t0000777000000000000000000000000012310413206021252 2runner.plustar lintian-2.5.22ubuntu1/t/scripts/01-critic/private.t0000777000000000000000000000000012310413206020571 2runner.plustar lintian-2.5.22ubuntu1/t/scripts/01-critic/frontend.t0000777000000000000000000000000012310413206020736 2runner.plustar lintian-2.5.22ubuntu1/t/scripts/01-critic/runner.pl0000775000000000000000000000460612313551606016762 0ustar #!/usr/bin/perl # Simple critic test runner that guesses it task from $0. # NB: If you change anything in this script, consider if # others.t need an update as well. use strict; use warnings; use autodie; use POSIX qw(ENOENT); use if $ENV{'LINTIAN_COVERAGE'}, 'Test::More', 'skip_all' => 'Not needed for coverage of Lintian'; use Test::Lintian; use Test::More; plan skip_all => 'Only UNRELEASED versions are criticised' if should_skip(); eval 'use Test::Perl::Critic 1.00'; plan skip_all => 'Test::Perl::Critic 1.00 required to run this test' if $@; eval 'use Perl::Tidy 20130922'; # Actually we could just disable the perltidy check, but I am not # sure how to do that without making it ignore our perlcriticrc file. plan skip_all => 'Perl::Tidy 20130922 required to run this test' if $@; eval 'use PPIx::Regexp'; diag('libppix-regexp-perl is needed to enable some checks') if $@; my @test_paths = program_name_to_perl_paths($0); $ENV{'LINTIAN_TEST_ROOT'} //= '.'; my $critic_profile = "$ENV{'LINTIAN_TEST_ROOT'}/.perlcriticrc"; Test::Perl::Critic->import(-profile => $critic_profile); run_critic(@test_paths); exit(0); sub run_critic { my (@args) = @_; plan tests => scalar(@args); for my $arg (@args) { if (-d $arg) { # all_critic_ok emits its own plan, so run it in a subtest # so we can just count it as "one" test. subtest "Critic all code in $arg" => sub { all_critic_ok($arg); }; }elsif (-f _ ) { critic_ok($arg); }else { print STDERR "N: $arg\n"; die "$arg does not exists\n" if not -e _; die "$arg is of an unsupported file type\n"; } } # For some reason, perltidy has started to leave behind a # "perltidy.LOG" which is rather annoying. Lets have the tests # unconditionally kill those. eval { unlink('perltidy.LOG'); }; if (my $err = $@) { # Since this test is run in parallel, there is an # race-condition between checking for the file and actually # deleting. So just remove the file and ignore ENOENT # problems. die($err) if $err->errno != ENOENT; } return 1; } sub should_skip { my $skip = 1; open(my $fd, '-|', 'dpkg-parsechangelog', '-c0'); while (<$fd>) { $skip = 0 if m/^Distribution: UNRELEASED$/; } close($fd); return $skip; } lintian-2.5.22ubuntu1/t/scripts/01-critic/reporting.t0000777000000000000000000000000012310413206021130 2runner.plustar lintian-2.5.22ubuntu1/t/scripts/01-critic/helpers.t0000777000000000000000000000000012310413206020561 2runner.plustar lintian-2.5.22ubuntu1/t/scripts/01-critic/lib.t0000777000000000000000000000000012310413206017665 2runner.plustar lintian-2.5.22ubuntu1/t/scripts/01-critic/docs-examples.t0000777000000000000000000000000012311320604021663 2runner.plustar lintian-2.5.22ubuntu1/t/scripts/01-critic/commands.t0000777000000000000000000000000012310413206020720 2runner.plustar lintian-2.5.22ubuntu1/t/scripts/01-critic/test-scripts.t0000777000000000000000000000000012311320611021561 2runner.plustar lintian-2.5.22ubuntu1/t/scripts/pod.t0000775000000000000000000000106212310413206014347 0ustar #!/usr/bin/perl # # Test POD formatting. Taken essentially verbatim from the examples in the # Test::Pod documentation. use strict; use warnings; use Test::More; plan skip_all => 'Not needed for coverage of Lintian' if $ENV{'LINTIAN_COVERAGE'}; eval 'use Test::Pod 1.00'; plan skip_all => 'Test::Pod 1.00 required for testing POD' if $@; my $dir = $ENV{'LINTIAN_TEST_ROOT'} // '.'; my @POD_FILES = all_pod_files("$dir/lib", "$dir/doc/tutorial"); push(@POD_FILES, map { "$dir/man/$_" } 'lintian-info.pod', 'lintian.pod.in'); all_pod_files_ok(@POD_FILES); lintian-2.5.22ubuntu1/t/scripts/profile-load.t0000775000000000000000000000053012310413206016141 0ustar #!/usr/bin/perl # Test that all profiles are loadable... use strict; use warnings; use Test::More; use Test::Lintian; $ENV{'LINTIAN_TEST_ROOT'} //= '.'; # We could use a plan, but then we had to update every time we added # or removed a profile... test_load_profiles($ENV{'LINTIAN_TEST_ROOT'}, $ENV{'LINTIAN_TEST_ROOT'}); done_testing; lintian-2.5.22ubuntu1/t/scripts/ancient-sv-date.t0000775000000000000000000000343612310413206016556 0ustar #!/usr/bin/perl # # Test for keeping "ancient standards version" date # recent. # use strict; use warnings; use autodie; use Test::More; # How much out of date the check may be; measured in seconds # 1 month use constant ERROR_MARGIN => 3600 * 24 * 31; # How long before a SV is considered "Ancient" in seconds. # 2 years. use constant ANCIENT_AGE => 3600 * 24 * 365 * 2; use Date::Parse qw(str2time); # STOP! Before you even consider to make this run always # remember that this test will fail (causing FTBFS) every # "ERROR_MARGIN" seconds! # This check is here to remind us to update ANCIENT_DATE # in checks/standards-version every now and then during # development cycles! plan skip_all => 'Only checked for UNRELEASED versions' if should_skip(); plan tests => 2; $ENV{'LINTIAN_TEST_ROOT'} //= '.'; my $check = "$ENV{'LINTIAN_TEST_ROOT'}/data/standards-version/ancient-date"; my $found = 0; open(my $fd, '<', $check); while (my $line = <$fd>) { # We are looking for: # my $ANCIENT_DATE < '20 Aug 2009') $line =~ s,\#.*+,,o; if ( $line =~ m/ANCIENT \s* < \s* ([\s\w]+)/ox ) { my $date = $1; my $and = str2time($date) or die "Cannot parse date ($date, line $.): $!"; my $time = time - ANCIENT_AGE; $found = 1; cmp_ok($time, '<', $and + ERROR_MARGIN, 'ANCIENT_DATE is up to date'); cmp_ok( $time, '>', $and - ERROR_MARGIN, 'ANCIENT_DATE is not too far ahead' ); last; } } close($fd); die "Cannot find ANCIENT_DATE.\n" unless $found; sub should_skip { my $skip = 1; open(my $fd, '-|', 'dpkg-parsechangelog', '-c0'); while (<$fd>) { $skip = 0 if m/^Distribution: UNRELEASED$/; } close($fd); return $skip; } lintian-2.5.22ubuntu1/t/scripts/implemented-tags.t0000775000000000000000000000460212310415177017040 0ustar #!/usr/bin/perl # Copyright (C) 2009 by Raphael Geissert # Copyright (C) 2009 Russ Allbery # # This file 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 file 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 file. If not, see . use strict; use warnings; use Test::More; use Test::Lintian; # Exclude the following tags, which are handled specially and can't be # detected by this script. our $EXCLUDE =join( '|', qw(.*-script-but-no-.*-dep$ .*-contains-.*-control-dir$ ^maintainer-script-needs-depends-on.* .*-contains-.*-file$ .*-contains-cvs-conflict-copy$ .*-does-not-load-confmodule$ .*-name-missing$ .*-address-missing$ .*-address-malformed$ .*-address-looks-weird$ .*-address-is-on-localhost$ .*-address-causes-mail-loops-or-bounces$ ^wrong-debian-qa-address-set-as-maintainer$ ^wrong-debian-qa-group-name$ ^example.*interpreter.* ^example-script-.*$ ^example-shell-script-.*$ ^hardening-.*$ ^privacy-breach-.*$ ^maintainer-script-should-not-.*$ ^install-info-used-in-maintainer-script$ ^license-problem-json-evil$ ^license-problem-non-free-RFC$ ^license-problem-non-free-RFC-BCP78$ ^license-problem-nvidia-intellectual$ ^license-problem-gfdl-non-official-text$ ^maintainer-script-removes-device-files$ ^suidregister-used-in-maintainer-script$ ^debian-rules-should-not-.*$ ^source-contains-prebuilt-.*$ )); # Exclude "lintian.desc" as it does not have a perl module like other # checks. sub accept_filter { return !m,/lintian\.desc$,; } my $opts = { 'exclude-pattern' => $EXCLUDE, 'filter' => \&accept_filter, }; $ENV{'LINTIAN_TEST_ROOT'} //= '.'; test_tags_implemented($opts, "$ENV{LINTIAN_TEST_ROOT}/checks"); test_tags_implemented("$ENV{LINTIAN_TEST_ROOT}/doc/examples/checks"); done_testing; lintian-2.5.22ubuntu1/t/scripts/unpack-level.t0000775000000000000000000000523012310413206016154 0ustar #!/usr/bin/perl -w # Copyright (C) 2009 by Raphael Geissert # Copyright (C) 2009 Russ Allbery # # This file 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 file 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 file. If not, see . use strict; use warnings; use Test::More; use Lintian::CollScript; use Lintian::Util qw(read_dpkg_control slurp_entire_file); $ENV{'LINTIAN_TEST_ROOT'} //= '.'; # Find all of the desc files in either collection or checks. We'll do one # check per description. our @DESCS = ( glob("$ENV{LINTIAN_TEST_ROOT}/collection/*.desc>"), glob("$ENV{LINTIAN_TEST_ROOT}/checks/*.desc")); plan tests => scalar(@DESCS); my @l2refs = ( qr|->unpacked|,qr,qr, qr, ); # For each desc file, load the first stanza of the file and check that if # the unpack level is one no reference to unpack/ should be made, and if # it is level two then there should be a reference for my $desc (@DESCS) { my ($header) = read_dpkg_control($desc); my @needs; my $codefile = substr($desc, 0, -5); # Strip ".desc" if ($header->{'collector-script'}) { my $coll = Lintian::CollScript->new($desc); @needs = $coll->needs_info; } else { @needs = split(/\s*,\s*/, $header->{'needs-info'} || ''); } if ($desc =~ m/lintian\.desc$/) { ok(1, 'lintian.desc has valid needs-info for unpack level'); next; } if ($codefile !~ m{ /collection/ }xsm) { $codefile .= '.pm'; } my %ninfo = map {$_ => 1} @needs; my $code = slurp_entire_file($codefile); my $requires_unpacked = 0; for my $l2ref (@l2refs) { if ($code =~ m/$l2ref/) { $requires_unpacked = 1; last; } } my $short = $desc; $short =~ s,^\Q$ENV{LINTIAN_TEST_ROOT}\E/?,,; # it is ok that collection/unpacked doesn't depend on itself :) $requires_unpacked = 0 if ($short eq 'collection/unpacked.desc'); ok( $requires_unpacked ? defined($ninfo{'unpacked'}) : !defined($ninfo{'unpacked'}), "$short has valid needs-info for unpack level" ); } lintian-2.5.22ubuntu1/t/scripts/static-lab.t0000775000000000000000000000115412310413206015612 0ustar #!/usr/bin/perl use strict; use warnings; use File::Temp qw(tempdir); use Test::Simple tests => 4; $ENV{'LINTIAN_TEST_ROOT'} //= '.'; my $lintian_path = "$ENV{LINTIAN_TEST_ROOT}/frontend/lintian"; my $labdir = tempdir(CLEANUP => 1); $lintian_path = $ENV{'LINTIAN_FRONTEND'} if exists($ENV{'LINTIAN_FRONTEND'}); ok(system("$lintian_path --allow-root --lab $labdir --setup-lab") == 0, 'Create'); ok(system("$lintian_path --allow-root --lab $labdir --setup-lab") == 0, 'Renew'); ok(system("$lintian_path --allow-root --lab $labdir --remove-lab") == 0, 'Remove'); ok(system("rmdir $labdir") == 0, 'Rmdir'); lintian-2.5.22ubuntu1/t/scripts/needs-info-missing.t0000775000000000000000000001622212310413206017267 0ustar #!/usr/bin/perl # Copyright (C) 2009 by Raphael Geissert # Copyright (C) 2009 Russ Allbery # # This file 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 file 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 file. If not, see . use strict; use warnings; use autodie; use Test::More; use Lintian::Util qw(read_dpkg_control slurp_entire_file); $ENV{'LINTIAN_TEST_ROOT'} //= '.'; # Find all of the desc files in checks. We'll do one check per description. our @DESCS = ( glob("$ENV{LINTIAN_TEST_ROOT}/checks/*.desc"), glob("$ENV{LINTIAN_TEST_ROOT}/doc/examples/checks/my-vendor/*.desc"), glob("$ENV{LINTIAN_TEST_ROOT}/collection/*.desc")); our @MODULES = ( glob("$ENV{LINTIAN_TEST_ROOT}/lib/Lintian/Collect.pm"), glob("$ENV{LINTIAN_TEST_ROOT}/lib/Lintian/Collect/*.pm")); plan tests => scalar(@DESCS)+scalar(@MODULES); # Maps a sub to a Disjunctive Normal Form (DNF) of dependencies # e.g. "changelog-file,:field or debfiles,:field" # As it is a DNF, it is read as # "(changelog-file AND :field) OR (debfiles AND :field)". # # ":X" is a symbol dependency used in L::Collect{,::*}. It is useful # to declare an "indirect" dependency, so methods using (e.g.) the # "field" sub does not need to know what it depends on. my %needs_info; # Build the Needs-Info hash from the Collect modules for my $module (@MODULES) { my $pretty_module = $module; $pretty_module =~ s,^\Q$ENV{LINTIAN_TEST_ROOT}/lib/,,; open(my $fd, '<', $module); my (%seen_subs, %seen_needsinfo, @errors, @warnings); while (<$fd>) { if (m/^\s*sub\s+(\w+)/) { $seen_subs{$1} = 1; } # We use "# sub X Needs-Info Y" for "internal" methods and # the "Needs-Info requirements for using X: Y" for "public" # methods. The latter will appear in generated/processed # documentations. if ( m/^\s*\#\s*sub\s+(\w+)\s+Needs-Info\s+(.*)$/ or m/^\s*Needs-Info\s+requirements\s+for\s+using\s+ I\<(\w+)\>\s*:\s*(.*)\s*$/x ) { my ($sub, $all_info) = ($1, $2); $seen_needsinfo{$sub} = 1; # Allow some L<> linking - it makes the generated # api-doc's a bit better than just reading the source. $all_info =~ s,L\<[^\>]*/([A-Z0-9a-z_])+[^\>]*>,:$1,g; $all_info =~ s/\s//g; $all_info =~ s/,,/,/g; if ($all_info =~ m/[A-Z]\" (which was used previously). $all_info = '' if $all_info eq 'none'; if (exists($needs_info{$sub})) { if ($all_info ne $needs_info{$sub}) { $needs_info{$sub} .= " or $all_info"; } } else { $needs_info{$sub} = $all_info; } } } close($fd); if (scalar(@errors)) { ok(0, "$pretty_module has per-method needs-info") or diag(@errors); diag("\n", @warnings) if (@warnings); next; } for my $sub (keys %seen_subs) { if (exists($seen_needsinfo{$sub})) { delete $seen_needsinfo{$sub}; delete $seen_subs{$sub}; } } delete $seen_subs{'new'}; is(scalar(keys(%seen_subs)) + scalar(keys(%seen_needsinfo)), 0,"$pretty_module has per-method needs-info") or diag( 'Subs missing info: ', join(', ', keys(%seen_subs)), "\n", 'Info for unknown subs: ', join(', ', keys(%seen_needsinfo)),"\n" ); diag("\n", @warnings) if @warnings; } for my $desc (@DESCS) { my ($header) = read_dpkg_control($desc); my %needs= map { $_ => 1 } split(/\s*,\s*/, $header->{'needs-info'} || ''); my $codefile = substr($desc, 0, -5); # Strip ".desc" if ($desc =~ m/lintian\.desc$/) { pass('lintian.desc has all required needs-info for Lintian::Collect'); next; } if ($codefile !~ m{ /collection/ }xsm) { $codefile .= '.pm'; } my $code = slurp_entire_file($codefile); my %subs; while ($code =~ s/\$info\s*->\s*(\w+)//) { $subs{$1} = 1; } my @warnings; my $missing = 0; for my $sub (keys %subs) { if (exists($needs_info{$sub})) { my @miss = find_missing(\%needs, $needs_info{$sub}); if (@miss) { $missing++; foreach my $needed (@miss) { push @warnings, "$sub needs $needed\n"; } } } else { push @warnings, "Unknown method \$info->$sub\n"; } } my $short = $desc; $short =~ s,^\Q$ENV{LINTIAN_TEST_ROOT}/,,; $short =~ s,^collection/,coll/,; is($missing, 0, "$short has all required needs-info for Lintian::Collect") or diag(@warnings); } sub find_missing { my ($declared, $depends) = @_; my @missing = (); my @unchecked = ($depends); # Each $depline has the format "X,Y or Z", which is read as # "(X and Y) or Z". This is also known as "Disjunctive Normal Form" # (without negation). while (my $depline = pop @unchecked) { my @orlist = split m/\s+or\s+/o, $depline; my $ok = 0; ORDEP: foreach my $ordep (@orlist) { my @deps = split m/\s+,\s+/o, $ordep; while (my $dep = pop @deps) { # symbolic dependency ? if ($dep =~ s/^://) { # Handle with recursion if (find_missing($declared, $needs_info{$dep})) { # cannot satisfy this part of the relation next ORDEP; } next; } # ... "normal" dependency unless (exists $declared->{$dep}) { # cannot satisfy this part of the relation next ORDEP; } } $ok = 1; last; } if (not $ok) { push @missing, $depline; } } return @missing; } lintian-2.5.22ubuntu1/t/scripts/02-minimum-version/0000775000000000000000000000000012311332316016756 5ustar lintian-2.5.22ubuntu1/t/scripts/02-minimum-version/checks.t0000777000000000000000000000000012311332316022244 2runner.plustar lintian-2.5.22ubuntu1/t/scripts/02-minimum-version/collection.t0000777000000000000000000000000012311332316023137 2runner.plustar lintian-2.5.22ubuntu1/t/scripts/02-minimum-version/private.t0000777000000000000000000000000012311332316022456 2runner.plustar lintian-2.5.22ubuntu1/t/scripts/02-minimum-version/frontend.t0000777000000000000000000000000012311332316022623 2runner.plustar lintian-2.5.22ubuntu1/t/scripts/02-minimum-version/runner.pl0000775000000000000000000000100512311332316020623 0ustar #!/usr/bin/perl -w use strict; use warnings; use Test::Lintian; use Test::More; plan skip_all => 'Not needed for coverage of Lintian' if $ENV{'LINTIAN_COVERAGE'}; eval 'use Test::MinimumVersion'; plan skip_all => 'Test::MinimumVersion required to run this test' if $@; # squeeze => 5.10.1, Wheezy => 5.14.2 our $REQUIRED = 'v5.14.2'; my @test_paths = program_name_to_perl_paths($0); $ENV{'LINTIAN_TEST_ROOT'} //= '.'; all_minimum_version_ok($REQUIRED, { paths => \@test_paths, no_plan => 1}); done_testing(); lintian-2.5.22ubuntu1/t/scripts/02-minimum-version/reporting.t0000777000000000000000000000000012311332316023015 2runner.plustar lintian-2.5.22ubuntu1/t/scripts/02-minimum-version/helpers.t0000777000000000000000000000000012311332316022446 2runner.plustar lintian-2.5.22ubuntu1/t/scripts/02-minimum-version/lib.t0000777000000000000000000000000012311332316021552 2runner.plustar lintian-2.5.22ubuntu1/t/scripts/02-minimum-version/docs-examples.t0000777000000000000000000000000012311332316023550 2runner.plustar lintian-2.5.22ubuntu1/t/scripts/02-minimum-version/commands.t0000777000000000000000000000000012311332316022605 2runner.plustar lintian-2.5.22ubuntu1/t/scripts/02-minimum-version/test-scripts.t0000777000000000000000000000000012311332316023450 2runner.plustar lintian-2.5.22ubuntu1/t/scripts/pod-synopsis.t0000775000000000000000000000063112310413206016235 0ustar #!/usr/bin/perl use strict; use warnings; use Test::More; use Test::Pod; plan skip_all => 'Not needed for coverage of Lintian' if $ENV{'LINTIAN_COVERAGE'}; eval 'use Test::Synopsis'; plan skip_all => 'Test::Synopsis required for testing' if $@; $ENV{'LINTIAN_TEST_ROOT'} //= '.'; my @pod_files = all_pod_files("$ENV{'LINTIAN_TEST_ROOT'}/lib"); plan tests => scalar(@pod_files); synopsis_ok(@pod_files); lintian-2.5.22ubuntu1/t/scripts/check-descs.t0000775000000000000000000000234512310413206015746 0ustar #!/usr/bin/perl # Copyright (C) 2012 Niels Thykier # # 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. use strict; use warnings; use Test::More import => ['done_testing']; use Test::Lintian; $ENV{'LINTIAN_TEST_ROOT'} //= '.'; load_profile_for_test('debian/main', $ENV{'LINTIAN_TEST_ROOT'}); my $opts = {'coll-dir' => "$ENV{'LINTIAN_TEST_ROOT'}/collection",}; test_check_desc($opts, "$ENV{'LINTIAN_TEST_ROOT'}/checks"); test_check_desc($opts, "$ENV{'LINTIAN_TEST_ROOT'}/doc/examples/checks"); done_testing; lintian-2.5.22ubuntu1/t/scripts/profiles-coverage.t0000775000000000000000000000520512310413206017204 0ustar #!/usr/bin/perl # Test for complete coverage of tags in profiles # - side-effect, test that all tags and checks # in the profiles are valid. use strict; use warnings; use File::Find; use Test::More; use Lintian::Util qw(read_dpkg_control); # Test::More (also) exports fail my $root = $ENV{'LINTIAN_TEST_ROOT'} // '.'; my %CHECKS; my %TAGS; File::Find::find(\&check_wanted, "$root/checks"); File::Find::find(\&check_wanted, "$root/doc/examples/checks"); plan tests => scalar(keys %TAGS); File::Find::find(\&prof_wanted, "$root/profiles"); File::Find::find(\&prof_wanted, "$root/doc/examples/profiles"); foreach my $tag (sort keys %TAGS) { cmp_ok($TAGS{$tag}, '>', 0, $tag); } exit 0; ## SUBS ## sub parse_check { my ($desc) = @_; my ($header, @tags) = read_dpkg_control($desc); my $list = []; unless ($header->{'check-script'}) { fail("missing Check-Script field in $desc"); } $CHECKS{$header->{'check-script'}} = $list; for my $tag (@tags) { unless ($tag->{tag}) { fail("missing Tag field in $desc"); } push @$list, $tag->{tag}; $TAGS{$tag->{tag}} = 0; } return; } sub trim_split { my ($input) = @_; $input =~ s/^(?:\s|\n)++//o; $input =~ s/(?:\s|\n)++$//o; return split m/\s*,\s*/, $input; } sub parse_profile { my ($profile) = @_; my ($header, @section) = read_dpkg_control($profile); my $en_checks = $header->{'enable-tags-from-check'}//''; my $dis_checks = $header->{'disable-tags-from-check'}//''; my $en_tag = $header->{'enable-tags'}//''; my $dis_tag = $header->{'disable-tags'}//''; foreach my $check (trim_split($en_checks)) { die "Unknown check ($check) in $profile.\n" unless $CHECKS{$check}; foreach my $tag (@{$CHECKS{$check}}) { $TAGS{$tag}++; } } foreach my $tag (trim_split($en_tag)) { die "Unknown tag ($tag) in $profile.\n" unless exists $TAGS{$tag}; $TAGS{$tag}++; } # Check for unknown checks in the other fields foreach my $check (trim_split($dis_checks)) { die "Unknown check in $profile.\n" unless $CHECKS{$check}; } foreach my $tag (trim_split($dis_tag)) { die "Unknown tag ($tag) in $profile.\n" unless exists $TAGS{$tag}; } # ... and other fields foreach my $sect (@section) { foreach my $tag (trim_split($sect->{'tags'}//'')) { die "Unknown tag ($tag) in $profile.\n" unless exists $TAGS{$tag}; } } return; } sub check_wanted { parse_check($_) if -f && m/\.desc$/o; return; } sub prof_wanted { parse_profile($_) if -f && m/\.profile$/o; return; } lintian-2.5.22ubuntu1/t/scripts/version.t0000775000000000000000000000162312310413144015256 0ustar #! /usr/bin/perl use strict; use warnings; use Test::More tests => 13; use Lintian::Relation::Version qw(:all); ok(versions_equal('1.0', '1.0'), 'Basic equality'); ok(versions_equal('1.0', '1.00'), '0 == 00'); ok(versions_gte('1.1', '1.0'), 'Basic >='); ok(!versions_lte('1.1', '1.0'), 'Basic <='); ok(versions_gt('1.1', '1.0'), 'Basic >'); ok(!versions_lt('1.1', '1.1'), 'Basic <'); ok(versions_compare('1.1', '<=', '1.1'), 'compare() <='); ok(versions_compare('1.2', '>=', '1.1'), 'compare() >='); ok(versions_compare('0:1-1', '=', '1-1'), 'compare() = with epoch 0'); ok(versions_compare('2.3~', '<<', '2.3'), 'compare() << with tilde'); ok(!versions_compare('1:1.0', '>>', '1:1.1'), 'compare() >> with equal epoch'); ok( !versions_compare('1:1.1', '>>', '2:1.0'), 'compare() >> with different epochs' ); ok( versions_compare('1:1.1', '<<', '2:1.1'), 'compare() << with different epochs' ); lintian-2.5.22ubuntu1/t/scripts/check-load.t0000775000000000000000000000252512310413206015564 0ustar #!/usr/bin/perl # Copyright (C) 2012 Niels Thykier # # 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. use strict; use warnings; use Test::More import => ['done_testing']; use Test::Lintian; # Test that all checks can be loaded (except lintian.desc, which is # a special case). sub accept_filter { return !m,/lintian\.desc$,; } my $opts = {'filter' => \&accept_filter,}; $ENV{'LINTIAN_TEST_ROOT'} //= '.'; load_profile_for_test('debian/main', $ENV{'LINTIAN_TEST_ROOT'}); test_load_checks($opts, "$ENV{'LINTIAN_TEST_ROOT'}/checks"); test_load_checks("$ENV{'LINTIAN_TEST_ROOT'}/doc/examples/checks"); done_testing; lintian-2.5.22ubuntu1/t/scripts/needs-info-exists.t0000775000000000000000000000340612310413206017135 0ustar #!/usr/bin/perl # Copyright (C) 2009 by Raphael Geissert # Copyright (C) 2009 Russ Allbery # # This file 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 file 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 file. If not, see . use strict; use warnings; use Test::More; use Lintian::CollScript; use Lintian::Util qw(read_dpkg_control); $ENV{'LINTIAN_TEST_ROOT'} //= '.'; # collections rely on LINTIAN_ROOT being set... $ENV{'LINTIAN_ROOT'} = $ENV{'LINTIAN_TEST_ROOT'}; $ENV{'LINTIAN_HELPER_DIRS'} = "$ENV{'LINTIAN_TEST_ROOT'}/helpers"; # Find all of the desc files in collection. We'll do one check per # description. We don't check checks/*.desc because check-desc.t # handles that. our @DESCS = (glob("$ENV{LINTIAN_TEST_ROOT}/collection/*.desc")); plan tests => scalar(@DESCS); # For each desc file, load the first stanza of the file and check that all of # its Needs-Info script references exist. for my $desc (@DESCS) { my $coll = Lintian::CollScript->new($desc); my $name = $coll->name; my @needs = $coll->needs_info; my @missing; for my $coll (@needs) { unless (-f "$ENV{LINTIAN_TEST_ROOT}/collection/$coll") { push @missing, $coll; } } is(join(', ', @missing), '', "$name has valid needs-info"); } lintian-2.5.22ubuntu1/t/scripts/strict.t0000775000000000000000000000135112310413206015076 0ustar #!/usr/bin/perl -w use strict; use warnings; use autodie; use Test::More; eval 'use Test::Strict'; plan skip_all => 'Test::Strict required to run this test' if $@; { no warnings 'once'; $Test::Strict::TEST_WARNINGS = 1; } $ENV{'LINTIAN_TEST_ROOT'} //= '.'; # Files in commands check for the presence of LINTIAN_INCLUDE_DIRS in # BEGIN, so make sure it is present for them. $ENV{'LINTIAN_INCLUDE_DIRS'} = $ENV{'LINTIAN_TEST_ROOT'}; my @DIRS = map { "$ENV{'LINTIAN_TEST_ROOT'}/$_" } qw(lib private frontend helpers collection checks commands doc/examples/checks); all_perl_files_ok(@DIRS); # html_reports loads ./config, so we have do chdir before checking it. chdir("$ENV{'LINTIAN_TEST_ROOT'}/reporting"); all_perl_files_ok('.'); lintian-2.5.22ubuntu1/t/scripts/changelog-format.t0000775000000000000000000000777712310413206017025 0ustar #!/usr/bin/perl -w # Copyright (C) 2011 Raphael Geissert # # 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. use strict; use warnings; use Test::More; plan skip_all => 'Not needed for coverage of Lintian' if $ENV{'LINTIAN_COVERAGE'}; use Parse::DebianChangelog; my $changelog = Parse::DebianChangelog->init({ infile => 'debian/changelog' }) or BAIL_OUT('fatal error while loading parser'); plan skip_all => 'Only valid for regular Debian releases' if should_skip($changelog); my $changes = $changelog->dpkg()->{'Changes'}; my $line = 0; my $prev_head = ''; my $release_header = 0; my $is_release = 1; $is_release = 0 if $changelog->dpkg->{'Distribution'} eq 'UNRELEASED'; foreach (split /\n/,$changes) { # Parse::DebianChangelog adds an empty line at the beginning: next if ($_ eq ''); # P::DC adds a space too: s/^ //; $line++; if (m/^\s*$/o) { $release_header = 0; next; } # Ignore the reminder to generate the tag summary if ($line < 10 && m/XXX: generate tag summary/) { ok(!$is_release, 'No TODO-marker in changelog for tag summary!') or diag('Generate it with private/generate-tag-summary'); next; } my $spaces = 0; $spaces++ while (s/^\s//); cmp_ok(($spaces + length), '<=', 75, "Changelog line is not too long: line $line"); =meh # Disabled because Parse::DebianChangelog trims lines for us ok ($_ eq '' || m/[^\s]$/, 'No trailing space at the end of line') or diag("line: $line"); s/\s*$//; =cut if ($spaces == 2) { if (m/^\*/) { pass('line is a bullet list item'); ok(m/:$/, 'bullet item ends in colon') or diag("line: $line"); } elsif ($line == 3) { ok(m/^[A-Z\"]/, 'line is the release header') or diag("line: $line"); $release_header = 1; } else { # Unless this is a multi-line release header, it should # have been a bullet list. Also limit the length of the # release header. unless ($release_header && $line < 7) { fail('line is a bullet list item'); diag("line: $line"); } } } elsif ($spaces == 4) { ok(m/^\+/, 'line is a sub-item of a bullet-list item') or diag("line: $line"); } elsif ($spaces == 6) { if ($prev_head eq '+') { ok(m/^[^+*]/, 'line is a continuation of change description') or diag("line: $line"); } else { ok(m/^-/, 'line is a sub-item of tags summary') or diag("line: $line"); } } elsif ($spaces == 8) { ok($prev_head eq '-', 'line is a continuation of tag change') or diag("line: $line"); } else { ok(m/^(:?\.|lintian.+)$/, 'line is an entry header') or diag("line: $line"); } if (m/(\S\w)\. (.)/) { ok($2 eq ' ' || $1 !~ '/^\.[ge]$/', 'two spaces after a full stop') or diag("line: $line"); } if (m/^([*+-])/) { $prev_head = $1; } } done_testing(); sub should_skip{ my ($changelog) = @_; my $version = $changelog->dpkg->{'Version'}; # Normal releases look something like X.Y.Z or X.Y.Z~rcR return $version !~ m/^\d+(?:\.\d+)*(?:\~rc\d+)?$/o; } lintian-2.5.22ubuntu1/t/scripts/pod-spelling.t0000775000000000000000000000736212314366011016200 0ustar #!/usr/bin/perl use strict; use warnings; use autodie; use Test::More; plan skip_all => 'Not needed for coverage of Lintian' if $ENV{'LINTIAN_COVERAGE'}; plan skip_all => 'Need newer version of aspell-en (>= 7.1)' if not check_aspell(); use Test::Lintian; BEGIN { # If IPCRUNDEBUG is set to 'none', reset to 0. Unfortunately, # IPC::Run and IPC::Run3 reads the variables different and we end # up loading IPC::Run via Test::Lintian. $ENV{'IPCRUNDEBUG'} = 0 if exists($ENV{'IPCRUNDEBUG'}) && $ENV{'IPCRUNDEBUG'} eq 'none'; } eval 'use Test::Spelling'; plan skip_all => 'Pod spell checking requires Test::Spelling' if $@; my @GOOD_WORDS = grep {$_ ne ''} map { s/ \s* (?: [#] .* )? \Z//xsm; split(m/\s++/, $_); } ; add_stopwords(@GOOD_WORDS); chdir($ENV{'LINTIAN_TEST_ROOT'}//'.') or die("fatal error: could not chdir to $ENV{LINTIAN_TEST_ROOT}: $!"); my @CHECKS = glob('checks/*[!.]*[!c]'); my @DIRS = qw(collection doc/tutorial frontend lib private reporting t/scripts t/helpers); all_pod_files_spelling_ok(@CHECKS, @DIRS, 't/runtests'); sub check_aspell { # Ubuntu Precise has an old aspell-en, which does not recogise # "basic" stuff like "indices" or "extendable". my $ok = 0; open(my $fd, '-|', 'dpkg', '-l'); while (my $line = <$fd>) { if ($line =~ m/^.i \s+ aspell-en \s+ (\S+) \s/xsm) { my $version = $1; require Lintian::Relation::Version; import Lintian::Relation::Version qw(versions_gte); # Print the version of aspell-en if it is not new enough $ok = versions_gte($version, '7.1-0~') ||diag("Found aspell-en $version, want 7.1-0~ or newer"); } } close($fd); return $ok; } __DATA__ # List of extra words that aspell doesn't know, but we need it to know # about. Comments are stripped and lines are split on white space, so # multiple words can appear on the same line # Names of various people that appear in the POD docs Russ Allbery Barratt Braakman Brockschmidt Geissert Lichtenheld Niels Thykier Bastien ROUCARIES lintian Lintian Lintian's # ' # hi emacs dpkg libapt debian Debian DEBIAN # md is md5 butchered by aspell md # 'soft'ly which was parsed as soft'ly. soft'ly # ' # hi emacs # "util" is import tag ":util" from Lintian::Output, where aspell # dropped the ":". util # This is wrong in general, but it happens to be a package name that # we use as an example. alot # Other various names/fields/arguments/variables/expressions that # trips aspell. Ordered by nothing in particular PTS QA qa uploader uploaders UPLOADER Uploaders changelog changelogs desc COND CURVALUE subdirectory subdirectories udeb deb dsc nlist olist KEYN BASEDIR METADATA OO TODO dir exitcode nohang substvar substvars listref metadata blockingly checksum checksums Nativeness src nativeness Indep debfiles diffstat gz env classpath conffiles objdump tasksel filename Pre pre hardlink hardlinking hardlinks PROC dirs PROFNAME CHECKNAMES COLLMAP ERRHANDLER LPKG unpacker worklist BASEPATH stderr stdout stdin ascii html issuedtags subclasses showdescription printables overridable processables msg ORed SIGKILLs SIGTERM wildcard wildcards ar whitelist blacklist API amd armhf cpu linux whitelisted blacklisted shaX sha rstrip lstrip parsers customisation ALGO CLOC CMD DEBFILE DEST DSCFILE FOH NOCLOSE PARENTDIR PGP STARTLINE STR UTF bitmask cp debconf rw proccessable severities AND'ing # ' # this is getting old superset YYYY dirname operm username whitespace Whitespace udebs multiword recognised eqv testsuite methodx multi multiarch relationA relationB Multi natively unordered arg CVE autodie hashrefs namespace subdir SIGPIPE SIG blocknumber blocksub readwindow REMOVESLASH STAMPFILE TAGNAME TCODE TESTDATA BLOCKSIZE jN __END__ lintian-2.5.22ubuntu1/t/helpers/0000775000000000000000000000000012077065714013372 5ustar lintian-2.5.22ubuntu1/t/helpers/bin/0000775000000000000000000000000012310413206014121 5ustar lintian-2.5.22ubuntu1/t/helpers/bin/subst-dsc0000775000000000000000000000074712310413206015766 0ustar #!/usr/bin/perl use strict; use warnings; use lib "$ENV{'LINTIAN_TEST_ROOT'}/lib"; use Lintian::Util qw(get_file_checksum); my ($size, $sha1, $sha2, $md5); my ($tarfile) = @ARGV; $size = (stat $tarfile)[7]; $sha1 = get_file_checksum('sha1', $tarfile); $sha2 = get_file_checksum('sha256', $tarfile); $md5 = get_file_checksum('md5', $tarfile); while () { s/\@SIZE\@/$size/g; s/\@MD5\@/$md5/g; s/\@SHA256\@/$sha2/g; s/\@SHA1\@/$sha1/g; print $_; } exit 0; lintian-2.5.22ubuntu1/t/helpers/bin/create-deb0000775000000000000000000001701212310413206016043 0ustar #!/usr/bin/perl # create-deb -- helper tool for the lintian test suite # # Copyright (C) 2011 Niels Thykier # # This program is free software. It is distributed 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. use strict; use warnings; use Getopt::Long; use Cwd(); use List::MoreUtils qw(any); use lib "$ENV{'LINTIAN_TEST_ROOT'}/lib"; use Lintian::Util qw(get_dsc_info); # known compression styles my %TAR_OPTIONS = ( 'gz' => ['-z'], 'bz2' => ['-j'], 'lzma' => ['-I', 'lzma'], 'xz' => ['-I', 'xz'], ); # Permissions # Only added the files actually used in the test suite so far # - extend as needed my %PERM = ( 'control' => 0644, 'md5sums' => 0644, 'triggers' => 0644, 'isinstallable' => 0755, # udeb ); # default values my %val = ( 'compression' => 'gz', 'fix-perm' => 1, 'auto-build-data' => 1, ); # Accepted options my %opts = ( 'out-file|o=s' => \$val{'out-file'}, 'help|h' => sub { usage(); exit 0; }, 'root=s' => \$val{'root'}, 'tar-opts=s' => \$val{'tar-opts'}, 'auto-build-data!' => \$val{'auto-build-data'}, 'compression|c=s' => \$val{'compression'}, 'md5sums!' => \$val{'md5sums'}, 'fix-perm!' => \$val{'fix-perm'}, 'package-name=s' => \$val{'package-name'}, 'package-version=s' => \$val{'package-version'}, ); my ($cwd, $data, @taropt); Getopt::Long::config('bundling', 'no_getopt_compat', 'no_auto_abbrev'); GetOptions(%opts) or die "error parsing options\n"; die "Missing --out-file option\n" unless $val{'out-file'}; die "Needs either --root option or --auto-build-data\n" unless $val{'root'} || $val{'auto-build-data'}; die "Unknown compression \"$val{'compression'}\"\n" unless exists $TAR_OPTIONS{$val{'compression'}}; $val{'auto-build-data'} = 0 if $val{'root'}; if ($val{'auto-build-data'}) { die "Cannot find ./control.\n" unless ($val{'package-name'} && defined $val{'package-version'}) || -e './control'; } # default to "on" unless we are given an md5sums file explicitly $val{'md5sums'} = 1 unless defined $val{'md5sums'} || any { $_ eq 'md5sums'} @ARGV; $cwd = Cwd::cwd(); if ($val{'auto-build-data'}) { my $data = get_dsc_info('./control'); my $pkg = $val{'package-name'}; my $ver = $val{'package-version'}; my $dch = 'changelog'; unless ($pkg) { $pkg = $data->{'package'} || die join(q{ }, 'Cannot read package name from ./control', "or missing --package-name .\n"); } unless (defined $ver) { $ver = $data->{'version'}; die join(q{ }, 'Cannot read package version from ./control', "or missing --package-version .\n") unless defined $ver; } # handle non-native package $dch = 'changelog.Debian' if $ver =~ m/-/o; runsystem('mkdir', '-p', "root/usr/share/doc/$pkg"); foreach my $file ('copyright', $dch) { my $src = $file; $src = 'changelog' if $file eq 'changelog.Debian'; runsystem('install', '-m', '0644', $src, "root/usr/share/doc/$pkg/$file") if -e $src; } runsystem('gzip', '-n', '--best', "root/usr/share/doc/$pkg/$dch") if -e "root/usr/share/doc/$pkg/$dch"; # set root so it works for later :) $val{'root'} = 'root/'; } if ($val{'md5sums'}) { runsystem( join(q{ }, "cd $val{'root'}", '&& find -type f -a -! -ipath etc/ -print0', "| xargs -0 md5sum >> $cwd/md5sums")); push @ARGV, 'md5sums' if -s 'md5sums'; # only add if it is not empty. } # Create the data.tar.$ext $data = "data.tar.$val{'compression'}"; @taropt = split m/\s++/o, $val{'tar-opts'} if defined $val{'tar-opts'}; runsystem('tar', '-C', $val{'root'}, @taropt, @{ $TAR_OPTIONS{$val{'compression'}} }, '-cf', "$cwd/$data", '.'); # control.tar.gz unless (-e 'control.tar.gz') { if ($val{'fix-perm'}) { chown 0, 0, @ARGV; foreach my $f (@ARGV) { if (my $perm = $PERM{$f}) { chmod $perm, $f; } } } runsystem('tar', @taropt, '-czf', 'control.tar.gz', @ARGV); } # debian-binary open my $bv, '>', 'debian-binary' or die "opening debian-binary: $!"; print $bv "2.0\n"; close $bv or die "closing debian-binary: $!"; # ar the deb file runsystem('ar', 'rc', $val{'out-file'}, 'debian-binary', 'control.tar.gz', $data); exit 0; ### helpers ### sub usage { print < [--root ] control-file[... files] --root Everything in will be put in the data.tar --[no-]auto-build-data Auto-build a data.tar, cannot be used with --root. This is the default if --root is not given. -c, --compression The extension used for the data.tar; defaults to "gz" --help Prints usage info and exits -o, --out-file The name of the resulting deb file. --[no-]md5sums Whether to auto-generate an md5sums. This file will automatically be added to the control files if generated. This is on by default, unless an md5sums is passed. --[no-]fix-perm Whether to auto-fix permissions and owner for control files. Defaults to on. This will modify the perm of the actual controls passed! --package-name Assume the package name is . This overrides the value in the control file (and allows said value to be missing as well). --package-version Assume the package version is . This overrides the value in the control file (and allows said value to be missing as well). Creates a deb file from a root directory and some control files. The control files are assumed to be in the current directory or the resulting control.tar.gz may be messed up (which may, of course, be intentional). If control.tar.gz already exists, it will be reused instead of creating a new one. If --root is used, --auto-build-data is silently ignored. If --auto-build-data is used, it will take the changelog and copyright files from the current directory and build a data.tar. containing those files. In order to auto-build the package, the package field must be available in the control file and it will use "root/" as the storage for creating the data.tar.. Note: This writes debian-binary, data.tar. and control.tar.gz to the current directory. If --md5sums is in effect, it will also generate a md5sums in the current directory. Note: This does not use dpkg-deb, so it can be used to generate deb files that dpkg-deb would (now or in the future) refuse to build. EOF return; } sub runsystem { print "create-deb system: @_\n"; my $r = system @_; die "system @_ failed (exit status: " . (($r >> 8) & 0xff) .")\n" if $r; return; } lintian-2.5.22ubuntu1/COPYING0000664000000000000000000004310311750472245012517 0ustar GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 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, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. lintian-2.5.22ubuntu1/profiles/0000775000000000000000000000000012077065714013310 5ustar lintian-2.5.22ubuntu1/profiles/ubuntu/0000775000000000000000000000000012310413144014612 5ustar lintian-2.5.22ubuntu1/profiles/ubuntu/main.profile0000664000000000000000000000105412310413144017120 0ustar # The default profile for Ubuntu and derivatives thereof. Profile: ubuntu/main Extends: debian/main Disable-Tags: changelog-should-mention-nmu, debian-changelog-file-is-a-symlink, lzma-deb-archive, maintainer-address-causes-mail-loops-or-bounces, maintainer-upload-has-incorrect-version-number, no-upstream-changelog, qa-upload-has-incorrect-version-number, source-nmu-has-incorrect-version-number, team-upload-has-incorrect-version-number, uploader-address-causes-mail-loops-or-bounces, upstart-job-in-etc-init.d-not-registered-via-update-rc.d lintian-2.5.22ubuntu1/profiles/debian/0000775000000000000000000000000012310413206014511 5ustar lintian-2.5.22ubuntu1/profiles/debian/extra-hardening.profile0000664000000000000000000000020012314367573021166 0ustar # This profile is auto-generated Profile: debian/extra-hardening Extends: debian/main Enable-Tags: hardening-no-stackprotector lintian-2.5.22ubuntu1/profiles/debian/main.profile0000664000000000000000000000126612314367573017047 0ustar # This profile is auto-generated Profile: debian/main Extends: debian/ftp-master-auto-reject Enable-Tags-From-Check: apache2, automake, binaries, changelog-file, changes-file, conffiles, control-file, control-files, copyright-file, cruft, deb-format, debconf, debhelper, debian-readme, debian-source-dir, description, duplicate-files, fields, filename-length, files, group-checks, huge-usr-share, infofiles, init.d, java, lintian, manpages, md5sums, menu-format, menus, nmu, ocaml, patch-systems, phppear, po-debconf, rules, scripts, shared-libs, source-copyright, standards-version, symlinks, systemd, testsuite, version-substvars, watch-file Disable-Tags: hardening-no-stackprotector lintian-2.5.22ubuntu1/profiles/debian/ftp-master-auto-reject.profile0000664000000000000000000001132312314367573022420 0ustar # This profile is auto-generated Profile: debian/ftp-master-auto-reject Disable-Tags-From-Check: lintian Enable-Tags: FSSTND-dir-in-usr, FSSTND-dir-in-var, arch-dependent-file-in-usr-share, arch-independent-package-contains-binary-or-object, bad-package-name, bad-perm-for-file-in-etc-sudoers.d, bad-relation, bad-version-number, binary-file-compressed-with-upx, binary-in-etc, binary-or-shlib-defines-rpath, binary-with-bad-dynamic-table, build-info-in-binary-control-file-section, conflicting-negation-in-source-relation, control-file-has-bad-owner, control-file-has-bad-permissions, control-file-is-not-a-file, control-interpreter-in-usr-local, control-interpreter-without-depends, copyright-contains-dh_make-todo-boilerplate, copyright-file-compressed, copyright-file-is-symlink, copyright-refers-to-incorrect-directory, copyright-refers-to-old-directory, debian-control-file-uses-obsolete-national-encoding, debian-rules-missing-required-target, debian-rules-not-a-makefile, description-is-dh_make-template, description-synopsis-is-empty, dir-or-file-in-build-tree, dir-or-file-in-etc-opt, dir-or-file-in-home, dir-or-file-in-mnt, dir-or-file-in-opt, dir-or-file-in-run, dir-or-file-in-srv, dir-or-file-in-tmp, dir-or-file-in-var-lock, dir-or-file-in-var-run, dir-or-file-in-var-www, embedded-library, extended-description-is-empty, file-in-etc-not-marked-as-conffile, file-in-usr-marked-as-conffile, forbidden-postrm-interpreter, gzip-file-is-not-multi-arch-same-safe, install-info-used-in-maintainer-script, library-in-debug-or-profile-should-not-be-stripped, license-problem-json-evil, license-problem-md5sum-non-distributable-file, license-problem-md5sum-non-free-file, magic-arch-in-arch-list, maintainer-address-is-on-localhost, maintainer-address-malformed, maintainer-address-missing, maintainer-name-missing, maintainer-script-removes-device-files, malformed-deb-archive, md5sum-mismatch, missing-build-dependency, missing-dependency-on-libc, missing-dependency-on-perlapi, mknod-in-maintainer-script, no-architecture-field, no-copyright-file, no-maintainer-field, no-package-name, no-shlibs-control-file, no-version-field, non-etc-file-marked-as-conffile, non-standard-toplevel-dir, not-allowed-control-file, package-contains-ancient-file, package-contains-info-dir-file, package-has-no-description, package-installs-python-bytecode, package-not-lowercase, package-uses-local-diversion, preinst-interpreter-without-predepends, section-is-dh_make-template, source-contains-waf-binary, source-field-does-not-match-pkg-name, statically-linked-binary, symlink-has-too-many-up-segments, too-many-architectures, uploader-address-is-on-localhost, uploader-address-malformed, uploader-name-missing, usr-share-doc-symlink-to-foreign-package, usr-share-doc-symlink-without-dependency, wrong-file-owner-uid-or-gid Tags: FSSTND-dir-in-usr, FSSTND-dir-in-var, bad-package-name, bad-relation, bad-version-number, binary-file-compressed-with-upx, binary-in-etc, build-info-in-binary-control-file-section, conflicting-negation-in-source-relation, control-file-has-bad-owner, control-file-has-bad-permissions, control-file-is-not-a-file, control-interpreter-in-usr-local, copyright-file-compressed, copyright-file-is-symlink, copyright-refers-to-incorrect-directory, copyright-refers-to-old-directory, debian-control-file-uses-obsolete-national-encoding, debian-rules-missing-required-target, debian-rules-not-a-makefile, description-is-dh_make-template, description-synopsis-is-empty, dir-or-file-in-build-tree, dir-or-file-in-etc-opt, dir-or-file-in-home, dir-or-file-in-mnt, dir-or-file-in-opt, dir-or-file-in-run, dir-or-file-in-srv, dir-or-file-in-tmp, dir-or-file-in-var-lock, dir-or-file-in-var-run, extended-description-is-empty, file-in-etc-not-marked-as-conffile, file-in-usr-marked-as-conffile, forbidden-postrm-interpreter, library-in-debug-or-profile-should-not-be-stripped, license-problem-md5sum-non-distributable-file, license-problem-md5sum-non-free-file, magic-arch-in-arch-list, maintainer-address-is-on-localhost, maintainer-address-malformed, maintainer-address-missing, maintainer-name-missing, maintainer-script-removes-device-files, malformed-deb-archive, missing-dependency-on-perlapi, no-architecture-field, no-copyright-file, no-maintainer-field, no-package-name, no-version-field, not-allowed-control-file, package-contains-ancient-file, package-has-no-description, package-installs-python-bytecode, package-not-lowercase, package-uses-local-diversion, section-is-dh_make-template, source-field-does-not-match-pkg-name, symlink-has-too-many-up-segments, too-many-architectures, uploader-address-is-on-localhost, uploader-address-malformed, uploader-name-missing, usr-share-doc-symlink-to-foreign-package Overridable: no lintian-2.5.22ubuntu1/reporting/0000775000000000000000000000000012311320323013453 5ustar lintian-2.5.22ubuntu1/reporting/templates/0000775000000000000000000000000012310413206015453 5ustar lintian-2.5.22ubuntu1/reporting/templates/tags-severity.tmpl0000664000000000000000000000263412310413206021164 0ustar { head("Lintian Tags") }

Tags

This is a list of all tags that occur at least once in the archive sorted by severity and then by certainty. This includes all tags, even experimental and info tags.

{ my @tags = sort keys %tags; for my $severity (qw/serious important normal minor wishlist pedantic/) { for my $certainty (qw/certain possible wild-guess/) { my $heading = 0; for my $tag (@tags) { my ($first) = @{ $tags{$tag} }; next unless $first->{severity} eq $severity; next unless $first->{certainty} eq $certainty; unless ($heading) { $OUT .= "

Severity: $severity,"; $OUT .= " Certainty: $certainty

\n\n"; $OUT .= "
    \n"; $heading = 1; } my $packages = $stats{$tag}{'packages'}; my $count = $stats{$tag}{'count'}; my $overrides = $stats{$tag}{'overrides'}; $OUT .= qq(
  • $tag) . " ($packages packages, $count tags" . ($overrides > 0 ? ", plus $overrides overrides" : "") . ")
  • \n"; } if ($heading) { $OUT .= "
\n\n"; } } } } { foot() } lintian-2.5.22ubuntu1/reporting/templates/lintian.css.tmpl0000664000000000000000000001312612310413206020601 0ustar {{{ # NOTE - in this file, perl code must be within three braces rather than # the usual single brace. This was done because a single brace is rather # common in .css-files. NB: The braces cannot be escaped - see "DELIMITERS" # in Text::Template. # # To refer to a resource, use: # {{{resource_path('basename.png')}}} # NB: The path will be relative to the .css file. Usually something like # "../resources/.png" # # To refer to a file name relative to the .css file, use: # {{{$path_prefix}}}path/from/HTML_ROOT }}}/* lintian.css -- Style sheet for lintian.debian.org pages. */ /* # Table of Contents: # # 1. General styles (links, lists, titles, tables...) # 2. Header # 3. Navigation # 4. Main content # 5. Footer # 6. Other */ /* # Order: # # example { # display # position # width # height # margin # padding # background # color # font # text # line-height # border # } */ /* * 1. General styles */ body { margin: 0; padding: 0; color: #222; background-color: white; font-family: sans-serif; } h1, h2 { font-family: "Junicode", "FreeSerif", serif; } h2 { margin-bottom: 14px; padding-bottom: 6px; border-bottom: 2px solid #AAA; } h3 { margin: 5px 0 5px 10px; color: #444; font-size: 1.0em; } p { line-height: 1.4em; } a { color: #3252B2; } ul { margin: 0; } li { color: #333; } hr { display: none; } /* * 2. Header title */ #header { margin: 0 0 28px 0; padding: 5px 20px; background: #F3F3F3 url("{{{resource_path('logo-small.png')}}}") no-repeat right; border-bottom: 1px solid #AAA; } #header p { float: left; margin: 5px 0; color: #444; font-size: 1.0em; font-family: sans-serif; font-weight: bold; } #header p a { color: #444; text-decoration: none; } /* * 3. Navigation bar */ #nav { float: right; margin: 5px 55px 5px 0; padding: 0; } #nav li { display: inline; margin-left: 5px; } #nav a { padding: 3px 5px; color: #333; font-size: 0.9em; text-decoration: none; } #nav a:hover { background-color: #FBFBFB; border-bottom: 2px solid #D70751; } /* * 4. Main content */ #main { margin: 0 25px; font-size: 0.9em; line-height: 1.4em; } /* Front page */ #logo { text-align: center; } #index h2, #stats h2 { margin: 1.4em 0 0.4em 0; border: none; } #info { margin: 25px 0; padding: 20px; background: #EFF4F8 url("{{{resource_path('l.png')}}}") no-repeat left; border: 1px solid #DFE4E8; } #info p { margin-left: 130px; } #stats table { border-collapse: collapse; } #stats table tr td { padding: 3px 5px; background-color: #FDFDFD; border: 1px solid #CCC; } #stats td span { margin: 0 3px 0 0; padding: 1px 3px; font-family: monospace; } #stats div.graph { text-align: left; } /* Maintainer reports */ #summary { font-size: 0.9em; } #summary p { margin-top: 5px; font-size: 0.95em; } #summary ul { padding-left: 20px; } ul.report { padding-left: 20px; padding-bottom: 1em; } div.graph { text-align: center; } ul.tag { padding-bottom: 1em; } ul.report li { padding-left: 5px; padding-bottom: 6px; list-style: none; } ul.tag li { list-style: square; } li span { margin: 0 3px 0 0; padding: 1px 3px; font-family: monospace; } h1 span { padding: 1px 5px; font-family: monospace; font-size: 0.85em; font-weight: normal; } ul.extra { margin-bottom: 0; padding-bottom: 0; } ul.report li ul.extra li { padding-left: 0; padding-bottom: 1px; color: #444; list-style: square; } div.source-header { width: 100%; margin: 1.4em 0 14px 0; padding-bottom: 6px; border-bottom: 2px solid #AAA; } div.source-header p, div.source-header h2 { display: inline; border: none; } .info-links { margin-top: 0; } .info-links:before { content: "– "; } /* Tag type */ h2.tag { margin: 5px 0; padding: 0; color: #444; font-family: sans-serif; font-size: 1.0em; font-weight: normal; border: none; } h2.tag a { font-weight: bold; } h2.tag span.type-O { margin: 0 3px 0 0; padding: 2px 4px; color: #555; background: #EEE; font-family: monospace; font-size: 1.1em; font-weight: bold; border: 1px solid #DDD; } br.tag { padding-bottom: 1em; } /* E/W/I colors */ span.type-I { color: #111; background-color: #C7EA3C; } span.type-W { color: #111; background-color: #FFEB44; } span.type-E { color: #111; background-color: #FF6700; } span.type-X { color: #111; background-color: #EE99EE; } span.type-O { color: #111; background-color: #DDD; } span.type-P { color: #111; background-color: #C7EA3C; } li.type-O { color: #444; } blockquote { padding: 6px 16px; background-color: #EEE; border: 1px solid #DDD; } blockquote.type-I { background-color: #DFA; border: 1px solid #C7EA3C; } blockquote.type-W { background-color: #FFD; border: 1px solid #FFEB44; } blockquote.type-E { background-color: #FE9; border: 1px solid #FF6700; } blockquote.type-X { background-color: #FECCFE; border: 1px solid #DE66DE; } blockquote.type-P { background-color: #DFA; border: 1px solid #C7EA3C; } /* * 5. Footer */ #footer { margin: 20px 20px; padding: 10px 0 0 0; font-size: 0.85em; border-top: 1px solid #AAA; } #footer p { margin: 0; padding: 0; } /* * 6. Other */ div.clear { clear: both; } lintian-2.5.22ubuntu1/reporting/templates/maintainers.tmpl0000664000000000000000000000312312310413206020662 0ustar { head("Lintian Reports by Maintainer") }

Maintainers

Maintainers are listed sorted case-insensitively by package maintainer string. This is an unsophisticated sort that doesn't take into account any national collating sequence, only Unicode strings, so maintainers whose names start with non-ASCII characters will sort at the end of this page.

Jump to: { join (' ', map { qq($_) } 'A'..'Z') }

{ # Put headings before each new initial letter and add anchors, except # for non-ASCII initial characters. For those, since we can't be # assured we'll get combining characters right, just accumulate them # under a heading of Other. my $letter = ''; for my $maintainer (sort { lc ($a) cmp lc ($b) } keys %maintainers) { my ($url) = $maintainers{$maintainer}; my $first = uc substr($maintainer, 0, 1); if ($first lt 'A' || $first gt 'Z') { $first = 'Other'; } if ($first ne $letter) { unless ($letter) { $OUT .= "

\n\n"; } $letter = $first; if ($letter eq 'Other') { $OUT .= qq(

\n\n

Other

\n\n

\n); } else { $OUT .= qq(

\n\n

) . $letter . "

\n\n

\n"; } } $OUT .= qq( $maintainer) . qq{ (full report)
\n}; } }

{ foot() } lintian-2.5.22ubuntu1/reporting/templates/head.tmpl0000664000000000000000000000164212310413206017255 0ustar {$page_title}
lintian-2.5.22ubuntu1/reporting/templates/tag.tmpl0000664000000000000000000000545712310413206017137 0ustar { head("Lintian Tag: $tag") }

{$code} {$tag}

All reports of {$tag} for the archive. The extended description of this tag is:

{$description}
{ if ($graphs) { $OUT .= qq(

\n); $OUT .= qq( Evolution of the $tag Lintian tag over the past\n); $OUT .= qq( $graphs_days days:

\n); $OUT .= qq(
\n); } $OUT .= qq(

Emitted (non-overridden): $statistics{count}, ); $OUT .= qq(overridden: $statistics{overrides}, ); $OUT .= qq(total: $statistics{total}

); }

The package names link to the relevant maintainer page and the corresponding report for the source package. The links go to the full maintainer report page, which includes info and experimental tags and overridden tags, rather than the default page that shows only errors and warnings.

{ # We get a list of tag data. We create a separate paragraph for each # package name. my ($last, $tag, $has_nonoverridden); for my $info (sort { $a->{package} cmp $b->{package} } @tags) { if (!$last or "$info->{package} $info->{type} $info->{version}" ne "$last->{package} $last->{type} $last->{version}") { if ($last) { my $overridden = $has_nonoverridden ? '' : qq{ overridden}; $OUT .= qq(

); $OUT .= "$last->{package} $last->{version} ($last->{type})$overridden

\n"; if ($tag) { $OUT .= qq(
    \n); $OUT .= $tag; $OUT .= "
\n"; } else { $OUT .= qq(
\n); } } $last = $info; $tag = ''; $has_nonoverridden = 0; } $has_nonoverridden = 1 if $info->{code} ne 'O'; if ($info->{extra}) { $tag .= qq{
  • }; $tag .= qq{O } if $info->{code} eq 'O'; $tag .= "$info->{extra}
  • \n"; } } my $overridden = $has_nonoverridden ? '' : qq{ overridden}; $OUT .= qq(

    ); $OUT .= "$last->{package} $last->{version} ($last->{type})$overridden

    \n"; if ($tag) { $OUT .= qq(
      \n); $OUT .= $tag; $OUT .= "
    \n"; } else { $OUT .= qq(
    \n); } } { foot() } lintian-2.5.22ubuntu1/reporting/templates/packages.tmpl0000664000000000000000000000225712310413206020135 0ustar { head("Lintian Package Index: $section") }

    Package Index: {$section}

    This is a list of all source packages that have at least one lintian tag. This includes all tags, even experimental and info tags and tags that were overridden. The list is huge, so it's broken into four separate pages. This page covers package names starting with {$section}.

    0-9, A-F | G-L | M-R | S-Z

    { # ' # hi, emacs # Put headings before each new initial letter. my $letter = ''; for my $package (@list) { my $first = uc substr($package, 0, 1); if ($first ne $letter) { $OUT .= "

    \n\n" if $letter; $OUT .= qq(

    $first

    \n\n

    \n); $letter = $first; } foreach my $version (sort by_version keys %{ $sources{$package} }) { $OUT .= qq( $package ($version)\n); } } }

    { foot() } lintian-2.5.22ubuntu1/reporting/templates/tags.tmpl0000664000000000000000000000122112310413206017303 0ustar { head("Lintian Tags") }

    Tags

    This is a list of all tags that occur at least once in the archive with their frequency counts. This includes all tags, even experimental and info tags.

      { for my $tag (sort keys %stats) { my $packages = $stats{$tag}{'packages'}; my $count = $stats{$tag}{'count'}; my $overrides = $stats{$tag}{'overrides'}; $OUT .= qq(
    • $tag) . " ($packages packages, $count tags" . ($overrides > 0 ? ", plus $overrides overrides" : "") . ")
    • \n"; } }
    { foot() } lintian-2.5.22ubuntu1/reporting/templates/clean.tmpl0000664000000000000000000000070712310413206017437 0ustar { head("Lintian Report for $name", 1) }

    {$name}

    All of the packages maintained by {$maintainer} are Lintian-clean. { if (!$clean) { qq( But also see the full report) . " which includes info, experimental and overridden tags"; } }

    Also see their QA overview.

    { foot() } lintian-2.5.22ubuntu1/reporting/templates/tags-all.tmpl0000664000000000000000000000133212310413206020054 0ustar { head("Lintian Tags") }

    Tags

    This is a list of all tags known to Lintian even the ones not emitted.

      { for my $tag (sort $profile->tags (1)) { my $text; if ($stats{$tag}) { my $packages = $stats{$tag}{'packages'}; my $count = $stats{$tag}{'count'}; my $overrides = $stats{$tag}{'overrides'}; $text = "$packages packages, $count tags" . ($overrides > 0 ? ", plus $overrides overrides" : ""); } else { $text = 'Not emitted'; } $OUT .= qq(
    • $tag) . " ($text)" . "
    • \n"; } }
    { foot() } lintian-2.5.22ubuntu1/reporting/templates/maintainer.tmpl0000664000000000000000000001463512310413206020511 0ustar { head("Lintian Report for $name") }

    {$name}

    At the time of the last Lintian run, the following possible problems were found in packages maintained by {$maintainer}, listed by source package. { if ($errors) { qq( See also the full report, including) . " info, experimental and overridden tags."; } else { qq( See also the report showing) . " only errors and warnings."; } } Also see their QA overview.

    { # Show the summary only if the number of packages is within a certain # range. my $num_packages = keys(%packages) + keys(%uploads); if ($num_packages > 1 and $num_packages < 20) { $OUT .= qq(
    \n
      \n); foreach my $source (sort(keys(%packages), keys(%uploads))) { # Only display a link for the package if either we're # displaying the full report, or the package has error # or warning tags my @interesting = (); my $versions = $packages{$source} || $uploads{$source}; if (!$errors) { # Full report, so include the package @interesting = sort by_version keys %$versions } else { for my $version (sort by_version keys %$versions) { my $tags = $versions->{$version}; for my $tag (@$tags) { if (($tag->{code} eq 'E') or ($tag->{code} eq 'W')) { push @interesting, $version; last; } } } } if (@interesting) { if (scalar @interesting > 1) { $OUT .= qq(
    • $source
        \n); foreach my $version (@interesting) { $OUT .= ' ' . qq(
      • $version
      • \n); } $OUT .= qq(
    • \n); } else { my ($version) = @interesting; $OUT .= qq(
    • $source ($version)
    • \n); } } } $OUT .= "
    \n
    \n"; } }
    { # We get a hash of package names to a hash of versions to a list of tags. # Create a list with the package information as the title and the tags as # the value. for my $source (sort (keys (%packages), keys (%uploads))) { my ($data, $upload); my $first_version = 1; if ($packages{$source}) { $data = $packages{$source}; } else { $data = $uploads{$source}; $upload = 1; } for my $version (sort by_version keys %$data) { my $tags = $data->{$version}; my $first = 1; my $binary = ''; my $tag = ''; my $firstarea = ''; for my $info (@$tags) { if ($errors) { next unless $info->{code} eq 'E' or $info->{code} eq 'W'; } my $is_binary = ($info->{type} eq "binary" or $info->{type} eq "udeb"); my $new_binary = $info->{package} ne $binary if $is_binary; my $area = ($info->{area} eq 'main') ? '' : "; $info->{area}"; $firstarea = $info->{area} unless $firstarea; if ($first) { my $state = $info->{'state_data'}; $OUT .= qq(
    \n); $OUT .= qq(

    ); $OUT .= "$source ($version$area)"; $OUT .= " [Uploader]" if $upload; if ($first_version) { # Unversioned # references just go to the first version. $first_version = 0; $OUT .= qq( ) } $OUT .= "

    \n"; $OUT .= qq( \n
    \n); $OUT .= qq(
      \n) unless $is_binary; } my $bin_version = ''; unless ($info->{version} eq $version and $info->{area} eq $firstarea) { $bin_version = " ($info->{version}; $info->{area})"; } if ($new_binary) { $OUT .= "
    \n \n \n" unless $first; $OUT .= qq(

    $info->{package}$bin_version

    \n); $OUT .= qq(
      \n); } my $class = ''; if ($info->{severity} and $info->{certainty}) { $class = qq( title="$info->{severity}, $info->{certainty}"); } # Display tag name only once. if ($tag ne $info->{tag} or $new_binary) { $OUT .= "
    \n \n" unless $first or $new_binary; $OUT .= " \n"; $OUT .= qq( ); $OUT .= "$info->{code} "; $OUT .= qq(); $OUT .= "$info->{tag}\n"; $OUT .= qq(
      ); } if ($info->{extra}) { $OUT .= "
    • $info->{extra}
    • "; } $first = 0; $binary = $info->{package} if $is_binary; $tag = $info->{tag}; } $OUT .= "
    \n \n \n"; } } } { foot() } lintian-2.5.22ubuntu1/reporting/templates/foot.tmpl0000664000000000000000000000102012307667646017342 0ustar

    lintian-2.5.22ubuntu1/reporting/templates/index.tmpl0000664000000000000000000000772212310413206017470 0ustar { head("Lintian") }

    Lintian dissects Debian packages and tries to find bugs and policy violations. It contains automated checks for many aspects of Debian policy as well as some checks for common errors.

    For more information, see the User Manual.

    Auto-generated documentation of the Lintian Perl Library API can be found here.

    Lintian is available in the Debian lintian package.

    Statistics

    Last updated: {$timestamp}
    Archive timestamp:{$mirror}
    Distribution: {$dist}
    Archive area: {$area}
    Architecture: {$architecture}
    Maintainers: {$delta{maintainers}}
    Package groups: {$delta{'groups-known'}}
    Rescheduled groups: {$delta{'groups-backlog'}}
    Source packages: {$delta{'source-packages'}}
    Binary packages: {$delta{'binary-packages'}}
    μdeb packages: {$delta{'udeb-packages'}}
    E Errors: {$delta{errors}}
    W Warnings: {$delta{warnings}}
    I Info tags: {$delta{info}}
    P Pedantic tags: {$delta{pedantic}}
    O Overridden tags: {$delta{overridden}}
    X Experimental tags: {$delta{experimental}}
    Lintian version: {$version}

    (The numbers in parentheses describe the changes since the last Lintian report, published on {$previous}.)

    { if ($graphs) { $OUT .= qq(

    \n); $OUT .= qq( Evolution of Lintian tags over the past\n); $OUT .= qq( $graphs_days days:

    \n); $OUT .= qq(
    \n); } ''; }
    { foot() } lintian-2.5.22ubuntu1/reporting/templates/tag-not-seen.tmpl0000664000000000000000000000054112310413206020652 0ustar { head("Lintian Tag: $tag") }

    {$code} {$tag}

    All reports of {$tag} for the archive. The extended description of this tag is:

    {$description}

    This tag has not been emitted in any package tested by Lintian.

    { foot() } lintian-2.5.22ubuntu1/reporting/graphs/0000775000000000000000000000000012310413206014741 5ustar lintian-2.5.22ubuntu1/reporting/graphs/statistics.gpi0000664000000000000000000000207712310413144017643 0ustar # set terminal png truecolor small size 600,300 set terminal svg size 640,375 font "Sans,11" set style line 10 linetype 1 linecolor rgb "#FF6700" lw 1.5 set style line 11 linetype 1 linecolor rgb "#FFEB44" lw 1.5 set style line 12 linetype 1 linecolor rgb "#C7EA3C" lw 1.5 set style line 13 linetype 1 linecolor rgb "#E7F6AC" lw 1.5 set style line 14 linetype 1 linecolor rgb "#EE99EE" lw 1.5 set style line 15 linetype 1 linecolor rgb "#CCCCCC" lw 1.5 set key outside set xdata time set timefmt "%s" set format x "%b/%y" set size 1.0,0.80 set origin 0.0,0.05 set nomxtics set xtics nomirror scale 0.5,0 rotate by 55 offset -3.2,-2.7 set ytics nomirror scale 0.5,0 set offsets 0,0,500,0 load "common.gpi" set xrange [ date_min : date_max ] set yrange [ 0 : ] set output sprintf("%s/statistics.svg", graph_dir) plot sprintf("%s/statistics.dat", history_dir) \ u 1:7 w l ls 10 t 'Errors', \ '' u 1:8 w l ls 11 t 'Warnings', \ '' u 1:9 w l ls 12 t 'Info', \ '' u 1:11 w l ls 13 t 'Pedantic', \ '' u 1:10 w l ls 14 t 'Experimental', \ '' u 1:12 w l ls 15 t 'Overridden' lintian-2.5.22ubuntu1/reporting/graphs/tags.gpi0000664000000000000000000000151712310413206016404 0ustar tag="$0" # set terminal png truecolor small size 600,300 set terminal svg size 640,375 font "Sans,11" set style fill solid 0.25 set style line 20 linetype 1 linecolor rgb "#1A77C9" set style line 21 linetype 1 linecolor rgb "#83CDBE" set style line 22 linetype 1 linecolor rgb "#BBBBBB" set key outside set xdata time set timefmt "%s" set format x "%b/%y" set size 1.0,0.80 set origin 0.0,0.05 set nomxtics set xtics nomirror scale 0.5,0 rotate by 55 offset -3.2,-2.7 set ytics nomirror scale 0.5,0 set offsets 0,0,1,0 load "common.gpi" set xrange [ date_min : date_max ] set yrange [ 0 : ] set output sprintf("%s/tags/%s.svg", graph_dir, tag) plot sprintf("%s/tags/%s.dat", history_dir, tag) \ u 1:2 w filledcurve x1 ls 20 t 'Tags', \ '' u 1:4 w filledcurve x1 ls 21 t 'Packages', \ '' u 1:3 w filledcurve x1 ls 22 t 'Overridden' lintian-2.5.22ubuntu1/reporting/html_reports0000775000000000000000000010021012310413206016117 0ustar #!/usr/bin/perl -w # # Lintian HTML reporting tool -- Create Lintian web reports # # Copyright (C) 1998 Christian Schwarz and Richard Braakman # Copyright (C) 2007 Russ Allbery # # This program is free software. It is distributed 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. use strict; use warnings; use autodie; use POSIX qw(strftime); use File::Copy qw(copy); use Fcntl qw(SEEK_SET); use List::MoreUtils qw(uniq); use URI::Escape; use Text::Template (); # ------------------------------ # Global variables and configuration # These have no default and must be set in the configuration file. # FIXME: $statistics_file should be in all caps as well. our ( $LINTIAN_ROOT, $LINTIAN_LAB, $LINTIAN_ARCHIVEDIR, $LINTIAN_DIST,$LINTIAN_ARCH, $HTML_TMP_DIR, $statistics_file,$LINTIAN_AREA, $HISTORY, $HISTORY_DIR, $LINTIAN_SOURCE,$GRAPHS_RANGE_DAYS, $GRAPHS, $LINTIAN_MIRROR_NAME, $HARNESS_STATE_DIR, ); # Read the configuration. BEGIN { require './config'; } ## no critic (Modules::RequireBarewordIncludes) # The path to the mirror timestamp. our $LINTIAN_TIMESTAMP = "$LINTIAN_ARCHIVEDIR/project/trace/$LINTIAN_MIRROR_NAME"; # Import Lintian Perl libraries. use lib "$LINTIAN_ROOT/lib"; use Lintian::Data; use Lintian::Internal::FrontendUtil qw(split_tag); use Lintian::Lab; use Lintian::Profile; use Lintian::Relation::Version qw(versions_comparator); use Lintian::Reporting::ResourceManager; use Lintian::Util qw(read_dpkg_control slurp_entire_file load_state_cache find_backlog); my $profile = Lintian::Profile->new(undef,[$LINTIAN_ROOT]); my $RESOURCE_MANAGER = Lintian::Reporting::ResourceManager->new('html_dir' => $HTML_TMP_DIR,); Lintian::Data->set_vendor($profile); # Set the Lintian version, current timestamp, and archive timestamp. our $LINTIAN_VERSION = `$LINTIAN_ROOT/frontend/lintian --print-version`; our $timestamp = `date -u --rfc-822`; our $mirror_timestamp = slurp_entire_file($LINTIAN_TIMESTAMP); chomp($LINTIAN_VERSION, $timestamp); $mirror_timestamp =~ s/\n.*//s; # ------------------------------ # Initialize templates # The path to our templates. our $TEMPLATES = "$LINTIAN_ROOT/reporting/templates"; # This only has to be done once, so do it at the start and then reuse the same # templates throughout. our %templates; for my $template ( qw/head foot clean index maintainer maintainers packages tag tags tags-severity tag-not-seen tags-all/ ) { my %options = (TYPE => 'FILE', SOURCE => "$TEMPLATES/$template.tmpl"); $templates{$template} = Text::Template->new(%options) or die "cannot load template $template: $Text::Template::ERROR\n"; } $templates{'lintian.css'} = Text::Template->new( TYPE => 'FILE', SOURCE => "$TEMPLATES/lintian.css.tmpl", DELIMITERS => ['{{{', '}}}'], ) or die("cannot load template for lintian.css: $Text::Template::ERROR\n"); # ------------------------------ # Main routine my $LAB = Lintian::Lab->new($LINTIAN_LAB); my $source_info; $LAB->open; $source_info = $LAB->_get_lab_index('source'); # Create output directories. mkdir($HTML_TMP_DIR, 0777); mkdir("$HTML_TMP_DIR/full", 0777); mkdir("$HTML_TMP_DIR/maintainer", 0777); mkdir("$HTML_TMP_DIR/tags", 0777); symlink('.', "$HTML_TMP_DIR/reports"); symlink("$LINTIAN_ROOT/doc/lintian.html", "$HTML_TMP_DIR/manual"); symlink("$LINTIAN_ROOT/doc/api.html", "$HTML_TMP_DIR/library-api"); if ($ARGV[0]) { copy($ARGV[0], "$HTML_TMP_DIR/lintian.log") or die("cannot copy $ARGV[0] to $HTML_TMP_DIR/lintian.log: $!"); system("gzip --best -c > \"$HTML_TMP_DIR/lintian.log.gz\" < \"$ARGV[0]\"") == 0 or die "cannot create $HTML_TMP_DIR/lintian.log.gz.\n"; } for my $dir_basename (qw(resources images)) { my $dir = "$LINTIAN_ROOT/reporting/$dir_basename"; next if not -d $dir; opendir(my $dirfd, $dir); for my $resname (readdir($dirfd)) { next if $resname eq '.' or $resname eq '..'; $RESOURCE_MANAGER->install_resource("$dir/$resname"); } closedir($dirfd); } # Create lintian.css from a template, install the output file as a resource # and discard the original output file. We do this after installing all # resources, so the .css file can refer to resources. output_template( 'lintian.css', $templates{'lintian.css'}, { 'path_prefix' => '../' }); $RESOURCE_MANAGER->install_resource("$HTML_TMP_DIR/lintian.css"); unlink("$HTML_TMP_DIR/lintian.css"); my $STATE_CACHE = load_state_cache($HARNESS_STATE_DIR); # %statistics accumulates global statistics. For tags: errors, warnings, # experimental, overridden, and info are the keys holding the count of tags of # that sort. For packages: binary, udeb, and source are the number of # packages of each type with Lintian errors or warnings. For maintainers: # maintainers is the number of maintainers with Lintian errors or warnings. # # %tag_statistics holds a hash of tag-specific statistics. Each tag name is a # key, and its value is a hash with the following keys: count and overrides # (number of times the tag has been detected and overriden, respectively), and # packages (number of packages with at least one such tag). my (%statistics, %tag_statistics); # %by_maint holds a hash of maintainer names to packages and tags. Each # maintainer is a key. The value is a hash of package names to hashes. Each # package hash is in turn a hash of versions to an anonymous array of hashes, # with each hash having keys code, package, type, tag, severity, certainty, # extra, and xref. xref gets the partial URL of the maintainer page for that # source package. # # In other words, the lintian output line: # # W: gnubg source: substvar-source-version-is-deprecated gnubg-data # # for gnubg 0.15~20061120-1 maintained by Russ Allbery is # turned into the following structure: # # { 'gnubg' => { # '0.15~20061120-1' => [ # { code => 'W', # package => 'gnubg', # version => '0.15~20061120-1', # area => 'main', # type => 'source', # tag => 'substvar-source-version-is-deprecated', # severity => 'normal', # certainty => 'certain', # extra => 'gnubg-data' # xref => 'rra@debian.org.html#gnubg_0.15~20061120-1' # } ] } } # # and then stored under the key 'Russ Allbery ' # # %by_uploader holds the same thing except for packages for which the person # is only an uploader. # # %by_tag is a hash of tag names to an anonymous array of tag information # hashes just like the inside-most data structure above. my (%by_maint, %by_uploader, %by_tag); # We take a lintian log file on either standard input or as the first # argument. This log file contains all the tags lintian found, plus N: tags # with informational messages. Ignore all the N: tags and load everything # else into the hashes we use for all web page generation. # # We keep track of a hash from maintainer page URLs to maintainer values so # that we don't have two maintainers who map to the same page and overwrite # each other's pages. If we find two maintainers who map to the same URL, # just assume that the second maintainer is the same as the first (but warn # about it). # # The "last_*" are optimizations to avoid computing the same things # over and over again when a package have multiple tags. my (%seen, $last_info, $last_maintainer); my %expanded_code = ( E => 'errors', W => 'warnings', I => 'info', X => 'experimental', O => 'overridden', P => 'pedantic', ); while (<>) { my @parts; chomp; @parts = split_tag($_); next unless @parts; my ($code, $package, $type, $pver, $parch, $tag, $extra) = @parts; $type = 'binary' unless (defined $type); next unless ($type eq 'source' || $type eq 'binary' || $type eq 'udeb'); # Ignore unknown tags - happens if we removed a tag that is still present # in the log file. my $tag_info = $profile->get_tag($tag, 1); next unless $tag_info; # Update statistics. my $key = $expanded_code{$code}; $statistics{$key}++; unless ($seen{"$package $type"}) { $statistics{"$type-packages"}++; $seen{"$package $type"} = 1; } # Determine the source package for this package and warn if there appears # to be no source package in the archive. Determine the maintainer, # version, and archive area. Work around a missing source package by # pulling information from a binary package or udeb of the same name if # there is any. my ($source, $version, $area, $source_version, $maintainer, $uploaders); my $pkg_data= $LAB->_get_lab_manifest_data($package, $type, $pver, $parch); my $state_data = {}; if ($type eq 'source') { $source = $package; if (defined $pkg_data) { $source_version = $version = $pkg_data->{version}; $area = $pkg_data->{area}; $maintainer = $pkg_data->{maintainer}; $uploaders = $pkg_data->{uploaders}; } else { $source_version = $version = $pver; $pver//='N/A'; warn "source package $package/$pver not found!\n"; } } else { my $src_data; if (defined $pkg_data) { $version = $pkg_data->{version}; $area = $pkg_data->{area}; $source = $pkg_data->{source}//$package; $source_version = $pkg_data->{'source-version'}//$version; $src_data = $LAB->_get_lab_manifest_data($source, 'source', $source_version); } else { $version = $pver; } if (defined $src_data) { $maintainer = $src_data->{maintainer}; $uploaders = $src_data->{uploaders}; } else { $pver//='N/A'; $parch//='N/A'; if (defined $pkg_data) { warn "source for package $package/$pver/$parch" . " ($source/$source_version) not found!\n"; } else { warn "data for package $package/$pver/$parch not found!\n"; } $maintainer = undef; $uploaders = undef; } } if ($source and ($version//'') ne '') { my $group_id = "$source/$version"; if (exists($STATE_CACHE->{$group_id})) { $state_data = $STATE_CACHE->{$group_id}; } } $maintainer ||= '(unknown)'; $area ||= 'main'; $source ||= ''; $version = 'unknown' unless (defined($version) and length($version) > 0); $source_version = $version unless (defined($source_version) and length($source_version) > 0); # Sanitize, just out of paranoia. $package =~ tr/a-zA-Z0-9.+-/_/c; $source =~ tr/a-zA-Z0-9.+-/_/c; $version =~ tr/a-zA-Z0-9.+:~-/_/c; $source_version =~ tr/a-zA-Z0-9.+:~-/_/c; # Conditionally call html_quote if needed. On average, 11-13% of # all tags (emitted on lintan.d.o) have no "extra". That would be # tags like "no-upstream-changelog". if (defined($extra)) { $extra = html_quote($extra); } else { $extra = ''; } my $info; # Add the tag information to our hashes. Share the data between the # hashes to save space (which means we can't later do destructive tricks # with it). if ( $last_info && $last_info->{type} eq $type && $last_info->{package} eq $package && $last_info->{version} eq $version) { # There are something like 622k tags emitted on lintian.d.o, # but only "some" 90k unique package+version(+arch) pairs. # Therefore, we can conclude that the average package will # have ~6 tags and optimise for that case. Indeed, this path # seems to be taken about 90% of the time (561k/624k). # - In fact, we see less than "90k" package+version(+arch) # pairs here, since entries without tags never this far down # in this loop (i.e. they are filtered out by split_tag # above). # Copy the last info and then change the bits that can change $info = {%{$last_info}}; # Code depends on whether the given tag was overridden or not $info->{code} = $code; $info->{extra} = $extra; if ($info->{tag} ne $tag) { # Technically we ought to html_quote when doing the # comparison; but then, the number of tags with characters # needing HTML-escaping is (next to) 0. $info->{tag} = html_quote($tag); $info->{severity} = $tag_info->severity; $info->{certainty} = $tag_info->certainty; } # saves a map_maintainer call $maintainer = $last_maintainer; } else { # Check if we've seen the URL for this maintainer before and, if so, map # them to the same person as the previous one. $last_maintainer = $maintainer = map_maintainer($maintainer); # Update maintainer statistics. $statistics{maintainers}++ unless defined $by_maint{$maintainer}; $last_info = $info = { # split_tags ensures that $code is a single upper case letter code => $code, package => $package, version => $version, area => html_quote($area), # There is a check for type being in a fixed whitelist of # HTML-safe keywords in the start of the loop. type => $type, tag => html_quote($tag), # severity and certainty follows a fixed whitelist of # HTML-safe keywords severity => $tag_info->severity, certainty => $tag_info->certainty, # extra is unsafe in general, but we already quote it above. extra => $extra, xref => maintainer_url($maintainer) . "#${source}_${source_version}", 'state_data' => $state_data, }; if (!$by_maint{$maintainer}{$source}{$source_version}) { my $list_ref = []; $by_maint{$maintainer}{$source}{$source_version} = $list_ref; # If the package had uploaders listed, also add the # information to %by_uploaders (still sharing the data # between hashes). if ($uploaders) { my @uploaders = map { map_maintainer($_) } split(/>\K\s*,\s*/, $uploaders); for my $uploader (@uploaders) { next if $uploader eq $maintainer; $by_uploader{$uploader}{$source}{$source_version} = $list_ref; } } } } push(@{ $by_maint{$maintainer}{$source}{$source_version} }, $info); $by_tag{$tag} ||= []; push(@{ $by_tag{$tag} }, $info); } # Build a hash of all maintainers, not just those with Lintian tags. We use # this later to generate stub pages for maintainers whose packages are all # Lintian-clean. my %clean; $source_info->visit_all( sub { my ($srcdata) = @_; my $maintainer = $srcdata->{maintainer}; my $id = maintainer_url($maintainer); $clean{$id} = $maintainer; }); # Done with the lab and its metadata $LAB->close; undef $LAB; undef $source_info; # Now, walk through the tags by source package (sorted by maintainer). Output # a summary page of errors and warnings for each maintainer, output a full # page that includes info, experimental, and overriden tags, and assemble the # maintainer index and the QA package list as we go. my (%qa, %maintainers, %sources); my @maintainers = sort(uniq(keys(%by_maint), keys(%by_uploader))); for my $maintainer (@maintainers) { my $id = maintainer_url($maintainer); delete $clean{$id}; # For each of this maintainer's packages, add statistical information # about the number of each type of tag to the QA data and build the # packages hash used for the package index. We only do this for the # maintainer packages, not the uploader packages, to avoid # double-counting. for my $source (keys %{ $by_maint{$maintainer} }) { my %count; for my $version ( sort versions_comparator keys %{ $by_maint{$maintainer}{$source} }) { my $tags = $by_maint{$maintainer}{$source}{$version}; for my $tag (@$tags) { $count{$tag->{code}}++; } if (@$tags) { $sources{$source}{$version} = $tags->[0]->{xref}; } } $qa{$source} = \%count; } # Determine if the maintainer's page is clean. Check all packages for # which they're either maintainer or uploader and set $error_clean if # they have no errors or warnings. # # Also take this opportunity to sort the tags so that all similar tags # will be grouped, which produces better HTML output. my $error_clean = 1; for my $source (keys %{ $by_maint{$maintainer} }, keys %{ $by_uploader{$maintainer} }) { my $versions = $by_maint{$maintainer}{$source} || $by_uploader{$maintainer}{$source}; for my $version (keys %$versions) { $versions->{$version} = [sort by_tag @{ $versions->{$version} }]; my $tags = $versions->{$version}; for my $tag (@$tags) { $error_clean = 0 if ($tag->{code} eq 'E'); $error_clean = 0 if ($tag->{code} eq 'W'); } } } # Determine the parts of the maintainer and the file name for the # maintainer page. my ($name, $email) = ($maintainer =~ /^(.*) <([^>]+)>/); $name = 'Unknown Maintainer' unless $name; $email = 'unknown' unless $email; my $regular = "maintainer/$id"; my $full = "full/$id"; # Create the regular maintainer page (only errors and warnings) and the # full maintainer page (all tags, including overrides and info tags). print "Generating page for $id\n"; my %data = ( email => html_quote(uri_escape($email)), errors => 1, id => $id, maintainer => html_quote($maintainer), name => html_quote($name), packages => $by_maint{$maintainer}, uploads => $by_uploader{$maintainer}, ); my $template; if ($error_clean) { $template = $templates{clean}; } else { $template = $templates{maintainer}; } output_template($regular, $template, \%data); $template = $templates{maintainer}; $data{errors} = 0; output_template($full, $template, \%data); # Add this maintainer to the hash of maintainer to URL mappings. $maintainers{$maintainer} = $id; } # Write out the maintainer index. my %data = (maintainers => \%maintainers,); output_template('maintainers.html', $templates{maintainers}, \%data); mkdir("$HTML_TMP_DIR/lookup-tables"); open(my $table, '>', "$HTML_TMP_DIR/lookup-tables/source-packages"); foreach my $source (sort keys %sources) { my $first = 1; for my $version (sort versions_comparator keys %{ $sources{$source} }) { my $xref = $sources{$source}{$version}; print {$table} "$source full/$xref\n" if $first; print {$table} "$source/$version full/$xref\n"; $first = 0; } } close($table); # Write out the QA package list. This is a space-delimited file that contains # the package name and then the error count, warning count, info count, # pedantic count, experimental count, and overridden tag count. open(my $qa_fd, '>', "$HTML_TMP_DIR/qa-list.txt"); for my $source (sort keys %qa) { print {$qa_fd} $source; for my $code (qw/E W I P X O/) { my $count = $qa{$source}{$code} || 0; print {$qa_fd} " $count"; } print {$qa_fd} "\n"; } close($qa_fd); # Now, generate stub pages for every maintainer who has only clean packages. for my $id (keys %clean) { my $maintainer = $clean{$id}; my ($name, $email) = ($maintainer =~ /^(.*) <([^>]+)>/); $email = 'unknown' unless $email; my %maint_data = ( id => $id, email => html_quote(uri_escape($email)), maintainer => html_quote($maintainer), name => html_quote($name), clean => 1, ); print "Generating clean page for $id\n"; output_template("maintainer/$id", $templates{clean}, \%maint_data); output_template("full/$id", $templates{clean}, \%maint_data); } # Create the pages for each tag. Each page shows the extended description for # the tag and all the packages for which that tag was issued. for my $tag (sort $profile->tags(1)) { my $info = $profile->get_tag($tag, 1); my $description = $info->description('html', ' '); my ($count, $overrides) = (0, 0); my %seen_tags; my $tmpl = 'tag-not-seen'; if (exists $by_tag{$tag}) { $tmpl = 'tag'; foreach (@{$by_tag{$tag}}) { if ($_->{code} ne 'O') { $count++; $seen_tags{$_->{xref}}++; } else { $overrides++; } } $tag_statistics{$tag}{'count'} = $count; $tag_statistics{$tag}{'overrides'} = $overrides; $tag_statistics{$tag}{'packages'} = scalar keys %seen_tags; } my %maint_data = ( description => $description, tag => html_quote($tag), code => $info->code, tags => $by_tag{$tag}, graphs => $GRAPHS, graphs_days => $GRAPHS_RANGE_DAYS, statistics => { count => $count, overrides => $overrides, total => $count + $overrides, }, ); output_template("tags/$tag.html", $templates{$tmpl}, \%maint_data); } # Create the general tag indices. %data = ( tags => \%by_tag, stats => \%tag_statistics, profile => \$profile, ); output_template('tags.html', $templates{tags}, \%data); output_template('tags-severity.html', $templates{'tags-severity'}, \%data); output_template('tags-all.html', $templates{'tags-all'}, \%data); # Generate the package lists. These are huge, so we break them into four # separate pages. # # FIXME: Does anyone actually use these pages? They're basically unreadable. my %list; $list{'0-9, A-F'} = []; $list{'G-L'} = []; $list{'M-R'} = []; $list{'S-Z'} = []; for my $package (sort keys %sources) { my $first = uc substr($package, 0, 1); if ($first le 'F') { push(@{ $list{'0-9, A-F'} }, $package) } elsif ($first le 'L') { push(@{ $list{'G-L'} }, $package) } elsif ($first le 'R') { push(@{ $list{'M-R'} }, $package) } else { push(@{ $list{'S-Z'} }, $package) } } %data = (sources => \%sources,); my $i = 1; for my $section (sort keys %list) { $data{section} = $section; $data{list} = $list{$section}; output_template("packages_$i.html", $templates{packages}, \%data); $i++; } # Finally, we can start creating the index page. First, read in the old # statistics file so that we can calculate deltas for all of our statistics. my $old_statistics; if (-f $statistics_file) { ($old_statistics) = read_dpkg_control($statistics_file); } $statistics{'groups-known'} = scalar(keys(%{$STATE_CACHE})); $statistics{'groups-backlog'} = scalar(find_backlog($LINTIAN_VERSION,$STATE_CACHE)); my %delta; my @attrs = qw(maintainers source-packages binary-packages udeb-packages errors warnings info experimental pedantic overridden groups-known groups-backlog); for my $attr (@attrs) { my $old = $old_statistics->{$attr} || 0; $statistics{$attr} ||= 0; $delta{$attr} = sprintf('%d (%+d)', $statistics{$attr},$statistics{$attr} - $old); } # Update the statistics file. open(my $stats_fd, '>', $statistics_file); print {$stats_fd} "last-updated: $timestamp\n"; print {$stats_fd} "mirror-timestamp: $mirror_timestamp\n"; for my $attr (@attrs) { print {$stats_fd} "$attr: $statistics{$attr}\n"; } print {$stats_fd} "lintian-version: $LINTIAN_VERSION\n"; close($stats_fd); # Create the main page. %data = ( architecture => $LINTIAN_ARCH, delta => \%delta, dist => $LINTIAN_DIST, mirror => $mirror_timestamp, previous => $old_statistics->{'last-updated'}, area => join(', ', split(/\s*,\s*/, $LINTIAN_AREA)), graphs => $GRAPHS, graphs_days => $GRAPHS_RANGE_DAYS, ); output_template('index.html', $templates{index}, \%data); exit 0 if (not $HISTORY); # Update history. my %versions = (); my $graph_dir = "$HTML_TMP_DIR/graphs"; my $commonf = "$graph_dir/common.gpi"; my $unix_time = time(); mkdir("$HISTORY_DIR") if (not -d "$HISTORY_DIR"); mkdir("$HISTORY_DIR/tags") if (not -d "$HISTORY_DIR/tags"); my $history_file = "$HISTORY_DIR/statistics.dat"; my $stats = ''; for my $attr (@attrs) { $stats .= " $statistics{$attr}"; } open(my $hist_fd, '+>>', $history_file); print {$hist_fd} "$unix_time $LINTIAN_VERSION$stats\n"; if ($GRAPHS) { seek($hist_fd, 0, SEEK_SET); while (<$hist_fd>) { my @fields = split(); $versions{$fields[1]} = $fields[0] if not exists $versions{$fields[1]}; } } close($hist_fd); if ($GRAPHS) { mkdir("$graph_dir", 0777); mkdir("$graph_dir/tags", 0777); my $date_min = strftime('%s', localtime($unix_time - 3600 * 24 * $GRAPHS_RANGE_DAYS)); my $date_max = strftime('%s', localtime($unix_time)); # Generate loadable Gnuplot file with common variables and labels/arrows # for Lintian versions. open(my $common, '>', $commonf); print {$common} "history_dir='$HISTORY_DIR'\n"; print {$common} "graph_dir='$graph_dir'\n"; print {$common} "date_min='$date_min'\n"; print {$common} "date_max='$date_max'\n"; my $last_version = 0; for my $v (sort { $versions{$a} <=> $versions{$b} } keys %versions) { next unless $versions{$v} > $date_min; print {$common} "set arrow from '$versions{$v}',graph 0 to ", "'$versions{$v}',graph 1 nohead lw 0.4\n"; # Skip label if previous release is too close; graphs can't display # more than ~32 labels. my $min_spacing = 3600 * 24 * $GRAPHS_RANGE_DAYS / 32; if ($versions{$v} - $last_version > $min_spacing) { (my $label = $v) =~ s/\-[\w\d]+$//; print {$common} "set label '$label' at '$versions{$v}',graph ", "1.04 rotate by 90 font ',8'\n"; } $last_version = $versions{$v}; } close($common); print "Plotting global statistics...\n"; chdir_system($graph_dir, ['gnuplot', "$LINTIAN_ROOT/reporting/graphs/statistics.gpi"]) == 0 or die "gnuplot died with $?\n"; } my $gnuplot_fd; if ($GRAPHS) { open($gnuplot_fd, '>', "$graph_dir/call.gpi"); } for my $tag (sort keys %tag_statistics) { $history_file = "$HISTORY_DIR/tags/$tag.dat"; $stats = $tag_statistics{$tag}; open(my $tag_fd, '>>', $history_file); print {$tag_fd} "$unix_time $stats->{'count'} $stats->{'overrides'} " ."$stats->{'packages'}\n"; close($tag_fd); if ($GRAPHS) { print {$gnuplot_fd} qq{print 'Plotting $tag statistics...'\n}; print {$gnuplot_fd} qq{call '$LINTIAN_ROOT/reporting/graphs/tags.gpi' '$tag'\n}; print {$gnuplot_fd} qq{reset\n}; } } if ($GRAPHS) { close($gnuplot_fd); chdir_system($graph_dir, ['gnuplot', 'call.gpi']) == 0 or die("gnuplot died with $?\n"); unlink($commonf); } exit 0; # ------------------------------ # Utility functions # Determine the file name for the maintainer page given a maintainer. It # should be .html where is their email address with all # characters other than a-z A-Z 0-9 - _ . @ = + replaced with _. Don't change # this without coordinating with QA. sub maintainer_url { my ($maintainer) = @_; if ($maintainer =~ m/<([^>]+)>/) { my $id = $1; $id =~ tr/a-zA-Z0-9_.@=+-/_/c; return "$id.html"; } else { return 'unsorted.html'; } } # Deduplicate maintainers. Maintains a cache of the maintainers we've seen # with a given e-mail address, issues a warning if two maintainers have the # same e-mail address, and returns the maintainer string that we should use # (which is whatever maintainer we saw first with that e-mail). # PerlCritic apparently does not recognise this way of "encapsulating" # variables. Though, these could probably be replaced by "state" # variables. ## no critic (ControlStructures::ProhibitUnreachableCode) { my (%urlmap, %warned); sub map_maintainer { my ($maintainer) = @_; my $url = maintainer_url($maintainer); if ($urlmap{$url} && $urlmap{$url} ne $maintainer) { warn "$maintainer has the same page as $urlmap{$url}\n" unless ($warned{$maintainer} || lc($maintainer) eq lc($urlmap{$url}) || $maintainer =~ /\@lists\.(alioth\.)?debian\.org>/); $warned{$maintainer}++; $maintainer = $urlmap{$url}; } else { $urlmap{$url} = $maintainer; } return $maintainer; } } # Quote special characters for HTML output. sub html_quote { my ($text) = @_; $text ||= ''; # Use index to do a quick check before we bother requesting a # subst. On average, this is cheaper than blindly s///'ing, since # we rarely subst (all) of the characters below. if (index($text, '&') > -1) { $text =~ s/&/\&/g; } if (index($text, '<') > -1) { $text =~ s/') > -1) { $text =~ s/>/\>/g; } return $text; } # Given a file name, a template, and a data hash, fill out the template with # that data hash and output the results to the file. sub output_template { my ($file, $template, $data) = @_; my $path_prefix = $data->{path_prefix}; if (not defined($path_prefix)) { $path_prefix = ''; if (index($file, '/') > -1) { $path_prefix = '../' x ($file =~ tr|/||); } } $data->{version} ||= $LINTIAN_VERSION; $data->{timestamp} ||= $timestamp; $data->{by_version} ||= \&versions_comparator; $data->{path_prefix} ||= $path_prefix; $data->{resource_path} ||= sub { return $path_prefix . $RESOURCE_MANAGER->resource_URL($_[0]); }; $data->{head} ||= sub { $templates{head}->fill_in( HASH => { page_title => $_[0], %{$data}, }) or die "Filling out head of $file: $Text::Template::ERROR\n"; }; $data->{foot} ||= sub { $templates{foot}->fill_in( HASH => { LINTIAN_SOURCE => $LINTIAN_SOURCE, %{$data}, }) or die "Filling out footer of $file: $Text::Template::ERROR\n"; }; open(my $fd, '>', "$HTML_TMP_DIR/$file"); $template->fill_in(OUTPUT => $fd, HASH => $data) or die "filling out $file failed: $Text::Template::ERROR\n"; close($fd); return; } # Sort function for sorting lists of tags. Sort by package, version, area, # type, tag, and then any extra data. This will produce the best HTML output. # # Note that source tags must come before all other tags, hench the "unfair" # priority for those. This is because the first tags listed are assumed to # be source package tags. sub by_tag { if ($a->{type} ne $b->{type}) { return -1 if $a->{type} eq 'source'; return 1 if $b->{type} eq 'source'; } return $a->{package} cmp $b->{package} || $a->{version} cmp $b->{version} || $a->{area} cmp $b->{area} || $a->{type} cmp $b->{type} || $a->{tag} cmp $b->{tag} || $a->{extra} cmp $b->{extra}; } sub chdir_system { my ($dir, $cmd) = @_; my $pid = fork(); if ($pid) { waitpid($pid, 0) == $pid or die "waitpid failed: $!\n"; return $?; } chdir($dir); exec @$cmd or die "exec failed: $!"; } # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/reporting/config0000664000000000000000000000210512310413206014643 0ustar # Hey emacs! This is a -*- Perl -*- script! # config -- configuration file for Lintian reporting harness $HOME = "/srv/lintian.debian.org"; $LINTIAN_ARCHIVEDIR = "/srv/ftp.debian.org/ftp"; $LINTIAN_MIRROR_NAME = "ftp-master.debian.org"; $LINTIAN_DIST = "sid"; $LINTIAN_AREA = "main"; $LINTIAN_ARCH = "i386"; $LINTIAN_ROOT = "$HOME/root"; $LINTIAN_LAB = "$HOME/laboratory"; $LOG_DIR = "$HOME/logs"; $HTML_DIR = "$HOME/www"; $HTML_TMP_DIR = "$HTML_DIR.new"; $HARNESS_STATE_DIR = "$HOME/harness-state"; # Link to the Lintian source code $LINTIAN_SOURCE = "http://anonscm.debian.org/gitweb/?p=lintian/lintian.git"; $HISTORY = 0; $HISTORY_DIR = "$HOME/history"; # Whether or not to create graphs from $HISTORY # Requires that $HISTORY is enabled. $GRAPHS = 1; # Make graphs of the data in the time interval # [today() - $GRAPHS_RANGE_DAYS ; now()] $GRAPHS_RANGE_DAYS = 240; # Extra options passed to Lintian # - note that some options cannot/should be used # (e.g. --cfg will be ignored) @EXTRA_LINTIAN_OPTIONS = ('-U', 'changelog-file'); $statistics_file = "$LOG_DIR/statistics"; 1; lintian-2.5.22ubuntu1/reporting/images/0000775000000000000000000000000012077065714014743 5ustar lintian-2.5.22ubuntu1/reporting/images/ico.png0000664000000000000000000000054312077065714016225 0ustar PNG  IHDRasRGBbKGD pHYs  tIME+|tEXtCommentCreated with GIMPWIDAT8˽K @ @_ڱBA Dq{p[?ƽ)eH/ _Gg5dC8NIzB(p8 e1l\֤iIKE-2^$k}߽oh,FF As9ss܏p[9 drCD 3r;@[eE XS Ew/7u kL̞ my|H!K7vuOНV Yr"T}2.g`h%)>`c,0:A))<$ : j2L.;z529QI<@~+4jq ߄66;bE@p`f]J[Th(Q츅vWCc '|߰ KZݹhsH=6=v]",dð'9DݤĽ27kmO$>1V({'Far$)_P%y h(t<|=@˥ ,4љs0|>N37 %#)m9.HVfirAMDo#^UmIOħ&v)or0: I,ꮭG KsL8~;J֐ BPy2k?q8m5;Z{3z)"!sKטrt]"{HkmPy,+7S⽃w9w\R>גּZS/gۭ?׺B"1Z"4P\ vN`&KGoU8j;B_kؘ@#  ȣvkc0`.IYn:Vya L41D8 l@|BҼQ93հ_`$AM$.L2˻$mdY*hMj#)"6q/8!Bo^ri#We-<tp+ k4=L !h?4LYeX?#FJ ۜjbNn>mSyQs5BHɅ?id>y-CSPNp%Îou3\ȣ6Tuڻ_= :@au϶u֪$?JlLm2lwY$ѻQIvygNycTo<,~m@ Zk$m'KLh;`c 3m}i#SXL8-6/x-,0"ɓj9,v#8#u(gDQh#i~4u!^##|yS8W3JKveSX&" A4ij-⏭~xHNwGqDMhHfY97j03$q04SfzcA~B#ѤJ,,zn2jޘS@R"e #s?>E~jr7M$~ '-xQdx|s@*%I~$'BDy4_X9GlY・Ws!F,gM%fv:) SĄ_Yu[80dYP,/B݊c-Z{p?Q{J C^ˇqD"i vJfTWݞE/Af4 C EK,t9_e<;?&+&) kmŸihzN9y>ޓzU@ z@YYK`fvl{`SL,8ksl3=~&'=9UIjMa/9MzC<k\s:ĉ}3W6T| L8)k⥂c*w1(L|<ȴWa'"L2ɗdActZ!/7#gaM4qRcRwf~mO67Vh0i pXxI98aW_eκ?Gl?쫼Z!q0ڜ`&e$%wY _8CRjٗ$ɒ7 vn@ ˄'r'JXkrHUˣgs|5.O uSsKX Z_8]]AB60VO-ՠu[ q^4f΁Kء4Vk;kD[lz)ӷD]'bvӟM O#yix )Jcdku[>?@Or_f}.h`H@t /k=wU}.q)}o&ԘX"s@֥ HGu.u[ϊer¤*̮ńc_\'owMs.EWѸ_0&noq;F(Shs ǖ|`a\ wQ'YrfUc_4Do {Zzly&q~9qoI"7kEՑ]ǽ] )˪Z7{avO\ I$;ln5 ̸9:W=kz<֣dFΪq @ 9>w <%zH՞Ig콟5} " \`RAXWҟq1 %ςዘy.8 |hQ7YG2u Nr)@%J(3Z*ҟ&+׏^IENDB`lintian-2.5.22ubuntu1/reporting/images/l.png0000664000000000000000000000306412077065714015707 0ustar PNG  IHDRsu7sRGBbKGD pHYs  tIME""`)tEXtCommentCreated with GIMPWIDATxOhUǿk2/ĝR]6T%6R!(H +,B9x(RЃ4^FCO/[+FXɳeP kx-)(SGTO?TOCB2 elV#|)ӄJȉAM2@dZ x-@,崮F2hNU,&S&LB29;;mej[S@J3YK5e7T8 -SuͲsLB2 er6!| 3@-Pؿv&T³N 25Z >nP&LB +2*ԻuFS2,[:y"v'> m$W14LB2 e2xu[ymL7|(E<4#t ԉwXk3\D(P&Lb;A#SfXR5@eL#j`xk)pktE~d;H3Кbh =e$I43@ ʬ;6&eAOV|O%O14LB2I&@f7ʡY`H1? 2-xӀ}bi7M>96 gI(P&Lfu7)s<Ӹ,0p eԑ^ҟH&2 e$D/h8(G<ZMr'hSY7w`H{D%I(P&L$I(<M8ELׇЖ|h$+ \xڂ:^99r~גAJ}`i.Xd;oK,:v}o;PA+ P9)ʯ>+7 ex B9+k7cf5Ef.=˛]3Q\_^B|;; 1?#bVAEҸhU,sbo֛MmqVs w qrcL &nz]︮ch89{1868SW~ 韯^L-{Wgr0'-|}Qr宏*KuL< )-wdeȚ gaVʬ0d|V4Pp)O>PSpZi^ ޯ慓Ǧ]׭u4x)Bqf`ZnRZ(Çu5BIENDB`lintian-2.5.22ubuntu1/reporting/harness0000775000000000000000000006672612311320136015067 0ustar #!/usr/bin/perl # # Lintian reporting harness -- Create and maintain Lintian reports automatically # # Copyright (C) 1998 Christian Schwarz and Richard Braakman # # This program is free software. It is distributed 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. use strict; use warnings; use constant BACKLOG_PROCESSING_GROUP_LIMIT => 1024; use constant BACKLOG_PROCESSING_TIME_LIMIT => 4 * 3600; # 4hours use Errno qw(ENOENT); use File::Temp qw(tempfile); use Getopt::Long; use POSIX qw(strftime); use YAML::Any(); sub usage { print <. END #'# for cperl-mode exit; } my $LOG_FD; my %opt = ('schedule-chunk-size' => 512,); my %opthash = ( 'i' => \$opt{'incremental-mode'}, 'c' => \$opt{'clean-mode'}, 'f' => \$opt{'full-mode'}, 'r' => \$opt{'reports-only'}, 'dry-run' => \$opt{'dry-run'}, 'schedule-chunk-size=i' => \$opt{'schedule-chunk-size'}, 'to-stdout' => \$opt{'to-stdout'}, 'help|h' => \&usage, ); # init commandline parser Getopt::Long::config('bundling', 'no_getopt_compat', 'no_auto_abbrev'); # process commandline options GetOptions(%opthash) or die("error parsing options\n"); # clean implies full - do this as early as possible, so we can just # check $opt{'full-mode'} rather than a full # ($opt{'clean-mode'} || $opt{'full-mode'}) $opt{'full-mode'} = 1 if $opt{'clean-mode'}; die "Cannot use both incremental and full/clean.\n" if $opt{'incremental-mode'} && $opt{'full-mode'}; die "Cannot use other modes with reports only.\n" if $opt{'reports-only'} && ($opt{'full-mode'} || $opt{'incremental-mode'}); # read configuration require './config'; ## no critic (Modules::RequireBarewordIncludes) use vars qw($LINTIAN_ROOT $LINTIAN_LAB $LINTIAN_ARCHIVEDIR $LINTIAN_DIST $LINTIAN_ARCH @EXTRA_LINTIAN_OPTIONS $LOG_DIR $statistics_file $HTML_DIR $HTML_TMP_DIR $LINTIAN_AREA $HARNESS_STATE_DIR); # export Lintian's configuration $ENV{'LINTIAN_LAB'} = $LINTIAN_LAB; # delete LINTIAN_{CFG,ROOT} in case they are set. delete($ENV{'LINTIAN_CFG'}); delete($ENV{'LINTIAN_ROOT'}); my $html_reports_cmd = "$LINTIAN_ROOT/reporting/html_reports"; my ($log_file, $list_file, $lintian_log, $html_reports_log) = map {"$LOG_DIR/$_" } qw(harness.log changed-packages.list lintian.log html_reports.log); my $old_lintian_log = $lintian_log . '.old'; my @lintian_cmd = ( "$LINTIAN_ROOT/frontend/lintian", @EXTRA_LINTIAN_OPTIONS, qw(--no-cfg -I -E --pedantic -v --show-overrides), qw(--exp-output=format=fullewi --packages-from-file -), ); my $LINTIAN_VERSION = qx($LINTIAN_ROOT/frontend/lintian --print-version); my $STATE_DIR = $HARNESS_STATE_DIR; my $START_TIME = time(); my $state; chomp($LINTIAN_VERSION); # import perl libraries unshift @INC, "$LINTIAN_ROOT/lib"; require Lintian::Lab; require Lintian::Lab::Manifest; require Lintian::Processable; require Lintian::Relation::Version; import Lintian::Relation::Version qw(versions_comparator); require Lintian::Util; import Lintian::Util qw(open_gz slurp_entire_file strip visit_dpkg_paragraph load_state_cache find_backlog); # turn file buffering off STDOUT->autoflush; unless ($opt{'dry-run'}) { # rotate log files system("savelog $log_file $html_reports_log >/dev/null") == 0 or die "Cannot rotate log files.\n"; # create new log file open($LOG_FD, '>', $log_file) or die "cannot open log file $log_file for writing: $!"; } else { $opt{'to-stdout'} = 0; open($LOG_FD, '>&', \*STDOUT) or die "Cannot open log file for writing: $!"; Log('Running in dry-run mode'); } # From here on we can use Log() and Die(). if (not defined($STATE_DIR)) { Die(q{Missing required config option: $HARNESS_STATE_DIR}); } elsif (not -d $STATE_DIR) { system('mkdir', '-p', $STATE_DIR) == 0 or Die("mkdir -p $STATE_DIR failed"); Log("Created cache dir: $STATE_DIR"); } my $LAB = Lintian::Lab->new($LINTIAN_LAB); unless ($opt{'dry-run'}) { # purge the old packages $LAB->remove if $opt{'clean-mode'}; $LAB->create({ 'mode' => 02775}) unless $LAB->exists; } else { if (!$LAB->exists || $opt{'clean-mode'}) { # We either do not have a lab or we were asked to clean # the existing one. We solve this by creating a temp # lab (which will be empty). This means that A) the lab # will appear to be empty (as expected by clean-mode) and # B) that we do not have to do a dry-run check on every # "read-only" lab operation (we still have to guard write # operations). $LAB = Lintian::Lab->new; $LAB->create; } } if (!$opt{'reports-only'} && !$opt{'full-mode'} && !$opt{'incremental-mode'}) { # Nothing explicitly chosen, default to -i if the log is present, # otherwise -f. if (-f $lintian_log) { $opt{'incremental-mode'} = 1; } else { $opt{'full-mode'} = 1; } } unless ($opt{'reports-only'}) { $LAB->open; Log('Processing mirror index files'); my @manifests = local_mirror_manifests( $LINTIAN_ARCHIVEDIR, [_trim_split($LINTIAN_DIST)], [_trim_split($LINTIAN_AREA)], [_trim_split($LINTIAN_ARCH)]); my @diffs = $LAB->generate_diffs(@manifests); my (%skip, @worklist, %dirty_groups); # Remove old/stale packages from the lab foreach my $diff (@diffs) { my $type = $diff->type; my $old_manifest = $diff->olist; my $man = $diff->nlist; Log("Removing old or changed $type packages from the lab"); foreach my $removed (@{ $diff->removed }, @{ $diff->changed }) { my ($pkg_name, $pkg_version, $pkg_arch) = @$removed; my ($entry, $pkg_src, $pkg_src_version); my $sk = "$type:$pkg_name/$pkg_version"; $sk .= "/$pkg_arch" if $pkg_arch; $skip{$sk} = 1; # For log-cleaning (incremental runs) if ($opt{'dry-run'}) { $entry = Lintian::Processable->new_from_metadata($type, $old_manifest->get(@$removed)); } else { $entry = $LAB->get_package($pkg_name, $type, $pkg_version, $pkg_arch); } $pkg_src = $entry->pkg_src; $pkg_src_version = $entry->pkg_src_version; $dirty_groups{$pkg_src}->{$pkg_src_version} = 1; # Under dry-run, $entry is not a L::Lab::Entry, so kill it # so we don't try to use it as one later. $entry = undef if $opt{'dry-run'}; if ($opt{'dry-run'} || $entry) { my $arch = ''; $arch = " [$pkg_arch]" if $pkg_arch; if ($opt{'dry-run'} || $entry->remove) { Log("Removed $type $pkg_name ($pkg_version)$arch"); } else { Log("Removing $type $pkg_name ($pkg_version)$arch failed." ); } } } Log("Adding new and changed $type packages to the lab"); foreach my $added (@{ $diff->added }, @{ $diff->changed }) { my ($pkg_name, $pkg_version, $pkg_arch) = @$added; my $me = $man->get(@$added); my $entry; my $proc = Lintian::Processable->new_from_metadata($type, $me); my $pkg_src = $proc->pkg_src; my $pkg_src_version = $proc->pkg_src_version; $dirty_groups{$pkg_src}->{$pkg_src_version} = 1; unless ($opt{'dry-run'}) { $entry = $LAB->get_package($proc); } if ($opt{'dry-run'} || $entry) { my $ok = 0; my $arch = ''; $arch = " [$pkg_arch]" if $pkg_arch; if ($opt{'dry-run'}) { $ok = 1; } else { eval { $entry->create; $entry->update_status_file or die "creating status file: $!"; $ok = 1; }; } if ($ok) { my $query = "$type:$pkg_name/$pkg_version"; $query .= "/$pkg_arch" if $pkg_arch; Log("Added $type $pkg_name ($pkg_version)$arch"); } else { Log("Adding $type $pkg_name ($pkg_version)$arch failed: $@" ); } } } } # At this point %dirty_groups has queries for all dirty groups for # the incremental run. Basically each group falls into 2 cases: # # 1. All entries in the group have been added/removed # - Package added to or removed from suite # - New version replacing an older version. # 2. Only part of the entries in a group has been added/removed: # - binNMUs etc. # # If we just "blindly" run the packages from case 1, then binaries # from group 2 will not be procesed with their (full) group # (particularly without the source package). Log('Computing grouping...'); eval {$state = load_state_cache($STATE_DIR);}; if ($@) { Die($@); } if ($opt{'full-mode'}) { # for full run, just replace %dirty_groups with "". $LAB->visit_packages( sub { my ($entry) = @_; $dirty_groups{$entry->pkg_src}->{$entry->pkg_src_version} = 1; }); } elsif (not %{$state}) { # New/empty state file Log('Populating state file... '); $LAB->visit_packages( sub { my ($entry) = @_; my $group_id = join('/', $entry->pkg_src, $entry->pkg_src_version); $state->{$group_id} = {}; }); } # Sort so that the worklist is also sorted (makes it easier to review). foreach my $gname (sort keys %dirty_groups) { my $dver = $dirty_groups{$gname}; for my $gversion (sort versions_comparator keys %{$dver}) { my $group_id = "${gname}/${gversion}"; my $query = "GROUP:${group_id}"; my @res = $LAB->lab_query($query); if (@res) { # Clear the "processed by" flag, so it will be reprocessed if # lintian is interrupted for some reason. delete($state->{$group_id}{'last-processed-by'}); # Group is still in the Lab - reprocess it together push(@worklist, $group_id); foreach my $entry (@res) { # Remove old log entry for all entries in this group # NB: This part is unable to replace the update to %skip # in the "foreach removed-entry in diff" above. In case # the entire group is removed, we will enter this loop, # but we will see each of the entries removed in the # loop above. $skip{$entry->identifier} = 1; } } else { # No longer present at all, kill the entire entry delete($state->{$group_id}); } } } save_state_cache($STATE_DIR, $state) if not $opt{'dry-run'}; # Flushes the changed manifest to the file system - croaks on # error # - no need to check dry-run here as nothing changed and it frees # memory to do this. # - in the (hopefully unlikely) case that dry-run is *buggy* and # the lab actually was modified, then this will at least keep # the lab metadata consistent with the actual contents. $LAB->close; # Throw away the lab to avoid it hogging memory. $LAB = undef; if ($opt{'incremental-mode'}) { # Extra work for the incremental run # - do this regardless of @worklist, since we could in theory # have an "only removals"-run. In that case, their entries # should still be removed from the log. die "Old Lintian log file $lintian_log not found!\n" unless -f $lintian_log; # update lintian.log Log('Updating lintian.log...'); rewrite_lintian_log($lintian_log, \%skip); } Log(''); # Clear some variables we no longer need, so Perl can reclaim # the memory. %dirty_groups = %skip = @diffs = @manifests = (); if (@worklist) { my $scs = $opt{'schedule-chunk-size'}; if ($opt{'full-mode'}) { # truncate in full-mode open(my $fd, '>', $lintian_log) or Die("open/truncate $lintian_log failed: $!"); close($fd) or Die("close $lintian_log failed: $!"); } $state = process_worklist(\@worklist, $lintian_log, $STATE_DIR, $scs); } else { Log('Skipping Lintian run - nothing to do...'); } } if (defined($state) and time() <= $START_TIME + BACKLOG_PROCESSING_TIME_LIMIT){ my $scs = $opt{'schedule-chunk-size'}; my @worklist = find_backlog($LINTIAN_VERSION, $state); if (@worklist > BACKLOG_PROCESSING_GROUP_LIMIT) { @worklist = splice(@worklist, 0, BACKLOG_PROCESSING_GROUP_LIMIT); } Log('Processing backlog...') if @worklist; while (@worklist and $state) { my (@slice, $filter_set); if (time() >= $START_TIME + BACKLOG_PROCESSING_TIME_LIMIT) { Log('No more time for processing backlogs'); last; } if ($scs > -1 and $scs < @worklist) { @slice = splice(@worklist, 0, $scs); } else { @slice = @worklist; undef(@worklist); } $filter_set = generate_log_filter($LINTIAN_LAB, \@slice); rewrite_lintian_log($lintian_log, $filter_set); $state = process_worklist(\@slice, $lintian_log, $STATE_DIR, -1); } } # create html reports Log('Creating HTML reports...'); run("$html_reports_cmd $lintian_log >$html_reports_log 2>&1") or Log("warning: executing $html_reports_cmd returned " . (($? >> 8) & 0xff)); Log(''); # rotate the statistics file updated by $html_reports_cmd if (!$opt{'dry-run'} && -f $statistics_file) { system("cp $statistics_file $LOG_DIR/stats/statistics-`date +%Y%m%d`")== 0 or Log('warning: could not rotate the statistics file'); } # install new html directory Log('Installing HTML reports...'); unless ($opt{'dry-run'}) { system("rm -rf $HTML_DIR") == 0 or Die("error removing $HTML_DIR"); # a tiny bit of race right here rename($HTML_TMP_DIR,$HTML_DIR) or Die("error renaming $HTML_TMP_DIR into $HTML_DIR"); } Log(''); # ready!!! :-) Log('All done.'); exit 0; # ------------------------------- sub Log { my ($msg) = @_; my $ts = strftime('[%FT%T]: ', localtime()); print {$LOG_FD} $ts, $msg,"\n"; print $ts, $msg, "\n" if $opt{'to-stdout'}; return; } sub run { Log("Executing $_[0]"); return 1 if $opt{'dry-run'}; return (system($_[0]) == 0); } sub Die { Log("fatal error: $_[0]"); exit 1; } sub _trim_split { my ($val) = @_; return () unless $val; return split m/\s*+,\s*+/o, strip($val); } # local_mirror_manifests ($mirdir, $dists, $areas, $archs) # # Returns a list of manifests that represents what is on the local mirror # at $mirdir. 3 manifests will be returned, one for "source", one for "binary" # and one for "udeb" packages. They are populated based on the "Sources" and # "Packages" files. # # $mirdir - the path to the local mirror # $dists - listref of dists to consider (i.e. ['unstable']) # $areas - listref of areas to consider (i.e. ['main', 'contrib', 'non-free']) # $archs - listref of archs to consider (i.e. ['i386', 'amd64']) # sub local_mirror_manifests { my ($mirdir, $dists, $areas, $archs) = @_; my $active_srcs = {}; my $srcman = Lintian::Lab::Manifest->new('source'); my $binman = Lintian::Lab::Manifest->new('binary'); my $udebman = Lintian::Lab::Manifest->new('udeb'); foreach my $dist (@$dists) { foreach my $area (@$areas) { my $srcs = "$mirdir/dists/$dist/$area/source/Sources"; my ($srcfd, $srcsub); # Binaries have a "per arch" file. # - we check those first and then include the source packages that # are referred to by these binaries. foreach my $arch (@$archs) { my $pkgs = "$mirdir/dists/$dist/$area/binary-$arch/Packages"; my $upkgs = "$mirdir/dists/$dist/$area/debian-installer/" ."binary-$arch/Packages"; my $pkgfd = _open_data_file($pkgs); my $binsub = sub { _parse_pkgs_pg($active_srcs, $binman, $mirdir, $area, @_); }; my $upkgfd; my $udebsub = sub { _parse_pkgs_pg($active_srcs, $udebman, $mirdir, $area, @_); }; visit_dpkg_paragraph($binsub, $pkgfd); close($pkgfd); $upkgfd = _open_data_file($upkgs); visit_dpkg_paragraph($udebsub, $upkgfd); close($upkgfd); } $srcfd = _open_data_file($srcs); $srcsub = sub { _parse_srcs_pg($active_srcs, $srcman, $mirdir, $area, @_) }; visit_dpkg_paragraph($srcsub, $srcfd); close $srcfd; } } return ($srcman, $binman, $udebman); } # _open_data_file ($file) # # Opens $file if it exists, otherwise it tries common extensions (i.e. .gz) and opens # that instead. It may pipe the file through a external decompressor, so the returned # file descriptor cannot be assumed to be a file. # # If $file does not exists and no common extensions are found, this dies. It may also # die if it finds a file, but is unable to open it. sub _open_data_file { my ($file) = @_; if (-e $file) { open my $fd, '<', $file or Die "opening $file: $!"; return $fd; } if (-e "$file.gz") { return open_gz("$file.gz"); } Die "Cannot find $file"; } # Helper for local_mirror_manifests - it parses a paragraph from Packages file sub _parse_pkgs_pg { my ($active_srcs, $manifest, $mirdir, $area, $data) = @_; my $ts = 0; my $s; unless ($data->{'source'}) { $data->{'source'} = $data->{'package'}; } elsif ($data->{'source'} =~ /^([-+\.\w]+)\s+\((.+)\)$/) { $data->{'source'} = $1; $data->{'source-version'} = $2; } else { $data->{'source-version'} = $data->{'version'}; } unless (defined $data->{'source-version'}) { $data->{'source-version'} = $data->{'version'}; } $s = $data->{'source'} . '/' . $data->{'source-version'}; $active_srcs->{$s}++; $data->{'file'} = $mirdir . '/' . $data->{'filename'}; $data->{'area'} = $area; # $manifest strips redundant fields for us. But for clarity and to # avoid "hard to debug" cases $manifest renames the fields, we explicitly # remove the "filename" field. delete $data->{'filename'}; if (my @stat = stat $data->{'file'}) { $ts = $stat[9]; } $data->{'timestamp'} = $ts; $manifest->set($data); return; } sub process_worklist { my ($worklist_ref, $output_file, $state_dir, $schedule_chunk_size) = @_; my $round = 0; my $rounds = 1; my @worklist = @{$worklist_ref}; my $all_ok = 1; my $state; if ($schedule_chunk_size > 0) { # compute the number of rounds needed. my $size_up = scalar @worklist + ($schedule_chunk_size - 1); $rounds = int($size_up / $schedule_chunk_size); } Log( sprintf( 'Groups to process %d will take %d round(s) [round limit: %s]', scalar @worklist, $rounds, $schedule_chunk_size > 0 ? $schedule_chunk_size : 'none' )); Log('Command line used: ' . join(q{ }, @lintian_cmd)); while (@worklist) { my $len = scalar @worklist; my @work_splice; $round++; # correct bounds to fit chunk size if ($schedule_chunk_size > 0 and $len > $schedule_chunk_size) { $len = $schedule_chunk_size; } @work_splice = splice(@worklist, 0, $len); Log("Running Lintian (round $round/$rounds) ..."); if ($len == 1) { Log(' - Single group: ' . $work_splice[0]); } else { Log( ' - Range: GROUP:' . $work_splice[0] . q{ ... GROUP:} . $work_splice[-1]); } next if ($opt{'dry-run'}); my $pid = open(my $lintpipe, '|-') // Die("fork failed: $!"); if (not $pid) { # child => reopen STD{OUT,ERR} and exec lintian open(STDOUT, '>>', $lintian_log) or die("re-open STDOUT failed: $!"); open(STDERR, '>&', *STDOUT) or die("re-open STDERR failed: $!"); exec(@lintian_cmd) or die("exec @lintian_cmd failed: $!"); } foreach my $group_id (@work_splice) { # Technically, we emit these items in reverse order to Lintian, # but Lintian sorts it anyway print {$lintpipe} "!query: GROUP:$group_id\n"; } $! = 0; close $lintpipe; Die("Closing pipe failed: $!") if $!; if ($?) { # exit 1 (policy violations) happens all the time (sadly) # exit 2 (broken packages) also happens all the time... my $res = ($? >> 8) & 0xff; my $sig = $? & 0xff; if ($res != 1 and $res != 0) { Log("warning: executing lintian returned $res"); } elsif ($sig) { Log("Lintian terminated by signal: $sig"); # If someone is sending us signals (e.g. SIGINT/Ctrl-C) # don't start the next round. # - 35k / 512 => 700 rounds (or 700 SIGINTs to stop...) Log(' - skipping the rest of the worklist'); return; } } eval {$state = load_state_cache($STATE_DIR);}; if ($@) { Die($@); } for my $group_id (@work_splice) { $state->{$group_id}{'last-processed-by'} = $LINTIAN_VERSION; } save_state_cache($STATE_DIR, $state); } return $state; } # Helper for local_mirror_manifests - it parses a paragraph from Sources file sub _parse_srcs_pg { my ($active_srcs, $manifest, $mirdir, $area, $data) = @_; my $ts = 0; my $dir = $data->{'directory'}//''; my $s = $data->{'package'} . '/' . $data->{'version'}; # only include the source if it has any binaries to be checked. # - Otherwise we may end up checking a source with no binaries # (happens if the architecture is "behind" in building) return unless $active_srcs->{$s}; $dir .= '/' if $dir; foreach my $f (split m/\n/, $data->{'files'}) { strip($f); next unless $f && $f =~ m/\.dsc$/; my (undef, undef, $file) = split m/\s++/, $f; # $dir should end with a slash if it is non-empty. $data->{'file'} = $mirdir . "/$dir" . $file; last; } $data->{'area'} = $area; # Rename a field :) $data->{'source'} = $data->{'package'}; if (my @stat = stat $data->{'file'}) { $ts = $stat[9]; } $data->{'timestamp'} = $ts; # $manifest strips redundant fields for us. $manifest->set($data); return; } sub save_state_cache { my ($state_dir, $state) = @_; my $state_file = "$state_dir/state-cache"; my ($tmp_fd, $tmp_path)= tempfile('state-cache-XXXXXX', DIR => $state_dir); # atomic replacement of the state file; not a substitute for # proper locking, but it will at least ensure that the file # is in a consistent state. eval { print {$tmp_fd} YAML::Any::Dump($state); close($tmp_fd) or die("close $tmp_path: $!"); rename($tmp_path, $state_file) or die("rename $tmp_path -> $state_file: $!"); }; if (my $err = $@) { if (-e $tmp_path) { unlink($tmp_path) or Log("unlink $tmp_path failed: $!"); } Die($@); } return 1; } sub rewrite_lintian_log { my ($lintian_log, $filter_set) = @_; return if ($opt{'dry-run'}); rename($lintian_log, $old_lintian_log) or Die("cannot rename lintian.log to $old_lintian_log: $!"); open(my $nfd, '>', $lintian_log) or Die("cannot open lintian.log $lintian_log for writing: $!"); open(my $ofd, '<', $old_lintian_log) or Die("cannot open old lintian.log $old_lintian_log for reading: $!"); my $copy_mode = 1; while (<$ofd>) { if ( m/^N: [ ] Processing [ ] (binary|udeb|source) [ ] package [ ] (\S+) [ ] \(version [ ] (\S+), [ ] arch [ ] (\S+)\)[ ]\.\.\./oxsm ) { my ($type, $pkg, $ver, $arch) = ($1,$2, $3, $4); my $k = "$type:$pkg/$ver"; $k .= "/$arch" if $type ne 'source'; $copy_mode = 1; $copy_mode = 0 if exists $filter_set->{$k}; } if ($copy_mode) { print {$nfd} $_; } } print {$nfd} "N: ---end-of-old-lintian-log-file---\n"; close($nfd) or Die("Close $lintian_log: $!"); close($ofd); # Ignore (read-only handle) return 1; } sub generate_log_filter { my ($lintian_lab_path, $worklist_ref) = @_; my $lab = Lintian::Lab->new($lintian_lab_path); my %filter; $lab->open; for my $group_id (@{$worklist_ref}) { my @res = $lab->lab_query("GROUP:${group_id}"); if (@res) { foreach my $entry (@res) { # Remove old log entry for all entries in this group # NB: This part is unable to replace the update to %filter # in the "foreach removed-entry in diff" above. In case # the entire group is removed, we will enter this loop, # but we will see each of the entries removed in the # loop above. $filter{$entry->identifier} = 1; } } } $lab->close; return \%filter; } # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/reporting/checkout-release0000775000000000000000000000125712077065714016654 0ustar #!/bin/sh # Copyright 2008 Frank Lichtenheld , if at all copyrightable # Copyright 2009 Russ Allbery # Helper script for updating lintian.debian.org to the latest lintian release # Call with the release number as only argument, e.g. # # $ cd /org/lintian.debian.org && ./root/reporting/checkout-release 1.25.0 set -e if [ $# -ne 1 ]; then echo "Usage: checkout-release " exit 2 fi release=$1 set -x cd root git fetch git merge "$release" perl -i -pe "s/(LINTIAN_VERSION = )\S+/$1\"$release\";/" root/frontend/lintian debian/rules build # Local Variables: # indent-tabs-mode: nil # End: # vim: syntax=sh sw=4 sts=4 sr et lintian-2.5.22ubuntu1/frontend/0000775000000000000000000000000012314062063013270 5ustar lintian-2.5.22ubuntu1/frontend/lintian-info0000777000000000000000000000000012310413206017005 2dplintustar lintian-2.5.22ubuntu1/frontend/dplint0000775000000000000000000001732612311317626014526 0ustar #!/usr/bin/perl -w # # dplint -- General purpose frontend for Debian package checker # # Copyright (C) 2013 Niels Thykier # - Based on lintian, which is/was: # Copyright (C) 1998 Christian Schwarz, Richard Braakman (and others) # # This program is free software. It is distributed 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. use strict; use warnings; use Cwd qw(realpath); use File::Basename qw(dirname basename); use Getopt::Long(); # The $INIT_ROOT line below is (to be) replaced at install time to the # actual root (i.e. '/usr/share/lintian'). The find_source_root call # is simply a placeholder to make the command work out of the box in # the source tree. my $INIT_ROOT = find_source_root(); my $LINTIAN_VERSION; my @INCLUDE_DIRS; my %BUILTINS = ( 'help' => \&builtin_help, 'version' => \&builtin_version, 'print-version' => \&builtin_version, ); sub error { my (@lines) = @_; print STDERR join("\n", @lines), "\n"; exit(1); } sub run_tool { my ($truename, $tool, @args) = @_; for my $include_dir (@INCLUDE_DIRS) { my $tool_path = "$include_dir/commands/${tool}"; if (-f $tool_path) { if (!-x $tool_path) { error("$tool ($tool_path) is present but not executable!"); } { # Scope here it to avoid a warning about exec not returning. exec {$tool_path} $truename, @args; } local $" = ' '; error( "Running $tool failed!", " Command: $tool_path @args", " Error from exec: $!" ); } } error("$tool is not available"); } sub setup_env { my ($user_dirs) = @_; if ($user_dirs) { my $data_home; load_file_basedir(); if (exists($ENV{'HOME'}) or exists($ENV{'XDG_CONFIG_HOME'})) { $data_home = data_home('lintian'); } unshift(@INCLUDE_DIRS, $data_home) if defined($data_home) && -d $data_home; unshift(@INCLUDE_DIRS, '/etc/lintian') if -d '/etc/lintian'; } push(@INCLUDE_DIRS, $INIT_ROOT); $ENV{'LINTIAN_ROOT'} = $INIT_ROOT; $ENV{'LINTIAN_INCLUDE_DIRS'} = join(':', grep { -d } @INCLUDE_DIRS); $ENV{'LINTIAN_HELPER_DIRS'} = join( ':', grep { -d } map { "$_/helpers" } @INCLUDE_DIRS ); $ENV{'LINTIAN_DPLINT_CALLED_AS'} = $0; $ENV{'LINTIAN_DPLINT_FRONTEND'} = realpath($0) // error("Cannot resolve $0: $!"); return; } sub load_file_basedir { # File::BaseDir sprews warnings if $ENV{'HOME'} is undef, so # make sure it is defined when we load the module. Though, # we need to scope this, so $ENV{HOME} becomes undef again # when we check for it later. local $ENV{'HOME'} = $ENV{'HOME'} // '/nonexistent'; require File::BaseDir; import File::BaseDir qw(config_home config_files data_home); return; } sub cmd_add_include_dir { my (undef, $dir) = @_; my $abs_dir; error("$dir is not a directory") unless -d $dir; $abs_dir = realpath($dir) // error("Cannot resolve $dir: $!"); push(@INCLUDE_DIRS, $abs_dir); return; } sub find_source_root { # Determine the $INIT_ROOT in case we are run from the source tree my $path = realpath(__FILE__) // error("realpath($0) failed: $!\n"); # .../lintian.git/frontend/dplint => .../lintian.git return dirname(dirname($path)); } sub main { my $user_dirs = 1; my %opthash = ( 'include-dir=s' => \&cmd_add_include_dir, 'user-dirs!' => $user_dirs, ); # init commandline parser Getopt::Long::config( 'bundling', 'no_getopt_compat', 'no_auto_abbrev', 'require_order', 'pass_through' ); # process commandline options Getopt::Long::GetOptions(%opthash) or error("error parsing options\n"); setup_env($user_dirs); my $called_as = basename($0); my $truename; my $cmd; if ($called_as ne 'dplint') { $truename = $0; if ($called_as eq 'lintian-ng') { $cmd = 'check'; } elsif ($called_as =~ m{\A (?:(?:lintian|dplint)-)? (.+) \Z}xsm) { $cmd = $1; } else { error("Not sure what command $called_as was intended to be"); } } else { if (!defined($cmd)) { $cmd = shift(@ARGV); } if (!defined($cmd)) { $cmd = 'help'; } if ($cmd =~ m/^-/) { if ($cmd eq '--help' or $cmd eq '-h') { $cmd = 'help'; } elsif ($cmd eq '--version' or $cmd eq '--print-version') { $cmd = substr($cmd, 2); } else { error("Unknown option $cmd"); } $truename //= 'dplint'; } } if (exists($BUILTINS{$cmd})) { my $handler = $BUILTINS{$cmd}; error("Unimplemented built-in $cmd") unless $handler; # Re-configure Getopt::Long - builtins do not care about ordering Getopt::Long::config('permute', 'bundling', 'no_getopt_compat', 'no_auto_abbrev'); $handler->($truename, $cmd, @ARGV); error("Built-in $cmd returned unexpectedly"); } $truename //= $cmd; run_tool($truename, $cmd, @ARGV); error('run_tool returned unexpectedly'); } sub builtin_version { my ($truename, $cmd, @args) = @_; $LINTIAN_VERSION = guess_version(__FILE__) if not defined($LINTIAN_VERSION); if ($cmd eq 'print-version') { print "$LINTIAN_VERSION\n"; } else { print "Lintian v$LINTIAN_VERSION\n"; } exit(0); } sub builtin_help { my ($truename, $cmd, @args) = @_; my $me = basename($0); $LINTIAN_VERSION = guess_version(__FILE__) if not defined($LINTIAN_VERSION); print <<"EOT"; Lintian v$LINTIAN_VERSION Usage: $me [General options] [options/arguments...] General options: --include-dir DIR include checks, libraries (etc.) from DIR --[no-]user-dirs whether to use files from user directories EOT exit 0; } sub guess_version { my $rootdir = find_source_root(); my $guess; if (-d "$rootdir/.git") { # Lets try git eval { # Disabling IPC::Run::Debug saves tons of useless calls. $ENV{'IPCRUNDEBUG'} = 'none' unless exists $ENV{'IPCRUNDEBUG'}; require IPC::Run; IPC::Run::run(['git', "--git-dir=$rootdir/.git", 'describe'], \undef, \$guess); chomp($guess); }; return $guess if $guess; } # git was not possible - maybe the changelog is available if (-f "$rootdir/debian/changelog") { require Parse::DebianChangelog; eval { my $changelog = Parse::DebianChangelog->init( { infile => "$rootdir/debian/changelog" }); $guess = $changelog->dpkg->{'Version'} if $changelog; }; return $guess if $guess; } # Out of guesses ... error('Unable to determine the version automatically!?'); } main(); # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/frontend/lintian0000775000000000000000000016637312314062063014674 0ustar #!/usr/bin/perl -w # {{{ Legal stuff # Lintian -- Debian package checker # # Copyright (C) 1998 Christian Schwarz and Richard Braakman # # This program is free software. It is distributed 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. # }}} # {{{ libraries and such use strict; use warnings; use autodie; use Cwd qw(abs_path); use Getopt::Long(); use List::MoreUtils qw(any); use POSIX qw(:sys_wait_h); my $INIT_ROOT; BEGIN { if (not defined($INIT_ROOT)) { require File::Basename; import File::Basename qw(dirname); my $path = abs_path(__FILE__); if (not defined($path)) { print STDERR "realpath($0) failed: $!\n"; exit(2); } # .../lintian.git/frontend/lintian => .../lintian.git $INIT_ROOT = dirname(dirname($path)); } if (-d "$INIT_ROOT/lib") { require lib; import lib "$INIT_ROOT/lib"; } } # }}} # {{{ Application Variables # Environment variables Lintian cares about - the list contains # the ones that can also be set via the config file # # %opt (defined below) will be updated with values of the env # after parsing cmd-line options. A given value in %opt is # updated to use the ENV variable if the one in %opt is undef # and ENV has a value. # # NB: Variables listed here are not always exported. my @ENV_VARS = ( # LINTIAN_CFG - handled manually # LINTIAN_ROOT - handled manually qw( LINTIAN_PROFILE LINTIAN_LAB TMPDIR )); ### "Normal" application variables # Version number - Is inserted during build with sed, see d/rules my $LINTIAN_VERSION; if (not defined($LINTIAN_VERSION)) { # For some reason the version above has not been inserted. # Most likely this means we are a git clone or an unpacked # source package. If so, we will use a version that best # describes our situation... my $guess = _guess_version(); $LINTIAN_VERSION = $guess if $guess; # Use a placeholder if we cannot determine our version. $LINTIAN_VERSION //= ''; } my $BANNER = "Lintian v$LINTIAN_VERSION"; #Version Banner - text form # Variables used to record commandline options # Commented out variables have "defined" checks somewhere to determine if # they were set via commandline or environment variables my $pkg_mode = 'auto'; # auto -- automatically search for # binary and source pkgs my $debug = 0; my $check_everything = 0; #flag for -a|--all switch my $lintian_info = 0; #flag for -i|--info switch my $ftpmaster_tags = 0; #flag for -F|--ftp-master-rejects switch my $allow_root = 0; #flag for --allow-root switch my $keep_lab = 0; #flag for --keep-lab switch my $no_conf = 0; #flag for --no-cfg my %conf_opt; #names of options set in the cfg file my %opt = ( #hash of some flags from cmd or cfg # Init some cmd-line value defaults ); # The search path - affected by --include-dir X, --[no-]user-dirs # The LINTIAN_ROOT will be appended last and the user dirs will be # pre-appended (depending --[no-]user-dirs). my @search_dirs; my @restricted_search_dirs; my $experimental_output_opts; my @certainties = qw(wild-guess possible certain); my (@display_level, %display_source, %suppress_tags); my ($pool, $action, $checks, $check_tags, $dont_check); my (@unpack_info, $LAB, %extra_unpack, %unpack_options, @auto_remove); my $exit_code = 0; # Timer handling (by default to nothing) my $start_timer = sub { 0; }; my $finish_timer = sub { ''; }; my $memory_usage = sub { 'N/A'; }; # }}} # {{{ Setup Code #turn off file buffering STDOUT->autoflush; # Globally ignore SIGPIPE. We'd rather deal with error returns from write # than randomly delivered signals. $SIG{PIPE} = 'IGNORE'; # reset locale definition (necessary for tar) $ENV{'LC_ALL'} = 'C'; # reset timezone definition (also for tar) $ENV{'TZ'} = ''; # When run in some automated ways, Lintian may not have a PATH, but we assume # we can call standard utilities without their full path. If PATH is # completely unset, add something basic. $ENV{PATH} = '/bin:/usr/bin' unless $ENV{PATH}; # }}} # {{{ Process Command Line ####################################### # Subroutines called by various options # in the options hash below. These are # invoked to process the commandline # options ####################################### # Display Command Syntax # Options: -h|--help sub syntax { print "$BANNER\n"; print <<"EOT-EOT-EOT"; Syntax: lintian [action] [options] [--] [packages] ... Actions: -c, --check check packages (default action) -C X, --check-part X check only certain aspects -F, --ftp-master-rejects only check for automatic reject tags -r, --remove remove package from the lab -R, --remove-lab remove static lab -S, --setup-lab set up static lab -T X, --tags X only run checks needed for requested tags --tags-from-file X like --tags, but read list from file -u, --unpack only unpack packages in the lab -X X, --dont-check-part X don\'t check certain aspects General options: -d, --debug turn Lintian\'s debug messages ON -h, --help display short help text --print-version print unadorned version number and exit -q, --quiet suppress all informational messages -v, --verbose verbose messages -V, --version display Lintian version and exit Behaviour options: --allow-root suppress lintian\'s warning when run as root --color never/always/auto disable, enable, or enable color for TTY --default-display-level reset the display level to the default --display-source X restrict displayed tags by source -E, --display-experimental display "X:" tags (normally suppressed) --no-display-experimental suppress "X:" tags --fail-on-warnings return a non-zero exit status if warnings found -i, --info give detailed info about tags -I, --display-info display "I:" tags (normally suppressed) --keep-lab keep lab after run, even if temporary -L, --display-level display tags with the specified level -o, --no-override ignore overrides --pedantic display "P:" tags (normally suppressed) --profile X Use the profile X or use vendor X checks --show-overrides output tags that have been overriden --suppress-tags T,... don\'t show the specified tags --suppress-tags-from-file X don\'t show the tags listed in file X -U X, --unpack-info X specify which info should be collected Configuration options: --cfg CONFIGFILE read CONFIGFILE for configuration --no-cfg do not read any config files --ignore-lintian-env ignore LINTIAN_* env variables --include-dir DIR include checks, libraries (etc.) from DIR (*) -j X, --jobs X limit the number of parallel unpacking jobs to X --lab LABDIR use LABDIR as permanent laboratory --[no-]user-dirs whether to use files from user directories (*) Package selection options: -a, --all process all packages in distribution -b, --binary process only binary packages --packages-from-file X process the packages in a file (if "-" use stdin) -s, --source process only source packages --udeb process only udeb packages Options marked with (*) should be the first options if given at all. EOT-EOT-EOT exit 0; } # Display Version Banner # Options: -V|--version, --print-version sub banner { if ($_[0] eq 'print-version') { print "$LINTIAN_VERSION\n"; } else { print "$BANNER\n"; } exit 0; } # Record action requested # Options: -S, -R, -c, -u, -r sub record_action { if ($action) { die("too many actions specified: $_[0]"); } $action = "$_[0]"; return; } # Record Parts requested for checking # Options: -C|--check-part sub record_check_part { if (defined $action and $action eq 'check' and $checks) { die('multiple -C or --check-part options not allowed'); } if ($dont_check) { die( join(q{ }, 'both -C or --check-part and -X', 'or --dont-check-part options not allowed')); } if ($action) { die("too many actions specified: $_[0]"); } $action = 'check'; $checks = "$_[1]"; return; } # Record Parts requested for checking # Options: -T|--tags sub record_check_tags { if (defined $action and $action eq 'check' and $check_tags) { die('multiple -T or --tags options not allowed'); } if ($checks) { die('both -T or --tags and -C or --check-part options not allowed'); } if ($dont_check) { die('both -T or --tags and -X or --dont-check-part options not allowed' ); } if ($action) { die("too many actions specified: $_[0]"); } $action = 'check'; $check_tags = "$_[1]"; return; } # Record Parts requested for checking # Options: --tags-from-file sub record_check_tags_from_file { my ($option, $name) = @_; open(my $file, '<', $name); my @tags; for my $line (<$file>) { $line =~ s/^\s+//; $line =~ s/\s+$//; next unless $line; next if $line =~ /^\#/; push(@tags, split(/\s*,\s*/, $line)); } close($file); return record_check_tags($option, join(',', @tags)); } # Record tags that should be suppressed. # Options: --suppress-tags sub record_suppress_tags { my ($option, $tags) = @_; for my $tag (split(/\s*,\s*/, $tags)) { $suppress_tags{$tag} = 1; } return; } # Record tags that should be suppressed from a file. # Options: --suppress-tags-from-file sub record_suppress_tags_from_file { my ($option, $name) = @_; open(my $file, '<', $name); for my $line (<$file>) { chomp $line; $line =~ s/^\s+//; # Remove trailing white-space/comments $line =~ s/(\#.*+|\s+)$//; next unless $line; record_suppress_tags($option, $line); } close($file); return; } # Record Parts requested not to check # Options: -X|--dont-check-part X sub record_dont_check_part { if (defined $action and $action eq 'check' and $dont_check) { die('multiple -X or --dont-check-part options not allowed'); } if ($checks) { die( join(q{ }, 'both -C or --check-part and', '-X or --dont-check-part options not allowed')); } if ($action) { die("too many actions specified: $_[0]"); } $action = 'check'; $dont_check = "$_[1]"; return; } # Record what type of data is specified # Options: -b|--binary, -s|--source, --udeb sub record_pkgmode { $pkg_mode = 'binary' if $_[0] eq 'binary'; $pkg_mode = 'source' if $_[0] eq 'source'; $pkg_mode = 'udeb' if $_[0] eq 'udeb'; return; } # Process -L|--display-level flag sub record_display_level { my ($option, $level) = @_; my ($op, $rel); if ($level =~ s/^([+=-])//) { $op = $1; } if ($level =~ s/^([<>]=?|=)//) { $rel = $1; } my ($severity, $certainty) = split('/', $level); $op = '=' unless defined $op; $rel = '=' unless defined $rel; if (not defined $certainty) { if (any { $severity eq $_ } @certainties) { $certainty = $severity; undef $severity; } } push(@display_level, [$op, $rel, $severity, $certainty]); return; } # Process -I|--display-info flag sub display_infotags { push(@display_level, ['+', '>=', 'wishlist']); return; } # Process --pedantic flag sub display_pedantictags { push(@display_level, ['+', '=', 'pedantic']); return; } # Process --default-display-level flag sub default_display_level { push(@display_level, ['=', '>=', 'important'], ['+', '>=', 'normal', 'possible'], ['+', '>=', 'minor', 'certain'], ); return; } # Process --display-source flag sub record_display_source { $display_source{$_[1]} = 1; return; } # Process -q|--quite flag sub record_quiet { $opt{'verbose'} = -1; return; } { my $warned = 0; sub warn_late_options { print STDERR join(q{ }, 'Warning: --include-dir and --[no-]user-dirs', "should be the first option(s) if given\n"); return; } # Process --include-dir (late) sub record_include_dir_late { my (undef, $dir) = @_; push(@search_dirs, $dir); if (not $warned++) { warn_late_options(); } return; } # Process --[no-]user-dirs (late) sub record_user_dirs_late { my (undef, $value) = @_; $opt{'user-dirs'} = $value; if (not $warned++) { warn_late_options(); } return; } } # Process display-info and display-level options in cfg files # - dies if display-info and display-level are used together # - adds the relevant display level unless the command-line # added something to it. # - uses @display_level to track cmd-line appearences of # --display-level/--display-info sub cfg_display_level { my ($var, $val) = @_; if ($var eq 'display-info' or $var eq 'pedantic'){ die "$var and display-level may not both appear in the config file.\n" if $conf_opt{'display-level'}; return unless $val; # case "display-info=no" (or "pedantic=no") # We are only supposed to modify @display_level if it was not # set by a command-line option. However, both display-info # and pedantic comes here so we cannot determine this solely # by checking if @display_level is empty. We use # "__conf-display-opts" to determine if @display_level was set # by a conf option or not. return if @display_level && !$conf_opt{'__conf-display-opts'}; $conf_opt{'__conf-display-opts'} = 1; display_infotags() if $var eq 'display-info'; display_pedantictags() if $var eq 'pedantic'; } elsif ($var eq 'display-level'){ foreach my $other (qw(pedantic display-info)) { die( join(q{ }, "$other and display-level may not", "both appear in the config file.\n"))if $conf_opt{$other}; } return if @display_level; strip($val); foreach my $dl (split m/\s++/, $val) { record_display_level('display-level', $dl); } } return; } # Processes quiet and verbose options in cfg files. # - dies if quiet and verbose are used together # - sets the verbosity level ($opt{'verbose'}) unless # already set. sub cfg_verbosity { my ($var, $val) = @_; if ( ($var eq 'verbose' && exists $conf_opt{'quiet'}) || ($var eq 'quiet' && exists $conf_opt{'verbose'})) { die "verbose and quiet may not both appear in the config file.\n"; } # quiet = no or verbose = no => no change return unless $val; # Do not change the value if set by command line. return if defined $opt{'verbose'}; # quiet = yes => verbosity_level = -1 # # technically this allows you to enable verbose by using "quiet = # -1" (etc.), but most people will probably not use this # "feature". $val = -$val if $var eq 'quiet'; $opt{'verbose'} = $val; return; } # Process overrides option in the cfg files sub cfg_override { my ($var, $val) = @_; return if defined $opt{'no-override'}; # This option is inverted in the config file $opt{'no-override'} = !$val; return; } # Hash used to process commandline options my %opthash = ( # ------------------ actions 'setup-lab|S' => \&record_action, 'remove-lab|R' => \&record_action, 'check|c' => \&record_action, 'check-part|C=s' => \&record_check_part, 'tags|T=s' => \&record_check_tags, 'tags-from-file=s' => \&record_check_tags_from_file, 'ftp-master-rejects|F' => \$ftpmaster_tags, 'dont-check-part|X=s' => \&record_dont_check_part, 'unpack|u' => \&record_action, 'remove|r' => \&record_action, # ------------------ general options 'help|h' => \&syntax, 'version|V' => \&banner, 'print-version' => \&banner, 'verbose|v' => \$opt{'verbose'}, 'debug|d+' => \$debug, # Count the -d flags 'quiet|q' => \&record_quiet, # sets $opt{'verbose'} to -1 # ------------------ behaviour options 'info|i' => \$opt{'info'}, 'display-info|I' => \&display_infotags, 'display-experimental|E!' => \$opt{'display-experimental'}, 'pedantic' => \&display_pedantictags, 'display-level|L=s' => \&record_display_level, 'default-display-level' => \&default_display_level, 'display-source=s' => \&record_display_source, 'suppress-tags=s' => \&record_suppress_tags, 'suppress-tags-from-file=s' => \&record_suppress_tags_from_file, 'no-override|o' => \$opt{'no-override'}, 'show-overrides' => \$opt{'show-overrides'}, 'color=s' => \$opt{'color'}, 'unpack-info|U=s' => \@unpack_info, 'allow-root' => \$allow_root, 'fail-on-warnings' => \$opt{'fail-on-warnings'}, 'keep-lab' => \$keep_lab, # ------------------ configuration options 'cfg=s' => \$opt{'LINTIAN_CFG'}, 'no-cfg' => \$no_conf, 'lab=s' => \$opt{'LINTIAN_LAB'}, 'profile=s' => \$opt{'LINTIAN_PROFILE'}, # (NB: --root is deprecated) 'root=s' => \$opt{'LINTIAN_ROOT'}, 'jobs|j:i' => \$opt{'jobs'}, 'ignore-lintian-env' => \$opt{'ignore-lintian-env'}, 'include-dir=s' => \&record_include_dir_late, 'user-dirs!' => \&record_user_dirs_late, # ------------------ package selection options 'all|a' => \$check_everything, 'binary|b' => \&record_pkgmode, 'source|s' => \&record_pkgmode, 'udeb' => \&record_pkgmode, 'packages-from-file=s' => \$opt{'packages-from-file'}, # ------------------ experimental 'exp-output:s' => \$experimental_output_opts, ); # Options that can appear in the config file my %cfghash = ( 'color' => \$opt{'color'}, 'display-experimental' => \$opt{'display-experimental'}, 'display-info' => \&cfg_display_level, 'display-level' => \&cfg_display_level, 'fail-on-warnings' => \$opt{'fail-on-warnings'}, 'info' => \$opt{'info'}, 'jobs' => \$opt{'jobs'}, 'pedantic' => \&cfg_display_level, 'quiet' => \&cfg_verbosity, 'override' => \&cfg_override, 'show-overrides' => \$opt{'show-overrides'}, 'verbose' => \&cfg_verbosity, ); # Parse --include-dir and --[no-]user-dirs early Getopt::Long::config( 'bundling', 'no_getopt_compat', 'no_auto_abbrev', 'require_order', 'pass_through' ); Getopt::Long::GetOptions( 'include-dir=s' => \@search_dirs, 'user-dirs!' => \$opt{'user-dirs'}, ) or die("error parsing options\n"); # init commandline parser Getopt::Long::config('bundling', 'no_getopt_compat', 'no_auto_abbrev', 'permute'); # process commandline options Getopt::Long::GetOptions(%opthash) or die("error parsing options\n"); # root permissions? # check if effective UID is 0 if ($> == 0 and not $allow_root) { print STDERR join(q{ }, 'warning: the authors of lintian do not', "recommend running it with root privileges!\n"); } if ($opt{'ignore-lintian-env'}) { delete $ENV{$_} for grep { m/^LINTIAN_/ } keys %ENV; } # }}} # {{{ Read important environment if (defined($opt{'LINTIAN_ROOT'}) or defined($ENV{'LINTIAN_ROOT'})) { my $desired_root = $opt{'LINTIAN_ROOT'} // $ENV{'LINTIAN_ROOT'}; my $ok = 0; my $abs = abs_path($desired_root); die("Cannot resolve $desired_root: $!\n") unless defined($abs); $ok = 1 if $abs eq $INIT_ROOT; print STDERR "warning: LINTIAN_ROOT/--root is deprecated.\n"; print STDERR " Perhaps you wanted --include-dir instead?\n"; print STDERR "If you are using this option to run lintian from a\n"; print STDERR "checkout, then Lintian 2.5.18 should just work out\n"; print STDERR "of the box without this option/ENV variable.\n"; print STDERR " (You may want to replace it with --no-user-dirs)\n"; if (not $ok) { print STDERR "Error: Cannot use $desired_root as LINTIAN_ROOT\n"; print STDERR " (only valid value is $INIT_ROOT)\n"; exit(2); } delete($opt{'LINTIAN_ROOT'}); # --root/LINTIAN_ROOT used to imply --no-user-dirs unless # --user-dirs was explicitly given. Keep this behaviour as long # as we accept --root. $opt{'user-dirs'} //= 0; } else { # Enable user dirs by default $opt{'user-dirs'} //= 1; } # Set LINTIAN_ROOT to the actual root. $ENV{'LINTIAN_ROOT'} = $INIT_ROOT; # Filter out non-existent paths and resolve the rest. # - as we will add them to @INC, make sure they are resolved # so a check doing a chdir will not suddently load anything # differently. @search_dirs = map { if (-d $_) { my $resolved = abs_path($_); unless (defined $resolved) { print STDERR "Cannot resolve $_: $!\n"; exit 2; } ($resolved); } else { (); } } @search_dirs; if ($opt{'user-dirs'} and not $ENV{'LINTIAN_INTERNAL_TESTSUITE'}){ # Pre-append the user part of the search dirs. unshift @restricted_search_dirs, '/etc/lintian'; # In some (rare) cases, $ENV{HOME} will not be available. # - Handle that gracefully by not emitting "Uninitialized ...". unshift @restricted_search_dirs, "$ENV{HOME}/.lintian" if defined $ENV{HOME}; } # environment variables overwrite settings in conf file, so load them now # assuming they were not set by cmd-line options foreach my $var (@ENV_VARS) { # note $opt{$var} will usually always exists due to the call to GetOptions # so we have to use "defined" here $opt{$var} = $ENV{$var} if $ENV{$var} && !defined $opt{$var}; } # }}} # {{{ Sanity check command-line options (that are unaffected by the configuration file) # option --all and packages specified at the same time? if (($check_everything or $opt{'packages-from-file'}) and $#ARGV+1 > 0) { print STDERR join(q{ }, 'warning: options -a and --packages-from-file', "cannot be mixed with package parameters!\n"); print STDERR "(will ignore -a or/and --packages-from-file option)\n"; undef $check_everything; delete $opt{'packages-from-file'}; } # check specified action $action = 'check' unless $action; # check for arguments if ( $action =~ /^(?:check|unpack|remove)$/ and $#ARGV == -1 and not $check_everything and not $opt{'packages-from-file'}) { my $ok = 0; if ($action eq 'check' or $action eq 'unpack') { # If debian/changelog exists, assume an implied # "../__.changes" (or # "../__source.changes"). if (-f 'debian/changelog') { my $file = _find_changes(); push @ARGV, $file; $ok = 1; } } syntax() unless $ok; } die "Cannot use profile together with --ftp-master-rejects.\n" if $opt{'LINTIAN_PROFILE'} and $ftpmaster_tags; # --ftp-master-rejects is implemented in a profile $opt{'LINTIAN_PROFILE'} = 'debian/ftp-master-auto-reject' if $ftpmaster_tags; # }}} # {{{ Loading lintian's own libraries, parse config file and setup output # Include (only existsing) lib directories from @search_dirs in @INC # and LINTIAN_{INCLUDE,HELPER}_DIRS. # NB: Add INIT_ROOT to @search_dirs after updating @INC as we already # added it in BEGIN{} if needed. unshift @INC, grep { -d } map { "$_/lib" } @search_dirs; push(@search_dirs, $INIT_ROOT); $ENV{'LINTIAN_INCLUDE_DIRS'} = join(':', grep { -d } @search_dirs); $ENV{'LINTIAN_HELPER_DIRS'} = join(':',grep { -d } map { "$_/helpers" } @search_dirs); require Lintian::Lab; require Lintian::DepMap; require Lintian::DepMap::Properties; require Lintian::Data; require Lintian::Output; import Lintian::Output qw(:messages); require Lintian::Internal::FrontendUtil; import Lintian::Internal::FrontendUtil qw(default_parallel load_collections); require Lintian::ProcessablePool; require Lintian::Profile; require Lintian::Tags; import Lintian::Tags qw(tag); require Lintian::Unpacker; require Lintian::Util; import Lintian::Util qw(fail parse_boolean strip); if (defined $experimental_output_opts) { my %opts = map { split(/=/) } split(/,/, $experimental_output_opts); foreach (keys %opts) { if ($_ eq 'format') { if ($opts{$_} eq 'colons') { require Lintian::Output::ColonSeparated; $Lintian::Output::GLOBAL= Lintian::Output::ColonSeparated->new; } elsif ($opts{$_} eq 'letterqualifier') { require Lintian::Output::LetterQualifier; $Lintian::Output::GLOBAL = Lintian::Output::LetterQualifier->new; } elsif ($opts{$_} eq 'xml') { require Lintian::Output::XML; $Lintian::Output::GLOBAL = Lintian::Output::XML->new; } elsif ($opts{$_} eq 'fullewi') { require Lintian::Output::FullEWI; $Lintian::Output::GLOBAL = Lintian::Output::FullEWI->new; } } } } # search for configuration file if it was not set with --cfg # do not search the default locations if it was set. unless ($no_conf) { if (not $opt{'LINTIAN_CFG'}) { $opt{'LINTIAN_CFG'} = _find_cfg_file() // ''; } } else { $opt{'LINTIAN_CFG'} = ''; } # read configuration file if ($opt{'LINTIAN_CFG'}) { open(my $fd, '<', $opt{'LINTIAN_CFG'}); while (<$fd>) { chop; s/\#.*$//go; s/\"//go; next if m/^\s*$/o; # substitute some special variables s,\$HOME/,$ENV{'HOME'}/,go; s,\~/,$ENV{'HOME'}/,go; my $found = 0; foreach my $var (@ENV_VARS) { if (m/^\s*$var\s*=\s*(.*\S)\s*$/i) { if (exists $conf_opt{$var}){ print STDERR "Configuration variable $var appears more than once\n"; print STDERR " in $opt{'LINTIAN_CFG'} (line: $.)", " - Using the first value!\n"; next; } $opt{$var} = $1 unless defined $opt{$var}; $conf_opt{$var} = 1; $found = 1; last; } } unless ($found) { # check if it is a config option if (m/^\s*([-a-z]+)\s*=\s*(.*\S)\s*$/o){ my ($var, $val) = ($1, $2); my $ref = $cfghash{$var}; die "Unknown configuration variable $var at line: ${.}.\n" unless $ref; if (exists $conf_opt{$var}){ print STDERR "Configuration variable $var appears more than once\n"; print STDERR " in $opt{'LINTIAN_CFG'} (line: $.)", " - Using the first value!\n"; next; } $conf_opt{$var} = 1; $found = 1; # Translate boolean strings to "0" or "1"; ignore # errors as not all values are (intended to be) # booleans. eval { $val = parse_boolean($val); }; if (ref $ref eq 'SCALAR'){ # Check it was already set next if defined $$ref; $$ref = $val; } elsif (ref $ref eq 'CODE'){ $ref->($var, $val); } } } unless ($found) { die "syntax error in configuration file: $_\n"; } } close($fd); } # check permitted values for --color / color # - We set the default to 'auto' here; because we cannot do # it before the config check. $opt{'color'} = 'auto' unless defined $opt{'color'}; if ($opt{'color'} and $opt{'color'} !~ /^(?:never|always|auto|html)$/) { die join(q{ }, 'The color value must be one of', "\"never\", \"always\", \"auto\" or \"html\"\n"); } # We do this manually since the above would set $ENV{TMPDIR} to '' # if it was undef and that causes tempdir to give us some "funny" # (read: broken) paths. $ENV{'TMPDIR'} = $opt{'TMPDIR'} if defined $opt{'TMPDIR'}; if ($debug) { $opt{'verbose'} = 1; $ENV{'LINTIAN_DEBUG'} = $debug; if ($debug > 1) { eval { require Time::HiRes; import Time::HiRes qw(gettimeofday tv_interval); $start_timer = sub { return [gettimeofday()]; }; $finish_timer = sub { my ($start) = @_; my $diff = tv_interval($start); return sprintf(' (%.3fs)', $diff); }; print "N: Using Time::HiRes to debug running times\n"; }; if ($@) { print "N: Cannot load Time::HiRes ($@)\n"; print "N: Running times will not be timed.\n"; } if ($debug > 2) { eval { require Devel::Size; import Devel::Size qw(total_size); { no warnings qw(once); # Disable warnings about stuff Devel::Size cannot # give reliable sizes for. $Devel::Size::warn = 0; } $memory_usage = sub { my ($obj) = @_; my $size = total_size($obj); my $unit = 'B'; if ($size > 1536) { $size /= 1024; $unit = 'kB'; if ($size > 1536) { $size /= 1024; $unit = 'MB'; } } return sprintf('%.2f %s', $size, $unit); }; print "N: Using Devel::Size to debug memory usage\n"; }; if ($@) { print "N: Cannot load Devel::Size ($@)\n"; print "N: Running memory usage will not be checked.\n"; } } } } else { # Ensure verbose has a defined value $opt{'verbose'} = 0 unless defined $opt{'verbose'}; } $Lintian::Output::GLOBAL->verbosity_level($opt{'verbose'}); $Lintian::Output::GLOBAL->debug($debug); $Lintian::Output::GLOBAL->color($opt{'color'}); $Lintian::Output::GLOBAL->showdescription($opt{'info'}); # }}} # {{{ Load profile, setup display setting etc. # Print Debug banner, now that we're finished determining # the values and have Lintian::Output available debug_msg( 1, $BANNER, "Lintian root directory: $INIT_ROOT", "Configuration file: $opt{'LINTIAN_CFG'}", 'Laboratory: ' . ($opt{'LINTIAN_LAB'} // ''), delimiter(), ); my $PROFILE; our $TAGS = Lintian::Tags->new; $TAGS->show_experimental($opt{'display-experimental'}); $TAGS->show_overrides($opt{'show-overrides'}); $TAGS->sources(keys %display_source) if %display_source; $PROFILE = Lintian::Profile->new($opt{'LINTIAN_PROFILE'},\@search_dirs, { 'restricted-search-dirs' => \@restricted_search_dirs }, ); # Ensure $opt{'LINTIAN_PROFILE'} is defined $opt{'LINTIAN_PROFILE'} = $PROFILE->name unless defined $opt{'LINTIAN_PROFILE'}; v_msg('Using profile ' . $PROFILE->name . '.'); if ($dont_check || %suppress_tags || $checks || $check_tags) { _update_profile($PROFILE, $dont_check, \%suppress_tags, $checks, $check_tags); } $TAGS->profile($PROFILE); Lintian::Data->set_vendor($PROFILE); # Initialize display level settings. for my $level (@display_level) { eval { $TAGS->display(@$level) }; if ($@) { my $error = $@; $error =~ s/ at .*//; die $error, "\n"; } } # }}} # {{{ Set up clean-up handlers. $SIG{'INT'} = \&interrupted; $SIG{'QUIT'} = \&interrupted; # }}} # {{{ Create/Maintain Lab and add any specified Debian Archives (*.debs) $LAB = Lintian::Lab->new($opt{'LINTIAN_LAB'}); ####################################### # Process -S option if ($action eq 'setup-lab') { if ($#ARGV+1 > 0) { warning('ignoring additional command line arguments'); } $LAB->create or fail('There was an error while setting up the static lab.'); exit 0; ####################################### # Process -R option } elsif ($action eq 'remove-lab') { if ($#ARGV+1 > 0) { warning('ignoring additional command line arguments'); } $LAB->remove or fail('There was an error while removing the static lab.'); exit 0; ####################################### # Check for non deb specific actions } elsif ( not( ($action eq 'unpack') or ($action eq 'check') or ($action eq 'remove')) ) { fail("bad action $action specified"); } if (!$LAB->is_temp) { # sanity check: fail( join(q{ }, 'lintian lab has not been set up correctly', '(perhaps you forgot to run lintian --setup-lab?)') ) unless $LAB->exists; } else { $LAB->create({'keep-lab' => $keep_lab}); } $LAB->open; # Update the ENV var as well - unlike the original values, # $LAB->dir is always absolute $ENV{'LINTIAN_LAB'} = $opt{'LINTIAN_LAB'} = $LAB->dir; v_msg("Setting up lab in $opt{'LINTIAN_LAB'} ...") if $LAB->is_temp; # }}} # {{{ Compile list of files to process $pool = Lintian::ProcessablePool->new($LAB); # process package/file arguments while (my $arg = shift) { # file? if (-f $arg) { if ($arg =~ m/\.(?:u?deb|dsc|changes)$/o){ eval {$pool->add_file($arg);}; if ($@) { print STDERR "Skipping $arg: $@"; $exit_code = 2; } } else { fail( join(q{ }, "bad package file name $arg", '(neither .deb, .udeb, .changes or .dsc file)')); } } else { # parameter is a package name--so look it up handle_lab_query($arg); } } if ($check_everything) { my $t = $pkg_mode; my $visitor = sub { my ($lpkg) = @_; $pool->add_proc($lpkg); }; $t = undef if $pkg_mode eq 'auto'; $LAB->visit_packages($visitor, $t); } elsif ($opt{'packages-from-file'}){ my $fd; if ($opt{'packages-from-file'} eq '-') { $fd = \*STDIN; } else { open($fd, '<', $opt{'packages-from-file'}); } while (my $file = <$fd>) { chomp $file; if ($file =~ m/^!query:\s*(\S(?:.*\S)?)/o) { my $query = $1; handle_lab_query($query); } else { $pool->add_file($file); } } # close unless it is STDIN (else we will see a lot of warnings # about STDIN being reopened as "output only") close($fd) unless $opt{'packages-from-file'} eq '-'; } # }}} # {{{ Some silent exit if ($pool->empty()) { v_msg('No packages selected.'); exit $exit_code; } # }}} # {{{ Handle $action eq 'remove' # We have enough information to handle remove now. if ($action eq 'remove') { # Handle remove here - makes the unpack/check loop simpler. foreach my $group ($pool->get_groups()){ foreach my $lpkg ($group->get_processables()){ $TAGS->file_start($lpkg); unless ($lpkg->remove) { my $pkg_name = $lpkg->pkg_name(); warning("cannot remove entry for $pkg_name: $!"); $exit_code = 2; } } } $TAGS->file_end(); # Write the lab state to the disk, so it remembers they are gone. $LAB->close; exit $exit_code; } # }}} # {{{ Load information about collector scripts # $map is just here to check that all the needed collections are present. my $map = Lintian::DepMap->new(); my @scripts = sort $PROFILE->scripts; my $collmap = Lintian::DepMap::Properties->new(); { my $load_coll = sub { my ($cs) = @_; my $coll = $cs->name; debug_msg(2, "Read collector description for $coll ..."); $collmap->add($coll, $cs->needs_info, $cs); $map->addp('coll-' . $coll, 'coll-', $cs->needs_info); push @auto_remove, $coll if $cs->auto_remove; }; load_collections($load_coll, "$INIT_ROOT/collection"); } for my $c (@scripts) { # Add the checks with their dependency information my $cs = $PROFILE->get_script($c); $map->add('check-' . $c); if ($cs->needs_info) { $map->addp('check-' . $c, 'coll-', $cs->needs_info); } } # Make sure the resolver is in a sane state: scalar($map->missing) == 0 or fail('There are missing nodes on the resolver: '. join(', ', $map->missing)); undef $map; # }}} # {{{ determine which info is needed by the collection scripts if ($action eq 'check') { # For overrides we need "overrride-file" as well unless ($opt{'no-override'}) { $extra_unpack{'override-file'} = 1; } # For checking, pass a profile to the unpacker to limit what it # unpacks. $unpack_options{'profile'} = $PROFILE; $unpack_options{'extra-coll'} = \%extra_unpack; } else { # With --unpack we want all of them. That's the default so, # "done!" 1; } if (@unpack_info) { # Add collections specifically requested by the user (--unpack-info) for my $i (map { split m/,/ } @unpack_info) { unless ($collmap->getp($i)) { fail("unknown info specified: $i"); } $extra_unpack{$i} = 1; } # Never auto-remove anything explicitly requested by the user @auto_remove = grep { !exists $extra_unpack{$_} } @auto_remove if not $keep_lab; } # Never auto-remove anything if $keep_lab is set... @auto_remove = () if $keep_lab; # }}} # {{{ Okay, now really processing the packages in one huge loop $opt{'jobs'} = default_parallel() unless defined $opt{'jobs'}; $unpack_options{'jobs'} = $opt{'jobs'}; # Filter out the "lintian" check if present - it does no real harm, # but it adds a bit of noise in the debug output. @scripts = grep { $_ ne 'lintian' } @scripts; debug_msg( 1, "Selected action: $action", sprintf('Extra data to collect: %s', join(',',sort keys %extra_unpack)), sprintf('Selected checks: %s', join(',', @scripts)), "Parallelization limit: $opt{'jobs'}", ); # Now action is always either "check" or "unpack" # these two variables are used by process_package # and need to persist between invocations. my $unpacker = Lintian::Unpacker->new($collmap, \%unpack_options); my %overrides; if ($action eq 'check') { # Ensure all checks can actually be loaded... foreach my $script (@scripts) { my $cs = $PROFILE->get_script($script); eval {$cs->load_check;}; if ($@) { warning("Cannot load check \"$script\""); print STDERR $@; exit 2; } } } foreach my $gname (sort $pool->get_group_names()) { my $group = $pool->get_group($gname); unpack_group($gname, $group); if ($action eq 'check'){ process_group($group); $group->clear_cache; # Double check that no processes are running; hopefully # it will catch regressions like 3bbcc3b earlier. fail('Unreaped processes after running checks!?') if waitpid(-1, WNOHANG) != -1; } } # Write the lab state to the disk, so it remembers the new packages $LAB->close; if ( $action eq 'check' and not $opt{'no-override'} and not $opt{'show-overrides'}) { my $errors = $overrides{errors} || 0; my $warnings = $overrides{warnings} || 0; my $info = $overrides{info} || 0; my $total = $errors + $warnings + $info; if ($total > 0) { my $text = ($total == 1) ? "$total tag overridden" : "$total tags overridden"; my @output; if ($errors) { push(@output, ($errors == 1) ? "$errors error" : "$errors errors"); } if ($warnings) { push(@output, ($warnings == 1) ? "$warnings warning" : "$warnings warnings"); } if ($info) { push(@output, "$info info"); } msg("$text (". join(', ', @output). ')'); } } my $ign_over = $TAGS->ignored_overrides; if (keys %$ign_over) { msg( join(q{ }, 'Some overrides were ignored,', 'since the tags were marked "non-overridable".')); if ($opt{'verbose'}) { v_msg( join(q{ }, 'The following tags were "non-overridable"', 'and had at least one override')); foreach my $tag (sort keys %$ign_over) { v_msg(" - $tag"); } } else { msg('Use --verbose for more information.'); } } # }}} # Wait for any remaining jobs - There will usually not be any # unless we had an issue examining the last package. We patiently wait # for them here; if the user cannot be bothered to wait, he/she can send # us a signal and the END handler will kill any remaining jobs. $unpacker->wait_for_jobs; exit $exit_code; # {{{ Some subroutines # Removes all collections with "Auto-Remove: yes"; takes a Lab::Package # - depends on global variables %collection_info and %extra_unpack # sub auto_clean_package { my ($lpkg) = @_; my $pkg_name = $lpkg->pkg_name(); my $pkg_type = $lpkg->pkg_type(); my $base = $lpkg->base_dir(); my $changed = 0; for my $coll (@auto_remove) { my $ci = $collmap->getp($coll); next unless $lpkg->is_coll_finished($coll, $ci->version); debug_msg(1, "Auto removing: $coll ..."); $changed = 1; eval {$ci->collect($pkg_name, "remove-${pkg_type}", $base);}; if ($@) { warning( $@, "removing collect info $coll about package $pkg_name failed", "skipping cleanup of $pkg_type package $pkg_name" ); return -1; } $lpkg->_clear_coll_status($coll); } return $changed; } sub post_pkg_process_overrides{ my ($lpkg) = @_; # Report override statistics. if (not $opt{'no-override'} and not $opt{'show-overrides'}) { my $stats = $TAGS->statistics($lpkg); my $errors = $stats->{overrides}{types}{E} || 0; my $warnings = $stats->{overrides}{types}{W} || 0; my $info = $stats->{overrides}{types}{I} || 0; $overrides{errors} += $errors; $overrides{warnings} += $warnings; $overrides{info} += $info; } return; } sub prep_unpack_error { my ($group, $lpkg) = @_; my $err = $!; my $pkg_type = $lpkg->pkg_type; my $pkg_name = $lpkg->pkg_name; warning( "could not create the package entry in the lab: $err", "skipping $action of $pkg_type package $pkg_name" ); $exit_code = 2; $group->remove_processable($lpkg); return; } sub unpack_group { my ($gname, $group) = @_; my $errhandler = sub { prep_unpack_error($group, @_) }; # Kill pending jobs, if any $unpacker->kill_jobs; $unpacker->reset_worklist; # Stop here if there is nothing list for us to do return unless $unpacker->prepare_tasks($errhandler, $group->get_processables); v_msg("Unpacking packages in group $gname"); my %timers = (); my %hooks = ( 'coll-hook' => sub { coll_hook($group, \%timers, @_); }, 'finish-hook' => \&finish_hook, ); $unpacker->process_tasks(\%hooks); return; } sub finish_hook { my ($lpkg, $state, $changed) = @_; if ($state eq 'sf-error') { # The status file could not be written; give a warning. my $err = $!; my $pkg_name = $lpkg->pkg_name; warning("could not create status file for package $pkg_name: $err"); } elsif ($state eq 'unchanged' or $state eq 'changed') { # If we are only unpacking stuff, auto-remove colls # immediately. if ($action ne 'check' and @auto_remove) { # we are done now - start auto-cleaning my $ret = auto_clean_package($lpkg); # We don't have to remove it from the group if it # fails as we are pretty much done. $exit_code = 2 if $ret < 0; $changed->() if $ret; } } return; } sub coll_hook { my ($group, $timers, $lpkg, $event, $cs, $pid, $exitval) = @_; my $coll = $cs->name; my $procid = $lpkg->identifier; if ($event eq 'start') { if ($pid < 0) { # failed my $pkg_name = $lpkg->pkg_name; my $pkg_type = $lpkg->pkg_type; warning( "collect info $coll about package $pkg_name failed", "skipping $action of $pkg_type package $pkg_name" ); $exit_code = 2; $group->remove_processable($lpkg); } else { # Success $timers->{$pid} = $start_timer->(); debug_msg(1, "Collecting info: $coll for $procid ..."); } } elsif ($event eq 'finish') { if ($exitval) { # Failed my $pkg_name = $lpkg->pkg_name; my $pkg_type = $lpkg->pkg_type; warning("collect info $coll about package $pkg_name failed"); warning("skipping $action of $pkg_type package $pkg_name"); $exit_code = 2; $group->remove_processable($lpkg); } else { # success my $tres = $finish_timer->($timers->{$pid}); debug_msg(1, "Collection script $coll for $procid done$tres"); } } return; } sub process_group { my ($group) = @_; PROC: foreach my $lpkg ($group->get_processables){ my $pkg_name = $lpkg->pkg_name; my $pkg_type = $lpkg->pkg_type; my $base = $lpkg->base_dir(); $TAGS->file_start($lpkg); debug_msg(1, "Base directory in lab: $base"); if (not $opt{'no-override'} and $collmap->getp('override-file')) { debug_msg(1, 'Loading overrides file (if any) ...'); $TAGS->load_overrides; } foreach my $script (@scripts) { my $cs = $PROFILE->get_script($script); my $check = $cs->name; my $timer = $start_timer->(); # The lintian check is done by this frontend and we # also skip the check if it is not for this type of # package. next if !$cs->is_check_type($pkg_type); debug_msg(1, "Running check: $check ..."); eval {$cs->run_check($lpkg, $group);}; my $err = $@; my $tres = $finish_timer->($timer); if ($err) { print STDERR $err; print STDERR "internal error: cannot run $check check", " on package $pkg_name\n"; warning("skipping $action of $pkg_type package $pkg_name"); $exit_code = 2; next PROC; } debug_msg(1, "Finished check: $check$tres"); } unless ($exit_code) { my $stats = $TAGS->statistics($lpkg); if ($stats->{types}{E}) { $exit_code = 1; } elsif ($opt{'fail-on-warnings'} && $stats->{types}{W}) { $exit_code = 1; } } post_pkg_process_overrides($lpkg); } # end foreach my $lpkg ($group->get_processable) $TAGS->file_end; if ($debug > 2) { for my $lpkg ($group->get_processables) { my $id = $lpkg->identifier; my $usage = $memory_usage->($lpkg->info); my $breakdown = $lpkg->info->_memory_usage($memory_usage); debug_msg(3, "Memory usage [$id]: $usage"); for my $field (sort(keys(%{$breakdown}))) { debug_msg(4, " -- $field: $breakdown->{$field}"); } } } if (@auto_remove) { # Invoke auto-clean now that the group has been checked foreach my $lpkg ($group->get_processables){ my $ret = auto_clean_package($lpkg); $exit_code = 2 if $ret < 0; if ($ret) { # Update the status file as auto_clean_package may # have removed some collections unless ($lpkg->update_status_file) { my $pkg_name = $lpkg->pkg_name; warning( join(q{ }, 'could not create status', "file for package $pkg_name: $!")); } } } } return 1; } sub handle_lab_query { my ($query) = @_; my @res; my $type = undef; my ($pkg, $version, $arch); my $orig = $query; # Save for the error message later # "britney"-like format - note this catches the old style, where # only the package name was specified. # Check if it starts with a type specifier # (e.g. "binary:" in "binary:eclipse/3.5.2-1/amd64") if ($query =~ m,^([a-z]+):(.*),i) { ($type, $query) = ($1, $2); } # Split on / ($pkg, $version, $arch) = split m,/,o, $query, 3; if ( $pkg =~ m|^\.{0,2}$| or $pkg =~ m,[_:], or (defined $arch and $arch =~ m,/,)) { # Technically, a string like "../somewhere/else", # "somepkg_version_arch.deb", "/somewhere/somepkg.deb" or even # "http://ftp.debian.org/pool/l/lintian/lintian_2.5.5_all.deb" # could match the above. Obviously, that is not a lab query. # But the frontend sends it here, because the file denoted by # that string does not exist. warning("\"$orig\" cannot be processed."); warning('It is not a valid lab query and it is not an existing file.'); exit 2; } if (not defined $type and $pkg_mode ne 'auto') { # No type specified and "auto" is not the default so we # pre-append the default type. $query = "$pkg_mode:$query"; $type = $pkg_mode; } else { # Type specified or no type and "auto" being the default. In # this case we just process the original query. $query = $orig; } eval {@res = $LAB->lab_query($query);}; if (my $err = $@) { $err =~ s/ at .*? line \d+\s*$//; warning("Bad lab-query: $orig"); warning("Error: $err"); $exit_code = 2; return (); } if (@res) { foreach my $p (@res) { $pool->add_proc($p); } } else { my $tuple = join(', ', map { $_//'*'} ($type, $pkg, $version, $arch)); debug_msg( 1, "Did not find a match for $orig (pkg_mode = $pkg_mode)", " - Search tuple: ($tuple)" ); warning( join(q{ }, 'cannot find binary, udeb or source package', "$orig in lab (skipping)")); $exit_code = 2; } return; } sub _find_cfg_file { return $ENV{'LINTIAN_CFG'} if exists $ENV{'LINTIAN_CFG'} and -f $ENV{'LINTIAN_CFG'}; if ($opt{'user-dirs'}) { my $rcfile; { # File::BaseDir sprews warnings if $ENV{'HOME'} is undef, so # make sure it is defined when we load the module. Though, # we need to scope this, so $ENV{HOME} becomes undef again # when we check for it later. local $ENV{'HOME'} = $ENV{'HOME'} // '/nonexistent'; require File::BaseDir; import File::BaseDir qw(config_home config_files); }; # only accept config_home if either HOME or # XDG_CONFIG_HOME was set. If both are unset, then this # will return the "bogus" path # "/nonexistent/lintian/lintianrc" and we don't want that # (in the however unlikely case that file actually # exists). $rcfile = config_home('lintian/lintianrc') if exists $ENV{'HOME'} or exists $ENV{'XDG_CONFIG_HOME'}; return $rcfile if defined $rcfile and -f $rcfile; if (exists $ENV{'HOME'}) { $rcfile = $ENV{'HOME'} . '/.lintianrc'; return $rcfile if -f $rcfile; } return '/etc/lintianrc' if -f '/etc/lintianrc'; # config_files checks that the file exists for us $rcfile = config_files('lintian/lintianrc'); return $rcfile if defined $rcfile and $rcfile ne ''; } return; # None found } sub _find_changes { require Parse::DebianChangelog; my $dch = Parse::DebianChangelog->init( { infile => 'debian/changelog', quiet => 1 }); my $data = $dch->data; my $last = $data ? $data->[0] : undef; my ($source, $version); my $changes; my @archs; my @dirs = ('..', '../build-area', '/var/cache/pbuilder/result'); if (not $last) { my @errors = $dch->get_parse_errors; if (@errors) { print STDERR "Cannot parse debian/changelog due to errors:\n"; for my $error (@errors) { print STDERR "$error->[2] (line $error->[1])\n"; } } else { print STDERR "debian/changelog does not have any data?\n"; } exit 2; } $version = $last->Version; $source = $last->Source; if (not defined $version or not defined $source) { $version//=''; $source//=''; print STDERR "Cannot determine source and version from debian/changelog:\n"; print STDERR "Source: $source\n"; print STDERR "Version: $source\n"; exit 2; } # remove the epoch $version =~ s/^\d+://; if (exists $ENV{'DEB_BUILD_ARCH'}) { push @archs, $ENV{'DEB_BUILD_ARCH'}; } else { chomp(my $arch = `dpkg --print-architecture 2>/dev/null`); push @archs, $arch if $arch ne ''; } push @archs, $ENV{'DEB_HOST_ARCH'} if exists $ENV{'DEB_HOST_ARCH'}; if (system('dpkg', '--assert-multi-arch') == 0) { # Maybe cross-built for something dpkg knows about... open(my $foreign, '-|', 'dpkg', '--print-foreign-architectures'); while (my $line = <$foreign>) { chomp $line; # Skip already attempted architectures (e.g. via DEB_BUILD_ARCH) next if any { $_ eq $line } @archs; push @archs, $line; } close($foreign); } push @archs, qw(multi all source); foreach my $dir (@dirs) { foreach my $arch (@archs) { $changes = "$dir/${source}_${version}_${arch}.changes"; return $changes if -f $changes; } } print STDERR "Cannot find changes file for ${source}/${version}, tried:\n"; foreach my $arch (@archs) { print STDERR " ${source}_${version}_${arch}.changes\n"; } print STDERR " in the following dirs:\n"; print STDERR ' ', join("\n ", @dirs), "\n"; exit 0; } sub _guess_version { my $guess; if (-d "$INIT_ROOT/.git") { # Lets try git eval { # Disabling IPC::Run::Debug saves tons of useless calls. $ENV{'IPCRUNDEBUG'} = 'none' unless exists $ENV{'IPCRUNDEBUG'}; require IPC::Run; IPC::Run::run(['git', "--git-dir=$INIT_ROOT/.git", 'describe'], \undef, \$guess, \undef); chomp $guess; }; return $guess if $guess; } # git was not possible - maybe the changelog is available if (-f "$INIT_ROOT/debian/changelog") { require Parse::DebianChangelog; eval { my $changelog = Parse::DebianChangelog->init( { infile => "$INIT_ROOT/debian/changelog" }); $guess = $changelog->dpkg()->{'Version'} if $changelog; }; return $guess if $guess; } # Out of guesses ... return; } sub _update_profile { my ($profile, $sup_check, $sup_tags, $only_check, $only_tags) = @_; my %abbrev = (); if ($sup_check || $only_check) { # Build an abbreviation map for my $c ($profile->scripts(1)) { my $cs = $profile->get_script($c, 1); next unless $cs->abbrev; $abbrev{$cs->abbrev} = $cs; } } # if tags are listed explicitly (--tags) then show them even if # they are pedantic/experimental etc. However, for --check-part # people explicitly have to pass the relevant options. if ($checks || $check_tags) { $profile->disable_tags($profile->tags); if ($check_tags) { $TAGS->show_experimental(1); # discard whatever is in @display_level and request # everything @display_level = (); display_infotags(); display_pedantictags(); $profile->enable_tags(split /,/, $check_tags); } else { for my $c (split /,/, $checks) { my $cs = $profile->get_script($c, 1) || $abbrev{$c}; fail("Unknown check script $c") unless $cs; $profile->enable_tags($cs->tags); } } } elsif ($sup_check) { # we are disabling checks for my $c (split(/,/, $sup_check)) { my $cs = $profile->get_script($c, 1) || $abbrev{$c}; fail("Unknown check script $c") unless $cs; $profile->disable_tags($cs->tags); } } # --suppress-tags{,-from-file} can appear alone, but can also be # mixed with -C or -X. Though, ignore it with --tags. if (%$sup_tags and not $check_tags) { $profile->disable_tags(keys %$sup_tags); } return; } # }}} # {{{ Exit handler. sub END { $SIG{'INT'} = 'DEFAULT'; $SIG{'QUIT'} = 'DEFAULT'; # We have to ensure that our exit code is 0, 1 or 2. Quote from # "perldoc -f die": # # """ # If an uncaught exception results in interpreter exit, the exit # code is determined from the values of $! and $? with this # pseudocode: # # exit $! if $!; # errno # exit $? >> 8 if $? >> 8; # child exit status # exit 255; # """ # # So, here in the END handler, we abuse the fact that we can alter # the exit code by changing $?. It is not a perfect solution # (e.g. if $! is 1, then we might still exit 1 instead of 2), but # it is definitely better than exiting with undocumented exit codes. if ($? != 0 && $? != 2) { # If $? is not 1, then we definitely want $? to be 2. If # $exit_code != 1, then either we got an uncaught exception # before the first policy violation or we already saw an # internal error that we caught. Either way, we want to # exit with 2 in this case. # # Sadly, this is unreliable if we saw a policy violation and # then cause an uncaught internal error (where e.g. $! is 1). # In this case we will still exit 1 instead of 2 as we should. # Nevertheless, this is probably a lot more reliable than # Lintian <= 2.5.12 was. if ($? != 1 || $exit_code != 1) { $? = 2; } } if (1) { # Prevent LAB->close and $unpacker->kill_jobs from affecting # the exit code. local $?; # Kill any remaining jobs. $unpacker->kill_jobs if $unpacker; $LAB->close if $LAB; } } sub interrupted { $SIG{$_[0]} = 'DEFAULT'; die "N: Interrupted.\n"; } # }}} # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/helpers/0000775000000000000000000000000012310413144013107 5ustar lintian-2.5.22ubuntu1/helpers/coll/0000775000000000000000000000000012314115150014040 5ustar lintian-2.5.22ubuntu1/helpers/coll/objdump-info-helper0000775000000000000000000001652212310413144017642 0ustar #!/usr/bin/perl # objdump-info-helper -- lintian collection script # Most of it is taken from objdump-info (Lintian 2.5.9), which had the # following copyright/license statements: # # The original shell script version of this script is # Copyright (C) 1998 Christian Schwarz # # This version, including support for etch's binutils, is # Copyright (C) 2008 Adam D. Barratt # # 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. use strict; use warnings; use autodie; my (@sections, @symbol_versions); my @dyn_symbols; my %program_headers; my $bin; my $truncated = 0; my $section = ''; # it would have been nice to do open '-|', "readelf ... 2>&1" but # then we have to escape the args and that puts us over the # argument limit in some cases... my $pid = open(my $readelf, '-|'); if (not $pid) { # child - re-direct standerr and exec open(STDERR, '>&', \*STDOUT); exec 'readelf', '-WltdVs', @ARGV; } if (scalar @ARGV == 1) { # Special case - readelf will not prefix the output with "File: # $name" if it only gets one file argument, so act as if it did... # - In fact, if readelf always emitted that File: header, we could # simply use xargs directly on readelf and just parse its output # in the loop below. $bin = $ARGV[0]; print "Filename: $bin\n"; system("head \Q$bin\E | grep -q 'packed.*with.*UPX'"); print "UPX: yes\n" if $? == 0; } while (my $line = <$readelf>) { chomp $line; if ($line =~ m/^File: (.+)$/) { my $file = $1; finish_file(); $bin = $file; print "Filename: $bin\n"; system("head \Q$bin\E | grep -q 'packed.*with.*UPX'"); print "UPX: yes\n" if $? == 0; } elsif ( $line =~ m/^readelf: Error: Unable to read in 0x[0-9a-fA-F]+ bytes of/ or $line =~ m/^readelf: Error: .*: Failed to read .*(?:magic number|file header)/ ) { # Various errors for corrupt / broken files. Note, readelf may spit out # multiple errors per file, hench the "unless". print "Broken: yes\n" unless $truncated++; next; } elsif ($line =~ m/^Program Headers:/) { $section = 'PH'; print "Program-Headers:\n"; } elsif ($line =~ m/^Section Headers:/) { $section = 'SH'; print "Section-Headers:\n"; } elsif ($line =~ m/^Dynamic section at offset .*:/) { $section = 'DS'; print "Dynamic-Section:\n"; } elsif ($line =~ m/^Version symbols section /) { $section = 'VS'; } elsif ($line =~ m/^Symbol table '.dynsym'/) { $section = 'DS'; } elsif ($line =~ m/^Symbol table/) { $section = ''; } elsif ($line =~ m/^\s*$/) { $section = ''; } elsif ($line =~ m/^\s*(\S+)\s*(?:(?:\S+\s+){4})\S+\s(...)/ and $section eq 'PH') { my ($header, $flags) = ($1, $2); $header =~ s/^GNU_//g; next if $header eq 'Type'; my $newflags = ''; my $redo = 0; my $extra = ''; $newflags .= ($flags =~ m/R/) ? 'r' : '-'; $newflags .= ($flags =~ m/W/) ? 'w' : '-'; $newflags .= ($flags =~ m/E/) ? 'x' : '-'; $program_headers{$header} = $newflags; if ($header eq 'INTERP') { # Check if the next line is the "requesting an interpreter" # (readelf appears to always emit on the next line if at all) my $next = <$readelf>; if ($next =~ m,\[Requesting program interpreter:\s([^\]]+)\],) { $extra .= " interp=$1"; } else { # Nope, give it back $redo = 1; $line = $next; } } print " $header flags=${newflags}$extra\n"; redo if $redo; next; } elsif ($line =~ m/^\s*\[(\d+)\]\s*(\S+)(?:\s|\Z)/ and $section eq 'SH') { # We also match " []: flags*, but don't need them # - in this case $2 will be ':'. next if $2 eq ':'; $sections[$1] = $2; # We need sections as well (e.g. for incomplete stripping) print " $1 $2\n"; } elsif ($line =~ m/^\s*0x(?:[0-9A-F]+)\s+\((.*?)\)\s+(\S.*)\Z/i and $section eq 'DS') { my ($type, $value) = ($1, $2); if ($type eq 'RPATH') { $value =~ s/.*\[//; $value =~ s/\]\s*$//; } $value =~ s/^(?:Shared library|Library soname): \[(.*)\]/$1/; print " $type $value\n"; } elsif ($line =~ m/^\s*[0-9A-F]+: \s+ \S+ \s* (?:\(\S+\))? (?:\s|\Z)/xi and $section eq 'VS') { while ($line =~ m/([0-9A-F]+h?)\s*(?:\((\S+)\))?(?:\s|\Z)/gci) { my ($vernum, $verstring) = ($1, $2); $verstring ||= ''; if ($vernum =~ m/h$/) { $verstring = "($verstring)"; } push @symbol_versions, $verstring; } } elsif ($line =~ m/^\s*(\d+):\s*[0-9a-f]+\s+\d+\s+(?:(?:\S+\s+){3})(\S+)\s+(.*)\Z/ and $section eq 'DS') { # We (somtimes) need to read the "Version symbols section" first to # use this data and readelf tends to print after this section, so # save for later. push(@dyn_symbols, [$1, $2, $3]); } elsif ($line =~ m/^There is no dynamic section in this file/ and exists $program_headers{DYNAMIC}) { # The headers declare a dynamic section but it's # empty. print "Bad-Dynamic-Table: Yes\n"; } } # Finish the last file finish_file(); close($readelf); exit 0; sub finish_file { if (@dyn_symbols) { print "Dynamic-Symbols:\n"; foreach my $dynsym (@dyn_symbols) { my ($symnum, $seg, $sym) = @{$dynsym}; my $ver; if ($sym =~ m/^(.*)@(.*) \(.*\)$/) { $sym = $1; $ver = $2; } elsif (@symbol_versions == 0) { # No versioned symbols... $ver = ''; } else { $ver = $symbol_versions[$symnum]; if ($ver eq '*local*' or $ver eq '*global*') { if ($seg eq 'UND') { $ver = ' '; } else { $ver = 'Base'; } } elsif ($ver eq '()') { $ver = '(Base)'; } } if ($seg =~ m/^\d+$/ and defined $sections[$seg]) { $seg = $sections[$seg]; } print " $seg $ver $sym\n"; } } # Add an newline to end the current paragraph print "\n"; # reset variables @sections = (); @symbol_versions = (); @dyn_symbols = (); $truncated = 0; $section = ''; %program_headers = (); $bin = ''; return; } lintian-2.5.22ubuntu1/helpers/coll/file-info-helper0000775000000000000000000000247612310413144017124 0ustar #!/usr/bin/perl use strict; use warnings; use autodie; while (my $line = <>) { my ($file, $type) = $line =~ (m/^(.*?)\x00(.*)$/o); if ($file =~ m/\.gz$/o && -f $file && !-l $file && $type !~ m/compressed/o) { # While file could be right, it is unfortunately # regularly wrong here as well; double check the type my $text = ''; my $buff; open(my $gzf, '<', $file); # We need to read at least 9 bytes if (sysread($gzf, $buff, 1024) >= 9) { # translation of the unpack # nn nn , NN NN NN NN, nn nn, cc - bytes read # $magic, __ __ __ __, __ __, $comp - variables my ($magic, undef, undef, $comp) = unpack('nNnc', $buff); if ($magic == 0x1f8b){ # the gzip file magic $text = 'gzip compressed data'; # 2 for max compression; RFC1952 suggests this is a # flag and not a value, hench the bit and operation if (($comp & 2) == 2){ $text = "$text, max compression"; } } } close($gzf); $type = "$type, $text" if $text; } printf "%s%c%s\n", $file, 0, $type; } # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/helpers/coll/strings-helper0000775000000000000000000000370412310413144016740 0ustar #!/usr/bin/perl -w # strings -- lintian collection script # Copyright (C) 2012 Niels Thykier # # 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. use strict; use warnings; use autodie; use File::Basename qw(dirname); use IO::Handle; use lib "$ENV{'LINTIAN_ROOT'}/lib"; use Lintian::Command qw(spawn reap); my ($strdir) = @ARGV; my $curfname = ''; my $curdir = ''; my %opts = (fail => 'error'); my $out = undef; while (my $line = ) { my ($fname, $string); chomp $line; ($fname, $string) = ($line =~ m/^([^:]++): (.++)$/o); if ($curfname ne $fname) { # new file, prepare for it. if ($out) { close($out); reap(\%opts); } my $dir = $strdir . '/' . dirname($fname); if ($dir ne $curdir) { system('mkdir', '-p', $dir) == 0 or die "mkdir -p $dir failed: " . (($? >> 8) & 256), "\n"; $curdir = $dir; } $opts{out} = "$strdir/${fname}.gz"; $out = $opts{pipe_in} = IO::Handle->new; spawn(\%opts, ['gzip', '-9nc']); $opts{pipe_in}->blocking(1); $curfname = $fname; } print {$out} "$string\n"; } if ($out) { close($out); reap(\%opts); } exit 0; lintian-2.5.22ubuntu1/helpers/coll/hardening-info-helper0000775000000000000000000001005112314115150020130 0ustar #!/usr/bin/perl # hardening-info-helper -- lintian collection script helper # Copyright (C) 2012 Niels Thykier # # 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. use strict; use warnings; use autodie; use FileHandle; use lib "$ENV{'LINTIAN_ROOT'}/lib"; use Lintian::Command qw(spawn reap); # To reduce the number of false-positives in hardening-check for # fortify-functions, we have to "double-check" its output in some # cases (like we do with file-info). # # Basic idea - fork and pipe to child in up to two passes. # - The parent will filter "hardening-check --lintian" input in first # pass. # - Filter out (and collect) all no-fortify-function tags # - Work around bug #677530 # - The parent will (in second pass) pipe the verbose hardening-check # output to the child. # - Only binaries with a no-foritfy-function tag in the first pass # will be re-checked with --verbose. # # - In the first pass, the child will behave like cat. # - In the second pass, the child will parse hardening-check --verbose # output. # # Implied by the above - the second pass is only done if needed. my ($in, $out); my ($cread, $cwrite); my ($cpid, @recheck); my %whitelisted_funcs = ( 'memcpy' => 1, 'memset' => 1, 'memmove' => 1, ); pipe($cread, $cwrite); $cpid = fork(); if ($cpid) { # parent close($cread); # read end not needed $in = \*STDIN; $out = $cwrite; } else { # child close($cwrite); # write end not needed. $in = $cread; $out = \*STDOUT; } while (my $line = <$in>) { chomp $line; if ($cpid) { if ($line =~ m/^no-fortify-functions:(.*)$/o) { my $bin = $1; push @recheck, $bin; next; } } else { # End of "first pass" marker (for the child). last if $line eq '__VERBOSE__'; } print {$out} "$line\n"; } if (not $cpid) { # child's second pass my $bin; my $infsf = 0; my $emit = 0; while (my $line = <$in>) { chomp $line; # At this point we are reading "verbose" hardening-check output if ($line =~ m,^(\S.+):$,) { if ($emit) { print {$out} "no-fortify-functions:$bin\n"; } $bin = $1; $infsf = 0; $emit = 0; } elsif ($line =~ m/^\s+Fortify Source functions:/) { $infsf = 1; } elsif ($infsf and $line =~ m/^\s+(un)?protected:\s*(\S+)/) { next unless ($1//'') eq 'un'; next if exists $whitelisted_funcs{$2}; $emit = 1; } else { $infsf = 0; } } if ($emit) { print {$out} "no-fortify-functions:$bin\n"; } # ensure $out is flushed before exiting. close($out); require POSIX; POSIX::_exit(0); } elsif (@recheck) { # (optionally) parent's second pass. my %opts = ( pipe_in => FileHandle->new, out => $out, fail => 'never' ); # End the first pass for the child print {$out} "__VERBOSE__\n"; spawn(\%opts, ['xargs', '-0r', 'hardening-check', '--verbose', '--']); $opts{pipe_in}->blocking(1); foreach my $file (@recheck) { printf {$opts{pipe_in}} "%s\0", $file; } close($opts{pipe_in}); reap(\%opts); } # Close the out handle, else the child process will wait for # ever. close($out); # wait for the child process. wait(); exit $?; lintian-2.5.22ubuntu1/.travis.yml0000664000000000000000000000302712315530763013574 0ustar language: c before_install: # maybe add php ppa to provide sufficiant pkg-php-tools # - sudo add-apt-repository -y ppa:ondrej/php5 # update package list - sudo apt-get update -qq install: # install build dependencies # - sudo apt-get install -qq --no-install-recommends aspell aspell-en binutils bzip2 cdbs debhelper default-jdk diffstat docbook-utils docbook-xml fakeroot file gettext hardening-includes intltool-debian javahelper libapt-pkg-perl libarchive-zip-perl libclass-accessor-perl libclone-perl libdpkg-perl libdigest-sha-perl libemail-valid-perl libfile-basedir-perl libhtml-parser-perl libipc-run-perl liblist-moreutils-perl libparse-debianchangelog-perl libtest-minimumversion-perl libtest-perl-critic-perl libtest-pod-coverage-perl libtest-pod-perl libtest-spelling-perl libtest-strict-perl libtest-synopsis-perl libtext-levenshtein-perl libtext-template-perl libtimedate-perl liburi-perl libyaml-perl man-db patchutils perl pkg-php-tools python python-all-dev python-numpy quilt rsync t1utils unzip xz-utils zip # install packages needed for mk-build-deps - sudo apt-get install -qq --no-install-recommends devscripts equivs # pull build deps from debian/control - sudo mk-build-deps -ir # remove packages needed for mk-build-deps - sudo apt-get purge -qq equivs - sudo apt-get autoremove -qq script: # build the debian package - debuild -uc -us # run lintian after build - frontend/lintian -EviIL +pedantic --show-overrides || [ "$?" = 1 ] #notifications: # email: false lintian-2.5.22ubuntu1/lib/0000775000000000000000000000000012310413144012213 5ustar lintian-2.5.22ubuntu1/lib/Test/0000775000000000000000000000000012311350766013145 5ustar lintian-2.5.22ubuntu1/lib/Test/Lintian/0000775000000000000000000000000012311401640014527 5ustar lintian-2.5.22ubuntu1/lib/Test/Lintian/Harness.pm0000664000000000000000000002430312311401640016472 0ustar # Copyright © 1998 Richard Braakman # Copyright © 2008 Frank Lichtenheld # Copyright © 2008, 2009 Russ Allbery # # 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 Test::Lintian::Harness; =head1 NAME Test::Lintian::Harness -- Helper tools for t/runtests =head1 SYNOPSIS use Test::Lintian::Harness qw(up_to_date); if (not up_to_date('some/build-stamp', 'some/dir')) { # do rebuild } =head1 DESCRIPTION Helper functions for t/runtests. =cut use strict; use warnings; use autodie; use Exporter qw(import); use File::Basename qw(basename dirname); use File::Find qw(find); use File::stat; use File::Temp qw(tempfile); use POSIX qw(ENOENT); use Text::Template; use Lintian::Util qw(fail read_dpkg_control slurp_entire_file); our @EXPORT_OK = qw( chdir_runcmd check_test_depends copy_template_dir fill_in_tmpl find_tests_for_tag generic_find_test_for_tag is_tag_in_file read_test_desc runsystem runsystem_ok skip_reason up_to_date ); =head1 FUNCTIONS =over 4 =item skip_reaon(SKIP_FILE) Return the (human-readable) reason for skipping a test by reading the SKIP_FILE. =cut sub skip_reason { my ($skipfile) = @_; my $reason; open(my $fd, '<', $skipfile); $reason = <$fd>; close($fd); chomp($reason) if defined $reason; $reason //= 'No reason given in "skip" file'; return $reason; } =item copy_template_dir(SKEL_DIR, TEST_SRC_DIR, TEST_TARGET_DIR, [EXCL_SKEL[, EXCL_SRC]]) Populate TEST_TARGET_DIR with files/dirs from SKEL_DIR and TEST_SRC_DIR. If given, EXCL_SKEL and EXCL_SRC must be a listref containing rsync "--exclude" options. =cut sub copy_template_dir { my ($skel, $tsrc, $targetdir, $exskel, $extsrc) = @_; my (@exs, @ext); @exs = @$exskel if $exskel; @ext = @$extsrc if $extsrc; runsystem('rsync', '-rpc', "$skel/", "$targetdir/", @exs); runsystem('rsync', '-rpc', "$tsrc/", "$targetdir/", @ext) if -d "$tsrc/"; return; } =item runsystem(CMD...) Run CMD via system, but throw an error if CMD does not return 0. =cut sub runsystem { system(@_) == 0 or fail("failed: @_\n"); return; } =item runsystem_ok(CMD...) Run CMD via system, but throw an error if CMD does not return 0 or 1. Returns 1 if CMD returned successfully (i.e. 0), otherwise 0. This is mostly useful for running Lintian, which may return 0 or 1 on "success". =cut sub runsystem_ok { my $errcode = system(@_); $errcode == 0 or $errcode == (1 << 8) or fail("failed: @_\n"); return $errcode == 0; } =item up_to_date(STAMPFILE, DIR) Returns true if the mtime of STAMPFILE is greater than or equal to the mtime of all files in DIR. If STAMPFILE does not exist, this function returns false unconditionally. =cut sub up_to_date { my ($stampfile, $dir) = @_; my $newest = 0; my $stamp_stat = stat($stampfile); if (not defined($stamp_stat)) { die("stat $stampfile: $!") if $! != ENOENT; # Missing file implies "out-of-date" return 0; } my $tester = sub { my $path = $File::Find::name; my $st = stat($path) // die "stat $path: $!"; $newest = $st->mtime if (-f _ && $st->mtime > $newest); }; my %options = ( 'wanted' => $tester, 'no_chdir' => 1, ); find(\%options, $dir); return $stamp_stat->mtime >= $newest; } =item check_test_depends(TESTDATA) Given a TESTDATA with a dependency requirement, check whether the dependency requirement is satisfied. If satisfied, return C, otherwise return a (human-readable) string containing the missing dependencies. =cut sub check_test_depends { my ($testdata) = @_; my ($missing, $pid, $fd, $err); my ($test_fd, $test_file) = tempfile('bd-test-XXXXXXXXX', TMPDIR => 1); # dpkg-checkbuilddeps requires that the Source: field is present. print {$test_fd} "Source: bd-test-pkg\n"; print {$test_fd} "Build-Depends: $testdata->{'test-depends'}\n"; $pid = open($fd, '-|'); if (!$pid) { open(STDIN, '<', '/dev/null'); open(STDERR, '>&', \*STDOUT); exec 'dpkg-checkbuilddeps', $test_file or fail "exec dpkg-checkbuilddeps: $!"; } $missing = slurp_entire_file($fd, 1); eval {close($fd);}; $err = $@; unlink($test_file); if ($err) { # Problem closing the pipe? fail "close pipe: $err" if $err->errno; # Else we presume that dpkg-checkbuilddeps concluded missing # build-dependencies $missing =~ s{\A dpkg-checkbuilddeps: [ ] Unmet [ ] build [ ] dependencies: \s* }{}xsm; chomp($missing); if ($missing =~ s{\n}{\\n}gxsm) { # We expect exactly one line. fail "Unexpected output from dpkg-checkbuilddeps: $missing"; } return $missing; } return; } =item read_test_desc(FILENAME) Parse FILENAME as a test description file, do a quick validation of its contents and return it in a hashref. This is similar L except for the extra validation. =cut sub read_test_desc { my ($filename) = @_; my @paragraphs = read_dpkg_control($filename); my ($testdata, $expected_name); if (scalar(@paragraphs) != 1) { fail("$filename does not have exactly one paragraph"); } $testdata = $paragraphs[0]; if ($filename =~ m{/desc$}) { # t///desc $expected_name = basename(dirname($filename)); } else { # t/changes/.desc $expected_name = basename($filename, '.desc'); } if (!exists $testdata->{'testname'}) { fail("$filename is missing Testname field"); } if ($expected_name ne $testdata->{'testname'}) { fail( "$filename is called $testdata->{'testname'}" . " instead of $expected_name"); } return $testdata; } =item fill_in_tmpl(FILE, DATA) Create FILE using "${FILE}.in" as a template and DATA as template data. =cut sub fill_in_tmpl { my ($file, $data) = @_; my $tmpl = "$file.in"; my $template = Text::Template->new(TYPE => 'FILE', SOURCE => $tmpl); open(my $out, '>', $file); unless ($template->fill_in(OUTPUT => $out, HASH => $data)) { fail("cannot create $file"); } close($out); return; } =item chdir_runcmd(DIR, CMD_REF[, LOG_FILE]) Fork, chdir to DIR and exec the command (plus arguments) contained in CMD_REF. The child process's STDERR is merged into its STDOUT. The STDOUT stream of the child process is either directed to the path denoted by LOG_FILE (if given and not C) or to I. Returns 0 on success and non-zero otherwise. =cut sub chdir_runcmd { my ($dir, $cmd, $log) = @_; my $pid = fork(); if ($pid) { waitpid $pid, 0; return $?; } else { $log //= '/dev/null'; chdir($dir); open(STDIN, '<', '/dev/null'); open(STDOUT, '>', $log); open(STDERR, '>&', \*STDOUT); exec { $cmd->[0] } @$cmd or fail 'exec ' . @$cmd . " failed: $!"; } } =item is_tag_in_file(TAGNAME, FILENAME) Returns true if FILENAME appears to be output from Lintian, which emitted TAGNAME from that run. =cut sub is_tag_in_file { my ($tag, $file) = @_; my $res = 0; open(my $tags, '<', $file); while (my $line = <$tags>){ next if $line =~ m/^N: /; next unless ($line =~ m/^.: \S+(?: (?:changes|source|udeb))?: (\S+)/); next unless $1 eq $tag; $res = 1; last; } close($tags); return $res; } =item find_tests_for_tag(TAGNAME, GLOB_EXPR) Find checks for the Lintian tag denoted by TAGNAME that match the GLOB_EXPR. Note that GLOB_EXPR must match only the "desc" file of the tests. This function returns a list of the test-data for each of these tests. =cut sub find_tests_for_tag { my ($tag, $glob) = @_; return generic_find_test_for_tag( $tag, $glob, sub { my ($tag, $desc) = @_; my $data = read_test_desc($desc); my $tagnames = $data->{'test-for'}//''; $tagnames .= ' ' . $data->{'test-against'} if $data->{'test-against'}; my %table = map { $_ => 1 } split(m/\s++/o, $tagnames); return $data if $table{$tag}; return 0; }); } =item generic_find_test_for_tag(TAGNAME, GLOB_EXPR[, TCODE]) Looks for TAGNAME in all files returned by using glob on GLOB_EXPR. TCODE is called for each file with TAGNAME as first argument and the filename as second argument. TCODE is expected to return a truth value that if the test should be run. If TCODE returns something that is not just a raw truth value (e.g. a hash ref), this will be taken as the "test", otherwise this sub will attempt to guess the test name from the file. If TCODE is omitted, L will be used. Returns a list of values returned by TCODE or guessed test names (as per above) =cut sub generic_find_test_for_tag { my ($tag, $globstr, $tcode) = @_; my @tests; $tcode = \&is_tag_in_file unless defined $tcode; for my $file (glob $globstr){ my $res = $tcode->($tag, $file); my $testname; next unless $res; if (not ref $res and $res =~ m/^\d+$/o){ # returned a truth value; use the regex to deduce the test name ($testname) = ($file =~ m,.*/([^/]+)[/\.]tags$,); } else { # The code returned the test name or test data for us $testname = $res; } push @tests, $testname; } return @tests; } =back =cut 1; lintian-2.5.22ubuntu1/lib/Test/Lintian.pm0000664000000000000000000006126012311332316015075 0ustar # Copyright (C) 1998 Richard Braakman # Copyright (C) 2012 Niels Thykier # # 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 Test::Lintian; =head1 NAME Test::Lintian -- Check Lintian files for issues =head1 SYNOPSIS # file 1 use Test::Lintian; use Test::More import => ['done_testing']; test_load_profiles('some/path'); done_testing; # file 2 use Test::Lintian; use Test::More import => ['done_testing']; load_profile_for_test('vendor/profile', 'some/path', '/usr/share/lintian'); test_check_desc('some/path/checks'); test_load_checks('some/path/checks'); test_tags_implemented('some/path/checks'); done_testing; =head1 DESCRIPTION A testing framework for testing various Lintian files for common errors. =cut use strict; use warnings; my $CLASS = __PACKAGE__; my $PROFILE = undef; our @EXPORT = qw( load_profile_for_test test_check_desc test_load_checks test_load_profiles test_tags_implemented program_name_to_perl_paths ); use parent 'Test::Builder::Module'; use Cwd qw(realpath); use File::Basename qw(basename); use File::Find (); use Lintian::Check qw(check_spelling); use Lintian::Data; use Lintian::Profile; use Lintian::Tag::Info; use Lintian::Tags; use Lintian::Util qw(read_dpkg_control slurp_entire_file); # We want data files loaded early to avoid problems with missing data # files ending up in releases (like in 2.5.17 and 2.5.18). $Lintian::Data::LAZY_LOAD = 0; my %severities = map { $_ => 1 } @Lintian::Tags::SEVERITIES; my %certainties = map { $_ => 1 } @Lintian::Tags::CERTAINTIES; my %check_types = map { $_ => 1 } qw(binary changes source udeb); my %known_html_tags = map { $_ => 1 } qw(a em i tt); # We use this to check for explicit links where it is possible to use # a manual ref. my $MANUALS = $Lintian::Tag::Info::MANUALS; # lazy-load this (so loading a profile can affect it) my %URLS = (); =head1 FUNCTIONS =over 4 =item test_check_desc([OPTS, ]CHECKS...) Test check desc files (and the tags in them) for common errors. OPTS is an optional HASHREF containing key/value pairs, which are described below. CHECKS is a list of paths in which to check desc files. Any given element in CHECKS can be either a file or a dir. Files are assumed to be check desc file. Directories are searched and all I<.desc> files in those dirs are processed. As the number of tests depends on the number of tags in desc, it is difficult to "plan ahead" when using this test. It is therefore recommended to not specify a plan and use done_testing(). This sub uses a Data file (see L). OPTS may contain the following key/value pairs: =over 4 =item coll-dir Path to the collection directory (defaults to: /usr/share/lintian/collection). This is mostly useful for testing Lintian itself. If set to C, the test of Needs-Info containing only existing collections will be skipped. =item filter If defined, it is a filter function that examines $_ (or its first argument) and returns a truth value if C<$_> should be considered or false otherwise. C<$_> will be the path to the current file (or dir) in question; it may be relative or absolute. NB: I elements in CHECKS are subject to the filter. CAVEAT: If the filter rejects a directory, none of the files in it will be considered either. Even if the filter accepts a file, that file will only be processed if it has the proper extension (i.e. with I<.desc>). =back =cut sub test_check_desc { my ($opts, @descs); my $builder = $CLASS->builder; my $colldir = '/usr/share/lintian/collection'; my $find_opt = {'filter' => undef,}; my $tested = 0; if (ref $_[0] eq 'HASH') { $opts = shift; $colldir = $opts->{'coll-dir'}//'' if exists $opts->{'coll-dir'}; $find_opt->{'filter'} = $opts->{'filter'} if exists $opts->{'filter'}; } $opts //= {}; @descs = @_; load_profile_for_test(); foreach my $desc_file (map { _find_check($find_opt, $_) } @descs) { my ($header, @tagpara); eval {($header, @tagpara) = read_dpkg_control($desc_file);}; if (my $err = $@) { $err =~ s/ at .*? line \d+\s*\n//; $builder->ok(0, "Cannot parse $desc_file"); $builder->diag("Error: $err"); next; } my $cname = $header->{'check-script'}//''; my $ctype = $header->{'type'} // ''; my $cinfo = $header->{'info'} // ''; my $needs = $header->{'needs-info'} // ''; my $i = 1; # paragraph counter. $builder->ok(1, "Can parse check $desc_file"); $builder->isnt_eq($cname, '', "Check has a name ($desc_file)"); $cname = '' if $cname eq ''; $tested++; if ($cname eq 'lintian') { # skip these two tests for this special case... $builder->skip( 'Special case, check "lintian" does not have a type'); $builder->skip( 'Special case, check "lintian" does not have a type'); } elsif ($builder->isnt_eq($ctype, '', "$cname has a type")) { my @bad = (); # new lines are not allowed, map them to "\\n" for readability. $ctype =~ s/\n/\\n/go; foreach my $type (split m/\s*+,\s*+/o, $ctype) { push @bad, $type unless exists $check_types{$type}; } $builder->is_eq(join(', ', @bad),'',"The type of $cname is valid"); } else { $builder->skip( "Cannot check type of $cname is valid (field is empty/missing)" ); } if ($needs and $colldir ne '') { my @bad = (); # new lines are not allowed, map them to "\\n" for readability. $needs =~ s/\n/\\n/go; foreach my $need (split m/\s*+,\s*+/o, $needs) { push @bad, $need unless -f "$colldir/$need.desc"; } $builder->is_eq(join(', ', @bad), '', "$cname has unknown collections in Needs-Info"); } else { $builder->ok(1, 'Tag has a valid Needs-Info (empty)') if $colldir ne ''; $builder->skip( 'Needs-Info test checks skipped due to empty coll-dir') if $needs ne ''; } $builder->is_eq(check_spelling(undef, $cinfo), 0, "$cname Info has no spelling errors"); foreach my $tpara (@tagpara) { my $tag = $tpara->{'tag'}//''; my $severity = $tpara->{'severity'}//''; my $certainty = $tpara->{'certainty'}//''; my $info = $tpara->{'info'} // ''; my @htmltags = (); my %seen = (); $i++; # Tag name $builder->isnt_eq($tag, '', "Tag in check $cname has a name") or $builder->diag("$cname: Paragraph number $i\n"); $tag = '' if $tag eq ''; $builder->ok($tag =~ /^[\w0-9.+-]+$/, 'Tag has valid characters') or $builder->diag("$cname: $tag\n"); $builder->cmp_ok(length $tag, '<=', 68, 'Tag is not too long') or $builder->diag("$cname: $tag\n"); # Severity / Certainty $builder->ok(!$severity || exists $severities{$severity}, 'Tag has valid severity') or $builder->diag("$cname: $tag severity: $severity\n"); $builder->ok(!$certainty || exists $certainties{$certainty}, 'Tag has valid certainty') or $builder->diag("$cname: $tag certainty: $certainty\n"); # Info $builder->is_eq(check_spelling(undef, $info), 0,"$cname: $tag has no spelling errors"); $builder->ok($info !~ /(?:^| )(?:[Ww]e|I)\b/, 'Tag info does not speak of "I", or "we"') or $builder->diag("$cname: $tag\n"); $builder->ok( $info !~ /(\S\w)\. [^ ]/ || $1 =~ '/^\.[ge]$/', # for 'e.g.'/'i.e.' 'Tag info uses two spaces after a full stop' ) or $builder->diag("$cname: $tag\n"); $builder->ok($info !~ /(\S\w\. )/, 'Tag info uses only two spaces after a full stop') or $builder->diag("$cname: $tag ($1)\n"); # Check the tag info for unescaped <> or for unknown tags (which # probably indicate the same thing). while ($info =~ s,<([^\s>]+)(?:\s+href=\"[^\"]+\")?>.*?,,s) { push @htmltags, $1; } @htmltags = grep { !exists $known_html_tags{$_} && !$seen{$_}++ }@htmltags; $builder->is_eq(join(', ', @htmltags), '', 'Tag info has no unknown html tags') or $builder->diag("$cname: $tag\n"); $builder->ok($info !~ /[<>]/, 'Tag info has no stray angle brackets') or $builder->diag("$cname: $tag\n"); if ($tpara->{'ref'}) { my @issues = _check_reference($tpara->{'ref'}); my $text = join("\n\t", @issues); $builder->ok(!@issues, 'Proper references are used') or $builder->diag("$cname: $tag\n\t$text"); } } } $builder->cmp_ok($tested, '>', 0, 'Tested at least one desc file') if @descs; return; } =item test_load_profiles(ROOT, INC...) Test that all profiles in I are loadable. INC will be the INC path used as include path for the profile. If INC is omitted, then the include path will consist of (ROOT, '/usr/share/lintian'). Otherwise, INC will be used as is (and should include ROOT). This sub will do one test per profile loaded. =cut sub test_load_profiles { my ($dir, @inc) = @_; my $builder = $CLASS->builder; my $absdir = realpath $dir; my $sre; my %opt = ('no_chdir' => 1,); if (not defined $absdir) { die "$dir cannot be resolved: $!"; } $absdir = "$absdir/profiles"; $sre = qr,\Q$absdir\E/,; @inc = ($absdir, '/usr/share/lintian') unless @inc; $opt{'wanted'} = sub { my $profname = $File::Find::name; my ($err, $prof); return unless $profname =~ s/\.profile$//o; $profname =~ s,^$sre,,; eval {$prof = Lintian::Profile->new($profname, \@inc);}; $err = $@; $builder->ok($prof, "$profname is loadable.") or $builder->diag("Load error: $err\n"); }; File::Find::find(\%opt, $absdir); return; } =item test_load_checks([OPTS, ]DIR[, CHECKNAMES...]) Test that the Perl module implementation of the checks can be loaded and has a run sub. OPTS is an optional HASHREF containing key/value pairs, which are described below. DIR is the directory where the checks can be found. CHECKNAMES is a list of check names. If CHECKNAMES is given, only the checks in this list will be processed. Otherwise, all the checks in DIR will be processed. For planning purposes, every check processed counts for 2 tests and the call itself does on additional check. So if CHECKNAMES contains 10 elements, then 21 tests will be done (2 * 10 + 1). Filtered out checks will I be counted. All data files created at compile time or in the file scope will be loaded immediately (instead of lazily as done during the regular runs). This is done to spot missing data files or typos in their names. Therefore, this sub will load a profile if one hasn't been loaded already. (see L) OPTS may contain the following key/value pairs: =over 4 =item filter If defined, it is a filter function that examines $_ (or its first argument) and returns a truth value if C<$_> should be considered or false otherwise. C<$_> will be the path to the current file (or dir) in question; it may be relative or absolute. NB: filter is I used if CHECKNAMES is given. CAVEAT: If the filter rejects a directory, none of the files in it will be considered either. Even if the filter accepts a file, that file will only be processed if it has the proper extension (i.e. with I<.desc>). =back =cut sub test_load_checks { my ($opts, $dir, @checknames); my $builder = $CLASS->builder; if ($_[0] and ref $_[0] eq 'HASH') { ($opts, $dir, @checknames) = @_; } else { $opts = {}; ($dir, @checknames) = @_; } unless (@checknames) { my $find_opt = {'want-check-name' => 1,}; $find_opt->{'filter'} = $opts->{'filter'} if exists $opts->{'filter'}; @checknames = _find_check($find_opt, $dir); $builder->cmp_ok(scalar @checknames, '>', 0, 'Found checks to test'); } else { $builder->skip('Given an explicit list of checks'); } load_profile_for_test(); foreach my $checkname (@checknames) { my $cs; eval {$cs = Lintian::CheckScript->new($dir, $checkname);}; if (my $err = $@) { $err =~ s/ at .*? line \d+\s*\n//; $builder->ok(0, "Cannot parse ${checkname}.desc"); $builder->diag("Error: $err\n"); $builder->skip("Cannot parse ${checkname}.desc"); next; } my $cname = $cs->name; my $ppkg = $cname; my $path = $cs->script_path; my $err; my $rs_ref = 'MISSING'; eval {require $path;}; if (!$builder->is_eq($@//'', '', "Check $cname can be loaded")) { $builder->skip( "Cannot check if $cname has a run sub due to load error"); next; } $ppkg =~ s,[-.],_,go; $ppkg =~ s,/,::,go; $ppkg = "Lintian::$ppkg"; eval { # minimal "no strict refs" scope. no strict 'refs'; $rs_ref = 'PRESENT' if defined &{$ppkg . '::run'}; }; $err = $@//''; if (!$builder->is_eq($rs_ref, 'PRESENT', "Check $cname has runsub")) { $builder->diag("Expected package name is $ppkg\n"); $builder->diag("Error: $err\n") if $err; } } return; } =item test_tags_implemented ([OPTS, ]DIR[, CHECKNAMES...]) Test a given check implements all the tags listed in its desc file. For planning purposes, each check counts as one test and the call itself do one additional check. So if 10 checks are tested, the plan should account for 11 tests. This is a simple scan of the source code looking asserting that the tag names I (in the actual code part). For a vast majority of Lintian's tags it is reliable enough to be useful. However it has false-positives and false-negatives - the former can be handled via "exclude-pattern" (see below). The DIR argument is the directory in which to find the checks. CHECKNAMES is a list of the check names. If CHECKNAMES is given, only the checks in this list will be processed. Otherwise, all the checks in DIR will be processed. The optional parameter OPTS is a hashref. If passed it must be the first argument. The following key/value pairs are defined: =over 4 =item exclude-pattern The value is assumed to be a regex (or a string describing a regex). Any tag matching this regex will be excluded from this test and is assumed to be implemented (regardless of whether that is true or not). This is useful for avoiding false-positives with cases like: foreach my $x (@y) { tag "some-tag-for-$x", "blah blah $x" unless f($x); } =item filter If defined, it is a filter function that examines $_ (or its first argument) and returns a truth value if C<$_> should be considered or false otherwise. C<$_> will be the path to the current file (or dir) in question; it may be relative or absolute. NB: filter is I used if CHECKNAMES is given. CAVEAT: If the filter rejects a directory, none of the files in it will be considered either. Even if the filter accepts a file, that file will only be processed if it has the proper extension (i.e. with I<.desc>). =back As mentioned, this test assert that the tag name appears in the code. Consider the following example: my $tagname = 'my-tag'; $tagname = 'my-other-tag' if $condition; In this example, this test would conclude that 'my-tag' and 'my-other-tag' are both implemented. Which is good when $tagname is eventually passed to L, and a false-negative otherwise. Comment lines are I ignored, so comments can be used as an alternative to the exclude-pattern (above). =cut sub test_tags_implemented { my ($opts, $dir, @checknames); my $pattern; my $builder = $CLASS->builder; my $find_opt = {'want-check-name' => 1,}; if ($_[0] and ref $_[0] eq 'HASH') { ($opts, $dir, @checknames) = @_; } else { $opts = {}; ($dir, @checknames) = @_; } unless (@checknames) { my $find_opt = {'want-check-name' => 1,}; $find_opt->{'filter'} = $opts->{'filter'} if exists $opts->{'filter'}; @checknames = _find_check($find_opt, $dir); $builder->cmp_ok(scalar @checknames, '>', 0, 'Found checks to test'); } else { $builder->skip('Given an explicit list of checks'); } if (exists $opts->{'exclude-pattern'}) { if (ref $opts->{'exclude-pattern'} eq 'Regexp') { $pattern = $opts->{'exclude-pattern'}; } else { $pattern = qr/$opts->{'exclude-pattern'}/; } } foreach my $checkname (@checknames) { my $cs; eval {$cs = Lintian::CheckScript->new($dir, $checkname);}; if (my $err = $@) { $err =~ s/ at .*? line \d+\s*\n//; $builder->ok(0, "Cannot parse ${checkname}.desc"); $builder->diag("Error: $err\n"); next; } my $cname = $cs->name; my $check = $cs->script_path; my @tags = (); my $codestr; my @missing; @tags = $cs->tags unless defined $pattern; @tags = grep { !m/$pattern/ } $cs->tags if defined $pattern; # Any tags left to check? unless (@tags) { $builder->skip("All tags $cname are excluded"); next; } $codestr = slurp_entire_file($check); for my $tag (@tags) { push @missing, $tag unless $codestr =~ /\Q$tag/; } $builder->is_eq(join(', ', @missing), '',"$cname has all tags implemented"); } return; } =item load_profile_for_test ([PROFNAME[, INC...]]) Load a Lintian::Profile and ensure Data files can be used. This is needed if the test needs to access a data file or if a special profile is needed for the test. It does I test the profile for issues. PROFNAME is the name of the profile to load. It can be omitted, in which case the sub ensures that a profile has been loaded. If no profile has been loaded, 'debian/main' will be loaded. INC is a list of extra "include dirs" (or Lintian "roots") to be used for finding the profile. If not specified, it defaults to I<$ENV{'LINTIAN_TEST_ROOT'}> and I (in order). INC is ignored if a profile has already been loaded. CAVEAT: Only one profile can be loaded in a given test. Once a profile has been loaded, it is not possible to replace it with another one. So if this is invoked multiple times, PROFNAME must be omitted or must match the name of the loaded profile. =cut sub load_profile_for_test { my ($profname, @inc) = @_; # We have loaded a profile and are not asked to # load a specific one - then current one will do. return if $PROFILE and not $profname; die "Cannot load two profiles.\n" if $PROFILE and $PROFILE->name ne $profname; return if $PROFILE; # Already loaded? stop here # We just need it for spell checking, so debian/main should # do just fine... $profname ||= 'debian/main'; unless (@inc) { push @inc, $ENV{'LINTIAN_TEST_ROOT'} if $ENV{'LINTIAN_TEST_ROOT'}; push @inc, '/usr/share/lintian' if -d '/usr/share/lintian'; } $PROFILE = Lintian::Profile->new($profname, \@inc); Lintian::Data->set_vendor($PROFILE); $ENV{'LINTIAN_HELPER_DIRS'} = join(':', map { "$_/helpers" } @inc); $ENV{'LINTIAN_INCLUDE_DIRS'} = join(':', @inc); return; } sub _check_reference { my ($refdata) = @_; my @issues = (); unless (%URLS) { $MANUALS->known(''); # force it to load the manual refs foreach my $manid ($MANUALS->all) { my $table = $MANUALS->value($manid); foreach my $section (keys %{$table}) { my $url = $table->{$section}{url}; next unless $url; $URLS{$url} = "$manid $section"; } } } foreach my $reference (split /\s*,\s*/, $refdata) { if ( $reference =~ m,^http://bugs.debian.org/(\d++)$, or $reference =~ m,^http://bugs.debian.org/cgi-bin/bugreport.cgi\?/.*bug=(\d++).*$, ) { push @issues, "replace \"$reference\" with \"#$1\""; } elsif (exists $URLS{$reference}) { push @issues, "replace \"$reference\" with \"$URLS{$reference}\""; } elsif ($reference =~ m/^([\w-]++)\s++(\S++)$/) { my ($manual, $section) = ($1, $2); if ($MANUALS->known($manual)) { push @issues, "unknown section \"$section\" in $manual" unless exists $MANUALS->value($manual)->{$section}; } else { push @issues, "unknown manual \"$manual\""; } } else { # Check it is a valid reference like URLs or #123456 # NB: "policy 10.1" references already covered above my $ok = 0; $ok = 1 if $reference =~ m/^#\d++$/; # debbug reference $ok = 1 if $reference =~ m,^(?:ftp|https?)://,; # browser URL $ok = 1 if $reference =~ m,^/,; # local file reference $ok = 1 if $reference =~ m,[\w_-]+\(\d\w*\)$,; # man reference push @issues, "unknown/malformed reference \"$reference\"" unless $ok; } } return @issues; } sub _find_check { my ($find_opt, $input) = @_; $find_opt//= {}; my $filter = $find_opt->{'filter'}; if ($filter) { local $_ = $input; # filtered out? return () unless $filter->($_); } if (-d $input) { my @result = (); my $regex = undef; if ($find_opt->{'want-check-name'}) { $regex = qr,^\Q$input\E/*,; } my $wanted = sub { if (defined $filter) { local $_ = $_; if (not $filter->($_)) { # filtered out; if a dir - filter the # entire dir. $File::Find::prune = 1 if -d $_; return; } } return unless m/\.desc$/ and -f $_; if ($regex) { s/$regex//; s/\.desc$//; } push @result, $_; }; my $opt = { 'wanted' => $wanted, 'no_chdir' => 1, }; File::Find::find($opt, $input); return @result; } return ($input); } =item program_name_to_perl_paths(PROGNAME) Map the program name (e.g. C<$0>) to a list of directories or/and files that should be processed. This helper sub is mostly useful for splitting up slow tests run over all Perl scripts/modules in Lintian. This allows better use of multiple cores. Example: t/scripts/my-test/ runner.pl checks.t -> runner.pl collection.t -> runner.pl ... And then in runner.pl: use Test::Lintian; my @paths = program_name_to_perl_paths($0); # test all files/dirs listed in @paths For a more concrete example, see t/scripts/01-critic/ and the files/symlinks beneath it. =cut { my %SPECIAL_PATHS = ( 'docs-examples' => ['doc/examples/checks'], 'test-scripts' => [qw(t/scripts t/helpers t/runtests)], ); sub program_name_to_perl_paths { my ($program) = @_; # We need the basename before resolving the path (because # afterwards it is "runner.pl" and we want it to be e.g. # "checks.t" or "collections.t"). my $basename = basename($program, '.t'); if (exists($SPECIAL_PATHS{$basename})) { return @{$SPECIAL_PATHS{$basename}}; } return ($basename); } } =back =cut 1; lintian-2.5.22ubuntu1/lib/Lintian/0000775000000000000000000000000012314366011013615 5ustar lintian-2.5.22ubuntu1/lib/Lintian/Processable.pm0000664000000000000000000002242712311317632016426 0ustar # Copyright (C) 2011 Niels Thykier # # 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. ## Represents something Lintian can process (e.g. a deb, dsc or a changes) package Lintian::Processable; use parent qw(Class::Accessor::Fast); use strict; use warnings; use Carp qw(croak); use Lintian::Util qw(strip); =head1 NAME Lintian::Processable -- An (abstract) object that Lintian can process =head1 SYNOPSIS use Lintian::Processable::Package; # Instantiate via Lintian::Processable::Package my $proc = Lintian::Processable::Package->new ('lintian_2.5.0_all.deb'); my $pkg_name = $proc->pkg_name; my $pkg_version = $proc->pkg_version; # etc. =head1 DESCRIPTION Instances of this perl class are objects that Lintian can process (e.g. deb files). Multiple objects can then be combined into L, which Lintian will process together. =head1 CLASS METHODS =over 4 =item new_from_metadata (TYPE, PARAGRAPH[, BASEPATH]) Returns a Lintian::Processable from a PARAGRAPH in a Sources or a Packages file with the following exception. If the PARAGRAPH has a field named "pkg_path", then that is used instead of creating the path from BASEPATH path concatenated with the TYPE specific field(s). Hench BASEPATH is optional if and only if, the paragraph has a field called "pkg_path". The TYPE parameter determines the type of the processable and is required. NB: Optional fields (e.g. "Source" for binaries) may be omitted in PARAGRAPH as usual. In this case, the respective values are computed from the required fields according to the Policy Manual. =cut my %KEEP = map { $_ => 1 } qw( pkg_name pkg_version pkg_src pkg_src_version pkg_type pkg_path pkg_arch ); my %KEEP_EXTRA = map { $_ => 1} qw( section binary uploaders maintainer area ); sub new_from_metadata { my ($clazz, $pkg_type, $paragraph, $basepath) = @_; my $self = { %$paragraph # Copy the input data for starters }; my $rename_field = sub { my ($oldn, $newn, $default) = @_; $self->{$newn} = delete $self->{$oldn}; if (not defined $self->{$newn} and defined $default) { $self->{$newn} = $default; } croak "Required field $oldn is missing or empty" unless defined $self->{$newn} and $self->{$newn} ne ''; }; $self->{'pkg_type'} = $pkg_type; $rename_field->('package', 'pkg_name'); $rename_field->('version', 'pkg_version'); bless $self, $clazz; if ($pkg_type eq 'binary' or $pkg_type eq 'udeb') { $rename_field->('source', 'pkg_src', $self->pkg_name); $rename_field->('architecture', 'pkg_arch'); if ($self->{'pkg_src'} =~ /^([-+\.\w]+)\s+\((.+)\)$/) { $self->{'pkg_src'} = $1; $self->{'pkg_src_version'} = $2; croak 'Two source-versions given (source + source-version)' if exists $self->{'source-version'}; } else { $rename_field->( 'source-version', 'pkg_src_version', $self->pkg_version ); } if (not exists $self->{'pkg_path'}) { my $fn = delete $self->{'filename'}; croak 'Missing required "filename" field' unless defined $fn; $self->{'pkg_path'} = "$basepath/$fn"; } } elsif ($pkg_type eq 'source') { $self->{'pkg_src'} = $self->pkg_name; $self->{'pkg_src_version'} = $self->pkg_version; $self->{'pkg_arch'} = 'source'; if (not exists $self->{'pkg_path'}) { my $fn = delete $self->{'files'}; my $dir = delete $self->{'directory'}; $dir .= '/' if defined $dir; $dir //= ''; foreach my $f (split m/\n/, $fn) { strip($f); next unless $f && $f =~ m/\.dsc$/; my (undef, undef, $file) = split m/\s++/, $f; # $dir should end with a slash if it is non-empty. $self->{'pkg_path'} = "$basepath/${dir}$file"; last; } croak 'dsc file not listed in "Files"' unless defined $self->{'pkg_path'}; } } elsif ($pkg_type eq 'changes') { # This case is basically for L::Lab::Manifest entries... $self->{'pkg_src'} = $self->pkg_name; $self->{'pkg_src_version'} = $self->pkg_version; $rename_field->('architecture', 'pkg_arch'); croak '.changes file must have pkg_path set' unless defined $self->{'pkg_path'}; } else { croak "Unsupported type $pkg_type"; } # Prune the field list... foreach my $k (keys %$self) { my $val; $val = delete $self->{$k} unless exists $KEEP{$k}; if (defined $val && exists $KEEP_EXTRA{$k}) { $self->{'extra-fields'}->{$k} = $val; } } $self->_make_identifier; return $self; } # Shadow Class::Accessor::Fast - otherwise you get some very "funny" errors # from Class::Accessor::Fast if you get the constructor wrong. sub new { croak 'Not implemented'; } =back =head1 INSTANCE METHODS =over 4 =cut sub _make_identifier { my ($self) = @_; my $pkg_type = $self->pkg_type; my $pkg_name = $self->pkg_name; my $pkg_version = $self->pkg_version; my $pkg_arch = $self->pkg_arch; my $id = "$pkg_type:$pkg_name/$pkg_version"; if ($pkg_type ne 'source') { $pkg_arch =~ s/\s++/_/g; # avoid spaces in ids $id .= "/$pkg_arch"; } $self->{identifier} = $id; return; } =item $proc->pkg_name() Returns the package name. =item $proc->pkg_version() Returns the version of the package. =item $proc->pkg_path() Returns the path to the packaged version of actual package. This path is used in case the data needs to be extracted from the package. Note: This may return the path to a symlink to the package. =item $proc->pkg_type() Returns the type of package (e.g. binary, source, udeb ...) =item $proc->pkg_arch() Returns the architecture(s) of the package. May return multiple values from changes processables. For source processables it is "source". =item $proc->pkg_src() Returns the name of the source package. =item $proc->pkg_src_version() Returns the version of the source package. =item $proc->tainted() Returns a truth value if one or more fields in this Processable is tainted. On a best effort basis tainted fields will be sanitized to less dangerous (but possibly invalid) values. =item $proc->identifier Produces an identifier for this processable. The identifier is based on the type, name, version and architecture of the package. =cut Lintian::Processable->mk_ro_accessors( qw(pkg_name pkg_version pkg_src pkg_arch pkg_path pkg_type pkg_src_version tainted identifier) ); =item $proc->group([$group]) Returns the L $proc is in, if any. If the processable is not in a group, this returns C. Can also be used to set the group of this processable. =cut Lintian::Processable->mk_accessors(qw(group)); =item $proc->info Returns L<$info|Lintian::Collect> element for this processable. Note: This method must be implemented by sub-classes unless they provide an "info" field. =cut sub info { my ($self) = @_; return $self->{info} if exists $self->{info}; croak 'Not implemented.'; } =item $proc->clear_cache Discard the info element, so the memory used by it can be reclaimed. Mostly useful when checking a lot of packages (e.g. on lintian.d.o). Note: By default this does nothing, but it may (and should) be overridden by sub-classes. =cut sub clear_cache { return; } =item $proc->get_field ($field[, $def]) Optional method to access a field in the underlying data set. Returns $def if the field is not present or the implementation does not have (or want to expose) it. This method is I guaranteed to return the same value as "$proc->info->field ($field, $def)". If C<$def> is omitted is defaults to C. Default implementation accesses them via the hashref stored in "extra-fields" if present. If the field is present, but not defined $def is returned instead. NB: This is mostly an optimization used by L to avoid (re-)reading the underlying package data. =cut sub get_field { my ($self, $field, $def) = @_; return $def unless exists $self->{'extra-fields'} and exists $self->{'extra-fields'}->{$field}; return $self->{'extra-fields'}->{$field}//$def; } =back =head1 AUTHOR Originally written by Niels Thykier for Lintian. =head1 SEE ALSO lintian(1) L =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Collect.pm0000664000000000000000000002056112311317626015551 0ustar # -*- perl -*- # Lintian::Collect -- interface to package data collection # Copyright (C) 2008 Russ Allbery # # 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, see . package Lintian::Collect; use strict; use warnings; use warnings::register; use Lintian::Util qw(get_dsc_info get_deb_info); use Carp qw(croak); =encoding utf-8 =head1 NAME Lintian::Collect - Lintian interface to package data collection =head1 SYNOPSIS my ($name, $type, $dir) = ('foobar', 'udeb', '/some/abs/path'); my $collect = Lintian::Collect->new ($name, $type, $dir); $name = $collect->name; $type = $collect->type; =head1 DESCRIPTION Lintian::Collect provides the shared interface to package data used by source, binary and udeb packages and .changes files. It creates an object of the appropriate type and provides common functions used by the collection interface to all types of package. Usually instances should not be created directly (exceptions include collections), but instead be requested via the L method in Lintian::Lab::Entry. This module is in its infancy. Most of Lintian still reads all data from files in the laboratory whenever that data is needed and generates that data via collect scripts. The goal is to eventually access all data via this module and its subclasses so that the module can cache data where appropriate and possibly retire collect scripts in favor of caching that data in memory. =head1 CLASS METHODS =over 4 =item new (PACKAGE, TYPE, BASEDIR[, FIELDS])) Creates a new object appropriate to the package type. TYPE can be retrieved later with the L method. Croaks if given an unknown TYPE. PACKAGE is the name of the package and is stored in the collect object. It can be retrieved with the L
    method. BASEDIR is the base directory for the data and should be absolute. If FIELDS is given it is assumed to be the fields from the underlying control file. This is only used to avoid an unnecessary read operation (possibly incl. an ar | gzip pipeline) when the fields are already known. =cut sub new { my ($class, $pkg, $type, $base_dir, $fields) = @_; my $object; if ($type eq 'source') { require Lintian::Collect::Source; $object = Lintian::Collect::Source->new($pkg); } elsif ($type eq 'binary' or $type eq 'udeb') { require Lintian::Collect::Binary; $object = Lintian::Collect::Binary->new($pkg); } elsif ($type eq 'changes') { require Lintian::Collect::Changes; $object = Lintian::Collect::Changes->new($pkg); } else { croak("Undefined type: $type"); } $object->{name} = $pkg; $object->{type} = $type; $object->{base_dir} = $base_dir; $object->{field} = $fields if defined $fields; return $object; } =back =head1 INSTANCE METHODS In addition to the instance methods documented here, see the documentation of L, L and L for instance methods specific to source and binary / udeb packages and .changes files. =over 4 =item name Returns the name of the package. Needs-Info requirements for using I: none =cut sub name { my ($self) = @_; return $self->{name}; } =item type Returns the type of the package. Needs-Info requirements for using I: none =cut sub type { my ($self) = @_; return $self->{type}; } =item base_dir Returns the base_dir where all the package information is stored. Needs-Info requirements for using I: none =cut sub base_dir { my ($self) = @_; return $self->{base_dir}; } =item lab_data_path ([ENTRY]) Return the path to the ENTRY in the lab. This is a convenience method around base_dir. If ENTRY is not given, this method behaves like base_dir. Needs-Info requirements for using I: L =cut sub lab_data_path { my ($self, $entry) = @_; my $base = $self->base_dir; return "$base/$entry" if $entry; return $base; } =item field ([FIELD[, DEFAULT]]) If FIELD is given, this method returns the value of the control field FIELD in the control file for the package. For a source package, this is the *.dsc file; for a binary package, this is the control file in the control section of the package. If FIELD is passed but not present, then this method will return DEFAULT (if given) or undef. Otherwise this will return a hash of fields, where the key is the field name (in all lowercase). Note: For binary and udeb packages, this method will create the "source"-field if it does not exist (using the value of the "package"-field as described in §5.6.1 of the Debian Policy Manual). Some checks rely on the presence "source"-field to whitelist some packages, so removing this behaviour may cause regressions (see bug 640186 for an example). Needs-Info requirements for using I: none =cut sub field { my ($self, $field, $def) = @_; return $self->_get_field($field, $def); } # $self->_get_field([$name[, $def]]) # # Method getting the fields; this is the backing method of $self->field # # It must return either a field (if $name is given) or a hash, where the keys are # the name of the fields. If $name is given and it is not present, then it will # return $def (or undef if $def was not given). # # It must cache the result if possible, since field and fields are called often. # sub _get_field Needs-Info none sub _get_field { my ($self, $field, $def) = @_; my $fields; unless (exists $self->{field}) { my $base_dir = $self->base_dir(); my $type = $self->{type}; if ($type eq 'changes' or $type eq 'source'){ my $file = 'changes'; $file = 'dsc' if $type eq 'source'; $fields = get_dsc_info("$base_dir/$file"); } elsif ($type eq 'binary' or $type eq 'udeb'){ # (ab)use the unpacked control dir if it is present if ( -f "$base_dir/control/control" && -s "$base_dir/control/control") { $fields = get_dsc_info("$base_dir/control/control"); } else { $fields = (get_deb_info("$base_dir/deb")); } } $self->{field} = $fields; } else { $fields = $self->{field}; } return $fields->{$field}//$def if $field; return $fields; } =item is_non_free Returns a truth value if the package appears to be non-free (based on the section field; "non-free/*" and "restricted/*") Needs-Info requirements for using I: L =cut sub is_non_free { my ($self) = @_; return $self->{is_non_free} if exists $self->{is_non_free}; $self->{is_non_free} = 0; $self->{is_non_free} = 1 if $self->field('section', 'main') =~ m,^(?:non-free|restricted|multiverse)/,; return $self->{is_non_free}; } # Internal sub for dumping the memory usage of this instance # # Used by the frontend (under debug level >= 4) # # sub _memory_usage Needs-Info none sub _memory_usage { my ($self, $calc_usage) = @_; my %usage; for my $field (keys(%{$self})) { next if ($field =~ m{ \A sorted_ }xsm); if (exists($self->{"sorted_$field"})) { # merge "index" and "sorted_index". At the price of an extra # list, we avoid overcounting all the L::Path objects so the # produced result is a lot more accurate. $usage{$field} = $calc_usage->([$self->{$field},$self->{"sorted_$field"}]); } else { $usage{$field} = $calc_usage->($self->{$field}); } } return \%usage; } =back =head1 AUTHOR Originally written by Russ Allbery for Lintian. =head1 SEE ALSO lintian(1), L, L, L =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Processable/0000775000000000000000000000000012311320323016050 5ustar lintian-2.5.22ubuntu1/lib/Lintian/Processable/Package.pm0000664000000000000000000001561012311317643017757 0ustar # Copyright (C) 2011 Niels Thykier # # 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. ## Represents something Lintian can process (e.g. a deb, dsc or a changes) package Lintian::Processable::Package; use parent qw(Lintian::Processable Class::Accessor::Fast); use strict; use warnings; use Cwd qw(realpath); use Carp qw(croak); use Lintian::Util qw(get_deb_info get_dsc_info); # Black listed characters - any match will be replaced with a _. use constant EVIL_CHARACTERS => qr,[/&|;\$"'<>],o; =head1 NAME Lintian::Processable::Package -- An object that Lintian can process =head1 SYNOPSIS use Lintian::Processable::Package; my $proc = Lintian::Processable::Package->new ('lintian_2.5.0_all.deb'); my $pkg_name = $proc->pkg_name; my $pkg_version = $proc->pkg_version; # etc. =head1 DESCRIPTION Instances of this perl class are objects that Lintian can process (e.g. deb files). Multiple objects can then be combined into L, which Lintian will process together. =head1 CLASS METHODS =over 4 =item new (FILE[, TYPE]) Creates a processable from FILE. If TYPE is given, the FILE is assumed to be that TYPE otherwise the type is determined by the file extension. TYPE is one of "binary" (.deb), "udeb" (.udeb), "source" (.dsc) or "changes" (.changes). =cut # internal initialization method. # reads values from fields etc. sub new { my ($class, $file, $pkg_type) = @_; my $pkg_path; my $self; if (not defined $pkg_type) { if ($file =~ m/\.dsc$/o) { $pkg_type = 'source'; } elsif ($file =~ m/\.deb$/o) { $pkg_type = 'binary'; } elsif ($file =~ m/\.udeb$/o) { $pkg_type = 'udeb'; } elsif ($file =~ m/\.changes$/o) { $pkg_type = 'changes'; } else { croak "$file is not a known type of package"; } } croak "$file does not exists" unless -f $file; $pkg_path = realpath($file); croak "Cannot resolve $file: $!" unless $pkg_path; $self = { pkg_type => $pkg_type, pkg_path => $pkg_path, tainted => 0, }; if ($pkg_type eq 'binary' or $pkg_type eq 'udeb'){ my $dinfo = get_deb_info($pkg_path) or croak "could not read control data in $pkg_path: $!"; my $pkg_name = $dinfo->{package}; my $pkg_src = $dinfo->{source}; my $pkg_version = $dinfo->{version}; my $pkg_src_version = $pkg_version; unless ($pkg_name) { my $type = $pkg_type; $type = 'deb' if $type eq 'binary'; $pkg_name = _derive_name($pkg_path, $type) or croak "Cannot determine the name of $pkg_path"; } # Source may be left out if it is the same as $pkg_name $pkg_src = $pkg_name unless (defined $pkg_src && length $pkg_src); # Source may contain the version (in parentheses) if ($pkg_src =~ m/(\S++)\s*\(([^\)]+)\)/o){ $pkg_src = $1; $pkg_src_version = $2; } $self->{pkg_name} = $pkg_name; $self->{pkg_version} = $pkg_version; $self->{pkg_arch} = $dinfo->{architecture}; $self->{pkg_src} = $pkg_src; $self->{pkg_src_version} = $pkg_src_version; $self->{'extra-fields'} = $dinfo; } elsif ($pkg_type eq 'source'){ my $dinfo = get_dsc_info($pkg_path) or croak "$pkg_path is not valid dsc file"; my $pkg_name = $dinfo->{source} // ''; my $pkg_version = $dinfo->{version}; if ($pkg_name eq '') { croak "$pkg_path is missing Source field"; } $self->{pkg_name} = $pkg_name; $self->{pkg_version} = $pkg_version; $self->{pkg_arch} = 'source'; $self->{pkg_src} = $pkg_name; # it is own source pkg $self->{pkg_src_version} = $pkg_version; $self->{'extra-fields'} = $dinfo; } elsif ($pkg_type eq 'changes'){ my $cinfo = get_dsc_info($pkg_path) or croak "$pkg_path is not a valid changes file"; my $pkg_version = $cinfo->{version}; my $pkg_name = $cinfo->{source}//''; unless ($pkg_name) { $pkg_name = _derive_name($pkg_path, 'changes') or croak "Cannot determine the name of $pkg_path"; } $self->{pkg_name} = $pkg_name; $self->{pkg_version} = $pkg_version; $self->{pkg_src} = $pkg_name; $self->{pkg_src_version} = $pkg_version; $self->{pkg_arch} = $cinfo->{architecture}; $self->{'extra-fields'} = $cinfo; } else { croak "Unknown package type $pkg_type"; } # make sure these are not undefined $self->{pkg_version} = '' unless (defined $self->{pkg_version}); $self->{pkg_src_version} = '' unless (defined $self->{pkg_src_version}); $self->{pkg_arch} = '' unless (defined $self->{pkg_arch}); # make sure none of the fields can cause traversal. for my $field (qw(pkg_name pkg_version pkg_src pkg_src_version pkg_arch)) { if ($self->{$field} =~ m,${\EVIL_CHARACTERS},o){ # None of these fields are allowed to contain a these # characters. This package is most likely crafted to # cause Path traversals or other "fun" things. $self->{tainted} = 1; $self->{$field} =~ s,${\EVIL_CHARACTERS},_,go; } } bless $self, $class; $self->_make_identifier; return $self; } # _derive_name ($file, $ext) # # Derive the name from the file name # - the name is the part of the basename up to (and excl.) the first "_". # # _derive_name ('somewhere/lintian_2.5.2_amd64.changes', 'changes') eq 'lintian' sub _derive_name { my ($file, $ext) = @_; my ($name) = ($file =~ m,(?:.*/)?([^_/]+)[^/]*\.$ext$,); return $name; } # $proc->_ctrl_fields # # Return a hashref of the control fields if available. Used by # L::Lab::Entry to avoid (re-)loading the fields from the control # file. sub _ctrl_fields { my ($self) = @_; return $self->{'extra-fields'} if exists $self->{'extra-fields'}; return; } =back =head1 AUTHOR Originally written by Niels Thykier for Lintian. =head1 SEE ALSO lintian(1) L L =cut 1; lintian-2.5.22ubuntu1/lib/Lintian/Lab.pm0000664000000000000000000010104212311317631014650 0ustar # Lintian::Lab -- Perl laboratory functions for lintian # Copyright (C) 2011 Niels Thykier # - Based on the work of "Various authors" (Copyright 1998-2004) # # 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::Lab; use strict; use warnings; use parent qw(Class::Accessor::Fast); use Carp qw(croak); use Cwd(); use File::Temp qw(tempdir); # For temporary labs use Scalar::Util qw(blessed); use constant { # Lab format Version Number increased whenever incompatible changes # are done to the lab so that all packages are re-unpacked LAB_FORMAT => 11, # Constants to avoid semantic errors due to typos in the $lab->{'mode'} # field values. LAB_MODE_STATIC => 'static', LAB_MODE_TEMP => 'temporary', }; # A private table of suported types. my %SUPPORTED_TYPES = ( 'binary' => 1, 'changes' => 1, 'source' => 1, 'udeb' => 1, ); my %SUPPORTED_VIEWS = ('GROUP' => 1,); use Lintian::Collect; use Lintian::Lab::Entry; use Lintian::Lab::Manifest; use Lintian::Util qw(delete_dir get_dsc_info); =encoding utf8 =head1 NAME Lintian::Lab -- Interface to the Lintian Lab =head1 SYNOPSIS use Lintian::Lab; # Static lab my $lab = Lintian::Lab->new ('/var/lib/lintian/static-lab'); if (!$lab->exists) { $lab->create; } $lab->open; # Fetch a package from the lab my $lpkg = $lab->get_package ('lintian', 'binary', '2.5.4', 'all'); my $visitor = sub { my ($lpkg, $pkg_name, $pkg_ver, $pkg_arch) = @_; # do stuff with that entry }; $lab->visit_packages ($visitor, 'source'); $lab->close; =head1 DESCRIPTION This module provides an abstraction from "How and where" packages are placed. It handles creation and deletion of the Lintian Lab itself as well as providing access to the entries. =head1 CLASS METHODS =over 4 =item new ([DIR]) Creates a new Lab instance. If DIR is defined it will be used as the path to the lab and the lab will be in static mode. Otherwise the lab will be in temporary mode and will point to a temporary directory. =cut sub new { my ($class, $dir) = @_; my $absdir; my $mode = LAB_MODE_TEMP; my $dok = 1; if (defined $dir) { $mode = LAB_MODE_STATIC; $absdir = Cwd::abs_path($dir); if (!$absdir) { if ($dir =~ m,^/,o) { $absdir = $dir; } else { $absdir = Cwd::cwd . '/' . $dir; } $dok = 0; } } else { $absdir = ''; #Ensure it is defined. } my $state = {'GROUP' => Lintian::Lab::Manifest->new('GROUP'),}; my $self = { # Must be absolute (frontend/lintian depends on it) # - also $self->dir promises this # - it may be the empty string (see $self->dir) 'dir' => $absdir, 'state' => $state, 'mode' => $mode, 'is_open' => 0, 'keep-lab' => 0, 'lab-info' => {}, }; $self->{'_correct_dir'} = 1 unless $dok; bless $self, $class; return $self; } =back =head1 INSTANCE METHODS =over 4 =item dir Returns the absolute path to the base of the lab. Note: This may return the empty string if either the lab has been deleted or this is a temporary lab that has not been created yet. In the latter case, L or L should be run to get a non-empty value from this method. =item is_open Returns a truth value if this lab is open. Note: If the lab is open, it also exists. However, if the lab is closed then the lab may or may not exist (see L). =cut Lintian::Lab->mk_ro_accessors(qw(dir is_open)); =item exists Returns a truth value if the instance points to an existing lab. Note: This never implies that the lab is open. Though it may imply the lab is closed (see L). =cut sub exists { my ($self) = @_; my $dir = $self->dir; return unless $dir; # New style lab? return 1 if -d "$dir/info" && -d "$dir/pool"; # 10-style lab? return -d "$dir/binary" && -d "$dir/udeb" && -d "$dir/source" && -d "$dir/info"; } =item get_package (NAME, TYPE[, EXTRA]), get_package (PROC) Fetches an existing package from the lab. The first argument can be a L. In that case all other arguments are ignored. If the first calling convention is used then this method will search for an existing package. The EXTRA argument can be used to narrow the search or even to add a new entry. EXTRA consists of (in order): =over 4 =item * version =item * arch (ignored if TYPE is "source") =back If version or arch is omitted (or if it is undef) then that search parameter is consider a wildcard for "any". Example: # Returns all eclipse-platform packages with architecture i386 regardless # of their version (if any) @ps = $lab->get_package ('eclipse-platform', 'binary', undef, 'i386'); # Returns all eclipse-platform packages with version 3.5.2-11 regardless # of their architecture (if any) @ps = $lab->get_package ('eclipse-platform', 'binary', '3.5.2-11'); # Return the eclipse-platform package with version 3.5.2-11 and architecture # i386 (or undef) $pkg = $lab->get_package ('eclipse-platform', 'binary', '3.5.2-11', 'i386'); In list context, this returns a list of matches. In scalar context this returns the first match (if any). Note there is no guaranteed order (e.g. the returned list is not ordered). If the second calling convention is used, then this method will search for an entry matching the the processable passed. If such an entry does not exists, an new "non-existing" L will be returned. This entry can be created by using the L method on the entry. =cut sub get_package { my ($self, $pkg, $pkg_type, $pkg_version, $pkg_arch) = @_; my $pkg_name; my @entries; my $index; my $proc; croak 'Lab is not open' unless $self->is_open; # TODO: Cache and check for existing entries to avoid passing out # the same entry twice with different instances. Problem being # circular references (and weaken may be un-available) if (blessed $pkg && $pkg->isa('Lintian::Processable')) { if ($pkg->isa('Lintian::Lab::Entry') and $pkg->from_lab($self)) { # Shouldn't happen too often, but ... return $pkg; } $pkg_name = $pkg->pkg_name; $pkg_type = $pkg->pkg_type; $pkg_version = $pkg->pkg_version; $pkg_arch = $pkg->pkg_arch; $proc = $pkg; } else { $pkg_name = $pkg; croak 'Package name and type must be defined' unless $pkg_name && $pkg_type; } # get_package only works with "real" types (and not views). croak "Not a supported type ($pkg_type)" unless exists $SUPPORTED_TYPES{$pkg_type}; $index = $self->_get_lab_index($pkg_type); if ($proc) { my $pkg_src = $proc->pkg_src; my $dir = $self->_pool_path($pkg_src, $pkg_type, $pkg_name, $pkg_version, $pkg_arch); my $entry = Lintian::Lab::Entry->_new_from_proc($proc, $self, $dir); push @entries, $entry; if (not $index->get($proc)) { # Add the entry to the index # Ignore errors - happens if $proc does not have the extra fields # we need. eval {$self->_new_entry($entry, $proc);}; } } elsif (defined $pkg_version && (defined $pkg_arch || $pkg_type eq 'source')) { # We know everything - just do a regular look up my $dir; my @keys = ($pkg_name, $pkg_version); my $entry; my $pkg_src; push @keys, $pkg_arch if $pkg_type ne 'source'; $entry = $index->get(@keys); return unless $entry; $pkg_src = $entry->{'source'}; $dir = $self->_pool_path($pkg_src, $pkg_type, $pkg_name, $pkg_version, $pkg_arch); push @entries, Lintian::Lab::Entry->new_from_metadata($pkg_type, $entry, $self, $dir); } else { # clear $pkg_arch if it is a source package - it simplifies # the search code below undef $pkg_arch if $pkg_type eq 'source'; my $searcher = sub { my ($entry, @keys) = @_; my ($n, $v, $a) = @keys; my $dir; # We do not have to check version - if we have a specific # version, only entries with that version will be visited. return if defined $pkg_arch && $a ne $pkg_arch; $dir = $self->_pool_path($entry->{'source'}, $pkg_type, $pkg_name,$v, $a); push @entries, Lintian::Lab::Entry->new_from_metadata($pkg_type, $entry, $self, $dir); }; my @sk = ($pkg_name); push @sk, $pkg_version if defined $pkg_version; $index->visit_all($searcher, @sk); } return wantarray ? @entries : $entries[0]; } =item lab_query (QUERY) Process a given QUERY and return the results from it. A QUERY is a string of the format: [TYPE:]NAME[/VERSION[/ARCH]] TYPE can be one of the regular package type (e.g. "binary") or one of the two special values "ALL" (default if omitted) or "GROUP". If TYPE is ALL, then the query is one once for each of package type. NAME is the name of the package to request. For GROUP queries, this is the name of the source package. It is not possible to do any kind of wildcards in NAME: VERSION is the version of the package. For GROUP queries, this is the version of the source package. If omitted or the string '_', then any version will match. ARCH is the architecture of the package. For GROUP and "source" queries, ARCH is ignored (if given). If ARCH is omitted or the string '_', then any package architecture will match. NB: The ARCH field should match the architecture field of the entry (which for I<.changes> files usually contains spaces). lab_query will return a list of L matching the query. If no entries match, an empty list will be returned. =cut sub lab_query { my ($self, $query_orig) = @_; my $query = $query_orig; my $type = 'ALL'; my @types = (); my @result; my ($name, $version, $arch); if ($query =~ s/^([a-z]++)://i) { $type = $1; unless (exists $SUPPORTED_TYPES{$type} or exists $SUPPORTED_VIEWS{$type} or$type eq 'ALL') { croak "Unknown/unsupported type ($type) in lab query"; } } ($name, $version, $arch) = map { # map '_' to undef, which is easier for us to deal with later $_ eq '_' ? undef : $_ } split m:/:, $query, 3; # arch is not supposed to have "/" => bad query. croak "$query_orig is not a valid Lab query" if defined $arch and $arch =~ m,/,; # if $name is empty/undef, ".", ".." or contains "_" or ":" it is # a bad query as well. croak "$query_orig is not a valid Lab query" if not defined $name or $name =~ m|^\.?\.?$| or $name =~ m,[_:],; # At this point we "probably" have a reasonable query. push @types, $type if $type ne 'ALL'; push @types, keys %SUPPORTED_TYPES if $type eq 'ALL'; if ($type eq 'GROUP') { # Ensure all indices have been loaded my $state = $self->{'state'}; foreach my $t (keys %SUPPORTED_TYPES) { if (not exists $state->{$t}) { # force load $self->_get_lab_index($t); } } } foreach my $t (@types) { my $index = $self->_get_lab_index($t); my @keys = ($name); my $searcher = sub { my ($entry) = @_; my $dir; # NB: for GROUP queries $t ne $entry_type my $entry_type = $entry->{'pkg_type'}; if (defined $arch and $entry_type ne 'source') { return unless $entry->{'architecture'} eq $arch; } $dir = $self->_pool_path($entry->{'source'}, $entry_type, $entry->{'package'}, $entry->{'version'}, $entry->{'architecture'}); push @result, Lintian::Lab::Entry->new_from_metadata($entry_type, $entry, $self, $dir); }; push @keys, $version if defined $version; $index->visit_all($searcher, @keys); } return @result; } =item visit_packages (VISITOR[, TYPE]) Passes each lab entry to VISITOR. If TYPE is passed, then only entries of that type are passed. VISITOR is given a reference to the L, the package name, the package version and the package architecture (may be undef for source packages). =cut sub visit_packages { my ($self, $visitor, $type) = @_; my @types; push @types, $type if $type; @types = keys %SUPPORTED_TYPES unless $type; foreach my $pkg_type (@types) { my $index = $self->_get_lab_index($pkg_type); my $intv = sub { my ($me, $pkg_name, $pkg_version, $pkg_arch) = @_; my $pkg_src = $me->{'source'}//$pkg_name; my $dir = $self->_pool_path($pkg_src, $pkg_type, $pkg_name, $pkg_version, $pkg_arch); my $lentry = Lintian::Lab::Entry->new_from_metadata($pkg_type, $me, $self, $dir); $visitor->($lentry, $pkg_name, $pkg_version, $pkg_arch); }; $index->visit_all($intv); } return; } # Non-API method used by reporting to look up the manifest data via the Lab # rather than bypassing it. sub _get_lab_manifest_data { my ($self, $pkg_name, $pkg_type, @keys) = @_; my $index = $self->_get_lab_index($pkg_type); if (scalar @keys >= 2 || (scalar @keys >= 1 && $pkg_type eq 'source')) { # All we need to know return $index->get($pkg_name, @keys); } else { # Time to guess (or hope) my @result = (); my $searcher = sub { my ($v) = @_; push @result, $v; }; # end searcher $index->visit_all($searcher, $pkg_name, @keys); return $result[0] if @result; } # Nothing so far, then it does not exist return; } # Returns the index of packages in the lab of a given type (of packages). # # Note this is also used by reporting/html_reports sub _get_lab_index { my ($self, $pkg_type) = @_; croak 'Undefined (or empty) package type' unless $pkg_type; croak "Unknown package type $pkg_type" unless $SUPPORTED_TYPES{$pkg_type} or $SUPPORTED_VIEWS{$pkg_type}; my $state = $self->{'state'}; # Fetch (or load) the index of that type return $state->{$pkg_type} if exists $state->{$pkg_type}; my $dir = $self->dir; my $manifest= Lintian::Lab::Manifest->new($pkg_type, $state->{'GROUP'}); my $lif = "$dir/info/${pkg_type}-packages"; $manifest->read_list($lif); $state->{$pkg_type} = $manifest; return $manifest; } # Given the package meta data (src_name, type, name, version, arch) return the # path to it in the Lab. The path returned will be absolute. sub _pool_path { my ($self, $pkg_src, $pkg_type, $pkg_name, $pkg_version, $pkg_arch) = @_; my $dir = $self->dir; my $p; # If it is at least 4 characters and starts with "lib", use "libX" # as prefix if ($pkg_src =~ m/^lib./o) { $p = substr $pkg_src, 0, 4; } else { $p = substr $pkg_src, 0, 1; } $p = "$p/$pkg_src/${pkg_name}_${pkg_version}"; $p .= "_${pkg_arch}" unless $pkg_type eq 'source'; $p .= "_${pkg_type}"; # Turn spaces into dashes - spaces do appear in architectures # (i.e. for changes files). $p =~ s/\s/-/go; # Also replace ":" with "_" as : is usually used for path separator $p =~ s/:/_/go; return "$dir/pool/$p"; } =item generate_diffs (LIST) Each member of LIST must be a L. The lab will generate a diff between the given member and its state for the given package type. The diffs are accurate until the original manifest is modified or a package is added or removed to the lab. =cut sub generate_diffs { my ($self, @lists) = @_; my $labdir = $self->dir; my @diffs; croak "$labdir is not a valid lab (run lintian --setup-lab first?).\n" unless $self->is_open; foreach my $list (@lists) { my $type = $list->type; my $lab_list; $lab_list = $self->_get_lab_index($type); push @diffs, $lab_list->diff($list); } return @diffs; } =item repair Checks the lab contents against the current meta-data and syncs them. The lab must be open and should not be access while this method is running. This returns the number of corrections done by this process. If there were any corrections, the state files are written before returning. The method may croak if it is unable to do a full check of the lab or if it is unable to write the corrected metadata. Note: This may (and generally will) correct "broken" entries by removing them. =cut sub repair { my ($self) = @_; my $updates = 0; croak 'Lab is not open' unless $self->is_open; foreach my $pkg_type (keys %SUPPORTED_TYPES) { my $index = $self->_get_lab_index($pkg_type); my $visitor = sub { my ($metadata, @keys) = @_; my ($pkg_name, $pkg_version, $pkg_arch) = @keys; my $pkg_src = $metadata->{'source'}//$pkg_name; my $pkg_src_version = $metadata->{'source-version'}; my $dir = $self->_pool_path($pkg_src, $pkg_type, $pkg_name, $pkg_version, $pkg_arch); my $entry; unless (-d $dir) { # The entry is clearly not here, remove it from the metadata $index->delete(@keys); $updates++; return; } eval { $entry = Lintian::Lab::Entry->new_from_metadata($pkg_type, $metadata, $self, $dir); }; unless ($entry && $entry->exists) { # We either cannot load the entry or it does not # believe it exists - either way, the metadata is out # of date. if ($entry) { $entry->remove; # Strictly speaking $entry->remove ought to clean # up the index for us, but fall through and do it # anyway. } else { # The entry is not here to clean up, lets purge it # the good old fashioned way. delete_dir($dir); } $index->delete(@keys); $updates++; } else { unless (-f "$dir/.lintian-status" or $entry->update_status_file) { # if we cannot write the status file, scrap the entry. $entry->remove; $updates++; } } }; $index->visit_all($visitor); } # FIXME: scan the pool for entries not in the metadata. $self->_write_manifests; return $updates; } =item create ([OPTS]) Creates a new lab. It will create L
    if it does not exist. It will also create a basic empty lab. If this is a temporary lab, this method will also setup the temporary dir for the lab. The lab will I be opened by this method. This should be done afterwards by invoking the L method. OPTS (if present) is a hashref containing options. The following options are accepted: =over 4 =item keep-lab If "keep-lab" points to a truth value the temporary directory will I be removed by closing the lab (nor exiting the application). However, explicitly calling L will remove the lab. =item mode If present, this will be used as mode for creating directories. Will default to 0777 if not specified. It is passed to mkdir and is thus subject to umask settings. =back Note: This will not create parent directories of L
    and will croak if these does not exist. Note: This may update the value of L
    as resolving the path requires it to exist. Note: This does nothing if the lab appears to already exists. =cut sub create { my ($self, $opts) = @_; my $dir = $self->dir; my $mid = 0; my $mode = 0777; return 1 if $self->exists; $opts = {} unless $opts; $mode = $opts->{'mode'} if exists $opts->{'mode'}; if (not $dir or $self->is_temp) { if ($self->is_temp) { my $keep = $opts->{'keep-lab'}//0; my %topts = ('CLEANUP' => !$keep, 'TMPDIR' => 1); my $t = tempdir('temp-lintian-lab-XXXXXXXXXX', %topts); $dir = Cwd::abs_path($t); croak "Could not resolve $t: $!" unless $dir; $self->{'dir'} = $dir; $self->{'keep-lab'} = $keep; } else { # This should not be possible - but then again, # code should not have any bugs either... croak 'Lab path may not be empty for a static lab'; } } # Create the top dir if needed - note due to Lintian::Lab->new # and the above tempdir creation code, we know that $dir is # absolute. croak "Cannot create $dir: $!" unless -d $dir or mkdir $dir, $mode; if ($self->{'_correct_dir'}) { # This happens if $dir has been created in this call. # Until now we have been unable to fully resolve the path, # so we try now. my $absdir = Cwd::abs_path($dir); croak "Cannot resolve $dir: $!" unless $absdir; delete $self->{'_correct_dir'}; $dir = $absdir; $self->{'dir'} = $absdir; } # Top dir exists, time to create the minimal directories. unless (-d "$dir/info") { mkdir "$dir/info", $mode or croak "mkdir $dir/info: $!"; $mid = 1; # remember we created the info dir } unless (-d "$dir/pool") { unless (mkdir "$dir/pool", $mode) { my $err = $!; # store the error # Remove the info dir if we made it. This attempts to # prevent a semi-created lab that the API cannot remove # again. # # ignore the error (if any) - we can only do so much rmdir "$dir/info" if $mid; $! = $err; croak "mkdir $dir/pool: $!"; } } # Okay - $dir/info and $dir/pool exists... The subdirs in # $dir/pool will be created as needed. # Create the meta-data file - note at this point we can use # $lab->remove my $ok = 0; eval { open my $lfd, '>', "$dir/info/lab-info" or croak "opening $dir/info/lab-info: $!"; print $lfd 'Lab-Format: ' . LAB_FORMAT . "\n"; print $lfd "Layout: pool\n"; close $lfd or croak "closing $dir/info/lab-info: $!"; $ok = 1; }; unless ($ok) { my $err = $@; eval { $self->remove; }; croak $err; } return 1; } =item open Opens the lab and reads the contents into caches. If the lab is temporary and does not exists, this method will call create to initialize the temporary lab. This will croak if the lab is already open. It may also croak for the same reasons as L if the lab is temporary. Note: for static labs, L must point to an existing consistent lab or this will croak. To open a new lab, please use L. Note: It is not possible to pass options to the creation of the temporary lab. If special options are required, please use L directly. =cut sub open { my ($self) = @_; my $dir; my $msg = 'Open Lab failed'; croak('Lab is already open') if $self->is_open; if ($self->is_temp) { $self->create unless $self->exists; $dir = $self->dir; } else { $dir = $self->dir; unless ($self->exists) { croak "$msg: $dir does not exists" unless -e $dir; croak "$msg: $dir is not a lab or the lab is corrupt"; } } unless (-e "$dir/info/lab-info") { if ($self->exists) { croak "$msg: The Lab format is not supported"; } croak "$msg: Lab is corrupt - $dir/info/lab-info does not exist"; } # Check the lab-format - this ought to be redundant for temp labs, but # it's simpler to do it for them anyway. my $header = get_dsc_info("$dir/info/lab-info"); my $format = $header->{'lab-format'}//''; my $layout = $header->{'layout'}//'pool'; unless ($format && $format eq LAB_FORMAT) { croak "$msg: Lab format $format is not supported ($dir)" if $format; croak "$msg: No lab format specification in $dir/info/lab-info"; } unless ($layout && lc($layout) eq 'pool') { # Unknown layout style? croak "$msg: Layout field present but with no value" unless $layout; croak "$msg: Implementation does not support the layout \"$layout\""; } # Looks decent so far $self->{'lab-info'} = $header; $self->{'is_open'} = 1; return 1; } =item close Close the lab - all state caches will be flushed to the disk and the lab can no longer be used. All references to entries in the lab should be considered invalid. Note: if the lab is a temporary one, this will be deleted unless it was created with "keep-lab" (see L). =cut sub close { my ($self) = @_; return unless $self->exists; if ($self->is_temp && !$self->{'keep-lab'}) { # Temporary lab (without "keep-lab" property) $self->remove; } else { $self->_write_manifests; } $self->{'state'} = {}; $self->{'is_open'} = 0; $self->{'lab-info'} = {}; return 1; } sub _write_manifests { my ($self) = @_; my $dir = $self->dir; while (my ($pkg_type, $plist) = (each %{ $self->{'state'} })) { # write_list croaks on error, so no need for "or croak/die" $plist->write_list("$dir/info/${pkg_type}-packages") if $plist->dirty and exists $SUPPORTED_TYPES{$plist->type}; } return; } =item remove Removes the lab and everything in it. Any reference to an entry returned from this lab will immediately become invalid. If this is a temporary lab, the lab root dir (as returned L) will be removed as well on success. Otherwise the lab root dir will not be removed by this call. On success, this will return a truth value. If the lab is a temporary lab, the directory path will be set to the empty string (that is, L will return ''). On error, this method will croak. If the lab has already been removed (or does not exist), this will return a truth value. =cut sub remove { my ($self) = @_; my $dir = $self->dir; my @subdirs = (); my $empty = 0; return 1 unless $dir && -d $dir; # sanity check if $self->{dir} really points to a lab :) unless (-d "$dir/info") { # info/ subdirectory does not exist--empty directory? my @t = glob("$dir/*"); if ($#t+1 <= 2) { # yes, empty directory--skip it $empty = 1; } else { # non-empty directory that does not look like a lintian lab! croak "$dir: Does not look like a lab"; } } unless ($empty) { # looks ok. if (-d "$dir/pool") { # New lab style @subdirs = qw/pool info/; } else { # 10-style Lab @subdirs = qw/binary source udeb info/; push @subdirs, 'changes' if -d "$dir/changes"; } unless (delete_dir(map { "$dir/$_" } @subdirs)) { croak "delete_dir (\$contents): $!"; } } # dynamic lab? if ($self->is_temp) { rmdir $dir or croak "rmdir $dir: $!"; $self->{'dir'} = ''; } $self->{'is_open'} = 0; return 1; } =item is_temp Returns a truth value if lab is a temporary lab. Note: This returns a truth value, even if the lab was created with the "keep-lab" property. =cut sub is_temp { my ($self) = @_; return $self->{'mode'} eq LAB_MODE_TEMP ? 1 : 0; } # event - triggered by Lintian::Lab::Entry sub _entry_removed { my ($self, $entry) = @_; my $pkg_type = $entry->pkg_type; my $pf = $self->_get_lab_index($pkg_type); $pf->delete($entry); return; } # event - triggered by Lintian::Lab::Entry sub _entry_created { my ($self, $entry) = @_; my $pkg_type = $entry->pkg_type; my $pf = $self->_get_lab_index($pkg_type); $self->_new_entry($entry) unless $pf->get($entry); $pf->set_transient_marker(0, $entry); return; } sub _new_entry { my ($self, $entry, $proc) = @_; my $pkg_name = $entry->pkg_name; my $pkg_type = $entry->pkg_type; my $pkg_version = $entry->pkg_version; my $pkg_path = $entry->pkg_path; my $ts = 0; my $pf = $self->_get_lab_index($pkg_type); my %data = ( 'file' => $pkg_path, 'version' => $pkg_version, ); my $field = sub { my ($f) = @_; my $v; return $proc->get_field($f) if $proc; return $entry->info->field($f, ''); }; if (my @stat = stat $pkg_path) { $ts = $stat[9]; } $data{'timestamp'} = $ts; if ($pkg_type eq 'source') { my $up = $field->('uploaders'); my $maint = $field->('maintainer'); my $bin = $field->('binary'); # Normalize the fields - usually this will be "no-ops", but we # do check some really warped packages every now and then... if ($up) { $up =~ s/\n/ /og; $up = join(', ', split(m/\s*,\s*/o, $up)); } if ($bin) { $bin =~ s/\n\s*//og; $bin = join(', ', split(m/\s*,\s*/o, $bin)); } $maint =~ s/\n\s*//og if $maint; $data{'binary'} = $bin; $data{'source'} = $pkg_name; $data{'area'} = ''; # just blank this - we do not know it :) $data{'maintainer'} = $maint; $data{'uploaders'} = $up; } elsif ($pkg_type eq 'changes') { $data{'architecture'} = $entry->pkg_arch; $data{'source'} = $pkg_name; } elsif ($pkg_type eq 'binary' or $pkg_type eq 'udeb') { my $area = 'main'; my $s = $field->('section'); if ($s && $s =~ m,\s*([a-zA-Z0-9-_]+)/,o) { $area = $1; } $data{'architecture'} = $entry->pkg_arch; $data{'area'} = $area; $data{'package'} = $pkg_name; $data{'source'} = $entry->pkg_src; $data{'source-version'} = $entry->pkg_src_version; } else { croak "Unknown package type: $pkg_type"; } $pf->set(\%data); $pf->set_transient_marker(1, $entry); return; } =back =head1 Changes to the lab format. Lab formats up to (and including) "10" used to store the lab format with each entry. The files in $LAB/info/ were used to list packages from a mirror (dist). In lab format 11 the lab format is stored in $LAB/info/lab-info. The rest of the files in $LAB/info/* have been re-purposed to be a list of packages in the lab. The $LAB/info/lab-info is parsed as a debian control file (See Debian Policy Manual §5.1 for syntax). The consists of a single paragraph and only the following fields are allowed: =over 4 =item Lab-Format (simple, mandatory) This field contains the lab format of this lab. Generally this is simply an integer (though during development non-integers have been used). =item Layout (simple, optional) The layout parameter describes how packages are stored in the lab. Currently the only accepted value is "pool" and the value is not case-sensitive. The pool format dictates that packages are stored in: pool/$l/${name}/${name}_${version}[_${arch}]_${type}/ Note that $arch is left out for source packages, $l is the first letter of the package name (except if the name starts with "lib", then it is the first 4 letters of the package name). Whitespace (e.g. " ") are replaced with dashes ("-") and colons (":") with underscores ("_"). If the field is missing, it defaults to "pool". =back It is allowed to use comments in $LAB/info/lab-info as described in the Debian Policy Manual §5.1. =head1 AUTHOR Niels Thykier Based on the work of various others. =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Output/0000775000000000000000000000000012311320323015106 5ustar lintian-2.5.22ubuntu1/lib/Lintian/Output/FullEWI.pm0000664000000000000000000000445512311317643016736 0ustar # Copyright © 2011 Niels Thykier # # 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::Output::FullEWI; # The FullEWI always emit *full* package metadata even if it is # redundant (that is, optional values are always included) when # emitting tags. # Other than that, it is identical to the normal output. # # When parsing a lintian.log written in format, it is no longer # ambigious which package is referred to (even if --verbose is # not used). # This makes machine-parsing of the log easier, especially # when using the parsed data with the Lintian::Lab API. # # The full format of the emitted tag is: # # C: name type (version) [arch]: tag [...] # # Note the "[...]" is the extra which may or may not be present # depending on the tag. # # Notable cases: # * binary packages include type classification # * source packages include an architecture, which is always # "source". # * "[arch]" may contain spaces (and generally do for .changes) # files. # * "(version)" may contain colon (i.e. epoch versions) use strict; use warnings; use parent qw(Lintian::Output); # Overridden from Lintian::Output sub _format_pkg_info { my ($self, $pkg_info, $tag_info, $override) = @_; my $code = $tag_info->code; $code = 'X' if $tag_info->experimental; $code = 'O' if defined $override; my $version = $pkg_info->{version}; my $arch = ''; my $type = $pkg_info->{type}; $arch = "$pkg_info->{arch}" if $pkg_info->{type} ne 'source'; $arch = 'source' unless $arch; return "$code: $pkg_info->{package} $type ($version) [$arch]"; } 1; lintian-2.5.22ubuntu1/lib/Lintian/Output/XML.pm0000664000000000000000000000756212311317643016131 0ustar # Copyright © 2008 Frank Lichtenheld # # 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::Output::XML; use strict; use warnings; use HTML::Entities; use Lintian::Output qw(:util); use parent qw(Lintian::Output); sub print_tag { my ($self, $pkg_info, $tag_info, $information, $override) = @_; $self->issued_tag($tag_info->tag); my $flags = ($tag_info->experimental ? 'experimental' : ''); my $comment; if ($override) { $flags .= ',' if $flags; $flags .= 'overridden'; if (@{ $override->comments }) { my $c = $self->_make_xml_tag('comment', [], join("\n", @{ $override->comments })); $comment = [$c]; } } my @attrs = ( [severity => $tag_info->severity], [certainty => $tag_info->certainty], [flags => $flags], [name => $tag_info->tag]); print { $self->stdout } $self->_make_xml_tag('tag', \@attrs, $self->_quote_print($information), $comment), "\n"; return; } sub print_start_pkg { my ($self, $pkg_info) = @_; my @attrs = ( [type => $pkg_info->{type}], [name => $pkg_info->{package}], [architecture => $pkg_info->{arch}], [version => $pkg_info->{version}]); print { $self->stdout } $self->_open_xml_tag('package', \@attrs, 0), "\n"; return; } sub print_end_pkg { my ($self) = @_; print { $self->stdout } "
    \n"; return; } sub _delimiter { return; } sub _print { my ($self, $stream, $lead, @args) = @_; $stream ||= $self->stderr; my $output = $self->string($lead, @args); print {$stream} $output; return; } # Create a start tag (or a self-closed tag) # $tag is the name of the tag # $attrs is an anonymous array of pairs of attributes and their values # $close is a boolean. If a truth-value, the tag will closed # # returns the string. sub _open_xml_tag { my ($self, $tag, $attrs, $close) = @_; my $output = "<$tag"; for my $attr (@$attrs) { my ($name, $value) = @$attr; # Skip attributes with "empty" values next unless defined $value && $value ne ''; $output .= " $name=" . '"' . $value . '"'; } $output .= ' /' if $close; $output .= '>'; return $output; } # Print a given XML tag to standard output. Takes the tag, an anonymous array # of pairs of attributes and values, and then the contents of the tag. sub _make_xml_tag { my ($self, $tag, $attrs, $content, $children) = @_; # $empty is true if $content is empty and there are no children my $empty = ($content//'') eq '' && (!defined $children || !@$children); my $output = $self->_open_xml_tag($tag, $attrs, $empty); if (!$empty) { $output .= encode_entities($content, q{<>&"'}) if $content; if (defined $children) { foreach my $child (@$children) { $output .= "\n\t$child"; } $output .= "\n"; } $output .= ""; } return $output; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Output/ColonSeparated.pm0000664000000000000000000000476712311317643020400 0ustar # Tags::ColonSeparated -- Perl tags functions for lintian # $Id: Tags.pm 489 2005-09-17 00:06:30Z djpig $ # Copyright (C) 2005,2008 Frank Lichtenheld # # 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::Output::ColonSeparated; use strict; use warnings; use Lintian::Output qw(:util); use parent qw(Lintian::Output); sub print_tag { my ($self, $pkg_info, $tag_info, $information, $override) = @_; my $odata = ''; if ($override) { $odata = $override->tag; $odata .= ' ' . $self->_quote_print($override->extra) if $override->extra; } $self->issued_tag($tag_info->tag); $self->_print( 'tag', $tag_info->code, $tag_info->severity, $tag_info->certainty, ($tag_info->experimental ? 'X' : '') . (defined($override) ? 'O' : ''), @{$pkg_info}{'package','version','arch','type'}, $tag_info->tag, $self->_quote_print($information), $odata, ); return; } sub _delimiter { return; } sub _message { my ($self, @args) = @_; foreach (@args) { $self->_print('message', $_); } return; } sub _warning { my ($self, @args) = @_; foreach (@args) { $self->_print('warning', $_); } return; } sub _print { my ($self, @args) = @_; my $output = $self->string(@args); print {$self->stdout} $output; return; } sub string { my ($self, @args) = _global_or_object(@_); return join(':', _quote_char(':', @args))."\n"; } sub _quote_char { my ($char, @items) = @_; foreach (@items) { s/\\/\\\\/go; s/\Q$char\E/\\$char/go; } return @items; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Output/LetterQualifier.pm0000664000000000000000000000730312311317643020563 0ustar # Copyright © 2008 Jordà Polo # # 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::Output::LetterQualifier; use strict; use warnings; use Term::ANSIColor qw(colored); use Lintian::Tag::Info (); use Lintian::Output qw(:util); use parent qw(Lintian::Output); my %codes = ( 'pedantic' => { 'wild-guess' => 'P?', 'possible' => 'P ', 'certain' => 'P!' }, 'wishlist' => { 'wild-guess' => 'W?', 'possible' => 'W ', 'certain' => 'W!' }, 'minor' => { 'wild-guess' => 'M?', 'possible' => 'M ', 'certain' => 'M!' }, 'normal' => { 'wild-guess' => 'N?', 'possible' => 'N ', 'certain' => 'N!' }, 'important' => { 'wild-guess' => 'I?', 'possible' => 'I ', 'certain' => 'I!' }, 'serious' => { 'wild-guess' => 'S?', 'possible' => 'S ', 'certain' => 'S!' }, ); my %lq_default_colors = ( 'pedantic' => { 'wild-guess' => 'green', 'possible' => 'green', 'certain' => 'green' }, 'wishlist' => { 'wild-guess' => 'green', 'possible' => 'green', 'certain' => 'cyan' }, 'minor' => { 'wild-guess' => 'green', 'possible' => 'cyan', 'certain' => 'yellow' }, 'normal' => { 'wild-guess' => 'cyan', 'possible' => 'yellow', 'certain' => 'yellow' }, 'important' => { 'wild-guess' => 'yellow', 'possible' => 'red', 'certain' => 'red' }, 'serious' => { 'wild-guess' => 'yellow', 'possible' => 'red', 'certain' => 'magenta' }, ); sub new { my $self = Lintian::Output::new('Lintian::Output::LetterQualifier'); $self->colors({%lq_default_colors}); return $self; } sub print_tag { my ($self, $pkg_info, $tag_info, $information, $override) = @_; my $code = $tag_info->code; $code = 'X' if $tag_info->experimental; $code = 'O' if defined($override); my $sev = $tag_info->severity; my $cer = $tag_info->certainty; my $lq = $codes{$sev}{$cer}; my $pkg = $pkg_info->{package}; my $type = ($pkg_info->{type} ne 'binary') ? " $pkg_info->{type}" : ''; my $tag = $tag_info->tag; $information = ' ' . $self->_quote_print($information) if $information ne ''; if ($self->_do_color) { my $color = $self->colors->{$sev}{$cer}; $lq = colored($lq, $color); $tag = colored($tag, $color); } $self->_print('', "$code\[$lq\]: $pkg$type", "$tag$information"); if (not $self->issued_tag($tag_info->tag) and $self->showdescription) { my $description = $tag_info->description('text', ' '); $self->_print('', 'N', ''); $self->_print('', 'N', split("\n", $description)); $self->_print('', 'N', ''); } return; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Profile.pm0000664000000000000000000005333412311317633015566 0ustar # Copyright (C) 2011 Niels Thykier # # 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. ## Represents a Lintian profile package Lintian::Profile; use parent qw(Class::Accessor::Fast); use strict; use warnings; use autodie qw(opendir closedir); use Carp qw(croak); use Dpkg::Vendor qw(get_current_vendor get_vendor_info); use Lintian::CheckScript; use Lintian::Tags; use Lintian::Util qw(parse_boolean read_dpkg_control strip); =head1 NAME Lintian::Profile - Profile parser for Lintian =head1 SYNOPSIS # Load the debian profile (if available) my $profile = Lintian::Profile->new ('debian'); # Load the debian profile using an explicit search path $profile = Lintian::Profile->new ('debian', ['/path/to/alt/root', $ENV{'LINTIAN_ROOT'}]); # Load the "default" profile for the current vendor $profile = Lintian::Profile->new; foreach my $tag ($profile->tags) { print "Enabled tag: $tag\n"; } # ... =head1 DESCRIPTION Lintian::Profile handles finding, parsing and implementation of Lintian Profiles as well as loading the relevant Lintian checks. =head1 CLASS METHODS =over 4 =cut # map of known valid severity allowed by profiles my %SEVERITIES = map { $_ => 1} @Lintian::Tags::SEVERITIES; # List of fields in the main profile paragraph my %MAIN_FIELDS = ( 'profile' => 1, 'extends' => 1, 'enable-tags-from-check' => 1, 'disable-tags-from-check' => 1, 'enable-tags' => 1, 'disable-tags' => 1, ); # List of fields in secondary profile paragraphs my %SEC_FIELDS = ( 'tags' => 1, 'overridable' => 1, 'severity' => 1, ); =item Lintian::Profile->new ([$profname[, $ipath[, $extra]]]) Creates a new profile from the profile. $profname is the name of the profile and $ipath is a list reference containing containing the path to one (or more) Lintian "roots". If $profname is C, the default vendor will be loaded based on Dpkg::Vendor::get_current_vendor. If $ipath is not given, a default one will be used. =cut sub new { my ($type, $name, $ipath, $extra) = @_; my $profile; my @full_inc_path; if (!defined $ipath) { # Temporary fix (see _safe_include_path) @full_inc_path = [_default_inc_path()] unless $ipath; if (defined $ENV{'LINTIAN_ROOT'}) { $ipath = [$ENV{'LINTIAN_ROOT'}]; } else { $ipath = ['/usr/share/lintian']; } } if (defined $extra and exists $extra->{'restricted-search-dirs'}) { @full_inc_path = @{ $extra->{'restricted-search-dirs'} }; } push @full_inc_path, @$ipath; my $self = { 'parent-map' => {}, 'profile_list' => [], 'include-path' => \@full_inc_path, 'safe-include-path' => $ipath, # "set" of tags enabled (value is largely ignored) 'enabled-tags' => {}, # maps script to the number of tags enabled (0 if disabled) 'enabled-checks' => {}, 'non-overridable-tags' => {}, # maps script name to Lintian::CheckScript 'check-scripts' => {}, # maps tag name to Lintian::Tag::Info 'known-tags' => {}, }; $self = bless $self, $type; if (not defined $name) { ($profile, $name) = $self->_find_vendor_profile; } else { croak "Illegal profile name \"$name\"" if $name =~ m,^/,o or $name =~ m/\./o; ($profile, undef) = $self->_find_vendor_profile($name); } croak "Cannot find profile $name (in " . join(', ', map { "$_/profiles" } @$ipath).')' unless $profile; # Implementation detail: Ensure that the "lintian" check is always # loaded to avoid "attempt to emit unknown tags" caused by # the frontend or L::Tags. Also default to enabling the Lintian # tags as they are helpful (e.g. for debugging overrides files) my $c = $self->_load_check($self->name, 'lintian'); $self->enable_tags($c->tags); $self->_read_profile($profile); return $self; } =item $prof->profile_list Returns a list ref of the (normalized) names of the profile and its parents. The last element of the list is the name of the profile itself, the second last is its parent and so on. Note: This list reference and its contents should not be modified. =item $prof->name Returns the name of the profile, which may differ from the name used to create this instance of the profile (e.g. due to symlinks). =cut Lintian::Profile->mk_ro_accessors(qw(profile_list name)); =item $prof->tags([$known]) Returns the list of tags in this profile. If $known is given and it is a truth value, the list of known tags is returned. Otherwise only the enabled tags will be returned. Note: The contents of this list should not be modified. =cut sub tags { my ($self, $known) = @_; return keys %{ $self->{'known-tags'} } if $known; return keys %{ $self->{'enabled-tags'} }; } =item $prof->scripts ([$known]) Returns the list of Check-Scripts in this profile. If $known is given and it is a truth value, the list of known Check-Scripts is returned. Otherwise only checks with an enabled tag will be enabled. =cut sub scripts { my ($self, $known) = @_; return keys %{ $self->{'check-scripts'} } if $known; return keys %{ $self->{'enabled-checks'} }; } =item $prof->is_overridable ($tag) Returns a false value if the tag has been marked as "non-overridable". Otherwise it returns a truth value. =cut sub is_overridable { my ($self, $tag) = @_; return !exists $self->{'non-overridable-tags'}->{$tag}; } =item $prof->get_tag ($tag[, $known]) Returns the Lintian::Tag::Info for $tag if it is enabled for the profile (or just a "known tag" if $known is given and a truth value). Otherwise it returns undef. =cut sub get_tag { my ($self, $tag, $known) = @_; return unless $known || exists $self->{'enabled-tags'}->{$tag}; return $self->{'known-tags'}->{$tag}; } =item $prof->get_script ($script[, $known]) Returns the Lintian::CheckScript for $script if it is enabled for the profile (or just a "known script" if $known is given and a truth value). Otherwise it returns undef. Note: A script is enabled as long as at least one of the tags it provides are enabled. =cut sub get_script { my ($self, $script, $known) = @_; return unless $known || exists $self->{'enabled-checks'}->{$script}; return $self->{'check-scripts'}->{$script}; } =item $prof->enable_tags (@tags) Enables all tags named in @tags. Croaks if an unknown tag is found. =cut sub enable_tags { my ($self, @tags) = @_; for my $tag (@tags) { my $ti = $self->{'known-tags'}->{$tag}; croak "Unknown tag $tag" unless $ti; next if exists $self->{'enabled-tags'}->{$tag}; $self->{'enabled-tags'}->{$tag} = 1; $self->{'enabled-checks'}->{$ti->script}++; } return; } =item $prof->disable_tags (@tags) Disable all tags named in @tags. Croaks if an unknown tag is found. =cut sub disable_tags { my ($self, @tags) = @_; for my $tag (@tags) { my $ti = $self->{'known-tags'}->{$tag}; croak "Unknown tag $tag" unless $ti; next unless exists $self->{'enabled-tags'}->{$tag}; delete $self->{'enabled-tags'}->{$tag}; delete $self->{'enabled-checks'}->{$ti->script} unless --$self->{'enabled-checks'}->{$ti->script}; } return; } =item $prof->include_path ([$path]) Returns an array of paths to the (partial) Lintian roots, which are used by this profile. The paths are ordered from "highest" to "lowest" priority (i.e. items in the earlier paths should shadow those in later ones). If $path is given, the array will contain the paths to the path in these roots denoted by $path. Paths returned are not guaranteed to exists. =cut sub include_path { my ($self, $path) = @_; unless (defined $path) { return @{ $self->{'include-path'} }; } return map { "$_/$path" } @{ $self->{'include-path'} }; } # Temporary until aptdaemon (etc.) has been upgraded to handle # Lintian loading code from user dirs. # LP: #1162947 sub _safe_include_path { my ($self, $path) = @_; unless (defined $path) { return @{ $self->{'safe-include-path'} }; } return map { "$_/$path" } @{ $self->{'safe-include-path'} }; } # $prof->_find_profile ($pname) # # Finds a profile called $pname in the search directories and returns # the path to it. If $pname does not contain a slash, then it will look # for a profile called "$pname/main" instead of $pname. # # Returns a non-truth value if the profile could not be found. $pname # cannot contain any dots. sub _find_profile { my ($self, $pname) = @_; my $pfile; croak "\"$pname\" is not a valid profile name" if $pname =~ m/\./o; # $vendor is short for $vendor/main $pname = "$pname/main" unless $pname =~ m,/,o; $pfile = "$pname.profile"; foreach my $path ($self->include_path('profiles')) { return "$path/$pfile" if -e "$path/$pfile"; } return ''; } # $self->_read_profile($pfile) # # Parses the profile stored in the file $pfile; if this method returns # normally, the profile will have been parsed successfully. sub _read_profile { my ($self, $pfile) = @_; my @pdata; my $pheader; my $pmap = $self->{'parent-map'}; my $pname; my $plist = $self->{'profile_list'}; @pdata = read_dpkg_control($pfile, 0); $pheader = shift @pdata; croak "Profile field is missing from $pfile" unless defined $pheader && $pheader->{'profile'}; $pname = $pheader->{'profile'}; croak "Invalid Profile field in $pfile" if $pname =~ m,^/,o or $pname =~ m/\./o; # Normalize the profile name $pname .= '/main' unless $pname =~m,/,; croak "Recursive definition of $pname" if exists $pmap->{$pname}; $pmap->{$pname} = 0; # Mark as being loaded. $self->{'name'} = $pname unless exists $self->{'name'}; if (exists $pheader->{'extends'}){ my $parent = $pheader->{'extends'}; my $parentf; croak "Invalid Extends field in $pfile" unless $parent && $parent !~ m/\./o; ($parentf, undef) = $self->_find_vendor_profile($parent); croak "Cannot find $parent, which $pname extends" unless $parentf; $self->_read_profile($parentf); } # Add the profile to the "chain" after loading its parent (if # any). push @$plist, $pname; $self->_read_profile_tags($pname, $pheader); if (@pdata){ my $i = 2; # section counter foreach my $psection (@pdata){ $self->_read_profile_section($pname, $psection, $i++); } } return; } # $self->_read_profile_section($pname, $section, $sno) # # Parses and applies the effects of $section (a paragraph # in the profile). $pname is the name of the profile and # $no is section number (both of these are only used for # error reporting). sub _read_profile_section { my ($self, $pname, $section, $sno) = @_; my @tags = $self->_split_comma_sep_field($section->{'tags'}); my $overridable = $self->_parse_boolean($section->{'overridable'}, -1, $pname, $sno); my $severity = $section->{'severity'}//''; my $noover = $self->{'non-overridable-tags'}; $self->_check_for_invalid_fields($section, \%SEC_FIELDS, $pname, "section $sno"); croak( join(q{ }, qq{Profile "$pname" is missing Tags field}, "(or it is empty) in section $sno")) unless @tags; croak( join(q{ }, qq{Profile "$pname" contains invalid severity}, qq{"$severity" in section $sno})) if $severity && !$SEVERITIES{$severity}; foreach my $tag (@tags) { croak "Unknown check $tag in $pname (section $sno)" unless $self->{'known-tags'}->{$tag}; if ($severity) { $self->{'known-tags'}->{$tag}->set_severity($severity); } if ($overridable != -1) { if ($overridable) { delete $noover->{$tag}; } else { $noover->{$tag} = 1; } } } return; } # $self->_read_profile_tags($pname, $pheader) # # Interprets the {dis,en}able-tags{,-from-chcek} fields from # the profile header $pheader. $pname is the name of the # profile (used for error reporting). # # If it returns, the enabled tags will be updated to reflect # the tags enabled/disabled by this profile (but not its # parents). sub _read_profile_tags{ my ($self, $pname, $pheader) = @_; $self->_check_for_invalid_fields($pheader, \%MAIN_FIELDS, $pname, 'profile header'); $self->_check_duplicates($pname, $pheader, 'load-checks', 'enable-tags-from-check', 'disable-tags-from-check'); $self->_check_duplicates($pname, $pheader, 'enable-tags', 'disable-tags'); my $tags_from_check_sub = sub { my ($field, $check) = @_; unless (exists $self->{'check-scripts'}->{$check}) { $self->_load_check($pname, $check); } return $self->{'check-scripts'}->{$check}->tags; }; my $tag_sub = sub { my ($field, $tag) = @_; unless (exists $self->{'known-tags'}->{$tag}) { $self->_load_checks; croak "Unknown tag \"$tag\" in profile \"$pname\"" unless exists $self->{'known-tags'}->{$tag}; } return $tag; }; if ($pheader->{'load-checks'}) { for my $check ($self->_split_comma_sep_field($pheader->{'load-checks'})){ $self->_load_check($pname, $check) unless exists $self->{'check-scripts'}->{$check}; } } $self->_enable_tags_from_field($pname, $pheader, 'enable-tags-from-check', $tags_from_check_sub, 1); $self->_enable_tags_from_field($pname, $pheader, 'disable-tags-from-check', $tags_from_check_sub, 0); $self->_enable_tags_from_field($pname, $pheader, 'enable-tags', $tag_sub, 1); $self->_enable_tags_from_field($pname, $pheader, 'disable-tags', $tag_sub, 0); return; } # $self->_enable_tags_from_field($pname, $pheader, $field, $code, $enable) # # Parse $field in $pheader as a comma separated list of items; these items are then # passed to $code, that must returns a list of tags. If $enable is a truth value # these tags are enabled in the profile, otherwise they are disabled. sub _enable_tags_from_field { my ($self, $pname, $pheader, $field, $code, $enable) = @_; my $method = \&enable_tags; my @tags; $method = \&disable_tags unless $enable; return unless $pheader->{$field}; @tags = map { $code->($field, $_) } $self->_split_comma_sep_field($pheader->{$field}); $self->$method(@tags); return; } # $self->_check_duplicates($name, $map, @fields) # # Checks the @fields in $map for duplicate values. The # values are parsed as comma-separated lists. The same # entry in these lists are not allowed twice, regardless # of they appear twice in the same field or once in two # different fields of @fields. # # sub _check_duplicates{ my ($self, $name, $map, @fields) = @_; my %dupmap; foreach my $field (@fields) { next unless exists $map->{$field}; foreach my $element (split m/\s*+,\s*+/o, $map->{$field}){ if (exists $dupmap{$element}){ my $other = $dupmap{$element}; croak( join(q{ }, qq{"$element" appears in both "$field"}, qq{and "$other" in profile "$name"}) ) unless $other eq $field; croak( join(q{ }, qq{"$element" appears twice in the field}, qq{"$field" in profile "$name"})); } $dupmap{$element} = $field; } } return; } # $self->_parse_boolean($bool, $def, $pname, $sno); # # Parse $bool as a string representing a bool; if undefined return $def. # $pname and $sno are the Profile name and section number - used for # error reporting. sub _parse_boolean { my ($self, $bool, $def, $pname, $sno) = @_; my $val; return $def unless defined $bool; eval { $val = parse_boolean($bool); }; croak "\"$bool\" is not a boolean value in $pname (section $sno)" if $@; return $val; } # $self->_split_comma_sep_field($data) # # Split $data as a comma-separated list of items (whitespace will # be ignored). sub _split_comma_sep_field { my ($self, $data) = @_; return () unless defined $data; return split m/\s*,\s*/o, strip($data); } # $self->_check_for_invalid_fields($para, $known, $pname, $paraname) # # Check $para for unknown fields (e.g. fields not in $known). # If an unknown field is found, croak using $pname and $paraname # to identify the profile name and paragraph (respectively) sub _check_for_invalid_fields { my ($self, $para, $known, $pname, $paraname) = @_; foreach my $field (keys %$para) { next if exists $known->{$field}; croak "Unknown field \"$field\" in $pname ($paraname)"; } return; } sub _load_check { my ($self, $profile, $check) = @_; my $dir = undef; foreach my $checkdir ($self->_safe_include_path('checks')) { my $cf = "$checkdir/${check}.desc"; if (-f $cf) { $dir = $checkdir; last; } } croak "$profile references unknown $check" unless defined $dir; return $self->_parse_check($check, $dir); } sub _parse_check { my ($self, $gcname, $dir) = @_; # Have we already tried to load this before? Possibly via an alias # or symlink return $self->{'check-scripts'}->{$gcname} if exists $self->{'check-scripts'}->{$gcname}; my $c = Lintian::CheckScript->new($dir, $gcname); my $cname = $c->name; if (exists $self->{'check-scripts'}->{$cname}) { # We have loaded the check under a different name $c = $self->{'check-scripts'}->{$cname}; # Record the alias so we don't have to parse the check file again. $self->{'check-scripts'}->{$gcname} = $c; return $c; } $self->{'check-scripts'}->{$cname} = $c; $self->{'check-scripts'}->{$gcname} = $c if $gcname ne $cname; for my $tn ($c->tags) { if ($self->{'known-tags'}->{$tn}) { my $ocn = $self->{'known-tags'}->{$tn}->script; croak "$cname redefined tag $tn which was defined by $ocn"; } $self->{'known-tags'}->{$tn} = $c->get_tag($tn); } return $c; } sub _load_checks { my ($self) = @_; foreach my $checkdir ($self->_safe_include_path('checks')) { next unless -d $checkdir; opendir(my $dirfd, $checkdir); for my $desc (sort readdir $dirfd) { my $cname = $desc; next unless $cname =~ s/\.desc$//o; # _parse_check ignores duplicates, so we don't have to # check for it. $self->_parse_check($cname, $checkdir); } closedir($dirfd); } return; } sub _default_inc_path { my @path = (); push @path, "$ENV{'HOME'}/.lintian" if exists $ENV{'HOME'} and defined $ENV{'HOME'}; push @path, '/etc/lintian'; # ENV{LINTIAN_ROOT} replaces /usr/share/lintian if present. push @path, $ENV{'LINTIAN_ROOT'} if defined $ENV{'LINTIAN_ROOT'}; push @path, '/usr/share/lintian' unless defined $ENV{'LINTIAN_ROOT'}; return @path; } sub _find_vendor_profile { my ($self, $prof) = @_; my @vendors; if (defined $prof and $prof !~ m/[{}]/) { # no substitution required... return ($self->_find_profile($prof), $prof); } elsif (defined $prof) { my $cpy = $prof; # Check for unknown (or broken) subst. $cpy =~ s/\Q{VENDOR}\E//g; croak "Unknown substitution \"$1\" (in \"$prof\")" if $cpy =~ m/\{([^ \}]+)\}/; croak "Bad, broken or empty subtitution marker in \"$prof\"" if $cpy =~ m/[{}]/; } $prof //= '{VENDOR}/main'; @vendors = @{ $self->{'_vendor_cache'} } if exists $self->{'_vendor_cache'}; unless (@vendors) { my $vendor = Dpkg::Vendor::get_current_vendor(); croak 'Could not determine the current vendor' unless $vendor; push @vendors, lc $vendor; while ($vendor) { my $info = Dpkg::Vendor::get_vendor_info($vendor); # Cannot happen atm, but in case Dpkg::Vendor changes its internals # or our code changes croak "Could not look up the parent vendor of $vendor" unless $info; $vendor = $info->{'Parent'}; push @vendors, lc $vendor if $vendor; } $self->{'_vendor_cache'} = \@vendors; } foreach my $vendor (@vendors) { my $file; my $profname = $prof; $profname =~ s/\Q{VENDOR}\E/$vendor/g; $file = $self->_find_profile($profname); return ($file, $profname) if $file; } croak( join(q{ }, 'Could not find a profile matching', qq{"$prof" for vendor $vendors[0]})); } =back =head1 AUTHOR Originally written by Niels Thykier for Lintian. =head1 SEE ALSO lintian(1) =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Relation/0000775000000000000000000000000012311320323015363 5ustar lintian-2.5.22ubuntu1/lib/Lintian/Relation/Version.pm0000664000000000000000000001064312311317643017365 0ustar # -*- perl -*- # Lintian::Relation::Version -- comparison operators on Debian versions # Copyright (C) 1998 Christian Schwarz and Richard Braakman # Copyright (C) 2004-2009 Russ Allbery # Copyright (C) 2009 Adam D. Barratt # # 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, see . package Lintian::Relation::Version; use strict; use warnings; use Carp qw(croak); use Exporter qw(import); BEGIN { our @EXPORT_OK = qw(versions_equal versions_lte versions_gte versions_lt versions_gt versions_compare versions_comparator); our %EXPORT_TAGS = ('all' => \@EXPORT_OK); } use AptPkg::Config '$_config'; my $versioning = $_config->system->versioning; =head1 NAME Lintian::Relation::Version - Comparison operators on Debian versions =head1 SYNOPSIS print "yes\n" if versions_equal('1.0', '1.00'); print "yes\n" if versions_gte('1.1', '1.0'); print "no\n" if versions_lte('1.1', '1.0'); print "yes\n" if versions_gt('1.1', '1.0'); print "no\n" if versions_lt('1.1', '1.1'); print "yes\n" if versions_compare('1.1', '<=', '1.1'); =head1 DESCRIPTION This module provides five functions for comparing version numbers. The underlying implementation uses C to ensure that the results match what dpkg will expect. =head1 FUNCTIONS =over 4 =item versions_equal(A, B) Returns true if A is equal to B (C<=>) and false otherwise. =cut sub versions_equal { my ($p, $q) = @_; my $result; return 1 if $p eq $q; $result = $versioning->compare($p, $q); return ($result == 0); } =item versions_lte(A, B) Returns true if A is less than or equal (C<< <= >>) to B and false otherwise. =cut sub versions_lte { my ($p, $q) = @_; my $result; return 1 if $p eq $q; $result = $versioning->compare($p, $q); return ($result <= 0); } =item versions_gte(A, B) Returns true if A is greater than or equal (C<< >= >>) to B and false otherwise. =cut sub versions_gte { my ($p, $q) = @_; my $result; return 1 if $p eq $q; $result = $versioning->compare($p, $q); return ($result >= 0); } =item versions_lt(A, B) Returns true if A is less than (C<<< << >>>) B and false otherwise. =cut sub versions_lt { my ($p, $q) = @_; my $result; return 0 if $p eq $q; $result = $versioning->compare($p, $q); return ($result < 0); } =item versions_gt(A, B) Returns true if A is greater than (C<<< >> >>>) B and false otherwise. =cut sub versions_gt { my ($p, $q) = @_; my $result; return 0 if $p eq $q; $result = $versioning->compare($p, $q); return ($result > 0); } =item versions_compare(A, OP, B) Returns true if A OP B, where OP is one of C<=>, C<< <= >>, C<< >= >>, C<<< << >>>, or C<<< >> >>>, and false otherwise. =cut sub versions_compare { my ($p, $op, $q) = @_; if ($op eq '=') { return versions_equal($p, $q) } elsif ($op eq '<=') { return versions_lte($p, $q) } elsif ($op eq '>=') { return versions_gte($p, $q) } elsif ($op eq '<<') { return versions_lt($p, $q) } elsif ($op eq '>>') { return versions_gt($p, $q) } else { croak("unknown operator $op") } } =item versions_comparator (A, B) Returns -1, 0 or 1 if the version A is (respectively) less than, equal to or greater than B. This is useful for (e.g.) sorting a list of versions: foreach my $version (sort versions_comparator @versions) { ... } =cut # Use a prototype to avoid confusing Perl when used with sort. sub versions_comparator ($$) { my ($p, $q) = @_; return $versioning->compare($p, $q); } =back =head1 AUTHOR Originally written by Russ Allbery for Lintian and adapted to use libapt-pkg-perl by Adam D. Barratt . =head1 SEE ALSO lintian(1) =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/ProcessablePool.pm0000664000000000000000000001370612311317632017260 0ustar # Copyright (C) 2011 Niels Thykier # # 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. ## Represents a pool of processables (Lintian::Processable) package Lintian::ProcessablePool; use strict; use warnings; use Carp qw(croak); use Cwd(); use Lintian::Util; use Lintian::Processable::Package; use Lintian::ProcessableGroup; =head1 NAME Lintian::ProcessablePool -- Pool of processables =head1 SYNOPSIS use Lintian::ProcessablePool; my $pool = Lintian::ProcessablePool->new(); $pool->add_file('foo.changes'); $pool->add_file('bar.dsc'); $pool->add_file('baz.deb'); foreach my $gname ($pool->get_group_names()){ my $group = $pool->get_group($gname); process($gname, $group); } =head1 METHODS =over 4 =item Lintian::ProcessablePool->new ([LAB]) Creates a new empty pool. If LAB is given, it is assumed to be a Lintian::Lab. In this case, any processable added to this pool will be stored as a L from LAB. =cut sub new { my ($class, $lab) = @_; my $self = { 'lab' => $lab, 'groups' => {}, }; bless $self, $class; return $self; } =item $pool->add_file($file) Adds a file to the pool. The $file will be turned into a L and grouped together with other processables from the same source package (if any). =cut sub add_file { my ($self, $file) = @_; if ($file =~ m/\.changes$/o){ croak "$file does not exist" unless -f $file; my $pkg_path = Cwd::abs_path($file); croak "Cannot resolve $file: $!" unless $pkg_path; return $self->_add_changes_file($pkg_path); } my $proc = Lintian::Processable::Package->new($file); return $self->add_proc($proc); } =item $pool->add_proc ($proc) Adds a L to the pool. =cut sub add_proc { my ($self, $proc) = @_; my ($group, $groupid); my $pkg_type = $proc->pkg_type; if ($proc->tainted) { warn( sprintf( "warning: tainted %1\$s package '%2\$s', skipping\n", $pkg_type, $proc->pkg_name )); return 0; } $groupid = $self->_get_group_id($proc); $group = $self->{groups}->{$groupid}; if (defined $group){ if ($pkg_type eq 'source'){ # if this is a source pkg, then this is a duplicate # assuming the group already has a source package. return 0 if defined $group->get_source_processable; } # else add the binary/udeb proc to the group return $group->add_processable($proc); } else { # Create a new group $group = Lintian::ProcessableGroup->new($self->{'lab'}); $group->add_processable($proc); $self->{groups}->{$groupid} = $group; } # add it to the "unprocessed"/"seen" map. return 1; } =item $pool->get_group_names() Returns the name of all the groups in this pool. Do not modify the list nor its contents. =cut sub get_group_names{ my ($self) = @_; return keys %{ $self->{groups} }; } =item $pool->get_group($name) Returns the group called $name or C if there is no group called $name. =cut sub get_group{ my ($self, $group) = @_; return $self->{groups}->{$group}; } =item $pool->get_groups() Returns all the groups in the pool. Do not modify the list nor its contents. =cut sub get_groups{ my ($self) = @_; my $groups = $self->{groups}; if (scalar keys %$groups) { return values %$groups; } return (); } =item $pool->empty() Returns true if the pool is empty. =cut sub empty{ my ($self) = @_; return scalar keys %{ $self->{groups} } < 1; } #### Internal subs #### sub _add_changes_file{ my ($self, $pkg_path) = @_; my $group = Lintian::ProcessableGroup->new($self->{'lab'}, $pkg_path); my $cproc = $group->get_changes_processable(); my $gid = $self->_get_group_id($cproc); my $ogroup = $self->{groups}->{$gid}; if (defined($ogroup)){ # Group already exists... my $added = 0; # Merge architectures/packages ... # Accept all new if (!defined($ogroup->get_changes_processable)) { $ogroup->add_processable($cproc); $added = 1; } if ( !defined $ogroup->get_source_processable() && defined $group->get_source_processable()){ $ogroup->add_processable($group->get_source_processable()); $added = 1; } foreach my $bin ($group->get_binary_processables()){ # New binary package ? my $was_new = $ogroup->add_processable($bin); $added ||= $was_new; } return $added; } else { $self->{groups}->{$gid} = $group; } return 1; } # Fetches the group id for a package # - this id is based on the name and the version of the # src-pkg. sub _get_group_id{ my ($self, $pkg) = @_; my $id = $pkg->pkg_src; $id .= '/' . $pkg->pkg_src_version; return $id; } =back =head1 AUTHOR Originally written by Niels Thykier for Lintian. =head1 SEE ALSO lintian(1) L L =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Tag/0000775000000000000000000000000012311320323014321 5ustar lintian-2.5.22ubuntu1/lib/Lintian/Tag/TextUtil.pm0000664000000000000000000001332512311317644016461 0ustar # Hey emacs! This is a -*- Perl -*- script! # Lintian::Tag::TextUtil -- Perl utility functions for lintian # Copyright (C) 1998 Christian Schwarz and Richard Braakman # # 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::Tag::TextUtil; use strict; use warnings; use Exporter qw(import); our @EXPORT_OK= qw(split_paragraphs wrap_paragraphs dtml_to_html dtml_to_text); # requires wrap() function use Text::Wrap; use Lintian::Util qw(fail strip); # html_wrap -- word-wrap a paragaph. The wrap() function from Text::Wrap # is not suitable, because it chops words that are longer than the line # length. sub html_wrap { my ($lead, @text) = @_; my @words = split(' ', join(' ', @text)); # subtract 1 to compensate for the lack of a space before the first word. my $ll = length($lead) - 1; my $cnt = 0; my $r = ''; while ($cnt <= $#words) { if ($ll + 1 + length($words[$cnt]) > 76) { if ($cnt == 0) { # We're at the start of a line, and word still does not # fit. Don't wrap it. $r .= $lead . shift(@words) . "\n"; } else { # start new line $r .= $lead . join(' ', splice(@words, 0, $cnt)) . "\n"; $ll = length($lead) - 1; $cnt = 0; } } else { $ll += 1 + length($words[$cnt]); $cnt++; } } if ($#words >= 0) { # finish last line $r .= $lead . join(' ', @words) . "\n"; } return $r; } # split_paragraphs -- splits a bunch of text lines into paragraphs. # This function returns a list of paragraphs. # Paragraphs are separated by empty lines. Each empty line is a # paragraph. Furthermore, indented lines are considered a paragraph. sub split_paragraphs { return '' unless (@_); my $t = join("\n",@_); my ($l,@o); while ($t) { $t =~ s/^\.\n/\n/o; # starts with space or empty line? if (($t =~ s/^([ \t][^\n]*)\n?//o) or ($t =~ s/^()\n//o)) { #FLUSH; if ($l) { strip($l); $l =~ s/\s++/ /go; push(@o,$l); undef $l; } # push(@o,$1); } # normal line? elsif ($t =~ s/^([^\n]*)\n?//o) { $l .= "$1 "; } # what else can happen? else { fail('internal error in wrap'); } } #FLUSH; if ($l) { strip($l); $l =~ s/\s++/ /go; push(@o,$l); undef $l; } # return @o; } sub dtml_to_html { my @o; my $pre=0; for $_ (@_) { s{\&maint\;} {Lintian maintainer}xsmo; s{\&debdev\;} {debian-devel}xsmo; # empty line? if (/^\s*$/o) { if ($pre) { push(@o,"\n"); } } # preformatted line? elsif (/^\s/o) { if (not $pre) { push(@o,'
    ');
                    $pre=1;
                }
                push(@o,$_);
            }
            # normal line
            else {
                if ($pre) {
                    my $last = pop @o;
                    $last =~ s,\n?$,
    \n,o; push @o, $last; $pre=0; } push(@o,"

    $_

    \n"); } } if ($pre) { my $last = pop @o; $last =~ s,\n?$,\n,o; push @o, $last; $pre=0; } return @o; } sub dtml_to_text { for $_ (@_) { # substitute Lintian &tags; s,&maint;,lintian-maint\@debian.org,go; s,&debdev;,debian-devel\@lists.debian.org,go; # substitute HTML s,,<,go; s,,>,go; s,<[^>]+>,,go; # substitute HTML &tags; s,<,<,go; s,>,>,go; s,&,\&,go; # preformatted? if (not /^\s/o) { # no. s,\s\s+, ,go; s,^ ,,o; s, $,,o; } } return @_; } # wrap_paragraphs -- wrap paragraphs in dpkg/dselect style. # indented lines are not wrapped but displayed "as is" sub wrap_paragraphs { my $lead = shift; my $html = 0; if ($lead eq 'HTML') { $html = 1; $lead = shift; } my $o; # Tell Text::Wrap that very long "words" (e.g. URLs) should rather # "overflow" the column width than be broken into multiple lines. # (#719769) local $Text::Wrap::huge = 'overflow'; for my $t (split_paragraphs(@_)) { # empty or indented line? if ($t eq '' or $t =~ /^\s/) { $o .= "$lead$t\n"; } else { if ($html) { $o .= html_wrap($lead, "$t\n"); } else { $o .= wrap($lead, $lead, "$t\n"); } } } return $o; } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Tag/Override.pm0000664000000000000000000001032212311317644016450 0ustar # -*- perl -*- # Lintian::Tag::Override -- Interface to Lintian overrides # Copyright (C) 2011 Niels Thykier # # 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, see . package Lintian::Tag::Override; use strict; use warnings; use parent qw(Class::Accessor::Fast); =head1 NAME Lintian::Tag::Override -- Representation of an Lintian Override =head1 SYNOPSIS use Lintian::Tag::Override; my $data = { 'comments' => ['some', 'multi-line', 'comments'] }; my $override = Lintian::Tag::Override->new('unused-override', $data); my $comments = $override->comments; if ($override->overrides("some extra") ) { # do something } =head1 DESCRIPTION Represents a Lintian Override. =head1 METHODS =over 4 =item Lintian::Tag::Override->new($tag, $data) Creates a new override for $tag. $data should be a hashref with the following fields. =over 4 =item arch Architectures this override applies too (not really used). =item comments A list of comments (each item is a separate line) =item extra The extra part of the override. If it contains a "*" is will considered a pattern. =back =cut sub new { my ($type, $tag, $data) = @_; $data = {} unless defined $data; my $self = { 'arch' => $data->{'arch'}, 'comments' => $data->{'comments'}, 'extra' => $data->{'extra'}//'', 'tag' => $tag, }; $self->{'arch'} = 'any' unless $self->{'arch'}; bless $self, $type; $self->_init(); return $self; } =item $override->tag Returns the name of the tag. =item $override->arch Returns the architecture this tag applies to. =item $override->comments Returns a list of lines that makes up the comments for this override. Do not modify the contents of this list. =item $override->extra Returns the extra of this tag (or the empty string, if there is no extra). =item $override->is_pattern Returns a truth value if the extra is a pattern. =cut Lintian::Tag::Override->mk_ro_accessors( qw(tag arch comments extra is_pattern)); =item $override->overrides($extra) Returns a truth value if this override applies to this extra. =cut sub overrides { my ($self, $textra) = @_; my $extra = $self->{'extra'}//''; # No extra => applies to all tags return 1 unless $extra; return 1 if $extra eq $textra; if ($self->{'is_pattern'}) { my $pat = $self->{'pattern'}; if ($textra =~ m/^$pat\z/){ return 1; } } return 0; } # Internal initialization method sub _init { my ($self) = @_; my $extra = $self->{'extra'}; if ($extra && $extra =~ m/\*/o) { # It is a pattern, pre-compute it my $pattern = $extra; my $end = ''; # Trailing "match anything" (if any) my $pat = ''; # The rest of the pattern # Split does not help us if $pattern ends with * # so we deal with that now if ($pattern =~ s/\Q*\E+\z//o){ $end = '.*'; } # Are there any * left (after the above)? if ($pattern =~ m/\Q*\E/o) { # this works even if $text starts with a *, since # that is split as '', my @pargs = split(m/\Q*\E++/o, $pattern); $pat = join('.*', map { quotemeta($_) } @pargs); } else { $pat = $pattern; } $self->{'is_pattern'} = 1; $self->{'pattern'} = qr/$pat$end/; } else { $self->{'is_pattern'} = 0; } return; } =back =head1 AUTHOR Originally written by Niels Thykier for Lintian. =head1 SEE ALSO lintian(1) L =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Tag/Info.pm0000664000000000000000000003114712311317644015574 0ustar # -*- perl -*- # Lintian::Tag::Info -- interface to tag metadata # Copyright (C) 1998 Christian Schwarz and Richard Braakman # Copyright (C) 2009 Russ Allbery # # 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, see . package Lintian::Tag::Info; use strict; use warnings; use Carp qw(croak); use Lintian::Data; use Lintian::Tag::TextUtil qw(dtml_to_html dtml_to_text split_paragraphs wrap_paragraphs); use Lintian::Tags qw(); use Lintian::Util qw(fail); # The URL to a web man page service. NAME is replaced by the man page # name and SECTION with the section to form a valid URL. This is used # when formatting references to manual pages into HTML to provide a link # to the manual page. our $MANURL = 'http://manpages.debian.net/cgi-bin/man.cgi?query=NAME&sektion=SECTION'; # Stores the parsed manual reference data. Loaded the first time info() # is called. our $MANUALS = Lintian::Data->new('output/manual-references', qr/::/,\&_load_manual_data); # Map severity/certainty levels to tag codes. our %CODES = ( pedantic => { 'wild-guess' => 'P', possible => 'P', certain => 'P' }, wishlist => { 'wild-guess' => 'I', possible => 'I', certain => 'I' }, minor => { 'wild-guess' => 'I', possible => 'I', certain => 'W' }, normal => { 'wild-guess' => 'I', possible => 'W', certain => 'W' }, important => { 'wild-guess' => 'W', possible => 'E', certain => 'E' }, serious => { 'wild-guess' => 'E', possible => 'E', certain => 'E' }, ); =head1 NAME Lintian::Tag::Info - Lintian interface to tag metadata =head1 SYNOPSIS my $cs = Lintian::CheckScript->new ("$ENV{'LINTIAN_ROOT'}/checks/", 'files'); my $tag_info = $cs->get_tag ('some-tag'); print "Tag info is:\n"; print $tag_info->description('text', ' '); print "\nTag info in HTML is:\n"; print $tag_info->description('html', ' '); =head1 DESCRIPTION This module provides an interface to tag metadata as gleaned from the *.desc files describing the checks. It can be used to retrieve specific metadata elements or to format the tag description. =head1 CLASS METHODS =over 4 =item new(HASH, SCRIPT_NAME, SCRIPT_TYPE) Creates a new Lintian::Tag:Info. =cut sub new { my ($class, $tag, $sn, $st) = @_; my %copy; my $self; my $tagname; croak 'no tag specified' unless $tag; %copy = %$tag; $self = \%copy; croak 'Missing Tag field' unless $self->{'tag'}; $tagname = $self->{'tag'}; croak "Missing Severity field for $tagname" unless $self->{'severity'}; croak "Missing Certainty field for $tagname" unless $self->{'certainty'}; croak "Tag $tagname has invalid severity ($self->{'severity'}):" . ' Must be one of ' . join(', ', @Lintian::Tags::SEVERITIES) unless exists $CODES{$self->{'severity'}}; croak "Tag $tagname has invalid certainty ($self->{'certainty'}):" . ' Must be one of ' . join(', ', @Lintian::Tags::CERTAINTIES) unless exists $CODES{$self->{'severity'}}{$self->{'certainty'}}; $self->{'info'} = '' unless $self->{'info'}; $self->{'script'} = $sn; $self->{'script-type'} = $st; $self->{'effective-severity'} = $self->{severity}; bless $self, $class; return $self; } =back =head1 INSTANCE METHODS =over 4 =item certainty() Returns the certainty of the tag. =cut sub certainty { my ($self) = @_; return $self->{certainty}; } =item code() Returns the one-letter code for the tag. This will be a letter chosen from C, C, C, or C

    , based on the tag severity, certainty, and other attributes (such as whether experimental is set). This code will never be C or C; overrides and experimental tags are handled separately. =cut sub code { my ($self) = @_; return $CODES{$self->{'effective-severity'}}{$self->{certainty}}; } =item description([FORMAT [, INDENT]]) Returns the formatted description (the Info field) for a tag. FORMAT must be either C or C and defaults to C if no format is specified. If C, returns wrapped paragraphs formatted in plain text with a right margin matching the Text::Wrap default, preserving as verbatim paragraphs that begin with whitespace. If C, return paragraphs formatted in HTML. If INDENT is specified, the string INDENT is prepended to each line of the formatted output. =cut # Parse manual reference data from the data file. sub _load_manual_data { my ($key, $rawvalue, $pval) = @_; my ($section, $title, $url) = split m/::/, $rawvalue, 3; my $ret = undef; if (not defined $pval) { $ret = $pval = {}; } $pval->{$section}{title} = $title; $pval->{$section}{url} = $url; return $ret; } # Format a reference to a manual in the HTML that Lintian uses internally # for tag descriptions and return the result. Takes the name of the # manual and the name of the section. Returns an empty string if the # argument isn't a known manual. sub _manual_reference { my ($manual, $section) = @_; return '' unless $MANUALS->known($manual); my $man = $MANUALS->value($manual); # Start with the reference to the overall manual. my $title = $man->{''}{title}; my $url = $man->{''}{url}; my $text = $url ? qq($title) : $title; # Add the section information, if present, and a direct link to that # section of the manual where possible. if ($section and $section =~ /^[A-Z]+$/) { $text .= " appendix $section"; } elsif ($section and $section =~ /^\d+$/) { $text .= " chapter $section"; } elsif ($section and $section =~ /^[A-Z\d.]+$/) { $text .= " section $section"; } if ($section and exists $man->{$section}) { my $sec_title = $man->{$section}{title}; my $sec_url = $man->{$section}{url}; $text.= $sec_url ? qq[ ($sec_title)] : qq[ ($sec_title)]; } return $text; } # Format the contents of the Ref attribute of a tag. Handles manual # references in the form

    , manpage references in the # form (
    ), and URLs. sub _format_reference { my ($field) = @_; my @refs; for my $ref (split(/,\s*/, $field)) { my $text; if ($ref =~ /^([\w-]+)\s+(.+)$/) { $text = _manual_reference($1, $2); } elsif ($ref =~ /^([\w_-]+)\((\d\w*)\)$/) { my ($name, $section) = ($1, $2); my $url = $MANURL; $url =~ s/NAME/$name/g; $url =~ s/SECTION/$section/g; $text = qq(the $ref manual page); } elsif ($ref =~ m,^(ftp|https?)://,) { $text = qq($ref); } elsif ($ref =~ m,^/,) { $text = qq($ref); } elsif ($ref =~ m,^#(\d+)$,) { my $url = qq(http://bugs.debian.org/$1); $text = qq($url); } push(@refs, $text) if $text; } # Now build an English list of the results with appropriate commas and # conjunctions. my $text = ''; if ($#refs >= 2) { $text = join(', ', splice(@refs, 0, $#refs)); $text = "Refer to $text, and @refs for details."; } elsif ($#refs >= 0) { $text = 'Refer to ' . join(' and ', @refs) . ' for details.'; } return $text; } # Returns the formatted tag description. sub description { my ($self, $format, $indent) = @_; $indent = '' unless defined($indent); $format = 'text' unless defined($format); if ($format ne 'text' and $format ne 'html') { croak("unknown output format $format"); } # Build the tag description. my $info = $self->{info}; $info =~ s/\n[ \t]/\n/g; my @text = split_paragraphs($info); my $severity = $self->severity; my $certainty = $self->certainty; if ($self->{ref}) { push(@text, '', _format_reference($self->{ref})); } push(@text, '', "Severity: $severity, Certainty: $certainty"); if ($self->{script} and $self->{'script-type'}){ my $script = $self->{script}; my $stype = $self->{'script-type'}; push(@text, '', "Check: $script, Type: $stype"); } if ($self->experimental) { push(@text, '', 'This tag is marked experimental, which means that the code that' . ' generates it is not as well-tested as the rest of Lintian' . ' and might still give surprising results. Feel free to' . ' ignore experimental tags that do not seem to make sense,' . ' though of course bug reports are always welcome.'); } # Format and return the output. if ($format eq 'text') { return wrap_paragraphs($indent, dtml_to_text(@text)); } elsif ($format eq 'html') { return wrap_paragraphs('HTML', $indent, dtml_to_html(@text)); } } =item experimental() Returns true if this tag is experimental, false otherwise. =cut sub experimental { my ($self) = @_; return ($self->{experimental} and $self->{experimental} eq 'yes'); } =item severity([$real]) Returns the severity of the tag; if $real is a truth value the real (original) severity is returned, otherwise the effective severity is returned. See set_severity() =cut sub severity { my ($self, $real) = @_; return $self->{'effective-severity'} unless $real; return $self->{severity}; } =item set_severity($severity) Modifies the effective severity of the tag. =cut sub set_severity{ my ($self, $sev) = @_; croak "Unknown severity $sev.\n" unless exists $CODES{$sev}; $self->{'effective-severity'} = $sev; return; } =item script() Returns the check script corresponding to this tag. =cut sub script { my ($self) = @_; return $self->{script}; } =item sources() Returns, as a list, the keywords for the sources of this tag from the references header. This is only the top-level source, not any more-specific section or chapter. =cut sub sources { my ($self) = @_; return unless $self->{ref}; my @refs = split(',', $self->{ref}); @refs = map { s/^([\w-]+)\s.*/$1/; s/\(\S+\)$//; $_ } @refs; return @refs; } =item tag() Returns the tag name. =cut sub tag { my ($self) = @_; return $self->{tag}; } =back =head1 DIAGNOSTICS The following exceptions may be thrown: =over 4 =item no tag specified The Lintian::Tag::Info::new constructor was called without passing a tag as an argument. =item unknown output format %s An unknown output format was passed as the FORMAT argument of description(). FORMAT must be either C or C. =back The following fatal internal errors may be reported: =over 4 =item can't open %s: %s The specified file, which should be part of the standard Lintian data files, could not be opened. The file may be missing or have the wrong permissions. =item missing Check-Script field in %s The specified check description file has no Check-Script field in its header section. This probably indicates the file doesn't exist or has some significant formatting error. =item missing Tag field in %s The specified check description file has a tag section that has no Tag field. =back =head1 FILES =over 4 =item LINTIAN_ROOT/checks/*.desc The tag description files, from which tag metadata is read. All files matching this shell glob expression will be read looking for tag data. =item LINTIAN_ROOT/data/output/manual-references Information about manual references. Each non-comment, non-empty line of this file contains four fields separated by C<::>. The first field is the name of the manual, the second field is the section or empty for data about the whole manual, the third field is the title, and the fourth field is the URL. The URL is optional. =back =head1 ENVIRONMENT =over 4 =item LINTIAN_ROOT This variable specifies Lintian's root directory. It defaults to F if not set. The B program normally takes care of setting it. =back =head1 AUTHOR Originally written by Russ Allbery for Lintian. =head1 SEE ALSO lintian(1) =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/SlidingWindow.pm0000664000000000000000000001111212313507507016736 0ustar # -*- perl -*- # Lintian::Data -- interface to match using a sliding window algorithm # Copyright (C) 2013 Bastien ROUCARIÈS # # 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, see . package Lintian::SlidingWindow; use strict; use warnings; use autodie; use Carp qw(croak); use Lintian::Util qw(strip); sub new { my ($class, $handle, $blocksub, $blocksize) = @_; $blocksize //= 4096; my $self = { '_handle' => $handle, '_queue' => [q{}, q{}], '_blocksize' => $blocksize, '_blocksub' => $blocksub, '_blocknumber' => -1, }; return bless($self, $class); } sub readwindow { my ($self) = @_; my ($window, $queue); my $first = $self->{'_blocknumber'} < 0; { # This path is too hot for autodie at its current performance # (at the time of writing, that would be autodie/2.23). # - Benchmark chromium-browser/32.0.1700.123-2/source no autodie qw(read); my $blocksize = $self->{'_blocksize'}; # Read twice the amount in the first window and split that # into "two parts". That way we avoid half a block followed # by a full block with the first half being identical to the # previous one. $blocksize *= 2 if $first; my $res = read($self->{'_handle'}, $window, $blocksize); if (not $res) { die "read failed: $!\n" if not defined($res); return; } } if(defined($self->{'_blocksub'})) { local $_ = $window; $self->{'_blocksub'}->(); $window = $_; } $self->{'_blocknumber'}++; $queue = $self->{'_queue'}; if ($first && $self->{'_blocksize'} < length($window)) { # Split the first block into two windows. We assume here that # if the two halves are not of equal length, then it is # because the file is shorter than 2*blocksize. In this case, # make the second half the shorter (it shouldn't matter and it # is easier to do this way). my $blocksize = $self->{'_blocksize'}; $queue->[0] = substr($window, 0, $blocksize); $queue->[1] = substr($window, $blocksize); return $window; } shift(@{$queue}); push(@{$queue}, $window); return join('', @{$queue}); } sub blocknumber { my ($self) = @_; if($self->{'_blocknumber'} == -1) { return; } return $self->{'_blocknumber'}; } =head1 NAME Lintian::SlidingWindow - Lintian interface to sliding window match =head1 SYNOPSIS use Lintian::SlidingWindow; my $sfd = Lintian::SlidingWindow->new('<','someevilfile.c', sub { $_ = lc($_); }); my $window; while ($window = $sfd->readwindow()) { if (index($window, 'evil') > -1) { if($window =~ m/software \s++ shall \s++ be \s++ used \s++ for \s++ good \s*+ ,?+ \s*+ not \s++ evil/xsim) { # do something like : tag 'license-problem-json-evil'; } } } =head1 DESCRIPTION Lintian::SlidingWindow provides a way of matching some pattern, including multi line pattern, without needing to fully load the file in memory. =head1 CLASS METHODS =over 4 =item new(HANDLE[, BLOCKSUB[, BLOCKSIZE]]) Create a new sliding window by reading from a given HANDLE, which must be open for reading. Optionally run BLOCKSUB against each block. Note that BLOCKSUB should apply transform byte by byte and does not depend of context. Each window consists of up to two blocks of BLOCKSIZE characters. =back =head1 INSTANCE METHODS =over 4 =item readwindow Return a new block of sliding window. Return undef at end of file. =item blocknumber return the number of block read by the instance. Return undef if no block has been read. =back =head1 DIAGNOSTICS =over 4 =item no data type specified =back =head1 AUTHOR Originally written by Bastien ROUCARIES for Lintian. =head1 SEE ALSO lintian(1) =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/ProcessableGroup.pm0000664000000000000000000002245012311317632017437 0ustar # Copyright (C) 2011 Niels Thykier # # 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. ## Represents a group of 'Lintian::Processable's package Lintian::ProcessableGroup; use strict; use warnings; use Lintian::Collect::Group; use Lintian::Processable; use Lintian::Util qw(fail get_dsc_info strip); =head1 NAME Lintian::ProcessableGroup -- A group of objects that Lintian can process =head1 SYNOPSIS use Lintian::ProcessableGroup; my $group = Lintian::ProcessableGroup->new('lintian_2.5.0_i386.changes'); foreach my $proc ($group->get_processables()){ printf "%s %s (%s)\n", $proc->pkg_name(), $proc->pkg_version(), $proc->pkg_type(); } # etc. =head1 DESCRIPTION Instances of this perl class are sets of L. It allows at most one source and one changes package per set, but multiple binary packages (provided that the binary is not already in the set). =head1 METHODS =over 4 =item Lintian::ProcessableGroup->new ([LAB[, CHANGES]]) Creates a group and optionally add all processables from CHANGES. If the LAB parameter is given, all processables added to this group will be stored as a L from LAB. =cut sub new { my ($class, $lab, $changes) = @_; my $self = {'lab' => $lab,}; bless $self, $class; $self->_init_group_from_changes($changes) if defined $changes; return $self; } # Map a processable to L::Lab::Entry if needed. sub _lab_proc { my ($self, $proc) = @_; return $proc unless $self->{'lab'}; return $proc if $proc->isa('Lintian::Lab::Entry') and not $proc->from_lab($self->{'lab'}); return $self->{'lab'}->get_package($proc); } # Internal initialization sub # populates $self from a changes file. sub _init_group_from_changes { my ($self, $changes) = @_; my ($cinfo, $cdir); fail "$changes does not exist" unless -e $changes; $cinfo = get_dsc_info($changes) or fail "$changes is not a valid changes file"; $self->add_new_processable($changes, 'changes'); $cdir = $changes; if ($changes =~ m,^/+[^/]++$,o){ # it is "/files.changes?" # - In case you were wondering, we were told not to ask :) # See #624149 $cdir = '/'; } else { # it is "/files.changes" $cdir =~ s,(.+)/[^/]+$,$1,; } for my $line (split(/\n/o, $cinfo->{'files'}//'')) { my ($file); next unless defined $line; strip($line); next if $line eq ''; # Ignore files that may lead to path traversal issues. # We do not need (in order) md5sum, size, section or priority # - just the file name please. (undef, undef, undef, undef, $file) = split(/\s+/o, $line); # If the field is malformed, $file may be undefined; we also # skip it, if it contains a "/" since that is most likely a # traversal attempt next if !$file || $file =~ m,/,o; if (not -f "$cdir/$file") { print STDERR "$cdir/$file does not exist, exiting\n"; exit 2; } if ($file !~ /\.u?deb$/o and $file !~ m/\.dsc$/o) { # Some file we do not care about (at least not here). next; } $self->add_new_processable("$cdir/$file"); } return 1; } =item $group->add_new_processable ($pkg_path[, $pkg_type]) Adds a new processable of type $pkg_type from $pkg_path. If $pkg_type is not given, it will be determined by the file extension. This is short hand for: $group->add_processable( Lintian::Processable->new ($pkg_path, $pkg_type)); =cut sub add_new_processable { my ($self, $pkg_path, $pkg_type) = @_; return $self->add_processable( Lintian::Processable::Package->new($pkg_path, $pkg_type)); } =item $group->add_processable($proc) Adds $proc to $group. At most one source and one changes $proc can be in a $group. There can be multiple binary $proc's, as long as they are all unique. This will error out if an additional source or changes $proc is added to the group. Otherwise it will return a truth value if $proc was added. =cut sub add_processable{ my ($self, $processable) = @_; my $pkg_type = $processable->pkg_type(); if ($pkg_type eq 'changes'){ fail 'Cannot add another changes file' if (exists $self->{changes}); $self->{changes} = $self->_lab_proc($processable); } elsif ($pkg_type eq 'source'){ fail 'Cannot add another source package' if (exists $self->{source}); $self->{source} = $self->_lab_proc($processable); } else { my $phash; my $id = $processable->identifier; fail "Unknown type $pkg_type" unless ($pkg_type eq 'binary' or $pkg_type eq 'udeb'); $phash = $self->{$pkg_type}; if (!defined $phash){ $phash = {}; $self->{$pkg_type} = $phash; } # duplicate ? return 0 if (exists $phash->{$id}); $phash->{$id} = $self->_lab_proc($processable); } $processable->group($self); return 1; } =item $group->get_processables([$type]) Returns an array of all processables in $group. The processables are returned in the following order: changes (if any), source (if any), all binaries (if any) and all udebs (if any). This order is based on the original order that Lintian processed packages in and some parts of the code relies on this order. Note if $type is given, then only processables of that type is returned. =cut sub get_processables { my ($self, $type) = @_; my @result = (); if (defined $type){ # We only want $type if ($type eq 'changes' or $type eq 'source'){ return $self->{$type} if defined $self->{$type}; } return values %{$self->{$type}} if $type eq 'binary' or $type eq 'udeb'; fail "Unknown type of processable: $type"; } # We return changes, dsc, debs and udebs in that order, # because that is the order lintian used to process a changes # file (modulo debs<->udebs ordering). # # Also correctness of other parts rely on this order. foreach my $type (qw(changes source)){ push @result, $self->{$type} if (exists $self->{$type}); } foreach my $type (qw(binary udeb)){ push @result, values %{$self->{$type}} if (exists $self->{$type}); } return @result; } =item $group->remove_processable($proc) Removes $proc from $group =cut sub remove_processable { my ($self, $proc) = @_; my $pkg_type = $proc->pkg_type(); if ($pkg_type eq 'source' or $pkg_type eq 'changes'){ delete $self->{$pkg_type}; } elsif (defined $self->{$pkg_type}) { my $phash = $self->{$pkg_type}; my $id = $proc->identifier; delete $phash->{$id}; } return 1; } =item $group->get_source_processable() Returns the processable identified as the "source" package (e.g. the dsc). If $group does not have a source processable, this method returns C. =cut sub get_source_processable { my ($self) = @_; return $self->{source}; } =item $group->get_changes_processable() Returns the processable identified as the "changes" processable (e.g. the changes file). If $group does not have a changes processable, this method returns C. =cut sub get_changes_processable { my ($self) = @_; return $self->{changes}; } =item $group->get_binary_processables() Returns all binary (and udeb) processables in $group. If $group does not have any binary processables then an empty list is returned. =cut sub get_binary_processables { my ($self) = @_; my @result = (); foreach my $type (qw(binary udeb)){ push @result, values %{$self->{$type}} if (exists $self->{$type}); } return @result; } =item $group->info Returns L<$info|Lintian::Collect::Group> element for this group. =cut sub info { my ($self) = @_; my $info = $self->{info}; if (!defined $info) { $info = Lintian::Collect::Group->new($self); $self->{info} = $info; } return $info; } =item $group->clear_cache Discard the info element of all members of this group, so the memory used by it can be reclaimed. Mostly useful when checking a lot of packages (e.g. on lintian.d.o). =cut sub clear_cache { my ($self) = @_; for my $proc ($self->get_processables) { $proc->clear_cache; } delete $self->{info}; return; } =back =head1 AUTHOR Originally written by Niels Thykier for Lintian. =head1 SEE ALSO lintian(1) L =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Reporting/0000775000000000000000000000000012311320323015557 5ustar lintian-2.5.22ubuntu1/lib/Lintian/Reporting/ResourceManager.pm0000664000000000000000000000741612311317643021222 0ustar # Copyright (C) 2014 Niels Thykier # # 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. # A simple resource manager for html_reports package Lintian::Reporting::ResourceManager; use strict; use warnings; use autodie; use Carp qw(croak); use File::Basename qw(basename fileparse); use File::Copy qw(copy); use Lintian::Util qw(get_file_checksum); =head1 NAME Lintian::Reporting::ResourceManager -- A simple resource manager for html_reports =head1 SYNOPSIS use Lintian::Reporting::ResourceManager; my $resMan = Lintian::Reporting::ResourceManager->new( 'html_dir' => 'path/to/HTML-root', ); $resMan->install_resource('path/to/my-image.png'); $resMan->install_resource('path/to/my-styles.css'); print 'Image: ' . $resMan->resource_URL('my-image.png'), "\n"; print 'CSS: ' . $resMan->resource_URL('my-styles.css'), "\n"; =head1 DESCRIPTION A simple resource manager for Lintian's reporting tool, B. =head1 CLASS METHODS =over 4 =item new(TYPE, OPTS) Instantiates a new resource manager. OPTS is a key-value list, which must contain the key "html_dir" set to the root of the HTML path. It is beneath this path that all resources will be installed =cut sub new { my ($class, %opts) = @_; my $self = {%opts,}; croak('Missing required parameter html_dir (or it is undef)') if not defined $opts{'html_dir'}; $self->{'_resource_cache'} = {}; return bless($self, $class); } =back =head1 INSTANCE METHODS =over 4 =item install_resource(RESOURCE) Installs RESOURCE into the html root. The resource may be renamed (based on content etc.). Note that the basename of RESOURCE must be unique between all resources installed. See L. =cut sub install_resource { my ($self, $resource) = @_; my $install_name = get_file_checksum('sha1', $resource); my $basename = basename($resource); my $resource_root = $self->{'html_dir'} . '/resources'; croak("Resource name ${basename} already in use") if defined($self->{'_resource_cache'}{$basename}); if ($basename =~ m/^[^\.]+(\..+)$/xsm) { my $ext = $1; $install_name .= $ext; } mkdir($resource_root, 0755) if not -d $resource_root; copy($resource, "$resource_root/$install_name") or croak("Cannot copy $resource to $resource_root/$install_name: $!"); $self->{'_resource_cache'}{$basename} = "resources/$install_name"; return; } =item resource_URL(RESOURCE_NAME) Returns the path (relative to the HTML root) to a resource installed via L, where RESOURCE_NAME is the basename of the path given to install_resource. =cut sub resource_URL { my ($self, $resource_name) = @_; croak("Unknown resource $resource_name") if not defined($self->{'_resource_cache'}{$resource_name}); return $self->{'_resource_cache'}{$resource_name}; } =back =head1 AUTHOR Originally written by Niels Thykier for Lintian. =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Util.pm0000664000000000000000000012066012311317636015103 0ustar # Hey emacs! This is a -*- Perl -*- script! # Lintian::Util -- Perl utility functions for lintian # Copyright (C) 1998 Christian Schwarz # # 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::Util; use strict; use warnings; use autodie; use Carp qw(croak); use Cwd qw(abs_path); use Errno qw(ENOENT); use Exporter qw(import); use constant { DCTRL_DEBCONF_TEMPLATE => 1, DCTRL_NO_COMMENTS => 2, }; # Force export as soon as possible, since some of the modules we load also # depend on us and the sequencing can cause things not to be exported # otherwise. our (@EXPORT_OK, %EXPORT_TAGS); BEGIN { %EXPORT_TAGS = (constants => [qw(DCTRL_DEBCONF_TEMPLATE DCTRL_NO_COMMENTS)]); eval { require PerlIO::gzip }; if ($@) { *open_gz = \&__open_gz_ext; } else { *open_gz = \&__open_gz_pio; } @EXPORT_OK = (qw( visit_dpkg_paragraph parse_dpkg_control read_dpkg_control get_deb_info get_dsc_info get_file_checksum slurp_entire_file file_is_encoded_in_non_utf8 is_string_utf8_encoded fail strip lstrip rstrip system_env delete_dir copy_dir gunzip_file open_gz touch_file perm2oct check_path clean_env normalize_pkg_path parse_boolean is_ancestor_of locate_helper_tool drain_pipe signal_number2name dequote_name load_state_cache find_backlog $PKGNAME_REGEX), @{ $EXPORT_TAGS{constants} }); } use Digest::MD5; use Digest::SHA; use Encode (); use FileHandle; use Scalar::Util qw(openhandle); use Lintian::Command qw(spawn); use Lintian::Relation::Version qw(versions_equal versions_comparator); =head1 NAME Lintian::Util - Lintian utility functions =head1 SYNOPSIS use Lintian::Util qw(slurp_entire_file normalize_pkg_path); my $text = slurp_entire_file('some-file'); if ($text =~ m/regex/) { # ... } my $path = normalize_pkg_path('usr/bin/', '../lib/git-core/git-pull'); if (defined $path) { # ... } my (@paragraphs); eval { @paragraphs = read_dpkg_control('some/debian/ctrl/file'); }; if ($@) { # syntax error etc. die "ctrl/file: $@"; } foreach my $para (@paragraphs) { my $value = $para->{'some-field'}; if (defined $value) { # ... } } =head1 DESCRIPTION This module contains a number of utility subs that are nice to have, but on their own did not warrant their own module. Most subs are imported only on request. =head2 Debian control parsers At first glance, this module appears to contain several debian control parsers. In practise, there is only one real parser (L) - the rest are convenience functions around it. If you have very large files (e.g. Packages_amd64), you almost certainly want L. Otherwise, one of the convenience functions are probably what you are looking for. =over 4 =item Use L when You have a I<.deb> (or I<.udeb>) file and you want the control file from it. =item Use L when You have a I<.dsc> (or I<.changes>) file. Alternative, it is also useful if you have a control file and only care about the first paragraph. =item Use L when You have a debian control file (such I) and you want a number of paragraphs from it. =item Use L when When you would have used L, except you have an open filehandle rather than a file name. =back =head1 CONSTANTS The following constants can be passed to the Debian control file parser functions to alter their parsing flag. =over 4 =item DCTRL_DEBCONF_TEMPLATE The file should be parsed as debconf template. These have slightly syntax rules for whitespace in some cases. =item DCTRL_NO_COMMENTS The file do not allow comments. With this flag, any comment in the file is considered a syntax error. =back =head1 VARIABLES =over 4 =item $PKGNAME_REGEX Regular expression that matches valid package names. The expression is not anchored and does not enforce any "boundary" characters. =cut our $PKGNAME_REGEX = qr/[a-z0-9][-+\.a-z0-9]+/o; =back =head1 FUNCTIONS =over 4 =item parse_dpkg_control(HANDLE[, FLAGS[, LINES]]) Reads a debian control file from HANDLE and returns a list of paragraphs in it. A paragraph is represented via a hashref, which maps (lower cased) field names to their values. FLAGS (if given) is a bitmask of the I constants. Please refer to L for the list of constants and their meaning. The default value for FLAGS is 0. If LINES is given, it should be a reference to an empty list. On return, LINES will be populated with a hashref for each paragraph (in the same order as the returned list). Each hashref will also have a special key "I" that gives the line number of the first field in that paragraph. These hashrefs will map the field name of the given paragraph to the line number where the field name appeared. This is a convenience sub around L and can therefore produce the same errors as it. Please see L for the finer semantics of how the control file is parsed. NB: parse_dpkg_control does I close the handle for the caller. =cut sub parse_dpkg_control { my ($handle, $flags, $lines) = @_; my @result; my $c = sub { my ($para, $line) = @_; push @result, $para; push @$lines, $line if defined $lines; }; visit_dpkg_paragraph($c, $handle, $flags); return @result; } =item visit_dpkg_paragraph (CODE, HANDLE[, FLAGS]) Reads a debian control file from HANDLE and passes each paragraph to CODE. A paragraph is represented via a hashref, which maps (lower cased) field names to their values. FLAGS (if given) is a bitmask of the I constants. Please refer to L for the list of constants and their meaning. The default value for FLAGS is 0. If the file is empty (i.e. it contains no paragraphs), the method will contain an I list. The deb822 contents may be inside a I PGP message with a signature. visit_dpkg_paragraph will require the PGP headers to be correct (if present) and require that the entire file is covered by the signature. However, it will I validate the signature (in fact, the contents of the PGP SIGNATURE part can be empty). The signature should be validated separately. visit_dpkg_paragraph will pass paragraphs to CODE as they are completed. If CODE can process the paragraphs as they are seen, very large control files can be processed without keeping all the paragraphs in memory. As a consequence of how the file is parsed, CODE may be passed a number of (valid) paragraphs before parsing is stopped due to a syntax error. NB: visit_dpkg_paragraph does I close the handle for the caller. CODE is expected to be a callable reference (e.g. a sub) and will be invoked as the following: =over 4 =item CODE->(PARA, LINE_NUMBERS) The first argument, PARA, is a hashref to the most recent paragraph parsed. The second argument, LINE_NUMBERS, is a hashref mapping each of the field names to the line number where the field name appeared. LINE_NUMBERS will also have a special key "I" that gives the line number of the first field in that paragraph. The return value of CODE is ignored. If the CODE invokes die (or similar) the error is propagated to the caller. =back I, visit_dpkg_paragraph will call die with the following string: "syntax error at line %d: %s\n" Where %d is the line number of the issue and %s is one of: =over =item Duplicate field %s The field appeared twice in the paragraph. =item Continuation line outside a paragraph (maybe line %d should be " .") A continuation line appears outside a paragraph - usually caused by an unintended empty line before it. =item Whitespace line not allowed (possibly missing a ".") An empty continuation line was found. This usually means that a period is missing to denote an "empty line" in (e.g.) the long description of a package. =item Cannot parse line "%s" Generic error containing the text of the line that confused the parser. Note that all non-printables in %s will be replaced by underscores. =item Comments are not allowed A comment line appeared and FLAGS contained DCTRL_NO_COMMENTS. =item PGP signature seen before start of signed message A "BEGIN PGP SIGNATURE" header is seen and a "BEGIN PGP MESSAGE" has not been seen yet. =item Two PGP signatures (first one at line %d) Two "BEGIN PGP SIGNATURE" headers are seen in the same file. =item Unexpected %s header A valid PGP header appears (e.g. "BEGIN PUBLIC KEY BLOCK"). =item Malformed PGP header An invalid or malformed PGP header appears. =item Expected at most one signed message (previous at line %d) Two "BEGIN PGP MESSAGE" headers appears in the same message. =item End of file but expected a "END PGP SIGNATURE" header The file ended after a "BEGIN PGP SIGNATURE" header without being followed by a "END PGP SIGNATURE". =item PGP MESSAGE header must be first content if present The file had content before PGP MESSAGE. =item Data after the PGP SIGNATURE The file had data after the PGP SIGNATURE block ended. =item End of file before "BEGIN PGP SIGNATURE" The file had a "BEGIN PGP MESSAGE" header, but no signature was present. =back =cut sub visit_dpkg_paragraph { my ($code, $CONTROL, $flags) = @_; $flags//=0; my $lines = {}; my $section = {}; my $open_section = 0; my $last_tag; my $debconf = $flags & DCTRL_DEBCONF_TEMPLATE; my $signed = 0; my $signature = 0; local $_; while (<$CONTROL>) { chomp; if (substr($_, 0, 1) eq '#') { next unless $flags & DCTRL_NO_COMMENTS; die "syntax error at line $.: Comments are not allowed.\n"; } # empty line? if ($_ eq '' || (!$debconf && m/^\s*$/)) { if ($open_section) { # end of current section # pass the current section to the handler $code->($section, $lines); $section = {}; $lines = {}; $open_section = 0; } } # pgp sig? Be strict here (due to #696230) # According to http://tools.ietf.org/html/rfc4880#section-6.2 # The header MUST start at the beginning of the line and MUST NOT have # any other text (except whitespace) after the header. elsif (m/^-----BEGIN PGP SIGNATURE-----\s*$/) { # skip until end of signature my $saw_end = 0; if (not $signed or $signature) { die join(q{ }, "syntax error at line $.:", "PGP signature seen before start of signed message\n") if not $signed; die join(q{ }, "syntax error at line $.:", "Two PGP signatures (first one at line $signature)\n"); } $signature = $.; while (<$CONTROL>) { if (m/^-----END PGP SIGNATURE-----\s*$/o) { $saw_end = 1; last; } } # The "at line X" may seem a little weird, but it keeps the # message format identical. die join(q{ }, "syntax error at line $.:", qq{End of file but expected a "END PGP SIGNATURE" header\n}) unless $saw_end; } # other pgp control? elsif (m/^-----(?:BEGIN|END) PGP/) { # At this point it could be a malformed PGP header or one # of the following valid headers (RFC4880): # * BEGIN PGP MESSAGE # - Possibly a signed Debian CTRL, so okay (for now) # * BEGIN PGP {PUBLIC,PRIVATE} KEY BLOCK # - Valid header, but not a Debian CTRL file. # * BEGIN PGP MESSAGE, PART X{,/Y} # - Valid, but we don't support partial messages, so # bail on those. unless (m/^-----BEGIN PGP SIGNED MESSAGE-----\s*$/) { # Not a (full) PGP MESSAGE; reject. my $key = qr/(?:BEGIN|END) PGP (?:PUBLIC|PRIVATE) KEY BLOCK/; my $msgpart = qr{BEGIN PGP MESSAGE, PART \d+(?:/\d+)?}; my $msg = qr/(?:BEGIN|END) PGP (?:(?:COMPRESSED|ENCRYPTED) )?MESSAGE/; if (m/^-----($key|$msgpart|$msg)-----\s*$/o) { die "syntax error at line $.: Unexpected $1 header\n"; } else { die "syntax error at line $.: Malformed PGP header\n"; } } else { if ($signed) { die join(q{ }, "syntax error at line $.:", 'Expected at most one signed message', "(previous at line $signed)\n"); } if ($last_tag) { # NB: If you remove this, keep in mind that it may # allow two paragraphs to merge. Consider: # # Field-P1: some-value # -----BEGIN PGP SIGANTURE---- # # Field-P2: another value # # At the time of writing: If $open_section is # true, it will remain so until the empty line # after the PGP header. die join(q{ }, "syntax error at line $.:", 'PGP MESSAGE header must be first', "content if present\n"); } $signed = $.; } # skip until the next blank line while (<$CONTROL>) { last if /^\s*$/o; } } # did we see a signature already? We allow all whitespace/comment lines # outside the signature. elsif ($signature) { # Accept empty lines after the signature. next if m/^\s*$/; # NB: If you remove this, keep in mind that it may allow # two paragraphs to merge. Consider: # # Field-P1: some-value # -----BEGIN PGP SIGANTURE---- # [...] # -----END PGP SIGANTURE---- # Field-P2: another value # # At the time of writing: If $open_section is true, it # will remain so until the empty line after the PGP # header. die "syntax error at line $.: Data after the PGP SIGNATURE\n"; } # new empty field? elsif (m/^([^: \t]+):\s*$/o) { $lines->{'START-OF-PARAGRAPH'} = $. if not $open_section; $open_section = 1; my ($tag) = (lc $1); $section->{$tag} = ''; $lines->{$tag} = $.; $last_tag = $tag; } # new field? elsif (m/^([^: \t]+):\s*(.*)$/o) { $lines->{'START-OF-PARAGRAPH'} = $. if not $open_section; $open_section = 1; # Policy: Horizontal whitespace (spaces and tabs) may occur # immediately before or after the value and is ignored there. my ($tag,$value) = (lc $1,$2); rstrip($value); if (exists $section->{$tag}) { # Policy: A paragraph must not contain more than one instance # of a particular field name. die "syntax error at line $.: Duplicate field $tag.\n"; } $section->{$tag} = $value; $lines->{$tag} = $.; $last_tag = $tag; } # continued field? elsif (m/^([ \t].*\S.*)$/o) { $open_section or die join(q{ }, "syntax error at line $.:", 'Continuation line outside a paragraph (maybe line', ($. - 1), qq{should be " .").\n}); # Policy: Many fields' values may span several lines; in this case # each continuation line must start with a space or a tab. Any # trailing spaces or tabs at the end of individual lines of a # field value are ignored. my $value = rstrip($1); $section->{$last_tag} .= "\n" . $value; } # None of the above => syntax error else { my $message = "syntax error at line $."; if (m/^\s+$/) { $message .= ": Whitespace line not allowed (possibly missing a \".\").\n"; } else { # Replace non-printables and non-space characters with # "_" - just in case. s/[^[:graph:][:space:]]/_/go; $message .= ": Cannot parse line \"$_\"\n"; } die $message; } } # pass the last section (if not already done). $code->($section, $lines) if $open_section; # Given the API, we cannot use this check to prevent any # paragraphs from being emitted to the code argument, so we might # as well just do this last. if ($signed and not $signature) { # The "at line X" may seem a little weird, but it keeps the # message format identical. die join(q{ }, "syntax error at line $.:", qq{End of file before "BEGIN PGP SIGNATURE"\n"}); } } =item read_dpkg_control(FILE[, FLAGS[, LINES]]) This is a convenience function to ease using L with paths to files (rather than open handles). The first argument must be the path to a FILE, which should be read as a debian control file. If the file is empty, an empty list is returned. Otherwise, this behaves like: use autodie; open(my $fd, '<', FILE); my @p = parse_dpkg_control($fd, FLAGS, LINES); close($fd); return @p; This goes without saying that may fail with any of the messages that L do. It can also emit autodie exceptions if open or close fails. =cut sub read_dpkg_control { my ($file, $flags, $lines) = @_; open(my $CONTROL, '<', $file); my @data = parse_dpkg_control($CONTROL, $flags, $lines); close($CONTROL); return @data; } =item get_deb_control(DEBFILE) Extracts the control file from DEBFILE and returns it as a hashref. Basically, this is a fancy convenience for setting up an ar + tar pipe and passing said pipe to L. DEBFILE must be an ar file containing a "control.tar.gz" member, which in turn should contain a "control" file. If the "control" file is empty this will return an empty list. Note: the control file is only expected to have a single paragraph and thus only the first is returned (in the unlikely case that there are more than one). This function may fail with any of the messages that L do. It can also emit: "cannot fork to unpack %s: %s\n" =cut sub get_deb_info { my ($file) = @_; # dpkg-deb -f $file is very slow. Instead, we use ar and tar. my $opts = { pipe_out => FileHandle->new }; spawn($opts, ['ar', 'p', $file, 'control.tar.gz'], '|', ['tar', '--wildcards', '-xzO', '-f', '-', '*control']) or die "cannot fork to unpack $file: $opts->{exception}\n"; my @data = parse_dpkg_control($opts->{pipe_out}); # Consume all data before exiting so that we don't kill child processes # with SIGPIPE. This will normally only be an issue with malformed # control files. drain_pipe($opts->{pipe_out}); close($opts->{pipe_out}); $opts->{harness}->finish(); return $data[0]; } =item get_dsc_control (DSCFILE) Convenience function for reading dsc files. It will read the DSCFILE using L and then return the first paragraph. If the file has no paragraphs, C is returned instead. Note: the control file is only expected to have a single paragraph and thus only the first is returned (in the unlikely case that there are more than one). This function may fail with any of the messages that L do. =cut sub get_dsc_info { my ($file) = @_; my @data = read_dpkg_control($file); return (defined($data[0])? $data[0] : undef); } =item slurp_entire_file (FOH[, NOCLOSE]) Reads the contents of FOH into memory and return it as a scalar. FOH can be either the path to a file or an open file handle. If it is a handle, the optional NOCLOSE parameter can be used to prevent the sub from closing the handle. The NOCLOSE parameter has no effect if FOH is not a handle. =cut sub slurp_entire_file { my ($file, $noclose) = @_; my $fd; if (openhandle($file)) { $fd = $file; } else { open($fd, '<', $file); } local $/; local $_ = <$fd>; close($fd) unless $noclose && openhandle($file); return $_; } =item drain_pipe(FD) Reads and discards any remaining contents from FD, which is assumed to be a pipe. This is mostly done to avoid having the "write"-end die with a SIGPIPE due to a "broken pipe" (which can happen if you just close the pipe). May cause an exception if there are issues reading from the pipe. Caveat: This will block until the pipe is closed from the "write"-end, so only use it with pipes where the "write"-end will eventually close their end by themselves (or something else will make them close it). =cut sub drain_pipe { my ($fd) = @_; my $buffer; 1 while (read($fd, $buffer, 4096) > 0); return 1; } =item get_file_checksum (ALGO, FILE) Returns a hexadecimal string of the message digest checksum generated by the algorithm ALGO on FILE. ALGO can be 'md5' or shaX, where X is any number supported by L (e.g. 'sha256'). This sub is a convenience wrapper around Digest::{MD5,SHA}. =cut sub get_file_checksum { my ($alg, $file) = @_; open(my $fd, '<', $file); my $digest; if ($alg eq 'md5') { $digest = Digest::MD5->new; } elsif ($alg =~ /sha(\d+)/) { $digest = Digest::SHA->new($1); } $digest->addfile($fd); close($fd); return $digest->hexdigest; } =item is_string_utf8_encoded(STRING) Returns a truth value if STRING can be decoded as valid UTF-8. =cut sub is_string_utf8_encoded { my ($str) = @_; if ($str =~ m,\e[-!"\$%()*+./],) { # ISO-2022 return 0; } eval {Encode::decode('UTF-8', $str, Encode::FB_CROAK);}; if ($@) { # fail return 0; } # pass return 1; } =item file_is_encoded_in_non_utf8 (...) Undocumented =cut sub file_is_encoded_in_non_utf8 { my ($file) = @_; open(my $fd, '<', $file); my $line = 0; while (<$fd>) { if (!is_string_utf8_encoded($_)) { $line = $.; last; } } close($fd); return $line; } =item system_env (CMD) Behaves like system (CMD) except that the environment of CMD is cleaned (as defined by L(1)). =cut sub system_env { my $pid = fork; if (not defined $pid) { return -1; } elsif ($pid == 0) { clean_env(1); exec @_ or die("exec of $_[0] failed: $!\n"); } else { waitpid $pid, 0; return $?; } } =item clean_env ([CLOC]) Destructively cleans %ENV - removes all variables %ENV except a selected few whitelisted variables. The list of whitelisted %ENV variables are: PATH INTLTOOL_EXTRACT LOCPATH LC_ALL (*) (*) LC_ALL is a special case as clean_env will change its value to either "C.UTF-8" or "C" (if CLOC is given and a truth value). =cut sub clean_env { my ($cloc) = @_; my @whitelist = qw(PATH INTLTOOL_EXTRACT LOCPATH); my %newenv = map { exists $ENV{$_} ? ($_ => $ENV{$_}) : () } (@whitelist, @_); %ENV = %newenv; $ENV{'LC_ALL'} = 'C.UTF-8'; if ($cloc) { $ENV{LC_ALL} = 'C'; } return; } =item perm2oct(PERM) Translates PERM to an octal permission. PERM should be a string describing the permissions as done by I or I. That is, it should be a string like "-rw-r--r--". If the string does not appear to be a valid permission, it will cause a trappable error. Examples: # Good perm2oct('-rw-r--r--') == 0644 perm2oct('-rwxr-xr-x') == 0755 # Bad perm2oct('broken') # too short to be recognised perm2oct('-resurunet') # contains unknown permissions =cut sub perm2oct { my ($t) = @_; my $o = 0; # Types: # file (-), block/character device (b & c), directory (d), # hardlink (h), symlink (l), named pipe (p). if ( $t !~ m/^ [-bcdhlp] # file type ([-r])([-w])([-xsS]) # user ([-r])([-w])([-xsS]) # group ([-r])([-w])([-xtT]) # other /xsmo ) { croak "$t does not appear to be a permission string"; } $o += 00400 if $1 eq 'r'; # owner read $o += 00200 if $2 eq 'w'; # owner write $o += 00100 if $3 eq 'x'; # owner execute $o += 04000 if $3 eq 'S'; # setuid $o += 04100 if $3 eq 's'; # setuid + owner execute $o += 00040 if $4 eq 'r'; # group read $o += 00020 if $5 eq 'w'; # group write $o += 00010 if $6 eq 'x'; # group execute $o += 02000 if $6 eq 'S'; # setgid $o += 02010 if $6 eq 's'; # setgid + group execute $o += 00004 if $7 eq 'r'; # other read $o += 00002 if $8 eq 'w'; # other write $o += 00001 if $9 eq 'x'; # other execute $o += 01000 if $9 eq 'T'; # stickybit $o += 01001 if $9 eq 't'; # stickybit + other execute return $o; } =item delete_dir (ARGS) Convenient way of calling I. =cut sub delete_dir { return spawn(undef, ['rm', '-rf', '--', @_]); } =item copy_dir (ARGS) Convenient way of calling I. =cut sub copy_dir { # --reflink=auto (coreutils >= 7.5). On FS that support it, # make a CoW copy of the data; otherwise fallback to a regular # deep copy. return spawn(undef, ['cp', '-a', '--reflink=auto', '--', @_]); } =item gunzip_file (IN, OUT) Decompresses contents of the file IN and stores the contents in the file OUT. IN is I removed by this call. On error, this function will cause a trappable error. =cut sub gunzip_file { my ($in, $out) = @_; spawn({out => $out, fail => 'error'}, ['gzip', '-dc', $in]); return; } =item open_gz (FILE) Opens a handle that reads from the GZip compressed FILE. On failure, this sub emits a trappable error. Note: The handle may be a pipe from an external processes. =cut # Preferred implementation of open_gz (used if the perlio layer # is available) sub __open_gz_pio { my ($file) = @_; open(my $fd, '<:gzip', $file); return $fd; } # Fallback implementation of open_gz sub __open_gz_ext { my ($file) = @_; open(my $fd, '-|', 'gzip', '-dc', $file); return $fd; } =item touch_file(FILE) Updates the "mtime" of FILE. If FILE does not exist, it will be created. On failure, this sub will emit a trappable error. =cut sub touch_file { my ($file) = @_; # We use '>>' because '>' truncates the file if it has contents # (which `touch file` doesn't). open(my $fd, '>>', $file); # open with '>>' does not update the mtime if the file already # exists, so use utime to solve that. utime(undef, undef, $fd); close($fd); return 1; } =item fail (MSG[, ...]) Use to signal an internal error. The argument(s) will used to print a diagnostic message to the user. If multiple arguments are given, they will be merged into a single string (by join (' ', @_)). If only one argument is given it will be stringified and used directly. =cut sub fail { my $str = 'internal error: '; if (@_) { $str .= join ' ', @_; } else { if ($!) { $str .= "$!"; } else { $str .= 'No context.'; } } $! = 2; # set return code outside eval() croak $str; } =item locate_helper_tool(TOOLNAME) Given the name of a helper tool, returns the path to it. The tool must be available in the "helpers" subdir of one of the "lintian root" directories used by Lintian. The tool name should follow the same rules as check names. Particularly, third-party checks should namespace their tools in the same way they namespace their checks. E.g. "python/some-helper". If the tool cannot be found, this sub will cause a trappable error. =cut { my %_CACHE = (); sub locate_helper_tool { my ($toolname) = @_; if ($toolname =~ m{(?:\A|/) \.\. (?:\Z|/)}xsm) { fail("$toolname is not a valid tool name"); } return $_CACHE{$toolname} if exists $_CACHE{$toolname}; my $toolpath_str = $ENV{'LINTIAN_HELPER_DIRS'}; if (defined($toolpath_str)) { # NB: We rely on LINTIAN_HELPER_DIRS to contain only # absolute paths. Otherwise we may return relative # paths. for my $dir (split(':', $toolpath_str)) { my $tool = "$dir/$toolname"; next unless -f -x $tool; $_CACHE{$toolname} = $tool; return $tool; } } $toolpath_str //= ''; fail( sprintf( 'Cannot locate %s (search dirs: %s)', $toolname, $toolpath_str )); } } =item strip ([LINE]) Strips whitespace from the beginning and the end of LINE and returns it. If LINE is omitted, C<$_> will be used instead. Example @lines = map { strip } <$fd>; In void context, the input argument will be modified so it can be used as a replacement for chomp in some cases: while ( my $line = <$fd> ) { strip ($line); # $line no longer has any leading or trailing whitespace } Otherwise, a copy of the string is returned: while ( my $orig = <$fd> ) { my $stripped = strip ($orig); if ($stripped ne $orig) { # $orig had leadning or/and trailing whitespace } } =item lstrip ([LINE]) Like L but only strip leading whitespace. =item rstrip ([LINE]) Like L but only strip trailing whitespace. =cut # prototype for default to $_ sub strip (_) { ## no critic (Subroutines::RequireFinalReturn) if (defined wantarray) { # perl 5.14 s///r would have been useful here. my ($arg) = @_; $arg =~ s/^\s++//; # unpack 'A*' is faster than s/\s++$// return unpack('A*', $arg); } $_[0] =~ s/^\s++//; $_[0] = unpack('A*', $_[0]); # void context, so no return needed here. } # prototype for default to $_ sub lstrip (_) { ## no critic (Subroutines::RequireFinalReturn) if (defined wantarray) { # perl 5.14 s///r would have been useful here. my ($arg) = @_; $arg =~ s/^\s++//; return $arg; } $_[0] =~ s/^\s++//; # void context, so no return needed here. } # prototype for default to $_ sub rstrip (_) { ## no critic (Subroutines::RequireFinalReturn) if (defined wantarray) { # unpack 'A*' is faster than s/\s++$// return unpack('A*', $_[0]); } $_[0] = unpack('A*', $_[0]); # void context, so no return needed here. } =item check_path (CMD) Returns 1 if CMD can be found in PATH (i.e. $ENV{PATH}) and is executable. Otherwise, the function return 0. =cut sub check_path { my $command = shift; return 0 unless exists $ENV{PATH}; for my $element (split ':', $ENV{PATH}) { next unless length $element; return 1 if -f "$element/$command" and -x _; } return 0; } =item dequote_name(STR, REMOVESLASH) Strip an extra layer quoting in index file names and optionally remove an initial "./" if any. Remove initial ./ by default =cut sub dequote_name { my ($name, $slsd) = @_; $slsd = 1 unless defined $slsd; $name =~ s,^\.?/,, if $slsd; # Optimise for the case where the filename does not contain # backslashes. It is a fairly rare to see that in practise. if (index($name, '\\') > -1) { $name =~ s/(\G|[^\\](?:\\\\)*)\\(\d{3})/"$1" . chr(oct $2)/ge; $name =~ s/\\\\/\\/g; } return $name; } =item signal_number2name(NUM) Given a number, returns the name of the signal (without leading "SIG"). Example: signal_number2name(2) eq 'INT' =cut { my @signame; sub signal_number2name { my ($number) = @_; if (not @signame) { require Config; # Doubt this happens for Lintian, but the code might # Cargo-cult-copied or copy-wasted into another project. # Speaking of which, thanks to # http://www.ccsf.edu/Pub/Perl/perlipc/Signals.html defined($Config::Config{sig_name}) or die "Signals not available\n"; my $i = 0; for my $name (split(' ', $Config::Config{sig_name})) { $signame[$i] = $name; $i++; } } return $signame[$number]; } } =item normalize_pkg_path(PATH) Normalize PATH by removing superfluous path segments. PATH is assumed to be relative the package root. Note that the result will never start nor end with a slash, even if PATH does. As the name suggests, this is a path "normalization" rather than a true path resolution (for that use Cwd::realpath). Particularly, it assumes none of the path segments are symlinks. normalize_pkg_path will return C (i.e. the empty string) if PATH is normalized to the root dir and C if the path cannot be normalized without escaping the package root. Examples: normalize_pkg_path('usr/share/java/../../../usr/share/ant/file') eq 'usr/share/ant/file' normalize_pkg_path('usr/..') eq q{}; The following will return C: normalize_pkg_path('usr/bin/../../../../etc/passwd') =item normalize_pkg_path(CURDIR, LINK_TARGET) Normalize the path obtained by following a link with LINK_TARGET as its target from CURDIR as the current directory. CURDIR is assumed to be relative to the package root. Note that the result will never start nor end with a slash, even if CURDIR or DEST does. normalize_pkg_path will return C (i.e. the empty string) if the target is the root dir and C if the path cannot be normalized without escaping the package root. B: This function is I to test if it is safe to open a given symlink. Use L for that. If you must use this function, remember to check that the target is not a symlink (or if it is, that it can be resolved safely). Examples: normalize_pkg_path('usr/share/java', '../ant/file') eq 'usr/share/ant/file' normalize_pkg_path('usr/share/java', '../../../usr/share/ant/file') normalize_pkg_path('usr/share/java', '/usr/share/ant/file') eq 'usr/share/ant/file' normalize_pkg_path('/usr/share/java', '/') eq q{}; normalize_pkg_path('/', 'usr/..') eq q{}; The following will return C: normalize_pkg_path('usr/bin', '../../../../etc/passwd') normalize_pkg_path('usr/bin', '/../etc/passwd') =cut sub normalize_pkg_path { my ($path, $dest) = @_; my (@normalised, @queue); if (@_ == 2) { # We are doing CURDIR + LINK_TARGET if (substr($dest, 0, 1) eq '/') { # Link is absolute # short curcuit $dest eq '/' case. return q{} if $dest eq '/'; $path = $dest; } else { # link is relative $path = join('/', $path, $dest); } } $path =~ s,//++,/,go; $path =~ s,/$,,o; $path =~ s,^/,,o; # Add all segments to the queue @queue = split(m,/,o, $path); # Loop through @dc and modify @cc so that in the # end of the loop, @cc will contain the path that # - note that @cc will be empty if we end in the # root (e.g. '/' + 'usr' + '..' -> '/'), this is # fine. while (my $target = shift(@queue)) { if ($target eq '..') { # are we out of bounds? return unless @normalised; # usr/share/java + '..' -> usr/share pop(@normalised); } else { # usr/share + java -> usr/share/java # but usr/share + "." -> usr/share push(@normalised, $target) if $target ne '.'; } } return q{} unless @normalised; return join('/', @normalised); } =item parse_boolean (STR) Attempt to parse STR as a boolean and return its value. If STR is not a valid/recognised boolean, the sub will invoke croak. The following values recognised (string checks are not case sensitive): =over 4 =item The integer 0 is considered false =item Any non-zero integer is considered true =item "true", "y" and "yes" are considered true =item "false", "n" and "no" are considered false =back =cut sub parse_boolean { my ($str) = @_; return $str == 0 ? 0 : 1 if $str =~ m/^-?\d++$/o; $str = lc $str; return 1 if $str eq 'true' or $str =~ m/^y(?:es)?$/; return 0 if $str eq 'false' or $str =~ m/^no?$/; croak "\"$str\" is not a valid boolean value"; } =item is_ancestor_of(PARENTDIR, PATH) Returns true if and only if PATH is PARENTDIR or a path stored somewhere within PARENTDIR (or its subdirs). This function will resolve the paths; any failure to resolve the path will cause a trappable error. =cut sub is_ancestor_of { my ($ancestor, $file) = @_; my $resolved_file = abs_path($file)// croak("resolving $file failed: $!"); my $resolved_ancestor = abs_path($ancestor) // croak("resolving $ancestor failed: $!"); my $len; return 1 if $resolved_ancestor eq $resolved_file; # add a slash, "path/some-dir" is not "path/some-dir-2" and this # allows us to blindly match against the root dir. $resolved_file .= '/'; $resolved_ancestor .= '/'; # If $resolved_file is contained within $resolved_ancestor, then # $resolved_ancestor will be a prefix of $resolved_file. $len = length($resolved_ancestor); if (substr($resolved_file, 0, $len) eq $resolved_ancestor) { return 1; } return 0; } =item load_state_cache(STATE_DIR) [Reporting tools only] Load the state cache from STATE_DIR. =cut sub load_state_cache { my ($state_dir) = @_; my $state_file = "$state_dir/state-cache"; my $state = {}; my $fd; require YAML::Any; eval {open($fd, '<', $state_file);}; if (my $err = $@) { if ($err->errno != ENOENT) { # Present, but unreadable for some reason die($err); } # Not present; presume empty return $state; } eval {$state = YAML::Any::Load(slurp_entire_file($fd, 1));}; # Not sure what Load does in case of issues; perldoc YAML says # very little about it. Based on YAML::Error, I guess it will # write stuff to STDERR and use die/croak, but it remains a # guess. if (my $err = $@) { die("$state_file was invalid; please fix or remove it.\n$err"); } $state //= {}; if (ref($state) ne 'HASH') { die("$state_file was invalid; please fix or remove it."); } close($fd); return $state; } =item find_backlog(LINTIAN_VERSION, STATE) [Reporting tools only] Given the current lintian version and the harness state, return a list of group ids that are part of the backlog. The list is sorted based on what version of Lintian processed the package. =cut sub find_backlog { my ($lintian_version, $state) = @_; my (@list, @sorted); for my $group_id (keys(%{$state})) { my $last_version = '0'; if (exists($state->{$group_id}{'last-processed-by'})) { $last_version = $state->{$group_id}{'last-processed-by'}; } push(@list, [$group_id, $last_version]) if not versions_equal($last_version, $lintian_version); } @sorted = map { $_->[0] } sort { versions_comparator($a->[1], $b->[1]) || $a->[0] cmp $b->[0] } @list; return @sorted; } =back =head1 SEE ALSO lintian(1) =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Command.pm0000664000000000000000000002600712311317627015544 0ustar # Copyright © 2008 Frank Lichtenheld # # 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::Command; use strict; use warnings; BEGIN { # Disabling IPC::Run::Debug saves tons of useless calls. $ENV{'IPCRUNDEBUG'} = 'none' unless exists $ENV{'IPCRUNDEBUG'}; } use Exporter qw(import); our @EXPORT_OK = qw(spawn reap kill); use IPC::Run qw(harness kill_kill); =head1 NAME Lintian::Command - Utilities to execute other commands from lintian code =head1 SYNOPSIS use Lintian::Command qw(spawn); # simplest possible call my $success = spawn({}, ['command']); # catch output my $opts = {}; $success = spawn($opts, ['command']); if ($success) { print "STDOUT: $opts->{out}\n"; print "STDERR: $opts->{err}\n"; } # from file to file $opts = { in => 'infile.txt', out => 'outfile.txt' }; $success = spawn($opts, ['command']); # piping $success = spawn({}, ['command'], "|", ['othercommand']); =head1 DESCRIPTION Lintian::Command is a thin wrapper around IPC::Run, that catches exception and implements a useful default behaviour for input and output redirection. Lintian::Command provides a function spawn() which is a wrapper around IPC::Run::run() resp. IPC::Run::start() (depending on whether a pipe is requested). To wait for finished child processes, it also provides the reap() function as a wrapper around IPC::Run::finish(). =head2 C The @cmds array is given to IPC::Run::run() (or ::start()) unaltered, but should only be used for commands and piping symbols (i.e. all of the elements should be either an array reference, a code reference, '|', or '&'). I/O redirection is handled via the $opts hash reference. If you need more fine grained control than that, you should just use IPC::Run directly. $opts is a hash reference which can be used to set options and to retrieve the status and output of the command executed. The following hash keys can be set to alter the behaviour of spawn(): =over 4 =item in STDIN for the first forked child. Defaults to C<\undef>. CAVEAT: Due to #301774, passing a SCALAR ref as STDIN for the child leaks memory. The leak is plugged for the C<\undef> case in spawn, but other scalar refs may still be leaked. =item pipe_in Use a pipe for STDIN and start the process in the background. You will need to close the pipe after use and call $opts->{harness}->finish in order for the started process to end properly. =item out STDOUT of the last forked child. Will be set to a newly created scalar reference by default which can be used to retrieve the output after the call. =item out_append STDOUT of all forked children, cannot be used with out and should only be used with files. Unlike out, this appends the output to the file instead of truncating the file. =item pipe_out Use a pipe for STDOUT and start the process in the background. You will need to call $opts->{harness}->finish in order for the started process to end properly. =item err STDERR of all forked children. Defaults to STDERR of the parent. =item err_append STDERR of all forked children, cannot be used with err and should only be used with files. Unlike err, this appends the output to the file instead of truncating the file. =item pipe_err Use a pipe for STDERR and start the process in the background. You will need to call $opts->{harness}->finish in order for the started process to end properly. =item fail Configures the behaviour in case of errors. The default is 'exception', which will cause spawn() to die in case of exceptions thrown by IPC::Run. If set to 'error' instead, it will also die if the command exits with a non-zero error code. If exceptions should be handled by the caller, setting it to 'never' will cause it to store the exception in the C key instead. =back The following additional keys will be set during the execution of spawn(): =over 4 =item harness Will contain the IPC::Run object used for the call which can be used to query the exit values of the forked programs (E.g. with results() and full_results()) and to wait for processes started in the background. =item exception If an exception is raised during the execution of the commands, and if C is set to 'never', the exception will be caught and stored under this key. =item success Will contain the return value of spawn(). =back =cut sub spawn { my ($opts, @cmds) = @_; if (ref($opts) ne 'HASH') { $opts = {}; } $opts->{fail} ||= 'exception'; my ($out, $background); my (@out, @in, @err); if ($opts->{pipe_in}) { @in = ('{pipe_in}); $background = 1; } else { # ("<", \$ref) leaks memory, but ("<&-") doesn't (see #301774) # # We plug the \undef case here because it has a trivial work # around and it is the default value. my $in = $opts->{in}; if (not defined $in or (ref $in eq 'SCALAR' and not defined $$in)) { @in = ('<&-'); } else { @in = ('<', $opts->{in}); } } if ($opts->{pipe_out}) { @out = ('>pipe', $opts->{pipe_out}); $background = 1; } else { if (!exists $opts->{out} && defined $opts->{out_append}){ @out = ('>>', $opts->{out_append}); } else { $opts->{out} ||= \$out; @out = ('>', $opts->{out}); } } if ($opts->{pipe_err}) { @err = ('2>pipe', $opts->{pipe_err}); $background = 1; } else { if (!exists $opts->{err} && defined $opts->{err_append}){ @err = ('2>>', $opts->{err_append}); } else { $opts->{err} ||= \*STDERR; @err = ('2>', $opts->{err}); } } eval { if (@cmds == 1) { my $cmd = pop @cmds; my $last = pop @$cmd; # Support shell-style "command &" if ($last eq '&') { $background = 1; } else { push @$cmd, $last; } $opts->{harness} = harness($cmd, @in, @out, @err); } else { my ($first, $last) = (shift @cmds, pop @cmds); # Support shell-style "command &" if ($last eq '&') { $background = 1; } else { push @cmds, $last; } $opts->{harness} = harness($first, @in, @cmds, @out, @err); } if ($background) { $opts->{success} = $opts->{harness}->start; } else { $opts->{success} = $opts->{harness}->run; } }; if ($@) { require Lintian::Util; Lintian::Util::fail($@) if $opts->{fail} ne 'never'; $opts->{success} = 0; $opts->{exception} = $@; } elsif ($opts->{fail} eq 'error' and not $opts->{success}) { require Lintian::Util; if ($opts->{description}) { Lintian::Util::fail("$opts->{description} failed with error code " . $opts->{harness}->result); } elsif (@cmds == 1) { Lintian::Util::fail("$cmds[0][0] failed with error code " . $opts->{harness}->result); } else { Lintian::Util::fail( 'command failed with error code ' . $opts->{harness}->result); } } return $opts->{success}; } =head2 C If you used one of the C options to spawn() or used the shell-style "&" operator to send the process to the background, you will need to wait for your child processes to finish. For this you can use the reap() function, which you can call with the $opts hash reference you gave to spawn() and which will do the right thing. Multiple $opts can be passed. Note however that this function will not close any of the pipes for you, so you probably want to do that first before calling this function. The following keys of the $opts hash have roughly the same function as for spawn(): =over 4 =item harness =item fail =item success =item exception =back All other keys are probably just ignored. =cut sub reap { my $status = 1; while (my $opts = shift @_) { next unless defined($opts->{harness}); eval {$opts->{success} = $opts->{harness}->finish;}; if ($@) { require Lintian::Util; Lintian::Util::fail($@) if $opts->{fail} ne 'never'; $opts->{success} = 0; $opts->{exception} = $@; } elsif ($opts->{fail} eq 'error' and not $opts->{success}) { require Lintian::Util; if ($opts->{description}) { Lintian::Util::fail( "$opts->{description} failed with error code " . $opts->{harness}->result); } else { Lintian::Util::fail('command failed with error code ' . $opts->{harness}->result); } } $status &&= $opts->{success}; } return $status; } =head2 C This is a simple wrapper around the kill_kill function. It doesn't allow any customisation, but takes an $opts hash ref and SIGKILLs the process two seconds after SIGTERM is sent. If multiple hash refs are passed it executes kill_kill on each of them. The return status is the ORed value of all the executions of kill_kill. =cut sub kill { my $status = 1; while (my $opts = shift @_) { $status &&= kill_kill($opts->{'harness'}, grace => 2); } return $status; } =head2 C Check if a process and its children are done. This is useful when one wants to know whether reap() can be called without blocking waiting for the process. It takes a single hash reference as returned by spawn. =cut sub done { my $opts = shift; eval { $opts->{'harness'}->pump_nb; }; return 0 unless($@); if ($@ =~ m/process ended prematurely/) { return 1; } else { require Lintian::Util; Lintian::Util::fail("Unknown failure when trying to pump_nb: $@"); } } 1; __END__ =head1 EXPORTS Lintian::Command exports nothing by default, but you can export the spawn() and reap() functions. =head1 AUTHOR Originally written by Frank Lichtenheld for Lintian. =head1 SEE ALSO lintian(1), IPC::Run =cut # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/DepMap/0000775000000000000000000000000012311320323014754 5ustar lintian-2.5.22ubuntu1/lib/Lintian/DepMap/Properties.pm0000664000000000000000000000661312311317641017465 0ustar # Copyright (C) 2009 Raphael Geissert # # 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, see . package Lintian::DepMap::Properties; use strict; use warnings; use parent 'Lintian::DepMap'; =head1 NAME Lintian::DepMap::Properties - Dependencies with properties map/tree creator =head1 SYNOPSIS use Lintian::DepMap::Properties; my $map = Lintian::DepMap::Properties->new(); =head1 DESCRIPTION Lintian::DepMap::Properties is a simple layer between Lintian::DepMap and the application allowing nodes to have application-defined properties. =over 4 =item new() Creates a new Lintian::DepMap::Properties object and returns a reference to it. =cut sub new { my ($class, $pkg) = @_; my $self = {}; bless($self, $class); return $self; } =item add(node, [dependencies], [ref to property]) Adds a node with possibly one or more dependencies and sets the C's property to the ref, if defined. The property must be a reference (it can be to a hash, an array, a function, an object, etc) and must be the last argument given to the method. E.g. $map->add('foo', {name => 'John Doe', age => 20}); =cut #' sub add { my $self = shift; my $ref = pop; if (not defined $ref) { # do nothing if not defined } elsif (not ref($ref)) { push @_, $ref; } else { $self->{'properties'}->{$_[0]} = $ref; } return $self->SUPER::add(@_); } =item addp(node[, prefix, dependency[, dependency...]], [ref to property]) Adds the given C to the map marking any third or more parameters, after prefixing them with C, as its dependencies and sets the C's property to the ref, if defined. See add()'s description for more information about about properties. E.g. # pA and pB have no dependency: $map->addp('pA', {name => 'John Doe'}); $map->addp('pB', {name => 'Jane Doe'}); # Df depends on pA and pB: $map->addp('Df', 'p', 'A', 'B', {name => 'Doe Family'}); =cut sub addp { my $self = shift; my $ref = pop; if (not defined $ref) { # do nothing if not defined } elsif (not ref($ref)) { push @_, $ref; } else { $self->{'properties'}->{$_[0]} = $ref; } return $self->SUPER::addp(@_); } =item getp(node) Returns the reference to the given C's properties. E.g. # prints John Doe print $map->getp('foo')->{'name'}; # changes the value of 'name' $map->getp('foo')->{'name'} = 'Jane Doe'; # prints Jane Doe print $map->getp('foo')->{'name'}; =cut #' sub getp { my $self = shift; my $node = shift; return $self->{'properties'}->{$node}; } 1; __END__ =back =head1 AUTHOR Originally written by Raphael Geissert for Lintian. =cut # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Lab/0000775000000000000000000000000012311320323014304 5ustar lintian-2.5.22ubuntu1/lib/Lintian/Lab/ManifestDiff.pm0000664000000000000000000000707312311317642017222 0ustar # Lintian::Lab::ManifestDiff -- Representation of a diff between two manifests # Copyright (C) 2011 Niels Thykier # # 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::Lab::ManifestDiff; use strict; use warnings; use parent qw(Class::Accessor::Fast); =head1 NAME Lintian::Lab::ManifestDiff -- Difference representation between two Manifests =head1 SYNOPSIS use Lintian::Lab::Manifest; my $olist = Lintian::Lab::Manifest->new ('binary'); my $nlist = Lintian::Lab::Manifest->new ('binary'); $olist->read_list ('old/binary-packages'); $nlist->read_list ('new/binary-packages'); my $diff = $olist->diff($nlist); foreach my $added (@{ $diff->added }) { my $entry = $nlist->get (@$added); # do something } foreach my $removed (@{ $diff->removed }) { my $entry = $olist->get (@$removed); # do something } foreach my $changed (@{ $diff->changed }) { my $oentry = $olist->get (@$changed); my $nentry = $nlist->get (@$changed); # use/diff $oentry and $nentry as needed } =head1 DESCRIPTION Instances of this class provides access to the packages list used by the Lab as caches. =head1 METHODS =over 4 =cut # Private constructor (used by Lintian::Lab::Manifest::diff) sub _new { my ($class, $type, $nlist, $olist, $added, $removed, $changed) = @_; my $self = { 'added' => $added, 'removed' => $removed, 'changed' => $changed, 'type' => $type, 'olist' => $olist, 'nlist' => $nlist, }; bless $self, $class; return $self; } =item $diff->added Returns a listref containing the keys of the elements that has been added. Each element is a listref of keys; this list (when dereferenced) can be used with the manifest's get method to look up the item. =item $diff->removed Returns a listref containing the keys of the elements that has been removed. Each element is a listref of keys; this list (when dereferenced) can be used with the manifest's get method to look up the item. =item $diff->changed Returns a listref containing the keys of the elements that has been changed. Each element is a listref of keys; this list (when dereferenced) can be used with the manifest's get method to look up the item. =item $diff->nlist Returns the "new" manifest used to create this diff. Note the manifest is not copied and may have been changed since the diff has been created. =item $diff->olist Returns the "orig" manifest used to create this diff. Note the manifest is not copied and may have been changed since the diff has been created. =cut Lintian::Lab::ManifestDiff->mk_ro_accessors( qw(added removed changed type nlist olist)); =back Originally written by Niels Thykier for Lintian. =head1 SEE ALSO lintian(1) =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Lab/Entry.pm0000664000000000000000000003071712311317642015765 0ustar # Lintian::Lab::Entry -- Perl laboratory entry for lintian # Copyright (C) 2011 Niels Thykier # # 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::Lab::Entry; =head1 NAME Lintian::Lab::Entry - A package inside the Lab =head1 SYNOPSIS use Lintian::Lab; my $lab = Lintian::Lab->new ("dir"); my $lpkg = $lab->get_package ("name", "type", "version", "arch"); # create the entry if it does not exist $lpkg->create unless $lpkg->exists; # obtain an Lintian::Collect object. my $info = $lpkg->info; $lpkg->clear_cache; # Remove package from lab. $lpkg->remove; =head1 DESCRIPTION This module provides basic access and manipulation about an entry (i.e. processable) stored in the Lab. Instances of this class are not created directly, instead they are returned by various methods from L. =head1 CLASS METHODS =over 4 =cut use strict; use warnings; use parent qw(Lintian::Processable Class::Accessor::Fast); use Carp qw(croak); use Cwd(); use File::Spec; use Scalar::Util qw(refaddr); use Lintian::Lab; use Lintian::Util qw(delete_dir read_dpkg_control get_dsc_info strip); # This is the entry format version - this changes whenever the layout of # entries changes. This differs from LAB_FORMAT in that LAB_FORMAT # presents the things "outside" the entry. use constant LAB_ENTRY_FORMAT => 1; =item new_from_metadata (PKG_TYPE, METADATA, LAB, BASEDIR) Overrides same constructor in Lintian::Processable. Used by L to load an existing entry from the lab. =cut sub new_from_metadata { my ($type, $pkg_type, $metadata, $lab, $base_dir) = @_; my $self; my $pkg_path; $pkg_path = $metadata->{'pkg_path'} if exists $metadata->{'pkg_path'}; { # Create a phony pkg_path if missing local $metadata->{'pkg_path'} = '' unless exists $metadata->{'pkg_path'}; $self = $type->SUPER::new_from_metadata($pkg_type, $metadata); } $self->{lab} = $lab; $self->{info} = undef; # load on demand. $self->{coll} = {}; $self->{base_dir} = $base_dir; $self->{pkg_path} = $pkg_path; # Could be undef, _init will fix that $self->_init(); return $self; } # private constructor (called by Lintian::Lab) sub _new_from_proc { my ($type, $proc, $lab, $base_dir) = @_; my $self = {}; my $pkg_path = $proc->pkg_path; bless $self, $type; $self->{pkg_name} = $proc->pkg_name; $self->{pkg_version} = $proc->pkg_version; $self->{pkg_type} = $proc->pkg_type; $self->{pkg_src} = $proc->pkg_src; $self->{pkg_src_version} = $proc->pkg_src_version; $self->{pkg_path} = $proc->pkg_path; $self->{lab} = $lab; $self->{info} = undef; # load on demand. $self->{coll} = {}; if ($self->pkg_type ne 'source') { $self->{pkg_arch} = $proc->pkg_arch; } else { $self->{pkg_arch} = 'source'; } $self->{base_dir} = $base_dir; $self->_init(1); $self->_make_identifier; if ($proc->isa('Lintian::Processable::Package')) { my $ctrl = $proc->_ctrl_fields; if ($ctrl) { # The processable has already loaded the fields, cache them to save # info from doing it later... $self->{info} = Lintian::Collect->new($self->pkg_name, $self->pkg_type, $self->base_dir, $ctrl); } } return $self; } =back =head1 INSTANCE METHODS =over 4 =item base_dir Returns the base directory of this package inside the lab. =cut Lintian::Lab::Entry->mk_ro_accessors(qw(base_dir)); =item from_lab (LAB) Returns a truth value if this entry is from LAB. =cut sub from_lab { my ($self, $lab) = @_; return refaddr $lab eq refaddr $self->{'lab'} ? 1 : 0; } =item info Returns the L object associated with this entry. Overrides info from L. =cut sub info { my ($self) = @_; my $info; croak 'Cannot load info, extry does not exist' unless $self->exists; $info = $self->{info}; if (!defined $info) { $info = Lintian::Collect->new($self->pkg_name, $self->pkg_type, $self->base_dir); $self->{info} = $info; } return $info; } =item clear_cache Clears any caches held; this includes discarding the L object. Overrides clear_cache from L. =cut sub clear_cache { my ($self) = @_; delete $self->{info}; return; } =item remove Removes all unpacked parts of the package in the lab. Returns a truth value if successful. =cut sub remove { my ($self) = @_; my $basedir = $self->{base_dir}; return 1 if(!-e $basedir); $self->clear_cache; unless(delete_dir($basedir)) { return 0; } $self->{lab}->_entry_removed($self); return 1; } =item exists Returns a truth value if the entry exists. =cut sub exists { my ($self) = @_; my $pkg_type = $self->{pkg_type}; my $base_dir = $self->{base_dir}; # Check if the relevant symlink exists. if ($pkg_type eq 'changes'){ return 1 if -l "$base_dir/changes"; } elsif ($pkg_type eq 'binary' or $pkg_type eq 'udeb') { return 1 if -l "$base_dir/deb"; } elsif ($pkg_type eq 'source'){ return 1 if -l "$base_dir/dsc"; } # No unpack level and no symlink => the entry does not # exist or it is too broken in its current state. return 0; } =item create Creates a minimum entry, in which collections and checks can be run. Note if it already exists, then this will do nothing. =cut sub create { my ($self) = @_; my $pkg_type = $self->{pkg_type}; my $base_dir = $self->{base_dir}; my $pkg_path = $self->{pkg_path}; my $lab = $self->{lab}; my $link; my $madedir = 0; # It already exists. return 1 if $self->exists; unless (-d $base_dir) { # In the pool we may have to create multiple directories. On # error we only remove the "top dir" and that is enough. system('mkdir', '-p', $base_dir) == 0 or croak "mkdir -p $base_dir failed"; $madedir = 1; } if ($pkg_type eq 'changes'){ $link = "$base_dir/changes"; } elsif ($pkg_type eq 'binary' or $pkg_type eq 'udeb') { $link = "$base_dir/deb"; } elsif ($pkg_type eq 'source'){ $link = "$base_dir/dsc"; } else { croak "create cannot handle $pkg_type"; } unless (symlink($pkg_path, $link)){ my $err = $!; # "undo" the mkdir if the symlink fails. rmdir $base_dir if $madedir; $! = $err; croak "symlinking $pkg_path failed: $!"; } if ($pkg_type eq 'source'){ # If it is a source package, pull in all the related files # - else unpacked will fail or we would need a separate # collection for the symlinking. my (undef, $dir, undef) = File::Spec->splitpath($pkg_path); for my $fs (split(m/\n/o, $self->info->field('files'))) { strip($fs); next if $fs eq ''; my @t = split(/\s+/o,$fs); next if ($t[2] =~ m,/,o); symlink("$dir/$t[2]", "$base_dir/$t[2]") or croak("cannot symlink file $t[2]: $!"); } } $lab->_entry_created($self); return 1; } =item coll_version (COLL) Returns the version of the collection named COLL, if that COLL has been marked as finished. Returns the empty string if COLL has not been marked as finished. Note: The version can be 0. =cut sub coll_version { my ($self, $coll) = @_; return $self->{coll}->{$coll}//''; } =item is_coll_finished (COLL, VERSION) Returns a truth value if the collection COLL has been completed and its version is at least VERSION. The versions are assumed to be integers (the comparison is performed with ">="). This returns 0 if the collection COLL has not been marked as finished. =cut sub is_coll_finished { my ($self, $coll, $version) = @_; my $c = $self->coll_version($coll); return 0 if $c eq ''; return $c >= $version; } # $lpkg->_mark_coll_finished ($coll, $version) # # non-public method to mark a collection as complete sub _mark_coll_finished { my ($self, $coll, $version) = @_; $self->{coll}->{$coll} = $version; return 1; } # $lpkg->_clear_coll_status ($coll) # # Removes the notion that $coll has been finished. sub _clear_coll_status { my ($self, $coll) = @_; delete $self->{coll}->{$coll}; return 1; } =item update_status_file Flushes the cached changes of which collections have been completed. This should also be called for new entries to create the status file. =cut sub update_status_file { my ($self) = @_; my $file; my @sc; unless ($self->exists) { require POSIX; $! = POSIX::ENOENT; return 0; } $file = $self->base_dir() . '/.lintian-status'; open my $sfd, '>', $file or return 0; print $sfd 'Lab-Entry-Format: ' . LAB_ENTRY_FORMAT . "\n"; # Basic package meta-data - this is redundant, but having it may # greatly simplify a migration or detecting a broken lab later. print $sfd 'Package: ' . $self->pkg_name, "\n"; print $sfd 'Version: ' . $self->pkg_version, "\n"; # Add Source{,-Version} if it is different from Package/Version print $sfd 'Source: ' . $self->pkg_src, "\n" unless $self->pkg_src eq $self->pkg_name; print $sfd 'Source-Version: ' . $self->pkg_src_version, "\n" unless $self->pkg_src_version eq $self->pkg_version; print $sfd 'Architecture: ' . $self->pkg_arch, "\n" if $self->pkg_type ne 'source'; print $sfd 'Package-Type: ' . $self->pkg_type, "\n"; @sc = sort keys %{ $self->{coll} }; print $sfd "Collections: \n"; print $sfd ' ' . join(",\n ", map { "$_=$self->{coll}->{$_}" } @sc); print $sfd "\n\n"; close $sfd or return 0; return 1; } sub _init { my ($self, $newentry) = @_; my $base_dir = $self->base_dir; my @data; my $head; my $coll; my $exists = $self->exists; if ($newentry) { my $pkg_path = $self->pkg_path; croak "$pkg_path does not exist." unless -e $pkg_path; } else { # This error should not happen unless someone (read: me) breaks # Lintian::Lab::get_package my $pkg_type = $self->pkg_type; my $id = $self->identifier; croak "$id does not exists" unless $exists; my $link; $link = 'deb' if $pkg_type eq 'binary' or $pkg_type eq 'udeb'; $link = 'dsc' if $pkg_type eq 'source'; $link = 'changes' if $pkg_type eq 'changes'; croak "Unknown package type $pkg_type" unless $link; if (not $self->pkg_path) { # This case shouldn't happen unless the entry is missing # from the metadata. my $linkp = "$base_dir/$link"; # Resolve the link if possible, but else just fall back to the link # - this is not safe in case of a "delete and create", but if # abs_path fails odds are the package cannot be read anyway. $self->{pkg_path} = Cwd::abs_path("$base_dir/$link") // "$base_dir/$link"; } } return unless $exists; return unless -e "$base_dir/.lintian-status"; @data = read_dpkg_control("$base_dir/.lintian-status"); $head = $data[0]; # Check that we know the format. return unless (LAB_ENTRY_FORMAT eq ($head->{'lab-entry-format'}//'')); $coll = $head->{'collections'}//''; $coll =~ s/\n/ /go; foreach my $c (split m/\s*,\s*+/o, strip($coll)) { my ($cname, $cver) = split m/\s*=\s*/, $c; $self->_mark_coll_finished($cname, $cver); } return; } =back =head1 AUTHOR Niels Thykier =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Lab/Manifest.pm0000664000000000000000000004270212311317642016427 0ustar # Lintian::Lab::Manifest -- Lintian Lab manifest # Copyright (C) 2011 Niels Thykier # # 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::Lab::Manifest; use strict; use warnings; use autodie; use parent qw(Class::Accessor::Fast Clone); use Carp qw(croak); use Lintian::Lab::ManifestDiff; =head1 NAME Lintian::Lab::Manifest -- Lintian Lab manifest =head1 SYNOPSIS use Lintian::Lab::Manifest; my $plist = Lintian::Lab::Manifest->new ('binary'); # Read the file $plist->read_list('info/binary-packages'); # fetch the entry for lintian (if any) my $entry = $plist->get('lintian', '2.5.2', 'all'); if ( $entry && exits $entry->{'version'} ) { print "Lintian has version $entry->{'version'}\n"; } # delete all lintian entries $plist->delete('lintian'); # Write to file if changed if ($plist->dirty) { $plist->write_list('info/binary-packages'); } =head1 DESCRIPTION Instances of this class provide access to the packages list used by the lab as caches. The data structure is basically a tree (using hashes). For binaries is looks (something) like: $self->{'state'}->{$name}->{$version}->{$architecture} The (order of the) fields used in the tree are listed in the @{BIN,SRC,CHG}_QUERY lists below. The fields may (and generally do) differ between package types. =head1 CLASS METHODS =over 4 =cut # these banner lines have to be changed with every incompatible change of the # binary and source list file formats use constant BINLIST_FORMAT => q{Lintian's list of binary packages in the archive--V5}; use constant SRCLIST_FORMAT => q{Lintian's list of source packages in the archive--V5}; use constant CHGLIST_FORMAT => q{Lintian's list of changes packages in the archive--V1}; # List of fields in the formats and the order they appear in # - for internal usage to read and write the files # source package lists my @SRC_FILE_FIELDS = ( 'source','version','maintainer','uploaders', 'area','binary','file','timestamp', ); # binary/udeb package lists my @BIN_FILE_FIELDS = ( 'package','version','source','source-version', 'architecture','file','timestamp','area', ); # changes packages lists my @CHG_FILE_FIELDS = ('source','version','architecture','file','timestamp',); # List of fields (in order) of fields used to look up the package in the # manifest. The field names matches those used in the list above. my @SRC_QUERY = ('source','version',); my @GROUP_QUERY = ('source','version','identifier',); my @BIN_QUERY = ('package','version','architecture',); my @CHG_QUERY = ('source','version','architecture',); my %TYPE2INFO = ( 'source' => { 'file-fields' => \@SRC_FILE_FIELDS, 'file-header' => SRCLIST_FORMAT, 'query-fields' => \@SRC_QUERY }, 'binary' => { 'file-fields' => \@BIN_FILE_FIELDS, 'file-header' => BINLIST_FORMAT, 'query-fields' => \@BIN_QUERY }, 'changes' => { 'file-fields' => \@CHG_FILE_FIELDS, 'file-header' => CHGLIST_FORMAT, 'query-fields' => \@CHG_QUERY }, 'GROUP' => { 'file-fields' => undef, # Never written to disk 'file-header' => undef, # Never written to disk 'query-fields' => \@GROUP_QUERY }, ); # udeb behave exactly like binary, so share the underlying table # \o/ ~50 bytes saved! $TYPE2INFO{'udeb'} = $TYPE2INFO{'binary'}; =item new (TYPE[, GROUPING]) Creates a new packages list for a certain type of packages. This type defines the format of the files. The known types are: * binary * changes * source * udeb * GROUP If TYPE is GROUP, then GROUPING should be omitted. =cut sub new { my ($class, $pkg_type, $grouping) = @_; my $self = { 'type' => $pkg_type, 'dirty' => 0, 'state' => {}, 'grouping' => $grouping, }; bless $self, $class; return $self; } =back =head1 INSTANCE METHODS =over 4 =item dirty Returns a truth value if the manifest has changed since it was last written. =item type Returns the type of packages that this manifest has information about. (one of binary, udeb, source or changes) =cut # For some reason these getters seem to just return "undef", so they # have been added manually below. (not sure if this is a usage error # or a bug in Class::Accessor::Fast) #Lintian::Lab::Manifest->mk_ro_accessors (qw(dirty type)); sub dirty { my ($self) = @_; return $self->{'dirty'}; } sub type { my ($self) = @_; return $self->{'type'}; } =item read_list (FILE) Reads a manifest from FILE. Any records already in the manifest will be discarded before reading the contents. On success, this will clear the L flag and on error it will croak. =cut sub read_list { my ($self, $file) = @_; my $type = $self->type; croak 'Cannot read a GROUP manifest' if $type eq 'GROUP'; # Accept a scalar (as an "in-memory file") - write_list does the same if (my $r = ref $file) { croak 'Attempt to pass non-scalar ref to read_list' unless $r eq 'SCALAR'; } else { # FIXME: clear the manifest if -s $file return unless -s $file; } my ($header, $fields, $qf) = @{$TYPE2INFO{$type}}{'file-header', 'file-fields', 'query-fields'}; $self->{'state'} = $self->_do_read_file($file, $header, $fields, $qf); $self->_mark_dirty(0); return 1; } =item write_list (FILE) Writes the manifest to FILE. On success, this will clear the L flag and on error it will croak. On error, the contents of FILE are undefined. =cut sub write_list { my ($self, $file) = @_; my $type = $self->type; croak 'Cannot write a GROUP manifest' if $type eq 'GROUP'; my ($header, $fields) = @{$TYPE2INFO{$type}}{'file-header', 'file-fields'}; my $visitor; open(my $fd, '>', $file); print $fd "$header\n"; $visitor = sub { my ($entry) = @_; return if exists $entry->{'_transient'}; my %values = %$entry; print $fd join(';', @values{@$fields}) . "\n"; }; $self->visit_all($visitor); close($fd); $self->_mark_dirty(0); return 1; } =item visit_all (VISITOR[, KEY1, ..., KEYN]) Visits entries and passes them to VISITOR. If any keys are passed they are used to reduce the search. See get for a list of (common) keys. The VISITOR is called as: VISITOR->(ENTRY, KEYS) where ENTRY is the entry and KEYS are the keys to be used to look up this entry via get method. So for the lintian 2.5.2 binary the keys would be something like: ('lintian', '2.5.2', 'all') =cut sub visit_all { my ($self, $visitor, @keys) = @_; my $root; my $type = $self->type; my $qf = $TYPE2INFO{$type}{'query-fields'}; if (@keys) { $root = $self->get(@keys); return unless $root; if (scalar @$qf == scalar @keys) { # If we are given an exact match, just visit that and # stop. $visitor->($root, @keys); return; } } else { $root = $self->{'state'}; } $self->_recurse_visit($root, $visitor, scalar @$qf - 1, @keys); return; } =item get (KEYS...) Fetches the entry for KEYS (if any). Returns C if the entry is not known. If KEYS is exactly one item, it is assumed to be a L and the correct keys are extracted from it. Otherwise, the keys are (in general and in order): =over 4 =item package/source =item version =item architecture except for source packages =back =cut sub get { my ($self, @keys) = @_; my $cur = $self->{'state'}; my $type = $self->type; my $qf = $TYPE2INFO{$type}{'query-fields'}; my $max = scalar @$qf; @keys = $self->_make_keys($keys[0]) if scalar(@keys) == 1 && ref($keys[0]); $max = scalar @keys if scalar @keys < $max; for (my $i = 0 ; $i < $max ; $i++) { my $key = $keys[$i]; $cur = $cur->{$key}; return unless defined $cur; } return $cur; } sub _make_keys { my ($self, $entry) = @_; my @keys = ($entry->pkg_name, $entry->pkg_version); push @keys, $entry->pkg_arch if $entry->pkg_type ne 'source'; return @keys; } =item set (ENTRY) Inserts ENTRY into the manifest. This may replace an existing entry. Note: The interesting fields from ENTRY are copied, so later changes to ENTRY will not affect the data in the manifest. =cut sub set { my ($self, $entry) = @_; my $type = $self->type; croak 'Cannot alter a GROUP manifest directly' if $type eq 'GROUP'; my %pdata; my ($fields, $qf) = @{$TYPE2INFO{$type}}{'file-fields', 'query-fields'}; # Copy the relevant fields - ensuring all fields are defined. foreach my $field (@$fields) { my $val = $entry->{$field} // ''; # Avoid some problematic characters that would break the file # format. $val =~ tr/;\n/_ /; $pdata{$field} = $val; } $self->_make_alias_fields(\%pdata); $self->_do_set($qf, \%pdata); $self->_mark_dirty(1); return 1; } =item set_transient_marker (TRANSIENT, KEYS...) Set or clear transient flag. Transient entries are not written to the disk (i.e. They will not appear in the file created/written by L). KEYS is passed as is passed to L. By default all entries are persistent. =cut sub set_transient_marker { my ($self, $marker, @keys) = @_; my $entry = $self->get(@keys); return unless $entry; $self->{'_transient'} = 1 if $marker; delete $self->{'_transient'} unless $marker; return; } =item delete (KEYS...) Removes the entry/entries found by KEYS (if any). KEYS must contain at least one item - if the list of keys cannot uniquely identify a single element, all "matching" elements will be removed. Examples: # Delete the gcc-4.6 entry at version 4.6.1-4 that is also architecture i386 $manifest->delete ('gcc-4.6', '4.6.1-4', 'i386'); # Delete all gcc-4.6 entries at version 4.6.1-4 regardless of their # architecture $manifest->delete ('gcc-4.6', '4.6.1-4'); # Delete all gcc-4.6 entries regardless of version and architecture $manifest->delete ('gcc-4.6') If KEYS is exactly one item, it is assumed to be a L. If so, the proper keys will be extracted from that processable and (if present) that one element will be removed. This will mark the list as dirty if an element was removed. If it returns a truth value, an element was removed - otherwise it will return 0. See L for the key names. =cut sub delete { my ($self, @keys) = @_; croak 'Cannot alter a GROUP manifest directly' if $self->type eq 'GROUP'; return $self->_do_delete(@keys); } sub _do_delete { my ($self, @keys) = @_; @keys = $self->_make_keys($keys[0]) if scalar @keys == 1; # last key, that is what we will remove :) my $lk = pop @keys; my $hash; return 0 unless defined $lk; if (@keys) { $hash = $self->get(@keys); } else { $hash = $self->{'state'}; } if (defined $hash && exists $hash->{$lk}) { my $entry = delete $hash->{$lk}; $self->_mark_dirty(1); if (my $grouping = $self->{'grouping'}) { my @keys = ( $entry->{'source'}, $entry->{'source-version'}, $entry->{'identifier'}); $grouping->_do_delete(@keys); } return 1; } return 0; } =item diff (MANIFEST) Returns a L between this manifest and MANIFEST. This instance is considered the "original" and MANIFEST is "new" version of the manifest. (See the olist and nlist methods of L for more information. =cut sub diff { my ($self, $other) = @_; croak 'Cannot diff a GROUP manifest' if $self->type eq 'GROUP'; my $copy; my @changed; my @added; my @removed; my $visitor; unless ($self->{'type'} eq $other->{'type'}) { my $st = $self->{'type'}; my $ot = $other->{'type'}; croak "Diffing incompatible types ($st != $ot)"; } $copy = $self->clone; $visitor = sub { my ($ov, @keys) = @_; my $sv = $copy->get(@keys); unless (defined $sv) { push @added, \@keys; return; } if ( $sv->{'version'} ne $ov->{'version'} ||$sv->{'timestamp'} ne $ov->{'timestamp'}) { push @changed, \@keys; } # Remove the entry from $copy $copy->delete(@keys); }; # End of visitor sub # Find all the added and changed entries - since $visitor removes # all entries it finds from $copy, $copy will contain the elements # that are only in $self after this call. $other->visit_all($visitor); # Thus we can just add all of these entries to @removed. :) $copy->visit_all(sub { my (undef, @keys) = @_; push @removed, \@keys; }); return Lintian::Lab::ManifestDiff->_new($self->{'type'}, $other, $self, \@added, \@removed, \@changed); } ### Internal methods ### # $plist->_mark_dirty($val) # # Internal sub to alter the dirty flag. 1 for dirty, 0 for "not dirty" sub _mark_dirty { my ($self, $dirty) = @_; $self->{'dirty'} = $dirty; return; } # $plist->_do_read_file($file, $header, $fields) # # internal sub to actually load the pkg list from $file. # $header is the expected header (first line excl. newline) # $fields is a ref to the relevant field list (see @*_FILE_FIELDS) # - croaks on error sub _do_read_file { my ($self, $file, $header, $fields, $qf) = @_; my $count = scalar @$fields; my $root = {}; open(my $fd, '<', $file); my $hd = <$fd>; chop $hd; unless ($hd eq $header) { # The interesting part here is the format is invalid, so # "ignore" errors from close no autodie qw(close); close($fd); croak "Unknown/unsupported file format ($hd)"; } while (my $line = <$fd>) { chop($line); next if $line =~ m/^\s*+$/o; my (@values) = split m/\;/o, $line, $count; my $entry = {}; unless ($count == scalar @values) { # The interesting part here is the format is invalid, so # "ignore" errors from close no autodie qw(close); close($fd); croak "Invalid line in $file at line $. ($_)"; } for (my $i = 0 ; $i < $count ; $i++) { $entry->{$fields->[$i]} = $values[$i]//''; } $self->_make_alias_fields($entry); $self->_do_set($qf, $entry, $root); } close($fd); return $root; } sub _make_alias_fields { my ($self, $entry) = @_; # define source-version as alias of version for # source packages. $entry->{'source-version'} = $entry->{'version'} unless defined $entry->{'source-version'}; # For compat with Lintian::Processable->new_from_metadata $entry->{'pkg_path'} = $entry->{'file'}; $entry->{'package'} = $entry->{'source'} unless defined $entry->{'package'}; $entry->{'pkg_type'} = $self->type; unless (defined $entry->{'identifier'}) { my $pkg = $entry->{'package'}; my $version = $entry->{'version'}; my $id = $self->type . ":$pkg/$version"; $id .= '/' . $entry->{'architecture'} if $self->type ne 'source'; $entry->{'identifier'} = $id; } return; } sub _do_set { my ($self, $qf, $entry, $root) = @_; my $qfl = scalar @$qf - 1; # exclude the last element (see below) my $cur = $root // $self->{'state'}; my $k; # Find the hash where the entry should be stored # - The basic structure is "$root->{key1}->...->{keyN-1}->{keyN} = $entry" # - This loop is supposed to find the "n-1"th hash and save that in $cur. # - After the loop, a simple "$cur->{$keyN} = $entry" inserts the element. for (my $i = 0 ; $i < $qfl ; $i++) { # Current key my $curk = $entry->{$qf->[$i]}; my $element = $cur->{$curk}; unless (defined $element) { $element = {}; $cur->{$curk} = $element; } $cur = $element; } $k = $entry->{$qf->[$qfl]}; $cur->{$k} = $entry; if (my $grouping = $self->{'grouping'}) { $grouping->_do_set(\@GROUP_QUERY, $entry); } return 1; } # Self-recursing method powering visit_all sub _recurse_visit { my ($self, $hash, $visitor, $vdep, @keys) = @_; # if false, we recurse, if true we pass it to $visitor my $visit = $vdep == scalar @keys; foreach my $k (sort keys %$hash) { my $v = $hash->{$k}; # Should we recurse into $v? $self->_recurse_visit($v, $visitor, $vdep, @keys, $k) unless $visit; # ... or is it the value to be visited? $visitor->($v, @keys, $k) if $visit; } return; } =back =head1 AUTHOR Originally written by Niels Thykier for Lintian. =head1 SEE ALSO lintian(1) =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Check.pm0000664000000000000000000002751512311317626015207 0ustar # -*- perl -*- # Lintian::Check -- Lintian checks shared between multiple scripts # Copyright (C) 2009 Russ Allbery # Copyright (C) 2004 Marc Brockschmidt # Copyright (C) 1998 Richard Braakman # # 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, see . package Lintian::Check; use strict; use warnings; use Exporter qw(import); use Email::Valid; use Lintian::Data; use Lintian::Tags qw(tag); our $KNOWN_BOUNCE_ADDRESSES = Lintian::Data->new('fields/bounce-addresses'); our @EXPORT_OK = qw(check_maintainer check_spelling check_spelling_picky $known_shells_regex ); =head1 NAME Lintian::Check -- Lintian checks shared between multiple scripts =head1 SYNOPSIS use Lintian::Check qw(check_maintainer); my ($maintainer, $field) = ('John Doe', 'uploader'); check_maintainer ($maintainer, $field); =head1 DESCRIPTION This module provides functions to do some Lintian checks that need to be done in multiple places. There are certain low-level checks, such as validating a maintainer name and e-mail address or checking spelling, which apply in multiple situations and should be done in multiple checks scripts or in checks scripts and the Lintian front-end. The functions provided by this module issue tags directly, usually either taking the tag name to issue as an argument or dynamically constructing the tag name based on function parameters. The caller is responsible for ensuring that all tags are declared in the relevant *.desc file with proper descriptions and other metadata. The possible tags issued by each function are described in the documentation for that function. =head1 FUNCTIONS =over 4 =item check_maintainer(MAINTAINER, FIELD) Checks the maintainer name and address MAINTAINER for Policy compliance and other issues. FIELD is the context in which the maintainer name and address was seen and should be one of C (the Maintainer field in a control file), C (the Uploaders field in a control file), or C (the Changed-By field in a changes file). The following tags may be issued by this function. The string C<%s> in the tags below will be replaced with the value of FIELD. =over 4 =item %s-address-is-on-localhost The e-mail address portion of MAINTAINER is at C or some other similar domain. =item %s-address-causes-mail-loops-or-bounces The e-mail address portion of MAINTAINER or UPLOADER refers to the PTS e-mail addresses C or C, or, alternatively refers to a mailing list which is known to bounce off-list mails sent by Debian role accounts. =item %s-address-looks-weird MAINTAINER may be syntactically correct, but it isn't conventionally formatted. Currently this tag is only issued for missing whitespace between the name and the address. =item %s-address-malformed MAINTAINER doesn't fit the basic syntax of a maintainer name and address as specified in Policy. =item %s-address-missing MAINTAINER does not contain an e-mail address in angle brackets (<>). =item %s-name-missing MAINTAINER does not contain a full name before the address, or the e-mail address was not in angle brackets. =item wrong-debian-qa-address-set-as-maintainer MAINTAINER appears to be the Debian QA Group, but the e-mail address portion is wrong for orphaned packages. This tag is only issued for a FIELD of C. =item wrong-debian-qa-group-name MAINTAINER appears to be the Debian QA Group, but the name portion is not C. This tag is only issued for a FIELD of C. =back The last two tags are issued here rather than in a location more specific to checks of the Maintainer control field because they take advantage of the parsing done by the rest of the function. =cut sub check_maintainer { my ($maintainer, $field) = @_; # Do the initial parse. $maintainer =~ /^([^<\s]*(?:\s+[^<\s]+)*)?(\s*)(?:<(.+)>)?(.*)$/; my ($name, $del, $mail, $extra) = ($1, $2, $3, $4); if (not $mail and $name =~ m/@/) { # Name probably missing and address has no <>. $mail = $name; $name = undef; } # Some basic tests. my $malformed; # If there is something after the mail address OR if there is a # ">" after the last "@" in the mail it is malformed. This # happens with "name >", where $mail will be "name # " (#640489). Email::Valid->address (below) will accept # this in most cases (because that is generally valid), but we # only want Email::Valid to validate the "email" part and not the # name (Policy allows "." to be unqouted in names, Email::Valid # does not etc.). Thus this check is to ensure we only pass the # "email"-part to Email::Valid. if ($extra or ($mail && $mail =~ m/\@[^\>\@]+\>[^\>\@]*$/o)) { tag "$field-address-malformed", $maintainer; $malformed = 1; } tag "$field-address-looks-weird", $maintainer if (not $del and $name and $mail); if (not $name) { tag "$field-name-missing", $maintainer; } # Don't issue the malformed tag twice if we already saw problems. if (not $mail) { # Cannot be done accurately for uploaders due to changes with commas # (see #485705) tag "$field-address-missing", $maintainer unless $field eq 'uploader'; } else { if (not $malformed and not Email::Valid->address($mail)) { # Either not a valid email or possibly missing a comma between # two entries. $malformed = 1; if ($mail =~ /^0/) { # Email::Valid does not handle emails starting with "0" too # well. So replace it with a "1", which Email::Valid cannot # misinterpret as a "false-value". # - Fixed in libemail-valid-perl/0.187-2, this work around # can be dropped when the fix is in stable. my $copy = $mail; $copy =~ s/^0/1/; $malformed = 0 if Email::Valid->address($copy); } tag "$field-address-malformed", $maintainer if $malformed; } if ($mail =~ /(?:localhost|\.localdomain|\.localnet)$/) { tag "$field-address-is-on-localhost", $maintainer; } if ( ($field ne 'changed-by') and ( $mail =~ /\@packages\.(?:qa\.)?debian\.org/i or $KNOWN_BOUNCE_ADDRESSES->known($mail)) ) { tag "$field-address-causes-mail-loops-or-bounces", $maintainer; } # Some additional checks that we only do for maintainer fields. if ($field eq 'maintainer') { if ( ($mail eq 'debian-qa@lists.debian.org') or ( $name =~ /\bdebian\s+qa\b/i and $mail ne 'packages@qa.debian.org') ) { tag 'wrong-debian-qa-address-set-as-maintainer', $maintainer; } elsif ($mail eq 'packages@qa.debian.org') { tag 'wrong-debian-qa-group-name', $maintainer if ($name ne 'Debian QA Group'); } } } return; } sub _tag { my @args = grep { defined($_) } @_; return tag(@args); } =item check_spelling(TAG, TEXT, FILENAME, EXCEPTION) Performs a spelling check of TEXT, reporting TAG if any errors are found. If FILENAME is given, it will be used as the first argument to TAG. If EXCEPTION is given, it will be used as a hash ref of exceptions. Any lowercase word appearing as a key of this hash ref will never be considered a spelling mistake (exception being if it is a part of a multiword misspelling). Returns the number of spelling mistakes found in TEXT. =cut sub check_spelling { my ($tag, $text, $filename, $exceptions) = @_; return unless $text; my %seen = (); my $counter = 0; my $corrections = Lintian::Data->new('spelling/corrections', '\|\|'); my $corrections_multiword = Lintian::Data->new('spelling/corrections-multiword', '\|\|'); $text =~ s/[()\[\]]//g; $text =~ s/(\w-)\s*\n\s*/$1/; $exceptions = {} unless (defined($exceptions)); for my $word (split(/\s+/, $text)) { $word =~ s/[.,;:?!]+$//; next if ($word =~ /^[A-Z]{1,5}\z/); # Some exceptions are based on case (e.g. "teH"). next if exists($exceptions->{$word}); my $lcword = lc $word; if ($corrections->known($lcword) &&!exists($exceptions->{$lcword})) { $counter++; my $correction = $corrections->value($lcword); if ($word =~ /^[A-Z]+$/) { $correction = uc $correction; } elsif ($word =~ /^[A-Z]/) { $correction = ucfirst $correction; } next if $seen{$lcword}++; _tag($tag, $filename, $word, $correction) if defined $tag; } } # Special case for correcting multi-word strings. for my $oregex ($corrections_multiword->all) { my $regex = qr($oregex); if ($text =~ m,\b($regex)\b,) { my $word = $1; my $correction = $corrections_multiword->value($oregex); if ($word =~ /^[A-Z]+$/) { $correction = uc $correction; } elsif ($word =~ /^[A-Z]/) { $correction = ucfirst $correction; } $counter++; next if $seen{lc $word}++; _tag($tag, $filename, $word, $correction) if defined $tag; } } return $counter; } =item check_spelling_picky(TAG, TEXT, FILENAME) Perform a spelling check of TEXT, reporting TAG if any mistakes are found. This method performs some pickier corrections - such as checking for common capitalization mistakes - which would are not included in check_spelling as they are not appropriate for some files, such as changelogs. If FILENAME is given, it will be used as the first argument to TAG. Returns the number of spelling mistakes found in TEXT. =cut sub check_spelling_picky { my ($tag, $text, $filename) = @_; my %seen = (); my $counter = 0; my $corrections_case = Lintian::Data->new('spelling/corrections-case', '\|\|'); # Check this first in case it's contained in square brackets and # removed below. if ($text =~ m,meta\s+package,) { $counter++; _tag($tag, $filename, 'meta package', 'metapackage') if defined $tag; } # Exclude text enclosed in square brackets as it could be a package list # or similar which may legitimately contain lower-cased versions of # the words. $text =~ s/\[.+?\]//sg; for my $word (split(/\s+/, $text)) { $word =~ s/^\(|[).,?!:;]+$//g; if ($corrections_case->known($word)) { $counter++; next if $seen{$word}++; _tag($tag, $filename, $word, $corrections_case->value($word)) if defined $tag; next; } } return $counter; } =back =head1 VARIABLES =over 4 =item $known_shells_regex Regular expression that matches names of any known shell. =cut our $known_shells_regex = qr'(?:[bd]?a|t?c|(?:pd|m)?k|z)?sh'; =back =head1 AUTHOR Originally written by Russ Allbery for Lintian. Based on code from checks scripts by Marc Brockschmidt and Richard Braakman. =head1 SEE ALSO lintian(1) =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/CheckScript.pm0000664000000000000000000001664612311317626016377 0ustar # Copyright (C) 2012 Niels Thykier # # 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::CheckScript; use strict; use warnings; use Cwd qw(realpath); use File::Basename qw(dirname); use parent 'Class::Accessor::Fast'; use Carp qw(croak); use Lintian::Tag::Info (); use Lintian::Util qw(read_dpkg_control); =head1 NAME Lintian::CheckScript - Check script meta data =head1 SYNOPSIS use Lintian::CheckScript; my $cs = Lintian::CheckScript->new ("$ENV{'LINTIAN_ROOT'}/checks/", 'files'); my $name = $cs->name; foreach my $tag ($cs->tags) { # $ti is an instance of Lintian::Tag::Info my $ti = $cs->get_tag ($tag); print "$tag is a part of the check $name\n"; # Do something with $ti / $tag } foreach my $needs ($cs->needs_info) { print "$name needs $needs\n"; } if ($cs->is_check_type ('binary') && $cs->is_check_type ('source')) { # Check applies to binary pkgs AND source pkgs } =head1 DESCRIPTION Instances of this class represents the data in the check ".desc" files. It allows access to the tags (as Lintian::Tag::Info) and the common meta data of the check (such as Needs-Info). =head1 CLASS METHODS =over 4 =item Lintian::CheckScript->new ($basedir, $checkname) Parses the $file as a check desc file. =cut sub new { my ($class, $basedir, $checkname) = @_; my ($header, @tags) = read_dpkg_control("$basedir/${checkname}.desc"); my $self; my $dir; unless ($header->{'check-script'}) { croak "Missing Check-Script field in $basedir/${checkname}.desc"; } $dir = realpath($basedir) or croak "Cannot resolve $basedir: $!"; $self = { 'name' => $header->{'check-script'}, 'type' => $header->{'type'}, # lintian.desc has no type 'abbrev' => $header->{'abbrev'}, 'needs_info' => [split /\s*,\s*/, $header->{'needs-info'}//''], }; $self->{'script_pkg'} = $self->{'name'}; $self->{'script_pkg'} =~ s,/,::,go; $self->{'script_pkg'} =~ s,[-.],_,go; $self->{'script_path'} = $dir . '/' . $self->{'name'} . '.pm'; $self->{'script_run'} = undef; # init'ed with $self->load_check later if ($self->{'type'}//'ALL' ne 'ALL') { $self->{'type-table'} = {}; for my $t (split /\s*,\s*/o, $self->{'type'}) { $self->{'type-table'}->{$t} = 1; } } for my $pg (@tags) { my $ti; croak "Missing Tag field for tag in $basedir/${checkname}.desc" unless $pg->{'tag'}; $ti = Lintian::Tag::Info->new($pg, $self->{'name'}, $self->{'type'}); $self->{'tag-table'}->{$ti->tag} = $ti; } bless $self, $class; return $self; } =item $cs->name Returns the "name" of the check script. This is the value in the Check-Script field in the file. =item $cs->type Returns the value stored in the "Type" field of the file. For the purpose of testing if the check applies to a given package type, the L method can be used instead. Note in rare cases this may return undef. This is the case for the lintian.desc, where this field is simply not present. =item $cs->abbrev Returns the value of the Abbrev field from the desc file. =item $cs->script_path Returns the (expected) path to the script implementing this check. =cut Lintian::CheckScript->mk_ro_accessors(qw(name type abbrev script_path)); =item needs_info Returns a list of all items listed in the Needs-Info field. Neither the list nor its contents should be modified. =cut sub needs_info { my ($self) = @_; return @{ $self->{'needs_info'} }; } =item $cs->is_check_type ($type) Returns a truth value if this check can be applied to a $type package. Note if $cs->type return undef, this will return a truth value for all inputs. =cut sub is_check_type { my ($self, $type) = @_; return 1 if ($self->{'type'}//'ALL') eq 'ALL'; return $self->{'type-table'}->{$type}; } =item $cs->get_tag ($tagname) Return the L or undef (if the tag is not in this check). =cut sub get_tag { my ($self, $tag) = @_; return $self->{'tag-table'}->{$tag}; } =item $cs->tags Returns the list of tag names in the check. The list nor its contents should be modified. =cut sub tags { my ($self) = @_; return keys %{ $self->{'tag-table'}}; } =item $cs->load_check Attempts to load the check. On failure, the load error will be propagated to the caller. On success it returns normally. =cut sub load_check { my ($self) = @_; return if defined $self->{'script_run'}; # Special-case: has no perl module return if $self->name eq 'lintian'; my $cs_path = $self->{'script_path'}; my $cs_pkg = $self->{'script_pkg'}; my $run; if (!-f $cs_path) { # Try the "old" extensionless path (i.e. strip ".pm") # - This can go away in 2.5.15 or later my $alt_path = substr($cs_path, 0, -3); if (-f $alt_path) { my $name = $self->name; warnings::warnif('deprecated', "[deprecated] Check module for $name missing \".pm\" extension" . " (should be: $cs_path)"); $self->{'script_path'} = $cs_path = $alt_path; } } require $cs_path; { # minimal "no strict refs" scope. no strict 'refs'; $run = \&{'Lintian::' . $cs_pkg . '::run'} if defined &{'Lintian::' . $cs_pkg . '::run'}; } die "$cs_path does not have a run-sub.\n" unless defined $run; $self->{'script_run'} = $run; return; } =item $cs->run_check ($proc, $group) Run the check on C<$proc>, which is in the L C<$group>. C<$proc> should be a L and must have the proper collections run on it prior to calling this method (See L). The method may error out if loading the check failed or if the check itself calls die/croak/fail/etc. Returns normally on success; the return value has no semantic meaning and is currently C. NB: load_check can be used to determine if the check itself is loadable. =cut sub run_check { my ($self, $proc, $group) = @_; # Special-case: has no perl module return if $self->name eq 'lintian'; my @args = ($proc->pkg_name,$proc->pkg_type,$proc->info,$proc,$group); my $cs_run = $self->{'script_run'}; unless (defined $cs_run) { $self->load_check; $cs_run = $self->{'script_run'}; } $cs_run->(@args); return; } =back =head1 AUTHOR Originally written by Niels Thykier for Lintian. =head1 SEE ALSO lintian(1), Lintian::Profile(3), Lintian::Tag::Info(3) =cut 1; __END__ # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Data.pm0000664000000000000000000002777712311317627015056 0ustar # -*- perl -*- # Lintian::Data -- interface to query lists of keywords # Copyright (C) 2008 Russ Allbery # # 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, see . package Lintian::Data; use strict; use warnings; use autodie; use Carp qw(croak confess); use Lintian::Util qw(strip); our $LAZY_LOAD = 1; sub new { my ($class, @args) = @_; my $type = $args[0]; my $self = {}; my $data; croak 'no data type specified' unless $type; bless $self, $class; $data = $self->_get_data($type); if ($data) { # We already loaded this data file - just pull from cache $self->{'data'} = $data; } else { # Pretend we loaded this data file, but leave a "reminder" to # do it later. $self->{'promise'} = \@args; $self->_force_promise if not $LAZY_LOAD; } return $self; } # _get_data fetches an already loaded dataset by type. It is # mostly useful for determining whether it makes sense to make # sense to be "lazy". # # _load_data loads a dataset into %data, which is private to this # module. Use %data as a cache to avoid loading the same dataset more # than once (which means lintian doesn't support having the list # change over the life of the process). The returned object knows # what dataset, stored in %data, it is supposed to act on. { my %data; sub _get_data { my ($self, $type) = @_; return $data{$type}; } sub _load_data { my ($self, $type, $separator, $code) = @_; unless (exists $data{$type}) { my $vendors = $self->_get_vendor_names; my $dataset = {}; my ($fd, $vno) = $self->_open_data_file($type, $vendors, 0); $self->_parse_file($type, $fd, $dataset, $separator, $code, $vendors, $vno); close($fd); $data{$type} = $dataset; } return $self->{'data'} = $data{$type}; } } { my $profile; # Set vendor profile sub set_vendor { my (undef, $vendor) = @_; $profile = $vendor; return; } # Returns a listref of profile names sub _get_vendor_names { my ($self) = @_; croak 'No vendor given' unless $profile; my @vendors = (); push @vendors, reverse @{ $profile->profile_list }; return \@vendors; } # Open the (next) data file # # $self->_open_data_file ($type, $vendors, $start) # - $type is the data file (e.g. "common/architectures") # - $vendors is the listref return by _get_vendor_names # - $start is an index into $vendors (the first $vendor to try) sub _open_data_file { my ($self, $type, $vendors, $start) = @_; my $file; my $cur = $start; OUTER: for (; $cur < scalar @$vendors ; $cur++) { my $vendorpart = "vendors/$vendors->[$cur]/data/$type"; foreach my $datafile ($profile->include_path($vendorpart)) { if (-f $datafile) { $file = $datafile; last OUTER; } } } if (not defined $file and $cur == scalar @$vendors) { foreach my $datafile ($profile->include_path("data/$type")) { if (-f $datafile) { $file = $datafile; last; } } $cur++; } if (not defined $file) { croak "Unknown data file: $type" unless $start; croak "No parent data file for $vendors->[$start]"; } open(my $fd, '<', "$file"); return ($fd, $cur); } } sub _parse_file { my ($self, $type, $fd, $dataset, $separator, $code, $vendors, $vno) = @_; my $filename = $type; $filename = $vendors->[$vno] . '/' . $type if $vno < scalar @$vendors; local $.; while (my $line = <$fd>) { strip($line); next if $line =~ m{ \A \#}xsm or $line eq ''; if ($line =~ s/^\@//) { my ($op, $value) = split(m{ \s++ }xsm, $line, 2); if ($op eq 'delete') { croak "Missing key after \@delete in $filename at line $." unless defined $value && length $value; delete $dataset->{$value}; } elsif ($op eq 'include-parent') { my ($pfd, $pvo) = $self->_open_data_file($type, $vendors,$vno +1); $self->_parse_file($type, $pfd, $dataset, $separator, $code, $vendors, $pvo); close($pfd); } elsif ($op eq 'if-vendor-is' or $op eq 'if-vendor-is-not') { my ($desired_name, $remain) = split(m{ \s++ }xsm, $value, 2); my $actual_name; croak "Missing vendor name after \@$op" unless $desired_name; croak "Missing command after vendor name for \@$op" unless $remain; $actual_name = (split('/', $vendors->[0], 2))[0]; if ($op eq 'if-vendor-is') { next if $actual_name ne $desired_name; } else { next if $actual_name eq $desired_name; } $line = $remain; redo; } else { croak "Unknown operation \@$op in $filename at line $."; } next; } my ($key, $val); if (defined $separator) { ($key, $val) = split(/$separator/, $line, 2); if ($code) { my $pval = $dataset->{$key}; $val = $code->($key, $val, $pval) if $code; next if !defined $val && defined $pval; unless (defined $val) { next if defined $pval; croak "undefined value for $key (type: $type)"; } } } else { ($key, $val) = ($line => 1); } $dataset->{$key} = $val; } return; } sub _force_promise { my ($self) = @_; my $promise = $self->{promise}; my $data = $self->_load_data(@$promise); delete $self->{promise}; return $data; } # Query a data object for whether a particular keyword is valid. sub known { my ($self, $keyword) = @_; if(!defined($keyword)) { return; } my $data = $self->{data} || $self->_force_promise; return (exists $data->{$keyword}) ? 1 : undef; } # Return all known keywords (in no particular order). sub all { my ($self) = @_; my $data = $self->{data} || $self->_force_promise; return keys(%{$data}); } # Query a data object for the value attached to a particular keyword. sub value { my ($self, $keyword) = @_; my $data = $self->{data} || $self->_force_promise; return (exists $data->{$keyword}) ? $data->{$keyword} : undef; } 1; =head1 NAME Lintian::Data - Lintian interface to query lists of keywords =head1 SYNOPSIS my $keyword; my $list = Lintian::Data->new('type'); if ($list->known($keyword)) { # do something ... } my $hash = Lintian::Data->new('another-type', qr{\s++}); if ($list->value($keyword) > 1) { # do something ... } my @keywords = $list->all; =head1 DESCRIPTION Lintian::Data provides a way of loading a list of keywords or key/value pairs from a file in the Lintian root and then querying that list. The lists are stored in the F directory of the Lintian root and consist of one keyword or key/value pair per line. Blank lines and lines beginning with C<#> are ignored. Leading and trailing whitespace is stripped. If requested, the lines are split into key/value pairs with a given separator regular expression. Otherwise, keywords are taken verbatim as they are listed in the file and may include spaces. This module allows lists such as menu sections, doc-base sections, obsolete packages, package fields, and so forth to be stored in simple, easily editable files. NB: By default Lintian::Data is lazy and defers loading of the data file until it is actually needed. =head2 Interface for the CODE argument This section describes the interface between for the CODE argument for the class method new. The sub will be called once for each key/pair with three arguments, KEY, VALUE and CURVALUE. The first two are the key/value pair parsed from the data file and CURVALUE is current value associated with the key. CURVALUE will be C the first time the sub is called with that KEY argument. The sub can then modify VALUE in some way and return the new value for that KEY. If CURVALUE is not C, the sub may return C to indicate that the current value should still be used. It is not permissible for the sub to return C if CURVALUE is C. Where Perl semantics allow it, the sub can modify CURVALUE and the changes will be reflected in the result. As an example, if CURVALUE is a hashref, new keys can be inserted etc. =head1 CLASS METHODS =over 4 =item new(TYPE [,SEPARATOR[, CODE]]) Creates a new Lintian::Data object for the given TYPE. TYPE is a partial path relative to the F directory and should correspond to a file in that directory. The contents of that file will be loaded into memory and returned as part of the newly created object. On error, new() throws an exception. If SEPARATOR is given, it will be used as a regular expression for splitting the lines into key/value pairs. If CODE is also given, it is assumed to be a sub that will pre-process the key/value pairs. See the L above. A given file will only be loaded once. If new() is called again with the same TYPE argument, the data previously loaded will be reused, avoiding multiple file reads. =item set_vendor(PROFILE) Specifies vendor profile. It must be set before the first data file is loaded. =back =head1 INSTANCE METHODS =over 4 =item all() Returns all keywords listed in the data file as a list (in no particular order; the original order is not preserved). In a scalar context, returns the number of keywords. =item known(KEYWORD) Returns true if KEYWORD was listed in the data file represented by this Lintian::Data instance and false otherwise. =item value(KEYWORD) Returns the value attached to KEYWORD if it was listed in the data file represented by this Lintian::Data instance and the undefined value otherwise. If SEPARATOR was not given, the value will '1'. =back =head1 DIAGNOSTICS =over 4 =item no data type specified new() was called without a TYPE argument. =item unknown data type %s The TYPE argument to new() did not correspond to a file in the F directory of the Lintian root. =item undefined value for %s (type: %s) The CODE argument return undef for the KEY and no previous value for that KEY was available. =back =head1 FILES =over 4 =item LINTIAN_ROOT/data The files loaded by this module must be located in this directory. Relative paths containing a C are permitted, so files may be organized in subdirectories in this directory. =back =head1 ENVIRONMENT =over 4 =item LINTIAN_ROOT This variable must be set to Lintian's root directory (normally F when Lintian is installed as a Debian package). The B program normally takes care of doing this. This module doesn't care about the contents of this directory other than expecting the F subdirectory of this directory to contain its files. =back =head1 AUTHOR Originally written by Russ Allbery for Lintian. =head1 SEE ALSO lintian(1) =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Output.pm0000664000000000000000000003155612311317631015466 0ustar # Copyright © 2008 Frank Lichtenheld # # 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::Output; use strict; use warnings; use v5.8.0; # for PerlIO use parent qw(Class::Accessor::Fast); use Exporter qw(import); # Force export as soon as possible, since some of the modules we load also # depend on us and the sequencing can cause things not to be exported # otherwise. our (%EXPORT_TAGS, @EXPORT_OK); BEGIN { %EXPORT_TAGS = ( messages => [qw(msg v_msg warning debug_msg delimiter)], util => [qw(_global_or_object)]); @EXPORT_OK = (@{$EXPORT_TAGS{messages}},@{$EXPORT_TAGS{util}},'string'); } =head1 NAME Lintian::Output - Lintian messaging handling =head1 SYNOPSIS # non-OO use Lintian::Output qw(:messages); $Lintian::Output::GLOBAL->verbosity_level(1); msg("Something interesting"); v_msg("Something less interesting"); debug_msg(3, "Something very specfific"); # OO use Lintian::Output; my $out = Lintian::Output->new; $out->verbosity_level(-1); $out->msg("Something interesting"); $out->v_msg("Something less interesting"); $out->debug_msg(3, "Something very specfific"); =head1 DESCRIPTION Lintian::Output is used for all interaction between lintian and the user. It is designed to be easily extendable via subclassing. To simplify usage in the most common cases, many Lintian::Output methods can be used as class methods and will therefor automatically use the object $Lintian::Output::GLOBAL unless their first argument C. =cut use Lintian::Tags (); # support for ANSI color output via colored() use Term::ANSIColor (); =head1 ACCESSORS The following fields define the behaviours of Lintian::Output. =over 4 =item verbosity_level Determine how verbose the output should be. "0" is the default value (tags and msg only), "-1" is quiet (tags only) and "1" is verbose (tags, msg and v_msg). =item debug If set to a positive integer, will enable all debug messages issued with a level lower or equal to its value. =item color Can take the values "never", "always", "auto" or "html". Whether to colorize tags based on their severity. The default is "never", which never uses color. "always" will always use color, "auto" will use color only if the output is going to a terminal. "html" will output HTML tags with a color style attribute (instead of ANSI color escape sequences). =item stdout I/O handle to use for output of messages and tags. Defaults to C<\*STDOUT>. =item stderr I/O handle to use for warnings. Defaults to C<\*STDERR>. =item showdescription Whether to show the description of a tag when printing it. =item issuedtags Hash containing the names of tags which have been issued. =back =cut Lintian::Output->mk_accessors( qw(verbosity_level debug color colors stdout stderr showdescription issuedtags) ); # for the non-OO interface my %default_colors = ( 'E' => 'red', 'W' => 'yellow', 'I' => 'cyan', 'P' => 'green' ); our $GLOBAL = Lintian::Output->new; sub new { my ($class, %options) = @_; my $self = {%options}; bless($self, $class); $self->stdout(\*STDOUT); $self->stderr(\*STDERR); $self->colors({%default_colors}); $self->issuedtags({}); # Set defaults to avoid "uninitialized" warnings $self->verbosity_level(0); $self->color('never'); return $self; } =head1 CLASS/INSTANCE METHODS These methods can be used both with and without an object. If no object is given, they will fall back to the $Lintian::Output::GLOBAL object. =over 4 =item C Will output the strings given in @args, one per line, each line prefixed with 'N: '. Will do nothing if verbosity_level is less than 0. =item C Will output the strings given in @args, one per line, each line prefixed with 'N: '. Will do nothing unless verbosity_level is greater than 0. =item C $level should be a positive integer. Will output the strings given in @args, one per line, each line prefixed with 'N: '. Will do nothing unless debug is set to a positive integer >= $level. =cut sub msg { my ($self, @args) = _global_or_object(@_); return if $self->verbosity_level < 0; $self->_message(@args); return; } sub v_msg { my ($self, @args) = _global_or_object(@_); return unless $self->verbosity_level > 0; $self->_message(@args); return; } sub debug_msg { my ($self, $level, @args) = _global_or_object(@_); return unless $self->debug && ($self->debug >= $level); $self->_message(@args); return; } =item C Will output the strings given in @args on stderr, one per line, each line prefixed with 'warning: '. =cut sub warning { my ($self, @args) = _global_or_object(@_); return if $self->verbosity_level < 0; $self->_warning(@args); return; } =item C Gives back a string that is usable for separating messages in the output. Note: This does not print anything, it just gives back the string, use with one of the methods above, e.g. v_msg('foo', delimiter(), 'bar'); =cut sub delimiter { my ($self) = _global_or_object(@_); return $self->_delimiter; } =item C Indicate that the named tag has been issued. Returns a boolean value indicating whether the tag had previously been issued by the object. =cut sub issued_tag { my ($self, $tag_name) = _global_or_object(@_); return $self->issuedtags->{$tag_name}++ ? 1 : 0; } =item C TODO: Is this part of the public interface? =cut sub string { my ($self, $lead, @args) = _global_or_object(@_); my $output = ''; if (@args) { foreach (@args) { $output .= $lead.': '.$_."\n"; } } elsif ($lead) { $output .= $lead.".\n"; } return $output; } =back =head1 INSTANCE METHODS FOR CONTEXT-AWARE OUTPUT The following methods are designed to be called at specific points during program execution and require very specific arguments. They can only be called as instance methods. =over 4 =item C Print a tag. The first two arguments are hash reference with the information about the package and the tag, $extra is the extra information for the tag (if any) as an array reference, and $override is either undef if the tag is not overridden or the L for this tag. Called from Lintian::Tags::tag(). =cut sub print_tag { my ($self, $pkg_info, $tag_info, $information, $override) = @_; $information = ' ' . $self->_quote_print($information) if $information ne ''; my $code = $tag_info->code; my $tag_color = $self->{colors}{$code}; my $fpkg_info = $self->_format_pkg_info($pkg_info, $tag_info, $override); my $tag; if ($self->_do_color) { if ($self->color eq 'html') { my $escaped = $tag_info->{tag}; $escaped =~ s/&/&/g; $escaped =~ s//>/g; $tag .= qq($escaped); } else { $tag .= Term::ANSIColor::colored($tag_info->tag, $tag_color); } } else { $tag .= $tag_info->tag; } if ($override && @{ $override->comments }) { foreach my $c (@{ $override->comments }) { $self->msg($self->_quote_print($c)); } } $self->_print('', $fpkg_info, "$tag$information"); if (not $self->issued_tag($tag_info->tag) and $self->showdescription) { my $description; if ($self->_do_color && $self->color eq 'html') { $description = $tag_info->description('html', ' '); } else { $description = $tag_info->description('text', ' '); } $self->_print('', 'N', ''); $self->_print('', 'N', split("\n", $description)); $self->_print('', 'N', ''); } return; } # Helper function to "print_tag" to decide the output format of the tag line. Used by # the "FullEWI" subclass. # sub _format_pkg_info { my ($self, $pkg_info, $tag_info, $override) = @_; my $code = $tag_info->code; $code = 'X' if $tag_info->experimental; $code = 'O' if defined $override; my $type = ''; $type = " $pkg_info->{type}" if $pkg_info->{type} ne 'binary'; return "$code: $pkg_info->{package}$type"; } =item C Called before lintian starts to handle each package. The version in Lintian::Output uses v_msg() for output. Called from Tags::select_pkg(). =cut sub print_start_pkg { my ($self, $pkg_info) = @_; my $object = 'package'; if ($pkg_info->{type} eq 'changes') { $object = 'file'; } $self->v_msg( $self->delimiter, join(q{ }, "Processing $pkg_info->{type} $object $pkg_info->{package}", "(version $pkg_info->{version}, arch $pkg_info->{arch}) ...")); return; } =item C Called after lintian is finished with a package. The version in Lintian::Output does nothing. Called from Lintian::Tags::file_start() and Lintian::Tags::file_end(). =cut sub print_end_pkg { return; } =back =head1 INSTANCE METHODS FOR SUBCLASSING The following methods are only intended for subclassing and are only available as instance methods. The methods mentioned in L usually only check whether they should do anything at all (according to the values of verbosity_level and debug) and then call one of the following methods to do the actual printing. Almost all of them finally call _print() to do that. This convoluted scheme is necessary to be able to use the methods above as class methods and still make the behaviour overridable in subclasses. =over 4 =item C<_message(@args)> Called by msg(), v_msg(), and debug_msg() to print the message. =cut sub _message { my ($self, @args) = @_; $self->_print('', 'N', @args); return; } =item C<_warning(@args)> Called by warning() to print the warning. =cut sub _warning { my ($self, @args) = @_; $self->_print($self->stderr, 'warning', @args); return; } =item C<_print($stream, $lead, @args)> Called by _message(), _warning(), and print_tag() to do the actual printing. If you override these three methods, you can change the calling convention for this method to pretty much whatever you want. The version in Lintian::Output prints the strings in @args, one per line, each line preceded by $lead to the I/O handle given in $stream. =cut sub _print { my ($self, $stream, $lead, @args) = @_; $stream ||= $self->stdout; my $output = $self->string($lead, @args); print {$stream} $output; return; } =item C<_delimiter()> Called by delimiter(). =cut sub _delimiter { return '----'; } =item C<_do_color()> Called by print_tag() to determine whether to produce colored output. =cut sub _do_color { my ($self) = @_; return ( $self->color eq 'always' || $self->color eq 'html' || ($self->color eq 'auto' && -t $self->stdout)); } =item C<_quote_print($string)> Called to quote a string. By default it will replace all non-printables with "?". Sub-classes can override it if they allow non-ascii printables etc. =cut sub _quote_print { my ($self, $string) = @_; $string =~ s/[^[:print:]]/?/go; return $string; } =back =head1 CLASS METHODS =over 4 =item C<_global_or_object(@args)> If $args[0] is a object which satisfies C returns @args, otherwise returns C<($Lintian::Output::GLOBAL, @_)>. =back =cut sub _global_or_object { if (ref($_[0]) and $_[0]->isa('Lintian::Output')) { return @_; } else { return ($Lintian::Output::GLOBAL, @_); } } 1; __END__ =head1 EXPORTS Lintian::Output exports nothing by default, but the following export tags are available: =over 4 =item :messages Exports all the methods in L =item :util Exports all the methods in L =back =head1 AUTHOR Originally written by Frank Lichtenheld for Lintian. =head1 SEE ALSO lintian(1) =cut # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Command/0000775000000000000000000000000012311320323015164 5ustar lintian-2.5.22ubuntu1/lib/Lintian/Command/Simple.pm0000664000000000000000000001624212311317641016771 0ustar # Copyright (C) 2010 Raphael Geissert # # 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, see . package Lintian::Command::Simple; use strict; use warnings; use autodie qw(open close chdir); use Exporter qw(import); use POSIX qw(:sys_wait_h); our @EXPORT_OK = qw(rundir background background_dir wait_any kill_all); =head1 NAME Lintian::Command::Simple - Run commands without pipes =head1 SYNOPSIS use Lintian::Command::Simple qw(background rundir); Lintian::Command::Simple::rundir ('./some-dir/', 'echo', 'hello world'); # Start a command in the background: Lintian::Command::Simple::background('sleep', 10); print wait() > 0 ? 'success' : 'failure'; =head1 DESCRIPTION Lintian::Command::Simple allows running commands with the capability of running them "in the background" (asynchronously.) Pipes are not handled at all, except for those handled internally by the shell. See 'perldoc -f exec's note about shell metacharacters. If you want to pipe to/from Perl, look at Lintian::Command instead. =over 4 =item rundir(dir, command, argument [, ...]) Executes the given C with the given arguments and in C returns the status code as one would see it from a shell script. Being fair, the only advantage of this function over the CORE::system() function is the way the return status is reported and the chdir support. =cut sub rundir { my $pid; my $res; $pid = fork(); if (not defined($pid)) { # failed $res = -1; } elsif ($pid > 0) { # parent waitpid($pid, 0); $res = $? >> 8; } else { # child my $dir = shift; close(STDIN); open(STDIN, '<', '/dev/null'); chdir($dir); CORE::exec @_ or die("Failed to exec '$_[0]': $!\n"); } return $res; } =item background(command, argument [, ...]) Executes the given C with the given arguments asynchronously and returns the process id of the child process. A return value of -1 indicates an error. This can either be a problem when calling CORE::fork() or when trying to run another command before calling wait() to reap the previous command. =cut sub background { my $pid = fork(); if (not defined($pid)) { # failed return -1; } elsif ($pid > 0) { # parent return $pid; } else { # child close(STDIN); open(STDIN, '<', '/dev/null'); CORE::exec @_ or die("Failed to exec '$_[0]': $!\n"); } } =item background_dir(dir, command, argument [, ...]) Executes the given C with the given arguments asynchronously in dir and returns the process id of the child process. A return value of -1 indicates an error. This can either be a problem when calling CORE::fork() or when trying to run another command before calling wait() to reap the previous command. =cut sub background_dir { my $pid = fork(); if (not defined($pid)) { # failed return -1; } elsif ($pid > 0) { # parent return $pid; } else { # child my $dir = shift; close(STDIN); open(STDIN, '<', '/dev/null'); chdir($dir); CORE::exec @_ or die("Failed to exec '$_[0]': $!\n"); } } =item wait_any (hashref[, nohang]) When starting multiple processes asynchronously, it is common to wait until the first is done. While the CORE::wait() function is usually used for that very purpose, it does not provide the desired results when the processes were started via the OO interface. To help with this task, wait_any() can take a hash ref where the key of each entry is the pid of that command. There are no requirements for the value (which can be used for any application specific purpose). Under this mode, wait_any() waits until any child process is done. The key (and value) associated the pid of the reaped child will then be removed from the hashref. The exitcode of the child is available via C<$?> as usual. The results and return value are undefined when under this mode wait_any() "accidentally" reaps a process not listed in the hashref. The return value in scalar context is value associated with the pid of the reaped processed. In list context, the pid and value are returned as a pair. Whenever waitpid() would return -1, wait_any() returns undef or a null value so that it is safe to: while($cmd = wait_any(\%hash)) { something; } The same is true whenever the hash reference points to an empty hash. If C is also given, wait_any will attempt to reap any child process non-blockingly. If no child can be reaped, it will immediately return (like there were no more processes left) instead of waiting. =cut sub wait_any { my ($jobs, $nohang) = @_; my $reaped_pid; my $extra; $nohang = WNOHANG if $nohang; $nohang //= 0; return unless scalar keys %$jobs; $reaped_pid = waitpid(-1, $nohang); if ($reaped_pid == -1 or ($nohang and $reaped_pid == 0)) { return; } # Did we reap some other pid? return unless exists $jobs->{$reaped_pid}; $extra = delete $jobs->{$reaped_pid}; return ($reaped_pid, $extra) if wantarray; return $extra; } =item kill_all(hashref[, signal]) In a similar way to wait_any(), it is possible to pass a hash reference to kill_all(). It will then kill all of the processes (default signal being "TERM") followed by a reaping of the processes. All reaped processes (and their values) will be removed from the set. Any entries remaining in the hashref are processes that did not terminate (or did not terminate yet). =cut sub kill_all { my ($jobs, $signal) = @_; my $count = 0; my @jobs; $signal //= 'TERM'; foreach my $pid (keys %$jobs) { push @jobs, $pid if kill $signal, $pid; } foreach my $pid (@jobs) { if (waitpid($pid, 0) == $pid) { $count++; delete $jobs->{$pid}; } } return scalar @jobs; } 1; __END__ =back =head1 TODO Provide the necessary methods to modify the environment variables of the to-be-executed commands. This would let us drop C (from Lintian::Util) and make C more useful. =head1 NOTES Unless specified by prefixing the package name, every reference to a function/method in this documentation refers to the functions/methods provided by this package itself. =head1 CAVEATS Combining asynchronous jobs (e.g. via Lintian::Command) and calls to wait_any() can lead to unexpected results. =head1 AUTHOR Originally written by Raphael Geissert for Lintian. =cut # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Internal/0000775000000000000000000000000012311320323015362 5ustar lintian-2.5.22ubuntu1/lib/Lintian/Internal/FrontendUtil.pm0000664000000000000000000000666112311317641020357 0ustar # -*- perl -*- # Lintian::Internal::FrontendUtil -- internal helpers for lintian frontends # Copyright (C) 2011 Niels Thykier # # 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, see . package Lintian::Internal::FrontendUtil; use strict; use warnings; use autodie qw(opendir closedir); use Exporter qw(import); use Dpkg::Vendor; use Lintian::CollScript; use Lintian::Util qw(check_path fail); our @EXPORT_OK = qw(check_test_feature default_parallel load_collections split_tag); # Check if we are testing a specific feature # - e.g. vendor-libdpkg-perl sub check_test_feature{ my $env = $ENV{LINTIAN_TEST_FEATURE}; return 0 unless $env; foreach my $feat (@_){ return 1 if($env =~ m/$feat/); } return 0; } # load_collections ($visitor, $dirname) # # Load collections from $dirname and pass them to $visitor. $visitor # will be called once per collection as it has been loaded. The first # (and only) argument to $visitor is the collection as an instance of # Lintian::CollScript instance. sub load_collections { my ($visitor, $dirname) = @_; opendir(my $dir, $dirname); foreach my $file (readdir $dir) { next if $file =~ m/^\./; next unless $file =~ m/\.desc$/; my $cs = Lintian::CollScript->new("$dirname/$file"); $visitor->($cs); } closedir($dir); return; } # Return the default number of parallization to be used sub default_parallel { # check cpuinfo for the number of cores... my $cpus; chomp($cpus = `nproc 2>&1`); if ($? == 0 and $cpus =~ m/^\d+$/) { # Running up to twice the number of cores usually gets the most out # of the CPUs and disks but it might be too aggresive to be the # default for -j. Only use +1 then. return $cpus + 1; } # No decent number of jobs? Just use 2 as a default return 2; } { # Matches something like: (1:2.0-3) [arch1 arch2] # - captures the version and the architectures my $verarchre = qr,(?: \s* \(( [^)]++ )\) \s* \[ ( [^]]++ ) \]),xo; # ^^^^^^^^ ^^^^^^^^^^^^ # ( version ) [architecture ] # matches the full deal: # 1 222 3333 4444444 5555 666 777 # - T: pkg type (version) [arch]: tag [...] # ^^^^^^^^^^^^^^^^^^^^^ # Where the marked part(s) are optional values. The numbers above # the example are the capture groups. my $TAG_REGEX = qr/([EWIXOP]): (\S+)(?: (\S+)(?:$verarchre)?)?: (\S+)(?:\s+(.*))?/o; sub split_tag { my ($tag_input) = @_; my $pkg_type; return unless $tag_input =~ m/^${TAG_REGEX}$/o; # default value... $pkg_type = $3//'binary'; return ($1, $2, $pkg_type, $4, $5, $6, $7); } } 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Tags.pm0000664000000000000000000007061012311317635015062 0ustar # Lintian::Tags -- manipulate and output Lintian tags # Copyright (C) 1998-2004 Various authors # Copyright (C) 2005 Frank Lichtenheld # Copyright (C) 2009 Russ Allbery # # 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, see . package Lintian::Tags; use strict; use warnings; use autodie; use Carp qw(croak); use Exporter qw(import); use List::MoreUtils qw(any); use Lintian::Architecture qw(:all); use Lintian::Output; use Lintian::Tag::Override; use Lintian::Util qw(fail $PKGNAME_REGEX strip); BEGIN { our @EXPORT_OK = qw(tag); } # The default Lintian::Tags object, set to the first one constructed and # used by default if tag() is called without a reference to a particular # object. our $GLOBAL; # Ordered lists of severities and certainties, used for display level parsing. our @SEVERITIES = qw(pedantic wishlist minor normal important serious); our @CERTAINTIES = qw(wild-guess possible certain); =head1 NAME Lintian::Tags - Manipulate and output Lintian tags =head1 SYNOPSIS my $tags = Lintian::Tags->new; my $proc = Lintian::Processable::Package->new ('/path/to/file'); $tags->file_start ($proc); $tags->file_overrides ('/path/to/an/overrides-file'); $tags->tag ('lintian-tag', 'extra tag information'); tag ('other-lintian-tag', 'with some extra data'); tag ('third-lintian-tag'); # with no extra). my %overrides = $tags->overrides ($proc); my %stats = $tags->statistics; if ($tags->displayed ('lintian-tag')) { # do something if that tag would be displayed... } =head1 DESCRIPTION This module stores metadata about Lintian tags, stores configuration about which tags should be displayed, handles displaying tags if appropriate, and stores cumulative statistics about what tags have been seen. It also accepts override information and determines whether a tag has been overridden, keeping override statistics. Finally, it supports answering metadata questions about Lintian tags, such as what references Lintian has for that tag. Each Lintian::Tags object has its own tag list, file list, and associated statistics. Separate Lintian::Tags objects can be maintained and used independently. However, as a convenience for Lintian's most typical use case and for backward compatibility, the first created Lintian::Tags object is maintained as a global default. The tag() method can be called as a global function instead of a method, in which case it will act on that global default Lintian::Tags object. =head1 CLASS METHODS =over 4 =item new() Creates a new Lintian::Tags object, initializes all of its internal statistics and configuration to the defaults, and returns the newly created object. =cut #'# for cperl-mode # Each Lintian::Tags object holds the following information: # # current: # The currently selected file (not package), keying into files. # # display_level: # A two-level hash with severity as the first key and certainty as the # second key, with values 0 (do not show tag) or 1 (show tag). This # # display_source: # A hash of sources to display, where source is the keyword from a Ref # metadata entry in the tag. This is used to select only tags from # Policy, or devref, or so forth. # # files: # Info about a specific file. Key is the the filename, value another # hash with the following keys: # - pkg: package name # - version: package version # - arch: package architecture # - type: one of 'binary', 'udeb' or 'source' # - overrides: hash with all overrides for this file as keys # # profile: # The Lintian::Profile (if any). If not undef, this is used to # determine known tags, severity of tags (indirectly) and whether # or not a given tag is overridable. It also partly affects # which tags are suppressed (see the suppressed method below). # # show_experimental: # True if experimental tags should be displayed. False by default. # # show_overrides: # True if overridden tags should be displayed. False by default. # # statistics: # Statistics per file. Key is the filename, value another hash with # the following keys: # - tags: hash of tag names to count of times seen # - severity: hash of severities to count of times seen # - certainty: hash of certainties to count of times seen # - types: hash of tag code (E/W/I/P) to count of times seen # - overrides: hash whose keys and values are the same as the above # The overrides hash holds the tag data for tags that were overridden. # Data for overridden tags is not added to the regular hashes. sub new { my ($class) = @_; my $self = { current => undef, display_level => { wishlist => { 'wild-guess' => 0, possible => 0, certain => 0 }, minor => { 'wild-guess' => 0, possible => 0, certain => 1 }, normal => { 'wild-guess' => 0, possible => 1, certain => 1 }, important => { 'wild-guess' => 1, possible => 1, certain => 1 }, serious => { 'wild-guess' => 1, possible => 1, certain => 1 }, }, display_source => {}, files => {}, ignored_overrides => {}, profile => undef, show_experimental => 0, show_overrides => 0, statistics => {}, }; bless($self, $class); $GLOBAL = $self unless $GLOBAL; return $self; } =item tag(TAG, [EXTRA, ...]) Issue the Lintian tag TAG, possibly suppressing it or not displaying it based on configuration. EXTRA, if present, is additional information to display with the tag. It can be given as a list of strings, in which case they're joined by a single space before display. This method can be called either as a class method (which is exported by the Lintian::Tags module) or as an instance method. If called as a class method, it uses the first-constructed Lintian::Tags object as its underlying object. This method throws an exception if it is called without file_start() being called first or if an attempt is made to issue an unknown tag. =cut #'# for cperl-mode # Check if a given tag with associated extra information is overridden by the # overrides for the current file. This may require checking for matches # against override data with wildcards. Returns undef if the tag is not # overridden or the override if the tag is. # # The override will be returned as a list ref where the first element is the # name of the tag and the second is the "extra" for the override (if any). sub _check_overrides { my ($self, $tag, $extra) = @_; my $overrides = $self->{info}{$self->{current}}{'overrides-data'}{$tag}; my $stats = $self->{info}{$self->{current}}{overrides}{$tag}; return unless $overrides; if (exists $overrides->{''}) { $stats->{''}++; return $overrides->{''}; } elsif ($extra ne '' and exists $overrides->{$extra}) { $stats->{$extra}++; return $overrides->{$extra}; } elsif ($extra ne '') { for (sort keys %$overrides) { my $override = $overrides->{$_}; if ($override->is_pattern && $override->overrides($extra)){ $stats->{$_}++; return $override; } } } return; } # Record tag statistics. Takes the tag, the Lintian::Tag::Info object and a # flag saying whether the tag was overridden. sub _record_stats { my ($self, $tag, $info, $override) = @_; my $stats = $self->{statistics}{$self->{current}}; my $code = $info->code; $code = 'X' if $info->experimental; if ($override) { $stats = $self->{statistics}{$self->{current}}{overrides}; } $stats->{tags}{$tag}++; $stats->{severity}{$info->severity}++; $stats->{certainty}{$info->certainty}++; $stats->{types}{$code}++; return; } sub tag { unless (ref $_[0] eq 'Lintian::Tags') { unshift(@_, $GLOBAL); } my ($self, $tag, @extra) = @_; unless ($self->{current}) { die "tried to issue tag $tag without starting a file"; } # Retrieve the tag metadata and display the tag if the configuration # says to display it. # Note, we get the known as it will be suppressed by # $self->suppressed below if the tag is not enabled. my $info = $self->{profile}->get_tag($tag, 1); unless ($info) { croak "tried to issue unknown tag $tag"; } return if $self->suppressed($tag); # Clean up @extra and collapse it to a string. Lintian code # doesn't treat the distinction between extra arguments to tag() as # significant, so we may as well take care of this up front. @extra = grep { defined($_) and $_ ne '' } map { s/\n/\\n/g; $_ } @extra; my $extra = join(' ', @extra); $extra = '' unless defined $extra; my $override = $self->_check_overrides($tag, $extra); $self->_record_stats($tag, $info, $override); return if (defined($override) and not $self->{show_overrides}); return unless $self->displayed($tag); my $file = $self->{info}{$self->{current}}; $Lintian::Output::GLOBAL->print_tag($file, $info, $extra, $override); return; } =back =head1 INSTANCE METHODS =head2 Configuration =over 4 =item display(OPERATION, RELATION, SEVERITY, CERTAINTY) Configure which tags are displayed by severity and certainty. OPERATION is C<+> to display the indicated tags, C<-> to not display the indicated tags, or C<=> to not display any tags except the indicated ones. RELATION is one of C<< < >>, C<< <= >>, C<=>, C<< >= >>, or C<< > >>. The OPERATION will be applied to all pairs of severity and certainty that match the given RELATION on the SEVERITY and CERTAINTY arguments. If either of those arguments are undefined, the action applies to any value for that variable. For example: $tags->display('=', '>=', 'important'); turns off display of all tags and then enables display of any tag (with any certainty) of severity important or higher. $tags->display('+', '>', 'normal', 'possible'); adds to the current configuration display of all tags with a severity higher than normal and a certainty higher than possible (so important/certain and serious/certain). $tags->display('-', '=', 'minor', 'possible'); turns off display of tags of severity minor and certainty possible. This method throws an exception on errors, such as an unknown severity or certainty or an impossible constraint (like C<< > serious >>). =cut # Generate a subset of a list given the element and the relation. This # function makes a hard assumption that $rel will be one of <, <=, =, >=, # or >. It is not syntax-checked. sub _relation_subset { my ($self, $element, $rel, @list) = @_; if ($rel eq '=') { return grep { $_ eq $element } @list; } if (substr($rel, 0, 1) eq '<') { @list = reverse @list; } my $found; for my $i (0..$#list) { if ($element eq $list[$i]) { $found = $i; last; } } return unless defined($found); if (length($rel) > 1) { return @list[$found .. $#list]; } else { return if $found == $#list; return @list[($found + 1) .. $#list]; } } # Given the operation, relation, severity, and certainty, produce a # human-readable representation of the display level string for errors. sub _format_level { my ($self, $op, $rel, $severity, $certainty) = @_; if (not defined $severity and not defined $certainty) { return "$op $rel"; } elsif (not defined $severity) { return "$op $rel $certainty (certainty)"; } elsif (not defined $certainty) { return "$op $rel $severity (severity)"; } else { return "$op $rel $severity/$certainty"; } } sub display { my ($self, $op, $rel, $severity, $certainty) = @_; unless ($op =~ /^[+=-]\z/ and $rel =~ /^(?:[<>]=?|=)\z/) { my $error = $self->_format_level($op, $rel, $severity, $certainty); die 'invalid display constraint ' . $error; } if ($op eq '=') { for my $s (@SEVERITIES) { for my $c (@CERTAINTIES) { $self->{display_level}{$s}{$c} = 0; } } } my $status = ($op eq '-' ? 0 : 1); my (@severities, @certainties); if ($severity) { @severities = $self->_relation_subset($severity, $rel, @SEVERITIES); } else { @severities = @SEVERITIES; } if ($certainty) { @certainties = $self->_relation_subset($certainty, $rel, @CERTAINTIES); } else { @certainties = @CERTAINTIES; } unless (@severities and @certainties) { my $error = $self->_format_level($op, $rel, $severity, $certainty); die 'invalid display constraint ' . $error; } for my $s (@severities) { for my $c (@certainties) { $self->{display_level}{$s}{$c} = $status; } } return; } =item show_experimental(BOOL) If BOOL is true, configure experimental tags to be shown. If BOOL is false, configure experimental tags to not be shown. =cut sub show_experimental { my ($self, $bool) = @_; $self->{show_experimental} = $bool ? 1 : 0; return; } =item show_overrides(BOOL) If BOOL is true, configure overridden tags to be shown. If BOOL is false, configure overridden tags to not be shown. =cut sub show_overrides { my ($self, $bool) = @_; $self->{show_overrides} = $bool ? 1 : 0; return; } =item sources([SOURCE [, ...]]) Limits the displayed tags to only those from the listed sources. One or more sources may be given. If no sources are given, resets the Lintian::Tags object to display tags from any source. Tag sources are the names of references from the Ref metadata for the tags. =cut sub sources { my ($self, @sources) = @_; $self->{display_source} = {}; for my $source (@sources) { $self->{display_source}{$source} = 1; } return; } =item profile(PROFILE) Use the PROFILE (Lintian::Profile) to determine which tags are suppressed, the severity of the tags and which tags are non-overridable. =cut sub profile { my ($self, $profile) = @_; $self->{profile} = $profile; return; } =back =head2 File Metadata =over 4 =item file_start(PROC) Adds a new file from a processable, initializes the data structures used for statistics and overrides, and makes it the default file for which tags will be issued. Also call Lintian::Output::print_end_pkg() to end the previous file, if any, and Lintian::Output::print_start_pkg() to start the new file. This method throws an exception if the file being added was already added earlier. =cut sub file_start { my ($self, $proc) = @_; my $file = $proc->pkg_path; if (exists $self->{info}{$file}) { die "duplicate of file $file added to Lintian::Tags object"; } $self->{info}{$file} = { file => $file, package => $proc->pkg_name, version => $proc->pkg_version, arch => $proc->pkg_arch, type => $proc->pkg_type, processable => $proc, overrides => {}, 'overrides-data' => {}, }; $self->{statistics}{$file} = { types => {}, severity => {}, certainty => {}, tags => {}, overrides => {}, }; if ($self->{current}) { my $info = $self->{info}{$self->{current}}; $Lintian::Output::GLOBAL->print_end_pkg($info); } $self->{current} = $file; $Lintian::Output::GLOBAL->print_start_pkg($self->{info}{$file}); return; } =item file_overrides(OVERRIDE-FILE) Read OVERRIDE-FILE and add the overrides found there which match the metadata of the current file (package and type). The overrides are added to the overrides hash in the info hash entry for the current file. file_start() must be called before this method. This method throws an exception if there is no current file and calls fail() if the override file cannot be opened. =cut sub file_overrides { my ($self, $overrides) = @_; my $profile = $self->{profile}; unless (defined $self->{current}) { die 'no current file when adding overrides'; } my $info = $self->{info}{$self->{current}}; my $comments = []; my $last_over = undef; open(my $file, '<', $overrides); local $_; OVERRIDE: while (<$file>) { strip; if ($_ eq '') { # Throw away comments, as they are not attached to a tag # also throw away the option of "carrying over" the last # comment $comments = []; $last_over = undef; next; } if (/^#/o){ s/^# ?//o; push @$comments, $_; next; } s/\s+/ /go; my $override = $_; # The override looks like the following: # [[pkg-name] [arch-list] [pkg-type]:] [extra] # - Note we do a strict package name check here because # parsing overrides is a bit ambigious (see #699628) if ( $override =~ m/\A (?: # start optional part (\Q$info->{package}\E)? # optionally starts with package name -> $1 (?: \s*+ \[([^\]]+?)\])? # optionally followed by an [arch-list] (like in B-D) -> $2 (?:\s*+ ([a-z]+) \s*+ )? # optionally followed by the type -> $3 :\s++)? # end optional part ([\-\.a-zA-Z_0-9]+ (?:\s.+)?) # [extra] -> $4 \Z/xsm ) { # Valid - so far at least my ($opkg_name, $archlist, $opkg_type, $tagdata)= ($1, $2, $3, $4); my ($tag, $extra) = split(m/ /o, $tagdata, 2); my $tagover; my $data; if ($opkg_type and $opkg_type ne $info->{type}) { tag( 'malformed-override', join(q{ }, "Override of $tag for package type $opkg_type", "(expecting $info->{type}) at line $.")); next; } if ($info->{arch} eq 'all' && $archlist) { tag( 'malformed-override', join(q{ }, 'Architecture list for arch:all package', "at line $. (for tag $tag)")); next; } if ($archlist) { # parse and figure my (@archs) = split(m/\s++/o, $archlist); my $negated = 0; my $found = 0; foreach my $a (@archs){ $negated++ if $a =~ s/^!//o; if (is_arch_wildcard($a)) { $found = 1 if wildcard_includes_arch($a, $info->{arch}); } elsif (is_arch($a)) { $found = 1 if $a eq $info->{arch}; } else { tag( 'malformed-override', join(q{ }, "Unknown architecture \"$a\"", "at line $. (for tag $tag)")); next OVERRIDE; } } if ($negated > 0 && scalar @archs != $negated){ # missing a ! somewhere tag( 'malformed-override', join(q{ }, 'Inconsistent architecture negation', "at line $. (for tag $tag)")); next; } # missing wildcard checks and sanity checking archs $arch if ($negated) { $found = $found ? 0 : 1; } next unless $found; } if ($profile && !$profile->is_overridable($tag)) { $self->{ignored_overrides}{$tag}++; next; } if ($last_over && $last_over->tag eq $tag && !scalar @$comments) { # There are no new comments, no "empty line" in between and # this tag is the same as the last, so we "carry over" the # comment from the previous override (if any). # # Since L::T::Override is (supposed to be) immutable, the new # override can share the reference with the previous one. $comments = $last_over->comments; } $extra = '' unless defined $extra; $data = { 'extra' => $extra, 'comments' => $comments, }; $comments = []; $tagover = Lintian::Tag::Override->new($tag, $data); $info->{'overrides-data'}{$tag}{$extra} = $tagover; $info->{overrides}{$tag}{$extra} = 0; $last_over = $tagover; } else { # We know this to be a bad override; check if it might be # an override for a different package. if ($override !~ m/^\Q$info->{package}\E[\s:\[]/) { # So, we got an override that does not start with the # package name - cases include: # 1 ... # 2 someting: ... # 3 [archlist] : ... # 4 : ... # 5 : ... # # Case 2 and 5 are hard to distinguish from one another. # First, remove the archlist if present (simplifies # the next step) $override =~ s/([^:\[]+)?\[[^\]]+\]([^:]*):/$1 $2:/; $override =~ s/\s\s++/ /g; if ($override =~ m/^($PKGNAME_REGEX)?(?: (?:binary|changes|source|udeb))? ?:/o ) { my $opkg = $1; # Looks like a wrong package name - technically, # $opkg could be a tag if the tag information is # present, but it is very unlikely. tag( 'malformed-override', join(q{ }, 'Possibly wrong package in override', "at line $. (got $opkg, expected $info->{package})" )); next; } } # Nope, package name appears to match (or not present # atall), not sure what the problem is so we just throw a # generic parse error. tag 'malformed-override', "Cannot parse line $.: $_"; } } close($file); return; } =item load_overrides Loads overrides for the current file. This is basically a short-hand for finding the overrides file in the lab and calling L on it if it is present. =cut sub load_overrides { my ($self, $overrides) = @_; my $current = $self->{current}; my $lpkg; my $overrides_file; unless (defined($current)) { die 'no current file when loading overrides'; } $lpkg = $self->{'info'}{$current}{'processable'}; $overrides_file = $lpkg->info->lab_data_path('override'); if (-f $overrides_file) { $self->file_overrides($overrides_file); } return; } =item file_end() Ends processing of a file. This does two things. First it emits "unused-override" tags for all unused overrides. Secondly, it calls Lintian::Output::print_end_pkg to mark the end of the package. Note that this method is called by file_start if it detects another entry is already active. =cut sub file_end { my ($self) = @_; if (my $current = $self->{current}) { my $info = $self->{info}{$current}; my $pkg_overrides = $info->{overrides}; for my $tag (sort(keys %{$pkg_overrides})) { my $overrides; next if $self->suppressed($tag); $overrides = $pkg_overrides->{$tag}; for my $extra (sort(keys %{$overrides})) { next if $overrides->{$extra}; $self->tag('unused-override', $tag, $extra); } } $Lintian::Output::GLOBAL->print_end_pkg($info); } undef $self->{current}; return; } =back =head2 Statistics =over 4 =item overrides(PROC) Returns a reference to the overrides hash for the given processable. The keys of this hash are the tags for which are overrides. The value for each key is another hash, whose keys are the extra data matched by that override and whose values are the counts of tags that matched that override. Overrides matching any tag by that name are stored with the empty string as metadata, so: my $overrides = $tags->overrides('/some/file'); print "$overrides->{'some-tag'}{''}\n"; will print out the number of tags that matched a general override for the tag some-tag, regardless of what extra data was associated with it. =cut sub overrides { my ($self, $proc) = @_; if ($proc and $self->{info}{$proc->pkg_path}) { return $self->{info}{$proc->pkg_path}{overrides}; } return; } =item statistics([PROC]) Returns a reference to the statistics hash for the given proccessable or, if PROC is omitted, a reference to the full statistics hash for all files. In the latter case, the returned hash reference has as keys the file names and as values the per-file statistics. The per-file statistics has a set of hashes of keys to times seen in tags: tag names (the C key), severities (the C key), certainties (the C key), and tag codes (the C key). It also has a C key which has as its value another hash with those same four keys, which keeps statistics on overridden tags (not included in the regular counts). =cut sub statistics { my ($self, $proc) = @_; return $self->{statistics}{$proc->pkg_path} if $proc; return $self->{statistics}; } =back =head2 Tag Reporting =over 4 =item displayed(TAG) Returns true if the given tag would be displayed given the current configuration, false otherwise. This does not check overrides, only whether the tag severity, certainty, and source warrants display given the configuration. =cut sub displayed { my ($self, $tag) = @_; # Note, we get the known as it will be suppressed by # $self->suppressed below if the tag is not enabled. my $info = $self->{profile}->get_tag($tag, 1); return 0 if ($info->experimental and not $self->{show_experimental}); return 0 if $self->suppressed($tag); my $severity = $info->severity; my $certainty = $info->certainty; my $display = $self->{display_level}{$severity}{$certainty}; # If display_source is set, we need to check whether any of the references # of this tag occur in display_source. if (keys %{ $self->{display_source} }) { my @sources = $info->sources; unless (any { $self->{display_source}{$_} } @sources) { $display = 0; } } return $display; } =item suppressed(TAG) Returns true if the given tag would be suppressed given the current configuration, false otherwise. This is different than displayed() in that a tag is only suppressed if Lintian treats the tag as if it's never been seen, doesn't update statistics, and doesn't change its exit status. Tags are suppressed via profile(). =cut #'# for cperl-mode sub suppressed { my ($self, $tag) = @_; return 1 if $self->{profile} and not $self->{profile}->get_tag($tag); return; } =item ignored_overrides() Returns a hash of tags, for which overrides have been ignored. The keys are tag names and the value is the number of overrides that has been ignored. =cut sub ignored_overrides { my ($self) = @_; return $self->{ignored_overrides}; } =back =head1 AUTHOR Originally written by Russ Allbery for Lintian. =head1 SEE ALSO lintian(1), Lintian::Output(3), Lintian::Tag::Info(3) =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Architecture.pm0000664000000000000000000001443112311317626016605 0ustar # -*- perl -*- # Lintian::Architecture # Copyright (C) 2011 Niels Thykier # # 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, see . package Lintian::Architecture; use strict; use warnings; use Exporter qw(import); use Lintian::Data; our (@EXPORT_OK, %EXPORT_TAGS); @EXPORT_OK = (qw( is_arch_wildcard is_arch is_arch_or_wildcard expand_arch_wildcard wildcard_includes_arch )); %EXPORT_TAGS = (all => \@EXPORT_OK); =encoding utf-8 =head1 NAME Lintian::Architecture -- Lintian API for handling architectures and wildcards =head1 SYNOPSIS use Lintian::Architecture qw(:all); print "arch\n" if is_arch ('i386'); print "wildcard\n" if is_arch_wildcard ('any'); print "either arch or wc\n" if is_arch_or_wildcard ('linux-any'); foreach my $arch (expand_arch_wildcard ('any')) { print "any expands to $arch\n"; } =head1 DESCRIPTION Lintian API for checking and expanding architectures and architecture wildcards. The functions are backed by a L file, so it may be out of date (use private/refresh-archs to update it). Generally all architecture names are in the format "$os-$arch" and wildcards are "$os-any" or "any-$cpu", though there are exceptions: =over 4 =item * "all" is the "architecture independent" architecture. Source: Policy §5.6.8 (v3.9.3) =item * "any" is a wildcard matching any architecture except "all". Source: Policy §5.6.8 (v3.9.3) =item * All other cases of "$arch" are short for "linux-$arch" Source: Policy §11.1 (v3.9.3) =back Note that the architecture and cpu name are not always identical (example architecture "armhf" has cpu name "arm"). =head1 FUNCTIONS The following methods are exportable: =over 4 =cut # Setup code # Valid architecture wildcards. my %ARCH_WILDCARDS = (); # Maps aliases to the "original" arch name. # (e.g. "linux-amd64" => "amd64") my %ALT_ARCH_NAMES = (); sub _parse_arch { my ($archstr, $raw) = @_; # NB: "$os-$cpu" ne $archstr in some cases my ($os, $cpu) = split /\s++/o, $raw; # map $os-any (e.g. "linux-any") and any-$arch (e.g. "any-amd64") to # the relevant architectures. $ARCH_WILDCARDS{"$os-any"}->{$archstr} = 1; $ARCH_WILDCARDS{"any-$cpu"}->{$archstr} = 1; $ARCH_WILDCARDS{'any'}->{$archstr} = 1; if ($os eq 'linux') { my ($long, $short); # Per Policy §11.1 (3.9.3): # #"""[architecture] strings are in the format "os-arch", though # the OS part is sometimes elided, as when the OS is Linux.""" # # i.e. "linux-amd64" and "amd64" are aliases, so handle them # as such. Currently, dpkg-architecture -L gives us "amd64" # but in case it changes to "linux-amd64", we are prepared. if ($archstr =~ m/^linux-/) { # It may be temping to use $cpu here, but it does not work # for (e.g.) arm based architectures. Instead extract the # "short" architecture name from $archstr (undef, $short) = split m/-/, $archstr, 2; $long = $archstr; } else { $short = $archstr; $long = "$os-$short"; } $ALT_ARCH_NAMES{$short} = $archstr; $ALT_ARCH_NAMES{$long} = $archstr; } return 1; } my $ARCH_RAW = Lintian::Data->new('common/architectures', qr/\s*+\Q||\E\s*+/o, \&_parse_arch); =item is_arch_wildcard ($wc) Returns a truth value if $wc is a known architecture wildcard. Note: 'any' is considered a wildcard and not an architecture. =cut sub is_arch_wildcard { my ($wc) = @_; $ARCH_RAW->known('any') unless %ARCH_WILDCARDS; return exists $ARCH_WILDCARDS{$wc} ? 1 : 0; } =item is_arch ($arch) Returns a truth value if $arch is (an alias of) a Debian machine architecture OR the special value "all". It returns a false value for architecture wildcards (including "any") and unknown architectures. =cut sub is_arch { my ($arch) = @_; return 0 if $arch eq 'any'; return 1 if $arch eq 'all' or $ARCH_RAW->known($arch) or exists $ALT_ARCH_NAMES{$arch}; return 0; } =item is_arch_or_wildcard ($arch) Returns a truth value if $arch is either an architecture or an architecture wildcard. Shorthand for: is_arch ($arch) || is_arch_wildcard ($arch) =cut sub is_arch_or_wildcard { my ($arch) = @_; return is_arch($arch) || is_arch_wildcard($arch); } =item expand_arch_wildcard ($wc) Returns a list of architectures that this wildcard expands to. No order is guaranteed (even between calls). Returned values must not be modified. Note: This list is based on the architectures in Lintian's data file. However, many of these are not supported or used in Debian or any of its derivatives. The returned values matches the list generated by dpkg-architecture -L, so the returned list may use (e.g.) "amd64" for "linux-amd64". =cut sub expand_arch_wildcard { my ($wc) = @_; # Load the wildcards if it has not been done yet. $ARCH_RAW->known('any') unless %ARCH_WILDCARDS; return () unless exists $ARCH_WILDCARDS{$wc}; return keys %{ $ARCH_WILDCARDS{$wc} }; } =item wildcard_includes_arch ($wc, $arch) Returns a truth value if $arch is included in the list of architectures that $wc expands to. This is generally faster than grep { $_ eq $arch } expand_arch_wildcard ($wc) It also properly handles cases like "linux-amd64" and "amd64" being aliases. =cut sub wildcard_includes_arch { my ($wc, $arch) = @_; # Load the wildcards if it has not been done yet. $ARCH_RAW->known('any') unless %ARCH_WILDCARDS; $arch = $ALT_ARCH_NAMES{$arch} if exists $ALT_ARCH_NAMES{$arch}; return exists $ARCH_WILDCARDS{$wc}->{$arch} ? 1 : 0; } =back =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/DepMap.pm0000664000000000000000000003303612311317630015326 0ustar # Copyright (C) 2009 Raphael Geissert # # 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, see . package Lintian::DepMap; use strict; use warnings; use parent 'Clone'; use List::MoreUtils qw(any); use Lintian::Util qw(fail); =head1 NAME Lintian::DepMap - Dependencies map/tree creator =head1 SYNOPSIS use Lintian::DepMap; my $map = Lintian::DepMap->new(); # know about A: $map->add('A'); # B depends on A: $map->add('B', 'A'); # prints 'A': print $map->selectable(); # indicate we are working on 'A' (optional): $map->select('A'); # do 'A' ... work work work # we are done with A: $map->satisfy('A'); # prints 'B': print $map->selectable(); =head1 DESCRIPTION Lintian::DepMap is a simple dependencies map/tree creator and "resolver". It works by creating a tree based on the indicated dependencies and destroying it to resolve it. Note: in the below documentation a C means a node name; no internal reference is ever returned and therefore never accepted as a parameter. =over 4 =item new() Creates a new Lintian::DepMap object and returns a reference to it. =cut sub new { my ($class, $pkg) = @_; my $self = {}; bless($self, $class); return $self; } =item initialise() Ensure, by reconstructing if necessary, the map's status is the initial. That is, partially or fully resolved maps can be restored to its original state by calling this method. This can be useful when the same map will be used multiple times. E.g. $map->add('A'); $map->satisfy('A'); # prints nothing print $map->selectable(); $map->initialise(); print $map->selectable(); =cut #' sub initialise { my $self = shift; delete $self->{'selected'}; while (my ($parent, $childs) = each %{$self->{'satisfied_nodes'}}) { if (@{$childs}) { for my $child (@{$childs}) { $self->add($child, $parent); } } $self->add($parent); } delete $self->{'satisfied_nodes'}; return 1; } =item add(node[, dependency[, dependency[, ...]]]) Adds the given C to the map marking any second or more parameter as its dependencies. E.g. # A has no dependency: $map->add('A'); # B depends on A: $map->add('B', 'A'); =cut sub add { my $self = shift; my ($node, @parents) = @_; my $parents = 0; if (exists($self->{'unknown'}{$node}) && defined($self->{'unknown'}{$node})) { $self->{'known'}{$node} = $self->{'unknown'}{$node}; delete $self->{'unknown'}{$node}; } $self->{'known'}{$node}++; $self->{'nodes'}{$node}->{'branches'} = {} unless(exists($self->{'nodes'}{$node}->{'branches'})); $self->{'nodes'}{$node}->{'parents'} = {} unless(exists($self->{'nodes'}{$node}->{'parents'})); while (my $parent = pop @parents) { $parents = 1; if (exists($self->{'known'}{$parent})) { $self->{'known'}{$parent}++; } else { $self->{'unknown'}{$parent}++; } $self->{'nodes'}{$parent}->{'branches'}->{$node} = $self->{'nodes'}{$node}; $self->{'nodes'}{$node}->{'parents'}->{$parent} = $self->{'nodes'}{$parent}; } unless ($parents || scalar %{$self->{'nodes'}{$node}->{'parents'}}) { $self->{'pending'}{$node} = 1; } elsif (exists $self->{'pending'}{$node}) { delete $self->{'pending'}{$node}; } return 1; } =item addp(node[, prefix, dependency[, dependency[, ...]]]) Adds the given C to the map marking any third or more parameters, after prefixing them with C, as its dependencies. E.g. # pA and pB have no dependency: $map->add('pA'); $map->add('pA'); # C depends on pA and pB: $map->addp('C', 'p', 'A', 'B'); =cut sub addp { my ($self,$node,$prefix) = (shift,shift,shift); my @deps; while (my $dep = shift) { push @deps, $prefix . $dep; } return $self->add($node, @deps); } =item satisfy(node) Indicates that the given C has been satisfied/done. The given C is no longer marked as being selected, if it was; all of its branches that have no other parent are now selectable() and all the references to C are deleted except the one from the known() list. E.g. # A has no dependencies: $map->add('A'); # B depends on A: $map->add('B', 'A'); # we work on A, and we are done: $map->satisfy('A'); # B is now available: $map->selectable('B'); B: shall the requested node not exist this method die()s. =cut sub satisfy { my $self = shift; my $node = shift; if (any {$_ eq $node} $self->missing()) { fail( "Attempted to mark node '$node' as satisfied but it is not " .'reachable, perhaps you forgot to add() it first?'); } if (not exists($self->{'nodes'}{$node})) { fail( "Attempted to mark node '$node' as satisfied but it is not " .'reachable, perhaps you forgot to satisfy() its dependencies first?' ); } return 0 unless (exists($self->{'pending'}{$node})); delete $self->{'selected'}{$node} if exists($self->{'selected'}{$node}); $self->{'satisfied_nodes'}{$node} = [keys %{$self->{'nodes'}{$node}{'branches'}}]; for my $branch (keys %{$self->{'nodes'}{$node}->{'branches'}}) { delete $self->{'nodes'}{$branch}->{'parents'}->{$node}; delete $self->{'nodes'}{$node}->{'branches'}->{$branch}; unless (scalar keys %{$self->{'nodes'}{$branch}->{'parents'}}) { $self->{'pending'}{$branch} = 1; } } delete $self->{'pending'}{$node}; delete $self->{'nodes'}{$node}; return 1; } =item done(node) Returns whether the given C has been satisfied/done. E.g. # A has no dependencies: $map->add('A'); # we work on A, and we are done: $map->satisfy('A'); print "A is done!" if ($map->done('A')); =cut sub done { my $self = shift; my $node = shift; return exists $self->{'satisfied_nodes'}->{$node}; } =item unlink(node) Removes all references to the given C except for the entry in the known() table. B: since all references are deleted it is possible that a node that depended on C may become available even when it was not expected to. B: this operation can B be reversed by the means of initialise(). E.g. $map->add('A'); # Prints A print $map->selectable(); # we later notice we don't want A $map->unlink('A'); # Prints nothing print $map->selectable(); B: shall the requested node not exist this method die()s. =cut sub unlink { my $self = shift; my $node = shift; if (not exists($self->{'nodes'}{$node})) { fail( "Attempted to unlink node '$node' but it can not be found" .', perhaps it has already been satisfied?'); } delete $self->{'pending'}{$node} if (exists($self->{'pending'}{$node})); delete $self->{'selected'}{$node} if (exists($self->{'selected'}{$node})); for my $parent (keys %{$self->{'nodes'}{$node}->{'parents'}}) { delete $self->{'nodes'}{$parent}{'branches'}{$node} if exists $self->{'nodes'}{$parent}{'branches'}{$node}; delete $self->{'nodes'}{$node}{'parents'}{$parent}; } for my $branch (keys %{$self->{'nodes'}{$node}->{'branches'}}) { delete $self->{'nodes'}{$branch}{'parents'}{$node}; delete $self->{'nodes'}{$node}{'branches'}{$branch}; } delete $self->{'nodes'}{$node}; return 1; } =item select(node) Marks the given C as selected to indicate that whatever it represents is being worked on. Note: this operation is not atomic. E.g. $map->add('A'); $map->add('B', 'A'); while($map->pending()) { for my $node ($map->selectable()) { $map->select($node); # work work work $map->satisfy($node); } } =cut sub select { my $self = shift; my $node = shift; if (not exists($self->{'pending'}{$node})) { fail( "Attempted to mark node '$node' as selected but it is not " .'known, perhaps its parents are not yet satisfied?'); } return 0 if (exists($self->{'selected'}{$node})); $self->{'selected'}{$node} = 1; return 1; } =item selectable([node]) If a C is specified returns TRUE if it can be select()ed. B: already select()ed nodes can not be re-selected, i.e. if the given C has already been selected this function will return FALSE; or any selected item will be omitted from the returned array, in case no C is specified. =cut sub selectable { my $self = shift; my $node = shift; return (exists $self->{'pending'}{$node} and not exists $self->{'selected'}{$node}) if (defined($node)); return grep {not exists $self->{'selected'}{$_}} keys %{$self->{'pending'}}; } =item selected([node]) If a C is specified returns TRUE if it is has been selected, FALSE otherwise. If no C is specified it returns an array with the name of all the nodes that have been select()ed but not yet satisfied. E.g. # We are going to work on A $map->select('A'); # Returns true $map->selected('A'); # Prints A print $map->selected(); =cut sub selected { my $self = shift; my $node = shift; return exists $self->{'selected'}{$node} if (defined($node)); return keys %{$self->{'selected'}}; } =item selectAll() select()s all the selectable() nodes. =cut sub selectAll { my $self = shift; for my $node ($self->selectable()) { $self->select($node); } return; } =item parents(node) Return an array with the name of the parent nodes for the given C. E.g. $map->add('A'); $map->add('B', 'A'); # Prints 'A' print $map->parents('B'); B: shall the requested node not exist this method die()s. =cut sub parents { my $self = shift; my $node = shift; if (not exists($self->{'nodes'}{$node})) { fail( "Attempted to get the parents of node '$node' but it is not" .'known, perhaps you forgot to add() it first?'); } return keys %{$self->{'nodes'}{$node}{'parents'}}; } =item pending() Return the number of nodes that can or have already been selected. E.g. $map->add('B', 'A'); # prints 1: print $map->pending(); $map->select('A'); # prints 1: print $map->pending(); $map->satisfy('A'); # prints 1 ('B' is now available): print $map->pending(); =cut sub pending { my $self = shift; return (scalar keys %{$self->{'pending'}}); } =item known() Return an array containing the names of nodes that were added. E.g. $map->add('B', 'A'); # prints 'B': print $map->known(); $map->add('A'); # prints 'A' and 'B': print $map->known(); =cut sub known { my $self = shift; return keys %{$self->{'known'}}; } =item missing() Return an array containing the names of nodes that were not added but that another node depended on it. E.g. $map->add('B', 'A'); # prints 'A': print $map->missing(); $map->add('A'); # prints nothing: print $map->missing(); # this also works; A depends on 'Z': $map->add('A', 'Z'); # but now this prints 'Z': print $map->missing(); =cut sub missing { my $self = shift; return keys %{$self->{'unknown'}}; } =item circular(['deep']) Returns an array of nodes that have a circular dependency. E.g. $map->add('A', 'B'); $map->add('B', 'A'); # Prints A and B print $map->circular(); B: since recursive/deep circular dependencies detection is a bit more resource expensive it is not the default. $map->add('A', 'B'); $map->add('B', 'C'); $map->add('C', 'A'); # No deep/recursive scanning is performed, prints nothing print $map->circular(); # deep scan, prints 'A, B, C' print $map->circular('deep'); =cut sub circular { my $self = shift; my $deep = shift; my @circ; $deep = (defined($deep) && $deep eq 'deep'); if ($deep) { my @nodes; my ($prev_satisfied, $prev_selected) = ($self->{'satisfied_nodes'}, $self->{'selected'}); while(@nodes = $self->selectable()) { for my $node (@nodes) { $self->satisfy($node); } } # there should be no nodes left: @circ = keys %{$self->{'nodes'}}; $self->{'satisfied_nodes'} = $prev_satisfied; $self->{'selected'} = $prev_selected; $self->initialise(); } else { for my $node (keys %{$self->{'nodes'}}) { my $node_p = $self->{'nodes'}{$node}->{'parents'}; my $node_b = $self->{'nodes'}{$node}->{'branches'}; push @circ, grep { exists $node_p->{$_} } keys %{$node_p}; } } return @circ; } 1; __END__ =back =head1 AUTHOR Originally written by Raphael Geissert for Lintian. =cut # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Path.pm0000664000000000000000000002045612311317631015057 0ustar # -*- perl -*- # Lintian::Path -- Representation of path entry in a package # Copyright (C) 2011 Niels Thykier # # 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, see . package Lintian::Path; use strict; use warnings; use parent qw(Class::Accessor::Fast); use overload ( '""' => \&_as_string, 'qr' => \&_as_regex_ref, 'bool' => \&_bool, '!' => \&_bool_not, '.' => \&_str_concat, 'cmp' => \&_str_cmp, 'eq' => \&_str_eq, 'ne' => \&_str_ne, 'fallback' => 0, ); use Carp qw(croak); use Lintian::Util qw(normalize_pkg_path); =head1 NAME Lintian::Path - Lintian representation of a path entry in a package =head1 SYNOPSIS my ($name, $type, $dir) = ('lintian', 'source', '/path/to/entry'); my $info = Lintian::Collect->new ($name, $type, $dir); my $path = $info->index('bin/ls'); if ($path->is_file) { # is file (or hardlink) if ($path->is_hardlink) { } if ($path->is_regular_file) { } } elsif ($path->is_dir) { # is dir if ($path->owner eq 'root') { } if ($path->group eq 'root') { } } elsif ($path->is_symlink) { my $normalized = $path->link_normalized; if (defined($normalized)) { my $more_info = $info->index($normalized); if (defined($more_info)) { # target exists in the package... } } } =head1 INSTANCE METHODS =over 4 =item Lintian::Path->new ($data) Internal constructor (used by Lintian::Collect::Package). Argument is a hash containing the data read from the index file. =cut sub new { my ($type, $data) = @_; my $self = { # copy the data into $self %$data, }; return bless $self, $type; } =item name Returns the name of the file (relative to the package root). NB: It will never have any leading "./" (or "/") in it. =item owner Returns the owner of the path entry as a username. NB: If only numerical owner information is available in the package, this may return a numerical owner (except uid 0 is always mapped to "root") =item group Returns the group of the path entry as a username. NB: If only numerical owner information is available in the package, this may return a numerical group (except gid 0 is always mapped to "root") =item uid Returns the uid of the owner of the path entry. NB: If the uid is not available, undef will be returned. This usually happens if the numerical data is not collected (e.g. in source packages) =item gid Returns the gid of the owner of the path entry. NB: If the gid is not available, undef will be returned. This usually happens if the numerical data is not collected (e.g. in source packages) =item link If this is a link (i.e. is_symlink or is_hardlink returns a truth value), this method returns the target of the link. If this is not a link, then this returns undef. If the path is a symlink this method can be used to determine if the symlink is relative or absolute. This is I true for hardlinks, where the link target is always relative to the root. NB: Even for symlinks, a leading "./" will be stripped. =item size Returns the size of the path in bytes. NB: This is only well defined for files. =item date Return the modification date as YYYY-MM-DD. =item operm Returns the file permissions of this object in octal (e.g. 0644). NB: This is only well defined for file entries that are subject to permissions (e.g. files). Particularly, the value is not well defined for symlinks. =item dirname Returns the "directory" part of the name, similar to dirname(1) or File::Basename::dirname. The dirname will end with a trailing slash (except the "root" dir - see below). NB: Returns the empty string for the "root" dir. =item basename Returns the "filename" part of the name, similar basename(1) or File::Basename::basename (without passing a suffix to strip in either case). For dirs, the basename will end with a trailing slash (except for the "root" dir - see below). NB: Returns the empty string for the "root" dir. =cut Lintian::Path->mk_ro_accessors( qw(name owner group link type uid gid size date operm dirname basename )); =item children Returns a list of children (as Lintian::Path objects) of this entry. The list and its contents should not be modified. NB: Returns the empty list for non-dir entries. =cut sub children { my ($self) = @_; return @{ $self->{'children'} }; } =item is_symlink Returns a truth value if this entry is a symlink. =item is_hardlink Returns a truth value if this entry is a hardlink to a regular file. NB: The target of a hardlink is always a regular file (and not a dir etc.). =item is_dir Returns a truth value if this entry is a dir. NB: Unlike the "-d $dir" operator this will never return true for symlinks, even if the symlink points to a dir. =item is_file Returns a truth value if this entry is a regular file (or a hardlink to one). NB: Unlike the "-f $dir" operator this will never return true for symlinks, even if the symlink points to a file (or hardlink). =item is_regular_file Returns a truth value if this entry is a regular file. This is eqv. to $path->is_file and not $path->is_hardlink. NB: Unlike the "-f $dir" operator this will never return true for symlinks, even if the symlink points to a file. =cut sub is_symlink { return $_[0]->type eq 'l'; } sub is_hardlink { return $_[0]->type eq 'h'; } sub is_dir { return $_[0]->type eq 'd'; } sub is_file { return $_[0]->type eq '-' || $_[0]->type eq 'h'; } sub is_regular_file { return $_[0]->type eq '-'; } =item link_normalized Returns the target of the link normalized against it's directory name. If the link cannot be normalized or normalized path might escape the package root, this method returns C. NB: This method will return the empty string for links pointing to the root dir of the package. Only available on "links" (i.e. symlinks or hardlinks). On non-links this will croak. B: This method is I to test if it is safe to open a given symlink. Use L for that. If you must use this method, remember to check that the target is not a symlink (or if it is, that it can be resolved safely). =cut sub link_normalized { my ($self) = @_; return $self->{'link_target'} if exists $self->{'link_target'}; my $name = $self->name; my $link = $self->link; croak "$name is not a link" unless defined $link; my $dir = $self->dirname; # hardlinks are always relative to the package root $dir = '/' if $self->is_hardlink; my $target = normalize_pkg_path($dir, $link); $self->{'link_target'} = $target; return $target; } ### OVERLOADED OVERATORS ### # overload apparently does not like the mk_ro_accessor, so use a level # of indirection sub _as_regex_ref { my ($self) = @_; my $name = $self->name; return qr{ \Q$name\E }xsm; } sub _as_string { my ($self) = @_; return $self->name; } sub _bool { # Always true (used in "if ($info->index('some/path')) {...}") return 1; } sub _bool_not { my ($self) = @_; return !$self->_bool; } sub _str_cmp { my ($self, $str, $swap) = @_; return $str cmp $self->name if $swap; return $self->name cmp $str; } sub _str_concat { my ($self, $str, $swap) = @_; return $str . $self->name if $swap; return $self->name . $str; } sub _str_eq { my ($self, $str) = @_; return $self->name eq $str; } sub _str_ne { my ($self, $str) = @_; return $self->name ne $str; } =back =head1 AUTHOR Originally written by Niels Thykier for Lintian. =head1 SEE ALSO lintian(1), Lintian::Collect(3), Lintian::Collect::Binary(3), Lintian::Collect::Source(3) =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Collect/0000775000000000000000000000000012311320323015173 5ustar lintian-2.5.22ubuntu1/lib/Lintian/Collect/Source.pm0000664000000000000000000004761212311317641017014 0ustar # -*- perl -*- # Lintian::Collect::Source -- interface to source package data collection # Copyright (C) 2008 Russ Allbery # Copyright (C) 2009 Raphael Geissert # # 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, see . package Lintian::Collect::Source; use strict; use warnings; use parent 'Lintian::Collect::Package'; use Carp qw(croak); use Cwd(); use Scalar::Util qw(blessed); use Lintian::Relation; use Parse::DebianChangelog; use Lintian::Util qw(read_dpkg_control $PKGNAME_REGEX); =head1 NAME Lintian::Collect::Source - Lintian interface to source package data collection =head1 SYNOPSIS my ($name, $type, $dir) = ('foobar', 'source', '/path/to/lab-entry'); my $collect = Lintian::Collect->new ($name, $type, $dir); if ($collect->native) { print "Package is native\n"; } =head1 DESCRIPTION Lintian::Collect::Source provides an interface to package data for source packages. It implements data collection methods specific to source packages. This module is in its infancy. Most of Lintian still reads all data from files in the laboratory whenever that data is needed and generates that data via collect scripts. The goal is to eventually access all data about source packages via this module so that the module can cache data where appropriate and possibly retire collect scripts in favor of caching that data in memory. =head1 CLASS METHODS =over 4 =item new (PACKAGE) Creates a new Lintian::Collect::Source object. Currently, PACKAGE is ignored. Normally, this method should not be called directly, only via the Lintian::Collect constructor. =cut # Initialize a new source package collect object. Takes the package name, # which is currently unused. sub new { my ($class, $pkg) = @_; my $self = {}; bless($self, $class); return $self; } =back =head1 INSTANCE METHODS In addition to the instance methods listed below, all instance methods documented in the L and L modules are also available. =over 4 =item changelog Returns the changelog of the source package as a Parse::DebianChangelog object, or C if the changelog is a symlink or doesn't exist. The debfiles collection script must have been run to create the changelog file, which this method expects to find in F. Needs-Info requirements for using I: L =cut sub changelog { my ($self) = @_; return $self->{changelog} if exists $self->{changelog}; my $dch = $self->debfiles('changelog'); if (-l $dch || !-f $dch) { $self->{changelog} = undef; } else { my %opts = (infile => $dch, quiet => 1); $self->{changelog} = Parse::DebianChangelog->init(\%opts); } return $self->{changelog}; } =item diffstat Returns the path to diffstat output run on the Debian packaging diff (a.k.a. the "diff.gz") for 1.0 non-native packages. For source packages without a "diff.gz" component, this returns the path to an empty file (this may be a device like /dev/null). Needs-Info requirements for using I: diffstat =cut sub diffstat { my ($self) = @_; return $self->{diffstat} if exists $self->{diffstat}; my $dstat = $self->lab_data_path('diffstat'); $dstat = '/dev/null' unless -e $dstat; $self->{diffstat} = $dstat; return $dstat; } =item native Returns true if the source package is native and false otherwise. This is generally determined from the source format, though in the 1.0 case the nativeness is determined by looking for the diff.gz (using the name of the source package and its version). If the source format is 1.0 and the version number is absent, this will return false (as native packages are a lot rarer than non-native ones). Note if the source format is missing, it is assumed to be an 1.0 package. Needs-Info requirements for using I: L =cut sub native { my ($self) = @_; return $self->{native} if exists $self->{native}; my $format = $self->field('format'); $format = '1.0' unless defined $format; if ($format =~ m/^\s*2\.0\s*$/o or $format =~ m/^\s*3\.0\s+\(quilt\)\s*$/o) { $self->{native} = 0; } elsif ($format =~ m/^\s*3\.0\s+\(native\)\s*$/o) { $self->{native} = 1; } else { my $version = $self->field('version'); my $base_dir = $self->base_dir(); if (defined $version) { $version =~ s/^\d+://; my $name = $self->{name}; $self->{native} = (-f "$base_dir/${name}_${version}.diff.gz" ? 0 : 1); } else { # We do not know, but assume it to non-native as it is # the most likely case. $self->{native} = 0; } } return $self->{native}; } =item binaries Returns a list of the binary and udeb packages listed in the F. Package names appear the same order in the returned list as they do in the control file. I: Package names that are not valid are silently ignored. Needs-Info requirements for using I: L =cut sub binaries { my ($self) = @_; # binary_package_type does all the work for us. $self->_load_dctrl unless exists $self->{binary_names}; return @{ $self->{binary_names} }; } =item binary_package_type (BINARY) Returns package type based on value of the Package-Type (or if absent, X-Package-Type) field. If the field is omitted, the default value "deb" is used. If the BINARY is not a binary listed in the source packages F file, this method return C. Needs-Info requirements for using I: L =cut sub binary_package_type { my ($self, $binary) = @_; if (exists $self->{binaries}) { return $self->{binaries}->{$binary} if exists $self->{binaries}->{$binary}; return; } # we need the binary fields for this. $self->_load_dctrl unless exists $self->{binary_field}; my %binaries; foreach my $pkg (keys %{ $self->{binary_field} }) { my $type = $self->binary_field($pkg, 'package-type'); $type ||= $self->binary_field($pkg, 'xc-package-type') || 'deb'; $binaries{$pkg} = lc $type; } $self->{binaries} = \%binaries; return $binaries{$binary} if exists $binaries{$binary}; return; } =item source_field([FIELD[, DEFAULT]]) Returns the content of the field FIELD from source package paragraph of the F file, or DEFAULT (defaulting to C) if the field is not present. Only the literal value of the field is returned. If FIELD is not given, return a hashref mapping field names to their values (in this case DEFAULT is ignored). This hashref should not be modified. The debfiles collection script must have been run to make the F file available. NB: If a field from the "dsc" file itself is desired, please use L instead. Needs-Info requirements for using I: L =cut # NB: We don't say "same as _load_ctrl" in the above, because # _load_ctrl has no POD and would not appear in the generated # API-docs. sub source_field { my ($self, $field, $def) = @_; $self->_load_dctrl unless exists $self->{source_field}; return $self->{source_field}{$field}//$def if $field; return $self->{source_field}; } =item orig_index (FILE) Like L except orig_index is based on the "orig tarballs" of the source packages. For native packages L and L are generally identical. NB: If sorted_index includes a debian packaging, it is was contained in upstream part of the source package (or the package is native). Needs-Info requirements for using I: src-orig-index =cut sub orig_index { my ($self, $file) = @_; return $self->_fetch_index_data('orig-index', 'src-orig-index', undef, $file); } =item sorted_orig_index Like L except sorted_orig_index is based on the "orig tarballs" of the source packages. For native packages L and L are generally identical. NB: If sorted_orig_index includes a debian packaging, it is was contained in upstream part of the source package (or the package is native). Needs-Info requirements for using I: L =cut sub sorted_orig_index { my ($self) = @_; # orig_index does all our work for us, so call it if # sorted_orig_index has not been created yet. $self->orig_index('') unless exists $self->{'sorted_orig-index'}; return @{ $self->{'sorted_orig-index'} }; } =item binary_field (PACKAGE[, FIELD[, DEFAULT]]) Returns the content of the field FIELD for the binary package PACKAGE in the F file, or DEFAULT (defaulting to C) if the field is not present. Inheritance of field values from the source section of the control file is not implemented. Only the literal value of the field is returned. If FIELD is not given, return a hashref mapping field names to their values (in this case, DEFAULT is ignored). This hashref should not be modified. If PACKAGE is not a binary built from this source, this returns C regardless of FIELD and DEFAULT. The debfiles collection script must have been run to make the F file available. Needs-Info requirements for using I: L =cut # NB: We don't say "same as _load_ctrl" in the above, because # _load_ctrl has no POD and would not appear in the generated # API-docs. sub binary_field { my ($self, $package, $field, $def) = @_; $self->_load_dctrl unless exists $self->{binary_field}; # Check if the package actually exists, otherwise it may create an # empty entry for it. if (exists $self->{binary_field}{$package}) { return $self->{binary_field}{$package}{$field}//$def if $field; return $self->{binary_field}{$package}; } return; } # Internal method to load binary and source fields from # debfiles/control # sub _load_dctrl Needs-Info debfiles sub _load_dctrl { my ($self) = @_; # Load the fields from d/control my $dctrl = $self->debfiles('control'); my $ok = 0; if (-l $dctrl) { # hmmm - this smells of trouble... if (-e $dctrl) { # it exists, but what does it point to? my $droot = Cwd::abs_path($self->debfiles); my $target = Cwd::abs_path($dctrl); if ($droot && $target && $target =~ m,^$droot/,) { # does not escape $droot, so it could work. $ok = 1; } } } else { $ok = 1 if -e $dctrl; } $self->{binary_names} = []; unless ($ok) { # Bad file, assume the package and field does not exist. $self->{binary_field} = {}; $self->{source_field} = {}; return; } my @control_data; my %packages; eval {@control_data = read_dpkg_control($dctrl);}; if ($@) { # If it is a syntax error, ignore it (we emit # syntax-error-in-control-file in this case via # control-file). die $@ unless $@ =~ /syntax error/; $self->{source_field} = {}; $self->{binary_field} = {}; return 0; } my $src = shift @control_data; # In theory you can craft a package such that d/control is empty. $self->{source_field} = $src // {}; foreach my $binary (@control_data) { my $pkg = $binary->{'package'}; next unless defined($pkg) and $pkg =~ m{\A $PKGNAME_REGEX \Z}xsmo; $packages{$pkg} = $binary; push(@{$self->{binary_names} }, $pkg); } $self->{binary_field} = \%packages; return 1; } =item binary_relation (PACKAGE, FIELD) Returns a L object for the specified FIELD in the binary package PACKAGE in the F file. FIELD should be one of the possible relationship fields of a Debian package or one of the following special values: =over 4 =item all The concatenation of Pre-Depends, Depends, Recommends, and Suggests. =item strong The concatenation of Pre-Depends and Depends. =item weak The concatenation of Recommends and Suggests. =back If FIELD isn't present in the package, the returned Lintian::Relation object will be empty (always satisfied and implies nothing). Any substvars in F will be represented in the returned relation as packages named after the substvar. Needs-Info requirements for using I: L =cut sub binary_relation { my ($self, $package, $field) = @_; $field = lc $field; return $self->{binary_relation}->{$package}->{$field} if exists $self->{binary_relation}->{$package}->{$field}; my %special = ( all => [qw(pre-depends depends recommends suggests)], strong => [qw(pre-depends depends)], weak => [qw(recommends suggests)]); my $result; if ($special{$field}) { $result = Lintian::Relation->and(map { $self->binary_relation($package, $_) } @{ $special{$field} }); } else { my %known = map { $_ => 1 } qw(pre-depends depends recommends suggests enhances breaks conflicts provides replaces); croak("unknown relation field $field") unless $known{$field}; my $value = $self->binary_field($package, $field); $result = Lintian::Relation->new($value); } $self->{binary_relation}->{$package}->{$field} = $result; return $result; } =item relation (FIELD) Returns a L object for the given build relationship field FIELD. In addition to the normal build relationship fields, the following special field names are supported: =over 4 =item build-depends-all The concatenation of Build-Depends, Build-Depends-Arch and Build-Depends-Indep. =item build-conflicts-all The concatenation of Build-Conflicts, Build-Conflicts-Arch and Build-Conflicts-Indep. =back If FIELD isn't present in the package, the returned Lintian::Relation object will be empty (always satisfied and implies nothing). Needs-Info requirements for using I: L =cut sub relation { my ($self, $field) = @_; $field = lc $field; return $self->{relation}->{$field} if exists $self->{relation}->{$field}; my $result; if ($field =~ /^build-(depends|conflicts)-all$/) { my $type = $1; my @fields = ("build-$type", "build-$type-indep", "build-$type-arch"); $result = Lintian::Relation->and(map { $self->relation($_) } @fields); } elsif ($field =~ /^build-(depends|conflicts)(?:-(?:arch|indep))?$/) { my $value = $self->field($field); $result = Lintian::Relation->new($value); } else { croak("unknown relation field $field"); } $self->{relation}{$field} = $result; return $result; } =item relation_noarch (FIELD) The same as L, but ignores architecture restrictions in the FIELD field. Needs-Info requirements for using I: L =cut sub relation_noarch { my ($self, $field) = @_; $field = lc $field; return $self->{relation_noarch}->{$field} if exists $self->{relation_noarch}->{$field}; my $result; if ($field =~ /^build-(depends|conflicts)-all$/) { my $type = $1; my @fields = ("build-$type", "build-$type-indep", "build-$type-arch"); $result = Lintian::Relation->and(map { $self->relation_noarch($_) } @fields); } elsif ($field =~ /^build-(depends|conflicts)(?:-(?:arch|indep))?$/) { my $value = $self->field($field); $result = Lintian::Relation->new_noarch($value); } else { croak("unknown relation field $field"); } $self->{relation_noarch}{$field} = $result; return $result; } =item debfiles ([FILE]) Returns the path to FILE in the debian dir of the extracted source package. FILE must be relative to the root of the debian dir and should be without leading slash (and and without "./"). If FILE is not in the debian dir, it returns the path to a non-existent file entry. It is not permitted for FILE to be C. If the "root" dir is desired either invoke this method without any arguments at all or use the empty string. The caveats of L also apply to this method. Needs-Info requirements for using I: debfiles =cut sub debfiles { ## no critic (Subroutines::RequireArgUnpacking) # - see L::Collect::unpacked for why my $self = shift(@_); if (defined($_[0]) && blessed($_[0])) { croak('debfiles does not accept blessed objects'); } return $self->_fetch_extracted_dir('debfiles', 'debfiles', @_); } =item index (FILE) For the general documentation of this method, please refer to the documentation of it in L. The index of a source package is not very well defined for non-native source packages. This method gives the index of the "unpacked" package (with 3.0 (quilt), this implies patches have been applied). If you want the index of what is listed in the upstream orig tarballs, then there is L. For native packages, the two indices are generally the same as they only have one tarball and their debian packaging is included in that tarball. IMPLEMENTATION DETAIL/CAVEAT: Lintian currently (2.5.11) generates this by running "find(1)" after unpacking the the source package. This has three consequences. First it means that (original) owner/group data is lost; Lintian inserts "root/root" here. This is usually not a problem as owner/group information for source packages do not really follow any standards. Secondly, permissions are modified by A) umask and B) laboratory set{g,u}id bits (the laboratory on lintian.d.o has setgid). This is *not* corrected/altered. Note Lintian (usually) breaks if any of the "user" bits are set in the umask, so that part of the permission bit I be reliable. Again, this shouldn't be a problem as permissions in source packages are usually not important. Though if accuracy is needed here, L may used instead (assuming it has the file in question). Third, hardlinking information is lost and no attempt has been made to restore it. Needs-Info requirements for using I: index =cut sub index { my ($self, $file) = @_; return $self->_fetch_index_data('index', 'index', undef, $file); } =item is_non_free Returns a truth value if the package appears to be non-free (based on the section field; "non-free/*" and "restricted/*") Needs-Info requirements for using I: L =cut sub is_non_free { my ($self) = @_; return $self->{is_non_free} if exists $self->{is_non_free}; $self->{is_non_free} = 0; $self->{is_non_free} = 1 if $self->source_field('section', 'main') =~ m,^(?:non-free|restricted|multiverse)/,; return $self->{is_non_free}; } =back =head1 AUTHOR Originally written by Russ Allbery for Lintian. =head1 SEE ALSO lintian(1), Lintian::Collect(3), Lintian::Relation(3) =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Collect/Package.pm0000664000000000000000000004416112311317640017102 0ustar # -*- perl -*- # Lintian::Collect::Package -- interface to data collection for packages # Copyright (C) 2011 Niels Thykier # # 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, see . # This handles common things for things available in source and binary packages package Lintian::Collect::Package; use strict; use warnings; use autodie; use parent 'Lintian::Collect'; use Carp qw(croak); use Scalar::Util qw(blessed); use Lintian::Path; use Lintian::Util qw(fail open_gz perm2oct normalize_pkg_path dequote_name); my %ROOT_INDEX_TEMPLATE = ( 'name' => '', 'type' => 'd', 'basename' => '', 'dirname' => '', 'owner' => 'root', 'group' => 'root', 'size' => 0, # Pick a "random" (but fixed) date # - hint, it's a good read. :) 'date' => '1998-01-25', 'time' => '22:55:34', ); # A cache for (probably) the 5 most common permission strings seen in # the wild. # It may seem obscene, but it has an extreme "hit-ratio" and it is # cheaper vastly than perm2oct. my %PERM_CACHE = map { $_ => perm2oct($_) } ( '-rw-r--r--', # standard (non-executable) file '-rwxr-xr-x', # standard executable file 'drwxr-xr-x', # standard dir perm 'drwxr-sr-x', # standard dir perm with suid (lintian-lab on lintian.d.o) 'lrwxrwxrwx', # symlinks ); =head1 NAME Lintian::Collect::Package - Lintian base interface to binary and source package data collection =head1 SYNOPSIS use autodie; use Lintian::Collect; my ($name, $type, $dir) = ('foobar', 'source', '/path/to/lab-entry'); my $info = Lintian::Collect->new ($name, $type, $dir); my $filename = "etc/conf.d/$name.conf"; my $file = $info->index($filename); if ($file && $file->is_regular_file) { open(my $fd, '<', $info->unpacked($file)); # Use $fd ... close($fd); } elsif ($file) { print "$file is available, but not a regular file\n"; } else { print "$file is missing\n"; } =head1 DESCRIPTION Lintian::Collect::Package provides part of an interface to package data for source and binary packages. It implements data collection methods specific to all packages that can be unpacked (or can contain files) This module is in its infancy. Most of Lintian still reads all data from files in the laboratory whenever that data is needed and generates that data via collect scripts. The goal is to eventually access all data about source packages via this module so that the module can cache data where appropriate and possibly retire collect scripts in favor of caching that data in memory. =head1 INSTANCE METHODS In addition to the instance methods listed below, all instance methods documented in the L module are also available. =over 4 =item unpacked ([FILE]) Returns the path to the directory in which the package has been unpacked. FILE must be either a L object (>= 2.5.13~) or a string denoting the requested path. In the latter case, the path must be relative to the root of the package and should be normalized. It is not permitted for FILE to be C. If the "root" dir is desired either invoke this method without any arguments at all, pass it the correct L or the empty string. If FILE is not in the package, it returns the path to a non-existent file entry. The path returned is not guaranteed to be inside the Lintian Lab as the package may have been unpacked outside the Lab (e.g. as optimization). Caveat with symlinks: Package is extracted as is and the path returned by this method points to the extracted file object. If this is a symlink, it may "escape the root" and point to a file outside the lab (and a path traversal). The following code may be helpful in checking for path traversal: use Lintian::Util qw(is_ancestor_of); my $collect = ... ; my $file = '../../../etc/passwd'; my $uroot = $collect->unpacked; my $ufile = $collect->unpacked($file); # $uroot will exist, but $ufile might not. if ( -e $ufile && is_ancestor_of($uroot, $ufile)) { # has not escaped $uroot do_stuff($ufile); } elsif ( -e $ufile) { # escaped $uroot die "Possibly path traversal ($file)"; } else { # Does not exists } Alternatively one can use normalize_pkg_path in L or L. To get a list of entries in the package or the file meta data of the entries (as L), see L and L. Needs-Info requirements for using I: unpacked =cut sub unpacked { ## no critic (Subroutines::RequireArgUnpacking) # - _fetch_extracted_dir checks if the FILE argument was explicitly # undef, but it relies on the size of @_ to do this. With # unpacking we would have to use shift or check it directly here # (and duplicate said check in ::Binary::control and # ::Source::debfiles). my $self = shift(@_); return $self->_fetch_extracted_dir('unpacked', 'unpacked', @_); } =item file_info (FILE) Returns the output of file(1) -e ascii for FILE (if it exists) or C. B: As file(1) is passed "-e ascii", all text files will be considered "data" rather than "text", "Java code" etc. NB: The value may have been calibrated by Lintian. A notorious example is gzip files, where file(1) can be unreliable at times (see #620289) Needs-Info requirements for using I: file-info =cut sub file_info { my ($self, $file) = @_; if (my $cache = $self->{file_info}) { return ${$cache->{$file}} if exists $cache->{$file}; return; } my %interned; my %file_info; my $path = $self->lab_data_path('file-info.gz'); local $_; my $idx = open_gz($path); while (<$idx>) { chomp; m/^(.+?)\x00\s+(.*)$/o or croak( join(q{ }, 'an error in the file pkg is preventing', "lintian from checking this package: $_")); my ($file, $info) = ($1,$2); my $ref = $interned{$info}; $file =~ s,^\./,,o; if (!defined($ref)) { # Store a ref to the info to avoid creating a new copy # each time. We just have to deref the reference on # return. TODO: Test if this will be obsolete by # COW variables in Perl 5.20. $interned{$info} = $ref = \$info; } $file_info{$file} = $ref; } close($idx); $self->{file_info} = \%file_info; return ${$self->{file_info}{$file}} if exists $self->{file_info}->{$file}; return; } =item md5sums Returns a hashref mapping a FILE to its md5sum. The md5sum is computed by Lintian during extraction and is not guaranteed to match the md5sum in the "md5sums" control file. Needs-Info requirements for using I: md5sums =cut sub md5sums { my ($self) = @_; return $self->{md5sums} if exists $self->{md5sums}; my $md5f = $self->lab_data_path('md5sums'); my $result = {}; # read in md5sums info file open(my $fd, '<', $md5f); while (my $line = <$fd>) { chop($line); next if $line =~ m/^\s*$/o; $line =~ m/^(\\)?(\S+)\s*(\S.*)$/o or fail "syntax error in $md5f info file: $line"; my ($zzescaped, $zzsum, $zzfile) = ($1, $2, $3); if($zzescaped) { $zzfile = dequote_name($zzfile); } $zzfile =~ s,^(?:\./)?,,o; $result->{$zzfile} = $zzsum; } close($fd); $self->{md5sums} = $result; return $result; } =item index (FILE) Returns a L to FILE in the package. FILE must be relative to the root of the unpacked package and must be without leading slash (or "./"). If FILE is not in the package, it returns C. If FILE is supposed to be a directory, it must be given with a trailing slash. Example: my $file = $info->index ("usr/bin/lintian"); my $dir = $info->index ("usr/bin/"); To get a list of entries in the package, see L. To actually access the underlying file (e.g. the contents), use L. Note that the "root directory" (denoted by the empty string) will always be present, even if the underlying tarball omits it. Needs-Info requirements for using I: index =cut sub index { my ($self, $file) = @_; return $self->_fetch_index_data('index', 'index', 'index-owner-id', $file); } =item sorted_index Returns a sorted array of file names listed in the package. The names will not have a leading slash (or "./") and can be passed to L or L as is. The array will not contain the entry for the "root" of the package. NB: For source packages, please see the L<"index"-caveat|Lintian::Collect::Source/index (FILE)>. Needs-Info requirements for using I: L =cut sub sorted_index { my ($self) = @_; # index does all our work for us, so call it if sorted_index has # not been created yet. $self->index('') unless exists $self->{sorted_index}; return @{ $self->{sorted_index} }; } # Backing method for unpacked, debfiles and others; this is not a part of the # API. # sub _fetch_extracted_dir Needs-Info none sub _fetch_extracted_dir { my ($self, $field, $dirname, $file) = @_; my $dir = $self->{$field}; my $filename = ''; my $normalized = 0; if (not defined $dir) { $dir = $self->lab_data_path($dirname); croak "$field ($dirname) is not available" unless -d "$dir/"; $self->{$field} = $dir; } if (!defined($file)) { if (scalar(@_) >= 4) { # Was this undef explicit? croak('Input file was undef'); } $normalized = 1; } else { if (ref($file)) { if (!blessed($file) || !$file->isa('Lintian::Path')) { croak('Input file must be a string or a Lintian::Path object'); } $filename = $file->name; $normalized = 1; } else { $normalized = 0; $filename = $file; } } if ($filename ne '') { if (!$normalized) { # strip leading ./ - if that leaves something, return the # path there if ($filename =~ s,^(?:\.?/)++,,go) { warnings::warnif('Lintian::Collect', qq{Argument to $field had leading "/" or "./"}); } if ($filename =~ m{(?: ^|/ ) \.\. (?: /|$ )}xsm) { # possible traversal - double check it and (if needed) # stop it before it gets out of hand. if (!defined(normalize_pkg_path('/', $filename))) { croak qq{The path "$file" is not within the package root}; } } } return "$dir/$filename" if $filename ne ''; } return $dir; } # Backing method for index and others; this is not a part of the API. # sub _fetch_index_data Needs-Info none sub _fetch_index_data { my ($self, $field, $index, $indexown, $file) = @_; if (my $cache = $self->{$field}) { return $cache->{$file} if exists $cache->{$file}; return; } my $base_dir = $self->base_dir; my (%idxh, %children); my $num_idx; my %rhlinks; my @sorted; local $_; my $idx = open_gz("$base_dir/${index}.gz"); if ($indexown) { $num_idx = open_gz("$base_dir/${indexown}.gz"); } while (<$idx>) { chomp; my (%file, $perm, $owner, $name); ($perm,$owner,$file{size},$file{date},$file{time},$name) =split(' ', $_, 6); # This may appear to be obscene, but the call overhead of # perm2oct is measurable on (e.g.) chromium-browser. With # the cache we go from ~1.5s to ~0.1s. # Of the 115363 paths here, only 306 had an "uncached" # permission string (chromium-browser/32.0.1700.123-2). if (exists($PERM_CACHE{$perm})) { $file{operm} = $PERM_CACHE{$perm}; } else { $file{operm} = perm2oct($perm); } $file{type} = substr $perm, 0, 1; if ($num_idx) { # If we have a "numeric owner" index file, read that as well my $numeric = <$num_idx>; chomp $numeric; croak 'cannot read index file $indexown' unless defined $numeric; my ($owner_id, $name_chk) = (split(' ', $numeric, 6))[1, 5]; croak "mismatching contents of index files: $name $name_chk" if $name ne $name_chk; ($file{uid}, $file{gid}) = split '/', $owner_id, 2; } ($file{owner}, $file{group}) = split '/', $owner, 2; $file{owner} = 'root' if $file{owner} eq '0'; $file{group} = 'root' if $file{group} eq '0'; if ($name =~ s/ link to (.*)//) { my $target = dequote_name($1); $file{type} = 'h'; $file{link} = $target; push @{$rhlinks{$target}}, dequote_name($name); } elsif ($file{type} eq 'l') { ($name, $file{link}) = split ' -> ', $name, 2; $file{link} = dequote_name($file{link}, 0); } # We store the name here, but will replace it later. The # reason for storing it now is that we may need it during the # "hard-link fixup"-phase. $file{'name'} = $name = dequote_name($name); $idxh{$name} = \%file; # Record children $children{$name} ||= [] if $file{type} eq 'd'; my ($parent, $base) = ($name =~ m,^(.+/)?([^/]+/?)$,); $parent = '' unless defined $parent; $base = '' unless defined $base; $file{basename} = $base; # Insert the dirname field later for all (non-root) entries as # it allows us to better reuse memory. $file{dirname} = '' if $base eq ''; $children{$parent} = [] unless exists $children{$parent}; # Ensure the "root" is not its own child. It is not really helpful # from an analysis PoV and it creates ref cycles (and by extension # leaks like #695866). push @{ $children{$parent} }, $name unless $parent eq $name; } if (!exists($idxh{''})) { # The index did not include a "root" dir, so fake one. # Note we have to do a copy here, since we will eventually # add a "children" field. my %cpy = %ROOT_INDEX_TEMPLATE; if ($num_idx) { $cpy{'uid'} = 0; $cpy{'gid'} = 0; } $idxh{''} = \%cpy; } if (%rhlinks) { foreach my $file (sort keys %rhlinks) { # We remove entries we have fixed up, so check the entry # is still there. next unless exists $rhlinks{$file}; my $e = $idxh{$file}; my %candidates = (); my @check = ($e->{name}); my @sorted; my $target; while (my $current = pop @check) { $candidates{$current} = 1; foreach my $rdep (@{$rhlinks{$current}}) { # There should not be any cicles, but just in case push @check, $rdep unless $candidates{$rdep}; } # Remove links we are fixing delete $rhlinks{$current}; } # keys %candidates will be a complete list of hardlinks # that points (in)directly to $file. Time to normalize # the links. # # Sort in reverse order (allows pop instead of unshift) @sorted = reverse sort keys %candidates; # Our prefered target $target = pop @sorted; foreach my $link (@sorted) { next unless exists $idxh{$target}; my $le = $idxh{$link}; # We may be "demoting" a "real file" to a "hardlink" $le->{type} = 'h'; $le->{link} = $target; } if ($target ne $e->{name}) { $idxh{$target}->{type} = '-'; # hardlinks does not have size, so copy that from the original # entry. $idxh{$target}->{size} = $e->{size}; delete $idxh{$target}->{link}; } } } @sorted = sort keys %idxh; foreach my $file (reverse @sorted) { # Add them in reverse order - entries in a dir are made # objects before the dir itself. if ($idxh{$file}->{type} eq 'd') { my @children; for my $cname (sort(@{ $children{$file} })) { my $child = $idxh{$cname}; # Insert dirname here to share the same storage with # the hash key $child->{'dirname'} = $file; push(@children, $child); } $idxh{$file}{children} = \@children; } # Insert name here to share the same storage with the hash key $idxh{$file}{'name'} = $file; $idxh{$file} = Lintian::Path->new($idxh{$file}); } $self->{$field} = \%idxh; # Remove the "top" dir in the sorted_index as it is hardly ever # used. # - Note this will always be present as we create it if it is # missing. It will always be the first entry since we sorted # the list. shift @sorted; @sorted = map { $idxh{$_} } @sorted; $self->{"sorted_$field"} = \@sorted; close($idx); close($num_idx) if $num_idx; return $self->{$field}->{$file} if exists $self->{$field}->{$file}; return; } 1; =back =head1 AUTHOR Originally written by Niels Thykier for Lintian. =head1 SEE ALSO lintian(1), L, L, L =cut # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Collect/Binary.pm0000664000000000000000000004677312311317640017006 0ustar # -*- perl -*- # Lintian::Collect::Binary -- interface to binary package data collection # Copyright (C) 2008, 2009 Russ Allbery # Copyright (C) 2008 Frank Lichtenheld # Copyright (C) 2012 Kees Cook # # 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, see . package Lintian::Collect::Binary; use strict; use warnings; use autodie; use parent 'Lintian::Collect::Package'; use Lintian::Relation; use Carp qw(croak); use Parse::DebianChangelog; use Lintian::Util qw(fail open_gz parse_dpkg_control); =head1 NAME Lintian::Collect::Binary - Lintian interface to binary package data collection =head1 SYNOPSIS my ($name, $type, $dir) = ('foobar', 'binary', '/path/to/lab-entry'); my $collect = Lintian::Collect->new ($name, $type, $dir); if ($collect->native) { print "Package is native\n"; } =head1 DESCRIPTION Lintian::Collect::Binary provides an interface to package data for binary packages. It implements data collection methods specific to binary packages. This module is in its infancy. Most of Lintian still reads all data from files in the laboratory whenever that data is needed and generates that data via collect scripts. The goal is to eventually access all data about binary packages via this module so that the module can cache data where appropriate and possibly retire collect scripts in favor of caching that data in memory. =head1 CLASS METHODS =over 4 =item new (PACKAGE) Creates a new Lintian::Collect::Binary object. Currently, PACKAGE is ignored. Normally, this method should not be called directly, only via the L constructor. =cut sub new { my ($class, $pkg) = @_; my $self = {}; bless($self, $class); return $self; } =back =head1 INSTANCE METHODS In addition to the instance methods listed below, all instance methods documented in the L and the L modules are also available. =over 4 =item native Returns true if the binary package is native and false otherwise. Nativeness will be judged by its version number. If the version number is absent, this will return false (as native packages are a lot rarer than non-native ones). Needs-Info requirements for using I: L =cut sub native { my ($self) = @_; return $self->{native} if exists $self->{native}; my $version = $self->field('version'); if (defined $version) { $self->{native} = ($version !~ m/-/); } else { # We do not know, but assume it to non-native as it is # the most likely case. $self->{native} = 0; } return $self->{native}; } =item changelog Returns the changelog of the binary package as a Parse::DebianChangelog object, or undef if the changelog doesn't exist. The changelog-file collection script must have been run to create the changelog file, which this method expects to find in F. Needs-Info requirements for using I: changelog-file =cut sub changelog { my ($self) = @_; return $self->{changelog} if exists $self->{changelog}; my $dch = $self->lab_data_path('changelog'); if (-l $dch || !-f $dch) { $self->{changelog} = undef; } else { my %opts = (infile => $dch, quiet => 1); $self->{changelog} = Parse::DebianChangelog->init(\%opts); } return $self->{changelog}; } =item control ([FILE]) Returns the path to FILE in the control.tar.gz. FILE must be either a L object (>= 2.5.13~) or a string denoting the requested path. In the latter case, the path must be relative to the root of the control.tar.gz member and should be normalized. It is not permitted for FILE to be C. If the "root" dir is desired either invoke this method without any arguments at all, pass it the correct L or the empty string. To get a list of entries in the control.tar.gz or the file meta data of the entries (as L), see L and L. The caveats of L also apply to this method. However, as the control.tar.gz is not known to contain symlinks, a simple file type check is usually enough. Needs-Info requirements for using I: bin-pkg-control =cut sub control { ## no critic (Subroutines::RequireArgUnpacking) # - see L::Collect::unpacked for why my $self = shift(@_); return $self->_fetch_extracted_dir('control', 'control', @_); } =item control_index (FILE) Returns a L to FILE in the control.tar.gz. FILE must be relative to the root of the control.tar.gz and must be without leading slash (or "./"). If FILE is not in the control.tar.gz, it returns C. To get a list of entries in the control.tar.gz, see L. To actually access the underlying file (e.g. the contents), use L. Note that the "root directory" (denoted by the empty string) will always be present, even if the underlying tarball omits it. Needs-Info requirements for using I: bin-pkg-control =cut sub control_index { my ($self, $file) = @_; return $self->_fetch_index_data('control-index', 'control-index', undef, $file); } =item sorted_control_index Returns a sorted array of file names listed in the control.tar.gz. The names will not have a leading slash (or "./") and can be passed to L or L as is. The array will not contain the entry for the "root" of the control.tar.gz. Needs-Info requirements for using I: L =cut sub sorted_control_index { my ($self) = @_; # control_index does all our work for us, so call it if # sorted_control_index has not been created yet. $self->control_index('') unless exists $self->{'sorted_control-index'}; return @{ $self->{'sorted_control-index'} }; } =item strings (FILE) Returns an open handle, which will read the data from coll/strings for FILE. If coll/strings did not collect any strings about FILE, this returns an open read handle with no content. Caller is responsible for closing the handle either way. Needs-Info requirements for using I: strings =cut sub strings { my ($self, $file) = @_; my $real = $self->_fetch_extracted_dir('strings', 'strings', $file); if (not -f "${real}.gz") { open my $fd, '<', '/dev/null' or fail "open /dev/null: $!"; return $fd; } my $fd = open_gz("$real.gz"); return $fd; } =item scripts Returns a hashref mapping a FILE to its script/interpreter information (if FILE is a script). If FILE is not a script, it is not in the hash (and callers should use exists to test membership to ensure this invariant holds). The value for a given FILE consists of a table with the following keys (and associated value): =over 4 =item calls_env Returns a truth value if the script uses env (/usr/bin/env or /bin/env) in the "#!". Otherwise it is C. =item interpreter This is the interpreter used. If calls_env is true, this will be the first argument to env. Otherwise it will be the command listed after the "#!". NB: Some template files have "#!" lines like "#!@PERL@" or "#!perl". In this case, this value will be @PERL@ or perl (respectively). =item name Return the file name of the script. This will be identical to key to look up this table. =back Needs-Info requirements for using I: scripts =cut sub scripts { my ($self) = @_; return $self->{scripts} if exists $self->{scripts}; my $scrf = $self->lab_data_path('scripts'); my %scripts; if (-f $scrf) { open(my $fd, '<', $scrf); while (my $line = <$fd>) { my (%file, $name); chomp($line); $line =~ m/^(env )?(\S*) (.*)$/o or fail("bad line in scripts file: $line"); ($file{calls_env}, $file{interpreter}, $name) = ($1, $2, $3); $name =~ s,^\./,,o; $name =~ s,/+$,,o; $file{name} = $name; $scripts{$name} = \%file; } close($fd); } $self->{scripts} = \%scripts; return $self->{scripts}; } =item objdump_info Returns a hashref mapping a FILE to the data collected by objdump-info or C if no data is available for that FILE. Data is generally only collected for ELF files. Needs-Info requirements for using I: objdump-info =cut sub objdump_info { my ($self) = @_; return $self->{objdump_info} if exists $self->{objdump_info}; my $objf = $self->lab_data_path('objdump-info.gz'); my %objdump_info; my $file; local $_; my $fd = open_gz($objf); foreach my $pg (parse_dpkg_control($fd)) { my %info = ( 'PH' => {}, 'SH' => {}, 'NOTES' => [], 'NEEDED' => [], 'RPATH' => {}, 'SONAME' => [], 'TEXTREL' => 0, ); $info{'ERRORS'} = lc($pg->{'broken'}//'no') eq 'yes' ? 1 : 0; $info{'UPX'} = lc($pg->{'upx'}//'no') eq 'yes' ? 1 : 0; $info{'BAD-DYNAMIC-TABLE'} = lc($pg->{'bad-dynamic-table'}//'no') eq 'yes' ? 1 : 0; foreach my $symd (split m/\s*\n\s*/, $pg->{'dynamic-symbols'}//'') { next unless $symd; if ($symd =~ m/^\s*(\S+)\s+(?:(\S+)\s+)?(\S+)$/){ # $ver is not always there my ($sec, $ver, $sym) = ($1, $2, $3); $ver //= ''; push @{ $info{'SYMBOLS'} }, [$sec, $ver, $sym]; } } foreach my $data (split m/\s*\n\s*/, $pg->{'section-headers'}//'') { next unless $data; my (undef, $section) = split m/\s++/, $data; $info{'SH'}->{$section}++; } foreach my $data (split m/\s*\n\s*/, $pg->{'program-headers'}//'') { next unless $data; my ($header, @vals) = split m/\s++/, $data; $info{'PH'}->{$header} = {}; foreach my $extra (@vals) { my ($opt, $val) = split m/=/, $extra; $info{'PH'}->{$header}->{$opt} = $val; if ($opt eq 'interp' and $header eq 'INTERP') { $info{'INTERP'} = $val; } } } foreach my $data (split m/\s*\n\s*/, $pg->{'dynamic-section'}//'') { next unless $data; # Here we just need RPATH and NEEDS, so ignore the rest for now my ($header, $val) = split m/\s++/, $data; if ($header eq 'RPATH') { # RPATH is like PATH foreach my $rpathcomponent (split(m/:/,$val)) { $info{$header}->{$rpathcomponent} = 1; } } elsif ($header eq 'NEEDED' or $header eq 'SONAME') { push @{ $info{$header} }, $val; } elsif ($header eq 'TEXTREL') { $info{$header} = 1; } } $objdump_info{$pg->{'filename'}} = \%info; } $self->{objdump_info} = \%objdump_info; close($fd); return $self->{objdump_info}; } =item hardening_info Returns a hashref mapping a FILE to its hardening issues. NB: This is generally only useful for checks/binaries to emit the hardening-no-* tags. Needs-Info requirements for using I: hardening-info =cut sub hardening_info { my ($self) = @_; return $self->{hardening_info} if exists $self->{hardening_info}; my $hardf = $self->lab_data_path('hardening-info'); my %hardening_info; if (-e $hardf) { open(my $idx, '<', $hardf); while (my $line = <$idx>) { chomp($line); if ($line =~ m,^([^:]+):(?:\./)?(.*)$,) { my ($tag, $file) = ($1, $2); push(@{$hardening_info{$file}}, $tag); } } close($idx); } $self->{hardening_info} = \%hardening_info; return $self->{hardening_info}; } =item java_info Returns a hashref containing information about JAR files found in binary packages, in the form I -> I, where I is a hash containing the following keys: =over 4 =item manifest A hash containing the contents of the JAR file manifest. For instance, to find the classpath of I<$file>, you could use: if (exists $info->java_info->{$file}->{'manifest'}) { my $cp = $info->java_info->{$file}->{'manifest'}->{'Class-Path'}; # ... } NB: Not all jar files have a manifest. For those without, this will value will not be available. Use exists (rather than defined) to check for it. =item files A table of the files in the JAR. Each key is a file name and its value is its "Major class version" for Java or "-" if it is not a class file. =item error If it exists, this is an error that occurred during reading of the zip file. If it exists, it is unlikely that the other fields will be present. =back Needs-Info requirements for using I: java-info =cut sub java_info { my ($self) = @_; return $self->{java_info} if exists $self->{java_info}; my $javaf = $self->lab_data_path('java-info.gz'); my %java_info; if (!-f $javaf) { # no java-info.gz => no jar files to collect data. Just # return an empty hash ref. $self->{java_info} = \%java_info; return $self->{java_info}; } my $idx = open_gz($javaf); my $file; my $file_list; my $manifest = 0; local $_; while (<$idx>) { chomp; next if m/^\s*$/o; if (m#^-- ERROR:\s*(\S.++)$#o) { $java_info{$file}->{error} = $1; } elsif (m#^-- MANIFEST: (?:\./)?(?:.+)$#o) { # TODO: check $file == $1 ? $java_info{$file}->{manifest} = {}; $manifest = $java_info{$file}->{manifest}; $file_list = 0; } elsif (m#^-- (?:\./)?(.+)$#o) { $file = $1; $java_info{$file}->{files} = {}; $file_list = $java_info{$file}->{files}; $manifest = 0; } else { if ($manifest && m#^ (\S+):\s(.*)$#o) { $manifest->{$1} = $2; } elsif ($file_list) { my ($fname, $clmajor) = (m#^([^-].*):\s*([-\d]+)$#); $file_list->{$fname} = $clmajor; } } } $self->{java_info} = \%java_info; close($idx); return $self->{java_info}; } =item relation (FIELD) Returns a L object for the specified FIELD, which should be one of the possible relationship fields of a Debian package or one of the following special values: =over 4 =item all The concatenation of Pre-Depends, Depends, Recommends, and Suggests. =item strong The concatenation of Pre-Depends and Depends. =item weak The concatenation of Recommends and Suggests. =back If FIELD isn't present in the package, the returned Lintian::Relation object will be empty (always satisfied and implies nothing). Needs-Info requirements for using I: L =cut sub relation { my ($self, $field) = @_; $field = lc $field; return $self->{relation}->{$field} if exists $self->{relation}->{$field}; my %special = ( all => [qw(pre-depends depends recommends suggests)], strong => [qw(pre-depends depends)], weak => [qw(recommends suggests)]); my $result; if ($special{$field}) { $result = Lintian::Relation->and(map { $self->relation($_) } @{ $special{$field} }); } else { my %known = map { $_ => 1 } qw(pre-depends depends recommends suggests enhances breaks conflicts provides replaces); croak("unknown relation field $field") unless $known{$field}; my $value = $self->field($field); $result = Lintian::Relation->new($value); } $self->{relation}->{$field} = $result; return $self->{relation}->{$field}; } =item is_pkg_class ([TYPE]) Returns a truth value if the package is the given TYPE of special package. TYPE can be one of "transitional" or "any-meta". If omitted it defaults to "any-meta". The semantics for these values are: =over 4 =item transitional The package is (probably) a transitional package (e.g. it is probably empty, just depend on stuff will eventually disappear.) Guessed from package description. =item any-meta This package is (probably) some kind of meta or task package. A meta package is usually empty and just depend on stuff. It will also return a truth value for "tasks" (i.e. tasksel "tasks"). A transitional package will also match this. Guessed from package description, section or package name. =back Needs-Info requirements for using I: L =cut { # Regexes to try against the package description to find metapackages or # transitional packages. my $METAPKG_REGEX = qr/meta[ -]?package|dummy|(?:dependency|empty|virtual) package/; sub is_pkg_class { my ($self, $pkg_class) = @_; my $desc = $self->field('description', ''); $pkg_class //= 'any-meta'; return 1 if $desc =~ m/transitional package/; if ($pkg_class eq 'any-meta') { my ($section) = $self->field('section', ''); return 1 if $desc =~ m/$METAPKG_REGEX/o; # Section "tasks" or "metapackages" qualifies as well return 1 if $section =~ m,(?:^|/)(?:tasks|metapackages)$,; return 1 if $self->name =~ m/^task-/; } return; } } =item is_conffile (FILE) Returns a truth value if FILE is listed in the conffiles control file. If the control file is not present or FILE is not listed in it, it returns C. Note that FILE should be the filename relative to the package root (even though the control file uses absolute paths). If the control file does relative paths, they are assumed to be relative to the package root as well (and used without warning). Needs-Info requirements for using I: L =cut sub is_conffile { my ($self, $file) = @_; if (exists $self->{'conffiles'}) { return 1 if exists $self->{'conffiles'}->{$file}; return; } my $cf = $self->control('conffiles'); my %conffiles = (); $self->{'conffiles'} = \%conffiles; # No real packages use links in their control.tar.gz and conffiles # must be a file. return if -l $cf or not -f $cf; open(my $fd, '<', $cf); while (my $line = <$fd>) { chomp $line; next if $line =~ m/^\s*$/; # Look up happens with a relative path (e.g. etc/file.conf). # Side-effect is that we silently "fix" relative conffiles, # but checks/conffiles catches those for us. $line =~ s,^/++,,o; $conffiles{$line} = 1; } close($fd); return 1 if exists $conffiles{$file}; return; } =back =head1 AUTHOR Originally written by Frank Lichtenheld for Lintian. =head1 SEE ALSO lintian(1), L, L =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Collect/Changes.pm0000664000000000000000000001016012311317640017107 0ustar # -*- perl -*- # Lintian::Collect::Changes -- interface to .changes file data collection # Copyright (C) 2010 Adam D. Barratt # # 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, see . package Lintian::Collect::Changes; use strict; use warnings; use parent 'Lintian::Collect'; use Lintian::Util qw(strip); =head1 NAME Lintian::Collect::Changes - Lintian interface to .changes file data collection =head1 SYNOPSIS my ($name, $type) = ('foobar_1.2_i386.changes', 'changes'); my $collect = Lintian::Collect->new($name, $type); my $files = $collect->files(); foreach my $file (keys %{$files}) { my $size = $files->{$file}->{size}; print "File $file has size $size\n"; } =head1 DESCRIPTION Lintian::Collect::Changes provides an interface to data for .changes files. It implements data collection methods specific to .changes files. =head1 CLASS METHODS =over 4 =item new (PACKAGE) Creates a new Lintian::Collect::Changes object. Currently, PACKAGE is ignored. Normally, this method should not be called directly, only via the L constructor. =cut # Initialize a new .changes file collect object. Takes the package name, # which is currently unused. sub new { my ($class, $pkg) = @_; my $self = {}; bless($self, $class); return $self; } =back =head1 INSTANCE METHODS In addition to the instance methods listed below, all instance methods documented in the L module are also available. =over 4 =item files Returns a reference to a hash containing information about files listed in the .changes file. Each hash may have the following keys: =over 4 =item name Name of the file. =item size The size of the file in bytes. =item section The archive section to which the file belongs. =item priority The priority of the file. =item checksums A hash with the keys being checksum algorithms and the values themselves being hashes containing =over 4 =item sum The result of applying the given algorithm to the file. =item filesize The size of the file as given in the .changes section relating to the given checksum. =back =back Needs-Info requirements for using I: L =cut sub files { my ($self) = @_; return $self->{files} if exists $self->{files}; my %files; my $file_list = $self->field('files') || ''; local $_; for (split /\n/, $file_list) { strip; next if $_ eq ''; my ($md5sum,$size,$section,$priority,$file) = split(/\s+/o, $_); next if $file =~ m,/,; $files{$file}{checksums}{md5} = { 'sum' => $md5sum, 'filesize' => $size, }; $files{$file}{name} = $file; $files{$file}{size} = $size; $files{$file}{section} = $section; $files{$file}{priority} = $priority; } foreach my $alg (qw(sha1 sha256)) { my $list = $self->field("checksums-$alg") || ''; for (split /\n/, $list) { strip; next if $_ eq ''; my ($checksum, $size, $file) = split(/\s+/o, $_); next if $file =~ m,/,; $files{$file}{checksums}{$alg} = { 'sum' => $checksum, 'filesize' => $size }; } } $self->{files} = \%files; return $self->{files}; } =back =head1 AUTHOR Originally written by Adam D. Barratt for Lintian. =head1 SEE ALSO lintian(1), L =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Collect/Group.pm0000664000000000000000000001070412311317640016637 0ustar # -*- perl -*- # Lintian::Collect::Group -- interface to group data collections # Copyright (C) 2011 Niels Thykier # # 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, see . # This is a "Lintian::Collect"-like interace (as in "not quite a # Lintian::Collect"). package Lintian::Collect::Group; use strict; use warnings; use Carp qw(croak); =head1 NAME Lintian::Collect::Group - Lintian interface to group data collection =head1 SYNOPSIS my $group = Lintian::ProcessableGroup->new ('lintian_2.5.0_i386.changes'); my $ginfo = Lintian::Collect::Group->new ($group); foreach my $bin ($group->get_binary_processables) { my $pkg_name = $bin->pkg_name; foreach my $dirdep ($ginfo->direct_dependencies ($bin)) { print "$pkg_name (pre-)depends on $dirdep (which is also in this group)\n"; } } =head1 DESCRIPTION Lintian::Collect::Group is a "group" variant of the Lintian::Collect modules. It attempts to expose a similar interface as these and provide useful information about the processable group (or members of it). =head1 CLASS METHODS =over 4 =item Lintian::Collect::Group->new ($group) Creates a new object to provide information about L<$group|Lintian::ProcessableGroup>. =cut sub new { my ($class, $group) = @_; my $self = {'group' => $group,}; return bless $self, $class; } =item direct_dependencies (PROC) If PROC is a part of the underlying processable group, this method returns a listref containing all the direct dependencies of PROC. If PROC is not a part of the group, this returns undef. Note: Only strong dependencies (Pre-Depends and Depends) are considered. Note: Self-dependencies (if any) are I included in the result. =cut # sub direct_dependencies Needs-Info <> sub direct_dependencies { my ($self, $p) = @_; my $deps = $self->{'direct-dependencies'}; unless ($deps) { my $group = $self->{'group'}; my @procs = $group->get_processables('binary'); push @procs, $group->get_processables('udeb'); $deps = {}; foreach my $proc (@procs) { my $pname = $proc->pkg_name; my $relation = $proc->info->relation('strong'); my $d = []; foreach my $oproc (@procs) { my $opname = $oproc->pkg_name; # Ignore self deps - we have checks for that and it # will just end up complicating "correctness" of # otherwise simple checks. next if $opname eq $pname; push @$d, $oproc if $relation->implies($opname); } $deps->{$pname} = $d; } $self->{'direct-dependencies'} = $deps; } return $deps->{$p->pkg_name} if $p; return $deps; } =item $ginfo->type Return the type of this collect object (which is the string 'group'). =cut # Return the package type. # sub type Needs-Info <> sub type { my ($self) = @_; return 'group'; } =item spelling_exceptions Returns a hashref of words, which the spell checker should ignore. These words are generally based on the package names in the group to avoid false-positive "spelling error" when packages have "fun" names. Example: Package alot-doc (#687464) =cut # sub spelling_exceptions Needs-Info <> sub spelling_exceptions { my ($self) = @_; return $self->{'spelling_exceptions'} if exists $self->{'spelling_exceptions'}; my %except = (); my $group = $self->{'group'}; foreach my $proc ($group->get_processables('binary')) { foreach my $name ($proc->pkg_name, $proc->pkg_src) { $except{$name} = 1; $except{$_} = 1 for split m/-/, $name; } } $self->{'seplling_exceptions'} = \%except; return \%except; } =back =head1 AUTHOR Originally written by Niels Thykier for Lintian. =head1 SEE ALSO lintian(1), Lintian::Collect::Binary(3), Lintian::Collect::Changes(3), Lintian::Collect::Source(3) =cut 1; __END__; lintian-2.5.22ubuntu1/lib/Lintian/Unpacker.pm0000664000000000000000000004667712313507507015755 0ustar # Copyright (C) 2012 Niels Thykier # # 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::Unpacker; use strict; use warnings; use parent 'Class::Accessor::Fast'; use POSIX; use Lintian::Command::Simple qw(wait_any kill_all); use Lintian::Util qw(fail); =head1 NAME Lintian::Unpacker -- Job handler to unpack collections =head1 SYNOPSIS use Lintian::DepMap::Properties; use Lintian::Unpacker; my $done = 1; my $joblimit = 4; my $collmap = Lintian::DepMap::Properties->new; my %requested = ( 'debfiles' => 1 ); # Initialise $collmap with the collections and their relations # - Each node in $collmap should an instance of L::CollScript # as property. my $unpacker = Lintian::Unpacker->new ($collmap, \%requested, $joblimit); while (1) { my $errhandler = sub {}; # Insert hook my @lpkgs = (); # List of Lintian::Lab::Entry instances $unpacker->reset_worklist; next unless $unpacker->prepare_tasks ($errhandler, @lpkgs); my %hooks = ( 'coll-hook' => sub {}, # Insert hook 'finish-hook' => sub {}, # Insert hook ); $unpacker->process_tasks (); last if $done; } =head1 DESCRIPTION An unpacker class to extract data from lab entries and make it available via L. =head1 CLASS METHODS =over 4 =item new (COLLMAP, PROFILE[, OPTIONS]) Creates a new unpacker. COLLMAP is a L describing the dependencies between the collections. Each node in COLLMAP must have a L as property. OPTIONS is an optional hashref containing optional configurations. If a key is not present, its value is assumed to be C unless otherwise stated. The following key/values are available: =over 4 =item "profile" If this key is present and its value is defined, the value must be L. The unpacker will use the enabled checks of the Profile to determine what collections to use. If "profile" is not present or its value is undefined, then all collections in COLLMAP will be unpacked. =item "extra-coll" If this key is present and its value is defined, it must be a reference to a hash table. The keys are considered names of "extra" collections to unpack. The values in this table is ignored. Extra collections will be unpacked on top of other collections. NB: This value is ignored if "profile" is not given. =item "jobs" This value is the max number of jobs to be run in parallel. Can be changed with the L method later. If omitted, it defaults to 0. Refer to L for more info. =back =cut sub new { my ($class, $collmap, $options) = @_; my $ccmap = $collmap->clone; my $req_table = undef; my $profile = undef; my $extra = undef; my $jobs = 0; if ($options) { $extra = $options->{'extra-coll'} if exists $options->{'extra-coll'}; $profile = $options->{'profile'} if exists $options->{'profile'}; $jobs = $options->{'jobs'} if exists $options->{'jobs'}; } my $self = { 'cache' => {}, 'collmap' => $ccmap, 'jobs' => $jobs, 'profile' => $profile, 'running-jobs' => {}, 'worktable' => {}, }; if (defined $profile) { $req_table = {}; foreach my $cname ($profile->scripts) { my $check = $profile->get_script($cname); $req_table->{$_} = 1 for $check->needs_info; } if ($extra) { foreach my $ecoll (keys %$extra) { $req_table->{$ecoll} = 1; } } } if (defined $req_table) { # For new entries we take everything in the collmap, which is # a bit too much in some cases. Since we have cloned collmap, # we might as well prune the nodes we will not need in our # copy. While not perfect, it reduces the unnecessary work # rather well. # # Known issue: "lintian -oC files some.dsc" should not need # to do anything because "files" is "binary, udeb"-only. my %needed = (); my @check = keys %$req_table; while (my $coll = pop @check) { $needed{$coll} = 1; push @check,grep { !exists $needed{$_} } $ccmap->parents($coll); } # remove unneeded nodes in our copy foreach my $node ($collmap->known) { next if $needed{$node}; $ccmap->unlink($node); } # ccmap should not be inconsistent by this change. fail 'Inconsistent collmap after deletion' if $ccmap->missing; } $self->{'extra-coll'} = $extra; # Initialise our copy $ccmap->initialise; bless $self, $class; return $self; } =back =head1 INSTANCE METHODS =over 4 =item prepare_tasks (ERRHANDLER, LAB-ENTRY...) Prepare a number of L for unpacking. The ERRHANDLER should be a code ref, which will be invoked in case that an entry is not in in the laboratory and cannot be created (via the create method). It is invoked once per failed entry giving the entry as first (and only) argument. If ERRHANDLER returns normally, the entry is skipped (and will not be unpacked later). If ERRHANDLER croaks/dies/etc., the method will attempt to update the status file for any entry it created before passing back the error to the caller (via die). LAB-ENTRY is an array of lab entries to be processed. They must be instances of L, but do not have to exists. They will be created as needed. Returns a truth value if at least one entry needs to be processed and it did not cause an error. Otherwise, it returns C. NB: The status file is not updated for created entries on successful return. It should either be done by running the process_tasks method or manually. =cut sub prepare_tasks { my ($self, $errorhandler, @lpkgs) = @_; my $collmap = $self->{'collmap'}; my $extra = $self->{'extra-coll'}; my $profile = $self->{'profile'}; my %worklists = (); foreach my $lpkg (@lpkgs) { my $changed = 0; my $cmap; my $needed; if ($lpkg->exists) { # It already exists, do nothing. 1; } elsif (not $lpkg->create){ eval {$errorhandler->($lpkg);}; if ($@) { # The error handler croaked; attempt to write status # files for entries we created. my $err = $@; foreach my $wlist (values %worklists) { next unless $wlist->{'changed'}; my $lpkg = $wlist->{'lab-entry'}; # igore errors; there is not much we can do about # it here. $lpkg->update_status_file; } # ... and pass back the error. die $err; } next; } else { # created $changed = 1; } ($cmap, $needed) = $self->_requested_colls($lpkg, $changed); next unless $cmap; # nothing to do $worklists{$lpkg->identifier} = { 'collmap' => $cmap, 'lab-entry' => $lpkg, 'changed' => $changed, 'needed' => $needed, }; } return unless %worklists; $self->{'worktable'} = \%worklists; return 1; } sub _gen_type_coll { my ($self, $pkg_type) = @_; my $collmap = $self->{'collmap'}; my $cmap = Lintian::DepMap::Properties->new; my $cond = { 'type' => $pkg_type }; foreach my $node ($collmap->known) { my $coll = $collmap->getp($node); $cmap->add($node, $coll->needs_info($cond), $coll); } $cmap->initialise; $self->{'cache'}->{$pkg_type} = $cmap; return $cmap->clone; } sub _requested_colls { my ($self, $lpkg, $new) = @_; my $profile = $self->{'profile'}; my $cmap; my $extra = $self->{'extra-coll'}; my $pkg_type = $lpkg->pkg_type; my %needed = (); my @check; unless (exists $self->{'cache'}->{$pkg_type}) { $cmap = $self->_gen_type_coll($pkg_type); } else { $cmap = $self->{'cache'}->{$pkg_type}->clone; } # if its new and $profile is undef, we have to run all # of collections. So lets extra early. return ($cmap, undef) if $new and not $profile; if ($profile) { my %tmp = (); foreach my $cname ($profile->scripts) { my $check = $profile->get_script($cname); next unless $check->is_check_type($pkg_type); $tmp{$_} = 1 for $check->needs_info; } @check = keys %tmp; push @check, grep { !exists $tmp{$_} } keys %$extra if defined $extra; } else { @check = $cmap->known; } while (my $cname = pop @check) { my $coll = $cmap->getp($cname); # Skip collections not relevant to us (they will never # be finished and we do not want to use their # dependencies if they are the only ones using them) next unless $coll->is_type($pkg_type); next if $lpkg->is_coll_finished($cname, $coll->version); $needed{$cname} = 1; push @check, $coll->needs_info; } # skip it, unless we need to unpack something. return ($cmap, \%needed) if %needed; return; } =item process_tasks (HOOKS) Process the current tasks. This method blocks until all tasks and jobs have terminated. The return value is unspecified. HOOKS (if given) is a hashref of hooks. The following hooks are available: =over 4 =item coll-hook (LPKG, EVENT, COLL, PID[, STATUS]) Called each time a new collection job is started or finished. LPKG is the L it is applied to. COLL is the L being applied. EVENT is either "start" for a new job or "finish" for a job terminating. PID is the process id of the job. If EVENT is "start" this can be -1 to signal a failure. STATUS is the exit status of the finishing job. It is only available if EVENT is "finish" and if STATUS is non-zero is considered an error. =item finish-hook (LPKG, STATE[, CHANGED]) Called once or twice for each entry processed at the end of the run. The LPKG is the L being processed. For the first call, STATE is one of "changed" (the entry has been modified), "unchanged" (the entry was unmodified) or "failed" (at least one collection could not be applied). Note that a "failed" entry may (or may not) be "changed" depending on where the failure happened. In the first call is done before the status file is written and the hook may alter the entry at this point (e.g. auto-remove unused collections). If it does so CHANGED should be invoked as a code-ref to inform the unpacker of the change. The second call only happens for entries that has been changed (one way or another). STATE will be one of "sf-success" or "sf-error", which determined on whether or not status file update was successful. On errors (i.e. "sf-error"), $! will contain the error. =back =cut sub process_tasks { my ($self, $hooks) = @_; my $worklists = $self->{'worktable'}; my $running_jobs = $self->{'running-jobs'}; my $colls = $self->{'collmap'}; my $jobs = $self->jobs; $hooks //= {}; my $coll_hook = $hooks->{'coll-hook'}; my $finish_hook = $hooks->{'finish-hook'}; my %failed = (); my %active = map { $_ => 1 } keys %$worklists; while (1) { my $nohang = 0; PROC: foreach my $procid (keys %active) { my $wlist = $worklists->{$procid}; my $cmap = $wlist->{'collmap'}; my @todo = $cmap->selectable; unless (@todo) { delete $active{$procid}; next PROC; } my $lpkg = $wlist->{'lab-entry'}; my $needed = $wlist->{'needed'}; my $pkg_name = $lpkg->pkg_name; my $pkg_type = $lpkg->pkg_type; my $base = $lpkg->base_dir; foreach my $coll (@todo) { my $cs = $colls->getp($coll); # current type? unless ($cs->is_type($pkg_type)) { $cmap->satisfy($coll); next; } # check if it has been run previously if ($lpkg->is_coll_finished($coll, $cs->version)) { $cmap->satisfy($coll); next; } # Check if its actually on our TODO list. if (defined $needed and not exists $needed->{$coll}) { $cmap->satisfy($coll); next; } # Not run before (or out of date) $lpkg->_clear_coll_status($coll); # collect info $cmap->select($coll); $wlist->{'changed'} = 1; my $pid = fork//-1; if (not $pid) { # child my $ret = 0; if ($cs->interface ne 'exec' and not $ENV{'LINTIAN_COVERAGE'}) { # With a non-exec interface, let L::CollScript # handle it. Note that when run under # Devel::Cover, we never take this route. # This is because Devel::Cover relies on the # END handler so all collections would get # (more or less) 0 coverage in this case. # For platforms that support it, try to change # our name to the collection being run (like # how it would be with the exec case below). # For platforms that do not support, the child # process will just keep its name as # "lintian". #<<< # no Perltidy (breaks the no-critic) $0 = $coll; ## no critic (Variables::RequireLocalizedPunctuationVars) #>>> eval {$cs->collect($pkg_name, $pkg_type, $base);}; if ($@) { print STDERR $@; $ret = 2; } } else { # Its fork + exec - invoke that directly (saves a fork) exec $cs->script_path, $pkg_name, $pkg_type, $base or die "exec $cs->script_path: $!"; } POSIX::_exit($ret); } $coll_hook->($lpkg, 'start', $cs, $pid) if $coll_hook; if ($pid < 0) { # failed - Lets not start any more jobs for this # processable $failed{$lpkg->identifier} = 1; delete $active{$lpkg->identifier}; last; } $running_jobs->{$pid} = [$cs, $cmap, $lpkg]; if ($jobs) { # Have we hit the limit of running jobs? last PROC if scalar keys %$running_jobs >= $jobs; } } } # wait until a job finishes to run its branches, if any, or skip # this package if any of the jobs failed. while (my ($pid, $job_data) = wait_any($running_jobs, $nohang)) { my $status = $?; my ($cs, $cmap, $lpkg) = @$job_data; my $procid = $lpkg->identifier; $coll_hook->($lpkg, 'finish', $cs, $pid, $status) if $coll_hook; if ($status) { # failed ... $failed{$procid} = 1; delete $active{$procid}; next; } my $coll = $cs->name; # The collection was success $lpkg->_mark_coll_finished($coll, $cs->version); $cmap->satisfy($coll); # If the entry is marked as failed, don't break the loop # for it. next if exists $failed{$procid}; $active{$procid} = 1 if $cmap->selectable; $nohang = 1 if %active; } # Stop when there are no running jobs and no new pending ones. unless (%active or %$running_jobs) { # No more running jobs and no new jobs have become available... # It is not quite sufficient, so ensure that all jobs have in # fact been run. my $done = 1; foreach my $procid (keys %$worklists) { # Failed ones do not count... next if $failed{$procid}; my $cmap = $worklists->{$procid}->{'collmap'}; if ($cmap->pending) { $done = 0; last; } } last if $done; } } foreach my $procid (keys %$worklists) { my $wlist = $worklists->{$procid}; my $lpkg = $wlist->{'lab-entry'}; my $changed = $wlist->{'changed'}; my $state = 'unchanged'; $state = 'changed' if $changed; $state = 'failed' if exists $failed{$procid}; $finish_hook->($lpkg, $state, sub { $changed = 1 }) if $finish_hook; if ($changed) { $state = 'sf-error'; if ($lpkg->update_status_file) { $state = 'sf-success'; } $finish_hook->($lpkg, $state) if $finish_hook; } } return; } =item reset_worklist Wait for all running jobs (see L) and discard the current worklist. =cut sub reset_worklist { my ($self) = @_; $self->wait_for_jobs; $self->{'worktable'} = {}; return; } =item wait_for_jobs Block and wait for all running jobs to terminate. Usually this is not needed unless process_tasks was interrupted somehow. =cut sub wait_for_jobs { my ($self) = @_; my $running = $self->{'running-jobs'}; if (%{$running}) { while (my ($key, undef) = wait_any($running)) { delete $running->{$key}; } $self->{'running-jobs'} = {}; } return; } =item kill_jobs Forcefully terminate all running jobs. Usually this is not needed unless process_tasks was interrupted somehow. =cut sub kill_jobs { my ($self) = @_; my $running = $self->{'running-jobs'}; if (%{$running}) { kill_all($running); kill_all($running, 'KILL') if %$running; $self->{'running-jobs'} = {}; } return; } =item jobs Returns or sets the max number of jobs to be processed in parallel. If the limit is 0, then there is no limit for the number of parallel jobs. =cut Lintian::Unpacker->mk_accessors(qw(jobs)); =back =head1 AUTHOR Originally written by Niels Thykier for Lintian. =head1 SEE ALSO lintian(1), Lintian::CollScript(3), Lintian::Lab::Entry(3) =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/Relation.pm0000664000000000000000000010100512314366011015725 0ustar # -*- perl -*- # Lintian::Relation -- operations on dependencies and relationships # Copyright (C) 1998 Christian Schwarz and Richard Braakman # Copyright (C) 2004-2009 Russ Allbery # # 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, see . package Lintian::Relation; use strict; use warnings; use constant { VISIT_PRED_NAME => 0, VISIT_PRED_FULL => 1, VISIT_OR_CLAUSE_FULL => 3, VISIT_STOP_FIRST_MATCH => 4, }; use Exporter qw(import); our (@EXPORT_OK, %EXPORT_TAGS); %EXPORT_TAGS = ( constants => [ qw(VISIT_PRED_NAME VISIT_PRED_FULL VISIT_OR_CLAUSE_FULL VISIT_STOP_FIRST_MATCH) ], ); @EXPORT_OK = (@{ $EXPORT_TAGS{constants} }); use Lintian::Relation::Version qw(:all); =head1 NAME Lintian::Relation - Lintian operations on dependencies and relationships =head1 SYNOPSIS my $depends = Lintian::Relation->new('foo | bar, baz'); print "yes\n" if $depends->implies('baz'); print "no\n" if $depends->implies('foo'); =head1 DESCRIPTION This module provides functions for parsing and evaluating package relationship fields such as Depends and Recommends for binary packages and Build-Depends for source packages. It parses a relationship into an internal format and can then answer questions such as "does this dependency require that a given package be installed" or "is this relationship a superset of another relationship." A dependency line is viewed as a predicate formula. The comma separator means "and", and the alternatives separator means "or". A bare package name is the predicate "a package of this name is available". A package name with a version clause is the predicate "a package of this name that satisfies this version clause is available." Architecture restrictions, as specified in Policy for build dependencies, are supported and also checked in the implication logic unless the new_noarch() constructor is used. With that constructor, architecture restrictions are ignored. =head1 CLASS METHODS =over 4 =item new(RELATION) Creates a new Lintian::Relation object corresponding to the parsed relationship RELATION. This object can then be used to ask questions about that relationship. RELATION may be C or the empty string, in which case the returned Lintian::Relation object is empty (always satisfied). =cut # The internal parser which converts a single package element of a # relationship into the parsed form used for later processing. We permit # substvars to be used as package names so that we can use these routines with # the unparsed debian/control file. sub parse_element { my ($class, $element) = @_; $element =~ / ^\s* # skip leading whitespace ( # package name or substvar (1) (?: # start of the name [a-zA-Z0-9][a-zA-Z0-9+.-]+ # start of a package name | # or \$\{[a-zA-Z0-9:-]+\} # substvar ) # end of start of the name (?: # substvars may be mixed in [a-zA-Z0-9+.-]+ # package name portion | # or \$\{[a-zA-Z0-9:-]+\} # substvar )* # zero or more portions or substvars ) # end of package name or substvar (?:[:]([a-z0-9-]+))? # optional Multi-arch arch specification (2) (?: # start of optional version \s* \( # open parenthesis for version part \s* (<<|<=|=|>=|>>|<|>) # relation part (3) \s* (.*?) # version (4) \s* \) # closing parenthesis )? # end of optional version (?: # start of optional architecture \s* \[ # open bracket for architecture \s* (.*?) # architectures (5) \s* \] # closing bracket )? # end of optional architecture (?: # start of optional restriction \s* < # open bracket for restriction \s* (.*?) # don't parse restrictions now \s* > # closing bracket )? # end of optional restriction /x; my ($pkgname, $march, $relop, $relver, $bdarch, $restr) = ($1, $2, $3, $4, $5, $6); my @array; if (not defined($relop)) { # If there's no version, we don't need to do any further processing. # Otherwise, convert the legacy < and > relations to the current ones. @array = ('PRED', $pkgname, undef, undef, $bdarch, $march, $restr); } else { if ($relop eq '<') { $relop = '<<'; } elsif ($relop eq '>') { $relop = '>>'; } @array = ('PRED', $pkgname, $relop, $relver, $bdarch, $march, $restr); } # Optimise the memory usage of the array. Understanding this # requires a bit of "Perl guts" knowledge. Storing "undef" in an # array (or hash) actually creates a new empty "undefined" scalar. # This means that we pay the full overhead of Perl's SV struct for # each undef value in this array. # Combine this with the fact that at least the BD-arch qualifier # is rare (in fact, always undef for binary relations) and # multi-arch qualifiers equally so (at least at the moment). # On unversioned relations, we end up paying for 4 (unique) empty # scalars. # This overhead accumuates to 0.44M for the binary relations of # source:linux (on i386). # # Fortunately, perl allows us to do "out-of-bounds" access and # will simply return undef in this case. This means, we can # basically get away with popping elements from the right hand # side of the array "for free". pop(@array) while (not defined($array[-1])); return \@array; } # Singleton "empty-relation" object. Since these objects are immutable, # there is no reason for having multiple "empty" objects. my $EMPTY_RELATION = bless(['AND'], 'Lintian::Relation'); # Create a new Lintian::Relation object, parsing the argument into our # internal format. sub new { my ($class, $relation) = @_; $relation = '' unless defined($relation); my @result; for my $element (split(/\s*,\s*/o, $relation)) { next if $element eq ''; my @alternatives; for my $alternative (split(/\s*\|\s*/o, $element)) { push(@alternatives, $class->parse_element($alternative)); } if (@alternatives == 1) { push(@result, @alternatives); } else { push(@result, ['OR', @alternatives]); } } if ($class eq 'Lintian::Relation') { return $EMPTY_RELATION if not @result; } my $self; if (@result == 1) { $self = $result[0]; } else { $self = ['AND', @result]; } bless($self, $class); return $self; } =item new_norestriction(RELATION) Creates a new Lintian::Relation object corresponding to the parsed relationship RELATION, ignoring architecture restrictions and restriction lists. This should be used in cases where we only care if a dependency is present in some cases and we don't want to require that the architectures match (such as when checking for proper build dependencies, since if there are architecture constraints the maintainer is doing something beyond Lintian's ability to analyze) or that the restrictions list match (Lintian can't handle dependency implications with build profiles yet). RELATION may be C or the empty string, in which case the returned Lintian::Relation object is empty (always satisfied). =cut sub new_norestriction { my ($class, $relation) = @_; $relation = '' unless defined($relation); $relation =~ s/\[[^\]]*\]//g; $relation =~ s/<[^>]*>//g; return $class->new($relation); } =item new_noarch(RELATION) An alias for new_norestriction. =cut *new_noarch = \&new_norestriction; =item and(RELATION, ...) Creates a new Lintian::Relation object produced by AND'ing all the relations together. Semantically it is the similar to: Lintian::Relation->new (join (', ', @relations)) Except it can avoid some overhead and it works if some of the elements are Lintian::Relation objects already. =cut sub and { my ($class, @args) = @_; my @result; foreach my $arg (@args) { my $rel = $arg; unless ($arg && ref $arg eq 'Lintian::Relation') { # Optimize out empty entries. next unless $arg; $rel = Lintian::Relation->new($arg); } if ($rel->[0] eq 'AND') { my @r = @$rel; push @result, @r[1..$#r]; } else { push @result, $rel; } } if ($class eq 'Lintian::Relation') { return $EMPTY_RELATION if not @result; } my $self; if (@result == 1) { $self = $result[0]; } else { $self = ['AND', @result]; } bless($self, $class); return $self; } =back =head1 INSTANCE METHODS =over 4 =item duplicates() Returns a list of duplicated elements within the relation object. Each element of the returned list will be a reference to an anonymous array holding a set of relations considered duplicates of each other. Two relations are considered duplicates if one implies the other, meaning that if one relationship is satisfied, the other is necessarily satisfied. This relationship does not have to be commutative: the opposite implication may not hold. =cut sub duplicates { my ($self) = @_; # There are no duplicates unless the top-level relationship is AND. if ($self->[0] ne 'AND') { return (); } # The logic here is a bit complex in order to merge sets of duplicate # dependencies. We want foo (<< 2), foo (>> 1), foo (= 1.5) to end up as # one set of duplicates, even though the first doesn't imply the second. # # $dups holds a hash, where the key is the earliest dependency in a set # and the value is a hash whose keys are the other dependencies in the # set. $seen holds a map from package names to the duplicate sets that # they're part of, if they're not the earliest package in a set. If # either of the dependencies in a duplicate pair were already seen, add # the missing one of the pair to the existing set rather than creating a # new one. my (%dups, %seen); for (my $i = 1; $i < @$self; $i++) { for (my $j = $i + 1; $j < @$self; $j++) { my $forward = $self->implies_array($self->[$i], $self->[$j]); my $reverse = $self->implies_array($self->[$j], $self->[$i]); if ($forward or $reverse) { my $first = $self->unparse($self->[$i]); my $second = $self->unparse($self->[$j]); if ($seen{$first}) { $dups{$seen{$first}}->{$second} = $j; $seen{$second} = $seen{$first}; } elsif ($seen{$second}) { $dups{$seen{$second}}->{$first} = $i; $seen{$first} = $seen{$second}; } else { $dups{$first} ||= {}; $dups{$first}->{$second} = $j; $seen{$second} = $first; } } } } # The sort maintains the original order in which we encountered the # dependencies, just in case that helps the user find the problems, # despite the fact we're using a hash. return map { [$_, sort { $dups{$_}{$a} <=> $dups{$_}{$b} } keys %{ $dups{$_} }] } keys %dups; } =item implies(RELATION) Returns true if the relationship implies RELATION, meaning that if the Lintian::Relation object is satisfied, RELATION will always be satisfied. RELATION may be either a string or another Lintian::Relation object. By default, architecture restrictions are honored in RELATION if it is a string. If architecture restrictions should be ignored in RELATION, create a Lintian::Relation object with new_noarch() and pass that in as RELATION instead of the string. =cut # This internal function does the heavily lifting of comparing two # elements. # # Takes two elements and returns true iff the second can be deduced from the # first. If the second is falsified by the first (in other words, if p # actually implies not q), return 0. Otherwise, return undef. The 0 return # is used by implies_element_inverse. sub implies_element { my ($self, $p, $q) = @_; # If the names don't match, there is no relationship between them. $$p[1] = '' unless defined $$p[1]; $$q[1] = '' unless defined $$q[1]; return if $$p[1] ne $$q[1]; # Since the restriction list is not a set (as the architecture list) there # is no way to calculate a superset or subset of one another. Furthermore, # the evaluation depends on which build profiles are currently activated. # With n being the number of possible build profiles, 2^n checks would # have to be done. We decide not to do that (yet). return if defined $$p[6] or defined $$q[6]; # If the names match, then the only difference is in the architecture or # version clauses. First, check architecture. The architectures for p # must be a superset of the architectures for q. my @p_arches = split(' ', defined($$p[4]) ? $$p[4] : ''); my @q_arches = split(' ', defined($$q[4]) ? $$q[4] : ''); if (@p_arches || @q_arches) { my $p_arch_neg = @p_arches && $p_arches[0] =~ /^!/; my $q_arch_neg = @q_arches && $q_arches[0] =~ /^!/; # If p has no arches, it is a superset of q and we should fall through # to the version check. if (not @p_arches) { # nothing } # If q has no arches, it is a superset of p and there are no useful # implications. elsif (not @q_arches) { return; } # Both have arches. If neither are negated, we know nothing useful # unless q is a subset of p. elsif (not $p_arch_neg and not $q_arch_neg) { my %p_arches = map { $_ => 1 } @p_arches; my $subset = 1; for my $arch (@q_arches) { $subset = 0 unless $p_arches{$arch}; } return unless $subset; } # If both are negated, we know nothing useful unless p is a subset of # q (and therefore has fewer things excluded, and therefore is more # general). elsif ($p_arch_neg and $q_arch_neg) { my %q_arches = map { $_ => 1 } @q_arches; my $subset = 1; for my $arch (@p_arches) { $subset = 0 unless $q_arches{$arch}; } return unless $subset; } # If q is negated and p isn't, we'd need to know the full list of # arches to know if there's any relationship, so bail. elsif (not $p_arch_neg and $q_arch_neg) { return; } # If p is negated and q isn't, q is a subset of p iff none of the # negated arches in p are present in q. elsif ($p_arch_neg and not $q_arch_neg) { my %q_arches = map { $_ => 1 } @q_arches; my $subset = 1; for my $arch (@p_arches) { $subset = 0 if $q_arches{substr($arch, 1)}; } return unless $subset; } } # Multi-arch architecture specification # According to the spec, only the special value "any" is allowed # and it is "recommended" to consider "other such package # relations as unsatisfiable". That said, there seem to be an # interest in supporting ":" as well, so we will (probably) # have to accept those as well. # # Other than that, we would need to know that the package has the # field "Multi-arch: allowed", but we cannot check that here. So # we assume that it is okay. # # For now assert that only the identity holds. In practise, the # "pkg:X" (for any valid value of X) seems to imply "pkg:any", # fixing that is a TODO (because version clauses complicates # matters) if (defined $$p[5]) { # Assume the identity to hold return unless defined $$q[5] and $$p[5] eq $$q[5]; } elsif (defined $$q[5]) { return unless $$q[5] eq 'any'; # pkg:any implies pkg (but the reverse is not true). # # TODO: Review this case. Are there cases where Q cannot # disprove P due to the ":any"-qualifier? For now, we # assume there are no such cases. } # Now, down to version. The implication is true if p's clause is stronger # than q's, or is equivalent. # If q has no version clause, then p's clause is always stronger. return 1 if not defined $$q[2]; # If q does have a version clause, then p must also have one to have any # useful relationship. return if not defined $$p[2]; # q wants an exact version, so p must provide that exact version. p # disproves q if q's version is outside the range enforced by p. if ($$q[2] eq '=') { if ($$p[2] eq '<<') { return versions_lte($$p[3], $$q[3]) ? 0 : undef; } elsif ($$p[2] eq '<=') { return versions_lt($$p[3], $$q[3]) ? 0 : undef; } elsif ($$p[2] eq '>>') { return versions_gte($$p[3], $$q[3]) ? 0 : undef; } elsif ($$p[2] eq '>=') { return versions_gt($$p[3], $$q[3]) ? 0 : undef; } elsif ($$p[2] eq '=') { return versions_equal($$p[3], $$q[3]); } } # A greater than clause may disprove a less than clause. Otherwise, if # p's clause is <<, <=, or =, the version must be <= q's to imply q. if ($$q[2] eq '<=') { if ($$p[2] eq '>>') { return versions_gte($$p[3], $$q[3]) ? 0 : undef; } elsif ($$p[2] eq '>=') { return versions_gt($$p[3], $$q[3]) ? 0 : undef; } elsif ($$p[2] eq '=') { return versions_lte($$p[3], $$q[3]); } else { return versions_lte($$p[3], $$q[3]) ? 1 : undef; } } # Similar, but << is stronger than <= so p's version must be << q's # version if the p relation is <= or =. if ($$q[2] eq '<<') { if ($$p[2] eq '>>' or $$p[2] eq '>=') { return versions_gte($$p[3], $$p[3]) ? 0 : undef; } elsif ($$p[2] eq '<<') { return versions_lte($$p[3], $$q[3]); } elsif ($$p[2] eq '=') { return versions_lt($$p[3], $$q[3]); } else { return versions_lt($$p[3], $$q[3]) ? 1 : undef; } } # Same logic as above, only inverted. if ($$q[2] eq '>=') { if ($$p[2] eq '<<') { return versions_lte($$p[3], $$q[3]) ? 0 : undef; } elsif ($$p[2] eq '<=') { return versions_lt($$p[3], $$q[3]) ? 0 : undef; } elsif ($$p[2] eq '=') { return versions_gte($$p[3], $$q[3]); } else { return versions_gte($$p[3], $$q[3]) ? 1 : undef; } } if ($$q[2] eq '>>') { if ($$p[2] eq '<<' or $$p[2] eq '<=') { return versions_lte($$p[3], $$q[3]) ? 0 : undef; } elsif ($$p[2] eq '>>') { return versions_gte($$p[3], $$q[3]); } elsif ($$p[2] eq '=') { return versions_gt($$p[3], $$q[3]); } else { return versions_gt($$p[3], $$q[3]) ? 1 : undef; } } return; } # This internal function does the heavy of AND, OR, and NOT logic. It expects # two references to arrays instead of an object and a relation. sub implies_array { my ($self, $p, $q) = @_; my $i; if ($q->[0] eq 'PRED') { if ($p->[0] eq 'PRED') { return $self->implies_element($p, $q); } elsif ($p->[0] eq 'AND') { $i = 1; while ($i < @$p) { return 1 if $self->implies_array($p->[$i++], $q); } return 0; } elsif ($p->[0] eq 'OR') { $i = 1; while ($i < @$p) { return 0 if not $self->implies_array($p->[$i++], $q); } return 1; } elsif ($p->[0] eq 'NOT') { return $self->implies_array_inverse($p->[1], $q); } } elsif ($q->[0] eq 'AND') { # Each of q's clauses must be deduced from p. $i = 1; while ($i < @$q) { return 0 if not $self->implies_array($p, $q->[$i++]); } return 1; } elsif ($q->[0] eq 'OR') { # If p is something other than OR, p needs to satisfy one of the # clauses of q. If p is an AND clause, q is satisfied if any of the # clauses of p satisfy it. # # The interesting case is OR. In this case, do an OR to OR comparison # to determine if q's clause is a superset of p's clause as follows: # take each branch of p and see if it satisfies a branch of q. If # each branch of p satisfies some branch of q, return 1. Otherwise, # return 0. # # Simple logic that requires that p satisfy at least one of the # clauses of q considered in isolation will miss that a|b satisfies # a|b|c, since a|b doesn't satisfy any of a, b, or c in isolation. if ($p->[0] eq 'PRED') { $i = 1; while ($i < @$q) { return 1 if $self->implies_array($p, $q->[$i++]); } return 0; } elsif ($p->[0] eq 'AND') { $i = 1; while ($i < @$p) { return 1 if $self->implies_array($p->[$i++], $q); } return 0; } elsif ($p->[0] eq 'OR') { for ($i = 1; $i < @$p; $i++) { my $j = 1; my $satisfies = 0; while ($j < @$q) { if ($self->implies_array($p->[$i], $q->[$j++])) { $satisfies = 1; last; } } return 0 unless $satisfies; } return 1; } elsif ($p->[0] eq 'NOT') { return $self->implies_array_inverse($p->[1], $q); } } elsif ($q->[0] eq 'NOT') { if ($p->[0] eq 'NOT') { return $self->implies_array($q->[1], $p->[1]); } return $self->implies_array_inverse($p, $q->[1]); } } # The public interface. sub implies { my ($self, $relation) = @_; if (ref($relation) ne 'Lintian::Relation') { $relation = Lintian::Relation->new($relation); } return $self->implies_array($self, $relation); } =item implies_inverse(RELATION) Returns true if the relationship implies that RELATION is certainly false, meaning that if the Lintian::Relation object is satisfied, RELATION cannot be satisfied. RELATION may be either a string or another Lintian::Relation object. As with implies(), by default, architecture restrictions are honored in RELATION if it is a string. If architecture restrictions should be ignored in RELATION, create a Lintian::Relation object with new_noarch() and pass that in as RELATION instead of the string. =cut # This internal function does the heavy lifting of inverse implication between # two elements. Takes two elements and returns true iff the falsehood of # the second can be deduced from the truth of the first. In other words, p # implies not q, or resstated, q implies not p. (Since if a implies b, not b # implies not a.) Due to the return value of implies_element(), we can let it # do most of the work. sub implies_element_inverse { my ($self, $p, $q) = @_; my $result = $self->implies_element($q, $p); return not $result if defined $result; return; } # This internal function does the heavily lifting for AND, OR, and NOT # handling for inverse implications. It takes two references to arrays and # returns true iff the falsehood of the second can be deduced from the truth # of the first. sub implies_array_inverse { my ($self, $p, $q) = @_; my $i; if ($$q[0] eq 'PRED') { if ($$p[0] eq 'PRED') { return $self->implies_element_inverse($p, $q); } elsif ($$p[0] eq 'AND') { # q's falsehood can be deduced from any of p's clauses $i = 1; while ($i < @$p) { return 1 if $self->implies_array_inverse($$p[$i++], $q); } return 0; } elsif ($$p[0] eq 'OR') { # q's falsehood must be deduced from each of p's clauses $i = 1; while ($i < @$p) { return 0 if not $self->implies_array_inverse($$p[$i++], $q); } return 1; } elsif ($$p[0] eq 'NOT') { return $self->implies_array($q, $$p[1]); } } elsif ($$q[0] eq 'AND') { # Any of q's clauses must be falsified by p. $i = 1; while ($i < @$q) { return 1 if $self->implies_array_inverse($p, $$q[$i++]); } return 0; } elsif ($$q[0] eq 'OR') { # Each of q's clauses must be falsified by p. $i = 1; while ($i < @$q) { return 0 if not $self->implies_array_inverse($p, $$q[$i++]); } return 1; } elsif ($$q[0] eq 'NOT') { return $self->implies_array($p, $$q[1]); } } # The public interface. sub implies_inverse { my ($self, $relation) = @_; if (ref($relation) ne 'Lintian::Relation') { $relation = Lintian::Relation->new($relation); } return $self->implies_array_inverse($self, $relation); } =item unparse() Returns the textual form of a relationship. This converts the internal form back into the textual representation and returns that, not the original argument, so the spacing is standardized. Returns undef on internal failures (such as an object in an unexpected format). =cut # The second argument isn't part of the public API. It's a partial relation # that's not a blessed object and is used by unparse() internally so that it # can recurse. # # We also support a NOT predicate. This currently isn't ever generated by a # regular relation, but it may someday be useful. sub unparse { my ($self, $partial) = @_; my $relation = defined($partial) ? $partial : $self; if ($relation->[0] eq 'PRED') { my $text = $relation->[1]; if (defined $relation->[5]) { $text .= ":$relation->[5]"; } if (defined $relation->[2]) { $text .= " ($relation->[2] $relation->[3])"; } if (defined $relation->[4]) { $text .= " [$relation->[4]]"; } return $text; } elsif ($relation->[0] eq 'AND' || $relation->[0] eq 'OR') { my $separator = ($relation->[0] eq 'AND') ? ', ' : ' | '; return join($separator, map {$self->unparse($_);} @$relation[1 .. $#$relation]); } elsif ($relation->[0] eq 'NOT') { return '! ' . $self->unparse($relation->[1]); } else { require Carp; Carp::confess("Case $relation->[0] not implemented"); } } =item matches (REGEX[, WHAT]) Check if one of the predicates in this relation matches REGEX. WHAT determines what is tested against REGEX and if not given, defaults to VISIT_PRED_NAME. This method will return a truth value if REGEX matches at least one predicate or clause (as defined by the WHAT parameter - see below). NOTE: Often L (or L) is a better choice than this method. This method should generally only be used when checking for a "pattern" package (e.g. phpapi-[\d\w+]+). WHAT can be one of: =over 4 =item VISIT_PRED_NAME Match REGEX against the package name in each predicate (i.e. version and architecture constrains are ignored). Each predicate is tested in isolation. As an example: my $rel = Lintian::Relation->new ('somepkg | pkg-0 (>= 1)'); # Will match (version is ignored) $rel->matches (qr/^pkg-\d$/, VISIT_PRED_NAME); =item VISIT_PRED_FULL Match REGEX against the full (normalized) predicate (i.e. including version and architecture). Each predicate is tested in isolation. As an example: my $vrel = Lintian::Relation->new ('somepkg | pkg-0 (>= 1)'); my $uvrel = Lintian::Relation->new ('somepkg | pkg-0'); # Will NOT match (does not match with version) $vrel->matches (qr/^pkg-\d$/, VISIT_PRED_FULL); # Will match (this relation does not have a version) $uvrel->matches (qr/^pkg-\d$/, VISIT_PRED_FULL); # Will match (but only because there is a version) $vrel->matches (qr/^pkg-\d \(.*\)$/, VISIT_PRED_FULL); # Will NOT match (there is no verson in the relation) $uvrel->matches (qr/^pkg-\d \(.*\)$/, VISIT_PRED_FULL); =item VISIT_OR_CLAUSE_FULL Match REGEX against the full (normalized) OR clause. Each predicate will have both version and architecture constrains present. As an example: my $vpred = Lintian::Relation->new ('pkg-0 (>= 1)'); my $orrel = Lintian::Relation->new ('somepkg | pkg-0 (>= 1)'); my $rorrel = Lintian::Relation->new ('pkg-0 (>= 1) | somepkg'); # Will match $vrel->matches (qr/^pkg-\d(?: \([^\)]\))?$/, VISIT_OR_CLAUSE_FULL); # These Will NOT match (does not match the "|" and the "somepkg" part) $orrel->matches (qr/^pkg-\d(?: \([^\)]\))?$/, VISIT_OR_CLAUSE_FULL); $rorrel->matches (qr/^pkg-\d(?: \([^\)]\))?$/, VISIT_OR_CLAUSE_FULL); =back =cut sub matches { my ($self, $regex, $what, $partial) = @_; my $relation = $partial // $self; $what //= VISIT_PRED_NAME; return $self->visit(sub { m/$regex/ }, $what | VISIT_STOP_FIRST_MATCH); } =item visit (CODE[, FLAGS]) Visit clauses or predicates of this relation. Each clause or predicate is passed to CODE as first argument and will be available as C<$_>. The optional bitmask parameter, FLAGS, can be used to control what is visited and such. If FLAGS is not given, it defaults to VISIT_PRED_NAME. The possible values of FLAGS are: =over 4 =item VISIT_PRED_NAME The package name in each predicate is visited, but the version and architecture part(s) are left out (if any). =item VISIT_PRED_FULL The full predicates are visited in turn. The predicate will be normalized (by L). =item VISIT_OR_CLAUSE_FULL CODE will be passed the full OR clauses of this relation. The clauses will be normalized (by L) Note: It will not visit the underlying predicates in the clause. =item VISIT_STOP_FIRST_MATCH Stop the visits the first time CODE returns a truth value. This is similar to L, except visit will return the value returned by CODE. =back Except where a given flag specifies otherwise, the return value of visit is last value returned by CODE (or C for the empty relation). =cut # The last argument is not part of the public API. It's a partial # relation that's not a blessed object and is used by visit() # internally so that it can recurse. sub visit { my ($self, $code, $flags, $partial) = @_; my $relation = $partial // $self; $flags //= 0; if ($relation->[0] eq 'PRED') { my $against = $relation->[1]; $against = $self->unparse($relation) if $flags & VISIT_PRED_FULL; local $_ = $against; return $code->($against); } elsif (($flags & VISIT_OR_CLAUSE_FULL) == VISIT_OR_CLAUSE_FULL and $relation->[0] eq 'OR') { my $against = $self->unparse($relation); local $_ = $against; return $code->($against); } elsif ($relation->[0] eq 'AND' or $relation->[0] eq 'OR' or $relation->[0] eq 'NOT') { for my $rel (@$relation[1 .. $#$relation]) { my $ret = $self->visit($code, $flags, $rel); if ($ret && ($flags & VISIT_STOP_FIRST_MATCH)) { return $ret; } } return; } } =item empty () Returns a truth value if this relation is empty (i.e. it contains no predicates). =cut sub empty { my ($self) = @_; return 1 if $self->[0] eq 'AND' and not $self->[1]; return 0; } =back =head1 AUTHOR Originally written by Russ Allbery for Lintian. =head1 SEE ALSO lintian(1) =cut 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/lib/Lintian/CollScript.pm0000664000000000000000000001632612311317627016247 0ustar # Copyright (C) 2012 Niels Thykier # # 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::CollScript; use strict; use warnings; use parent 'Class::Accessor::Fast'; use Carp qw(croak); use File::Basename qw(dirname); use Lintian::Util qw(fail get_dsc_info); =head1 NAME Lintian::CollScript - Collection script handle =head1 SYNOPSIS use Lintian::CollScript; my $cs = Lintian::CollScript->new ("$ENV{'LINTIAN_ROOT'}/collection/index.desc"); my $name = $cs->name; foreach my $needs ($cs->needs_info) { print "$name needs $needs\n"; } =head1 DESCRIPTION Instances of this class represents the data in the collection ".desc" files. It allows access to the common meta data of the collection (such as Needs-Info). =head1 CLASS METHODS =over 4 =item new (FILE) Parse FILE as a collection desc file. =cut sub new { my ($class, $file) = @_; my $header = get_dsc_info($file); my $self; foreach my $field (qw(collector-script type version)) { if (($header->{$field}//'') eq '') { croak "Required field \"$field\" is missing (or empty) in $file"; } } $self = { 'name' => $header->{'collector-script'}, 'type' => $header->{'type'}, 'version' => $header->{'version'}, 'type-table' => {}, 'auto_remove' => 0, 'interface' => $header->{'interface'}//'exec', '_collect_sub' => undef, }; $self->{'script_path'} = dirname($file) . '/' . $self->{'name'}; $self->{'auto_remove'} = 1 if lc($header->{'auto-remove'}//'') eq 'yes'; for my $t (split /\s*,\s*/o, $self->{'type'}) { $self->{'type-table'}->{$t} = 1; } bless $self, $class; $self->_parse_needs($header->{'needs-info'}); $self->_load_collector; return $self; } sub _parse_needs { my ($self, $needs) = @_; my @min = (); my %typespec = (); my %seen = (); my @max = (); foreach my $part (split /\s*,\s*/, $needs//'') { if ($part =~ m/^ \s* (\S+) \s* \[ \s* ( [^]]+ ) \s* \] \s*$/x) { my ($dep, $typelist) = ($1, $2); my @types = split m/\s++/, $typelist; if (@types) { push @max, $dep unless exists $seen{$dep}; foreach my $type (@types) { push @{ $typespec{$type} }, $dep; } } else { croak( join(q{ }, 'Unknown conditional dependency in coll', "$self->{'name'}: $part\n")); } } else { push @min, $part; push @max, $part unless exists $seen{$part}; } } $self->{'needs_info'}->{'min'} = \@min; $self->{'needs_info'}->{'type'} = \%typespec; $self->{'needs_info'}->{'max'} = \@max; return; } =back =head1 INSTANCE METHODS =over 4 =item name Returns the "name" of the collection script. This is the value in the Collector-Script field in the file. =item type Returns the value stored in the "Type" field of the file. For the purpose of testing if the collection applies to a given package type, the L method can be used instead. =item version Returns the value of the "Version" field of the file. This should be an integer describing the version of the collector script. =item auto_remove Returns a truth value if the collection has the "auto-remove" flag. =item script_path Returns the absolute path to the collection script. =item interface The call interface for this collection script. =over 4 =item exec The collection is run by invoking the script denoted by script_path with the proper arguments. This is the default value. =item perl-coll The collection is implemented in Perl in such a way that it can be loaded into perl and run via the L method. Collections that have the "perl-coll" can also be run as if they had the "exec" interface (see above). =back =cut Lintian::CollScript->mk_ro_accessors( qw(name type version auto_remove script_path interface )); =item needs_info ([COND]) Returns a list of all items listed in the Needs-Info field. Neither the list nor its contents should be modified. COND is optional and used to determine what conditions are true. If omitted, all "extra" dependencies are returned. Otherwise, only the dependencies required by COND are included. COND is a hashref and with the following key/values: =over 4 =item type The value is a package type that determines which package type is being unpacked. This is used to determine if the condition for " []" relations are true or not. =back =cut sub needs_info { my ($self, $cond) = @_; if ($cond && exists $cond->{'type'}) { my $needs = $self->{'needs_info'}; my @min = @{ $needs->{'min'} }; my $type = $cond->{'type'}; push @min, @{ $needs->{'type'}->{$type} } if exists $needs->{'type'}->{$type}; return @min; } return @{ $self->{'needs_info'}->{'max'} }; } =item is_type (TYPE) Returns a truth value if this collection can be applied to a TYPE package. =cut sub is_type { my ($self, $type) = @_; return $self->{'type-table'}->{$type}; } =item collect (PKG, TASK, DIR) =cut sub collect { my ($self, $pkg_name, $task, $dir) = @_; my $iface = $self->interface; if ($iface eq 'perl-coll') { my $collector = $self->{'_collect_sub'}; $collector->($pkg_name, $task, $dir); } elsif ($iface eq 'exec') { system($self->script_path, $pkg_name, $task, $dir) == 0 or die 'Collection ' . $self->name . " for $pkg_name failed\n"; } else { fail "Unknown interface: $iface"; } return; } sub _load_collector { my ($self) = @_; return unless $self->interface eq 'perl-coll'; my $cs_path = $self->script_path; my $ppkg = $self->name; my $collector; $ppkg =~ s,[-.],_,go; $ppkg =~ s,/,::,go; require $cs_path; { no strict 'refs'; $collector = \&{'Lintian::coll::' . $ppkg . '::collect'} if defined &{'Lintian::coll::' . $ppkg . '::collect'}; } fail $self->name . ' does not have a collect function' unless defined $collector; $self->{'_collect_sub'} = $collector; return; } =back =head1 AUTHOR Originally written by Niels Thykier for Lintian. =head1 SEE ALSO lintian(1), Lintian::Profile(3), Lintian::Tag::Info(3) =cut 1; __END__ # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/collection/0000775000000000000000000000000012314115150013600 5ustar lintian-2.5.22ubuntu1/collection/diffstat.desc0000664000000000000000000000037312310413144016247 0ustar Collector-Script: diffstat Author: Richard Braakman Info: This script extracts the Debian diff of a source package, and runs diffstat on it, leaving the result in the diffstat output file Type: source Version: 1 Interface: perl-coll lintian-2.5.22ubuntu1/collection/debian-readme0000775000000000000000000000455112310413144016210 0ustar #!/usr/bin/perl -w # debian-readme -- lintian collector script # Copyright (C) 1998 Richard Braakman # # 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::coll::debian_readme; use strict; use warnings; use autodie; use lib "$ENV{'LINTIAN_ROOT'}/lib"; use Lintian::Util qw(fail gunzip_file touch_file is_ancestor_of); sub collect { my ($pkg, $type, $dir) = @_; if (-f "$dir/README.Debian") { unlink("$dir/README.Debian"); } # If we are asked to only remove the files stop right here if ($type =~ m/^remove-/) { return; } # Pick the first of these files that exists. my @readmes = ( "$dir/unpacked/usr/share/doc/$pkg/README.Debian.gz", "$dir/unpacked/usr/share/doc/$pkg/README.Debian", "$dir/unpacked/usr/share/doc/$pkg/README.debian.gz", "$dir/unpacked/usr/share/doc/$pkg/README.debian", ); if (-d "$dir/unpacked/usr/share/doc/$pkg" && !is_ancestor_of("$dir/unpacked", "$dir/unpacked/usr/share/doc/$pkg") ) { # Unsafe path, stop here touch_file("$dir/README.Debian"); return; } my $file; for (@readmes) { if (-f $_) { $file = $_; last; } } if (not defined $file) { # no README found touch_file("$dir/README.Debian"); } elsif ($file =~ m/\.gz$/) { gunzip_file($file, "$dir/README.Debian"); } else { link($file, "$dir/README.Debian"); } return; } collect(@ARGV) if $0 =~ m,(?:^|/)debian-readme$,; 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/collection/file-info0000775000000000000000000000455312310413144015405 0ustar #!/usr/bin/perl -w # file-info -- lintian collection script # Copyright (C) 1998 Richard Braakman # # 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::coll::file_info; use strict; use warnings; use autodie; use FileHandle; use lib "$ENV{'LINTIAN_ROOT'}/lib"; use Lintian::Collect; use Lintian::Command qw(spawn reap); use Lintian::Util qw(locate_helper_tool); my $helper = locate_helper_tool('coll/file-info-helper'); sub collect { my ($pkg, $type, $dir) = @_; my $info = Lintian::Collect->new($pkg, $type, $dir); my $outfile = "$dir/file-info.gz"; if (-e "$dir/file-info") { unlink("$dir/file-info"); } if (-e $outfile) { unlink($outfile); } chdir("$dir/unpacked"); # We ignore failures from file because sometimes file returns a # non-zero exit status when it can't parse a file. So far, the # resulting output still appears to be usable (although will # contain "ERROR" strings, which Lintian doesn't care about), and # the only problem was the exit status. my %opts = ( pipe_in => FileHandle->new, out => $outfile, fail => 'never' ); spawn(\%opts, ['xargs', '-0r', 'file', '-e', 'ascii', '-NF', '', '--print0', '--'], '|', [$helper], '|', ['gzip', '--best', '-c']); $opts{pipe_in}->blocking(1); foreach my $file ($info->sorted_index) { printf {$opts{pipe_in}} "%s\0", $file; } close($opts{pipe_in}); reap(\%opts); return; } collect(@ARGV) if $0 =~ m,(?:^|/)file-info$,; 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/collection/changelog-file.desc0000664000000000000000000000042412310413144017304 0ustar Collector-Script: changelog-file Author: Richard Braakman Info: This script copies the changelog file and NEWS.Debian file (if any) of a package into the lintian directory. Type: binary Version: 1 Needs-Info: unpacked Interface: perl-coll lintian-2.5.22ubuntu1/collection/copyright-file.desc0000664000000000000000000000035412310413144017367 0ustar Collector-Script: copyright-file Author: Richard Braakman Info: This script copies the copyright file of a package into the lintian directory. Type: binary Version: 1 Needs-Info: unpacked Interface: perl-coll lintian-2.5.22ubuntu1/collection/doc-base-files.desc0000664000000000000000000000036212310413144017216 0ustar Collector-Script: doc-base-files Author: Josip Rodin Info: This script copies the contents of /usr/share/doc-base into the lintian doc-base/ directory. Type: binary Version: 2 Needs-Info: unpacked Interface: perl-coll lintian-2.5.22ubuntu1/collection/file-info.desc0000664000000000000000000000035712310413144016315 0ustar Collector-Script: file-info Author: Richard Braakman Info: This script runs the file(1) command over all files of any kind of package. Type: binary, udeb, source Version: 3 Needs-Info: unpacked, index Interface: perl-coll lintian-2.5.22ubuntu1/collection/hardening-info0000775000000000000000000000541412314115150016422 0ustar #!/usr/bin/perl -w # hardening-info -- lintian collection script # The original shell script version of this script is # Copyright (C) 1998 Christian Schwarz # # The objdump version, including support for etch's binutils, is # Copyright (C) 2008 Adam D. Barratt # # This version, a trimmed-down wrapper for hardening-check, is # Copyright (C) 2012 Kees Cook # # 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::coll::hardening_info; use strict; use warnings; use autodie; use FileHandle; use lib "$ENV{'LINTIAN_ROOT'}/lib"; use Lintian::Collect; use Lintian::Command qw(spawn reap); use Lintian::Util qw(fail touch_file locate_helper_tool); my $helper = locate_helper_tool('coll/hardening-info-helper'); sub collect { my ($pkg, $type, $dir) = @_; my $info = Lintian::Collect->new($pkg, $type, $dir); if (-e "$dir/hardening-info") { unlink("$dir/hardening-info"); } # Prepare to examine the file tree. chdir("$dir/unpacked"); my %opts; my $open_hardening_info = sub { # Use xargs to keep processing times of packages like linux-image # reasonble. %opts = ( pipe_in => FileHandle->new, out => "$dir/hardening-info", fail => 'error' ); spawn(\%opts, ['xargs', '-0r', 'hardening-check', '--lintian', '--'], '|', [$helper]); $opts{pipe_in}->blocking(1); }; foreach my $bin ($info->sorted_index) { next unless $info->index($bin)->is_file; # Skip kernel modules and debug files next if $bin =~ m/\.ko$/o or $bin =~ m{\A usr/lib/debug/ }xsm; my $finfo = $info->file_info($bin); next unless $finfo =~ m/\bELF\b/o; $open_hardening_info->() unless %opts; printf {$opts{pipe_in}} "%s\0", $bin; } if (%opts) { close($opts{pipe_in}); reap(\%opts); } return; } collect(@ARGV) if $0 =~ m,(?:^|/)hardening-info$,; 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/collection/src-orig-index0000775000000000000000000001702512310413144016365 0ustar #!/usr/bin/perl # # Copyright (C) 2012 Niels Thykier # Based on coll/index which is: Copyright (C) 1998 Christian Schwarz # # 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::coll::src_orig_index; use strict; use warnings; use autodie; # import perl libraries use lib "$ENV{'LINTIAN_ROOT'}/lib"; use Cwd(); use Lintian::Collect; use Lintian::Command qw(spawn); use Lintian::Processable::Package; use Lintian::Util qw(fail); sub collect { my ($pkg, $type, $dir) = @_; my $info = Lintian::Collect->new($pkg, $type, $dir); if (-f "$dir/orig-index.gz") { unlink("$dir/orig-index.gz"); } # Nothing to do for native packages where the two indices are # identical. if ($info->native) { link("$dir/index.gz", "$dir/orig-index.gz"); return; } index_orig($pkg, $dir, $info); return; } # returns all (orig) tarballs. sub gather_tarballs { my ($pkg, $dir, $info) = @_; my $file = Cwd::realpath("$dir/dsc"); my $version; my @tarballs; my $base; my $baserev; my $proc; fail "Cannot resolve \"dsc\" link for $pkg or it does not point to a file." unless $file and -e $file; # Use Lintian::Processable::Package to determine source and # version as handles missing fields for us to some extend. $proc = Lintian::Processable::Package->new($file, 'source'); # Version handling is based on Dpkg::Version::parseversion. $version = $proc->pkg_src_version; if ($version =~ /:/) { $version =~ s/^(?:\d+):(.+)/$1/ or fail "bad version number '$version'"; } $baserev = $proc->pkg_src . '_' . $version; $version =~ s/(.+)-(?:.*)$/$1/; $base = $proc->pkg_src . '_' . $version; for my $fs (split /\n/, $info->field('files', '')) { $fs =~ s/^\s*//; next if $fs eq ''; my @t = split /\s+/o, $fs; next if $t[2] =~ m,/,; # Look for $pkg_$version.orig(-$comp)?.tar.$ext (non-native) # or $pkg_$version.tar.$ext (native) # - This deliberately does not look for the debian packaging # even when this would be a tarball. if ($t[2] =~ /^(?:\Q$base\E\.orig(?:-(.*))?|\Q$baserev\E)\.tar\.(?:gz|bz2|lzma|xz)$/ ) { push @tarballs, [$t[2], $1//'']; } } fail 'could not find the source tarball' unless @tarballs; return @tarballs; } # Creates an index of the orig tarballs the source package sub index_orig { my ($pkg, $dir, $info) = @_; my @tarballs = gather_tarballs($pkg, $dir, $info); my @result; foreach my $tardata (@tarballs) { my ($tarball, $compname) = @$tardata; my @index; # Collect a list of the files in the source package. tar # currently doesn't automatically recognize LZMA / XZ, so we # need to add the option where it's needed. Change hard link # status (h) to regular files and remove a leading ./ prefix # on filenames while we're reading the tar output. We # intentionally don't parallelize this job because we need to # use the output below. my @tar_options = ('-tvf'); my $last = ''; my $collect; if ($tarball =~ /\.(lzma|xz)\z/) { unshift @tar_options, "--$1"; } $collect = sub { my @lines = map { split "\n" } @_; if ($last ne '') { $lines[0] = $last . $lines[0]; } if ($_[-1] !~ /\n\z/) { $last = pop @lines; } else { $last = ''; } for my $line (@lines) { $line =~ s/^h/-/; if ($line and $line !~ m,^(?:\S+\s+){5}\./$,) { push @index, $line . "\n"; } } }; # End $collect = sub; spawn({ fail => 'never', out => $collect, err_append => "$dir/orig-index-errors" }, ['tar', @tar_options, "$dir/$tarball"]); if ($last) { fail "tar output (for $tarball from $pkg) does not end in a newline"; } # We now need to see if all files in the tarball have a common # prefix. If so, we're going to strip that prefix off each # file name. We also remove lines that consist solely of the # prefix. my $prefix; for my $line (@index) { my ($filename) = ($line =~ /^(?:\S+\s+){5}(.*)/); $filename =~ s,^\./+,,o; my ($dirname) = ($filename =~ m,^([^/]+),); if ( defined $dirname and $dirname eq $filename and not $line =~ m/^d/o) { $prefix = ''; } elsif (defined $dirname) { if (not defined $prefix) { $prefix = $dirname; } elsif ($dirname ne $prefix) { $prefix = ''; } } else { $prefix = ''; } } # Ensure $prefix is defined - this may appear to be redundant, but # no tarballs are present (happens if you wget rather than dget # the .dsc file >.>) $prefix //= ''; # If there is a common prefix and it is $compname, then we use that # because that is where they will be extracted by unpacked. if ($prefix ne $compname) { # If there is a common prefix and it is not $compname # then strip the prefix and add $compname (if any) if ($prefix) { @index = map { if (m,^((?:\S+\s+){5})(?:\./)?\Q$prefix\E(?:/+(.*+)?|\Z),){ my ($data, $file) = ($1, $2); if ($file && $file !~ m,^(?:/++)?\Z,o){ $file = "$compname/$file" if $compname; "$data$file\n"; } else { (); } } else { (); } } @index; } elsif ($compname) { # Prefix with the compname (because that is where they will be # unpacked to. @index = map { s{^((?:\S++\s++){5})(?:\./)?\Q$prefix\E(?:/+)?} {$1$compname/} } @index; } } push @result, @index; } # Now that we have the file names we want, write them out sorted to the index # file. spawn( { fail => 'error', out => "$dir/orig-index.gz" }, sub { print @result }, '|', ['sort', '-k', '6'], '|', ['gzip', '--best', '-c']); return 1; } collect(@ARGV) if $0 =~ m,(?:^|/)src-orig-index$,; 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/collection/src-orig-index.desc0000664000000000000000000000025512310413144017274 0ustar Collector-Script: src-orig-index Info: This script create an index file of the contents of the orig tarballs. Type: source Needs-Info: index Version: 1 Interface: perl-coll lintian-2.5.22ubuntu1/collection/md5sums.desc0000664000000000000000000000034512310413206016036 0ustar Collector-Script: md5sums Author: Richard Braakman Info: This script runs the md5sums(1) over all files in a binary package. Type: source, binary, udeb Version: 1 Needs-Info: unpacked, index Interface: perl-coll lintian-2.5.22ubuntu1/collection/override-file0000775000000000000000000000463512310413144016272 0ustar #!/usr/bin/perl -w # override-file -- lintian collector script # Copyright (C) 1999 by Darren Benham # Derived from debian-readme by Richard Braakman # # 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::coll::override_file; use strict; use warnings; use autodie; use lib "$ENV{'LINTIAN_ROOT'}/lib"; use Lintian::Util qw(fail gunzip_file is_ancestor_of); sub collect { my ($pkg, $type, $dir) = @_; -d "$dir/unpacked" or fail 'override-file invoked with wrong dir argument'; if (-e "$dir/override"){ unlink("$dir/override"); } # Pick the first of these files that exists. Prefer # source/lintian-overrides to source.lintian-overrides for source # packages. my (@overrides, $file); if ($type eq 'source') { @overrides = ( "$dir/unpacked/debian/source/lintian-overrides", "$dir/unpacked/debian/source.lintian-overrides" ); } else { @overrides = ("$dir/unpacked/usr/share/lintian/overrides/$pkg"); } for my $override (@overrides) { if (-f $override) { $file = $override; } elsif (-f "$override.gz") { $file = "$override.gz"; } } if (defined $file and not is_ancestor_of("$dir/unpacked", $file)) { # unsafe, pretend we didn't see it. undef $file; } if (not defined $file) { # no override found } elsif ($file =~ /\.gz$/) { gunzip_file($file, "$dir/override"); } else { link($file, "$dir/override"); } return; } collect(@ARGV) if $0 =~ m,(?:^|/)override-file$,; 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/collection/index0000775000000000000000000000673012311377632014657 0ustar #!/usr/bin/perl # unpack-binpkg-l1 -- lintian unpack script (binary packages level 1) # # syntax: unpack-binpkg-l1 # # Note that must be specified with absolute path. # Copyright (C) 1998 Christian Schwarz # # 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::coll::index; use strict; use warnings; use autodie; # import perl libraries use lib "$ENV{'LINTIAN_ROOT'}/lib"; use Lintian::Command qw(spawn reap); use Lintian::Processable::Package; use Lintian::Util qw(get_dsc_info); sub collect { my ($pkg, $type, $dir) = @_; for my $file (qw(index index.gz index-errors)) { unlink("$dir/$file") if -e "$dir/$file"; } if ($type ne 'source') { index_deb($dir); } else { chdir("$dir/unpacked"); spawn( { fail => 'error', out => "$dir/index.gz" }, [ 'find', '(', '-type', 'l', # If symlink '-printf', '%M 0/0 %s %AY-%Am-%Ad %AH:%AM %p -> %l\n', '-true', # elif dir [needs trailing slash] ')', '-o', '(', '-type', 'd', '-printf', '%M 0/0 %s %AY-%Am-%Ad %AH:%AM %p/\n', '-true', # else (not dir and not symlink) ')', '-o', '-printf', '%M 0/0 %s %AY-%Am-%Ad %AH:%AM %p\n' ], # Sort and compress '|', ['sort', '-k', '6'], '|', ['gzip', '-9c']); } return; } # Creates an index for binary packages sub index_deb { my ($dir) = @_; my (@jobs, $job); unlink("$dir/index-owner-id") if -f "$dir/index-owner-id"; $job = { fail => 'error', out => "$dir/index.gz", err => "$dir/index-errors" }; push @jobs, $job; # (replaces dpkg-deb -c) # create index file for package spawn( $job, ['dpkg-deb', '--fsys-tarfile', "$dir/deb"], '|', ['tar', 'tfv', '-'], '|', ['sort', '-k', '6'], '|', ['gzip', '--best', '-c'], '&' ); $job = { fail => 'error', out => "$dir/index-owner-id.gz", err => '/dev/null' }; push @jobs, $job; # (replaces dpkg-deb -c) # create index file for package with owner IDs instead of names spawn( $job, ['dpkg-deb', '--fsys-tarfile', "$dir/deb"], '|', ['tar', '--numeric-owner', '-tvf', '-'], '|', ['sort', '-k', '6'], '|', ['gzip', '--best', '-c'], '&' ); reap(@jobs); undef @jobs; # Remove the error file if it is empty... unlink("$dir/index-errors") if -z "$dir/index-errors"; return 1; } collect(@ARGV) if $0 =~ m,(?:^|/)index$,; 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/collection/strings0000775000000000000000000000670212310413144015224 0ustar #!/usr/bin/perl -w # strings -- lintian collection script # Copyright (C) 2009, 2010 Raphael Geissert # # 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::coll::strings; use strict; use warnings; use autodie; use FileHandle; use lib "$ENV{'LINTIAN_ROOT'}/lib"; use Lintian::Collect; use Lintian::Command qw(spawn reap); use Lintian::Util qw(delete_dir fail locate_helper_tool); my $helper = locate_helper_tool('coll/strings-helper'); sub collect { my ($pkg, $type, $dir) = @_; my ($info, @manual, %opts); if (-e "$dir/elf-index") { unlink("$dir/elf-index"); } if (-d "$dir/strings") { delete_dir("$dir/strings") or fail "rmdir strings: $!"; } # If we are asked to only remove the files stop right here if ($type =~ m/^remove-/) { return; } $info = Lintian::Collect->new($pkg, $type, $dir); open(my $elf_fd, '>', "$dir/elf-index"); # The directory is required, even if it would be empty. mkdir("$dir/strings"); chdir("$dir/unpacked"); my $open_strings_pipe = sub { %opts = ( pipe_in => FileHandle->new, fail => 'error' ); spawn(\%opts, ['xargs', '-0r', 'strings', '-f', '--'], '|', [$helper, "$dir/strings"]); $opts{pipe_in}->blocking(1); }; foreach my $bin ($info->sorted_index) { my $filename = $bin->name; my $finfo = $info->file_info($bin); next unless $finfo =~ m/\bELF\b/o; printf {$elf_fd} "$filename\n"; next if $bin =~ m,^usr/lib/debug/,; if ($bin =~ m/[:\n\r]/) { # Do these "interesting cases" manual push @manual, $filename; next; } $open_strings_pipe->() unless %opts; printf {$opts{pipe_in}} "%s\0", $bin; } if (%opts) { close($opts{pipe_in}); reap(\%opts); } # Fall back to the safe but slower method for files with "special" # names. if (@manual) { require File::Basename; foreach my $file (@manual) { my $strdir = $dir . '/strings/' . File::Basename::dirname($file); # create the dir if needed. unless (-d $strdir) { system('mkdir', '-p', $strdir) == 0 or fail "mkdir -p $strdir failed " . (($? >> 8) & 256), "\n"; } spawn( {out => "$dir/strings/${file}.gz", fail => 'fail'}, ['strings', "$dir/unpacked/$file"], '|', ['gzip', '-9nc']); } } close($elf_fd); return; } collect(@ARGV) if $0 =~ m,(?:^|/)strings$,; 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/collection/init.d0000775000000000000000000000324012310413144014712 0ustar #!/usr/bin/perl -w # init.d -- lintian collector script # Copyright (C) 1998 Richard Braakman # # 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::coll::init_d; use strict; use warnings; use autodie; use lib "$ENV{'LINTIAN_ROOT'}/lib"; use Lintian::Util qw(copy_dir delete_dir fail is_ancestor_of); sub collect { my (undef, undef, $dir) = @_; if (-e "$dir/init.d") { delete_dir("$dir/init.d") or fail('cannot rm old init.d directory'); } if (-d "$dir/unpacked/etc/init.d") { if (!is_ancestor_of("$dir/unpacked", "$dir/unpacked/etc/init.d")) { # Unsafe, stop return; } copy_dir("$dir/unpacked/etc/init.d", "$dir/init.d") or fail('cannot copy init.d directory'); } return; } collect(@ARGV) if $0 =~ m,(?:^|/)init\.d$,; 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/collection/objdump-info0000775000000000000000000000434612310413144016126 0ustar #!/usr/bin/perl -w # objdump-info -- lintian collection script # The original shell script version of this script is # Copyright (C) 1998 Christian Schwarz # # This version, including support for etch's binutils, is # Copyright (C) 2008 Adam D. Barratt # # 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::coll::objdump_info; use strict; use warnings; use autodie; use FileHandle; use lib "$ENV{'LINTIAN_ROOT'}/lib/"; use Lintian::Collect; use Lintian::Command qw(spawn reap); use Lintian::Util qw(locate_helper_tool); my $helper = locate_helper_tool('coll/objdump-info-helper'); sub collect { my ($pkg, $type, $dir) = @_; my $info = Lintian::Collect->new($pkg, $type, $dir); if (-e "$dir/objdump-info") { unlink("$dir/objdump-info"); } if (-e "$dir/objdump-info.gz") { unlink("$dir/objdump-info.gz"); } chdir("$dir/unpacked"); my %opts = ( pipe_in => FileHandle->new, out => "$dir/objdump-info.gz", fail => 'error' ); spawn(\%opts, ['xargs', '-0r', $helper], '|', ['gzip', '-9c']); $opts{pipe_in}->blocking(1); foreach my $bin ($info->sorted_index) { my $finfo = $info->file_info($bin); if ($finfo =~ m/\bELF\b/) { printf {$opts{pipe_in}} "%s\0", $bin; } } close($opts{pipe_in}); reap(\%opts); return; } collect(@ARGV) if $0 =~ m,(?:^|/)objdump-info$,; 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/collection/debfiles.desc0000664000000000000000000000033312310413144016214 0ustar Collector-Script: debfiles Author: Joey Hess Info: This script collects files shipped in the source of the package. Type: source Version: 1 Needs-Info: unpacked Interface: perl-coll Auto-Remove: yes lintian-2.5.22ubuntu1/collection/java-info0000775000000000000000000001240512310413206015401 0ustar #!/usr/bin/perl -w # java-info -- lintian collection script # Copyright (C) 2011 Vincent Fourmond # # 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::coll::java_info; use strict; use warnings; use autodie; use Archive::Zip qw( :ERROR_CODES :CONSTANTS ); use FileHandle; use lib "$ENV{'LINTIAN_ROOT'}/lib/"; use Lintian::Collect; use Lintian::Command qw(spawn reap); use Lintian::Util qw(fail rstrip); sub collect { my ($pkg, $type, $dir) = @_; my $info = Lintian::Collect->new($pkg, $type, $dir); # Sanity check unless (-d "$dir/unpacked/") { fail 'java-info called with the wrong dir argument'; } if (-f "$dir/java-info") { unlink("$dir/java-info"); } if (-f "$dir/java-info.gz") { unlink("$dir/java-info.gz"); } # We lazily start the gzip process to avoid creating the java-info.gz # file when there are no jar files in the package. my %opts; my $open_java_info = sub { %opts = ( pipe_in => FileHandle->new, out => "$dir/java-info.gz", fail => 'error' ); spawn(\%opts, ['gzip', '-9c']); $opts{pipe_in}->blocking(1); }; my $errorhandler = sub { my ($err) = @_; $err =~ s/\r?\n/ /g; rstrip($err); print {$opts{pipe_in}} "-- ERROR: $err\n"; }; chdir("$dir/unpacked"); # Without this Archive::Zip will emit errors to standard error for # faulty zip files - but that is not what we want. AFAICT, it is # the only way to get a textual error as well, so (ab)use it for # this purpose while we are at it. my $oldhandler = Archive::Zip::setErrorHandler($errorhandler); FILE: foreach my $file ($info->sorted_index) { next unless $file->is_file; # Wheezy's version of file calls "jar files" for "Zip archive". # Newer versions seem to call them "Java Jar file". # Jessie also introduced "Java archive data (JAR)"... next unless $info->file_info($file) =~ m/ Java [ ] (?:Jar [ ] file|archive [ ] data) | Zip [ ] archive | JAR /xo; if ($file =~ m#\S+\.jar$#i) { my $filename = $file->name; my $has_manifest = 0; my $manifest; my $azip = Archive::Zip->new; $open_java_info->() unless %opts; # This script needs unzip, there's no way around. print {$opts{pipe_in}} "-- $filename\n"; $azip->read($filename) == AZ_OK or next FILE; # First, the file list: foreach my $member ($azip->members) { my $name = $member->fileName; my $jversion; next if $member->isDirectory; $manifest = $member if $name =~ m@^META-INF/MANIFEST.MF$@oi; if ($name =~ m/\.class$/o) { # Collect the Major version of the class file. my ($contents, $zerr) = $member->contents; next FILE unless $zerr == AZ_OK; # translation of the unpack # NN NN NN NN, nn nn, nn nn - bytes read # $magic , __ __, $major - variables my ($magic, undef, $major) = unpack('Nnn', $contents); $jversion = $major if $magic == 0xCAFEBABE; } $jversion //= '-'; print {$opts{pipe_in}} $name, ": $jversion\n"; } if ($manifest) { print {$opts{pipe_in}} "-- MANIFEST: $filename\n"; my ($contents, $zerr) = $manifest->contents; next FILE unless $zerr == AZ_OK; my $first = 1; foreach my $line (split m/\n/, $contents) { $line =~ s/\r//go; if ($line =~ m/^(\S+:)\s*(.*)/o) { print {$opts{pipe_in}} "\n" unless $first; $first = 0; print {$opts{pipe_in}} " $1 $2"; } if ($line =~ m/^ /o) { print {$opts{pipe_in}} substr $line, 1; } } print {$opts{pipe_in}} "\n" unless $first; } } } Archive::Zip::setErrorHandler($oldhandler); if (%opts) { close($opts{pipe_in}); reap(\%opts); } return; } collect(@ARGV) if $0 =~ m,(?:^|/)java-info$,; 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/collection/diffstat0000775000000000000000000000466212310413144015342 0ustar #!/usr/bin/perl -w # diffstat -- lintian collection script for source packages # Copyright (C) 1998 Richard Braakman # # 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. # This could be written more easily in shell script, but I'm trying # to keep everything as perl to cut down on the number of processes # that need to be started in a lintian scan. Eventually all the # perl code will be perl modules, so only one perl interpreter # need be started. package Lintian::coll::diffstat; use strict; use warnings; use autodie; use lib "$ENV{'LINTIAN_ROOT'}/lib"; use Lintian::Util qw(fail get_dsc_info gunzip_file); sub collect { my ($pkg, undef, $dir) = @_; my $data; my $ver; -f "$dir/dsc" or fail 'diffstat invoked with wrong dir argument'; $data = get_dsc_info("$dir/dsc"); $ver = $data->{'version'}; unlink("$dir/debian-patch") if -e "$dir/debian-patch" or -l "$dir/debian-patch"; $ver =~ s/^\d://; #Remove epoch for this my $diff_file = "$dir/${pkg}_${ver}.diff.gz"; return unless (-f $diff_file); gunzip_file($diff_file, "$dir/debian-patch"); open(my $out, '>', "$dir/diffstat"); # diffstat is noisy on stderr if its stdout is not a tty. # Shut it up by redirecting stderr to /dev/null. open(STDERR, '>', '/dev/null'); open(my $in, '-|', 'diffstat', '-p1', "$dir/debian-patch"); # Copy all except last line to the STAT file my $previous; while (<$in>) { print {$out} $previous if $previous; $previous = $_; } close($out); close($in); return; } collect(@ARGV) if $0 =~ m,(?:^|/)diffstat$,; 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/collection/ar-info.desc0000664000000000000000000000035012310413144015771 0ustar Collector-Script: ar-info Author: Stéphane Glondu Info: This script runs the "ar t" command over all .a files of package. Type: binary Needs-Info: unpacked, index Version: 1 Interface: perl-coll Auto-Remove: yes lintian-2.5.22ubuntu1/collection/strings.desc0000664000000000000000000000040512310413144016130 0ustar Collector-Script: strings Author: Raphael Geissert Info: This script runs the strings(1) command over all files of a binary package. Type: binary, udeb Version: 2 Interface: perl-coll Needs-Info: index, unpacked, file-info Auto-Remove: yes lintian-2.5.22ubuntu1/collection/unpacked0000775000000000000000000001052012310413144015316 0ustar #!/usr/bin/perl # unpacked -- lintian collector/unpack script # # Copyright (C) 1998 Christian Schwarz and Richard Braakman # # 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::coll::unpacked; use strict; use warnings; use autodie; use lib "$ENV{'LINTIAN_ROOT'}/lib"; use Lintian::Command qw(spawn); use Lintian::Util qw(check_path delete_dir fail); sub collect { my ($pkg, $type, $dir) = @_; if (-d "$dir/unpacked/") { delete_dir("$dir/unpacked/") or fail("failed to remove unpacked directory of $pkg"); } if (-f "$dir/unpacked-errors") { unlink("$dir/unpacked-errors"); } # If we are asked to only remove the files stop right here if ($type =~ m/^remove-/) { return; } if ($type eq 'source') { if (can_use_dpkg_source()) { # Ignore STDOUT of the child process because older versions of # dpkg-source print things out even with -q. my $opts = { out => '/dev/null', err => "$dir/unpacked-errors" }; my @args = ('-q', '--no-check'); print "N: Using dpkg-source to unpack $pkg\n" if $ENV{'LINTIAN_DEBUG'}; unless ( spawn( $opts, ['dpkg-source', @args, '-x', "$dir/dsc", "$dir/unpacked"]) ) { dump_errors("$dir/unpacked-errors"); fail('dpkg-source -x failed with status ', $opts->{harness}->result); } } else { print "N: Using libdpkg-perl to unpack $pkg\n" if $ENV{'LINTIAN_DEBUG'}; libdpkg_unpack_dsc("$dir/dsc", "$dir/unpacked"); } # fix permissions spawn({ fail => 'error' }, ['chmod', '-R', 'u+rwX,o+rX,o-w', "$dir/unpacked"]); } else { mkdir("$dir/unpacked", 0777); # avoid using dpkg-deb -x; this pipeline is far faster. I got # a factor 2 improvement on large debs, and factor 1.5 on # small debs. I heard it's because dpkg-deb syncs while # writing. -- Richard my $opts = { err => "$dir/unpacked-errors" }; spawn( $opts,['dpkg-deb', '--fsys-tarfile', "$dir/deb"], '|', ['tar', 'xf', '-', '-C', "$dir/unpacked"]); unless ($opts->{success}) { dump_errors("$dir/unpacked-errors"); fail('dpkg-deb | tar failed with status ', $opts->{harness}->result); } # fix permissions spawn({ fail => 'error' }, ['chmod', '-R', 'u+rwX,go-w', "$dir/unpacked"]); } # Remove the error file if it is empty unlink("$dir/unpacked-errors") if -z "$dir/unpacked-errors"; return; } sub dump_errors { my ($file) = @_; open(my $fd, '<', $file); while (my $line = <$fd>) { print STDERR $line; } close($fd); return; } sub libdpkg_unpack_dsc { my ($dsc, $target) = @_; my $opt = {'quiet' => 1}; require Dpkg::Source::Package; open(STDOUT, '>', '/dev/null'); # Create the object that does everything my $srcpkg = Dpkg::Source::Package->new(filename => $dsc, options => $opt); $srcpkg->check_checksums(); # Unpack the source package (delegated to Dpkg::Source::Package::*) $srcpkg->extract($target); return 1; } sub can_use_dpkg_source{ my $test = $ENV{LINTIAN_TEST_FEATURE}; return 0 if defined $test && $test =~ m/unpack-libdpkg-perl/; return check_path('dpkg-source'); } collect(@ARGV) if $0 =~ m,(?:^|/)unpacked$,; 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/collection/debfiles0000775000000000000000000000367512310413144015316 0ustar #!/usr/bin/perl -w # debfiles -- lintian collector script # Copyright (C) 1999 by Joey Hess # # 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::coll::debfiles; use strict; use warnings; use autodie; use lib "$ENV{'LINTIAN_ROOT'}/lib"; use Lintian::Util qw(copy_dir delete_dir is_ancestor_of fail); sub collect { my ($pkg, $type, $dir) = @_; if (-e "$dir/debfiles") { delete_dir("$dir/debfiles") or fail('cannot rm old debfiles directory'); } # If we are asked to only remove the files stop right here if ($type =~ m/^remove-/) { return; } if (!-d "$dir/unpacked/debian/") { mkdir("$dir/debfiles"); return; } if (-l "$dir/unpacked/debian") { if (!is_ancestor_of("$dir/unpacked", "$dir/unpacked/debian/")) { # unsafe, stop mkdir("$dir/debfiles"); return; } } # Copy the whole debian directory copy_dir("$dir/unpacked/debian/", "$dir/debfiles") or fail('cannot copy unpacked/debian to debfiles'); return; } collect(@ARGV) if $0 =~ m,(?:^|/)debfiles$,; 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/collection/override-file.desc0000664000000000000000000000036712310413144017202 0ustar Collector-Script: override-file Author: Darren Benham Info: This script copies the override file of a package into the lintian directory. Type: binary, udeb, source Version: 1 Needs-Info: unpacked Interface: perl-coll lintian-2.5.22ubuntu1/collection/scripts.desc0000664000000000000000000000076512310413144016137 0ustar Collector-Script: scripts Author: Richard Braakman Info: This script scans a binary package for scripts that start with #! and lists their filenames together with the interpreter named by their first line. The format is: scriptpath filename Note that the filename might contain spaces, but the scriptpath will not, because linux only looks at the first word when executing a script. Type: binary, udeb Version: 1 Needs-Info: unpacked, bin-pkg-control, index Interface: perl-coll lintian-2.5.22ubuntu1/collection/menu-files.desc0000664000000000000000000000036312310413144016506 0ustar Collector-Script: menu-files Author: Richard Braakman Info: This script copies the contents of /usr/lib/menu into the lintian menu/ directory. Type: binary Version: 2 Needs-Info: unpacked Interface: perl-coll Auto-Remove: yes lintian-2.5.22ubuntu1/collection/java-info.desc0000664000000000000000000000034212310413144016311 0ustar Collector-Script: java-info Author: Vincent Fourmond Info: This script extracts information from manifests of JAR files Type: binary Version: 3 Needs-Info: index, file-info, unpacked Interface: perl-coll lintian-2.5.22ubuntu1/collection/copyright-file0000775000000000000000000000447412310413144016464 0ustar #!/usr/bin/perl -w # copyright-file -- lintian collector script # Copyright (C) 1998 Richard Braakman # # 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::coll::copyright_file; use strict; use warnings; use autodie; use lib "$ENV{'LINTIAN_ROOT'}/lib"; use Lintian::Util qw(fail gunzip_file is_ancestor_of touch_file); use File::Copy qw(copy); sub collect { my ($pkg, $type, $dir) = @_; if (-e "$dir/copyright") { unlink("$dir/copyright"); } if (-d "$dir/unpacked/usr/share/doc/$pkg" && !is_ancestor_of("$dir/unpacked", "$dir/unpacked/usr/share/doc/$pkg") ) { # if the parent dir is outside the package, just stop here before we # do something we will regret. return; } my $file = "$dir/unpacked/usr/share/doc/$pkg/copyright"; # If copyright was a symlink, we need to make a copy of it. Just # hardlinking to the symlink may leave a relative symlink into a # directory we can't unpack. Be careful about what symlinks we # allow, though. if (-l $file) { my $link = readlink($file); unless ($link =~ /\.\./ || ($link =~ m%/% && $link !~ m%^[^/]+(?:/+[^/]+)*\z%)) { copy($file, "$dir/copyright") or fail "cannot copy $file: $!"; } } elsif (-f $file) { link($file, "$dir/copyright"); } elsif (-f "$file.gz") { gunzip_file("$file.gz", "$dir/copyright"); } return; } collect(@ARGV) if $0 =~ m,(?:^|/)copyright-file$,; 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/collection/changelog-file0000775000000000000000000001167312310413144016402 0ustar #!/usr/bin/perl -w # changelog-file -- lintian collector script # Copyright (C) 1998 Richard Braakman # # 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::coll::changelog_file; use strict; use warnings; use autodie; use File::Copy qw(copy); use lib "$ENV{'LINTIAN_ROOT'}/lib"; use Lintian::Util qw(fail gunzip_file is_ancestor_of); sub collect { my ($pkg, $type, $dir) = @_; unlink("$dir/changelog") if -e "$dir/changelog" or -l "$dir/changelog"; # Extract NEWS.Debian files as well, with similar precautious. # Ignore any symlinks to other packages here; in that case, we # just won't check the file. unlink("$dir/NEWS.Debian") if -e "$dir/NEWS.Debian" or -l "$dir/NEWS.Debian"; # Pick the first of these files that exists. my @changelogs = ( "$dir/unpacked/usr/share/doc/$pkg/changelog.Debian.gz", "$dir/unpacked/usr/share/doc/$pkg/changelog.Debian", "$dir/unpacked/usr/share/doc/$pkg/changelog.debian.gz", "$dir/unpacked/usr/share/doc/$pkg/changelog.debian", "$dir/unpacked/usr/share/doc/$pkg/changelog.gz", "$dir/unpacked/usr/share/doc/$pkg/changelog", ); my $chl; if (-d "$dir/unpacked/usr/share/doc/$pkg" && !is_ancestor_of("$dir/unpacked", "$dir/unpacked/usr/share/doc/$pkg") ) { # If the parent dir is outside this package, pretend we didn't find # anything. return; } for (@changelogs) { if (-l $_ || -f $_) { $chl = $_; last; } } # If the changelog file we found was a symlink, we have to be # careful. It could be a symlink to some file outside of the # laboratory and we don't want to end up reading that file by # mistake. Relative links within the same directory or to a # subdirectory we accept; anything else is replaced by an # intentinally broken symlink so that checks can do the right # thing. if (defined($chl) && -l $chl) { my $link = readlink($chl); if ($link =~ /\.\./ || ($link =~ m%/% && $link !~ m%^[^/]+(?:/+[^/]+)*\z%)) { symlink("$dir/file-is-in-another-package", "$dir/changelog"); undef $chl; } elsif (!-f $chl) { undef $chl; } } # If the changelog was a broken symlink, it will be undefined and we'll now # treat it the same as if we didn't find a changelog and do nothing. If it # was a symlink, copy the file, since otherwise the relative symlinks are # going to break things. if (not defined $chl) { # no changelog found } elsif ($chl =~ /\.gz$/) { gunzip_file($chl, "$dir/changelog"); } elsif (-f $chl && -l $chl) { copy($chl, "$dir/changelog") or fail "cannot copy $chl: $!"; } else { link($chl, "$dir/changelog"); } if ($chl && $chl !~ m/changelog\.debian/i) { # Either this is a native package OR a non-native package where the # debian changelog is missing. checks/changelog is not too happy # with the latter case, so check looks like a Debian changelog. open(my $fd, '<', "$dir/changelog"); my $ok = 0; while (my $line = <$fd>) { next if $line =~ m/^\s*+$/o; # look for something like # lintian (2.5.3) UNRELEASED; urgency=low if ($line =~ m/^\S+\s*\([^\)]+\)\s*(?:UNRELEASED|(?:[^ \t;]+\s*)+)\;/o) { $ok = 1; } last; } close($fd); # Remove it if it not the Debian changelog. unlink("$dir/changelog") unless $ok; } my $news = "$dir/unpacked/usr/share/doc/$pkg/NEWS.Debian.gz"; if (-f $news) { if (-l $news) { my $link = readlink($news); if ($link =~ /\.\./ || ($link =~ m%/% && $link !~ m%^[^/]+(?:/+[^/]+)*\z%)) { undef $news; } elsif (!-f $news) { undef $news; } } if ($news) { gunzip_file($news, "$dir/NEWS.Debian"); } } return; } collect(@ARGV) if $0 =~ m,(?:^|/)changelog-file$,; 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/collection/init.d.desc0000664000000000000000000000032412310413144015624 0ustar Collector-Script: init.d Author: Richard Braakman Info: This script copies the etc/init.d directory into the lintian directory. Type: binary Version: 2 Needs-Info: unpacked Interface: perl-coll lintian-2.5.22ubuntu1/collection/hardening-info.desc0000664000000000000000000000040612310413144017330 0ustar Collector-Script: hardening-info Author: Kees Cook Info: This script runs hardening-check(1) over all ELF binaries of a binary package. Type: binary, udeb Version: 5 Needs-Info: bin-pkg-control, file-info, index, unpacked Interface: perl-coll lintian-2.5.22ubuntu1/collection/bin-pkg-control0000775000000000000000000000543412310413144016541 0ustar #!/usr/bin/perl -w # bin-pkg-control -- lintian collector script # Copyright (C) 1998 Christian Schwarz # # 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::coll::bin_pkg_control; use strict; use warnings; use autodie; use constant ERROR_FILES => qw(control-index-errors control-errors); use lib "$ENV{'LINTIAN_ROOT'}/lib"; use Lintian::Command qw(spawn reap); use Lintian::Util qw(delete_dir fail); sub collect { my ($pkg, $type, $dir) = @_; my (@jobs, $job); if (-e "$dir/control"){ delete_dir("$dir/control") or fail 'Cannot remove old control dir'; } for my $file ('control-index.gz', ERROR_FILES) { my $path = "$dir/$file"; unlink($path) if -e $path; } mkdir("$dir/control", 0777); # The following calls use knowledge of the .deb format for speed # (replaces dpkg-deb -e) # extract control files' tarball spawn( { fail => 'error', out => "$dir/control.tar" }, ['ar', 'p', "$dir/deb", 'control.tar.gz'], '|', ['gzip', '-dc']); $job = { fail => 'error', err => "$dir/control-errors" }; push @jobs, $job; # extract the tarball's contents spawn($job, ['tar', 'xf', "$dir/control.tar", '-C', "$dir/control", '&']); $job = { fail => 'error', out => "$dir/control-index.gz", err => "$dir/control-index-errors" }; push @jobs, $job; # create index of control.tar.gz spawn( $job, ['tar', 'tvf', "$dir/control.tar"], '|', ['sort', '-k', '6'], '|', ['gzip', '--best', '-c'], '&' ); reap(@jobs); undef @jobs; # clean up control.tar unlink("$dir/control.tar"); # fix permissions spawn({ fail => 'error' }, ['chmod', '-R', 'u+rX,o-w', "$dir/control"]); # Remove empty error files... for my $file (ERROR_FILES) { my $path = "$dir/$file"; unlink($path) if -z $path; } return; } collect(@ARGV) if $0 =~ m,(?:^|/)bin-pkg-control$,; 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/collection/debian-readme.desc0000664000000000000000000000040012310413144017107 0ustar Collector-Script: debian-readme Author: Richard Braakman Info: This script copies the README.Debian file of a package into the lintian directory. Type: binary Version: 1 Needs-Info: unpacked Interface: perl-coll Auto-Remove: yes lintian-2.5.22ubuntu1/collection/objdump-info.desc0000664000000000000000000000040312310413144017026 0ustar Collector-Script: objdump-info Author: Christian Schwarz Info: This script runs objdump(1) over all binaries and object files of a binary package. Type: binary, udeb Version: 4 Needs-Info: file-info, unpacked, index Interface: perl-coll lintian-2.5.22ubuntu1/collection/scripts0000775000000000000000000000624312310413144015222 0ustar #!/usr/bin/perl -w # scripts -- lintian collection script # Copyright (C) 1998 Richard Braakman # # 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::coll::scripts; use strict; use warnings; use autodie; use lib "$ENV{'LINTIAN_ROOT'}/lib/"; use Lintian::Collect; use Lintian::Util qw(strip); sub collect { my ($pkg, $type, $dir) = @_; my $info = Lintian::Collect->new($pkg, $type, $dir); my $scripts_fd; # We lazily open this FD. foreach my $file ($info->sorted_index) { next unless $file->is_regular_file; my $scriptpath = shebang_line($info->unpacked($file)); next unless defined($scriptpath); # no shebang line => not a script # skip lincity data files # magic: #!#!#! next if ($scriptpath =~ m/^\#!/); my $copy_path = $scriptpath; $scriptpath =~ s/^\#.*//; # remove comments if (!defined($scripts_fd)) { open($scripts_fd, '>', "$dir/scripts"); } if ($scriptpath eq '') { print {$scripts_fd} "$copy_path $file\n"; } else { my $env = ''; if ($scriptpath =~ s,^/usr/bin/env\s+,,) { $env = 'env '; } # Remove everything after the first space (i.e. any options) $scriptpath =~ s/\s++ .++ \Z//xsm; print {$scripts_fd} $env . "$scriptpath $file\n"; } } close($scripts_fd) if defined($scripts_fd); open(my $ctrl_fd, '>', "$dir/control-scripts"); opendir(my $dirfd, "$dir/control"); for my $file (readdir($dirfd)) { next if $file =~ m{\A \. \.? \Z}xsm; my $path = $info->control($file); my $scriptpath; next if -l $path or not -f _; $scriptpath = shebang_line($path); next unless defined($scriptpath); # Remove everything after the first space (i.e. any options) $scriptpath =~ s/\s++ .++ \Z//xsm; print {$ctrl_fd} "$scriptpath $file\n"; } closedir($dirfd); close($ctrl_fd); return; } sub shebang_line { my ($filename) = @_; my $scriptpath; my $magic; open(my $fd, '<', $filename); if (read($fd, $magic, 2) and $magic eq '#!' and not eof($fd)) { $scriptpath = <$fd>; strip($scriptpath); } close($fd); return $scriptpath; } collect(@ARGV) if $0 =~ m,(?:^|/)scripts$,; 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/collection/menu-files0000775000000000000000000000424612310413144015600 0ustar #!/usr/bin/perl -w # menu-files -- lintian collector script # Copyright (C) 1998 Richard Braakman # # 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::coll::menu_files; use strict; use warnings; use autodie; use lib "$ENV{'LINTIAN_ROOT'}/lib"; use Lintian::Util qw(copy_dir delete_dir fail is_ancestor_of); sub collect { my ($pkg, $type, $dir) = @_; if (-e "$dir/menu") { delete_dir("$dir/menu") or fail('cannot rm old menu directory'); } # If we are asked to only remove the files stop right here if ($type =~ m/^remove-/) { return; } mkdir("$dir/menu", 0777); my %dirs; $dirs{'share'} = 'usr/share/menu'; $dirs{'lib'} = 'usr/lib/menu'; $dirs{'methods'} = 'etc/menu-methods'; while (my ($shortn, $path) = each %dirs) { if (-d "$dir/unpacked/$path") { if (!is_ancestor_of("$dir/unpacked", "$dir/unpacked/$path")) { # Unsafe, skip mkdir("$dir/menu/$shortn", 0777); next; } copy_dir("$dir/unpacked/$path", "$dir/menu/$shortn") or fail("cannot copy unpacked/$path/ directory"); } else { # no menu directory mkdir("$dir/menu/$shortn", 0777); } } return; } collect(@ARGV) if $0 =~ m,(?:^|/)menu-files$,; 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/collection/index.desc0000664000000000000000000000026612310413144015553 0ustar Collector-Script: index Info: This script create an index file of the contents of a package. Type: source, binary, udeb Needs-Info: unpacked [source] Version: 5 Interface: perl-coll lintian-2.5.22ubuntu1/collection/doc-base-files0000775000000000000000000000347312310413144016312 0ustar #!/usr/bin/perl -w # doc-base-files -- lintian collector script # Copyright (C) 1998 Richard Braakman # Copyright (C) 2001 Josip Rodin # # 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::coll::doc_base_files; use strict; use warnings; use autodie; use lib "$ENV{'LINTIAN_ROOT'}/lib"; use Lintian::Util qw(copy_dir delete_dir fail is_ancestor_of); sub collect { my ($pkg, $type, $dir) = @_; if (-e "$dir/doc-base") { delete_dir("$dir/doc-base") or fail('cannot rm old doc-base directory'); } if (-d "$dir/unpacked/usr/share/doc-base") { if ( !is_ancestor_of( "$dir/unpacked", "$dir/unpacked/usr/share/doc-base" ) ) { # Unsafe return; } copy_dir("$dir/unpacked/usr/share/doc-base", "$dir/doc-base") or fail('cannot copy directory unpacked/usr/share/doc-base'); } return; } collect(@ARGV) if $0 =~ m,(?:^|/)doc-base-files$,; 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/collection/bin-pkg-control.desc0000664000000000000000000000030212310413144017440 0ustar Collector-Script: bin-pkg-control Info: This script extracts the contents of control.tar into the control/ and creates control-index as well. Type: binary, udeb Version: 3 Interface: perl-coll lintian-2.5.22ubuntu1/collection/unpacked.desc0000664000000000000000000000033012310413144016226 0ustar Collector-Script: unpacked Author: Raphael Geissert Info: This script unpacks the package under the unpacked/ directory Type: binary, udeb, source Version: 2 Auto-Remove: yes Interface: perl-coll lintian-2.5.22ubuntu1/collection/md5sums0000775000000000000000000000344712310413206015132 0ustar #!/usr/bin/perl -w # md5sums -- lintian collection script # Copyright (C) 1998 Richard Braakman # # 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::coll::md5sums; use strict; use warnings; use autodie; use FileHandle; use lib "$ENV{'LINTIAN_ROOT'}/lib"; use Lintian::Collect; use Lintian::Command qw(spawn reap); sub collect { my ($pkg, $type, $dir) = @_; my $info = Lintian::Collect->new($pkg, $type, $dir); if (-e "$dir/md5sums") { unlink("$dir/md5sums"); } chdir("$dir/unpacked"); my %opts = ( pipe_in => FileHandle->new, out => "$dir/md5sums", fail => 'error' ); spawn(\%opts, ['xargs', '-0r', 'md5sum','--']); $opts{pipe_in}->blocking(1); foreach my $file ($info->sorted_index) { next unless $file->is_file; printf {$opts{pipe_in}} "%s\0", $file; } close($opts{pipe_in}); reap(\%opts); return; } collect(@ARGV) if $0 =~ m,(?:^|/)md5sums$,; 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/collection/ar-info0000775000000000000000000000412412310413144015062 0ustar #!/usr/bin/perl -w # ar-info -- lintian collection script # # Copyright © 2009 Stéphane Glondu # # 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::coll::ar_info; use strict; use warnings; use autodie; use lib "$ENV{LINTIAN_ROOT}/lib"; use FileHandle; use Lintian::Collect; use Lintian::Command qw(spawn); sub collect { my ($pkg, $type, $dir) = @_; my $info; if (-e "$dir/ar-info") { unlink("$dir/ar-info"); } # If we are asked to only remove the files stop right here if ($type =~ m/^remove-/) { return; } $info = Lintian::Collect->new($pkg, $type, $dir); open(my $out_fd, '>', "$dir/ar-info"); chdir("$dir/unpacked"); foreach my $file ($info->sorted_index) { next unless $file->is_regular_file && $file =~ m{ \. a \Z }xsm; my $opts = { pipe_out => FileHandle->new, err => '/dev/null' }; spawn($opts, ['ar', 't', $file]); print {$out_fd} "$file:"; while (defined($_ = readline($opts->{pipe_out}))) { chomp; print {$out_fd} " $_"; } close($opts->{pipe_out}); print {$out_fd} "\n"; $opts->{harness}->finish; } close($out_fd); return; } collect(@ARGV) if $0 =~ m,(?:^|/)ar-info$,; 1; # Local Variables: # indent-tabs-mode: nil # cperl-indent-level: 4 # End: # vim: syntax=perl sw=4 sts=4 sr et lintian-2.5.22ubuntu1/debian/0000775000000000000000000000000012315523263012700 5ustar lintian-2.5.22ubuntu1/debian/tests/0000775000000000000000000000000012310413206014030 5ustar lintian-2.5.22ubuntu1/debian/tests/testsuite0000775000000000000000000000030112310413144016002 0ustar #!/bin/sh set -e WORKDIR="$ADTTMP/$(basename $0)" export LINTIAN_TEST_INSTALLED=yes rm -f runtests debian/rules TEST_WORK_DIR="$WORKDIR" runtests onlyrun="suite:changes,debs,source,tests" lintian-2.5.22ubuntu1/debian/tests/control0000664000000000000000000000012212310413206015426 0ustar Tests: testsuite Depends: @builddeps@, build-essential, lintian lintian-2.5.22ubuntu1/debian/lintian.examples0000664000000000000000000000001712310413144016063 0ustar doc/examples/* lintian-2.5.22ubuntu1/debian/copyright0000664000000000000000000000570612310413144014632 0ustar This is the Debian package of Lintian, the Debian package checker. The latest version of Lintian can always be found at: http://lintian.debian.org/ Lintian was designed and written by Christian Schwarz and Richard Braakman. The package was previously maintained by Darren Benham, Sean 'Shaleh' Perry and Josip Rodin. It is now maintained by a group of people, with changes noted by initials in the changelog. Key to frequent committers: JvW == Jeroen van Wolffelaar FL == Frank Lichtenheld HE == Marc 'HE' Brockschmidt CW == Colin Watson RA == Russ Allbery TK == Thijs Kinkhorst ADB == Adam D. Barratt JP == Jordà Polo JA == Jari Aalto RG == Raphael Geissert NT == Niels Thykier JW == Jakub Wilk BR == Bastien ROUCARIÈS Contact address is . Lintian is maintained in git. The current development version may be checked out from: git://git.debian.org/git/lintian/lintian.git Copyright (C) 1998 Christian Schwarz and Richard Braakman Portions Copyright (C) 1998-1999 Joey Hess Portions Copyright (C) 1999 Darren Benham Portions Copyright (C) 2000 Sean 'Shaleh' Perry Portions Copyright (C) 2001-2008 Colin Watson Portions Copyright (C) 2001-2003 Josip Rodin Portions Copyright (C) 2002-2004 Denis Barbier Portions Copyright (C) 2004-2008 Marc Brockschmidt Portions Copyright (C) 2004-2008 Frank Lichtenheld Portions Copyright (C) 2004-2006 Jeroen van Wolffelaar Portions Copyright (C) 2005 René van Bevern Portions Copyright (C) 2006 Adeodato Simó Portions Copyright (C) 2007-2010 Russ Allbery Portions Copyright (C) 2008 Patrick Schoenfeld Portions Copyright (C) 2008 Niko Tyni Portions Copyright (C) 2008-2010 Raphael Geissert Portions Copyright (C) 2008-2010 Adam D. Barratt Portions Copyright (C) 2009 Stéphane Glondu Portions Copyright (C) 2010 Raphaël Hertzog Portions Copyright (C) 2010-2011 Niels Thykier Portions Copyright (C) 2011 Gerfried Fuchs Portions Copyright (C) 2011 Jakub Wilk This program is free software; you may 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, or (at your option) any later version. This 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. A copy of the GNU General Public License version 2 is available as /usr/share/common-licenses/GPL-2 in the Debian GNU/Linux distribution or at http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. You can also obtain it by writing to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. lintian-2.5.22ubuntu1/debian/source/0000775000000000000000000000000012314371376014205 5ustar lintian-2.5.22ubuntu1/debian/source/format0000664000000000000000000000001512077065713015415 0ustar 3.0 (native) lintian-2.5.22ubuntu1/debian/source/lintian-overrides0000664000000000000000000000131512314371376017566 0ustar # We build-depend on quilt for the test suite lintian source: quilt-build-dep-but-no-series-file # We don't have a patch system for lintian itself lintian source: patch-system-but-no-source-readme # We build-depend on cdbs for the test suite lintian source: unused-build-dependency-on-cdbs # We build-depend on python-dev for the test suite lintian source: build-depends-on-python-dev-with-no-arch-any # That is a comment reference to the license statement in a tag # description (and not the license itself). lintian source: license-problem-json-evil checks/cruft.desc # This is caused by a regex that happens to match itself. lintian source: license-problem-nvidia-intellectual data/cruft/non-distributable-license lintian-2.5.22ubuntu1/debian/lintian.links0000664000000000000000000000006712310413206015371 0ustar usr/share/lintian/frontend/dplint usr/bin/lintian-info lintian-2.5.22ubuntu1/debian/changelog0000664000000000000000000256251412315523263014571 0ustar lintian (2.5.22ubuntu1) trusty; urgency=medium * Ship pre-uglified json.js to avoid build-dep on nodejs for the tests. -- Adam Conrad Sat, 29 Mar 2014 04:55:14 -0600 lintian (2.5.22) unstable; urgency=medium * Summary of tag changes: + Added: - invalid-restriction-label-in-source-relation - invalid-restriction-namespace-in-source-relation - invalid-restriction-term-in-source-relation - license-problem-gfdl-non-official-text - license-problem-non-free-RFC-BCP78 - privacy-breach-google-plus - privacy-breach-twitter - restriction-list-with-debhelper-with-conflicting-debhelper-version - restriction-list-with-debhelper-without-debhelper-version - restriction-list-with-versioned-dpkg-dev-conflict - restriction-list-without-versioned-dpkg-dev-dependency - source-is-missing - stageX-profile-used-but-no-binary-package-dropped * checks/*: + [NT] Avoid using "I" or "we" in tag descriptions. + [NT] When looping over the names of binary packages, prefer the order they are listed in the control file. Previously they were either sorted by name or ordered by Perl's hash iterator. * checks/control-file.{desc,pm}: + [NT] Apply patch from Johannes Schauer to validate build-profile usage. * checks/control-files.pm: + [NT] Remove special case for udebs on empty control files. Thanks to Cyril Brulebois for testing it. * checks/cruft.pm: + [BR,NT] Optimise the GFDL check considerably in some cases (e.g. the linux source). (Closes: #738342) + [BR] Factorize GFDL detection. Detect non official wordings of GFDL invariant section. (Closes: #717916). Fix some old false positives. (Closes: #742260, #741212). + [BR] Add opentoken non official wording for GFDL invariant section, thanks to Nicolas Boulenguez. (Closes: #740183). + [BR] Detect minified js based on line length. (Closes: #735348). + [BR] Detect missing sources for minified javascript, flash project, flash files, and elf binary. * checks/fields.{desc,pm}: + [NT] Apply patch from Johannes Schauer to validate build-profile usage. (Closes: #740607) * checks/files.desc: + [BR] Raise file-name-in-PATH-is-not-ASCII and file-name-in-PATH-is-not-ASCII to error (see policy 10.10), thanks to Helmut Grohne. (Closes: #739347) + [BR] Improve privacy-breach tags wording, thanks to Paul Wise. (Closes: #738176) * checks/menu-format.desc: + [NT] Apply patch from Charles Plessy to correct an URL in a tag reference. (Closes: #738454) * checks/symlinks.pm: + [BR] Use Lintian::Data for safe symlinks list. Add /dev/null to this list. (Closes: #740339). * checks/systemd.pm: + [BR] Allow spaces arround = in service files. (Closes: #739366). * checks/watch-file.{desc,pm}: + [BR] Allow debian/upstream-signing-key.asc, thanks to Nicolas Boulenguez (Closes: #736711). + [NT] Apply patch from Daniel Kahn Gillmor to check for the upstream signing key in debian/upstream. Thanks to Hideki Yamane for the bug report. (Closes: #738597) * collection/java-info: + [NT] Update the conditional using file(1) to cope with the new output for JAR files. * data: + [NT] Refresh several architecture data files against dpkg 1.17.5. Thanks to James Hunt for the reminder. (Closes: #735266) + [NT] Refresh several data files with data from sid. * data/binary/embedded-libs: + [RG] Detect embedded copies of liblivemedia, libgadu, libssh, libssh2, freetype, nss, and nspr. + [RG] Adjust the detection of embedded copies of libmagic. + [RG] Detect embedded copies of an ancient tinyxml. Thanks to Andreas Rönnquist for the report. (Closes: #733318) * data/cruft/non-free-files: + [BR] "id3v22-tda.mp3 considered non-free", thanks to Charlie Smotherman (Closes: #736203). * data/files/privacy*: + [BR] Improve detection of privacy-breach-google-cse, thanks to Paul Wise (Closes: #739247). + [BR] Detect google+, thanks to Paul Wise. (Closes: #738175). + [BR] Detect twitter, thanks to Paul Wise. (Closes: #738174). * data/scripts/maintainer-script-bad-command: + [BR] Fix false positive maintainer-script-should-not-use-adduser-system-without-home due to quoting, thanks to Andreas Beckmann (Closes: #739109). * debian/source/lintian-overrides: + [NT] Override false-positive for license checks. * debian/tests/control: + [NT] Use the new @builddeps@ from autopkgtest/2.5.5 instead of duplicating the values. * frontend/lintian: + [NT] Fix a regression in argument handling after the first non-option. This problem was introduced in 2.5.18. + [NT] Let --color default to "auto". + [NT] Discard STDERR when running git describe to guess the version of Lintian. Avoids a warning from git tags are absent from the repository. * lib/Lintian/Collect/Source.pm: + [NT] Apply patch from Mathieu Parent to make "binaries" return the package name in the same order as they are listed in the control file. (Closes: #739671) * lib/Lintian/Reporting/ResourceManager.pm: + [NT] New file. * lib/Lintian/Util.pm: + [NT] Extend the "Continuation line outside a paragraph" parse error on Deb822 files with a possible suggestion for fixing the problem. * lib/Test/Lintian/Harness.pm: + [NT] New file - mostly for internal use during testing. * profiles/debian/ftp-master-auto-reject.profile: + [BR] Refresh with new tags. * reporting/config: + [NT] Fix typo of HARNESS_STATE_DIR config variable. * reporting/harness: + [NT] Avoid writing state-cache during dry-run. + [NT] Add timestamps to the log output. * reporting/{html_reports,templates/*.tmpl}: + [NT] Show the same statistics on the tag page as shown on the tag index pages. Thanks to Guillem Jover for the suggestion. (Closes: #738349) + [NT] Remove the second argument to the "head" sub in the templates. Its value is now computed automatically by html_reports based on the name of the output file. + [NT] Install "lintian.css" and all files in "reporting/images" and "reporting/resources" into "HTML_DIR/resources". These will be named after their content to allow more aggressive public caching. * reporting/html_reports: + [NT] Link to the library API docs from the index page. (Closes: #639974) + [NT] Optimise the graph generation by only calling gnuplot twice (rather than once plus once per tag). + [NT] Show the number of package groups and the size of the harness backlog on the index page. * reporting/{lintian.css => templates/lintian.css.tmpl}: + [NT] Rename file and make it a template. * t/runtests: + [NT] Cache test artifacts and reuse them in subsequent runs. This removes the majority of the runtime overhead of running the test suite on subsequent runs. (Closes: #699083) + [NT,BR] Fix test suite issues caused by a regression in tar 1.27. (Closes: #739744) -- Bastien Roucariès Tue, 25 Mar 2014 22:02:50 +0100 lintian (2.5.21) unstable; urgency=medium * Summary of tag changes: + Added: - bad-intended-distibution - debian-rules-should-not-automatically-update-control - debian-rules-should-not-use-DEB_BUILD_OPTS - debian-rules-should-not-use-or-modify-user-only-variable - debian-rules-should-not-use-pwd - debian-rules-should-not-use-underscore-variable - license-problem-md5sum-non-distributable-file - license-problem-md5sum-non-free-file - license-problem-non-free-RFC - maintainer-script-should-not-use-service - privacy-breach-donation - privacy-breach-facebook - privacy-breach-google-cse - privacy-breach-logo - privacy-breach-piwik - privacy-breach-statistics-website - privacy-breach-w3c-valid-html - source-contains-prebuilt-flash-object - source-contains-prebuilt-flash-project - source-contains-prebuilt-java-object - source-contains-prebuilt-javascript-object - source-contains-prebuilt-python-object - source-contains-prebuilt-silverlight-object + Removed: - debian-rules-automatically-updates-control - debian-rules-uses-DEB_BUILD_OPTS - debian-rules-uses-or-modifies-user-only-variable - debian-rules-uses-pwd * checks/changelog-file.{desc,pm}: + [BR] Warn when an upload erroneously targeted at distribution that is not intended (Closes: #661990). * checks/cruft.{desc,pm}: + [BR] Detect non free rfc (Closes: #365213). + [BR] Check md5sums on source package. + [BR] Detect prebuilt jar file. + [BR] Detect prebuilt silverlight file. + [BR] Detect prebuilt flash file (Closes: #733883). * checks/fields.{desc,pm}: + [BR] Increase severity of vcs-field-uses-not-recommended-uri-format (Closes: #670323). * checks/files.{desc,pm}: + [BR] Add xz and zip to duplicated-compressed-file regexp. + [BR] Use Lintian::Data for compressed file extension. + [BR] Use Lintian::Data for vcs files list. Add a few more VCS files (Closes: #731904). + [BR] Remove long obsolete reference to rc.boot(5) manpage in package-installs-into-etc-rc.boot description. Thanks to Jakub Wilk (Closes: #729034). + [BR] Add a moreinfo field to obsolete path. + [BR] Fix non-conf-file-in-modprobe.d description (Closes: #729037). + [BR] Check privacy breach only in regular file. + [BR] Add link tag as potential privacy breaker. + [BR] Add
    Wed, 08 Jan 2014 19:35:22 +0100 lintian (2.5.20) unstable; urgency=low * Summary of tag changes: + Added: - build-depends-on-an-obsolete-java-package - debian-watch-file-pubkey-file-is-missing - debian-watch-may-check-gpg-signature - license-problem-nvidia-intellectual - maintainer-script-should-not-hide-init-failure - maintainer-script-should-not-modify-ld-so-conf - maintainer-script-should-not-modify-netbase-managed-file - maintainer-script-should-not-use-adduser-system-without-home - maintainer-script-should-not-use-ancient-dpkg-epoch-check - maintainer-script-should-not-use-ancient-dpkg-multi-conrep-check - maintainer-script-should-not-use-deprecated-chown-usage - maintainer-script-should-not-use-dpkg-status-directly - maintainer-script-should-not-use-fc-cache - maintainer-script-should-not-use-gconftool - maintainer-script-should-not-use-install-sgmlcatalog - maintainer-script-should-not-use-start-stop-daemon - maintainer-script-should-not-use-update-alternatives-remove - maintainer-script-should-not-use-update-alternatives-set - package-install-into-obsolete-dir - privacy-breach-generic - privacy-breach-google-adsense + Removed: - ancient-dpkg-epoch-check - ancient-dpkg-multi-conrep-check - deprecated-chown-usage - fc-cache-used-in-maintainer-script - gconftool-used-in-maintainer-script - install-sgmlcatalog-deprecated - maintainer-script-hides-init-failure - maintainer-script-modifies-ld-so-conf - maintainer-script-modifies-netbase-managed-file - maintainer-script-uses-dpkg-status-directly - start-stop-daemon-in-maintainer-script - update-alternatives-remove-called-in-postrm * checks/cruft.{desc,pm}: + [BR] Check files for under a non-distributable Nvidia license. (Closes: #724930) + [BR] Abstract sliding window algorithm and use it for license check. (Closes: #720348) + [BR] Filter (x?ht|x)ml comments for license check. (Closes: #729226). * checks/fields.pm: + [SL] Returns a warning when a package build-deps on java-compiler instead of default-jdk. (Closes: #730714) * checks/files.desc: + [BR] Improve description of pkg-config-multi-arch-wrong-dir tag. Add debhelper > 9 on non multi-arched package as a likely cause (Closes: #723886). + [BR] Add a generic check for obsolete path. + [BR] Detect privacy breaker html/css files (Closes: #637580) particularly Google Adsense (Closes: #718427). * checks/scripts.{desc,pm}: + [BR] Detect update-alternatives --set in maintainer scripts. (Closes: #643602). + [BR] Use Lintian::Data for bad shell construction in maintainer scripts. + [BR] Detect use of adduser --system without --home or with --home inside /home. (Closes: #730456). + [BR] install-sgmlcatalog is deprecated for a long time. Warn now in all use case. Rename the tag to maintainer-script-should-not-use-install-sgmlcatalog + [BR] Rename gconftool-used-in-maintainer-script to maintainer-script-should-not-use-gconftool. Add gconf\d package to exception list. + [BR] Rename fc-cache-used-in-maintainer-script to maintainer-script-should-not-use-fc-cache. Add fontconfig package to exception list. + [BR] Rename (ancient-dpkg-.*) to maintainer-script-should-not-use-$1. + [BR] Rename (deprecated-chown-usage) to maintainer-script-should-not-use-$1. + [BR] Rename maintainer-script-hides-init-failure to maintainer-script-should-not-hide-init-failure. + [BR] Rename maintainer-script-modifies-ld-so-conf to maintainer-script-should-not-modify-ld-so-conf. + [BR] Rename maintainer-script-modifies-netbase-managed-file to maintainer-script-should-not-modify-netbase-managed-file. + [BR] Rename maintainer-script-uses-dpkg-status-directly to maintainer-script-should-not-use-dpkg-status-directly. + [BR] Rename update-alternatives detection in maintainer script to aintainer-script-should-not-use convention. + [BR] Rename start-stop-daemon-in-maintainer-script to maintainer-script-should-not-use-start-stop-daemon * checks/standards-version: + [BR] Use Lintian::Data for ancient date check. * checks/watch.{desc,pm}: + [BR] Detect lack of uscan support for gpg signature. (Closes: #711553). * data/binary/embedded-libs: + [RG] Detect embedded copies of poppler/xpdf. (Closes: #724733) * data/files/obsolete-paths: + [BR] Add this this file to generically check obsolete path. + [BR] Check obsolete /etc/dhcp3 path. (Closes: #673029) * data/fields/obsolete-packages: + [NT] Apply patch from Eric Dorland to mark various versions of automake as obsolete. + [SL] Tag openjdk-6-jdk, openjdk-6-jre and openjdk-6-jre-headless as obsolete (See ##720911). (Closes: #730714) * data/fields/virtual-packages: + [NT] Refresh against sid. Thanks to Nicholas Breen for the reminder. (Closes: #724866) * data/spelling/corrections: + [RG] Detect some typos of "establishment" and "contains". + [SL] Detect some typos of "suppress". * data/standards-version/ancient-date: + [BR] Set ancient date to 14 Jan 2012. * data/standards-version/release-dates: + [NT] Add release date for 3.9.5. * debian/control: + [NT] Bump Standards-Versions to 3.9.5 - no changes required. + [BR] Add myself as uploader. * lib/Lintian/Collect/Binary.pm: + [GN] Add support for multi-component RPATHs. (Closes: #727683) * lib/Lintian/Collect/Package.pm: + [BR] Globally replace \\ by \ in _dequote_name(). This bug was masked by old buggy tar (Closes: #727665). * t/debs/deb-format-wrong-order/.*: + [BR] Recent dpkg detect this error and bail out. Do not run with dpkg >= 1.17.2. See dpkg git commit cb8ed03bbffe892165620ed1ddf753a6b0c1ee62 and 547dca4c3ff23df5dfa554f1943b371cd7056ee4. * vendors/ubuntu/main/data/changes-file/known-dists: + [NT] Add "trusty". Thanks to Stéphane Graber for the reminder. -- Bastien Roucariès Sun, 15 Dec 2013 19:52:24 +0100 lintian (2.5.19) unstable; urgency=low * Summary of tag changes: + Added: - homepage-in-binary-package * checks/fields.{desc,pm}: + [NT] Add check for "Homepage"-field missing in the source, when one of the binary packages has the field. Thanks to Ricardo Mones for the bug report. (Closes: #693117) * checks/files.pm: + [NT] Apply patch from Samuel Thibault to fix a false-positive non-standard-toplevel-dir for the directories /hurd and /servers. (Closes: #724524) + [NT] Work around bug #724571 in t1disasm by ignoring failures caused by segementation faults and bus errors. Though, Lintian will emit a warning when such an error occurs. Thanks to Ansgar Burchardt for the report. (Closes: #724319) * checks/testsuite.pm: + [NT] Allow uppercase letters in the names of DEP-8 tests, now that the DEP-8 officially "tolerates" them. (see #711844) * lib/Lintian/Util.pm: + [NT] Add drain_pipe(FD). * reporting/{config,harness}: + [NT] Determine the html_reports command automatically instead of allowing it to be configurable. + [NT] Stop allowing config script to name individual log files. The directory in which they are put is still configurable. + [NT] Replace LINTIAN_CFG with passing "--no-cfg" to lintian. + [NT] Replace $lintian_cmd config option with a @EXTRA_LINTIAN_OPTIONS. Also stop forking a shell to run lintian. + [NT] Remove LINTIAN_BIN_DIR; it is no longer used to avoid signature checking. + [NT] Fix a bug where harness would not remove entries in the Lintian log for removed packages if no packages were to be processed. * reporting/lintian-dummy.cfg: + [NT] Remove file as it is now obsolete. -- Niels Thykier Thu, 26 Sep 2013 09:06:22 +0200 lintian (2.5.18.1) unstable; urgency=low * checks/files.pm: + [NT] Only open .pc files if they are regular files. This fixes a possible DoS introduced in 2.5.17. * checks/shared-libs.pm: + [NT] Correct the name of the multiarch-dirs data file, which was renamed in 2.5.17. * lib/{Test/Lintian,Lintian/Data}.pm: + [NT] Load data files eagerly during tests to ensure missing or typo'ed data files are spotted earlier. * debian/changelog: + [NT] Mention in the 2.5.17 entry that multiarch-dirs data file was renamed. + [NT] Consistently spell "typos" without an "e". -- Niels Thykier Sun, 22 Sep 2013 10:51:29 +0200 lintian (2.5.18) unstable; urgency=low * Summary of tag changes: + Added: - debian-changelog-has-wrong-weekday - debian-rules-missing-good-practice-target-dfsg - empty-udeb-package - file-name-in-PATH-is-not-ASCII - misplaced-extra-member-in-deb * checks/apache2.pm: + [NT] Fix false-positive warning about non-standard package name when the Apache2 module contained uppercase letters. Thanks to Jonas Smedegaard for the report. (Closes: #723003) * checks/changelog.{desc,pm}: + [NT] Check that the weekday of the latest changelog entry is consistent with the date. Thanks to Raphael Champeimont for the report. (Closes: #703407) * checks/cruft.{desc,pm}: + [BR] Fix false-postive for license-problem-gfdl-invariants. (Closes: #721252) + [BR] Extend tag description of the gfdl-invariants tag. (Closes: #722102) * checks/deb-format.{desc,pm}: + [NT] Support (but tag) unofficial members after the "debian-binary" member where allowed by dpkg. These members will trigger misplaced-extra-member-in-deb tag. Thanks to Guillem Jover for the report and the feedback. (Closes: #718349) * checks/fields.{desc,pm}: + [NT] Warn about "?op=log" in svn.d.o brower links. Thanks to Paul Wise for the report. (Closes: #707700) + [NT] Fix false-positive dbg-package-missing-depends for transitional dbg packages. Thanks to Paul Wise for the report. (Closes: #665694) + [NT] Remind people that packages named gir1.2-foo-X.Y should be in the introspection section. Thanks to Michael Biebl for the report (part of #695345) * checks/files.{desc,pm}: + [BR] Fix false-positive dir-or-file-in-build-tree for the sbuild source package. (Closes: #720910) + [NT] Add check for empty udeb packages. Thanks to Cyril Brulebois for the suggestion. (Closes: #672664) + [NT] Remove exception for "/selinux" top-level directory. Thanks to Laurent Bigonville for the report. (Closes: #723730) + [NT] Add a check for files in PATH being representable using only ASCII characters. (Closes: #723732) * checks/menu-format.desc: + [BR] Rewrite description of the tag for desktop files without a keywords entry based on a wording from Gaudenz Steinlin. (Closes: #706966) + [NT] Apply patch from Lucas Nussbaum to add an additional reference to the desktop-entry-lacks-keywords-entry tag. (Closes: #722582) * checks/rules.{desc,pm}: + [BR] Refactor the check for known targets in d/rules. + [BR] Add check for missing for recommended "get-orig-source" target in d/rules for packages that look like they have been repacked. (Closes: #460174) * checks/scripts.desc: + [NT] Demote the certainty of shell-script-fails-syntax-check due to "extglob" in bash. Thanks To Trent W. Buck for the report. (Closes: #699410) * checks/testsuite.pm: + [NT] Add "allow-stderr" as known autopkgtest "restriction". Thanks to Jérémy Bobbio for the report and the initial patch. (Closes: #721179) * checks/version-substvars{.desc,.pm}: + [NT] Mention that version-substvar-for-external-package can happen if the package name used in the relation has a typo. Thanks to Joachim Reichel for reporting this. (Closes: #708576) + [NT] Ignore ":any" qualifiers in dependencies. Thanks to Scott Ritchie for the report. (Closes: #658320) * commands/info: + [NT] New file (replacing lintian-info). + [NT] Emit a deprecation warning for --include-dir and --[no-]user-dirs when they are not the first arguments and called as lintian-info. * doc/README.in: + [NT] Replaced by top-level README. * data/common/source-fields: + [NT] Allow the "Dgit" field in source packages. Thanks to Ian Jackson for the report. (Closes: #721205) * data/fields/perl-provides: + [NT] Refresh against perl 5.18. * data/rules/policy-rules: + [BR] New file. * data/scripts/{,versioned-}interpreters: + [NT] Apply patch from Gunnar Wolf to update which package is providing "rackup". (Closes: #721268) * data/scripts/interpreters: + [NT] Use "python:any | python-minimal:any" as dependency for python scripts. This fixes a false-positive for python-script-but-no-python-dep when dh_python2 generates a dependency of "python:any". Thanks to Francois Gouget for the report. (Closes: #711988) * data/scripts/versioned-interpreters: + [NT] Add python 2.7 and remove 2.4, 2.5 and 2.6. Also add ":any" the dependency template like with the unversioned interpreters (see above). * debian/docs: + [NT] Install "README" instead "doc/README" * debian/lintian.install: + [NT] Install dplint and commands/*. * debian/lintian.links: + [NT] New file. * debian/rules: + [NT] Add code for substituting some placeholder values in dplint and lintian. + [NT] Invoke dh_link. + [NT] Remove code for auto-generating README from README.in * debian/tests/control: + [NT] Remove reference to testsuite-legacy. * debian/tests/testsuite-legacy: + [NT] Removed; no longer useful. * doc/README.developers: + [NT] Update the section on running Lintian from a source tree to mention that setting LINTIAN_ROOT is no longer needed. + [NT] Remove references to the legacy testsuite. * doc/tutorial/Lintian/Tutorial/TestSuite.pod: + [NT] Remove references to the legacy testsuite. * frontend/dplint: + [NT] New file. * frontend/lintian: + [NT] Automatically determine the LINTIAN_ROOT when run from the extracted source dir. + [NT] Deprecate --root and LINTIAN_ROOT. These are largely obsolete as Lintian can now automatically determine the proper LINTIAN_ROOT. To avoid surprises, lintian will now exit with an error if requested to use a different LINTIAN_ROOT than the one lintian expected to use. + [NT] Emit a deprecation warning for --include-dir and --[no-]user-dirs when they are not the first arguments and called as lintian-info. * frontend/lintian-info: + [NT] Replace with symlink to dplint. The implementation of lintian-info is now handled by commands/info. * lib/Lintian/Collect/Package.pm: + [NT] If the index file does not include a "root" directory, then create a fake one. * lib/Lintian/Data.pm: + [NT] Make a special case to allow "original-maintainer" by default in all non-"Debian" profiles. Thanks to Nick Black for the report. (Closes: #697565) * lib/Lintian/Relation.pm: + [NT] Allow "pkg" to imply "pkg:any", but without permitting "pkg:any" to imply "pkg". * private/runtests: + [NT] Remove file; merge the relevant parts into t/runtests. * README: + [NT] New file for basic information about Lintian and where to find more information. * reporting/harness: + [NT] Fix bug that caused harness to not remove old log entries on incremental runs. + [NT] Clear LINTIAN_ROOT environment variable if set. * reporting/html_reports: + [NT] Copy (rather than symlink) the lintian.log to the generated website. * t/runtests: + [NT] Assume dpkg (>= 1.16.1) is present. + [NT] Work around bug in Perl (#723805) when using "glob" within threads. Thanks to Brian "hugmeir" Fraser for finding the underlying cause. * t/tests/legacy-debug/debian/debian/control: + [NT] Mark some packages "arch:any" to avoid test failures on kfreebsd-amd64. (Closes: #688524) * testset/*: + [NT] All tests moved to t/tests/legacy-* and the test runner removed. * vendors/ubuntu/main/data/{common,fields}/*: + [NT] Retire now redundant files. -- Niels Thykier Sat, 21 Sep 2013 23:23:10 +0200 lintian (2.5.17) unstable; urgency=low * Summary of tag changes: + Added: - apache2-unparsable-dependency - deprecated-configure-filename - doc-base-abstract-field-separator-extra-whitespace - doc-base-abstract-might-contain-extra-leading-whitespace - doc-base-file-separator-extra-whitespace - md5sums-lists-nonexistent-file - non-multi-arch-lib-dir - pkg-config-multi-arch-wrong-dir + Removed: - apache2-unparseable-dependency - doc-base-abstract-field-separator-extra-whitespaces - doc-base-abstract-might-contain-extra-leading-whitespaces - doc-base-file-separator-extra-whitespaces - md5sums-lists-nonexisting-file * checks/apache2.{desc,pm}: + [JW,NT] Rename a tag for consistent spelling of "unparsable" in tag names. The tag has no known overrides. * checks/automake.{desc,pm}: + [NT] Apply patch from Gautier Minster to detect usage of configure.in with automake. Thanks to Paul Wise for the report. (Closes: #708482) * checks/cruft.pm: + [NT] Avoid given/when which was demoted to an experimental feature. (Closes: #720835) * checks/files.{desc,pm}: + [BR] Add check for architecture pkg-config files using multi-arch paths but being installed in a non-multi-arch location. Thanks to Ivo De Decker for the report. (Closes: #674469) + [BR] Add check for using the old bi-arch directories (/usr/lib64) instead of multi-arch dirs. Thanks to Kurt Roeckx for the report. (Closes: #528975) + [BR] Remove "emul/" as a recognised top-level directory. * checks/md5sums.{desc,pm}: + [JW,NT] Rename a tag due to a typo in the tag name. The tag has no known overrides. * checks/menus.{desc,pm}: + [JW,NT] Rename tags due to a typo in their tag name. These tags have no known overrides. * checks/source-copyright.pm: + [NT] Avoid accidental use of an experimental feature. * data/{binaries => common}/multiarch-dirs: + [BR] Moved multiarch-dirs from binaries to common, since it is used from multiple checks. * debian/control: + [NT] Add Build-Depends on aspell, aspell-en and libtest-spelling-perl. * lib/Lintian/Tag/TextUtil.pm: + [NT] Prevent very long URLs from being split into two lines. Thanks to Jari Aalto for the report. (Closes: #719769) * lib/Lintian/Util.pm: + [NT] Prefer paths without leading slash in the documentation for normalize_pkg_path. Thanks to Kevin Ryde for spotting this inconsistency. + [NT] The first argument argument of normalize_pkg_path is now unconditionally normalized. Furthermore, allow the function to be called with only one argument like Cwd::realpath. * t/*: + [NT] Adapt several tests to work under perl 5.18. -- Niels Thykier Mon, 26 Aug 2013 07:49:21 +0200 lintian (2.5.16) unstable; urgency=low * Summary of tag changes: + Added: - changelog-is-dh_make-template - copyright-should-refer-to-common-license-file-for-apache-2 - debian-control-repeats-field-name-in-value - info-document-missing-image-file - license-problem-font-adobe-copyrighted-fragment - license-problem-font-adobe-copyrighted-fragment-no-credit - missing-dependency-on-libstdc++ - quilt-patch-using-template-description + Removed: - dh_pycentral-is-obsolete - dh_python-is-obsolete - font-adobe-copyrighted-fragment - font-adobe-copyrighted-fragment-no-credit - init.d-script-call-internal-API - missing-dependency-on-python-central * checks/apache2.pm: + [NT] Fix F-P apache2-deprecated-auth-config for "AllowOverride". Thanks to Jean-Michel Vourgère for the report and an initial patch. (Closes: #717621) * checks/binaries.pm: + [NT] Apply patch from Michael Stapelberg to exempt golang-go binaries from statically-linked-binary tag. (Closes: #718404) + [NT] Permit shared libraries to not link against libc as long as they link against libstdc++. This fixes a lot of false positive warnings for some c++ libraries when the linker (with --as-needed) determines that the libc link is superfluous. Thanks to Maximiliano Curia for the report. (This is a partial fix for #719806) + [NT] Add experimental tag for missing dependency on libstdc++. * checks/changelog-file.{desc,pm}: + [BR] Add check for dh-make reminder to insert the bug number of the ITP bug. (Closes: #690273) * checks/control-file.{desc,pm}: + [BR] Add check for field name being duplicated in the value of the field. (Closes: #711069) * checks/copyright-file.{desc,pm}: + [BR] Extend check for "reference to compressed common-license" to include all current common-licenses. + [BR] Add check for use of Apache-2.0 in d/copyright without references common-licenses. (Closes: #713012) * checks/cruft.pm: + [NT] Skip d/README.Debian and d/README.source when checking for non-free licenses. Mentions here are presumably just false-positives. Thanks to Marcelo Jorge Vieira for the report and the initial patch. (Closes: #718575) * checks/deb-format.pm: + [NT] Apply patch from Guillem Jover to fix a wrong tag being emitted on lzma compressed udebs. (Closes: #718337) * checks/debhelper.{desc,pm}: + [NT] Remove tag for dh_pycentral and dh_python being obsolete. Thanks to Luca Falavigna for the report. (Closes: #720337) + [BR] Fix false-negative in the brace expansion check when the comma was next to one of the braces. (Closes: #708381) * checks/files.{desc,pm}: + [NT] Remove tag for missing dependency on python-central. Thanks to Luca Falavigna for the report. (Closes: #718690) + [BR] Rename font-adobe-copyrighted-fragment tags. (Closes: #718820) + [NT] Fix false positive warning about embedded feedparser for python3-feedparser. Thanks to Etienne Millon for the report. (Closes: #719163) * checks/infofiles.{desc,pm}: + [NT] Apply patches from Kevin Ryde to find info files references non-existent images. (Closes: #719450) * checks/init.d.{desc,pm}: + [NT] Revert init.d-script-call-internal-API for now. Refer to #710559 for more information. * checks/patch-systems.{desc,pm}: + [BR] Add tag for DEP-3 template descriptions. (Closes: #717633) * checks/phppear.{desc,pm}: + [NT] Apply patch from Mathieu Parent to fix false positive missing-pkg-php-tools-addon. Thanks to Thijs Kinkhorst for the report. (Closes: #718167) + [NT] Apply patch form Mathieu Parent to reduce the severity of a "composer package" not using pkg-php-tools to wishlist. Thanks to Thijs Kinkhorst for the report. (Closes: #718862) + [NT] Apply patch from Vincent Bernat to downgrade severity of not using phppear substvars for description and synopsis plus explain that they should not be used blindly. Thanks to Mathieu Parent for the review of the patch. (Closes: #719788) * checks/po-debconf.{desc,pm}: + [NT] Fix false-positive translated-default-field for fields preceded by a "true" Deb822 comment. Thanks to Ron Lee for the report. (Closes: #637881) * checks/scripts.pm: + [NT] Stop emitting package-uses-local-diversion for calls to dpkg-divert without --package as dpkg 1.16.0 (Wheezy) handles this case correctly. Thanks to Raphaël Hertzog for the report. (Closes: #679132) + [NT] Apply patch from Vincent Cheng to fix warning for executable jar files. Thanks to Matthew Johnson for the report. (Closes: #539315) * checks/systemd.pm: + [NT] Apply patch from Stig Sandbeck Mathisen to allow systemd files being symlinks to /dev/null. (Closes: #718563) * debian/changelog: + [NT] Correct some older tag summaries to include some missing tags in the entry for 2.5.11 and 2.5.12. * debian/copyright: + [NT] Add Bastien ROUCARIÈS to maintainers (as BR). * frontend/lintian: + [NT] Move some handling of overrides to Lintian::Tags. * lib/Lintian/Processable/Package.pm: + [NT] Refuse to process .dsc files that are missing the Source field. This prevents some warnings about using undefined values. Thanks to Guillem Jover for the report. (Closes: #718351) * lib/Lintian/Tags.pm: + [NT] Take over some handling of overrides from the frontend. * lib/Lintian/Util.pm: + [NT] Fix problem in normalize_pkg_path, where "."-entries were not properly filtered out. * profiles/debian/ftp-master-auto-reject.profile: + [NT] Refresh with new tags. Thanks to Gregor Herrmann for the reminder. -- Niels Thykier Wed, 21 Aug 2013 12:30:07 +0200 lintian (2.5.15) unstable; urgency=low "use less qw(memory);" * Summary of tag changes: + Added: - composer-package-without-pkg-php-tools-builddep - init-script-is-not-a-file - init.d-script-does-not-source-init-functions - maintainer-script-calls-systemctl - manpage-named-after-build-path - missing-pkg-php-tools-addon - missing-pkg-php-tools-buildsystem - pear-channel-without-pkg-php-tools-builddep - pear-package-but-missing-dependency - pear-package-feature-requires-newer-pkg-php-tools - pear-package-not-using-substvar - pear-package-without-pkg-php-tools-builddep - pecl-package-requires-build-dependency - service-file-is-not-a-file - systemd-no-service-for-init-script - systemd-service-file-outside-lib - systemd-service-file-refers-to-obsolete-target - systemd-tmpfiles.d-outside-usr-lib * checks/*.pm: + [NT] Add final return to all subs in checks and ensure that the "run" sub complies with Lintian's own recommendation. * checks/binary.pm: + [NT] Apply patch from Bastien Roucariès to fix false- negatives for debug files in usr/lib/debug/.build-id. (Closes: #714191) + [NT] Apply patch from Bastien Roucariès to fix false- positive debug-file-with-no-debug-symbols for files using compressed debug sections. * checks/fields.pm: + [NT] Apply patch from Niko Tyni to fix false-positive package-superseded-by-perl for packages with epochs. (Closes: #710919) * checks/files.pm: + [NT] Fix some false-negative extra-license-file. Thanks to Helmut Grohne for the report and the advices. (Closes: #701177) * checks/manpages.{desc,pm}: + [NT] Apply patch from Bastien Roucariès to test for manpages named after their build path. (Closes: #713884) + [NT] Skip some checks on empty manpages. (Closes: #700502) * checks/phppear.{desc,pm}: + [NT] New check based on patches from Mathieu Parent. (Closes: #708551) * checks/source-copyright.pm: + [NT] Some tags now refer to the line number of the field with an issue instead of the line number of the paragraph. * checks/systemd.{desc,pm}: + [NT] New check for systemd related files. Thanks to Michael Stapelberg for providing the check and the tests. (Closes: #704197) * collection/copyright-file: + [NT] Avoid creating an empty copyright file when it is not needed. * collection/unpacked: + [NT] Skip signature checking of source packages. (Closes: #707534) * data/binary/embedded-libs: + [NT] Rename libgd2 to libgd. (Closes: #708367) * data/fields/virtual-packages: + [NT] Refresh. Thanks to Laurent Bigonville for the reminder. (Closes: #712641) * data/files/{fonts,locale-codes}: + [NT] Refresh. * data/menu-format/add-categories: + [NT] Apply patch from Bastien Roucariès to include newer categories. Thanks to Yves-Alexis Perez for the report. (Closes: #712932) * data/output/manual-references: + [NT] Refresh. * data/scripts/interpreters: + [NT] Apply patch from Bastien Roucariès to include gjs. Thanks to Andreas Henriksson for the report. (Closes: #712607) * debian/control: + [NT] Add Build-Depends on pkg-php-tools for a new test. * debian/dirs: + [NT] Remove /var/lib/lintian, we no longer use it. * debian/docs: + [NT] Add auto-generated API documentation. * debian/lintian.examples: + [NT] New file to install examples. (Closes: #707906) * debian/rules: + [NT] Generate API documentation during build. + [NT] Call dh_installexamples. * doc/examples/*: + [NT] New example files. * doc/lintian.xml: + [NT] Add small example vendor profile to the user manual. * frontend/lintian: + [NT] Add information about memory usage with -ddd if Devel::Size is available. A more detailed breakdown of the memory usage with -dddd. * lib/Lintian/Collect/Package.pm: + [NT] Share some string values in the file_info and in the (X_)index methods. This reduces memory usage a bit. * lib/Lintian/Collect/Source.pm: + [NT] "binaries" and "binary_field" now only exposes data about entries in d/control with a valid package name. + [NT] Document that "binaries" return an unorderd list. + [NT] relation and relation_noarch now recognises "Build-Depends-Arch". * lib/Lintian/Path.pm: + [NT] Fix bug in the overloaded qr// operator. * lib/Lintian/ProcessablePool.pm: + [NT] Fix a bug that could cause .changes files to be silently skipped. This only occured if a related package was passed on the command line before the .changes file. Thanks to Salvo Tomaselli for reporting the bug. (Closes: #714437) * lib/Lintian/Relation.pm: + [NT] Apply some memory optimisations to some common cases. * lib/Lintian/Tags.pm: + [NT] Use croak instead of die when a check emits an unknown tag. This gives the check writer a better chance of finding where the problem occured. * lib/Lintian/Util.pm: + [NT] Have parse_dpkg_control and visit_dpkg_control give a more detailed line number information about paragraphs. * reporting/harness: + [NT] Clear some variables before running Lintian in the hope it will reduce the memory pressure on "long runs". + [NT] Remove support for "$LINTIAN_GPG_CHECK" config variable. Lintian no longer checks any signatures. -- Niels Thykier Mon, 22 Jul 2013 22:53:25 +0200 lintian (2.5.14) unstable; urgency=low * Summary of tag changes: + Removed: - upstream-version-not-numeric * checks/*: + [NT] Rename all checks to include the extension ".pm". (Closes: #710405) + [JW] Fix typos in several files. * checks/binaries.pm: + [NT] Also check for the presence of "mcount" to detect whether a binary was compiled with profiling. (Closes: #712124) + [NT] Ignore "teH" when checking for spelling mistakes in ELF binaries. Thanks to Ryan Kavanagh for the report. (Closes: #711207) * checks/cruft.pm: + [NT] Revise a few tests that relied on file(1) on text files. + [NT] Apply patches from Bastien Roucariès to fix some false positives in the GDFL related checks. (Closes: #711119) + [NT] Show the full path with source-contains-unsafe-symlink rather than just the "basename". * checks/fields.{desc,pm}: + [NT] Fix typo, thanks to Adrien Cunin. + [NT] Retire upstream-version-not-numeric which can no longer be emitted. Versions that would previously trigger this tag will now trigger bad-version-number instead. + [NT] Properly quote package names used in regular expressions. Thanks to Mattias Ellert for the report. (Closes: #714427) * checks/menus.pm: + [NT] Fix a bug in checking for symlinks that could possibly make lintian follow an unsafe symlink. (CVE-2013-1429) * coll/*: + [NT] Set "Auto-Remove: yes" on several collections to reduce the "inode pressure" on lintian.d.o. + [NT] Reduce the number of inodes used by removing or not creating some empty files and directories. * coll/debfiles: + [NT] Remove test of the presence of unpacked. * coll/file-info{,.desc}: + [NT] Disable "ascii" test in file(1). For some packages this may greatly reduce the overhead of running the file-info collection. * coll/hardening-info: + [NT] Skip files in usr/lib/debug/. * data/binaries/embedded-libs: + [RG] Check for embedded copies of libraw. (Closes: #711090) * data/fields/obsolete-packages: + [NT] Add texi2html. Thanks to Ryan Kavanagh for the report. (Closes: #710466) * data/scripts/interpreters: + [NT] Add plackup (libplack-perl) as a known interpreter. Thanks to Robert James Clay for the report. (Closes: #712405) * doc/{lintian.xml,README.in}: + [JW] Fix typos. * lib/Lintian/CheckScript.pm: + [NT] Prefer loading checks with ".pm", but fall back to loading checks without the extension (with a deprecation warning). * lib/Lintian/Collect/Package.pm: + [NT] sorted_index (etc.) now returns L::Path objects rather than just file names. * lib/Lintian/{Path,Util}.pm: + [NT] Remove deprecated methods. * lib/Lintian/Path.pm: + [NT] Overload some operators. * man/lintian.pod.in: + [JW] Fix typos. * reporting/config: + [NT] Replace /org with /srv. * reporting/harness: + [NT] Fix bug where harness might schedule the same group multiple times. (Closes: #710380) * t/runtests: + [NT] Include a summary of all skipped and failed tests. -- Niels Thykier Sat, 29 Jun 2013 14:52:29 +0200 lintian (2.5.13) unstable; urgency=low Upload to unstable. * Summary of tag changes: + Added: - conffile-is-not-in-package - debconf-translation-using-general-list - dh_pysupport-is-obsolete - init.d-script-call-internal-API + Removed: - debhelper-maintscript-needs-versioned-build-depends - debhelper-script-needs-versioned-build-depends - missing-pre-dependency-on-multiarch-support * checks/*: + [NT] Use Lintian::Path objects as arguments to unpacked and control where these objects are available. * checks/binaries: + [RA] Do not complain about kernel modules with no shared library dependency information. Patch from Guillem Jover. (Closes: #706242) + [NT] Demote the certainty of hardening-no-fortify-functions to "wild-guess". (Closes: #709415) * checks/changes: + [NT] Recognise "-backports-sloppy" as a valid distribution. Thanks to Romain Francoise for the report and the patch. (Closes: #705170) * checks/conffiles: + [NT] Strip whitespace from conffiles similar to how dpkg does it. + [NT] When emitting duplicate-conffile, avoid repeating other tags related to that conffile. The exception to this is relative-conffile where the original file might not have triggered that tag. + [NT] Test that all paths listed in the "conffiles" control file is actually in the package being tested. * checks/cruft{,.desc}: + [JW] Correct the name of the architecture listed in description of the tag outdated-autotools-helper-file. (Closes: #706166) + [NT] Flag all absolute symlinks in source packages as "unsafe". (Closes: #697164) + [NT] Fix false-positive source-contains-unsafe-symlink for symlinks ascending one or more levels without escaping the package root. Thanks to Michael Schutte for the report and the patch. (Closes: #707742) + [NT] Add a series of patches from Bastien Roucariès to reduce the number of false positives and negatives in the GDFL related checks. (Closes: #708957, #708881, #709379, #709886) * checks/debhelper{,.desc}: + [NT] Retire some tags that are no longer relevant in the Jessie development cycle. + [NT] Apply patch from Luca Falavigna to detect uses of the deprecated tool, dh_pysupport. (Closes: #709615) * checks/description: + [NT] Skip extended-description-is-probably-too-short for -dbg packages. Thanks to Paul Wise for the suggestion. (Closes: #705441) * checks/fields.desc: + [NT] Clarify that the "canonical URI" for Vcs fields is based on an announcement from the Alioth admins. Thanks to Torquil Sørensen for the report. (Closes: #705835) + [NT] Clarify in the tag description of some tags related to "Vcs-*" fields that the tags are based on a data list (and is not a result of a HTTP request while checking the package). * checks/files{,.desc}: + [JW,NT] Drop missing-pre-dependency-on-multiarch-support now that multiarch-support is in stable. (Closes: #709121) + [JW] Fix typo in a tag description. (Closes: #709455) + [NT] Change the "ancient-file" cut-off date to 1975 from 1984. Thanks to Ole Streicher and Ansgar Burchardt for the report. (Closes: #710086) * checks/group-checks.desc: + [NT] Add missing semi-colon in tag description. Thanks to Andrey Rahmatullin for the report. (Closes: #706827) * checks/init.d{,.desc}: + [NT] Add missing import of utility function that could cause Lintian to crash in some cases. + [NT] Add check for uses of /lib/init in maintainer scripts. Thanks to Josh Triplett for the report and to Bastien Roucariès for the patch. (Closes: #670092) * checks/menu-format: + [NT] Fix use of uninitialized variable when menu file uses a section of "/". (Closes: #708755) * checks/po-debconf{,.desc}: + [NT] Remove tests for commands that are provided by Lintian's dependencies. + [RA] Add new check for a Language-Team field in a translation pointing to the debian-i18n mailing list. Based on work by victory. (Closes: #705197) * checks/rules: + [NT] Remove check for "dpkg-dev (>= 1.16.1~)" build-dependency, since this is trivially satisfied in Wheezy and Jessie. * collection/*-helper: + [NT] Move all collection helpers to helpers/coll. * collection/debfiles: + [NT] Replace makeshift "is_ancestor_of" check with the one from L::Util. * collection/java-info: + [NT] Update a regex to cope with file(1) now calling JAR files for "Java Jar file" rather than "Zip archive". (Closes: #707400) * data/changes-file/known-dists: + [NT] Add jessie and remove lenny. * data/debhelper/dh_{addons,commands}-manual: + [NT] Remove entries/versions that are no longer relevant. * data/fields/perl-provides: + [NT] Refresh against sid. (Closes: #708178) * data/spelling/corrections: + [NT] Add correction for unnecessarily. Thanks to Guillem Jover for the suggestion. (Closes: #706241) * debian/control: + [NT] Remove irrelevant (versioned) dependencies that are now trivially satisfied in stable. + [NT] Recommend libautodie-perl (>= 2.18) and libperlio-gzip-perl as these can greatly effect performance of Lintian. * debian/lintian.install: + [NT] Install "helpers" as /usr/share/lintian/helpers * debian/{postinst,prerm}: + [NT] Remove unused maintainer scripts now that stable's libc-bin provides a C.UTF-8. * debian/triggers: + [NT] Remove unused trigger now that stable's libc-bin provides a C.UTF-8. * doc/tutorial/**/*.pod: + [NT] Fix a number of spelling mistakes in the POD. * doc/tutorial/Lintian/Tutorial/WritingChecks.pod: + [NT] Add a section about how to avoid some common ways of introducing security issues. * frontend/lintian: + [NT] Ignore LINTIAN_ROOT/locale and /var/lib/lintian/locale. + [NT] Export LINTIAN_INCLUDE_DIRS and LINTIAN_HELPERS_DIR to subprocesses. These are ":"-separated lists of dirs used by Lintian. The first being a list of raw include dirs and the second being a list of helpers dirs in these include dirs. + [NT] Fix a bug where the exit code from lintian would sometimes be an undocumented value (>= 3). * helpers/coll: + [NT] New directory containing some helpers that used to be in directly collection. * lib/*: + [NT] Fix a number of spelling mistakes in the POD. * lib/Lintian/Collect/{Package,Binary}.pm: + [NT] Accept Lintian::Path objects to unpacked and control. * lib/Lintian/Collect/Source.pm: + [NT] Provide a "source" specific is_non_free method that reads the "Section"-field from d/control instead of the .dsc. This fixes false-positives "problematic licenses" for non-free packages. Thanks to Bastien Roucariès for the report. (Closes: #709041) * lib/Lintian/Path.pm: + [NT] Rename link_resolved to link_normalized. * lib/Lintian/Unpacker.pm: + [NT] On platform that support it, change the "name" of the process running the collection. This makes it easier to see what collections are currently being run (like in the versions prior to 2.5.12). For platforms, where it is not possible to change the name of a running process, the unpack jobs will simply be named "lintian" like its parent. * lib/Lintian/Util.pm: + [NT] Fix a race condition in touch_file. + [NT] Add sanity check in perm2oct for bad permission strings and throw errors when they are seen (instead of returning 0). + [NT] Require that the input file is present for read_dpkg_control and get_deb_control. + [NT] In copy_dir, pass --reflink=auto to cp. + [NT] Replace resolve_pkg_path with to normalize_pkg_path. The latter has slightly different return values in some cases. + [NT] Avoid the LOCPATH dance to find the path to an UTF-8 locale now that stable's libc-bin provides C.UTF-8 for us. + [NT] Add new function, locate_helper_tool, to find helper tools. * private/refresh-perl-provides: + [NT] Apply patch from Niko Tyni to improve Lintian's data file about Perl modules provided by perl-base. * profiles/debian/extra-apache2.profile: + [NT] Removed, merged into debian/main.profile. * profiles/debian/ftp-master-auto-reject.profile: + [NT] Include md5sums-mismatch and non-standard-toplevel-dir as an overridable tag. * profiles/debian/main.profile: + [NT] Include the apache2 check. Thanks to Arno Töll for the report. (Closes: #708943) * reporting/harness: + [NT] Stop exporting ENV variables that lintian no longer cares about. * vendors/ubuntu/main/data/changes-file/known-dists: + [NT] Add "saucy" as known Ubuntu distribution. Thanks to Iain Lane for the report. -- Niels Thykier Thu, 30 May 2013 08:53:02 +0200 lintian (2.5.12) experimental; urgency=medium * Summary of tag changes: + Added: - ambiguous-paragraph-in-dep5-copyright - binary-file-built-without-LFS-support - debian-tests-control-is-not-a-regular-file - debian-tests-control-uses-national-encoding - debug-file-with-no-debug-symbols - desktop-entry-lacks-keywords-entry - dir-or-file-in-build-tree - dir-or-file-in-etc-opt - dir-or-file-in-home - file-name-is-not-valid-UTF-8 - font-adobe-copyrighted-fragment-no-credit - font-package-not-multi-arch-foreign - illegal-runtime-test-name - inconsistent-testsuite-field - license-problem-gfdl-invariants - license-problem-gfdl-invariants-empty - menu-icon-uses-relative-path - missing-runtime-test-file - missing-runtime-tests-field - package-contains-broken-symlink-wildcard - package-contains-unsafe-symlink - runtime-test-file-is-not-a-regular-file - source-contains-unsafe-symlink - syntax-error-in-debian-tests-control - unknown-runtime-tests-feature - unknown-runtime-tests-field - unknown-runtime-tests-restriction - unknown-testsuite - vcs-field-bitrotted - vcs-git-uses-invalid-user-uri - zip-parse-error + Removed: - unneeded-build-dep-on-quilt * checks/*: + [NT] Avoid following unsafe symlinks. (CVE-2013-1429) * checks/binaries{,.desc}: + [NT] Accept libx32 as a bi-arch directory. + [NT] Correct reference policy reference. Thanks to Samuel Bronson for the correction. (Closes: #698234) + [NT] Detect debug ELF binaries with no debug symbols. Thanks to Nelson A. de Oliveira for the report. (Closes: #668437) + [NT] Check for binaries built without LFS. This can only be checked for 32bit binaries as 64bit binaries have LFS by definition. Thanks to Guillem Jover for the report and patches. (Closes: #670963) + [NT] Apply patch from Samuel Bronson to bump severity (but decrease certainty) of the "not linked against libc" tags. (Closes: #698720) * checks/copyright: + [NT] Apply patch from Evgeni Golov to avoid false positive tag when the MPL-2.0 license appears in the copyright file. (See #626454) * checks/cruft{,.desc}: + [NT] Do not emit the license-problem-json-evil tag for non-free packages. + [NT] Apply patch from Bastien Roucariès to catch GFDL licenses with invariants (etc.). (Closes: #695967) + [NT] Correct description of an autotools tag. Thanks to Alberto Garcia and Timo Juhani Lindfors for the report and patch. (Closes: #703490) + [NT] Check for unsafe symlinks (outside common testsuite paths). * checks/debconf: + [NT] Fix several path traversal issues that could leak information about the host system. (CVE-2013-1429) * checks/debhelper{,.desc}: + [JW] Assume the proper python helpers are called if a (Makefile) variable is used. (Closes: #659335) + [JW] Promote python-depends-but-no-python-helper and python3-depends-but-no-python3-helper to non-experimental. * checks/description: + [NT] Ignore "extended-description-is-probably-too-short" for metapackages. Thanks to Axel Beckert for the report. * checks/duplicate-files.desc: + [NT] Demote severity of "duplicate-files" tag to pedantic. * checks/fields{,.desc}: + [NT] Apply patch from Samuel Bronson to detect some broken or poor Vcs URLs. Also thanks to James McCoy for his report. (Closes: #652595) + [JW] Reduce severity of b-d-on-python-dev-with-no-arch-any to minor. + [NT] Skip "depends-on-packaging-dev" for metapackages. + [NT] Apply patch from Gregor Herrmann to catch metacpan homepage links with versions. (Closes: #700110) + [NT] Apply patch from Vasudev Kamath to detect fonts packages without a Multi-Arch foreign (or allowed) field. (Closes: #701061) * checks/files{,.desc}: + [NT] Apply patch from Bastien Roucariès to catch paths in (common) build dirs. (Closes: #678857) + [NT] Do not suggest the use of "virtual package" as a way to suppress empty-binary-package. Lintian will still accept it the phrase for now. + [NT] Accept libx32 as an bi-arch directory. + [NT] Ignore gzipped lintian overrides when checking whether a package is empty. + [NT] Fix typo of Pre-Depends, thanks to Raúl Benencia for spotting it. (Closes: #699452) + [NT] Add patch from Bastien Roucariès to check for another adobe font license issues. (Closes: #705175) + [NT] Test for use of file names that are contain invalid UTF-8 byte sequences. Thanks to Helmut Grohne for the suggestion. (Closes: #704446) * checks/init.d: + [NT] Fix regression where Lintian would not properly match init.d passed to update-rc.d. Thanks to Michael Meskes for reporting. (Closes: #698602) + [NT] Fix possible symlink traversal that could leak information about the host system. (CVE-2013-1429) * checks/java{,.desc}: + [NT] Report possibly broken jar files. * checks/md5sums: + [NT] Fix path traversal issue that could leak information about the host system. * checks/menu-format{,.desc}: + [NT] Apply patch from Bastien Roucariès to detect missing "Keywords" in desktop files. Thanks to Jeremy Bicha for the report. (Closes: #693918) + [NT] Apply patch from Matthias Klumpp to add missing "Science" category. (Closes: #697693) + [NT] Apply patch from Thomas Preud'homme to detect uses of relative icons in menu files. (Closes: #697916) + [NT] Document why only XPM are allowed in the tag description of menu-icon-not-in-xpm-format. (Closes: 591812) * checks/menus: + [NT] Fix path traversal issue that could leak information about the host system. (CVE-2013-1429) * checks/patch-systems{,.desc}: + [NT] Retire unneeded-build-dep-on-quilt, it is only a pedantic tag and apparently not too accurate. Thanks to Charles Plessy and Frank Kuester for the reports. (Closes: #615516, #681061) * checks/po-debconf: + [NT] Unconditionally set INTLTOOL_EXTRACT. * checks/rules: + [NT] Remove ant1.7 as alternative to ant as ant1.7 has been removed from Wheezy. * checks/scripts: + [NT] Treat scripts in /usr/src/ like they were documentation. * checks/shared-libs: + [NT] Special case gcc packages when looking for dev symlinks. gcc stores its dev symlinks in some special directories. + [NT] Fix path traversal issue that could leak information about the host system. (CVE-2013-1429) * checks/source-copyright{,.desc}: + [JW,NT] Add a separate tag for ambiguous DEP-5 paragraphs, where Lintian cannot reliably figure out what is intended. Thanks to Julian Taylor for the report. (Closes: #652380) + [NT] Add paragraph line number to the "field typo" tag. * checks/symlinks{,.desc}: + [NT] Warn about broken symlinks that contains a literal "*" in their target. This is usually a sign that a wildcard did not properly expand. Thanks to Bernd Zeimetz for the report. (Closes: #683737) + [NT] Demote certainty of package-contains-broken-symlink to wild-guess. + [NT] Check for unsafe symlinks in binary packages. * checks/testsuite{,.desc}: + [NT] New check written by Nicolas Boulenguez to catch some mistakes with the new autopkgtest tests. * collection/*: + [NT] Avoid reading files outside the package root. (CVE-2013-1429) * collection/{changelog-file,debian-readme}: + [NT] Ignore files in usr/doc/. + [NT] Skip collection if usr/share/doc/ is not contained within the package root. (CVE-2013-1429) * collection/hardening-info{,-helper,.desc}: + [NT] Whitelist "memset" and "memmove" as "always safe" functions. Thanks to Sebastian Ramacher for the suggestion and Roland Stigge for the report. (Closes: #685299) + [NT] Remove work around for #677530 * collection/index{,.desc}: + [NT] Fix missing trailing slash on dirnames and bump index version accordingly. Thanks to Nicolas Boulenguez for noticing. * collection/java-info: + [NT] Gracefully handle broken Jar files. Thanks to Paul Tagliamonte for the report. (Closes: #700543) * collection/strings: + [NT] Fix a regression in filtering out "debug" ELF binaries. * data/binaries/arch-regex: + [NT] Recognise x32 as an ELF32 binary. * data/fields/obsolete-packages: + [NT] Apply patch from Guillem Jover to add fuse-utils as an obsolete package. (Closes: #697534) * data/files/locale-codes: + [NT] Refresh against sid data files. * data/menu-format/add-categories: + [NT] Apply patch from Matthias Klumpp to add missing subcategories. * data/output/manual-references: + [NT] Refresh with Policy 3.9.4. * data/scripts/interpreter: + [NT] Add cfagent as a known interpreter. Thanks to Andreas Mundt for the suggestion. (Closes: #699670) * data/scripts/versioned-interpreters: + [NT] Apply patch from Thijs Kinkhorst to add lua5.2 as a versioned alternative to lua. (Closes: #698704) * data/shared-libs/ldconfig-dirs: + [NT] Add libx32 and usr/libx32 used by some gcc x32 bi-arch packages. * data/spelling/corrections{,-case}: + [JW] Add correction for "privileges". (Closes: #700882) + [NT] Warn about incorrect case of "OpenStreetMap". Thanks to Paul Wise for the patch. * debian/control: + [NT] Bump dependency on hardening-includes to avoid having to work around #677530. + [NT] Add XS-Testsuite for autopkgtest tests. + [NT] Add Build-Depends on libtest-perl-critic-perl. + [NT] Add (Build-)Depends on liblist-moreutils-perl and libfile-basedir-perl. + [NT] Add versioned (Build)-Depends on perl | libautodie-perl. * debian/lintian.install: + [NT] Install Test::Lintian in /usr/share/lintian/lib. * debian/rules: + [NT] Include the new Tutorial pods in the "api-doc" target. * debian/tests/{control,testsuite,testsuite-legacy}: + [NT] New file. * doc/tutorial/Lintian/Tutorial{/WritingChecks}.pod: + [NT] Add POD tutorial on writing checks. * frontend/lintian{,-info}: + [NT] Add --include-dir command line option. This can be used to load additional Lintian checks, profiles, libraries or data. (Closes: #359059) * frontend/lintian: + [NT] Remove "make-shift" lab-query support now that Lintian::Lab supports it. + [NT] Add new command line option "--[no-]user-dirs" to disable loading from $HOME/.lintian{rc,/} and /etc/lintian{rc,/}. + [NT] Error out early if a check cannot be loaded. + [NT] Make --suppress-tags{,--from-file} do something when used with --check-part and document that --tags causes the option to be ignored. + [NT] Accept the magic token "{VENDOR}" as a part of the value to --profile. + [NT] Add new command line option "--ignore-lintian-env" to make lintian ignore all environment variables starting with LINTIAN_. + [NT] Add a new command line option --no-display-experimental and --default-display-level. These options can be used to override some display options from the config file. (Closes: #703985) + [NT] Also search for the lintianrc file in XDG_CONFIG_{HOME,DIRS}. The default paths are now ~/.config/lintian/lintianrc and /etc/xdg/lintian/lintianrc. The previous lintianrc paths are still accepted. + [NT] Stop looking for lintianrc files in the LINTIAN_ROOT. + [NT] Stop exporting LINTIAN_LAB to processes run by lintian. + [NT] Use of --root (or setting LINTIAN_ROOT) will now imply the option --no-user-dirs by default. * lib/*: + [NT] Use "parent" instead of the "base" pragma. * lib/Lintian/Collect.pm: + [NT] Add "is_non_free" method to easily check of a given package appears to be non-free. * lib/Lintian/Collect/Binary.pm: + [NT] Re-instate the "TEXTREL" marker. This fixes a regression where shared-libs compiled without pic was not reported. Thanks to Dmitry Shachnev for the assistance in debugging this. + [NT] Recognise packages in section "metapackages" as a metapackage. Thanks to Axel Beckert for the report. (Closes: #698610) * lib/Lintian/Collect/Package.pm: + [NT] Ensure the "root" entry of indices do not contain itself. (Closes: #695866) + [NT] Add warning to unpacked and debfiles when they are given a path with leading slash or dot-slash. + [NT] When a check requests access to a raw file (or dir) in the package, ensure that the resulting path does not "escape" the top level directory. This should preemptively guard against some (but not all) traversal attempts. * lib/Lintian/Path.pm: + [NT] Document that link_resolved is not sufficient to test the "safeness" of a symlink. * lib/Lintian/Command/Simple.pm: + [NT] Use constant time lookup access instead of linear scan with "hashref" wait. * lib/Lintian/Lab.pm: + [NT] Add lab_query method to handle lab-queries directly. + [NT] Fix bitrot of repair_lab and rename it to repair for consistency. * lib/Lintian/Lab{,/Manifest}.pm: + [NT] Add support for grouping of manifests. * lib/Lintian/Lab/Manifest.pm: + [NT] Fix an error in visit_all when sufficient keys for an exact look up was given. * lib/Lintian/Processable.pm: + [NT] Fix issue where packages loaded from the lab indices would sometimes get a wrong source-version. * lib/Lintian/Relation/Version.pm: + [NT] Add and export "versions_comparator" that can be used for sorting purposes. * lib/Lintian/Tag/Info.pm: + [NT] Use "&" in the manpage ref URLs to generate proper HTML. Thanks to Vasudev Kamath for reporting the issue. + [NT] Produce a more helpful error message when a tag has an invalid severity or certainty. (Closes: #703978) * lib/Lintian/Tags.pm: + [NT] Deal with parsing an ambiguous override a bit better. This solves false-positive malformed-override, where Lintian misparsed the tag name as a package name. (Closes: #699628) * lib/Lintian/Util.pm: + [NT] Reject partially signed Deb822 files. Most Deb822 files are not signed at all; but those that are should be completely covered by a signature. (Closes: #696230) + [ADB] Fix a typo in the matching of expected delimiters for some signed messages; thanks Samuel Bronson. + [NT] Add sub to check if a path is contained within a given dir. + [NT] Fix bug in resolve_pkg_path that made it resolve some links incorrectly. + [NT] Document that resolve_pkg_path is not sufficient to test the "safeness" of a symlink. * man/lintian.pod.in: + [NT] Document that --pedantic is the same as "-L +=pedantic". (Closes: #703989) + [NT] Fix typo of the "override" variable in the config example. * private/refresh-locale-codes: + [JW,NT] Ignore the "zxx" locale code, which means "No linguistic content". (Closes: #692548) * reporting/config: + [JP] Remove unused $GRAPH_DIR configuration option. * reporting/graphs/{statistics,tags}.gpi: + [JP] Tweak graph size to allow longer labels, and force font family. * reporting/harness: + [NT] Add --to-stdout option to emit log information to stdout as well as the log files. + [NT] Always schedule packages in groups. Otherwise, binNMU'ed binaries would not be tested together with their source package (and architecture independent packages). + [NT] Schedule groups in chunks (default 512 per chunk). This makes the Lintian processes shorter and makes memory reclaimable sooner. (Closes: #695839) + [NT] Remove "make-shift" lab-query support now that Lintian::Lab supports it. * reporting/html_reports: + [NT] Update xrefs to include source version. + [NT] Generate a text file suitable for Apache's RewriteMap to map source packages to the full report for that source. Thanks to Joerg "Gannef" Jasper for the suggestion to use RewriteMap. (Closes: #696960) + [JP] Fix version labels glitches. + [JP] Use global $GRAPHS_RANGE_DAYS. + [JP] Pass graph variables to index and tag templates. * reporting/lintian.css: + [JP] Tweak graph alignment. * reporting/templates/{packages,maintainer,tag}.tmpl: + [NT] Properly handle multiple versions of the same source and add versioned anchors to them. * reporting/templates/{index,tag}.tmpl: + [JP] Include history graphs in HTML templates. * reporting/templates/tag.tmpl: + [NT] Fix "empty
      " tag when tag has no "extra" information. Thanks to Vasudev Kamath for reporting the issue. -- Niels Thykier Tue, 16 Apr 2013 17:32:09 +0200 lintian (2.5.11) experimental; urgency=low * Summary of tag changes: + Added: - conffile-has-bad-file-type - debug-package-for-multi-arch-same-pkg-not-coinstallable - dm-upload-allowed-is-obsolete - field-name-typo-in-dep5-copyright - font-adobe-copyrighted-fragment - license-problem-json-evil - maintainer-script-has-unexpanded-debhelper-token - shlibs-uses-obsolete-relation - untranslatable-debconf-templates - vcs-field-has-unexpected-spaces - vcs-field-not-canonical + Removed: - apparently-truncated-elf-binary - data.tar.xz-member-without-dpkg-pre-depends - debhelper-overrides-need-versioned-build-depends - no-source-field - preinst-uses-dpkg-maintscript-helper-without-predepends * checks/*: + [NT] Remove assumption that lintian will chdir into the the lab before calling the check. + [NT] Be better at avoiding false-positive spelling errors for references to packages that also happen to be common spelling mistake. Thanks to Paul Tagliamonte for the report. (Closes: #687464) * checks/binaries{,.desc}: + [NT] Merge apparently-truncated-elf-binary into apparently-corrupted-elf-binary. + [NT] Remove some references to objdump in tag descriptions as Lintian uses readelf. + [JW,NT] Update the "extract SONAME" shell snippet to properly handle SONAMEs with uppercase letters. + [JW] Recognise any path with matching the GNU multi-arch triplet as a "Multi-arch: same"-safe directory. Thanks to Matthias Klose for the report. (Closes: #681410) * checks/changelog-file: + [NT] Emit "missing changelog" for packages that are missing their usr/share/doc// dir and do not have a doc symlink. Thanks to Faheem Mitha for the report. (Closes: #683224) * checks/conffiles{,.desc}: + [NT] Remove leading slash on the filename when emitting file-in-etc-rc.d-marked-as-conffile. + [NT] Add check for "non-file" conffiles. Thanks to Guillem Jover for the report. (Closes: #690910) * checks/control-file.desc: + [NT] Bump obsolete-relation-form-in-source to serious as these forms are now "must not" instead of "should not". * checks/copyright.desc: + [NT] Bump debian-copyright-file-uses-obsolete-national-encoding to serious as copyright files must now be UTF-8 encoded. * checks/cruft{,.desc}: + [NT] Detect MS-DOS executables as windows binaries. + [NT] Bump the version of config.{guess,sub} needed for triggering the "outdated-autotools-helper-file" tag for arm64 support. Thanks to Paul Wise for the report and the investigative work. (Closes: #690014) + [RA,NT] Extend the description of the tags {outdated,ancient}- autotools-helper-file to mention that dh-autoreconf might be helpful tool. + [NT] Apply patch from Bastien Roucariès to detect file licensed under the "Good, not Evil"-JSON license. (Closes: #692616) * checks/deb-format{,.desc}: + [NT] Retire data.tar.xz tag. (Closes: #680391) * checks/debhelper{,.desc}: + [JW,NT] Consider missing versioned build-depends on debhelper for compat 8 (or less) a pedantic issue. (Closes: #681894) + [NT] Retire debhelper-overrides-need-versioned-build-depends. * checks/fields{,.desc}: + [NT] Retire no-source-field since Lintian cannot emit it any more due to dpkg-source refusing to extract such source packages. + [NT] Add tag for using the obsolete DMUA field. Thanks to Ansgar Burchardt for the report. (Closes: #688494) + [NT] Apply patches from Bernhard R. Link to check for unintentional whitespace and use of non-canonical URIs in Vcs-* fields. (Closes: #681769) + [NT] Fix false-positive caused by insignificant whitespace. Thanks to Dima Kogan for the report. (Closes: #693589) * checks/files: + [RG] Recognise smarty3 as smarty itself. + [NT] Consider "tasksel tasks" as a meta package. (Closes: #691489) + [NT] Add patch from Bastien Roucariès to check for adobe font license issues. (Closes: #694328) * checks/group-checks{,.desc}: + [NT] Detect debug packages not co-installable with itself, when it provides debug symbols for a Multi-Arch: same package. Thanks to Carsten Hey for the report. (Closes: #678896) * checks/infofiles: + [NT] Use L::Util's gzip decompressor rather than zcat. * checks/init.d{,.desc}: + [NT] Move file-in-etc-rc.d-marked-as-conffile to conffiles check. + [NT] Use L::Collect's conffile API instead of accessing the "conffiles" control file directly. * checks/java.desc: + [NT] Remove the "experimental" marker of the Java byte-code check. * checks/manpages{,.desc}: + [CW,NT] Manually do redirects and chdir rather than invoking a shell when calling man and lexgrog. + [CW,NT] Be stricter with missing roff preprocessors by setting MANROFFSEQ to the empty string when calling man. + [CW,NT] Pass -Tutf8 -Z to man to skip an unused part of the groff pipeline. (Closes: #677874) + [CW,NT] Use the L::Util gzip decompressor to open gzipped manpages. * checks/menu-format{,.desc}: + [NT] Move a table of categories to a data file. + [NT] Update description of menu-icon-missing. Lintian is now sometimes able to find the icon in dependencies (if they are built from the same source). Thanks to Ryan Kavanagh for the report and the suggested patch. (Closes: #683516) * checks/md5sums: + [NT] Use L::Collect's conffile API instead of accessing the "conffiles" control file directly. * checks/po-debconf{,.desc}: + [NT] Check for untranslatable templates that should be translatable. Thanks to David Prévot for the report and the patch. (Closes: #686179) * checks/scripts{,.desc}: + [NT] Retire check for dpkg-maintscript-helper in preinst. (Closes: #685497) + [NT] Fix false positive "executable-not-elf-or-script" when the file is an executable hardlink to a script. + [NT] Check maintainer scripts for unexpanded #DEBHELPER# tokens. Thanks to Cyril "KiBi" Brulebois for the suggestion. + [NT] Fix false-positive for removal of device files as /dev/shm is not a device. Thanks to Steve Langasek for the report and Roger Leigh for the extra info. (Closes: #693442) * checks/shared-libs{,.desc}: + [NT] Clarify the description of dev-pkg-without-shlib-symlink to mention that the dev symlink is always expected in /usr. + [NT] Add missing "+" in libtool regex. Thanks to Leo 'costela' Antunes for the report. + [RA,NT] Check for use of obsolete "<" and ">" in shlibs control files. (Closes: #660655) * checks/source-copyright{,.desc}: + [NT] Check for possible misspellings of known field names. (Closes: #678639) + [NT] Fix typo of paragraph. Thanks to Logan Rosen for spotting it. (Closes: #693013) * checks/version-substvars{,.desc}: + [JW,NT] Extend version-substvar-for-external-package to all relations. Previously it was only triggered for strong dependency relations. (Closes: #658474) * collection/deb-format.desc: + [NT] Remove unneeded changelog-file from "Needs-Info". * collection/objdump-info{,-helper,.desc}: + [NT] Change the output format for the collection and bump the version of the collection accordingly. + [NT] Apply patch from Peter Pentchev to ensure set{u,g}id ELF binaries are properly processed, even when Lintian is run as root. (Closes: #686352) * data/binaries/embedded-libs: + [RG] Check for embedded copies of jsoncpp. * data/fields/archive-sections: + [NT] Add new "tasks" section. * data/menu-format/add-categories: + [NT] New file. * data/output/ftp-master-{,non}fatal: + [NT] Removed, not used at run time. * data/scripts/interpreters: + [NT] Add nodejs and Rscript as a known interpreter. Thanks to Marcelo Jorge Vieira and Sébastien Boisvert for the report. (Closes: #623265, #692232) * data/spelling/corrections: + [NT,RG] Add more corrections. + [RG] Re-sort the corrections. * debian/control: + [NT] Add (Build-)Depends on libtext-levenshtein-perl. + [NT] Use anonscm.d.o in the Vcs-* fields instead of git.d.o. * debian/lintian.install: + [NT] Install Lintian perl modules in /usr/share/perl5. * debian/rules: + [NT] Add target to generate HTML API doc. Currently this is only run manually. * frontend/lintian: + [NT] Remove chdir calls for checks. + [NT] Retire depreciated command line and config options. + [NT] Refactor unpacking into Lintian::Unpacker. + [NT] Make parameter for --jobs optional. In its absence Lintian will not limit the number of parallel jobs. + [JW,NT] During the unpack phase, emit the name of the group currently being unpacked when --verbose is given. (Closes: #677890) + [JW] Fix typo of Parallelization. + [NT] Fix regression where --suppress-tags{,-from-file} was ignored if -C or -X was passed. Thanks to Thorsten Glaser for reporting it. (Closes: #688320) * lib/Lintian/Collect{,/Source}.pm: + [NT] Add optional parameter to field (and X_field) methods that denotes the default value if a field is missing. This avoid some boiler plate for callers of the methods. * lib/Lintian/Collect/Binary.pm: + [NT] Bump API for objdump method. + [NT] Add API for checking if a file is considered a conffile. * lib/Lintian/Collect/Package.pm: + [NT] Strip leading slash off files extracted from tar. * lib/Lintian/Command.pm: + [NT] Work around a leak in IPC::Run (see #301774). * lib/Lintian/Internal/FrontendUtil.pm: + [NT] Always use Dpkg::Vendor to determine the default vendor. Previously dpkg-vendor would be preferred if available. * lib/Lintian/Lab/Entry.pm: + [NT] Use the L::Collect during creation instead of manually reading the dsc for source packages. * lib/Lintian/Profile.pm: + [NT] Add support for the new optional "Load-Checks" field in profiles. + [NT] Ensure that the "lintian" check is always loaded as these tags are not emitted by check modules. Also enable the tags from the check by default. * lib/Lintian/Tags.pm: + [NT] Be explicit about the reason when rejecting an override. Thanks to Yves-Alexis Perez for the report. (Closes: #673073) * lib/Lintian/Unpacker.pm: + [NT] New file. * man/lintian.pod.in: + [NT] Remove documentation about removed options. * reporting/graphs/{statistics,tags}.gpi: + [JP] New file. * reporting/html_reports: + [JP,NT] Generate graphs of the collected history data. (Closes: #672273) + [NT] Make the mirror name configurable. * vendors/ubuntu/main/data/changes-file/known-dists: + [NT] Add "raring" as known Ubuntu distribution. Thanks to Dmitry Shachnev. (LP: #1068208) -- Niels Thykier Tue, 11 Dec 2012 22:12:06 +0100 lintian (2.5.10.2) unstable; urgency=low * checks/po-debconf: + [NT] Fix dirhandle leak. * checks/source-copyright{,.desc}: + [NT] Report the correct line number for the use of commas in the "Files" field in DEP-5 copyright files. Thanks to Faheem Mitha for the report. (Closes: #683946) + [NT] Mention that syntax-error-in-dep5-copyright may hide other issues as Lintian skips some DEP-5 checks in this case. Thanks to Faheem Mitha for the report. * frontend/lintian: + [NT] Fix typo of identifier method, which causes Lintian to crash in case a "coll" cannot be started or it fails. * lib/Lintian/Profile.pm: + [NT] Use "closedir" rather than "close" to close a dir handle. -- Niels Thykier Mon, 17 Sep 2012 11:56:18 +0200 lintian (2.5.10.1) unstable; urgency=low * checks/fields.desc: + [NT] Mention that cme can automate fixing some perl related tags. Thanks to gregor herrmann for the report and patch. (Closes: #680446) * checks/manpages: + [NT] Ignore wrapping issues on lines containing "file://" as those are probably also URLs. Thanks to Faheem Mitha for the report. (Closes: #682701) * data/binaries/embedded-libs: + [NT] Update source-regex for libmysqlclient. Thanks to Nicholas Bamber for the report. (Closes: #682022) * data/doc-base/sections: + [NT] Update section list. (Closes: #678650) * data/spelling/corrections: + [NT] Add new corrections. Thanks to Justin B Rye. (Closes: #681527) * debian/changelog: + [NT] Fix some typos in earlier entries. * frontend/lintian: + [NT] Fix synopsis for --no-cfg option in the help output. * lib/Lintian/Architecture.pm: + [NT] Properly handle cases like "linux-amd64" being an alias of "amd64". * lib/Lintian/Path.pm: + [NT] Always resolve hardlinks relative to the package root. * lib/Lintian/Relation.pm: + [NT] Fix handling of VISIT_OR_CLAUSE_FULL bit mask in a condition. * lib/Lintian/Tag/Info.pm: + [NT] Fix poor error message due to the wrong variable being unused. Thanks to Christoph Biedl for the report (Closes: #682941) -- Niels Thykier Fri, 27 Jul 2012 16:32:26 +0200 lintian (2.5.10) unstable; urgency=low * Summary of tag changes: + Added: - incompatible-java-bytecode-format - unknown-java-class-version * checks/changes-file.desc: + [NT] Fix typo in tag description. Thanks to Luca Falavigna for spotting it. * checks/files: + [NT] Use new gzip decompressor from L::Util. * checks/java{,.desc}: + [NT] Catch unknown Java class versions. + [NT] Catch uses of Java7 byte code as an experimental check. It lacks the proper checks for cases where packages have the proper dependencies for Java7 byte code. (Closes: #673276) * collection/*: + [NT] Add missing load of the FileHandle module. * collection/java-info{,.desc}: + [NT] Use Archive::Zip instead of zipinfo + unzip to extract information from Jar files. + [NT] Limit java-info to files classified as "Zip Archive" by file(1). * collection/objdump-info: + [NT] Only call readelf once per binary. + [NT] Use xargs + a new helper to reduce the number of readelf calls even further. * collection/objdump-info-helper: + [NT] New file. * collection/strings: + [NT] Optimize for the "common case" file names with a fall-back to previous behaviour with special file names. * collection/strings-helper: + [NT] New file. * debian/control: + [NT] Add (Build-)Dependency on libarchive-zip-perl. + [NT] Remove runtime dependency on unzip (replaced by libarchive-zip-perl). + [NT] Add explicit Build-Dependency on xz-utils instead of relying on dpkg-dev's dependency on it. + [NT] Add versioned xz-utils as alternative to xz-lzma or lzma. (Closes: #678775) + [NT] Add missing suggests for lzma packages. lzma is only used for source packages compressed with lzma. + [NT] Add suggests on libperlio-gzip-perl. * frontend/lintian: + [NT] Check if some collections can be skipped for existing entries. This is mostly useful for static labs, where certain checks can be now be rerun without having to run "unpacked". + [NT] Emit run times of collections and checks with debug level 2 (or higher). + [NT] Load lintian's libraries earlier. + [NT] Add new option "--jobs" to control the number of unpacking jobs Lintian will schedule in parallel. + [NT] Improve Lintian's job scheduler to schedule unpacking jobs on a group level rather than just a package level. * lib/Lintian/Collect/{Binary,Package}.pm: + [NT] Use new gzip decompressor from L::Util. * lib/Lintian/CollScript.pm: + [NT] New file. * lib/Lintian/Util.pm: + [NT] Add gzip decompressor preferring libperlio-perl if available, but with fallback to a "fork+exec" of gzip. + [NT] Load Digest::SHA immediately like Digest::MD5. -- Niels Thykier Sat, 30 Jun 2012 17:21:27 +0200 lintian (2.5.9) unstable; urgency=low * Summary of tag changes: + Added: - run-parts-cron-filename-contains-illegal-chars + Removed: - run-parts-cron-filename-contains-full-stop * checks/*: + [NT] Migrate to new Lintian::Path API. * checks/fields: + [NT] Also classify lib*-cli-dev as belonging to the section cli-mono (rather than libdevel). Thanks to Chow Loong Jin for the report and the patch. (Closes: #675358) * checks/files{,.desc}: + [NT] Rename run-parts-cron-filename-contains-full-stop and have it catch "+" in the filename as well. Add reference to policy 9.5.1 in the tag description. * checks/init.d: + [NT] Use the proper regex for matching package names rather than an ad-hoc regex. Thanks to Thorsten Alteholz for the report and suggested patch. (Closes: #677142) * checks/shared-libs: + [NT] Reverse order of two subst expressions to prevent dev-pkg-without-shlib-symlink false positives. Thanks to Aurelien Jarno, Yves-Alexis Perez and Stephen M. Webb for the reports and the patch. (Closes: #675826, #677310, #675832) + [NT] Clarify that dev-pkg-without-shlib-symlink is emitted on library and not "-dev" packages. * collection/hardening-info: + [NT] Process binaries with hardening-check via xargs. This greatly reduces the processing time for packages with many binaries (like some of the linux binaries). Thanks to Bastian Blank for the heads up. + [NT] Skip kernel modules (.ko files). * collection/hardening-info-helper: + [NT] New file. * data/*: + [NT] Refresh with tools/data from sid. * data/scripts/interpreters: + [NT] Replace ngp2 with ngraph. Thanks to Koichi Akabe for the report. (Closes: #675139) * data/spelling/corrections: + [NT] Add corrections for usage, invocation(s) and ancient. * debian/changelog: + [NT] raster-image-in-scalable-directory was added in 2.5.7, not removed. * frontend/lintian{,-info}: + [NT] Remove assumption that $ENV{HOME} is set/defined. If $ENV{HOME} is not sent, user specific profiles will simply be ignored. * frontend/lintian: + [NT] Attempt to automatically determine what to process, if no packages are given and debian/changelog exists. Thanks to Gilles Filippini for the suggestion. (Closes: #676799) * lib/Lintian/Collect/Package.pm: + [NT] sorted_index now returns a list rather than a list ref. + [NT] Represent files (from index) as Lintian::Path objects. * lib/Lintian/Collect/Source.pm: + [NT] Recognise "Package-Type" as an alternative of the "X-" field of same name. Thanks to Christian Perrier for the report. (Closes: #677649) * lib/Lintian/Data.pm: + [NT] Gracefully handle the absence of $ENV{HOME}. * lib/Lintian/Path.pm: + [NT] New file. * lib/Lintian/Util.pm: + [NT] Add regex to match valid package names. -- Niels Thykier Fri, 15 Jun 2012 21:29:03 +0200 lintian (2.5.8) unstable; urgency=low Its like 2.5.7, only with less false positives and no FTBFS. * checks/binaries{,.desc}: + [NT] Fix a too strict regex causing false-positives for biarch packages. This was a regression introduced in version 2.5.7. Thanks to Sven Joachim for reporting it. (Closes: #673106) + [NT] Demote certainty of hardening-no-stackprotector to wild-guess and move it to debian/extra-hardening profile. + [NT] Skip hardening-no-fortify-functions for binaries only using the unprotected memcpy. This greatly reduces the number of false positives for binaries compiled with gcc-4.7 -O2 (or higher optimization). (Closes: #673112) * checks/files: + [NT] Properly handle symlinks in icon directories. Thanks to Nicholas Breen for the report and Felix Geyer for the patches. (Closes: #673352) + [NT] Ignore wrong sizes on images in animations as it may be a method to implement the animation. Thanks to Matthias Klumpp for the report and Felix Geyer for the patch. (Closes: #673862) + [NT] Ignore wrong icon sizes if the size difference is at most 2px. Thanks to Felix Geyer for the patch. * checks/scripts: + [NT] Refactor the %versioned_interpreters into a new data file. * checks/shared-libs: + [NT] Fix false positive "dev-pkg-without-shlib-symlink" for shared libraries using "libtool -release X.Y". Thanks to Sven Joachim for the report. (Closes: #673109) + [NT] Fix false positive "dev-pkg-without-shlib-symlink" for shared libraries installed in /lib. Lintian now correctly expects the dev-symlink beneath /usr/lib. Thanks to Guillem Jover for the report. * checks/source-copyright: + [NT] Use the in-memory contents of the copyright file instead of re-reading the file when parsing it as a DEP-5 copyright file. * collection/objdump-info{,.desc}: + [NT] Drop -D flag for readelf when looking for symbols. This makes some checks more reliable in Ubuntu. Thanks to Marc Deslauriers for the report and the patch. (Closes: #673451) * debian/control: + [NT] Add versioned Build-Depends on dpkg-dev (>= 1.16.1~) as the test suite relies on it. Thanks to Luca Falavigna for reporting it. + [NT] Update the description to mention that the version of Lintian is calibrated for version 3.9.3 of the Policy. * debian/lintian.install: + [NT] Remove usr/share/lintian/data - Lintian does not need it and dpkg will not replace the dir with a symlink. * data/scripts/interpreters: + [NT] Add falcon, gbr3, jython and ngp2 as known interpreters. (Closes: #669911, #671387, #662134, #667895) * data/scripts/versioned-interpreters: + [NT] New file. + [NT] Added python2.7 to the list of known Python 2 interpreters. * data/spelling/corrections: + [RA] Remove corrections for "writeable" and "overwriteable". These spellings are permitted by the OED in UK English. (Closes: #673611) + [NT] Add correction for "pointer". * lib/Lintian/Collect/*.pm: + [NT] Localize "$_" to avoid truncating caller's variable. (Closes: #673613) * t: + [NT] Generate empty ".so" files used in the test. This resolves an issue where dpkg-source would exclude them causing a FTBFS. (Closes: #673198) + [NT] Fix test failure in derivatives where some hardening flags are enabled by default. Thanks to Marc Deslauriers for the report and the patch. (Closes: #673449) -- Niels Thykier Tue, 29 May 2012 11:49:47 +0200 lintian (2.5.7) unstable; urgency=low * Summary of tag changes: + Added: - apache2-configuration-files-need-conf-suffix - apache2-deprecated-auth-config - apache2-module-depends-on-real-apache2-package - apache2-module-does-not-depend-on-apache2-api - apache2-module-does-not-ship-load-file - apache2-reverse-dependency-calls-invoke-rc.d - apache2-reverse-dependency-calls-wrapper-script - apache2-reverse-dependency-ships-file-in-not-allowed-directory - apache2-reverse-dependency-uses-obsolete-directory - apache2-unparseable-dependency - apache2-unsupported-dependency - diff-contains-quilt-control-dir - hardening-no-fortify-functions - hardening-no-relro - hardening-no-stackprotector - non-standard-apache2-configuration-name - non-standard-apache2-module-package-name - raster-image-in-scalable-directory - rc-version-greater-than-expected-version - udeb-uses-unsupported-compression-for-data-tarball - web-application-depends-on-apache2-data-package - web-application-should-not-depend-unconditionally-on-apache2 + Removed: - ancient-dpkg-long-filenames-check - ancient-dpkg-predepends-check - bad-ubuntu-distribution-in-changes-file - binary-nmu-uses-old-version-style - debian-control-with-duplicate-fields - doc-base-file-references-usr-doc - duplicate-fields-in-templates - manpage-for-non-x11-binary-in-wrong-directory - manpage-for-x11-binary-in-wrong-directory - missing-dependency-on-install-info - obsolete-field - old-app-defaults-directory - old-style-copyright-file - old-style-example-dir - package-installs-file-to-usr-x11r6-bin - package-installs-font-to-usr-x11r6 - package-uses-obsolete-file - postinst-should-not-set-usr-doc-link - udeb-uses-non-gzip-data-tarball - x11-games-should-be-in-usr-games * checks/*: + [NT] Remove some old tags that are no longer useful. (Closes: #663516) + [NT] Migrate to sorted_index from sorted_file_info. + [NT] Explicitly import needed subs from L::Util. * checks/apache2{,.desc}: + [NT] New files to check for apache2 related packages. Thanks to Arno Töll and Stefan Fritsch for the patches. (Closes: #668546) + [NT] This check is not enabled by default. It can be used via the debian/extra-apache2 profile. * checks/binaries{,.desc}: + [NT] Move embedded library data to a data file. + [NT] Add ELF hardening checks. Thanks to Kees Cook for report and the patches. (Closes: 650536) + [NT] Replace architecture tables with data files. + [JW] Check for missing Python3 numpy ABI dependency. (Closes: #671024) * checks/changelog-file: + [NT] Output the correct line number for the "line-too-long" tag. Thanks to Arno Töll for the report. (Closes: #657402) * checks/changes-file{,.desc}: + [NT] Remove Ubuntu specific handling of distribution names. Instead replace it with a more generalized one that derivatives can reuse by extending vendor specific data files. Thanks to Daniel Dehennin for the suggestion. (Closes: #648777) * checks/control-file: + [NT] Rewrote parts to use Lintian::Collect for fetching data. * checks/cruft{,.desc}: + [NT] Check for quilt control dirs in the debian packaging files. * checks/deb-format{,.desc}: + [NT] Replace old udeb compression tag with a more general one. (Closes: #664600) + [NT] Remove logic for checking if a deb is meant for Ubuntu. Instead unconditionally emit the tag and let the vendor profiles handle it. * checks/debconf: + [NT] Special case debconf providers for purge-debconf tag. Generally they cannot use db_purge in postrm (for obvious reasons), so the tag will be a false-positive in such cases. * checks/fields{,.desc}: + [NT] Add devref reference. + [NT] Remove special handling of the Ubuntu specific field, "original-maintainer". This field is now handled by vendor specific data files. (Closes: #649852) + [JW,NT] Check for common mistakes with preview release and release candidate versions. For non-native packages, this check is only done on initial uploads of new upstream releases. Thanks to Stefano Rivera and Julian Taylor for their additional suggestions. (Closes: #649277) * checks/filename-length.desc: + [ADB, NT] Reword description of package-has-long-file-name. Thanks to Andreas Beckmann for suggestion. * checks/files{,.desc}: + [NT] Remove "manual" lazy loads of data files. + [NT] Remove code for the uses-FHS-doc-dir tag. + [NT] Extend icon checks to all icon directories and look for raster images in "scalable" icon directories. Thanks to Paul Wise for the report and Felix Geyer for the patches. (Closes: #628189) * checks/group-checks: + [NT] Include Provides when checking for conflict relations. Thanks to Damyan Ivanov for the report. (Closes: #672615) * checks/java: + [NT] Ignore "codeless" jars if they appear to be maven javadoc jars. Thanks to Ludovic Claude for the patch. (Closes: #660845) * checks/lintian.desc: + [NT] Updated the description of the override tags. * checks/manpages{,.desc}: + [RA] Detect hyphen used as minus sign following a groff \f[C] font change. Thanks, Iustin Pop. (Closes: #664471) * checks/menu-format: + [NT] Move menu section lists into a data file. + [NT] If a package is missing a menu icon, check its direct strong dependencies built from the same source (if any) for the icon. This fixes false-positives menu-icon-missing in some cases. * checks/menus{,.desc}: + [NT] Remove "manual" lazy load of data file. * checks/nmu: + [NT] Remove Ubuntu specific code to handle their (lack of) NMUs. These tags are instead suppressed by the Ubuntu profile. * chekcs/rules: + [NT] Fix false-positive "ignores-make-clean-error" tag caused by using make with -C and a dir containing the letter "i". Thanks to Tobias Hansen for the report. (Closes: #671537) * checks/scripts{,.desc}: + [NT] Mention devref 6.4 in command-with-path-in-maintainer-script. Thanks to Arno Töll for the patch. + [NT] Do not emit unusual-interpreter if the package provides the interpreter itself. + [NT] Ignore the lack of exec bit on the debconf shell modules. * checks/standards-version.desc: + [NT] Add references to the Policy upgrading checklist. Thanks to Simon Paillard for the patch. * collection/*: + [NT] Use Lintian::Collect to access the package index. * collection/bin-pkg-control{,.desc}: + [NT] Compress control-index file and bump version of bin-pkg-control. * collection/copyright-file: + [NT] Remove code to look for old-style copyright file. * collection/file-info{,.desc}: + [NT] Compress file-info output and bump version of file-info. * collection/hardening-info{,.desc}: + [NT] New files. Thanks to Kees Cook for the patch. * collection/index{,.desc}: + [NT] Compress index output and bump version of index. * collection/java-info{,.desc}: + [NT] Compress java-info output and bump version of java-info. * collection/objdump-info: + [NT] Use "fail" from Lintian::Util.pm rather than embedding a copy of it. + [NT] Use Lintian::Collect to find ELF files. + [NT] Replace all usage of objdump with readelf. (Closes: #614034) + [NT] Compress objdump-info output and bump version of objdump-info. * collection/strings{,.desc}: + [NT] Compress strings output and bump version of strings. * data: + [NT] Move to vendors/debian/ftp-master-auto-reject and replace it with a symlink. * data/binaries/{arch-{64bit-equivs,regex},hardening-tags}: + [NT] New file. * data/binaries/embedded-libs: + [NT] New file. + [NT] Add libav libraries. Thanks to Andres Mejia for the suggestion and the suggested patch. (Closes: #666765) * data/changes-file/{debian-dists -> known-dists}: + [NT] Renamed file. * data/menu-format/menu-sections: + [NT] New file. * debian/changelog: + [NT] Amend the 2.5.5 to mention that it also added the tag binaries-have-file-conflict. * frontend/lintian: + [JW] Fix typo in error message. + [JW,NT] Fix handling of "override" option in the lintianrc file. (Closes: #666207) * lib/Lintian/Architecture.pm: + [NT] Lazily evaluate the data file. * lib/Lintian/Collect/Package.pm: + [NT] Remove an extra level of quoting in index. + [NT] Remove root dir from sorted_index. + [NT] Keep trailing slash in dir names for file_info. * lib/Lintian/Collect/Binary.pm: + [NT] Remove sorted_file_info as sorted_index now produces an identical list. * lib/Lintian/Data.pm: + [NT] Lazily load data files. + [NT] Allow pre-process sub to alter existing value for a key by passing the previous value as third argument. + [NT] Allow vendor specific data files. They will be loaded from LINTIAN_ROOT/vendors/$profile/data. * lib/Lintian/Output{,/*}.pm: + [NT] Replace non-printables with "?" in output. * lib/Lintian/Profile.pm: + [NT] Normalize profile name and replace "parents" with "profile_list". The latter also includes the current profile name. * lib/Lintian/Tag/Info.pm: + [NT] Use Lintian::Data to load the manual-references data file instead using an ad-hoc parser. * lib/{Text_utils => Lintian/Tag/TextUtil}.pm: + [NT] Renamed module. * lib/{Util => Lintian/Util}.pm: + [NT] Renamed Util to Lintian::Util. + [JW] Consider duplicate fields a syntax error in dctrl files. Previously, duplicate fields were silently ignored (except when a separate tag would check for it). (Closes: #664061) + [NT] Stop exported a majority of all subs by default. * profiles/ubuntu/main.profile: + [NT] Add a number of NMU related tags to the list of disabled tags. * vendors/ubuntu/main/data/changes-file/known-dists: + [NT] New file based on data/changes-file/ubuntu-dists. + [ADB] Add "quantal" (Quetzal) * vendors/ubuntu/main/data/common/source-fields: + [NT] New file. * vendors/ubuntu/main/data/fields/{binary,udeb}-fields: + [NT] New files. -- Niels Thykier Mon, 14 May 2012 23:45:08 +0200 lintian (2.5.6) unstable; urgency=low * checks/*: + [NT] Simplified some bit operations done on file permissions. * checks/binaries: + [NT] Fix false-negative missing-dependency-on-phpapi when the binary included a "SOVERSION" in its name. Thanks to Ondřej Surý for the report. (Closes: #662936) * checks/changelog-file: + [NT] Do not emit "no-upstream-changelog" for transitional packages. Thanks to Paul Wise for the report. (Closes: #660076) * checks/cruft: + [NT] Added missing "unless" in the code. Fixes false positive "source-contains-waf-binary". Thanks to Dmitrijs Ledkovs for the report. (Closes: #661561) * checks/debhelper: + [NT] Fix FP executable-debhelper-file-without-being-executable emitted for directories. Thanks to Felix Geyer for the report and the patch. (Closes: #663447) * checks/files.desc: + [NT] Fix a typo in a tag description. Thanks to Ludovic Rousseau for spotting it. (Closes: #663759) * checks/scripts: + [NT] Allow fontforge-nox as (alternative) provider for the fontforge interpreter. Thanks to Martin Erik Werner for the report. (Closes: #661363) + [NT] Move %interpreters map to a separate data file. * checks/source-copyright.desc: + [NT] Update references for copyright-format checks. Thanks to Thijs Kinkhorst for the report and the patch. (Closes: #661778) + [NT] Added trailing slash to copyright-format URLs in tag descriptions for consistency with the policy. * collection/*: + [NT] Removed assumption that "cwd" is the same as the directory for the package being examined. * collection/java-info: + [NT] Added missing "use Util". * collection/scripts: + [NT] Use "fail" from Util.pm rather than using an embedded copy. * collection/strings: + [NT] Use Lintian::Collect to find ELF files. * data/scripts/interpreters: + [NT] New file. * frontend/lintian: + [NT] Pass directory of the package to the collections. * lib/Lintian/Check.pm: + [NT] Fixed false positive "*-address-malformed" if the local part of the email was "0". Thanks to Christopher Vollick for the report. (Closes: #663659) * lib/Lintian/Tag/Info.pm: + [NT] Fixed issue where "Experimental: no" was handled as a "yes" when generating a tag description. * lib/Util.pm: + [NT] If no locale can be found, just set LC_ALL to en_US.UTF-8. This fixes an issue with Lintian in backports when only locales-all is installed. Thanks to Peter Palfrader for the report. (Closes: #663459) * private/runtests: + [NT] Support using en_US.UTF-8 from locales-all, when that is available. This allows locales-all to be used as a substitute for locales when compiling Lintian on Squeeze. * reporting/harness: + [NT] Corrected inverted logic when checking for dry-run. -- Niels Thykier Wed, 14 Mar 2012 15:00:25 +0100 lintian (2.5.5) unstable; urgency=low The "Policy 3.9.3" release. * Summary of tag changes: + Added: - arch-dependent-file-not-in-arch-specific-directory - binaries-have-file-conflict - control-file-contains-dh_make-vcs-comment - debhelper-compat-file-is-missing - dependency-is-not-multi-archified - dh-exec-install-not-allowed-here - dh-exec-private-helper - dh-exec-script-without-dh-exec-features - dh-exec-subst-unknown-variable - executable-debhelper-file-without-being-executable - missing-dependency-on-numpy-abi - package-file-is-executable - package-uses-dh-exec-but-lacks-build-depends - preinst-uses-dpkg-maintscript-helper-without-predepends - shlib-in-multi-arch-foreign-package - source-contains-waf-binary - syntax-error-in-control-file - syntax-error-in-debconf-template + Removed: - dh_dhelp-is-deprecated - maintainer-not-full-name - maintainer-script-calls-deprecated-wm-menu-config - maintainer-script-does-not-check-for-existence-of-wm-menu-config - uploader-address-missing - uploader-not-full-name * checks/*: + [NT] Fixed assumptions about certain fields being present. Where needed, Lintian will make guesses to the most likely value (or the least "broken" value). * checks/binaries{,.desc}: + [NT] Allow libnss_* plugins in usr/lib. + [JW] Check for ELF binaries installed in unsafe paths in Multi-Arch: same packages. (Closes: #650445) + [JW] Added check numpy ABI dependency. (Closes: #658311) + [NT] Fixed embedded-library false-positive for tiff3. Thanks to Jay Berkenbilt for the report. (Closes: #660675) * checks/control-file{,.desc}: + [NT] Allow "pkg (= ${source:Version})" versioned dependency if pkg is architecture all. This fixes a false-positive "weak-library-dev-dependency" for some mono packages. Thanks to David Bremner for the report. (Closes: #652602) + [NT] Emit a tag if there is a syntax error in d/control rather than just aborting the rest of the check. + [NT] Accepted patch from Gergely Nagy to catch dh-make vcs templates in comments. Thanks to Paul Wise for suggesting this check. (Closes: #657110) * checks/copyright.desc: + [RA] Rephrase copyright-with-old-dh-make-debian-copyright long description to be clearer about the legal status of copyright notices. (Closes: #659574) + [RA,NT] Make copyright-with-old-dh-make-debian-copyright a pedantic tag. * checks/cruft{,.desc}: + [NT] Added dh-autoreconf as a build-depends alternative to libtool for suppressing ancient-libtool warning. Thanks to Felix Geyer for the report. (Closes: #650325) + [NT] Accepted patch from Paul Wise to detect COFF object files as Win32 binaries. + [NT] Properly handle unpacked being a symlink. + [NT] Accepted patch from Luca Falavigna to detect waf files with a binary payload. (Closes: #654523) * checks/debconf: + [RA] Recognize Perl uses of debconf templates via metaget or settitle. * checks/debhelper{,.desc}: + [NT] Do not check executable debhelper files for brace expansion if compat is 9 (or greater). It may be allowed by tool interpreting the file. + [NT] Added checks for handling executable files in the debian dir. Thanks to Joey Hess and Arno Töll for the reports. (Closes: #651572, #651330) + [NT] Added various dh-exec related checks. Thanks to Gergely Nagy for the patches. (Closes: #653071) + [NT] Removed tag for using dh_dhelp. It is not shipped in debhelper anymore (not even Squeeze) and the tag is not emitted anymore (according to lintian.d.o). + [NT] Added check for missing compat file. (Closes: #656885) * checks/fields{,.desc}: + [JW] Properly handle uploader names with commas. (Closes: #485705) + [NT] Removed uploader-address-missing tag. + [NT] Added section-mapping for (some) zope packages. This fixes some false-positives where python-zope packages were wrongly identified as belong to the python section. + [NT] Fixed an issue where "doc-pkg-depends-on-main-pkg" would only be triggered if it was a "pre-depends" relation. + [NT] Use new Lintian::Architecture API. + [JW] Include ssh:// as a valid protocol for hg. (Closes: #655907) + [NT] Ignore self relations in Replaces and Provides. This is allowed according to Policy §7.6.2. (Closes: #657034) + [NT] Applied patch from intrigeri to remove "not-full-name" tags. (Closes: #658031) * checks/files: + [JW,NT] Skip "Multi-Arch: same" check of gzip files if their install path contains the architecture. (Closes: #650665) + [JW] Fixed a false-negative "empty-binary-package" if the package contained the /u/s/doc/$pkg symlink. (Closes: #650959) + [NT] Allow fonts in packages starting with "fonts-". This completes the fix for #646838. Thanks to أحمد المحمودي for the follow up report. (Closes: #651045) + [NT] Re-added swfobject.js to the list of known javascript libraries. Thanks to Paul Wise for noticing it had been uploaded. * checks/group-check{,.desc}: + [NT] Check for file conflicts in binaries built from the same source package. (Closes: #293838) + [JW] Added check for incomplete Multi-arch'ification. (Closes: #650838) * checks/menus{,.desc}: + [NT] Remove obsolete checks for wm-menu/wm-menu-config use in maintainer scripts. The executables are not shipped in menu in Squeeze nor sid. Furthermore the tags are not emitted in any package (according to lintian.d.o). * checks/nmu: + [JW] Properly handle uploader names with commas. * checks/po-debconf: + [NT] Remove special handling for packages using yada. * checks/rules: + [NT] Remove check for missing build-depends on yada. * checks/scripts: + [NT] Accepted patch from Evan Broder to check for missing versioned pre-depends on dpkg when using maintscript helper. This dependency is trivially satisfied in Debian, but may complicate Ubuntu LTS upgrades. (Closes: #602249) + [NT] Accepted patch from James McCoy to recognize "racket" as a known interpreter. (Closes: #652594) + [NT] Accepted patch from Martin Erik Werner to recognize "fontforge" as a known interpreter. (Closes: #652736) * checks/shared-libs{,.desc}: + [JW] Check for Multi-Arch foreign packages shipping shared libraries in public library directories. (Closes: #650444) + [NT] Use the new hwcap-dirs data file to determine hwcap dirs. + [NT] Ignore missing symbols/shlibs files for libc libnss plugins. * checks/source-copyright{,.desc}: + [JW] Allow a trailing slash in the DEP-5 1.0 URL. (Closes: #649813) + [NT] Use line numbers rather than "0-indexed" paragraph numbers in the emitted tags. Thanks to Jari Aalto for the suggestion. + [NT] Recommend the URI to the copyright-format subpolicy as DEP-5 format specification URI. Thanks to Helmut Grohne for the report. (Closes: #651392) * checks/symlinks: + [NT] Ignore langpack symlinks if they appear to be consistent. Thanks to Evan Broder for the report. (Closes: #650793) * collection/ar-info: + [NT] Properly handle unpacked being a symlink. * collection/index: + [NT] Use Lintian::Processable::Package to determine source name and version. * collection/file-info{,-helper}: + [NT] Do not open non-files when double-checking gzip files. + [NT] Pass "-N" to file as Lintian does not need the aligned output. * collection/md5sums: + [NT] Properly handle unpacked being a symlink. * collection/source-control-file{,.desc}: + [NT] Removed as they are no longer needed. They have been replaced by a smarter Lintian::Collect. * collcetion/unpacked: + [NT] Pass --no-check to dpkg-source when requested not to check signatures (via reporting/harness). * data/{fields => common}/architectures: + [NT] Moved architectures to data/common. * data/debhelper/dh_addons-manual: + [JW] Add python3-sphinx as provider of sphinxdoc dh sequence. * data/debhelper/dh_commands-manual: + [JW] Add python3-sphinx as provider of dh_sphinxdoc. (Closes: #649640) + [NT] Added libxine-dev | libxine2-dev as provider of dh_xine. (Closes: #659285) * data/fields/archive-sections: + [NT] Added new sections. Thanks to Michael Biebl for the reminder. (Closes: #652123) * data/fields/virtual-packages: + [NT] Refreshed against sid. (Closes: #657155) * data/files/fonts: + [NT] Refreshed against sid. * data/init.d/virtual_facilities: + [NT] Refreshed against sid. * data/output/ftp-master-{,non}fatal: + [NT] Refreshed. * data/output/manual-references: + [NT] Refreshed. * data/shared-libs/hwcap-dirs: + [JW] New data file for listing known hwcap dirs. * data/shared-libs/ldconfig-dirs: + [NT] Auto-generate file with help from dpkg-architecture. (Closes: #653832) * data/spelling/corrections: + [NT] Added corrections for deprecate(d) and pedantic. * data/standards-version/release-dates: + [NT] Added release date for Standards-Version 3.9.3. * debian/control: + [NT] Prefer libc-bin (>= 2.13) to locales. Thanks to Josh Triplett for the suggestion, investigative work and the proposed patch to make this possible. (Closes: #636086) + [JW] Add Build-Dependency on python-numpy and python-all-dev for the test suite. + [NT] Bumped Lintian's Standards-Version to 3.9.3. No changes required. * debian/{postinst,prerm}: + [JW,NT] Remove the internal Lintian locale if a C.UTF-8 locale is found in /usr/lib/locale. * debian/source/lintian-overrides: + [NT] Added override for python-dev tag. We need python-all-dev for the test suite. * debian/triggers: + [JW] Added trigger for libc-bin C.UTF-8 locale. This ensures the internal Lintian locale can removed if libc-bin is upgraded after Lintian. * doc/lintian.xml: + [NT] Corrected the runtime estimate for an archive-wide run. With 35 000+ packages, it can no longer be done in "a few hours". + [NT] Documented architecture specific overrides. (Closes: #651816) * doc/lintianrc.example: + [NT] Removed deprecated variables and added sample TMPDIR usage. * frontend/lintian: + [NT] Allow -U to be given more than once. + [JW,NT] If using a temporary lab, print its location when using --verbose option. (Closes: #650433) + [NT] Fixed an issue where auto-clean would not see the real status of some collections. + [NT] Keep auto-cleaned collections until all processables in the group has been checked. + [NT] Attempt guess the version number when running in an git checkout or unpacked source dir. Based on patch from Evan Broder. (Closes: #650701) + [NT] Added support for the virtual "GROUP" type in Lab Queries. This will make Lintian select all packages related to a given source (and version). + [NT] Removed check loading code. This has been moved into Lintian::Profile. + [NT] Always load a profile. + [NT] Allow TMPDIR in the configuration file. + [NT] Treat "pedantic" as a normal severity. In previous release, pedantic tags were not affected by --display-level. A side-effect of this is that "pedantic" can no longer be used with "display-level" in the configuration file. + [NT] Produce a better error message when asked to process an URL or a path that is definitely not a valid lab query. Thanks to Nicholas Bamber for the report. (Closes: #651332) * frontend/lintian-info: + [NT] Support new lintian.log format. + [NT] Support new override file format with -a. + [NT] Fixed the --profile argument, which now accepts the mandatory parameter it is supposed to. * lib/Checker.pm: + [NT] Removed, merged into frontend/lintian. * lib/Lintian/Architecture.pm: + [NT] New file. * lib/Lintian/Check.pm: + [NT] Do not check for missing uploader address as it cannot be done reliably anymore. + [NT] Applied patch from intrigeri to remove the "not-full-name" tags. + [NT] Only emit a spelling tag once for each spelling error in each field/file/text. * lib/Lintian/CheckScript.pm: + [NT] New file. * lib/Lintian/Collect/{Binary,Source}.pm: + [NT] Assume packages to be non-native when it cannot be accurately determined due to missing version field. * lib/Lintian/Collect/Binary.pm: + [NT] Fixed an error in parsing symbol names when using readelf as replacement for objdump. * lib/Lintian/Collect/Group.pm: + [NT] Made direct_dependencies properly handle udebs. This fixes an error that would cause lintian to skip some checks for udebs. * lib/Lintian/Collect/Package.pm: + [NT] Map an owner/group of "0/0" to "root/root". This avoids a number of false-positive ownership tags if only numerical ownership is available in the tarball. Thanks to Thorsten Glaser for the report. (Closes: #638278) * lib/Lintian/Collect/Source.pm: + [NT] Removed assumption that source packages always have a format field. * lib/Lintian/Lab.pm: + [NT] Added "is_temp" method to identify temp labs from static labs. + [NT] Corrected issue where the lab would record binaries as being from "main", even if their "section" field implied otherwise. * lib/Lintian/Lab/Entry.pm: + [NT] Properly strip whitespace when loading collection status. * lib/Lintian/Processable/Package.pm: + [NT] Use part of the file name as package name if the mandatory "Package" or "Source" fields are missing rather than choking. * lib/Lintian/Profile.pm: + [NT] Catch recursively defined profiles when the Profile field contains a (slightly) different name than the Extends field of its parent. (Closes: #655469) + [NT] Handle loading of checks and tags. * lib/Lintian/Tag/Info.pm: + [NT] Accepted patch from Evan Broder to always output effective severity in tag descriptions. + [NT] Removed code to load tags from checks. This has moved to Lintian::Profile. * lib/Lintian/Tags.pm: + [NT] Support architecture wildcards in overrides. + [NT] Emit "malformed-override" for architecture specific tags for unknown architectures and for "arch:all" packages. + [NT] Use a Profile to determine if a tag is suppressed or not. + [NT] Handle "pedantic" like the other severities. + [NT] Count experimental tags as a separate group of tags. This fixes an issue where lintian would exit 1 if the only error tags emitted were experimental. (Closes: #658971) * lib/Util.pm: + [NT] Create clean_env function to handle cleaning of the environment for children processes and finding a suitable UTF-8 locale (when needed). + [NT] Report line number instead of "0-indexed" paragraph number in syntax errors. Thanks to Jari Aalto for the suggestion. (Closes: #659909) * man/lintian.pod.in: + [NT] Removed the notes that some options disable loading of a profile. Lintian now always loads a profile when doing checks. * private/refresh-archs: + [NT] Rewritten. * private/refresh-hwcap: + [JW] New file. * profiles/debian/ftp-master-auto-reject.profile: + [NT] Refreshed. * reporting/harness: + [NT] Removed useless "TODO" message from the log output. + [NT] Added -h/--help option to print usage information. + [NT] Added --dry-run option. + [NT] A source package is now only processed if one (or more) of its binaries are processed as well. + [NT] Also symlink $LINTIAN_BIN_DIR/gpgv to /bin/true when skipping signature checks. This avoids issues when some tools prefers gpgv to gpg. * reporting/html_reports: + [JW] Properly handle uploader names with commas. + [NT] Use the severities from profiles when generating tag pages. Based on patches from Evan Broder. (Closes: #650712) + [NT] Removed tag loading code, which has moved into Lintian::Profile. + [NT] Pass a profile to the templates (as $profile) instead of the old %all hash. + [NT] List only source packages on the "packages_X.html" pages. * reporting/templates/tags-all.tmpl: + [NT] Use $profile instead of the %all hash. -- Niels Thykier Thu, 23 Feb 2012 14:06:21 +0100 lintian (2.5.4) unstable; urgency=medium The "perl5.14 (+ misc) fix"-upload. Medium as perl 5.14 deprecation warnings tend to make Lintian output unreadable. * Summary of tag changes: + Added: - data.tar.xz-member-without-dpkg-pre-depends - gzip-file-is-not-multi-arch-same-safe - init.d-script-does-not-implement-optional-option - init.d-script-missing-lsb-description - maintainer-address-causes-mail-loops-or-bounces - missing-build-dependency-for-dh-addon - package-depends-on-lower-priority-package - package-would-benefit-from-build-arch-targets - python-depends-but-no-python-helper - python3-depends-but-no-python3-helper - transitional-package-should-be-oldlibs-extra - uploader-address-causes-mail-loops-or-bounces * checks/*: + [JW] Replace common_data.pm with Lintian::Check. + [NT] Remove some unused "use lib " from various checks. + [NT] Use Lintian::Collect::Group to find direct dependencies. * checks/binaries: + [JW] Allow binaries to use "/usr/lib/$srcpkg/" in RPATHs. (Closes: #642092) + [JW] Fixed a false-positive when using the multiarch dir in RPATH. (Closes: #646817) * checks/changes-file{,.desc}: + [NT] Added "precise" to the list of Ubuntu distributions. Thanks to Loïc Minier for the patch. + [NT] Accept release codename in the changes file. Thanks to Julien Cristau for the report. (Closes: #637540) * checks/circular-deps{,.desc}: + [NT] Renamed to group-checks{,.desc}. * checks/group-checks{,.desc}: + [NT] Added check for depending on lower priority packages built from the same source. Only strong dependencies are considered. Thanks to Neil Williams for the report. (Closes: #387166) * checks/common_data.pm: + [JW] Merged into Lintian::Check. * checks/cruft{,.desc}: + [NT] Escape path when using them in regexes. (Closes: #642902) + [NT] Extended the description of the tag for non-native packages with native versions. Thanks to Jari Aalto for the report. (Closes: #580048) * checks/copyright.desc: + [RG,NT] Clarified that the PHP 2.x license is only for the PHP interpreter and PEAR modules cannot use it. Thanks to Thomas Goirand for the report. (Closes: #616436) * checks/deb-format{,.desc}: + [NT] Added check for using .xz compression in deb files without versioned Pre-Depends on dpkg. The severity is pedantic for Debian and serious for Ubuntu. Thanks to Aaron M. Ucko for the rapport. (Closes: #648350) * checks/dehelper{,.desc}: + [JW,NT] Check for versioned dependencies for some dh_commands. (Closes: #641035) + [JW] Detect missing dependencies for using dh sequences. (Closes: #613327) + [JW] Parse continuation lines in d/rules. + [JW] Only emit brace-expansion-in-debhelper-config-file at most once per file. (Closes: #644344) + [JW] Replaced "=" with " => " in the tag extra for missing- build-dependency-for-dh_-command to improve readability. This breaks overrides, but according to lintian.d.o there are none of these. (Closes: #644339) + [JW] Added check for missing python helpers when using python substvars in d/control. (Closes: #582511) * checks/fields{,.desc}: + [NT] Fixed source-field-does-not-match-pkg-name. + [NT] Newlines from URIs in Vcs-* fields are stripped before they are checked. These will fields will also cause a "multiline- field" tag if they contain newlines. + [JW,NT] Clarified that build-depends-on-metapackage is not only triggered by X11 metapackages. (Closes: #642125) + [NT] Ensure transitional packages are in section oldlibs and priority extra. Thanks to Josh Triplett for the report. (Closes: #645438) + [NT] Check for bouncing and looping email addresses. Thanks to Ansgar Burchardt and Arno Töll for the bug report and patch. (Closes: #636599) * checks/files{,.desc}: + [JW] Suggest the usage of "-delete" rather than "| xargs rm -f". (Closes: #641983) + [JW] Improve "linked against libvga.so" test. This avoid setuid-binary false-positives. (Closes: #642038) + [NT] Skip package-contains-no-arch-dependent-files for transitional packages. Thanks to Andreas Beckmann for the patch. (Closes: #642339) + [NT] Applied patch from Andrew Starr-Bochicchio to update the description of font-in-non-font-package to better reflect current font policy. (Closes: #646838) + [JW,NT] Check that gzip files are compressed with -n in "Multi-Arch: same" packages. (Closes: #649329) + [NT] Corrected perl4 check, thanks to Dominic Hargreaves for the report and the patch. * checks/init.d{,.desc}: + [NT] Applied patch from Peter Eisentraut to detect init.d scripts without support for the optional "status" option. (Closes: #647250) + [NT] Fixed deprecation warning when using perl 5.14. (Closes: #649133) + [NT] Added tag for missing LSB Description keyword. Thanks to Michael Biebl and Petter Reinholdtsen for the bug report. (Closes: #604620) * checks/rules{,.desc}: + [JW] Fixed false negative "missing-build-dependency" when using "dh --with=X" rather than "dh --with X". (Closes: #643714) + [NT] Do not emit missing-build-dependency for missing dh sequences, since the new tag will handle those. + [JW] Parse continuation lines in d/rules. (Closes: #644021) + [JW] Check for versioned dependency on dpkg-dev when using the new dpkg makefiles. (Closes: #646495) + [NT] Added tracker tag for the build-arch target goal. (Closes: #647227) + [JW] Fixed duplicate tags about missing dependency for dh_pycentral/dh_pysupport. (Closes: #633507) * checks/scripts: + [RA] Exclude files ending in *.erb from several shell script checks. ERB is a Ruby templating language, so these will probably have mixed shell and Ruby code and may not be executable. Thanks, Laurent Arnoud. + [NT] Corrected perl4 check, thanks to Dominic Hargreaves for the report and the patch. (Closes: #648532) * checks/source-copyright: + [JW] Added some more DEP-5 URLs. (Closes: #642027) + [JW] Improved the wording of the extra information for the tag syntax-error-in-dep5-copyright. (Closes: #644556) * checks/symlinks: + [NT] Ignore broken links that appears to point to fonts. * collection/index: + [NT] Fixed an "uninitialized variable" warning if no tarballs were present or the tarball is empty. (Closes: #645660, LP: #886487) + [NT] Fixed deprecation warning when using perl 5.14. * collection/debfiles: + [NT] Bail if the debian dir is a symlink. * data/changelog-file/debian-dists: + [NT] New file. * data/changelog-file/ubuntu-dists: + [NT] Added the "precise". Thanks to Loïc Minier for the patch. (Closes: #644488) * data/debhelper/{dh_commands,maint_commands,miscDepends_commands}: + [NT] Refreshed. * data/debhelper/alt-dh_commands: + [NT] Renamed to dh_commands-manual. * data/debhelper/dh_commands-manual: + [NT] Support arbitrary dependency relations. This new change also fixes a "duplicate" in the dependency output. (Closes: #643716) * data/fields/essential: + [NT] Add libc-bin to the list of known essential packages. * data/fields/obsolete-packages: + [NT] Added dpatch per request of the maintainer. Thanks to Gergely Nagy for the report. (Closes: #646420) * data/fields/virtual-packages: + [NT] Refreshed against sid. Thanks to Gregor Herrmann for the report. (Closes: #646604) * data/rules/deprecated-makefiles: + [JW] Added dbs makefiles, since dbs maintainer deprecated the package in 0.47. (Closes: #646126) * data/shared-libs/ldconfig-dirs: + [NT] Add multi-arch dirs for hurd-i386. Thanks to Julien Cristau for noticing that they were missing. * data/spelling/corrections: + [NT] Added a correction for "propagate" and "separate", thanks to Guillem Jover for the suggestions. (Closes: #644793, #646529) + [JW] Added a number of corrections. (Closes: #645393) * debian/control: + [CW] Mark lintian Multi-Arch: foreign (there does exist one Architecture: any package that Build-Depends: lintian, so this helps multiarch cross-building slightly). * debian/lintian.install: + [NT] Removed unpack which was removed. * frontend/lintian: + [NT] Collections explicitly requested (by -U) are no longer auto-removed. Previously the only way to prevent auto-removal was to use --keep-lab. + [NT] Removed all archive-wide testing code. This has been moved into reporting/harness. This deprecates a lot options and config variables (--arch, --archivedir, --area, --dist, --section and LINTIAN_{ARCH,ARCHIVEDIR,AREA,DIST}). + [NT] Support new lab query format, replacing the old "package name"-based search. * lib/Lab{,/Package}.pm: + [NT] Removed, replaced by Lintian::Lab{,::Entry}. * lib/Lintian/Check.pm: + [JW] Merged with common_data.pm. * lib/Lintian/Collect/Group.pm: + [NT] New file - Collect like API for group data. * lib/Lintian/Collect/Source.pm: + [JW] Fixed call to binary_field in binary_relation. (Closes: #641609) * lib/Lintian/Data.pm: + [NT] Fixed a file descriptor leak. * lib/Lintian/Lab{,/Entry,/Manifest,/ManifestDiff}.pm: + [NT] New files. Replaces the Read_pkglists, Lab and Lab::Package modules. * lib/Lintian/Lab.pm: + [JW,NT] Correctly handle $TMPDIR not being an absolute path. (Closes: #642113) + [NT] New lab layout style resembling the "pool" dirs of the Debian mirrors. This allows more than 32 000 packages of a given type in the laboratory. It also allows multiple versions/architectures of the same package in static labs. A feature previously only enabled in temporary labs. The new layout is incompatible with the old format. (Closes: #641468) * lib/Lintian/Output.pm: + [NT] Minor refactoring to simplify creation of the FullEWI module. * lib/Lintian/Output/FullEWI.pm: + [NT] New experimental output. More machine-friendly version of the normal Lintian output format. * lib/Lintian/Output/XML.pm: + [NT] Use self-closing tags (if possible) and do not write attributes with an empty value. * lib/Lintian/Processable.pm: + [NT] Reduced to an abstract class. The "old" implementation has been put into Lintian::Processable::Package. * lib/Lintian/Processable/Package.pm: + [NT] New file. + [NT] Changed the "name" of changes files. It is now equal to the name of the source package. Previously it was the filename (without extension and without the dir part). * lib/Read_pkglists.pm: + [NT] Removed - replaced by Lintian::Lab::Manifest. * lib/Util.pm: + [NT] Stricten the parser to not accept a field name with a ":". This could cause the parser to eat the first part of the value, if it contained a colon and there was no space before the value. Thanks to Pino Toscano for reporting the issue. + [JW] Explicitly check that files are not encoded using ISO-2022, when they should be encoded with UTF-8. (Closes: #643009) + [JW] Use "paragraph" and "field" rather than "section" and "tag" when referring to a Debian control file. * man/lintian.pod.in: + [NT] Fixed a typo, thanks to Evgeni Golov for spotting it, * private/generate-lintian-pod: + [NT] Document which collections are auto-removed by default in static labs. * profiles/ubuntu/main.profile: + [NT] Disable no-upstream-changelog and lzma-deb-archive for Ubuntu. Thanks to Evan Broder for the report and patch. (Closes: #648117) * reporting/*: + [NT] Recognise and display pedantic tags. + [JW] Only emit "plus X overrides" if there any overrides. * reporting/{harness,html_reports}: + [NT] Do not accept LINTIAN_UNPACK_LEVEL nor LINTIAN_SECTION anymore. The lintian frontend lost support for these in 2.5.0~rc3. * reporting/harness: + [NT] Refactored to handle the archive-wide checking directly. + [NT] Use the new FullEWI output format for the archive-wide logs. * reporting/html_reports: + [NT] Ensure source tags appear before binary tags. (Closes: #580945) + [NT] Supports the FullEWI output format. * t/*: + [NT] Skip some tests broken by a recent dpkg upload. (Closes: #643205) * unpack/*: + [NT] Removed, no longer used. -- Niels Thykier Mon, 21 Nov 2011 23:05:12 +0100 lintian (2.5.3) unstable; urgency=low The "Another 51 bites the dust. 169 left to go." release. * Summary of tag changes: + Added: - boilerplate-copyright-format-uri - control-file-is-not-a-file - comma-separated-files-in-dep5-copyright - copyright-has-crs - debian-copyright-is-symlink - depends-on-packaging-dev - dh_installmanpages-is-obsolete - missing-field-in-dep5-copyright - missing-license-paragraph-in-dep5-copyright - missing-license-text-in-dep5-copyright - no-debian-copyright - obsolete-field-in-dep5-copyright - out-of-date-copyright-format-uri - package-contains-no-arch-dependent-files - perl-module-uses-perl4-libs-without-dep - readme-debian-contains-invalid-email-address - script-uses-perl4-libs-without-dep - syntax-error-in-dep5-copyright - unknown-copyright-format-uri - unknown-paragraph-in-dep5-copyright - unused-license-paragraph-in-dep5-copyright - unversioned-copyright-format-uri - vim-addon-within-vim-runtime-path - wiki-copyright-format-uri + Removed: - debian-changelog-file-contains-debmake-default-email-address - readme-debian-contains-debmake-default-email-address - script-calls-init-script-directly * checks/*: + [NT] Dropped fields from Needs-Info, it is no longer needed. + [JW] Use LC_ALL rather than LANG, since LC_ALL overrules LANG. (Closes: #637595) + [JW] Removed all whitespace lines to avoid confusing some dctrl parsers (notably grep-dctrl). (Closes: #639928) + [JW] Fix a number of broken references in the tag descriptions. (Closes: #639923) + [JW] Rewrote Debian Bug references using #nnnnnn notation. * checks/binaries.desc: + [NT] Remove the reference to the Library Packaging Guide, since it is no longer available (in Debian). (Closes: #640228) * checks/changelog-file{,.desc}: + [JW] Remove debmake-specific tag in favour of more general debian-changelog-file-contains-invalid-email-address. (Closes: #639946) + [JW,NT] Fixed use of uninitialized value as hash key. (Closes: #640238) + [NT] Mention that the missing native changelog tag can, in some cases, be emitted if it does not look like a Debian changelog. * checks/{conffile,etcfiles}{,.desc}: + [JW] Merged etcfiles into conffile. (Closes: #637590) * checks/conffile: + [NT] Skip all checks if "conffiles" is a symlink. * checks/control-files{,.desc}: + [NT] Check that all members of the control.tar.gz are either regular files or directories. * checks/copyright-file{,.desc}: + [JW] Check for CRLF line endings in copyright files. (Closes: #634191) + [JW] Extended helper-templates-in-copyright and ensure it is only emitted once per package. * checks/debhelper{,.desc}: + [NT] Recognise /usr/share/R/debian/r-cran.mk as a cdbs-based build. This prevents false-positive "unneeded cdbs" warning. + [JW] Check for use of the obsolete dh_installmanpages debhelper program. Thanks to Joey Hess for the report. (Closes: #634112). * checks/debian-readme{,.desc}: + [JW] Replace debmake-specific tag with more general readme-debian-contains-invalid-email-address. * checks/description.desc: + [JW] Added references to some tags. (Closes: #640853) * checks/duplicate-files{,.desc}: + [NT] Replace the exception for "__init__.py" files by excluding all empty files from the check. The bug (#632789) only requests an exception for "empty __init__.py" files and generally empty files are unlikely to cause a serious size-waste. * checks/fields{,.desc}: + [NT] Mention that perl modules included in perl itself should be the first dependency if it is only included in the perl from experimental. Thanks to Dominic Hargreaves for the report and the patch. (Closes: #637793) + [NT] Warn about (build)depending/recommending on packaging-dev. Thanks to Luk Claes for the report and the initial patch. (Closes: #629308) + [NT] Also emit bad-homepage if the Homepage URL does not seem to be using a known protocol (for homepages). (Closes: #580427) + [JW] Bumped the severity of "no-human-maintainers", since it is now a Policy "must" directive. (Closes: #640856) + [JW,NT] If superfluous-clutter-in-homepage has been emitted, ignore the surrounding "<>" for the rest of the homepage checks. (Closes: #640947) + [NT] Added check for Build-Depending on libdbX.Y-dev (and related packages. Most packages should be able to use unversioned -dev packages. Thanks to Ondřej Surý for the report and the initial tag description. (Closes: #624434) * checks/{filename-length,rules}.desc: + [NT] Improved the descriptions of some tags. (Closes: #639018) * checks/files{,.desc}: + [NT] Added exceptions to "extra-license-file" for manpages, static libraries, .pc-, elf and pyshared-data-files. This covers all the false-positives currently found in the liblicense package. (Closes: #617901) + [NT] Ignore non-ELF files in multiarch paths, when checking for a missing pre-depends on multiarch-support. Thanks to Sven Joachim for the report. (Closes: #639735) + [NT] Added check for packages that only ships files in /usr/share and are not marked "Architecture: all". Thanks to Evgeni Golov, Carl Fürstenberg and Jari Aalto for the suggestions. (Closes: #574689) + [JW] Do not emit third-party-package-in-python-dir for packages built from python{,3}-{stdlib-extensions,profiler,old-doctools} sources. Add reference to Python Policy in the tag description. (Closes: #640211) + [JW] Add check for Vim addons installing files into a directory within Vim runtime path. (Closes: #640371) + [NT] Added check for Perl modules using perl4 libs without depending on libperl4-core-libs-perl. Thanks to Dominic Hargreaves for the initial patch. * checks/menus.desc: + [NT] Added reference to the doc-base manual to help people find the list of valid doc-base sections. (Closes: #584280) * checks/patch-systems: + [NT] Use lsdiff to determine if a patch modifies the debian dir as it is more accurate than diffstat for this. (Closes: #640131) * checks/rules: + [NT] Do a simple and minimal variable tracking. In very simple cases, it can determine which targets a variable contains (when the variable is used as a target). (Closes: #638411) * checks/scripts{,.desc}: + [NT] Remove script-calls-init-script-directly. (Closes: #617959) + [NT] Added check for Perl scripts using perl4 libs without depending on libperl4-core-libs-perl. Thanks to Dominic Hargreaves for the initial patch. (Closes: #636994) * checks/shared-libs{,.desc}: + [JW] Fixed a typo in a tag description. (Closes: #639177) + [NT] Do not emit shlib-calls-exit for libraries that have an INTERP section. (Closes: #607399) * checks/source-copyright{,.desc}: + [JW] Added check for DEP-5 copyright files. (Closes: #633779) * checks/standards-version: + [NT] Made the ancient-standards-version independent of the system time. * checks/version-substvars{,.desc}: + [NT] Also emit the any-depends-all tag if the ">=" relation is used. Thanks to Konstantinos Margaritis and Cyril Brulebois for the report and the research. (Closes: #639144) * collection/fields{,.desc}: + [NT] Removed, no longer used. * collection/changelog-file: + [NT] Double check changelogs that does not explicitly contains "debian" in the filename. This should avoid a myriad of syntax error tags in some cases (such as perl), where the Debian changelog is not present and there is an upstream changelog. * data/fields/archive-sections: + [NT] Fixed a typo in "otherosfs" section name. Thanks to Stefan Potyra for the report. (Closes: #637596) * data/fields/perl-provides: + [NT] Refreshed with perl 5.14 in sid. * data/files/fonts: + [NT] Refreshed against sid and now includes packages starting with "fonts-" as well. Thanks to Paul Wise for the patches. (Closes: #622149) * data/output/ftp-master-{,non}fatal: + [NT] Refreshed. * data/output/manual-references: + [JW] Refreshed. * data/rules/known-makefiles: + [JW] Added Makefiles from (the future) dpkg. (Closes: #640921) * data/spelling/corrections{,-multiword}: + [NT] Added some corrections for "remove" etc. Thanks to Jakub Wilk for spotting those. + [JW,NT] Added more corrections. (Closes: #639367, #640149, #613604) * debian/control: + [NT] (Build-)Depends on patchutils for lsdiff. * debian/copyright: + [NT] Added Jakub Wilk to maintainers. * debian/rules: + [JW] Use LC_ALL rather than LANG, since LC_ALL overrules LANG. * doc/lintian.xml: + [NT] Removed duplicate "allowed to" in same sentence. + [NT] Added a paragraph on some of the constrains in design of Lintian. * doc/lintianrc.example: + [NT] Add an example on how to enable "--quiet" via lintianrc. * doc/README.developers: + [NT] New file. Thanks to Jeremiah C. Foster for the initial contribution. * frontend/lintian: + [NT] Lintian now mentions if overrides may have been ignored. This happens if a package contains an override for a tag that has been marked "non-overridable" by the current vendor profile. + [NT] Mention ".changes" as a valid file type in the "unknown file" error. Thanks to Michael Gilbert for the report and the patch. (Closes: #639430) + [NT] Always display a given tag if requested with --tags or --tags-from-file. Previously, pedantic and experimental tags were not shown unless the relevant options were also passed. + [JW,NT] Fixed a regression where --check-part ignored display settings (such as --display-info). (Closes: #640694) + [NT] If both --verbose and --quiet is used together, then use the last of them to appear rather than "both at the same time". (Closes: #640366) + [NT] Accept --quiet in lintianrc as "quiet". This option may not be used together with "verbose" in the config file. * lib/Lintian/Check.pm: + [NT] Catch "Name >" as a malformed email address. (Closes: #640489) + [JW] Catch misspellings of the "Debian QA Group" maintainer email (used for orphaned packages). (Closes: #640834) * lib/Lintian/Collect.pm: + [JW,NT] Create the source field from the package field if the former is not present. This fixes a number of false-positves introduced in 2.5.2. (Closes: #640186) * lib/Lintian/Collect/Source.pm: + [NT] Removed a requirement for fields that was not needed. + [NT] Fixed "index" method for source packages. * lib/Lintian/Collect/Package.pm: + [JW,NT] Replace use of fail with croak. (Closes: #637741) * lib/Lintian/Output.pm: + [NT] Merged "quiet" and "verbose" into "verbosity_level". * lib/Lintian/Profile.pm: + [NT] Reject profiles containing an unknown field. * lib/Lintian/Tag/Info.pm: + [JW] Create links for references pointing to files in html output. + [JW] Parse "#nnnnnn" references as links to Debian bugs. + [NT] Check severity and certainty when loading checks. This causes Lintian to reject checks with broken/incomplete tags even if the tag was never used. * lib/Lintian/Tag/Override.pm: + [NT] New file. * lib/Lintian/Tags.pm: + [NT] Track which tags had overrides that have been dropped. + [NT,RG] Collect override comments and print the comments above the overridden tag (with --show-overrides). Thanks to Carl Fürstenberg for the report. (Closes: #474590) + [NT] Remove the "respect-display-level" code. It is not as useful as intended. * lib/Text_utils.pm: + [NT] Close

      -tags in dtml_to_html since the output is used in xhtml (xml), where all tags must be closed properly. (Closes: #639292) + [NT] Remove the last new line (if any) before a in tag to reduce the empty space to the next paragraph. * lib/Util.pm: + [JW] Use LC_ALL rather than LANG, since LC_ALL overrules LANG. + [JW] Stricten the DCtrl parser to choke on some syntax errors that were silently ignored. (Closes: #639516) * man/lintian.pod.in: + [JW] Fixed some stray POD markup. (Closes: #640705) + [JW,NT] Clarified that --tags and --tags-from-file ignores display settings. + [NT] Documented how lintian behaves if --quiet is used together with --verbose or --debug. + [NT] Documented how --verbose and --quiet can be enabled via the config file. Only one of "verbose" and "quiet" may appear in the config file. * profiles/debian/ftp-master-auto-reject.profile: + [NT] Refreshed to include udeb-uses-non-gzip-data-tarball. * private/*: + [JW] Use LC_ALL rather than LANG, since LC_ALL overrules LANG. * private/refresh-manual-refs: + [NT] Remove code to refresh refs to the Library Packaging Guide. + [JW] Added the java-policy and fixed the lintian ref. + [JW] Don't strip newlines from titles, but treat them as regular whitespace characters. + [JW] Strip some superfluous HTML markup from titles. * reporting/{config,html_reports,templates/foot.tmpl}: + [NT] Added a link to the Lintian source code. * reporting/harness: + [NT] Added missing import statement. * reporting/html_reports: + [JW,NT] Create a gzip'ed version of the raw lintian.log. (Closes: #637819) * reporting/templates/head.tmpl: + [NT] Show the list of all tags in the page header. Thanks to Arno Töll for the suggestion and the patch. (Closes: #640962) * reporting/templates/index.tmpl: + [NT] Added link to the new gzip'ed lintian.log. * t/*: + [JW,NT] Fixed test failures caused by unpacking the source with a umask different from 0022. (Closes: #637649) -- Niels Thykier Sat, 10 Sep 2011 11:53:51 +0200 lintian (2.5.2) unstable; urgency=low * Summary of tag changes: + Added: - debian-rules-uses-deprecated-makefile - debian-rules-uses-or-modifies-user-only-variable - duplicate-changelog-files - package-has-long-file-name - source-package-component-has-long-file-name - udeb-uses-non-gzip-data-tarball - upstart-job-in-etc-init.d-not-registered-via-update-rc.d + Removed: - calls-suidperl-directly - suid-perl-script-but-no-perl-suid-dep * checks/*: + [NT] Migrated to use new methods in the Lintian::Collect interfaces rather than accessing the Lab directly. + [NT] Removed "fields" from Needs-Info. * checks/{debconf,conffiles}.desc: + [NT] Added missing bin-pkg-control Needs-Info. * checks/{cruft,fields}{,.desc}: + [NT] Relocated doc pkg not arch all tag; it was never triggered since cruft was a source check and the tag could only be triggered for binary packages. * checks/binaries: + [NT] Added lib/${MULTIARCH_DIR} to the list of paths to check for public shared libraries. Thanks to Sven Joachim for the report and the patch. (Closes: #630698) + [NT] Recognise .gox files as object files that cannot be stripped. Thanks to Matthias Klose for the report. (Closes: #624521) + [NT] Do not assume that the architecture field is present. + [NT] Emit "arch-dependent-file-in-usr-share" and "binary-in-etc" also for static compiled files. Thanks to Jakub Wilk for the report and the patch. (Closes: #635354) + [NT] Fixed false-negative for rpath, if the rpath included the multi-arch dir. Thanks to Jakub Wilk for the report and the patch. (Closes: #637259) * checks/changelog-file: + [NT] Removed exception for symlinked changelogs if the package had an Ubuntu version. This exception is now handled by the profile. Thanks to Benjamin Drung for the heads up. * checks/circular-deps.desc: + [NT] Fixed typo; thanks to Nicolás Alvarez for the report and patch. (Closes: #630925) * checks/control-files: + [NT] Refactored static tables into data-files. * checks/copyright-file: + [NT] Stricten one of the regexes for catching left over helper templates. This should prevent false-positives for some license texts. Thanks to Charles Plessy for the report. (Closes: #631674) + [NT] Use group data to determine if a package is foreign or not for symlinked /usr/share/doc/ dirs. This avoids the need for symlinks between packages in the lab. * checks/deb-format{,.desc}: + [NT] Allow data.tar.xz as the third member. Thanks to Ansgar Burchardt for the report and patch. (Closes: #632556) + [NT] Added test for udebs having non-gzip data members, since the debian-installer does not support them. Thanks to Luk Claes. (Closes: #634874) * checks/debhelper: + [NT] Do not trigger deprecation warning for dh_python if it is followed by a "$". This prevents false-positives when a Makefile variable is used to choose between dh_python2 and dh_python3. Thanks to Leonid Borisenko for the report. (Closes: #631662) + [NT] Do not trigger deprecation warning for dh_python-ply, which Lintian incorrectly identified as dh_python. Thanks to Daniele Tricoli for the report. (Closes: #632693) + [NT] Fix a broken regex that caused Lintian skip brace expansion checks for some debhelper files. Thanks to Jakub Wilk for the report and the patch. (Closes: #632883) + [NT] Do not consider "debian/debhelper" a temporary debhelper file. Some packages uses this a directory to store their debhelper files. * checks/debian-source-dir{,.desc}: + [NT] Added missing word in the tag description for git-patches-not-exported. + [NT] Fixed information disclosure issue, where Lintian could be tricked into disclosing the present of files on the host system via specially crafted source packages. * checks/duplicate-files: + [NT] Exclude __init__.py files from the check as they are required even if they are empty. Thanks to Daniele Tricoli for the report. (Closes: #632789) + [NT] Report duplicate changelogs as a separate tag. * checks/fields: + [NT] Refactored to use Lintian::Data and use new data files from data/fields. + [NT] Added python3-dev and removed python2.{4,5} from $PYTHON_DEV. Thanks to Jakub Wilk for the report and the patch. (Closes: #633044) + [NT] Fixed a bug where the libdb1-compat tag only triggered if libdb1-compat was listed in Pre-Depends. + [NT] Updated list of python "dev" packages. Thanks to Jakub Wilk for the patch. * checks/filename-length{,.desc}: + [NT] New file that checks the length of the package file names. (Closes: #631656) * checks/files: + [NT] Check for embedded copies of the underscore javascript library. Thanks to Jakub Wilk for report and the patch. (Closes: #631513) + [NT] Removed a leading slash from the filename part of the extra for python-debug-in-wrong-location. Thanks to Jakub Wilk for the report and the patch. (Closes: #631530) + [NT] Accepted patch from Marcelo Jorge Vieira to catch four additional embedded javascript libraries. (Closes: #635447) + [NT] Stricten the regex for finding .xvpics dirs. + [NT] Shipping a lintian override is no longer enough to make lintian consider the package for "non-empty". * checks/init.d{,.desc}: + [NT] Provide a separate tag for upstart-jobs not registered via update-rc.d in postinst. This allows vendors (such as Ubuntu) to disable this tag for upstart-jobs only using the new vendor profiles. While this would break overrides, all existing overrides appears to be for normal scripts rather than upstart-jobs. (Closes: #631872) * checks/java{,.desc}: + [NT] Jar files containing clojure files are no longer considered to be codeless. + [NT] Exclude jar files in /usr/lib/xul{-ext,runner} from the "jar-not-in-usr-share" check. (Closes: #635495) + [NT] Fixed a typo in a tag description. * checks/menu-format.desc: + [NT] Mentioned how to get rid of the CR characters in the desktop file. Thanks to Jakub Wilk. * checks/nmu: + [NT] "LowThresholdNMU" will now work as an alternative to "NMU" in changelogs for suppressing changelog-should-mention-nmu. Thanks to Jordi Mallach for the report. (Closes: #620418) * checks/po-debconf: + [NT] Allow po-files with an "@modifier", which works with debconf (>= 1.5.34). (Closes: #617905) * checks/rules: + [NT] Check included files in d/rules against a limited number of common makefile snippets, which are known not to implement all the required targets. This prevents false negatives of missing targets. Thanks to Jakub Wilk for the suggestion and the initial makefile list. (Closes: #631711) + [NT] Warn about including the CDBS simple-patchsys and dpatch as they are both deprecated by source format 3.0 (quilt). Thanks to Nelson A. de Oliveira for reporting and Luk Claes for providing an initial patch. (Closes: #624201) + [NT] Added check for using DEB_*FLAGS_{SET,APPEND} in d/rules. Thanks to Raphaël Hertzog for the report. (Closes: #631786) * checks/scripts{,.desc}: + [NT] Removed perl-suid related tags as the package is no longer available and we have no known packages triggering the tags at the moment. (Closes: #631432) + [NT] Added perl6/rakudo as a known interpreter. Thanks to Alessandro Ghedini for the report and patch. (Closes: #636354) * checks/shared-libs{,.desc}: + [NT] Fixed broken sentence. Thanks to Norbert Preining for reporting the issue. + [NT] Applied patch from Peter Pentchev to correct the logic for testing for shlib-calls-exit. (Closes: #633976) + [NT] Mention that some of the tags may be triggered due to the debhelper bug #204975. Thanks to Jakub Wilk for the report. (Closes: #633853) * checks/symlinks: + [NT] Symlink checking extended to relative paths as well. (Closes: #217023) * collection/*: + [NT] Removed all Needs-Info on "fields" and all checks that used the "fields" dir (or files therein) to determine if the scripts had been called in the wrong dir. * collection/diffstat: + [NT] No longer unconditionally creates a diffstat file, since the Lintian::Collect interface will fall back to using /dev/null in its absence. * collection/fields: + [NT] Removed creation of cross package symlinks. They have been replaced by the group information that checks are passed. + [NT] Deprecated it in favour of a smarter Lintian::Collect. It will be removed in a later release; for now it will just remove the "fields" directory in the lab. * collection/file-info: + [NT] Double check the output of file(1) when it says a ".gz" file is not gzip compressed. This should reduce the number of false-positives gz-file-not-gzip tags. (Closes: #620289) + [NT] Open files before using chdir. In the future unpacked may be a symlink. * collection/index{,.desc}: + [NT] Updated to handle source packages and with support for multi tarball source packages. * data/control-files/{,u}deb-permissions: + [NT] Added files. * data/fields/*: + [NT] Added new files based on data variables from checks/fields. * data/fields/obsolete-packages: + [NT] Added ligdigest-sha1-perl on request of the Perl Team. Thanks to Salvatore Bonaccorso for the report and patch. (Closes: #635441) * data/fields/perl-provides: + [NT] Refreshed against perl 5.12.4. * data/files/standard-files: + [NT] Added file. * data/rules/{deprecated,known}-makefiles: + [NT] Added file. * data/spelling/corrections: + [RA] Remove discontiguous correction. The OED lists this as valid. Thanks, Charles Plessy. (Closes: #632159) + [NT] Added another correction for "specification". Thanks to Jakub Wilk for the hint. (Closes: #634222) + [NT] Added another correction for "development" and "misspelt". Thanks to Pino Toscano and Jakub Wilk for the suggestion. * debian/control: + [NT] Bumped debhelper version to 8.1.0 due to the build-arch and build-indep targets. Thanks to Mark Hymers for the heads up and a patch. (Closes: #632550) + [NT] Added Build-Depends on cdbs, it is needed for some of the tests. + [NT] Pruned the Uploaders list a bit. We would like to thank Jeroen van Wolffelaar, Frank Lichtenheld and Marc 'HE' Brockschmidt for their work on Lintian in the past. * debian/lintian.install: + [NT] Added the profiles directory. * debian/rules: + [NT] Added target to update the profiles. * doc/lintian.xml: + [NT] Added information about the new Vendor profiles. + [NT] Improved various parts of the User Manual. Especially mention that Lintian can be run on changes files and this processes all packages related to the changes file. * doc/lintianrc.example: + [NT] Added more sample options. * frontend/{lintian,lintian-info}: + [NT] Added profile support (new option --profile), please refer to the Lintian User Manual for more information. * frontend/lintian: + [NT] Ensure that all dependency collections of a check are loaded. Previously Lintian would only load direct dependencies of a collection and assume that was enough. + [NT] Allow "verbose" to appear in the lintianrc file. + [NT] Added new "--packages-from-file" option. Lintian will read packages from the file (one package per line) and process these. Unlike "--packages-file" it allows its argument to be "-" for stdin and the format is simpler. + [NT] Deprecated "--packages-file" in favour of the new "--packages-from-file" option. + [NT] Allow "y" as short form of "yes" in the configuration file. Furthermore, ignore case when doing the check for boolean values. * lib/Lab.pm: + [NT] Removed $dist argument to lab creation, since we rely on LINTIAN_DIST being exported anyway. + [NT] Allow temporary labs to contain the same package twice if the version or/and architecture differs. (Closes: #632115) * lib/Lab/Package.pm: + [NT] Symlink in all components of the source package when creating the source entry in the lab. Also removed legacy code for using the old unpack scripts. * lib/Lintian/Collect/{Binary,Source}.pm: + [NT] Refactored code from these files into the module Lintian::Collect::Package. * lib/Lintian/Collect/Package.pm: + [NT] New file. This serves as a base for Lintian::Collect modules that can be unpacked. * lib/Lintian/Command.pm: + [NT] Added support for appending output to files without truncating them first via the new out_append and err_append options. * lib/Lintian/Data.pm: + [NT] Let new take an optional fourth argument, a code sub, that can be used to pre-process the value. * lib/Lintian/{Internal/FrontendUtil,Profile}.pm: + [NT] New files. * lib/Lintian/ProcessablePool.pm: + [NT] Made the pool consider two packages with the same name as duplicates even if their version or architecture differs, when the underlying Lab does not support this run. This causes lintian to drop one of the packages rather than ending up with an internal error. * lib/Lintian/{Tag/Info,Tags}.pm: + [NT] Updated for profile support. * lib/Read_pkglists.pm: + [NT] Merged the binary and udeb format since they were essentially the same. Old udeb files can still be parsed as binary ones. * man/lintian.pod.in: + [NT] Documented the new --profile option. Note that the options --suppress-tags{,-from-file} now supresses tags in the active profile. + [NT] Removed all refereces to "unpack-level". All unpack levels have been replaced by collections. + [NT] Clarified that some command-line arguments are only useful when using a static lintian lab. + [NT] Described the configuration file format. Thanks to Sven Joachim for the report. (Closes: #636681) * man/lintian-info.pod: + [NT] Documented the new --profile option. * profiles/*: + [NT] Added default profiles for Debian and Ubuntu. Note that these profiles will silently ignore overrides for "fatal" (non-overridable) tags. (Closes: #536364) * reporting/harness: + [NT] Use --packages-from-file instead of --packages-file. * reporting/{html_reports,templates/index.tmpl}: + [NT] Always emit a page for tags, even if they are not emitted. It will also include a link to the entire list of known tags. (Closes: #631763) * reporting/templates/{tag-not-seen,tags-all}.tmpl: + [NT] New files. * unpack/list-binpkg: + [NT] Added a -u option to make it fetch udebs instead of regular binaries. This and the udeb/bin format merge makes list-udebpkg obsolete. * unpack/list-udebpkg: + [NT] Removed in favour of list-binpkg. * unpack/unpack-srcpkg-l1: + [NT] Removed in favour of the collection system. -- Niels Thykier Wed, 10 Aug 2011 18:35:47 +0200 lintian (2.5.1) unstable; urgency=low * Summary of tag changes: + Added: - bad-perm-for-file-in-etc-sudoers.d - debian-rules-missing-recommended-target - dh_pycentral-is-obsolete - dh_python-is-obsolete - illegal-multi-arch-value - non-empty-dependency_libs-in-la-file + Removed: - uses-dh-python-with-no-pycompat - ldconfig-symlink-before-shlib-in-deb * checks/binaries: + [NT] Applied patch from Paul Wise to detect binaries embeddeding glee, glew and libtheora. (Closes: #629288) + [NT] Also consider multiarch dirs when looking for public shared libraries. (Closes: #630164) * checks/debhelper{,.desc}: + [NT] Recognise that dh_python and dh_pycentral are now obsolete. (Closes: #496902, #541978) * checks/changes-file: + [NT] Always verify the checksums of changes-files. * checks/copyright-file: + [NT] Extended current dh_make template checks. Thanks to Nelson A. de Oliveira for the patch. (Closes: #598412) * checks/fields{,.desc}: + [NT] Allow "all" and "any" to appear together in the Architecture field of a .dsc file. (Closes: #626775) + [NT] Added illegal-multi-arch-value. (Closes: #616493) * checks/files: + [NT] Fixed two misnamed udeb tags, which lead to an internal error if triggered. Thanks to Guillem Jover for the report. (Closes: #628754) + [NT] Added bad-perm-for-file-in-etc-sudoers.d tag. (Closes: #588831) + [CW] Do not issue missing-pre-dependency-on-multiarch-support for udebs. + [NT] Limit missing-pre-dependency-on-multiarch-support to real files only. Previously it would also check symlinks. (Closes: #629648) * checks/java{,.desc}: + [NT] Sort the jar files by name, so they are checked in the same order. + [NT] Improved the description of classpath-contains-relative-path. (Closes: #629189) + [NT] Reduced false-positives of classpath-contains-relative-path. Relative classpaths are now okay if they point to jar files in /usr/share/java (but not subdirs thereof) and there is a strong libX-java dependency. Alternatively if the classpath points to a file or a symlink in the package itself, then it is also okay. + [NT] Allow maven plugins to be without classpaths. (Closes: #629056) * checks/manpages.desc: + [ADB] Don't suggest using debmake's output as a reference. The package is not even in oldstable any more. * checks/md5sums.desc: + [ADB] Drop references to obsolete debstd. Thanks to Steve Langasek for the pointer. * checks/rules: + [NT] Removed code for handling packages with dh_python. + [NT] Fixed the code for determining Build-Depends for python packages. Thanks to Jakub Wilk for the patch. (Closes: #614876, #616553) + [NT] Applied patch from Roger Leigh to implement the check for rules files missing the build-arch and build-indep targets. (Closes: #605012) * checks/shared-libs{,.desc}: + [NT] Added non-empty-dependency_libs-in-la-file. (Closes: #628673) + [NT] Removed ldconfig-symlink-before-shlib-in-deb. * collection/java: + [NT] Fixed a regex that would accept any file ending with "jar" to be a jar file rather than only accepting ".jar". This fixes a number of false-positives java checks. * collection/unpacked: + [NT] Added support for unpacking source packages using libdpkg-perl, instead of dpkg-source, if the latter is not present. (Closes: #626476) * data/binaries/multiarch-dirs: + [NT] New file - maps architectures to multiarch dirs. * data/fields/{perl-provides,virtual-packages}: + [NT] Refreshed. (Closes: #627082, #627431) * data/output/ftp-master-*: + [NT] Refreshed. * data/shared-libs/ldconfig-dirs: + [NT] Updated ldconfig path for i386 multiarch paths. Thanks to Raphaël Hertzog for the reminder. * data/spelling/corrections-multiword: + [CW] Remove the "requires to" correction; it has too many common false positives, especially involving relative clauses. (Closes: #625886) * debian/control: + [NT] (Build-)Dependency changes. - xz-lzma is now preferred to lzma as Build-Dependency - Added depends on libdpkg-perl - Reduced dpkg-dev to a suggests, we can use libdpkg-perl as fallback. - Explicitly depends on bzip2 to always support bz2 source packages. - Added xz-utils as suggests - needed for .xz source packages. * debian/rules: + [NT] Added recommended targets build-arch and build-indep. * doc/lintian.xml: + [NT] Clarify that the package type is not listed in the output for binary packages. (Closes: #629193) * frontend/lintian: + [NT] Allow some options to be put into the lintianrc file. (Closes: #460350) + [NT] Added --no-cfg option that can be specified if no config file should be read. + [NT] Deprecated --checksums (also known as --md5sums and -m). Lintian will now always verify the checksums in changes files. The options will be accepted with a warning for now, but may be removed in a later release. (Closes: #629453) + [NT] Fixed an issue where fail was called before it was available. Thanks to Toby Corkindale for the report. (Closes: #630560, LP: #797553) * lib/Lintian/Tag/Info.pm: + [NT] Output the name of the check and the type of the check along with the description of the tag. * lib/Lintian/Tags.pm: + [NT] Fixed a flaw in logic that gave incorrect results for architecture dependent overrides. Thanks to Andreas Beckmann for the report and the patch. (Closes: #626587) * man/lintian.pod.in: + [NT] Mentioned that --checksums and aliases are deprecated. * unpack/list-srcpkg: + [ADB] Don't rely on the order of fields in the Sources file. The files produced by the Debian archive no longer follow the order which the code previously assumed, and we shouldn't assume that the order won't change again in the future. (Closes: #626597) -- Niels Thykier Wed, 15 Jun 2011 23:05:28 +0200 lintian (2.5.0) unstable; urgency=low * Summary of tag changes: + Added: - duplicate-files - format-3.0-but-debian-changes-patch - extended-description-contains-empty-paragraph - git-patches-not-exported * checks/binaries: + [NT] Fixed false-positive embedded-library. Lintian incorrectly assumed that none of these binary packages would contain a source version in their source field. (Closes: #626038) * checks/copyright-file.desc: + [ADB] Correct a spelling mistake ("coypright" -> "copyright") in the description of copyright-refers-to-deprecated-bsd-license-file; thanks, Kees Cook. (Closes: #623780) * checks/description{,.desc}: + [NT] Check for empty paragraphs in extended description. Thanks to Gerfried Fuchs for the patch. * checks/duplicate-files{,.desc}: + [NT] Added to check for duplicate files in usr/share/doc. Thanks to Axel Beckert for the suggestion. (Closes: #614715) * check/fields: + [NT] Accepted pach from Antonio Terceiro to add Ruby-Version as a accepted field in binary packages. Thanks to Vincent Carmona for the report. (Closes: #623390) * check/files: + [NT] Accepted multiple patches (merged into one) from Marcelo Jorge Vieira to detect a number of new javascript libraries. (Closes: #623878) * checks/patch-systems{,.desc}: + [NT] Detect when 3.0 (quilt) packages have a debian-changes-VERSION patch without a patch header. Thanks to Iain Lane for suggestion and patch. (Closes: #588873) * checks/debian-source-dir{,.desc}: + [NT] Applied patch from David Bremner to enable git-patches-not-exported. (Closes: #607694) * checks/java: + [NT] Tightened the regex for finding java libraries and restricted missing-classpath tag to only be emitted for packages that actually contain at least one jar file we check. This fixes false-positives for packages that depended on libX-java-doc packages or packages that only contain jar files we ignore. * check/scripts{,.desc}: + [NT] Accepted patch from Antonio Terceiro to allow ruby-interpreter as alternative to ruby for /usr/bin/ruby scripts. (Closes: #626210) * data/common/source-fields: + [NT] Accepted pach from Antonio Terceiro to add Ruby-Version as a accepted field in binary packages. Thanks to Vincent Carmona for the report. * lib/Lintian/ProcessableGroup.pm: + [NT] Properly handle if the changes file is located directly in the file system root. Thanks to Trent W. Buck for the bug report. (Closes: #624149) * lib/Lintian/Tags.pm: + [NT] Allow overrides to use wildcards anywhere instead of only in the beginning or the end. Thanks to Steve R. Langasek for the report. (Closes: #617991) + [NT] Allow simple architecture overrides such as [i386] or [!i386]. Architecture wildcards are not supported yet. The actual syntax for the architecture the same as the one used in the Build-Depends. Thanks to Andreas Beckmann for the bug report and the solution proposal. (Closes: #622888) -- Niels Thykier Tue, 10 May 2011 20:44:32 +0200 lintian (2.5.0~rc3) unstable; urgency=low * Summary of tag changes: + Added: - dir-or-file-in-run - intra-source-package-circular-dependency - package-contains-broken-symlink - classpath-contains-relative-path - jar-not-in-usr-share - executable-jar-without-main-class - missing-dep-on-jarwrapper - missing-classpath - javalib-but-no-public-jars - missing-manifest - codeless-jar - missing-pre-dependency-on-multiarch-support * checks/*.desc: + [NT] Updated the Needs-Info field to include the new collections where needed. * checks/binaries: + [NT] Accepted patch from Loïc Minier to support the armhf architecture. (Closes: #618587) + [NT] Drop wrong checks for multiarch directories. Multiarch directories are only allowed in packages of the given architecture. Thanks to Steve R. Langasek for the patch. * checks/circular-deps{,.desc}: + [NT] Added to check for circular dependencies between binaries from the same source. It requires all binaries packages to be present as well as the source package to be effective. Thanks to Bill Allombert for the suggestion. (Closes: #316283) * checks/debhelper: + [NT] Use new alt-dh_commands data file to fetch alternative dependencies for dh_commands, which are sometimes provided indirectly by meta or API packages. * checks/fields: + [NT] Do not emit needless-dependency-on-jre for libX-gcj packages and only emit the tag at most once per package. Thanks to Rene Engelhard for the report. (Closes: #622396) * checks/files{,.desc}: + [NT] Added dir-or-file-in-run tag. (Closes: #623031) + [NT] New tag missing-pre-dependency-on-multiarch-support, Severity: serious, to warn when a package installs libraries to the multiarch directory without taking care of upgrades. Thanks to Steve R. Langasek for the patch. * checks/java{,.desc}: + [NT] Added file based on patches submitted by Vicent Fourmond. This new file checks for jar files in weird locations. (Closes: #620829, #575447) * checks/manpages: + [NT] Fixed false-positive binary-without-manpage when the manpage is in a direct dependency of the package and the package is checked together with its dependency. (Closes: #120323) * checks/scripts: + [NT] Fixed false positive missing-dep-for-interpreter, if the interpreter was dash, since dash is now essential. (Closes: #620120) * checks/symlinks{,.desc}: + [NT] New file that checks for broken symlinks. A symlink is considered broken if it does not exist in the package itself or in its direct dependecies. Since only absolute symlinks are checked at the moment, this only partly fixes #217023. * collection/*.desc: + [NT] Updated the Needs-Info field to include the new collections where needed. * collection/{bin-pkg-control,fields,index}{,.desc}: + [NT] Added to replace various unpack scripts. * collection/java-info{,.desc}: + [NT] Accepted patch from Vincent Fourmond to implement Java related data collection. * data/binaries/multiarch: + [NT] Removed by patch from Steve R. Langasek. * data/debhelper/alt-dh_commands: + [NT] New file; contains alternative dependencies for dh_python2 and dh_python3. (Closes: #614879) * data/fields/architectures: + [NT] Updated to include armhf. * data/files/triplets: + [NT] Updated to include armhf triplet. + [NT] Refresh with the final approved multiarch paths by patch from Steve R. Langasek. * data/output/manual-references: + [NT] Accepted patch from Vincent Fourmond to add the links to the Java Policy. * data/spelling/corrections: + [NT] Added a lot of spelling mistakes with corrections. Kudos to Kevin Ryde for these. (Closes: #619075) * data/spelling/corrections-multiword: + [NT] Removed "helps to" as a spelling mistake. Thanks to Nicholas Bamber for the report. (Closes: #622124) * data/standards-version/release-dates: + [NT] Added 3.9.2 as the newest Standards-Version. Thanks to Sven Joachim for the report. (Closes: #621667) * debian/control: + [NT] Bumped Standards-Version to 3.9.2. + [NT] Updated Build-Depends for debiandoc -> docbook change of the manual. + [NT] Added missing Build-Depends on libhtml-parser-perl. Also added it to suggests, since it is used for XML output. * debian/{docs,rules}: + [NT] Updated to use/install docbook instead of debiandoc. * doc/lintianrc.example: + [NT] Removed reference to LINTIAN_UNPACK_LEVEL. * doc/lintian.sgml: + [RG] Removed file - replaced by doc/lintian.xml. * doc/lintian.xml: + [RG] Added to migrate away from debiandoc. (Closes: #587925) * frontend/lintian: + [NT] Removed the deprecated --unpack-level argument. Only two unpack levels were available and they were equal to the --remove and --unpack options. + [NT] Stopped accepting the environment/config variables LINTIAN_UNPACK_LEVEL and LINTIAN_SECTION. The former is redundant as explained above and the latter was deprecated in favor of LINTIAN_AREA. + [NT] Refactored the frontend to group packages together based on their source package. This allows for cross-package checks. (Closes: #513663) * lib/{Lab/Package,Lintian/Processable*}.pm: + [NT] Added files to assist in package grouping. * lib/Lintian/Command/Simple.pm: + [NT] Added support for chanding directory before running the command. * lib/Lintian/Collect.pm,lib/Lintian/Collect/*.pm: + [NT] Removed assumption that all the information handled by these are available in the current directory. * lib/Lintian/Schedule.pm: + [NT] Removed file, replaced by Lintian::ProcessablePool. * private/refresh-archs: + [SRL] update to output directory mappings based on DEB_HOST_MULTIARCH instead of DEB_HOST_GNU_TYPE. * private/runtests: + [NT] Added support for dumping build logs if a test fails. (Closes: #621658) + [NT] Disabled pkgbinarymangler during tests. (Closes: #621681) * t/tests/binaries-from-other-arch: + [NT] Accepted patch from Benjamin Drung to accept i686-linux-gnu as a valid triplet. This fixes test failure in Ubuntu. (Closes: #622974) * unpack/unpack-{binpkg,changes}-l1: + [NT] Removed unpack scripts for binpkg and changes as these have been replaced by collections. -- Niels Thykier Thu, 21 Apr 2011 12:29:45 +0200 lintian (2.5.0~rc2) unstable; urgency=low Uploading to unstable. * Summary of tag changes: + Added: - unknown-multi-arch-value - package-needs-versioned-debhelper-build-depends + Removed: - old-versioned-python-dependency * checks/binaries: + [ADB] Update binary-from-other-architecture's tests in line with the changes to filename output introduced in 2.5.0~rc1. (Closes: #614906) * checks/changes-file.desc: + [NT] Added oneiric as valid Ubuntu distribution. Thanks to Benjamin Drung for the patch. (Closes: #617227) * checks/deb-format: + [NT] Removed assumption that there was always a changelog in a binary with a data.tar.lzma member. * checks/debhelper: + [NT] Reduced package-lacks-versioned-build-depends-on-debhelper to a pedantic tag. It is now only emitted for debhelper compat levels of 7 or less, since even oldstable ships with debhelper 7. + [NT] Added package-needs-versioned-debhelper-build-depends, which replaces package-lacks-versioned-build-depends-on-debhelper old task of warning if a missing versioned depends may lead to a build failure. Currently this is only emitted for compat 8 (or higher). + [NT] Stopped emitting tags for using dh_* (and dh) if these scripts is in debhelper 7 (or earlier). * checks/fields{,.desc}: + [NT] Recognise Multi-Arch as a known binary field. (Closes: #617816) + [NT] Fixed typo in a tag description. + [NT] Removed old-versioned-python-dependency per request of the Python team. The tag was outdated and most instances of it was false positives. Thanks to Piotr Ożarowski and Jakub Wilk for the report and clarification. (Closes: #619487) + [NT] Accepted patch from Joachim Breitner to support new Haskell package naming scheme. + [NT] Added Built-Using as a known binary and udeb field. This field is supported with dpkg 1.16.0. * checks/files: + [NT] Also check files in /etc/cron.d for dots in filenames. Thanks to Thijs Kinkhorst for the report and patch. (Closes: #615072) + [NT] Applied patch to also detect copies of CKEditor. Thanks to Jeroen Dekkers for the report and the patch. (Closes: #616505) + [NT] Fixed a regression in caused by inconsistent prefixes. * checks/huge-usr-share: + [NT] Removed assumption that there is always files in usr/share. * checks/menu-format: + [NT] Fixed an inconsistency in output of file names. Thanks to أحمد المحمودي (Ahmed El-Mahmoudy) for the report. (Closes: #618921) * checks/menus: + [NT] Fixed check for special files that does not need to be registered with doc-base (e.g. README.html). Thanks to Tanguy Ortolo for the report. (Closes: #617266) + [NT] Accepted patch from Joachim Breitner to support new Haskell package naming scheme. (Closes: #616403) * checks/patch-systems.desc: + [NT] Reduced unneeded-build-dep-on-quilt to a pedantic tag, since some people keep the dependency on quilt to ease backporting for older releases. * data/changelog-file/ubuntu-dists: + [NT] Added oneiric as valid Ubuntu distribution. Thanks to Benjamin Drung for the patch. * data/common/source-fields: + [NT] Added 'package-list' field, which is emitted by dpkg 1.16.0. * data/spelling/corrections: + [NT] Added more misspellings. * t/tests/shared-libs-la-files: + [NT] Fixed an issue where files would not be included in the tarball due to dpkg-source's exclude patterns. (Closes: #619287) * t/tests/*: + [NT] Modified some versioned dependencies that the new dpkg will not consider valid from 1.16.0. (Closes: #619290) -- Niels Thykier Tue, 05 Apr 2011 20:25:09 +0200 lintian (2.5.0~rc1) experimental; urgency=low The "welcome Niels Thykier!" release. * Summary of tag changes: + Added: - build-depends-on-specific-java-doc-package - depends-on-specific-java-doc-package - unneeded-build-dep-on-quilt - description-synopsis-starts-with-article - needless-dependency-on-jre - temporary-debhelper-file - compressed-objects.inv - unused-build-dependency-on-cdbs - python-debug-in-wrong-location - debian-watch-contains-dh_make-template - missing-dependency-on-python-central - python-module-in-wrong-location - missing-dependency-on-python-support - package-installs-python-bytecode - debhelper-maintscript-needs-versioned-build-depends + Removed: - embedded-zlib (now in embedded-library) - embedded-libpng (now in embedded-library) - embedded-libjpeg (now in embedded-library) - embedded-libopenjpeg (now in embedded-library) - package-installs-python-pyc (replaced by package-installs-python-bytecode) * checks/*: + [NT] Use the new pre-sorted file {index,info} when iterating over files. + [NT] All checks now report files without any "./" or "/" prefix. This may break existing overrides. (Closes: #534940) * checks/binaries: + [RA] Exclude kfreebsd-kernel-di-{amd64,i386} from the embedded-zlib check since it's in the kernel. (Closes: #593397) + [RG] Add swipl to the list of known interpreters. (Closes: #591316) + [RG] Detect embedded copies of ftgl, t1lib, gl2ps, libgd2, ncurses, openssl (libcrypto), sqlite/3, libm, ltdl, curl, libmng, libmsn, libmikmod, libmysqlclient, and tinyxml. + [RG] Merge embedded-{zlib,lib{png,jpeg,openjpeg}} into embedded-library. + [RG] Find directories based on the file's type instead of file(1)'s unforgiving output. Thanks, Gabriele Giacone. (Closes: #597990) * checks/cruft{,.desc}: + [NT] Extended the diff-contains-substvars check to also catch files prefixed with a package name. + [NT] Corrected the description of diff-contains-$vcs-control-dir. It incorrectly assumed that -i worked for native packages. (Closes: #609153) + [NT] Moved the list of autotools packages into data/cruft/autotools. + [NT] Clarified that dpkg-source looks for _ and not _ in the description of native-package-with-dash-version. Thanks to Daniel Thomas for the report. (Closes: #594254) * checks/debhelper{,.desc}: + [NT] Fix dependency check for dh_nativejava, default-jdk has never provided dh_nativejava. (Closes: #606506) + [NT] Added check for temporary debhelper files that ought to have been removed by dh_clean. (Closes: #598251) + [NT] Added check for unused build dependency on cdbs. Thanks to Jari Aalto for suggesting this. (Closes: #582769) + [NT] Added check for incorrect debhelper version when using the maintscript feature from debhelper 8.1.0. * checks/debian-source-dir: + [NT] Added missing import of "Util" perl module. Thanks to David Bremner for the patch. * checks/description{,.desc}: + [NT] Add a check for synopsis starting with articles. Thanks to Nelson A. de Oliveira for the patch. (Closes: #603053) + [NT] Fixed false positive description-contains-duplicated-word caused by Lintian ignoring quoted words. Thanks to Gregor Herrmann for report. (Closes: #590723) * checks/fields{,.desc}: + [NT] Added check for packages (build) depending on openjdk-X-doc or classpath-doc instead of the default-jdk-doc metapackage. (Closes: #593837) + [NT] Fixed spelling of metapackage in tag descriptions. + [NT] Added needless-dependency-on-jre tag. + [NT] Corrected Policy references for the uploader tags. Thanks to David Prévot for spotting this issue and providing a patch. (Closes: #602632) + [NT] Fixed false positives for breaks-without-version. The tag will no longer be emitted if the package listed in Breaks is also listed in Replaces. Thanks to Modestas Vainius for the report. (Closes: #605744) + [NT] Clarified that old-versioned-python-dependency can also be triggered if dh_python2 is used and the package is missing ${python:Breaks}. Thanks to Piotr Ożarowski for the report. (Closes: #604167) + [RG] Mention the package's original area in wrong-section-according-to-package-name. (Closes: #608554) * checks/files{,.desc}: + [NT] Fixed false-positive extra-license-file for license.ui files. Thanks to Jeremy Sanders for the report. (Closes: #595941) + [NT] Added hurd-udeb to the list of packages allowed to ship unusual top-level directories. Thanks to Samual Thibault for the patch. (Closes: #591331) + [NT] Fixed spelling of metapackage in empty-binary-package tag description. (Closes: #591300) + [NT] Fixed false-positive extra-license-file for games. Instead of skipping PATH directories Lintian now ignores all executable files. (Closes: #608866) + [NT] Added compressed-objects.inv tag to catch compressed objects.inv files in python documentation. Thanks to Fladischer Michael for the report and a partial patch. (Closes: #608810) + [NT] Added check for misplaced python debug files. Thanks to Jakub Wilk for the report. (Closes: #576014) + [NT] Added check for missing dependency on python-central. Thanks to Jakub Wilk for the report. (Closes: #592533) + [NT] Added check for misplaced Python modules. Thanks to Jakub Wilk for the report. (Closes: #576012) + [NT] Removed the "!= 0755" part from the out of the tag executable-is-not-world-readable, since there are other valid world readable file permissions. + [NT] Added check for missing dependency on python-support. Thanks to Jakub Wilk for the report. (Closes: #592491) + [NT] Added check for packages installing Python eggs and __pycache__ directories. Also extended existing Python bytecode check to include ".pyo" files. Thanks to Piotr Ożarowski, Jakub Wilk and the people in #debian-python for the report and help with implementing this. (Closes: #576005) * checks/init.d.desc: + [RG] Raise severity of init.d-script-starts-in-stop-runlevel. (Closes: #603800) * checks/manpages: + [NT] Fixed typo in locale name. Thanks to Christoph Biedl for spotting this. (Closes: #606933) * checks/menu-format.desc: + [CW] Fix several typos. * checks/menus.desc: + [RA] Rephrase doc-base-uses-applications-section to be clearer that its advice is to remove the "Applications/" part of the section. * checks/nmu: + [RG] Completely abort if debian/changelog is a symlink. (Closes: #582408) * checks/patch-systems{,.desc}: + [NT] Added check for new unneeded-build-dep-on-quilt. (Closes: #582767) * checks/rules: + [RG] Drop some checks for versioned dependencies that can now be satisfied in stable (squeeze). Thanks, Cyril Brulebois. (Closes: #612137) + [RG] Correctly handle include directives preceded by a tab. (Closes: #607281) + [RG] Allow 'ocaml' as an alternative to 'ocaml-nox'. Thanks, Ralf Treinen. (Closes: #612568) * checks/scripts: + [NT] Added mscgen as interpreter. * checks/standards-version: + [RG] Correctly handle cases where debian/changelog is a symlink. * checks/watch-file{,.desc}: + [NT] Added check for dh_make(1) templates in the watch file. Thanks to Nelson A. de Oliveira for the report. (Closes: #600866) + [RG] Document that relying on SourceForge's webpages for finding new versions is not recommended either. (Closes: #593603) * collection/objdump-info: + [RG] Support stricter parameter handling of objdump-info from binutils 2.21. Thanks, Andreas Beckmann. (Closes: #604047, LP: #683347) * data/changelog-file/ubuntu-dists: + [CW] Add natty as a valid Ubuntu distribution, and remove the EOLed intrepid and jaunty. (Closes: #611439) * data/cruft/autotools: + [NT] Added the file which is a list of all packages that will suppress the {ancient,outdated}-autotools-helper-file tags. Currently this is manually updated. This new list includes dh-autoreconf, thanks to Felix Geyer. (Closes: #592358) * data/debhelper/*: + [RG] Refresh against unstable. * data/debian-source-dir/known-files: + [NT] Added the file and included git-patches in it. Thanks to Ron for the report and David Bremner for the initial patch. (Closes: #607502) * data/fields/essential: + [RG] Add hurd. (Closes: #591323) * data/fields/obsolete-packages: + [NT] Added default-jdk-builddep. See README.gcj-native-transition in java-common for the replacement. * data/fields/perl-provides: + [RG] Refresh against perl 5.10.1. * data/files/fonts: + [NT] Made tipa replace xfonts-tipa as font provider. (Closes: #595530) + [RG] Refresh against unstable. * data/files/locale-codes: + [RG] Refresh against isoquery 1.4. * data/shared-libs/ldconfig-dirs: + [NT] Removed the emul/ia32-linux directories as they are no longer used. (Closes: #596848) * data/spelling/corrections: + [NT] Added more corrections. * data/spelling/corrections-case: + [NT] Added DocBook corrections. Thanks to Jakub Wilk. (Closes: #611349) * data/spelling/corrections-multiword: + [NT] Added "allows to" and other similar misspellings. Thanks to Matthew Paul Thomas for the report. (LP: #608231) * debian/control: + [RA] Add the build dependencies required to run the test suite during the build. Many thanks to Niels Thykier for the investigative work to determine which packages are required. (Closes: #593832) + [RA] Remove versions from dependencies when those versions are satisfied by oldstable (lenny). + [NT] Bump debhelper build dependency to 7.0.50~, since some tests depend on using dh7 with override targets. (Closes: #607730) + [NT] Added Niels Thykier to uploaders. + [NT] Introduce (build) dependency on libemail-valid-perl. + [RG] Add a versioned build dependency on libtest-simple-perl or a recent Perl that has Test::More with subtests support. * debian/copyright: + [NT] Added Niels Thykier to maintainers. * debian/rules: + [RA] Run the test suite during the package build. + [NT] Replace dh_clean -k with dh_prep. + [NT] Add support for skipping the test suite per policy 4.9.1. Many thanks to David Bremner for the patch. * debian/compat: + [NT] Bump debhelper compat to 7. * debian/source/lintian-overrides: + [RG] Add overrides for quilt-related checks. * frontend/lintian: + [NT] Ensure that Lintian always reaps processes it started before exiting. In some cases these jobs would attempt to modify the lab while Lintian was trying to remove it. Thanks to Andreas Beckmann for reporting this issue. (Closes: #610218) + [NT] Sorted related options alphabetically. Thanks to Jari Aalto for the initial patch. (Closes: #600905) * lib/Lintian/Check.pm: + [NT] Use Email::Valid to validate email addresses. (Closes: #602655) + [NT] Allow package names to be excluded from regular spelling checks. They are still subject to multi word and case sensitive spelling checks. Thanks to syq for the suggestion. (Closes: #576283) * lib/Lintian/Collect/Binary.pm: + [NT] Pre-sort file index and file info to avoid sorting it repeatedly in the checks. (Closes: #605844) * man/*: + [NT] Rewrote the man pages in pod. (Closes: #600906) * t/runtests: + [RG] Run blackbox tests in parallel too. * t/tests/{rules-not-makefile,scripts-missing-dep}: + [NT] Added new tests. (Closes: #607731) -- Raphael Geissert Tue, 22 Feb 2011 20:28:48 -0600 lintian (2.4.3) unstable; urgency=low The "Policy 3.9.1" release. * Summary of tag changes: + Added: - embedded-library + Removed: - debian-news-entry-without-blank-line - dh_testversion-is-deprecated * checks/binaries{,.desc}: + [RG] Detect embedded copies of expat, libbz2, libmagic, libxml2, pcre3, and tiff. + [RG] Recognise powerpcspe and sh4 ELF objects. + [RA] Warn that spelling-error-in-binary may produce false positives for words containing non-ASCII characters. (See #588661) * checks/changelog-file{,.desc}: + [RA] apt-listchanges has been fixed, so drop the check for NEWS files ending in a trailing blank line. (Closes: #586816) * checks/control-files.desc: + [RA] Add references to Policy requirements added in 3.9.1. * checks/copyright-file{,.desc}: + [RA] Add examples for copyright-without-copyright-notice. Based on a patch by Jari Aalto. (Closes: #580767) + [RA] Remove exceptions for GPL v1, which is now in common-licenses and mentioned in Policy 3.9.1. * checks/cruft.desc: + [RA] Add some hints to the ancient-libtool long description on how to update the libtool files oneself. (Closes: #580767) * checks/debhelper{,.desc}: + [RA] package-lacks-versioned-build-depends-on-debhelper can also trigger if the dependency is present but not tight enough. Thanks, gregor herrmann. (Closes: #588156) + [RA] Allow a tilde after the compatibility level in the debhelper dependency. Thanks, Axel Beckert. (Closes: #583777) + [RA] Remove dh_testversion-is-deprecated. The command is no longer part of debhelper, so using it now just results in a build failure, and there are no instances in the archive. * checks/description.desc: + [RA] Downgrade description-too-long to minor severity to match bug reporting standards for formatting bugs. (Closes: #587837) * checks/files{,.desc}: + [RG] Detect embedded copies of HTMLPurifier. + [RG] Detect embedded copies of the Strophe javascript library. + [RA] Add references to Policy requirements added in 3.9.1. * checks/patch-systems.desc: + [RA] Improve the more-than-one-patch-system long description to explicitly mention the case of packages that depend on dpatch but are in 3.0 (quilt) format and to provide more rationale for the tag. Thanks, Robert Luberda. (Closes: #585657) * checks/po-debconf: + [RA] Ignore comments in po/POTFILES.in. (Closes: #586036) * checks/rules.desc: + [RA] Rephrase the debian-rules-calls-debhelper-in-odd-order long description to try to be clearer about the ordering requirements. (Closes: #579964) * checks/scripts{,.desc}: + [RA] Improve python-script-but-no-python-dep tag description to be clearer about the requirement for a versioned dependency for versioned scripts and to mention ${python:Depends}, created by the various Python debhelper scripts. (Closes: #575590, #582763) + [RA] Add runhaskell and runghc. (Closes: #589266) + [RA] Add references to Policy requirements added in 3.9.1. + [RA] Allow kill - and kill and trap with signal numbers in /bin/sh scrips, now allowed by Policy 3.9.1. * debian/changelog: + [RA] Fix Policy 3.9.0 reference in 2.4.2. (Closes: #587549) * debian/control: + [RA] Update standards version to 3.9.1. * data/output/manual-references: + [RA] Update for Policy 3.9.1. * data/standards-version/release-dates: + [RA] Add release date for Policy 3.9.1. * lib/Lintian/Check.pm: + [RA] More correctly handle hyphenated words to avoid triggering spelling error false positives. (Closes: #588896) * lib/Lintian/Relation.pm: + [RA] Don't require a package name component after a substvar to follow the rules of the beginning of a package name. Fixes stronger-dependency-implies-weaker false positives containing substvars. (Closes: #580494) * lib/Lintian/Schedule.pm: + [ADB] Import "warning" from Lintian::Output, really fixing the error caused by a non-existent file referenced in a .changes file. (Closes: #583555, again) * private/refresh-insserv-data: + [RG] Hardcode the '$all' virtual facility. * reporting/html_reports: + [RA] Stop attempting to report unknown tags with a fake description. This was failing with an error later, and the tag was probably removed from Lintian and is now erroneous. * t/runtests: + [RA] Add support for skipping raw Debian package and source package tests. -- Russ Allbery Sun, 25 Jul 2010 21:50:45 -0700 lintian (2.4.2) unstable; urgency=low The "Policy 3.9.0" release. * Summary of tag changes: + Added: - arch-wildcard-in-binary-package - bad-provided-package-name - conflicts-with-version - copyright-refers-to-deprecated-bsd-license-file - init.d-script-depends-on-unknown-virtual-facility - team-upload-has-incorrect-version-number - xc-package-type-in-debian-control (pedantic) + Removed: - arch-any-in-binary-pkg (now in arch-wildcard-in-binary-package) - package-type-in-debian-control * checks/changes-file.desc: + [RA] Add references for file-size-mismatch-in-changes-file and checksum-mismatch-in-changes-file. * checks/control-file{,.desc}: + [RA] Remove package-type-in-debian-control now that dpkg-dev handles it as desired by the d-i team. xc-package-type-in-debian-control replaces it as a pedantic check to encourage switching to the official name. Thanks, Raphael Hertzog. + [RA] Add reference for debian-control-with-duplicate-fields. * checks/copyright-file{,.desc}: + [RA] Deprecate references to /usr/share/common-licenses/BSD in debian/copyright following the change in Policy 3.9.0. * checks/fields{,.desc}: + [RA] Allow Breaks without a version if the broken package is a virtual package. + [RG] Check for invalid package names in provided (virtual) packages. + [RG] Exclude dash from the depends-on-essential-package checks, as per discusion in debian-devel. (Closes: #587209) + [RA] Allow architecture wildcards in build relations and in the Architecture field of binary and source packages. (Closes: #582804) + [RA] Rename arch-any-in-binary-pkg to arch-wildcard-in-binary-package and diagnose any architecture wildcard, not just "any". + [RA] Warn of using Conflicts with a version, which should normally be Breaks instead, but only at wild-guess certainty for now. * checks/huge-usr-share{,.desc}: + [RA] Count file size from the tar listing rather than using du. The results of du vary based on file system and other factors and make the tag difficult to test. * checks/init.d{,.desc}: + [RG] Check for init.d scripts depending on unknown virtual facilities. + [RA] Remove checkroot from the list of scripts that should use a virtual dependency since $local_fs is not quite the same and some packages (cryptsetup) care about the difference. (Closes: #580082) * checks/manpages{,.desc}: + [RA] Run man page checks using the en_US.UTF-8 locale now that we guarantee it exists. Should hopefully fix occasional problems with col complaining about bad multibyte characters. (Closes: #575661) * checks/menu-format.desc: + [RA] Fix typo in long description of duplicated-key-in-desktop-entry. Thanks, Niels Thykier. (Closes: #580700) * checks/menus: + [RG] Recognise call to update-menus when using 'exec.' + [RA] Skip Haskell library documentation when warning about documentation not registered with doc-base. Patch from Erik de Castro Lopo. (Closes: #586877) * checks/nmu{,.desc}: + [RA] Recognize team uploads and do not treat them like NMUs. Patch from Charles Plessy. (Closes: #582741) * checks/rules.desc: + [RA] Add reference for debian-rules-makemaker-prefix-is-deprecated. * checks/scripts: + [RG] Correctly handle variables at the beginning of a call to dpkg-divert. Thanks, Andreas Beckmann. (Closes: #586984) * collection/objdump-info: + [RG] Disable etch compatibility code. * collection/strings: + [RG] Correctly handle ELF binaries with whitespaces in their name. (LP: #540342) * data/fields/architectures: + [RG] Refresh against dpkg 1.15.7.2. (Closes: #581314, #584743) * data/fields/virtual-packages: + [RA] Update to current unstable and add the old xserver-xorg video and input virtual packages. * data/files/locale-codes: + [RG] Refresh to reflect change to private/refresh-locale-codes. * data/files/triplets: + [RG] Refresh against dpkg 1.15.7.2. * data/init.d/virtual_facilities + [RG] New list of virtual facilities that exist in the archive. * data/output/ftp-master-fatal: + [RA] Remove arch-any-in-binary-pkg. * data/output/manual-references: + [RA] Update against latest Debian Policy and devref. * data/spelling/corrections: + [RG] Add more spelling corrections. * data/spelling/corrections-case: + [RG] Add capitalization correction for OAuth. (Closes: #582353) * data/standards-version/release-dates: + [RA] Add Debian Policy 3.9.0. * frontend/lintian: + [RA] Set a PATH of /bin:/usr/bin if PATH is completely unset. Thanks, Carsten Hey. * lib/Lintian/Collect/Binary.pm: + [RG] Correctly handle ELF binaries with whitespaces in their name. * lib/Lintian/Relation.pm: + [RA] Rather than allowing only a package name or a substvar, allow substvars mixed into the package name. (Closes: #580494) * lib/Lintian/Schedule.pm: + [ADB] Add missing "use Lintian::Output", required for the use of warning(). (Closes: #583555) * private/refresh-insserv-data: + [RG] New script to collect insserv data from the archive. * private/refresh-locale-codes: + [RG] Print elements with values only once. * private/refresh-virtual-packages-data: + [RA] Fix handling of # Keep: lines to work correctly now that virtual packages mentioned only once are excluded. -- Russ Allbery Sun, 27 Jun 2010 22:08:59 -0700 lintian (2.4.1) unstable; urgency=low The "there's always a hidden bug" release. * checks/manpages: + [RG] Use "use" instead of "require" for Text::ParseWords and move it outside a loop. * collection/debfiles: + [RG] Properly handle cases where debian is a symlink. * data/spelling/corrections: + [RG] Add more spelling corrections. * frontend/lintian: + [RG] Remove finished processes from the processes hash to avoid trying to kill dead processes. + [ADB] Don't add the dependencies of the override-file check script to the list of checks to run if --no-override was specified. (Closes: #579211) -- Raphael Geissert Mon, 26 Apr 2010 22:44:35 -0500 lintian (2.4.0) unstable; urgency=low The "and this is just the beginning" release. * Summary of tag changes: + Added: - embedded-libjpeg - embedded-libopenjpeg - embedded-libpng * checks/binaries{,.desc}: + [ADB] Use Lintian::Check::check_spelling() + [RG] Detect embedded copies of libpng, lib{,open}jpeg. + [RA] Suppress embedded-zlib if the zlib implementation is the Pascal version. FPC doesn't support dynamic linking at this time, and this isn't the problem the tag was designed to catch. * checks/changelog-file: + [ADB] Use Lintian::Check::check_spelling() * checks/changes-file{,.desc}: + [ADB] New check script for .changes file tests + [RA] Add maverick as a valid Ubuntu distribution. + [ADB] Recognise *-volatile as valid distributions. * checks/copyright-file: + [ADB] Use Lintian::Check::check_spelling() * checks/deb-format.desc: + [RG] deb-format needs changelog-file. * checks/debconf.desc: + [RG] Add missing dependency on debfiles collection script. * checks/debian-readme: + [ADB] Use Lintian::Check::check_spelling() * checks/debian-source-dir.desc: + [RA] Downgrade missing-debian-source-format to wishlist and tone down the long description a bit. * checks/description: + [ADB] Use Lintian::Check::check_spelling{,_picky}() * checks/fields: + [RA] Add an exception for diffutils for depending on an essential package without a version, since diff was renamed to diffutils and depending on diffutils effectively is a versioned dependency. Thanks, Santiago Vila. (Closes: #575073) * checks/files{,.desc}: + [RA] The simplepie class can begin with class[.-]. Patch from Marcelo Jorge Vieira (metal). (Closes: #575879) + [RG] Fix typo in empty-binary-package's description. Thanks, Jakub Wilk. (Closes: #576804) + [RG] Exclude udebs from empty-binary-package check. Thanks, Vagrant Cascadian. (Closes: #576581) + [RG] Also warn about bmp files in /usr/lib. Thanks, Rene Engelhard. (Closes: #578776) * checks/init.d: + [RA] Allow $all to satisfy a $remote_fs or $local_fs requirement for Required-Stop, since this has now been implemented. Thanks, Michael Meskes. + [RA] Recognize negated file checks when checking for file sourcing without a test. Thanks, Jérémie Corbier. (Closes: #575363) + [ADB] Use == for numeric comparison. * checks/lintian.desc: + [ADB] Remove information about .changes-related tags, now included in checks/changes-file.desc * checks/manpages: + [ADB] Replace Spelling::spelling_check() call with the new Lintian::Check::check_spelling() * checks/menus: + [ADB] Use Lintian::Check::check_spelling{,_picky}() * checks/nmu: + [RA] Skip leading changelog lines that do not begin with * when looking for things like non-maintainer upload notes at the start of the changelog entry. Patch from Gunnar Wolf. Thanks, Vincent Danjean. (Closes: #575192) * checks/rules: + [RG] Warn about missing versioned build dependencies for ocaml-related packages. (Closes: #567949) * checks/scripts: + [RA] Track local diversions like other diversions for the purposes of checking for orphans and diversions of unknown files. Partly addresses #575361. * checks/watch-file{,.desc}: + [RA] Warn about use of dversionmangle instead of uversionmangle to handle tildes for upstream pre-releases. Patch from Peter Eisentraut. (Closes: #575064) * collection/*.desc: + [RG] Remove now-unneeded Order keys. * data/changelog-file/ubuntu-dists: + [RA] Add maverick as a valid Ubuntu distribution. (Closes: #576282) * data/fields/virtual-packages: + [RG] Refresh against unstable. * data/files/fonts: + [RG] Refresh against unstable. * data/files/locale-codes: + [RG] Refresh to include ISO 639-3 codes. * data/output/ftp-master-{,non}fatal: + [RG] Refresh, without changes. * data/spelling/corrections{,-case,-multiword}: + [ADB] New files to contain the various types of spelling corrections made by Lintian's spelling checks. + [RG] Detect "pleaes" -> "please" typo. + [RG] Add more spelling corrections. * doc/desc-files: + [ADB] Add "changes" as an acceptable type for collection and check scripts. + [RG] Document Sort and Output-Format fields of the tests' desc files. * frontend/lintian: + [ADB] Add "changes" as a valid type for collection and check scripts + [ADB] Replace the special-cased parsing of .changes files with calls to unpack-changes-l1 and Lintian::Schedule::add_changes() + [ADB] Bump lab format to 10 for the addition of the "changes" lab directory + [ADB] Remove import of Lintian::Check which is no longer required after the .changes parsing code was removed + [RG] Support running collection and check scripts in parallel as soon as their prerequisites are satisfied. * frontend/lintian-info: + [ADB] Add support for .changes tags to --annotate * lib/Lab.pm: + [ADB] Add a "changes" directory to the lab structure. For static labs, the directory is automatically added the first time a .changes-aware Lintian accesses the lab. * lib/Lintian/Check.pm: + [ADB] Add new check_spelling and check_spelling_picky methods, based on the spelling_check and spelling_check_picky methods from lib/Spelling.pm (renamed for consistency with check_maintainer). * lib/Lintian/Collect.pm: + [ADB] Add support for Lintian::Collect::Changes * lib/Lintian/Collect/Binary.pm: + [ADB] The STACK element of objdump_info's result is a string not a number; treat it as such consistently * lib/Lintian/Collect/Changes.pm: + [ADB] New module providing information about .changes files and the files referenced therein * lib/Lintian/Command.pm: + [RG] Add done() method to check whether a process can be reaped without blocking. * lib/Lintian/Command/Simple.pm: + [RG] New simple command interface which supports backgrounded commands and easier waiting on commands without the full features of Lintian::Command. * lib/Lintian/DepMap.pm: + [RG] New module to manipulate dependency maps. * lib/Lintian/DepMap/Properties.pm: + [RG] New subclass of Lintian::DepMap that allows properties to be associated with Lintian::DepMap nodes. * lib/Lintian/Schedule.pm: + [ADB] Add support for scheduling .changes files + [ADB] Fix an uninitialised value warning caused by .changes files by treating a missing Version: field as being empty * lib/Lintian/Tags.pm: + [ADB] Remove the special-casing of .changes files in the output from file_start() + [ADB] Don't refer to .changes files as "packages" * lib/Spelling.pm: + [ADB] Removed as its functionality has been replaced by new methods in Lintian::Check. * man/lintian.1: + [ADB] Add changes-file to the list of check scripts. * private/refresh-locale-codes: + [RG] Include ISO 639-3 codes. * private/refresh-virtual-packages-data: + [ADB] Use "==" for numeric comparison, not "eq". * private/update-coverage: + [ADB] Support .changes file tags * t/runtests: + [ADB] Don't flag lintian output lines for .changes tags as invalid + [ADB] When checking the number of jobs to run in parallel, use "==" for numeric comparison rather than "eq". * t/scripts/tags.t: + [ADB] Use Lintian::Check::check_spelling() rather than Spelling.pm. * t/tests/README: + [ADB] Update the example .changes sed script to match the new output format. * testset/runtests: + [ADB] Don't flag lintian output lines for .changes tags as invalid * unpack/unpack-changes-l1: + [ADB] New script to "unpack" a .changes file, creating a fields/ hierarchy * unpack/unpack-srcpkg-l1: + [ADB] Support tarballs in the .tar.xz format. (Closes: #575633) -- Raphael Geissert Sat, 24 Apr 2010 13:51:45 -0500 lintian (2.3.4) unstable; urgency=low The "miscellaneous bug fix" release. * Summary of tag changes: + Added: - control-file-with-CRLF-EOLs - debian-rules-makemaker-prefix-is-deprecated - empty-binary-package - incorrect-locale-code - missing-debian-source-format - package-type-in-debian-control - possible-new-upstream-release-without-new-version - star-file - unknown-file-in-debian-source - unknown-source-format - unknown-locale-code * checks/binaries: + [RA] Exclude packages from the klibc source package from the embedded zlib check since klibc legitimately includes its own copy. Thanks, maximilian attems. (Closes: #573914) * checks/changelog-file{,.desc}: + [RA] New check for a changelog entry indicating a new upstream release but no change in the upstream portion of the package version. Idea from Emilio Pozuelo Monfort. (Closes: #569129) * checks/control-file: + [RG] Update package-depends-on-hardcoded-libc exception to also exclude eglibc. Based on a patch from Cyril Brulebois. (Closes: #573398) + [RA] Also exclude *-common packages from weak-library-dev-dependency checks. Thanks, Emilio Pozuelo Monfort. (Closes: #570408) + [RA] Suppress missing-separator-between-items if either of the items contain substvars other than *:Depends substvars, since substvars may be used to assemble the components of a dependency. Thanks, Matthias Klose. (Closes: #573815) + [RA] Warn about Package-Type instead of XC-Package-Type in debian/control. Patch from Cyril Brulebois. (Closes: #573399) * checks/cruft{,.desc}: + [RA] Provide more information in native-package-with-dash-version long description about how native packages can be created by mistake. Thanks, Jari Aalto. (Closes: #573839) + [RA] Reword source-contains-prebuilt-windows-binary long description. (Closes: #574515) + [RG] Warn about control and changelog files with CRLF end of line terminators. Thanks, Michal Čihař. (Closes: #564713) * checks/debconf: + [RA] Don't warn about the length of the short description for templates of type text in udebs, since they're frequently used by including them into other templates at runtime. Patch from Frans Pop. (Closes: #560414) * checks/debian-source-dir{,.desc}: + [RA] New check script from Raphaël Hertzog checking various things about debian/source/* control files including checking for a source format control file. (Closes: #566820) * checks/fields.desc: + [RA] Correct the supported source formats in the long description of unsupported-source-format. Patch from Raphaël Hertzog. + [RA] Stop recommending a dependency on perl-modules. Patch from Niko Tyni. (Closes: #568749) * checks/files{,.desc}: + [RA] New check for binary packages that are empty except for standard files and don't declare themselves to be metapackages or other types of dummy packages. Based on a patch from Luca Falavigna. (Closes: #569220) + [RG] New check for packages shipping files literally called '*' (star symbol). Thanks, Niels Thykier. (Closes: #574771) + [RG] New checks for incorrect and unknown locale codes in /usr/share/locale subdirectories. * checks/init.d{,.desc}: + [RA] Exclude symlinks to upstart-job from init script syntax checks. Based on a patch by Jos Boumans. (Closes: #569492) + [RA] Allow umountnfs to satisfy a $remote_fs requirement and umountnfs or umountfs to satisfy a $local_fs requirement in LSB headers, avoiding false positives in unusual situations such as rsyslog. Thanks, Michael Biebl. (Closes: #571280) + [RA] Allow $all to satisfy a $remote_fs or $local_fs requirement in Required-Start, but (per the wiki) not Required-Stop. Thanks, Michael Meskes. (Closes: #574970) * checks/manpages.desc: + [RA] Clarify the long description for manpage-has-bad-whatis-entry. Thanks, Jari Aalto. (Closes: #573837) * checks/rules: + [RA] Allow ant1.7 to satisfy a build requirement for ant. Thanks, Rene Engelhard. (Closes: #572430) + [RG] Require a versioned build-dependency on cdbs if scons.mk or perl-build.mk are used. (Closes: #574744) + [RG] Warn about installing files specifying the destination directory with PREFIX when Perl's MakeMaker build system is used. Based on a patch by Niko Tyni. (Closes: #568748) + [RA] Also check binary-independent, wildcard, and override rules for programs requiring build dependencies, but accept them in either Build-Depends or Build-Depends-Indep. + [RA] Check for a quilt dependency when the debhelper 7 quilt module is used. Thanks, Martin Meredith. (Closes: #548094) + [RA] Allow python2.6 packages to satisfy Python build dependencies. * checks/scripts{,.desc}: + [ADB] Update the list of octave interpreters, adding octave3.2 (Closes: #574048) and removing octave2.1 (only available in lenny and earlier) and octave3.1. + [RA] Allow non-executable *.pm files in the examples directory to start with a line like #!perl. This is probably just an editor hint. Thanks, Thijs Kinkhorst. (Closes: #574826) + [RA] Mention #!@BASH@ and similar cases in the long tag description of example-interpreter-not-absolute. + [RA] Add Python 2.6 to recognized Python versions. + [RA] Add liquidsoap and texlua to known interpreters. * checks/shared-libs: + [RA] symbols-declares-dependency-on-other-package should not have trailing whitespace for unversioned dependencies. Patch from Modestas Vainius. (Closes: #570380) * checks/standards-version: + [RG] Don't warn about timewarp-standards-version when the changelog's distribution is "UNRELEASED." Thanks, Raphaël Hertzog. (Closes: #571616) * collection/debfiles: + [RA] Simplify the logic since the entire debian directory is always copied. Patch from Raphaël Hertzog. * data/debhelper/*: + [RG] Refresh against unstable. * data/fields/{perl-provides,virtual-packages}: + [RG] Refresh against unstable. * data/files/architectures: + [RG] Refreshed against dpkg 1.15.6. (Closes: #563495) * data/files/fonts: + [RG] Refresh against unstable. * data/files/incorrect-locale-codes: + [RG] New list of common incorrect locale names * data/files/locale-codes: + [RG] Generated from unstable's iso-codes. * data/files/triplets: + [RG] Refreshed against dpkg 1.15.6. * debian/control: + [RG] Update package description to mention Policy version 3.8.4 instead of 3.8.3. Should have been done on the previous release. * debian/source/format: + [RA] Switch package format to 3.0 (native). * debian/postinst: + [RG] Use triggers to ensure an up-to-date locale in all cases. (Closes: #567451) * frontend/lintian: + [RA] Globally ignore SIGPIPE, forcing error return codes from write. Hopefully will resolve some unreproducible occasional crashes. (Closes: #558360) * lib/Lintian/Tag/Info.pm: + [JP] Don't link to references with no URL. (Closes: #572297) * lib/Spelling.pm: + [ADB] Remove duplicate entries from the correction list. Thanks, Jakub Wilk. (Closes: #572260) + [ADB] Add a spelling correction for "unecessary". Thanks, Jakub Wilk. (Closes: #572456) * man/lintian-info.1: + [CW] Fix typo. + [RA] Document new debian-source-dir check script. * private/refresh-locale-codes: + [RG] New script to generate a list of locale codes. * reporting/templates/foot.tmpl: + [ADB] Replace the "please mail comments to the maintainer" request with a pointer to reportbug. (Closes: #572298) * testset/etcfiles/: + [RA] Fix problems with the md5sums test suite construction in the legacy etcfiles test. Thanks, Frank Lin PIAT. (Closes: #573081) * t/runtests: + [RG] Add support for architecture-specific tests. + [RG] Add support for To-Do tests. * t/tests/binaries-multiarch/: + [RG] Fix test failure in non-i386 architectures by normalising the expected output. Thanks, Niko Tyni. (Closes: #568680) -- Russ Allbery Mon, 22 Mar 2010 16:23:51 -0700 lintian (2.3.3) unstable; urgency=low The "Policy 3.8.4" release. * Summary of tag changes: + Added: - missing-dependency-on-phpapi - obsolete-comments-style-in-php-ini - package-contains-mime-cache-file - package-contains-mimeinfo.cache-file - triplet-dir-and-architecture-mismatch * checks/binaries{,.desc}: + [RG] Warn about packages shipping PHP extensions but not depending on phpapi-*. * checks/debconf.desc: + [RG] There are legitimate uses of db_input on the postinst script, downgrading the certainty of the check. (Closes: #543418) * checks/fields{,.desc}: + [RG] Don't warn about depending on the phpapi-* virtual package. * checks/files{,.desc}: + [RG] Warn about packages shipping PHP .ini files using old-style (#) comments separators. + [RG] Warn about packages embedding the dojo and dijit javascript libraries. + [RG] Don't warn about packages containing /sys or /selinux directories. Policy 3.8.4 grants an exception to the FHS. + [RG] Warn about packages containing (/usr)/lib/ directories for a that isn't the one of the architecture of the package, per Policy 3.8.4 requirement. + [RG] Warn about packages shipping cache files generated by update-mime-database. Thanks, Jakub Wilk. (Closes: #563685) + [RG] Warn about packages shipping mimeinfo.cache files, generated by update-desktop-database. Thanks, Raphaël Hertzog. (Closes: #567753) * checks/init.d: + [RG] Warn about init scripts depending on checkroot instead of $local_fs. + [RG] Remove experimental flag from remote_fs and local_fs checks. + [RG] Skip rc and rcS from the init script checks. * data/debhelper/*: + [RG] Refresh against unstable. * data/fields/{perl-provides,virtual-packages}: + [RG] Refresh against unstable. * data/files/fonts: + [RG] Refresh against unstable. * data/files/triplets: + [RG] New file with a list of triplet<->architecture relationships. * data/output/ftp-master-{,non}fatal: + [RG] Refresh, without changes. * data/standards-version/release-dates: + [RG] Add the release date for Policy 3.8.4. * debian/control: + [RG] Update standards version to 3.8.4 (no changes required). * debian/postinst: + [RG] Generate the locale under the correct directory. * debian/prerm: + [RG] Don't ignore errors on shell commands failures. * frontend/lintian: + [RG] Fix path to the locale directory passed to LOCPATH. (Closes: #555408) * private/refresh-archs: + [RG] Generate a list of triplet<->architecture relationships too. * t/runtests: + [RG] Update standards version to 3.8.4. -- Raphael Geissert Sun, 31 Jan 2010 02:59:56 -0600 lintian (2.3.2) unstable; urgency=high * Summary of tag changes: + Added: - conflicting-negation-in-source-relation * checks/{control-files,files,menu-format,menus}: + [RG] Fix CVE-2009-4014: format string vulnerabilities. * checks/{fields,patch-systems}: + [RG] Fix CVE-2009-4013: missing control files sanitation. * checks/{files,patch-systems,po-debconf}: + [RG] Fix CVE-2009-4015: arbitrary command execution. * checks/changelog-file: + [RA] Avoid Perl warning when the NEWS file ends immediately after the most recent entry. (Closes: #563585) * checks/copyright-file: + [RA] Relax the regex for matching dh-make-perl boilerplate to catch the current text. Thanks, gregor herrmann. (Closes: #563571) * checks/fields{,.desc}: + [RA] Reject "all" and "any" in architecture qualifications for build dependencies. Thanks, Jonathan Yu. + [RA] Warn if some architectures in a build relation are negated and others are not. * checks/files.desc: + [JP] Fix outdated reference in file-in-usr-lib-site-python. * checks/infofiles: + [RA] Pass LOCPATH to subprocesses. + [ADB] Don't flag info files with filenames of info-N.gz as having an incorrect extension if N contains multiple digits. (Closes: #564900) * checks/manpages: + [RA] Pass LOCPATH to subprocesses. * collection/objdump-info: + [RG] Fix CVE-2009-4015: arbitrary command execution. * collection/source-control-file: + [RG] Fix CVE-2009-4013: missing control files sanitation. * data/output/manual-references: + [JP] Refresh reference data against Policy 3.8.3, doc-base 0.9.5, developers-reference 3.4.3, and Python Policy 0.9.0. * debian/control: + [RA] Depend on locales. * debian/prerm: + [RA] Remove /var/lib/lintian/locale on any removal except upgrades. * debian/postinst: + [RA] Generate an en_US.UTF-8 locale in /var/lib/lintian/locale for use for tests, particularly man page tests. (Closes: #555408) * frontend/lintian: + [RA] Set LOCPATH to LINTIAN_ROOT/locale or /var/lib/lintian/locale, whichever exist. + [RG] Fix CVE-2009-4013: missing control files sanitation. * lib/Lintian/Collect.pm: + [ADB] Update the documentation to reflect the existence of Lintian::Collect::Binary. * lib/Lintian/Collect/Binary.pm: + [ADB] Correct a reference in the documentation indicating that the module collects data for source packages. * lib/Lintian/Schedule.pm: + [RG] Fix CVE-2009-4013: missing control files sanitation. + [RG] Fix CVE-2009-4014: format string vulnerabilities. * lib/Spelling.pm: + [RA] Add additional spelling corrections. + [RA] Remove spelling correction for parameterize. This is the correct US spelling. Thanks, Jonathan Yu. (Closes: #564523) + [RA] Remove spelling correction for useable, a variant permitted by the OED. Thanks, Vagrant Cascadian. (Closes: #564740) + [RG] Add more spelling corrections. * lib/Util.pm: + [RA] Pass LOCPATH to subprocesses. + [RG] Fix CVE-2009-4015: arbitrary command execution. * man/lintian.1: + [RA] Spelling fix. Thanks, A. Costa. (Closes: #564017) * private/refresh-manual-refs: + [RG] Fix CVE-2009-4015: arbitrary command execution. * reporting/{config,html_reports}: + [JP] Make it possible to keep a record of statistics of previous archive-wide Lintian executions. * reporting/templates/maintainer.tmpl: + [RA] Really fix the logic to optionally display the archive area of additional package entries under the same source package. * unpack/unpack-{bin,src}pkg-l1: + [RG] Fix CVE-2009-4013: missing control files sanitation. -- Raphael Geissert Wed, 27 Jan 2010 10:55:03 -0600 lintian (2.3.1) unstable; urgency=low The "goodbye to unpack level 2" release. * Summary of tag changes: + Added: - init.d-script-missing-start - debian-news-entry-has-unknown-version - debian-news-entry-uses-asterisk - debian-news-entry-without-blank-line - non-native-package-with-native-version - udev-rule-in-etc * {checks,collection}/*.desc: + [RG] Remove Unpack-Level fields and depend on the 'unpacked' collection script as needed. * checks/binaries: + [RG] Recognise hppa64 binaries and ignore them on the binary-from-other-architecture check for hppa. Thanks, Matthias Klose. (Closes: #562788) * checks/changelog-file{,.desc}: + [RA] Per devref, recommend against NEWS.Debian entries formatted with asterisks like changelog entries. + [RA] Check that the most recent NEWS.Debian entry is followed by a blank line for apt-listchanges. Thanks, Adeodato Simó. (Addresses the Lintian part of #523436) + [RA] Warn if the version of the latest NEWS.Debian entry doesn't appear in the changelog. Thanks, Christoph Berg. (Closes: #550594) * checks/control-file: + [RA] Fix parsing of dependencies for weak-library-dev-dependency when the content of Depends begins with a newline. Thanks, Julien Cristau. (Closes: #563370) * checks/cruft: + [RA] Fix the regex to properly ignore CMakeCache.txt in the debian directory. Thanks, Aaron M. Ucko. (Closes: #553264) + [RA] Check for a non-native package with a native version. Thanks, Andreas Beckmann. * checks/debhelper: + [RA] Always warn if debhelper is in use but no ${misc:Depends} dependency is present rather than checking which specific debhelper commands use it. Any debhelper command may start adding dependencies to ${misc:Depends} at any time. Lower the certainty to possible, since a missing ${misc:Depends} may not cause problems. * checks/fields.desc: + [RA] Fix spelling error in dfsg-version-with-period tag description. Thanks, Jakub Wilk. (Closes: #563185) * checks/files{,.desc}: + [RG] Add a missing 'it' to the description of duplicate-font-file. + [RG] Add detection of nusoap to the embedded PHP libraries check. + [RG] Check that udev rules are not installed in /etc/udev/rules.d. Thanks, Marco d'Itri. (Closes: #559208) * checks/init.d{,.desc}: + [RG] Bump severity of init.d-script-sourcing-without-test to serious. + [RG] Lower the severity of init.d-script-does-not-provide-itself to minor. + [RG] Fix a init.d-script-possible-missing-stop false positive when stopping on runlevels 2-5. + [RG] Mention 'killprocs' in init.d-script-possible-missing-stop's description. Thanks, Kurt Roeckx. (Closes: #562608) + [RG] Warn about init scripts with incomplete start runlevels. + [RG] Tighten check for missing dependency on local_fs or remote_fs when using files with a name of 'var*' or 'usr*'. + [RG] Also recognise the use of the -r test as a file test, and the test command when determining whether a /etc/default file is being sourced unconditionally. + [RG] Correct the description of the missing-dependency-on-{remote,local_fs} tags where 'is' was meant to be used instead of 'are'. * checks/manpages.desc: + [RA] Downgrade spelling-error-in-manpage to minor severity. (Closes: #563039) * checks/patch-systems: + [RA] Avoid false positives for patches modifying files in debian/* when the parent directory in which the patch was created is named debian. Thanks, Mark Brown. (Closes: #562875) * collection/ar-info: + [RA] Skip *.a files that are dangling symlinks and discard error output from ar. Correctly handle file names that contain shell metacharacters. * collection/unpacked{,.desc}: + [RG] New scripts to replace the unpack level 2. * frontend/lintian: + [RG] Deprecate and replace unpack levels with the use of collection scripts. + [ADB] Remove an unused variable declaration. * lib/Spelling.pm: + [ADB] Add corrections for "nam" (name) and "nams" (names). + [RG] Add some more spelling errors. + [RG] Uppercase every character of the correction if every character of the original word is too. + [RA] Superceded is an acceptable alternative spelling of superseded. * man/lintian.1: + [RG] Document deprecation of unpack levels. + [ADB] Add the new "unpacked" collection script to the list of such scripts. + [ADB] Correct the documentation of --tags-from-file to indicate that the file contains tags to issue, not suppress. * reporting/html_reports: + [RA] Sort the tags so that the maintainer view will group repeated instances of the same tag and display extra information in sorted order. (Closes: #563126) + [RA] Better handle missing information for packages in the package lists and default the package area to main. * reporting/templates/maintainer.tmpl: + [RA] Fix the logic to optionally display the archive area of additional package entries under the same source package. * unpack/unpack-{src,bin}pkg-l2: + [RG] Dropped in favour of collection/unpacked. -- Russ Allbery Sat, 02 Jan 2010 21:01:14 -0800 lintian (2.3.0) unstable; urgency=low The "welcome Raphael Geissert!" release. * Summary of tag changes: + Added: - capitalization-error-in-description (split from spelling-error-in-description) - debian-rules-automatically-updates-control - duplicate-in-relation-field (pedantic) - duplicated-compressed-file - init.d-script-missing-dependency-on-local_fs (experimental) - init.d-script-missing-dependency-on-remote_fs (experimental) - obsolete-relation-form-in-source - ocaml-dangling-cmi - ocaml-dangling-cmx - ocaml-dangling-cmxa - ocaml-dangling-cmxs - ocaml-dev-file-in-nondev-package (pedantic) - ocaml-dev-file-not-in-usr-lib-ocaml (pedantic) - ocaml-meta-without-suggesting-findlib (pedantic) - ocaml-stray-cmo - spelling-error-in-manpage + Removed: - build-depends-without-arch-dep * checks/*: + [RA] Use Lintian::Tags instead of Tags. * checks/binaries{,.desc}: + [RA] Allow any RPATH containing $ORIGIN or ${ORIGIN}, not just the literal value $ORIGIN. (Closes: #557511) + [ADB] Exempt all binary packages built from the zlib source from the embedded-zlib test, not just those with binary package names matching zlib.+. Thanks, Mark Brown. + [RA] Spelling errors are no longer normalized to lowercase. * checks/changelog-file: + [RA] Suppress latest-debian-changelog-entry-without-new-date if the distribution is UNRELEASED. Thanks, Raphaël Hertzog. (Closes: #560149) + [RA] Also ignore too-long lines that consist of "See" followed by an unbreakable word. Thanks, Jari Aalto. (Closes: #560005) + [RA] Downgrade spelling tags to severity: minor. * checks/control-file{,.desc}: + [RA] Check for < and > version dependencies in debian/control since dpkg-source helpfully rewrites and fixes them in binary packages. Thanks, Jakub Wilk. (Closes: #557971) + [RA] Add a pedantic check for duplicates in relation fields in debian/control prior to the fixes applied by dpkg-dev. Thanks, Nelson A. de Oliveira. (Closes: #548819) + [RA] Fix a typo that skipped checks on the Build-Conflicts field. + [RA] Rework weak-library-dev-dependency to allow more approaches to bounding the shared library version. Skip complex cases with or'd dependencies and assume the maintainer knows what they're doing. Add more explanation to the long tag description. Thanks, Reinhard Tartler and Mike Hommey. (Closes: #557449) * checks/copyright-file.desc: + [RA] Downgrade spelling-error-in-copyright to minor and mention false positive possibilities and an override in the tag description. * checks/cruft: + [RA] Allow an automake or libtool dependency in Build-Depends-Indep to also satisfy the check for outdated helper files. Thanks, Guillaume Delacour. (Closes: #557530) + [RA] Ignore files in .pc, created by unpacking 3.0 (quilt) packages. Thanks, Ahmed El-Mahmoudy. (Closes: #556022) * checks/debian-readme.desc: + [RA] Downgrade spelling tag to severity: minor. * checks/description{,.desc}: + [RA] Downgrade spelling tag to severity: minor. + [RA] Split capitalization-error-in-description to a separate tag and downgrade its certainty to wild-guess. * checks/fields{,.desc}: + [ADB] Re-order the fields of build-depends-on-build-essential so that all of the descriptive text is included. Thanks, Jonathan Wiltshire. (Closes: #557786) + [RA] For lib-recommends-documentation, exclude packages ending in -tools or -bin. Thanks, Jay Berkenbilt. (Closes: #557883) + [RA] Warn of build dependencies on python*-dev if no architecture- dependent packages are being built. Patch from Luca Falavigna. (Closes: #551793) + [RA] Add emacs22 to obsolete emacs versions. Thanks, Sven Joachim. (Closes: #560053) * checks/files{,.desc}: + [RA] New check for files present in both compressed and uncompressed form. Patch from Raphael Geissert. (Closes: #546174) + [RA] Allow /etc/sudoers.d files to be mode 0440 as recommended by sudo. Thanks, Thijs Kinkhorst. (Closes: #557353) * checks/huge-usr-share{,.desc}: + [RA] Increase the thresholds to 2MB (over 50%) and 4MB (any percentage), and mention the thresholds in the tag description. Thanks, Christoph Egger. (Closes: #561720) * checks/init.d{,.desc}: + [RA] Add checks for missing dependencies on $local_fs or $remote_fs based on what files appear to be used in the init scripts. Patch from Raphael Geissert. (Partly addresses #405454) * checks/manpages{,.desc}: + [RG] Check for spelling errors in English manpages. * checks/manpages.desc: + [RA] Clarify the long description of hyphen-used-as-minus-sign. Note that Debian groff is currently patched to avoid this problem, but hopefully that divergence can be removed. Reference groff-base's README.Debian for more information. (Closes: #548844) * checks/menus.desc: + [RA] Change spelling tags to severity: minor and certainty: certain since there are few false positives but minor is the correct severity. * checks/ocaml{,.desc}: + [RA] New checks for OCaml packaging. Contributed by Stéphane Glondu. (Closes: #528367) * checks/patch-systems{,.desc}: + [RA] Recommend DEP-3 in {dpatch,quilt}-patch-missing-description and reference the document. Thanks, Raphaël Hertzog. (Closes: #554025) + [RA] Allow DEP-3 headers in dpatch patches to satisfy the description requirement. Thanks, Paul Gevers. (Closes: #548640) * checks/rules{,.desc}: + [RA] Remove build-depends-without-arch-dep. If the package only builds architecture-independent packages, the distinction between Build-Depends and Build-Depends-Indep is meaningless and there's no reason, even pedantically, to worry about the separation. Thanks, Charles Plessy. (Closes: #552200, #555667) + [RA] Add a new check for DEB_AUTO_UPDATE_DEBIAN_CONTROL = yes. Thanks, Nelson A. de Oliveira. (Closes: #557120) * collection/ar-info{,.desc}: + [RA] Collects the results of ar t on all *.a files, used by the new OCaml checks. Contributed by Stéphane Glondu. * collection/override-file: + [RA] Check debian/source/lintian-overrides before debian/source.lintian-overrides for source package overrides. Thanks, martin f krafft. (Closes: #554617) * data/debhelper/*: + [ADB] Refresh against unstable. * data/fields/{perl-provides,virtual-packages}: + [ADB] Refresh against unstable. * data/files/fonts: + [ADB] Refresh against unstable. * data/output/ftp-master-{non,}fatal: + [RA] New data files listing tags that may result in an automated upload reject. * doc/lintian.sgml: + [RA] Document debian/source/lintian-overrides as the new preferred location for source overrides. * debian/control: + [RG] Add Raphael Geissert to Uploaders. + [RA] Add ${misc:Depends} to dependencies. * debian/copyright: + [RG] Add Raphael Geissert to maintainers. * frontend/lintian: + [RA] Add options --suppress-tags and --suppress-tags-from-file to completely suppress the given tags. + [RA] Support comments and blank lines in --tags-from-file files. + [RA] Run the check modules in sorted order. + [RA] Create a global Lintian::Tags object and use it instead of setting variables in the Tags namespace. Move display level code from here to Lintian::Tags. Adjust calls for the new Lintian::Tags module. + [RA] Add option -F or --ftp-master-rejects which only checks tags that could result in an automatic upload reject. * frontend/lintian-info: + [RA] Add -h/--help option. Patch from gregor herrmann. (Closes: #558214) * lib/Lintian/Check.pm: + [RA] Use Lintian::Tags instead of Tags. * lib/Lintian/Output.pm: + [RA] print_tag() now takes an additional argument containing override data and expects a Lintian::Tag::Info object as the tag info instead of a hash. + [RA] Adjust for the renaming of pkg in the file information hash. * lib/Lintian/Output/*.pm: + [RA] Adjust for print_tag() and file information hash changes. * lib/Lintian/Output/XML.pm: + [RA] Rewrite to be more readable and fix the tags attribute for overridden experimental tags. * lib/Lintian/Relation.pm: + [RA] Fix bugs in unparse() and duplicates() that caused duplicates() to crash when processing duplicates between an alternative and a regular package. Thanks, Jonathan Yu. (Closes: #559625) * lib/Lintian/Tag/Info.pm: + [RA] Add a code method that returns the tag code corresponding to the severity and certainty for a tag, based on get_tag_code from Tags.pm. + [RA] Add certainty, severity, and tag accessor methods. + [RA] Add a method saying whether a tag is experimental. + [RA] Record the check script corresponding to each tag and add an accessor method for it. + [RA] Add a sources method returning a list of sources referenced by a tag, based on the get_tag_source method from Tags.pm. * lib/Lintian/Tags.pm: + [RA] New module in a proper namespace replacing Tags.pm. A global Lintian::Tags object replaces the static variables in the Tags namespace, with new accessor functions, except for the tag metadata functions (which have moved to Lintian::Tag::Info). All handling of display levels is now here instead of in frontend/lintian. + [RA] Support suppressing a list of tags. + [RA] Suppress calling Lintian::Output::print_end_pkg for changes files, where we don't call print_start_pkg. This fixes an unmatched closing tag in the experimental XML output. * lib/Spelling.pm: + [RA] Use Lintian::Tags instead of Tags. + [RA] Ignore all-caps words of five characters or less for spelling corrections, since they are probably acronyms. Thanks, Michal Čihař. (Closes: #556456) + [RA] Report the original word in spelling errors rather than the normalized form. + [RG] Detect some multi-word spelling errors. + [RA] Remove the als to also correction. This is a word in several European languages, and the many hits on the archive are nearly all false positives. * lib/Tags.pm: + [RA] Removed in favor of Lintian::Tags. * lib/Util.pm: + [RA] Consume all output from extracting the control file of a binary package before closing the pipe. * man/lintian.1: + [RA] Document --suppress-tags and --suppress-tags-from-file. + [RA] Document format of --tags-from-file. + [RA] Document -F (--ftp-master-rejects). + [RA] Add ocaml checker script. + [RA] Add ar-info collection script. + [RA] Document the override locations in the FILES section. Thanks, Jakub Wilk. (Closes: #558649) + [RA] Remove obsolete spelling checker script. + [RA] Mention /usr/share/lintian/data under FILES. + [RA] Clarify that errors are not necessarily policy violations. + [RA] Remove bug that Lintian doesn't handle packages with different binary and source versions correctly. I don't believe this is still an issue. * man/lintian-info.1: + [RA] Add -h (--help). + [RA] lintian -i no longer pipes output through lintian-info. Adjust the man page accordingly. * private/refresh-ftp-master-tags: + [RA] Script to refresh data about automatic package rejects. * reporting/html_reports: + [RA] Never use O as the code for the tag on the per-tag page even if all instances in the archive are overridden. (Closes: #562630) * t/runtests: + [RA] Unwrap the Options field so that it can be continued. + [RA] Replace TESTSET in Options with the root of the test suite so that lintian options referring to files can be tested with files in the test suite directory. + [RA] Support a new Sort: no field in package test metadata to suppress sorting of lintian output, for testing output formatting. + [RA] Use Lintian::Command::spawn to run Lintian for package tests so that the lintian options may contain shell metacharacters. + [RA] Put all error output from lintian unsorted before the regular output, making it easier to diagnose errors. + [RA] Suppress checking the syntax of the lintian output if neither Test-For nor Test-Against are set and Sort: no is set. * unpack/list-{bin,src,udeb}pkg: + [RA] Support multiple versions of a package in the archive and include only the latest version in the Lintian package list. * unpack/unpack-binpkg-l2: + [RA] Report errors from dpkg-deb or tar on stderr if either exit with non-zero status. * unpack/unpack-srcpkg-l2: + [RA] Report errors from dpkg-source -x on stderr if it exits with non-zero status. (Closes: #557717) -- Russ Allbery Sat, 26 Dec 2009 18:38:10 -0800 lintian (2.2.18) unstable; urgency=low The "synchronize severities with ftpmaster's Lintian checks" release. * Summary of tag changes: + Removed: - copyright-lists-upstream-authors-with-dh_make-boilerplate + Promoted from experimental: - spelling-error-in-binary - template-uses-unsplit-choices * checks/binaries.desc: + [RA] Remove experimental marker on spelling-error-in-binary. Change severity to minor; spelling errors are minor bugs. + [RA] library-in-debug-or-profile-should-not-be-stripped, binary-or-shlib-defines-rpath, arch-dependent-file-in-usr-share, and binary-in-etc, binary-file-compressed-with-upx, binary-with-bad-dynamic-table, and embedded-zlib are now serious since they can result in ftpmaster rejects. embedded-zlib, missing-dependency-on-libc, and binary-or-shlib-defines-rpath are possible rather than certain since overrides are allowed. * checks/changelog-file: + [FL] Avoid various Perl warnings which can be caused by completly broken changelog files. * checks/conffiles.desc: + [RA] file-in-usr-marked-as-conffile is serious (ftpmaster reject). Add a Policy reference and improve the description. + [RA] non-etc-file-marked-as-conffile is serious/possible rather than important/certain (ftpmaster reject unless overridden). * checks/control-file{,.desc}: + [RA] Say to use (= ${binary:Version}) to fix weak dependencies between a library dev package and the shared library. Thanks, Norbert Preining. (Closes: #548218) + [ADB] Fix an uninitialised value warning when processing a -dev package which has no Depends: fields. Thanks, Lucas Nussbaum. + [RA] build-info-in-binary-control-file-section and debian-control-with-duplicate-fields are now serious (ftpmaster reject). + [RA] Allow -dev dependencies based on source:Upstream-Version or source:Version if the -dev package is architecture: all. Thanks, Mike Hommey. (Closes: #552729) * checks/control-files.desc: + [RA] not-allowed-control-file, control-file-has-bad-permissions, and control-file-has-bad-owner are now serious (ftpmaster reject). Mention that the config control file should also be executable. * checks/copyright-file{,.desc}: + [FL] Add special exception to no-copyright-file for perl. See #522827 for discussion. (Closes: #553262) + [FL] Extend match for exceptions to copyright-refers-to-symlink-license to catch more ways to specify Perl's license. Patch from Salvatore Bonaccorso. (Closes: #549596) + [RA] copyright-lists-upstream-authors-with-dh_make-boilerplate removed, as some package maintainers prefer to use Author(s) and have filled out the copyright file. (Closes: #553469) + [RA] Add additional dh_make template strings to the helper-templates-in-copyright check, including the templates for upstream author or copyright holder, which effectively replaces copyright-lists-upstream-authors-with-dh_make-boilerplate with far fewer false positives. + [RA] Remove a duplication of the check for "This copyright info was automatically extracted from the perl module" by dh-make-perl, and ensure that this is copyright-contains-dh-make-perl-boilerplate and not helper-templates-in-copyright, since it is lower severity. + [RA] copyright-refers-to-old-directory, old-style-copyright-file, usr-share-doc-symlink-without-dependency, usr-share-doc-symlink-to-foreign-package, copyright-refers-to-incorrect-directory, and copyright-contains-dh_make-todo-boilerplate are now serious (ftpmaster reject). copyright-contains-dh_make-todo-boilerplate is possible (overrides allowed). Significantly improve the description of usr-share-doc-symlink-without-dependency to mention that Lintian doesn't look at transitive dependencies, and change to possible. * checks/cruft: + [FL] Add automake1.11 to list of autotools packages. Thanks, Laurent Bigonville. (Closes: #551051) + [RA] Allow CMakeCache.txt files in the debian directory. Thanks, Aaron M. Ucko. (Closes: #553264) * checks/debconf.desc: + [FL] Remove experimental flag from template-uses-unsplit-choices. This was only done to not disrupt the lenny freeze. Thanks, Raphael Geissert. (Closes: #553487) * checks/description.desc: + [RA] Downgrade description-synopsis-might-not-be-phrased-properly to minor and fix the cross-reference to point to devref, not Policy. + [RA] description-is-dh_make-template is serious (ftpmaster reject). * checks/etcfiles.desc: + [RA] file-in-etc-not-marked-as-conffile is serious (ftpmaster reject). * checks/fields{,.desc}: + [RA] Fix lib-recommends-documentation tag to correctly exclude dev and doc packages. Patch from Stéphane Glondu. (Closes: #548210) + [FL] Allow source formats 3.0 (quilt) and 3.0 (native). (Closes: #552707) + [RA] Multiple maintainer-* and uploader-* tags for syntax errors or localhost addresses are now serious (ftpmaster reject), as are section-is-dh_make-template and bad-relation. * checks/files.desc: + [RA] Add a note to wrong-file-owner-uid-or-gid that it's possible to construct a Policy-compliant package that triggers this tag by creating users in preinst, and asking package maintainers to file a bug against Lintian if they encounter a case where this appears to be necessary. + [RA] package-contains-ancient-file, package-installs-python-pyc symlink-has-too-many-up-segments, and package-contains-info-dir-file are now serious (ftpmaster reject). + [RA] dir-or-file-in-var-www is now serious/possible (ftpmaster reject unless overridden). + [RA] dir-or-file-in-{tmp,mnt,opt,srv} are now serious and have the proper File Hierarchy Standard cross-references and descriptions. + [RA] Don't suggest creating a symlink to the python-feedparser library. Just use the normal Python import mechanism. Thanks, Jakub Wilk. (Closes: #555617) * checks/lintian.desc: + [CW] Add lucid as an allowable distribution for Ubuntu, and remove gutsy. * checks/manpages.desc: + [ADB] Mention in the description for manpage-has-errors-from-man that Lintian passes "-E UTF-8" to man when running checks. Thanks, Raphaël Hertzog. (Closes: #555320) + [RA] Also suppress failures to break lines if the reported line is a .UE macro, which marks the end of a block defining a URL. Thanks, Martin Stigge. * checks/patch-systems: + [RA] Do not issue patch-system-but-no-source-readme for packages in 3.0 (quilt) format. Patch from Stéphane Glondu. (Closes: #553207) + [RA] Don't consider the "index .." line added by git diff to be a patch description. (Closes: #553697) + [RA] If a diff outside of the patch system only creates new files that can be copied into place by the package build rules, suggest just putting them in the debian directory rather than using a patch system. Thanks, Charles Plessy. (Closes: #550924) * checks/rules.desc: + [RA] missing-build-dependency is now serious/possible (ftpmaster reject unless overridden). * checks/scripts{,.desc}: + [RA] Add some more details to executable-not-elf-or-script about possible causes and how to correct them. + [RA] Suggest mkfifo in mknod-in-maintainer-script if the script was creating a named pipe. + [RA] Add rep. Thanks, Rodrigo Gallardo. (Closes: #510954) + [RA] Add r. Thanks, Dirk Eddelbuettel. (Closes: #555278) + [RA] Add rackup. Thanks, Sebastien Delafond. (Closes: #552013) * checks/shared-libs: + [FL] Add /usr/lib/python*/dist-packages to exception list for incorrect-libdir-in-la-file. Thanks, Mathieu Trudel. (Closes: #551134) * data/changelog-file/ubuntu-dists: + [CW] Add lucid as an allowable distribution for Ubuntu, and remove gutsy. * data/doc-base/sections: + [FL] Update from doc-base 0.9.5. Adds Typesetting section. Thanks Julian Gilbey. (Closes: #552526) * data/fields/architectures: + [ADB] Refresh against unstable. * data/fields/perl-provides: + [ADB] Refresh against unstable. * data/fields/virtual-packages: + [ADB] Refresh against unstable. * data/files/fonts: + [ADB] Refresh against unstable. * man/lintian.1: + [RA] Add additional explanation of experimental tags. Remove the comment that pedantic tags are frequently wrong; that's not what they're for. Improve the explanation for -i to not imply that everything Lintian finds is a Policy violation. * private/refresh-perl-provides: + [ADB] Special-case libio-compress-perl; the package contains the modules which used to be in libio-compress-* but does not contain IO::Compress. Patch from Niko Tyni. (Closes: #554393) -- Russ Allbery Thu, 12 Nov 2009 23:36:33 -0800 lintian (2.2.17) unstable; urgency=medium * Urgency medium to beat libclass-accessor-perl into testing. * checks/control-file: + [RA] Correctly exclude lib*-dev dependencies on other lib*-dev packages that contain a version number. Thanks, Yves-Alexis Perez. (Closes: #547773) * debian/control: + [RA] Explicitly depend on libclass-accessor-perl, since we use it directly. (libparse-debianchangelog-perl was implicitly ensuring it was installed.) -- Russ Allbery Tue, 22 Sep 2009 10:07:24 -0700 lintian (2.2.16) unstable; urgency=low * Summary of tag changes: + Added: - dh_undocumented-is-obsolete - lib-recommends-documentation - weak-library-dev-dependency * checks/control-file{,.desc}: + [RA] Check that -dev packages depend on exactly the same version of the shared library package. (Closes: #537768) * checks/debhelper{,.desc}: + [RA] Check for use of the obsolete dh_undocumented debhelper program. Patch from Raphael Geissert. (Closes: #541977) * checks/fields{,.desc}: + [RA] Check for library packages that recommend documentation packages. Patch from Raphael Geissert. (Closes: #527363) + [RA] Fix regex for recognizing CVS repositories available via anonymous ssh. Thanks, Thorsten Glaser. (Closes: #546927) * checks/menus{,.desc}: + [RA] Exclude examples from documentation that may require doc-base registration. Thanks, Mikhail Gusarov. (Closes: #547345) * checks/scripts{,.desc}: + [RA] Add /usr/bin/ir as an interpreter provided by the ironruby package. Thanks, Matthias Klose. (Closes: #547555) + [ADB] Fix a typo in the description of example-script-uses-bin-env (pth -> path). Thanks, Jakub Wilk. (Closes: #547670) * lib/Lintian/Output.pm: + [ADB] Import Exporter before Class::Accessor to avoid accidentally calling Class::Accessor::import(). Thanks, Niko Tyni. (Closes: #547631) * lib/Spelling.pm: + [RA] Additional spelling corrections from Raphael Geissert. + [RA] Return the count of spelling errors and support suppressing the tag by passing undef for the tag name so that the spell checking functions can be used to test tag descriptions for spelling errors. (Closes: #546641) * reporting/html_reports: + [RA] Include all tag types in the qa-list.txt file instead of just errors and warnings. The new order of columns is errors, warnings, info tags, pedantic tags, experimental tags, and overridden tags. -- Adam D. Barratt Mon, 21 Sep 2009 20:30:33 +0100 lintian (2.2.15) unstable; urgency=low The "BTS cleanup" release. * Summary of tag changes: + Added: - build-depends-on-non-build-package - desktop-entry-limited-to-environments - example-interpreter-in-usr-local (pedantic) - example-interpreter-not-absolute - example-script-without-interpreter - example-script-uses-bin-env - example-shell-script-fails-syntax-check (pedantic) - example-wrong-path-for-interpreter - example-unusual-interpreter (pedantic) - global-data-in-games-directory - init.d-script-does-not-provide-itself - init.d-script-possible-missing-stop - init.d-script-provides-virtual-facility - init.d-script-should-depend-on-virtual-facility - init.d-script-starts-in-stop-runlevel - ocaml-custom-executable * checks/binaries{,.desc}: + [RA] Add a new check for OCaml bytecode executables. Patch from Stéphane Glondu. (Closes: #498138) + [RA] Allow ldconfig to be statically linked. * checks/changelog-file: + [RA] Don't warn about a symlinked changelog file if the version contains ubuntu. Thanks, Benjamin Drung. (Closes: #536434) * checks/common_data.pm: + [RA] Moved the essential package list to data/fields. * checks/copyright-file: + [RA] Use Lintian::Data to read the essential package list. * checks/debhelper: + [RA] Ignore whitespace when checking debian/compat, since Perl will when converting it to a number. Thanks, Niels Thykier. (Closes: #545430) * checks/fields{,.desc}: + [RA] Exclude base-files from the needlesly-depends-on-awk tag and from the warning about depending on a virtual package without a real package for the awk virtual package. + [RA] Use Lintian::Data to read the essential package list. + [RA] Stop allowing unversioned build dependencies on coreutils. The migration from fileutils is long since finished. + [RA] Check for build dependencies on packages that should not be used for builds. (Closes: #540594) + [RA] Allow architecture-dependent metapackages, since it can be useful for metapackages to change dependencies based on the architecture. Thanks, Vagrant Cascadian. (Closes: #544004) * checks/files{,.desc}: + [RA] Suppress non-standard-dir-perm for /tmp, /var/tmp, /var/local, /var/lock, and /usr/src if they have their normal owner and permissions. This suppresses some Lintian tags for base-files. + [RA] Allow base-files to ship /var/backups and /var/local. + [RA] Remove swfobject.js from the known packaged Javascript libraries. The version in libjs-yui is old and the new version is not packaged. Thanks, Giuseppe Iuculano. (Closes: #542046) + [RA] Allow t1- and xfonts- as prefixes for font packages since the font regex is also looking for Type 1 fonts. Thanks, Rogério Brito. (Closes: #542389) + [RA] Stop looking for *.pcf files outside font packages. The check wasn't triggering since PCF files are always compressed, and the situation for PCF font packages is more complex and not suitable for the same check. + [RA] Add mootools.js to embedded-javascript-library. Patch from Marcelo Jorge Vieira (metal). (Closes: #545716) + [RA] Check for putting data that should be in /usr/share under /usr/share/games. Patch from Raphael Geissert. (Closes: #534486) * checks/init.d{,.desc}: + [RA] Add new checks for starting in runlevels 0 and 6, providing a virtual facility, not providing a facility matching the script, not depending on a virtual facility, and inconsistent stop runlevels. Patch from Raphael Geissert. (Closes: #544221) * checks/manpages{,.desc}: + [ADB] Add HTTPS to the list of recognised protocols for URLs in manpages which should not cause manpage-has-errors-from-man to be emitted. (Closes: #543641) + [RA] Document the MANWIDTH variable when running man by hand to check for man page errors. (Closes: #542584) + [RA] Adjust the exclusion of pod2man's .IX macro for the new output format from groff. * checks/menu-format{,.desc}: + [RA] Add a pointer to desktop-file-validate in many of the tag descriptions for desktop tags. (Closes: #539403) + [RA] Mention in the description of desktop-entry-invalid-category that whitespace isn't allowed and categories are case-sensitive. + [RA] Add a new check for desktop entries that are limited to multiple environments. NotShowIn was probably intended instead. Thanks, Andrew Lee. (Closes: #537737) * checks/rules: + [RA] Anchor the dh_quilt regex to not trigger on commented-out calls. Patch from Cesare Tirabassi. (Closes: #543259) + [RA] When checking for out-of-order debhelper calls, take into account the -p flag and only check within each package. Thanks, Michael Koch. (Closes: #545219) * checks/scripts{,.desc}: + [RA] Don't warn about missing dependencies on programs if the program invocation is followed by || true. Thanks, Aurelien Jarno. (Closes: #541372) + [RA] Permit diversion of a man page as long as the package is installing a man page by the same name in the same numeric section, even if the specific section is different. Thanks, Niko Tyni. (Closes: #543781) + [RA] Check example scripts for most of the same issues as scripts elsewhere in the package, but report problems with a different set of tags with info or pedantic severity. Patch from Damyan Ivanov. (Closes: #543873) + [RA] Add seed. Thanks, Josselin Mouette. (Closes: #543779) + [RA] Add pike 7.8. Thanks, Magnus Holmgren. (Closes: #543262) * checks/shared-libs: + [RA] Allow ld.so to be executable. (Closes: #538716) * data/fields/essential: + [RA] New list of essential packages. + [RA] Add dash. (Closes: #541744) + [RA] Add diffutils and remove diff. (Closes: #544277) * data/fields/no-build-depends: + [RA] New list of packages that should not be used as build dependencies, currently containing only java-propose-classpath. Thanks, Josh Triplett. * data/files/fonts: + [RA] Refresh and include Type 1 fonts and packages as well. * lib/Lintian/Collect/Binary.pm: + [RA] Stop looking for the special OCaml symbol. OCaml custom binaries are now detected another way. Patch from Stéphane Glondu. * lib/Lintian/Schedule.pm: + [RA] If declining to add a duplicate file to the Lintian check schedule, return success to avoid a spurious error message. Patch from Raphael Geissert. (Closes: #542072) * lib/Spelling.pm: + [RA] Add spelling correction for "aplication." (Closes: #546404) * private/refresh-fonts-data: + [RA] To match what checks/files looks for, also look for *.pfb files and packages starting with t1-. * reporting/{html_reports,templates/clean.tmpl}: + [JP] Don't link to full report if the maintainer only has clean packages. (Closes: #545781) -- Russ Allbery Mon, 14 Sep 2009 00:06:01 -0700 lintian (2.2.14) unstable; urgency=low The "Policy 3.8.3" release. * Summary of tag changes: + Added: - debhelper-overrides-need-versioned-build-depends - maintainer-script-modifies-ld-so-conf - missing-dependency-on-install-info - multiple-distributions-in-changes-file - patch-system-but-no-source-readme - package-modifies-ld.so-search-path - possible-documentation-but-no-doc-base-registration + Removed: - file-in-usr-something-x11-without-pre-depends + Renamed: - build-depends-on-x-metapackage => build-depends-on-metapackage - depends-on-x-metapackage => depends-on-metapackage * checks/changelog-file.desc: + [RA] Document the "Old Changelog" way of marking historic changelog entries that shouldn't be syntax-checked in the long description for syntax-error-in-debian-changelog. (Closes: #541119) * checks/debconf: + [CW] Permit Help: in .templates files, which is supported as of cdebconf 0.143 and used in the installer. * checks/debhelper{,.desc}: + [CW] Check for the use of debhelper override targets, which require debhelper 7.0.50. + [RA] Don't warn about recently deprecated debhelper commands in possibly optional portions of debian/rules. (Closes: #537607) + [RA] Don't warn about missing build dependencies for commands in possibly optional portions of debian/rules. (Closes: #537608) * checks/description: + [RA] Decode descriptions from UTF-8 before checking length. Thanks, Charles Plessy. (Closes: #537207) + [RA] Avoid duplicated word false positives from words that contain punctuation. Thanks, Nelson A. de Oliveira. (Closes: #540348) * checks/fields{,.desc}: + [FL] packages named lib*-camlp4-dev should be in section ocaml + [RA] Move debian/rules parsing to check build dependencies to checks/rules. + [RA] Allow any package to be in section oldlibs without triggering warnings. Thanks, Rene Engelhard. (Closes: #537606) + [RA] Lower wrong-section-according-to-package-name to possible. + [RA] Recognize packages as metapackages even if they contain Lintian overrides, thus fixing two packages that added a Lintian override for having dependencies only permitted for metapackages, which in turn ensures that they keep getting that tag. + [RA] Recognize packages as metapackages even if they contain files in /usr/share/cdd. + [RA] Renamed the tags for depending or build-depending on X metapackages to make them generic and load the list of metapackages from data/fields/metapackages. Always consider known metapackages to be metapackages for the dependency check. + [RA] Don't require a tilde after lp: in bzr URLs. Thanks, Benjamin Drung. (Closes: #541143) + [RA] Fix spelling of xfonts-encodings in the xfont dependency exception. (Closes: #540425) + [RA] Allow :ext: CVS repository references if the username looks like it won't require autentication. Thanks, Thorsten Glaser. * checks/files{,.desc}: + [CW] /var/lock and /var/run are not temporary filesystems in d-i, so don't emit errors about their use in udebs. + [RA] Warn about packages containing files in /etc/ld.so.conf.d that don't appear to be part of libc. Policy 3.8.3 no longer permits modification of ld.so.conf. + [RA] Remove the check for x11-common pre-depends before installing files in /usr/{include,lib}/X11. Policy 3.8.3 removes this requirement. * checks/infofiles{,.desc}: + [RA] Add missing leading * to example info directory entry. + [RA] Check that packages with info files depend on dpkg or install-info as recommended by Policy 3.8.3. * checks/lintian.desc: + [RA] Expand multiple-distributions-in-changes-file description and add a reference to the Policy section. Change certainty to possible, since this may be fine for non-Debian uploads. * checks/menus{,.desc}: + [RA] Add info-level tag for packages with apparent HTML or PDF documentation in /usr/share/doc but no doc-base registration. Based on a patch from Raphael Geissert. (Closes: #469018) * checks/patch-systems{,.desc}: + [RA] Check for a patch system in use but no debian/README.source. Based on a patch from Jonathan Yu. (Closes: #537969) * checks/po-debconf: + [CW] Don't emit not-using-po-debconf if all templates are marked "for internal use". (Closes: #492626) * checks/rules{,.desc}: + [RA] Moved checking of build dependencies based on programs invoked in debian/rules from checks/fields to here. + [RA] Expand Lintian's understanding of which targets are run for the clean target to include targets invoked via pattern variable expansion. (Closes: #536405) + [RA] Make the handling of make variables as rule names more robust and avoid generating invalid regexes. + [RA] Packages including /usr/share/mozilla-devscripts makefile fragments in debian/rules must Build-Depend on mozilla-devscripts. Thanks, Benjamin Drung. (Closes: #541144) * checks/scripts: + [RA] Fix parsing of dpkg-divert commands diverting a file ending in a number, followed by a redirection. Thanks, Andreas Beckmann. (Closes: #534942) + [RA] Warn about maintainter scripts that modify /etc/ld.so.conf. Policy 3.8.3 no longer permits this. + [RA] Avoid command-with-path-in-maintainer-script false positives with backtick expressions as arguments to commands. Thanks, Stefan Fritsch. (Closes: #536397) * checks/watch-file: + [RA] Fix false positives in debian-watch-file-should-mangle-version when an upstream version is specified in the watch file and give the line number of mangling issues. Patch from Raphael Geissert. (Closes: #536404) * data/debhelper/*: + [ADB] Refresh against unstable. * data/fields/architectures: + [RA] Refresh architecture list against dpkg 1.15.3.1, adding avr32 and kopensolaris. (Closes: #538055) * data/fields/metapackages: + [RA] New file listing known metapackages that should not be used in Depends or Build-Depends. + [RA] Add mono-complete. (Closes: #538929) * data/fields/virtual-packages: + [ADB] Refresh against unstable. * data/files/fonts: + [ADB] Refresh against unstable. * data/standards-version/release-dates: + [RA] Add the release date for Policy 3.8.3. * debian/control: + [RA] Update standards version to 3.8.3 (no changes required). * frontend/lintian: + [RA] Enable multiple-distributions-in-changes-file now that Policy documents that this does not work with the Debian archive. * frontend/lintian-info: + [ADB] Correctly parse Lintian output for pedantic tags. Thanks, James Vega. * lib/Spelling.pm: + [RA] Add spelling correction for precedence. * reporting/html_reports: + [JP] Accumulate tag-specific statistics in a new variable, and pass it to the appropriate templates. * reporting/templates/tags{,-severity}.tmpl: + [JP] Remove duplicate code to calculate tag statistics. * t/runtests: + [RA] Update standards version to 3.8.3. -- Russ Allbery Sat, 15 Aug 2009 22:47:44 -0700 lintian (2.2.13) unstable; urgency=low The "triggerized install-info" release. * Summary of tag changes: + Added: - install-info-used-in-maintainer-script - package-contains-info-dir-file + Removed: - info-documents-not-removed - install-info-not-called-with-quiet-option - missing-comma-after-substvar - postrm-calls-install-info - preinst-calls-install-info * checks/control-file{,.desc}: + [RA] Rework missing-separator-between-lines to only include two specific package stanzas in the extra tag data and not include newlines. Generalize it to also detect missing commas between substvars, replacing missing-comma-after-substvar. * checks/cruft{,.desc}: + [RA] Don't warn about outdated libtool if the package build-depends on libtool. Thanks, Kurt Roeckx. (Closes: #534134) + [RA] Fix typo in *-contains-ht-tags-file description. Patch from Peter Pentchev. (Closes: #534218) * checks/fields: + [ADB] If the Debian r-cran makefile include is used in the rules file, cdbs, debhelper and r-base-dev are required in Build-Depends. Thanks, Charles Plessy. (Closes: #534684) + [RA] Allow variable settings before ant, dpatch, and dh when checking debian/rules for dependencies. Thanks, Ryan Niebur. (Closes: #535432) * checks/files{,.desc}: + [RA] Allow non-core Python packages to install files into /usr/lib/python*/dist-packages, the extension location for Python 2.6 and later. Thanks, Julian Andres Klode. (Closes: #534212) + [RA] Check for /usr/share/info/dir files included in the package. Thanks, Bas Zoetekouw. (Closes: #535566) * checks/infofiles{,.desc}: + [RA] Ignore dir files; they're a different error that's now caught by checks/files. + [RA] Remove all checking of maintainer scripts, since info dir entries are now handled with triggers. Now always warn of info files without INFO-DIR-SECTION, even if install-info were called with a --section argument. Warn of info files without a DIR-ENTRY section. Thanks, Raphaël Hertzog. (Closes: #534640) + [RA] Fix a bug in the detection of bad info file extensions that missed extensions containing the string "info". + [RA] Improve the long descriptions of tags about compression of info documents. * checks/init.d: + [RA] Take into account dangling symlinks in /etc/init.d. Patch from Raphael Geissert. (Closes: #534139) + [RA] Don't require symlink init scripts to be conffiles and realize they are included in the package even if the symlink is dangling. Thanks, Steve Langasek. (Closes: #534326) * checks/manpages: + [RA] Don't warn about hyphens used as minus signs inside draft mode, since \- cannot be used there. Based on a patch by Gennaro Oliva. (Closes: #535308) * checks/patch-systems: + [RA] Don't include the package name as extra data in tags that are only issued for source packages. Patch from Raphael Geissert. * checks/scripts{,.desc}: + [RA] Lower certainty of read-in-maintainer-script to possible and mention false positives. Thanks, Raphaël Hertzog. (Closes: #534276) + [RA] Allow for output redirection when parsing diversions in maintainer scripts. Thanks, Andreas Beckmann. (Closes: #534942) + [ADB] Detect the use of the "source" bashism when the sourced filename contains a tilde or consists of a single character. Thanks, Raphael Geissert and Ryan Niebur. + [RA] Avoid a false positive in the bashism check for trap with signal numbers when the the trap command contains a number. Thanks, Julien Cristau. (Closes: #534580) + [RA] Check for any maintainer script running install-info, since this is now handled with triggers. * checks/watch-file: + [RA] Use a consistent way of displaying the line number of a problem. * collection/strings: + [ADB] Handle the fact that, when Lintian is run as root, the output of "file" on set[gu]id files may include the fact that they are set[gu]id. Thanks, Peter Pentchev. (Closes: #533618) * lib/Read_pkglists.pm: + [RA] Increment the package list format and expect the archive area as an additional argument. Patch from Raphael Geissert. * lib/Spelling.pm: + [RA] Add changes misspelling. + [RA] Fix correction for endianness. Thanks, Raphael Geissert. (Closes: #535582) + [RA] Only strip most punctuation from the end of each word, not from anywhere in the string. We don't want to strip the period from res.size. Thanks, Zack Weinberg. (Closes: #534234) * lib/Tags.pm: + [RA] Replace all newlines in tag data with \n, not just the first. (Closes: #534141) * man/lintian.1: + [RA] The archive area may be a comma-separated list of areas. Patch from Raphael Geissert. * private/update-coverage: + [RA] Provide a breakdown of tags only covered in the legacy test suite by test name. * reporting/html_reports: + [RA] Change area back to section in the loop for generating the package index pages to be consistent with the page template. + [RA] Allow for multiple archive areas in the front page summary. + [RA] Add the archive area to the tag information. * reporting/templates/maintainer.tmpl: + [RA] Include the archive area in the source package heading if it's not main. Include the archive area in the binary package heading if it's different than the source package archive area. * unpack/list-{bin,src,udeb}pkg: + [RA] Collect information from multiple archive areas and include the archive area in the package list. Patch from Raphael Geissert. (Closes: #516530) -- Russ Allbery Thu, 09 Jul 2009 09:11:14 -0700 lintian (2.2.12) unstable; urgency=low The "Policy 3.8.2" release. * Summary of tag changes: + Added: - debug-symbols-directly-in-usr-lib-debug - dh_desktop-is-deprecated - dh_scrollkeeper-is-deprecated - file-in-discouraged-x11-font-directory - file-in-unknown-x11-font-directory - init.d-script-sourcing-without-test - init.d-script-uses-usr-interpreter - missing-separator-between-items - package-contains-multiple-dpi-fonts - package-mixes-misc-and-dpi-fonts + Removed: - missing-comma-between-items * checks/binaries{,.desc}: + [RA] Diagnose installing detached debugging symbols directly in /usr/lib/debug instead of in an appropriate subdirectory. Patch from Raphael Geissert. (Closes: #532394) * checks/control-file{,.desc}: + [ADB] Allow both comma and pipe as valid separators between items when detecting whether a separator has been omitted. As a consequence, rename the missing-comma-between-items tag to the more descriptive missing-separator-between-items. Based on a patch by Rafael Laboissiere. (Closes: #533202) + [RA] Allow a newline immediately after the field name, since this does work with fields that can be wrapped (such as Build-Depends). Thanks, Stephane Glondu. (Closes: #528377) * checks/debhelper{,.desc}: + [RA] Issue package-lacks-versioned-build-depends-on-debhelper always if the debhelper dependency isn't properly versioned, not just for compat levels newer than 5. (Closes: #522384) + [RA] Warn about dh_desktop calls since the command is now deprecated. Thanks, Nelson A. de Oliveira. (Closes: #531164) + [RA] Include the line number in deprecated and obsolete dh_* command tags. + [ADB] Warn about dh_scrollkeeper calls since the command is now deprecated. * checks/fields{,.desc}: + [RA] Update source-field-malformed to serious and don't allow capital letters in source package names. Check source package names for validity even when checking only source packages to be sure the package name is syntactically valid. + [RA] Permit quilt in Build-Depends for arch-independent packages if dh_quilt_* programs are called in the clean target. Thanks, Daniel Moerner. (Closes: #528003) + [RA] If one of the gnome-pkg-tools makefile fragments is included, gnome-pkg-tools is allowed and required in Build-Depends. Thanks, Emilio Pozuelo Monfort. (Closes: #532892) * checks/files{,.desc}: + [RA] Diagnose files installed into discouraged or unknown subdirectories of /usr/share/fonts/X11 per Policy 11.8.5. + [RA] Diagnose packages including both 100dpi and 75dpi fonts or mixing misc and Xdpi fonts. * checks/init.d{,.desc}: + [RA] Also check unregistered init scripts for other syntax problems. Patch from Raphael Geissert. + [RA] Don't think required init.d options are implemented just because they occur in a comment. Patch from Raphael Geissert. + [RA] Diagnose init scripts sourcing /etc/default files without checking first whether they're present. Patch from Raphael Geissert. (Closes: #533571) + [RA] Diagnose init scripts that use interpreters in /usr. Patch from Raphael Geissert. * checks/menus{,.desc}: + [RA] Read menu-methods files from the collected location instead of the unpacked binary package and change the unpack level of menus to 1. Patch from Raphael Geissert. * checks/scripts{,.desc}: + [RA] Per Policy 3.8.2, read-in-maintainer-script is now of serious severity. + [RA] Catch obsolete dpkg checks in more contexts. + [RA] Check for invocations of fc-cache in maintainer scripts. Thanks, Josselin Mouette. (Closes: #532984) + [RA] Catch more commands with paths in maintainer scripts. Thanks, Raphael Geissert. * collection/menu-files{,.desc}: + [RA] Collect menu-methods as well as menu files. Refactor to remove code duplication. Patch from Raphael Geissert. * data/standards-version/release-dates: + [RA] Add the release date for Policy 3.8.2. * debian/control: + [RA] Update standards version to 3.8.2 (no changes required). * t/runtests: + [RA] Update standards version to 3.8.2. -- Russ Allbery Thu, 18 Jun 2009 17:19:03 -0700 lintian (2.2.11) unstable; urgency=low * Summary of tag changes: + Added: - missing-comma-between-items - non-conf-file-in-modprobe.d - non-free-flash - section-area-mismatch + Removed: - section-category-mismatch * checks/binaries{,.desc}: + [ADB] Extend the description of spelling-error-in-binary to mention that misspelt words are always output in lower case, and give some suggestions for finding the error oneself. Thanks, Raphael Geissert and Paul Gevers. (Closes: #526435) + [RA] Downgrade certainty of tags for which we recommend overrides. Patch from Raphael Geissert. (Closes: #530008) + [ADB] Don't consider an 64-bit kernel module shipped in a binary package for the corresponding 32-bit architecture to be "from other architecture". (Closes: #532013) + [ADB] When checking for binaries which define rpaths, don't exclude rpaths of /lib and /usr/lib, even if the directory is shipped by the package. (Closes: #532508) * checks/control-file{,.desc}: + [ADB] Refer to main, contrib and non-free as archive areas rather than categories. + [ADB] Rename section-category-mismatch to section-area-mismatch. + [ADB] Update the description of section-area-mismatch to clarify that source packages in main may build binary packages in contrib. + [RA] Skip duplicate description checks for udeb packages. Thanks, Thijs Kinkhorst. (Closes: #529924) + [ADB] Warn about missing spaces between items in a control file which have been omitted when spanning the dependency line over multiple lines. Based on a patch by Damyan Ivanov. (Closes: #516706) * checks/cruft{,.desc}: + [RA] Downgrade certainty of tags for which we recommend overrides. Patch from Raphael Geissert. + [RA] When looking for tar errors from dpkg-source, ignore gpgv output as well as gpg output. (Closes: #533116) * checks/debhelper.desc: + [ADB] Correct Unpack-Level to 1. Thanks, Raphael Geissert. * checks/fields{,.desc}: + [RA] Allow python << dependencies without Python-Version if the package depends on python-support, which doesn't use the Python-Version field. Adjust the long description of old-versioned-python-dependency to make it clearer it only applies to python-central. Thanks, Bernd Zeimetz. (Closes: #525997) + [ADB] Refer to contrib and non-free as "archive areas" rather than distributions. + [ADB] Accept Architecture fields in .dsc files which contain both "all" and one or more binary architectures. (Closes: #530565) + [ADB] If a ruby-pkg-tools make include is used in a rules file, require a build-dependency on that package. Patch by Ryan Niebur. (Closes: #532837) + [ADB] Replace a misplaced "build-depends" with the correct "depends" in the description of the "missing-build-dependency" tag. Patch by Ryan Niebur. (Closes: #532838) * checks/files{,.desc}: + [RA] Downgrade symlink-has-double-slash and symlink-ends-with-slash to minor. These are violations of a Policy should, but are unlikely to cause practical problems. (Closes: #527843) + [RA] Explain in the symlink-contains-spurious-segments description that these segments can cause problems in the presence of symlinked directories. + [RA] Downgrade certainty of tags for which we recommend overrides. Patch from Raphael Geissert. + [ADB] Add a new tag indicating that the filename of a Flash file it may be a known non-free file. Patch by Raphael Geissert. (Closes: #516250) + [ADB] Check for files in /etc/modprobe.d with filenames which do not end in ".conf". Based on a patch by Raphael Geissert. (Closes: #521595) * checks/manpages: + [ADB] Remove support for detecting whether man supports the --warnings flag. The version of man shipped in lenny supports it so the compatibility code is no longer required. * checks/menu{s,-format}.desc: + [ADB] Correct Unpack-Level to 2. Thanks, Raphael Geissert. * checks/po-debconf.desc: + [ADB] Correct Unpack-Level to 1. Thanks, Raphael Geissert. * checks/scripts: + [ADB] Do not include an empty alternative in the list of suggested dependencies for an interpreter when the interpreter may be unversioned but the dependency may not. For example, pikeX.Y provide /usr/bin/pike and /usr/bin/pikeX.Y but there is no "pike" package. + [ADB] Add ksh and zsh to the list of packages providing the /bin/ksh alternative. Thanks, Guillaume Delacour. (Closes: #529457) + [ADB] Detect shellscript wrappers which embed a call to "exec" in a conditional statement. Thanks, Raphael Geissert. + [ADB] Fix a syntax error in the shellscript wrapper detection that lead to it returning a part of the wrapper script rather than a simple success value. + [ADB] Remove "\\" from the list of unsafe backslash escapes in the shell script checks. POSIX does not prohibit its use and it works in all shells in Debian. + [RA] Add escript to the list of known interpreters. Thanks, Nicholas Jefferson. (Closes: #532158) * checks/shared-libs.desc: + [RA] Downgrade certainty of tags for which we recommend overrides. Patch from Raphael Geissert. * data/debhelper/{dh_commands,dh_packages,maint_commands}: + [ADB] Refresh against unstable. (Closes: #530622) * data/fields/{perl-provides,virtual-packages}: + [ADB] Refresh against unstable. * data/files/fonts: + [ADB] Refresh against unstable. * debian/control: + [ADB] Depend on libapt-pkg-perl. * debian/rules: + [ADB] Re-order the commands in the runtests target so that the "new style" testset is run first, as it now also tests the harness. Thanks, Raphael Geissert. * frontend/lintian: + [ADB] Rename the --section command line option to --area in line with Policy's use of the term "archive area" to describe main, etc. Also rename the corresponding environment and configuration file variables. In each case, the original name is permitted as a synonym. + [ADB] Reset the timezone in the environment before running any tests so that tar's "implausibly old timestamp" errors use a consistent epoch. Thanks, Raphael Geissert. * lib/Lintian/*.pm: + [ADB] Fix a few errors and add missing example variable declarations in POD synopsis example sections. Patch by Raphael Geissert. * lib/Lintian/Relation/Version.pm: + [ADB] Rework to use libapt-pkg-perl rather than calling "dpkg --compare-versions" repeatedly and keeping a potentially large cache of previous results. * lib/Lintian/Schedule.pm: + [ADB] Correctly display package versions of 0 in status messages. (Closes: #532550) * lib/scan_script.pl: + [RA] Removed. A start at parsing shell scripts that was never finished and wasn't usable in its current form. * lib/Spelling.pm: + [ADB] Add a number of new corrections from Raphael Geissert. (Closes: #526019) * man/lintian.1: + [ADB] Document the new --area command line option and update the documentation of --section to indiciate that it is deprecated in favour of the new option. * private/refresh-debhelper-data: + [ADB] Update the contents file parsing to handle the fact that there are now section names containing hyphens. + [ADB] Use LC_ALL=C to preserve sort order regardless of the user's locale. * private/refresh-fonts-data: + [ADB] Use LC_ALL=C to preserve sort order. * private/refresh-perl-provides: + [ADB] Special-case libio-compress-zlib-perl to account for the fact that it does not contain IO::Compress::Zlib. Patch by Niko Tyni. (Closes: #528744) * reporting/config: + [ADB] Use $LINTIAN_AREA rather than $LINTIAN_SECTION in the default configuration file. * reporting/harness: + [ADB] Use the new $LINTIAN_AREA variable to determine which packages to process. + [RA] Include pedantic tags in lintian.log, but don't report them on the web site. Patch from Raphael Geissert. * reporting/html_reports: + [ADB] Use the new $LINTIAN_AREA variable to determine which archive area we are generating reports for, and pass it through to templates where relevant. * reporting/templates/index.tmpl: + [ADB] Modify the statistics table to refer to archive area rather than section. * t/runtests: + [ADB] Run the test scripts before all other tests as they now test some fundamentals which are required to pass in order for the harness itself to work. Thanks, Raphael Geissert. + [RA] Run prove recursively in the scripts directory. + [RA] Skip scripts tests if a tag was specified. Patch from Raphael Geissert. * t/scripts/minimum-version.t: + [ADB] New script by Raphael Geissert to ensure that all our scripts can run with Perl 5.8.0. * t/scripts/needs-info.t: + [ADB] Renamed to needs-info-exists.t. * t/scripts/needs-info-missing.t: + [ADB] New script by Raphael Geissert to check whether scripts using Lintian::Collect{,::*} declare the required collection scripts in Use-Info. * t/scripts/pod-synopsis.t: + [ADB] New script by Raphael Geissert to ensure that example code in module's POD synopsis section is valid. * t/scripts/{static-lab,tags}.t: + [ADB] New test scripts splitting some of the "harness checking" out of the runtests script. Patch by Raphael Geissert. * t/scripts/strict.t: + [ADB] New script by Raphael Geissert to check that all our scripts "use strict". * t/scripts/unpack-level.t: + [ADB] New script by Raphael Geissert to check that all checks scripts declare the correct unpack level. * t/scripts/version.t: + [ADB] New script to test Lintian::Relation::Version. * t/tests/lintian-overrides: + [ADB] New testset for the {malformed,unused}-override tags. Patch by Raphael Geissert. * unpack/list-{bin,src,udeb}pkg: + [ADB] Use the new $LINTIAN_AREA variable to determine which package list to read. -- Russ Allbery Sun, 14 Jun 2009 18:40:18 -0700 lintian (2.2.10) unstable; urgency=low The "do something useful with tar errors, plus bug fixes" release. * Summary of tag changes: + Added: - ancient-autotools-helper-file - tar-errors-from-control - tar-errors-from-data - tar-errors-from-source + Removed: - desktop-mimetype-without-update-call - package-uses-breaks * checks/conffiles: + [RA] Fix a false negative in duplicate-conffile by improving normalization of conffiles before comparing and restructure the check a bit. Patch from Raphael Geissert. * checks/cruft{,.desc}: + [RA] Split outdated-autotools-helper-file into ancient- and outdated-, preserving the 2004 date for ancient and checking for at least June of 2006 for outdated. The latter is needed for AVR32. Thanks, Bradley Smith. (Closes: #525280) + [RA] Set certainty for ancient- and outdated-autotools-helper-file to possible instead of certain. Some packages contain extra copies that aren't used during the Debian package build. + [RA] Document that cdbs still requires the autotools-dev build dependency to update config.{sub,guess} at build time. + [RA] Report errors from tar or dpkg-source when listing or unpacking the source package, skipping and suppressing some harmless errors. * checks/deb-format{,.desc}: + [RA] Report tar errors from listing or unpacking the control or data members of the package, suppressing uninteresting errors or errors that are caught some other way. (Closes: #367327) + [CW] Ubuntu's archive allows packages whose data members are compressed with lzma. * checks/etcfiles.desc: + [RA] Remove unused Needs-Info: etcfiles. Thanks, Raphael Geissert. * checks/fields{,.desc}: + [RA] Remove package-uses-breaks. dpkg in stable now supports it. Thanks, Julian Andres Klode. (Closes: #522660) + [RA] Fix Needs-Info. Thanks, Raphael Geissert. * checks/files{,.desc} + [ADB] Anchor the regular expression for the "gz-file-not-gzip" tag so that files with names that contain ".gz" but do not end in that string are not flagged. Patch by Raphael Geissert. (Closes: #523352) + [RA] Remove desc for removed possible-name-space-pollution tag. * checks/manpages.desc: + [RA] Remove desc for removed no-manpage-in-correct-directory tag. * checks/menu-format{,.desc}: + [RA] Remove desktop-mimetype-without-update-call. This is now handled by triggers. Thanks, Chow Loong Jin. (Closes: #525133) + [RA] Remove desc for removed menu-item-adds-to-root-menu tag. * checks/patch-systems.desc: + [RA] Mention that empty dpatch patch lists or quilt series files will disappear in a non-native source package and hence produce the warning about a missing file. (Closes: #525005) * checks/scripts{,.desc}: + [RA] Handle command delimiters, $() expressions, and braces and parentheses in the checks for correct diversion handling. Patch from Raphael Geissert. (Closes: #523708) + [RA] Clarify the php-script-but-no-phpX-cli-dep description to explain why it warns about a php4-cli dependency. (Closes: #525484) + [RA] Add jruby1.2 and allow an unversioned jruby reference. Thanks, Sebastien Delafond. (Closes: #523001) * checks/shared-libs{,.desc}: + [RA] Strip trailing slashes from the libdir path in *.la files before checking it for correctness. Thanks, Patrick Matthäi. (Closes: #524228) + [RA] Special-case *.la files for Python modules installed in /usr/share/pyshared, since they're moved during install. Thanks, Jonas Smedegaard. (Closes: #522623) + [RA] Requires unpack level 2 to read the *.la files. * checks/standards-version.desc: + [ADB] Fix a couple of spelling mistakes ("verison" -> "version"). Thanks, Guillaume Delacour. (Closes: #522643) * collection/file-info: + [ADB] Call "file" with "--" to ensure that any filenames in the package that start with "-" aren't interpreted as options to "file". Thanks, Trent W. Buck. (Closes: #523408) * collection/strings: + [RA] Make strings gathering on ELF binaries robust against file names containing "ELF" or a colon. Patch from Raphael Geissert. * doc/desc-files: + [ADB] Mention the new Standards-Version field available for tests. Patch by Raphael Geissert. * frontend/lintian: + [RA] Stop reporting $! when unpack scripts fail. It will almost never contain anything useful. + [RA] Move override parsing to the Tags module. Patch from Raphael Geissert. * lib/Lintian/Collect/Binary.pm: + [CW] Add missing 'use Parse::DebianChangelog'. * lib/Lintian/Output.pm: + [RA] With --color=html, display the HTML rendering of the long tag description rather than the text version and escape HTML metacharacters in the tag information. Patch from Raphael Geissert. (Closes: #522527) * lib/Lintian/Relation.pm: + [ADB] Fix a spelling mistake ("verison" -> "version"). Thanks, Guillaume Delacour. * lib/Spelling.pm: + [RA] Add spelling correction for "verison". * lib/Tags.pm: + [RA] Add a function to parse overrides, moved from frontend/lintian. Patch from Raphael Geissert. * t/runtests: + [ADB] Allow a default Policy version to be specified in template files. This avoids the need to update every test each time a new Policy version is released, unless one specifically wishes to keep a particular test using an older version. Patch by Raphael Geissert. + [ADB] Use extended regular expressions in "post_test" sed scripts. Patch by Raphael Geissert. * t/tests/README: + [ADB] Mention the new Standards-Version field available for tests. Patch by Raphael Geissert. * unpack/unpack-binpkg-l1: + [RA] Save control unpack errors in control-errors, control listing errors in control-index-errors, and package listing errors in index-errors for later processing by deb-format. (Closes: #522530) * unpack/unpack-binpkg-l2: + [RA] Save data unpack errors in unpacked-errors for later processing by deb-format. * unpack/unpack-srcpkg-l1: + [RA] Save source listing errors in index-errors for later processing by cruft. Don't fail the unpack if tar exits with non-zero status. star-created archives will cause tar to blow up, but the listing and unpacking still works. * unpack/unpack-srcpkg-l2: + [RA] Save source unpack errors in unpacked-errors for later processing by cruft. -- Russ Allbery Mon, 27 Apr 2009 19:28:02 -0700 lintian (2.2.9) unstable; urgency=low * Summary of tag changes: + Added: - wrong-section-according-to-package-name - vcs-field-uses-not-recommended-uri-format - vcs-field-uses-unknown-uri-format + Removed: - dev-package-should-be-section-libdevel - doc-package-should-be-section-doc - perl-package-should-be-section-perl - python-package-should-be-section-python * checks/deb-format.desc: + [RA] In the tag description, the first required element should be debian-binary, not debian-control. Thanks, Judit Foglszinger. (Closes: #521012) * checks/fields{,.desc}: + [FL] Update list of valid sections. (Closes: #521782) + [RA] Fix dbg-package-missing-depends check when the dependency is followed by a comma. (Closes: #520640) + [FL] Add package name checks for the new sections. Move all package section checks to one tag "wrong-section-according-to-package-name" instead of one tag per section. + [FL] Add checks for well formatted Vcs-* fields. (Closes: #517635) * checks/lintian.desc: + [CW] Add karmic as an allowable distribution for Ubuntu (thanks, Soren Hansen). * checks/scripts: + [RA] Fix a hash collision that could suppress a correct remove-of-unknown-diversion tag if the diversion was removed in multiple maintainer scripts including postrm. + [RA] Handle variables in maintainer scripts when adding and removing diversions. Patch from Raphael Geissert. (Closes: #519268) * checks/shared-libs: + [RA] Correctly handle SONAMEs in symbols files that contain regex metacharacters like +. Thanks, Daniel Kobras. (Closes: #521621) * collection/file-info: + [RA] Use chomp instead of chop to remove newlines. + [RA] Ignore error returns from file. file returns non-zero if it can't parse some files, but the resulting output is still fine for Lintian's purposes. Thanks to Raphael Geissert for the problem identification. (Closes: #521257) * data/changelog-file/ubuntu-dists: + [CW] Add karmic as an allowable distribution for Ubuntu (thanks, Soren Hansen). * debian/rules: + [RA] Remove and recreate debian/tests before runtests or check-tag to avoid spurious test failures from lingering old files. * frontend/lintian: + [RA] Belatedly bump the lab format version for many recent changes. * lib/Lintian/Command.pm: + [RA] In kill, initialize the result status and use &&= instead of |=. Partly addresses #521257. * unpack/unpack-srcpkg-l1: + [RA] Better anchor the regexes that parse the file list in a source package. -- Russ Allbery Fri, 03 Apr 2009 11:49:06 -0700 lintian (2.2.8) unstable; urgency=low The "Policy 3.8.1" release. * Summary of tag changes: + Added - dir-or-file-in-var-lock - dir-or-file-in-var-run * checks/changelog-file.desc: + [RA] Using UTF-8 is now a Policy must and hence serious. * checks/control-file.desc: + [RA] Using UTF-8 is now a Policy must and hence serious. * checks/files{,.desc}: + [CW] Emit dir-or-file-in-var-lock or dir-or-file-in-var-run, as appropriate, for packages shipping directories or files in /var/lock or /var/run. See policy bug #514326. * checks/menus{,.desc}: + [RA] Revert the change to not require update-menus in postinst. This is still needed due to #518919. Don't require update-menus in postrm for regular menu files, only for menu-methods, but also don't warn if it's present. (Closes: #519300) * checks/scripts: + [RA] Policy allows scripts to assume that /bin/sh supports local with simple variable assignments. + [ADB] Check all added and removed diversions at once rather than as each maintainer script is processed. This avoids differing results and false positives if the postrm is processed before other maintainer scripts. (Closes: #518966) * data/debhelper/*: + [RA] Refresh against unstable. * data/fields/virtual-packages: + [RA] Refresh against unstable. * data/files/fonts: + [RA] Refresh against unstable. * data/output/manual-references: + [RA] Refresh reference data against Policy 3.8.1, doc-base 0.9.1, and developers-reference 3.4.1. * data/standards-version/release-dates: + [RA] Add release date for 3.8.1. * debian/control: + [RA] Update to standards version 3.8.1. * lib/Dep.pm: + [RA] Remove, replaced with Lintian::Relation. * lib/Lintian/Collect/Binary.pm: + [RA] Fix POD errors. * lib/Lintian/Collect/Source.pm: + [RA] Fix POD errors. * lib/Lintian/Command.pm: + [RA] Fix POD errors. * private/refresh-debhelper-data: + [RA] Remove symlinks as a (possibly temporary) workaround to packages that contain broken links to dh_* commands. + [RA] Exclude dh_gencontrol from debhelper commands that set ${misc:Depends} since it only sets it to empty when not already set. * private/refresh-fonts-data: + [RA] Correctly handle not specifying a Contents file on the command line. * t/runtests: + [RA] Add support for running test scripts under t/scripts via prove (the standard Perl test harness). -- Russ Allbery Wed, 11 Mar 2009 21:50:58 -0700 lintian (2.2.7) unstable; urgency=low The "debhelper 7.2.3 and lots of fiddly infrastructure fixes" release. * Summary of tag changes: + Added - apparently-truncated-elf-binary - copyright-refers-to-nonexistent-license-file - debian-control-has-unusual-field-spacing (pedantic) - diversion-for-unknown-file - embedded-zlib - gz-file-not-gzip - incorrect-libdir-in-la-file - orphaned-diversion - package-uses-local-diversion - remove-of-unknown-diversion + Removed - description-synopsis-has-leading-spaces - postinst-does-not-call-installdocs - prerm-does-not-call-installdocs * checks/binaries{,.desc}: + [RA] Check for embedded copies of zlib in ELF binaries by looking for the inflate and deflate copyright strings. Patch from Raphael Geissert. (Closes: #318104) + [RA] Avoid capturing parentheses in regexes due to their minor performance penalty. Patch from Raphael Geissert. + [RA] Report apparently truncated ELF binaries separately from apparently corrupted ones. The current binutils now distinguishes. Patch from Raphael Geissert. (Closes: #517778) + [RA] Allow i386 binaries in amd64 packages for right now. Thanks, Paul Wise. (Closes: #516856) + [RA] Suggest, when fixing spelling errors in binaries, that one unfuzzy gettext translations as well. Thanks, Raphael Geissert. * checks/changelog-file: + [RA] Avoid capturing parentheses in regexes due to their minor performance penalty. Patch from Raphael Geissert. + [RA] Correctly handle changelog.gz files that aren't compressed with gzip. Patch from Raphael Geissert. * checks/common_data.pm: + [RA] Move all information used only in one check script from here to the relevant check script. Patch from Raphael Geissert. * checks/control-file{,.desc}: + [RA] Add pedantic tag for weird spacing after the colon of a field. * checks/copyright-file{,.desc}: + [RA] Avoid capturing parentheses in regexes due to their minor performance penalty. Patch from Raphael Geissert. + [RA] Avoid false positive for versionless license files when the file is referred to without a hyphen; instead, issue a separate tag that explains the problem. Based on a patch from Raphael Geissert. (Closes: #517191) + [RA] Allow commas between the GFDL license name and version when suppressing false positives for the 1.1 version. Thanks, Aurelien Jarno. (Closes: #516687) + [RA] Don't warn about versionless GPL references if the word version appears nowhere in the copyright file. * checks/debconf: + [ADB] Use Lintian::Relation rather than Dep. * checks/debhelper{,.desc}: + [ADB] Use Lintian::Relation rather than Dep. + [RA] Add dh_bugfiles to version requirements, added in 7.2.3. + [RA] debhelper compatibility level V4 is now deprecated. * checks/description{,.desc}: + [RA] Remove description-synopsis-has-leading-spaces. Policy explicitly says this is not a bug. Adjust for the changes to Util that preserve leading whitespace in continued fields. * checks/fields: + [RA] Precompile constant regexes with qr. Patch from Raphael Geissert. + [RA] Load Lintian::Data objects only once. Patch from Raphael Geissert. Also use all caps for global variables. * [RA] Move data from common_data.pm to here and use Lintian::Data to get the list of known architectures. Patch from Raphael Geissert. * checks/files{,.desc}: + [RA] Avoid capturing parentheses in regexes due to their minor performance penalty. Patch from Raphael Geissert. + [RA] Precompile constant regexes with qr and only load the list of font packages if needed. Patch from Raphael Geissert. + [RA] Warn about yui-*.js as well as yahoo-*.js. Patch from Raphael Geissert. + [ADB] Use Lintian::Relation instead of Dep. + [RA] magpierss was renamed to libphp-magpierss. Patch from Marcelo Jorge Vieira (metal). (Closes: #518684) + [RA] Diagnose files ending in *.gz that aren't compressed with gzip. Patch from Raphael Geissert. (Closes: #518873) + [RA] Simplify some checks now that we're guaranteed leading and trailing whitespace will be stripped from field values. * checks/manpages: + [CW] Run man with '-E UTF-8' to avoid producing bogus warnings on localised manual pages due to attempting to recode through ASCII. + [RA] Set MANWIDTH to 80 in the environment when running man to force it to assume 80-column lines even when Lintian is run in a smaller window. Thanks, Joey Hess. (Closes: #517629) + [ADB] Use Lintian::Relation::Version when determining whether the installed version of man supports the --warnings option. * checks/menus: + [RA] Cache the reference to the section list. Thanks, Raphael Geissert. Also use all caps for global variables. + [RA] Move known doc-base formats from common_data.pm to here. Patch from Raphael Geissert. + [RA] Explicit update-menus calls in postinst and postrm are no longer required unless menu-methods are installed. Thanks, Eric Lavarde. (Closes: #518712) + [RA] Explicit install-docs calls are no longer needed since doc-base registration is done with triggers. (Closes: #518801) * checks/nmu: + [RA] Calculate the regex for Ubuntu distributions only once. * checks/patch-systems: + [ADB] Use Lintian::Relation instead of Dep. * checks/rules: + [ADB] Remove some obsolete code and therefore stop use-ing Dep. * checks/scripts: + [ADB] Use Lintian::Relation rather than Dep. + [ADB] Update lists of known interpreter versions (add jruby1.1, octave3.1 and remove jruby0.9) + [RA] Diagnose various problems with creating and removing diversions. Based on a patch by Jörg Sommer. (Closes: #516221) * checks/shared-libs{,.desc}: + [ADB] When parsing symbols files, correctly ensure that meta-information occurs between the end of the dependency template(s) and the start of the symbol list. The code that was intended to check this resulted in a false positive syntax error being generated if a file with alternative dependency templates used meta-information. + [ADB] Extend the parsing of dependency templates in symbols files to handle ORed dependencies. + [ADB] Use Lintian::Relation rather than Dep. + [ADB] Avoid capturing parentheses in regexes due to their minor performance penalty. + [RA] Check the libdir path in libtool *.la files and ensure that it matches the installed location of the *.la file. Based on a patch by Raphael Geissert. (Closes: #302196) * checks/version-substvars: + [RA] Be robust against whitespace in the Architecture field. Thanks, Gonéri Le Bouder. (Closes: #517555) * collection/*.desc: + [RA] Remove the output key and instead add a version key. Patch from Raphael Geissert. * collection/changelog-file: + [RA] Remove the remains of a previous run before starting. * collection/diffstat: + [RA] Remove the remains of a previous run before starting. * collection/objdump-info: + [RA] Recognize truncated binaries. Patch from Raphael Geissert. * collection/source-control-file: + [RA] Remove the remains of a previous run before starting. * debian/control: + [CW] Depend on man-db (>= 2.4.0) for '-E UTF-8'. * data/fields/architectures: + [RA] Replace the runtime-generated list of known architectures with this data file, built from the current dpkg files. Patch from Raphael Geissert. * doc/desc-files: + [RA] Document new Version field for collect scripts and remove Output field. Document pedantic severity for tags. Document Sequence, Options, and Skeleton for test suite descriptions. Thanks, Raphael Geissert. * doc/lintian.sgml: + [RA] Document pendantic tags. Patch from Raphael Geissert. * frontend/lintian: + [RA] Stop loading FileHandle. We no longer use it. + [RA] Run all the collect scripts within a given order in parallel. Patch from Raphael Geissert. + [RA] Create marker files in the laboratory for each collect script that has successfully including its current version number. Use these marker files rather than the existence of output files to determine when to run collect scripts. Re-run collect scripts if the current version doesn't match what's in the lab. Patch from Raphael Geissert. (Closes: #517650) + [RA] Add oldstable to the known distributions for *.changes files. * lib/Lintian/Collect/Binary.pm: + [RA] Recognize truncated binaries. Patch from Raphael Geissert. * lib/Lintian/Command.pm: + [RA] Add support for running commands in the background using a final argument of '&'. Allow reap() to take multiple opt hashes and reap all of them in a loop. Add a kill() function to kill outstanding jobs. Patch from Raphael Geissert. * lib/Lintian/Tag/Info.pm: + [RA] Strip leading whitespace from continued lines. * lib/Spelling.pm: + [RA] Optimize the spell-checking algorithm. Patch from Raphael Geissert. (Closes: #514495) * lib/Util.pm: + [RA] Fully comply with Policy in whitespace handling when parsing Debian control files. Multiline fields will now have the leading whitespace of subsequent lines left in, and leading tabs are no longer handled specially. Trailing whitespace is now uniformly stripped, as is leading whitespace on the first field line. * man/lintian.1: + [RA] Document strings collect script. * private/refresh-archs: + [RA] Script from Raphael Geissert to refresh known architectures. * unpack/unpack-binpkg-l1: + [RA] Run the separate commands involved in unpacking a binary package in parallel where possible. Patch from Raphael Geissert. * unpack/unpack-srcpkg-l1: + [RA] When processing tar output, we may not get complete lines at a time. Save partial lines and glue them back together again when we get the next burst of data. (Closes: #517899) + [RA] Do a little bit of parallelization when writing out the sorted index of the source package. + [RA] Ignore leading whitespace in the Files section. -- Russ Allbery Sun, 08 Mar 2009 21:58:32 -0700 lintian (2.2.6) unstable; urgency=low * Summary of tag changes: + Added - binary-from-other-architecture - icon-size-and-directory-name-mismatch - lzma-deb-archive - multiple-distributions-in-changes-file (disabled) - spelling-error-in-binary (experimental) - unsupported-source-format * checks/binaries: + [RA] When checking for dependencies on libc, don't use /o on the regex. Otherwise, lintian produces false positives when run on multiple packages with different architectures, since the libc package name is not the same on all architectures. Thanks to Raphael Geissert for the report. (Closes: #516067) + [RA] Check for binaries from other architectures than the declared architecture of the package outside of known multiarch directories. Patch from Raphael Geissert. (Closes: #513996) + [RA] Check the data section of ELF binaries for spelling errors. Patch from Raphael Geissert. * checks/common_data.pm: + [RA] Virtual packages now come from data. * checks/changelog-file: + [RA] Don't warn about uncompressed ChangeLog files in doc. They may be small files and the maintainer may be installing some other upstream file as the upstrema changelog. (Closes: #515601) + [RA] Fix improbable-bug-number-in-closes so that it works. * checks/control-file: + [ADB] Properly exclude packages built from the glibc source package from the "hardcoded depends on libc" test. (Closes: #515831) * checks/cruft: + [RA] For Format: 2.0 and Format: 3.0 (quilt) packages, check the *.debian.tar.(gz|bz2|lzma) contents instead of expecting diffstat output. (Closes: #515069) + [RA] Ignore cruft in the upstream source in directories that look like part of a test suite. The files may be part of the test cases. (Closes: #515137) * checks/deb-format{,.desc}: + [RA] Recognize data.tar.lzma binary package components and use a different tag than malformed-deb-archive. * checks/description: + [ADB] Warn of homepages embedded in the description which use the syntax "Homepage: " using the warning level tag description-contains-homepage rather than the info level tag description-possibly-contains-homepage. (Closes: #515998) + [RA] Don't warn about too-short long descriptions for transitional or dummy packages. Thanks, Andreas Beckmann. (Closes: #515538) * checks/fields{,.desc}: + [RA] Load virtual packages from data/fields/virtual-packages. + [RA] Warn of unsupported source package versions. * checks/files{,.desc}: + [RA] Warn of PNG icons whose size doesn't match the size indicated by the directory in which they're installed. Patch from Raphael Geissert. (Closes: #509624) + [RA] Make static regexes global to avoid recreating them for each file we scan. Patch from Raphael Geissert. + [ADB] Modify the check for embedded Javascript libraries to ignore yahoo.js as there are similarly named, but unrelated, scripts in the archive. + [ADB] Lower the certainty of the embedded-{javascript,php}-library tags to "possible" as they trigger purely on filenames and not content. (Closes: #515690) + [RA] Offer advice for duplicate-font-file for when the font package is huge. Thanks, Thijs Kinkhorst and Paul Wise. (Closes: #515689) * checks/patch-systems.desc: + [RA] Improve the suggestions in the long description of quilt-patch-missing-description and dpatch-missing-description based on suggestions from Paul Wise. (Closes: #516534) * checks/scripts: + [RA] Make static regexes global to avoid recreating them for each file we scan. Patch from Raphael Geissert. * checks/shared-libs: + [RA] Save a local reference to objdump information to reduce the number of method calls. Patch from Raphael Geissert. + [ADB] Correctly handle alternative dependency lines in symbols files which contain multiple entries. (Closes: #516427) * collection/strings{,.desc}: + [RA] Collect a list of ELF binaries in the package and the output of strings on each binary except for those in /usr/lib/debug. Based on a patch from Raphael Geissert. (Closes: #514951) * data/fields/obsolete-packages: + [RA] Add foomatic-data, lambdamoo-{core,server}, and old kernel packages. Patch from Raphael Geissert. * data/fields/virtual-packages: + [RA] New file listing known virtual packages. Based on a patch by Raphael Geissert. (Closes: #514497) * debian/postrm: + [RA] Use set -e, not #!/bin/sh -e. * frontend/lintian: + [ADB] Split the Distribution field of a .changes file into individual distributions and then check each of them against the list of known distributions. (Closes: #514853) + [ADB] Anchor the regular expressions for the backports, security and proposed-updates distribution checks, so that etch-backports is accepted as a valid distribution but etch-backportss is not. + [ADB] Add a new check for .changes files which contain multiple entries in their Distribution: field. The check is currently disabled as the syntax is currently accepted by dak although it is likely to stop being so in the near future. * lib/Lintian/Collect/Source.pm: + [RA] Recognize Format: 2.0 packages as non-native. * lib/Lintian/Command.pm: + [RA] Disable IPC::Run debugging. Patch from Raphael Geissert. + [RA] Don't load Data::Dumper. Patch from Raphael Geissert. * lib/Spelling.pm: + [RA] Add spelling correction for "mroe". * lib/Util.pm: + [RA] Minor optimizations to {read,parse}_dpkg_control. Patch from Raphael Geissert. + [RA] Only take the first space after a field name as the separator and treat the rest as part of the field value so that other parts of Lintian can see the leading spaces. * private/refresh-virtual-packages-data: + [RA] New script to generate the list of virtual packages. Based on a patch by Raphael Geissert. * private/update-coverage: + [RA] Add support for source package tests. * t/runtests: + [RA] Add support for raw source package checks in the source subdirectory. See t/source/README for more details. * unpack/unpack-srcpkg-l1: + [ADB] Handle a number of different ways in which upstream directory trees may be represented in tarballs. (Closes: #515795) + [RA] Support LZMA-compressed upstream source. (Closes: #515068) + [RA] Analyze the upstream source tarball to extract its prefix and save it in the laboratory. Also fixes unpacking of source tarballs that have no common subdirectory. -- Russ Allbery Sat, 21 Feb 2009 23:53:09 -0800 lintian (2.2.5) unstable; urgency=low * lib/Lintian/Collect/{Binary,Source}.pm: + [ADB] Add a missing "use Lintian::Relation". Thanks, Raphael Geissert. (Closes: #514697) -- Adam D. Barratt Tue, 10 Feb 2009 23:15:43 +0000 lintian (2.2.4) unstable; urgency=low * checks/changelog-file: + [RA] Use Lintian::Relation::Version instead of Dep. * checks/control-file: + [RA] Use Lintian::Relation instead of Dep. * checks/copyright-file: + [RA] Use Lintian::Collect for dependency information. * checks/cruft: + [RA] Use Lintian::Collect for dependency information. * t/runtests: + [ADB] Correctly handle epoched package versions. Patch by Raphael Geissert. * testset/runtests: + [ADB] Correctly handle epoched package versions. * unpack/unpack-srcpkg-l1: + [ADB] Correctly determine the source package version for packages with epoched versions. Based on a patch by Raphael Geissert. (Closes: #514641) -- Adam D. Barratt Mon, 09 Feb 2009 23:59:00 +0000 lintian (2.2.3) unstable; urgency=low * Summary of tag changes: + Added - description-possibly-contains-homepage - dfsg-version-in-native-package - dfsg-version-with-period - dfsg-version-misspelled - experimental-to-unstable-without-comment (pedantic) - homepage-for-cpan-package-contains-version - maintainer-script-without-set-e (pedantic) - source-contains-prebuilt-binary (pedantic) - source-contains-prebuilt-windows-binary (pedantic) - using-first-person-in-description + Removed - non-us-spelling * checks/changelog-file{,.desc}: + [RA] Add pedantic check for a distribution of unstable when the last version had a distribution of experimental and there's no comment about the change. (Closes: #483845) * checks/common-data.pm: + [ADB] Remove the obsolete non-US from the list of recognised archive sections. * checks/copyright-file: + [RA] Treat License: GPL-2+ as "GPL version 2 or later" for the purposes of the check for a correctly versioned license reference. Patch from Evgeni Golov. (Closes: #513946) * checks/cruft{,.desc}: + [RA] Downgrade all source-contains-* tags to pedantic. These are upstream problems the packager can't do much about and they have no practical effect on the Debian package. Wishlist implies that a wishlist bug against the package would be appropriate, which seems too strong. + [RA] Add pedantic check for binaries in the upstream source. Patch from Raphael Geissert. (Closes: #127494) * checks/description{,.desc}: + [RA] Check for using first person in package descriptions, similar to the existing check for debconf questions. Patch from Raphael Geissert. (Closes: #514491) + [RA] Add check (wishlist/wild-guess) for apparent home page URLs in the long description with no Homepage field. Based on a patch by Paul Wise. (Closes: #339829) * checks/fields{,.desc}: + [ADB] Remove checks for the capitalisation of the obsolete non-US archive section. + [RA] Warn about Homepage fields pointing to search.cpan.org pages containing a version number. Based on a patch by Paul Wise. + [RA] Warn of dfsg versions in native packages. + [RA] Warn of ".dfsg" versions and recommend "+dfsg" for version sorting reasons. Thanks, Paul Wise. (Closes: #514203) + [RA] Warn of the "dsfg" typo in versions. Thanks, Paul Wise. + [RA] Use Lintian::Relation and the new Lintian::Collect support for retrieving parsed relationship fields. * checks/files: + [ADB] Don't report duplicate-font-file for udebs. Patch by Raphael Geissert. (Closes: #514095) * checks/scripts{,.desc}: + [RA] Add pedantic check for maintainer scripts using #!/bin/sh -e instead of set -e in the script body. (Closes: #119045) * collection/file-info{,.desc}: + [RA] Also run file-info for source packages. Patch from Raphael Geissert. * lib/Lintian/Collect.pm: + [RA] Defer loading of the subclasses until the constructor to avoid circular dependencies at compilation time. * lib/Lintian/Collect/Binary.pm: + [RA] New method relation() to return a Lintian::Relation object for a given relationship field or set of relationship fields. * lib/Lintian/Collect/Source.pm: + [RA] New methods relation() and relation_noarch() to return Lintian::Relation objects for a given build relationship field or set of fields. New method binary_relation() to return a Lintian::Relation object for a given relationship field in a binary package built from this source package. + [RA] Add file_info() method to return file information for source packages. Patch from Raphael Geissert. * lib/Lintian/Relation.pm: + [RA] New class based on the existing Dep module that handles package relationship analysis. Now includes documentation, uses a more object-oriented structure, and removes a special case handling of Perl alternatives. This module will eventually replace Dep. * lib/Lintian/Relation/Version.pm: + [RA] New module containing the version comparison code from Dep. This module will only be needed until Lintian is converted to Dpkg::Version or AptPkg::Version. * lib/Spelling.pm: + [RA] Add some additional typo and case corrections. Patch from Raphael Geissert. * t/runtests: + [RA] Copy test suite data based on checksum, not size and time, since some files change one character and Git doesn't preserve timestamps. Patch from Raphael Geissert. (Closes: #514496) * unpack/list-{binpkg,udebpkg}: + [RA] Preserve the source_version field from the previous list when adding new packages, remove some dead code, and restructure for improved readability. Thanks to Jordà Polo for the analysis. (Closes: #507849) + [RA] Generate an index of files in the upstream source tarball. Patch from Raphael Geissert. -- Russ Allbery Sat, 07 Feb 2009 19:19:45 -0800 lintian (2.2.2) unstable; urgency=low The "this is why spooky action at a distance is bad" release. * checks/copyright-file: + [ADB] Treat the new copyright file format's "License-Alias: Perl" as indicating that the package is licensed under the same terms as Perl. Thanks, gregor herrmann. (Closes: #513831) * checks/debconf: + [RA] Reset $/ before issuing duplicate-fields-in-templates to prevent problems if -i was given. * checks/debhelper: + [RA] Remove stray localization of $/, which broke -i when issuing tags about ${misc:Depends}. * checks/fields: + [RA] Stop pointlessly setting $/ while parsing debian/rules and then restoring it to the wrong value, which broke -i when issuing some tags if they were the first tags issued. * checks/scripts: + [RA] Add nickle as a known interpreter. Patch from Julien Cristau. (Closes: #513823) * lib/Util.pm: + [ADB] Localise a use of $_ in control file parsing to avoid overwriting it and leading to uninitialized value warnings in check scripts. (Closes: #513795) -- Russ Allbery Sun, 01 Feb 2009 11:11:36 -0800 lintian (2.2.1) unstable; urgency=low * Summary of tag changes: + Added - copyright-refers-to-symlink-license (pedantic) - copyright-refers-to-versionless-license-file - debhelper-compat-not-a-number - debhelper-compatibility-level-not-a-number - duplicate-font-file - font-in-non-font-package * checks/copyright-file{,.desc}: + [RA] Add checks for references to the versionless FSF license files, pedantic if the package license allows relicensing under later versions. Patch from Raphael Geissert. (Closes: #497346) * checks/debhelper{,.desc}: + [RA] Use binary_field() to read control fields for binary packages. Patch from Raphael Geissert. + [RA] Read only the first line of debian/compat, matching debhelper's behavior. Improve the parsing of DH_COMPAT to pick up values that aren't numbers. Warn of compatibility levels that aren't numbers. Use the same compatibility level that debhelper would use in some other checks. Patch from Raphael Geissert. (Closes: #513767) + [RA] default-jdk and default-jdk-builddep provide dh_nativejava as a special case. (Closes: #513423) * checks/fields: + [RA] Allow but do not require a libmodule-build-perl dependency if the Build script is referenced in clean. Thanks, Charles Plessy and gregor herrmann. (Closes: #421549) * checks/fields{,.desc}: + [RA] Run dbg-package-missing-depends against the source package instead of the binary package and check that it has a dependency against another binary package built from the same source rather than making assumptions about the package name. Patch from Raphael Geissert. (Closes: #513336) + [RA] Use binary_field() to read control fields for binary packages. Patch from Raphael Geissert. * checks/files{,.desc}: + [RA] Add check for fonts in non-font packages. Thanks, Paul Wise and Raphael Geissert. (Closes: #513650) + [RA] Add check for fonts that duplicate already packaged fonts. Patch from Raphael Geissert. Thanks to Paul Wise for analysis and data. (Partly addresses #298545) * checks/shared-libs.desc: + [RA] Add references to the UsingSymbolsFiles wiki page in the tags requesting generation of a symbols file. + [RA] Provide details on how to manually check some of the shared library problems that Lintian diagnoses. (Closes: #513086) * checks/standards-version: + [RA] Be robust against unparsable timestamps in changelog files. Patch from Raphael Geissert. (Closes: #513766) * checks/version-substvars: + [RA] Use binary_field() to read control fields for binary packages. Patch from Raphael Geissert. * data/files/fonts: + [RA] New file listing all font filenames in Debian and the containing package names. Generated by private/refresh-fonts-data. * data/output/manual-references: + [RA] Manual reference data used for formatting tag descriptions. Moved from lib/manual_refs and added an explanatory header. * frontend/lintian-info: + [RA] Use Lintian::Tag::Info instead of Read_taginfo. * lib/Lintian/Collect/Source.pm: + [RA] Add binary_field() method to return a binary package field from debian/control for a source package. Based on a patch by Raphael Geissert. + [RA] Rewrite the binaries() method to use binary_field(). Based on a patch by Raphael Geissert. * lib/Lintian/Output.pm: + [ADB] Add a colour for pedantic tags to avoid warnings when colourised output is used and make the combination more useful. Thanks, gregor herrmann. (Closes: #513132) + [RA] Use Lintian::Tag::Info instead of Read_taginfo. + [RA] Force early exporting of functions to be more robust in the face of circular library dependencies. The circular dependencies had already existed but not previously caused problems. * lib/Lintian/Output/LetterQualifier.pm: + [ADB] Add support for pedantic tags. + [RA] Use Lintian::Tag::Info instead of Read_taginfo. * lib/Lintian/Tag/Info.pm: + [RA] New module providing an interface to tag metadata. Currently, this only supports formatting the tag description, merging the actions previously done by Manual_refs.pm and Read_taginfo.pm. It defers loading of manual references until they're needed, which removes the requirement that LINTIAN_ROOT be already set in the environment before running the reporting harness. It also saves a small amount of time in runs without -I. * lib/Manual_refs.pm: + [RA] Removed, merged into Lintian::Tag::Info. * lib/manual_refs: + [RA] Moved to data/output/manual-references. * lib/Read_taginfo.pm: + [RA] Removed, merged into Lintian::Tag::Info. * lib/Util.pm: + [RA] Force early exporting of functions to be more robust in the face of circular library dependencies. * man/lintian.1: + [ADB] Fix the spelling of "pedantic". Thanks, Michal Čihař. (Closes: #513083) * private/refresh-fonts-data: + [RA] New script to refresh the list of font filenames and containing packages in Debian. Based on a script by Raphael Geissert. * private/refresh-manual-refs: + [RA] Renamed from manual_refs_update.pl. Add a section heading to the output file and update the file in Lintian's data directory directly rather than printing to standard output. * reporting/config: + [RA] Set a bin directory and disable signature checks by default. * reporting/harness + [RA] Add the bin directory to the path and create a gpg link to /bin/true if signature checks are disabled. This is a hack to work with the etch version of dpkg-source. In lenny, the --no-check flag will be used instead. Patch from Raphael Geissert. * reporting/html_reports: + [RA] Use Lintian::Tag::Info instead of Read_taginfo. * t/runtests: + [RA] Add support for selecting a different test package skeleton. * t/templates/pedantic{,.upstream}: + [RA] New template that passes all pedantic checks. -- Russ Allbery Sat, 31 Jan 2009 20:20:46 -0800 lintian (2.2.0) unstable; urgency=low * Summary of tag changes: + Added - direct-changes-in-diff-but-no-patch-system (pedantic) - no-homepage-field (pedantic) - no-upstream-changelog (pedantic) - package-depends-on-hardcoded-libc - weak-dependency-on-misc-depends * checks/*.desc: + [RA] Replace `' "balanced" quotes with straight double-quotes. The old style looks strange with modern fonts. Based on work by Raphael Geissert. * checks/binaries: + [FL] Fix check for directories in the package in RPATH check. * checks/changelog-file{,.desc}: + [RA] Use Lintian::Collect to read the changelog. + [RA] Enable no-upstream-changelog as a pedantic check, since it's often incorrect for multiple binary packages generated from the same source. Patch from Raphael Geissert. (Closes: #470912) * checks/control-file{,.desc}: + [ADB] Fix a typo ("arne't"). Thanks, Raphael Geissert. + [RA] Check for hard-coded package dependencies on libc. Patch from Evgeni Golov. (Closes: #512196) + [RA] Check package-depends-on-itself for Suggests as well. * checks/debhelper{,.desc}: + [ADB] Remove no longer required "Type" fields from a couple of entries. Thanks, Raphael Geissert. + [ADB] Fix a couple of typos. Thanks, Raphael Geissert. + [RA] Allow ${misc:Depends} in Pre-Depends and warn of ${misc:Depends} in Recommends or Suggests. Patch from Raphael Geissert. (Closes: #512478) * checks/fields{,.desc}: + [RA] Add pedantic check for no Homepage control field. Patch from Raphael Geissert. * checks/files: + [RA] Add swfobject.js to embedded-javascript-library. Thanks, Paul Wise. (Closes: #512363) * checks/nmu{,.desc}: + [RA] Use Lintian::Collect to read the changelog. + [RA] Only treat the mention of NMU as a maintainer acknowldegement if the "ack" string appears before the mention of NMU. Avoids changelog-should-mention-nmu false positives for "NMU with ACK from maintainer." Thanks, Evgeni Golov. (Closes: #512738) * checks/patch-systems{,.desc}: + [RA] Add pedantic check for changes to the upstream source in the diff without using a patch system. Thanks, Raphael Geissert. * checks/standards-version{,.desc}: + [ADB] Add source-control-file to the list of information needed by the script. Thanks, Raphael Geissert. (Closes: #512563) + [RA] Use Lintian::Data to get the standards versions and release dates. Dates are now in seconds since epoch, so remove the date conversion code. * checks/version-substvars.desc: + [RA] Mention when the binary:Version and source:Version substvars were introduced. Thanks, Steffen Moeller. * collection/*.desc: + [RA] Replace `' "balanced" quotes with straight double-quotes. The old style looks strange with modern fonts. Based on work by Raphael Geissert. * data/standards-version/release-dates: + [RA] Known standards versions and their release dates in seconds since epoch, taken from checks/standards-version. * frontend/lintian: + [RA] Add --pedantic option to display pedantic tags. Patch from Raphael Geissert. (Closes: #373767) * lib/Checker.pm: + [ADB] Remove some unused code. * lib/Lintian/Collect/Binary.pm: + [RA] Add a changelog() method to return the parsed changelog. * lib/Lintian/Collect/Source.pm: + [ADB] Add a missing "use Util" as the module uses the fail() function from that module. Thanks, Raphael Geissert. (Closes: #512560) * lib/Text_utils.pm: + [ADB] Add a missing "use Util" as the module uses the fail() function from that module. Thanks, Raphael Geissert. * lib/Tags.pm: + [RA] Add support for pedantic tags. Patch from Raphael Geissert. * man/lintian.1: + [RA] Document the new --pedantic option. * reporting/html_reports: + [RA] Add support for a new tag index sorted by severity and certainty. (Closes: #511496) * reporting/templates/index.tmpl: + [RA] Link to the new tag index. * reporting/templates/tags-severity.tmpl: + [RA] Template for a tag index sorted by severity and certainty. * t/runtests: + [RA] Add support for specifying the Lintian options to use when checking a test package. Patch from Raphael Geissert. (Closes: #512678) + [RA] Expect the desc files for tests to be in the test directory rather than at the top level and move the sequence number to an attribute in the test description rather than in the desc file name. -- Russ Allbery Sat, 24 Jan 2009 16:43:32 -0800 lintian (2.1.6) unstable; urgency=low * Summary of tag changes: + Added - diff-contains-cmake-cache-file - diff-contains-hg-tags-file - duplicate-uploader - empty-debian-diff - malformed-changes-file - missing-comma-after-substvar - source-contains-hg-tags-file * checks/control-file{,.desc}: + [RA] Check for missing commas after substvars in dependency fields. Thanks, Jari Aalto. (Closes: #409099) * checks/cruft{,.desc}: + [RA] Error on CMakeCache.txt files added or modified in the diff. Thanks, Joerg Jaspert. (Closes: #510957) + [RA] Warn about .hgtags files in the diff and source. Thanks, Holger Levsen and Chris Lamb. (Closes: #464837) + [RA] Warn if the Debian diff or a non-native package is entirely empty. (Closes: #498668) * checks/debhelper: + [RA] Ignore architecture when checking whether sufficient build dependencies are present for dh_* commands. If the maintainer has architecture-restricted build dependencies, they presumably know what they're doing. (Closes: #511859) * checks/fields{,.desc}: + [ADB] Warn about an individual uploader appearing multiple times in Uploaders. Thanks, Joerg Jaspert. (Closes: #511536) + [RA] Ignore architecture qualifications when checking for missing build dependencies. * checks/lintian.desc: + [RA] Add tag description for malformed-changes-file. * checks/menus: + [RA] Recognize type as a way of checking for binaries, even though it's a bashism, so that we don't issue confusing duplicate tags for one same problem. (Closes: #512119) * checks/nmu{,.desc}: + [RA] Suppress NMU warnings for packages with "local" in the version number or "local package" in the first line of the changelog. Thanks, Zack Weinberg. (Closes: #501523) * checks/scripts{,.desc}: + [RA] Mention type as a bashism and recommend which or command -v. + [RA] Recognize type as a way of checking for binaries, even though it's a bashism, so that we don't issue confusing duplicate tags for one same problem. * checks/standards-version.desc: + [RA] Add a pointer to the debian-policy upgrading-checklist.txt.gz in out-of-date-standards-version and ancient-standards-version. * frontend/lintian: + [RA] Check that .changes files have at least a Format key. If not, issue malformed-changes-file and skip them. This catches .changes files that were PGP-signed twice. (Closes: #315538) * lib/Dep.pm: + [RA] New function, parse_noarch(), which ignores architecture qualifications when parsing a dependency field. * t/runtests: + [RA] Add pre_upstream hook to modify the upstream source before generation of the .orig.tar.gz. -- Russ Allbery Sat, 17 Jan 2009 13:35:04 -0800 lintian (2.1.5) unstable; urgency=low * Summary of tag changes: + Added - changed-by-address-is-on-localhost - changed-by-address-looks-weird - changed-by-address-malformed - changed-by-address-missing - changed-by-name-missing - duplicate-long-description - duplicate-short-description - malformed-deb-archive * checks/control-file{,.desc}: + [RA] Tag (severity: wishlist) duplicate short or long descriptions in packages built from the same source. (Closes: #30020) + [RA] Clarify the binary-control-field-duplicates-source tag. (Closes: #511213) * checks/deb-format{,.desc}: + [RA] New check for the format of *.deb ar archives. Most cases will fail during unpack, but dpkg-deb is more forgiving than dak and allows ordering problems and extra members that dak rejects. (Closes: #292055) * checks/fields: + [RA] Use check_maintainer from Lintian::Check, which suppresses duplicate tags for some ill-formed maintainer fields. * checks/lintian.desc: + [RA] New tag descriptions for Changed-By field tests. * checks/rules: + [RA] Consider a define command to be the end of a list of target commands, avoiding binary-arch-rules-but-pkg-is-arch-indep false positives when an empty rule is followed by a definition. (Closes: #510869) * frontend/lintian: + [RA] Run maintainer well-formedness checks on the Changed-By field of the *.changes file. (Closes: #183642) * lib/Lintian/Check.pm: + [RA] New module for checks run from multiple places. * lib/Lintian/{Output.pm,Output/*.pm}: + [RA] Expect a single string of extra information rather than an array, removing duplicate code to convert it to a string. * lib/Lintian/Schedule.pm: + [RA] Fix Perl warnings triggered by missing fields in the control file of a binary package. * lib/Tags.pm: + [RA] Avoid Perl warnings if Severity or Certainty isn't set for a tag. (Closes: #507278) + [RA] Record statistics for certainty correctly. + [RA] Canonicalize the extra tag information once and pass it as a string to the other output methods. Based on a patch by Raphael Geissert. (Closes: #498883) + [RA] Fix override checking with extra tag information that Perl evaluates to false (such as a bare 0). * man/lintian.1: + [RA] Document new deb-format check script. * t/runtests: + [RA] Add support for running lintian on changes files in t/changes and checking the tag output. + [RA] Add support for building a Debian package using basic tools, with more complete control over the contents, and running lintian on the results. + [RA] Fix exit status when a test fails but -k was given. -- Russ Allbery Sat, 10 Jan 2009 21:59:57 -0800 lintian (2.1.4) unstable; urgency=low * Summary of tag changes: + Added - binary-control-field-duplicates-source - brace-expansion-in-debhelper-config-file - control-interpreter-in-usr-local (split from interpreter-in-usr-local) - control-interpreter-without-depends - copyright-refers-to-bad-php-license - copyright-refers-to-problematic-php-license - copyright-with-old-dh-make-debian-copyright - dh-clean-k-is-deprecated - desktop-mimetype-without-update-call - forbidden-postrm-interpreter - games-package-should-be-section-games - preinst-interpreter-without-predepends - script-calls-init-script-directly - unknown-control-interpreter (split from unusual-interpreter) - version-refers-to-distribution + Removed - desktop-file-but-no-dh_desktop-call - interpreter-without-predep * checks/changelog-file{,.desc}: + [RA] Warn of Debian version numbers containing "testing", "stable", or "unstable", or with release code names for uploads not targeted at that release, except in NMUs. Based on a patch by Raphael Geissert. (Closes: #498876) * checks/control-file{,.desc}: + [RA] Warn (severity: wishlist) of binary control stanzas duplicating fields of the source control stanza. (Closes: #497348) * checks/copyright-file{,.desc}: + [RA] Warn (severity: wishlist) about the old dh_make packaging copyright, which used (C) without the word or symbol. Based on a patch by Raphael Geissert. (Closes: #497347) + [RA] Clean up checks of a symlinked /usr/share/doc directory and avoid making package info global. + [RA] Warn about older PHP licenses. Based on a patch by Raphael Geissert. (Closes: #498875) * checks/cruft: + [RA] Keep the hash of files for which warnings were already issued local to each package, reducing memory consumption and false negatives for archive-wide runs. * checks/debhelper{,.desc}: + [RA] Check for use of shell brace expansion in debhelper config files that list filenames, which is not supported. Based on a patch from Raphael Geissert. (Closes: #480939) + [RA] If dh is used, require debhelper tokens in maintainer scripts. + [ADB] Warn about packages declaring a debhelper compatibility level of 7 or above and using dh_clean -k, which has been deprecated in favour of dh_prep. + [RA] Add dh_auto_* and dh_prep to the debhelper scripts that require a particular version of debhelper. + [RA] De-duplicate the list of scripts with specific version requirements before issuing tags. + [RA] Upgrade package-lacks-versioned-build-depends-on-debhelper to certain (although still minor), making it a warning. debhelper(7) explicitly recommends a versioned build dependency on debhelper. Rewrite the tag description accordingly. * checks/fields: + [RA] dh-make-php provides a CDBS rule fragment and hence should go into Build-Depends, not Build-Depends-Indep. Thanks, Mathieu Parent. (Closes: #509286) * checks/files{,.desc}: + [RA] Packages whose executables are all in /usr/games should probably be in section games. (Closes: #509147) * checks/menu-format{,.desc}: + [RA] If a *.desktop file contains a MimeType key, check that the postinst calls update-desktop-database. (Closes: #488832) + [RA] Stop keeping a separate hash of all files in the package and use Lintian::Collect information. The hash was being reused across packages, possibly leading to excessive memory consumption and false negatives for archive-wide runs. * checks/menus: + [RA] Keep the hash of files and symlinks local to each package, reducing memory consumption and false negatives for archive-wide runs. * checks/patch-systems.desc: + [RA] Improve the patch-system-but-direct-changes-in-diff long description. (Closes: #496516) * checks/rules{,.desc}: + [RA] Remove desktop-file-but-no-dh_desktop-call. The only action of dh_desktop is now checked by desktop-mimetype-without-update-call; dh_desktop is unnecessary with other *.desktop files. * checks/scripts{,.desc}: + [RA] Overhaul checking of maintainer script and config interpreters: - postrm scripts must use an essential interpreter. - Only preinst scripts require Pre-Depends; Depends is sufficient for postinst and prerm scripts. (Closes: #508307) - Separate unknown-control-interpreter from unusual-interpreter since it's much more likely to be an error. - Separate control-interpreter-in-usr-local from interpreter-in-usr-local since the severity is higher. - unusual-control-interpreter is certain, not possible. - Suppress some cases of multiple tags about the same basic problem. + [RA] Check for scripts in /etc that call init scripts directly without using invoke-rc.d. Based on a patch by Raphael Geissert. (Closes: #381485) + [RA] Allow dpkg-dev to satisfy a make dependency. (Closes: #510190) + [ADB] More intelligently remove comments from shell scripts, to avoid removing some constructs that aren't comments, such as those in [ $# -gt 2 ] and "foo # bar". + [ADB] Flag the source bashism when its argument is quoted or a bare filename. * checks/watch-file: + [RA] Recognize additional SourceForge URLs and recommend the redirector. Thanks, Riccardo Stagni. (Closes: #510398) * collection/copyright-file: + [RA] Copy copyright files that are relative links, provided that the link is safe, and otherwise treat symlinked copyright files as if they were empty. Fixes a Lintian crash on packages where the copyright file is a relative symlink. * debian/copyright: + [RA] Add an explicit key to initials used in changelog entries. * debian/rules: + [RA] New check-tag target which runs all test cases in the new test suite that check for or against a particular tag. * data/debhelper/filename-config-files: + [RA] New file listing debhelper config files containing filenames. * frontend/lintian: + [RA] When processing the entire archive, do so in sorted order. * private/update-never-seen: + [RA] Merge data from both test suites and use the tag files for the old test suite rather than relying on runtests -v. * reporting/html_reports: + [RA] We only care about the first line of the archive timestamp. * t/runtests: + [RA] Check that a test produces all tags listed in Test-For and doesn't produce any tages listed in Test-Against. + [RA] Support finding and running all tests for or against a particular tag. + [RA] Correctly set up non-native packages for dpkg-source. * t/tests/README: + [RA] Add documentation of the new test suite. -- Russ Allbery Sat, 03 Jan 2009 16:40:30 -0800 lintian (2.1.3) unstable; urgency=low * Summary of tag changes: + Added - debian-watch-file-should-use-sf-redirector - debian-watch-file-specifies-wrong-upstream-version - debian-watch-file-specifies-old-upstream-version - extended-description-is-probably-too-short - shlib-without-versioned-soname * checks/description{,.desc}: + [RA] Check for extended descriptions shorter than three lines; they probably don't contain enough information. Patch from Raphael Geissert. * checks/files{,.desc}: + [RA] Exclude __init__.py files and Doxygen-generated *.map files from zero-byte-file-in-doc-directory. Improve the tag description to add a rationale and a suggestion for when overrides are appropriate. Lower the certainty to possible. (Closes: #507273) + [RA] Move the check for override files in the wrong location so that the check for subdirectories of /usr/share/lintian/overrides works and improve the tag description. * checks/nmu: + [RA] Recognize Ubuntu native packages by the target distribution and suppress NMU tags for them. Based on a patch by Adrien Cunin. (Closes: #507740) * checks/shared-libs{,.desc}: + [RA] Remove special shlibs exception for NSS modules. libc6 now includes shlibs entries for them. + [RA] Report a more specialized tag for shared libraries with SONAMEs that have no version and exclude them from the shlibs file tests since they cannot be represented there. Reported by Raphael Hertzog. (Closes: #506673) + [RA] Use the same regexes as dpkg-shlibdeps when parsing version information from SONAMEs. * checks/version-substvars: + [RA] Skip version substvar checks when the dependency is on a package whose name is formed by expanding substvars at build time. Thanks, Bastian Blank. (Closes: #507763) * checks/watch-file{,.desc}: + [RA] Merge a set of changes by Raphael Geissert: - Correctly parse multiple line continuations. - Don't attempt any detailed checks on version one watch files. - Recognize versionmangle in addition to [du]versionmangle. - Add line information to some of the tags. - Detect watch files that specify SourceForge download servers directly and suggest use of the QA sf.net redirector instead. - Detect watch files specifying an upstream version that matches a non-native Debian package version in debian/changelog. - Detect watch files specifying an upstream version for an older changelog entry when the current changelog entry has a newer upstream version. * data/changelog-file/ubuntu-dists: + [RA] New shared list of Ubuntu distributions. * frontend/lintian: + [RA] Recognize Ubuntu native packages by the target distribution and check them against the correct set of distributions. Based on a patch by Adrien Cunin. (Closes: #507740) * lib/Lab.pm: + [ADB] Ensure that the output of unpack/list-*pkg is correctly captured so that the reporting harness can use the information to decide which packages to process in an incremental run. * lib/Lintian/Data.pm: + [RA] New all() method that returns all valid keywords. * lib/Read_pkglists.pm: + [JP] Add a new "source version" field to binary and udeb info files. Bump binary and udeb format version to 3 and 2 respectively. * reporting/html_reports: + [JP] Group packages by source version instead of binary version. (Closes: #507849) * reporting/templates/maintainer.tmpl: + [ADB] Print tags affecting udeb packages under a heading for that package, rather than merging them in to whichever binary package was last displayed (or the source package if the udeb is first alphabetically). + [ADB] Separate tags affecting a binary package from those of a source package with the same name when the binary is the first package produced from the source for which there are issues. + [JP] Include binary package version in subtitles when it isn't the same as the source version. * t/runtests: + [RA] Parameterize the package section in the skeleton. * unpack/list-{bin,udeb}pkg: + [JP] Extract source package version from source field. -- Russ Allbery Sat, 27 Dec 2008 14:17:18 -0800 lintian (2.1.2) unstable; urgency=low * frontend/lintian: + [ADB] Accept "html" as a valid argument for --color again. * lib/Lintian/Output.pm: + [ADB] Re-introduce support for HTML coloured output. (Closes: #508341) * man/lintian.1: + [ADB] Document that "--color=html" is supported again. -- Adam D. Barratt Wed, 10 Dec 2008 20:12:48 +0000 lintian (2.1.1) unstable; urgency=low * Summary of tag changes: + Added - latest-debian-changelog-entry-changed-to-native * checks/changelog{,.desc}: + [ADB] Warn when the version of a package changes to Debian native. Based on a patch by Michal Čihař. (Closes: #504070) * checks/fields.desc: + [RA] Improve the recommendation for dependencies in debug packages to include the case of a debug package corresponding to multiple other packages. * checks/files: + [ADB] Add tests for several more embedded PHP libraries. Patch by Raphael Geissert. * checks/patch-systems{,.desc}: + [ADB] Don't complain about a missing quilt build-dependency if the package contains a directory named debian/patches/series. (Closes: #507761) + [ADB] Lower the severity of {quilt-,d}patch-missing-description from minor to wishlist. * checks/scripts: + [ADB] Enhance the test for command-with-path-in-maintainer-script to better match executions of the command rather than the use of its name in pattern matching expressions. (Closes: #499847) * collection/{fileinfo,md5sums}: + [ADB] Use blocking filehandles to pass the list of filenames to check to the spawned file / md5sum. By default the handles were non-blocking which could lead to problems with larger file lists. (Closes: #507461) * debian/{control,copyright}: + [ADB] Add Adam D. Barratt to Uploaders and copyright. * frontend/lintian: + [ADB] Don't call lintian-info when --info is specified. Set a new flag on the Lintian::Output module instead. * frontend/lintian-info: + [ADB] Add missing "use Text_Utils". It used to be indirectly pulled in via Read_taginfo. * lib/Lintian/Output{.pm,/*.pm}: + [ADB] Flag a tag as issued when printing it. * lib/Lintian/Output.pm: + [ADB] Make sure the default list of colours is initialised before attempting to use it. Thanks, gregor herrmann. (Closes: #507241) + [ADB] Maintain a list of tags which have been issued. + [ADB] Optionally include the description of a tag when displaying it. * lib/Lintian/Output/ColonSeparated.pm: + [ADB] Fix uninitialized value warnings by displaying the type code rather than the (no longer present in description files) Type field and handling non-overriden tags. * lib/Lintian/Output/LetterQualifier.pm: + [ADB] Optionally include the description of a tag when displaying it. * lib/Lintian/Output/XML.pm: + [ADB] Add a missing angle bracket to the closing "tag" tag, so that the XML is well-formed. * lib/Lab.pm: + [FL] Fix breakage of populate_with_dist() I introduced in 2.1.0. * lib/Read_taginfo.pm: + [ADB] Move the work of formatting a tag's description to a separate function so that it can be called from multiple locations. + [ADB] Properly export those functions which are called from other modules. * lib/Spelling.pm: + [RA] Don't add unnecessary backslashes in the list of spelling corrections. They're copied into the output. Thanks, Micah Anderson. (Closes: #507331) * lib/Tags.pm: + [ADB] Don't output a "Processing binary package foo.changes" message. Thanks Sandro Tosi for pointing the issue out. * lib/Text_utils.pm: + [ADB] Properly export those functions which are called from other modules. * reporting/html_reports: + [ADB] Add missing "use Text_Utils". It used to be indirectly pulled in via Read_taginfo. -- Adam D. Barratt Mon, 9 Dec 2008 00:09:21 +0000 lintian (2.1.0) unstable; urgency=low * Summary of tag changes: + Added - debhelper-but-no-misc-depends - missing-build-dependency-for-dh_-command - quilt-patch-missing-description - shlib-calls-exit * checks/common_data.pm: + [FL] New variable $known_shells_regex which matches known shell names. This removes some synchronisation issues between the different regexes in use. * checks/debconf{,.desc}: + [CW] Update my e-mail address. + [ADB] Don't detect the use of "?" as a literal character or wildcard as part of a question in an extended template description. Based on a patch by Stephen Gran. (Closes: #500661) * checks/debhelper: + [FL] Use Lintian::Data for list of debhelper commands that modify maintainer scripts. Patch by Raphael Geissert. + [FL] Add new tag missing-build-dependency-for-dh_-command for debhelper commands that are not from the debhelper package. Patch by Raphael Geissert. + [FL] Add new tag debhelper-but-no-misc-depends which warns about missing misc:Depends if you use commands that might set it. Patch by Raphael Geissert. (Closes: #499737) * checks/fields: + [ADB] Ignore non-dependency fields when considering whether a versioned dependency is satisfied by the perl core packages. Based on a patch by Niko Tyni. (Closes: #500720) + [RA] Stop checking for a libmodule-build-perl build dependency since Module::Build now comes with Perl. Thanks, Raphael Hertzog. (Closes: #506697) * checks/files: + [ADB] Apply patches from Raphael Geissert to update the list of embedded PHP libraries: - Add detection for the Snoopy and GeSHi libraries and the use of phpmailer.inc (rather than .php). - Enable the libmarkdown-php check, as the package is now in unstable. - Add support for the (not currently packaged and thus disabled) IXR and kses libraries. * checks/infofiles: + [FL] Use $known_shells_regex from common_data. * checks/menus: + [FL] Use $known_shells_regex from common_data. * checks/patch-systems{,.desc}: + [ADB] Don't include dpatch comment lines containing no content when determining whether the patch includes a description. (Closes: #503695) + [ADB] Add missing "diffstat" to the Needs-Info field. + [ADB] Check whether quilt patches include a description. (Closes: #498892) * check/scripts: + [FL] Use $known_shells_regex from common_data. + [FL] Add icmake as a known interpreter as requested by Frank B. Brokken. (Closes: #505868) * checks/shared-libs{,.desc}: + [ADB] Don't issue both symbols-file-contains-debian-revision and symbols-file-contains-current-version-with-debian-revision for any given symbol, as the latter implies the former and may thus create noise in the tests' output. (Closes: #505826) + [ADB] Add an experimental tag flagging shared libraries that call _exit() or exit() without at some point calling fork() (a somewhat inaccurate heuristic, but one which should weed out a number of false positives). (Closes: #504257) * collection/objdump-info: + [ADB] Only use readelf to emulate objdump if objdump returned "file format not recognized". In cases where the objdump output was "invalid operation", the output of etch's readelf is not particularly useful and it's easier to simply let the checks scripts handle the objdump output. * debian/control: + [FL] Add dependency on libipc-run-perl for Lintian::Command. * doc/lintian.sgml: + [ADB] Correct a few typos in the "overrides" section. * frontend/lintian: + [FL] Convert to use Lintian::Output. + [CW] Add jaunty as an allowable distribution for Ubuntu, and remove the EOLed edgy and feisty. + [ADB] Don't complain about unused overrides if the check script for the overriden tag hasn't been run (or --tags was used and the overriden tag not specified). (Closes: #501722) * lib/Lintian/Output: + [FL] New module to bundle output methods. * lib/Tags/{ColonSeparated,LetterQualifier}.pm: + [FL] Move to lib/Lintian/Output and convert to subclasses of Lintian::Output. * lib/Lintian/Output/XML.pm: + [FL] New experimental output format. * lib/Lintian/Command: + [FL] New utility module as a replacement for Pipeline. Provides a convenient wrapper around IPC::Run. * lib/Lab.pm: + [FL] Convert to use Lintian::Output. * lib/Tags.pm: + [FL] Convert to use Lintian::Output. * lib/Pipeline.pm: + [FL] Remove, replaced by Lintian::Command. * lib/Spelling.pm: + [RA] Add subversion to Subversion correction for package descriptions. Thanks, Sandro Tosi. (Closes: #506793) + [ADB] Don't check text contained within square brackets for capitalisation mistakes. This allows for lists such as "[ cvs | subversion ]" to be included. * lib/Util.pm: + [FL] Convert to use Lintian::Output. + [FL] Add some new utility functions: delete_dir copy_dir gunzip_file touch_file. * private/refresh-debhelper-data: + [FL] New script to update debhelper related data by Raphael Geissert. - data/debhelper/miscDepends_commands: debhelper commands that set misc:Depends - data/debhelper/maint_commands: debhelper commands that edit maintainer scripts - data/debhelper/dh_packages: packages that contain debhelper commands - data/debhelper/dh_commands: mapping of debhelper commands to packages they are contained in * testset/{diffs,filenames}: + [ADB] Generate the files "files/'\ " and "filenames.c~" at build time instead of including it in the source package, to allow lintian to be imported in to Bazaar. -- Frank Lichtenheld Sun, 28 Sep 2008 10:35:47 +0200 lintian (2.0.0) unstable; urgency=low The "and this is only the beginning" release. * checks/fields: + [RA] Allow tildes in the optional version number in the Source field. Thanks, Rene Engelhard. (Closes: #500063) * checks/scripts: + [ADB] Detect brace expansions with either a leading or trailing blank component (e.g. "{foo,}"). Thanks to Jonny Lamb for pointing this out. * frontend/lintian: + [FL] Fix config file parsing which I completly broke in ~rc1. * lib/Lintian/Schedule.pm: + [FL] Fix parsing of source package entries in package lists. * man/lintian.1: + [FL] Remove a stray backslash. * reporting/harness: + [FL] Include STDERR output in lintian.log. -- Frank Lichtenheld Sun, 28 Sep 2008 01:08:41 +0200 lintian (2.0.0~rc2) experimental; urgency=low * Summary of tag changes: + Added: - package-superseded-by-perl * checks/copyright-file: + [FL] Also detect v1.1 of CeCILL license, not only v2.0. (Closes: #498994) * checks/debhelper: + [FL] Use new Lintian::Collect::Source->binaries method. * checks/fields{,.desc}: + [FL] Warn about Perl module packages superseded by Perl core. Patch by Niko Tyni. (Closes: #498897) * checks/rules: + [FL] Do not issue desktop-file-but-no-dh_desktop-call if the package uses dh. (Closes: #497247) * checks/scripts: + [FL] Accept the ocaml virtual packages as providing ocamlrun. Based on a patch by Stephane Glondu. (Closes: #495431) * checks/standards-version: + [FL] Use new Lintian::Collect::Source->binaries method to fix udeb detection. Thanks to Raphael Geissert. (Closes: #498096) * frontend/lintian: + [FL] Add support for ranges to --display-level. * lib/Lintian/Collect/Source.pm: + [FL] New binaries method that returns a hash with binary package names and types. -- Frank Lichtenheld Sun, 21 Sep 2008 15:56:51 +0200 lintian (2.0.0~rc1) experimental; urgency=low * [FL] Merge the results of the GSoC project by Jordà Polo, which fully implements a tag classification system in two dimensions (Severity and Certainty). The default output is unchanged, see the documentation on how to utilize the new features. * Summary of tag changes: + Added: - description-contains-dh-make-perl-template - doc-base-uses-applications-section (actually a split of doc-base-unknown-section in two tags) - embedded-pear-module - embedded-php-library - improbable-bug-number-in-closes - maintainer-also-in-uploaders - maintainer-script-ignores-errors - manpage-has-errors-from-pod2man - ored-build-depends-on-obsolete-package (actually a split of build-depends-on-obsolete-package in two tags) - versioned-dependency-satisfied-by-perl - windows-devel-file-in-package + Removed: - package-needs-python-policy-debhelper * checks/*.desc: + [ADB] Fix a number of spelling mistakes and typos. * checks/changelog-file{,.desc}: + [RA] Warn about closing a bug number less than 100; this is likely a typo or placeholder. Thanks, Raphael Geissert. (Closes: #497350) * checks/debconf: + [ADB] Avoid flagging a template as unused if its definition is followed by a string of whitespace. * checks/debhelper{,.desc}: + [FL] Do not require versioned build-depends for compat level 5 anymore. Sarge is not supported anymore. (Closes: #496826) + [FL] Drop package-needs-python-policy-debhelper. Sarge is not supported anymore. * checks/description{,.desc}: + [FL] Warn about left-over dh-make-perl statement. * checks/fields{,.desc}: + [RA] Check for a maintainer also listed in uploaders. Patch from Raphael Geissert. + [ADB] Don't issue an error tag for obsolete packages in Build-Depends fields if the package is part of an "ORed group" of packages and is not listed first. As with Depends, an info tag will still be issued for such packages. (Closes: #496875) + [FL] Check Enhances together with the other relational fields. + [FL] Add ant to @rule_clean_depends. (Closes: #498135) + [FL] Due to a logical error "source-field-malformed" was never actually checked. Patch by Raphael Geissert. (Closes: #498197) + [FL] Check for unnecessary versioned dependencies on Perl core modules. Patch by Niko Tyni. (Closes: #497887) * checks/files{,.desc}: + [RA,FL] Patches from Raphael Geissert: - Check for embedding copies of jsjac and jsMath. - Check for embedded copies of tinymce/2 and allow the usage of regexes on pkgs names. - Add xinha on the embedded js lib check, which is not yet in the archive thus disabled. - Add experimental check for embedded copies of PEAR PHP modules. + [ADB] Rework the description for embedded-javascript-library to make it clear that the listed libraries are examples rather than an exclusive list. Also fix a spelling mistake. + [ADB] Re-add an accidentally removed slash to the check for embedded Javascript libraries, removing some false positives. (Closes: #497215) + [FL] Check for Windows Development files in packages. Based on a patch by Raphael Geissert. * checks/manpages{,.desc}: + [FL] Warn about the POD ERRORS sections pod2man generates. (Closes: #497864) * checks/menus{,.desc}: + [FL] Do not complain if the unknown doc-base section is the subsection of a known section. The doc-base documentation seems to suggest that this is o.k. (Closes: #495836) + [FL] Issue a special tag if the doc-base section would be valid except for a prefixed App(lication)s. * checks/scripts: + [FL] Change all regular expressions in depends_needed to require spaces after the command and not \b. There are very few cases where this would produce false negatives but there are reported false positives for the current expressions. + [RA] Improve the check for possibly insecure /tmp files to check variable assignment as well and reduce false positives by ignoring uses with $RANDOM or without a filename. Based on a patch from Raphael Geissert. + [FL] Update lists of available interpreter versions (remove: jruby1.1, pike7.7, php4, octave2.9, add: tcl8.6, tk8.6). (Closes: #485954) + [FL] Add . and + to regex for command-with-path-in-maintainer-script. Based on a patch from Raphael Geissert. + [FL] Check for missing set -e in maintainer scripts. Patch by Raphael Geissert. + [FL] Add mksh as a valid interpreter. (Closes: #498075) + [FL] Handle continued lines in maintainer shell scripts correctly. Based on a patch by Rafael Laboissiere. (Closes: #495176) * collection/objdump-info: + [ADB] Correctly handle shared objects with no symbol versioning when using readelf. + [ADB] Update the readelf version table parsing code to handle hidden symbols. * data/fields/perl-provides: + [FL] Data about Perl modules that are available both in Perl and as separate packages. * private/refresh-perl-provides: + [FL] Script to update data/fields/perl-provides. By Niko Tyni. * doc/lintian.sgml: + [FL] Document wildcard support in overrides. * frontend/lintian: + [RA] Ensure we close the pipe to lintian-info before exiting, since otherwise lintian-info may print the rest of our output after lintian exits, producing confusing output interleaved with the shell prompt. (Closes: #496295) + [FL] Actually make package version available to output formatters. Currently used only by experimental colon-separated output. + [FL] Use new module Lintian::Schedule and make package architecture available to output formatters if possible. Currently used only by experimental colon-separated output. * lib/Tags.pm: + [FL] Add support for specifying wildcards in overrides. (Closes: #253884) * lib/Tags/ColonSeparated.pm: + [FL] Update for new features and make a little bit easier to read for humans: - Update the format to include the new severity/certainty info. - Include information whether the tag is experimental. - Move the detailled override info to the end but include info flag about the override status in the same column that also includes the experimental flag info. * lib/Lintian/Schedule.pm: + [FL] Factor out some scheduling code. * lib/Lintian/Data.pm: + [FL] Extend Lintian::Data to handle key/value pairs. Patch by Niko Tyni. * man/lintian.1: + [FL] Document udeb support in description for --packages-file. * reporting/templates/maintainer.tmpl: + [ADB] Don't list packages in the summary at the top of the main report page if all of the issues reported for the package were "info" or "experimental". (Closes: #498617) * t/runtests: + [FL] Copy the changes to testset/runtests from JP's branch. + [FL] Remove global tests that were duplicated from testset/runtests, which will not go away in the forseeable future. + [FL] Print a warning if no tests were run. Based on a patch by Raphael Geissert. + [RA] Fix single test mode. * testset/runtests: + [FL] Print a warning if no tests were run. Based on a patch by Raphael Geissert. -- Frank Lichtenheld Sun, 14 Sep 2008 03:31:54 +0200 lintian (1.24.4) unstable; urgency=low The "[JP] is Jordà Polo" release. * checks/*.desc: + [JP] Update, fix and unify various manual references. * checks/copyright-file: + [ADB] Don't flag copyright files using phrases such as "previously distributed under the GNU GPL" as lacking a reference to the license. Thanks Raphael Geissert. * checks/cruft{,.desc}: + [FL] Add new check for outdated libtool files. (Closes: #293296) + [FL] Don't exclude all of lintian, but only files in the test suites. * checks/files{,.desc}: + [ADB] Don't warn about embedded Javascript libraries in the package that actually provides the library. Thanks Raphael Geissert for pointing out the problem. (Closes: #494577) + [ADB] Enhance the description of package-contains-empty-directory to mention how to remove such directories when building the package. Thanks Chris Lamb. (Closes: #495153) + [ADB] Add libjs-yui (the Yahoo User Interface Library) to the list of packages which contain Javascript libraries and should be depended upon rather than embedded in other packages. Patch from Chris Lamb. (Closes: #495155) * checks/manpages: + [RA] Also ignore "cannot adjust line" errors from man for lines that contain URLs. Thanks, Stéphane Glondu. (Closes: #491578) * checks/scripts: + [ADB] Split the "read without variable or with invalid options" bashism test in two, thus enabling the checks to be more accurate and avoiding an uninitialized variable warning. (Closes: #494450) + [RA] Add dash to the recognized characters in a command in command-with-path-in-maintainer-script to avoid truncation. Thanks, Thijs Kinkhorst. (Closes: #494723) + [RA] Add jruby1.1, thanks Sebastien Delafond. (Closes: #494919) * checks/shared-libs{,.desc}: + [RA] Clarify that shlibs-declares-dependency-on-other-package can be issued for a version mismatch. (Closes: #494400) + [ADB] Correctly match alternative dependency templates in symbols files which specify an unversioned dependency. * checks/standards-version: + [FL] Avoid Perl warning if only the timestamp could not be parsed. * collection/objdump-info: + [ADB] Correctly parse a readelf symbol version block containing the definition of a single symbol. * debian/rules: + [FL] Use $(PERL) instead of a hardcoded path. + [FL] Clean-up the binary-indep code. + [FL] Add build stamp file. * doc/README{,.in}: + [FL] Move README to README.in and add the listing of lintian options on build time from lintian --help. * frontend/lintian: + [FL] Do not try to use fail() before the lintian libraries are loaded. + [JP] Allow tags from the "lintian" checkset to be specified with --tags. * lib/manual_refs: + [JP] Regenerate with new manual_refs_update.pl script. (Closes: #493660) * lib/Read_taginfo.pm, lib/Manual_refs.pm: + [JP] Add support for new manuals, allow specifying manual sections by id and not only by section number. + [JP] Link manpages to manpages.debian.net. * private/manual_refs_update.pl: + [JP] Add support for many more manuals (FHS, debconf-spec, {menu,python,perl}-policy, libpkg-guide). -- Frank Lichtenheld Fri, 22 Aug 2008 07:43:52 +0200 lintian (1.24.3) unstable; urgency=low The "greetings from Argentina" release. * checks/binaries: + [ADB] Use Lintian::Collect throughout rather than reparsing file-info and objdump-info. * checks/changelog-file{,.desc}: + [ADB] Use Lintian::Collect instead of reading the fields/*, file-info and objdump-info files. + [ADB] Remove a misplaced word from the description of the tag "debian-changelog-file-contains-invalid-email-address". * checks/copyright-file{,.desc}: + [ADB] Drop the "copyright line too long" check. Most of the issues it flags aren't easily fixable, particularly where the copyright file is (semi)automatically generated. (Closes: #491302, #491365, #491685) + [ADB] Use Lintian::Collect for accessing control fields and reading the list of files in the package. + [ADB] Don't flag use of version 1 of the GPL, or licenses using phrases such as "compatible with the GPL" (for example, the W3C Software License) as missing a reference to common-licenses + [ADB] Replace references to the GPL in GFDL and LGPL related tags with the appropriate license. Also remove a misplaced word. * checks/cruft: + [ADB] Use Lintian::Collect for accessing control fields * checks/debconf: + [ADB] Don't complain about unused debconf templates in udebs. (Closes: #491135) + [RA] Try to recognize at least some debconf template uses in Perl. + [ADB] Replace fields/* and scripts access with Lintian::Collect + [ADB] Don't flag the shared templates used for dictionaries-common co-ordination as unused. + [FL] Remove debconf-error-requires-versioned-depends since post-lenny a tag for the sake of sarge-backports clearly makes no sense anymore. (Closes: #493920) * checks/description: + [RA] Don't warn about a synopsis that ends in "etc." Patch from Chris Lamb. (Closes: #491252) + [ADB] Use Lintain::Collect to read the package's description. * checks/etcfiles: + [ADB] Walk Lintian::Collect->index instead of reading the "index" file. * checks/fields{,.desc}: + [RA] Warn about packages that depend exclusively on makedev. Thanks, Josh Triplett. (Closes: #491625) + [ADB] Use Lintian::Collect::field() to determine the content of fields from control files rather than reading the fields/* files. This and similar changes to other scripts should improve performance as the Collect object caches the lookup result. + [ADB] Reformat a couple of tags' descriptions. * checks/files{,.desc}: + [ADB] Switch to using Lintian::Collect. + [ADB] Fix a couple of bugs in the parsing of the list of scripts contained within a package which led to scripts in /usr/share/doc being incorrectly tagged as executable-in-usr-share-doc. + [ADB] Update a couple of Policy references. Thanks Jordà Polo. + [ADB] Warn when a package embeds a copy of the Universal Feed Parser. Patch from Chris Lamb. (Closes: #493156) + [FL, ADB] Don't issue tag file-in-unusal-dir for files where we already issued one of the specific dir-or-file-in-* tags. (Closes: #493921) + [ADB] Add a missing "have" to package-contains-ancient-file's description. * checks/huge-usr-share: + [ADB] Replace (the single) direct access to fields/* with ::field() + [ADB] Replace an outdated link to the Developer's Reference. Thanks Jordà Polo. * checks/infofiles{,.desc}: + [ADB] Use Lintian::Collect to retrieve information about the files being processed. + [ADB] Update the tag "install-info-not-called-with-quiet-option"'s Policy reference. Thanks Jordà Polo. * checks/init.d.desc: + [ADB] Update a Policy reference. Thanks Jordà Polo. * checks/lintian.desc: + [ADB] Add a Policy reference to bad-section-in-changes-file. Thanks Jordà Polo. * checks/manpages{,.desc}: + [RA] Suppress warnings about inability to break a line that contains a URL. URLs often can't be usefully broken. Based on a patch by Damyan Ivanov. (Closes: #491578) + [ADB] Update the Policy reference for manpage-has-wrong-extension. + [ADB] Use Lintian::Collect rather than parsing the "index" and "file-info" files. + [FL] In description for manpage-has-errors-from-man note how to reproduce this errors outside of lintian. (Closes: #492930) * checks/menu-format{,.desc}: + [ADB] Use Lintian::Collect to parse the list of files in the package. + [ADB] Don't raise menu-command-not-in-package for 'sensible-browser' or 'sh'. Thanks Raphael Geissert. + [RA] Warn about .kdelnk files and [KDE Desktop Entry] headings in desktop files. Patch from Raphael Geissert. * checks/menus{,.desc}: + [ADB] Fix a typo; thanks Jordà Polo. + [ADB] Use the file list from Lintian::Collect. * checks/nmu{,.desc}: + [ADB] Use Lintian::Collect for maintainer / uploader information + [ADB] Add a DevRef reference to changelog-should-mention-nmu. Thanks Jordà Polo. * checks/patch-systems: + [RA] Combine all patch-system-but-direct-changes-in-diff instances into a single message to reduce the noise from packages that rebuild all auto-generated files outside the patch system. Thanks, Julien Cristau. (Closes: #491296) + [ADB] Migrate fields/* reading to use ::Collect::field(). * checks/po-debconf{,.desc}: + [ADB] Check that at least one complete translation exists. Thanks Jordà Polo. * checks/rules: + [ADB] Use ::Collect for field access. + [FL] Do not complain about using dh in a unused binary-* target. * checks/scripts{,.desc}: + [RA] Warn about maintainer scripts that prepend a path to commands. Based on a patch by Raphael Geissert. (Closes: #376184) + [ADB] Don't read fields/*, scripts, index or file-info directly as the contents have almost certainly been cached in Lintian::Collect already. + [ADB] Update a couple of Policy references. Thanks Jordà Polo. * checks/shared-libs.{,desc}: + [ADB] Improve the description of no-symbols-control-file. + [ADB] Migrate to using ::Collect instead of parsing the index, file-info and objdump-info files directly. + [ADB] Disable ldconfig-symlink-before-shlib-in-deb as it can never be tested correctly using the information currently available to the scripts * checks/watch-file: + [FL] Do not issue debian-watch-file-should-mangle-version for empty watch files. * data/doc-base/sections: + [ADB] Resynchronize with doc-base's section list (adding Programming/OCaml). (Closes: #491440) * debian/postrm: + [FL] Do not try to remove /var/spool/lintian if it doesn't exist (dpkg might already removed it at this point). * doc/desc-files: + [ADB] Update the description of tags to include experimental and info tags. * doc/README: + [ADB] Add -E / --show-experimental, -T / --tags and --tags-from-file to the option list. * frontend/lintian: + [FL, ADB] Add new --tags/-T option to limit the amount of checks run not by check names but by names of tags you're interested in. Requested by Joerg Jaspert for ftpmaster. (Closes: #493903) + [FL] Add --tags-from-file option to make it easier to specify a long list of tags. * lib/Lintian/Collect/Binary.pm: + [ADB] When parsing objdump-info, indicate whether a shared object is an Ocaml executable. Also add information on segments which various checks scripts use which hadn't made it here yet. + [ADB] Make index() return a hash rather than an array + [ADB] Add support for parsing the "scripts" index file * lib/Read_taginfo.pm: + [FL] Handle URLs in the Ref: field. * lib/Tags.pm: + [ADB] If --tags was used, don't issue tags that aren't in the provided list. * man/lintian.1 + [ADB] Update the list of check scripts, removing the no longer present deb-format and perl and adding the nmu script. + [FL] Document the new --tags/-T option. + [FL] Document the new --tags-from-file option. * reporting/templates/index.tmpl: + [RA] Add a link to lintian.log. Suggested by Stefano Zacchiroli. * t/: + [FL] Begin work on a new testsuite. * testset/fields: + [ADB] New testset from Tobias Quathamer (including some tags which previously weren't tested) * testset/tags.scripts{,.sed}: + [ADB] Munge .changes filenames so that the tests produce consistent output across architectures -- Frank Lichtenheld Sat, 09 Aug 2008 00:35:13 -0300 lintian (1.24.2) unstable; urgency=low The "welcome Adam D. Barratt!" release. * checks/binaries.desc: + [ADB] Add some FHS references. Thanks Jordà Polo. * checks/changelog-file{,.desc}: + [ADB] Add missing "use Dep". Thanks gregor herrmann (Closes: #488397) + [RA] Ignore "CNRI OPEN SOURCE GPL-COMPATIBLE LICENSE AGREEMENT" when looking for missing GPL references. Thanks, Scott Kitterman. (Closes: #490264) + [ADB] Fix a typo in the description of syntax-error-in-debian-changelog. Thanks Jordà Polo. * checks/copyright-file{,.desc}: + [ADB] Check for over-long lines in copyright files. (Closes: #479651) * checks/cruft{,.desc}: + [ADB] Check for BTS control directories in source packages and diffs in addition to the existing binary package checks. (Closes: #481787) * checks/debconf{,.desc}: + [ADB] Warn about the use of "_Choices" in templates file and suggest using "__Choices" instead (Closes: #481152) + [ADB] Check all maintainer scripts for issues, rather than just config and postinst. + [ADB] Detect debconf templates which appear to be unused. + [ADB] Replace the {config,postinst}-loads-obsolete-confmodule tags with a new loads-obsolete-confmodule test which is used for all maintainer scripts and outputs the script name as part of its extra data. * checks/description{,.desc}: + [RA] Warn about duplicated words in the description. Patch from Raphael Geissert. (Closes: #424746) * checks/fields{,.desc}: + [FL] Do not complain about obsolete packages if there are non-obsolete alternatives specified and if the obsolete package is not listed first. Issue an info tag for them though. Patch by Adam D. Barratt. (Closes: #486145) + [ADB] Update and add some Policy and DevRef references and fix some typos. Thanks Jordà Polo. + [RA] Recognize and do not warn about Ubuntu security update version numbers for multiple releases. (Closes: #489222) * checks/files{,.desc}: + [ADB] Warn if the package contains embedded copies of separately packaged Javascript libraries. Patch by Chris Lamb. (Closes: #489191) + [ADB] Fix a typo in the description of executable-is-not-world-readable * checks/infofiles{,.desc}: + [ADB] Warn if the package's postinst installs info directory entries but the prerm doesn't remove them. (Closes: #182512) + [ADB] Treat --remove-exactly as indicating removal of an info directory entry as well as --remove. * checks/menus{,.desc}: + [ADB] Check that menu-method files include menu.h (Closes: #184104) * checks/nmu: + [RA] When comparing maintainers, treat the right-hand side of the e-mail address as case-insensitive. (Closes: #486795) * checks/patch-systems{,.desc}: + [RA] Check quilt patches as well as dpatch patches, and also check quilt patches when using the 3.0 (quilt) package format. Fix build dependency checking and check all dpatch files. Patch from Raphaël Hertzog. (Closes: #484549) + [ADB] Treat 00list* as dpatch series files rather than just 00list. (Closes: #482040). Also rename dpatch-index-references-non-existant-patch to dpatch-index-references-non-existent-patch. * checks/rules{,.desc}: + [RA] Warn about use of DEB_BUILD_OPTS. Patch from Raphael Geissert. * checks/scripts: + [FL] Apply File::Spec->canonpath() to rpaths to improve matching with directories. + [FL] Do not check zsh scripts, since zsh -n gives false positives. Downgrades #485885 to wishlist. Also see #175467. Patch by Raphael Geissert. + [FL] Remove "quoted quotes". They're likely to be inside another pair of quotes; we're not interested in them for their own sake and removing them makes finding the limits of the outer pair far easier. Patch by Adam D. Barratt. + [FL] Improve heredoc detection. Patch by Adam D. Barratt. + [FL] Improve script_is_evil_and_wrong() to catch more scripts. Patch by Adam D. Barratt. + [ADB] Update bashism regexes to add new checks, improve performance and reduce false positives. (Closes: #490227) * checks/shared-libs{,.desc}: + [ADB] Implement syntax and sanity checking for symbols files (Closes: #452216) + [ADB] Check symbols files for dependencies that are not satisfied by the package itself (Closes: #461575) * checks/standards-version{.desc,}: + [RA] Only issue out-of-date-standards-version once. Noticed by Raphael Geissert. + [RA] Base the two-year clock for ancient-standards-version on when the Policy version was superseded, not when it was issued. Thanks, Scott Kitterman. (Closes: #487780) + [RA] Warn for packages declaring a standards version released after the date of the most recent changelog entry. Based on a patch by Raphael Geissert. * checks/watch-file{,.desc}: + [FL] Check for more Debian specific strings in version number. Issue an info tag if the watch file uses uversionsmangle to add the Debian specific string. Patch by Raphael Geissert. (Closes: #485879) + [RA] Warn about watch files in native packages and check those watch files for other problems anyway. Allow whitespace around the version declaration. More correctly handle continuation lines. Patch from Raphael Geissert. + [RA] Check for using the Sourceforge QA redirector with deprecated arguments. Patch from Raphael Geissert. + [RA] Be more explicit when warning about missing watch files that Lintian recommends adding a watch file containing only comments for any non-native package where it's not possible to write a meaningful watch file, not only for packages unmaintained upstream. * collection/objdump-info: + [ADB] If objdump from binutils 2.17 fails to parse a file then attempt to gather the required information using readelf instead. This allows us to process 64-bit packages on etch/i386 again (i.e. on lintian.d.o) (Closes: #487746) * data/fields/obsolete-packages: + [RA] mailx is not obsolete. It's a virtual package. Thanks, martin f krafft. (Closes: #488114) + [RA] Add the cupsys packages, all of which have been renamed to cups. Patch from Raphael Geissert. * debian/control: + [FL] Adapt VCS-* headers for move from SVN to git. * debian/copyright: + [FL] Add Patrick Schoenfeld (for checks/watch-file). + [ADB] Update repository information and GPL2 URL. + [RA] Add Adam D. Barratt to the maintainer list so that readers can expand initials in the changelog. * debian/{prerm,postrm}: + [RA] Move prerm to postrm and remove the default /var/spool/lintian lab using shell instead of lintian. We only want to remove the lab on purge, and purge is only passed to postrm, not prerm, by which point the lintian frontend is gone. (Closes: #489860) * doc/CREDITS: + [FL] Add Raphael Geissert and Adam D. Barratt. * doc/lintian.sgml: + [ADB] Add reference to new option to display experimental tags. * frontend/lintian: + [ADB] Add a new --show-experimental / -E option which indicates that experimental tags should be displayed. + [RA] Exit with the correct exit status if no packages were found because non-existent packages were specified on the command line. * lib/Lintian/Collect/Binary.pm: + [FL] Add support for file-info file. + [FL] Add support for objdump-info file. * lib/Spelling.pm: + [RA] Add a couple more spelling corrections and capitalization checks for LaTeX and TeX. Thanks, Raphael Geissert. * lib/Tags.pm: + [ADB] (Re-)Add support for experimental tags. * man/lintian.1: + [FL] Document watch-file check. + [ADB] Document new option to display experimental tags. + [RA] Refer to lintian-info(1) for printing tag descriptions. Patch from Chris Lamb. (Closes: #490374) * reporting/harness: + [ADB] Process packages using -E so that experimental tags are included. * reporting/html_reports: + [FL] Mark the tag pages with the correct code. * reporting/lintian.css: + [RA] New style for marking packages that override a tag on the tag summary page. Patch from Jordà Polo. * reporting/templates/clean.tmpl: + [ADB] Note that the full report includes experimental tags. * reporting/templates/tag.tmpl: + [FL] Mark overridden tags. + [RA] Mark packages that override all instances of a given tag. Patch from Jordà Polo. * reporting/templates/maintainer.tmpl: + [FL] Add useful links for each source package. With layout help by Jordà Polo. + [FL] Include Co-maintained packages in the summary at the top of the page. Also sort the list. Patch by Jordà Polo. + [ADB] Note that the full report includes experimental tags. * testset/runtests: + [ADB] Support experimental tags -- Russ Allbery Sun, 13 Jul 2008 17:28:08 -0700 lintian (1.24.1) unstable; urgency=medium The "mostly for the benefit of lintian.debian.org only" release. * frontend/lintian: + [FL] Increase LAB_FORMAT to 8. This should have happened in 1.23.47, since the unpack-binpkg-l1 then produced a new file which checks depend upon. Since this only affects static labs and only if packages get rechecked (i.e. not on harness -i runs) it only got noticed now. Use urgency=medium for this fix. * checks/watch-file: + [FL] Fix the order of two regular expression to use the more specific one first. Patch by Raphael Geissert. (Closes: #485884) * unpack/unpack-binpkg-l1: + [FL] Don't include version number from Source: field in the source symlink. Noted by RA. (Closes: #485474) * lib/Lintian/Collect/Binary.pm: + [FL] New module for retrieving binary package information. * reporting/checkout-release: + [FL] New helper script for lintian.d.o maintenance. * reporting/config: + [FL] Generate files in $HOME/www directly instead of $HOME/www/reports. * reporting/html_reports: + [FL] Allow inclusion of the new shared templates by convenient functions. Remove some duplicated data setting while I'm on it. + [FL] Generate the manual and lintian.log symlinks dynamically, so that we don't need the reports subdirectory anymore. Also generate a reports -> . symlink for backwards compatibility. * reporting/templates/{head,foot}.tmpl: + [FL] New templates meant for inclusion by other templates for common header and footer parts * reporting/templates/index.tmpl: + [FL] Remove obsolete reports/ subdirectory from the links. * reporting/templates/maintainer.tmpl: + [RA] Redisplay the tag name for each separate binary package, also fixing list nesting problems in some cases. Patch from Jordà Polo. * reporting/templates/*.tmpl: + [FL] Replace common headers/footers with calls to the new head()/foot() functions. -- Frank Lichtenheld Thu, 12 Jun 2008 17:28:44 +0200 lintian (1.24.0) unstable; urgency=low The "Policy 3.8.0, infrastructure evolution, and real web design" release. * checks/binaries: + [RA] Fix code for filtering out NSS modules from SONAME checks. + [RA] When checking SONAMEs against package names, convert all underscores to dashes, not just the first one. Thanks, Gonéri Le Bouder. (Closes: #482450) + [RA] Remove several-sonames-in-same-package. This is frequently not an error and Lintian doesn't have enough information to know. * checks/common_data.pm: + [RA] armel is now a standard architecture. + [RA] Remove %known_obsolete_packages, now handled via data. + [RA] Merge %non_standard_archs into %known_archs. * checks/control-file{.desc,}: + [RA] Check for self-dependencies in the source package since the current dpkg-gencontrol silently fixes them but they may indicate other problems. Thanks, Patrick Matthäi. (Closes: #471740) * checks/copyright-file{.desc,}: + [RA] Check for copyright files containing the Apache 2.0 license, which is now in common-licenses. * checks/cruft: + [RA] Format: 3.0 (quilt) packages are not native even though they have no *.diff.gz. Thanks, Raphael Hertzog. (Closes: #483384) + [RA] Use the new Lintian::Collect interface to check whether a package is native. * checks/debconf: + [RA] Don't warn about using db_input in postinst if a config script also exists and uses db_input. The package maintainer probably knows what they're doing. * checks/fields: + [RA] Syntax-check Breaks like other relationship fields. Warn if any packages use Breaks for right now. Only check for duplicate libraries and Tcl versions in dependency fields, not Breaks, Conflicts, and other similar fields. Warn if Breaks is used without a version. Check that Breaks is not inconsistent with other dependency fields. + [RA] Use Lintian::Data to load the obsolete package list. + [RA] When checking whether a debug package has proper dependencies, allow a dependency on any package name that starts the same as the debug package up to the first dash. This will hopefully produce fewer false positives. Thanks, Josselin Mouette. (Closes: #476587) + [RA] Remove non-standard-architecture-in-source-relation and non-standard-architecture. These aren't bugs. * checks/filenames{.desc,}: + [RA] Warn about BTS data directories in packages (.be and .ditrack). Patch by Ben Finney. (Closes: #481787) * checks/init.d: + [RA] Try to allow for postinst scripts written in Perl and still recognize the update-rc.d calls. * checks/manpages{.desc,}: + [RA] Only ignore errors about wrapping lines for Asian locale man pages, since that's where the groff trouble lies. Ignore character set errors for all man pages with old versions of man and no man pages with current versions of man since the new character set handling should cope. (Closes: #474052) + [FL] Ignore more unicode issues with old man. + [RA] Warn about inclusion of the country name in the localized man page directory unless it's one of the known exceptions. + [RA] Mention in binary-without-manpage that the case of the man page should match the case of the binary even if man can find it anyway. (Closes: #484028) * checks/md5sums: + [FL] Don't complain about missing md5sums file if the package only contains conffiles. (Closes: #482869) * checks/nmu: + [RA] Don't treat "Ack NMU" as an NMU declaration. Thanks, Joe Nahmias. (Closes: #484600) + [RA] Binary NMUs of QA-maintained packages are fine. * checks/rules{.desc,}: + [RA] Add some basic checks for whether debhelper programs are called in a reasonable order. (Closes: #471869) + [RA] Support pattern rules. (Closes: #483475) * checks/scripts: + [RA] Catch deprecated chown syntax even when options are given to chown. Patch by Raphael Geissert. (Closes: #483775) + [RA] $((var+1)) now works in dash and is in POSIX, so remove it from bashisms. Patch by Adam D. Barratt. (Closes: #473156) * checks/standards-version{.desc,}: + [RA] Largely rewritten. Now contains a list of standards versions with the date when they were released, adding 3.8.0. Only emit tag out-of-date-standards-version if the newer version predates the date of the package. Base ancient-standards-version on whether the standards version of the package is more than two years old. Remove package-declares-source-relation-but-has-older-standards-version; policy 3.1.0 was a long time ago. (Closes: #472513) * checks/watch-file{.desc,}: + [RA] New checks for watch files, based on work by Patrick Schoenfeld. (Closes: #234202, #409104, #456629, #472499) * data/fields/obsolete-packages: + [RA] Moved from common_data.pm. Removed many very old packages that nothing depends on and added many new packages identified by Riku Voipio. (Closes: #475400) * debian/control: + [RA] Update standards version to 3.8.0. + [RA] Depend on libtimedate-perl for convenient date parsing. * frontend/lintian: + [RA] Create a new Lintian::Collect object for each package being checked and pass it into Checker::runcheck. * lib/Checker.pm: + [RA] Pass a Lintian::Collect object as the third argument to the run function of each check. * lib/Lintian/Collect.pm: + [RA] New module to retrieve package information. * lib/Lintian/Collect/Source.pm: + [RA] New module to retrieve source package information. * reporting/html_reports: + [RA] Copy over images. Set the maintainer name to "Unknown Maintainer" if not known. Pass the code for a tag into the per-tag page. Based on a patch by Jordà Polo. * reporting/images/*: + [RA] New logo images from Jordà Polo. * reporting/lintian.css: + [RA] Significant overhaul of the lintian.d.o design by Jordà Polo. * reporting/templates/*: + [RA] Significant overhaul of the lintian.d.o design by Jordà Polo. * reporting/templates/clean.tmpl: + [FL] Include link to full maintainer report. Suggested by Kartik Mistry. -- Russ Allbery Sat, 07 Jun 2008 21:09:54 -0700 lintian (1.23.49) unstable; urgency=low The "Business as usual" release. * checks/binaries: + [FL] Ignore rpaths to directories present in the same binary package. Also ignore $ORIGIN since that obviously fulfills that criterion. (Closes: #480636) * checks/copyright-file{,.desc}: + [FL] Implement new check for dh-make-perl boilerplate. + [FL] New check for example URL from dh-make. Based on a patch by Michal Čihař. (Closes: #481368) * checks/debhelper: + [FL] dh_lintian needs debhelper >= 6.0.7. Patch by David Paleino. (Closes: #479088) + [FL] Add basic support for debhelpers new dh utility. (Closes: #477628) + [FL] Suppress maintainer-script-lacks-debhelper-token for single-udeb-only packages as well. (Closes: #471853) * checks/files: + [FL] Drop xresources-file-in-etc-without-proper-conflicts, since the last package that conflict applies to was released with hamm! Reported by Julien Cristau. (Closes: #480574) * checks/menu-format: + [FL] Don't issue false positives about menu files in format menu-2. We don't check them for errors yet, though. (Closes: #478578) * checks/patch-systems: + [FL] Add basic support for dpatch list files which use cpp for preprocessing. Patch by Jörg Sommer. (Closes: #477057) * checks/scripts: + [FL] Always use /bin/bash for shell script syntax check to give consistent errors on systems with changed /bin/sh. Suggested by Raphael Geissert. (Closes: #478192) * frontend/lintian: + [FL] Don't issue a warning about Distribution: UNRELEASED in .changes files. It can be annoying to have to ignore this error during testing and dupload/dput/dak/etc... all will error out on it anyway. Suggested by martin f krafft. (Closes: #382327) + [FL] Add a --keep-lab option to make it easier to debug temporary labs. (Closes: #401046) * lib/Util.pm: + [FL] Only require Digest::SHA if the code path is really used. This makes it unnessesary to install libdigest-sha-perl on lintian.debian.org for now. * man/lintian.1: + [FL] Document --keep-lab option. + [FL] Fix error in checkname: s/patch-system/patch-systems/. Reported by Jörg Sommer. * reporting/html_reports: + [FL] Escape $email variable for usage in URI query strings. Currently it is not used for anything else, so it is most simple to do it in the actual code. Reported by Sandro Tosi. (Closes: #481256) -- Frank Lichtenheld Tue, 20 May 2008 22:03:58 +0200 lintian (1.23.48) unstable; urgency=low The "Perl 5.10 compatibility" release. * checks/common_data.pm: + [FL] Add 8.5 versions to known_tcls and known_tks. * checks/copyright-file: + [FL] Also apply the "possible-gpl-code-linked-with-openssl" checks to Pre-Depends. * checks/menus: + [RA] Stop using a deprecated Perl construct that Perl 5.10 no longer supports. Patch from Adam D. Barratt. (Closes: #479318) * checks/shared-libs: + [RA] Fix an unescaped | in the regular expression parsing postinst files for ldconfig invocation. The regex had always been broken, but in Perl 5.10 it causes a recursion error in the regex engine. * checks/version-substvars: + [FL] Also apply the "not-binnmuable-*" checks to Pre-Depends. (Closes: #472247) * frontend/lintian: + [RA] Work around a Perl 5.10 bug with Getopt::Long and sub handlers. * testset/runtests: + [RA] dpkg-source now enables the -i and -I regexes by default. Replace the defaults with ones that never match so that we can continue testing for cruft left in source packages. -- Russ Allbery Sun, 04 May 2008 12:57:48 -0700 lintian (1.23.47) unstable; urgency=low The "long time no upload" release. * checks/binaries{.desc,} + [RA] Permit architecture: all packages to have binaries in the multiarch directories. (Closes: #469301) + [RA] Suggest an override for arch: all packages containing binaries independent of the host architecture (such as for cross-compiles). * checks/changelog-file: + [RA] Quash more Perl warnings on badly malformed NEWS.Debian files. * checks/control-files: + [FL] Add 'triggers' as a valid control file. Thanks, Joey Hess. (Closes: #473840) * checks/copyright-file{.desc,}: + [RA] Document handling of false positives for GPL, GFDL, and LGPL license references and catch the GFDL 1.1 false positive. + [FL] Add CeCILL license to false positives list for copyright-should-refer-to-common-license-file-for-gpl. Thanks, Alexandre Fayolle. (Closes: #472933) * checks/cruft: + [RA] Subversion conflicts generate three files, two with revision numbers and one with .mine. Only warn about the revision numbers; .mine probably won't occur alone and may be a false positive. * checks/etcfiles: + [RA] /etc/init.d/{skeleton,rc,rcS} are not conffiles, and README files in /etc need not be. * checks/fields.desc: + [FL] Remove obsolete section base from list of valid sections in unknown-section. (Closes: #471751) * checks/files{.desc,}: + [RA] /etc/init.d/{skeleton,README} don't need to be executable. + [RA] Warn about linda overrides since linda has been removed from the archive. Thanks, Y Giridhar Appaji Nag. (Closes: #469603) + [RA] Check for numeric owners or groups outside of the reserved static ranges. Patch from Håkon Stordahl. (Closes: #469924) + [RA] Issue errors for installing files under /var/www. This isn't in FHS, may not be the document root, and may break local files if it is the document root. Thanks, Joerg Jaspert. (Closes: #470403) + [RA] Don't consider files in bin directories that contain "copying" or "license" to be extra license files. + [FL] Don't complain about empty directories under /usr/share/python-support since those might be needed. Thanks, Josselin Mouette. (Closes: #473428) + [RA] Ignore extra license files in examples subdirectories of /usr/share/doc. Thanks, Daniel Jacobowitz. (Closes: #476149) * checks/lintian.desc: + [FL] Rename md5sum-mismatch-in-changes-file to checksum-mismatch-in-changes-file. * checks/nmu{.desc,}: + [RA] Add support for +nmuX versioning for NMUs of native packages. Patch from James Vega. (Closes: #475026) + [RA] Don't consider an NMU changelog entries that mention NMU with a variation of the word "incorporate." * checks/scripts: + [RA] Attempt to quash some Perl warnings. + [RA] *.py files in /usr/{lib,share}, /etc/init.d/skeleton, and *.ex files do not need to be executable even if they look like scripts. + [RA] Add clisp, procmail, and rrdcgi, and another way interpretors are templated in *.in files. + [RA] Expect unversioned dependencies on OCaml packages rather than versioned dependencies since the version changes frequently and unversioned dependencies are what people are already using. Thanks, Hideki Yamane. (Closes: #476417) + [RA] Add inetutils-inetd and xinetd as additional update-inetd providers. Patch from Guillem Jover. (Closes: #474077) + [RA] If the call to some supporting program like update-inetd is conditional on the existence of the program, assume the maintainer knows what they're doing and don't warn. * checks/shared-libs: + [RA] Move the default ld.so search path into data. Drop obsolete /usr/lib/libg++-dbg, /usr/X11R6/lib/Xaw3d, and libc5 compatibility directories in the process. + [RA] Allow and expect ldconfig, SONAMEs, and shlibs treatment of libraries in multiarch directories. * data/binaries/multiarch: + [RA] New file listing multiarch binary directories. * data/shared-libs/ldconfig-dirs: + [RA] New file listing directories searched by ld.so. * debian/compat: + [FL] Increase debhelper compat level to 5. There is really no need anymore to support building on sarge. * debian/control: + [FL] Add dependency on libdigest-sha-perl. + [FL] Increase debhelper dependency to >= 5 * frontend/lintian: + [RA] Qualify relative --root directories so that we don't break later. Patch from Håkon Stordahl. (Closes: #469925) + [CW] Add intrepid as an allowable distribution for Ubuntu. + [FL] Support Checksums-* fields in .changes files. Follows the same rules as the md5sum check. Add new option --checksums as alias for --md5sums. (Closes: #476565) * lib/Spelling.pm: + [RA] Avoid Perl warnings when called with an uninitialized value. + [RA] Correct "meta package" and "meta-package" in descriptions to "metapackage". Thanks, Frank S. Thomas. (Closes: #476681) * lib/Util.pm: + [FL] Rename function get_file_md5sum to get_file_checksum and support SHA1 and SHA256. * man/lintian.1: + [FL] Drop linda from SEE ALSO since it is obsolete now. Suggested by Hideki Yamane. (Closes: #474478) + [FL] Add new --checksums option. * reporting/html_reports: + [RA] Base the generation of clean report pages on the maintainer URL rather than the full maintainer string so that maintainers with different forms of their name won't have clean reports that overwrite dirty ones. + [RA] Fix the counts in qa-list.txt, which were broken in several respects. + [RA] Don't consider a maintainer's page error/warning free if there are errors or warnings in their co-maintained packages. * reporting/templates/maintainer.tmpl: + [RA] Always add anchors to the package names even for uploaders. * testset/copyright: + [FL] New testcases by Tobias Toedter. (Closes: #472665) * testset/description: + [FL] New testcases by Tobias Toedter. (Closes: #471838, #477471) * unpack/list-srcpkg: + [RA] Fix syntax error introduced by Uploaders support. * unpack/unpack-binpkg-l1: + [RA] Extract a tar listing with numeric owners and groups into index-owner-id in the lab. -- Frank Lichtenheld Thu, 01 May 2008 15:04:08 +0200 lintian (1.23.46) unstable; urgency=low The "five Lintian committers!" release. * checks/binaries: + [RA] Anchor file matches for Perl libraries and debugging symbols so as to not match partial paths. Based on a patch from Niko Tyni. (Closes: #466501) + [RA] Also check for make -i when checking if errors from make clean or distclean are ignored. Thanks, Jörg Sommer. (Closes: #469024) * checks/changelog-file: + [RA] Adjust for the extra space added by Parse::DebianChangelog when checking line length. Thanks, Robert Millan. (Closes: #467019) * checks/common_data.pm: + [RA] Accept (and ignore for now) the new Checksums-Sha1, Checksums-Sha256, and Checksums-Md5 fields in source packages. Thanks, Raphael Hertzog. (Closes: #466979) * checks/control-file: + [RA] Skip empty dependencies for stronger-dependency-implies-weaker. * checks/control-files{.desc,}: + [FL] Warn about empty control files. I can't see any use for them. Exclude udebs though, since they might differ there. * checks/copyright-file{.desc,}: + [RA] Tests for copyright notices must be case-insensitive. Patch from Chris Lamb. (Closes: #464992) + [RA] When looking for cases where Copyright is separated from a year by a newline, also allow (C) before or after the newline. Thanks, Michael Meskes. (Closes: #465258) + [RA] Further explain why lintian looks for a valid copyright notice. (Closes: #466714) + [RA] Suggest an override if only the Debian packaging or some other part of the package not linked with OpenSSL is covered by the GPL. Thanks, Andrew Pollock. (Closes: #469106) * checks/cruft{.desc,}: + [FL] Add hg to the list of -control-dir tags. + [RA] In the long description of outdated-autotools-helper-file, point to autotool-dev's documentation. (Closes: #465132) + [RA] Remove now-unnecessary workarounds for calling File::Find with symlink starting directory. * checks/debian-readme{.desc,}: + [RA] Warn of references to /usr/doc in README.Debian. Thanks, Guillem Jover. (Closes: #465192) * checks/files{.desc,}: + [FL,RA] Merge all the tags for vcs ignore files, inventory files, and vcs control dirs. Since the explanations don't actually differ, different tags make no sense. While at it, add the mercurial equivalents as well and update some of the tag descriptions. Partly based on a patch by Chris Lamb. * checks/md5sums{.desc,}: + [FL] Remove tag md5sums-control-file-is-empty in favour of a more general tag in control-files. * checks/manpages.desc: + [RA] Mention in binary-without-manpage that if the man pages are provided by another package on which this package depends, a lintian override is appropriate. * checks/menu-format: + [RA] When the menu or desktop file invokes a quoted command via an su program, don't try to check whether the command is in the package. Thanks, Paul Wise. (Closes: #466665) * checks/menus{,desc}: + [RA] Check that doc-base files are encoded in UTF-8. Thanks, Robert Luberda. (Closes: #468759) + [RA] Check doc-base sections against the new canonical list. Thanks, Robert Luberda. (Closes: #463474) * check/patch-systems: + [HE] Warn if the .diff.gz contains changes while the package uses a patch system. (Closes: #452215) * checks/scripts{.desc,}: + [FL] Warn if a maintainer script is a valid shell script but doesn't seem to have any actual code. Based on an idea by Justin Pryzby. (Closes: #410042) + [RA] Update regexes based on checkbashisms to remove additional false positives and add additional checks. Thanks, Adam D. Barratt. + [RA] Add kaptain. Thanks, Tobias Toedter. (Closes: #466701) + [RA] Allow zsh-beta as an alternative to zsh. Thanks, Joost van Baal. (Closes: #468362) + [RA] Add yorick. Thanks, Thibaut Paumard. (Closes: #468370) + [RA] Add warnings for dpkg --assert* flags for features that have been guaranteed for nearly a decade. Thanks, Bernhard R. Link. (Closes: #467642) * checks/shared-libs{,desc}: + [RA] Rename sharedobject-in-library-directory-not-actually-a-shlib to sharedobject-in-library-directory-missing-soname for clarity. Thanks, Peter Eisentraut. (Closes: #467425) * data/doc-base/sections: + [RA] New file listing known doc-base sections. * debian/dirs: + [RA] Install the base directory for the Lintian root here. * debian/rules: + [RA] Redo the installation rules to support arbitrary nesting under the copied directories. As a side effect, install lib/Tags/ColonSeparated.pm, unbreaking the experimental colon-separated output format. * frontend/lintian: + [CW] Make the presence of an Ubuntu release name in the version number trigger the Ubuntu distribution field checks. + [RA] Fix option parsing bug leading lintian to incorrectly reject -a or -p without a package. * lib/Dep.pm: + [RA] Skip empty dependencies, avoiding false positives for stronger-dependency-implies-weaker. Patch from Adam D. Barratt. (Closes: #469222) * lib/Lintian/Data.pm: + [RA] New module for loading and querying lists of keywords. * lib/Read_pkglists.pm: + [RA] Extract Uploaders from the source package list. * lib/Spelling.pm: + [RA] Add another spelling correction. + [RA] Merriam-Webster and the OED have both given up on publically vs. publicly, so we should as well. (Closes: #466617) * reporting/html_reports: + [RA] Load the correct configuration file. + [RA] Include packages for which one is an uploader in one's maintainer page, marked accordingly. (Closes: #421011) * reporting/templates/*: + [TK] Correct Lintian maintainers address in page footers. * reporting/templates/maintainer.html: + [RA] Include packages for which the maintainer is an uploader. * unpack/list-srcpkg: + [RA] Include Uploaders in the package list. * unpack/unpack-srcpkg-l2: + [RA] Don't rely on the output format of dpkg-source to learn the source directory and create a symlink. Instead, tell dpkg-source to unpack the source directly into the unpacked directory. Discard output of dpkg-source to allow for the current version, which prints things even with -q (fixed in later versions). Thanks, Raphael Hertzog. (Closes: #468927) -- Russ Allbery Mon, 03 Mar 2008 18:21:32 -0800 lintian (1.23.45) unstable; urgency=low The "100 open bugs is magical" release. * checks/debconf: + [RA] Recognize require as well as use when loading debconf modules in Perl. Thanks, Manoj Srivastava. (Closes: #464775) * checks/fields: + [RA] Fix coding error that didn't allow python-all-dev to satisfy a Python build dependency. Thanks, Joerg Jaspert. (Closes: #464709) * checks/manpages: + [RA] Ignore another undefined macro generated by pod2man (will be fixed with the Pod::Man in Perl 5.10). * checks/po-debconf: + [RA] Also accept nnn_NN names for po files. nds_DE and nds_NL are valid locales. Thanks, Christian Perrier. * checks/scripts{.desc,}: + [RA] Warn of use of start-stop-daemon in maintainer scripts unless used with --stop. Thanks, Kurt Roeckx. (Closes: #381180) -- Russ Allbery Fri, 08 Feb 2008 22:58:32 -0800 lintian (1.23.44) unstable; urgency=low The "I can't release a quick fix without *some* other work" release. * checks/binaries: + [RA] Make an architecture specification after perlapi optional. Thanks, gregor herrmann. (Closes: #464626) * checks/copyright-file{.desc,}: + [RA] Check the copyright file to ensure it contains at least one copyright statement with a date or the term "public domain". It's hard to be thorough without false positives, but this should catch the most obvious omissions. Thanks, Justin Pryzby and Jari Aalto. (Closes: #286842, #409131) * checks/fields: + [RA] Warn of build-dependencies on a Debian revision of -1. They make backporting unnecessarily difficult. Thanks, Erich Schubert. (Closes: #345487) * checks/po-debconf: + [RA] Accept three-character language codes for po files. Thanks, Patrick Winnertz and Eddy Petrișor. (Closes: #464511) * lib/Spelling.pm: + [RA] Don't strip hyphens before checking spelling. Move all D-Bus corrections to the picky list since the correction is too confusing even if accurate without capitalization. Thanks, Nelson A. de Oliveira. (Closes: #464461) -- Russ Allbery Thu, 07 Feb 2008 20:07:45 -0800 lintian (1.23.43) unstable; urgency=low The "37 bug fixes is enough for one release" release. * checks/binaries{.desc,}: + [RA] Don't require objdump's errors on files with bad dynamic tables to start at the beginning of the line. Patch from Chris Lamb. (Closes: #459509) + [RA] Warn for packages that have binaries requiring libc but which don't depend on libc. Patch from Niko Tyni. (Closes: #461350) + [RA] Remove check for libc5 binaries. libc5 is long-gone. + [RA] Remove various dead tag descriptions we no longer issue. + [RA] Warn on packages that provide Perl modules but don't depend on perlapi-*. Thanks, Niko Tyni. (Closes: #463142) + [RA] Check files in /usr/lib/debug directories mirroring the main file system to verify they are detached debugging symbols and not full libraries or executables. Thanks, Neil Williams and Niko Tyni. (Closes: #462456) * checks/changelog-file: + [RA] Decode the changelog entry from UTF-8 before doing length checks. Thanks, Cyril Brulebois. (Closes: #461822) + [RA] Check for mismatches between the latest changelog and NEWS.Debian entries if they're for the same package version. Thanks, Cyril Brulebois. (Closes: #461823) * checks/common_data.pm: + [RA] Add Bugs, Origin, and Breaks to known binary and udeb fields and Bugs to known source fields, matching current dpkg. Thanks, Raphaël Hertzog. (Closes: #459787) * checks/debhelper: + [RA] CDBS now defaults to a debhelper compatibility level of V5. + [FL] Update list of debhelper commands that modify maintainer scripts. Add dh_icons, dh_installudev, dh_pysupport, dh_pycentral and rename dh_installtexfonts to dh_installtex. + [RA] Add checks for versioned debhelper dependencies for dh_icons and dh_installifupdown. Thanks, Evgeni Golov. (Closes: #463028) * checks/fields{.desc,}: + [RA] The CDBS ant rules are in class, not rules. Thanks, Cyril Brulebois. (Closes: #460168) + [RA] Versioned Python dependencies satisfy a Python debian/rules requirement. Add a separate tag for Python build dependencies to explain the dependency possibilities. Ignore dh_python if debian/pyversion or a Python-Version control field are present. Thanks, Loïc Minier. (Closes: #460625) + [RA] Check that -dbg packages depend on their base package. Patch from Chris Lamb. (Closes: #458785) + [RA] Check the value of Dm-Upload-Allowed. + [RA] Warn about packages with a list as the maintainer and no Uploaders. Thanks, Sune Vuorela. (Closes: #462635) + [RA] Remove the package-has-duplicate-relation test. It gets relations with different version strictness in different levels of dependency wrong and what it gets right dpkg-gencontrol strips out. * checks/files{.desc,}: + [RA] In many of the long descriptions for symlink-related tags, mention that running dh_link will fix symlink problems. + [RA] Fix a long-standing error in the regex checking for *.desktop files in /usr/share/gnome/apps that caused the tag to never be issued. Remove the check for /usr/share/applnk, since obsolete or not KDE appears to actively use it still. + [RA] Check for *.devhelp{2,} files not linked into devhelp's search path. Based on a patch by Bradley Smith. (Closes: #273309) + [RA] Warn about /etc/cron.{hourly,daily,weekly,monthly} scripts that won't be executed by run-parts because of periods in the name. Patch from Chris Lamb. (Closes: #458742) + [RA] Warn of .gitignore files installed by the package. Patch from Chris Lamb. (Closes: #459502) + [RA] Warn of more language extensions on files in the user's path. Patch from Chris Lamb. (Closes: #459514) + [RA] Remove the tag for empty Perl directories. The underlying issue is fixed in Perl 5.10; there's no need to add code to debian/rules when 5.10 is landing soon. (Closes: #463138) * checks/infofiles: + [RA] Don't issue unknown-intepreter for maintainer scripts with weird interpreters. checks/scripts already handles this and the tag wasn't defined. Thanks, Thijs Kinkhorst. (Closes: #460964) + [RA] Fix Perl warnings given a zero-byte maintainer script. Thanks, Thijs Kinkhorst. (Closes: #460966) * checks/init.d{.desc,}: + [RA] Downgrade a missing LSB Short-Description keyword to info since it's not required for functionality. Thanks, Petter Reinholdtsen. (Closes: #460499) * checks/manpages{.desc,}: + [RA] Make hyphen-used-as-minus-sign more conservative to avoid false positives with non-ASCII text and catch hyphens at the start of lines. Thanks, Michal Čihař. (Closes: #459871) + [CW] Use man's new --warnings option to catch use of undefined strings, macros, or diversions in manual pages, which usually indicate mistaken use of "." or "'" at the start of a line. This check is only enabled if man 2.5.1 or later is installed. (Closes: #377392) * checks/menu-format: + [RA] Avoid a Perl warning for desktop entries without Exec. + [RA] Fix a bug that prevented Exec keys in desktop files from being checked at all. Thanks, Raphael Geissert. (Closes: #462601) + [RA] Exempt packages providing the su wrappers from the check for using su-to-root. Thanks, Raphael Geissert. * checks/menus: + [RA] Don't issue unknown-interpreter for maintainer scripts with weird interpreters. + [RA] Fix Perl warnings given a zero-byte maintainer script. * checks/po-debconf: + [RA] Exclude from not-using-po-debconf template files with only the shared templates used for coordination with dictionaries-common. Thanks, Thomas Bushnell BSG. (Closes: #460731) * checks/rules.desc: + [RA] To fix an ignores-make-clean-error, suggest removing "-" for static makefiles. Thanks, Andrea Colangelo. (Closes: #458164) * checks/scripts{.desc,}: + [RA] Re-add php4-cli as a valid interpreter for those who want to maintain stable compatibility. Thanks, Thomas Goirand. + [RA] Be clearer in the tag name that php-cli dependencies should be versioned. Add more explanation to the long description of several interpreter tags about limitations and requested bug filings. + [RA] Remove tcl as a valid interpreter since tclx8.3 is obsolete. (tclsh is the standard interpreter name.) + [RA] Require versioned dependencies for OCaml scripts. Each version is ABI-incompatible. Thanks, Samuel Mimram. (Closes: #462065) + [RA] Add tcl and tk metapackages. Thanks, Sergei Golovan. (Closes: #463281) + [RA] Catch exec wrappers that use $* instead of $@ (not that this is a good idea). Thanks, Adam D. Barratt. (Closes: #463476) + [RA] Integrate several more bashism checks from checkbashisms in devscripts. Patch from Adam D. Barratt. (Closes: #464026) * debian/control: + [RA] Suggest man-db >= 2.5.1 for better warning support. + [RA] Wrap Uploaders. * frontend/lintian: + [RA] Include info tags in the broken-down description of the override count since they're included in the total. Based on a patch by Chris Lamb. (Closes: #459851) + [RA] Don't try to report overrides when not checking a package. Thanks, Håkon Stordahl. (Closes: #461978) + [RA] Cope with a relative path to the lab. Patch from Håkon Stordahl. (Closes: #461982) + [RA] Don't require *.changes files for source-only uploads to have a Description field. Thanks, Cyril Brulebois. (Closes: #462586) * lib/Spelling.pm: + [RA] Add spelling corrections for PostgreSQL and OCaml and lots of new capitalization corrections. (Closes: #460347) -- Russ Allbery Tue, 05 Feb 2008 21:07:30 -0800 lintian (1.23.42) unstable; urgency=low The "what did you do on your Christmas vacation?" release. * checks/binaries: + [RA] Don't warn about unstripped binaries in .../lib/debug. Some packages include debugging symbols in the main package. + [RA] Allow rpath pointing to /usr/lib/games/. Thanks, Bas Wijnen. (Closes: #456318) + [RA] Exclude nsswitch modules from multiple SONAME and package naming checks. * checks/changelog-file{.desc,}: + [RA] Don't spell-check lines that include the word "spelling". Thanks, Andreas Hoenen. (Closes: #456515) + [RA] Allow long no-whitespace lines even when spaces or bullets precede the text. * checks/common_data.pm: + [RA] Remove the obsolete base section. (Policy change pending). * checks/control-file{.desc,}: + [RA] Include the package name in stronger-dependency-implies-weaker. + [RA] Fix stronger-dependency-implies-weaker description cut and paste error. Thanks, Rafael Laboissiere. (Closes: #456405) * checks/copyright-file{.desc,}: + [RA] Warn about packages covered by the GPL and linked with libssl that don't list other common licenses or mention a license exception or exemption. Requested by Joerg Jaspert. (Closes: #454238) * checks/cruft: + [RA] Ignore debian/config.cache. * checks/debconf{.desc,}: + Remove partially-translated-question at the request of Christian Perrier. Only the translator could fix this, and debconf doesn't show the translation unless it's complete. (Closes: #459293) * checks/debian-readme{.desc,}: + Combine readme-debian-{is,contains}-debmake-template and be less particular about the exact formatting of the dh-make template. Triggering off the template text is enough and matches linda. Thanks, Joerg Jaspert. (Closes: #458074) * checks/description{.desc,}: + [RA] Do picky spelling and capitalization checks on the description and note and explain this in the long description. * checks/fields: + [RA] Handle double-colon rules when checking that build dependencies match debian/rules. (Closes: #457501) + [RA] Allow python-setuptools in Build-Depends for arch-independent Python packages. Thanks, Vincent Bernat. (Closes: #459042) * checks/fields.desc: + [RA] Remove X.X.X versions from the debian-revision-not-well-formed long description. (Closes: #456286) + [RA] Update references and binary-NMU version descriptions. * checks/files: + [RA] Ignore zero-length files in /usr/share/doc/examples. + [RA] The underFooLicense.docbook files from KDE are not license files. Thanks, Sune Vuorela. (Closes: #458831) + [RA] Allow /emul as a top-level directory and files in /emul/ia32-linux/{lib,usr/lib}. (Closes: #459254) * checks/files.desc: + [RA] Remove a stray variable from the config-file-reserved tag. * checks/init.d{.desc,}: + [RA] Warn on init scripts that list S in their Default-Stop LSB keyword. Thanks, Petter Reinholdtsen. (Closes: #458596) * checks/menu-format{.desc,}: + [RA] Fix non-wm-module-in-wm-modules-menu-section pluralization to match the check and reword the long description to be hopefully clearer. Thanks, Martín Ferrari. (Closes: #457527) + [RA] Warn about use of su wrappers other than su-to-root for desktop and Live CD support. Thanks, Daniel Baumann. (Closes: #453931) + [RA] Only check for desktop files in /usr/share/applications. The ones elsewhere are too strange. (Closes: #459252) * checks/menus{.desc,}: + [RA] Spelling errors in doc-base files should only be warnings. Do picky spelling and capitalization checks on the abstract and title fields. * checks/patch-systems: + [RA] dpatch permits multiple patches to be listed on the same line of 00list. Patch by Chris Lamb. (Closes: #457523) * checks/scripts{.desc,}: + [RA] Add lua40 and lua5.1. Thanks, Enrico Tassi. (Closes: #457219) + [RA] Improve recognition of heredocs. + [RA] Recognize quoted strings that start at beginning of the line. + [RA] Rewrite script path and dependency checking. Remove scripts and packages no longer in the archive. Add new versions of versioned scripts and packages. Fix the dependencies for pike interpreters. (Closes: #458896) + [RA] Reformat long descriptions and collapse some tags. + [RA] For consistent results, only syntax-check sh and bash scripts. Also ignore all dpatch files, not just those in /usr/src. * checks/shared-libs{.desc,}: + [RA] New check for version numbers in symbol files. Based on a patch from Raphael Hertzog. (Closes: #457067) + [RA] Exclude nsswitch modules from shlibs file checks. + [RA] ld.so may also look in /emul/ia32-linux/{lib,usr/lib}. * debian/control: + [RA] Suggest libtext-template-perl, needed for HTML reporting. * debian/copyright: + [RA] Add my copyright statement. + [RA] Reference GPL-2, not the GPL symlink, reflecting our license. * frontend/lintian: + [RA] Merge all override messages into a single message per run. Add -q/--quiet option to suppress that message. (Closes: #457513) + [RA] Allow + and . in tag names in overrides. Thanks, Stefan Fritsch. (Closes: #454790) + [RA] Check that the argument to --color is valid. + [RA] Warn about no package arguments unless --setup-lab or --remove-lab are given. Thanks, Damyan Ivanov. (Closes: #455732) + [RA] Add support for HTML coloring. (Closes: #458376) * frontend/lintian-info: + [RA] Allow for HTML color tags. + [RA] Add -a to annotate an override file. * lib/Dep.pm: + [RA] Allow substvars instead of package names so that dependency checks against the source debian/control file don't treat all substvars as equivalent. Thanks, Julien Cristau. (Closes: #456802) * lib/Spelling.pm: + [RA] Stop doing capitalization checks on all files; there's too much of a risk of false positives. Instead, provide a separate picky spelling check function for package descriptions and similar cases where we're more sure of the contents. + [RA] Expand the picky capitalization checks to catch Debian, GNOME, KDE, and Linux. (Closes: #456582) * lib/Tags.pm: + [RA] Add support for HTML coloring. * man/lintian.1: + [RA] Document the --color=html and -q/--quiet options. * man/lintian-info.1: + [RA] Document the --annotate option. * reporting/html_reports: + [RA] Rewritten. - Include info, experimental, and overridden tags in the tag pages. - Generate a second report for each maintainer showing all tags. - Correctly handle multiple different maintainer strings with the same e-mail address. - Correctly report the version number of a binary package when it differs from the source package. (Closes: #458036) - Formatting changes (hopefully improvements) to the web pages. - New template-driven system for easier revision of the HTML. * reporting/lintian.css: + [RA] New minimal style sheet for the HTML reports. * reporting/templates/*: + [RA] New Text::Template page templates for the HTML reports. * testset/runtests: + [RA] Test tags for valid characters. -- Russ Allbery Sat, 05 Jan 2008 17:16:32 -0800 lintian (1.23.41) unstable; urgency=low The "it would be lovely if there were an actual desktop file standard" release. * checks/*.desc: + [RA] Escape all literal angle brackets and fix unclosed and unknown HTML tags. Based on a patch by Thijs Kinkhorst. (Closes: #455211) * checks/field{.desc,}: + [FL] Add some checks for the Homepage field: - warn about enclosing < and > - warn about non-absolute URLs * checks/menu-format{.desc,}: + [RA] Add Actions to the KDE-specific desktop file keys. Add Application as an acceptable Main Category even though it's not listed in the standard; given how widely it's used, it doesn't appear to be worth warning about right now. (Closes: #444651) + [RA] Add GNUstep as an acceptable Main Category, since it's used as a non-standard category by GNUstep applications. + [RA] Warn about desktop files containing CRLF line endings (and then strip the CR for later checks). The standard is explicit that each line ends in only LF. * debian/control: + [FL] Add liburi-perl to Depends for the Homepage checks. + [RA] Wrap Depends for readability. * testset/runtests: + [RA] Check all tag descriptions for unknown or unclosed HTML tags and for stray angle brackets. -- Russ Allbery Sun, 09 Dec 2007 20:03:03 -0800 lintian (1.23.40) unstable; urgency=low The "Russ's brown paper bag bug" release. * checks/doc-base: + [RA] My mistaken precedence fiddling with the doc-base checks caused them to warn about every abstract containing a period. Patch from Chris Lamb. (Closes: #454941) * lib/Spelling.pm: + [RA] Add common mistakes for publicly and spelling. -- Russ Allbery Sat, 08 Dec 2007 12:15:33 -0800 lintian (1.23.39) unstable; urgency=low The "Ubuntu and doc-base patch merge, with extra fixes" release. * checks/*.desc: + [RA] Remove the unused Standards-Version header. * checks/changelog-file{.desc,}: + [RA] Check the latest entry of the Debian changelog and any NEWS.Debian file for common spelling errors. (Closes: #36017) + [RA] If this looks like a new package (Debian revision of -1 and only one changelog entry), warn if it doesn't close a bug. Thanks, Margarita Manterola. (Closes: #356051) + [RA] Check for lines over 80 columns in the most recent entry. Thanks, Guillem Jover. (Closes: #435963) * checks/copyright-file{.desc,}: + [RA] Moved spelling-error-in-copyright check to here. * checks/debconf: + [RA] Go back to not warning about "no" in boolean debconf questions. The word is too common in normal English prose for reasons other than assuming a particular debconf interface. Thanks, Rafael Laboissiere. (Closes: #453177) * checks/debian-readme{.desc,}: + [RA] Moved spelling-error-in-readme-debian check to here. * checks/description{.desc,}: + [RA] Moved spelling-error-in-description check to here. * checks/fields: + [RA] Python documentation packages should still be in section doc. Thanks, Michal Čihař. (Closes: #454688) + [RA] Warn about lib.*-dev packages not in section libdevel. + [RA] Warn about debug packages that aren't priority: extra. Thanks, Joerg Jaspert. (Closes: #454358) + [RA] Ignore Original-Maintainer if the version contains ubuntu. + [RA] Only warn about Section for Python packages starting with python-, not py, since py picks up too many things that aren't Python modules. + [RA] Only warn about Section for Perl packages matching lib.*-perl to avoid false positives for things like dh-make-perl. Thanks, Damyan Ivanov. (Closes: #454723) * checks/files: + [RA] Warn about packages providing files in /usr/lib/debug that aren't named -dbg. Thanks, Joerg Jaspert. * checks/lintian.desc: + [RA] Add bad-ubuntu-distribution-in-changes-file, merged from the Ubuntu patch. + [RA] Fix the malformed-override long description. Thanks, Stefan Fritsch. * checks/menus{.desc,}: + [RA] Substantial overhaul and expansion of the doc-base control file checks. Patch from Robert Luberda. (Closes: #448783) * checks/nmu: + [RA] No packages with ubuntu in the version number are NMUs. Merged from the Ubuntu patch. * checks/patch-systems: + [RA] Ignore blank lines in 00list and don't report them as patches without descriptions. Thanks, Julien BLACHE. (Closes: #454730) * checks/spelling{.desc,}: + [RA] Subsumed into other check scripts and lib/Spelling.pm. * frontend/lintian: + [RA] If the version number indicates an Ubuntu package, check against a different list of allowable distributions. Merged from the Ubuntu patch. + [RA] Skip check and collection *.desc files whose names start with a period (mostly to avoid testing artifacts from editor lock files). + [RA] Restore previous override parsing and make the package name optional again. Thanks, Stefan Fritsch. (Closes: #454790) + [RA] Check overrides for implausible tags. * lib/Spelling.pm: + [RA] New module to do general spelling checks for specific misspellings. Based on the previous checks/spelling and a patch by Robert Luberda. -- Russ Allbery Fri, 07 Dec 2007 22:12:56 -0800 lintian (1.23.38) unstable; urgency=low * The "HE's brown paper bag bug" release * checks/changelog-file: + [RA] Don't warn about version numbers going backwards in the changelog file if the comment says this is a backport. * checks/patch-systems: + [FL] Try appending .dpatch to patchnames found in 00list. Patch by Leo Antunes. (Closes: #454516, #454518) * lib/Dep.pm: + [FL] Fix "uninitialized value" warning in pred_implies(). -- Russ Allbery Wed, 05 Dec 2007 17:21:44 -0800 lintian (1.23.37) unstable; urgency=low The "Policy 3.7.3" release. * checks/binaries: + [HE] Fix RegEx to re-enable 'binary-in-etc' and 'arch-dependent-file-in-usr-share' checks. (Closes: #452336) + [HE] When checking that a lib is linked against libc, search for libc.so, not any library beginning with libc. Thanks for the bug and patch to Ruben Porras . (Closes: #448652) + [RA] Ignore the gf suffix from the gfortran migration when checking whether the package name matches the SONAME. Thanks, Kevin B. McCarty. (Closes: #448207) * checks/changelog-file{.desc,}: + [RA] Check that the latest changelog entry has a later version than the previous entry. Thanks, Thijs Kinkhorst. (Closes: #449257) * checks/common_data.pm: + [RA] Add Dm-Upload-Allowed as a control field. (Closes: #453779) * checks/control-file{.desc,}: + [RA] Diagnose stronger dependencies that imply weaker dependencies, such as the same dependency in both Depends and Recommends or Recommends and Suggests. Thanks, Joerg Jaspert. (Closes: #453302) + [RA] Upgrade no-section-field-for-source to warning at the request of Joerg Jaspert. * checks/control-files: + [RA] Add symbols as a known control file for debs and udebs. * checks/copyright-file: + [HE] Check that encoding of copyright file is UTF-8. Patch by gregor herrmann . (Closes: #451689) + [HE] Add warning copyright-contains-dh_make-todo-boilerplate if the maintainer left the dh_make boilerplate in the copyright file. Based on patch by Cyril Brulebois . (Closes: #448677) + [RA] Check for the complete GFDL included in the copyright file and expand copyright-file-contains-full-gpl-license to look for GPL v3 references. Also check for correct references to common-licenses for the GFDL and LGPL. * checks/deb-format: + [HE] Remove, not needed any more. (Closes: #447257) * checks/debconf: + [HE] Explicitly allow the phrase "no longer" in boolean debconf questions. (Closes: #447718) * checks/description.desc: + [RA] Upgrade the legacy Homepage tag to a warning. * checks/fields: + [HE] Add 'doc-package-should-be-section-doc', 'python-package-should-be-section-python', 'perl-package-should-be-section-perl'. Ideas shamelessy stolen from linda. (Closes: #452839) + [RA] Allow Python dependencies in Build-Depends when using another variant for calling Python in the clean target. Thanks, Bernd Zeimetz. (Closes: #444642) * checks/files{.desc,}: + [HE,RA] Add 'package-contains-empty-directory' check, but ignore dirs in /var and /etc and handle /usr/lib/perl5 and /usr/share/perl5 directories separately with a lower priority level since they're very common. (Closes: #452316, #357838) + [HE] Add checks for game packages that contain no game executables (package-section-games-but-contains-no-game) or that contain anything in usr/bin at all, which is usually a mistake. (package-section-games-but-contains-no-game). (Closes: #451668) + [RA] Downgrade symlink-should-be-relative to a warning since it's a Policy should. Thanks, Thijs Kinkhorst. (Closes: #454239) * checks/lintian.desc: + [RA] Add critical as a recognized urgency. * checks/patch-systems: + [HE] Add complete new check script, intended to check for usual problems when using patch systems. Start with three checks for common dpatch problems. Idea loosely based on patch by Carl Fürstenberg . (Closes: #437959) * checks/po-debconf.desc: + [RA] not-using-po-debconf is now an error per Policy section 3.9.1. * checks/rules: + [HE] Implement 'binary-arch-rules-but-pkg-is-arch-indep', checking for rules in binary-arch when the package is arch: all. (Closes: #409109, #119097) + [HE] Implement 'desktop-file-but-no-dh_desktop-call', checking for missing dh_desktop calls when .desktop files are installed in a debhelperized package. (Closes: #409138) * checks/scripts: + [HE] Allow packages to drop snippets into /etc/csh/login.d without a dependency on csh. Files there should also be allowed to have csh in the shebang line. (Closes: #453417) + [HE] Allow packages to drop snippets into /etc/fish.d/ without a dependecy on fish. (Closes: #453416) + [RA] Remove possible-non-posix-code-in-maintainer-script entirely. Debian Policy now allows local and test -a/-o specifically and this is pointless portability. * checks/standards-version: + [RA] 3.7.3 is now the current Standards-Version and anything older than 3.6.2 is ancient. * debian/control: + [TK] Add Vcs-* fields to point to Lintian's repository. + [RA] Update standards version to 3.7.3. * debian/dirs: + [RA] Stop creating empty /usr/share/lintian/{overrides,info} directories. The latter is no longer used and the former is shipped with packages that include overrides. * frontend/lintian: + [RA] Add critical as a recognized urgency. + [RA] Diagnose malformed override entries; don't just ignore them. + [RA] Fix some odd formatting. + [RA] Display a summary of overridden tags as an N: output line. Requested by Steve McIntyre. (Closes: #452804) * man/lintian.1: + [RA] Be clearer about what files lintian takes as arguments; in particular, mention that source packages are checked by providing the .dsc file as an argument. (Closes: #441636) + [RA] Fix a slight spacing problem with the --color flag. + [RA] Remove mention of unused /usr/share/lintian/info directory. * lib/DebVersions.pm: + [RA] Remove. This isn't used by anything and would produce incorrect results (it doesn't understand ~), and Dep.pm provides version comparison routines that use dpkg. * lib/Tags.pm: + [RA] Keep statistics on overrides by severity. * reporting/html_reports: + [RA] Change the layout of the per-maintainer lintian pages. Now, each report will be in /reports/maintainer/.html where is the maintainer's e-mail address with unsafe characters replaced by _. This should allow better links from the QA pages. Thanks, Stefano Zacchiroli. * unpack/list-srcpkg: + [RA] Escape ; and newline characters in all package fields before writing them to the index (uncovered when someone accidentally appended a package description to Standards-Version). -- Russ Allbery Tue, 04 Dec 2007 16:43:13 -0800 lintian (1.23.36) unstable; urgency=low The "grand open change and desktop cleanup" release. * {checks,collection,depcheck,frontend,lib,reporting,unpack}/*: + [RA] Use the three-argument form of open uniformly, whether needed or not, to head off further quoting and whitespace interpretation bugs. * checks/files{.desc,}: + [RA] Catch .DS_Store.gz files as well. + [RA] Warn about ._ Mac OS X resource files in the package. + [RA] Add a hopefully helpful note about how cruft from other operating systems can show up in binary packages. * checks/menu-format: + [RA] Fix detection of commands for menu entries when the command is given with its full path. (Closes: #446796) + [RA] Remove Actions from known desktop keys again, as I believe the root problem was our willingness to inspect desktop types other than Application (also fixed in the previous release). + [RA] Fix Perl flow error when skipping some desktop files. + [RA] Skip unknown and deprecated key warnings and encoding key warnings in desktop files if they were of an unknown type. * lib/Dep.pm: + [RA] Fix negative implication in some boundary cases when comparing two versioned relationships in the same direction. Thanks to Raphael Hertzog for the analysis and fix. (Closes: #446768) -- Russ Allbery Mon, 15 Oct 2007 21:23:16 -0700 lintian (1.23.35) unstable; urgency=low The "frantic bug catchup" release. * checks/changelog-file{.desc,}: + [RA] Add some basic checks for NEWS.Debian files: naming, compression, encoding, a syntax check with Parse::DebianChangelog, and unreleased for the distribution. (Closes: #437707) * checks/common_data.pm: + [RA] Allow Homepage in source and binary packages. * checks/control-file: + [RA] Support and ignore comments in debian/control. Thanks, Julien Cristau. (Closes: #440830) + [RA] Check for XS-Vcs-* headers and recommend (at info level) that they be changed to Vcs-* headers. (Closes: #444661) * checks/cruft.desc: + [RA] Fix incorrect tag name for patch failure files. Thanks, Romain Francoise. (Closes: #437463) * checks/debconf: + [RA] A cdebconf that supported error was released with sarge, so don't require a versioned cdebconf dependency. Thanks, Thijs Kinkhorst. (Closes: #438860) + [RA] Various improvements from Thomas Huriaux: Diagnose select templates with only yes/no options, diagnose more question prompts, warn on any questions in the extended description, allow yes/no mentions in non-boolean templates, and catch more first-person language. (Closes: #439508) + [RA] More exactly follow the Developer's Reference recommendations by only requiring open prompts for string and password prompts and only complaining about imperative wording for select and multiselect templates. Thanks, Steve Langasek. (Closes: #442711) * checks/description{.desc,}: + [RA] Warn (at info level for now) about Homepage pseudo-fields in the extended description. (Closes: #444336) * checks/fields: + [RA] Allow python-all as yet another way of satisfying a Python build dependency. (Closes: #444642) * checks/fields.desc: + [RA] Properly escape < and >. * checks/files{.desc,}: + [RA] Warn about Thumbs.db files, which are usually useless Windows thumbnail databases. Thanks, Paul Wise. (Closes: #438202) + [RA] Warn about .DS_Store files, used by Mac OS X to store extended folder attributes. Thanks, Paul Wise. (Closes: #438203) + [RA] Improve the recommended command to remove .packlist files. Thanks, Justin Pryzby. + [RA] Don't think hard links are zero-length files. + [RA] Diagnose files with names ending in whitespace. * checks/infofiles: + [RA] Emacs 22 now allows embedded images in info files, so accept and ignore PNG files in the info directory. More image types may be needed. Thanks, Andreas Metzler. (Closes: #438602) * checks/menu-format{.desc,}: + [RA] Reserved categories are okay in .desktop files if OnlyShowIn is present, and generally deserve their own separate tag regardless. Thanks, Michael Biebl. (Closes: #442709) + [RA] Ignore categories beginning with "X-", reserved for category extensions. Thanks, Josselin Mouette. (Closes: #443827) + [RA] Allow Actions keys. This isn't in the desktop standard but is widely used. Thanks, Raphael Geissert. (Closes: #444651) + [RA] Ignore desktop files not for one of the known types. This should significantly reduce the noise for KDE packages. + [RA] Only check whether a program referenced by Exec is in the package if the desktop file is in /usr/share/applications. Too many applications use Exec for desktop files elsewhere without the standard PATH. + [RA] Ignore Exec fields pointing to kcmshell. + [RA] Ignore desktop files in /usr/share/doc or that appear to be templates. + [RA] Avoid uninitialized warnings on all-whitespace commands. * checks/menus: + [RA] Find the targets of hard links correctly. (Closes: #444355) + [RA] Use the three-argument form of open to not fail on doc-base files ending in whitespace. Error on doc-base files with Document fields that end in whitespace, since currently they break multiple tools. Thanks, Ian Zimmerman. (Closes: #444889) * checks/nmu.desc: + [RA] Remove obsolete note about binary NMUs. Patch from Thijs Kinkhorst. (Closes: #437925) * checks/scripts{.desc,}: + [RA] We now have a csh package. Allow it as an alternative for csh script dependencies. Thanks, Bernd Zeimetz. (Closes: #440825) + [RA] Allow install-sgmlcatalog --remove in postinst as well as prerm and suggest removing it entirely in the long description. * checks/version-substvars.desc: + [RA] Properly escape < and >. * collection/changelog-file{.desc,}: + [RA] Collect NEWS.Debian as well as changelog. -- Russ Allbery Sun, 14 Oct 2007 22:29:51 -0700 lintian (1.23.34) unstable; urgency=low The "brown paper operator" release. * frontend/lintian: + [RA] Use =~ with regexes, not eq. Thanks, Guillem Jover. (Closes: #436180) -- Russ Allbery Sun, 05 Aug 2007 19:58:38 -0700 lintian (1.23.33) unstable; urgency=low The "menu and cruft reorganization" release. * checks/common_data.pm: + [CW] Add automaken as a known virtual package. + [CW] Update architectures to dpkg 1.14.5, adding solaris-* and lpia. + [RA] Add %known_obsolete_emacs. * checks/cruft{.desc,}: + [RA] Check for .git directories in source packages. Thanks, Julien Cristau. (Closes: #433516) + [RA] Substantially rewrite how all cruft checking against source packages is done, incorporating debdiff in the process. There are now two tags for most source package cruft problems: one for files introduced in the Debian diff or in a native package, and one for files present upstream. The former is at warning severity and the latter is at info severity, since it's usually not worth repackaging the upstream source to remove such files. In the process, standardize the names of all of the tags and pull the regexes out into data instead of code for easier maintenance. (Closes: #434744) * checks/debdiff{.desc}: + [RA] Removed, incorporated into checks/cruft. * checks/debian-readme: + [RA] Replace all uses of tag_error and tag_warn with just tag. * checks/fields{.desc,}: + [RA] Tag packages listing emacs21 as the preferred Emacs flavor in a dependency. Thanks, Tatsuya Kinoshita. (Closes: #434978) + [RA] Start tagging unversioned dependencies on coreutils again since the transition from fileutils is long-since finished. Thanks, Guillem Jover. (Closes: #436058) * checks/files{.desc,}: + [RA] Check for .git directories in binary packages. * checks/menu-format{.desc,}: + [RA] Switch to the new menu hierarchy, which will be in the next release of Policy. Add specific checks for the major renamings to hopefully cut down on the confusion and provide some specific guidance. Remove the code that allowed for applications to create new sub-menus, since the current menu documentation says not to do that. (Closes: #431844) + [RA] Add checks of desktop files. The checks so far are basic, but do include key and category verification. Based heavily on work by Javier Fernández-Sanguino Peña. (Closes: #277441, #433411) * checks/scripts{.desc,}: + [RA] If rm output is redirected to /dev/null, don't think that rm is removing /dev/null. Thanks, Robert Luberda. (Closes: #431259) + [RA] xjed also provides jed-script. Thanks, Jörg Sommer. (Closes: #431629) + [RA] Don't complain about ruby libraries in /usr/lib/ruby that have shebang lines. This is a common means for embedding unit tests in Ruby libraries. Thanks, Paul van Tilburg. (Closes: #431545) + [RA] Don't push depending directly on update-inetd in the long description of maintainer-script-needs-depends-on-update-inetd. Most packages should depend on inet-superserver. Leave the check the same for the time being, however. + [RA] Replace all uses of tag_error and tag_warn with just tag. * checks/shared-libs: + [RA] Exclude udebs from dependency checking in the shlibs files since binary packages may legitimately declare udeb dependencies on other packages. Thanks, Loïc Minier. (Closes: #431395) * checks/spelling: + [RA] Replace all uses of tag_error and tag_warn with just tag. * checks/version-substvars: + [RA] Don't skip other checks for binNMUability when warning about the deprecated ${Source-Version} substvar. Thanks, Lior Kaplan. (Closes: #432959) * frontend/lintian: + [RA] Add \w+-backports to the known distribution list. Thanks, Vincent Danjean. (Closes: #432268) * lib/Tags.pm: + [RA] Replace any newlines in the extra information to the tag function with \n. * man/lintian.1: + [RA] Remove the mention of the debdiff check script. -- Russ Allbery Sun, 05 Aug 2007 11:59:15 -0700 lintian (1.23.32) unstable; urgency=low The "stability of output" release. * checks/binaries: + [RA] Sort the package SONAMEs to provide more stable lintian tags. Patch from Cyril Brulebois. (Closes: #428681) * checks/files{.desc,}: + [RA] Limit the Zope license exception to only .dtml, .pt, and .cpt files. Thanks, Bernd Zeimetz. + [RA] Sort the files listed in package-contains-hardlink so that the lintian output is stable regardless of the hash order of the directory when the tar file was built. + [RA] Don't incorrectly skip all other file location checks for hard links. + [RA] Check for files installed in /usr/lib/sgml. This transition was probably completed long ago, but checking for regression can't hurt. (Closes: #90019) * checks/manpages{.desc,}: + [RA] Check for dh_make man page templates (by looking for the template whatis entry). Thanks, Bill Allombert. (Closes: #173583) * checks/menus: + [RA] Avoid a quadratic search of the files in the package on doc-base files that list tons of files individually. This speeds up a lintian check of openoffice.org-dev-doc enormously. * checks/po-debconf: + [RA] Close the template file handle between files so that the line numbers for translated default fields are correct. * checks/rules{.desc,}: + [RA] Check for ignoring all errors from make clean or make distclean and recommend skipping the call if there's no Makefile instead. Thanks, Branden Robinson. (Closes: #325372) * checks/scripts{.desc,}: + [RA] Add Octave as an interpreter, and allow both versioned and unversioned forms. Thanks, Sebastian Harl. (Closes: #428403) + [RA] Check for deprecated install-sgmlcatalog usage. * checks/shared_libs: + [RA] Report the correct file for shlib-with-nonpic-code rather than the last shlib in the package. (Closes: #429840, #429528) * frontend/lintian: + [RA] Don't require -v in order to report unused overrides; they're already info-level tags, which is enough hiding. + [RA] Remove old dead unused override code. * reporting/html_reports: + [RA] Fix a Perl warning when generating the clean maintainer pages. * unpack/unpack-binpkg-l1: + [RA] Sort the output of tar tfv by filename so that the lintian output will be stable regardless of the hash order of the directory when the tar file was built. -- Russ Allbery Thu, 21 Jun 2007 01:47:53 -0700 lintian (1.23.31) unstable; urgency=low The "back under 100 open bugs" release. * checks/changelog-file: + [RA] Only check for missing colons in bug closers in the most recent changelog entry. Thanks, Thijs Kinkhorst. (Closes: #423171) * checks/common_data.pm: + [RA] Update architectures to dpkg 1.14.1. Remove all linux-* architectures and add armel. (Closes: #421995) * checks/control-files.desc: + [RA] Change unknown-control-file to a warning, since Policy only discourages it and doesn't outlaw it. (Closes: #287209) * checks/cruft: + [RA] Allow any automake package to satisfy the autotools-dev build dependency for suppressing warnings about out of date autotools helper files. (Closes: #417067) * checks/fields: + [RA] Require libmodule-build-perl in Build-Depends if the clean rule runs perl Build. Hopefully this isn't too aggressive. Thanks, Ian Beckwith. (Closes: #421549) * checks/files: + [RA] Don't warn about LICENSE files in Zope products, since they may be used for runtime display. (Closes: #424164) * checks/manpages: + [RA] Avoid false positives on binaries with X11 in the name. Patch from Kevin B. McCarty. (Closes: #423229) * checks/menu-format.desc: + [RA] Improve the pkg-not-in-package-test long description and add a manual reference. (Closes: #423519) * checks/menus: + [RA] Allow multiple blank lines between doc-base sections and trailing blank lines in the file. doc-base is fine with this. Reported by Luis Rodrigo Gallardo Cruz. (Closes: #423096) * checks/scripts: + [RA] Add pagsh, provided by openafs-client and heimdal-clients. + [RA] Diagnose removal of device files in maintainer scripts per Policy 10.6. (Closes: #268688) + [RA] Add jruby1.0. Thanks, Sebastien Delafond. (Closes: #426950) + [RA] Add jed and friends. Thanks, Jörg Sommer. (Closes: #426469) + [RA] Move several maintainer script checks specific to shell scripts inside the conditional so that they won't run on maintainer scripts not written in shell. + [RA] Diagnose maintainer scripts looking at /var/lib/dpkg/status directly. Thanks, Guillem Jover. (Closes: #426628) + [RA] Diagnose direct modifications to /etc/services, /etc/protocols, /etc/rpc, and /etc/inetd.conf in maintainer scripts. (Yes, an eight-year-old bug!) (Closes: #32532) * checks/version-substvars{.desc,}: + [RA] Add a check for deprecated ${Source-Version} substvars. Patch from Guillem Jover. (Closes: #427577) * frontend/lintian-info: + [CW] Fix uninitialized value warning after reading a blank line. -- Russ Allbery Mon, 04 Jun 2007 20:29:55 -0700 lintian (1.23.30) unstable; urgency=low The "beating false positives off with a stick" release. * checks/common_data.pm: + [RA] Add mktemp and sysvinit-utils as known essential packages. + [RA] Add Vcs-Mtn and Vcs-Browser to the known source package fields. + [RA] Add Kernel-Version to known udeb control fields. * checks/control-files: + [RA] Allow clilibs, but don't try to check the syntax of it yet. Thanks, Sebastian Dröge. (Closes: #378088) * checks/copyright-file: + [RA] Exclude the Affero General Public License from the check for references to the shared GPL copy. (Closes: #420077) + [RA] Replace yet another hand-rolled dependency parser with Dep. * checks/cruft{.desc,}: + [RA] Check for svk commit message files. * checks/debconf{.desc,}: + [RA] Remove the dependency check for SETTITLE since all debconf implementations back to oldstable support it. + [RA] Reduce the dependency check for error templates to info since all debconf implementations back to stable support it. * checks/debhelper{.desc,}: + [RA] Downgrade the dependency check for dh_python and the Python policy to info since all debhelpers back to stable support it. + [RA] Downgrade the dependency check for compatibility level V5 to info since all debhelpers back to stable support it. * checks/fields{.desc,}: + [RA] The CDBS Python rules only call pycentral or pysupport during the binary targets, so those dependencies can be safely moved to Build-Depends-Indep. Still allow them in Build-Depends, though, since that's where CDBS likes to put them. Thanks, Tristan Seligmann. (Closes: #420526) + [RA] Allow the Python core packages themselves to depend on python-minimal. + [RA] Remove the version constraints for python-central and python-support dependencies since stable released with a working version and they weren't in oldstable. + [RA] Remove the dependency check on dh_installxfonts for the X.Org transition since the debhelper released with stable does the right thing and this dependency is not useful for backports to oldstable. + [RA] Remove the version on the quilt dependency check. It's not worth the effort to maintain a separate version check for oldstable backports. (Closes: #420160) * checks/files{.desc,}: + [RA] Check for svk commit message files. + [RA] Don't consider {copying,license}.dtd extra license files; the Mozilla suite uses them for non-licenses. (Closes: #420558) + [RA] Use $pkg rather than reading fields/package for the x11-common pre-depend check. + [RA] Allow x11-common to install /usr/X11R6/bin. + [RA] Downgrade the pre-depends on x11-common requirement for packages installing into /usr/include/X11 or /usr/lib/X11 to info since it's only needed for upgrades from sarge or early etch. * checks/md5sums: + [RA] Don't warn about a missing md5sums file if the package contains nothing for which we would generate an MD5 checksum. Thanks, Andreas Beckmann. (Closes: #420465) * checks/manpages: + [RA] Cope with more uses of - in *roff escapes that don't need hyphen warnings. + [RA] Don't consider a binary an X binary if it's a symlink into /etc/X11. (seyon does something weird but probably legitimate.) + [RA] Fix manpage-for-non-x11-binary-in-wrong-directory and manpage-for-x11-binary-in-wrong-directory output. (Closes: #295072) * checks/menus{.desc,}: + [RA] In doc-base control files, check for Index fields for HTML and Info documents and require that each section after the header have a Format field. Thanks, Bernhard R. Link. (Closes: #419847) * checks/rules: + [RA] Listing a rule as a dependency of .PHONY is sufficient to mark it as present for GNU make and hence sufficient for Policy's requirement. Thanks, Peter Eisentraut. (Closes: #419446) * checks/scripts{.desc,}: + [RA] Packages calling update-xmlcatalog must depend on xml-core. Also avoid false positives when a package itself provides the program its maintainer scripts use. Thanks, Daniel Leidert. (Closes: #419461) + [RA] Check for maintainer scripts calling read (but exclude those that include /usr/share/debconf/confmodule on the grounds that they're probably only using it as a fallback). Based on a patch by Luk Claes. (Closes: #231770) + [RA] Add pike7.6 and ruby1.9 as valid interpreters. + [RA] Diagnose use of /bin/env with a more specific message than the generic unusual interpreter tag. + [RA] Remove the version constraint on the gconf-schemas check since all versions of gconf2 back to stable provide this script and it's not worth maintaining a separate check for oldstable backports. * checks/shared-libs{.desc,}: + [RA] Warn if a package declares dependencies in its shlibs control file that cannot be satisfied by that package (including via Provides). (Closes: #56440) * reporting/harness: + [RA] Include overridden tags in the lintian output so that we can do statistical reporting on them and see them in lintian.log. * reporting/html_reports: + [RA] Create stub pages for maintainers with only lintian-clean packages. (Closes: #305173) + [RA] Sort packages on each maintainer's page. + [RA] Report statistics on info tags as well. + [RA] Generate better file names for maintainer pages with weird characters. + [RA] Fix Perl warnings. -- Russ Allbery Sat, 28 Apr 2007 16:31:31 -0700 lintian (1.23.29) unstable; urgency=low The "look at all the stuff that accumulated during the etch freeze" release. * COPYING: + [CW] Update to current text of GPL v2 (which talks about the GNU Lesser General Public License rather than Library, etc.; no functional changes). * checks/changelog-file{.desc,}: + [RA] Check for bug closers without a colon after closes, but only if there are at least six digits in the bug number and no non-digits. Suggestion from Jari Aalto. (Closes: #373918) * checks/copyright-file{.desc,}: + [JA] Update usr-doc-* test to report user-share-doc-* instead. New tests added: postinst-should-not-set-usr-doc-link, doc-base-file-references-usr-doc. Patch from Thijs Kinkhorst. (Closes: #406349). * checks/common_data.pm: + [JA] Perl syntax corrections. + [JA] Support the Autobuild: and Vcs-* fields in .dsc files. Applied patch to implement this by Ian Beckwith. (Closes: #403553). * checks/control-file: + [RA] Allow source in main to generate contrib packages. Thanks, Bdale Garbee. (Closes: #401881) * checks/cruft{.desc,}: + [RA] Use Dep to check autotools-dev build dependency rather than rolling our own dependency parsing, thus avoiding problems when it's the first dependency. Thanks, Tilman Koschnick. (Closes: #412406) + [RA] Mention that including CVS or .svn directories in a release tarball should generally be reported as an upstream bug. Qualify the statement that export should be used instead of checkout to refer to snapshot packaging. Thanks, Jari Aalto. (Closes: #373668) + [RA] Allow a build dependency on automake to satisfy the autotools-dev requirement since users may use autoreconf to update config.{sub,guess}. Thanks, Jordà Polo. (Closes: #417067) * checks/debconf: + [RA] Rather than munging dependencies to cope with the various implementations of debconf, take advantage of our new dependency comparison routines and check the full correct dependency. This should really fix problems with checking the dependencies for settitle. Patch from Damyan Ivanov. (Closes: #349616) + [RA] Check that an appropriate versioned dependency on debconf and/or cdebconf is present if error template types are used. Thanks, Christian Perrier. (Closes: #416140) * checks/debhelper.desc: + [RA] Use consistent file naming when diagnosing possibly conflicting debhelper compat settings. Thanks, Jari Aalto. (Closes: #409122) * checks/fields{.desc,}: + [RA] Add an exception to maintainer-not-full-name for Wookey and a comment to consider removing the check if we get more false positives. Thanks, Neil Williams. (Closes: #406731) + [RA] Rename build-depends-indep-should-be-build-depends to clean-should-be-satisfied-by-build-depends to make the reason for the message clearer without running lintian -i. Thanks to Osamu Aoki for the suggestion. (Closes: #405840) + [RA] Recognize the +bX convention for binary NMUs. Warn about use of the old three-part version numbers. * checks/files{.desc,}: + [RA] Diagnose creation of subdirectories of /usr/bin other than mh and the legacy X11 directory. (Closes: #417912) * checks/manpages: + [RA] When checking for hyphen used as a minus sign, avoid false positives on \s-1 (small font) and \*(-- (pod2man long dash). + [RA] Display the full path for binary-without-manpage tags to make it easier to track down problems. + [RA] Ignore binaries in subdirectories of the normal binary directories (other than /usr/bin/X11 and /usr/bin/mh). These should be caught by other checks and the man page warnings would likely be confusing noise. * checks/menu-format{.desc,}: + [RA] If a menu icon isn't an absolute path, only look for it in /usr/share/pixmaps, not in the old X11R6 paths. Update the long tag description accordingly. * checks/menus: + [JA] Perl syntax corrections. Removed extra empty newlines. * checks/lintian.desc: + [RA] List emergency as a valid urgency. * checks/nmu{.desc,}: + [RA] List the exact phrases recognized by lintian as marking an NMU. Reported by Jari Aalto. (Closes: #409108) + [RA] Recognize the +bX convention for binary NMUs. * checks/po-debconf: + [RA] Now that we're passing --use-untranslated to msgcmp, we have to compare the generated pot file with the one in the package both directions to catch all out of date errors. Thanks, Thomas Huriaux. (Closes: #402662) * checks/rules{.desc,}: + [RA] Fix the policy section for debian-rules-missing-required-target and debian-rules-not-a-makefile. Thanks, Daniel Kahn Gillmor. (Closes: #414964) + [RA] Warn about use of $(PWD) instead of $(CURDIR). + [RA] Setting DH_COMPAT globally in debian/rules is now deprecated in favor of debian/compat. Patch from Luk Claes. (Closes: #330025) * checks/scripts{.desc,}: + [RA] update-inetd is now its own package and netbase may not always depend on it. Update the check to require a dependency on update-inetd, inet-superserver, or one of the inet-superserver packages that provides update-inetd. Reported by Tatsuya Kinoshita. (Closes: #402319) + [RA] Mention SUSv3 in the bashism and non-posix tag descriptions, note that use of test -a/-o and local aren't bugs but may still be worth avoiding, and mention short circuiting of && and ||. (Thanks to Jari Aalto for the latter). + [RA] Add /usr/bin/gbr2, provided by gambas2-runtime. Thanks, José "L. Redrejo" Rodríguez. (Closes: #403515) + [RA] Add /usr/bin/jruby0.9, provided by jruby0.9. Thanks, Sebastien Delafond. (Closes: #418105) * doc/README: + Document --color option. Based on a patch from Loïc Minier. * depcheck/deppages.pl: + [JA] Perl syntax corrections. * depcheck/report2html.pl: + [JA] Perl syntax corrections. * frontend/lintian: + [JA] Removed trailing spaces and other perl syntax corrections. + [RA] Add --color option to optionally colorize lintian tags based on their severity. Based on a patch from Loïc Minier. + [RA] Accept emergency as a valid urgency and check urgencies case-insensitively since that's what Policy specifies. Thanks, Joey Hess. (Closes: #412577) * frontend/lintian-info: + [RA] Ignore ANSI color sequences when parsing lintian tags. * lib/Checker.pm + [JA] Perl syntax corrections. * lib/Lab.pm + [JA] Perl syntax corrections. * lib/Tags.pm + [JA] Perl syntax corrections. + [RA] Support for colorizing lintian tags based on their severity. Based on a patch from Loïc Minier. (Closes: #399714) * man/lintian.1: + [RA] Document --color. Based on a patch from Loïc Minier. * unpack/unpack-*pkg* + [JA] Perl syntax corrections. -- Russ Allbery Tue, 10 Apr 2007 21:08:23 -0700 lintian (1.23.28) unstable; urgency=high * collection/objdump-info: + [RA] Remove unsafe temporary file creation in left-over debugging code added accidentally when fixing #399456. Thanks, Josh Triplett. (Closes: #414237) -- Russ Allbery Fri, 9 Mar 2007 22:58:59 -0800 lintian (1.23.27) unstable; urgency=low The "we haven't run this against the whole archive in a while" release * checks/binaries{.desc,}: + [RA] Tag unrecognized ELF binaries as apparently corrupted rather than failing with a note that binutils-multiarch is required. Some packages have had ELF binaries recognized by file but unreadable. Reported by Bill Allombert. (Closes: #399456) * checks/infofiles: + [RA] Don't consider /usr/share/infon to be an info directory. Reported by Joachim Breitner. (Closes: #399857) * checks/md5sums: + [RA] Also don't complain about missing md5sums for files in /var/lib/ispell as they're changed after installation. Thanks, Agustin Martin. (Closes: #401070) * checks/po-debconf: + [RA] gettext 0.16's msgcmp requires --use-untranslated when checking for newer templates than PO files or it gives false positives for every package. Thanks, Damyan Ivanov. (Closes: #400957) + [RA] Don't consider directories to be stray template files even if named template. Thanks, Thomas Huriaux. (Closes: #401442) * checks/shared-libs: + [RA] Don't report shlib-with-non-pic-code unless we're sure that we're looking at a shared library. Otherwise, we get many false positives on some platforms where text relocations are normal for binaries. Reported by Bill Allombert. (Closes: #399525) * collection/file-info: + [RA] Unescape non-ASCII characters escaped by tar before running file on the resulting filename. Otherwise, file can't find the file, exits with an error, and lintian aborts. Reported by Bill Allombert. (Closes: #399392) * collection/objdump-info: + [RA] Include unrecognized format errors from objdump in the output rather than aborting; some packages contain apparently corrupt ELF binaries. * debian/control: + [RA] Depend on gettext 0.16 or later for --use-untranslated. * lib/Lab.pm: + [RA] Preserve the old package lists when setting up a static lab so that the unpack programs can build a list of changed packages and incremental mode works. Thanks, Bill Allmobert. (Closes: #400342) * unpack/list-udebpkg: + [RA] Handle compressed udeb Packages files. Thanks, Bill Allombert. (Closes: #400338) -- Russ Allbery Sun, 3 Dec 2006 11:06:33 -0800 lintian (1.23.26) unstable; urgency=low * checks/binaries{.desc,}: + [RA] Add a policy reference for unstripped-binary-or-object. Thanks, Bas Wijnen. (Closes: #394419) + [RA] Add a special exception to the shared library dependency check for the dynamic loader itself. * checks/changelog-file.desc: + [RA] Downgrade to a warning several errors with changelog files, including compression and a text version of HTML changelogs, that are only shoulds in Policy. (Closes: #289723) + [RA] Cleaned up language and use of unbalanced single quotes in numerous descriptions. * checks/control-file{.desc,}: + [RA] Diagnose a control file that creates binary packages in a different archive category from the source package or the other binary packages. Idea from Yann Dirson. (Closes: #394720) + [RA] Close opened files. + [RA] Add info-level check for Section in the source section of the control file. (Closes: #322244) * checks/cruft{.desc,}: + [RA] Tighten the timestamp check on config.{sub,guess} to look for files dated 2004 or newer, since that's when x86_64 was added. Increase to an error at the request of Ryan Murray since we already suppress this warning of config.{guess,sub} are modified by the Debian patch or if the package build-depends on autotools-dev. (Closes: #190897) * checks/debconf{.desc,}: + [RA] Take into account comma escaping when checking the number of translated choices. Reported by Frans Pop. (Closes: #395028) + [RA] Only require debconf be loaded in the postinst script if a config script exists. Reported by Josselin Mouette. + [RA] Require pre-depends on debconf if debconf is used in the preinst script. Update the long description to deprecate only depending on debconf and falling back on another configuration system. Reported by Josselin Mouette. (Closes: #395468) + [RA] Warn of debconf notes displayed with low or medium priority, with an exception for Policy-required device file warnings. Based on a patch by Thomas Huriaux. (Closes: #389070) + [RA] Close files after opening them, fixing incorrect line numbers when reporting problems with config scripts. * checks/debdiff{.desc,}: + [RA] Check for creation of ~ and .xxx.swp backup files in the Debian diff, but only at the info level for now since they cause no harm. (Closes: #332770) * checks/fields{.desc,}: + [RA] Clarify in missing-build-dependency why lintian does not take into account transitive build dependencies. (Closes: #393975) + [RA] Avoid Perl warning when diagnosing a Python-Version of the form "all, >= 2.4". Thanks, Thijs Kinkhorst. (Closes: #394104) + [RA] Teach the debian/rules parsing about make conditionals and don't require build dependencies for lines encountered inside a conditional (in other words, assume people using conditionals know what they're doing). Fixes a false positive due to the unusual arch-specific build dependencies for openoffice.org, reported by Rene Engelhard. (Closes: #380286) * checks/files{.desc,}: + [RA] Check for vim .swp files in the package. + [RA] Split the warning for NFS temporary files into a separate tag from the warning for editor backup files. * checks/infofiles: + [RA] Close opened files. + [RA] debhelper no longer adds a --section flag to install-info, so don't warn about any install-info invocation without --section. Instead, check each info file for INFO-DIR-SECTION and diagnose calling install-info without --section if any info file is missing this information. (Closes: #97502, #398670) + [RA] Checks for the compression and suffixes of info files were not being run due to a mistake in specifying either /usr/info or /usr/share/info as an info directory. Re-enable them. * checks/md5sums{.desc,}: + [RA] Add a tag for a missing md5sums control file, but only at info level, at least for now. (Closes: #133027) + [RA] Do better syntax checking of the md5sums control file and report malformed lines as a tag rather than aborting lintian. + [RA] Downgrade file-missing-in-md5sums to a warning since it doesn't break the package or debsums and may be intentional. * checks/menu.desc: + [RA] Remove stray commas in Ref strings since the reporting code considers commas to be separating two different references. * checks/menu-format{.desc,}: + [RA] Support the sux, gksu, and kdesu wrappers in menu commands as well as su-to-root. (Closes: #360227) + [RA] Fix tag name for menu-icon-cannot-be-parsed. Thanks, Bill Allombert. (Closes: #399245) * checks/po-debconf{.desc,}: + [RA] Check for misnamed PO files in debian/po, which cause translations to be merged into the template with the wrong names and not found. Based on a patch by Thomas Huriaux. (Closes: #387360) * checks/shared-libs: + [RA] Calling ldconfig is also required for libraries installed in various subdirectories of its standard search path based on hardware capabilities. Reported by Aurelien Jarno. (Closes: #396278) * debian/rules: + [RA] Exclude testset/diffs/binary.c~ from dh_clean. * frontend/lintian: + [RA] Add --fail-on-warning option to exit with non-zero status if any warnings were found. Thanks, Daniel Bonniot. (Closes: #189656) * man/lintian.1: + [RA] Document --fail-on-warning. -- Russ Allbery Sat, 18 Nov 2006 17:21:22 -0800 lintian (1.23.25) unstable; urgency=low The "dependency and debconf" release * checks/debconf: + [CW] Don't trigger partially-translated-question when Choices-C exists but not Description-C. + [RA] Remove select-with-translated-default-field since there are cases where this is correct and we can perform a better check against the source package. Patch from Thomas Huriaux. + [RA] Fix Perl warnings when a template has no type. * checks/debdiff: + [RA] Remove the source-tar-is-posix-tar tag. This was only a problem for woody and earlier, and woody support is no longer needed. Reported by Loïc Minier. (Closes: #385833) * checks/fields{.desc,}: + [RA] Improve the long descriptions of the warnings about dependencies on essential or build-essential packages to make it clearer that the correct resolution is normally to omit the dependency and why. + [RA] Add a check for duplicate build dependencies. (Closes: #359178) * checks/files: + [RA] Don't consider files named license.rb to be extraneous licenses. Patch from NIIBE Yutaka. (Closes: #387269) * checks/init.d: + [RA] Correctly handle LSB keywords which are present but have an empty value. Reported by Erich Schubert. (Closes: #386968) * checks/lintian.desc: + [RA] Add tags for missing and bad Urgency fields in *.changes files. + [RA] Improve the no-description-in-changes-file information. * checks/md5sums: + [RA] aspell dictionary packages may ship files in /var/lib/aspell that should not have MD5 checksums in md5sums because they change after installation. Don't complain that those files are missing. * checks/po-debconf: + [RA] Avoid Perl warnings on .po files that don't contain msgstr lines. Patch from Thomas Huriaux. (Closes: #387357) + [RA] Check templates for a translatable Default or DefaultChoice field and warn if there isn't a translator comment. Patch from Thomas Huriaux. (Closes: #388824) * checks/scripts: + [RA] Add /usr/bin/gosh from the gauche package to the list of valid interpreters. Thanks, Tatsuya Kinoshita. (Closes: #386798) + [RA] Add a separate tag for tclsh dependencies to explain about the virtual package and improve the description of the wish virtual package in its tag. Fix inverted logic that got the wish dependency backwards. Reported by Hamish Moffatt. (Closes: #387845) + [RA] Allow tcsh to satisfy a csh dependency. Reported by Yann Dirson. (Closes: #389615) + [RA] Improve the check for shell scripts that are actually exec wrappers around scripts written in another language. + [RA] Allow update-inetd to fulfill the dependency requirements for the update-inetd script. Thanks, Michael Holzt. (Closes: #389960) * frontend/lintian: + [RA] Check the existence and value of the Urgency field in *.changes files. (Closes: #384219) * lib/Dep.pm: + [RA] Improve the dependency resolution engine so that it can prove aa|bb implies aa|bb|cc. Fix the comparison of dependencies for inverse implication to catch many more cases. (The latter code isn't currently used in lintian.) + [RA] Add an unparse function to take an internal representation and convert it back to human-readable text. + [RA] Significantly improve and rewrite the get_dups function to only find relations that imply each other and to return the complete duplicate dependencies in sets. * man/lintian.1: + [RA] Document setting TMPDIR to change the location of lintian's temporary lab. (Closes: #388786) -- Russ Allbery Sun, 8 Oct 2006 12:57:05 -0700 lintian (1.23.24) unstable; urgency=low The "LSB init script" release * checks/control-files: + [RA] perm2oct definition moved to Util.pm. * checks/cruft{.desc,}: + [RA] Remove the (info-level) check for .cvsignore files in the source tarball. This isn't an error; those files contain metadata that may be useful for people making modifications and it's quite common to distribute them. * checks/debconf{.desc,}: + [RA] Diagnose unknown priorities in db_input and db_text invocations. Patch from Thomas Huriaux. (Closes: #386014) * checks/fields{.desc,}: + [RA] Depending on versioned variants of python-minimal is also an error. Thanks, Adeodato Simó. (Closes: #384476) * checks/files: + [RA] perm2oct definition moved to Util.pm. * checks/init.d{.desc,}: + [RA] Added a warning for init scripts missing an LSB keyword section, checks of the syntax of such a section if present, and some basic semantic checks of the easiest fields. Based on initial work by Carlos Villegas. (Closes: #377740) * checks/menus: + [RA] perm2oct definition moved to Util.pm. * checks/scripts: + [RA] Properly concatenate the dependencies for a package when checking whether the dependency for an interpreter is included. Thanks, Vincent Danjean. (Closes: #385178) * checks/shared-libs: + [RA] perm2oct definition moved to Util.pm. * lib/Util.pm: + [RA] Move perm2oct to here and improve recognition of s, S, t, and T characters. Thanks to Justin B. Rye for patch. (Closes: #376119) -- Russ Allbery Mon, 4 Sep 2006 12:03:16 -0700 lintian (1.23.23) unstable; urgency=low The "new Python policy" release * checks/binaries.desc: + [RA] Greatly expand the binary-or-shlib-defines-rpath long description based on recent discussion in debian-policy. Add a reference to the wiki page. (Closes: #378054, #378055) * checks/changelog-file{.desc,}: + [RA] Diagnose changelog files that are symlinks, using the new way the changelog-file collection script processes them. * checks/common_data.pm: + [RA] Add Python-Version as a known source and binary field. * checks/copyright-file: + [RA] Catch "" as well as the string without "http/". Thanks, Jari Aalto. (Closes: #374167) * checks/deb-format{.desc,}: + [RA] Remove deb-created-with-broken-tar; the bug was actually in dpkg, and the dpkg in stable has been fixed. Thanks Jari Aalto and Thijs Kinkhorst. (Closes: #375638, #376030) * checks/debconf: + [RA] Diagnose a missing template description only once and avoid Perl warnings. Thanks, Thomas Huriaux. (Closes: #377654) * checks/debhelper: + [RA] Use the standard control file parser rather than a custom parser that can't handle continuation lines. + [RA] Warn if dh_python is used without debian/pycompat in non-CDBS packages and check for the debhelper version required for Python policy. Thanks, Raphaël Hertzog. (Closes: #375318) * checks/fields{.desc,}: + [RA] Don't warn virtual-package-depends-without-real-package-depends for Recommends and rewrite the tag description to be more accurate. Thanks to Martin F. Krafft for the report. (Closes: #370720) + [RA] ~ is now permitted in version numbers. (Closes: #381965) + [RA] Catch and check dependencies correctly for debconf-updatepo run from the clean target. Thanks, James Westby. (Closes: #380399) + [RA] Warn when encountering an aspell dictionary package that isn't arch: all. Thanks, Piotr Engelking. (Closes: #374899) + [RA] Check the syntax of the new Python-Version field. + [RA] Check for missing build dependencies on python-central or python-support. Thanks, Raphaël Hertzog. + [RA] Check for old << dependencies on Python in Python packages that lack a Python-Version control field, as these are probably packages that don't follow the new Python policy. Thanks, Raphaël Hertzog. * checks/files{.desc,}: + [RA] Provide a better explanation of why Debian packages shouldn't ship files in /srv. (Closes: #379176) + [RA] Warn about files installed into /etc/gconf/schemas. + [RA] Warn about files in /usr/lib/site-python. Thanks, Thomas Viehmann and Raphaël Hertzog. (Closes: #372748) * checks/manpages{.desc,}: + [RA] Warn about manpage short descriptions of the form "manual page for program" (usually generated by help2man). * checks/menu: + [RA] Ignore trailing whitespace in doc-base files. Patch from Bas Zoetekouw. (Closes: #379749) * checks/nmu{.desc,}: + [RA] When checking for an NMU changelog entry, require "NMU" be surrounded by word boundaries. + [RA] Warn if the changelog incorrectly indicates an NMU. Thanks to George Danchev for the report. * checks/scripts{.desc,}: + [RA] Except mkstemp from possibly-insecure-handling-of-tmp-files for maintainer scripts written in Perl. + [RA] Mention [[ ]] explicitly in the possible-bashism long description as requiring a Korn shell and make it clearer that the primary arbiter of this test is the POSIX shell specification. (Closes: #381800 by clarification) + [RA] Use the Dep library to check dependencies. Add php5 to the interpreter list and correctly handle the dependencies for version-less PHP scripts. (Closes: #379558) + [RA] Check for proper dependencies if gconf-schemas is called in maintainer scripts and diagnose calling gconftool(-2) directly. Thanks, Josselin Mouette. (Closes: #333311) * checks/version-substvars{.desc,}: + [RA] New check from Adeodato Simó for proper use of substvars for versioned dependencies between packages built from the same source package so that NMUs will work properly. Also catch use of such a substvar for a versioned dependency on a package not built from the same source. (Closes: #377141, #376596) * collection/changelog-file: + [RA] Be much more careful about changelog files that are symlinks. Don't skip over changelog symlinks just because they point to non-existant files, mark unsafe symlinks or symlinks to non-existent files by creating copyright as a symlink to a non-existent file in the lab, and don't create an empty dummy changelog if we couldn't find a changelog. Correctly handle changelog files that are symlinks to other files in the same directory. * debian/copyright: + [RA] Add Subversion repository location. * frontend/lintian: + [JvW] Give error if there is no "Description" field in .changes, this is required by dak * frontend/lintian-info: + [RA] Add the -t or --tags option that, given a tag name, prints out the description. (Closes: #376109) * lib/Tags.pm: + [RA] If a tag has been overriden via any mechanism, do not add it to any of the statistics (tag, severity, or significance). Before, the override only suppressed a record for the specific statistic the override was based on, meaning that classic tag-based overrides didn't suppress severity statistics. Overridden error tags would therefore cause lintian to exit with non-zero status. Thanks, Andree Leidenfrost and Martin F. Krafft. (Closes: #377182, #374314) * man/lintian.1: + [RA] Better document the --archivedir and --dist options and how lintian constructs the path to an archive. (Closes: #383203) + [RA] Document new version-substvars check script. * man/lintian-info.1: + [RA] Document the new -t or --tags option. * reporting/html_reports: + [RA] Include the lintian version in HTML page footers. Thanks, Thijs Kinkhorst. (Closes: #377616) -- Russ Allbery Mon, 21 Aug 2006 10:28:14 -0700 lintian (1.23.22) unstable; urgency=low * checks/debconf: + [JvW] Teach lintian to know about the 'error' debconf template question type. (Closes: #374399) + [RA] Exclude debconf templates with "for internal use" in the short description from style checks and document this in the log description of the tags most likely to trigger on internal templates. (Closes: #368206) * checks/common_data.pm: + [RA] Add amd64 to the standard architectures. (Closes: #367324) * checks/debhelper: + [RA] Use the Dep library to check debhelper build dependencies rather than parsing Build-Depends with regexes. This avoids false positives due to matching package names ending in debhelper. Reported by Fabio Tranchitella. (Closes: #366531) * checks/fields: + [RA] Allow build-depend on quilt if clean depends on the xsfclean rule, for packages maintained by the X Strike Force. + [RA] CDBS packages that use the python-distutils class should list Python in Build-Depends, not Build-Depends-Indep, since CDBS wants to use it in debian/rules clean. Thanks, Jan Lübbe. + [HE] Add check for build-deps on build-essential. Yes, people do that. + [RA] Recognize direct invocations of quilt in clean rules and allow Build-Depends on quilt in that case. Reported by Sam Hocevar. (Closes: #374878) + [RA] Fix handling of versioned Build-Depends to avoid spurious build-depends-without-arch-dep warnings. Reported by Marcus Better. + [RA] Don't require Build-Depends on perl even if run explicitly in debian/rules clean, since perl-base may be sufficient. Catch more ways perl could be run, including the common idiom for packages that use Build.PL. + [RA] Downgrade build-depends-without-arch-dep to info from warning. Policy doesn't require using Build-Depends-Indep for arch-independent packages and the test has a lot of false positives. + [RA] Require ant in Build-Depends when using the CDBS ant rule. + [RA] Bypass the build-depends-without-arch-dep check entirely when using ant, since determining which Java dependencies are then permissible in Build-Depends is too complex to do a proper job. Reported by Peter Eisentraut. (Closes: #372190) + [RA] Only allow patch in Build-Depends for yada unpatch, don't require it, since yada depends on patch. (Closes: #375479) * checks/po-debconf: + [RA] Don't consider templates.in to be a stray translated template file. Thanks, Thomas Huriaux. (Closes: #367534) * lib/Util.pm: + [RA] Pass the --wildcards option to tar, now required by a change in the default tar semantics. (Closes: #375246) -- Russ Allbery Tue, 27 Jun 2006 17:50:05 -0700 lintian (1.23.21) unstable; urgency=low * checks/menus: + [RA] Tell Perl where common_data.pm is since we're now including it. Doh. Thanks, Nelson A. de Oliveira. (Closes: #366481) -- Russ Allbery Mon, 8 May 2006 18:52:45 -0700 lintian (1.23.20) unstable; urgency=low The "Policy backlog clearing is a wonderful sight" release * checks/debconf{.desc,}: + [RA] Add checks for the Developer's Reference guidelines for debconf templates. Based on a patch by Thomas Huriaux. (Closes: #362145) * checks/fields{.desc,}: + [RA] xfonts-encodings is also not an xfont package. Thanks, Drew Parsons. (Closes: #365503) + [RA] Report errors for dependencies on python-minimal. Thanks to Steve Langasek for the analysis. + [RA] Allow a build-dependency on patchutils when using CDBS with one of the patch systems, as patchutils may be optionally used to check for bad patches. Thanks, Marc Dequènes (Duck). (Closes: #365466) + [RA] Since some packages should be in Build-Depends and some should be in Build-Depends-Indep, report all of the misplaced ones rather than just the first one. That way, users know which to move. + [RA] Allow perl in Build-Depends if invoked in clean rules. + [RA] Allow patch in Build-Depends if yada unpatch is invoked in clean rules. * checks/files{.desc,}: + [RA] Add an explicit check for non-world-readable executables to provide a more detailed explanation and tighten the accepted permissions of setuid and setgid executables to just the permissions mentioned in Policy 10.9. Add Policy 10.9 references to the descriptions. Reported by Piotr Engelking. (Closes: #365452) + [RA] Add a request to the descriptions of setuid and setgid tags to add a lintian override for documentation if the permissions are intentional. + [RA] Report a more specific tag for binaries that are owned by group games but are not setgid. + [RA] Remove the check for files in /usr/lib/cgi-bin. This policy change was reverted. + [RA] Allow files installed in /usr/include/X11 and /usr/lib/X11 but require Pre-Depends on x11-common (>= 1:7.0.0). Remove the duplicate check for files in /usr/bin/X11 since it no longer adds additional information. * checks/menus{.desc,}: + [RA] Check that all files referenced in doc-base control files are present in the package, based on a patch by Robert Luberda. Also check that Index references only one file and that Format names a known format. (Closes: #196122) + [RA] Fix incomplete diagnosis of missing calls to update-menus. + [RA] Change postrm to prerm in the check for a useless install-docs call; calling install-docs in postrm is always a warning and useless calls in prerm were not being diagnosed. * checks/po-debconf{.desc,}: + [RA] Exempt packages that use yada from the POTFILES.in check and from checking for up-to-date templates, since yada does this at build time. Reported by Piotr Roszatycki. (Closes: #321139) + [RA] Check for stray debconf-mergetemplate files in packages using po-debconf. Thanks, Martin Quinson. (Closes: #232442) + [RA] General cleanup of tag descriptions for grammar and markup. Move man page references into Ref fields. * checks/shared-libs.desc: + [RA] Document that exceptions to the -fPIC rule for shared libraries are possible and ask that such exceptions be documented with lintian overrides. * checks/standards-version: + [RA] Update to 3.7.2. (Closes: #366233) + [RA] Report the current standards version when warning about too old or too new versions. Thanks, Jari Aalto. (Closes: #366104) * debian/control: + [RA] Update standards version to 3.7.2 (no changes required). + [RA] Update description to note calibration for Policy 3.7.2. -- Russ Allbery Mon, 8 May 2006 13:22:03 -0700 lintian (1.23.19) unstable; urgency=low The "Policy 3.7.0" release * checks/fields{.desc,}: + [RA] python-all-dev also satisfies dh_python's requirements. Thanks, Marc Dequènes (Duck). (Closes: #364943) + [RA] Allow python in Build-Depends if it's invoked explicitly in the clean rule. Thanks, Marc Dequènes (Duck). (Closes: #365030) + [RA] Recognize the CDBS included rule files that indicate dpatch or quilt will be used, check those dependencies, and require that they be in Build-Depends since they're used for clean. Thanks, Marc Dequènes (Duck). (Closes: #365041) * checks/files{.desc,}: + [RA] Add the references to Policy for the deprecation of X11R6 directories now that Policy has been updated in 3.7.0.0. + [RA] Policy now mandates FHS 2.3. Update tag descriptions. + [RA] Warn about files installed in /usr/lib/cgi-bin. Policy now states they should be installed in /usr/lib/cgi-lib. + [RA] Warn about scripts installed on the user's PATH with names that include language extensions (.sh, .pl, .py), per Policy 10.4. + [RA] Report directories under /usr/share/man that don't match the directory layout specified in the FHS. (Closes: #176683) + [RA] Fix a very long-standing bug that caused the check for executable manpages to be silently skipped. * checks/scripts: + [RA] Debian etch release policy explicitly forbids scripts without #! magic and they rely on being run from a shell. Revert the change that permitted the Perl magic without a #! line. Thanks to Piotr Engelking and Steve Langasek for pointing this out. + [RA] Don't syntax-check *.dpatch scripts in /usr/src. bash -n doesn't stop at exit 0 and then may choke on the patch. Thanks, Matthias Klose. (Closes: #364521) * checks/scripts.desc: + [RA] Using invoke-rc.d is now required by Policy. * checks/standards-version: + [RA] Update to 3.7.0. * debian/control: + [RA] Update standards version to 3.7.0 (no changes required). + [RA] Update description to note calibration for Policy 3.7.0. -- Russ Allbery Sat, 29 Apr 2006 01:06:59 -0700 lintian (1.23.18) unstable; urgency=low The "brown paper Python" release * checks/fields{.desc,}: + [RA] Redo handling of build dependencies to allow a custom tag to be specified and to allow a general dependency string to be required rather than a simple package name. As a result, dh_python handling is no longer a buggy special case. Allow either python or python-dev for dh_python and the cdbs Python rules. Thanks, Torsten Merek and Aaron M. Ucko. (Closes: #364297, #364330) + [RA] Require at least quilt 0.40 if /usr/share/quilt/quilt.make is included. Thanks, Michele Baldessari. + [RA] Packages using dh_installxfonts must build-depend on 5.0.31 or later of debhelper for the X.Org 7 transition. -- Russ Allbery Sat, 22 Apr 2006 16:17:14 -0700 lintian (1.23.17) unstable; urgency=low The "happy Nanaimo hacking" release * checks/binaries: + [RA] Detect klibc binaries from their requested interpreter and allow them to appear static. (Closes: #328850) * checks/common_data.pm: + [RA] Include all combinations of cpu and os from the dpkg cputable and ostable files (as of dpkg 1.13.16). (Closes: #337034, #357433) + [RA] Include a list of known X metapackages. * checks/control-file{.desc,}: + [RA] Warn if debian/control in a source package is a symlink. * checks/copyright-file{.desc,}: + [RA] Don't assume mentions of GPL or GNU General Public License after what look like mail headers are referring to the license of the package. Be a bit more specific in the old FSF address check to avoid false positives on other Cambridge, MA addresses. Reported by Adam C. Powell IV. (Closes: #205934) * checks/debconf: + [RA] Allow Indices as a template field. cdebconf uses it and debconf ignores it. Reported by Frans Pop. (Closes: #361986) * checks/debdiff{.desc,}: + [RA] Warn if the diff contains debian/substvars. Based on a patch by Michael Ablassmeier. (Closes: #359646) * checks/debhelper.desc: + [RA] When explaining the warning about deprecated debhelper compatibility versions, mention that debhelper defaults to version 1 if not set anywhere. (Closes: #360711) + [RA] Move simple man page references from Info into Ref. * checks/fields{.desc,}: + [RA] Allow dpatch in Build-Depends for arch-independent packages if it is invoked in clean, build-arch, or binary-arch. + [RA] Only list examples of non-standard architectures, since there are now too many combinations to list completely. + [RA] Catch dependencies on X metapackages, based on a patch by Josh Triplett. No packages are allowed to build-depend, and only packages that look like metapackages (arch: all, no files outside of /usr/share/doc) are allowed to depend. (Closes: #347169) + [RA] Look for an explicit section of unknown, probably left over from dh_make templates, and diagnose it with an error rather than a warning. Reported by Jari Aalto. (Closes: #355032) + [RA] Reorganize dependency checking based on debian/rules analysis. Diagnose missing build dependencies on the helper packages we know about, catch cases where Build-Depends-Indep should be Build-Depends because of the clean target, and make sure users of dh_python build-depend on python. yada is no longer a special case. (Closes: #242789, #278290) + [RA] Check for conflicting with dependencies and build-conflicting with build dependencies. (Closes: #122760) + [RA] Allow xfonts-utils in dependencies. It's not actually an X font package. * checks/files{.desc,}: + [RA] For the X.Org 7 transition, add explicit checks for fonts and binaries installed in /usr/X11R6. Rename the existing check for other files in /usr/X11R6 since the tag had a pluralization error and we want package maintainers to see the error again and reconsider whether to ignore it. No packages should be installing files in /usr/X11R6 going forward. Remove the policy cross-refs for right now until policy catches up. * checks/manpages: + [RA] Use system_env instead of system and sanitize the environment before running man -l out of caution and to avoid extraneous output when CDPATH is set. Reported by Marc Haber. (Closes: #360217) * checks/nmu{.desc,}: + [RA] Warn if debian/changelog in a native source package is a symlink and skip checks rather than aborting if it was a symlink to a file we didn't unpack. (Closes: #257650) * checks/po-debconf: + [RA] Use system_env instead of system out of caution and to avoid extraneous output when CDPATH is set. * checks/rules{.desc,}: + [RA] A new set of checks that parses debian/rules and checks for required rules, debian/rules as a symlink, and the correct first line. Based heavily on previous work by René van Bevern. (Closes: #294926, #311786) * checks/scripts{.desc,}: + [RA] Ignore text inside single quotes and, for most checks, text inside double quotes when checking for bashisms. Reported by Frank Küster. (Closes: #344266) + [RA] Change canonical zsh path to /bin/zsh at the request of the zsh maintainer. (Closes: #360534) + [RA] Change the check for broken error handling with invoke-rc.d to maintainer-script-hides-init-failure to be more generic and explain what the test looks at. Add the script name and line number and fix a typo. Thanks, Marc Haber. (Closes: #360214, #360216) + [RA] Warn when maintainer scripts run init scripts directly and don't use invoke-rc.d. Thanks, Lars Wirzenius. (Closes: #353659) + [RA] Find missing ucf dependencies and restructure the code to allow easier addition of similar checks. (Closes: #261891) + [RA] Add python2.5, lua50, gbx, and gbx2 to the list of valid interpreters. (Closes: #361601, #361644, #362566) * checks/shared-libs: + [RA] Limit shlib-without-PT_GNU_STACK-section to only those architectures where gcc always adds the section. Thanks to Frans Pop for the report and Bastian Blank for the architecture list. (Closes: #357636) * collection/objdump-info: + [RA] Unset CDPATH before running cd to avoid strange effects from the user's environment. + [RA] Run readelf -l to collect interpreter information. * lib/Dep.pm: + [RA] Add initial support for analyzing architecture information in dependencies instead of ignoring it. * lib/Read_taginfo.pm: + [RA] Add support for formatting man page references from Ref. * lib/Util.pm: + [RA] Add system_env, like system but sanitizing the environment. * man/lintian.1: + [RA] Mention the new rules check class. -- Russ Allbery Fri, 21 Apr 2006 09:36:34 -0700 lintian (1.23.16) unstable; urgency=low The "What's this Russ guy up to?" release * checks/binaries{.desc,}: + [RA] Add a check for the new "Invalid operation" error from objdump -T. Skip shared-lib-without-dependency-information for files in /usr/lib/debug. * checks/changelog-file: + [FL] Add line number to output of wrong-bug-number-in-closes. Inspired by #349761 from Steinar H. Gunderson. * checks/common_data.pm: + [FL] Add armeb to %non_standard_archs as requested by Martin Michlmayr. (Closes: #350653) * checks/debconf: + [RA] Packages that depend on dbconfig-common are allowed to have config scripts without templates or an explicit debconf dependency. Reported by Marcus Better. (Closes: #344421) * checks/debconf.desc: + [RA] Clarify the necessary dependencies for packages using SETTITLE. (Closes: #349616) * checks/debhelper: + [RA] Recognize setting DH_COMPAT with := in addition to = in debian/rules. (Closes: #349272) + [RA] CDBS sets DH_COMPAT to 4 but doesn't export it. It does create debian/compat with that value if none was present. Reflect this behavior to avoid spurious compat level warnings when using CDBS. Based on a patch by Jay Berkenbilt. (Closes: #350228) * checks/fields: + [RA] Allow a quilt build-dependency for arch-independent packages if the quilt makefile rules are included. (Closes: #349273) + [RA] If clean depends on a rule that calls dh_clean rather than calling it directly, still allow debhelper in Build-Depends for arch-independent packages. Reported by Michael Stilkerich. + [JvW] Commented that Uploaders no longer will hit the multiline field issue, updated testsuite accordingly * checks/manpages: + [FL] Ignore more warnings ("cannot adjust line", "can't break line") in non-English manpages. (Closes: #349792) + [RA] cd into the parent directory before checking man pages with man so that .so inclusions are processed correctly. Based on a patch by Nicolas François. (Closes: #349614) * checks/menu-format: + [RA] Look for binaries in /usr/X11R6/bin, not /usr/bin/X11, per Policy 11.8.7. Thanks, Matej Vela. (Closes: #354890) * checks/menu-format.desc: + [RA] Use "menu manual" rather than "menu" for references to more clearly distinguish from the Debian Menu Policy. (Closes: #347510) * checks/po-debconf: + [RA] If there are template files in debian, assume the package uses debconf; don't require a dependency or config script. Patch by Thomas Huriaux. (Closes: #353294) * checks/scripts: + [RA] Allow /tmp in variable settings. It's likely to be a false positive. Reported by Frank Küster. (Closes: #344998) + [RA] Make the syntax checking of shell scripts more robust against filenames containing shell metacharacters. Reported by Michael Stilkerich. + [RA] Add fish and expectk to the list of valid interpreters. (Closes: #351624, #353770) + [RA] /usr/bin/tcl is provided by tclx8.3, not tcl. Reported by James R. Van Zandt. (Closes: #351324) + [RA] Allow more variations on leading magic to invoke some interpreter rather than then shell. Bypass the ELF magic check for scripts using magic that relies on having no leading #! line. Reported by Frank Küster. (Closes: #344269) + [JvW] Add check against package suffering from debhelper bug #337664, per Joey Hess, which had broken error detection (Closes: #358523) * checks/shared-libs: + [JvW] Fix postinst-must-call-ldconfig to also get emitted when there is no postinst at all, instead of just one lacking a ldconfig call + [JvW] Implement checks for "udeb:" lines in shlibs files (Closes: #357541) + [JvW] Consider also the soname version for shlibs checking, preventing some bogus 'duplicate' warnings, and actually throw a warning when soname version doesn't match + [JvW] Added error when udeb postinst calls ldconfig, that must never happen (thanks to Frans Pop for noticing, see #203056) * debian/{control,copyright}: + [RA] Add Russ Allbery to Uploaders and copyright. + [JvW] Version dpkg-dev requirement to >= 1.13.17, for unpack/unpack-srcpkg-l2 * frontends/lintian-info: + [RA] Avoid Perl uninitialized value warnings when given output that looks like lintian messages without tags. (Closes: #352606) * collection/objdump-info: + [RA] Pass "Invalid operation" errors from objdump -T on to the check scripts instead of failing. (Closes: #249435) * man/lintian.1: + [RA] Add references to dh_make, debhelper, dpkg-buildpackage, and linda in new reference sections. (Closes: #322288) * man/{lintian.1,lintian-info.1}: + [RA] Left-justify and disable hyphenation for readability. * unpack/unpack-srcpkg-l2: + [JvW] Use -q with dpkg-source to surpress warnings about unsigned source packages. Requires dpkg-dev 1.13.17 -- Jeroen van Wolffelaar Sun, 26 Mar 2006 15:38:37 +0200 lintian (1.23.15) unstable; urgency=low * The "www.no-name-yet.eu" release * debian/changelog: + [FL] Fix wrapping of last changelog entry (Closes: #344899) * checks/common_data.pm: + [FL] Add xlibs-dev and debmake to %known_obsolete_packages * checks/debconf: + [CW] Show template name for empty-translated-choices, mismatch-translated-choices, and unknown-field-in-templates. * checks/debhelper: + [FL] Also check for debhelper build-dependency in debhelper-using cdbs based packages + [FL] Indicate where we found which compat version in declares-possibly-conflicting-debhelper-compat-versions (Closes: #329953) + [FL] Add dh_installtexfonts to list of commands that modfiy the maintainer scripts + [FL] Try a little harder to find the DH_COMPAT setting in debian/rules (Closes: #348380) * checks/fields: + [FL] Allow version numbers of 0 by correctly checking the output of _valid_version for definedness and not the boolean value (Closes: #345005) + [FL] Better check for false postives of build-depends-without-arch-dep. Should fix false positives for cdbs, dbs, dpatch and yada. Based on a patch by Russ Allbery (Closes: #344609, #321135, #339750) + [FL] Also check for build-dependencies on obsolete packages not only dependencies (Closes: #234531) * checks/fields.desc: + [JvW] Fix typo in description * checks/init.d: + [FL] Only try to validate update-rc.d calls where the name of the script matches [\w.-]+. That accounts for all today known init scripts and eliminates false positives like shell variables in the name (Closes: #343865) * checks/manpages: + [FL] Fix stupid mistake in regex to strip of filenames from roff output (which was hidden by another stupid mistake in the test suite). Patch by Nicolas François (Closes: #347999) * checks/scripts: + [FL] Make mknod-in-maintainer-script an error since this is now a must in policy. Pointed out by Bartosz Fenski (Closes: #344928) + [FL] dpkg --print-installation-architecture is deprecated so delete dpkg-print-architecture-in-maintainer-script + [FL] Add parrot to list of valid interpreters (Closes: #346335) -- Frank Lichtenheld Thu, 19 Jan 2006 15:13:02 +0100 lintian (1.23.14) unstable; urgency=low * The "fix those frontend regressions" release * frontend/lintian: + [FL] Fix exit status computing so that we exit with 1 again if we found any error. (Closes: #329458) + [FL] Re-enable reporting unused overrides. * lib/Tags.pm: + [FL] Some fixes to the statistics code to make the fixes in frontend/lintian possible * checks/binaries{.desc,}: + [FL] support c2a suffix in soname check, too (Closes: #340856) + [FL] fix typo in description of package-name-doesnt-match-sonames (Closes: #339360) + [FL] The Debian specific patches from coreutils to call strip with --remove-section arguments on install -s have been dropped. Adapt description of binary-has-unneeded-section accordingly and demote it to "info" because many packages will get this now. * checks/debconf{.desc,}: + [FL] drop seen-flag-requires-versioned-depends and multiselect-without-dependency and drop version requirement from missing-debconf-dependency-for-preinst. All due to the fact that woody shipped with 1.0.x and therefor versioned depends on versions lesser than that don't make much sense anymore (Closes: #333736) * checks/debhelper: + [FL] debhelper compat level 3 is deprecated as well now (Closes: #340222) * checks/files: + [FL] forgot /lib(32|64) (more #328612 fixes) * checks/menu-format: + [FL] Drop su-to-root-with-usr-bin and su-to-root-without-usr-sbin, and add su-to-root-with-usr-sbin to adapt to current menu package and policy (Closes: #332400) * checks/po-debconf: + [FL] Fix logical error in search for files (Closes: #342707) * checks/scripts{.desc,}: + [FL] Drop install-fvwmgenmenu as valid interpreter. Was dropped from menu package before sarge. (also for #332400, see checks/menu-format) + [FL] Change path for install-menu from /usr/sbin to /usr/bin (also for #332400) + [FL] Merge most of the wrong-path-for-* and *-script-but-no-*-dep tags to two tags wrong-path-for-interpreter and missing-dep-for-interpreter. This makes maintaining the list of valid interpreters way easier. Some tags with special text have been special cased (php\d? and (m|g)awk). + [FL] Add speedy and slsh to list of valid interpreters (Closes: #333955, #336700) * checks/shared-libs: + [FL] forgot /lib(32|64) (hopefully finally closes: #328612) -- Frank Lichtenheld Sun, 18 Dec 2005 02:04:46 +0100 lintian (1.23.13) unstable; urgency=low * The "doesn't contain all the fixes I would like but that's no reason to let the others wait forever" release * debian/control: + [FL] Fix typo in description. Noted by Bill Allombert (Closes: #327859) * checks/copyright-file: + [JvW] Demote FSF address check to warning * checks/description: + [HE] Change description-synopsis-is-duplicated to only be emitted if the synopsis is copied without being extended. (Closes: #316523) * checks/files: + [FL] Add some formats to the exception list for extra-license-file (jpe?g, gif and svg) (Closes: #324944) + [FL] Don't complain about lib(32|64) as unusual directories. Noted by Matthias Klose (partly fixes #328612, see checks/shared-libs for the rest) * checks/infofiles: + [FL] Don't issue install-info-not-called-with-section-option if the call in postinst is really a removal. Experienced by Ben Pfaff in autoconf (Closes: #329170) * checks/po-debconf: + [FL] Previously we only run the checks if we found a templates file and a debconf dependency. Since the latter is mostly generated by ${misc:Depends} nowadays, we now also run the checks if we find a templates and a config file. (Closes: #331672) * checks/scripts: + [FL] PythonX.Y dependency can also be satisfied with pythonX.Y-minimal. Noted by Matthias Klose (Closes: #326643) + [FL] Only match 'local' at the beginning of a line. The check is too ambigious otherwise. Reported by Marc Haber (Closes: #330548) + [FL] Better reflect the current discussions wether some of the XSI:sms should be allowed in shell scripts by moving some of them to a separate check possible-non-posix-code-in-maintainer-script. Not doing that for kill -NAME as reuqested since -s NAME is available and should be perfectly portable. (Closes: #323053) * checks/shared-libs: + [HE] Apply patch from Bastian Blank to check for executable stacks in binaries. New checks are called shlib-without-PT_GNU_STACK-section, shlib-with-executable-stack, thanks waldi. (Closes: #321750) + [FL] Add lib(32|64) to ldso directories. Pointed out by Matthias Klose (Closes: #328612) -- Frank Lichtenheld Thu, 13 Oct 2005 15:19:05 +0200 lintian (1.23.12) unstable; urgency=low * The "bad, bad SONAME check" release * all files: + [FL] Update FSF address * debian/control: + [FL] Depend on dpkg-dev since we use dpkg-source. How old exactly is this bug? (Closes: #324673) * checks/binaries: + [FL] Only use sonames from files in common library directories for the soname checks. This avoids many false positives. Patch by Russ Allbery (Closes: #321564) + [FL] Convert the SONAME to lower case before comparing with package name. Suggested by Josh Triplett (Closes: #321206, #325225) + [FL] Try to remove strings added for transition purposes from library package names before comparing package name with SONAME. Pointed out by Rene Engelhard (Closes: #322241, #324121) + [FL] Also remove -udeb strings and substitute lib64 with lib in package name before comparing with SONAME + [FL] Replace any occurence of _ in the SONAME with - since the former isn't allowed in package names but occasionally used in sonames + [FL] Remove trailing .so from SONAMEs + [FL] Also ignore static binaries in sub directories of /boot, not only in /boot itself. Patch by Guillem Jover (Closes: #320382) * checks/changelog-file: + [FL] Detect old FSF address additionally to the even older one * checks/{cruft,files}{,.desc}: + [FL] Also check for .arch-ids/ {arch}/ .arch-inventory and .bzr/ in packages and sources (Closes: #324255) * checks/debhelper{,.desc}: + [FL] Warn about using debhelper compat version lower than 3 like debhelper itself + [FL] Drop package-lacks-versioned-build-depends-on-debhelper tag for compat versions < 5. With debhelper 4 even in oldstable issuing an error here is silly + [FL] Fix typo (s,debian/control,debian/compat,) in description of declares-possibly-conflicting-debhelper-compat-versions * checks/description{,.desc}: + [FL] Avoid double warning about description-is-dh_make-template in the same way we do it for the corresponding debmake tag + [FL] Policy section of Description field has changed * checks/fields{,.desc}: + [FL] Fix a lot of off-by-one errors in the policy references (caused by the addition of the Uploaders field). Unknowningly pointed out by Russ Allbery + [FL] Also use non_standards_archs when checking source package relations. Patch by Russ Allbery (Closes: #322291) * checks/manpages: + [FL] Don't issue warnings about 8bit characters in translated man pages. Patch by Denis Barbier (Closes: #321650) * checks/scripts: + [FL] Don't issue bashism warning on POSIX character classes ([[:foo:]]). Noted by Stephen Gran (Closes: #323098) + [FL] Remove some useless groupings in the bashism regexes -- Frank Lichtenheld Sun, 28 Aug 2005 22:05:54 +0200 lintian (1.23.11) unstable; urgency=low * frontend/lintian: + [FL] Don't use dpkg --print-installation-architecture since it is deprecated, use dpkg --print-architecture instead. * debian/control: + [FL] Depend on libparse-debianchangelog-perl, require >= 0.6 since prior versions have bugs regarding parse error handling * checks/binaries: + [FL] Check that the package name of a shared library matches the SONAME as defined in the "Library Packaging guide" (Closes: #305575, #313118) * checks/changelog-file{,.desc}: + [FL] Use libparse-debianchangelog-perl to parse the changelog, which detects a lot of syntax errors + [FL] Add a new tag debian-changelog-file-missing-or-wrong-name which is issued if we found no Debian changelog but an upstream changelog since the further checks will treat the latter file as the Debian changelog and only issuing debian-changelog-file-missing would be confusing then (Closes: #285152) + [FL] Detect closes: statements with non-valid bugnumbers, suggested by martin f. krafft (Closes: #294409) * checks/common_data.pm: + [FL] Fix typo (hurd-386 -> hurd-i386) from last release that lead to spurious warnings about unknown architectures (Closes: #318110) * checks/control-file: + [CW] Break control paragraphs at lines containing only whitespace, not just on zero-length lines. (Closes: #319370) * checks/fields: + [FL] Actually mention which architecture we're complaining about * checks/manpages: + [FL] Report errors from man when parsing man pages. Based on a patch by Kevin Ryde (Closes: #285540) * checks/po-debconf: + [FL] Abort check if the package doesn't seem to use debconf to avoid false positives in case maintainers use debian/po for other Debian specific strings (Closes: #262749) * checks/scripts: + [FL] increase search limit for exec hack by not counting comments and empty lines (Closes: #294661) + [FL] detect more bashisms, suggested by Clint Adams and martin f krafft (Closes: #253498, #296233 and addresses #253012 partly). + [FL] Adjust check for positional arguments after ". file" to detect more shell control and piping commands that are all allowed. Noted by Thomas Hood. (Closes: #319212) * reporting/html_reports: + [FL] Fix counting of binary package names + [FL] Generate mostly valid HTML (id and name attributes still aren't valid in all cases) -- Frank Lichtenheld Mon, 11 Jul 2005 15:50:10 +0300 lintian (1.23.10) unstable; urgency=low * The "Ah, it's LinuxTag and I still have free time!" release * debian/control: + [HE] Updated description to say that we're calibrated for Policy version 3.6.2. As the changes between 3.6.{1,2} aren't stuff we (can) check, this is actually true! (Closes: #317049) * testset/runtests: + [HE] Fix symlinking of original tarballs to allow run directories outside the lintian source tree. * checks/control-file + [HE] Check for duplicated fields. (Closes: #299792) * checks/fields: + [HE] Change unknown-architecture a bit: We don't complain about "known" non-standard archs (like amd64, ppc64, *bsd-i386) and only print out an info message for those. (Closes: #253405, #311471) * checks/files: + [HE] Allow backupninja configuration files in /etc/backup.d/ to be 0600. (Closes: #307639) * checks/scripts: + [HE] Allow Scripts in /etc/Xsession.d/ to be not executable, as they're not directly called, but only sourced. (Closes: #309203) + [HE] Check for use of adduser and update-inetd and warn if the package has no (pre-)dependency on adduser/netbase. Patch by Russ Allbery, thanks for the work. (Closes: #308569) + [HE] Check for use of "." as a deprecated separator between user and group names in chown call. (Closes: #88340) + [HE] Fix to work $interpreter-script-but-no-$pkg-dep with more than one dependency if needed. First use case is depending on build-essential to provide /usr/bin/make. (Closes: #294894) + [HE] Add lefty as a valid interpreter and check for a correct dependency on graphviz. (Closes: #295093) * checks/shared-libs: + [HE] Don't allow non-PIC shared libraries. This conforms to the new etch release policy. Thanks for the report and patch to Kurt Roeckx . (Closes: #309220) -- Marc 'HE' Brockschmidt Sun, 10 Jul 2005 16:20:42 +0200 lintian (1.23.9) unstable; urgency=low * The "Wow, so much time at hand" release * [FL] Convert build process to debhelper - debian/rules - adapted - debian/compat - new - debian/dirs - new - debian/docs - new - debian/control - add build depends - debian/postinst - remove (Closes: #292981) - debian/conffiles- remove - debian/prerm - adapted * debian/control: + [FL] Update Standards-Version to 3.6.2 * checks/conffiles: + [JvW] Warn on /var files being a conffile too (Closes: #293443) * checks/debconf: + [FL] Also report postinst-does-not-load-confmodule and postrm-does-not-purge-debconf if the related files don't exist at all. Spotted by Gerfried Fuchs (Closes: #301056) * checks/menus: + [FL] New check menu-file-in-usr-lib because /usr/lib/menu is deprecated + [FL] Also find menu files in /usr/share/menu (Closes: #314187) + [FL] Rename executable-in-usr-lib-menu to executable-menu-file * checks/menu-format: + [FL] Adapt to changes in collections/menu-files * checks/standards-version: + [FL] Update to 3.6.2 (Closes: #314879) * collections/menu-files: + [FL] Also collect files from /usr/share/menu -- Frank Lichtenheld Fri, 17 Jun 2005 02:17:52 +0200 lintian (1.23.8) unstable; urgency=low The "Hm, this is the team's one year anniversery of maintaining lintian" release[1], and still using the "temporary" subversion repository... Featuring Steve "R." Langasek in a guest appearance. [1] http://lists.debian.org/debian-lint-maint/2004/01/msg00014.html * checks/*.desc,doc/lintian.sgml: + [JvW] Stop bugging us for exceptions, mmkay, just install overrides. Hints like this should be in the general documentation anyway, not in per-tag descriptions. The general documentation will now only ask to contact us if in doubt * checks/changelog-file{,desc}: + [JvW] (new test) Bark on @toplevel email signatures in changelogs + [JvW] Display invalid debmake email address upon detection * checks/common_data.pm: + [CW] Add tclx8.4 to %known_tclxs. * checks/description: + [SRL] Do not generate warnings when a short description starts with an article; this is good grammar and should not be discouraged. (Closes: #290505) + [JvW] Drop description-synopsis-starts-with-a-capital-letter by popular demand (Closes: #288568) * checks/files{,.desc}: + [JvW] Warn only for hardlinks in /etc or amongst different directories (Closes: #288634) + [JvW] Only check for desktop files in GNOME's and KDE's obsolete places, not in all the package, as KDE uses .desktop files also for other purposes (Closes: #289773) * checks/nmu.desc: + [JvW] Be more precise in explaining why lintian thinks this is a NMU, and copy explanation to changelog-should-mention-nmu * checks/scripts{,.desc}: + [CW] Add checks for tclsh8.4 and wish8.4. (Closes: #288287) -- Jeroen van Wolffelaar Mon, 31 Jan 2005 23:14:01 +0100 lintian (1.23.7) unstable; urgency=high * lib/Lab.pm: + Fixed creation of static lab if the directory already existed, this failed in 1.23.6 + In temporary lab mode, try to create the directory several times before giving up * testset/runtests: Extend the static lab test -- Frank Lichtenheld Sat, 8 Jan 2005 21:41:21 +0100 lintian (1.23.6) unstable; urgency=low The "Let's see if I can upload myself now" release, made by Marc, Frank and Colin, uploaded by Jeroen. * checks/description + [HE] Warn if the short description start with an article or a capital letter. Patch by Tobias Toedter , thanks. (Closes: #258824) * checks/fields: + [HE] Warn if the debian revision has three parts, as this is the sign of a binary NMU. New check's name is binary-nmu-debian-revision-in-source. (Closes: #244830) + [HE] Warn if people use the Bugs field to refer to the Debian BTS, the new check is called redundant-bugs-field. (Closes: #245883) * checks/files: + [HE] Check that .desktop files are placed in /usr/share/applications. This seems to be the standard place for those files that are used to create menus. The check is called desktop-file-in-wrong-dir. (Closes: #200171) * checks/manpages: + [HE] Don't compare the manpage filename extension and the content of .TH case-sensitive. Report + patch by Jay Berkenbilt , thanks. (Closes: #285335) + [HE] Emit binary-without-english-manpage if a package only provides translated manpages for a binary. (Closes: #259227) + [HE] Skip all comment lines when checking for .so links in manpages. Thanks for the report and fix suggestion to Steinar H. Gunderson . (Closes: #284662) * checks/md5sums: + [HE] Strip off ./ at the beginning of the filenames in md5sums files (this seems to happen on some systems, though we don't know how). (Closes: #284728) * checks/standards-version: + [CW] By definition, udebs aren't required to conform to policy, so don't issue no-standards-version-field for them. (If they happen to have a Standards-Version field anyway, we still check that it's valid.) * lib/Lab.pm, frontend/lintian: SECURITY (CAN-2004-1000): + [FL] Overhaul lab directory handling. This also fixes the issue of removing a lab that never was created (Closes: #286681) -- Debian Lintian Maintainers Mon, 27 Dec 2004 05:40:13 +0100 lintian (1.23.5) unstable; urgency=low The "learn how to use intltool-debian correctly the hard way" release * checks/po-debconf: Set INTLTOOL_EXTRACT to fix invocation of intltool-update (Closes: #285419, #285471) -- Frank Lichtenheld Mon, 13 Dec 2004 18:16:52 +0100 lintian (1.23.4) unstable; urgency=low The "A little pause from the sarge release work" release. * checks/changelog-file: + [FL] file has apparently changed its output format for symlinks sometime in the past. This broke symlink detection. (Closes: #276504) * checks/deb-format, unpack/unpack-binpkg-l1, unpack/unpack-binpkg-l2: + [CW] Fix binary package data member extraction to work with arbitrary compression algorithms instead of hardcoding data.tar.gz. * checks/debconf{,.desc}: + [FL] The SETTITLE command was introduced in debconf version 1.3.22. Check the depends for that (Closes: #261890) + [FL] Warn about incorrect usage of commas in translated Choices fields. Patch by Denis Barbier after a suggestion by Andreas Metzler (Closes: #282030) * checks/debhelper: + [FL] Update list of debhelper scripts that modify maintainer scripts * checks/menu-format.desc: + [FL] Adjust references to the menu documentation. Noted by Jack Moffitt (Closes: #277393) * checks/po-debconf{,.desc}: + [FL] Check for outdated .pot files when using po-debconf. This requires a new dependency on intltool-debian. Patch by Denis Barbier with corrections by JvW (Closes: #242345) * checks/scripts{,.desc}: + [FL] Fix copy-and-paste error in description of wrong-path-for-gnuplot (Closes: #276945) Thanks to Lionel Elie Mamane for reporting. + [FL] Add tclsh8.3 to list of valid interpreters as it is used in at least one package. (Closes: #280080) + [FL] Issue wrong-path-for-{ruby,python} even if the path contained a version number. Change the description of the tag to reflect that. (Closes: #257904) * frontend/lintian-info: + [FL] Overrides start with O:, not with 0:, d'oh! (Closes: #258815) * lib/Tags.pm: + [FL] Add missing "use Util;", noted by Robert Luberda (Closes: #278513) * testset/debconf/*,testset/tags.debconf: + [FL] New test package for debconf and udeb tests * testset/diffs: + [JvW] Remove the shipped ELF binary, can be compiled at test-time * testset/runtests: + [FL] Make checks of udeb packages possible -- Frank Lichtenheld Mon, 6 Dec 2004 01:41:21 +0100 lintian (1.23.3) unstable; urgency=low The ``the others must be busy releasing Sarge or something'' release, prepared by yours truly * checks/conffiles.desc: + Note the most likely cause for duplicate-conffile in the description (thanks Chris Anderson for running into this problem and asking me about it) * checks/copyright-file: + Revert the extra pedantic check introduced in 1.23.0 that complained about unstrict dependencies when one as a /usr/share/doc/ that is a symlink (Closes: #249414) * checks/debconf: + Don't warn when the Choices field of a debconf question is not translated, often it makes no sense to translate it (Closes: #262649) * checks/debhelper: + dh-make also creates sample files named .EX, so make that check case-insensitive (Closes: #251262) * checks/fields.desc: + Adjust package-has-a-duplicate-relation to warning, and note that this sometimes happens to you when using ${shlibs:Depends}, and you shouldn't bother too much if that's the case (Closes: #274286) Thanks Peter Eisentraut for the suggestion + Fix English language depends-on-essential-package-without-using-version, thanks to Peter Eisentrautf for noticing (Closes: #261603) + [FL] Clone depends-on-essential-package-without-using-version as build-depends-on-essential-package-without-using-version to give correct policy reference (Closes: #261602) * checks/init.d: + Don't warn for missing init.d scripts in package and conffile list if a variable is used instead of a real name (Closes: #264218) * checks/manpages.desc: + Demote binary-without-manpage to warning, and adjust description, to be consistent with policy, which says a manpage should be available (and doesn't use "must" for it). Thanks to Robert Millan for his patch (Closes: #271014) * checks/nmu.desc: + Note in source-nmu-has-incorrect-version-number's description that the mistake could also be the other way around (Closes: #258604) * checks/po-debconf: + Don't give missing-file-from-potfile-in on empty lines (Thanks Adam Conrad for noticing) * checks/scripts: + The php commandline interpreter is now provided by php4-cli, and not php4-cgi, update dependency check accordingly (Closes: #268077) + Give an error if the 'config' script uses a non-essential interpreter (Closes: #274832) * checks/shared-libraries: + Ignore comments in shlibs files (Closes: #275124) * doc/lintian.sgml: + Document that you can use comments in overrides (Closes: #87805) * frontend/lintian: + Fix overrides so that they allow all of (1) :, (2) :, and (3) as prefix to tags you want to override, and modify documentation accordingly. This used to be buggy (Closes: #261435) -- Jeroen van Wolffelaar Wed, 13 Oct 2004 02:45:36 +0200 lintian (1.23.2) unstable; urgency=low * The "of course it had to go wrong on my first own lintian upload" release. * Tigthen versioned Build-Depends on sed to (>= 4.1-4) to avoid be hitten by a bug in sed that changes the permissions of files when processed with sed -i (Closes: #259109) -- Frank Lichtenheld Tue, 13 Jul 2004 13:36:45 +0200 lintian (1.23.1) unstable; urgency=low The ``Now featuring over 500 checks'' release, prepared by the usual suspects. * checks/*: + [JvW] Changed from executables to check-plugins + [HE] Drop the misuse of charset when we want to say "encoding". Renamed 2 tests for that: unknown-charset-in-po-file -> unknown-encoding-in-po-file debian-changelog-file-uses-obsolete-national-charset -> debian-changelog-file-uses-obsolete-national-encoding (Closes: #248194) * checks/binaries: + [FL] Change check for binary-compiled-with-profiling-enabled on hppa to look for _mcount instead of __gmon_start__ since the latter can't be used as an indicator on that arch (Closes: #207063) + [JvW] Exempt ocaml binaries from the 'is the binary stripped?' test, since they cannot be stripped harmlessly. See #256900 (Closes: #252695) + [JvW] Parse the output of file a little bit more strict, and make it consequent across checks (Closes: #257898) * checks/changelog-files{,.desc}: + [HE] New check latest-debian-changelog-entry-without-new-date, comparing the dates of the last 2 changelog entries. (Closes: #111215) + [FL] New tag invalid-date-in-changelog which is issued if latest-debian-changelog-entry-without-new-date encounters a parse error * checks/common-data.pm: + [JvW] Add libgl(u)-dev to list of virtual packages (Closes: #255595) + [JvW] Added amd64 to list of known architectures, as the name has settled and it'll likely enter the archive soonish (Closes: #257503) * checks/control-file{,.desc}: + [HE] Introduced new check script. New checks: - build-info-in-binary-control-file-section, triggered by a Build-* field in a binary section (Closes: #94928) - debian-control-file-uses-obsolete-national-encoding, stolen from changelog-file (Closes: #247197) * checks/cruft{,.desc}: + [JvW] cvsignore-file-in-source is now info, because it happens so often by upstream, and is only very minor in size + [HE] New check: source-contains-cvs-conflict-copy, triggered by .#file.version files. They are created by cvs when it tries to merge local changes and an update from the repo. (Closes: #246060) + [JvW] Also check for source-contains-svn-conflict-copy (for .r123 and .mine files) * checks/debhelper: + [FL] Avoid Perl warning about undefined values. Noted by JvW. * checks/fields{,.desc}: + [JvW] Added debian-revision-should-not-be-zero, suggested by Adam Conrad + [FL] Downgrade build-depends-without-arch-dep to warning as it's heuristic. Reword explanation. This partly handles #247171. + [JvW] For build-depends-without-arch-dep, fix detection of debhelper usage in clean when used by means of CDBS (combined with above change, now fully closes: #247171) + [HE] Check Build-Depends(-Indep) for virtual packages without a real dependency. Fix based on patch by Steinar H. Gunderson . (Closes: #255593) + [HE] Don't issue virtual-package-depends-without-real-package-depends if this happens in Suggests. (Closes: #254367) + [FL] Allow whitespace in relations after the version number * checks/huge-usr-share: + [FL] Skip check for packages that don't have usr/share at all (Closes: #247708) * checks/manpages: + [FL] Comment check for no-manpage-in-correct-directory out until I know if it's worth keeping it at all (Closes: #253011) Thanks to Stephen Stafford for pointing this out. * checks/menus: + [FL] Fix regex which checks for update-menus calls (missing whitespace) and allow path before executable name (perhaps this should be another warning, though?) (Closes: #254420) + [FL] Some clean-up and warn that wm-menu-config is deprecated (Closes: #248997) + [FL] Demote executable-in-usr-lib-menu to warning as executables are supported (but seldomly used) (Closes: #254498) * checks/menu-format: + [FL] Fix su-to-root checks to cope with the new -X option and improve the option parsing to better handle unknown options + [FL] Allow a comma separated list in the package test. Pointed out by Gerfried Fuchs (Closes: #246507) Change incorrect-package-test to pkg-not-in-package-test which is issued when the package is not in the list. Don't issue menu-command-not-in-package when we have a list. + [FL] Commands for window manager's modules can't be expected to be available as executables, so don't issue menu-command-not-in-package in this case. Thanks to Manoj Srivastava for reporting (Closes: #247805) + [HE] Change menu-command-not-in-package to also look into the standard PATH. (Closes: #255155) * checks/po-debconf: + [JvW] Simply fail if stuff from gettext is missing. * checks/scripts: + [FL] Don't issue executable-not-elf-or-script for files that are named *.exe (Closes: #251075, #255083) + [CW] Add python2.4 as a valid interpreter (Closes: #254482) + [FL] Add ruby1.[68] as valid interpreters, introduce new ruby-script-but-no-ruby-dep error, copied from the python stuff + [FL] Don't issue script-not-executable for menu-methods. There are reasons why they are sometimes not executable (Closes: #250632) + [FL] 'and' and 'or' are no bash keywords (Closes: #194283) * checks/shared-libs: + [FL] Don't report shlib-with-executable-bit and shlib-with-bad-permissions on symbolic links to such files + [JvW] Fix the pic-detection code (Closes: #185816) * debian/{control,rules}, frontend/lintian: + [JvW] Insert version number at package build time, no need to commit a change to frontend/lintian on every version number change... Requires sed version 4 at build-time. + [JvW] Start depending on gettext. + [JvW] Start depending on libdigest-md5-perl on woody, for using md5 on files. * frontend/lintian: + [JvW] Partial rewrite: checks are now plugins loaded into lintian, rather than executed as separate executables. Makes it easy to make common functions available, tags are done centrally, etc etc. Should also save quite a number of forks, thus more speedier. * lib/Util.pm: + [FL] dpkg supports comments in control files now, handle them correctly + [FL] a space after the colon is not mandatory in dpkg control files * man/lintian.1: + [FL] Document new control-file check script * reporting/harness: + [FL] Correctly support udeb packages * reporting/html_reports: + [FL] Correctly support udeb packages + [FL] Remove some unused code for bug references * reporting/bug.status: + [FL] Remove * testset/filenames: + [JvW] Fix two lintian warnings in lintian itself by touching files only on clean target, and not distributing them in the source * unpack/list-srcpkg: + [FL] Some packages don't specifiy a standards-version, e.g. d-i ones. Prevent Perl warnings. * unpack/list-udebpkg: + [FL] Fix sort of copy & paste error which caused the whole script to behave ill * unpack/unpack-binpkg-l2: + [FL] While fixing permissions, also enable write access so we get no problems on removal. Disable group write permissions, we need nobody to interfere with us. -- Debian Lintian Maintainers Tue, 13 Jul 2004 01:23:20 +0200 lintian (1.23.0) unstable; urgency=low The ``moving forward'' release, prepared by Marc 'HE' Brockschmidt, Frank Lichtenheld and Jeroen van Wolffelaar. * [FL] add udeb support (Closes: #216117) Thanks to Joey Hess for his input. Many changes, mostly to frontend/lintian, checks/debconf and checks/files * checks/binaries: + [JvW] Ignore static binaries in /usr/lib/debug * checks/changelog-file: + [HE] Check for the debmake template email address in the changelog entries. Patch by Steffen Moeller , thanks! (Closes: #199903) + [JvW] Loosen up checks for -0.x versions, could be either native or upstream + Debian revision, so some tests cannot be performed because of that uncertainty * checks/copyright-file: + [HE] Change usr-doc-symlink-to-foreign-package check to throw an error when a package doesn't depend on the *same* version of the package its /usr/share/doc/$foo dir is symlinked to. This is supposed to ensure that both come from the same source and the same source version. (Closes: #201470) * checks/cruft.desc: + [HE] Reworded some parts and bumped the Standards-Version after checking for changes. (Closes: #235735) * checks/debconf{,.desc}: + [JvW] Add an error for a bogus default for a boolean template (Closes: #236846) + [HE] Check for duplicate fields in templates. Fix based on patch by Denis Barbier , thanks! (Closes: #233116) + [HE] Check if the translation of a Choices: field is empty, leading to skipped questions. (Closes: #149451) * checks/debdiff: + [HE] Check for accidental native packaging. This is done by checking for a dash in the version number (though -0.\d+ and -0.\d+.\d+ are allowed for (binary) NMUs) and the existence of a .diff.gz. (Closes: #216327) + [JvW] Implement source-tar-is-posix-tar, which checks for upstream tarballs that are tar --posix tarballs, which cannot be untarred by the tar version in woody (Closes: #245138) * checks/debhelper{,.desc}: + [JvW] Add error if debian/compat is empty, happens once in current sid and gave internal error before * checks/debian-readme: + [HE] Add check for the debmake template email address. Patch by Steffen Moeller , thanks! * checks/deb-format: + [HE] Add a check for the data member of a deb. dpkg 1.11 introduces support for configurable compression algorithms (bzip2, for example), but this shouldn't be allowed before dpkg 1.11 hits stable. (Closes: #159874) * checks/fields: + [HE, FL] Nearly complete rewrite for clean up: - bad-relation seems to work better now (Closes: #171763) - duplicate relations checking now works for different fields, too (Closes: #234978, #235356) + [HE] Add check for an Origin field with "Debian" as value. (Closes: #119618) + [HE] Reintroduce build-depends-without-arch-dep check with the patch I proposed in #214231. (Closes: #242484) + [JvW] Check for well-formed Debian-revision + [JvW] Check for correct realname when QA mailaddress used * checks/fields.desc: + [FL] Fix some wrong policy references * checks/files: + [HE] New check for compiled python files (*.pyc). Patch by David Kimdon , thanks. (Closes: #236606) + [HE] Check for gzipped zero byte files. (Closes: #172052) + [FL] Don't complain about read-only *.ali files as requested by Ludovic Brenta. This makes #226879 wishlist again. + [FL] Warn about ancient files with the value of Dinstall::CutOffPastYear from dak CVS as limit. (Closes: #204801, #218304) + [HE] Check for *.ali files introduced, warn if their permissions are != 0444. (Closes: #226879) + [HE] New checks for deprecated X11 dirs (/usr/{bin,lib,include}/X11 and usr/X11R6/*). (Closes: #81004) + [HE] Check for README for other distributions/platforms and warn if they're installed. Based on patch by Jay Bonci. (Closes: #178441) * checks/init.d: + [FL] output-of-updaterc.d-not-redirected-to-dev-null should be only a info tag since it is more a aesthetical issue, not a policy violation. (Closes: #149700) * checks/lintian.desc: + [JvW] Added missing Type: tags * checks/manpages: + [FL] New checks: - Section number of directory and file differ - Section number of file differs from what is expected from the location of the binary. (Closes: #203831) + [FL] Parse contents of man page and implement more new checks: - Section number of file and header differ (Closes: #89488) - Try to search for hyphens that should be minus signs (Closes: #205924). First patch by Eduard Bloch, final regex by Josip Rodin. - Search for FSSTND directories referenced in man pages. Only an info tag. (Closes: #111098) + [FL, HE] Fix false positives of manpage-for-non-x11-binary-in-wrong-directory when a link from a normal bin/ is pointing to a binary in an X11 dir. Based on patch by FL. (Closes: #203389) + [JvW] x11-games-should-be-in-usr-games is now error, because it's mandated by policy * checks/menus: + [JvW] Stricter checking for whether update-menus is actually called (Closes: #244628) * checks/menu-format: + [FL] Only issue one warning about needs=dwww, not two + [HE] Check if the command given with command= is in the package (Closes: #199346) * checks/nmu{,desc}: + [JvW] New series of checks: Check whether NMU's have correct NMU version number, and whether maintainer uploads have correct maintainer version. Also, check whether NMU's and QA uploads are identified as such in the changelog (Closes: #111948) * checks/scripts: + [FL] Add /usr/bin/php as valid interpreter. (Closes: #239115) Thanks to Peter Eisentraut for pointing this change out + [FL] Reflect new suidperl handling. /usr/bin/suidperl shouldn't/can't be called directly anymore so add a new error and remove it from the list of usual interpreters. (Closes: #240806) + [HE] Don't warn about files with a shebang line which are not executable when they are called *in, as they're probably just templates. (Closes: #114740) * checks/shared-libs: + [HE] Add some new logic to cope with symlinks from /usr/lib to another dir to fix false positives of postrm-has-useless-call-to-ldconfig and friends. (Closes: #190714) + [HE] Also handle case statements in postrm scripts. (Closes: #179435) * checks/standards-version: + [JvW] Also emit warning if standards version is 3.6.0, and not yet 3.6.1 * collection/diffstat + [HE] The diff.gz file name does not include the the epoch, so strip it before trying to get the file. * collection/override-file: + [FL] add support for source overrides (Closes: #129510) See the User Manual for more information. * collection/source-control-file: + [FL] New collection script to extract field information from debian/control in source packages. Currently used in checks/debhelper to guess udeb packages. * debian/control,debian/copyright: + [FL] Add Marc 'HE' Brockschmidt to Uploaders and to copyright file * doc/lintian.sgml: + [FL] Some updates, some more verbatim explantions (Closes: #197955) + [FL] Reworked the override section to handle udeb and source packages, too * doc/README: + [FL] Update options * frontend/lintian: + [HE] Added a --dont-check-parts|-X option to allow users to specify which tests should not be run. Also added infos about this to the manpage. (Closes: #206674) * frontend/lintian-info: + [JvW] Fixed that lintian -I also displays info for I: entries * lib/Dep.pm: + [FL] Fixed some semantic errors (since noone ever observed the correspoding perl warnings the fixed parts are probably never used in the current code) * lib/Utils.pm + [HE] Changed {read,parse}_dpkg_control a bit to cope with the fact that template files sometimes contain lines consisting only of whitespace which do *not* separate to blocks. (Closes: #242479) * testset/runtests: + [JvW] Rewrote so that it is actually useful: - sort output to nullify filesystem directory ordering differences - run lintian just once - check that all tests that are triggered have a description, if verbose specified, warn about tests that are not tested * unpack/list-binpkg: + [HE] Try to open Packages.gz if no Packages file can be found. Fix based on patch by Robert Lemmen , thanks! (Closes: #198617) -- Debian Lintian Maintainers Fri, 23 Apr 2004 12:32:36 +0200 lintian (1.22.12) unstable; urgency=low The ``Fix those false positives, mkay'' release, prepared for all Debian Maintainers by Frank Lichtenheld and Jeroen van Wolffelaar. Best served cold. * debian/control: + [FL] Make Uploaders a single line field. It didn't really break, but at least DDPO had its difficulties * man/lintian.1: + [FL] sync man page with the --help output by adding missing options Based on a patch by Robert Lemmen. (Closes: #198615) + [FL] sync man page with the current list of checks and collection scripts * checks/binaries: + [FL] Don't complain about non-stripped kernel modules. Patch by Dagfinn Ilmari Mannsaker (Closes: #203373) + [JvW] Exclude binaries and packages named *-static from the binary-is-static test. Exception for sash removed. (Closes: #215235) * checks/changelog-file: + [FL] Check that encoding of changelog file is UTF-8, based on a patch by Denis Barbier (Closes: #175318) * checks/copyright-file{,.desc}: + [FL] Don't advise to point to the perl packages' copyright file. Thanks to Martin Orr for pointing this out. (Closes: #193293) + [FL] Fixed false positives of copyright-should-refer-to-common-license-file-for-gpl due to the GFDL. Thanks to Ross Burton for reporting this. (Closes: #192278) * checks/deb-format{,.desc}: + [JvW] Fix perl variable-name clash causing unusually formatted error output (only important if you do automatic processing on it) + [FL] The current script is by Denis Barbier, correcting author in .desc file * checks/debhelper.desc: + [FL] correct reference to debhelper manpage. It's debhelper(7), not debhelper(1). Thanks to Brian Nelson for pointing this out (Closes: #188245) * checks/debconf: + [JvW] Update valid types, since currently 'title' is supported now too (Closes: #234379, #234608) * checks/description: + [FL] fix description-is-dh_make-template check. (Closes: #215125) Fix suggested by Josip Rodin * checks/etcfiles.desc: + [FL] correcting abbrevation of etcfiles to 'etc', was 'ini' which is already used by init.d * checks/fields: + [FL] Really check only "real" dependency fields for needlessy depends (Closes: #185035) + [JvW] Don't consider depending on coreutils bad, as this is in a way a versioned depend (Closes: #216536) + [FL] Remove the build-depends-without-arch-dep check. It produces way too much false positives and can only be replaced by a sophisticated debian/rules parser (Closes: #192037, #202950, #214231) + [JvW] Test syntax of Uploaders: too + [JvW] Accept more whitespace in relations, which is allowed according to policy, thanks Adrian Bunk for noticing, FL for patch (Closes: #200280) * checks/filenames: + [JvW] Revised the symlink detection stuff, it is now more rigorous, and has seperate warning for recursive symlinks that are otherwise not necessarily wrong (Closes: #118080) * checks/files: + [FL] only issue package-installs-nonbinary-perl-in-usr-lib-perl5 if there is no binary perl file at all in the package, since this reflects the way the Installer module behaves (Closes: #199898) * checks/huge-usr-share: + [JvW] Check for a big /usr/share (currently 1-2MB will trigger it) in arch-dependent packages. Currently just I:. Thanks Steve McIntyre for the idea. (Closes: #232849) * checks/menus{,.desc}: + [FL] Remove non-exectuable-in-etc-menu-methods as it doesn't reflects the current menu manual (Closes: #229460) * checks/po-debconf: + [JvW] Check whether files listed in debian/po/POTFILES.in actually exist, and only positively detect po-debconf usage if dependency is there. (Patch by Denis Barbier , only minimally modified) * checks/scripts: + [FL] Fix check for "exec ..." line. Fix suggested by Josip Rodin. (Closes: #212811) + [JvW] Tighten up mknod, dpkg --print-architecture and killall detection in maintainer scripts, would need rewrite to be really sane. (Closes: #148548, #161820, #192300) * checks/shared-libs: + [FL] Be more tolerant to variations when checking for postrm-unsafe-ldconfig. Thanks to Martin Godisch, Steinar H. Gunderson and Aidas Kasparas for their input. (Closes: #218543, #233740) * unpack/unpack-binpkg-l1: + [FL] tar uses now h to signal hardlinks which breaks a lot of our code. so sed'ing it away. Many many thanks to Theodore Y. Ts'o for bringing this to our attention (Closes: #234545) -- Frank Lichtenheld Mon, 8 Mar 2004 00:46:15 +0100 lintian (1.22.11) unstable; urgency=low Jeroen van Wolffelaar * Upgrade lintian itself to policy 3.6.1 + Drop question about removing lab on purge, just do it. * Update to Debian Policy 3.6.1, all references broken by section-reorganization are updated (Closes: #194257, #208945, #214949, also closes: #217384, #231884) (Patch by Nicholas Breen ) * Support for dash scripts (Closes: #194787) (Patch by Frank Lichtenheld ) * checks/binaries.desc: + Fix typo (Closes: #202856) * checks/deb-format, debian/control: + Rewrite by Denis Barbier, slightly cleaned up, renders libarchive-tar-perl dependency unneeded (Closes: #232875) * checks/filenames (and more): + Check for Subversion version control leftovers (Closes: #190067) + Ignore empty __init__.py files in /usr/share/doc (Closes: #215234) (based on patch by Frank Lichtenheld ) * checks/cruft: + Check for CVS and Subversion cruft in source packages (Closes: #189776, also closes: #190067) * checks/po-debconf + Rewrite in Perl + Obsolete PO files are no more checked because po2debconf now automatically runs debconf-updatepo if PO files are older than templates files. Of course PO files might be outdated (e.g. when downloaded from a BR), but it should occur seldom. + PO files are processed through msgfmt to ensure they are valid. + Based on patch by Denis Barbier , Closes: #210576 + Check whether po-debconf is used at all, and warn if it isn't + Check for required POTFILES.in and template.pot in debian/po * checks/menu-format + Drop menu-icon-has-bad-colors, it doesn't apply anymore (Closes: #199341) + Menu sub-policy 3.6.0 added two sections (Closes: #207529) + Added three checks for correct su-to-root usage (Closes: #188095) + Understand icon32x32 and icon16x16 (Closes: #200046) + Missing required tags are now an error (and check name changed) + Check tag-quotation + Rewrite needs check properly, being more precise what is allowed + Complain about needs="dwww", as this is obsolete accordint to menu maintainer (parts menu-format updates based on patch by Bill Allombert ) * checks/scripts + Recognise the 'tcl' interpreter, not the same as tclsh (Closes: #230182) Frank Lichtenheld * checks/debhelper: + fix parsing debian/compat for needed version (Closes: #198611) + update list of existing debhelper commands * checks/manpages: + push back the extension after testing for manpage-not-compressed (Closes: #225293) * checks/copyright-file: don't complain about missing reference to the GPL if we already detected a wrong reference (Closes: #225837) * checks/debconf: + don't complain about partially-translated-question, if Choices is only a substitution variable (Closes: #200802,#222648) + fix testing of dependencies to eliminate false positives of missing-debconf-dependency (Closes: #195201) -- Jeroen van Wolffelaar Mon, 16 Feb 2004 21:17:59 +0100 lintian (1.22.10) unstable; urgency=low * Lintian maintainance is now in the hands of the `Debian Lintian Maintainers' group * Add check for tar bug #230910 (tar check written by Marc 'HE' Brockschmidt ) -- Jeroen van Wolffelaar Fri, 13 Feb 2004 01:00:48 +0100 lintian (1.22.9) unstable; urgency=low * config.* files from 2000-09-05 and such had the timestamp in a variable called version, not timestamp, so check for that as well to detect the really old ones as well. * Made sharedobject-in-library-directory-not-actually-a-shlib an E because it uses the same method as pkg-has-shlibs-control-file-but-no-actual-shared-libs does, and that one's pretty reliable and already E, closes: #197951 * Fixed logic error in detecting whether the uncompressed changelog file is really a symlink, closes: #198171. * Ripped out those few remaining bits of code that watched over /usr/doc, closes: #193598. * Don't whine about policy 3.5.10. No changes. * Avoid install-docs' --no-update-menus when checking for update-menus calls, closes: #183193. * Close the IN filehandle in menus:check_script() so that $. gets properly reset (sloppy coding -- argh!). * Fixed a $1 overwriting thinko in debhelper checks. * Demoted build-depends-without-arch-dep from E to W. "Most likely" isn't non-heuristic, dammit. -- Josip Rodin Sat, 06 Sep 2003 22:05:22 +0200 lintian (1.22.8.1) unstable; urgency=high * Fixed a small logic oversight in the new debhelper compat check, closes: #187415. -- Josip Rodin Thu, 3 Apr 2003 12:27:55 +0200 lintian (1.22.8) unstable; urgency=low * Updated the list of valid archive sections, closes: #187111. * Ignore symlinks in the image-file-in-usr-lib check, closes: #180280. * Updated the list of virtual packages, closes: #179614, #180421. * Fixed typo in the LaTeX license exception, closes: #184640. * Removed anal-retentive check for a bug in debconf << 1.2.9, closes: #185721. * Updated policy version in the description, closes: #185882. * Checks in debian/compat for debhelper compat version, and warns if it finds that as well as DH_COMPAT, closes: #186269. -- Josip Rodin Wed, 2 Apr 2003 19:22:37 +0200 lintian (1.22.7) unstable; urgency=low * Adjusted Policy references for changes in the shared library stuff. Updated standards-version checks to recognize 3.5.9, and shifted old/ancient borders to 3.5.7/3.5.2. * Allow for ${1+"$@"} as well in the evil exec line check, closes: #179145. * Removed the CXXABI check because it's not reliable enough, not all C++-linked programs include libsupc++ which provides those symbols. Sorry. Closes: #179278, #184729. * Allow /usr/lib/$pkg in the rpath check, thanks to Matej Vela, closes: #173610. * Added /usr/share/pixmaps to the icon file path, closes: #181552. * Ignored symlinks in the gzip -9 check for changelogs, closes: #181899. * Ignore LaTeX license in the common-licenses check for GPL, thanks to Peter van Rossum, closes: #184640. * Included (tcl|tk)8.4 on their respective lists, thanks to Chris Waters, closes: #184655. * Ignore alternatives in the check for duplicate relations, closes: #184660. It's still not inclusive, but the remaining cases should be rare enough. * Added Denis Barbier's po-debconf checks, closes: #173823. -- Josip Rodin Fri, 14 Mar 2003 23:21:41 +0100 lintian (1.22.6) unstable; urgency=low * Added missing description for empty-manual-page. * Adjusted some descriptions for -dev symlinks. * Updated the policy section for copyright files from 13.6 to 13.5, closes: #177769. * Updated the policy section for changelog files from 13.8 to 13.7, closes: #176946. * Added extended-description-line-too-long, closes: #176784. * Warn against lack of CXXABI, thanks to Colin Watson, closes: #175920. * Allow for all the other tricks scripts play with their interpreters by making the check generic, /^\s*exec\s*.+\s*.?\$0.?\s*.?\$\@/. Thanks to Colin Watson, closes: #175602. * Changed the dh_testversion checks to also find disparities between DH_COMPAT and debhelper build-dep version, closes: #175295. * Ignore packages that build-depend on autotools-dev in the config.* date check, since they probably copy stuff around, closes: #178347. -- Josip Rodin Thu, 30 Jan 2003 17:03:15 +0100 lintian (1.22.5) unstable; urgency=low * Ignore Zope's license in copyright-should-refer-to-common-license-file-for-gpl, thanks to Matej Vela, closes: #172211. * Don't require \S+ but .+ while parsing @packages, closes: #172444. * Rewrote the chunk of code dealing with names of manual pages, because it was done all wrong, closes: #173548. * Ignore files consisting merely of .so links completely, thanks to Matej Vela, closes: #173609. * Added code to check for bad-so-link-within-manual-page. * Also added code to check for empty-manual-page. * Added a few more cases of safe ldconfig invocation in postrm, closes: #174042. Didn't handle the one with the "case" statement, it's too bothersome. Oh well, the check is a warning instead of an error for a reason. * Added a check for the timestamp line in config.guess/sub files, closes: #171295. * Renamed the full-stop check to description-synopsis-might-not-be-phrased-properly and rephrased its description. This is where I draw the line :) closes: #174150. * Added a warning on .pl and .pm files within /usr/lib/perl5, closes: #174595. * Renamed pkg-without-shlibs-has-shlibs-control-file to pkg-has-shlibs-control-file-but-no-actual-shared-libs and improved its long description. * Added sharedobject-in-library-directory-not-actually-a-shlib, which should properly address the issue of SONAME-less libraries, closes: #174928. * Exclude files that match "LICENSE AGREEMENT FOR PYTHON 1.6.1" from the copyright-should-refer-to-common-license-file-for-gpl check, closes: #174929. -- Josip Rodin Sat, 11 Jan 2003 12:32:33 +0100 lintian (1.22.4) unstable; urgency=low * Fixed typo in the description of description-synopsis-ends-with-full-stop, closes: #172049. * Slightly clarified the text as well, and added a pointer to Policy 5.7.1. * Made it a warning, not an error which it was by mistake, closes: #172541. * Removed an extra colon from copyright-file-lacks-pointer-to-perl-license. -- Josip Rodin Wed, 11 Dec 2002 20:39:38 +0100 lintian (1.22.3) unstable; urgency=low * Fixed typo in copyright-should-refer-to-common-license-file-for-gpl which caused it to have no description. Also moved the opening of the pipe to lintian-info before the first print E: line so that bad-distribution-in-changes-file and other tags in lintian.desc actually get displayed, closes: #171737. * Updated the description of link-to-undocumented-manpage to better match the current Policy and be more helpful. * Added missing \Q and \E around the variable in description-synopsis-is-duplicated, closes: #171721. * Don't warn on _any_ mention of update-rc.d in postinst, just those that follow whitespace or something else and a semicolon, closes: #171472. -- Josip Rodin Thu, 5 Dec 2002 12:25:17 +0100 lintian (1.22.2) unstable; urgency=medium * Fixed some random glitches. * Change rgb-vs-cmap to first include the hex codes of colors in cmap.xpm, and then go searching for names in rgb.txt. Updated the cmap.xpm location in the description. This hopefully really closes: #170860. * Added exception in the shell syntax checks for evil rep scripts, thanks to Kevin Ryde, closes: #171175. * Added checks for multiple dependencies on libstdc, tcl, tclx, tk, tkx and libpng packages. This is currently beind done in a hardcoded manner, but that should do for now, closes: #80447, #129548. * Added a regression test as part of the relations regression test for the above multiple dependencies. * Don't barf on /var/local in the FSSTND-dir-in-var check, just in non-standard-dir-in-var, closes: #119414. The normal packages shouldn't install anything there anyway, and base-files can have overrides :) * Prepend a slash to the file names in file-in-etc-not-marked-as-conffile, closes: #122285. We already don't have the prepended thing normalized, so why not indulge this. * Added dh_suidregister-is-obsolete, closes: #94031. * Added copyright-lists-upstream-authors-with-dh_make-boilerplate, closes: #107815. I am now the official maintainer so I get to do that >:) This time I've written the description much better, so there should be no confusion like there was the last time. * Added description-synopsis-is-duplicated first by comparing the lowercased synopsis with the lowercased start of the extended description, and then if that fails, the letters and numbers are removed and the strings are compared. This may not catch _everything_, but should be satisfactory, and it closes: #118098. * Added a regression test for the above error to the other relations test. It seemed handy. :) * Added an error for depending on libdb1-compat, just in case, as advised by Colin Watson. -- Josip Rodin Fri, 29 Nov 2002 22:22:54 +0100 lintian (1.22.1) unstable; urgency=medium * Handle the $statistics_file rotation in harness. * Warn on dh_dhelp use, thanks to Chris Tillman, closes: #130016. * Exempt awk from the virtual-package-depends-without-real-package-depends check, and add an error when there's a non-versioned dependency on awk, closes: #136831. The description may be considered vague for some cases, but I'll wait until someone actually complains about that before rewriting it. * Moved the generic exceptions before the script-without-interpreter check, which should fix Daniel Kobras' dx false positive, closes: #165574. * Added a warning for full stop in the synopsis line, thanks to Colin Walters, closes: #131747. * Added a warning for daemon stopping stuff in postinst, without a dependency on debconf (>= 1.2.9), thanks to Martin Godisch, closes: #168621. * Based on hints from in Jim Van Zandt's otherwise rather flawed patch posted in bug #94928, moved the diff file stuff from the cruft check into the diffstat collector, and made it simply extract the patch into a file called "debian-patch" which is then used elsewhere, instead of zcatting it over and over again. * Added a regression test for the debian/files and config.* checks. * Added config.log to the list of configure-generated files to warn about. * Updated menu icon colors with a little script I wrote, closes: #170860. * It appears File::Find has changed semantics since woody and now refuses to follow a symlink as the name of the directory to scan. Obviously, a simple readlink() fixes it. * I realized that bug #122855 couldn't have been fixed the diff scanning code anyhow, since dpkg-source ignores file deletions in the first place. Removed the hours of work and simply expanded on the description of the error instead. Oh well. * Added an error for GPL copyrights that don't refer to /usr/share/common-licenses, thanks to Edward Betts, closes: #99885. * Added a warning for some popular architecture-independent image files in /usr/lib which suggests moving them to /usr/share per FHS, thanks to Bill Allombert, closes: #114474. -- Josip Rodin Wed, 27 Nov 2002 20:00:05 +0100 lintian (1.22) unstable; urgency=medium * Further updated the python script checks to ignore obsolete -base packages and watch versioned python interpreters better, thanks to Federico Di Gregorio and Luca De Vitis, closes: #169872. * Added an exception for sash in the statically-linked-binary check, as reported by H. S. Teoh. * Moved descriptions for two manual page location consistency checks from shared-libs.desc (?!) to manpages.desc, and clarified them, as reported by Othmar Pasteka. * Accept /var/games as an exception for setgid stuff, closes: #169382. * Removed the /etc/ppp perms exception as per discussion on debian-devel. * Fixed the add-log-mailing-address check by not re-my-ing the prefix and suffix variables in each iteration of the loop, closes: #129581. Added the word obsolete in the name of the error and a paragraph break to further clarify it. * Added Apps/Science as a valid menu section. This and the removal of the error for calling ldconfig anywhere in the postinst in 1.21.5 make Lintian Policy 3.5.8 compliant, closes: #170093. * Exclude .png files from the extra-license-file check, closes: #164017. * Exclude .php files from the extra-license-file check, closes: #116384. * Added documentation-package-not-architecture-independent warning in the cruft check, closes: #120261. * Check if $action is defined before comparing it to avoid a warning with the -C option, closes: #129582. * Added Kevin Ryde's patch that implements menu-icon-too-big, menu-icon-has-bad-colors, menu-icon-cannot-be-parsed, closes: #71396. * Make .nfs* files trigger the backup-file-in-package check, closes: #95140. * Added an error for .xvpics directories, closes: #169831. * Added more misspellings from Matt Zimmerman, without the British English stuff, with the four language names in a special arrangement, closes: #119786. * Made package-contains-CVS-dir an error, closes: #147301. * Added an error for /usr/share/doc//examples/examples directory, closes: #153144. * Added an error for referring to the Perl license terms without actually pointing to their location on the file system, thanks to Gergely Nagy, closes: #157449. * Check for localhost(.localdomain) in the Maintainer fields, closes: #162248. * Fixed the needs=dwww exception in the menu file check for an empty section, thanks to Colin Watson, closes: #170437. * Check for debian-qa@l.d.o in Maintainer fields, thanks to Colin Watson, closes: #126687. * Updated standards-version check to declare anything lesser than 3.2 ancient (1999!), and anything lesser than 3.5.6 old (2001). -- Josip Rodin Mon, 25 Nov 2002 14:38:55 +0100 lintian (1.21.6) unstable; urgency=high * Fix two regexps in the scripts check in order to fix *sh -n checking, closes: #167079. * Added duplicate-conffile error, closes: #131632. * There doesn't appear to be any provision in the Policy or in the FHS for random compatibility symlinks, so I've just added "or symbolic link" to the description of file-in-unusual-dir, closes: #135546. * Fixed the regexp for package-contains-CVS-dir to actually recognize directories that are printed with the trailing slash, closes: #146831. * Made unregistered-script-in-etc-init.d a warning, renamed it to script-in-etc-init.d-not-registered-via-update-rc.d and updated its description to mention why it may not be an error, closes: #118823. * Added dash into the regexps in the scripts check. * Added a crude check for code within another shell (foosh -c something). I say crude because it works with oneliners only -- anything that spans lines sounds like pretty much impossible to do in without actually _being_ a shell script interpreter :) closes: #166483. * Added an exception for /etc/ppp being 750 root:dip, and complain if it exists and it's not like that, closes: #169260. * Expunged the notion of a global override file from the tag descriptions. -- Josip Rodin Sat, 16 Nov 2002 17:26:07 +0100 lintian (1.21.5) unstable; urgency=medium * Removed postinst-unsafe-ldconfig warning as per the discussion in #120585, which also conveniently closes: #117260, #114123. Note that postrm-unsafe-ldconfig stays! * Further improvements to reporting/harness, reporting/html_reports and related code. * Fixed the display of info for python-script-but-no-python-dep on python1*. -- Josip Rodin Wed, 13 Nov 2002 16:37:09 +0100 lintian (1.21.4) unstable; urgency=medium * Just check for bashisms in sh files, thanks to Jay Bonci for pointing me a this. * Recognize python source packages called pythonX.Y, which should fix third-party-package-in-python-dir for all of them, closes: #114281. Also extend the checking of that directory on all X.Y and not just 1.5. * Fixed policy references in several init script related tags, made the init.d not conffile check a warning since Policy allows otherwise and we can't check reliably, extended the rc.d file check on rc(\d|S).d and excluded sysvinit and file-rc from the check. All this closes: #118824. -- Josip Rodin Mon, 11 Nov 2002 11:52:47 +0100 lintian (1.21.3) unstable; urgency=high * Do _not_ close STDERR before running dpkg-source in unpack-srcpkg-l2. The logname stuff has been fixed ages ago so there shouldn't be any remotely valid reason to do this. This should explain bugs like #159474 and #162813 to the submitters, but I'll have to wait and see, since I still can't reproduce it myself. * Fixed the cruft check not to check the diff file just once, not for every damn subdirectory of the source, d'oh. * Backed out the --remove-lab move to postrm, lintian doesn't exist there any more, silly, closes: #166309. -- Josip Rodin Sun, 27 Oct 2002 12:48:57 +0100 lintian (1.21.2) unstable; urgency=low * Changed the default path for ksh to /bin/ksh, as per the change in the pdksh package, closes: #131484. Maybe /usr/bin/ksh should still be allowed, but it seems inconsistent to allow several paths like that... perhaps the same should be done for zsh? Although, I suppose there are less zsh scripts out there compared to ksh. * Added $link to the usr-doc-symlink-to-foreign-package error message, hopefully properly closes: #116309 (untested). * Eradicated the remaining Packaging Manual references, from Chris Tillman's patch in #116488. Also removed FSSTND references. * Fixed typo in description-is-dh_make-template, closes: #145802. * Replaced /usr/share/doc with /usr/doc in checks/copyright-file.desc, thanks Matej, closes: #157423. * Set binary mode to be able to grok UTF-8 with Perl 5.8 when reading override files, thanks to Colin in #158119. Maybe this is all wrong, but it shouldn't hurt anyway. :) * Added Colin's patch check manual pages for correctness with lexprog, along with the appropriate versioned dependency on man-db, closes: #52524. * Cleaned up some typos in copyrights. * Added *sh -n checking for syntax errors in shell scripts, closes: #42348. * Moved script checks from control-files to the second part of scripts, and also noticed and fixed a bug -- if a script e.g. called killall and had a bashism on the same line, it would escape undetected. * Check the .diff.gz file (if it exists) for config.(cache|status) that includes no added and a number of removed lines and don't print the configure-generated-file-in-source error for those files, closes: #122855. The diff output analysis isn't perfect, but it oughta work. * Clarified the virtual-package-depends-without-real-package-depends warning with an additional paragraph, closes: #164813. * Updated the testset/check_info.pl to work, similarly to lintian-info. * Updated the testsets (this verified my s/elsif/if/g bug fix in checks/scripts mentioned above). * Updated %known_essential as per my sid available file. * Updated %known_virtual_packages as per Policy's virtual packages list. -- Josip Rodin Thu, 17 Oct 2002 13:57:00 +0200 lintian (1.21.1) unstable; urgency=low * Removed FHS transition stuff from lintian's own maintainer scripts. Lintian is now Lintian-clean. :o) * Moved the purge stuff from the old prerm to postrm, and made the (possibly redundant; to-do) question more forgiving. * Added a doc-base file and run install-docs, closes: #129509. * Removed spurious no-manpage exception for binaries that end in numbers, closes: #118479. * Fixed lintian-info's broken $ENV{LINTIAN_ROOT} use. * Fixed --setup-lab to ignore already-existing packages, thanks to Chris Tillman, closes #83593. Let's hope it all works out :o) * Updated the list of allowed distributions, closes: #150466. * Removed the leading ./ from filenames in %linked_against_libvga which actually makes it work, thanks to Matej Vela, closes: #157317. * Warn against all uncompressed changelogs, thanks again to Matej Vela, closes: #157318. * Nuked the code that checked that that for every /usr/share/doc/foo -> ... symlink there exists an equivalent /usr/doc/foo -> ... symlink; seems to be a leftover from the FHS transition days, thanks yet again to Matej Vela for the patch, closes: #161716. -- Josip Rodin Mon, 7 Oct 2002 22:18:20 +0200 lintian (1.21) unstable; urgency=low * New maintainer. * Applied the ever so appropriately named ``unfuck'' patch to the lab code. It includes but is not limited to: + code to read the pool from Bas Zoetekouw + other changes to support new style distributions from myself + fixes for the breakage induced by Shaleh's blitheful insertion of "use strict" everywhere + an array of assorted fixes from Colin Watson, myself and perhaps others which I've accidentally forgotten. The lab code is now officially not entirely broken. Yay! :) There's still work to be done, but this still closes: #157369, #157942. -- Josip Rodin Wed, 25 Sep 2002 19:18:57 +0200 lintian (1.20.19) unstable; urgency=high * revert the frontend to using require as use is a compile time only option which was causing the environment variables to not be read. Closes: #160819 -- Sean 'Shaleh' Perry Fri, 13 Sep 2002 17:55:54 -0700 lintian (1.20.18) unstable; urgency=low * "I release once a year whether I need to or not" release * updated debhelper command list, closes: #119094 * applied lab patch from Joy, et. al., closes: #157942 * added python version 1.5, 2.{1,2,3} to checks/scripts, closes: #114164 * applied Colin Watson's patch for needs=dwww handling in menu files, closes: 115486 * renamed autoconf-generated-file-in-source to configure-generated-file-in-source, closes: #115744 * updated php checks in checks/scripts, closes: #116386 * yet another checks/script update. This time we allow for unusual interpreters when the file is not in a bin/ directory, closes: #116584 * updated policy revision, closes: 118694 * applied Colin Watson's patch for a bug in deplib which made A | B => A, closes: #122742 * applied Chris Tillman's patch to clean up policy references, closes: #123585 * applied Kevin Ryde 's patch to better check for emacs local variables in changelogs and updated the error message as well, closes: #129581, #138216 * accept *-proposed-updates in distribution field, closes: #139288 * removed check for postrm removing usr doc symlink and inverted the postinst check to now make sure the package does NOT set the symlink. Closes: #154005 * removed global override file, it was getting ancient * converted all uses of 'require' to use statements * more use strict cleanups -- Sean 'Shaleh' Perry Fri, 13 Sep 2002 09:49:24 -0700 lintian (1.20.17) unstable; urgency=high * Colin patches: fixed typo in man page causing incorrect formatting, closes: #114118 duplicate relations check is a lot more intelligent, closes: #119048 * urgency set to high to reflect the fact that the relations check is reporting many packages violating policy when in fact they are following it correctly. This is especially true for the new python policy. -- Sean 'Shaleh' Perry Sun, 25 Nov 2001 18:15:04 -0800 lintian (1.20.16) unstable; urgency=low * the "next day bug" release * give an error if a package declares a relation on the same package twice, i.e. Depends: libc6, libc6 (<< 2.0). Closes: #27442. * objdump-info collection script now handles UPX binaries (closes: #113497) -- Sean 'Shaleh' Perry Tue, 25 Sep 2001 15:40:30 -0700 lintian (1.20.15) unstable; urgency=low * the "collecting unemployment and have time to code" release * no longer use syscall to exit from pipeline handler, now uses POSIX::_exit Closes: #112205. * Accept Joy's NMU patch (he applied it as 1.20.14.1). Closes: #110991, #109244. * Warn if the copyright file contains dh-perl-make boilerplate as suggested by James Troup. In the process debmake-templates-in-copyright became helper-templates-in-copyright. Closes: #110337. * Oops, used the same argument name (-s) twice. Reverted back to -s meaning "source". Updated manpage and source to reflect this. Closes: #109631. * added a warning when hardlinks are used. Closes: #103893, #97518. I am closing #97518 here as well which asked that I warn about hard links that link to files in another directory. Since I warn about hardlinks existing adding a separate check for where they link seems silly. * applied Edward Betts patch to detect .cvsignore and CVS/. Closes: #74684. * applied Daniel Schleper's patch for Build-Depends v. Build-Depends-Indep. Closes: #92472. * applied Edward Betts patch for detecting a misspelling in common-licenses. * added 'debain' to list of spelling errors. Closes: #112083. * applied Steve Kowalik's patch that adds out-of-date-standards-version. This will be defined as the policy shipped with the last stable release. Closes: #112043. * Made doc-base-references-usr-doc inform which file is the culprit. Closes: #111020. * Applied Steve M. Robbins' patch for improved handling of ldconfig checks in maintainer scripts. Closes: #110465, #113285. * do not complain about static binaries if they are called "foo.static". Closes: #98288. * testset/runtests now calls dpkg-buildpackage with a '-d' so build-depends are not checked. * oops I left 'debian' in the spelling check list. * backed out Gergely Nagy's suggestion for checking for 'Author(s)'. That is just overly pedantic and lame. Reopens: #107815, tagged wontfix. * checks/etcfiles now complains about ANY file found in /etc that is not a conffile. The finer grain checks have been removed. Closes: #103940. Added a new testset 'etcfiles' to go along with the test. * debconf check now looks for the 'seen' flag and gives an error if the package does not have a versioned dependency on debconf 0.5.00. Closes: #113164. -- Sean 'Shaleh' Perry Mon, 24 Sep 2001 12:20:00 -0700 lintian (1.20.14.1) unstable; urgency=low * Another non-maintainer upload blessed by the maintainer, to clean up after the last such NMU. :) * Fixed spurious postinst-has-useless-call-to-ldconfig warnings, patch from Colin Watson, closes: #109721. Also fixed the silly error in shared-libs which broke shlib-missing-in-control-file. * Fixed checking for /var/lib/games, patch from Andrew Suffield, amended by me not to warn for the files but just that dir, closes: #109970. * Have debian-changelog-file-contains-user-emacs-settings checked only at the start of the line (wonder if Emacs allows indentation in there?), closes: #109971. * Force LANG=C because of a bug in debiandoc-sgml, closes: #110891. -- Josip Rodin Sat, 1 Sep 2001 21:01:30 +0200 lintian (1.20.14) unstable; urgency=low * Non-maintainer upload blessed by the maintainer. Kudos to Colin Watson and Steve Kowalik for helping in the preparation of this upload. * Skip shared objects which aren't in %ldso_dir in some shlib checks, as per changes in Policy 3.5.5, finally closes: #42399, #41613. * Fixed Policy section in package-contains-upstream-install-documentation, closes: #94267. * Added Adrian Bunk's patch for pike/pike7 stuff, along with pike7 stuff in checks/scripts.desc so it's consistent, closes: #94902. * Added an error for leaving files generated by autoconf in the source package, patch from Colin Watson, closes: #107679, #94316. This pulled in renaming checks/debian-cruft* to cruft*, logically. * Added checks/infofiles* for everything related to info files, moved parts of checks/menus* in it and added compression related errors, closes: #95785. * Added Brendan O'Dea's patch for checking Perl module directories, and for not checking the source for each matching file in a !$is_python package, closes: #96350. * Removed lc() from checks on whether a debconf field value is valid, closes: #106324. * Improved binary-or-shlib-defines-rpath description, closes: #94901. * Fixed the references to /usr/doc in the manual page using the patch from Stephen Stafford, closes: #103177. * Added debconf's "config" among %maintainer_scripts in checks/control-files, closes: #108123. * Added "Debian/GNU Linux" among the corrections in checks/spelling, closes: #35761. It required some other modifications but oh well. * Added a new warning, doc-base-file-references-usr-doc, closes: #46582. This required adding collection/doc-base-files* and using that in checks/menus*. * Added a new error, debian-changelog-file-contains-user-emacs-settings, closes: #84750. This required using collection/changelog-file in checks/changelog-file (doh! :). * Complains on manual pages located in /usr/(share|X11R6)/man instead of man* subdirs, closes: #93056. * Added php4 as a valid interpreter, closes: #94534. * Fixed a little bug in checks/spelling.desc, it lacked a comma in its Needs-Info field. * Added a warning when there's common-licenses and not /usr/share/common-licenses/ in the copyright file, closes: #99886. * Added a warning when there's "Upstream Author(s)" in the copyright file, closes: #107815. * Removed -v from command(1) invocation check, patch from Colin Watson, closes: #96227. * Mention the language in select-with-translated-default-field and partially-translated-question, patch from Colin Watson, closes: #95795. Also, fixed some thinkos in the code for the latter warning. * No longer barfs on debhelper-generated safe ldconfig calls, patch from Paul Martin, closes: #82479. * Added the recent Policy versions up to 3.5.6 to standards-version, and moved the threshold for ancient versions up to 3.2.0 because that version was released a bit more than one year ago, closes: #104766. * Added a new error, package-depends-on-an-x-font-package. The pattern is ^xfont.*, that ought to work fine (xfntil2 et al will go undetected, but that's obsolete). * Colin tweaked lib/text_utils.pl to display indented and empty stuff in Info: tags properly. -- Josip Rodin Sat, 18 Aug 2001 18:46:34 +0200 lintian (1.20.13) unstable; urgency=low * debhelper check for lacks #DEBHELPER# token now checks if -n was passed to the dh_ script. Thanks Chip for pointing this out. (closes: #92624) * list of debhelper programs that want to write to maintainer scripts updated * now check for Build-Depends on essential or build-essential packages (closes: #92372) -- Sean 'Shaleh' Perry Thu, 5 Apr 2001 16:00:10 -0700 lintian (1.20.12) unstable; urgency=low * 'farewell to Fabrizio Polacco' release * checks/debhelper's dh-make-template check did not include the $type in its output. * removed spurious debug message from zero-byte-file check in checks/files * lintian no longer runs its regression test when it builds (closes: #92192) * unpack-src-l2 now ensures that we have sufficient permissions to later remove the package (closes: #92224) * bashism check now looks for bash style arrays, thanks Torsten Landschoff. also added to testset. -- Sean 'Shaleh' Perry Mon, 2 Apr 2001 12:30:20 -0700 lintian (1.20.11) unstable; urgency=low * 'where is my mind release' * added science to list of known sections, Closes: #91798 * cleanup override handling, was using chop instead of chomp * checks/binaries checks a binary for profiling symbols now, Closes: #91837 * removed false report of prerm failing to remove a doc link when there is no doc dir, just a symlink to another package. -- Sean 'Shaleh' Perry Mon, 26 Mar 2001 11:22:22 -0800 lintian (1.20.10) unstable; urgency=low * 'I think I remember perl' release * checks/menu-format would die if the last line of a menu had a line continuation character. Seems the function was not getting called with all 5 arguments. * added a list of exempt paths for static binaries, currently only /boot is listed. -- Sean 'Shaleh' Perry Mon, 19 Mar 2001 14:14:41 -0800 lintian (1.20.9) unstable; urgency=low * 'rule monger' release * checks/debhelper: make regex case insensitive, Closes: #89070 * checks/debhelper: modify search logic so it does not report false postives when both Build-Depends and Build-Depends-Indep are defined, Closes: #89069 * Fix the decription for package-contains-upstream-install-documentation, Closes: #89257 * dh_testversion is deprecated, patch applied. Closes: #89624 * lintian now detects that the deb/dsc/changes file it was told to parse is zero bytes and skips it. -- Sean 'Shaleh' Perry Fri, 9 Mar 2001 14:16:24 -0800 lintian (1.20.8) unstable; urgency=low * 'wearing my "fuck redhat" shirt and loving it' release * checks/menus, the check for whether or not the doc symlink is removed fails for people who do not use the -f option to rm (or any other options) thanks Oliver Elphick, Closes: #88182 * checks/scripts handles 'wish' better (I hope), Closes: #88333 * checks/debconf, the registry check is ignore if the package being tested is debconf itself. Closes: #88526 * frontend handles files that are referenced but do not exist better * this is looking like one of the last releases for a while -- Sean 'Shaleh' Perry Wed, 7 Mar 2001 10:42:03 -0800 lintian (1.20.7) unstable; urgency=low * 'test everything' release * updated architecture list -- hppa, ia64, mips, mipsel, s390, sh added * added 'Enhances' to list of known fields * removed libwraster2 from list of obsolete packages, Closes: #85584 * Colin Watson's debconf checks added, still need a testset though, Closes: #85876, #84759 * checks/menus now checks for proper use of install-info, Closes: #25823, #30192 need a testset for this too * checks/files.desc now points to the FHS in /usr/share/doc/debian-policy * applied Joey Hess' app-defaults patch. This allows app-defaults to be conffiles as well as adding a check for app-defaults in old dirs. Closes: #86707, #76811 * lintian now knows more about 3.5.x's X policy in 12.8. Added check for Xresources file but no conflicts on xbase (<< 3.3.2.3a-2). Closes: #63542 * applied Joey Hess's perl patch. Now know that pm's in /usr/share have no need for the +x bit. Closes: #86709 * check for INSTALL in /usr/share/doc now knows about INSTALL\..+ (i.e. INSTALL.gz) * checks/standards-version has an error for packages which declare a source relation (ie Build-Depends) but are not at least policy 3.1.x. Closes: #86711 * checks/fields now checks that the arch definition in source relations follows policy. Closes: #86710 * added wish8.3 to list of known interpreters in checks/scripts * warning description cleanups, Closes: #87528 * added more bashism checks -- '|&', '$[foo]', '${parm:len[:offset]}', '${parm/pat[/str]}', '${parm//pat[/str]}' Closes: #32113 (the suiregister stuff happened a release or three ago) you guessed it, need a testset * bashism check now tells you what it thinks the bashism was. Closes: #81738 * bashism checks now ignore here documents, Closes: #87527 teset/maintainer-scripts now has a here document in a script and extended bash triggers. Also, various other bashism test cleanups and improvements. * typo in scripts fixed, now I really do work on python2, thanks Jerome. Closes: #87772 * hmm, versioned-provides message was often wrong, made it better and it reports the perceived relation, i.e. foo (= 4). * removed the -w and strict from reporting/ scripts * update-menus checks enhanced with knowledge about wm-menu-config. * added 'asmodule' to list of known menu tags * depends-on-essential-package-without-using-version now is only reported for actual depends or pre-depends. * interpreter checking handles arbitrary whitespace now * fixed scripts check for ocaml, now know about ocamlrun. * unusual-interpreter messages were being caused by not prepending '.' to the interpreter name when checking %executables in checks/scripts. * still more fun with ++ )-: menus is now even more paranoid with quotemeta(). * ensure $setuid, $setgid is set in checks/files, thanks to the luxman package for triggering the perl oops. * collections/scripts handles files that only contain '#!'. -- Sean 'Shaleh' Perry Wed, 14 Feb 2001 08:55:09 -0800 lintian (1.20.6) unstable; urgency=low * 'people who depend on side effects should be flogged' release * lintian had code which set a variable to undef, then used it. Without -w and use strict, this silently became a zero, but now it causes errors. So, since it obviously was meant to be zero, I set it to zero instead of undef. Closes: #85326 Fun part was this only happened when run on more than one version of a single package i.e. lintian foo_1.changes foo_2.changes. * checks/scripts updated to deal with python2.x and there being two versions of python. Closes: #85441 while doing this, collections/scripts was updated to support the use of /usr/bin/env. I probably added bugs here )-: added a scripts testset, very early still. * my modification to checks/menus to support /usr/share/doc/package -> other had a problem with special chars. Now calls quotemeta(). Annoying because I have a ++ package name but it did not trigger this particular case. So, I added a package to foo++ which links to foo++. Closes: #85530 * added a TODO to the private dir. * left off a closes in the big perl closings 2 revisions ago, Closes: #80192 -- Sean 'Shaleh' Perry Sat, 10 Feb 2001 14:28:19 -0800 lintian (1.20.5) unstable; urgency=low * 'people who name a lib libfoo-X.X.so should be shot' release * checks/shared-libs handles libraries of the form 'libfoo-X.X.so' now * the virtual package check I added in the last release failed to check the field it was testing, so errors were reported on fields other than Depends. Ooops. The description also should have referred to packaging not policy. Closes: #85225 -- Sean 'Shaleh' Perry Wed, 7 Feb 2001 13:55:10 -0800 lintian (1.20.4) unstable; urgency=low * 'why would you ever do THAT?' release * lintian-info sets $ENV{'LINTIAN_ROOT'} if it is not set * added a check to checks/files for packages which ship the upstream INSTALL document. This is almost always useless for users of a package. testset/binary now includes such a file Closes: #81970 * checks/menus -- the walk over package contents now has logic to run file tests on files, link tests on links, etc. * checks/menus -- if there is a /usr/share/doc/$pkg symlink, assume it links to a package it depends on and do not warn about setting the usr/doc symlink. There is code in checks/copyright-file that makes sure policy is followed with regards to what is actually linked against. Closes: #48048 * checks/fields is now less strict about Section: non-US handling * added debconf files to list of known control files in checks/control-files Closes: #46863 * perl mistakes are no longer checked for. Closes: #47076, #75889 * FHS 2.1 cleanups, Closes: #75878 * lintian will not complain if you symlink your doc directory to an essential package and leave off the depends, because since it is essential you must not depend on it. Closes: #48296 * lintian now gives and error when a package declares a depends on an essential package without using a versioned depends. Closes: #33250 * extra-license-file is not given if the file is just a symlink. Closes: #35224 * checks/fields: now complain if a package declares a depends on a virtual package without first depending on a real packages as an alternative. Required adding a known_virtual_packages list to checks/common_data.pl. Also removed redundant info/registered-virtual-packages file. Closes: #70673 * added a library (mostly empty right now) and non-us testset * runtests now runs the tests in alphabetical order * lintian's --version info is being updated automagically again * moved some hashes around in checks/ to common_data.pl * checks/changelog-file reorganized so it knows the size of the files. Now it can check that the changelog is sufficiently large to require compressing. Also modified the desc file to reflect this. Closes: #84400 * --info now outputs all info. Silly bug in how I used split and defined. Closes: #82970 * added a testset/check_info.pl script. It verifies that every lintian check referenced in a desc also has an info section. runtests now runs this test as well. * suidregister warning is now an error. * checks/menus: fixed the if link case pattern match -- one more perl erro down, 3 billion hidden ones to go. * Following items thanks to Colin Watson * updated checks/standards-version so it does not give perl errors when it encounters a newer standards version than it knows about. Closes: #84083 * updated references to policy for policy 3.5.0. Closes: #84088, #83969 * Added a warning for packages containing a link to undocumented(7) as suggested on debian-policy list. Also includes a testset (manpages) addition. Closes: #83188 * At the moment checks/copyright-file just tests for a slash in the link; I've changed it here to test for an initial / or ../, and then after that check it strips off everything from the first slash on, so that tests on the package name work correctly when people link to subdirectories of other /usr/share/doc directories. Closes: #84066 * It was unpacking to level 2 even though I had Unpack-Level: 1 and no associated collection scripts. Of course, it wanted override files from /usr/share/lintian/overrides/$pkg. Fair enough - except that if I said --no-override it wanted the override file information anyway, and still unpacked to level 2. No obeys non-overrides. Closes: #84722 -- Sean 'Shaleh' Perry Tue, 30 Jan 2001 14:26:04 -0800 lintian (1.20.3) unstable; urgency=low * 'Does the pain ever end?' release * oops, lintian can not create a static lab due to an error check too early in the code. While fixing this I also added a static lab check in testset/runtests. Closes: #83411 -- Sean 'Shaleh' Perry Wed, 24 Jan 2001 14:36:35 -0800 lintian (1.20.2) unstable; urgency=low * 'Where or where did my changes go' release * fixed --help option to not show escaped chars * changed regression test to also do a run with --info on * seems lintian always used the lintian-info script from the path, changed to look in LINTIAN_ROOT if passed * perl problems cleaned up, Closes: #82970 * removed randomization of output strings when refering to policy documents, not only is this silly but it makes regression tests impossible * moved manual_refs.pl list of policy manuals to an external file. This will allow automated updating when releases occur. It also removes the perl warnings (-: -- Sean 'Shaleh' Perry Sat, 20 Jan 2001 12:21:30 -0800 lintian (1.20.1) unstable; urgency=low * the change hurts release * every perl script now calls use strict and passes -w to perl The long road of bug tracking because of this has begun. Thanks Joey H. * testset/filenames now has a lengthy-symlink bug to show how that code works * typo in checks/control-files in a bashism check, the correct POSIX call is 'read foo' however the code was checking for the existance of whitespace before the call, not the existance of the variable to read into due to a mixed up regex. Thanks Adam Heath for pointing this out. Closes: #81453 * checks/control-files, the check for whether '.' takes more than one argument did not take into account things like 'and'. It does now. Closes: #81737 * fixed interpreter check code to hand a space between the #! and the interpreter (really), also allows bash,ksh,ash as valid sh shells. Also knows to look for an ELF header and stop parsing the script. Thanks Colin Watson. Closes: #80348, #82541 * testet/binary-1 added. This is a small C program to test lintian's handling of binary files. See the changelog in this directory for info * fixed message for 'manpage-has-wrong-extension', Closes: #82452 * 'N: Unknown interpreter' message now only printed once per script, Closes: #81644 * added equivalent file-directly-in-usr-share-doc messages (et al.), Closes: #82654 * added new message: suidregister-used-in-maintainer-script. this replaces the old messages suidregister-used-in-maintainer-script-other-than-postinst and suidunregister-not-called-in-postrm due to suidregister being phased out of Debian. Closes: #81868 * binary-has-unneeded-section upgradeed from info to warning -- Sean 'Shaleh' Perry Wed, 3 Jan 2001 13:04:20 -0800 lintian (1.11.15) unstable; urgency=low * Hack Hack * checks/perl disabled until it can be improved * fixed typo in checks/description: s/%type/$type/ * fixed mental typo in checks/*: $foo == 'string' is not the same as $foo eq 'string', Closes: #80813 * Added Colin Watson's patches, Closes: #80373, #80376, #80377 -- Sean 'Shaleh' Perry Fri, 22 Dec 2000 16:02:58 -0800 lintian (1.11.14) unstable; urgency=low * more fun with interpreter checking, seems a space is allowed between bang and the interp path. So, fixed the regex (again). Also store the name of the interpreter in $interp and use that rather than $is_sh, this will allow for other interpreter checks later. Closes: #80348 -- Sean 'Shaleh' Perry Fri, 22 Dec 2000 15:51:10 -0800 lintian (1.11.13) unstable; urgency=low * (Joy) fixed a typo in binaries.desc * (Joy) checks/debhelper now passes $type with the lintian message * (Joy) libs/text_utils.pl, reporting/html_reports fix maintainer name * checks/control-files now checks if the postrm calls update-alternatives with the --remove option, this is considered harmful, Closes: #80255 checks/control-files.desc explains the problem in detail * fixed checks/menus setting of is_sh, $foo = split() sets foo to the number of items, not the first item -- duh (-: How did this make it thru testing? added a maintainer-scripts testset to help catch this in the future -- Sean 'Shaleh' Perry Thu, 21 Dec 2000 10:34:43 -0800 lintian (1.11.12) unstable; urgency=low * new command line option: --show-overrides, displays tags even if they have been overriden, marked 'O: .....' * shared-libs.desc text changed to give more info when a shared library is present, but the SONAME is not set or set improperly, Closes: #78277 * removed references to libtool-workarounds.txt (it never died ....), Closes: #78420 * my reformat of the code in checks/menu-format changed the regex from m/^#/ to m/^ #/, I changed it back (kind of). The test is now m/^\s*\#/ just in case a space snuck in. Also modified the code so it does a if (m//) { next;} rather than if (! m//) { ........ }. Closes: #78532 * checks/menus now checks which interpreter the maint script uses and varies its checks accordingly -- works for sh and perl currently, Closes: #78880 Updated menus.desc while I was at it. * fixed typo in scripts.desc, pike error message should have referred to pike not to make, Closes: #79744 * killed use of \b in bashism checks, now uses (^|\s+), Closes: #80122 -- Sean 'Shaleh' Perry Thu, 21 Dec 2000 10:20:30 -0800 lintian (1.11.11) unstable; urgency=low * Finally, lintian's version number is automagically set * lintian.sgml updated to document per package overrides info. * the /usr/share/lintian/overrides/ actually works now (-: -- Sean 'Shaleh' Perry Thu, 16 Nov 2000 14:19:22 -0800 lintian (1.11.10) unstable; urgency=low * Dammit, + sign in package name problems again added a regression test for a foo++ package. Closes: #77216 * removed the libtool text in the rpath message, libtool no longer sets rpath the upstream finally saw the light. -- Sean 'Shaleh' Perry Thu, 16 Nov 2000 09:02:50 -0800 lintian (1.11.9) unstable; urgency=low * Moved the override files from /usr/share/doc/ to /usr/share/lintian/overrides/ also added a check to catch override files in the old directory * Removed calls to defined in checks/perl, Closes: #76339 * copyright-file-is-gpl renamed to copyright-file-contains-full-gpl-license * magicfilter should be in /usr/sbin, not /usr/bin, Closes: #76686 * modified testset/empty. dpkg-genchanges now requires a Maintainer field. -- Sean 'Shaleh' Perry Thu, 9 Nov 2000 12:23:43 -0800 lintian (1.11.8) unstable; urgency=low * Fixed Description too long message, Closes: #75570 * removed description-may-be-too-long * Fixed description of package-uses-debhelper-but-lacks-build-depends, I left the 's' off of lacks * zero-byte-file-in-usr-doc changed to zero-byte-file-in-doc-directory * added documentation for zero-byte-file-in-doc-directory, Closes: #75744 * renamed package-source-contains-debian/files to debian-files-list-in-source, Closes: #75746 -- Sean 'Shaleh' Perry Fri, 27 Oct 2000 16:09:09 -0700 lintian (1.11.7) unstable; urgency=low * Fixed lintian's handling of autouse, Closes: #75115 Thanks Stefan Hornburg for helping me with this * Fixed silly manpage filename parsing bug, Closes: #75246 * Removed now out of date libtool-workarounds.txt, Closes: #75324 * unpack-srcpkg-l2 used a silly regex to parse dpkg-source output, this has been fixed to simply read some string of non-whitespace, Closes: #58943 * checks/spelling should now work with high ascii chars, Closes: #70974 * added debiandoc-sgml Build-Depends-Indep, Closes: #74751 * added checks/debian-cruft. Checks for the debian/files file, Closes: #38710 * fixed checks/debhelper -- it actually works now. * added tixwish to list of known interpreters, Closes: #47775 -- Sean 'Shaleh' Perry Tue, 24 Oct 2000 15:29:14 -0700 lintian (1.11.6) unstable; urgency=low * Fixed manpages check to handle oddly named files, now uses File::Basename * fixed debhelper check so it will detect a need for Build-Depends even if a script which needs to modify maintainer scripts is not used. * lintian-info now outputs info for source messages too, Closes: #51811 * used a different syntax in checks/perl rather than set $2, Closes: #54710 * if dh_testversion is called by a package, ensure that the package uses a versioned Build-Depends * Maintainer Upload (with Darren's blessing) -- Sean 'Shaleh' Perry Mon, 9 Oct 2000 13:23:51 -0700 lintian (1.11.5) unstable; urgency=low * /etc/pam.d are now checked to ensure they are conffiles, Closes: #50293 * fixed the typo in checks/copyright-file, Closes: #53626 * fixed description, lintian is at policy 3.2.0.0, Closes: #55083 * fixed checks/standards-version, knows about policy version 3.2.0, Closes: #68655 * check for zero byte length files in /usr/share/doc/, Closes: #59508 * added a fail function to frontends/lintian, Closes: #69259 * checks/files.desc now refers to FHS 2.1, Closes: #69422 * ran ispell on checks/*.desc files, Closes: #69423 * added checks for suidregister and suidunregister, Closes: #29444 * lintian now checks the length of the short description, Closes: #33411 * lintian now verifies that /etc/cron.{d,daily,monthly,weekly} files are marked as conffiles, Closes: #46332 * Description: is checked to make sure it is not a dh_make template, Closes: #59141 * fixed URL in README, Closes: #59733 * added magicfilter to list of interpreters, Closes: #60361 * added check if debhelper is used by a package, it is included in Build-Depends, Closes: #70438 * for menu files, if the menu needs=foo and foo is the package name, assume this is ok. Also, sections that match the package name are also assumed to be ok. This affects mostly window managers. Closes: #64674 * Checks whether the icon used in a menu file is in xpm format. * added {g,k,p,y}forth as valid interpreters, Closes: #51778 * More checks/ dir cleanups -- Sean 'Shaleh' Perry Wed, 27 Sep 2000 15:31:38 -0700 lintian (1.11.4) unstable; urgency=low * Brought lintian.sgml up to date * cleaned up the layout of frontend/lintian * Dep::implies did not parse Depend: foo | bar | baz correctly, this is why things like wmakerconf gave bogus errors. This is duct taped, real fix some day. * Closes: #43706 -- Sean 'Shaleh' Perry Wed, 6 Sep 2000 19:13:20 -0700 lintian (1.11.3) unstable; urgency=low * Added 'Format' field to dsc file checks New dpkg versions seem to write a Format version to dsc files, lintian flagged them as an unknown field. * lintian failed lintian (-: changed copyright to point at /usr/share/common-licenses/GPL -- Sean 'Shaleh' Perry Fri, 1 Sep 2000 15:35:03 -0700 lintian (1.11.2) unstable; urgency=low * Official maintainer change * Package specified overrides * Fixed perl dep check bug * Added perl modules: (#46118) (#51457) (thanks ardo) * Added interpreter ocaml (#50933) * Cleaned up some overrides -hopefully not yours (#48703, #48769) * SUID allowed for packages named *-suid * Applied Frank Belew's patches (#39832 #48794) * Added checks for /usr/[share/]doc/copyrights references in copyright file * Added change in directory checks based on changes by the Great X Reorganization * Added check for text version of changelog no matter what * Added check for /var/lib/games * Added checks for Build-* source-depends fields * Updated standards-version to accept 3.1.0 and made anything 2.x ancient -- Darren Benham Fri, 24 Sep 1999 09:59:35 -0700 lintian (1.10) unstable; urgency=low * Richard's changes: * Darren's changes: + changed rm of /usr/doc link to look for rm and rm -f (closes: #46740) + changed numerous overrides to account for tar (closes: #46903) + added doc-base override (closes: #45999) + changed of URI:: functions liburi-perl (closes: #45770) + added recognition of HTML::SimpleParse (closes: #45081) + added "hints" to the known menu tags (closes: #47248) + changed example checks to include ./ (closes: #44897) + moved data/dumper to perl|perl5 (closes: #42036) + changed perl|perl5 check to allow perl5|perl (ver) (closes: #44425) + caused lintian to skip many file related checks for the files in directories /hurd and /server (closes: #36680) -- Darren Benham Fri, 24 Sep 1999 09:59:35 -0700 lintian (1.9.1) unstable; urgency=low * Richard's changes: * Darren's changes: + Added a check for /etc/pam.conf. Precursor for reserved /etc/* files + Added a check of postinst and prerm for /usr/doc symlink manipulation + Added the /usr/doc symlink to lintians scripts -- Darren Benham Mon, 13 Sep 1999 22:06:07 -0700 lintian (1.8.2) unstable; urgency=low * Richard's changes: * Darren's changes: + Added /var/lib to the FHS check + Fix for the new tar + Make libraster2, not libraster1 obsolete -- Darren Benham Thu, 5 Aug 1999 00:13:28 -0700 lintian (1.7) unstable; urgency=low * Richard's changes: * Darren's changes: + This time.. added Help as a valid root level menu option + Changed FSSTND directory Infos to Josip's suggested wording. + Removed /var/lib from the FSSTND check + Fixed non-US/section check + Added text about bashism checks perfromed to N: tag + Fixed bad-link-to-undocumented.man.page N: tag -- Darren Benham Thu, 29 Jul 1999 15:54:37 -0700 lintian (1.6) unstable; urgency=low * Richard's changes: * Darren's changes: + Added some bashism checks from Shalah + Added /usr/share/doc as valid directory + Added /usr/share/man as valid directory + Set warning for FSSTND directories + Added Help and App/Databases to valid menu entries + Added patch from Steve Haslam to recognise /etc/menu-methods and check for update-menus calls + Added overrieds for dh_make requested by C. Small + Added patch from Roderick Schertler to skip comments/blank lines at top of menu files. + Changed the relative shared-library check to look for either rela.text or rel.text, not just rel.text. This is needed for PowerPC and other non-i386 architectures. + Added ruby as a valid interpreter + Added notice when unrecogized file format is found that it might be due to a missing package: binutils-multiarch -- Darren Benham Sun, 11 Jul 1999 17:15:40 -0700 lintian (1.5) unstable; urgency=low * Richard's changes: * Darren's changes: + Changed file error message to indicate it's file's fault(closes: #37259) + Changed perl depends to perl | perl5 to cover both Also added perl-5.004 and perl-5.005 since they are valid perls (closes: #41041, closes: #39835) + Remove a undefine causing spurious unknown-tag error (close: #40699) + Ancient-ized standards-version 2.4.0 and 2.4.1 + Added policy 2.5.1 to the accepted number for standards-version + Check for use of /etc/nntpserver. Only major change in policy v2.5.1 + Added perl-5.005 and perl-5.004 as valid interpreters (close: #39834) -- Darren Benham Mon, 5 Jul 1999 11:46:53 -0700 lintian (1.4-1) unstable; urgency=low * Richard's changes: + When reporting errors in .changes files, report filenames the way they were listed, rather than as absolute pathnames. + Don't exit with code 1 for errors that were overridden. This fixes bug#37353, reported by Wichert Akkerman. + Correctly handle escaped characters in menu items (bug pointed out by Raphael Herzog). + bltwish scripts should now depend on blt, not blt8.0. This fixes bug#38092, reported by Gordon Russell. * Darren's changes: + override requested by christian kurz for ppp. Several of the files/dirs have non-standard permissions. + override requested by adam kleine for gtk-engines-gtkstep. Contains libraries not meant to be linked. + override requested by Manoj Srivastava for latex2html. Fixes bug#38098. + hugs added to the list of interpreters. Fixes bug#37668 reported by Antti-Juhani Kaijanaho. -- Darren Benham Tue, 11 May 1999 13:24:27 -0700 lintian (1.3-1) unstable; urgency=low * Richard's changes: + For install-docs, accept --remove as well as -r. Fixes bug#35664, reported by James Van Zandt. + In explanatory text for prerm-does-not-call-installdocs, give a correct example for the prerm (not the postinst). Fixes bug#35665, reported by James Van Zandt. + List gmp2 as obsolete package (replaced by libgmp2). + Don't generate depends-on-obsolete-package for -dev and -dbg packages that depend on their library. * Darren's changes: + override requested by julian gilbey for menu. Menu can't call update-menus in postrm since it won't exist then. + added requested override for vtwm update menus. Fixes bug#36457 reported by Branden Robinson + override requested by Oliver Elphick for postgresql-pl. Has shared libraries not loaded by ld.so -- Darren Benham Mon, 05 Apr 1999 16:00:05 -0800 lintian (1.2-1) unstable; urgency=low * Darren's changes: + added the -1 to denote purely packaging changes + added fvwmother to menu needs= check (fixes bug#35057) * Richard's changes: + Added new tag package-installs-packlist. This closes wishlist bug#33827, reported by Joey Hess. + Mark all versions of libgtk1.1 as obsolete for depends-on-obsolete-package tag. + For tag arch-indep-package-contains-binary-or-object, tighten up regexp that detects "ELF". This fixes bug#35237, reported by Mark Brown. -- Darren Benham Mon, 29 Mar 1999 16:31:05 -0800 lintian (1.1) unstable; urgency=low * Zapped compiled-with-bad-libc check. * Corrected spelling error in spelling check (it flagged "interchangeable" as a bad word; this should have been "interchangable"). This fixes bug#33252, reported by Santiago Vila. * Silenced non-standard-dir-in-usr check about /usr/$arch-linuxlibc1/, which will go away at some point and is not worth moving now. I'll file a policy proposal for it at some point. This fixes bug#33114, reported by Marcus Brinkmann, and bug#33374, reported by James Troup * Silenced non-standard-dir-in-var check about /var/www/, since it's Debian policy to use it. -- Richard Braakman Thu, 25 Feb 1999 14:43:27 +0100 lintian (1.0) unstable; urgency=low * New tags: E: non-standard-toplevel-dir W: non-standard-dir-in-usr W: non-standard-dir-in-var W: file-in-unusual-dir E: dir-or-file-in-mnt E: binary-in-etc E: use-of-compat-symlink E: subdir-in-bin These cover much of the FSSTND and FHS. * No longer emit executable-in-usr-doc for scripts. It's just too controversial. I've added an info-level tag script-in-usr-doc for people who are interested. This closes bug#28560, by Stephane Bortzmeyer. * Only emit compiled-with-bad-libc if the register_frame symbols are UNdefined. This closes bug#31867, submitted by Michael Meskes. * Don't emit compiled-with-bad-libc for binaries linked to libgnustep_base.so.0, which also defines __register_frame_info. This closes bug#31004, submitted by Matthias Klose. * Changed a lot of "error:" messages to "internal error:", to make clear that they are errors in Lintian's execution, not in the package being checked. This closes bug#31013, submitted by James Troup. * (frontend/lintian) Select STDOUT again after closing OUTPUT_PIPE. This fixes bug#31574, reported by Julian Gilbey. Thanks for the patch! * (checks/copyright-file) Lintian was confused by "libident(=0.22-1)", i.e. without separating whitespace. Fixed. This closes bug#31821, reported by Paul Slootman. * Man page fix: mention that lintian can be run on .changes files. * Depcheck pages: fixed version comparison bug. -- Richard Braakman Wed, 27 Jan 1999 14:43:15 +0100 lintian (0.9.5) unstable; urgency=low * Do not abort when run as root; print a warning instead. --allow-root still overrides the warning. * Only generate non-standard-file-permissions-for-etc-init.d-script tag for regular files. Reported by Martin Schulze. * Corrected libtool-workaround sample configure.in snippet: Look for *-*-linux-gnu, not *-pc-linux-gnu. Fixes bug#30756, reported by James Troup. * Made lintian abort with an error message when objdump can't handle a binary's file format. Also made lintian Suggest binutils-multiarch. * New error tag: arch-dependent-file-in-usr-share This closes bug#30742, reported by Matthias Klose. * Added gnuplot as a known interpreter. Suggestion by Rafael Laboissiere. -- Richard Braakman Sun, 20 Dec 1998 18:05:46 +0100 lintian (0.9.4) unstable; urgency=low * New features (summary): - 112 new spelling corrections. - Minor efficiency improvements. - Checks __register_frame_info problems. - Updated to policy 2.5.0 * (lib/util.pl) Exit with code 2 when failing, like the manpage says. * (checks/files) Print octal permissions in bad-permissions-for-etc-cron.d-script, not decimal. * (checks/files) Ignore .xpm extensions too when hunting for extra license files. * (checks/conffiles, checks/conffiles.desc) Renamed -may-not-be- tags to -must-not-be-, for clarity. * Replaced most bash scripts with perl scripts, for faster startup times and fewer subprocesses. This speeds up lintian by some 30% on my machine. * (collection/objdump-info) Add -T flag, to collect dynamic symbols table too. * (checks/binaries) Look for __register_frame_info and __unregister_frame_info. New tag: compiled-with-bad-libc * (checks/*.desc) Use new (2.5.0) section numbering for policy references. * (checks/changelog-file) Accept changelog.html.gz files. * (checks/standards-version) newer-standards-version is warning, not error. This fixes bug#29366, reported by Julian Gilbey . * (checks/standards-version) Updated to standards-version 2.5.0. * (info/overrides) New overrides. Fixes bug#29449 reported by Marcus Brinkmann (libc5 overrides) * (checks/standards-version.desc) Remove the link to the upgrading-checklist, which I can no longer find and which is probably not maintained anymore. * (checks/control-files) Fix check for mknod-in-maintainer script: pipes are made with p, not -p. * (debian/control) In the package description, mention which policy version Lintian checks. -- Richard Braakman Mon, 23 Nov 1998 14:46:32 +0100 lintian (0.9.3) unstable; urgency=low * (checks/binaries) Warn if a package with ELF binaries does not have a Depends line. New tag: missing-depends-line. (Suggested by Charles Briscoe-Smith) * (checks/menus) Don't warn about /usr/lib/menu/README. (Noted by joost witteveen) * (checks/binaries.desc, checks/binaries, checks/shared-libs.desc) Renamed "shlib-without-dependency-information" to "shared-lib-without-dependency-information", to avoid confusion with the shlibs control file. (Suggested by Branden Robinson) Also moved the tag info from shared-libs.desc to binaries.desc, where it belongs. * (checks/shared-libs) Suppress "shlib-with-executable-bit" error if a library has an INTERP header. This catches the libraries (such as libc or libm) that print a little banner when executed. * (checks/fields) Report maintainer addresses that have no dots in the domain part. (Suggestion by James Troup) * Teach fields check about non-us. * (info/perl-modules) Updated modules info. * (lib/deplib.pl) Fixed handling of versioned dependencies. * (checks/files.desc) In executable-in-usr-doc tag, suggest examples directory as a place for executables. (Suggestion by Stephane Bortzmeyer) * (checks/fields, checks/fields.desc) New tag: depends-on-obsolete-package, to flag dependencies on old libraries. -- Richard Braakman Tue, 27 Oct 1998 12:59:43 +0100 lintian (0.9.2) unstable; urgency=low * Look for more misspellings: dependant -> dependent, dependancy -> dependency, definate -> definite, definately -> definitely. * (checks/scripts) Correctly deal with the terminating newline when parsing dependency lines. Fixed bug#27694, reported by Rob Tillotson. * (checks/menu-format) Added Apps/Technical and Apps/Hamradio as sections. * (checks/copyright-file) Don't report copyright-file-is-gpl unless it is GPL version 2. This fixes bug#27793, reported by Milan Zamazal. * (checks/menus) Add newline after bad-menu-file-name tag! * (lib/manual_refs.pl) Update urls to manual sections, so that they refer to www.debian.org. Regenerate index of devref sections. -- Richard Braakman Thu, 15 Oct 1998 14:06:26 +0200 lintian (0.9.1) unstable; urgency=low * Added overrides for imap daemons being sgid mail. * Updated info/perl-modules from new Contents file. * (lib/read_pkglist.pl) Don't fail on 0-size package lists. This fixes bug#27121, reported by Adam P. Harris. -- Richard Braakman Wed, 30 Sep 1998 18:16:14 +0200 lintian (0.9) unstable; urgency=low * (frontend/lintian, reporting/html_reports, checks/*, collection/*) Make rigorous distinction between source and binary packages. Pass "source" or "binary" as second argument to check scripts. Report source package tags with "pkg source:" instead of just "pkg:". Binary package tags stay the same. (The check scripts always report "pkg type:", and the frontend strips the type again if it's "binary"). This involves several changes in the web-report scripts as well. * Add command-line options for the things that could only be set via environment variables or the configuration file. (--cfg, --root, --lab, --dist, --arch). * Really rename obsolete-ldconfig-call-in-postinst to postinst-has-useless-call-to-ldconfig. * Really rename changelog-file-missing-in-native-debian-package to changelog-file-missing-in-native-package * (checks/scripts) bltwish now lives in blt8.0, not blt4.2. -- Richard Braakman Sun, 20 Sep 1998 16:34:38 +0200 lintian (0.8.3) unstable; urgency=low * (checks/menu-format) Added "sort" as a known tag; it's documented in the menu package. This fixes bug#26373, reported by Marcelo E. Magallon. * (checks/scripts, checks/scripts.desc) Added /usr/bin/js as a known interpreter (in ngs-js), as suggested by Brian Bassett. * (checks/shared-libs) Brian Bassett reported inaccuracies in detection of "ldconfig" calls in maintainer scripts. Fixed. * (checks/menu-format) Skip checks on "section" if the "needs" tag had an unknown value. This deals with bug#26375, reported by Marcelo E. Magallon. * (checks/manpages) Fixed: check for links to "undocumented" manpage should not react to link destinations like "ilu-undocumented". * changelog-file-missing-in-native-debian-package shortened to changelog-file-missing-in-native-package * wrong-name-for-changelog-file-of-native-debian-package shortened to wrong-name-for-changelog-of-native-package. -- Richard Braakman Thu, 10 Sep 1998 12:55:45 +0200 lintian (0.8.2) unstable; urgency=low * Ignore common programming-language extensions when looking for extra-license-files. (Fixes bug#26252, reported by Manoj Srivastava, who had a file vm-license.el). * Use -z flag for tar, rather than piping through gzip -dc explicitly. This allows tar to detect and pass on errors reported by gzip. -- Richard Braakman Tue, 1 Sep 1998 11:57:53 +0200 lintian (0.8.1) unstable; urgency=low * Added /usr/bin/guile and /usr/bin/scsh as known interpreters. (This fixes bug#26093, reported by Karl M. Hegbloom ) * Renamed tags: postinst-contains-obsolete-call-to-updatemenus to postinst-has-useless-call-to-update-menus postrm-contains-obsolete-call-to-updatemenus to postrm-has-useless-call-to-update-menus postinst-contains-obsolete-call-to-installdocs to postinst-has-useless-call-to-install-docs postrm-contains-obsolete-call-to-installdocs to postrm-has-useless-call-to-install-docs obsolete-ldconfig-call-in-postinst to postinst-has-useless-call-to-ldconfig The first two are also downgraded from error to warning. (This fixes bug#26118, reported by Wichert Akkerman ) * Renamed tag use-of-killall-in-maintainer-script to killall-is-dangerous. * More overrides. -- Richard Braakman Thu, 27 Aug 1998 18:56:03 +0200 lintian (0.8) unstable; urgency=low * (checks/perl) Don't emit warnings for perl scripts in /usr/doc. This closed bug#25728, reported by Manoj Srivastava. * (info/overrides) Change the non-standard-*-perm overrides to match the new format of those tags. (was changed in 0.7.5) * (checks/control-files) "possibly-insecure-handling-of-tmp-files-in-maintainer-script" now knows about mkdir. New tag: W: possible-bashism-in-maintainer-script (Suggestion by Joey Hess) * (testset/filenames-2) Don't rely on installer's umask for testset. * (collection/menu-files, collection/menu-files.desc, checks/menu-format, checks/menu-format.desc) New check for correct syntax in "menu" files, written by Joey Hess. New tags: E: old-format-menu-file E: whitespace-after-continuation-character E: bad-test-in-menu-item E: unparsable-menu-item W: incorrect-package-test W: duplicated-tag-in-menu-item W: menu-item-missing-important-tag W: menu-item-contains-unknown-tag W: menu-item-uses-icon-none W: menu-item-needs-tag-has-unknown-value E: menu-item-adds-to-root-menu W: menu-item-uses-apps-games-section W: menu-item-creates-new-section E: menu-item-creates-new-root-section The check follows current practice on two sections: Window-managers -> WindowManagers Screen/Screen-saver -> Screen/Save The menu docs will be updated to match. * (lib/pipeline.pl) Bugfix: Use syscall SYS_exit when exiting from children that failed to exec, because the perl function exit() would run END blocks and such. * (checks/standards-version) By now, 2.2.0.0 is more than one year old; mark it as 'ancient'. * (reporting/html_reports) Bugfix: Apply quotehtml() to the tag text *before* adding links to bug pages. * Many small adjustments to checks: * (checks/scripts) Be less picky about package names when checking dependencies. (The check was confused by the package blt4.2) * (checks/description) Ignore case when looking for synopsis lines that start with the package name. * (checks/files) Don't give executable-in-usr-doc error for executables in /usr/doc/examples/, since that directory does contain examples, and it's already flagged by old-style-example-dir. * (checks/control-files) Don't warn about references to "/tmp" unless the full filename is "/tmp" or "/var/tmp". * (checks/binaries) Split tag "binary-not-linked-against-libc" into "program" and "library" tags. * (checks/files, checks/scripts) New tag "executable-manpage", which replaces "executable-not-elf-or-script" for manpages. * (checks/files) Shortened file-directly-in-usr-share-not-in-a-sub-directory and file-directly-in-usr-doc-not-in-a-sub-directory to just file-directly-in-usr-share and file-directly-in-usr-doc. * (checks/md5sums) Added md5sums-control-file-is-empty tag, to avoid spewing many file-missing-in-md5sums errors in that case. * (checks/scripts) Suppress interpreter-not-absolute tag if the filename ends in .in and the interpreter looks like #!@PERL@ * (checks/control-files) Suppress mknod-in-maintainer-script tag if mknod was called with -p. * (checks/shared-libs) Emit no-shlibs-control-file tag for each shared lib found, rather than just once. * (checks/files) Emit old-style-example-dir only for directories, not for every file. * (checks/perl) perl-script-needs-dependency Bugfix: realize that a package does not need to depend on itself. * (checks/description) possible-unindented-list-in-extended-description: Only emit this tag if there are at least two things that look like list items. * (checks/scripts) List /usr/bin/env as a known interpreter. * (checks/binaries) unstripped-binary-or-object: Instead of an exception for /lib/modules specifically, suppress this tag for all .o files. * (checks/control-files) Bugfix: check for == bashism works now. * (checks/files) Introduced new tag lengthy-symlink, which supersedes and corrects the relative-symlink-enters-same-toplevel-directory tag. * (man/lintian.1) Document the check and collection scripts added to lintian in the last few months. (oops) * (collection/perlmods, checks/perl) Refined scanner so that fewer spurious perl-script-uses-unknown-module tags are emitted. Perl tags are no longer 'Experimental'. -- Richard Braakman Mon, 24 Aug 1998 18:01:40 +0200 lintian (0.7.5) unstable; urgency=low * (checks/perl) Exchanged order of arguments in perl-script-needs-dependency tag, for clarity. * (info/perl-modules) Added some module dependencies. * (info/overrides) More overrides. * (checks/shared-libs, checks/shared-libs.desc) Fixed: erroneous shlib-missing-in-control-file if a shared library had more than one symlink to it. * Renamed obsolete-shlib-entry-in-control-file to unused-shlib-entry-in-control-file. * (checks/copyright-file) Changed size-requirement for copyright-file-is-gpl tag from 17000 to 12000 bytes, because some packages (casio) extracted only the "TERMS AND CONDITIONS" part, which is shorter. * (reporting/html_reports) Count packages as well as tags, in tag index. * (checks/control-files, checks/control-files.desc) New tag: W: mknod-in-maintainer-script * (checks/files, checks/files.desc) New tags: W: package-installs-into-etc-rc.boot (rc.boot is obsolete) W: extra-license-file (for COPYING files, etc) * (checks/shared-libs, frontend/lintian) Get rid of dependency on File::Basename; use a simple regexp instead. -- Richard Braakman Fri, 14 Aug 1998 17:33:37 +0200 lintian (0.7.4) unstable; urgency=low * (collection/perlmods) Fixed: perl script scanner is now POD-aware. This should cut down on the number of spurious warnings. * (doc/CREDITS) Install credits file. My apologies if I have forgotten anyone. There were far more people than I would have guessed -- Thanks to all! :-) * (checks/perl) Skip 'autouse' keyword when parsing use and require directives. * (frontend/lintian) When processing a .changes file, turn md5sum checks OFF by default. A new -m flag is provided to turn them back on. The .dsc file is still always checked. * (frontend/lintian) Saner interrupt handling. Lintian now dies immediately if ^C is hit, and does remove the temporary lab (if any). This is mostly a side effect of avoiding system() (in favour of the new functions in lib/pipeline.pl), but did involve some tinkering about with perl's signal handling. Thanks to Ruud de Rooij and Graydon Hoare for their help. This closes bug#24975, reported by Yann Dirson. * (checks/copyright) Fixed copyright-is-gpl tag so that it actually works. * (lib/dep.pl, checks/perl, checks/perl.desc, info/perl-modules) Much smarter perl module analysis. Lintian now has a list of perl modules and the packages that provide them (in info/perl-modules), and a dependency processor (in lib/dep.pl), and uses these to check "use" and "require" lines in perl scripts. New tags: W: perl-script-needs-dependency (Experimental) W: perl-script-uses-unknown-module (Experimental) Tag "script-needs-full-perl" has been dropped. -- Richard Braakman Mon, 10 Aug 1998 19:02:53 +0200 lintian (0.7.3) unstable; urgency=low * (frontend/lintian) Fixed: --display-infotags option wasn't working. * (reporting/harness, reporting/html_reports) Have the archive check generate infotags but not display them on the web pages. This way they are still available in the log file. * (checks/fields, checks/fields.desc) New tag: W: doc-package-depends-on-main-package * (checks/menus, checks/menus.desc) New tag: E: bad-menu-file-name This is emitted for packages that install "/usr/lib/menu/menu", which overlaps with the menu package. (I've seen it happen a couple of times). * (checks/binaries, checks/binaries.desc) Allow unstripped-binary-or-object for any package with "debug" in its name. (This is in addition to the exeption already made for "-dbg"). Allow binary-not-linked-against-libc for libc itself :-) * (lib/pipeline.pl) New helper functions for starting pipelines from perl scripts, without involving the shell. This makes it easier to pass filenames literally, and often saves a shell invocation. * (collection/diffstat, frontend/lintian, unpack/*) Use the new pipeline functions. * (checks/description, checks/description.desc) New tag: E: description-is-debmake-template * (reporting/html_reports) Quote < and > in displayed tags (such as occurs in email addresses). This fixes the maintainer-name-missing tag output. * (checks/copyright-file, checks/copyright-file.desc) New tag: E: copyright-file-is-gpl Generated for copyright files that contain the complete GPL text. -- Richard Braakman Thu, 6 Aug 1998 23:39:18 +0200 lintian (0.7.2) unstable; urgency=low * (unpack/unpack-srcpkg-l1, unpack/unpack-binpkg-l1, unpack/unpack-binpkg-l2) Speedup: replaced system("mkdir ...") with mkdir() calls. * (unpack/unpack-binpkg-l1) Speedup: avoid extracting control info twice. More speedups are possible here. * (unpack/unpack-binpkg-l1, unpack/unpack-binpkg-l2) Speedup: avoid using dpkg-deb to unpack debs; construct a pipeline with ar, gzip, and tar instead. It turns out to be far faster. * Together, these changes made for a speed increase of some 30% when checking packages that have to be unpacked. -- Richard Braakman Wed, 5 Aug 1998 19:18:44 +0200 lintian (0.7.1) unstable; urgency=low * (reporting/html_reports) Fixed: Print bug number with tags that were reported as bugs. * (checks/scripts, checks/scripts.desc) Added /usr/bin/expect (provided by expect) as known interpreter. * (unpack/unpack-srcpkg-l2) Fixed: chmod -R the right directory when unpacking a source package. * (collection/diffstat, collection/diffstat.desc) New collection script that runs diffstat on the Debian diff. * (debian/control) Depend on diffstat, version >= 1.27-1 so that it can parse Debian diffs. * (checks/debdiff, checks/debdiff.desc) New check that look at the filenames included in the Debian diff. New tag: W: patch-failure-file-in-diff foo.rej * (checks/control-files, checks/control-files.desc) New tag: W: dpkg-print-architecture-in-maintainer-script (dpkg --print-installation-architecture should be used there) -- Richard Braakman Wed, 5 Aug 1998 14:58:02 +0200 lintian (0.7) unstable; urgency=low * (reporting/html_reports) - Rewritten (more modular). - Create a page for each different tag, which gives the lintian-info for that tag and then lists all occurrences of that tag, with each tag line also being a link back to the page for the package in which it occurs. This closes bug#21390, reported by Gregory S. Stark . - Instead of listing the lintian-info text with every different tag in every package, make every tag a link to the page for that tag (which will have the lintian-info for it at the top). This should make the reports a lot smaller, and also more readable. - Make a "Sorted by tag types" page and link to it from the index page. * (doc/TODO) Entries [L3] and [L4] now complete. * (checks/spelling, checks/spelling.desc) Check README.Debian file as well, since we now collect it anyway for the readme-debian-is-debmake-template tag. New tag: E: spelling-error-in-readme-debian * (checks/fields) Added hurd-i386 to the list of known architectures, at the request of Marcus Brinkmann . * (checks/scripts, checks/scripts.desc) Added trs to the list of known interpreters, as /usr/bin/trs provided by konwert. Suggestion by Yann Dirson . This closed bug#24998. * (checks/files) - Fixed: tags dir-in-user-local and file-in-usr-local did not print the filename involved. - Fixed: some tags were erroneously output as "setuid-gid-binary" even though only one of suid or sgid was set. * (checks/fields) - Fixed: change a few cases of "maintainer-address-malformed" to "maintainer-name-missing". -- Richard Braakman Tue, 4 Aug 1998 19:45:47 +0200 lintian (0.6.1) unstable; urgency=low * Inserted GPL boilerplate text in every file whose format allowed comments. * (doc/lintian.sgml) Use new tag. * (info/overrides) New override for the file in kbd-data with the strange name. Having lintian handle that file correctly would be too expensive. This "closes" bug#25107. * (checks/control-files, checks/control-files.desc) New tag: use-of-killall-in-maintainer-script (experimental) Added at the recommendation of Santiago Vila . This closes bug#22206. * (depcheck/deppages.pl, reporting/html_reports) Added arm and hurd-i386 to the list of architectures to check. * (doc/libtool-rpath-workaround.txt, checks/binaries.desc) Revamped doc file at Rob Browning's suggestion, and renamed it to doc/libtool-workarounds.txt because it describes both -rpath and -lc workarounds. Updated the info for the tags binary-not-linked-against-libc and binary-or-shlib-defines-rpath to refer to the new file. * (doc/desc-files) Moved from private/DESC. Briefly describes the meanings of the fields used in lintian's .desc files. * (doc/TODO) Updated and restructured version of what used to be in private/TODO, various bugreports and mailed suggestions. This will become the central place for potential improvements to lintian. I hope that having it in /usr/doc/lintian will inspire some people to help. -- Richard Braakman Mon, 3 Aug 1998 16:07:54 +0200 lintian (0.6.0) unstable; urgency=low * (checks/shared-libs) Corrected bug that made lintian complain about shared modules without version info (thus ending in ".so") with a "non-dev-pkg-with-shlib-symlink" warning. * (info/overrides) Added overrides: libtricks is like fakeroot; nothing is compiled with it. libtricks: no-shlibs-control-file slrnpull has been split off from slrn, and shares some of its overrides. slrnpull: non-standard-dir-perm var/spool/slrnpull/ 2755 This fixes bug#24668, reported by Joey Hess. * (collection/perlmods) Collector script that greps perl scripts for use and require directives. * (checks/perl, checks/perl.desc) New check script that checks perl "use" and "require" directives. New tags: E: script-needs-perl-version (Experimental) W: script-needs-full-perl (Experimental) I: cannot-parse-perl-directive * (frontend/lintian) New flag --print-version that prints the unadorned version number. * (reporting/config, reporting/html_reports) Instead of requiring $LINTIAN_VERSION in the config file, query the lintian frontend for the version number. -- Richard Braakman Sun, 19 Jul 1998 16:41:39 +0200 lintian (0.5.2) unstable; urgency=low * (reporting/html_reports) Lintian web pages now use dists/unstable/main in the path for "Getting Lintian", rather than hamm/hamm, where it doesn't exist anymore. (Pointed out by Ruud de Rooij) * (checks/scripts) Add /usr/sbin/install-fvwmgenmenu as a known interpreter. This fixes bug#23783, reported by Joost Kooij. * (checks/binaries, checks/changelog-file, checks/manpages) [speedup] Don't skip blank lines in file-info file, since there shouldn't be any. * (checks/manpages.desc) - Added note to manpage-in-wrong-directory info that only sections 1 through 9 should be used. Refer to policy 5.1. I had a rewrite of the manpages check in the works, but I deferred it to a later lintian version. * (info/overrides) New override from Joel Klecker: binutils: no-shlibs-control-file. Added overrides supplied by Joey Hess, in bugreport #24425. * (checks/changelog-file) Corrected regexp used for changelog-file-not-compressed; This really fixes bug#23683, reported by Joey Hess. * (checks/files) New warning: package-installs-perllocal-pod, inspired by Manoj Srivasta's recent bugreports about such files. * (checks/fields.desc) No longer experimental: E: alternates-not-allowed E: versioned-provides E: bad-version-in-relation -- Richard Braakman Sun, 12 Jul 1998 22:04:04 +0200 lintian (0.5.1) unstable; urgency=low * Added overrides supplied by Ray Dassen. * (frontend/lintian-info) Made lintian-info aware of X (experimental) tags. (oops) * (lib/read_taginfo.pl) Add a paragraph to the info output for experimental tags that explains what experimental status means. * Added test package "relationships" to test weird dependency lines. * (frontend/lintian) Instead of specifying /usr/bin/lintian-info, use just lintian-info and let the path search find the script. -- Richard Braakman Tue, 7 Jul 1998 16:27:56 +0200 lintian (0.5.0) unstable; urgency=low * (checks/menus) The menu package doesn't need to check for the existence of update-menus :-) * (testset/runtests) A harness for running regression tests on Lintian. * (testset/*) A collection of broken packages on which to test Lintian. Currently, only an empty package is provided for testing. * (debian/rules) Run the tests in the build target. * (checks/*.desc) Added "Tested: empty" to tags that are tested for with the "empty" testpackage. * (collection/file-info) Use a better parser for the index file, so that weird filenames are handled correctly. This fixes bug#24079. * (collection/md5sums) Adapt index-file parser from file-info collector, this saves a "find" operation on the unpacked tree. * New test package filenames-1, which contains various evil filenames. * (checks/shared-libs, checks/menus, checks/manpages, checks/files, checks/control-files) Handle filenames that contain spaces correctly. * (frontend/lintian, reporting/config) Update version number. This fixes bug #23555, reported by Yann Dirson. These will have to be kept in sync manually, because the lintian source package has to be directly usable by the lintian web page generator. * (checks/changelog-file) Allow the upstream changelog to be a symbolic link. As a side-effect, allow it for the Debian changelog too. This handles bug#23300, reported by Manoj Srivastava. * (checks/changelog-file, checks/changelog-file.desc) The wrong-name tags are now warnings, not errors, because the relevant section of policy uses "should usually". This fixes bug#23757, reported by Gregory S. Stark. * (checks/changelog-file) Limited the changelog-file-not-compressed tag to only complain about changelog and changelog.Debian, because policy 5.8 does not mention other changelogs. (These would fall under section 5.3, I guess.) This fixes bug#23683, reported by Joey Hess. -- Richard Braakman Sat, 4 Jul 1998 15:33:31 +0200 lintian (0.4.8) unstable; urgency=low * (checks/fields) New error tag: "multiline-field" flags control fields that span multiple lines when they shouldn't. (According to the Packaging manual, "Except where otherwise stated only a single line of data is allowed"). * (checks/fields) Check dependency relationship fields as well. New tags: E: alternates-not-allowed (generated for use of | in Provides, Conflicts, and Replaces fields) E: versioned-provides (generated for Provides fields that use a versioned package name) W: obsolete-relation-form (generated for use of < and > in versioned relationships) W: bad-version-in-relation (generated if the version number in a versioned relation is not syntactically correct) E: bad-relation (generated if lintian cannot parse an element of a dependency line) W: package-relation-with-self * (checks/fields) Bugfix to maintainer-not-full-name tag, it works now. Added maintainer-address-looks-weird warning for obscure cases. I doubt anyone will ever see it. * (checks/fields) Added new-essential-package warning, to highlight such packages. * (checks/fields.desc) Descriptions of new tags. -- Richard Braakman Sun, 7 Jun 1998 17:58:19 +0200 lintian (0.4.7) unstable; urgency=low * Removed Christian's name wherever it appeared as a contact address. * (depcheck/buglist) Entered newly reported bug numbers for dependency problems. * (checks/menus) Distinguish between install-docs and install-docs -r. (closes #23049). * (checks/files) Added new tag backup-file-in-package. This warns about emacs-style backup files that got installed in a package. * (frontend/lintian) Allow I: tags to be overridden just like any other. * (frontend/lintian) Add support for "Experimental" tags. These are handled like other tags, but an "Experimental: yes" flag in the tag description tells lintian to output them with "X:" rather than "E:" or "W:" or "I:". This is used for new tags that might still misbehave. * (doc/lintian.sgml) Add a paragraph to explain the new tag type. "The displayed message is one of types listed above, but has been flagged as `experimental' by the Lintian maintainers. This means that the code that generates this message is not as well tested as the rest of Lintian, and might still give surprising results. Feel free to ignore Experimental messages that do not seem to make sense, though of course bug reports are always welcomed." -- Richard Braakman Sat, 6 Jun 1998 20:30:36 +0200 lintian (0.4.6) unstable; urgency=low * (debian/control) Lintian now depends on perl, since perl-base is not enough. It already uses Text::Wrap, which is only in perl, and soon it will also use Getopt::Long. * (reporting/html_reports) Report all dates in GMT, in rfc822 format. * (debian/rules) In clean target, delete byte-compiled python files (*.pyc) as well. * (depcheck/dependencies.py) Check "Cannot satisfy without packages in base" before checking "Cannot satisfy with required packages", because a dependency will be listed in only one category, and the former is more important to flag. * (frontent/lintian) Rewrote option handling to use Getopt::Long, thus allowing nifty features like bundling of single-character options. Closes wishlist bug#22566. -- Richard Braakman Fri, 29 May 1998 11:25:31 +0200 lintian (0.4.5) unstable; urgency=low * (depcheck/) New directory, containing scripts for generating reports about broken dependency relationships in the main distribution. These are not installed by the lintian deb, they are intended for use by the lintian web pages, which use the source package directly. * (reports/harness) Added hooks to call the depcheck scripts to generate the depcheck page. * (reports/html_reports) Add links from the lintian root page to the depcheck page. * (checks/menus) A tag was still generating "existance" while its description had been corrected to "existence"; the html report generator complained about that. Fixed. * (unpack/list-binpkg) Bugfix in lintian --setup-lab. Instead of looking for files in binary-$arch and binary-all, look only in binary-$arch and follow the symlinks. * (lib/text_utils.pl) Changed "&maint;" name from Christian Schwarz to Richard Braakman, and changed mail address to lintian-maint@debian.org. * (checks/standards-version) If checking a package with a Standards-Version that is newer than the one lintian is written for, warn that lintian should be upgraded. (closes: #22919). * (checks/standards-version.dsc) New tag: newer-standards-version * (checks/debian-readme) New check: at James Troup's suggestion, scan for unmodified deb-make templates in README.Debian files. New tags: readme-debian-is-debmake-template readme-debian-contains-debmake-template * (checks/debian-readme.desc) Describe new tags. * (collection/debian-readme) New collection script for README.Debian file. * (man/lintian.1) Describe new check and collection script. * (doc/libtool-rpath-workaround.txt) Explain how to achieve the same result without touching configure.in and rerunning autoconf, provided certain conditions hold. * (lib/text_utils.pl, frontend/lintian-info, reporting/html_reports) Do not split words that are longer than a line. This fixes the "Poli cy" bug in the lintian HTML reports. * (checks/standards-version.desc) Corrected the URL to Christian's policy upgrading checklist, which seems to have changed from "upgrading.html" to "upgrading-checklist.html". * (info/override) Removed another *.pm warning, I missed it the last time. -- Richard Braakman Thu, 28 May 1998 15:51:37 +0200 lintian (0.4.4) unstable; urgency=low * (checks/scripts) Suppress script-not-executable warnings for files in /usr/lib that match *.pm. These are perl modules, which often have a #!/usr/bin/perl line at the top but are not intended to be executed directly. * (info/override) Removed now-suppressed warnings from the overrides file. * (info/override) Added more overrides. (closes #21028). * (checks/scripts) At Oliver Elphick's suggestion, do not emit *-script-but-no-*-dep tags or csh-considered-harmful tags for scripts that are not executable. (These already produce a script-not-executable warning). * (checks/binaries) At Yann Dirson's suggestion, added a tag for stripped binaries that still have the .comment and .note sections. This tag is info-level, thus not normally displayed. dh_strip and install -s have been patched to strip these sections, but most of the distribution has not been recompiled with the patched versions. * (checks/binaries.desc) Described the new tag. (closes #22495). * (man/lintian.1) Documented the options that were added in lintian 0.4.3. * (checks/fields) Produce informational tags no-section-field and no-priority-field. These were removed in a previous version, because nearly all packages do not pass -isp to dpkg-gencontrol when building packages, but the new handling of info-level tags makes them useful again. -- Richard Braakman Sat, 16 May 1998 14:10:30 +0200 lintian (0.4.3) unstable; urgency=low * Christian added more overrides. * debian/control: New maintainer. * debian/copyright: Mention that lintian has no separate upstream source. * debian/rules: Got rid of 'dirs' file. * Moved manpages from doc/ to man/ in source package. * debian/rules: Restyled :-) * New overrides, read all about them in /usr/share/lintian/info/overrides. (closes #22001) * Corrected typo in frontend, added --allow-root option at Johnie Ingram's suggestion to override lintian's refusal to run as root. (closes #22162). * Ran ispell over .desc files, fixing lots of typos, including the word "existance" which occurs in several tags. * checks/files: At the advice of the python maintainer, added a warning against files installed in /usr/lib/python1.5 that are not in the site-packages subdirectory. (closes #22236) * checks/fields: Reduced unknown-field-in-dsc and unknown-field-in-control tags from "warning" to "info", because such fields can only be introduced deliberately anyway. ("info" tags are not normally reported, but can be queried when someone is interested.) (closes #20521) * Made the above comment about info tags true, by adding a --display-info option. -- Richard Braakman Mon, 4 May 1998 17:31:34 +0200 lintian (0.4.2) unstable; urgency=low * This release contains updates for Policy 2.4.1 * Fixed `changelog' check: - don't report not-max-compression tag if changelog file is a symbolic link (thanks to Santiago for noticing that! fixes:bug#20842) * Improved `description' check: - recognize if extended description is `Missing' (fixes:bug#21091) * Changed `files' check: - symbolic links within /etc and /var have to be relative! * Fixed `scripts' check: - package name is "blt4.2", not "btl4.2" :) * Updated `shared-libraries' check: - check if postinst calls ldconfig if shared libraries are installed in a directory controlled by ld.so (fixes:bug#20414) [2 new tags] * Changed `standards-version' check: - added Standards-Version 2.4.1 - only check first there digits of Standards-Version field * Changes to the `lintian' frontend: - unused overrides are displayed per package - display `Processing changes file...' - use $TMPDIR environment variable for creation of the temporary lab (fixes:bug#21092) - clean up lab if C-C is pressed * Added more overrides -- Christian Schwarz Wed, 15 Apr 1998 19:57:09 +0200 lintian (0.4.1) unstable; urgency=low * Fixed `changelog-file' check: - don't treat "NEWS" files as changelog files (thanks to Manoj for pointing this out! fixes:bug#20787) * internal: small changes to the reporting harness -- Christian Schwarz Tue, 7 Apr 1998 21:42:51 +0200 lintian (0.4.0) unstable; urgency=low * Changes which make it possible to check the whole archive with Lintian each day without having to check all packages all the time: - Reworked creation and handling of info/{binary,source}-packages files: - the list files contain a version number now, which allows checking for old file formats - each entry has a timestamp now - don't remove $LAB/info/ directory on --setup-lab - just process changed packages when doing --setup-lab - added command line option: `-p X' makes lintian only process all packages which are listed in file X - changed meaning of command line option `-U': specifies info to collect _in addition to_ the usual info (necessary to extract the changelog files on master--see below) * Improved `binaries' check: - objects and binaries in a *-dbg package may be unstripped - libraries in lib/profile or lib/debug may not be stripped (suggested by Fabrizio) [1 new tag] * Added new `changelog' check (thanks to Juan Cespedes for the idea! fixes:bug#19695) * Improved `control-files' check: - improved RE that searches maintainer scripts for /tmp security bugs * Improved `description' check: - fixed RE to check for description-starts-with-package-name (thanks to Roderick Schertler) * Fixed `fields' check: - internal: check for source pkg using "-l dsc" instead of "-e dsc" * Fixed `files' check: - disabled possible-name-space-pollution tag since policy is not defined yet * Improved `manpages' check: - fixed silly typo in binary-without-manpage tag info (thanks to Robert Edmonds for noticing that!) - disabled tag binary-without-manpage for `versioned binaries' (thanks to Dirk for the suggestion! fixes:bug#20186) * Fixed `menu' check: - report maintainer-script-does-not-check... tag only once per package and maintainer script - recognize `$(which update-menus)' as valid check for the existance of update-menus; same for install-docs (thanks to Fabrizio for pointing this out!) - recognize `command -v update-menus' as valid check for the existance of update-menus; same for install-docs (thanks to Adam P. Harris for pointing this out! fixes:bug#20759) - fixed tag infos (thanks to Adam P. Harris for the input! fixes:bug#19810) * Improved `scripts' check: - added new interpreters: nawk, pike, rexx, regina, burlap, wish8.0, bltwish (fixes:bug#20223) * Improved `shared-libs' check: - added check if shared libraries contain non-pic code (thanks to Gregory S. Stark for the idea and the patch! fixes:bug#19249) [1 new tag] * Added `changelog' collector script This makes it possible for Lintian to extract all changelog files on master for use by Apt (fixes:bug#20546) * Incremented LAB_FORMAT version to 3 because of incompatible changes in the objdump-info collector script * Internal: fixed bug in read_dpkg_control() utility function: empty tags have not been handled correctly * Internal: html-reporting tool: don't chop of text after hash (#) * Added a lot new overrides and removed unused overrides (fixes:bug#20017,bug#20082,bug#19562) -- Christian Schwarz Mon, 6 Apr 1998 21:58:42 +0200 lintian (0.3.4) unstable; urgency=low * Bug fix release: - check if lab in /tmp already exists (fixes security bug#19799) Thanks to James Troup for noticing this and thanks to Joey Hess for providing a patch! * Added one override entry -- Christian Schwarz Tue, 17 Mar 1998 23:28:38 +0100 lintian (0.3.3) unstable; urgency=low * Bug fix release: - `unknown-control-file du' message disappeared - fixed `executable-in-usr-doc' to not display files in /usr/doc//example - fixed tag parameters for bad-owner-for-doc-file dir-or-file-in-opt * Added overrides -- Christian Schwarz Mon, 16 Mar 1998 08:44:34 +0100 lintian (0.3.2) unstable; urgency=low * This is (intentionally) an `unstable' upload--we've decided to not include the lintian package in `frozen' since it doesn't make sense to maintain a `stable' and `unstable' version of a package in such an early state. The maintainers should get Lintian from the `unstable' distribution to check `frozen' uploads though. * Added `menus' check. This check checks for common mistakes WRT /usr/lib/menu and /usr/share/doc-base files. [16 new tags] * Fixed `shared-libs' check: - removed `shared-library-uses-its-soname' check since this produced way too many false alarms (thanks to David Engel for the input!) * Fixed `binaries' check: - skip `unstripped-binary-or-object' check for kernel modules (thanks to Michael Meskes for noticing that!) - fixed pattern which parses the `file' command's output to be able to handle files without info text correctly (thanks to James R. Van Zandt for pointing this out!) - mention in tag info that shared libs should be stripped with `--strip-unneeded' options (thanks to Brian for pointing this out!) * Improved `manpages' check: - check if manual pages are compressed with gzip -9 (thanks to Holger Rusch for the idea!) [2 new tags] * Improved `files' check: - for files in /usr/doc: - executables may only be in /usr/doc//examples - files should be owned by root.root (thanks to Joey) - files should not be directly placed into /usr/doc/ (fixes:bug#19485) - no files may be installed into /tmp and /var/tmp - renamed file-directly-in-usr-share to file-directly-in-usr-share-not-in-a-sub-directory (thanks to Santiago) - fix tag info for "symlink-should-be-absolute" [3 new tags] * Improved `description' check: - lists (starting with a dash or asterisk) have to be indented (thanks to cpb4@ukc.ac.uk for the idea and the patch! fixes:bug#19481) [1 new tag] * Fixed `scripts' check: - packages with python scripts might depend on python or python-base (thanks to Gregor Hoffleit for pointing this out and to Richard for the patch! fixes:bug#19162) - remove wrong policy quotation for `script-not-executable' tag * Fixed `init.d' check: - ignore update-rc.d calls in preinst and postinst scripts, if "remove" option is specified (thanks to Roman Hodek and Herbert Xu for pointing this out--this change also removes a lot of other false alarms WRT update-rc.d calls) * Improved `control-files' check: - scan maintainer scripts for references to /tmp or TMPFILE since this might be insecure (thanks to Topi Miettinen for the help!) [1 new tag] * Improved `copyright-file' to issue a special error message if a symbolic link /usr/doc/foo refers to a directory outside of /usr/doc (thanks to Darren for pointing this out!) [1 new tag] * Fixed `fields' check: - added architecture `arm' (thanks to Roman Hodek) * Fixed `lintian' frontend: - run lintian scripts with LC_ALL=C (thanks to Yann for pointing this out! fixes:bug#19166) - changed handling of `#' comments: for comments in the overrides file, the hash (#) has to be in the first column - changed all tags which used `#' for comments * Fixed `lintian-info': - multiple HTML tags haven't been converted into text format in all cases - preformatted text is now handled correctly - merged with code that produced the HTML reports - code much cleaner now * Improved Lintian's documentation: - fixed libtool/rpath workaround file: don't wrap long line (Thanks to Yann for pointing this out!) - stress in docs that the "lintian-maint@debian.org" address should be used to contact the lintian authors (thanks to Adrian Bridgett for pointing this out!) * Added more overrides (fixes:bug#19163) -- Christian Schwarz Sun, 15 Mar 1998 23:00:31 +0100 lintian (0.3.1) unstable; urgency=low * Added `scripts' checks and collector, written by Richard. This check checks the #! lines of scripts in a package. [40 new tags] * Added `spelling' checks, written by Richard. This check searches the "Description:" field and the "copyright" file for common spelling errors (typos). [2 new tags] * Improved `files' check: No package should install files directly into /usr/share. New tag: file-directly-in-usr-share * Fixed `files' check WRT files in /usr/lib/sgml and /etc/emacs/site-start.d: - ignore directories and symbolic links when checking for correct file permissions - display permissions in octal format (fixes:bug#18866,#19026) * Fixed `control-files' check: really ignore `control' control file * Improved `lintian' frontend: - parse command line parameters before reading the configuration file. With that, `lintian -h' even works if the cfg file has errors. (fixes:bug#19031) - issue a warning and ignore `-all' option if packages are specified at the same time (in older versions, this make lintian abort with an error message) - really check all packages listed in a .changes file (fixes:bug#18851) * Fixed `md5sums' check to handle file names with spaces correctly * Put conffile /etc/lintianrc back in (fixes:bug#19031) * Include information about libtool/rpath workaround by Yann Dirson (Thanks Yann!) * Added more overrides * Internal changes: - Each error tag has a (bug) `Severity' field now which can be used to file bug reports with the correct severity - Each helper script has an `Author' field now - Fixed `unused overrides' report -- Christian Schwarz Sat, 7 Mar 1998 18:46:31 +0100 lintian (0.3.0) unstable; urgency=low * Lintian now also works without a configuration file and without a static laboratory! (Since Lintian is so easy to use now, there are no excuses for not using it! ;-) * Changed handling of lab: - if no lab is specified, it is created dynamically by the `lintian' command (the average use does not have to worry about the lab anymore) - since the dynamically created lab is placed in /tmp, several users can run lintian at the same time without having to know of each other - the commands `lintian-setup' and `lintian-remove' have been removed (fixes: bug#18707). - a `static' laboratory can be created/updated or removed by specifying the `--setup-lab' or `--remove-lab' options for the `lintian' command - added a lot of sanity checks to make removal of lab less risky :) * Changed handling of configuration file: - configuration file is not necessary anymore - changed search path for the configuration file to: $LINTIAN_CFG/lintianrc $LINTIAN_ROOT/lintianrc $HOME/.lintianrc /etc/lintianrc - all configuration variables have reasonable defaults and can be overwritten by environment variables of the same name - removed configuration file /etc/lintianrc--the file is now installed as /usr/doc/lintian/lintianrc.example - renamed all configuration variables to LINTIAN_xxxx - relaxed syntax of configuration file. It's now also possible to use `~' and `$HOME' in the configuration file (fixes: bug#18559) - added LINTIAN_ARCH configuration variable so that Lintian handles distribution directories correctly if these contain several architectures * Changed parsing of command line arguments: - if a package name is specified (instead of a file), look for this package in the distribution directory and in the lab (in earlier version, only the distribution directory was searched for packages) - added `--all' option to check the whole distribution (in earlier version, this was the default operation) - removed buggy `-n' command line option (this option wasn't really useful anyways) - the `-h' option displays a short description of all available options now - debug option `-d' can be specified several times to increase the verbosity level - recognize `--' as the end of options on the command line * Improved overrides handling: - the override files does not include the leading `[EW]:' anymore - the parameters of an error tag may be omitted to disable a certain tag for a whole package - when checking the full distribution, unused overrides are displayed - cleaned up overrides file and added/removed a few overrides * Improved documentation: - there is now a `Lintian User's Manual' which explains how to setup and use Lintian to check ones packages, and which gives insight on the design issues behind Lintian - added a manual page for lintian-info (has been split off from lintian(1)) - updated the documentation files and the example lintianrc file - merged QUICKSTART file into the README * Improved `binaries' check: check if a binary or shared library defines RPATH (Thanks to Ray Dassen for the suggestion! fixes: bug#18519) New tag: binary-or-shlib-defines-rpath * Improved `files' check: WRT symbolic links: - issue errors instead of warnings - links between different top-level directories should always be absolute - check for relative links which contain to many `../' segments - check for symbolic links which contain segments like `foo/../bar' (Thanks to Manoj for the patch and the ideas!) general: - some additional checks for wrong file permissions New tags: symlink-has-too-many-up-segments relative-symlink-enters-same-toplevel-directory symlink-contains-up-and-down-segments bad-permissions-for-etc-cron.d-script (renamed) bad-permissions-for-etc-emacs-script executable-in-usr-lib-sgml * Fixed `control-files' check: check file permissions correctly; also check file owners of control files New tag: control-file-has-bad-owner * Fixed `copyright' check: check for package dependencies correctly (fixes: bug#18611) * Improved `conffiles' check: files in /var/lib/games should not be tagged as conffile, in general. New tag: score-file-may-not-be-conffile * Improved `manpages' check: files in /usr/X11R6/man/man6 usually indicate X11 games in the wrong directory. New tag: x11-games-should-be-in-usr-games * Fixed `init.d' check: skip comments in init.d file (Thanks to Joey for pointing this out!) - don't collect info for unselected collector scripts (internal bug) * Internal changes: - don't refer to package `ftp.debian.org' for bugs in the $LINTIAN_DIST directory--refer to package `general' instead - made list-binpkg and list-srcpkg more verbose - made lintian-info less verbose (don't give detailed info more than once) - create control-index file which lists all files in control.tar.gz - fix permissions in the lab after a package has been unpacked - chdir to lab dir before running the checker and collection scripts (this makes it easier to write checks in awk or even sh) - pass vars to helpers via environment - don't link static info/* files into lab - implemented dpkg_read_control to parse all controls - don't use dpkg-deb to get control information about a .deb - collection and checking scripts `registry' is now done dynamically - move tag descriptions from collector and checker scripts into separate `.desc' files - each base directory in the lab has a .lintian-status file now, which can be used to detect incompatible lab changes, for example - moved unused files and internal documents into a private/ directory of the source package - cleaned up code -- Christian Schwarz Sun, 1 Mar 1998 23:16:15 +0100 lintian (0.2.4) unstable; urgency=low * Added `fields' check for control fields. (That's the first check written by Richard--and it's all Perl!!! ;-) [32 new tags] * Added `binaries' check. [6 new tags] * Improved `shared-libraries' check: - use objdump instead of ldd and ldconfig - this should fix all problems where Lintian couldn't check python/perl dynamic objects, etc. - allow cross-checking of packages, e.g., to check non-i386 .debs on a i386 system (note, that this requires a multi-arch objdump) - recognize if the shared library uses its SONAME New tag: shared-library-uses-its-soname * Improved `control-files' check: - Don't check the `control' control file for correct permissions, because dpkg doesn't care and this file isn't installed on the systems anyways * Improved `files' check: - Games are allowed to be setgid games - svgalib programs are allowed to be setuid root - usually, files in /usr/doc/foo should not be executable New tag: executable-in-usr-doc * Fix bug in `manpages' check: symlinks in /usr/bin, etc. also need a manual page! (Thanks to Joey Hess for pointing this out!) * Use `.' instead of `source' in lintian-{remove,setup} /bin/sh scripts (fixes bug#18421) * Define default values for configuration variables in lintian-{remove,setup} scripts (fixes bug#18354) * Fix bug in `copyright-file' check: Don't report usr-doc-symlink-to-foreign-package if we don't know whether the referenced package comes from the same source or not. (Thanks to James A. Treacy for pointing this out!) * Internal change: - process source packages before binary packages so that a binary package check can use info from the source packages (if these are unpacked, too) * Added more override entries--and removed a few obsolete entries (the checks are smarter now! :) * Added "Depends: binutils" for `objdump' * Changed maintainer email address to lintian-maint@debian.org -- Christian Schwarz Sat, 21 Feb 1998 22:39:46 +0100 lintian (0.2.3) unstable; urgency=low * Fixed manual-pages check: Check for the `undocumented' symbolic link failed on X11 manual pages (fixes #18343). * Improved files check. New tag: etc-cron.d-script-tagged-executable * Improved control-files check: - the `du' control file is not allowed anymore - check file permissions of control files New tags: control-file-has-bad-permissions * Fixed bug: ldd-info collection script stopped when ldd failed * Fixed (internal) bugs: - collect data for collection scripts too - don't collect init.d data every time again * Error handling code improved again :) * The lintian frontend script checks if it has root permissions and aborts if this is the case. (Running it as root is unnecessary and simply too dangerous.) * Added one override entry -- Christian Schwarz Wed, 18 Feb 1998 21:50:16 +0100 lintian (0.2.2) unstable; urgency=low * Fixed bug in lintian-setup: don't try to create $LAB if it already exists (fixes bug#18227, bug#18252) * Added "Depends: file" (oops!) * Rewrote package "Description:" * Added a lot more override entries (thanks to all that told me about overrides!) -- Christian Schwarz Wed, 18 Feb 1998 12:55:58 +0100 lintian (0.2.1) unstable; urgency=low * Fixed bug in ldconfig collection script: script aborted without error message if a shared library had errors (thanks to Kai!) * Fixed bug: `standards-version' check didn't collect necessary data (actually, this was a more general bug--thanks to Joey Hess!) * Fixed bug: init.d checker script didn't notice if several of the required options (start, stop, etc.) have been included on a single line (thanks to Joey Hess!) * Don't check duplicated packages more than once (thanks to Joey Hess!) * Error handling code improved once more * Added more overrides (Thanks to Joey Hess!) * Mentioned Lintian's home page in the README file * Set package priority to `optional' (requested by several developers) -- Christian Schwarz Sun, 15 Feb 1998 11:44:32 +0100 lintian (0.2.0) unstable; urgency=low * First public release * Fixed bug in shlibs check: Sometimes, ldconfig doesn't install any symbolic links at all (e.g., for `acroread' package). * Changed lintian-setup: Don't remove the whole lab if it already exists--just remove the info/ directory. * Changed handling of critical Lintian errors (abort on error) * Built package using fakeroot (first time i tried fakeroot--it's great!!) * Checked package with latest Lintian :) -- Christian Schwarz Sat, 14 Feb 1998 21:49:10 +0100 lintian (0.1.3) unstable; urgency=low * Next beta release (hopefully the last one :-) * The lintian-info script is available now! You can either pipe the output of lintian through it, or specify the `-i' option when calling lintian. * Lintian can check .changes files now! New tags: bad-distribution-in-changes-file file-size-mismatch-in-changes-file md5sum-mismatch-in-changes-file bad-section-in-changes-file * Lintian now detects if packages have been changed, even if they have the same version number as before. * Improved shlibs check (this fixes the "error: bad ldconfig-info file" bug). New tags: ldconfig-symlink-referencing-wrong-file ldconfig-symlink-is-not-a-symlink * Improved files check! New tags: package-installs-into-etc-rc.d non-standard-file-permissions-for-etc-init.d-script * New check for /etc/init.d scripts! Tags: duplicate-updaterc.d-calls-in-postinst output-of-updaterc.d-not-redirected-to-dev-null preinst-calls-updaterc.d duplicate-updaterc.d-calls-in-postrm prerm-calls-updaterc.d postrm-does-not-call-updaterc.d-for-init.d-script postrm-contains-additional-updaterc.d-calls file-in-etc-rc.d-marked-as-conffile init.d-script-not-marked-as-conffile init.d-script-does-not-implement-required-option init.d-script-not-included-in-package unregistered-script-in-etc-init.d * Fixed manpages check: Subdirectories of /usr/bin (e.g., /usr/bin/mh) have not been handled correctly. * Added new override entries * Cleaned up Lintian's source code * Updated documentation * Lots of small changes -- Christian Schwarz Fri, 13 Feb 1998 23:24:51 +0100 lintian (0.1.2) unstable; urgency=low * Beta release * Two major bugs have been fixed * Debugging info increased -- Christian Schwarz Fri, 13 Feb 1998 11:20:51 +0100 lintian (0.1.1) unstable; urgency=low * Beta release -- Christian Schwarz Thu, 12 Feb 1998 23:45:51 +0100 lintian (0.1.0) unstable; urgency=low * First release -- Christian Schwarz Wed, 11 Feb 1998 23:15:51 +0100 vim: et lintian-2.5.22ubuntu1/debian/compat0000664000000000000000000000000212077065713014104 0ustar 7 lintian-2.5.22ubuntu1/debian/rules0000775000000000000000000000646712310413206013763 0ustar #!/usr/bin/make -f PERL ?= /usr/bin/perl VER := $(shell head -1 debian/changelog | sed -e 's/^.*(//' -e 's/).*$$//') tmp := $(CURDIR)/debian/lintian profiles := profiles/debian/main.profile \ profiles/debian/ftp-master-auto-reject.profile neededfiles := debian/rules frontend/lintian $(profiles) docsource := doc/lintian.xml README man/lintian.pod.in \ man/lintian-info.pod allchecks := $(wildcard checks/*) allcollect := $(wildcard collection/*) tagfiles := $(wildcard t/changes/*.changes t/*/*/tags) testfiles := $(wildcard t/tests/*/*.desc) perlprovides := data/fields/perl-provides autoreject_data := $(wildcard private/build-time-data/*) onlyrun = tag = # Work/output dir for tests # private/runtests gets TEST_WORK_DIR from environment export TEST_WORK_DIR ?= $(CURDIR)/debian/test-out ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) testtarget = runtests else testtarget = endif ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) jobs = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) PAR_ARGS=-j $(jobs) endif profiles: $(profiles) $(profiles): $(allchecks) $(autoreject_data) private/generate-profiles.pl private/generate-profiles.pl api-doc: private/generate-html-docs doc/api.html runtests: $(neededfiles) $(allchecks) $(allcollect) $(tagfiles) $(testfiles) @echo .... running tests .... mkdir -p "$(TEST_WORK_DIR)" t/runtests --dump-logs -k $(PAR_ARGS) t "$(TEST_WORK_DIR)" $(onlyrun) if [ "$(onlyrun)" = "" ]; then touch $@; fi # this target is only run manually refresh-perl-provides: perl private/refresh-perl-provides > $(perlprovides) build-arch build-indep build: build-stamp build-stamp: $(neededfiles) $(docsource) $(testtarget) @echo .... running build .... dh_testdir cd doc && LC_ALL=C docbook2html -V "%use-id-as-filename%" -o lintian.html lintian.xml cd doc && LC_ALL=C jw -b txt lintian.xml mkdir man/man1/ private/generate-lintian-pod | \ pod2man --name lintian --center "Debian Package Checker" --section=1 > man/man1/lintian.1 pod2man --section=1 man/lintian-info.pod > man/man1/lintian-info.1 private/generate-html-docs doc/api.html > /dev/null # check that the static data about perl core modules is up to date $(PERL) -ne '/PERL_VERSION=(.+)/ and $$] > $$1 and warn q{*}x60 . qq{\n$(perlprovides) needs an update, please run\n debian/rules refresh-perl-provides\n} . q{*}x60 . qq{\n}' $(perlprovides) touch $@ clean: $(neededfiles) @echo .... cleaning .... dh_testdir dh_testroot rm -f runtests build-stamp rm -rf doc/lintian.html/ doc/lintian.txt rm -rf doc/api.html rm -rf "$(TEST_WORK_DIR)" rm -rf man/man1/ dh_clean binary-indep: $(neededfiles) build @echo .... binary-indep .... dh_testdir dh_testroot dh_prep dh_installdirs dh_install # some manual work perl -p -i -e 's/my \$$LINTIAN_VERSION;/my \$$LINTIAN_VERSION = q{$(VER)};/;' \ -e 's@my \$$INIT_ROOT(\s*=.*)?;@my \$$INIT_ROOT = q{/usr/share/lintian};@;' \ $(tmp)/usr/bin/lintian $(tmp)/usr/share/lintian/frontend/dplint install -m 644 doc/lintianrc.example $(tmp)/etc/lintianrc dh_installdocs dh_installchangelogs dh_installexamples dh_installman dh_link dh_compress dh_fixperms dh_installdeb dh_gencontrol dh_md5sums dh_builddeb binary-arch: binary: binary-indep binary-arch .PHONY: build binary binary-arch binary-indep clean refresh-perl-provides .DELETE_ON_ERROR: runtests lintian-2.5.22ubuntu1/debian/doc-base0000664000000000000000000000056612077065713014315 0ustar Document: lintian Title: Lintian User's Manual Author: Christian Schwarz, Richard Braakman, Sean 'Shaleh' Perry Abstract: This manual describes Lintian, the Debian package checker. Section: Debian Format: HTML Index: /usr/share/doc/lintian/lintian.html/index.html Files: /usr/share/doc/lintian/lintian.html/*.html Format: text Files: /usr/share/doc/lintian/lintian.txt.gz lintian-2.5.22ubuntu1/debian/dirs0000664000000000000000000000006012310413144013547 0ustar etc usr/bin usr/share/lintian var/spool/lintian lintian-2.5.22ubuntu1/debian/control0000664000000000000000000001036112315523272014304 0ustar Source: lintian Section: devel Priority: optional Maintainer: Ubuntu Developers XSBC-Original-Maintainer: Debian Lintian Maintainers Uploaders: Josip Rodin , Colin Watson , Russ Allbery , Adam D. Barratt , Raphael Geissert , Niels Thykier , Bastien Roucariès Build-Depends: aspell, aspell-en, binutils, bzip2, cdbs, debhelper (>= 9), default-jdk, diffstat, docbook-utils, docbook-xml, fakeroot, file, gettext, hardening-includes, intltool-debian, javahelper, libapt-pkg-perl, libarchive-zip-perl, libclass-accessor-perl, libclone-perl, libdpkg-perl, libdigest-sha-perl, libemail-valid-perl, libfile-basedir-perl, libhtml-parser-perl, libipc-run-perl, liblist-moreutils-perl, libparse-debianchangelog-perl, libtest-minimumversion-perl, libtest-perl-critic-perl, libtest-pod-coverage-perl, libtest-pod-perl, libtest-spelling-perl, libtest-strict-perl, libtest-synopsis-perl, libtext-levenshtein-perl, libtext-template-perl, libtimedate-perl, liburi-perl, libyaml-perl, man-db, patchutils, perl, # pkg-php-tools is not available in Wheezy. However, it is only used for # a test, so we can live with its absence in Wheezy. The bash dependency # is just used as an "Wheezy indicator"-dependency. pkg-php-tools (>= 1.5~) | bash (<< 4.2+dfsg-1~), python, python-all-dev, python-numpy, quilt, rsync, t1utils, unzip, xz-utils, zip Standards-Version: 3.9.5 Vcs-Git: git://anonscm.debian.org/lintian/lintian.git Vcs-Browser: http://anonscm.debian.org/gitweb/?p=lintian/lintian.git XS-Testsuite: autopkgtest Package: lintian Architecture: all Depends: binutils, bzip2, diffstat, file, gettext, hardening-includes, intltool-debian, libapt-pkg-perl, libarchive-zip-perl, libclass-accessor-perl, libclone-perl, libdigest-sha-perl, libdpkg-perl, libemail-valid-perl, libfile-basedir-perl, libipc-run-perl, liblist-moreutils-perl, libparse-debianchangelog-perl, libtext-levenshtein-perl, libtimedate-perl, liburi-perl, man-db, patchutils, perl, t1utils, ${misc:Depends} Recommends: libautodie-perl (>= 2.18), libperlio-gzip-perl, Suggests: binutils-multiarch, dpkg-dev, libhtml-parser-perl, libtext-template-perl, libyaml-perl, xz-utils Multi-Arch: foreign Description: Debian package checker Lintian dissects Debian packages and reports bugs and policy violations. It contains automated checks for many aspects of Debian policy as well as some checks for common errors. . It uses an archive directory, called laboratory, in which it stores information about the packages it examines. It can keep this information between multiple invocations in order to avoid repeating expensive data-collection operations. This makes it possible to check the complete Debian archive for bugs, in a reasonable time. . This package is useful for all people who want to check Debian packages for compliance with Debian policy. Every Debian maintainer should check packages with this tool before uploading them to the archive. . This version of Lintian is calibrated for policy version 3.9.5. lintian-2.5.22ubuntu1/debian/postrm0000775000000000000000000000115012077065713014155 0ustar #!/bin/sh set -e # Try to purge the default lab if it looks like a lab. If the user configured # a lab for some other location, currently we don't do anything about that. # Arguably we should parse lintianrc and remove that lab, but I'm not sure # that's a good idea. if [ "$1" = "purge" ]; then if [ -d "/var/spool/lintian/binary" ]; then rm -rf /var/spool/lintian/binary rm -rf /var/spool/lintian/source rm -rf /var/spool/lintian/udeb rm -rf /var/spool/lintian/info fi [ ! -d /var/spool/lintian ] || rmdir --ignore-fail-on-non-empty /var/spool/lintian fi #DEBHELPER# lintian-2.5.22ubuntu1/debian/manpages0000664000000000000000000000005312077065713014422 0ustar man/man1/lintian.1 man/man1/lintian-info.1 lintian-2.5.22ubuntu1/debian/lintian.install0000664000000000000000000000052412310413206015715 0ustar frontend/dplint usr/share/lintian/frontend frontend/lintian usr/bin checks usr/share/lintian collection usr/share/lintian commands usr/share/lintian data usr/share/lintian helpers usr/share/lintian lib/Lintian usr/share/perl5 lib/Test usr/share/lintian/lib profiles usr/share/lintian vendors usr/share/lintian lintian-2.5.22ubuntu1/debian/docs0000664000000000000000000000014012310413206013534 0ustar doc/api.html doc/lintian.html doc/CREDITS doc/desc-files doc/lintian.xml doc/lintian.txt README