Bug#886036: Improve changelog version parsing

2018-07-13 Thread Felix Lechner
Hi Chris,

Thank you for following up. I have more patches. I am just not sure if the
version parsing should really be duplicated in Lintian. Maybe there is a
benefit to checks and balances, but at least some of the work might well go
into 'dpkg/scripts/Dpkg/Version.pm', which we could then use in Lintian.

What do you think, please? Thank you for your guidance!

Best regards,
Felix

On Sun, Apr 15, 2018 at 1:21 AM, Chris Lamb  wrote:
> Chris Lamb wrote:
>
>> Can you update us on the status of this issue? Did we resolve it already
>> or do you have more patches ready to roll soon? :)
>
> Gentle ping on this? I do remember you had some patches queued up,
> I just hope we/I haven't neglected them somewhere...
>
>
> Regards,
>
> --
>   ,''`.
>  : :'  : Chris Lamb
>  `. `'`  la...@debian.org / chris-lamb.co.uk
>`-


Bug#886036: Salsa merge request

2018-07-26 Thread Felix Lechner
The patches were consolidated in this merge request
(https://salsa.debian.org/lintian/lintian/merge_requests/14).



Bug#904707: fakeroot chown fails on kerberized NFSv4

2018-07-26 Thread Felix Lechner
Package: lintian
Version: 2.5.94

Hi,

When the Lintian test suite runs on a kerberized NFSv4 volume,
't/tests/files-wrong-owner' fails with this error message:

tests::files-wrong-owner: chown: changing ownership of
'debian/files-wrong-owner/usr/lib/filenames/wrong-owner-100:0':
Invalid argument
tests::files-wrong-owner: make[1]: *** [debian/rules:13:
override_dh_fixperms] Error 1

The full log is attached.

I can replicate the behavior by cloning Lintian from salsa and running
'./debian/rules runtests onlyrun=files-wrong-owner'. I isolated the
error in the shell script below (also attached). In a strange twist,
the script produces no error for some low uids here, including 0 and
1, but fails consistently for uids that don't exist. (The uid 100
exists but fails.) Please try a different uid if you do not get the
error right away.

#!/bin/sh
set -x
tmpdir="$(mktemp -d --tmpdir=.)"
tmpfile="$(mktemp --tmpdir=$tmpdir)"
fakeroot -- chown 17171:0 $tmpfile   # offending command
rm $tmpfile
rmdir $tmpdir

I do not see a workaround in Lintian, so the bug should probably be
reassigned to 'nfs-utils'. The bugs over there did not strike me
immediately as related. (I have other bugs open and would be happy to
help.) Here are my mount and export details:

/etc/exports (on server):
/srv/nfs
*(rw,sync,no_subtree_check,no_root_squash,sec=krb5i:krb5p,fsid=0)
/srv/nfs/acct
*(rw,sync,no_subtree_check,no_root_squash,sec=krb5i:krb5p,mountpoint)

/etc/fstab (on client):
server:/acct /acct nfs4 rw,sec=krb5i,fsc 0 0

Perhaps it is relevant that 'root' on the client is allowed to use the
machine credentials:

/etc/idmapd (on server):
[Translation]
Method = nsswitch
GSS-Methods = static,nsswitch
[Static]
host/client.domain@domain.tld = root
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup


Also,

(client) Linux client.domain.tld 4.17.0-1-amd64 #1 SMP Debian 4.17.8-1
(2018-07-20) x86_64 GNU/Linux
(server) Linux server.domain.tld 4.16.0-2-amd64 #1 SMP Debian
4.16.16-2 (2018-06-22) x86_64 GNU/Linux

and finally,

-- System Information:
Debian Release: buster/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.17.0-1-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8),
LANGUAGE=en_US.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages lintian depends on:
ii  binutils   2.31.1-1
ii  bzip2  1.0.6-8.1
ii  diffstat   1.61-1+b1
ii  dpkg   1.19.0.5+b1
ii  file   1:5.33-3
ii  gettext0.19.8.1-6+b1
ii  intltool-debian0.35.0+20060710.4
ii  libapt-pkg-perl0.1.34
ii  libarchive-zip-perl1.60-1
ii  libclass-accessor-perl 0.51-1
ii  libclone-perl  0.39-1
ii  libdigest-sha-perl 6.02-1
ii  libdpkg-perl   1.19.0.5
ii  libemail-valid-perl1.202-1
ii  libfile-basedir-perl   0.08-1
ii  libipc-run-perl20180523.0-1
ii  liblist-moreutils-perl 0.416-1+b3
ii  libparse-debianchangelog-perl  1.2.0-12
ii  libtext-levenshtein-perl   0.13-1
ii  libtimedate-perl   2.3000-2
ii  liburi-perl1.74-1
ii  libxml-simple-perl 2.25-1
ii  libyaml-libyaml-perl   0.72+repack-1
ii  man-db 2.8.3-2
ii  patchutils 0.3.4-2
ii  perl [libdigest-sha-perl]  5.26.2-6
ii  t1utils1.41-2
ii  xz-utils   5.2.2-1.3

Versions of packages lintian recommends:
ii  libperlio-gzip-perl  0.19-1+b4

Versions of packages lintian suggests:
ii  binutils-multiarch 2.31.1-1
ii  dpkg-dev   1.19.0.5
ii  libhtml-parser-perl3.72-3+b2
ii  libtext-template-perl  1.53-1

-- no debconf information

Thank you!


lintian-nfs-fakeroot-error.log.gz
Description: application/gzip


nfsv4-fakeroot-chown-test.sh.gz
Description: application/gzip


Bug#904707: fakeroot chown fails on kerberized NFSv4

2018-07-26 Thread Felix Lechner
Control: reassign 904707 nfs-utils 1:1.3.4-2.2

> I think your next step might be to try and create a minimal testcase
> outside of Lintian. If you can, then it should not be assigned here
> (naturally).

It's already isolated---maybe you did not see the script. Reassigned. Thank you!



Re: Lintian test suite proposal

2018-08-10 Thread Felix Lechner
Hi Niels,

Thank you for your thoughtful comments. Your input weighs heavily in
Debian QA. I will address your points one by one, but will mostly
disregard your comments regarding style. Some of it may be my lack of
experience. Perhaps it is my walk of life. I probably dislike the
passive language that is so common in technical documents. Either way,
I am not tied to any wording. Let's begin:

> As I read it, there are two orthogonal but interesting ideas.
>
>  1. The tags.d layout
>
>  2. The Abbreviated-Tags proposal pigging backed on top of tags.d.

The two ideas are not as unrelated as they seem. Both (1) and (2)
dissociate the tag names from the test context. Keeping that
information together as we currently do is not only redundant but also
makes it hard to refactor and reorganize our tests. Given your
positive reaction to 'Abbreviated-Tags' I won't dwell on its
advantages, but it is the less powerful idea of the two. Sure, it's
nice you don't have to mention the test name in 'tags' any more, but
you still have to deal with nuisance tags from unrelated checks. Many
times, they are a pointless obstacle: Who cares about a watch file,
for example, when you are testing lintian's reaction to changelog
entries? I think ultimately the option 'Abbreviated-Tags' only makes
it easier to rename tests. It does not help with unit testing the
lintian checks, which is the core proposal.

The tags directory proposal suppresses tag noise from other checks. I
also makes it easy to reuse tag files in various test contexts as long
as you are testing the same basic features. Another great advantage,
and a major motivation, is the easier reordering of git commits
containing newly proposed Lintian tags. If any test validates more
than one check you are working on, you can spend a lot of time with
'git rebase -i' and 'git add -i' trying to swap the commit order. With
tags.d it is almost guaranteed to be conflict-free.

You may want to add a third point. My proposal also abolishes the tag order.

As a side note, I actually expected greater opposition to the bundling
of all tags in one check as a testable entity, as opposed to viewing
single tags as the proper entity under test.

The idea for tags.d arose when I read the following portions of the
README (emphasis marked with >>> and <<<):

/ Please keep each test case focused.  One of the problems that
/ developed with the old test suite is that each test was serving many
/ separate purposes and testing large swaths of Lintian, which made it
 / difficult to know what could be changed and what would destroy some
/ other useful test.  >>> Test cases should only test a set of closely
/ related tags and new tests should be added for new issues that aren't
/ part of that closely-related set. <<<

/ Test cases should be as Lintian-clean as possible except for the tags
/ that they're testing for.  The template is intended to help with this.
/ It generates a Lintian-clean basic package for you to start with.  You
/ should override only the minimal required to trigger your test, and
/ try to fix any unrelated problems. >>> Sometimes this won't be possible
/ and the only way to trigger a tag is to also trigger another tag, and
/ that's fine, but it shouldn't be the normal case. <<<


> As I read it, these proposals should be feasible implement separately
> (i.e. Abbreviated-Tags could be retrofitted into the existing framework
> without adding tags.d).  This is mostly relevant if one of the proposals
> turn out to be controversial and the other is not - in that case, we can
> move forward with the uncontroversial one.

Good point. I originally implemented them separately but found the
combination more powerful. Please note that either way the use of
directory tags is optional. People can still use the regular 'tags'
file.

> Personally, I feel I understand Abbreviated-Tags good enough that I can
> say I would support it and I would recommend it was made the default for
> new tests (modulo a few minor remarks).
>   On the tags.d layout, I can mostly see where you would like to go but
> it is not clear to me when the test runner will accept vs. fail a test.

The test runner fails if a check being tested did not issue all tags
specified, or if the check issued tags that weren't specified. That
behavior is similar to what happens now, except everything happens on
a per-check basis.

> > New tags.d layout
> > -
>
> General remarks about the text (assuming it is for t/tests/README):
>
>  * I think we should avoid the "New" / "Old" in this document if it is
>an addition to t/tests/README.  The problem with using "new" for
>everything is that in a year it will no longer be new and at some
>point it could even be superseded by a different format/layout as we
>improve ourselves.

Let's cooperate on wording if you are available to give advice, please.

>  * The text sometimes stops being a README document and starts being
>sales-pitch and then jumps back to bei

Bug#886036: Improve changelog version parsing

2018-08-22 Thread Felix Lechner
Hi Chris,

There were two separate errors. Versions with "0" in any component
were not evaluated correctly. (The Perl string "0" is logically false
even though it has non-zero length.) A second problem was that
versions with "+bzr" triggered false positives for
'debian-changelog-version-requires-debian-revision'. That was solved
by restricting binary NMUs (which probably should not appear in source
changelogs anyway) to one or more digits. Both errors were fixed in
this merge request. Thank you!

https://salsa.debian.org/lintian/lintian/merge_requests/20

Best regards,
Felix> found 886036 2.5.97
> thanks
>
> Hi Felix,
>
> >  * checks/source-changelog.{desc.pm}:
> >+ [FL] Rework, centralise and improve version parsing.
> >  (Closes: #886036)
>
> I'm seeing some false-positives here:
>
>   https://lintian.debian.org/tags/malformed-debian-changelog-version.html
>
> Could you take a look?
>
>
> Regards,
>
> --
>   ,''`.
>  : :'  : Chris Lamb
>  `. `'`  la...@debian.org / chris-lamb.co.uk
>`-



Bug#906957: More tests

2018-08-22 Thread Felix Lechner
Thadeu, thank you for reporting, and sorry about the error. Best regards, Felix

Chris,

Would you like me to add Thadeu's test to my merge request? I would
like to add one for the +bzr vs binNMU, as well. Thank you!

Best regards,
Felix



Bug#911355: False negative for 'multi-arch-same-package-has-arch-specific-overrides'

2018-10-18 Thread Felix Lechner
Package: lintian
Version: 2.5.109
Severity: minor
Tags: patch

Hi,

The Lintian test suite identified a potential false negative for the
tag 'multi-arch-same-package-has-arch-specific-overrides' when the
value of the Architecture: field in 'debian/control' does not match
the extension of the lintian-override file. Both fields could be
architecture wildcards. A positive finding should take place when the
latter is a subset of the former.

Attached please find a patch fixing the issue.

To reproduce, please manually change both package architectures in the
test 'fields-multi-arch-same-package-has-arch-specific-overrides' to
Architecture: any (in the file 'debian/debian/control.in'). The tag
'multi-arch-same-package-has-arch-specific-overrides' should
disappear.

To assist the developers, I will also file a merge request on salsa
with a commit message that references the assigned bug number. Thank
you!

Best regards,
Felix


fix-false-negative.patch.xz
Description: application/xz


Bug#913099: Possible triage

2018-11-06 Thread Felix Lechner
Thank you for identifying the offending commit. The error you are
seeing could be caused by the second assignment in:

our $ARCHITECTURE = safe_qx(qw(dpkg-architecture -qDEB_HOST_ARCH));
...
$data->{architecture} = $ARCHITECTURE;

which happened in this commit:

https://salsa.debian.org/lintian/lintian/commit/8d1f6a0a6c3617b168f36cd1389b5ae2b3470d1e#c126e8eff5e7366571c744785275b8864017724f_1068_1067

What is the output of 'dpkg-architecture -qDEB_HOST_ARCH', please, on
the machines the failed architectures were building on? If the value
is 'amd64', you may be able to triage with:

$data->{architecture} = 'any'; (Please don't try 'all', as in the
commit; it won't work.)

Thank you!

Kind regards,
Felix Lechner



Bug#912292: Fixed in master?

2018-11-07 Thread Felix Lechner
Hi,

On Lintian master (which includes the pending commit) and with
default-jdk 2:1.11-70 and javahelper 0.71 installed, I get

tests::java-class-format: diff -u t/tests/java-class-format/tags
/lcl/lechner/lintian/git/debian/test-out/tests/java-class-format/tags.java-class-format
--- t/tests/java-class-format/tags2018-11-05 05:43:01.455447409 -0800
+++ 
/lcl/lechner/lintian/git/debian/test-out/tests/java-class-format/tags.java-class-format
   2018-11-07 07:32:39.427605662 -0800
@@ -1,2 +1,2 @@
-W: libtest-java: incompatible-java-bytecode-format Java12 version
(Class format: 56)
 W: libtest-java: unknown-java-class-version
usr/share/java/testa-1.0.jar (org/debian/lintian/TestA.class -> 42)
+W: libtest-java: unknown-java-class-version
usr/share/java/testb-1.0.jar (org/debian/lintian/TestB.class -> 56)
fail tests::java-class-format: output differs!

If the existing tags are correct, what would a good version
requirement look like for Extra-Build-Depends: in 'desc', please?
Thank you!

Kind regards,
Felix Lechner



Bug#913099: Thank you

2018-11-08 Thread Felix Lechner
Hi,

Thank you for sending the patch. We adopted all your changes except
for the architecture restriction on 'files-multiarch-foreign-files'.
(The issue may not be related to #886163.) Instead, the previous
behavior should be restored with this commit:

https://salsa.debian.org/lintian/lintian/commit/1b886506df601e2235a7ba0b9ab80e5ee0e8889d#756caf68255acd27da6501c989bfd38778f890e0_5_5

Thank you!

Kind regards,
Felix Lechner



Bug#913930: lintian: Potentially false-positive public-upstream-key-unusable upstream/signing-key.asc

2018-11-18 Thread Felix Lechner
Hi Pierre-Elliott,

Looks like the call to 'gpg --list-packets' failed, but I cannot
reproduce the issue. Your report mentioned lintian 2.5.112~bpo9+1 and
stable, while the build log was for lintian 2.5.112 on experimental.
With which release are you working, please? Thank you!

Kind regards,
Felix Lechner



Bug#913930: Confirmed for sbuild only

2018-11-19 Thread Felix Lechner
tags 913930 - moreinfo + confirmed
found 913930 lintian/2.5.112
thanks

Hi, I can reproduce the issue only when using sbuild. I am looking
into the possibility that a dependency is missing inside sbuild.
Meanwhile, I marked the bug as confirmed. Thank you!



Renaming some Lintian test suites

2018-11-19 Thread Felix Lechner
Hi everyone,

I spent some time with Lintian's test suite and would like to propose
a few changes:

1. Rename the suite 'tests' to 'uploads' (which is what is being tested).
2. Rename the suite 'scripts' to 'code' (which is what is being tested).
3. Require an explicit 'Suite:' statement in each test description.

My overall goal is to curate the test set more aggressively. Tests
will be associated more closely with checks by:

A. Allowing tests to be arranged in folders other than
t/$suite/$testname. (For many tests, that could be
t/$check/$testname.)
B. As an option, disregarding tags emitted by unrelated checks. (Patch
set complete but not submitted.)
C. Manually sorting tests by identifying the check they are exercising
(or splitting them when appropriate) and enabling the new option
described under B.

This plan will bring unit testing to Lintian checks. It will also make
it easier to write and maintain tests:

There will be no more nuisance tags from unrelated checks. When
writing new checks you will no longer have to add some of the new tags
to existing tests. Converted tests will more or less automatically
fulfill the README's plea that "Test cases should be as Lintian-clean
as possible except for the tags that they're testing." Perhaps best of
all, the fields Test-For: and Test-Against: will be obsolete. They
will be inferred automatically from the checks being tested.

I will submit merge requests in the next few weeks.

This email is only about enabling step A. Please let me know if you
have any thoughts. Tx!

Kind regards,
Felix Lechner



Re: Renaming some Lintian test suites

2018-11-20 Thread Felix Lechner
On Mon, Nov 19, 2018 at 11:45 PM Chris Lamb  wrote:

> Would that mean we wouldn't have to do the somewhat-ugly
> "$checkname-$tagname"? :)

> An *extremely* common use case for me at least is to run all checks
> for a particular tag.

You can still run all *tests* for a particular tag by prefixing "tag:"
(and thus without worrying about any of the ugliness you mentioned).
The function will be retained. There is, however, a new function to
run all tests for a particular *check*. Over time, you may find that
more useful. It would naturally make you want to split checks into
smaller units. Either way, you can continue to work exactly the way
you have. Tx!



Re: Renaming some Lintian test suites

2018-11-20 Thread Felix Lechner
[I am also on the list]

> That's neat. Does this tie-in at all with the t/scripts/
> implemented-tags.t "tag coverage" test?

My email was only about test selection, i.e. which tests in t/* are
being run (the "onlyrun" option to t/runtests). I am not sure that
intersects with t/scripts/implemented-tags.t, which I think tests that
all tags mentioned in checks/*.desc are also emitted in the
corresponding checks/*.pm.

> Speaking of which, I guess we should also be tracking our line-by-
> line test coverage too?

Are you referring to Perl coverage? I have struggled with it but hope
to implement it going forward. My new runner retains the
functionality, although the present code seems to be slow and
unsuitable for parallel processing. I did not previously work much
with such a low level of testing. Its utility may be eclipsed by my
other plans which would allow, for example, to disable at release time
any Lintian check that does not provide at least one test for each tag
it emits. Tx!



Re: Renaming some Lintian test suites

2018-11-20 Thread Felix Lechner
On Tue, Nov 20, 2018 at 9:06 AM Chris Lamb  wrote:
>
> Felix Lechner wrote:
>
> > other plans which would allow, for example, to disable at release time
> > any Lintian check that does not provide at least one test for each tag
> > it emits.
>
> What is the use-case for disabling checks like this?

Following your blog post [1], which motivated my interest in Lintian,
I would like to encourage more developers to submit checks, but they
must bundle them with working tests. (That is why my mission is to
make testing easier.) Consistent with Lintian's own mission, it seems
appropriate to insist that no untested code runs inside it, and while
there may be better ways to enforce that, it would automatically
ensure that all checks being shipped were tested. Tx!

[1] https://chris-lamb.co.uk/posts/how-write-your-first-lintian-check



Some stats from the test suite

2018-11-20 Thread Felix Lechner
Hi,

I ran some statistics on the test suite. While not fully accurate,
they still show some helpful details.

As far as the test suite is concerned, the following 23 tags appear to
be completely untested. (I realize the archive provides great
validation too.) If you see one of them often, please add a test case:

changelog-file: changelog-distribution-does-not-match-changes-file
changes-file: changed-by-invalid-for-derivative,
checksum-count-mismatch-in-changes-file
control-file: rules-requires-root-implicitly, should-specify-rules-requires-root
cruft: debian-files-list-in-source,
package-uses-deprecated-source-override-location
deb-format: tar-errors-from-control
debhelper: debhelper-compatibility-level-not-a-number
fields: invalid-field-for-derivative,
invalid-version-number-for-derivative,
priority-extra-is-replaced-by-priority-optional
files: package-contains-eslint-config-file,
package-contains-npm-ignore-file,
package-contains-python-hypothesis-example,
udeb-contains-documentation-file
menu-format: menu-item-contains-unknown-tag, menu-item-needs-dwww,
old-format-menu-file, whitespace-after-continuation-character
menus: executable-in-usr-share-docbase, executable-menu-file
po-debconf: invalid-potfiles-in

Also, some checks emit large numbers of tags and should probably be
split into smaller pieces, if possible:

200 files
158 fields
91 scripts
84 cruft
48 changelog-file
45 debhelper
45 menu-format
41 menus
40 shared-libs
39 control-file
39 init.d
38 debconf
38 source-copyright
37 binaries
34 copyright-file
33 rules
29 description
25 changes-file
22 manpages
19 patch-systems
18 systemd
18 testsuite
18 watch-file
15 python
14 apache2
14 java
14 po-debconf

The data files are attached for anyone interested in further research.
Sorry about any errors. Thank you for reading!

Kind regards,
Felix Lechner


checkstats.csv.gz
Description: application/gzip


tagstats.csv.gz
Description: application/gzip


teststats.csv.gz
Description: application/gzip


Bug#914271: lintian: Rationale behind hyphen-in-upstream-part-of-debian-changelog-version

2018-11-21 Thread Felix Lechner
Well, I also agree with Josch's well-articulated argument. A merge
request to remove the tag is pending (!72). Thank you for bringing
this to our attention!



Bug#914271: lintian: Rationale behind hyphen-in-upstream-part-of-debian-changelog-version

2018-11-21 Thread Felix Lechner
> This suggests that you know tools that behave wrongly.

Unfortunately, I cannot help. I remember having issues when
experimenting with less common version numbers, but that may not have
been with dashes. My hope was to build a fence around policy to save a
maintainer from potential headaches (which I saw as a precaution more
than a cure). Since then, many packages have been so tagged, and none
of you have any problems. Turns out no fence was needed. Thank you for
following up!



Bug#856128:

2018-11-23 Thread Felix Lechner
Hi,

The upstream author of CUPS-PDF recently agreed to publish package
signatures for future releases. While I share the sentiment of the
reporting party, the specific point regarding CUPS-PDF may be moot.
Thank you!

Kind regards,
Felix Lechner



Bug#915778: lintian.debian.org: broken git repo link in page footers

2018-12-06 Thread Felix Lechner
Hi Niko,

I saw it too, but thought that was fixed here:

https://salsa.debian.org/lintian/lintian/commit/a716002c5bff418de665aae942ea953e1bfcc715#58d4498662ce139c2b39fc509fdb6fad0cb70ee4_68_68

which is used here:

https://salsa.debian.org/lintian/lintian/blob/master/reporting/templates/foot.tmpl

Maybe the actual website has not been updated?

Kind regards,
Felix


On Thu, Dec 6, 2018 at 10:09 AM Niko Tyni  wrote:

> Package: lintian
> Severity: minor
>
> The footer of web pages at https://lintian.debian.org/ has a broken link
> to the git repo:
>
>   The source code to Lintian is available under the GNU GPL version 2,
>   or (at your option) any later version. It can be downloaded from
>   https://anonscm.debian.org/git/lintian/lintian.git.
>
> This should presumably be https://salsa.debian.org/lintian/lintian.git
> nowadays.
>
> (BTW it would be nice to have the source to the web site available
> so I could have just made an MR or something. Filing a bug against the
> lintian package seems a bit weird for this.)
>
>
> Thanks for your work on lintian, it's invaluable to the whole project.
> --
> Niko Tyni   nt...@debian.org
>
>


Format of test specifications

2018-12-07 Thread Felix Lechner
Hi,

The format for test specifications in 'desc' mixes template fill data
(Package-Architecture:) with test options (Output-Format:) and
constraints (Test-Architectures:). I would like to split it into three
files.

* Please note that all test specifications throughout 't/' would be split. *

There are no tests currently that use all three sections. As a
example, therefore, the default configuration in 't/defaults/desc'
would look something like this:

desc/template-fill:
 Author: Debian Lintian Maintainers 
 Section: devel
 Distribution: unstable
 Type: native
 Source-Format: 1.0
 Package-Architecture: all
 Prev-Date: Mon, 01 Jan 1990 00:00:00 +0100

desc/test-options:
 Skeleton: default
 Post-Template-Command: post_template
 Runner: generic.t
 Builder: builder
 Sequence: 6000
 Profile: debian
 Options: -I -E
 Output-Format: EWI
 Sort: yes
 Todo: no

desc/constraints:
 Test-Architectures: any

I considered and discarded the idea to continue to use one file in a
format with multiple sections. When degrees of freedom are allowed (by
altering the template input) the information ends up in different
places: The template data belongs to a single built package, while
constraints apply to a group of tests around the specification. File
modification times also matter; changing 'Test-Architectures', should
not trigger the rebuilding of packages.

If there are no objections, I will probably file merge requests in a
few weeks. Please let me know what you think!

Kind regards,
Felix



Layout of test data

2018-12-07 Thread Felix Lechner
Hi,

Based on advice from #perl-help, I would like to move some test data
out of 't/'. The latter directory should probably be reserved for Perl
tests (*.t) that are ready to run, such as

t/scripts [to be renamed t/code]
t/harness [internal harness tests not yet merged]

The custom test specifications, templates, skeletons, whitelist,
defaults and helpers would be moved to 'test/'. The purpose is to
separate the preparation of tests from running them. Generated tests
would remain in 'debian/test-out/'.

If there are no objections, I will probably file merge requests in a
few weeks. Please let me know what you think!

Kind regards,
Felix



Re: Format of test specifications

2018-12-07 Thread Felix Lechner
Chris,

On Fri, Dec 7, 2018 at 1:24 PM Chris Lamb  wrote:
>
> Could you elaborate more why? You do mention that changing 'Test-
> Architectures' (for example) should not trigger the rebuilding of
> packages but is that really a big concern? I mean, I throw away
> everything before running any test and it's not excessively slow to do
> so.
>

First of all, it is not urgent. My hope is that the test suite will
eventually permutate through several degrees of freedom. The goal is
to get as many *test cases* out of the test specifications as
possible.

That idea was formed in reaction to commit ccb387b4. There, a problem
arose when a test specification was filled with 'Package-Architecture:
any' while the harness provided 'amd64' (due to a particular
implementation of Test-Architectures). The check should have worked
either way.

Next, please consider that the current defaults for test cases are
package format '1.0 (native)' with 'Package-Architecture: all'. That
is not representative of the archive at all. As you know from my merge
requests, I went on to parametrize many templates. I never submitted
branches changing the default package architecture to 'any', because
they seemed like half-way solutions. The right way is to permutate for
each degree of freedom through all possible values.

When one test specification is turned into many test cases, some data
changes and some does not. The template fill data and the test options
can vary from one test case to another, while the constraints do not.
In fact, the constraints are currently stored up one directory.

The distinction between fill data and test options, on the other hand,
is helpful to avoid confusion. Among other things, it will safely
allow the field Package-Architecture to be renamed back to
Architecture (hoping to address your request here:
https://salsa.debian.org/lintian/lintian/merge_requests/46#note_46510).

As for rebuilding, perhaps I am more time sensitive. I run the full
suite dozens of times a day and would like to bring it down from six
minutes over here to about one (if my experiments hold up). When
adding permutations for package architecture and package format alone
(and there are additional degrees of freedom), the 670~ test
specifications turn into 6000 test cases, or more. Rebuilding is not a
problem with a single test specification or with hand edits, but
rather when such processes are automated.

That being said, I am not set one way or another. Please let's revisit
this proposal when my 'variations' branch is ready for your
consideration.



Bug#916087: lintian: "exec failed: Text file busy" when running tests by tag

2018-12-09 Thread Felix Lechner
This is confirmed. I saw it earlier and thought it was fixed. Will be
back shortly.



Bug#916087: lintian: "exec failed: Text file busy" when running tests by tag

2018-12-09 Thread Felix Lechner
Chris,

> I think your recent commits have introduced a regression in the test
> harness:

I am stumped. If you urgently require the tag functionality (I know
you use it often), please reverse !88 and !82, in that order. I do
have a better fix on the way, however, and would appreciate a day to
make sure it is error-free.



Bug#916087: lintian: "exec failed: Text file busy" when running tests by tag

2018-12-10 Thread Felix Lechner
Chris,

On Sun, Dec 9, 2018 at 1:57 PM Chris Lamb  wrote:

> I think your recent commits have introduced a regression in the test
> harness:

They sure did. (Although they worked fine in my new runner.)

> exec failed: Text file busy at 
> /home/lamby/git/debian/lintian/lintian/lib/Lintian/Command.pm line 274.
>at /home/lamby/git/debian/lintian/lintian/lib/Lintian/Command.pm line 274.
>at t/runtests line 482.

Using plain qx{}, this message turns into "Can't exec
"/lcl/lechner/lintian/git/debian/test-out/tests/scripts-maintainer-general/post_template":
Text file busy at t/runtests line 482."

After substantial investigation (and consultation with #perl-help), I
believe the close function in
`lib/Test/Lintian/Templates.pm::fill_template did not close the
generated file 'post_template'.

https://salsa.debian.org/lintian/lintian/blob/master/lib/Test/Lintian/Templates.pm#L273

When run immediately afterward, the command 'lsof' shows the file
post_template (and other files generated in that function) as open
even after the call to close(). The process ID matched that of the
thread, so no other thread kept it open. ($$ is the number before
COMMAND.)

$ debian/rules runtests onlyrun=tag:uses-dpkg-database-directly
 running tests 
mkdir -p "/lcl/lechner/lintian/git/debian/test-out"
t/runtests -k  t "/lcl/lechner/lintian/git/debian/test-out"
tag:uses-dpkg-database-directly
ENV[PATH]=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Running 3 tests.

error tests::scripts-maintainer-general: 8061: COMMAND
  PIDUSER   FD   TYPE DEVICE SIZE/OFFNODE NAME
Test\x20worker\x20-\x20p 8061 lechner8w   REG  253,0  122
1050553 
/lcl/lechner/lintian/git/debian/test-out/tests/scripts-maintainer-general/post_template

error tests::legacy-maintainer-scripts: 8063: COMMAND
 PIDUSER   FD   TYPE DEVICE SIZE/OFFNODE NAME
Test\x20worker\x20-\x20p 8063 lechner8w   REG  253,0  122
1050557 
/lcl/lechner/lintian/git/debian/test-out/tests/legacy-maintainer-scripts/post_template

pass tests::files-uses-dpkg-database-directly

Failed tests (2)
tests::scripts-maintainer-general
tests::legacy-maintainer-scripts
make: *** [debian/rules:51: runtests] Error 1

A solution was proposed as merge request !89. It reuses skeletons as
suite-based defaults. The watch file is now provided from there. For
more information, please see the commit messages.

The active template idea was scrapped. The current scheme is probably better.

> ie. Only when running tests by tag name, even if it's the same test.

While I also observed this, I was unable to tie the "tag" selector to
the error. I even backported a new test selection mechanism; the error
remained. With a solution pending, the relationship was not
investigated further.

Kind regards,
Felix



Bug#916207: lintian: debian-watch-does-not-check-gpg-signature certainty considered annoying

2018-12-11 Thread Felix Lechner
Hi Scott,

Many people find the tag cumbersome, and some people think it should
go away. At the same time, upstream sources are more trustworthy when
verified; and that is in the project's overall interest. Could your
concern be resolved by better naming?

I process the tag name (it has already been renamed once [1]) as
"debian-watch-does-not-check-A-gpg-signature." Without a signature
that is an objective fact.

On Tue, Dec 11, 2018 at 5:18 AM Scott Kitterman  wrote:
> As designed, debian-watch-does-not-check-gpg-signature does not check if
> upstream provides a GPG signature to make checking it possible.

When I process the name as
"debian-watch-does-not-check-THE-gpg-signature"---which is maybe the
way you are reading it---it means the same as
'debian-watch-could-verify-download' but the tag does not behave like
it.

My suggestion would be to rename the tag to
'built-from-unverified-sources' or similar. What do you think?

> when if there's no upstream signature, it's not at all a problem
> the maintainer can fix.  "Certainty: possible" seems much more reasonable to
> me.

The tag would continue to be of Certainty: certain.

Kind regards,
Felix

[1] 
https://salsa.debian.org/lintian/lintian/commit/0cbebd4ba0b2a067383616e18981eeb9de5d7df2



Bug#916444: lintian: FTBFS on master ("pod2man: unable to format lib/Test/State.pm")

2018-12-14 Thread Felix Lechner
I think it was this commit:

https://salsa.debian.org/lintian/lintian/commit/ea1357ead68e8f2a5b1ce8deb5e98178eb27b812

Please see this MR for a resolution:

https://salsa.debian.org/lintian/lintian/merge_requests/100



Bug#917097: lintian: Build fails with "Can't locate Test/Lintian/Harness.pm in @INC"

2018-12-22 Thread Felix Lechner
Please see merge request !107.


Bug#917752: lintian: FTBFS: tests failed

2018-12-30 Thread Felix Lechner
Chris,

On Sat, Dec 29, 2018 at 3:23 PM Chris Lamb  wrote:

>
> > > +I: changes-upstream-signature-not-missing source:
> public-upstream-key-unusable upstream/signing-key.asc cannot be processed
>
> Felix, not sure your MR/branch handles this one?
>

This looks like #913930. I have only seen it in sbuild, but not otherwise.


> > > -W: debhelper-compat-experimental source:
> package-needs-versioned-debhelper-build-depends 12
>
> I assume it addresses this one in an ongoing/sustainable manner.
>

This tag should no longer be issued. My builder automatically supplies the
correct dependency via:

desc: Dh-Compat-Level: 12
Default-Build-Depends: debhelper (>= {$dh_compat_level}~)

Because I run the test suite often, I am surprised I did not see it until
now. The tag will be removed with this merge request:

https://salsa.debian.org/lintian/lintian/merge_requests/112

> > -W: manpages-general: manpage-has-errors-from-man
> usr/share/man/man1/test.1p.gz 14: warning: macro `dep' not defined
> (possibly missing space after `de')
>
> I don't recall seeing one for these.
>

Like you, I have not seen this one. This test was not changed recently;
neither was the associated check 'manpages.pm'.


Bug#917752: lintian: FTBFS: tests failed

2018-12-30 Thread Felix Lechner
On Sun, Dec 30, 2018 at 3:06 PM Chris Lamb  wrote:
>
> > > +I: changes-upstream-signature-not-missing source:
> > > public-upstream-key-unusable upstream/signing-key.asc cannot be 
> > > processed
> >
> > This looks like #913930. I have only seen it in sbuild, but not otherwise.
>
> Interesting. Well, given that it is causing FTBFS I am raising the
> severity of that and marking as a blocker.

I am looking into this with some urgency.

> > > -W: manpages-general: manpage-has-errors-from-man
> > > usr/share/man/man1/test.1p.gz 14: warning: macro `dep' not defined
> […]
> > Like you, I have not seen this one. This test was not changed recently;
> > neither was the associated check 'manpages.pm'.
>
> Mm, this appears to be caused by the recent groff 1.22.4-1 upload to
> unstable. Cloning, etc.

I think you are right. I upgraded 'groff-base' this morning and then
starting seeing the error.



Bug#917752: lintian: FTBFS: tests failed

2018-12-30 Thread Felix Lechner
On Sun, Dec 30, 2018 at 3:06 PM Chris Lamb  wrote:
>
> > > -W: manpages-general: manpage-has-errors-from-man
> > > usr/share/man/man1/test.1p.gz 14: warning: macro `dep' not defined
> […]
> > Like you, I have not seen this one. This test was not changed recently;
> > neither was the associated check 'manpages.pm'.
>
> Mm, this appears to be caused by the recent groff 1.22.4-1 upload to
> unstable. Cloning, etc.

Please see this merge request for a solution:
https://salsa.debian.org/lintian/lintian/merge_requests/113



Bug#917844: Fixed

2018-12-30 Thread Felix Lechner
Hi,

I did not see the separate report at first and commented on #917752.
For a fix, please see:

https://salsa.debian.org/lintian/lintian/merge_requests/113

Felix Lechner



Bug#913930: Confirmed for sbuild only

2018-12-31 Thread Felix Lechner
Hi Harlan!

On Thu, Dec 27, 2018 at 9:09 PM Harlan Lieberman-Berg
 wrote:
>
> Just as one more datapoint for you, I see the same thing with
> certbot-dns-ovh with lintian 2.5.118 and sbuild 0.77.1-2.

Thank you for writing! Your package builds much faster than lxc. The
problem was fixed in

https://salsa.debian.org/lintian/lintian/merge_requests/114

Kind regards
Felix Lechner



Bug#917752: lintian: FTBFS: tests failed

2018-12-31 Thread Felix Lechner
This bug is fixed. It can be marked as pending when the merge requests
for the two blocking bugs are accepted.



Re: Lots of zombie processes on lindsay/lintian.debian.org

2019-01-03 Thread Felix Lechner
Perhaps this relates to problems I have been having recently with
multi-threading/spawning in Perl. The test runner uses multiple
processes and required modifications such as commit dca6831a and the
resolution to bug #916087 to work properly (or maybe, as it turns out,
not so properly).



Meaning of 'suite' in the Lintian test suites

2019-01-07 Thread Felix Lechner
Hi,

Unless anyone uses the 'suite' paradigm to run tests for *.changes,
*.dsc and *.deb separately, I would like to change the meaning of
'suite' to correspond to the following categories:

code-quality: Currently known as 'scripts'.
lintian-output: All the tests presently in 'changes', 'debs', 'source'
and 'tests'.
harness: A series of forthcoming internal tests.

As an underlying reason, I would like to group most tests by Lintian
check. (There are some exceptions, such as generic-dh-make-2008; other
tests, like runtests-todo, will find a better home in suite 'harness.)
The current layout forces too many tests into the suite 'tests' (which
is also awkwardly named) and makes a meaningful reorganization
impossible. I envision a flexible layout in which test directories are
defined by the presence of a test specification ('desc').

The lost functionality may reappear in the future as an 'onlyrun'
filter for Lintian input files with a particular format. That would
treat the suites 'tests' and 'changes' similarly, as they operate on
the same type of file.

Best regards,
Felix Lechner



Bug#918817: lintian: Returns with exit code of 0 (zero) on failed tests

2019-01-09 Thread Felix Lechner
Please see

https://salsa.debian.org/lintian/lintian/merge_requests/121

although I cannot explain the exit code '2' right now.



Bug#919096: lintian: autopkgtest regression in 2.5.121

2019-01-12 Thread Felix Lechner
Please see:

https://salsa.debian.org/lintian/lintian/merge_requests/126



Bug#919531: lintian: "Could not determine what you meant by: tag:foo"

2019-01-16 Thread Felix Lechner
Please see this MR for a fix:
https://salsa.debian.org/lintian/lintian/merge_requests/129



Bug#920691: lintian gets stuck collecting info after failed objdump-info

2019-01-28 Thread Felix Lechner
I think this is related to Perl update 5.28.1-3. Shortly afterward, I
had the problem raised in #916087, which also showed up with
IO::Async. Files did not close properly. It seemed processes were
spawned differently. Copies of open file descriptors survived in
spawned processes, and I was unable to close files open for writing.
Perhaps the note helps someone.



Bug#920691: lintian gets stuck collecting info after failed objdump-info

2019-01-28 Thread Felix Lechner
Maybe the pending Perl commit 672eb451 will help? Details in #916313.



Bug#921112: Convert Lintian's internal warnings into W: tags

2019-02-01 Thread Felix Lechner
Package: lintian

Some tests check directory transversal issues. Those arise when
control fields contain relative paths. The tests look for Lintian
warnings. They look like this:

warning: tainted [...] package '...', skipping

The warnings are emitted by lib/Lintian/ProcessablePool.pm. While they
are not printed by any Lintian 'check', they should at least look like
'W:' tags. That way they can be processed further by programs scanning
Lintian's output.

The affected tests are:

t/tags/debs/control-field-traversal-4
t/tags/source/control-field-traversal-1
t/tags/source/control-field-traversal-3



Bug#920691: lintian gets stuck collecting info after failed objdump-info

2019-02-05 Thread Felix Lechner
On Mon, Feb 4, 2019 at 5:03 AM Raphael Hertzog  wrote:
> Thanks for the notice, I tried with that version of Perl but the problem I
> reported is still present. So it seems unrelated.

Here is a merge request that seems to fix the issue by reverting:
https://salsa.debian.org/lintian/lintian/merge_requests/139

I am only making it available in case downgrading is not an option.
The merge request should not be accepted. Still looking for the actual
bug.



Bug#920691: lintian gets stuck collecting info after failed objdump-info

2019-02-05 Thread Felix Lechner
On Mon, Feb 4, 2019 at 5:03 AM Raphael Hertzog  wrote:
> Thanks for the notice, I tried with that version of Perl but the problem I
> reported is still present. So it seems unrelated.

This MR fixes the hang here:

https://salsa.debian.org/lintian/lintian/merge_requests/140



Bug#922737: lintian rarely hangs

2019-02-19 Thread Felix Lechner
Hi Helmut,

I have also had this problem since December and hoped no one would
notice. Personally, I think it is related to Perl 5.28.1-3, but I am
not sure.

We also recently added a parallel collection that may have a race
condition. I will look at it in the coming days. Thank you for your
diligence in reporting this.

Kind regards,
Felix Lechner


On Tue, Feb 19, 2019 at 9:15 PM Helmut Grohne  wrote:
>
> Package: lintian
> Version: 2.6.0
> Severity: important
> User: helm...@debian.org
> Usertags: rebootstrap
>
> I use lintian to detect wrongly cross built packages. In this setup,
> lintian is run by sbuild inside the (unstable) schroot after the build.
> I pass "-T
> binary-from-other-architecture,triplet-dir-and-architecture-mismatch" to
> lintian and it all works fine ... most of the time.
>
> In roughly 1/2000 builds, lintian hangs. Now the bad part is that I have
> little details on what is going on here.
>
>  * A process list shows just "lintian" without any command line flags.
>  * lintian has a zombie chiled called "[rm]".
>  * lintian has the following file descriptors:
>+ 0 is /dev/null inherited from the sbuild invocation
>+ 1 and 2 are the same writable pipe (presumably to sbuild)
>+ 3 is /dev/null (inside the schroot) for writing
>+ 4 and 5 are the read and write ends of a pipe
>+ 6 is /usr/share/perl5/Net/DNS/Resolver/Base.pm inside the schroot
>  * It already happend with 2.6.0 and continues to happen with 2.7.0.
>  * Attaching the hanging lintian with strace only yields
>restart_syscall.
>
> Given the 1/2000 builds nature, it takes a while (days) to reproduce.
> I'll leave one such hanging process around for a while in case you have
> ideas on how to debug this.
>
> Helmut
>



Bug#922737: lintian rarely hangs

2019-02-20 Thread Felix Lechner
On Tue, Feb 19, 2019 at 9:15 PM Helmut Grohne  wrote:
>
> In roughly 1/2000 builds, lintian hangs.

I submitted a merge request in hope it will solve your issue:

https://salsa.debian.org/lintian/lintian/merge_requests/154



Bug#903399: Fix makes tag untestable

2019-02-21 Thread Felix Lechner
The fix for this bug makes the tag 'old-python-version-field'
untestable. When the version for old-python equals ancient-python,
there is no way to reach the second block:

if (versions_lte($v, $ancient)) {
tag 'ancient-python-version-field', $field, $v;
} elsif (versions_lte($v, $old)) {
tag 'old-python-version-field', $field, $v;

The tags cannot be combined. They have different severities. I can
fake a test that swaps an actual 'ancient' tag for an 'old' tag, but
it would be a last resort. The test suite has almost full tag
coverage. Can we please find another solution, so that this tag is
testable, too?



Bug#903399: Fix makes tag untestable

2019-02-21 Thread Felix Lechner
On Thu, Feb 21, 2019 at 11:51 AM Chris Lamb  wrote:
>
> Not sure how we can get around this. Have you implemented similar
> things for other tags...?

So far I have not faked a test, but sed will do a great job. Could the
Python minor number differ between the tags?



Bug#903399: Fix makes tag untestable

2019-02-21 Thread Felix Lechner
On Thu, Feb 21, 2019 at 11:51 AM Chris Lamb  wrote:
> Not sure how we can get around this. Have you implemented similar
> things for other tags...?

The best alternative would be for the test to read the the value from
data/python/versions when constructing the test package. That way the
test fails when the value is changed. We can then remove the sed
script. Perhaps the sed script could even check before running if the
versions are the same. Then the whole thing would be on autopilot.



Updating runtime dependencies on lindsay.d.o

2019-02-27 Thread Felix Lechner
Hi,

Following a suggestion from Niels and others, I filed this MR to
update the runtime dependencies on lindsay.d.o:

https://salsa.debian.org/lechner-guest/debian.org/merge_requests/1

Kind regards
Felix



Bug#920763: lintian: orig-tarball-missing-upstream-signature interacts poorly with mode=git,pgpmode=gittag

2019-02-27 Thread Felix Lechner
Hi Daniel,

On Wed, Feb 27, 2019 at 12:03 PM Daniel Kahn Gillmor
 wrote:
>
> I guess if we wanted some version of lintian to be able to check on the
> git tag, we need to have some sort of export (git shallow
> something-or-other?) that could be included in debian/ to recreate a git
> repo that would be sufficient to verify the contents of the files and
> confirm the git signature.

I wrote a Debian tool to create a shipping manifest with file-based
hashes. Would it help to include that at the time of packaging? If the
manifest is signed, we could do away with tarball signatures.

Felix



Bug#923696: lintian: Bad examples in Lintian::Tutorial::TestSuite

2019-03-03 Thread Felix Lechner
Hi Xavier,

On Sun, Mar 3, 2019 at 2:27 PM Xavier Guimard  wrote:

>
> To launch part of the tests, Lintian::Tutorial::Testsuite proposes to
> use either:
>
>   $ debian/rules runtests onlyrun=tag:$tag
>   $ t/bin/runtests --dump-logs -k t debian/test-out tag:$tag
>
> None of these examples work (all test launched or error). Looking at
> source code, I ran with success:
>
>   $ t/bin/runtests --unattended --work-dir=debian/test-out --onlyrun
> tag:$tag t
>
> Same for other examples ($check,...)
>

Thanks for reporting this. I saw your note on #debian-qa, but you were gone
when I got there. I will work on the documentation very soon.

In most cases, you should be able to drop the work-dir and and the test
base 't', like so

t/bin/runtests --onlyrun=tag:$tag

-k will run all selected tests even if the code quality scripts or the
internal harness tests have failed.

--unattended will never prompt for user input, for example to offer to
re-calibrate tests when new tags appeared or some disappeared.


Bug#920763: lintian: orig-tarball-missing-upstream-signature interacts poorly with mode=git,pgpmode=gittag

2019-03-05 Thread Felix Lechner
Hi Daniel,

On Fri, Mar 1, 2019 at 4:12 AM Daniel Kahn Gillmor 
wrote:
>
>
> I think what you're describing takes aim a different problem, so i don't
> think it addresses the underlying concern here.

I believe it solves your problem, just not the way you expect.

As you point out, the current approach of validating different upstream
signature formats is the point of this bug. You list two, but as you note
there could be more:

> At issue in #920763 is our attempt to capture verified *upstream*
> cryptographic signatures.  There are (at least) two common practices for
> such signatures by upstreams across the free software ecosystem:
>
>  a) detached signatures over tarballs
>  b) signed git tags

With source format 3.0 (git) that logic even found a way into the packaging
system. Let's flip it around for a moment: Why not validate upstream
signatures when the package is built?

My shipping manifest offers an "origin statement" to include git or tarball
signatures (even multiple) that tie the original source (in any format) to
the list of file hashes. Signed by a Debian maintainer, the manifest
provides a trust path.

To pick up on Chris's comment, the validation happens when our tools can be
reasonably expected to have network access (or the maintainer has a git
repo nearby).

> aiui, your tool is
> designed to something operated by the debian developer/maintainer.
>

That cannot be an obstacle. You just suggested it earlier in this thread:

I guess if we wanted some version of lintian to be able to check on the
> git tag, we need to have some sort of export (git shallow
> something-or-other?) that could be included in debian/ to recreate a git
> repo that would be sufficient to verify the contents of the files and
> confirm the git signature.
>

Yours were the very words that made me believe I could help. :)

A signed manifest is less complex, more universal, and would likely take up
less space.

As an aside, maintainer involvement is always required when repacking for
DFSG-compliance. A manifest with an origin statement would handle that case
with ease.

> Today, we have pretty decent tooling to handle (a).  we even distribute>
upstream tarball signatures directly when we have them:
> (e.g.
https://mirrors.edge.kernel.org/debian/pool/main/k/knot/knot_2.6.8.orig.tar.xz
> can be verified against the upstream signer's key by fetching
>
https://mirrors.edge.kernel.org/debian/pool/main/k/knot/knot_2.6.8.orig.tar.xz.asc
)
>
> So for (a), we're effectively assembling an archive of all of the
> upstream signatures that we know about, which could be used later for
> verifying provenance of the source code used.
>
> What we don't have is tooling to handle or aggregate such a verifiable
> archive for those upstream signatures that fall under (b).  Do you think
> the tool you're describing would help with that?

I believe my tool covers a) and b) as well as any other past, current, or
future authentication method for upstream sources.

As a side note, the signed manifest could even be the sole item uploaded
for a new version if it also includes a list of URLs where the sources may
be found. Right now, I call it the Light Upload Format.

Kind regards,
Felix


Bug#926334: lintian: Does the SafeSEH check make sense for Mono/.NET DLLs?

2019-04-03 Thread Felix Lechner
Control: tags 926334 moreinfo

On Wed, Apr 3, 2019 at 9:30 AM Hilko Bengen  wrote:
>
> In this
> context, looking for the x86-specific SafeSEH feature does not make much
> sense, does it?

I do not know enough about Mono to say whether your DLLs are
vulnerable to manipulation of the Structured Exception Handler. Why
don't you just override the tag if you are sure?



Bug#926409: lintian: autopkgtest takes very long to finish

2019-04-04 Thread Felix Lechner
On Thu, Apr 4, 2019 at 10:42 AM Chris Lamb  wrote:
>
>  * I'm not sure *how* we can speed up the tests. I mean, they all
>essentially involve building Debian packages with all the usual
>debhelper calls, etc. Speeding *this* up is somewhat out-of-scope
>of this Lintian wishlist issue, alas.
>
> However, perhaps Felix has some input here as he has been doing a lot
> of work on the test suite recently?

About 95% of the time is spent building packages, even though they
almost never change. The tests would run much faster if we shipped
pre-built packages. One way to accomplish that would be to package the
tests separately.



Bug#926409: lintian: autopkgtest takes very long to finish

2019-04-04 Thread Felix Lechner
On Thu, Apr 4, 2019 at 11:24 AM Balint Reczey
 wrote:
>
> One criterion that came to my mind is filtering by severity, including
> errors for sure, but not pedantic ones.

The pedantic setting may become the default for tests, but very little
time is spent running Lintian.

Things may speed up a little if we run only the checks being tested
(using the '-C' option), but that won't make much of a difference in
the overall run time of the tests, which is primarily spent building packages.



Bug#926409: lintian: autopkgtest takes very long to finish

2019-04-04 Thread Felix Lechner
On Thu, Apr 4, 2019 at 12:19 PM Chris Lamb  wrote:

>
> Felix Lechner wrote:
>
> > About 95% of the time is spent building packages, even though they
> > almost never change. The tests would run much faster if we shipped
> > pre-built packages.
>
> Another way to accomplish this could be that we could cache/store them
> across autopkgtest runs? IIRC (at least) Gitlab supports caching stuff
> like this.
>

Upon reflection, each test should be packaged separately. That way I no
longer have to worry about using chroot to build tests with potentially
conflicting build dependencies.


Bug#926823: executable-not-elf-or-script should consider PE binaries

2019-04-10 Thread Felix Lechner
On Wed, Apr 10, 2019 at 2:33 PM Michael Biebl  wrote:
>
> systemd ships EFI binaries which are PE executables.
>
> usr/lib/systemd/boot/efi/linuxia32.efi.stub [amd64, i386]
> usr/lib/systemd/boot/efi/linuxx64.efi.stub [amd64, i386]
> usr/lib/systemd/boot/efi/systemd-bootia32.efi [amd64, i386]
> usr/lib/systemd/boot/efi/systemd-bootx64.efi [amd64, i386]
>
> I wonder whether executable-not-elf-or-script should be made aware of PE
> executables and not warn about them.

Does systemd-boot require the executable bits to be set on these files?



Bug#926823: executable-not-elf-or-script should consider PE binaries

2019-04-10 Thread Felix Lechner
On Wed, Apr 10, 2019 at 4:16 PM Michael Biebl  wrote:
>
> Those bits are set by ld respectively objcopy when the binaries are
> generated. Are you implying that ld/objcopy should not do that?

No, you may well need it. It's just that the lintian tag is not
triggered when the bit is off.



Bug#929430: marked as pending in lintian

2019-05-24 Thread Felix Lechner
My apologies for the remarks about Ubuntu. I introduced this error
with commit 546c0d36. With some luck, it will be fixed with this merge
request: https://salsa.debian.org/lintian/lintian/merge_requests/203



Bug#930487: lintian: speed up test suite CI

2019-06-13 Thread Felix Lechner
On Thu, Jun 13, 2019 at 8:51 AM Dmitry Bogatov  wrote:
>
> It would be great to ... avoid rebuiling package at every job run.

I would be nice to see how other projects deal with this issue. There
is some support for uploading the test packages separately. [1]

For Lintian, however, I would prefer to upload the test packages
separately to Debian's regular build infrastructure. The test packages
can and do have conflicting build dependencies and architectures.
These conflicts are not addressed currently, and may require separate
chroot build environments. It would be difficult to implement even in
a single bulk package. Debian's infrastructure, on the other hand, is
designed to build the packages.

At the same time, separate uploads would place an undue burden on the
archive's namespace and on the NEW queue. There would also be delays
for new tags, as Lintian may at some point require that tags are
tested. All test packages would have to be in the archive before the
lintian source is uploaded.

Right now, my favorite solution would be for the archive to offer
dependent namespaces for source packages (such as lintian/...). Such
internal packages could be uploaded separately and would not have to
go through the NEW queue. Outside packages could not depend on them,
but they would be installed if their source package requires them.

This idea will likely generate much opposition. Let me just say that I
am not sure my suggestion is worth the effort, or useful for anyone
else.

Kind regards,
Felix

[1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=926409#42



Bug#930487: lintian: speed up test suite CI

2019-06-17 Thread Felix Lechner
On Mon, Jun 17, 2019 at 4:03 PM Chris Lamb  wrote:
>
> Chris Lamb wrote:
>
> The naïve solution here might be to save & restore debian/test-out
> between runs.

I do not think that will work for very long, although there is a
better chance if we separate the expected tags from the artifact
directory. (The expected tags change relatively often a new checks are
implemented or old ones are tweaked.)

>
> There's currently no magical command in the
> fancy test runner of yours that will rebuild any missing or otherwise
> changed test packages is there…?

We used filesystem timestamps for a while, but the standard resolution
(1 sec) was not granular enough. AFAIR, we now generate everything
every time. We instead split the generation of test packages from the
test runs, although they currently just run consecutively. We could
probably skip the generation of test packages if they are already
present and nothing in t/ has changed.

> In other
> words, are we barking up the wrong tree here and what we need to do is
> use different GitLab CI stage altogether and pass "artifacts" around
> instead?
>
>   https://docs.gitlab.com/ee/ci/caching/index.html#cache-vs-artifacts

Artifacts may work, but uploading them separately without a dependency
scheme seems to invite other problems. Also, your local build
architecture and environment—which may figure into the artifacts you
upload—may not match what the the runner needs. (I am thinking about
stable or ubuntu-devel.)



Bug#930679: Please add overridable tag for not using dh sequencer

2019-06-18 Thread Felix Lechner
On Tue, Jun 18, 2019 at 8:00 AM Chris Lamb  wrote:
>
> tags 930679 + moreinfo
> thanks
>
> Sam Hartman wrote:
>
> > It would be even better to detect some of the adequate justifications
> > automatically like  Haskell packages.

I think Sam meant that some circumstances should always prevent the
issuance of the tag, so developers are not burdened with the override.
Apparently, Haskell packages do not use dh but cabal. [1]

[1] 
https://wiki.debian.org/Haskell/CollabMaint/GettingStarted#Debianize_the_Sources



Bug#930487: lintian: speed up test suite CI

2019-07-04 Thread Felix Lechner
Hi Dmitry,

On Thu, Jul 4, 2019 at 10:41 AM Dmitry Bogatov  wrote:
>
> It feels that build system for test suite is overconstrained now
> (rebuilds more then necessary), and I consider to make some experiments
> with Shake[1]. Should the experiments succeed, will they be accepted?

The large majority of test packages is built using
'dpkg-buildpackage'. Do you plan to rewrite it?

I looked into using golang for the test suite but, for the things we
are doing, Perl is quite fast. It's also mature and available
everywhere. How does Shake compare?

Kind regards,
Felix



Bug#930487: lintian: speed up test suite CI

2019-07-04 Thread Felix Lechner
Hi Chris,

On Thu, Jul 4, 2019 at 12:31 PM Chris Lamb  wrote:
>
> I'm very much in favour of us exhausting all caching opportunies, both
> on our CI system and locally,

Would it help to separate the build product for each test package,
which will presumably be cached, from the test output (tags.actual,
tagdiff and friends)?

Kind regards
Felix



Bug#924449: lintian: Periodic "out of disk space" errors from lindsay.d.o

2019-07-05 Thread Felix Lechner
Hi François,

On Fri, Jul 5, 2019 at 2:03 AM Francois Gouget  wrote:
>
> I'm also running into "out of disk space" errors caused by Lintian.
> These happen when I check a 240 MB package

Would you please provide a link to this package?

Kind regards
Felix



Bug#929729: lintian: \n in filenames cause "md5sum: ...: No such file or directory"

2019-07-06 Thread Felix Lechner
Hi Chris,

On Sat, Jul 6, 2019 at 7:21 PM Chris Lamb  wrote:
>
> The following "fixes" it:
>
> diff --git a/collection/md5sums b/collection/md5sums
> index 970eb0656..e8006ab10 100755
> --- a/collection/md5sums
> +++ b/collection/md5sums
> @@ -53,7 +53,8 @@ sub collect {
>
>  foreach my $file ($info->sorted_index) {
>  next unless $file->is_file;
> +$file =~ s,\\n,\n,g;
>  printf {$opts{pipe_in}} "%s\0", $file;
>  }
>
>  close($opts{pipe_in});
> diff --git a/lib/Lintian/Path.pm b/lib/Lintian/Path.pm
> index 108a18ede..fb8048ed5 100644
> --- a/lib/Lintian/Path.pm
> +++ b/lib/Lintian/Path.pm
> @@ -643,6 +643,7 @@ sub open {
>  $layer //= '';
>  my $opener = sub {
>  use autodie qw(open);
> +$_[0] =~ s,\\n,\n,g;
>  open(my $fd, "<${layer}", $_[0]);
>  return $fd;
>  };
>
> … but this is clearly hacking around the problem and is likely
> incomplete. Storing the newline literally in the internal structure
> breaks other things that I can't immediately see/fix.

I agree. I rewrote the collections using IO::Async (coming once buster
is out) and can look at the newline issue over the next few days, if
you are okay with that.

Kind regards,
Felix



Bug#930487: lintian: speed up test suite CI

2019-07-07 Thread Felix Lechner
Hi Dmitry,

On Sat, Jul 6, 2019 at 11:27 PM Dmitry Bogatov  wrote:
>
> > I think the most common use-case is that I make some change — possibly
> > extremely minor — in, say, checks/foo.pm and I want to re-run the
> > testsuite to check that I've fixed whatever false-positive or edge-case
> > in a tag that I am in the process of implementing. We should optimise
> > for kind of pattern. What do you think?

In that scenario, I usually restrict the run with
"--onlyrun=check:manpages" (after editing checks/manpages.pm). You can
also use the selectors 'test:' or 'tag:'.

> Ideally, I want test suite automatically detect:
>
>  * test directory edited, test.deb needs to be rebuilt
>  + I do not want re-run perl-critic and perltidy checks aganist files,
>that were not changed

I have not found a way to implement that. An incremental builder I
wrote based on file modification times (in
lib/Test/StagedFileProducer.pm) cannot tell the difference between two
files that were built within one second of another. That is the
granularity of Linux filesystems. The templating mechanism relies on
many intermediate build products. There should be a way to rebuild a
test case if any of the inputs have changed, but I haven't found it.
Patches are welcome.

> In short, I want test suite to be dependable build system from source
> files and test files into tarball of test logs. (~950 files or so)

I think it's more or less dependable. Our issue is speed.

You can find logs for each test case in ./debian/test-out/.../log.

> Right now it feels like build system written in Make -- undercontrained
> in one cases (you can easily get stalled results), overconstrained in
> another cases (you build more then necessary -- perlcritic tests, for
> example).

I think the test suite builds exactly what is necessary. It just takes
a long time. :)

Perlcritic (or more often perltidy) is something we impose on
ourselves. There are maddening moments, particularly when the software
corrects itself, but on balance I am in favor.

> To get feeling what is perfect (in sense of dependencies correctness)
> build system, take a look at `tup'[1]. Read the tutorial, it is worthy
> reading.

How does 'tup' deal with the timestamp granularity? Is that solved
with a 'directed acyclic graph (DAG)'?

> That is why I talk about Shake -- it is more complicated, compared to
> tup, but it supports dynamic (monadic) rules, so previous example with
> `foo.tar' is basic example of Shake.

Perl is a generalized programming language (and Debian runs on it).
Everyone can contribute. I think the best path forward is to try
caching, as Chris suggested. If that does not work, we should consider
building the test packages separately.

Thank you for your interest in the Lintian test suite. The long build
times bother many people. I would very much like to reduce them.



Bug#931632: lintian: Testsuite hangs in/around "debian/test-out/tags/checks/version-substvars/legacy-etcfiles"

2019-07-08 Thread Felix Lechner
Hi Chris,

On Mon, Jul 8, 2019 at 8:10 AM Chris Lamb  wrote:
>
> Nothing immediately jumps out but I have attached it in case you see
> something.

At first glance, that build looks fine. Are you sure parallel building
is off? If you are in a hurry, you could replace PAR_ARGS with '-j 1'

after these two lines in d/rules:

@echo  building test packages 
t/bin/build-test-packages \

to find the offending test (and log). It seems dpkg-buildpackage or
friends have changed, or they return different error codes.



Bug#931632: lintian: Testsuite hangs in/around "debian/test-out/tags/checks/version-substvars/legacy-etcfiles"

2019-07-08 Thread Felix Lechner
Hi Chris,

On Mon, Jul 8, 2019 at 7:06 AM Chris Lamb  wrote:
>
> Any ideas?

Just off the cuff: Do you see anything interesting in
./debian/test-out/tags/checks/version-substvars/legacy-etcfiles/log?

> This is blocking me from doing an "interesting" upload
> hence setting severity to important and X-Debbugs-CCing you directly.

You are always welcome to copy me directly.



Bug#929729: lintian: \n in filenames cause "md5sum: ...: No such file or directory"

2019-07-08 Thread Felix Lechner
On Sun, Jul 7, 2019 at 7:33 AM Chris Lamb  wrote:
>

After a cursory review of filename handling in Lintian's index files I
can think of three possible solutions:

1. Use String::Escape in both directions to make sure the
transformation is reversible. (It currently isn't.)
2. Use Base64 to encode file names in the index.
3. Use an embedded DB such as SQLite in collections.

I am happy to contribute patches if we can agree on a way forward.

> Sure thing. (I wonder whether we should also check for (at least) \t
> and possibly even *invalid* unicode characters; those are a great way
> to make programs blow up.)

Since filenames are arbitrary byte sequences that serve as valid
identifiers in the file system, I am not sure it makes sense to impose
UTF-8 validation in Lintian.



Bug#929729: lintian: \n in filenames cause "md5sum: ...: No such file or directory"

2019-07-08 Thread Felix Lechner
Hi Chris,

On Mon, Jul 8, 2019 at 12:42 PM Chris Lamb  wrote:
>
> Do we need any of these techniques? Can we decree that the index files
> are escaped or unescaped (I'd be +1 on the latter, mind)

The index files seem to be inspired by the 't' option in tar. My sense
is that we need more encoding rather than less to preserve the meaning
of whitespace, and especially newlines, in those files. I do not think
we can leave the filenames unescaped, if that is what you are
suggesting.

> and then
> adjust all the consumer/producers of that data to reflect that? The
> current situation as I understand it is that some assume the former,
> some the latter.

I believe there is only one of each. Please let me know if you found others.

This is the producer:

https://salsa.debian.org/lintian/lintian/blob/master/collection/unpacked#L96-100

and this is the consumer:

https://salsa.debian.org/lintian/lintian/blob/master/lib/Lintian/Collect/Package.pm#L518

which uses the subroutine 'dequote_name' from here:

https://salsa.debian.org/lintian/lintian/blob/master/lib/Lintian/Util.pm#L775-795



Bug#929729: lintian: \n in filenames cause "md5sum: ...: No such file or directory"

2019-07-08 Thread Felix Lechner
Hi Russ,

On Mon, Jul 8, 2019 at 12:50 PM Russ Allbery  wrote:
>
> Policy 10.10:

Thank you for the pointer to policy.

> The name of the files installed by binary packages in the system PATH
> (namely /bin, /sbin, /usr/bin, /usr/sbin and /usr/games) must be
> encoded in ASCII.

That policy appears to be enforced by checks/files.pm. It reads like
the description for the tag 'file-name-in-PATH-is-not-ASCII'.

> The name of the files and directories installed by binary packages
> outside the system PATH must be encoded in UTF-8 and should be
> restricted to ASCII when it is possible to do so.

And that reads like the tag 'file-name-is-not-valid-UTF-8'.

Kind regards
Felix



Bug#929729: lintian: \n in filenames cause "md5sum: ...: No such file or directory"

2019-07-08 Thread Felix Lechner
On Mon, Jul 8, 2019 at 2:35 PM Russ Allbery  wrote:
>
> I see that what you're
> trying to do is get the data deep enough into Lintian so that you can
> issue appropriate tags, and the problem is with the data representation in
> advance of tag processing, for which this isn't super-relevant.

The policy reference was very helpful. Thank you.



Bug#931632: lintian: Testsuite hangs in/around "debian/test-out/tags/checks/version-substvars/legacy-etcfiles"

2019-07-08 Thread Felix Lechner
On Mon, Jul 8, 2019 at 7:06 AM Chris Lamb  wrote:
>
> I can't seem to get the build
> process to complete in the testsuite:

I am unable to reproduce this error using schroot and
'DEB_BUILD_OPTIONS=parallel=1 debuild'.

Looking at your log, however, I did see this:

Runner died for debian/test-out/tags/checks/binaries/binaries-general:
cd debian/test-out/tags/checks/binaries/binaries-general; make --trace
DEFAULT_DH_COMPAT=12 failed at t/bin/build-test-packages line 375. at
t/bin/build-test-packages line 318.

Will you please post debian/test-out/tags/checks/binaries/binaries-general/log?

Kind regards
Felix



Bug#931632: lintian: Testsuite hangs in/around "debian/test-out/tags/checks/version-substvars/legacy-etcfiles"

2019-07-09 Thread Felix Lechner
Hi Chris,

On Mon, Jul 8, 2019 at 6:46 PM Chris Lamb  wrote:
>
> (dh_dwz related...)

The build is controlled by a Makefile. To debug, please change into
./debian/test-out/tags/checks/binaries/binaries-general and issue
'make'.

Kind regards,
Felix



Bug#931632: lintian: Testsuite hangs in/around "debian/test-out/tags/checks/version-substvars/legacy-etcfiles"

2019-07-09 Thread Felix Lechner
Also, can this bug be reassigned or closed?



Bug#931632: lintian: Testsuite hangs in/around "debian/test-out/tags/checks/version-substvars/legacy-etcfiles"

2019-07-09 Thread Felix Lechner
Please take a look at the following commit. It solved a similar issue in
two other tests. Perhaps you find it helpful.

https://salsa.debian.org/lintian/lintian/commit/d1d7acdb7ee124b6f59def18e5cfae9cd7e3592d


On Tue, Jul 9, 2019 at 12:59 PM Chris Lamb  wrote:

> Hi Felix,
>
> > Also, can this bug be reassigned or closed?
>
> I'm a bit lost. Reassigned? Or closed? Did you mean to send this to
> this particular bug?
>
> I mean, I am still in the process of debugging this (actual) issue as
> per your instructions here:
>
>   https://bugs.debian.org/931632#40
>
> (Update soon...)
>
>
> Regards,
>
> --
>   ,''`.
>  : :'  : Chris Lamb
>  `. `'`  la...@debian.org 🍥 chris-lamb.co.uk
>`-
>


Bug#931632: lintian: Testsuite hangs in/around "debian/test-out/tags/checks/version-substvars/legacy-etcfiles"

2019-07-09 Thread Felix Lechner
Also, should this bug be retitled?



Bug#931846: lintian: False positive debian-watch-file-should-mangle-version

2019-07-11 Thread Felix Lechner
Hi Mark,

On Thu, Jul 11, 2019 at 3:09 AM Mark Hindley  wrote:
>
> I think lintian should differentiate between 'debian' in the upstream version
> (before the hyphen) and the packaging version (after the hyphen).

Thank you for reporting the issue. This MR should fix it:

https://salsa.debian.org/lintian/lintian/merge_requests/211

Kind regards
Felix



Dealing with Lintian tags untestable using standard Debian packaging tools

2019-07-13 Thread Felix Lechner
Hi,

Ideally, the Lintian test suite would test all tags. I would actually
like to require it. We are doing quite well. 16 tags are currently
untested out of 1,394. You can see a list below.

Unfortunately some tags are hard to test. Debian's standard tools will
not create packages that trigger them. Instead, they produce error
messages such as:

dpkg-source: error: source package format '3.0 (unknown-format)' is invalid

or

dpkg-source: error: syntax error in
control-file-duplicate-field-1/debian/control at line 11: duplicate
field Depends found.

I would like to remove these tags. They currently are:

unknown-source-format
syntax-error-in-control-file
syntax-error-in-debian-tests-control
debian-tests-control-is-not-a-regular-file
missing-runtime-tests-field

These five tags are part of the old suite 'source', which uses
low-level programs such as 'ar', 'cat', 'sed', or 'awk' to trigger
them. I would like all tests for source packages to use standard tools
such as 'dpkg-source'. (9 out of 27 already do, and many others are
done.) That will make the five tags above untestable. I would like to
delete them. Lintian may still raise exceptions.

I would also like to remove the tag
'malformed-debian-changelog-version'. It has never been testable using
'dpkg-buildpackage'. Lintian will produce another type of error.

Please share your thoughts!

Kind regards,
Felix Lechner

* * *

# Untested tag: bin-sbin-mismatch
# Untested tag: changed-by-invalid-for-derivative
# Untested tag: debian-files-list-in-source
# Untested tag: directory-in-etc-sv-directory-without-executable-run-script
# Untested tag: invalid-field-for-derivative
# Untested tag: invalid-version-number-for-derivative
# Untested tag: malformed-debian-changelog-version
# Untested tag: old-python-version-field
# Untested tag: package-supports-alternative-init-but-no-init.d-script
# Untested tag: package-uses-deprecated-source-override-location
# Untested tag: patch-system
# Untested tag: script-uses-unversioned-python-in-shebang
# Untested tag: tar-errors-from-control
# Untested tag: vcs
# Untested tag: vcs-uri



Detection of native packages

2019-07-15 Thread Felix Lechner
Hi,

Detecting native binary packages [1] does not work nearly as well as
for source packages [2]. In the Lintian test suite, we see
discrepancies in the same *.changes files [3]. For that reason, I will
soon propose to move all tags that depend on the detection from
'binary' to 'source'.

In practice, that means moving many tags from the check
'changelog-file' to 'source-changelog'. (The check 'fields' may be
split up.) The reclassification of tags as source vs. binary will
cause ripple effects, such as the adjustment of expected tags in the
test suite and potentially the greater ecosystem via overrides.

The detection of native binary packages [1] will be removed.

When both source and binary packages are present, Lintian may in the
future check that changelogs in binary packages are identical to the
source. Thank you to pabs for that idea.

Please share your thoughts.

Kind regards
Felix Lechner

[1] 
https://salsa.debian.org/lintian/lintian/blob/master/lib/Lintian/Collect/Binary.pm#L89-119
[2] 
https://salsa.debian.org/lintian/lintian/blob/master/lib/Lintian/Collect/Source.pm#L146-189
[3] An example are the legacy-maintainer-scripts family of tests; they
use a native template but an erroneous, non-native looking version.
The historical changelog versions, starting at '6.1' are parsed as
non-native, causing faulty Lintian results.



Bug#930487: lintian: use GitLab caching of test packages to speed up test suite CI

2019-07-20 Thread Felix Lechner
Hi Chris,

On Sat, Jul 20, 2019 at 1:33 PM Chris Lamb  wrote:
>
> I've been hacking on this on a Salsa-local fork of Lintian that splits
> the generation of the test packages and the testing itself, crucially
> caching the result of the former if the tests and some other key files
> have not changed.

How do you tell when files have changed? I would like to use an MD5
manifest of all files generated after templating. That will also catch
changes in defaults and templates---even missing files.

Eventually, the expected tags (or output, if applicable) should be
excluded from that manifest, as should those portions of each 'desc'
file that apply only to lintian invocation (i.e. Profile,
Output-Format) or runner behavior (i.e. Match-Strategy,
Test-Architectures). This will require a splitting of all 'desc' files
in the test directories. Also, the specifications for test packages
should then be moved into dedicated directories in each test, named
'$test/test-object' or similar.

Kind regards,
Felix



Bug#930487: lintian: use GitLab caching of test packages to speed up test suite CI

2019-07-20 Thread Felix Lechner
On Sat, Jul 20, 2019 at 2:02 PM Felix Lechner
 wrote:
>
> This will require a splitting of all 'desc' files
> in the test directories.

Actually, since the values from 'desc' are incorporated in the
completed templates, all 'desc' files can be excluded from the
manifest as well. No splitting is necessary.

Kind regards,
Felix



Bug#930487: lintian: use GitLab caching of test packages to speed up test suite CI

2019-07-21 Thread Felix Lechner
Hi,

On Sun, Jul 21, 2019 at 6:28 AM Chris Lamb  wrote:
>
> Felix Lechner wrote:
>
>  $ find t/ debian/ -type f | sort | xargs sha1sum | sha1sum | cut -d' ' -f1

That's the same approach I suggested, except I would save the result of

   find t/ debian/ -type f | sort | xargs sha1sum

and do so on a per-test basis. Then t/bin/runtest can rebuild the test
packages adaptively.

Please remember, contributors currently cannot run tests with
'--onlyrun=check:XXX' when they add or change a tag, except after the
time-consuming 'rm -rf debian/test-out; t/bin/build-test-packages'.
(It was much faster until I separated the building of test packages.)
The adaptive rebuilding would be super helpful even without caching on
Salsa.

> .. throwing the entire set of build packages away in the case of cache
> miss.

I did not suggest by-package caching on Salsa. I would write the test
packages in to a different directory tree in d/test-out and only cache
that.

For example, I would write the filled templates to d/test-out/src.
Only this tree needs to be hashed. During building, I would then write
the test packages to d/test-out/built. Only that tree needs to be
cached.

> Anyway, without the Salsa caching working, all of this is moot.
>

One small step for a man; one big step for mankind. :)



Bug#930487: lintian: use GitLab caching of test packages to speed up test suite CI

2019-07-21 Thread Felix Lechner
Hi

On Sun, Jul 21, 2019 at 6:28 AM Chris Lamb  wrote:
>
> I am very much disposed towards simple and braindead obvious in things
> like this, especially when they hit 90% of the use-case. And then we
> can get back to other stuff...

I realized we are talking about related but different things. Please
look out for a merge request on the topics that go beyond the scope of
this bug.



Re: Dealing with Lintian tags untestable using standard Debian packaging tools

2019-07-23 Thread Felix Lechner
Hi Chris,

On Thu, Jul 18, 2019 at 12:00 PM Chris Lamb  wrote:
>
> > missing-runtime-tests-field
>
> I'm surprised we can't check this one though; it is referring to the
> autopkgtest control file, not the debian/control file, and thus
> shouldn't cause dpkg-source to croak.

Sorry I did not get back to you before filing !225 [1], which removed
this tag. I had been unsuccessful in testing it [2], and did not see
it emitted for any packages on lindsay. Please let's add this tag
again if anyone can trigger it using standard tools.

I was somewhat more casual when removing
'syntax-error-in-debian-tests-control'. While I was unable to trigger
the tag with common syntax violations [4], it is actually emitted in
two packages [5] for which all of d/tests/control is completely
commented out. [6] [7] For those two packages, Lintian will now croak.
To avoid that, I will soon file a merge request to reinstate the tag.
My favorite solution, however, would be to test for the fully
commented, i.e empty, condition in 'dpkg-source'. Perhaps we could
also rename the tag.

Kind regards,
Felix

[1] https://salsa.debian.org/lintian/lintian/merge_requests/225
[2] 
https://salsa.debian.org/lintian/lintian/commit/ff6a5fef762146027dfa295f73503476fe76535f
(error message from dpkg-source included)
[3] https://lintian.debian.org/tags/missing-runtime-tests-field.html
[4] 
https://salsa.debian.org/lintian/lintian/commit/4f019cb2c1d754cdcb1c601f34b85d5015b2d90d
(error message from dpkg-source included)
[5] https://lintian.debian.org/tags/syntax-error-in-debian-tests-control.html
[6] https://sources.debian.org/src/freeipa/4.7.2-3/debian/tests/control/
[7] https://sources.debian.org/src/kiten/4:17.08.3-1/debian/tests/control/



Bug#933134: lintian: depends on libparse-debianchangelog-perl that has no upstream maintainer

2019-07-28 Thread Felix Lechner
Hi intrigeri,

On Fri, Jul 26, 2019 at 1:45 PM  wrote:
>
> lintian depends, or build-depends, on libparse-debianchangelog-perl,
> which has had no upstream maintainer since 2011.

After you filed this bug I migrated Lintian away from that library.
With some luck, it will be in master soon---and well before the
bullseye freeze.

> see https://bugs.debian.org/933128, where we can discuss our options.

Our solution does not presently use Dpkg::Changelog::Debian. If it
continues to work well, I will post a reference to it on your main
bug.

Kind regards
Felix Lechner



Bug#933134: lintian: depends on libparse-debianchangelog-perl that has no upstream maintainer

2019-07-30 Thread Felix Lechner
Hi Chris,
.
On Tue, Jul 30, 2019 at 5:46 AM Chris Lamb  wrote:
>
> is in a local branch or
> perhaps did this change get lost somewhere?

You don't have it yet. It works, but I am contemplating better
parsing, possibly using Parser::MGC, and changes to the API. Coming in
the next few days.

Kind regards,
Felix



Bug#930487: lintian: use GitLab caching of test packages to speed up test suite CI

2019-07-30 Thread Felix Lechner
Hi Chris,

On Sat, Jul 20, 2019 at 1:33 PM Chris Lamb  wrote:
>
> I've been hacking on this on a Salsa-local fork of Lintian that splits
> the generation of the test packages and the testing itself, crucially
> caching the result of the former if the tests and some other key files
> have not changed.

Will it also force an update of the test packages when the build chain
has changed? It may expose Lintian bugs like #932339.

Kind regards,
Felix



Bug#933134: lintian: depends on libparse-debianchangelog-perl that has no upstream maintainer

2019-07-30 Thread Felix Lechner
Hi intrigeri,

On Tue, Jul 30, 2019 at 6:16 AM intrigeri  wrote:
>
> I have WIP locally that also migrates Lintian away from
> Parse::DebianChangelog. I did not finish it yet but if it helps,
> I could push my current branch somewhere.

I knew Lintian would be high on your list and got to work immediately:

https://salsa.debian.org/lintian/lintian/merge_requests/234

I plan more improvements and will share them when appropriate. We
could also cooperate on making a new library available to others.

Kind regards,
Felix Lechner



Bug#933134: lintian: depends on libparse-debianchangelog-perl that has no upstream maintainer

2019-07-31 Thread Felix Lechner
Hi,

On Wed, Jul 31, 2019 at 8:29 AM intrigeri  wrote:
>
>I've pushed my current WIP to
>https://salsa.debian.org/intrigeri/lintian/tree/bug933134.
>I'm not sure if/when I'll be able to resume work on it,
>so please don't block on me.

Thank you. I will start with your code when we decide to go with
Dpkg::Changelog::Debian.

>  - Your MR introduces yet another debian/changelog parser.
>
> Given the trouble we had with keeping Parse::DebianChangelog somewhat
> working and up-to-date so far, I would argue that relying on existing,
> well-maintained Dpkg::* code, is a safer approach on the long term.

Having converted the Lintian test suite from a custom approach to
TAP::Parser, I share your sentiment about using established, and
tested, third-party packages. I am more tolerant, however, when
duplicating efforts related to Debian---such as analyzing the
changelog. Lintian is supposed to be an independent critic, and there
is a value to, well, being independent.

The changelog parser is also a relatively small piece of code.

A more significant issue is that Dpkg::Changelog::Debian may not offer
the kind of data structures I hope to offer to writers of Lintian
checks. At least, I felt that way when implementing centralized
version parsing as part of the $info data structure for source
packages (MR in preparation) pursuant to this message:

https://lists.debian.org/debian-lint-maint/2019/07/msg00141.html

and based on this code:

https://salsa.debian.org/lintian/lintian/blob/master/checks/source-changelog.pm#L28-84

If it helps us with a decision, I could submit that MR first. Or,
Chris could accept my merge request !234 for now. We could look at
alternatives later. That would immediately resolve #933134, which
prevents the removal of libparse-debianchangelog-perl. (From your bug
filing, it sounded like a priority for the Perl team.) Lintian would
be off no worse than before: We have an old parser that does not use
Dpkg::Changelog::Debian. :)

This last course of action is my favorite. I have so many changes in
the pipeline, it would be far easier for me to adapt Lintian to
Dpkg::Changelog::Debian later than to rebase my branches. I promise to
undertake the integration work, if necessary. Would that be agreeable
to you?

> But it requires more initial work because the API differs slightly,
> and more importantly, the Dpkg::Changelog::Debian parser is stricter,
> so we lose some granularity wrt. error reporting (some syntax errors
> Lintian would previously catch itself later on are now reported as
> syntax errors, as soon as we parse the changelog file).

I am not worried about the amount of work, but about its outcome: As
you acknowledge, Dpkg::Changelog::Debian's lack of granularity may
make it harder to implement distinct tags. That results less detailed
advice on how to improve packages, and is less customer-friendly.

Kind regards,
Felix



Bug#933134: lintian: depends on libparse-debianchangelog-perl that has no upstream maintainer

2019-07-31 Thread Felix Lechner
Hi intrigeri,

On Wed, Jul 31, 2019 at 8:29 AM intrigeri  wrote:
>
>I've pushed my current WIP to
>https://salsa.debian.org/intrigeri/lintian/tree/bug933134.

Your branch is now in my repo at
https://salsa.debian.org/lechner-guest/lintian/tree/bug933134.

>I'm not sure if/when I'll be able to resume work on it,
>so please don't block on me.

Please delete your copy when you do not need it anymore.

Kind regards,
Felix



Bug#873520: Check for bad distribution in d/changelog only when changes file is signed

2019-08-04 Thread Felix Lechner
Hi,

> However, ... this would mean that every time you built a package
> locally as part of regular development it would emit this tag.

Would it be acceptable to generate the tag for bad distribution in
d/changelog only when the *.changes file is signed (if it is present)?
That should bypass interim packages produced locally but catch those
intended for upload.

Kind regards,
Felix



Bug#933925: Misspelling in Lintian UDD table

2019-08-04 Thread Felix Lechner
Package: lintian
Severity: minor

This bug probably belongs elsewhere, but I could not find a better place.

In the Lintian table in the UDD, the 'tag_type' for overridden tags is
misspelled as 'overriden'.

udd=> select package, tag_type, tag, information from public.lintian where
tag='spelling-error-in-readme-debian' and tag_type='overriden' and
information not like '%(duplicate word)%';
 package  | tag_type  |   tag   |
information
--+---+-+--
 liblorene-dev| overriden | spelling-error-in-readme-debian | Langage
Language
 liblorene-dev| overriden | spelling-error-in-readme-debian | Langage
Language
 lorene-codes-src | overriden | spelling-error-in-readme-debian | Langage
Language
(3 rows)


Bug#926823: executable-not-elf-or-script should consider PE binaries

2019-08-05 Thread Felix Lechner
Hi,

On Thu, May 2, 2019 at 9:27 AM Chris Lamb  wrote:
>
> This begs the question; why cannot the systemd packaging remove the
> executable bits from these files?

On my testing system post-buster, the executable bits are still set:

$ ls -ald /usr/lib/systemd/boot/efi/*
-rwxr-xr-x 1 root root 59730 Jul 18 10:38
/usr/lib/systemd/boot/efi/linuxx64.efi.stub
-rwxr-xr-x 1 root root 91765 Jul 18 10:38
/usr/lib/systemd/boot/efi/systemd-bootx64.efi

May I please assign this bug to package systemd?

Kind regards,
Felix Lechner



Bug#926823: executable-not-elf-or-script should consider PE binaries

2019-08-05 Thread Felix Lechner
Control: reassign -1 systemd
Control: severity -1 wishlist

Hi,

On Mon, Aug 5, 2019 at 5:48 AM Chris Lamb  wrote:
>
> Can you clarify whom you are directing this query to? (I am unable to
> answer it.)

It was a matter of politeness, I suppose.

Kind regards,
Felix



  1   2   3   4   5   6   7   8   9   >