mirror of https://gitee.com/openkylin/lintian.git
Import Upstream version 2.117.0
This commit is contained in:
parent
dc9a7a800a
commit
4a647da510
|
@ -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
|
12
.mailmap
12
.mailmap
|
@ -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>
|
174
CONTRIBUTING.md
174
CONTRIBUTING.md
|
@ -12,10 +12,11 @@ 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
|
||||
name space to your local machine. You can find the command for that
|
||||
namespace to your local machine. You can find the command for that
|
||||
under a blue button that says "Clone'. Choose the git protocol (not
|
||||
HTTPS).
|
||||
|
||||
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
@ -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
|
||||
|
|
|
@ -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
|
@ -7,10 +7,10 @@
|
|||
|
||||
|
||||
# Codenames
|
||||
jessie
|
||||
stretch
|
||||
buster
|
||||
bullseye
|
||||
bookworm
|
||||
sid
|
||||
|
||||
# Aliases
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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" : {
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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" : [
|
||||
|
|
|
@ -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$
|
||||
|
|
|
@ -5,7 +5,6 @@ dma
|
|||
esmtp-run
|
||||
exim4-daemon-heavy
|
||||
exim4-daemon-light
|
||||
masqmail
|
||||
msmtp-mta
|
||||
nullmailer
|
||||
opensmtpd
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
1409
data/fonts.json
1409
data/fonts.json
File diff suppressed because it is too large
Load Diff
|
@ -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
|
||||
|
|
|
@ -20,6 +20,7 @@ NotShowIn
|
|||
OnlyShowIn
|
||||
Path
|
||||
PrefersNonDefaultGPU
|
||||
SingleMainWindow
|
||||
StartupNotify
|
||||
StartupWMClass
|
||||
Terminal
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#
|
||||
# Please keep the file sorted alphabetically.
|
||||
|
||||
01.org
|
||||
alioth.debian.org
|
||||
anonscm.debian.org
|
||||
berlios.de
|
||||
|
|
|
@ -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@
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -11,6 +11,7 @@ needs-internet
|
|||
needs-reboot
|
||||
needs-recommends
|
||||
needs-root
|
||||
needs-sudo
|
||||
rw-build-tree
|
||||
skip-not-installable
|
||||
skippable
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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.
|
File diff suppressed because it is too large
Load Diff
|
@ -1,3 +0,0 @@
|
|||
etc
|
||||
usr/bin
|
||||
usr/share/lintian
|
|
@ -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
|
|
@ -1,5 +0,0 @@
|
|||
README.md
|
||||
doc/CREDITS
|
||||
doc/api.html
|
||||
doc/lintian.html
|
||||
doc/lintian.rst
|
|
@ -1 +0,0 @@
|
|||
doc/examples/*
|
|
@ -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
|
|
@ -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
|
|
@ -1 +0,0 @@
|
|||
rm_conffile /etc/lintianrc 2.90.0~ lintian
|
|
@ -1,2 +0,0 @@
|
|||
man/man1/*.1
|
||||
man/man3/*.3
|
|
@ -1 +0,0 @@
|
|||
# You must remove unused comment lines for the released package.
|
|
@ -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 § 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)
|
|
@ -1 +0,0 @@
|
|||
3.0 (native)
|
|
@ -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}"
|
|
@ -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,
|
|
@ -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:
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -94,13 +94,16 @@ sub installable {
|
|||
}
|
||||
}
|
||||
}
|
||||
if (
|
||||
defined(
|
||||
my $dir= $processable->installed->resolve_path('lib/udev/rules.d/')
|
||||
)
|
||||
) {
|
||||
for my $item ($dir->descendants) {
|
||||
push(@udevrules, $item) if ($item->is_file);
|
||||
foreach my $lib_dir (qw(usr/lib lib)) {
|
||||
if (
|
||||
defined(
|
||||
my $dir = $processable->installed->resolve_path(
|
||||
"$lib_dir/udev/rules.d/")
|
||||
)
|
||||
) {
|
||||
for my $item ($dir->descendants) {
|
||||
push(@udevrules, $item) if ($item->is_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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 (
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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)")
|
||||
|
|
|
@ -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 != $_)")
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
$self->pointed_hint('no-english-manual-page', $_->pointer)
|
||||
for map {$local_executables{$_}} @english_missing;
|
||||
for (map {$local_executables{$_}} @english_missing) {
|
||||
$self->pointed_hint('no-english-manual-page', $_->pointer)
|
||||
unless $_->name =~ m{/libexec/};
|
||||
}
|
||||
|
||||
$self->pointed_hint('no-manual-page', $_->pointer)
|
||||
for map {$local_executables{$_}} @manpage_missing;
|
||||
for (map {$local_executables{$_}} @manpage_missing) {
|
||||
$self->pointed_hint('no-manual-page', $_->pointer)
|
||||
unless $_->name =~ m{/libexec/};
|
||||
}
|
||||
|
||||
# surplus manpages only for this package; provides sorted output
|
||||
my $local = List::Compare->new(\@related_commands, [keys %local_manpages]);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) = @_;
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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};
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -86,11 +86,29 @@ sub visit_installed_files {
|
|||
19\d{2}[\-\s]19\d{2}\s*
|
||||
Adobe\s*Systems\s*Incorporated\.?\s*\Z}xsmi;
|
||||
|
||||
# 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/) {
|
||||
# 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
|
||||
#
|
||||
# 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',
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -62,6 +62,7 @@ our $PYTHON3_ALL_DEPEND
|
|||
my %KNOWN_SPECIAL_DEPENDS = map { $_ => 1 } qw(
|
||||
@
|
||||
@builddeps@
|
||||
@recommends@
|
||||
);
|
||||
|
||||
sub source {
|
||||
|
|
|
@ -41,20 +41,23 @@ with 'Lintian::Check';
|
|||
sub installable {
|
||||
my ($self) = @_;
|
||||
|
||||
my $rules_dir
|
||||
= $self->processable->installed->resolve_path('lib/udev/rules.d/');
|
||||
return
|
||||
unless $rules_dir;
|
||||
foreach my $lib_dir (qw(usr/lib lib)) {
|
||||
my $rules_dir
|
||||
= $self->processable->installed->resolve_path(
|
||||
"$lib_dir/udev/rules.d/");
|
||||
next
|
||||
unless $rules_dir;
|
||||
|
||||
for my $item ($rules_dir->children) {
|
||||
for my $item ($rules_dir->children) {
|
||||
|
||||
if (!$item->is_open_ok) {
|
||||
if (!$item->is_open_ok) {
|
||||
|
||||
$self->pointed_hint('udev-rule-unreadable', $item->pointer);
|
||||
next;
|
||||
$self->pointed_hint('udev-rule-unreadable', $item->pointer);
|
||||
next;
|
||||
}
|
||||
|
||||
$self->check_udev_rules($item);
|
||||
}
|
||||
|
||||
$self->check_udev_rules($item);
|
||||
}
|
||||
|
||||
return;
|
||||
|
|
|
@ -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) {
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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};
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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>) {
|
||||
|
|
|
@ -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"
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
../frontend/dplint
|
|
@ -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:
|
||||
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
Loading…
Reference in New Issue