Import Upstream version 2.117.0

This commit is contained in:
luoyaoming 2024-05-07 09:34:01 +08:00
parent dc9a7a800a
commit 4a647da510
326 changed files with 2579 additions and 30341 deletions

23
.gitignore vendored
View File

@ -1,23 +0,0 @@
/*-stamp
/debian/*.debhelper*
/debian/debhelper-build-stamp
/debian/files
/debian/lintian.substvars
/debian/lintian/
/debian/test-out/
/debian/test.locale/
/doc/api.html/
/doc/README
/doc/help.tmp
/doc/lintian.html
/doc/lintian.txt
/l10n/
/man/man*/
*.iml
/.idea/
/.nobackup
*.bak
*.rej
cover_db*
/coverage-report
/TAGS

View File

@ -1,12 +0,0 @@
Bastien ROUCARIÈS <roucaries.bastien+debian@gmail.com>
Damyan Ivanov <dmn@debian.org>
Jakub Wilk <jwilk@debian.org>
Jean-Michel Vourgère <jmv_deb@nirgal.com>
Jean-Michel Vourgère <nirgal@debian.org>
Johannes Schauer <j.schauer@email.de>
Justin B Rye <jbr@edlug.org.uk>
Justin B Rye <justin.byam.rye@gmail.com>
Marcelo Jorge Vieira <metal@alucinados.com>
Marcelo Jorge Vieira <metal@debian.org>
Raphaël Hertzog <hertzog@debian.org>
Tobias Quathamer <toddy@debian.org>

View File

@ -12,7 +12,8 @@ on [salsa.debian.org][salsa]. First, create an account on Salsa if you
do not have one. You need to configure at least one SSH key.
The easiest way to file merge requests on Salsa is to fork our team
repository into your private name space. That is done on the website.
repository into your private namespace. That is done on the salsa
website.
Then you should clone the forked version of Lintian from your private
namespace to your local machine. You can find the command for that
@ -28,7 +29,7 @@ Create a feature branch for your proposed changes.
### Make Lintian better
Now you can fix bugs or implement new checks.
Now you can fix bugs or implement new features.
Please commit your changes with suitable explanations in the commit
messages. You can find some examples with:
@ -49,121 +50,152 @@ you provide tests for your proposed tags.
There is a way to exempt your tag from testing, but please do not do
so.
Our test specifications have two parts. One declares how to build the
test package. The other declares how to run Lintian on it.
Most tests only run a specific lintian 'check'. Please name your tests
after this check: do not name them after the tag they are testing
because many tags need two or more tests to exercise subtle variations
in the trigger conditions.
The build instructions are almost completely parameterized. In many
cases, you will not need to copy or modify any templates. For each
test, the build specifications are located in the file
${recipe-dir}/build-spec/fill-values.
Test specifications have two parts, build specifications and
evaluation specifications. Build specifications tell the testsuite how
to build a test package, and evaluation specifications declare how to
run Lintian on the package and say what the expected output is.
A simple one might look like this:
Build specifications are located in the directory
't/recipes/path/to/test/build-spec/'. This must contain:
- A partial debian/ directory that includes as little packaging files
as possible
- An optional 'orig' directory containing upstream files (if any are
needed to trigger the tag)
- A file called 'fill-values' that tells the test suite how to use
existing template to 'fill in' anything not included in debian/
For most tests, debian/ will be very minimal indeed. A simple
'fill-values' might look like this:
Skeleton: upload-native
Testname: pdf-in-etc
Description: Ships a PDF file in /etc
Such a package would probably be used to trigger a tag about
documentation in a place other than /usr/share/doc. Please do not look
for this test in the test suite; it is ficticious.
This will use the 'upload-native' template to create a native package
with the given 'Description'. The 'debian' directory would have a
one-line 'install' file putting some PDF documentation in /etc, and a
PDF file would be included in orig. (Please do not look for this test
in the test suite; it is just an example).
For most tests, we run only the check being tested. That is why the
tests are sorted according to the check to which they belong.
Evaluation specifications are located in the directory
't/recipes/path/to/test/eval/'. These describes how to run Lintian and
which output (tags, exit code) to expect.
Please name your tests after what they contain. Do not name them after
the tag they are testing. Many tags use two or more tests to exercise
subtle variations in the trigger conditions.
The second part of each test describes how to run Lintian and which
tags to expect. Evaluation specifications are located in the file
${recipe-dir}/eval/desc.
A simple evaluation specification might look like this:
The main file is 'desc'. A simple evaluation specification might look
like this:
Testname: pdf-in-etc
Check: documentation
As noted, this will only run the specified check. It eliminates all
nuisance tags, such as debian-watch-does-not-check-gpg-signature
(unless you are working on the check debian/watch).
As noted, this will only run the specified 'documentation' check. This
keeps output to a minimum so you do not get nuisance tags, such as
debian-watch-does-not-check-gpg-signature (unless you are working on
the a check for debian/watch). The contents of the 'Testname' field
must match the directory name.
Another file in that same directory shows the tags expected to be
triggered. Only tags from the selected check will show up there.
A 'hints' file in the eval directory contains the tags that lintian is
expected to be produce when run on the test package. Only tags from
the selected 'check' should be included.
You should scrupulously examine that file to make sure your tags show
up exactly the way you want, but you do not have to write it
yourself. The test suite will do it for you during the interactive
calibration in the next step.
You should scrupulously examine the 'hints' to make sure your tags
show up exactly the way you want, but you do not have to write it
yourself. The test suite will help you write this during the
interactive calibration described in the next step.
### Calibrate your tests
Further details are in the file t/recipes/README
To build the test package you probably have to install all test
prerequisites from d/tests/control. Usually, that can be done with:
### Preparing to run the test suite
$ autopkgtest -B
To run the testsuite you probably have to install all testsuite
prerequisites from lintian's debian/tests/control. This can be done
with:
If anyhing else is missing, you may also have to install the build
prerequisites. That can be done with:
# autopkgtest -B
$ apt build-dep .
You may also have to install the build dependencies with:
Both of these commands have to be run with superuse privileges (root).
# apt build-dep .
As you might imagine, Lintian comes with a large number of test
packages. You have to build all of them locally. It takes time the
first time around but is much faster in subsequent runs. You can build
the test packages with:
Both of these commands have to be run with root privileges.
$ private/build-test-packages
### Running the testsuite
Now, please calibrate your tests. For the documentation check the
command would be:
To run all tests run
$ private/runtests
This takes a long time the first time you run it because Lintian has a
large number of tests each building its own test package. The
packages are built locally (in debian/test-out/) and reused so
subsequent runs are much faster.
To run a subset of tests, use --onlyrun:
$ private/runtests --onlyrun=check:documentation
Make sure to select the check you are actually modifying.
This runs all tests that have 'Check: documentation' in their
'eval/desc' file. Alternatively,
The interactive calibration will add expected tags to your test
specifications. In many cases, it is best to "accept all" and examine
the changes in git. In complex cases, you can use git add -i to accept
only the ones you need.
$ private/runtests --onlyrun=test:name
This is a crucial step. Please make sure the expected tags are
meaningful. We also pay close attention to these tags when we look at
your merge request.
Will run a single test with 'Testname: name'. Running
$ private/runtests --help
will show you further options.
### Calibrating tests to fix test failures
If tests fail, the teststuite will use an interactive 'calibration'
process to help you write or amend a 'hints' file. Simply follow
the instructions on the screen. In many cases, it is best to "accept
all" and examine the changes in git. In complex cases, you can use
'git add -i' to stage only the changes you need.
This is a crucial step when adding a new test. Please make sure the
expected tags are correct. We pay close attention to these tags when
we look at your merge request.
### Run the full test suite
Finally, please start the entire test suite. It will run a variety of
style and consistency tests. The most common issue is that you have to
run perltidy.
Once your test is correct and passing, please ensure the entire test
suite passes. This includes a variety of style and consistency
tests.
We configure perltidy in a special way. Please run it from the
The most common issue detected is that you have to run perltidy. We
configure perltidy in a special way. Please run it from the
repository's base directory. Otherwise it will not find the custom
configuration, and the test suite will not pass.
### Submit your merge request
### Submit a merge request
Finally, please push your changes to the Lintian repo in your own name
space. You may end up doing that multiple times, It will eventually
require the force switch.
Once all the above is done, please push your changes to your Lintian
fork on salsa.
You may end up doing that multiple times: use
$ git push -f
That command will respond with the single most important message in
this document. Salsa will ask you to create a merge request. Just
click the link provided in the terminal.
to keep the git history simple.
Your browser will open a draft merge request. For a single commit, the
text field is populated with your commit message. Otherwise, please
explain the purpose of your commit series and hit "Submit".
After each push you will be shown a link to create a merge
request. Just click the link provided in the terminal. Your browser
will open a draft merge request. For a single commit, the text field
is populated with your commit message. Otherwise, please explain the
purpose of your commit series and hit "Submit".
The push command also started the standard CI pipeline on Salsa, which
is very comprehensive. It builds Debian packages and runs autopkgtest,
among many other jobs.
We will generally not accept merge requests unless the CI pipeline
passes sucessfully. You can see the status on Salsa in two places: in
passes successfully. You can see the status on Salsa in two places: in
the MR and in your own repo. The pipeline takes about one hundred
minutes.

View File

@ -51,7 +51,7 @@ can find the Lintian User's Manual in:
$ sensible-browser /usr/share/doc/lintian/lintian.html
# or in txt format
$ less /usr/share/doc/lintian/lintian.txt.gz
$ zless /usr/share/doc/lintian/lintian.txt.gz
Compiling Lintian

View File

@ -614,7 +614,7 @@ unless (@ARGV || $selected{'packages-from-file'}) {
if ($selected{debug}) {
say {*STDERR} encode_utf8("Lintian v$ENV{LINTIAN_VERSION}");
say {*STDERR} encode_utf8("Lintian root directory: $ENV{LINTIAN_BASE}");
say {*STDERR} encode_utf8("Configuration file: $LINTIAN_CFG");
say {*STDERR} encode_utf8('Configuration file: '.($LINTIAN_CFG//'(none)'));
}
if (defined $selected{LINTIAN_PROFILE}) {

File diff suppressed because it is too large Load Diff

View File

@ -35,6 +35,7 @@ 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)).*$
loong64 ~~^ELF 64-bit LSB .* LoongArch
lpia ~~^ELF 32-bit LSB .* 80386, .* (?:GNU/Linux|(?!GNU)).*$
m32r ~~^ELF 32-bit MSB .* M32R
m68k ~~^ELF 32-bit MSB .* 680[02]0

View File

@ -85,6 +85,7 @@ libupnp ||source-regex=libupnp\d?||(?m)(?:SSDP_LIB: New Request Handler:Error|
libxml2 || ||root and DTD name do not match
libyaml || ||(?m)^did not find expected <stream-start>
libytnef || ||Signature does not match\. Not TNEF\.
libzstd || ||pathological dataset : literals are not compressible : samples are noisy or too regular
ltdl ||source=libtool ||(?m)^library already shutdown
mbedtls || ||(?m)^(?:ASN1 - Actual length differs from expected length|SSL - The connection indicated an EOF)
mpfr ||source=mpfr4 ||MPFR: Can't allocate memory
@ -102,6 +103,7 @@ taglib || ||One of the size bytes in the id3v2 header was greater than the al
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\.)
yajl || ||context_pop: Bottom of stack reached prematurely
# 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.

File diff suppressed because it is too large Load Diff

View File

@ -7,10 +7,10 @@
# Codenames
jessie
stretch
buster
bullseye
bookworm
sid
# Aliases

View File

@ -85,6 +85,9 @@ X-Python3-Version
XB-Ruby-Versions
# See https://bugs.debian.org/1014885 and
# https://bugs.debian.org/1029471 for Lintian issues with specifically
# the "XS-" prefix
XS-Autobuild
XS-Go-Import-Path
XS-Ruby-Versions

View File

@ -50,6 +50,16 @@
"dh-buildinfo"
]
},
"builtusing" : {
"installed_by" : [
"dh-builtusing"
]
},
"cargo" : {
"installed_by" : [
"dh-cargo"
]
},
"cli" : {
"installed_by" : [
"cli-common-dev"
@ -90,6 +100,11 @@
"dh-cmake"
]
},
"cruft" : {
"installed_by" : [
"dh-cruft"
]
},
"ctest" : {
"installed_by" : [
"dh-cmake"
@ -100,6 +115,11 @@
"dh-di"
]
},
"debputy" : {
"installed_by" : [
"dh-debputy"
]
},
"dist_zilla" : {
"installed_by" : [
"dh-dist-zilla"
@ -110,6 +130,11 @@
"dh-dkms"
]
},
"doxygen" : {
"installed_by" : [
"doxygen"
]
},
"dwz" : {
"installed_by" : [
"libdebhelper-perl"
@ -142,7 +167,7 @@
},
"gir" : {
"installed_by" : [
"gobject-introspection"
"gobject-introspection-bin"
]
},
"gnome" : {
@ -155,11 +180,21 @@
"dh-golang"
]
},
"grantlee" : {
"installed_by" : [
"libgrantlee5-dev"
]
},
"haskell" : {
"installed_by" : [
"dh-haskell"
]
},
"installdebputy" : {
"installed_by" : [
"dh-debputy"
]
},
"installinitramfs" : {
"installed_by" : [
"libdebhelper-perl"
@ -170,6 +205,11 @@
"dh-nss"
]
},
"installsysusers" : {
"installed_by" : [
"libdebhelper-perl"
]
},
"javahelper" : {
"installed_by" : [
"javahelper"
@ -225,6 +265,11 @@
"mkdocs"
]
},
"movetousr" : {
"installed_by" : [
"libdebhelper-perl"
]
},
"nginx" : {
"installed_by" : [
"nginx-dev"
@ -255,9 +300,14 @@
"dh-octave"
]
},
"package_notes" : {
"pd_lib_builder" : {
"installed_by" : [
"dh-package-notes"
"dh-puredata"
]
},
"pdl" : {
"installed_by" : [
"pdl"
]
},
"perl6" : {
@ -315,21 +365,16 @@
"ppp-dev"
]
},
"puredata" : {
"installed_by" : [
"dh-puredata"
]
},
"pyppd" : {
"installed_by" : [
"pyppd"
]
},
"pypy" : {
"installed_by" : [
"dh-python"
]
},
"python2" : {
"installed_by" : [
"dh-python"
]
},
"python3" : {
"installed_by" : [
"dh-python"
@ -415,6 +460,11 @@
"tex-common"
]
},
"user_session_migration" : {
"installed_by" : [
"dh-user-session-migration"
]
},
"uwsgi" : {
"installed_by" : [
"uwsgi-dev"
@ -469,6 +519,11 @@
"installed_by" : [
"zathura-dev"
]
},
"zz_debputy" : {
"installed_by" : [
"dh-debputy"
]
}
},
"preamble" : {

View File

@ -113,6 +113,11 @@
"dh-buildinfo"
]
},
"dh_builtusing" : {
"installed_by" : [
"dh-builtusing"
]
},
"dh_clean" : {
"installed_by" : [
"debhelper"
@ -194,6 +199,12 @@
"dh-cmake"
]
},
"dh_cruft" : {
"installed_by" : [
"dh-cruft"
],
"uses_autoscript" : 1
},
"dh_ctest_build" : {
"installed_by" : [
"dh-cmake"
@ -229,6 +240,11 @@
"dh-cmake"
]
},
"dh_debputy" : {
"installed_by" : [
"dh-debputy"
]
},
"dh_di_kernel_gencontrol" : {
"installed_by" : [
"dh-di"
@ -293,12 +309,16 @@
"debhelper"
]
},
"dh_fortran_lib" : {
"installed_by" : [
"dh-fortran-mod"
]
},
"dh_fortran_mod" : {
"installed_by" : [
"dh-fortran-mod"
],
"uses_autoscript" : 1,
"uses_misc_depends" : 1
"uses_autoscript" : 1
},
"dh_gencontrol" : {
"installed_by" : [
@ -318,7 +338,7 @@
},
"dh_girepository" : {
"installed_by" : [
"gobject-introspection"
"gobject-introspection-bin"
]
},
"dh_gnome" : {
@ -346,6 +366,11 @@
"dh-golang"
]
},
"dh_grantlee" : {
"installed_by" : [
"libgrantlee5-dev"
]
},
"dh_gstscancodecs" : {
"installed_by" : [
"libgstreamer1.0-dev"
@ -500,6 +525,11 @@
"uses_autoscript" : 1,
"uses_misc_depends" : 1
},
"dh_installdebputy" : {
"installed_by" : [
"dh-debputy"
]
},
"dh_installdirs" : {
"installed_by" : [
"debhelper"
@ -766,6 +796,11 @@
"pkg-kde-tools"
]
},
"dh_movetousr" : {
"installed_by" : [
"debhelper"
]
},
"dh_nginx" : {
"installed_by" : [
"nginx-dev"
@ -778,6 +813,11 @@
"dh-nodejs"
]
},
"dh_nodejs_build_debug_package" : {
"installed_by" : [
"dh-nodejs"
]
},
"dh_nodejs_substvars" : {
"installed_by" : [
"dh-nodejs"
@ -844,11 +884,6 @@
"dh-octave"
]
},
"dh_package_notes" : {
"installed_by" : [
"dh-package-notes"
]
},
"dh_pdl" : {
"installed_by" : [
"pdl"
@ -929,24 +964,17 @@
"debhelper"
]
},
"dh_puredata_substvar" : {
"installed_by" : [
"dh-puredata"
]
},
"dh_pyppd" : {
"installed_by" : [
"pyppd"
],
"uses_misc_depends" : 1
},
"dh_pypy" : {
"installed_by" : [
"dh-python"
],
"uses_autoscript" : 1
},
"dh_python2" : {
"installed_by" : [
"dh-python"
],
"uses_autoscript" : 1
},
"dh_python3" : {
"installed_by" : [
"dh-python"
@ -978,6 +1006,11 @@
"dh-raku"
]
},
"dh_raku_clean" : {
"installed_by" : [
"dh-raku"
]
},
"dh_raku_install" : {
"installed_by" : [
"dh-raku"
@ -1096,6 +1129,12 @@
"debhelper"
]
},
"dh_user-session-migration" : {
"installed_by" : [
"dh-user-session-migration"
],
"uses_misc_depends" : 1
},
"dh_usrlocal" : {
"installed_by" : [
"debhelper"

View File

@ -4,6 +4,77 @@
"title" : "Debian Policy Releases"
},
"releases" : [
{
"author" : "Sean Whitton <spwhitton@spwhitton.name>",
"changes" : [
"",
"debian-policy (4.6.2.0) unstable; urgency=medium",
"",
" [ Sean Whitton ]",
" * Policy: Update alternatives system priorities for window managers",
" Wording: Ansgar <ansgar@debian.org>",
" Seconded: Russ Allbery <rra@debian.org>",
" Seconded: Sean Whitton <spwhitton@spwhitton.name>",
" Closes: #975631",
" * Policy: Clarify udeb-only source packages are out of scope",
" Wording: Russ Allbery <rra@debian.org>",
" Seconded: Holger Levsen <holger@layer-acht.org>",
" Seconded: Sean Whitton <spwhitton@spwhitton.name>",
" Closes: #992136",
"",
" [ Russ Allbery ]",
" * Policy: Add new-version argument to several maintainer script calls",
" Wording: Russ Allbery <rra@debian.org>",
" Seconded: Sean Whitton <spwhitton@spwhitton.name>",
" Seconded: Guillem Jover <guillem@debian.org>",
" Closes: #823256",
" * Policy: Essential packages must work only if previously configured",
" Wording: Helmut Grohne <helmut@subdivi.de>",
" Seconded: Santiago Vila <sanvila@unex.es>",
" Seconded: Guillem Jover <guillem@hadrons.org>",
" Closes: #1020267",
" * Prefer \"portion\" to \"stanza\" when describing parts of the Vcs-Git",
" header to avoid confusion with blocks of fields in deb822. Thanks to",
" Charles Plessy for pointing out the inconsistency.",
"",
" [ Guillem Jover ]",
" * Terminology fixes. (Closes: #1020248)",
" - Refer to blocks of fields in deb822 files as stanzas, not",
" paragraphs. This aligns terminology with dpkg and reduces confusion",
" with text paragraphs found in, for example, the Description field.",
" * Policy: Replace references to PGP with OpenPGP. (Closes: #1020243)",
" * Whitespace and quoting fixes. (Closes: #1020238)",
" - Remove trailing whitespace and convert tabs to spaces in all files.",
" - Avoid use of unbalanced single quotes.",
" * copyright-format: Formatting improvements. (Closes: #1020241)",
" - Put Source after Format in examples.",
" - Reformat GPL examples to be more compact.",
" - Use URLs rather than postal addresses in GPL examples.",
" - Move the comment about where the GPL can be found on Debian systems",
" to a separate Comment block in examples, rather than including it in",
" the License text.",
" - Apply wrap-and-sort -ast formatting to Files fields in the examples.",
"",
" [ Daniel Shahaf ]",
" * Add an English description of the format of bug closers in the",
" changelog file, alongside the Perl-compatible regular expression.",
" (Closes: #953911)"
],
"closes" : [
823256,
953911,
975631,
992136,
1020238,
1020241,
1020243,
1020248,
1020267
],
"epoch" : 1671244904,
"timestamp" : "2022-12-17T02:41:44Z",
"version" : "4.6.2.0"
},
{
"author" : "Sean Whitton <spwhitton@spwhitton.name>",
"changes" : [

View File

@ -18,3 +18,6 @@ homepage-for-cpan-package-contains-version ~~ (?:search\.cpan\.org|m
homepage-for-cran-package-not-canonical ~~ cran\.r-project\.org/web/packages/.+
homepage-refers-to-filesystem-listing ~~ (https?|ftp)://ftp\.gnu\.org/gnu/(.*)
homepage-refers-to-obsolete-debian-infrastructure ~~ alioth\.debian\.org
homepage-github-url-ends-with-dot-git ~~ ^https?://github\.com/.*\.git$
homepage-gitlab-url-ends-with-dot-git ~~ ^https?://gitlab\.com/.*\.git$
homepage-salsa-url-ends-with-dot-git ~~ ^https?://salsa.debian.org/.*\.git$

View File

@ -5,7 +5,6 @@ dma
esmtp-run
exim4-daemon-heavy
exim4-daemon-light
masqmail
msmtp-mta
nullmailer
opensmtpd

View File

@ -137,7 +137,6 @@ libtinfo-dev => libncurses-dev
# Deprecated in bullseye
bsdmainutils => bsdextrautils and/or ncal
libegl1-mesa-dev => libegl-dev
libfontconfig1-dev => libfontconfig-dev
libfreetype6-dev => libfreetype-dev
libgdk-pixbuf2.0-0 => libgdk-pixbuf-2.0-0 and optionally libgdk-pixbuf-xlib-2.0-0
@ -151,3 +150,8 @@ libxcb-util0-dev => libxcb-util-dev
libgsasl7-dev => libgsasl-dev
libidn11-dev => libidn-dev
policykit-1 => polkitd and optionally pkexec
lsb-base
pkg-config => pkgconf
# Deprecated in trixie
gnome-common => https://wiki.gnome.org/Projects/GnomeCommon/Migration

View File

@ -28,4 +28,4 @@ git://gitorious\.org/ ~~ Git
git://[a-zA-Z0-9]+\.branchable\.com/ ~~ Git
git://repo\.or\.cz/ ~~ Git
https?://repo\.or\.cz/ ~~ Git
https?://bitbucket\.org/ ~~ Git,Hg
https?://bitbucket\.org/ ~~ Git

View File

@ -15,6 +15,7 @@ cbr
cbt
cbz
chm
dbf
der
djvu
dll
@ -64,6 +65,11 @@ png
ppt
pptx
psd
qix
sbn
sbx
shp
shx
spx
sqlite
sqlite3

File diff suppressed because it is too large Load Diff

View File

@ -14,14 +14,16 @@
# 59 -> Java15
# 60 -> Java16
# 61 -> Java17
# 62 -> Java18 - highest version in Debian unstable
# 62 -> Java18
# 63 -> Java19
# 64 -> Java20
# 65 -> Java21 - highest version in Debian unstable
# current default in Debian
default-bytecode-version = 56
default-bytecode-version = 61
# highest known anywhere
highest-known-bytecode-version = 63
highest-known-bytecode-version = 65
# The following should not change
lowest-known-bytecode-version = 45

View File

@ -20,6 +20,7 @@ NotShowIn
OnlyShowIn
Path
PrefersNonDefaultGPU
SingleMainWindow
StartupNotify
StartupWMClass
Terminal

View File

@ -3,6 +3,7 @@
#
# Please keep the file sorted alphabetically.
01.org
alioth.debian.org
anonscm.debian.org
berlios.de

View File

@ -61,7 +61,7 @@
guile => /usr/bin, guile-([\d.]+), guile-$1:any, 2.2 3.0, guile:any
jruby => /usr/bin, jruby([\d.]+), jruby$1:any, 1.0 1.1 1.2, jruby:any
lua => /usr/bin, lua([\d.]+), lua$1:any, 40 50 5.1 5.2, lua:any
lua => /usr/bin, lua([\d.]+), lua$1:any, 40 50 5.1 5.2 5.3 5.4, lua:any
octave => /usr/bin, octave([\d.]+), octave$1:any, 3.0 3.2, octave:any
pike => /usr/bin, pike([\d.]+), pike$1:any | pike$1-core:any, 7.6 7.8
python2 => /usr/bin, python([\d.]+), python$1:any | python$1-minimal:any, 2.7, @SKIP_UNVERSIONED@

View File

@ -16,6 +16,12 @@
# should be included in the appropriate data file, rather than here.
#
# Please keep the list sorted using `make sort` in this directory.
#
# (And in case you wonder about these entries at the end of the file
# seemingly starting with a "c" and still being listed at the end of
# the file after "make sort", please note that they start with a
# cyrillic "с", not with a latin "c". They look the same at least in
# most fonts, though.)
aaccessibility||accessibility
aaccession||accession
@ -2782,8 +2788,7 @@ curently||currently
curiousities||curiosities
curiousity||curiosity
curiousity's||curiosity's
currectly||correctly
curren||current
currectly||correctly or currently
currious||curious
currnt||current
currntly||currently
@ -4187,6 +4192,7 @@ epectedly||expectedly
epect||expect
epecting||expecting
epects||expects
ependency||dependency
ephememeral||ephemeral
ephememeris||ephemeris
eploit||exploit
@ -7921,8 +7927,8 @@ occure||occur
occuring||occurring
occurrance||occurrence
occurrances||occurrences
ocorrence||ocurrence
ocorrences||ocurrences
ocorrence||occurrence
ocorrences||occurrences
octects||octets
ocupied||occupied
ocupies||occupies
@ -8635,7 +8641,7 @@ preferrable||preferable
preferrably||preferably
prefferable||preferable
prefferably||preferably
preffered||prefered
preffered||preferred
preformance||performance
prepaired||prepared
prepartion||preparation
@ -9867,6 +9873,8 @@ repesent||represent
repesents||represents
repetion||repetition
repetions||repetitions
repition||repetition
repitions||repetitions
replacability||replaceability
replacable||replaceable
replacables||replaceables
@ -9990,7 +9998,6 @@ resgister||register
resgisters||registers
resistence||resistance
resistent||resistant
resizeable||resizable
resloved||resolved
reslove||resolve
resloves||resolves
@ -11523,8 +11530,8 @@ trageted||targeted
trailling||trailing
tranceivers||transceivers
tranceiver||transceiver
tranfered||transfered
tranfering||transfering
tranfered||transferred
tranfering||transferring
tranfers||transfers
tranfer||transfer
tranformations||transformations
@ -11705,7 +11712,6 @@ two-dimenional||two-dimensional
twodimenional||two-dimensional
two-dimenionsal||two-dimensional
twodimenionsal||two-dimensional
tye||type
typicaly||typically
typles||tuples
typle||tuple
@ -12114,6 +12120,7 @@ upsrteams||upstreams
upsrteam||upstream
upsteam||upstream
upsteram||upstream
upstram||upstream
upstreamedd||upstreamed
upstreammed||upstreamed
upstreammer||upstreamer

View File

@ -28,6 +28,6 @@
(?i)per say||per se
(?i)pleases see||please see
(?i)seams like||seems like
(?i)these package||this package
(?i)these package(?!\s+\w+s\b)||this package
(?i)this packages||these packages
(?i)will be remove||will be removed

View File

@ -11,6 +11,7 @@ needs-internet
needs-reboot
needs-recommends
needs-root
needs-sudo
rw-build-tree
skip-not-installable
skippable

View File

@ -7,6 +7,7 @@ autopkgtest-pkg-go
autopkgtest-pkg-nodejs
autopkgtest-pkg-octave
autopkgtest-pkg-perl
autopkgtest-pkg-pybuild
autopkgtest-pkg-python
autopkgtest-pkg-r
autopkgtest-pkg-ruby

View File

@ -1,8 +0,0 @@
lintian for Debian
Please edit this to provide information specific to
this lintian Debian package.
(Automatically generated by debmake Version 4.3.1)
-- sufang <sufang@kylinos.cn> Wed, 14 Sep 2022 10:28:58 +0800

5
debian/changelog vendored
View File

@ -1,5 +0,0 @@
lintian (2.114.0-ok1) yangtze; urgency=medium
* Build for openkylin.
-- sufang <sufang@kylinos.cn> Wed, 14 Sep 2022 10:28:58 +0800

114
debian/control vendored
View File

@ -1,114 +0,0 @@
Source: lintian
Section: devel
Priority: optional
Maintainer: OpenKylin Developers <packaging@lists.openkylin.top>
Build-Depends:
debhelper-compat (= 13),
dpkg (>= 1.17.14),
libconst-fast-perl,
libfile-basedir-perl,
libipc-run3-perl,
libpath-tiny-perl,
libunicode-utf8-perl,
python3-docutils,
Standards-Version: 4.6.0.1
Vcs-Git: https://gitee.com/openkylin/lintian.git
Vcs-Browser: https://gitee.com/openkylin/lintian
Homepage: https://lintian.debian.org/
Rules-Requires-Root: no
Package: lintian
Architecture: all
Depends:
binutils,
bzip2,
diffstat,
dpkg (>= 1.17.14),
dpkg-dev,
file,
gettext,
gpg,
intltool-debian,
libapt-pkg-perl,
libarchive-zip-perl,
libcapture-tiny-perl,
# makes Moo faster, https://metacpan.org/pod/Moo#MOO-AND-CLASS::XSACCESSOR
libclass-xsaccessor-perl,
libclone-perl,
libconfig-tiny-perl,
libconst-fast-perl,
libcpanel-json-xs-perl,
libdata-dpath-perl,
libdata-validate-domain-perl,
libdata-validate-uri-perl,
libdevel-size-perl,
libdigest-sha-perl,
libdpkg-perl,
libencode-perl,
libemail-address-xs-perl,
libfile-basedir-perl,
libfile-find-rule-perl,
libfont-ttf-perl,
libhtml-html5-entities-perl,
libio-interactive-perl,
libio-prompt-tiny-perl,
libipc-run3-perl,
libjson-maybexs-perl,
liblist-compare-perl,
liblist-someutils-perl,
liblist-utilsby-perl,
libmoo-perl,
libmoox-aliases-perl,
libnamespace-clean-perl,
libpath-tiny-perl,
libperlio-gzip-perl,
libperlio-utf8-strict-perl,
libproc-processtable-perl,
libsereal-decoder-perl,
libsereal-encoder-perl,
libsort-versions-perl,
libsyntax-keyword-try-perl,
libterm-readkey-perl,
libtext-glob-perl,
libtext-levenshteinxs-perl,
libtext-markdown-discount-perl,
libtext-xslate-perl,
libtime-duration-perl,
libtime-moment-perl,
libtimedate-perl,
libunicode-utf8-perl,
liburi-perl,
libxml-libxml-perl,
libyaml-libyaml-perl,
lzip | clzip,
lzop,
man-db,
patchutils,
perl,
t1utils,
unzip,
xz-utils,
${misc:Depends},
${perl:Depends},
Suggests:
binutils-multiarch,
libtext-template-perl,
Breaks:
funny-manpages (<< 1.3-5.1),
libconfig-model-dpkg-perl (<< 2.151),
lintian-brush (<< 0.88),
pkg-js-tools (<< 0.9.4),
pkg-perl-tools (<< 0.53),
Replaces:
funny-manpages (<< 1.3-5.1),
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.
.
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 Debian Policy version 4.6.0.1.

21455
debian/copyright vendored

File diff suppressed because it is too large Load Diff

3
debian/dirs vendored
View File

@ -1,3 +0,0 @@
etc
usr/bin
usr/share/lintian

12
debian/doc-base vendored
View File

@ -1,12 +0,0 @@
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
Files: /usr/share/doc/lintian/*.html
Format: text
Files: /usr/share/doc/lintian/lintian.rst.gz

5
debian/docs vendored
View File

@ -1,5 +0,0 @@
README.md
doc/CREDITS
doc/api.html
doc/lintian.html
doc/lintian.rst

View File

@ -1 +0,0 @@
doc/examples/*

View File

@ -1,10 +0,0 @@
bin usr/share/lintian
data usr/share/lintian
lib usr/share/lintian
.perlcriticrc usr/share/lintian
# the next line will be removed when libconfig-model-dpkg-perl stops using Lintian data (Bug#968000)
private/latest-policy-version usr/share/lintian/private
profiles usr/share/lintian
tags usr/share/lintian
templates usr/share/lintian
vendors usr/share/lintian

View File

@ -1,7 +0,0 @@
usr/share/lintian/bin/lintian usr/bin/lintian
usr/share/lintian/bin/lintian-explain-tags usr/bin/lintian-explain-tags
usr/share/lintian/bin/lintian-annotate-hints usr/bin/lintian-annotate-hints
usr/share/lintian/bin/lintian-annotate-hints usr/bin/lintian-info
usr/share/man/man1/lintian-annotate-hints.1.gz usr/share/man/man1/lintian-info.1.gz
usr/share/lintian/bin/spellintian usr/bin/spellintian
usr/share/doc/lintian/lintian.rst usr/share/doc/lintian/lintian.txt

View File

@ -1 +0,0 @@
rm_conffile /etc/lintianrc 2.90.0~ lintian

2
debian/manpages vendored
View File

@ -1,2 +0,0 @@
man/man1/*.1
man/man3/*.3

View File

@ -1 +0,0 @@
# You must remove unused comment lines for the released package.

70
debian/rules vendored
View File

@ -1,70 +0,0 @@
#!/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
pod2man := pod2man --center "Debian Package Checker" --release "Lintian v$(VER)"
pod2mansources := $(wildcard man/*.pod)
docsources := doc/lintian.rst README.md $(pod2mansources)
perlprovides := data/fields/perl-provides
autoreject_data := $(wildcard private/build-time-data/*)
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
jobs = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
PAR_ARGS=-j $(jobs)
endif
%:
dh $@
override_dh_auto_build: generate-docs-stamp
# 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)
override_dh_clean:
rm -rf $(CURDIR)/debian/test-out
rm -rf doc/api.html doc/lintian.html
rm -rf man/man1/ man/man3/ l10n/
dh_clean
override_dh_install:
dh_install
echo "Setting LINTIAN_VERSION to $(VER)"
$(PERL) -p -i -e 's/my \$$LINTIAN_VERSION;/my \$$LINTIAN_VERSION = q{$(VER)};/;' \
$(tmp)/usr/share/lintian/bin/*
profiles: $(profiles);
$(profiles): $(autoreject_data) private/generate-profiles
private/generate-profiles
api-doc:
private/generate-html-docs doc/api.html
.PHONY: generate-docs
generate-docs: generate-docs-stamp
generate-docs-stamp: $(docsources)
dh_testdir
# A UTF-8 locale seemed appropriate; manual uses &sect; character
cd doc && LC_ALL=en_US.UTF-8 rst2html lintian.rst > lintian.html
mkdir -p man/man1/ man/man3/
$(pod2man) --name lintian --section=1 man/lintian.pod > man/man1/lintian.1
set -e ; for POD in $(pod2mansources) ; do \
BASENAME=$$(basename "$$POD" .pod) ; \
$(pod2man) --section=1 "$$POD" > "man/man1/$$BASENAME".1 ; \
done
set -e ; for POD in $$(find doc/tutorial lib/Lintian lib/Test -type f '!' -path '*/Output/*' '!' -path '*/Check/*' '!' -path '*/Screen/*' ) ; do \
BASENAME=$$(echo "$$POD" | perl -pe 's@^(doc/tutorial|lib)/@@; s@/@::@g; s/\.(pod|pm)$$//') ; \
$(pod2man) --name="$$BASENAME" --section=3 "$$POD" > "man/man3/$$BASENAME".3 ; \
done
private/generate-html-docs doc/api.html > /dev/null
touch $@
# only used manually
.PHONY: refresh-perl-provides
refresh-perl-provides:
perl private/refresh-perl-provides > $(perlprovides)

View File

@ -1 +0,0 @@
3.0 (native)

View File

@ -1,10 +0,0 @@
#!/bin/sh
set -e
export LINTIAN_TEST_INSTALLED=yes
WORKDIR="$AUTOPKGTEST_TMP/$(basename $0)"
private/runtests --debug --unattended --keep-going --work-dir="$WORKDIR"
rm -rf "${WORKDIR}"

49
debian/tests/control vendored
View File

@ -1,49 +0,0 @@
Tests: build-and-evaluate-test-packages
Restrictions: allow-stderr
# Conflicts:
# libperl-critic-pulp-perl,
Depends:
aspell,
aspell-en,
build-essential,
cdbs,
default-jdk-headless | default-jdk,
dh-elpa | bash (<< 4.4),
dh-python,
dh-r,
dh-runit,
dpatch,
fakeroot,
gcc-mingw-w64-i686,
gcc-mingw-w64-x86-64,
gpg-agent,
javahelper,
libmce-perl,
libio-prompt-tiny-perl,
libperl-critic-freenode-perl,
libperl-critic-pulp-perl,
libpod-coverage-trustpod-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-csv-perl,
libtext-csv-xs-perl,
libtext-diff-perl,
libtext-template-perl,
lintian,
mingw-w64-tools,
pkg-php-tools,
python-dev-is-python3,
python3,
python3-dev,
python3-all-dev,
python3-numpy,
python3-setuptools,
quilt,
tidy,
uglifyjs,
zip,

View File

@ -364,8 +364,13 @@ per line (and may contain empty lines and comments, starting with a
for more info); <type> is one of ``binary``, ``udeb`` and ``source``,
and <context> 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:
omitted if you want to match it all. Additionally, if the context of
the tag contains paths to files in the package, they're enclosed with
literal brackets (so called "pointed hints") so that tools which
process lintian tags can link to the according file and potentially
even line in the file.
An example file for a binary package would look like:
::
@ -374,7 +379,7 @@ package would look like:
# 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
foo binary: FSSTND-dir-in-usr [/usr/man/man1/foo.1.gz]
An example file for a source package would look like:
@ -384,7 +389,7 @@ An example file for a source package would look like:
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
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
@ -395,8 +400,8 @@ will match arbitrary strings similar to the shell wildcard. For example:
::
# The "help text" must also be covered by the override
source-is-missing apidoc/html/api_data.js *
# Multiple files need to be covered by the override
source-is-missing [apidoc/html/*.js]
.. _section-2.4.2:

View File

@ -80,7 +80,7 @@ the lintian release.
Step 2
------
Login to the lintian-host and ensure that lintian is not currectly
Login to the lintian-host and ensure that lintian is not currently
performing an archive-wide run and that you have "plenty" of time to
complete the upgrade. The entire upgrade can be done in less than 5
minutes (but you may want to have a "slightly" larger window the first

View File

@ -94,15 +94,18 @@ sub installable {
}
}
}
foreach my $lib_dir (qw(usr/lib lib)) {
if (
defined(
my $dir= $processable->installed->resolve_path('lib/udev/rules.d/')
my $dir = $processable->installed->resolve_path(
"$lib_dir/udev/rules.d/")
)
) {
for my $item ($dir->descendants) {
push(@udevrules, $item) if ($item->is_file);
}
}
}
for my $udevrule (@udevrules) {
if ($self->check_udev_rules($udevrule, $modaliases)

View File

@ -50,9 +50,13 @@ sub always {
if $self->processable->fields->declares('Auto-Built-Package');
my $basename = basename($self->processable->path);
# remove salsaci suffix
my $nosalsabasename = $basename;
$nosalsabasename
=~ s/[+]salsaci[+]\d+[+]\d+(_[[:alnum:]]+\.[[:alnum:]]+)$/$1/;
my $adjusted_length
= length($basename)
= length($nosalsabasename)
- length($self->processable->architecture)
+ $LONGEST_ARCHITECTURE;

View File

@ -88,6 +88,10 @@ sub source {
next
if $source_liberty eq 'main' && $installable_liberty eq 'contrib';
# and non-free-firmware built from non-free
next
if $source_liberty eq 'non-free'
&& $installable_liberty eq 'non-free-firmware';
my $control_item= $self->processable->debian_control->item;
my $position = $installable_fields->position('Section');
my $pointer = $control_item->pointer($position);

View File

@ -53,6 +53,8 @@ sub visit_installed_files {
sub check_elf_issues {
my ($self, $item) = @_;
return unless $item->is_elf;
for (uniq @{$item->elf->{ERRORS} // []}) {
$self->pointed_hint('elf-error',$item->pointer, $_)
unless (

View File

@ -92,7 +92,8 @@ sub installable {
qr/^python3-numpy \(<[<=][^\|]+$/,
Lintian::Relation::VISIT_OR_CLAUSE_FULL
)
)&& $self->processable->name !~ m{\A python3?-numpy \Z}xsm;
)
&& $self->processable->name !~ m{\A python3?-numpy \Z}xsm;
return;
}

View File

@ -657,7 +657,7 @@ sub php_source_whitelist {
return 0
if defined $copyright_path
&& $copyright_path->bytes
=~ m{^Source: https?://pecl.php.net/package/.*$}m;
=~ m{^Source: https?://(pecl|pear).php.net/package/.*$}m;
return 0
if $self->processable->source_name =~ /^php\d*(?:\.\d+)?$/xms;

View File

@ -133,13 +133,13 @@ sub installable {
} else {
if (
$ctrl_member !~ m{\A
control\.tar(?:\.(?:gz|xz))? \Z}xsm
control\.tar(?:\.(?:gz|xz|zst))? \Z}xsm
) {
$self->hint(
'malformed-deb-archive',
join($SPACE,
"second (official) member $ctrl_member",
'not control.tar.(gz|xz)')
'not control.tar.(gz|xz|zst)')
);
$failed = 1;
} elsif ($ctrl_member eq 'control.tar') {
@ -158,14 +158,14 @@ sub installable {
} else {
if (
$data_member !~ m{\A
data\.tar(?:\.(?:gz|bz2|xz|lzma))? \Z}xsm
data\.tar(?:\.(?:gz|bz2|xz|lzma|zst))? \Z}xsm
) {
# wasn't okay after all
$self->hint(
'malformed-deb-archive',
join($SPACE,
"third (official) member $data_member",
'not data.tar.(gz|xz|bz2|lzma)')
'not data.tar.(gz|xz|bz2|lzma|zst)')
);
$failed = 1;
} elsif ($self->processable->type eq 'udeb'

View File

@ -81,7 +81,7 @@ my %DH_COMMAND_MANUAL_PREREQUISITES = (
'dh-autoreconf:any | debhelper:any (>= 9.20160403~) | debhelper-compat:any',
dh_autoreconf =>
'dh-autoreconf:any | debhelper:any (>= 9.20160403~) | debhelper-compat:any',
dh_dkms => 'dkms:any | dh-sequence-dkms:any',
dh_dkms => 'dh-dkms:any | dh-sequence-dkms:any',
dh_girepository => 'gobject-introspection:any | dh-sequence-gir:any',
dh_gnome => 'gnome-pkg-tools:any | dh-sequence-gnome:any',
dh_gnome_clean => 'gnome-pkg-tools:any | dh-sequence-gnome:any',
@ -90,7 +90,8 @@ my %DH_COMMAND_MANUAL_PREREQUISITES = (
dh_nativejava => 'gcj-native-helper:any | default-jdk-builddep:any',
dh_pgxs_test => 'postgresql-server-dev-all:any | postgresql-all:any',
dh_python2 => 'dh-python:any | dh-sequence-python2:any',
dh_python3 => 'dh-python:any | dh-sequence-python3:any',
dh_python3 =>
'dh-python:any | dh-sequence-python3:any | pybuild-plugin-pyproject:any',
dh_sphinxdoc =>
'sphinx:any | python-sphinx:any | python3-sphinx:any | dh-sequence-sphinxdoc:any',
dh_xine => 'libxine-dev:any | libxine2-dev:any'
@ -124,6 +125,7 @@ my %DH_ADDON_MANUAL_PREREQUISITES = (
'sphinx:any | python-sphinx:any | python3-sphinx:any | dh-sequence-sphinxdoc:any',
systemd =>
'debhelper:any (>= 9.20160709~) | debhelper-compat:any | dh-sequence-systemd:any | dh-systemd:any',
vim_addon => 'dh-vim-addon:any | dh-sequence-vim-addon:any',
);
sub visit_patched_files {
@ -648,12 +650,14 @@ sub source {
$self->pointed_hint(
'debian-rules-uses-unnecessary-dh-argument',
$drules->pointer($seen_dh_parallel),
"$debhelper_level >= $DH_PARALLEL_NOT_NEEDED",
'dh ... --parallel'
)if $seen_dh_parallel && $debhelper_level >= $DH_PARALLEL_NOT_NEEDED;
$self->pointed_hint(
'debian-rules-uses-unnecessary-dh-argument',
$drules->pointer($seen_dh_systemd),
"$debhelper_level >= $INVOKES_SYSTEMD",
'dh ... --with=systemd'
)if $seen_dh_systemd && $debhelper_level >= $INVOKES_SYSTEMD;
@ -800,7 +804,8 @@ sub source {
# As a special case, the python3 addon needs a dependency on
# dh-python unless the -dev packages are used.
my $python_source = 'dh-python:any | pybuild-plugin-pyproject:any';
my $python_source
= 'dh-python:any | dh-sequence-python3:any | pybuild-plugin-pyproject:any';
$self->pointed_hint('missing-build-dependency-for-dh-addon',
$drules->pointer,$addon, "(does not satisfy $python_source)")

View File

@ -852,8 +852,32 @@ sub check_dep5_copyright {
next
unless $seen;
# Compare and also normalize the seen and wanted license
# identifier wrt. to redundant trailing dot-zeros,
# -or-later suffix vs + suffix, -only suffix vs no
# suffix. Still display the original variant in the tag.
my $seen_normalized = $seen;
$seen_normalized = 'expat' if $seen_normalized eq 'mit';
$seen_normalized =~ s/-or-later$/+/i;
$seen_normalized =~ s/-only$//i;
my $seen_nozero = $seen_normalized;
$seen_nozero =~ s/\.0//g;
my @wanted = @{$license_identifiers_by_file{$name}};
my @mismatched = grep { $_ ne $seen } @wanted;
my @mismatched = grep {
my $want = $_;
my $want_normalized = $want;
$want_normalized = 'expat' if $want_normalized eq 'mit';
$want_normalized =~ s/-or-later$/+/i;
$want_normalized =~ s/-only$//i;
my $want_nozero = $want_normalized;
$want_nozero =~ s/\.0//g;
$want_normalized ne $seen_normalized
and $want_nozero ne $seen_normalized
and $want_normalized ne $seen_nozero
and $want_nozero ne $seen_nozero;
} @wanted;
$self->pointed_hint('inconsistent-appstream-metadata-license',
$copyright_file->pointer, $name, "($seen != $_)")

View File

@ -93,7 +93,7 @@ sub source {
my @files = grep { defined }
map { $self->processable->patched->resolve_path("debian/$_") } @catalogs;
my @utf8 = grep { $_->is_valid_utf8 } @files;
my @utf8 = grep { $_->is_valid_utf8 and $_->is_file } @files;
for my $item (@utf8) {
my $deb822 = Lintian::Deb822->new;

View File

@ -74,6 +74,9 @@ my $PROPERTIES = 'org.freedesktop.DBus.Properties';
sub check_policy {
my ($self, $item) = @_;
$self->pointed_hint('dbus-policy-in-etc', $item->pointer)
if $item->name =~ m{^etc/};
my $xml = $item->decoded_utf8;
return
unless length $xml;

View File

@ -39,6 +39,20 @@ use namespace::clean;
with 'Lintian::Check';
# a list of regex for detecting non documentation files checked against basename (xi)
my @NOT_DOCUMENTATION_FILE_REGEXES = qw{
^dependency_links[.]txt$
^entry_points[.]txt$
^requires[.]txt$
^top_level[.]txt$
^requirements[.]txt$
^namespace_packages[.]txt$
^bindep[.]txt$
^version[.]txt$
^robots[.]txt$
^cmakelists[.]txt$
};
# a list of regex for detecting documentation file checked against basename (xi)
my @DOCUMENTATION_FILE_REGEXES = qw{
[.]docx?$
@ -110,7 +124,9 @@ sub visit_installed_files {
=~ m{^ usr/share/doc/ (?:.+/)? (?:doxygen|html) / .* [.]map [.] $regex }sx;
if ($item->is_file
&& any { $item->basename =~ m{$_}xi } @DOCUMENTATION_FILE_REGEXES) {
and any { $item->basename =~ m{$_}xi } @DOCUMENTATION_FILE_REGEXES
and any { $item->basename !~ m{$_}xi } @NOT_DOCUMENTATION_FILE_REGEXES)
{
$self->pointed_hint(
'package-contains-documentation-outside-usr-share-doc',

View File

@ -67,7 +67,7 @@ sub spelling_tag_emitter {
}
my @user_locations= qw(bin/ usr/bin/ usr/bin/X11/ usr/bin/mh/ usr/games/);
my @admin_locations= qw(sbin/ usr/sbin/);
my @admin_locations= qw(sbin/ usr/sbin/ usr/libexec/);
sub visit_installed_files {
my ($self, $item) = @_;
@ -622,11 +622,15 @@ sub installable {
&& any { $_ == $USER_COMMAND_SECTION } @sections;
}
for (map {$local_executables{$_}} @english_missing) {
$self->pointed_hint('no-english-manual-page', $_->pointer)
for map {$local_executables{$_}} @english_missing;
unless $_->name =~ m{/libexec/};
}
for (map {$local_executables{$_}} @manpage_missing) {
$self->pointed_hint('no-manual-page', $_->pointer)
for map {$local_executables{$_}} @manpage_missing;
unless $_->name =~ m{/libexec/};
}
# surplus manpages only for this package; provides sorted output
my $local = List::Compare->new(\@related_commands, [keys %local_manpages]);

View File

@ -56,12 +56,13 @@ sub changes {
for my $target (@targets) {
my $reduced = $target;
$reduced =~ s{- (?:backports(?:-sloppy)?
$reduced =~ s{- (?:backports(?:-(?:sloppy|staging))?
|lts
|proposed(?:-updates)?
|updates
|security
|volatile)$}{}xsm;
|volatile
|fasttrack)$}{}xsm;
$major{$target} = $reduced;
}
@ -92,7 +93,7 @@ sub changes {
my $version = $self->processable->fields->value('Version');
my $distnumber;
my $bpoversion;
if ($version=~ /~bpo(\d+)\+(\d+)$/) {
if ($version=~ /~bpo(\d+)\+(\d+)(\+salsaci(\+\d+)*)?$/) {
$distnumber = $1;
$bpoversion = $2;

View File

@ -25,6 +25,7 @@ use warnings;
use utf8;
use Const::Fast;
use List::SomeUtils qw(all);
use Path::Tiny;
use Moo;
@ -54,12 +55,15 @@ my @CHANGES = qw(Format Date Source Architecture Version Distribution
sub source {
my ($self) = @_;
#my $all_udeb = 1;
#$all_udeb = 0
# if any {
# $debian_control->installable_package_type($_) ne 'udeb'
# }
# $debian_control->installables;
my $debian_control = $self->processable->debian_control;
# policy 5.6.11
if (all { $debian_control->installable_package_type($_) eq 'udeb' }
$debian_control->installables) {
@DEBIAN_CONTROL_SOURCE
= grep { $_ ne 'Standards-Version' } @DEBIAN_CONTROL_SOURCE;
@DSC = grep { $_ ne 'Standards-Version' } @DSC;
}
my $fields = $self->processable->fields;
my @missing_dsc = grep { !$fields->declares($_) } @DSC;
@ -67,7 +71,6 @@ sub source {
my $dscfile = path($self->processable->path)->basename;
$self->hint('required-field', $dscfile, $_) for @missing_dsc;
my $debian_control = $self->processable->debian_control;
my $control_item = $debian_control->item;
# look at d/control source paragraph

View File

@ -37,7 +37,8 @@ with 'Lintian::Check';
const my $EMPTY => q{};
our %KNOWN_ARCHIVE_PARTS = map { $_ => 1 } qw(non-free contrib);
our %KNOWN_ARCHIVE_PARTS
= map { $_ => 1 } qw(non-free contrib non-free-firmware);
sub udeb {
my ($self) = @_;

View File

@ -74,7 +74,7 @@ sub source {
my $latest_standard = $policy_releases->latest_version;
my ($latest_major, $latest_minor, $latest_patch)
= split(/[.]/, $latest_standard, $MAXIMUM_COMPONENTS_ANALYZED);
= ((split(/[.]/, $latest_standard))[0..$MAXIMUM_COMPONENTS_ANALYZED]);
# a fourth digit is a non-normative change in policy
my $latest_normalized
@ -99,7 +99,7 @@ sub source {
if (versioncmp($compliance_standard, $latest_standard) == 1) {
$self->hint('newer-standards-version',
"$compliance_standard (current is $latest_standard)")
"$compliance_standard (current is $latest_normalized)")
unless $distribution =~ /backports/;
} else {
@ -146,7 +146,7 @@ sub source {
= grep { $_ <= $changelog_epoch } @newer_normative_epochs;
my $outdated_illustration
= "$compliance_standard (released $compliance_date) (current is $latest_standard)";
= "$compliance_standard (released $compliance_date) (current is $latest_normalized)";
# use normative to prevent tag changes on minor new policy edits
$self->hint('out-of-date-standards-version', $outdated_illustration)

View File

@ -35,13 +35,22 @@ use namespace::clean;
with 'Lintian::Check';
# Whitelist of XS-* source fields
my %source_field_whitelist = (
'Autobuild' => 1,
'Go-Import-Path' => 1,
'Ruby-Versions' => 1,
);
sub source {
my ($self) = @_;
my $KNOWN_SOURCE_FIELDS= $self->data->load('common/source-fields');
my @unknown= $self->processable->fields->extra($KNOWN_SOURCE_FIELDS->all);
$self->hint('unknown-field', $_)for @unknown;
# The grep filter is a workaround for #1014885 and #1029471
$self->hint('unknown-field', $_)
for grep { !exists($source_field_whitelist{$_}) } @unknown;
return;
}

View File

@ -52,8 +52,9 @@ my %VCS_EXTRACT = (
# hg uri followed by optional -b branchname
Hg => sub { return shift =~ /^(.+?)(?:\s+-b\s+(\S*))?$/;},
# git uri followed by optional "[subdir]", "-b branchname" etc.
Git =>
sub { return shift =~ /^(.+?)(?:\s+\[(\S*)\])?(?:\s+-b\s+(\S*))?$/;},
Git => sub {
return shift =~ /^(.+?)(?:(?:\s+\[(\S*)\])?(?:\s+-b\s+(\S*))?){0,2}$/;
},
Svn => sub { return @_;},
# New "mtn://host?branch" uri or deprecated "host branch".
Mtn => sub { return shift =~ /^(.+?)(?:\s+\S+)?$/;},
@ -203,9 +204,8 @@ sub always {
my $maintainer = $processable->fields->unfolded_value($field);
my $is_list
= $maintainer =~ /\b(\S+\@lists(?:\.alioth)?\.debian\.org)\b/;
if ($is_list) {
if ($maintainer =~ /\b(\S+\@lists(?:\.alioth)?\.debian\.org)\b/
|| $maintainer =~ /\b(\S+\@tracker\.debian\.org)\b/) {
$is_teammaintained = 1;
$team_email = $1;
$is_maintained_by_individual = 0;
@ -339,14 +339,6 @@ sub always {
);
}
}
$self->hint('old-dpmt-vcs', $platform)
if $maintainer =~ m{python-modules-team\@lists\.alioth\.debian\.org}
and $uri !~ m{salsa.debian.org/python-team/packages/.+};
$self->hint('old-papt-vcs', $platform)
if $maintainer =~ m{python-apps-team\@lists\.alioth\.debian\.org}
and $uri !~ m{salsa.debian.org/python-team/packages/.+};
}
$self->hint('vcs-fields-use-more-than-one-vcs',

View File

@ -85,6 +85,11 @@ sub visit_patched_files {
return
unless $item->is_open_ok;
# Skip if file is a REUSE license (LICENSES/**.txt), which are
# canonically provided with long lines rather than being hard-wrapped.
return
if $item->name =~ m{^ LICENSES/ .* [.] txt $}x;
# Skip if file is detected to be an image or JSON.
return
if $item->file_type =~ m{image|bitmap|JSON};

View File

@ -55,6 +55,9 @@ sub visit_patched_files {
return
unless $item->is_file;
return
if $item->dirname =~ m{^debian/missing-sources/};
# prebuilt-file or forbidden file type
$self->pointed_hint('source-contains-prebuilt-wasm-binary', $item->pointer)
if $item->file_type =~ m{^WebAssembly \s \(wasm\) \s binary \s module}x;

View File

@ -90,7 +90,25 @@ sub visit_installed_files {
# 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/) {
#
# 2023-06-05: this check has been adjusted because
# Adobe's type hint code[1] (including Flex[2]) became
# open source[3] with an Apache-2.0 license[4] as
# committed on 2014-09-19, making that check a false
# positive[7].
#
# We continue to check for copyrighted code that is not
# available under an open source license from the origin
# publication, "Adobe Type 1 Font Format"[5][6].
#
# [1] - https://github.com/adobe-type-tools/afdko/blob/2bf85cf44a64148353b24db17e0cc41ede5493b1/FDK/Tools/Programs/public/lib/source/t1write/t1write_hintothers.h
# [2] - https://github.com/adobe-type-tools/afdko/blob/2bf85cf44a64148353b24db17e0cc41ede5493b1/FDK/Tools/Programs/public/lib/source/t1write/t1write_flexothers.h
# [3] - https://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1375813.html
# [4] - https://github.com/adobe-type-tools/afdko/blob/2bf85cf44a64148353b24db17e0cc41ede5493b1/LICENSE.txt
# [5] - https://adobe-type-tools.github.io/font-tech-notes/pdfs/T1_SPEC.pdf
# [6] - https://lccn.loc.gov/90042516
# [7] - https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1029555
if ($line =~ m/UniqueID\s*6859/) {
$self->pointed_hint(
'license-problem-font-adobe-copyrighted-fragment-no-credit',

View File

@ -472,16 +472,6 @@ sub check_init {
$saw_command{$1} = 1;
}
if (
$line =~ m{^\s*\.\s+/lib/lsb/init-functions}
&& !$processable->relation('strong')->satisfies('lsb-base:any')
&& (none { $_->basename =~ m/\.service$/ && !$_->is_dir }
@{$processable->installed->sorted_list})
) {
$self->pointed_hint('init.d-script-needs-depends-on-lsb-base',
$item->pointer($position));
}
# nested while
} continue {
++$position;
@ -718,25 +708,6 @@ sub check_defaults {
sub visit_installed_files {
my ($self, $item) = @_;
# check for missing init.d script when alternative init system is present
if ( $item =~ m{etc/sv/(?<svc>[^/]+)/run$}
|| $item =~ m{(?<usr>usr/)?lib/systemd/system/(?<svc>[^/@]+)\.service})
{
my ($usr, $service) = ($+{usr} // $EMPTY, $+{svc});
$self->pointed_hint(
'package-supports-alternative-init-but-no-init.d-script',
$item->pointer)
unless $self->processable->installed->resolve_path(
"etc/init.d/${service}")
|| $self->processable->installed->resolve_path(
"${usr}lib/systemd/system/${service}.path")
|| $self->processable->installed->resolve_path(
"${usr}lib/systemd/system/${service}.timer");
}
if ($item =~ m{etc/sv/([^/]+)/$}) {
my $service = $1;

View File

@ -95,6 +95,14 @@ qr{(?i)/mootools(?:(?:\.v|-)[\d\.]+)?(?:-(?:(?:core(?:-server)?)|more)(?:-(?:yc|
qr{(?i)/_static/(?:doctools|language_data|searchtools)} . $JS_EXT,
'tinymce' => qr{(?i)/tiny_mce(?:_(?:popup|src))?}
. $JS_EXT,
'libjs-lodash' => qr{(?i)lodash} . $JS_EXT,
'node-pako' =>
qr{(?i)pako(?:_(:?de|in)flate(?:.es\d+)?)(?:-[\d\.]+)?}. $JS_EXT,
'node-jszip-utils' => qr{(?i)jszip-utils(?:-ie)?(?:-[\d\.]+)?}
. $JS_EXT,
'node-jszip' => qr{(?i)jszip(?:-ie)?(?:-[\d\.]+)?} . $JS_EXT,
'libjs-codemirror' => qr{(?i)codemirror} . $JS_EXT,
'libjs-punycode' => qr{(?i)punycode(?:\.es\d+)?} . $JS_EXT,
# not yet available in unstable
# 'xinha' => qr{(?i)/(htmlarea|Xinha(Loader|Core))} . $JS_EXT,
);

View File

@ -149,7 +149,8 @@ sub source {
$self->pointed_hint('composer-package-without-pkg-php-tools-builddep',
$composer_json->pointer)
if defined $composer_json
&& !$build_depends->satisfies('pkg-php-tools')
&& !($build_depends->satisfies('pkg-php-tools')
|| $build_depends->satisfies('dh-sequence-phpcomposer'))
&& !defined $package_xml
&& !defined $package2_xml;

View File

@ -119,11 +119,6 @@ sub source {
if $build_all->satisfies('python-sphinx')
&& !$build_all->satisfies('python3-sphinx');
my $maintainer = $self->processable->fields->value('Maintainer');
$self->hint('python-teams-merged', $maintainer)
if $maintainer =~ m{python-modules-team\@lists\.alioth\.debian\.org}
|| $maintainer =~ m{python-apps-team\@lists\.alioth\.debian\.org};
$self->hint(
'alternatively-build-depends-on-python-sphinx-and-python3-sphinx')
if $self->processable->fields->value('Build-Depends')
@ -225,7 +220,11 @@ sub source {
my %PYPROJECT_PREREQUISITES = (
'poetry.core.masonry.api' => 'python3-poetry-core:any',
'flit_core.buildapi' => 'flit:any',
'setuptools.build_meta' => 'python3-setuptools:any'
'setuptools.build_meta' => 'python3-setuptools:any',
'pdm.pep517.api' => 'python3-pdm-pep517:any',
'hatchling.build' => 'python3-hatchling:any',
'mesonpy' => 'python3-mesonpy:any',
'sipbuild.api' => 'python3-sipbuild:any'
);
open(my $fd, '<', $pyproject->unpacked_path)
@ -236,7 +235,10 @@ sub source {
my $pointer = $pyproject->pointer($position);
if ($line =~ m{^ \s* build-backend \s* = \s* "([^"]+)" }x) {
# In theory, TOML only uses double quotes. In practice, that's not
# true and only matching for double quotes introduce false negatives
if ($line =~ m{^ \s* build-backend \s* = \s* "([^"]+)" }x
|| $line =~ m{^ \s* build-backend \s* = \s* '([^"]+)' }x) {
my $backend = $1;
@ -245,6 +247,11 @@ sub source {
&& $build_depends->satisfies('python3-poetry:any')
&& !$build_depends->satisfies('python3-poetry-core:any');
$self->pointed_hint('uses-pdm-cli', $pointer)
if $backend eq 'pdm.pep517.api'
&& $build_depends->satisfies('python3-pdm:any')
&& !$build_depends->satisfies('python3-pdm-pep517:any');
if (exists $PYPROJECT_PREREQUISITES{$backend}) {
my $prerequisites = $PYPROJECT_PREREQUISITES{$backend}
@ -253,7 +260,7 @@ sub source {
$self->pointed_hint(
'missing-prerequisite-for-pyproject-backend',
$pointer, $backend,"(does not satisfy $prerequisites)")
if !$build_depends->satisfies($prerequisites);
if !$build_all->satisfies($prerequisites);
}
}

View File

@ -0,0 +1,77 @@
# languages/python/distutils -- lintian check script -*- perl -*-
#
# Copyright (C) 2022 Louis-Philippe Véronneau <pollo@debian.org>
#
# 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 https://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::Check::Languages::Python::Distutils;
use v5.20;
use warnings;
use utf8;
use Moo;
use namespace::clean;
with 'Lintian::Check';
my $PYTHON3_DEPEND
= 'python3:any | python3-dev:any | python3-all:any | python3-all-dev:any';
sub visit_patched_files {
my ($self, $item) = @_;
my $build_all = $self->processable->relation('Build-Depends-All');
# Skip if the package doesn't depend on python
return
unless $build_all->satisfies($PYTHON3_DEPEND);
# Skip if it's not a python file
return
unless $item->name =~ /\.py$/;
# Skip if we can't open the file
return
unless $item->is_open_ok;
open(my $fd, '<', $item->unpacked_path)
or die encode_utf8('Cannot open ' . $item->unpacked_path);
my $position = 1;
while (my $line = <$fd>) {
my $pointer = $item->pointer($position);
$self->pointed_hint('uses-python-distutils', $pointer)
if $line =~ m{^from distutils} || $line =~ m{^import distutils};
} continue {
++$position;
}
close $fd;
return;
}
1;
# Local Variables:
# indent-tabs-mode: nil
# cperl-indent-level: 4
# End:
# vim: syntax=perl sw=4 sts=4 sr et

View File

@ -47,7 +47,15 @@ sub visit_installed_files {
$self->pointed_hint('executable-stack-in-shared-library', $item->pointer)
if exists $item->elf->{PH}{STACK}
&& $item->elf->{PH}{STACK}{flags} ne 'rw-';
&& $item->elf->{PH}{STACK}{flags} ne 'rw-'
# Once the following line is removed again, please also remove
# the Test-Architectures line in
# t/recipes/checks/libraries/shared/stack/shared-libs-exec-stack/eval/desc
# and the MIPS-related notes in
# tags/e/executable-stack-in-shared-library.tag. See
# https://bugs.debian.org/1025436 and
# https://bugs.debian.org/1022787 for details
&& $self->processable->fields->value('Architecture') !~ /mips/;
return;
}

View File

@ -38,9 +38,9 @@ with 'Lintian::Check';
const my $EMPTY => q{};
# date --date="Sat, 6 Jul 2019 20:53:14 -0400" +%s
# https://lists.debian.org/debian-announce/2019/msg00003.html
const my $OLDSTABLE_RELEASE_EPOCH => 1_562_460_794;
# date --date="Sat, 14 Aug 2021 17:41:41 -0400" +%s
# https://lists.debian.org/debian-announce/2021/msg00003.html
const my $OLDSTABLE_RELEASE_EPOCH => 1_628_977_301;
# 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

View File

@ -102,6 +102,7 @@ sub source {
my $version_nmuness = 0;
my $version_local = 0;
my $upload_is_backport = $version =~ m/~bpo(\d+)\+(\d+)$/;
my $upload_is_stable_update = $version =~ m/~deb(\d+)u(\d+)$/;
if ($version =~ /-[^.-]+(\.[^.-]+)?(\.[^.-]+)?$/) {
$version_nmuness = 1 if defined $1;
@ -158,6 +159,7 @@ sub source {
$pointer, $version)
if $upload_is_nmu
&& $version_nmuness != 1
&& !$upload_is_stable_update
&& !$upload_is_backport;
}

View File

@ -62,6 +62,7 @@ our $PYTHON3_ALL_DEPEND
my %KNOWN_SPECIAL_DEPENDS = map { $_ => 1 } qw(
@
@builddeps@
@recommends@
);
sub source {

View File

@ -41,9 +41,11 @@ with 'Lintian::Check';
sub installable {
my ($self) = @_;
foreach my $lib_dir (qw(usr/lib lib)) {
my $rules_dir
= $self->processable->installed->resolve_path('lib/udev/rules.d/');
return
= $self->processable->installed->resolve_path(
"$lib_dir/udev/rules.d/");
next
unless $rules_dir;
for my $item ($rules_dir->children) {
@ -56,6 +58,7 @@ sub installable {
$self->check_udev_rules($item);
}
}
return;
}

View File

@ -81,9 +81,14 @@ sub source {
# check signatures
my @allsigs = map { @{$signatures{$_}} } @origtar;
for my $signature (@allsigs) {
my $sig_file = path($parentdir)->child($signature);
# Only try to slurp file if it exists. Otherwise Path::Tiny ≥
# 0.142 will bail out. (Returned empty string instead before
# that version.)
next unless $sig_file->is_file;
# take from location near input file
my $contents = path($parentdir)->child($signature)->slurp;
my $contents = $sig_file->slurp;
if ($contents =~ /^-----BEGIN PGP ARMORED FILE-----/m) {

View File

@ -122,7 +122,8 @@ sub all_sources {
$self->debhelper_levels,$self->fonts,
$self->hardening_buildflags,$self->mail_transport_agents,
$self->policy_releases,$self->sections,
$self->style_sheet,$self->virtual_initd_facilities
#$self->style_sheet,
$self->virtual_initd_facilities
);
return @sources;
@ -308,10 +309,10 @@ has style_sheet => (
default => sub {
my ($self) = @_;
my $releases = Lintian::Data::Stylesheet->new;
$releases->load($self->data_paths, $self->vendor);
my $stylesheets = Lintian::Data::Stylesheet->new;
$stylesheets->load($self->data_paths, $self->vendor);
return $releases;
return $stylesheets;
}
);

View File

@ -72,7 +72,7 @@ sub add_file_types {
my @files = grep { $_->is_file } @{$self->sorted_list};
my @names = map { $_->name } @files;
my @command = qw(file --no-pad --print0 --print0 --);
my @command = qw(file --raw --no-pad --print0 --print0 --);
my %file_types;

View File

@ -191,8 +191,7 @@ sub process{
next
unless $PROFILE->display_level_for_tag($hint->tag_name);
if (!defined $hint->override
|| $option->{'show-overrides'}) {
if (!defined $hint->override) {
++$reported_count{$tag->visibility}
if !$tag->experimental;

View File

@ -80,7 +80,8 @@ has is_non_free => (
$section ||= 'main';
return 1
if $section =~ m{^(?:non-free|restricted|multiverse)/};
if $section
=~ m{^(?:non-free|non-free-firmware|restricted|multiverse)/};
return 0;
}

View File

@ -116,7 +116,7 @@ has orig => (
my $errors = $subindex->create_from_piped_tar(\@command);
push(@{$index->unpack_messages}, "$tarball . $_")
for uniq split(/\n/, $errors);
for grep { !/^tar: Ignoring / } uniq split(/\n/, $errors);
# treat hard links like regular files
my @hardlinks = grep { $_->is_hardlink } @{$subindex->sorted_list};

View File

@ -131,8 +131,8 @@ has patched => (
chdir($savedir)
or die encode_utf8("Cannot change to directory $savedir");
my @messages
= split(/\n/, $unpack_errors . $index_errors . $permissions_errors);
my @messages = grep { !/^tar: Ignoring / }
split(/\n/, $unpack_errors . $index_errors . $permissions_errors);
push(@{$index->unpack_messages}, @messages);
return $index;

View File

@ -81,7 +81,7 @@ relationship a superset of another relationship."
=item name
=item multiarch_acceptor
=item multiarch_qualifier
=item version_operator
@ -107,7 +107,7 @@ has name => (
coerce => sub { my ($text) = @_; return ($text // $EMPTY); }
);
has multiarch_acceptor => (
has multiarch_qualifier => (
is => 'rw',
default => $EMPTY,
coerce => sub { my ($text) = @_; return ($text // $EMPTY); }
@ -190,7 +190,7 @@ sub parse {
$self->parsable($TRUE);
$self->name($1);
$self->multiarch_acceptor($2);
$self->multiarch_qualifier($2);
$self->version_operator($3);
$self->reference_version($4);
$self->build_architecture($5);
@ -206,7 +206,7 @@ sub parse {
if $self->version_operator eq $GREATER_THAN;
unless ($with_restrictions) {
$self->multiarch_acceptor('any');
$self->multiarch_qualifier('any');
$self->version_operator($EMPTY);
$self->reference_version($EMPTY);
$self->build_architecture($EMPTY);
@ -350,17 +350,17 @@ sub satisfies {
# pkg has no chance of satisfing pkg:Y unless Y is 'any'
return undef
if !length $self->multiarch_acceptor
&& length $other->multiarch_acceptor
&& $other->multiarch_acceptor ne 'any';
if !length $self->multiarch_qualifier
&& length $other->multiarch_qualifier
&& $other->multiarch_qualifier ne 'any';
# TODO: Review this case. Are there cases where other cannot
# disprove self due to the ":any"-qualifier? For now, we
# assume there are no such cases.
# pkg:X has no chance of satisfying pkg
return undef
if length $self->multiarch_acceptor
&& !length $other->multiarch_acceptor;
if length $self->multiarch_qualifier
&& !length $other->multiarch_qualifier;
# For now assert that only the identity holds. In practise, the
# "pkg:X" (for any valid value of X) seems to satisfy "pkg:any",
@ -368,9 +368,9 @@ sub satisfies {
# matters)
# pkg:X has no chance of satisfying pkg:Y unless X equals Y
return undef
if length $self->multiarch_acceptor
&& length $other->multiarch_acceptor
&& $self->multiarch_acceptor ne $other->multiarch_acceptor;
if length $self->multiarch_qualifier
&& length $other->multiarch_qualifier
&& $self->multiarch_qualifier ne $other->multiarch_qualifier;
# Now, down to version. The implication is true if self's clause is stronger
# than other's, or is equivalent.
@ -511,8 +511,8 @@ sub to_string {
my $text = $self->name;
$text .= $COLON . $self->multiarch_acceptor
if length $self->multiarch_acceptor;
$text .= $COLON . $self->multiarch_qualifier
if length $self->multiarch_qualifier;
$text
.= $SPACE

View File

@ -35,8 +35,7 @@ sub suppress {
return 1
if $item->dirname =~ m{ [^/] [.] dist-info / $}x
&& defined $item->parent_dir->child('METADATA')
&& defined $item->parent_dir->child('WHEEL')
&& defined $item->parent_dir->child('RECORD');
&& defined $item->parent_dir->child('WHEEL');
return 1
if $item->dirname =~ m{ [^/] [.] egg-info / $}x

View File

@ -4,6 +4,7 @@
# Copyright (C) 2009 Russ Allbery
# Copyright (C) 2004 Marc Brockschmidt
# Copyright (C) 1998 Richard Braakman
# Copyright (C) 2023 Axel Beckert
#
# 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
@ -153,7 +154,8 @@ sub check_spelling {
if not $quoted
and not $duplicates{$word}++
and not $ends_with_punct
and $text_orig !~ /\b$word\s*\($word\b/;
and $text_orig !~ /\b$word\s*\($word\b/
and $text_orig !~ /\b$word\)\s*$word\b/;
}
if ($word =~ m/^[A-Za-z]+$/ and not $ends_with_punct) {

View File

@ -83,15 +83,20 @@ sub version_from_git {
return $EMPTY
unless -d $git_path;
my $describe
= decode_utf8(safe_qx('git', "--git-dir=$git_path", 'describe'));
# Example outputs:
# 2.115.3-49-g086a9a113
# 2.115.3-49-g086a9a113-dirty
my $describe = decode_utf8(
safe_qx('git', "--git-dir=$git_path", 'describe', '--dirty'));
chomp $describe;
my ($guess, $step, $commit) = split(/-/, $describe);
return $EMPTY
unless defined $step;
$guess =~ s/ [.] 0 $/.$step/sx;
# Modify it to make it a valid native version number and make it
# look more debianish like these:
# 2.115.3+49commits+git086a9a113
# 2.115.3+49commits+git086a9a113+dirty
my $guess = $describe;
$guess =~ s/ - ( \d+ ) -g /+${1}commits+git/sx;
$guess =~ s/ - /+/sxg;
return ($guess // $EMPTY);
}

View File

@ -95,7 +95,7 @@ if ($opt{'in-place'}) {
or die encode_utf8("Cannot open $infile");
my $outfile = 'debian/changelog.tmp';
open(my $out_fd, '>:encoding(UTF-8)', $outfile)
open(my $out_fd, '>', $outfile)
or die encode_utf8("Cannot open $outfile");
while (my $line = <$in_fd>) {

View File

@ -0,0 +1,15 @@
#!/bin/sh
# Post-release version bump script. Not really lintian-specific, but needed here.
set -e
if head -1 debian/changelog | grep -Fq 'UNRELEASED' ; then
echo 'Most recent debian/changelog entry already sports an "UNRELEASED", doing nothing.'
exit 1;
fi
dch --increment 'WIP (generated at release time: please do not add entries below.)'
sed -e '1 s/)/~git)/' -i debian/changelog
git add debian/changelog
git commit -m "Post-release version bump" -m "Gbp-Dch: Ignore"

View File

@ -9,6 +9,9 @@ Disable-Tags:
maintainer-upload-has-incorrect-version-number
no-human-maintainers
no-nmu-in-changelog
not-binnmuable-all-depends-any
not-binnmuable-any-depends-all
not-binnmuable-any-depends-any
qa-upload-has-incorrect-version-number
source-nmu-has-incorrect-version-number
team-upload-has-incorrect-version-number

View File

@ -29,7 +29,7 @@ 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'
u 1:2 w filledcurve x1 ls 20 t sprintf("Tag %s emitted", tag), \
'' u 1:4 w filledcurve x1 ls 21 t sprintf("Packages which emitted %s", tag), \
'' u 1:3 w filledcurve x1 ls 22 t sprintf("Tag %s overridden", tag)

View File

@ -1 +0,0 @@
../frontend/dplint

View File

@ -18,28 +18,6 @@ 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 completely 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 <unused>
9000 - 9998 Tests for reporting/ [9500]
9999 Tests from the old legacy test suite
The desc file
-------------
@ -51,8 +29,8 @@ fields are:
Description: <description of the purpose of the test>
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 against false positives) should be listed in a
listed in a Test-For key. If the test case is expecting some tags to not
be issued (checking against false positives), those tags 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:
@ -69,11 +47,10 @@ For example, to test --show-overrides with the -T option, use:
Options: --show-overrides -T no-copyright-file
The string TESTSET is no longer replaced in the Options field. Instead,
Lintian is run in the test's directory. Please use a local, relative
reference to the file or list the tags explicitly with '--suppress-tags'.
By default, the Lintian output is sorted before comparing it to the tags
By default, the Lintian output is sorted before comparing it to the 'hints'
file. To suppress the sort (when, for instance, checking non-standard
output formats), use:
@ -84,7 +61,7 @@ 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
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
@ -100,7 +77,7 @@ failing, use:
Todo: yes
Test cases marked as Todo will succeed if they fail _the testing step_
Test cases marked as 'Todo: yes' will succeed if they fail _the testing step_
and fail if they succeed. Although this option can be very useful to
document what needs to be done, the ideal situation is to have none of
them :)
@ -174,7 +151,7 @@ If you notice such a case, you can use:
If any of the dependencies are unavailable or conflicts are present,
the test will be skipped.
All other fields in the .desc file are optional and control the values
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:

View File

@ -1,4 +1,4 @@
appstream-metadata (binary): appstream-metadata-missing-modalias-provide match rule usb:v0000p000Ad* [lib/udev/rules.d/60-appstream-metadata.rules:13]
appstream-metadata (binary): appstream-metadata-missing-modalias-provide match rule usb:v0000p000Ad* [usr/lib/udev/rules.d/60-appstream-metadata.rules:13]
appstream-metadata (binary): appstream-metadata-malformed-modalias-provide include non-valid hex digit in USB matching rule 'usb:v0000p000ad*' [usr/share/metainfo/appstream-metadata.metadata.xml]
appstream-metadata (binary): appstream-metadata-legacy-format [usr/share/appdata/appstream-metadata-obsolete.metadata.xml]
appstream-metadata (binary): appstream-metadata-invalid [usr/share/metainfo/appstream-metadata-invalid.metadata.xml]

View File

@ -1 +1 @@
libbasic2 (binary): binary-file-built-without-LFS-support usr/lib/libbasic.so.2
libbasic2 (binary): binary-file-built-without-LFS-support [usr/lib/libbasic.so.2]

View File

@ -1,7 +1,7 @@
#!/usr/bin/make -f
export DEB_BUILD_MAINT_OPTIONS=hardening=+all,-pie
export DEB_LDFLAGS_MAINT_APPEND=-Wl,--no-as-needed
export DEB_LDFLAGS_MAINT_APPEND=-Wl,--no-as-needed -fPIC
%:
dh $@ --buildsystem pybuild

View File

@ -1 +1,3 @@
AC_INIT
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)

Some files were not shown because too many files have changed in this diff Show More