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.
|
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
|
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
|
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
|
under a blue button that says "Clone'. Choose the git protocol (not
|
||||||
HTTPS).
|
HTTPS).
|
||||||
|
|
||||||
|
@ -28,7 +29,7 @@ Create a feature branch for your proposed changes.
|
||||||
|
|
||||||
### Make Lintian better
|
### 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
|
Please commit your changes with suitable explanations in the commit
|
||||||
messages. You can find some examples with:
|
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
|
There is a way to exempt your tag from testing, but please do not do
|
||||||
so.
|
so.
|
||||||
|
|
||||||
Our test specifications have two parts. One declares how to build the
|
Most tests only run a specific lintian 'check'. Please name your tests
|
||||||
test package. The other declares how to run Lintian on it.
|
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
|
Test specifications have two parts, build specifications and
|
||||||
cases, you will not need to copy or modify any templates. For each
|
evaluation specifications. Build specifications tell the testsuite how
|
||||||
test, the build specifications are located in the file
|
to build a test package, and evaluation specifications declare how to
|
||||||
${recipe-dir}/build-spec/fill-values.
|
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
|
Skeleton: upload-native
|
||||||
Testname: pdf-in-etc
|
Testname: pdf-in-etc
|
||||||
Description: Ships a PDF file in /etc
|
Description: Ships a PDF file in /etc
|
||||||
|
|
||||||
Such a package would probably be used to trigger a tag about
|
This will use the 'upload-native' template to create a native package
|
||||||
documentation in a place other than /usr/share/doc. Please do not look
|
with the given 'Description'. The 'debian' directory would have a
|
||||||
for this test in the test suite; it is ficticious.
|
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
|
Evaluation specifications are located in the directory
|
||||||
tests are sorted according to the check to which they belong.
|
'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 main file is 'desc'. A simple evaluation specification might look
|
||||||
the tag they are testing. Many tags use two or more tests to exercise
|
like this:
|
||||||
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:
|
|
||||||
|
|
||||||
Testname: pdf-in-etc
|
Testname: pdf-in-etc
|
||||||
Check: documentation
|
Check: documentation
|
||||||
|
|
||||||
As noted, this will only run the specified check. It eliminates all
|
As noted, this will only run the specified 'documentation' check. This
|
||||||
nuisance tags, such as debian-watch-does-not-check-gpg-signature
|
keeps output to a minimum so you do not get nuisance tags, such as
|
||||||
(unless you are working on the check debian/watch).
|
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
|
A 'hints' file in the eval directory contains the tags that lintian is
|
||||||
triggered. Only tags from the selected check will show up there.
|
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
|
You should scrupulously examine the 'hints' to make sure your tags
|
||||||
up exactly the way you want, but you do not have to write it
|
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
|
yourself. The test suite will help you write this during the
|
||||||
calibration in the next step.
|
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
|
### Preparing to run the test suite
|
||||||
prerequisites from d/tests/control. Usually, that can be done with:
|
|
||||||
|
|
||||||
$ 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
|
# autopkgtest -B
|
||||||
prerequisites. That can be done with:
|
|
||||||
|
|
||||||
$ 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
|
Both of these commands have to be run with root privileges.
|
||||||
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:
|
|
||||||
|
|
||||||
$ private/build-test-packages
|
### Running the testsuite
|
||||||
|
|
||||||
Now, please calibrate your tests. For the documentation check the
|
To run all tests run
|
||||||
command would be:
|
|
||||||
|
$ 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
|
$ 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
|
$ private/runtests --onlyrun=test:name
|
||||||
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.
|
|
||||||
|
|
||||||
This is a crucial step. Please make sure the expected tags are
|
Will run a single test with 'Testname: name'. Running
|
||||||
meaningful. We also pay close attention to these tags when we look at
|
|
||||||
your merge request.
|
$ 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
|
### Run the full test suite
|
||||||
|
|
||||||
Finally, please start the entire test suite. It will run a variety of
|
Once your test is correct and passing, please ensure the entire test
|
||||||
style and consistency tests. The most common issue is that you have to
|
suite passes. This includes a variety of style and consistency
|
||||||
run perltidy.
|
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
|
repository's base directory. Otherwise it will not find the custom
|
||||||
configuration, and the test suite will not pass.
|
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
|
Once all the above is done, please push your changes to your Lintian
|
||||||
space. You may end up doing that multiple times, It will eventually
|
fork on salsa.
|
||||||
require the force switch.
|
|
||||||
|
You may end up doing that multiple times: use
|
||||||
|
|
||||||
$ git push -f
|
$ git push -f
|
||||||
|
|
||||||
That command will respond with the single most important message in
|
to keep the git history simple.
|
||||||
this document. Salsa will ask you 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
|
After each push you will be shown a link to create a merge
|
||||||
text field is populated with your commit message. Otherwise, please
|
request. Just click the link provided in the terminal. Your browser
|
||||||
explain the purpose of your commit series and hit "Submit".
|
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
|
The push command also started the standard CI pipeline on Salsa, which
|
||||||
is very comprehensive. It builds Debian packages and runs autopkgtest,
|
is very comprehensive. It builds Debian packages and runs autopkgtest,
|
||||||
among many other jobs.
|
among many other jobs.
|
||||||
|
|
||||||
We will generally not accept merge requests unless the CI pipeline
|
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
|
the MR and in your own repo. The pipeline takes about one hundred
|
||||||
minutes.
|
minutes.
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ can find the Lintian User's Manual in:
|
||||||
|
|
||||||
$ sensible-browser /usr/share/doc/lintian/lintian.html
|
$ sensible-browser /usr/share/doc/lintian/lintian.html
|
||||||
# or in txt format
|
# or in txt format
|
||||||
$ less /usr/share/doc/lintian/lintian.txt.gz
|
$ zless /usr/share/doc/lintian/lintian.txt.gz
|
||||||
|
|
||||||
|
|
||||||
Compiling Lintian
|
Compiling Lintian
|
||||||
|
|
|
@ -614,7 +614,7 @@ unless (@ARGV || $selected{'packages-from-file'}) {
|
||||||
if ($selected{debug}) {
|
if ($selected{debug}) {
|
||||||
say {*STDERR} encode_utf8("Lintian v$ENV{LINTIAN_VERSION}");
|
say {*STDERR} encode_utf8("Lintian v$ENV{LINTIAN_VERSION}");
|
||||||
say {*STDERR} encode_utf8("Lintian root directory: $ENV{LINTIAN_BASE}");
|
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}) {
|
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
|
ia64 ~~^ELF 64-bit LSB .* IA-64
|
||||||
kfreebsd-amd64~~^ELF 64-bit LSB .* x86-64, .* (?:GNU/kFreeBSD|(?!GNU)).*$
|
kfreebsd-amd64~~^ELF 64-bit LSB .* x86-64, .* (?:GNU/kFreeBSD|(?!GNU)).*$
|
||||||
kfreebsd-i386 ~~^ELF 32-bit LSB .* 80386, .* (?: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)).*$
|
lpia ~~^ELF 32-bit LSB .* 80386, .* (?:GNU/Linux|(?!GNU)).*$
|
||||||
m32r ~~^ELF 32-bit MSB .* M32R
|
m32r ~~^ELF 32-bit MSB .* M32R
|
||||||
m68k ~~^ELF 32-bit MSB .* 680[02]0
|
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
|
libxml2 || ||root and DTD name do not match
|
||||||
libyaml || ||(?m)^did not find expected <stream-start>
|
libyaml || ||(?m)^did not find expected <stream-start>
|
||||||
libytnef || ||Signature does not match\. Not TNEF\.
|
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
|
ltdl ||source=libtool ||(?m)^library already shutdown
|
||||||
mbedtls || ||(?m)^(?:ASN1 - Actual length differs from expected length|SSL - The connection indicated an EOF)
|
mbedtls || ||(?m)^(?:ASN1 - Actual length differs from expected length|SSL - The connection indicated an EOF)
|
||||||
mpfr ||source=mpfr4 ||MPFR: Can't allocate memory
|
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
|
t1lib || ||t1lib is copyright \(c\) Rainer Menzner
|
||||||
tiff ||source-regex=tiff\d* ||No space for PixarLog state block
|
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\.)
|
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
|
# 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.
|
# 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
|
# Codenames
|
||||||
jessie
|
|
||||||
stretch
|
stretch
|
||||||
buster
|
buster
|
||||||
bullseye
|
bullseye
|
||||||
|
bookworm
|
||||||
sid
|
sid
|
||||||
|
|
||||||
# Aliases
|
# Aliases
|
||||||
|
|
|
@ -85,6 +85,9 @@ X-Python3-Version
|
||||||
|
|
||||||
XB-Ruby-Versions
|
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-Autobuild
|
||||||
XS-Go-Import-Path
|
XS-Go-Import-Path
|
||||||
XS-Ruby-Versions
|
XS-Ruby-Versions
|
||||||
|
|
|
@ -50,6 +50,16 @@
|
||||||
"dh-buildinfo"
|
"dh-buildinfo"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"builtusing" : {
|
||||||
|
"installed_by" : [
|
||||||
|
"dh-builtusing"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"cargo" : {
|
||||||
|
"installed_by" : [
|
||||||
|
"dh-cargo"
|
||||||
|
]
|
||||||
|
},
|
||||||
"cli" : {
|
"cli" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"cli-common-dev"
|
"cli-common-dev"
|
||||||
|
@ -90,6 +100,11 @@
|
||||||
"dh-cmake"
|
"dh-cmake"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"cruft" : {
|
||||||
|
"installed_by" : [
|
||||||
|
"dh-cruft"
|
||||||
|
]
|
||||||
|
},
|
||||||
"ctest" : {
|
"ctest" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"dh-cmake"
|
"dh-cmake"
|
||||||
|
@ -100,6 +115,11 @@
|
||||||
"dh-di"
|
"dh-di"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"debputy" : {
|
||||||
|
"installed_by" : [
|
||||||
|
"dh-debputy"
|
||||||
|
]
|
||||||
|
},
|
||||||
"dist_zilla" : {
|
"dist_zilla" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"dh-dist-zilla"
|
"dh-dist-zilla"
|
||||||
|
@ -110,6 +130,11 @@
|
||||||
"dh-dkms"
|
"dh-dkms"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"doxygen" : {
|
||||||
|
"installed_by" : [
|
||||||
|
"doxygen"
|
||||||
|
]
|
||||||
|
},
|
||||||
"dwz" : {
|
"dwz" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"libdebhelper-perl"
|
"libdebhelper-perl"
|
||||||
|
@ -142,7 +167,7 @@
|
||||||
},
|
},
|
||||||
"gir" : {
|
"gir" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"gobject-introspection"
|
"gobject-introspection-bin"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"gnome" : {
|
"gnome" : {
|
||||||
|
@ -155,11 +180,21 @@
|
||||||
"dh-golang"
|
"dh-golang"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"grantlee" : {
|
||||||
|
"installed_by" : [
|
||||||
|
"libgrantlee5-dev"
|
||||||
|
]
|
||||||
|
},
|
||||||
"haskell" : {
|
"haskell" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"dh-haskell"
|
"dh-haskell"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"installdebputy" : {
|
||||||
|
"installed_by" : [
|
||||||
|
"dh-debputy"
|
||||||
|
]
|
||||||
|
},
|
||||||
"installinitramfs" : {
|
"installinitramfs" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"libdebhelper-perl"
|
"libdebhelper-perl"
|
||||||
|
@ -170,6 +205,11 @@
|
||||||
"dh-nss"
|
"dh-nss"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"installsysusers" : {
|
||||||
|
"installed_by" : [
|
||||||
|
"libdebhelper-perl"
|
||||||
|
]
|
||||||
|
},
|
||||||
"javahelper" : {
|
"javahelper" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"javahelper"
|
"javahelper"
|
||||||
|
@ -225,6 +265,11 @@
|
||||||
"mkdocs"
|
"mkdocs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"movetousr" : {
|
||||||
|
"installed_by" : [
|
||||||
|
"libdebhelper-perl"
|
||||||
|
]
|
||||||
|
},
|
||||||
"nginx" : {
|
"nginx" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"nginx-dev"
|
"nginx-dev"
|
||||||
|
@ -255,9 +300,14 @@
|
||||||
"dh-octave"
|
"dh-octave"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"package_notes" : {
|
"pd_lib_builder" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"dh-package-notes"
|
"dh-puredata"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"pdl" : {
|
||||||
|
"installed_by" : [
|
||||||
|
"pdl"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"perl6" : {
|
"perl6" : {
|
||||||
|
@ -315,21 +365,16 @@
|
||||||
"ppp-dev"
|
"ppp-dev"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"puredata" : {
|
||||||
|
"installed_by" : [
|
||||||
|
"dh-puredata"
|
||||||
|
]
|
||||||
|
},
|
||||||
"pyppd" : {
|
"pyppd" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"pyppd"
|
"pyppd"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"pypy" : {
|
|
||||||
"installed_by" : [
|
|
||||||
"dh-python"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"python2" : {
|
|
||||||
"installed_by" : [
|
|
||||||
"dh-python"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"python3" : {
|
"python3" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"dh-python"
|
"dh-python"
|
||||||
|
@ -415,6 +460,11 @@
|
||||||
"tex-common"
|
"tex-common"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"user_session_migration" : {
|
||||||
|
"installed_by" : [
|
||||||
|
"dh-user-session-migration"
|
||||||
|
]
|
||||||
|
},
|
||||||
"uwsgi" : {
|
"uwsgi" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"uwsgi-dev"
|
"uwsgi-dev"
|
||||||
|
@ -469,6 +519,11 @@
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"zathura-dev"
|
"zathura-dev"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"zz_debputy" : {
|
||||||
|
"installed_by" : [
|
||||||
|
"dh-debputy"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"preamble" : {
|
"preamble" : {
|
||||||
|
|
|
@ -113,6 +113,11 @@
|
||||||
"dh-buildinfo"
|
"dh-buildinfo"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"dh_builtusing" : {
|
||||||
|
"installed_by" : [
|
||||||
|
"dh-builtusing"
|
||||||
|
]
|
||||||
|
},
|
||||||
"dh_clean" : {
|
"dh_clean" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"debhelper"
|
"debhelper"
|
||||||
|
@ -194,6 +199,12 @@
|
||||||
"dh-cmake"
|
"dh-cmake"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"dh_cruft" : {
|
||||||
|
"installed_by" : [
|
||||||
|
"dh-cruft"
|
||||||
|
],
|
||||||
|
"uses_autoscript" : 1
|
||||||
|
},
|
||||||
"dh_ctest_build" : {
|
"dh_ctest_build" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"dh-cmake"
|
"dh-cmake"
|
||||||
|
@ -229,6 +240,11 @@
|
||||||
"dh-cmake"
|
"dh-cmake"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"dh_debputy" : {
|
||||||
|
"installed_by" : [
|
||||||
|
"dh-debputy"
|
||||||
|
]
|
||||||
|
},
|
||||||
"dh_di_kernel_gencontrol" : {
|
"dh_di_kernel_gencontrol" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"dh-di"
|
"dh-di"
|
||||||
|
@ -293,12 +309,16 @@
|
||||||
"debhelper"
|
"debhelper"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"dh_fortran_lib" : {
|
||||||
|
"installed_by" : [
|
||||||
|
"dh-fortran-mod"
|
||||||
|
]
|
||||||
|
},
|
||||||
"dh_fortran_mod" : {
|
"dh_fortran_mod" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"dh-fortran-mod"
|
"dh-fortran-mod"
|
||||||
],
|
],
|
||||||
"uses_autoscript" : 1,
|
"uses_autoscript" : 1
|
||||||
"uses_misc_depends" : 1
|
|
||||||
},
|
},
|
||||||
"dh_gencontrol" : {
|
"dh_gencontrol" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
|
@ -318,7 +338,7 @@
|
||||||
},
|
},
|
||||||
"dh_girepository" : {
|
"dh_girepository" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"gobject-introspection"
|
"gobject-introspection-bin"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"dh_gnome" : {
|
"dh_gnome" : {
|
||||||
|
@ -346,6 +366,11 @@
|
||||||
"dh-golang"
|
"dh-golang"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"dh_grantlee" : {
|
||||||
|
"installed_by" : [
|
||||||
|
"libgrantlee5-dev"
|
||||||
|
]
|
||||||
|
},
|
||||||
"dh_gstscancodecs" : {
|
"dh_gstscancodecs" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"libgstreamer1.0-dev"
|
"libgstreamer1.0-dev"
|
||||||
|
@ -500,6 +525,11 @@
|
||||||
"uses_autoscript" : 1,
|
"uses_autoscript" : 1,
|
||||||
"uses_misc_depends" : 1
|
"uses_misc_depends" : 1
|
||||||
},
|
},
|
||||||
|
"dh_installdebputy" : {
|
||||||
|
"installed_by" : [
|
||||||
|
"dh-debputy"
|
||||||
|
]
|
||||||
|
},
|
||||||
"dh_installdirs" : {
|
"dh_installdirs" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"debhelper"
|
"debhelper"
|
||||||
|
@ -766,6 +796,11 @@
|
||||||
"pkg-kde-tools"
|
"pkg-kde-tools"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"dh_movetousr" : {
|
||||||
|
"installed_by" : [
|
||||||
|
"debhelper"
|
||||||
|
]
|
||||||
|
},
|
||||||
"dh_nginx" : {
|
"dh_nginx" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"nginx-dev"
|
"nginx-dev"
|
||||||
|
@ -778,6 +813,11 @@
|
||||||
"dh-nodejs"
|
"dh-nodejs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"dh_nodejs_build_debug_package" : {
|
||||||
|
"installed_by" : [
|
||||||
|
"dh-nodejs"
|
||||||
|
]
|
||||||
|
},
|
||||||
"dh_nodejs_substvars" : {
|
"dh_nodejs_substvars" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"dh-nodejs"
|
"dh-nodejs"
|
||||||
|
@ -844,11 +884,6 @@
|
||||||
"dh-octave"
|
"dh-octave"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"dh_package_notes" : {
|
|
||||||
"installed_by" : [
|
|
||||||
"dh-package-notes"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"dh_pdl" : {
|
"dh_pdl" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"pdl"
|
"pdl"
|
||||||
|
@ -929,24 +964,17 @@
|
||||||
"debhelper"
|
"debhelper"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"dh_puredata_substvar" : {
|
||||||
|
"installed_by" : [
|
||||||
|
"dh-puredata"
|
||||||
|
]
|
||||||
|
},
|
||||||
"dh_pyppd" : {
|
"dh_pyppd" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"pyppd"
|
"pyppd"
|
||||||
],
|
],
|
||||||
"uses_misc_depends" : 1
|
"uses_misc_depends" : 1
|
||||||
},
|
},
|
||||||
"dh_pypy" : {
|
|
||||||
"installed_by" : [
|
|
||||||
"dh-python"
|
|
||||||
],
|
|
||||||
"uses_autoscript" : 1
|
|
||||||
},
|
|
||||||
"dh_python2" : {
|
|
||||||
"installed_by" : [
|
|
||||||
"dh-python"
|
|
||||||
],
|
|
||||||
"uses_autoscript" : 1
|
|
||||||
},
|
|
||||||
"dh_python3" : {
|
"dh_python3" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"dh-python"
|
"dh-python"
|
||||||
|
@ -978,6 +1006,11 @@
|
||||||
"dh-raku"
|
"dh-raku"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"dh_raku_clean" : {
|
||||||
|
"installed_by" : [
|
||||||
|
"dh-raku"
|
||||||
|
]
|
||||||
|
},
|
||||||
"dh_raku_install" : {
|
"dh_raku_install" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"dh-raku"
|
"dh-raku"
|
||||||
|
@ -1096,6 +1129,12 @@
|
||||||
"debhelper"
|
"debhelper"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"dh_user-session-migration" : {
|
||||||
|
"installed_by" : [
|
||||||
|
"dh-user-session-migration"
|
||||||
|
],
|
||||||
|
"uses_misc_depends" : 1
|
||||||
|
},
|
||||||
"dh_usrlocal" : {
|
"dh_usrlocal" : {
|
||||||
"installed_by" : [
|
"installed_by" : [
|
||||||
"debhelper"
|
"debhelper"
|
||||||
|
|
|
@ -4,6 +4,77 @@
|
||||||
"title" : "Debian Policy Releases"
|
"title" : "Debian Policy Releases"
|
||||||
},
|
},
|
||||||
"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>",
|
"author" : "Sean Whitton <spwhitton@spwhitton.name>",
|
||||||
"changes" : [
|
"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-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-filesystem-listing ~~ (https?|ftp)://ftp\.gnu\.org/gnu/(.*)
|
||||||
homepage-refers-to-obsolete-debian-infrastructure ~~ alioth\.debian\.org
|
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
|
esmtp-run
|
||||||
exim4-daemon-heavy
|
exim4-daemon-heavy
|
||||||
exim4-daemon-light
|
exim4-daemon-light
|
||||||
masqmail
|
|
||||||
msmtp-mta
|
msmtp-mta
|
||||||
nullmailer
|
nullmailer
|
||||||
opensmtpd
|
opensmtpd
|
||||||
|
|
|
@ -137,7 +137,6 @@ libtinfo-dev => libncurses-dev
|
||||||
|
|
||||||
# Deprecated in bullseye
|
# Deprecated in bullseye
|
||||||
bsdmainutils => bsdextrautils and/or ncal
|
bsdmainutils => bsdextrautils and/or ncal
|
||||||
libegl1-mesa-dev => libegl-dev
|
|
||||||
libfontconfig1-dev => libfontconfig-dev
|
libfontconfig1-dev => libfontconfig-dev
|
||||||
libfreetype6-dev => libfreetype-dev
|
libfreetype6-dev => libfreetype-dev
|
||||||
libgdk-pixbuf2.0-0 => libgdk-pixbuf-2.0-0 and optionally libgdk-pixbuf-xlib-2.0-0
|
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
|
libgsasl7-dev => libgsasl-dev
|
||||||
libidn11-dev => libidn-dev
|
libidn11-dev => libidn-dev
|
||||||
policykit-1 => polkitd and optionally pkexec
|
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://[a-zA-Z0-9]+\.branchable\.com/ ~~ Git
|
||||||
git://repo\.or\.cz/ ~~ Git
|
git://repo\.or\.cz/ ~~ Git
|
||||||
https?://repo\.or\.cz/ ~~ Git
|
https?://repo\.or\.cz/ ~~ Git
|
||||||
https?://bitbucket\.org/ ~~ Git,Hg
|
https?://bitbucket\.org/ ~~ Git
|
||||||
|
|
|
@ -15,6 +15,7 @@ cbr
|
||||||
cbt
|
cbt
|
||||||
cbz
|
cbz
|
||||||
chm
|
chm
|
||||||
|
dbf
|
||||||
der
|
der
|
||||||
djvu
|
djvu
|
||||||
dll
|
dll
|
||||||
|
@ -64,6 +65,11 @@ png
|
||||||
ppt
|
ppt
|
||||||
pptx
|
pptx
|
||||||
psd
|
psd
|
||||||
|
qix
|
||||||
|
sbn
|
||||||
|
sbx
|
||||||
|
shp
|
||||||
|
shx
|
||||||
spx
|
spx
|
||||||
sqlite
|
sqlite
|
||||||
sqlite3
|
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
|
# 59 -> Java15
|
||||||
# 60 -> Java16
|
# 60 -> Java16
|
||||||
# 61 -> Java17
|
# 61 -> Java17
|
||||||
# 62 -> Java18 - highest version in Debian unstable
|
# 62 -> Java18
|
||||||
# 63 -> Java19
|
# 63 -> Java19
|
||||||
|
# 64 -> Java20
|
||||||
|
# 65 -> Java21 - highest version in Debian unstable
|
||||||
|
|
||||||
# current default in Debian
|
# current default in Debian
|
||||||
default-bytecode-version = 56
|
default-bytecode-version = 61
|
||||||
|
|
||||||
# highest known anywhere
|
# highest known anywhere
|
||||||
highest-known-bytecode-version = 63
|
highest-known-bytecode-version = 65
|
||||||
|
|
||||||
# The following should not change
|
# The following should not change
|
||||||
lowest-known-bytecode-version = 45
|
lowest-known-bytecode-version = 45
|
||||||
|
|
|
@ -20,6 +20,7 @@ NotShowIn
|
||||||
OnlyShowIn
|
OnlyShowIn
|
||||||
Path
|
Path
|
||||||
PrefersNonDefaultGPU
|
PrefersNonDefaultGPU
|
||||||
|
SingleMainWindow
|
||||||
StartupNotify
|
StartupNotify
|
||||||
StartupWMClass
|
StartupWMClass
|
||||||
Terminal
|
Terminal
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#
|
#
|
||||||
# Please keep the file sorted alphabetically.
|
# Please keep the file sorted alphabetically.
|
||||||
|
|
||||||
|
01.org
|
||||||
alioth.debian.org
|
alioth.debian.org
|
||||||
anonscm.debian.org
|
anonscm.debian.org
|
||||||
berlios.de
|
berlios.de
|
||||||
|
|
|
@ -61,7 +61,7 @@
|
||||||
|
|
||||||
guile => /usr/bin, guile-([\d.]+), guile-$1:any, 2.2 3.0, guile:any
|
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
|
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
|
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
|
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@
|
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.
|
# should be included in the appropriate data file, rather than here.
|
||||||
#
|
#
|
||||||
# Please keep the list sorted using `make sort` in this directory.
|
# 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
|
aaccessibility||accessibility
|
||||||
aaccession||accession
|
aaccession||accession
|
||||||
|
@ -2782,8 +2788,7 @@ curently||currently
|
||||||
curiousities||curiosities
|
curiousities||curiosities
|
||||||
curiousity||curiosity
|
curiousity||curiosity
|
||||||
curiousity's||curiosity's
|
curiousity's||curiosity's
|
||||||
currectly||correctly
|
currectly||correctly or currently
|
||||||
curren||current
|
|
||||||
currious||curious
|
currious||curious
|
||||||
currnt||current
|
currnt||current
|
||||||
currntly||currently
|
currntly||currently
|
||||||
|
@ -4187,6 +4192,7 @@ epectedly||expectedly
|
||||||
epect||expect
|
epect||expect
|
||||||
epecting||expecting
|
epecting||expecting
|
||||||
epects||expects
|
epects||expects
|
||||||
|
ependency||dependency
|
||||||
ephememeral||ephemeral
|
ephememeral||ephemeral
|
||||||
ephememeris||ephemeris
|
ephememeris||ephemeris
|
||||||
eploit||exploit
|
eploit||exploit
|
||||||
|
@ -7921,8 +7927,8 @@ occure||occur
|
||||||
occuring||occurring
|
occuring||occurring
|
||||||
occurrance||occurrence
|
occurrance||occurrence
|
||||||
occurrances||occurrences
|
occurrances||occurrences
|
||||||
ocorrence||ocurrence
|
ocorrence||occurrence
|
||||||
ocorrences||ocurrences
|
ocorrences||occurrences
|
||||||
octects||octets
|
octects||octets
|
||||||
ocupied||occupied
|
ocupied||occupied
|
||||||
ocupies||occupies
|
ocupies||occupies
|
||||||
|
@ -8635,7 +8641,7 @@ preferrable||preferable
|
||||||
preferrably||preferably
|
preferrably||preferably
|
||||||
prefferable||preferable
|
prefferable||preferable
|
||||||
prefferably||preferably
|
prefferably||preferably
|
||||||
preffered||prefered
|
preffered||preferred
|
||||||
preformance||performance
|
preformance||performance
|
||||||
prepaired||prepared
|
prepaired||prepared
|
||||||
prepartion||preparation
|
prepartion||preparation
|
||||||
|
@ -9867,6 +9873,8 @@ repesent||represent
|
||||||
repesents||represents
|
repesents||represents
|
||||||
repetion||repetition
|
repetion||repetition
|
||||||
repetions||repetitions
|
repetions||repetitions
|
||||||
|
repition||repetition
|
||||||
|
repitions||repetitions
|
||||||
replacability||replaceability
|
replacability||replaceability
|
||||||
replacable||replaceable
|
replacable||replaceable
|
||||||
replacables||replaceables
|
replacables||replaceables
|
||||||
|
@ -9990,7 +9998,6 @@ resgister||register
|
||||||
resgisters||registers
|
resgisters||registers
|
||||||
resistence||resistance
|
resistence||resistance
|
||||||
resistent||resistant
|
resistent||resistant
|
||||||
resizeable||resizable
|
|
||||||
resloved||resolved
|
resloved||resolved
|
||||||
reslove||resolve
|
reslove||resolve
|
||||||
resloves||resolves
|
resloves||resolves
|
||||||
|
@ -11523,8 +11530,8 @@ trageted||targeted
|
||||||
trailling||trailing
|
trailling||trailing
|
||||||
tranceivers||transceivers
|
tranceivers||transceivers
|
||||||
tranceiver||transceiver
|
tranceiver||transceiver
|
||||||
tranfered||transfered
|
tranfered||transferred
|
||||||
tranfering||transfering
|
tranfering||transferring
|
||||||
tranfers||transfers
|
tranfers||transfers
|
||||||
tranfer||transfer
|
tranfer||transfer
|
||||||
tranformations||transformations
|
tranformations||transformations
|
||||||
|
@ -11705,7 +11712,6 @@ two-dimenional||two-dimensional
|
||||||
twodimenional||two-dimensional
|
twodimenional||two-dimensional
|
||||||
two-dimenionsal||two-dimensional
|
two-dimenionsal||two-dimensional
|
||||||
twodimenionsal||two-dimensional
|
twodimenionsal||two-dimensional
|
||||||
tye||type
|
|
||||||
typicaly||typically
|
typicaly||typically
|
||||||
typles||tuples
|
typles||tuples
|
||||||
typle||tuple
|
typle||tuple
|
||||||
|
@ -12114,6 +12120,7 @@ upsrteams||upstreams
|
||||||
upsrteam||upstream
|
upsrteam||upstream
|
||||||
upsteam||upstream
|
upsteam||upstream
|
||||||
upsteram||upstream
|
upsteram||upstream
|
||||||
|
upstram||upstream
|
||||||
upstreamedd||upstreamed
|
upstreamedd||upstreamed
|
||||||
upstreammed||upstreamed
|
upstreammed||upstreamed
|
||||||
upstreammer||upstreamer
|
upstreammer||upstreamer
|
||||||
|
|
|
@ -28,6 +28,6 @@
|
||||||
(?i)per say||per se
|
(?i)per say||per se
|
||||||
(?i)pleases see||please see
|
(?i)pleases see||please see
|
||||||
(?i)seams like||seems like
|
(?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)this packages||these packages
|
||||||
(?i)will be remove||will be removed
|
(?i)will be remove||will be removed
|
||||||
|
|
|
@ -11,6 +11,7 @@ needs-internet
|
||||||
needs-reboot
|
needs-reboot
|
||||||
needs-recommends
|
needs-recommends
|
||||||
needs-root
|
needs-root
|
||||||
|
needs-sudo
|
||||||
rw-build-tree
|
rw-build-tree
|
||||||
skip-not-installable
|
skip-not-installable
|
||||||
skippable
|
skippable
|
||||||
|
|
|
@ -7,6 +7,7 @@ autopkgtest-pkg-go
|
||||||
autopkgtest-pkg-nodejs
|
autopkgtest-pkg-nodejs
|
||||||
autopkgtest-pkg-octave
|
autopkgtest-pkg-octave
|
||||||
autopkgtest-pkg-perl
|
autopkgtest-pkg-perl
|
||||||
|
autopkgtest-pkg-pybuild
|
||||||
autopkgtest-pkg-python
|
autopkgtest-pkg-python
|
||||||
autopkgtest-pkg-r
|
autopkgtest-pkg-r
|
||||||
autopkgtest-pkg-ruby
|
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``,
|
for more info); <type> is one of ``binary``, ``udeb`` and ``source``,
|
||||||
and <context> is all additional information provided by Lintian
|
and <context> is all additional information provided by Lintian
|
||||||
except for the tag. What's inside brackets is optional and may be
|
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
|
omitted if you want to match it all. Additionally, if the context of
|
||||||
package would look like:
|
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
|
# We use a non-standard dir permission to only allow the webserver to look
|
||||||
# into this directory:
|
# into this directory:
|
||||||
foo binary: non-standard-dir-perm
|
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:
|
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
|
foo source: debian-files-list-in-source
|
||||||
# Upstream distributes it like this, repacking would be overkill though, so
|
# Upstream distributes it like this, repacking would be overkill though, so
|
||||||
# tell lintian to not complain:
|
# 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
|
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
|
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
|
# Multiple files need to be covered by the override
|
||||||
source-is-missing apidoc/html/api_data.js *
|
source-is-missing [apidoc/html/*.js]
|
||||||
|
|
||||||
.. _section-2.4.2:
|
.. _section-2.4.2:
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,7 @@ the lintian release.
|
||||||
Step 2
|
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
|
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
|
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
|
minutes (but you may want to have a "slightly" larger window the first
|
||||||
|
|
|
@ -94,13 +94,16 @@ sub installable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (
|
foreach my $lib_dir (qw(usr/lib lib)) {
|
||||||
defined(
|
if (
|
||||||
my $dir= $processable->installed->resolve_path('lib/udev/rules.d/')
|
defined(
|
||||||
)
|
my $dir = $processable->installed->resolve_path(
|
||||||
) {
|
"$lib_dir/udev/rules.d/")
|
||||||
for my $item ($dir->descendants) {
|
)
|
||||||
push(@udevrules, $item) if ($item->is_file);
|
) {
|
||||||
|
for my $item ($dir->descendants) {
|
||||||
|
push(@udevrules, $item) if ($item->is_file);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -50,9 +50,13 @@ sub always {
|
||||||
if $self->processable->fields->declares('Auto-Built-Package');
|
if $self->processable->fields->declares('Auto-Built-Package');
|
||||||
|
|
||||||
my $basename = basename($self->processable->path);
|
my $basename = basename($self->processable->path);
|
||||||
|
# remove salsaci suffix
|
||||||
|
my $nosalsabasename = $basename;
|
||||||
|
$nosalsabasename
|
||||||
|
=~ s/[+]salsaci[+]\d+[+]\d+(_[[:alnum:]]+\.[[:alnum:]]+)$/$1/;
|
||||||
|
|
||||||
my $adjusted_length
|
my $adjusted_length
|
||||||
= length($basename)
|
= length($nosalsabasename)
|
||||||
- length($self->processable->architecture)
|
- length($self->processable->architecture)
|
||||||
+ $LONGEST_ARCHITECTURE;
|
+ $LONGEST_ARCHITECTURE;
|
||||||
|
|
||||||
|
|
|
@ -88,6 +88,10 @@ sub source {
|
||||||
next
|
next
|
||||||
if $source_liberty eq 'main' && $installable_liberty eq 'contrib';
|
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 $control_item= $self->processable->debian_control->item;
|
||||||
my $position = $installable_fields->position('Section');
|
my $position = $installable_fields->position('Section');
|
||||||
my $pointer = $control_item->pointer($position);
|
my $pointer = $control_item->pointer($position);
|
||||||
|
|
|
@ -53,6 +53,8 @@ sub visit_installed_files {
|
||||||
sub check_elf_issues {
|
sub check_elf_issues {
|
||||||
my ($self, $item) = @_;
|
my ($self, $item) = @_;
|
||||||
|
|
||||||
|
return unless $item->is_elf;
|
||||||
|
|
||||||
for (uniq @{$item->elf->{ERRORS} // []}) {
|
for (uniq @{$item->elf->{ERRORS} // []}) {
|
||||||
$self->pointed_hint('elf-error',$item->pointer, $_)
|
$self->pointed_hint('elf-error',$item->pointer, $_)
|
||||||
unless (
|
unless (
|
||||||
|
|
|
@ -92,7 +92,8 @@ sub installable {
|
||||||
qr/^python3-numpy \(<[<=][^\|]+$/,
|
qr/^python3-numpy \(<[<=][^\|]+$/,
|
||||||
Lintian::Relation::VISIT_OR_CLAUSE_FULL
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -657,7 +657,7 @@ sub php_source_whitelist {
|
||||||
return 0
|
return 0
|
||||||
if defined $copyright_path
|
if defined $copyright_path
|
||||||
&& $copyright_path->bytes
|
&& $copyright_path->bytes
|
||||||
=~ m{^Source: https?://pecl.php.net/package/.*$}m;
|
=~ m{^Source: https?://(pecl|pear).php.net/package/.*$}m;
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
if $self->processable->source_name =~ /^php\d*(?:\.\d+)?$/xms;
|
if $self->processable->source_name =~ /^php\d*(?:\.\d+)?$/xms;
|
||||||
|
|
|
@ -133,13 +133,13 @@ sub installable {
|
||||||
} else {
|
} else {
|
||||||
if (
|
if (
|
||||||
$ctrl_member !~ m{\A
|
$ctrl_member !~ m{\A
|
||||||
control\.tar(?:\.(?:gz|xz))? \Z}xsm
|
control\.tar(?:\.(?:gz|xz|zst))? \Z}xsm
|
||||||
) {
|
) {
|
||||||
$self->hint(
|
$self->hint(
|
||||||
'malformed-deb-archive',
|
'malformed-deb-archive',
|
||||||
join($SPACE,
|
join($SPACE,
|
||||||
"second (official) member $ctrl_member",
|
"second (official) member $ctrl_member",
|
||||||
'not control.tar.(gz|xz)')
|
'not control.tar.(gz|xz|zst)')
|
||||||
);
|
);
|
||||||
$failed = 1;
|
$failed = 1;
|
||||||
} elsif ($ctrl_member eq 'control.tar') {
|
} elsif ($ctrl_member eq 'control.tar') {
|
||||||
|
@ -158,14 +158,14 @@ sub installable {
|
||||||
} else {
|
} else {
|
||||||
if (
|
if (
|
||||||
$data_member !~ m{\A
|
$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
|
# wasn't okay after all
|
||||||
$self->hint(
|
$self->hint(
|
||||||
'malformed-deb-archive',
|
'malformed-deb-archive',
|
||||||
join($SPACE,
|
join($SPACE,
|
||||||
"third (official) member $data_member",
|
"third (official) member $data_member",
|
||||||
'not data.tar.(gz|xz|bz2|lzma)')
|
'not data.tar.(gz|xz|bz2|lzma|zst)')
|
||||||
);
|
);
|
||||||
$failed = 1;
|
$failed = 1;
|
||||||
} elsif ($self->processable->type eq 'udeb'
|
} 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:any | debhelper:any (>= 9.20160403~) | debhelper-compat:any',
|
||||||
dh_autoreconf =>
|
dh_autoreconf =>
|
||||||
'dh-autoreconf:any | debhelper:any (>= 9.20160403~) | debhelper-compat:any',
|
'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_girepository => 'gobject-introspection:any | dh-sequence-gir:any',
|
||||||
dh_gnome => 'gnome-pkg-tools:any | dh-sequence-gnome:any',
|
dh_gnome => 'gnome-pkg-tools:any | dh-sequence-gnome:any',
|
||||||
dh_gnome_clean => '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_nativejava => 'gcj-native-helper:any | default-jdk-builddep:any',
|
||||||
dh_pgxs_test => 'postgresql-server-dev-all:any | postgresql-all:any',
|
dh_pgxs_test => 'postgresql-server-dev-all:any | postgresql-all:any',
|
||||||
dh_python2 => 'dh-python:any | dh-sequence-python2: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 =>
|
dh_sphinxdoc =>
|
||||||
'sphinx:any | python-sphinx:any | python3-sphinx:any | dh-sequence-sphinxdoc:any',
|
'sphinx:any | python-sphinx:any | python3-sphinx:any | dh-sequence-sphinxdoc:any',
|
||||||
dh_xine => 'libxine-dev:any | libxine2-dev: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',
|
'sphinx:any | python-sphinx:any | python3-sphinx:any | dh-sequence-sphinxdoc:any',
|
||||||
systemd =>
|
systemd =>
|
||||||
'debhelper:any (>= 9.20160709~) | debhelper-compat:any | dh-sequence-systemd:any | dh-systemd:any',
|
'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 {
|
sub visit_patched_files {
|
||||||
|
@ -648,12 +650,14 @@ sub source {
|
||||||
$self->pointed_hint(
|
$self->pointed_hint(
|
||||||
'debian-rules-uses-unnecessary-dh-argument',
|
'debian-rules-uses-unnecessary-dh-argument',
|
||||||
$drules->pointer($seen_dh_parallel),
|
$drules->pointer($seen_dh_parallel),
|
||||||
|
"$debhelper_level >= $DH_PARALLEL_NOT_NEEDED",
|
||||||
'dh ... --parallel'
|
'dh ... --parallel'
|
||||||
)if $seen_dh_parallel && $debhelper_level >= $DH_PARALLEL_NOT_NEEDED;
|
)if $seen_dh_parallel && $debhelper_level >= $DH_PARALLEL_NOT_NEEDED;
|
||||||
|
|
||||||
$self->pointed_hint(
|
$self->pointed_hint(
|
||||||
'debian-rules-uses-unnecessary-dh-argument',
|
'debian-rules-uses-unnecessary-dh-argument',
|
||||||
$drules->pointer($seen_dh_systemd),
|
$drules->pointer($seen_dh_systemd),
|
||||||
|
"$debhelper_level >= $INVOKES_SYSTEMD",
|
||||||
'dh ... --with=systemd'
|
'dh ... --with=systemd'
|
||||||
)if $seen_dh_systemd && $debhelper_level >= $INVOKES_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
|
# As a special case, the python3 addon needs a dependency on
|
||||||
# dh-python unless the -dev packages are used.
|
# 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',
|
$self->pointed_hint('missing-build-dependency-for-dh-addon',
|
||||||
$drules->pointer,$addon, "(does not satisfy $python_source)")
|
$drules->pointer,$addon, "(does not satisfy $python_source)")
|
||||||
|
|
|
@ -852,8 +852,32 @@ sub check_dep5_copyright {
|
||||||
next
|
next
|
||||||
unless $seen;
|
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 @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',
|
$self->pointed_hint('inconsistent-appstream-metadata-license',
|
||||||
$copyright_file->pointer, $name, "($seen != $_)")
|
$copyright_file->pointer, $name, "($seen != $_)")
|
||||||
|
|
|
@ -93,7 +93,7 @@ sub source {
|
||||||
my @files = grep { defined }
|
my @files = grep { defined }
|
||||||
map { $self->processable->patched->resolve_path("debian/$_") } @catalogs;
|
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) {
|
for my $item (@utf8) {
|
||||||
|
|
||||||
my $deb822 = Lintian::Deb822->new;
|
my $deb822 = Lintian::Deb822->new;
|
||||||
|
|
|
@ -74,6 +74,9 @@ my $PROPERTIES = 'org.freedesktop.DBus.Properties';
|
||||||
sub check_policy {
|
sub check_policy {
|
||||||
my ($self, $item) = @_;
|
my ($self, $item) = @_;
|
||||||
|
|
||||||
|
$self->pointed_hint('dbus-policy-in-etc', $item->pointer)
|
||||||
|
if $item->name =~ m{^etc/};
|
||||||
|
|
||||||
my $xml = $item->decoded_utf8;
|
my $xml = $item->decoded_utf8;
|
||||||
return
|
return
|
||||||
unless length $xml;
|
unless length $xml;
|
||||||
|
|
|
@ -39,6 +39,20 @@ use namespace::clean;
|
||||||
|
|
||||||
with 'Lintian::Check';
|
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)
|
# a list of regex for detecting documentation file checked against basename (xi)
|
||||||
my @DOCUMENTATION_FILE_REGEXES = qw{
|
my @DOCUMENTATION_FILE_REGEXES = qw{
|
||||||
[.]docx?$
|
[.]docx?$
|
||||||
|
@ -110,7 +124,9 @@ sub visit_installed_files {
|
||||||
=~ m{^ usr/share/doc/ (?:.+/)? (?:doxygen|html) / .* [.]map [.] $regex }sx;
|
=~ m{^ usr/share/doc/ (?:.+/)? (?:doxygen|html) / .* [.]map [.] $regex }sx;
|
||||||
|
|
||||||
if ($item->is_file
|
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(
|
$self->pointed_hint(
|
||||||
'package-contains-documentation-outside-usr-share-doc',
|
'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 @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 {
|
sub visit_installed_files {
|
||||||
my ($self, $item) = @_;
|
my ($self, $item) = @_;
|
||||||
|
@ -622,11 +622,15 @@ sub installable {
|
||||||
&& any { $_ == $USER_COMMAND_SECTION } @sections;
|
&& 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
|
# surplus manpages only for this package; provides sorted output
|
||||||
my $local = List::Compare->new(\@related_commands, [keys %local_manpages]);
|
my $local = List::Compare->new(\@related_commands, [keys %local_manpages]);
|
||||||
|
|
|
@ -56,12 +56,13 @@ sub changes {
|
||||||
for my $target (@targets) {
|
for my $target (@targets) {
|
||||||
|
|
||||||
my $reduced = $target;
|
my $reduced = $target;
|
||||||
$reduced =~ s{- (?:backports(?:-sloppy)?
|
$reduced =~ s{- (?:backports(?:-(?:sloppy|staging))?
|
||||||
|lts
|
|lts
|
||||||
|proposed(?:-updates)?
|
|proposed(?:-updates)?
|
||||||
|updates
|
|updates
|
||||||
|security
|
|security
|
||||||
|volatile)$}{}xsm;
|
|volatile
|
||||||
|
|fasttrack)$}{}xsm;
|
||||||
|
|
||||||
$major{$target} = $reduced;
|
$major{$target} = $reduced;
|
||||||
}
|
}
|
||||||
|
@ -92,7 +93,7 @@ sub changes {
|
||||||
my $version = $self->processable->fields->value('Version');
|
my $version = $self->processable->fields->value('Version');
|
||||||
my $distnumber;
|
my $distnumber;
|
||||||
my $bpoversion;
|
my $bpoversion;
|
||||||
if ($version=~ /~bpo(\d+)\+(\d+)$/) {
|
if ($version=~ /~bpo(\d+)\+(\d+)(\+salsaci(\+\d+)*)?$/) {
|
||||||
$distnumber = $1;
|
$distnumber = $1;
|
||||||
$bpoversion = $2;
|
$bpoversion = $2;
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@ use warnings;
|
||||||
use utf8;
|
use utf8;
|
||||||
|
|
||||||
use Const::Fast;
|
use Const::Fast;
|
||||||
|
use List::SomeUtils qw(all);
|
||||||
use Path::Tiny;
|
use Path::Tiny;
|
||||||
|
|
||||||
use Moo;
|
use Moo;
|
||||||
|
@ -54,12 +55,15 @@ my @CHANGES = qw(Format Date Source Architecture Version Distribution
|
||||||
sub source {
|
sub source {
|
||||||
my ($self) = @_;
|
my ($self) = @_;
|
||||||
|
|
||||||
#my $all_udeb = 1;
|
my $debian_control = $self->processable->debian_control;
|
||||||
#$all_udeb = 0
|
|
||||||
# if any {
|
# policy 5.6.11
|
||||||
# $debian_control->installable_package_type($_) ne 'udeb'
|
if (all { $debian_control->installable_package_type($_) eq 'udeb' }
|
||||||
# }
|
$debian_control->installables) {
|
||||||
# $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 $fields = $self->processable->fields;
|
||||||
my @missing_dsc = grep { !$fields->declares($_) } @DSC;
|
my @missing_dsc = grep { !$fields->declares($_) } @DSC;
|
||||||
|
@ -67,7 +71,6 @@ sub source {
|
||||||
my $dscfile = path($self->processable->path)->basename;
|
my $dscfile = path($self->processable->path)->basename;
|
||||||
$self->hint('required-field', $dscfile, $_) for @missing_dsc;
|
$self->hint('required-field', $dscfile, $_) for @missing_dsc;
|
||||||
|
|
||||||
my $debian_control = $self->processable->debian_control;
|
|
||||||
my $control_item = $debian_control->item;
|
my $control_item = $debian_control->item;
|
||||||
|
|
||||||
# look at d/control source paragraph
|
# look at d/control source paragraph
|
||||||
|
|
|
@ -37,7 +37,8 @@ with 'Lintian::Check';
|
||||||
|
|
||||||
const my $EMPTY => q{};
|
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 {
|
sub udeb {
|
||||||
my ($self) = @_;
|
my ($self) = @_;
|
||||||
|
|
|
@ -74,7 +74,7 @@ sub source {
|
||||||
my $latest_standard = $policy_releases->latest_version;
|
my $latest_standard = $policy_releases->latest_version;
|
||||||
|
|
||||||
my ($latest_major, $latest_minor, $latest_patch)
|
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
|
# a fourth digit is a non-normative change in policy
|
||||||
my $latest_normalized
|
my $latest_normalized
|
||||||
|
@ -99,7 +99,7 @@ sub source {
|
||||||
if (versioncmp($compliance_standard, $latest_standard) == 1) {
|
if (versioncmp($compliance_standard, $latest_standard) == 1) {
|
||||||
|
|
||||||
$self->hint('newer-standards-version',
|
$self->hint('newer-standards-version',
|
||||||
"$compliance_standard (current is $latest_standard)")
|
"$compliance_standard (current is $latest_normalized)")
|
||||||
unless $distribution =~ /backports/;
|
unless $distribution =~ /backports/;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -146,7 +146,7 @@ sub source {
|
||||||
= grep { $_ <= $changelog_epoch } @newer_normative_epochs;
|
= grep { $_ <= $changelog_epoch } @newer_normative_epochs;
|
||||||
|
|
||||||
my $outdated_illustration
|
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
|
# use normative to prevent tag changes on minor new policy edits
|
||||||
$self->hint('out-of-date-standards-version', $outdated_illustration)
|
$self->hint('out-of-date-standards-version', $outdated_illustration)
|
||||||
|
|
|
@ -35,13 +35,22 @@ use namespace::clean;
|
||||||
|
|
||||||
with 'Lintian::Check';
|
with 'Lintian::Check';
|
||||||
|
|
||||||
|
# Whitelist of XS-* source fields
|
||||||
|
my %source_field_whitelist = (
|
||||||
|
'Autobuild' => 1,
|
||||||
|
'Go-Import-Path' => 1,
|
||||||
|
'Ruby-Versions' => 1,
|
||||||
|
);
|
||||||
|
|
||||||
sub source {
|
sub source {
|
||||||
my ($self) = @_;
|
my ($self) = @_;
|
||||||
|
|
||||||
my $KNOWN_SOURCE_FIELDS= $self->data->load('common/source-fields');
|
my $KNOWN_SOURCE_FIELDS= $self->data->load('common/source-fields');
|
||||||
my @unknown= $self->processable->fields->extra($KNOWN_SOURCE_FIELDS->all);
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,8 +52,9 @@ my %VCS_EXTRACT = (
|
||||||
# hg uri followed by optional -b branchname
|
# hg uri followed by optional -b branchname
|
||||||
Hg => sub { return shift =~ /^(.+?)(?:\s+-b\s+(\S*))?$/;},
|
Hg => sub { return shift =~ /^(.+?)(?:\s+-b\s+(\S*))?$/;},
|
||||||
# git uri followed by optional "[subdir]", "-b branchname" etc.
|
# git uri followed by optional "[subdir]", "-b branchname" etc.
|
||||||
Git =>
|
Git => sub {
|
||||||
sub { return shift =~ /^(.+?)(?:\s+\[(\S*)\])?(?:\s+-b\s+(\S*))?$/;},
|
return shift =~ /^(.+?)(?:(?:\s+\[(\S*)\])?(?:\s+-b\s+(\S*))?){0,2}$/;
|
||||||
|
},
|
||||||
Svn => sub { return @_;},
|
Svn => sub { return @_;},
|
||||||
# New "mtn://host?branch" uri or deprecated "host branch".
|
# New "mtn://host?branch" uri or deprecated "host branch".
|
||||||
Mtn => sub { return shift =~ /^(.+?)(?:\s+\S+)?$/;},
|
Mtn => sub { return shift =~ /^(.+?)(?:\s+\S+)?$/;},
|
||||||
|
@ -203,9 +204,8 @@ sub always {
|
||||||
|
|
||||||
my $maintainer = $processable->fields->unfolded_value($field);
|
my $maintainer = $processable->fields->unfolded_value($field);
|
||||||
|
|
||||||
my $is_list
|
if ($maintainer =~ /\b(\S+\@lists(?:\.alioth)?\.debian\.org)\b/
|
||||||
= $maintainer =~ /\b(\S+\@lists(?:\.alioth)?\.debian\.org)\b/;
|
|| $maintainer =~ /\b(\S+\@tracker\.debian\.org)\b/) {
|
||||||
if ($is_list) {
|
|
||||||
$is_teammaintained = 1;
|
$is_teammaintained = 1;
|
||||||
$team_email = $1;
|
$team_email = $1;
|
||||||
$is_maintained_by_individual = 0;
|
$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',
|
$self->hint('vcs-fields-use-more-than-one-vcs',
|
||||||
|
|
|
@ -85,6 +85,11 @@ sub visit_patched_files {
|
||||||
return
|
return
|
||||||
unless $item->is_open_ok;
|
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.
|
# Skip if file is detected to be an image or JSON.
|
||||||
return
|
return
|
||||||
if $item->file_type =~ m{image|bitmap|JSON};
|
if $item->file_type =~ m{image|bitmap|JSON};
|
||||||
|
|
|
@ -55,6 +55,9 @@ sub visit_patched_files {
|
||||||
return
|
return
|
||||||
unless $item->is_file;
|
unless $item->is_file;
|
||||||
|
|
||||||
|
return
|
||||||
|
if $item->dirname =~ m{^debian/missing-sources/};
|
||||||
|
|
||||||
# prebuilt-file or forbidden file type
|
# prebuilt-file or forbidden file type
|
||||||
$self->pointed_hint('source-contains-prebuilt-wasm-binary', $item->pointer)
|
$self->pointed_hint('source-contains-prebuilt-wasm-binary', $item->pointer)
|
||||||
if $item->file_type =~ m{^WebAssembly \s \(wasm\) \s binary \s module}x;
|
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*
|
19\d{2}[\-\s]19\d{2}\s*
|
||||||
Adobe\s*Systems\s*Incorporated\.?\s*\Z}xsmi;
|
Adobe\s*Systems\s*Incorporated\.?\s*\Z}xsmi;
|
||||||
|
|
||||||
# If copy pasted from black book they are
|
# If copy pasted from black book they are
|
||||||
# copyright adobe a few line before the only
|
# copyright adobe a few line before the only
|
||||||
# place where the startlock is documented is
|
# place where the startlock is documented is
|
||||||
# in the black book copyrighted fragment
|
# in the black book copyrighted fragment
|
||||||
if ($line =~ m/startlock\s*get\s*exec/) {
|
#
|
||||||
|
# 2023-06-05: this check has been adjusted because
|
||||||
|
# Adobe's type hint code[1] (including Flex[2]) became
|
||||||
|
# open source[3] with an Apache-2.0 license[4] as
|
||||||
|
# committed on 2014-09-19, making that check a false
|
||||||
|
# positive[7].
|
||||||
|
#
|
||||||
|
# We continue to check for copyrighted code that is not
|
||||||
|
# available under an open source license from the origin
|
||||||
|
# publication, "Adobe Type 1 Font Format"[5][6].
|
||||||
|
#
|
||||||
|
# [1] - https://github.com/adobe-type-tools/afdko/blob/2bf85cf44a64148353b24db17e0cc41ede5493b1/FDK/Tools/Programs/public/lib/source/t1write/t1write_hintothers.h
|
||||||
|
# [2] - https://github.com/adobe-type-tools/afdko/blob/2bf85cf44a64148353b24db17e0cc41ede5493b1/FDK/Tools/Programs/public/lib/source/t1write/t1write_flexothers.h
|
||||||
|
# [3] - https://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1375813.html
|
||||||
|
# [4] - https://github.com/adobe-type-tools/afdko/blob/2bf85cf44a64148353b24db17e0cc41ede5493b1/LICENSE.txt
|
||||||
|
# [5] - https://adobe-type-tools.github.io/font-tech-notes/pdfs/T1_SPEC.pdf
|
||||||
|
# [6] - https://lccn.loc.gov/90042516
|
||||||
|
# [7] - https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1029555
|
||||||
|
if ($line =~ m/UniqueID\s*6859/) {
|
||||||
|
|
||||||
$self->pointed_hint(
|
$self->pointed_hint(
|
||||||
'license-problem-font-adobe-copyrighted-fragment-no-credit',
|
'license-problem-font-adobe-copyrighted-fragment-no-credit',
|
||||||
|
|
|
@ -472,16 +472,6 @@ sub check_init {
|
||||||
$saw_command{$1} = 1;
|
$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
|
# nested while
|
||||||
} continue {
|
} continue {
|
||||||
++$position;
|
++$position;
|
||||||
|
@ -718,25 +708,6 @@ sub check_defaults {
|
||||||
sub visit_installed_files {
|
sub visit_installed_files {
|
||||||
my ($self, $item) = @_;
|
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/([^/]+)/$}) {
|
if ($item =~ m{etc/sv/([^/]+)/$}) {
|
||||||
|
|
||||||
my $service = $1;
|
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,
|
qr{(?i)/_static/(?:doctools|language_data|searchtools)} . $JS_EXT,
|
||||||
'tinymce' => qr{(?i)/tiny_mce(?:_(?:popup|src))?}
|
'tinymce' => qr{(?i)/tiny_mce(?:_(?:popup|src))?}
|
||||||
. $JS_EXT,
|
. $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
|
# not yet available in unstable
|
||||||
# 'xinha' => qr{(?i)/(htmlarea|Xinha(Loader|Core))} . $JS_EXT,
|
# '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',
|
$self->pointed_hint('composer-package-without-pkg-php-tools-builddep',
|
||||||
$composer_json->pointer)
|
$composer_json->pointer)
|
||||||
if defined $composer_json
|
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 $package_xml
|
||||||
&& !defined $package2_xml;
|
&& !defined $package2_xml;
|
||||||
|
|
||||||
|
|
|
@ -119,11 +119,6 @@ sub source {
|
||||||
if $build_all->satisfies('python-sphinx')
|
if $build_all->satisfies('python-sphinx')
|
||||||
&& !$build_all->satisfies('python3-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(
|
$self->hint(
|
||||||
'alternatively-build-depends-on-python-sphinx-and-python3-sphinx')
|
'alternatively-build-depends-on-python-sphinx-and-python3-sphinx')
|
||||||
if $self->processable->fields->value('Build-Depends')
|
if $self->processable->fields->value('Build-Depends')
|
||||||
|
@ -225,7 +220,11 @@ sub source {
|
||||||
my %PYPROJECT_PREREQUISITES = (
|
my %PYPROJECT_PREREQUISITES = (
|
||||||
'poetry.core.masonry.api' => 'python3-poetry-core:any',
|
'poetry.core.masonry.api' => 'python3-poetry-core:any',
|
||||||
'flit_core.buildapi' => 'flit: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)
|
open(my $fd, '<', $pyproject->unpacked_path)
|
||||||
|
@ -236,7 +235,10 @@ sub source {
|
||||||
|
|
||||||
my $pointer = $pyproject->pointer($position);
|
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;
|
my $backend = $1;
|
||||||
|
|
||||||
|
@ -245,6 +247,11 @@ sub source {
|
||||||
&& $build_depends->satisfies('python3-poetry:any')
|
&& $build_depends->satisfies('python3-poetry:any')
|
||||||
&& !$build_depends->satisfies('python3-poetry-core: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}) {
|
if (exists $PYPROJECT_PREREQUISITES{$backend}) {
|
||||||
|
|
||||||
my $prerequisites = $PYPROJECT_PREREQUISITES{$backend}
|
my $prerequisites = $PYPROJECT_PREREQUISITES{$backend}
|
||||||
|
@ -253,7 +260,7 @@ sub source {
|
||||||
$self->pointed_hint(
|
$self->pointed_hint(
|
||||||
'missing-prerequisite-for-pyproject-backend',
|
'missing-prerequisite-for-pyproject-backend',
|
||||||
$pointer, $backend,"(does not satisfy $prerequisites)")
|
$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)
|
$self->pointed_hint('executable-stack-in-shared-library', $item->pointer)
|
||||||
if exists $item->elf->{PH}{STACK}
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,9 +38,9 @@ with 'Lintian::Check';
|
||||||
|
|
||||||
const my $EMPTY => q{};
|
const my $EMPTY => q{};
|
||||||
|
|
||||||
# date --date="Sat, 6 Jul 2019 20:53:14 -0400" +%s
|
# date --date="Sat, 14 Aug 2021 17:41:41 -0400" +%s
|
||||||
# https://lists.debian.org/debian-announce/2019/msg00003.html
|
# https://lists.debian.org/debian-announce/2021/msg00003.html
|
||||||
const my $OLDSTABLE_RELEASE_EPOCH => 1_562_460_794;
|
const my $OLDSTABLE_RELEASE_EPOCH => 1_628_977_301;
|
||||||
|
|
||||||
# When detecting commands inside shell scripts, use this regex to match the
|
# When detecting commands inside shell scripts, use this regex to match the
|
||||||
# beginning of the command rather than checking whether the command is at the
|
# beginning of the command rather than checking whether the command is at the
|
||||||
|
|
|
@ -102,6 +102,7 @@ sub source {
|
||||||
my $version_nmuness = 0;
|
my $version_nmuness = 0;
|
||||||
my $version_local = 0;
|
my $version_local = 0;
|
||||||
my $upload_is_backport = $version =~ m/~bpo(\d+)\+(\d+)$/;
|
my $upload_is_backport = $version =~ m/~bpo(\d+)\+(\d+)$/;
|
||||||
|
my $upload_is_stable_update = $version =~ m/~deb(\d+)u(\d+)$/;
|
||||||
|
|
||||||
if ($version =~ /-[^.-]+(\.[^.-]+)?(\.[^.-]+)?$/) {
|
if ($version =~ /-[^.-]+(\.[^.-]+)?(\.[^.-]+)?$/) {
|
||||||
$version_nmuness = 1 if defined $1;
|
$version_nmuness = 1 if defined $1;
|
||||||
|
@ -158,6 +159,7 @@ sub source {
|
||||||
$pointer, $version)
|
$pointer, $version)
|
||||||
if $upload_is_nmu
|
if $upload_is_nmu
|
||||||
&& $version_nmuness != 1
|
&& $version_nmuness != 1
|
||||||
|
&& !$upload_is_stable_update
|
||||||
&& !$upload_is_backport;
|
&& !$upload_is_backport;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -62,6 +62,7 @@ our $PYTHON3_ALL_DEPEND
|
||||||
my %KNOWN_SPECIAL_DEPENDS = map { $_ => 1 } qw(
|
my %KNOWN_SPECIAL_DEPENDS = map { $_ => 1 } qw(
|
||||||
@
|
@
|
||||||
@builddeps@
|
@builddeps@
|
||||||
|
@recommends@
|
||||||
);
|
);
|
||||||
|
|
||||||
sub source {
|
sub source {
|
||||||
|
|
|
@ -41,20 +41,23 @@ with 'Lintian::Check';
|
||||||
sub installable {
|
sub installable {
|
||||||
my ($self) = @_;
|
my ($self) = @_;
|
||||||
|
|
||||||
my $rules_dir
|
foreach my $lib_dir (qw(usr/lib lib)) {
|
||||||
= $self->processable->installed->resolve_path('lib/udev/rules.d/');
|
my $rules_dir
|
||||||
return
|
= $self->processable->installed->resolve_path(
|
||||||
unless $rules_dir;
|
"$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);
|
$self->pointed_hint('udev-rule-unreadable', $item->pointer);
|
||||||
next;
|
next;
|
||||||
|
}
|
||||||
|
|
||||||
|
$self->check_udev_rules($item);
|
||||||
}
|
}
|
||||||
|
|
||||||
$self->check_udev_rules($item);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -81,9 +81,14 @@ sub source {
|
||||||
# check signatures
|
# check signatures
|
||||||
my @allsigs = map { @{$signatures{$_}} } @origtar;
|
my @allsigs = map { @{$signatures{$_}} } @origtar;
|
||||||
for my $signature (@allsigs) {
|
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
|
# 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) {
|
if ($contents =~ /^-----BEGIN PGP ARMORED FILE-----/m) {
|
||||||
|
|
||||||
|
|
|
@ -122,7 +122,8 @@ sub all_sources {
|
||||||
$self->debhelper_levels,$self->fonts,
|
$self->debhelper_levels,$self->fonts,
|
||||||
$self->hardening_buildflags,$self->mail_transport_agents,
|
$self->hardening_buildflags,$self->mail_transport_agents,
|
||||||
$self->policy_releases,$self->sections,
|
$self->policy_releases,$self->sections,
|
||||||
$self->style_sheet,$self->virtual_initd_facilities
|
#$self->style_sheet,
|
||||||
|
$self->virtual_initd_facilities
|
||||||
);
|
);
|
||||||
|
|
||||||
return @sources;
|
return @sources;
|
||||||
|
@ -308,10 +309,10 @@ has style_sheet => (
|
||||||
default => sub {
|
default => sub {
|
||||||
my ($self) = @_;
|
my ($self) = @_;
|
||||||
|
|
||||||
my $releases = Lintian::Data::Stylesheet->new;
|
my $stylesheets = Lintian::Data::Stylesheet->new;
|
||||||
$releases->load($self->data_paths, $self->vendor);
|
$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 @files = grep { $_->is_file } @{$self->sorted_list};
|
||||||
my @names = map { $_->name } @files;
|
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;
|
my %file_types;
|
||||||
|
|
||||||
|
|
|
@ -191,8 +191,7 @@ sub process{
|
||||||
next
|
next
|
||||||
unless $PROFILE->display_level_for_tag($hint->tag_name);
|
unless $PROFILE->display_level_for_tag($hint->tag_name);
|
||||||
|
|
||||||
if (!defined $hint->override
|
if (!defined $hint->override) {
|
||||||
|| $option->{'show-overrides'}) {
|
|
||||||
|
|
||||||
++$reported_count{$tag->visibility}
|
++$reported_count{$tag->visibility}
|
||||||
if !$tag->experimental;
|
if !$tag->experimental;
|
||||||
|
|
|
@ -80,7 +80,8 @@ has is_non_free => (
|
||||||
$section ||= 'main';
|
$section ||= 'main';
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
if $section =~ m{^(?:non-free|restricted|multiverse)/};
|
if $section
|
||||||
|
=~ m{^(?:non-free|non-free-firmware|restricted|multiverse)/};
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,7 +116,7 @@ has orig => (
|
||||||
my $errors = $subindex->create_from_piped_tar(\@command);
|
my $errors = $subindex->create_from_piped_tar(\@command);
|
||||||
|
|
||||||
push(@{$index->unpack_messages}, "$tarball . $_")
|
push(@{$index->unpack_messages}, "$tarball . $_")
|
||||||
for uniq split(/\n/, $errors);
|
for grep { !/^tar: Ignoring / } uniq split(/\n/, $errors);
|
||||||
|
|
||||||
# treat hard links like regular files
|
# treat hard links like regular files
|
||||||
my @hardlinks = grep { $_->is_hardlink } @{$subindex->sorted_list};
|
my @hardlinks = grep { $_->is_hardlink } @{$subindex->sorted_list};
|
||||||
|
|
|
@ -131,8 +131,8 @@ has patched => (
|
||||||
chdir($savedir)
|
chdir($savedir)
|
||||||
or die encode_utf8("Cannot change to directory $savedir");
|
or die encode_utf8("Cannot change to directory $savedir");
|
||||||
|
|
||||||
my @messages
|
my @messages = grep { !/^tar: Ignoring / }
|
||||||
= split(/\n/, $unpack_errors . $index_errors . $permissions_errors);
|
split(/\n/, $unpack_errors . $index_errors . $permissions_errors);
|
||||||
push(@{$index->unpack_messages}, @messages);
|
push(@{$index->unpack_messages}, @messages);
|
||||||
|
|
||||||
return $index;
|
return $index;
|
||||||
|
|
|
@ -81,7 +81,7 @@ relationship a superset of another relationship."
|
||||||
|
|
||||||
=item name
|
=item name
|
||||||
|
|
||||||
=item multiarch_acceptor
|
=item multiarch_qualifier
|
||||||
|
|
||||||
=item version_operator
|
=item version_operator
|
||||||
|
|
||||||
|
@ -107,7 +107,7 @@ has name => (
|
||||||
coerce => sub { my ($text) = @_; return ($text // $EMPTY); }
|
coerce => sub { my ($text) = @_; return ($text // $EMPTY); }
|
||||||
);
|
);
|
||||||
|
|
||||||
has multiarch_acceptor => (
|
has multiarch_qualifier => (
|
||||||
is => 'rw',
|
is => 'rw',
|
||||||
default => $EMPTY,
|
default => $EMPTY,
|
||||||
coerce => sub { my ($text) = @_; return ($text // $EMPTY); }
|
coerce => sub { my ($text) = @_; return ($text // $EMPTY); }
|
||||||
|
@ -190,7 +190,7 @@ sub parse {
|
||||||
$self->parsable($TRUE);
|
$self->parsable($TRUE);
|
||||||
|
|
||||||
$self->name($1);
|
$self->name($1);
|
||||||
$self->multiarch_acceptor($2);
|
$self->multiarch_qualifier($2);
|
||||||
$self->version_operator($3);
|
$self->version_operator($3);
|
||||||
$self->reference_version($4);
|
$self->reference_version($4);
|
||||||
$self->build_architecture($5);
|
$self->build_architecture($5);
|
||||||
|
@ -206,7 +206,7 @@ sub parse {
|
||||||
if $self->version_operator eq $GREATER_THAN;
|
if $self->version_operator eq $GREATER_THAN;
|
||||||
|
|
||||||
unless ($with_restrictions) {
|
unless ($with_restrictions) {
|
||||||
$self->multiarch_acceptor('any');
|
$self->multiarch_qualifier('any');
|
||||||
$self->version_operator($EMPTY);
|
$self->version_operator($EMPTY);
|
||||||
$self->reference_version($EMPTY);
|
$self->reference_version($EMPTY);
|
||||||
$self->build_architecture($EMPTY);
|
$self->build_architecture($EMPTY);
|
||||||
|
@ -350,17 +350,17 @@ sub satisfies {
|
||||||
|
|
||||||
# pkg has no chance of satisfing pkg:Y unless Y is 'any'
|
# pkg has no chance of satisfing pkg:Y unless Y is 'any'
|
||||||
return undef
|
return undef
|
||||||
if !length $self->multiarch_acceptor
|
if !length $self->multiarch_qualifier
|
||||||
&& length $other->multiarch_acceptor
|
&& length $other->multiarch_qualifier
|
||||||
&& $other->multiarch_acceptor ne 'any';
|
&& $other->multiarch_qualifier ne 'any';
|
||||||
|
|
||||||
# TODO: Review this case. Are there cases where other cannot
|
# TODO: Review this case. Are there cases where other cannot
|
||||||
# disprove self due to the ":any"-qualifier? For now, we
|
# disprove self due to the ":any"-qualifier? For now, we
|
||||||
# assume there are no such cases.
|
# assume there are no such cases.
|
||||||
# pkg:X has no chance of satisfying pkg
|
# pkg:X has no chance of satisfying pkg
|
||||||
return undef
|
return undef
|
||||||
if length $self->multiarch_acceptor
|
if length $self->multiarch_qualifier
|
||||||
&& !length $other->multiarch_acceptor;
|
&& !length $other->multiarch_qualifier;
|
||||||
|
|
||||||
# For now assert that only the identity holds. In practise, the
|
# For now assert that only the identity holds. In practise, the
|
||||||
# "pkg:X" (for any valid value of X) seems to satisfy "pkg:any",
|
# "pkg:X" (for any valid value of X) seems to satisfy "pkg:any",
|
||||||
|
@ -368,9 +368,9 @@ sub satisfies {
|
||||||
# matters)
|
# matters)
|
||||||
# pkg:X has no chance of satisfying pkg:Y unless X equals Y
|
# pkg:X has no chance of satisfying pkg:Y unless X equals Y
|
||||||
return undef
|
return undef
|
||||||
if length $self->multiarch_acceptor
|
if length $self->multiarch_qualifier
|
||||||
&& length $other->multiarch_acceptor
|
&& length $other->multiarch_qualifier
|
||||||
&& $self->multiarch_acceptor ne $other->multiarch_acceptor;
|
&& $self->multiarch_qualifier ne $other->multiarch_qualifier;
|
||||||
|
|
||||||
# Now, down to version. The implication is true if self's clause is stronger
|
# Now, down to version. The implication is true if self's clause is stronger
|
||||||
# than other's, or is equivalent.
|
# than other's, or is equivalent.
|
||||||
|
@ -511,8 +511,8 @@ sub to_string {
|
||||||
|
|
||||||
my $text = $self->name;
|
my $text = $self->name;
|
||||||
|
|
||||||
$text .= $COLON . $self->multiarch_acceptor
|
$text .= $COLON . $self->multiarch_qualifier
|
||||||
if length $self->multiarch_acceptor;
|
if length $self->multiarch_qualifier;
|
||||||
|
|
||||||
$text
|
$text
|
||||||
.= $SPACE
|
.= $SPACE
|
||||||
|
|
|
@ -35,8 +35,7 @@ sub suppress {
|
||||||
return 1
|
return 1
|
||||||
if $item->dirname =~ m{ [^/] [.] dist-info / $}x
|
if $item->dirname =~ m{ [^/] [.] dist-info / $}x
|
||||||
&& defined $item->parent_dir->child('METADATA')
|
&& defined $item->parent_dir->child('METADATA')
|
||||||
&& defined $item->parent_dir->child('WHEEL')
|
&& defined $item->parent_dir->child('WHEEL');
|
||||||
&& defined $item->parent_dir->child('RECORD');
|
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
if $item->dirname =~ m{ [^/] [.] egg-info / $}x
|
if $item->dirname =~ m{ [^/] [.] egg-info / $}x
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
# Copyright (C) 2009 Russ Allbery
|
# Copyright (C) 2009 Russ Allbery
|
||||||
# Copyright (C) 2004 Marc Brockschmidt
|
# Copyright (C) 2004 Marc Brockschmidt
|
||||||
# Copyright (C) 1998 Richard Braakman
|
# Copyright (C) 1998 Richard Braakman
|
||||||
|
# Copyright (C) 2023 Axel Beckert
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify it
|
# 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
|
# under the terms of the GNU General Public License as published by the Free
|
||||||
|
@ -153,7 +154,8 @@ sub check_spelling {
|
||||||
if not $quoted
|
if not $quoted
|
||||||
and not $duplicates{$word}++
|
and not $duplicates{$word}++
|
||||||
and not $ends_with_punct
|
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) {
|
if ($word =~ m/^[A-Za-z]+$/ and not $ends_with_punct) {
|
||||||
|
|
|
@ -83,15 +83,20 @@ sub version_from_git {
|
||||||
return $EMPTY
|
return $EMPTY
|
||||||
unless -d $git_path;
|
unless -d $git_path;
|
||||||
|
|
||||||
my $describe
|
# Example outputs:
|
||||||
= decode_utf8(safe_qx('git', "--git-dir=$git_path", 'describe'));
|
# 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;
|
chomp $describe;
|
||||||
|
|
||||||
my ($guess, $step, $commit) = split(/-/, $describe);
|
# Modify it to make it a valid native version number and make it
|
||||||
return $EMPTY
|
# look more debianish like these:
|
||||||
unless defined $step;
|
# 2.115.3+49commits+git086a9a113
|
||||||
|
# 2.115.3+49commits+git086a9a113+dirty
|
||||||
$guess =~ s/ [.] 0 $/.$step/sx;
|
my $guess = $describe;
|
||||||
|
$guess =~ s/ - ( \d+ ) -g /+${1}commits+git/sx;
|
||||||
|
$guess =~ s/ - /+/sxg;
|
||||||
|
|
||||||
return ($guess // $EMPTY);
|
return ($guess // $EMPTY);
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,7 +95,7 @@ if ($opt{'in-place'}) {
|
||||||
or die encode_utf8("Cannot open $infile");
|
or die encode_utf8("Cannot open $infile");
|
||||||
|
|
||||||
my $outfile = 'debian/changelog.tmp';
|
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");
|
or die encode_utf8("Cannot open $outfile");
|
||||||
|
|
||||||
while (my $line = <$in_fd>) {
|
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
|
maintainer-upload-has-incorrect-version-number
|
||||||
no-human-maintainers
|
no-human-maintainers
|
||||||
no-nmu-in-changelog
|
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
|
qa-upload-has-incorrect-version-number
|
||||||
source-nmu-has-incorrect-version-number
|
source-nmu-has-incorrect-version-number
|
||||||
team-upload-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)
|
set output sprintf("%s/tags/%s.svg", graph_dir, tag)
|
||||||
plot sprintf("%s/tags/%s.dat", history_dir, tag) \
|
plot sprintf("%s/tags/%s.dat", history_dir, tag) \
|
||||||
u 1:2 w filledcurve x1 ls 20 t 'Tags', \
|
u 1:2 w filledcurve x1 ls 20 t sprintf("Tag %s emitted", tag), \
|
||||||
'' u 1:4 w filledcurve x1 ls 21 t 'Packages', \
|
'' u 1:4 w filledcurve x1 ls 21 t sprintf("Packages which emitted %s", tag), \
|
||||||
'' u 1:3 w filledcurve x1 ls 22 t 'Overridden'
|
'' 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
|
portion of Lintian but instead test Lintian's behavior on a useful special
|
||||||
case of package (such as a generic dh-make template).
|
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
|
The desc file
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
@ -51,8 +29,8 @@ fields are:
|
||||||
Description: <description of the purpose of the test>
|
Description: <description of the purpose of the test>
|
||||||
|
|
||||||
In addition, the tags (if any) that the test case is testing for should be
|
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
|
listed in a Test-For key. If the test case is expecting some tags to not
|
||||||
issued (checking against false positives) should be listed in a
|
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
|
Test-Against key. In both cases, the tags should be separated by
|
||||||
whitespace. The following format is suggested for multiple tags:
|
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
|
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
|
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'.
|
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
|
file. To suppress the sort (when, for instance, checking non-standard
|
||||||
output formats), use:
|
output formats), use:
|
||||||
|
|
||||||
|
@ -84,7 +61,7 @@ the test case as a non-native package, add:
|
||||||
|
|
||||||
Type: non-native
|
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.
|
be non-native unless you're testing a mismatch.
|
||||||
|
|
||||||
By default all tests are run with the default Lintian profile. If a
|
By default all tests are run with the default Lintian profile. If a
|
||||||
|
@ -100,7 +77,7 @@ failing, use:
|
||||||
|
|
||||||
Todo: yes
|
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
|
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
|
document what needs to be done, the ideal situation is to have none of
|
||||||
them :)
|
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,
|
If any of the dependencies are unavailable or conflicts are present,
|
||||||
the test will be skipped.
|
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
|
filled into the template control and changelog files by the test suite
|
||||||
harness. The following additional fields are currently supported:
|
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-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-legacy-format [usr/share/appdata/appstream-metadata-obsolete.metadata.xml]
|
||||||
appstream-metadata (binary): appstream-metadata-invalid [usr/share/metainfo/appstream-metadata-invalid.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
|
#!/usr/bin/make -f
|
||||||
|
|
||||||
export DEB_BUILD_MAINT_OPTIONS=hardening=+all,-pie
|
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
|
dh $@ --buildsystem pybuild
|
||||||
|
|
|
@ -1 +1,3 @@
|
||||||
|
AC_INIT
|
||||||
|
|
||||||
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
|
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