1. 15 Aug, 2019 18 commits
    • Felix Lechner's avatar
      Drop libipc-run-perl in Depends and Build-Depends. · a4983eb3
      Felix Lechner authored
      Avoids any chance of feature interaction with IO::Async following
      Bug#922737.
      
      This conversion would not have been possible without the tireless
      assistance from the nice folks on #perl-help.
      
      Special mention to Grinnz and to mst (cpan:MSTROUT) - team lead at
      shadow.cat for perl consultancy and CPAN commercial support.
      a4983eb3
    • Felix Lechner's avatar
      Delete Lintian::Command. · 28a6ab58
      Felix Lechner authored
      Gbp-Dch: ignore
      28a6ab58
    • Felix Lechner's avatar
    • Felix Lechner's avatar
      Adjust t/scripts/pod-coverage.t for modules added or removed. · 40c867bf
      Felix Lechner authored
      Gbp-Dch: ignore
      40c867bf
    • Felix Lechner's avatar
      In t/scripts/spellintian, replace routines based on IPC::Run. · 11fc9f53
      Felix Lechner authored
      The previous trick to silence debug messages related to IPCRUNDEBUG is
      no longer needed. The test now prefers the libraries from TEST_ROOT,
      which no longer load IPC::Run. The conflict with IPC::Run3 is gone.
      There are no more spurious debug messages.
      
      This commit is part of an effort to migrate Lintian to IO::Async for
      multi process control. A previous commit series did something similar
      for collections. The present series replaces IPC::Run in the remainder
      of Lintian proper.
      
      The sole exception is the library Lintian::Command, which is now used
      only by the reporting code. That module will be deleted after the new
      reporting code, which also uses IO::Async, is tested and merged.
      
      This series does not address the reporting code.
      
      Gbp-Dch: ignore
      11fc9f53
    • Felix Lechner's avatar
      In Lintian::Util, replace routines based on IPC::Run. · 1e22cd20
      Felix Lechner authored
      This commit is part of an effort to migrate Lintian to IO::Async for
      multi process control. A previous commit series did something similar
      for collections. The present series replaces IPC::Run in the remainder
      of Lintian proper.
      
      The sole exception is the library Lintian::Command, which is now used
      only by the reporting code. That module will be deleted after the new
      reporting code, which also uses IO::Async, is tested and merged.
      
      This series does not address the reporting code.
      
      Gbp-Dch: ignore
      1e22cd20
    • Felix Lechner's avatar
      In private/refresh-archs, replace routines based on IPC::Run. · 4f049f08
      Felix Lechner authored
      This commit is part of an effort to migrate Lintian to IO::Async for
      multi process control. A previous commit series did something similar
      for collections. The present series replaces IPC::Run in the remainder
      of Lintian proper.
      
      The sole exception is the library Lintian::Command, which is now used
      only by the reporting code. That module will be deleted after the new
      reporting code, which also uses IO::Async, is tested and merged.
      
      This series does not address the reporting code.
      
      Gbp-Dch: ignore
      4f049f08
    • Felix Lechner's avatar
      In private/generate-tag-summary, replace routines based on IPC::Run. · ae0eafb5
      Felix Lechner authored
      This commit is part of an effort to migrate Lintian to IO::Async for
      multi process control. A previous commit series did something similar
      for collections. The present series replaces IPC::Run in the remainder
      of Lintian proper.
      
      The sole exception is the library Lintian::Command, which is now used
      only by the reporting code. That module will be deleted after the new
      reporting code, which also uses IO::Async, is tested and merged.
      
      This series does not address the reporting code.
      
      Gbp-Dch: ignore
      ae0eafb5
    • Felix Lechner's avatar
      In private/generate-html-docs, replace routines based on IPC::Run. · 82181d99
      Felix Lechner authored
      This commit is part of an effort to migrate Lintian to IO::Async for
      multi process control. A previous commit series did something similar
      for collections. The present series replaces IPC::Run in the remainder
      of Lintian proper.
      
      The sole exception is the library Lintian::Command, which is now used
      only by the reporting code. That module will be deleted after the new
      reporting code, which also uses IO::Async, is tested and merged.
      
      This series does not address the reporting code.
      
      Gbp-Dch: ignore
      82181d99
    • Felix Lechner's avatar
      In commands/lintian.pm, replace routines based on IPC::Run. · 6b6a767b
      Felix Lechner authored
      This commit is part of an effort to migrate Lintian to IO::Async for
      multi process control. A previous commit series did something similar
      for collections. The present series replaces IPC::Run in the remainder
      of Lintian proper.
      
      The sole exception is the library Lintian::Command, which is now used
      only by the reporting code. That module will be deleted after the new
      reporting code, which also uses IO::Async, is tested and merged.
      
      This series does not address the reporting code.
      
      Gbp-Dch: ignore
      6b6a767b
    • Felix Lechner's avatar
      In checks/upstream-signing-key.pm, replace routines based on IPC::Run. · 7f2f51f3
      Felix Lechner authored
      This commit is part of an effort to migrate Lintian to IO::Async for
      multi process control. A previous commit series did something similar
      for collections. The present series replaces IPC::Run in the remainder
      of Lintian proper.
      
      The sole exception is the library Lintian::Command, which is now used
      only by the reporting code. That module will be deleted after the new
      reporting code, which also uses IO::Async, is tested and merged.
      
      This series does not address the reporting code.
      
      Gbp-Dch: ignore
      7f2f51f3
    • Felix Lechner's avatar
      In checks/scripts.pm, replace routines based on IPC::Run. · c3e0afd9
      Felix Lechner authored
      This commit is part of an effort to migrate Lintian to IO::Async for
      multi process control. A previous commit series did something similar
      for collections. The present series replaces IPC::Run in the remainder
      of Lintian proper.
      
      The sole exception is the library Lintian::Command, which is now used
      only by the reporting code. That module will be deleted after the new
      reporting code, which also uses IO::Async, is tested and merged.
      
      This series does not address the reporting code.
      
      Gbp-Dch: ignore
      c3e0afd9
    • Felix Lechner's avatar
      In checks/po-debconf.pm, replace routines based on IPC::Run. · e0d94da9
      Felix Lechner authored
      This commit is part of an effort to migrate Lintian to IO::Async for
      multi process control. A previous commit series did something similar
      for collections. The present series replaces IPC::Run in the remainder
      of Lintian proper.
      
      The sole exception is the library Lintian::Command, which is now used
      only by the reporting code. That module will be deleted after the new
      reporting code, which also uses IO::Async, is tested and merged.
      
      This series does not address the reporting code.
      
      Gbp-Dch: ignore
      e0d94da9
    • Felix Lechner's avatar
      In checks/fields.pm, replace routines based on IPC::Run. · b152c03a
      Felix Lechner authored
      This commit is part of an effort to migrate Lintian to IO::Async for
      multi process control. A previous commit series did something similar
      for collections. The present series replaces IPC::Run in the remainder
      of Lintian proper.
      
      The sole exception is the library Lintian::Command, which is now used
      only by the reporting code. That module will be deleted after the new
      reporting code, which also uses IO::Async, is tested and merged.
      
      This series does not address the reporting code.
      
      Gbp-Dch: ignore
      b152c03a
    • Felix Lechner's avatar
      In checks/deb-format.pm, replace routines based on IPC::Run. · 14d83cde
      Felix Lechner authored
      This commit is part of an effort to migrate Lintian to IO::Async for
      multi process control. A previous commit series did something similar
      for collections. The present series replaces IPC::Run in the remainder
      of Lintian proper.
      
      The sole exception is the library Lintian::Command, which is now used
      only by the reporting code. That module will be deleted after the new
      reporting code, which also uses IO::Async, is tested and merged.
      
      This series does not address the reporting code.
      
      Gbp-Dch: ignore
      14d83cde
    • Felix Lechner's avatar
      In Lintian::Internal::FrontendUtil, replace routines based on IPC::Run. · 7daa5c97
      Felix Lechner authored
      This commit is part of an effort to migrate Lintian to IO::Async for
      multi process control. A previous commit series did something similar
      for collections. The present series replaces IPC::Run in the remainder
      of Lintian proper.
      
      The sole exception is the library Lintian::Command, which is now used
      only by the reporting code. That module will be deleted after the new
      reporting code, which also uses IO::Async, is tested and merged.
      
      This series does not address the reporting code.
      
      Gbp-Dch: ignore
      7daa5c97
    • Felix Lechner's avatar
      In frontend/dplint, replace routines based on IPC:Run. · aaebfc2e
      Felix Lechner authored
      This commit is part of an effort to migrate Lintian to IO::Async for
      multi process control. A previous commit series did something similar
      for collections. The present series replaces IPC::Run in the remainder
      of Lintian proper.
      
      The sole exception is the library Lintian::Command, which is now used
      only by the reporting code. That module will be deleted after the new
      reporting code, which also uses IO::Async, is tested and merged.
      
      This series does not address the reporting code.
      
      Gbp-Dch: ignore
      aaebfc2e
    • Felix Lechner's avatar
      In Lintian::Util::safe_qx, set $? to command's exit status. · 0d8ed5fa
      Felix Lechner authored
      Makes this IO::Async based routine more versatile by giving access to
      the exit code. Corresponds more closely to the behavior of its
      predecessor Lintian::Command::safe_qx, which was based on IPC::Run.
      
      The routine no longer raises an exception on failure. Instead, it
      returns the error as text, and sets $? to the exit status.
      
      Gbp-Dch: ignore
      0d8ed5fa
  2. 14 Aug, 2019 7 commits
  3. 13 Aug, 2019 2 commits
    • Felix Lechner's avatar
      Acknowledge prior breakage due to new separate tags layout in d/control. · 06cddaef
      Felix Lechner authored
      The tags layout in separate files broke custom profiles in other
      packages. The packages pkg-perl-tools and pkg-js-tools use custom
      profiles that no longer work with recent version of Lintian.
      
      The reason is the separation of tags from checks in commit 083e8396
      and others.
      
      Both packages adjusted their custom profiles in recent uploads.
      Acknowledges the prior breakage in d/control.
      
      Please see Bug#934100 and Bug#934144 for details.
      
      Gbp-Dch: ignore
      06cddaef
    • Felix Lechner's avatar
      Remove empty Test-Against: statements in test descriptions. · 5292931c
      Felix Lechner authored
      These statements have an effect only during test selection. The normal
      course of action should be, after editing a check, to use the check:
      selector to ensure your changes work as expected.
      
      You can also use the tag: selector, but that normally just invokes
      check: for the check the tag belongs to. Since the other tags in the
      check could interact with your selected tag, there is a reasonable
      assumption that they might interfere. To locate false positives, it is
      therefore best to run all related tests.
      
      The Test-Against: statements change that behavior. They are a holdover
      from when the test suite was focused on tags rather than checks. In an
      ideal situation, tests are specific to one tag and checks group only
      narrowly related tags. (Broad checks like 'files' and unfocused tests
      like 'manpages-general' are antithetical to the new design.) The
      Test-Against statements change which tests are run when a tag: is
      selected. That is all they do.
      
      Broad checks like 'files' group many unrelated tags. The tests
      intended for them are usually, but not always, a bit narrower. A
      Test-Against: statement says that the test at hand is a good indicator
      for false positives only for the listed tags. It prevents the test
      from running to find false positives for tags that do not appear in
      either 'tags' or Test-Against.
      
      The author would prefer to remove all Test-Against: statements. For
      that to happen, broad checks must be split into smaller pieces. An
      example would be to remove nodejs-related tags from the check 'files'.
      During that effort, Test-Against statements can be helpful to identify
      related tags. That's why Test-Against: is still around.
      
      Empty Test-Against statements do not serve that purpose. They only
      prevent tests from being run to look for false positive for tags other
      then the small subset calculated above.  Without it, all tests are run
      if they relate to the check the selected tag is in. Removing
      Test-Against simply results in more tests being run when the tag:
      selector is used. They do nothing else.
      
      Unfortunately, the content of the Test-Against: statements was never
      properly verified.  The semantics are unclear perhaps to anyone except
      the auther. The field is also of limited utility. Finally, the field's
      function is not what people may think from looking at old surviving
      documentation. The fields should go away when possible.
      
      We are keeping Test-Against: fields that have values so they can aid
      in debulking broad checks. The empty statements are herewith deleted.
      
      Gbp-Dch: ignore
      5292931c
  4. 11 Aug, 2019 4 commits
    • Felix Lechner's avatar
      Attempt to fix irregular HTML display of package matlab-gdf in HTML output. (Re. #907425) · 348a9237
      Felix Lechner authored
      As lamby pointed out, the package matlab-gdf that gave rise to the bug
      belongs to the section 'contrib/science'. The section is somewhat
      unusual because it uses a slash.
      
      No slash was present in the HTML page source (as one might expect for
      an unescaped character) and the output looked a little different from
      what was reported in the bug. (The version and the section were both
      absent.)  Nonetheless, this patch seemed like a reasonable attempt to
      resolve the bug. It is supposed to escape forward slashes to the HTML
      sequence '/' but it is untested.
      
      It looks like the archive component for individual packages runs
      through the routine html_quote, which is changed here, before being
      passed to Text::Template:
      
      https://salsa.debian.org/lintian/lintian/blob/master/commands/reporting-html-reports.pm#L1062
      
      This commit may or may not close the bug. It needs to be tested.
      
      Gbp-Dch: ignore
      348a9237
    • Felix Lechner's avatar
      Abort lintian when tag definition is missing a 'Check:' stanza. · 26240c00
      Felix Lechner authored
      The field 'Check' in tag definitions is new and mandatory, but the
      enforcing script t/scripts/tags/desc_fields.t does not run early
      enough to prevent problems even in other scripts (vs. tag-related
      tests). A proper solution requires a re-ordering of test scripts.
      
      As a start, this aborts Lintian and emits a meaningful error message.
      
      Gbp-Dch: ignore
      26240c00
    • Felix Lechner's avatar
      Fix instructions on how to run the test suite. · 379ce51f
      Felix Lechner authored
      This does not bring the documentation in line with all recent changes,
      but will hopefully avoid the worst vitriol from readers for its poor
      state.
      
      Fixes the instructions on how to run the test suite.
      
      Also marks the tutorials for writing tests and checks as out of date.
      
      Gbp-Dch: ignore
      379ce51f
    • Chris Lamb's avatar
      Remove "busses" as a false-positive plural for "bus". Thanks to Jörg... · e6312df8
      Chris Lamb authored
      Remove "busses" as a false-positive plural for "bus". Thanks to Jörg Frings-Fürst for the report. (Closes: #934452)
      e6312df8
  5. 08 Aug, 2019 2 commits
  6. 06 Aug, 2019 3 commits
  7. 05 Aug, 2019 2 commits
    • Felix Lechner's avatar
      Proper fix for the null improperly addressed by commit d55f56ec. · 1283833e
      Felix Lechner authored
      Thanks to Guilhem Moulin for the fix!
      
      Gbp-Dch: ignore
      1283833e
    • Felix Lechner's avatar
      Revert "Fix use of uninitialized value in checks/files.pm." · 244f7624
      Felix Lechner authored
      This reverts commit d55f56ec.
      
      Commit d55f56ec broke the following semantics:
      
        $ perl -we 'my $p = "usr/sbin/foo"; print "/$1bin/$2\n" if $p =~ m,^(usr/)?sbin/(.+),;'
        /usr/bin/foo
        $ perl -we 'my $p = "sbin/foo"; print "/$1bin/$2\n" if $p =~ m,^(usr/)?sbin/(.+),;'
        Use of uninitialized value $1 in concatenation (.) or string at -e line 1.
        /bin/foo
      
      So if $fname starts with usr/sbin/ (resp. sbin/) a corresponding name
      with the /usr/bin/ (resp. /bin/) prefix is appended to @bin_binaries.
      It also spews a warning for sbin/; I guess the desired outcome is to
      silence that warning but preserve the overall behavior, right?  This
      is no longer what happens: while names starting with usr/sbin/ are
      dealt with like before, those starting with sbin/ are now ignored.
      
      More information may be available here:
      
        !235 (comment 100475)
      
      Thanks to Guilhem Moulin for pointing it out!
      
      Gbp-Dch: ignore
      244f7624
  8. 04 Aug, 2019 2 commits
    • Felix Lechner's avatar
      Mark the test 'changelog-file-become-native' is non-native in the changelog-file check. · 84b9e71a
      Felix Lechner authored
      Per the test's description, it is designed for when a maintainer
      forgets to add Debian revision to an upstream version in the Debian
      changelog. Such a package is always non-native, but the test used a
      native skeleton.  Instead uses a non-native skeleton for the test.
      
      The inconsistency showed up when version parsing was centralized.
      
      Also adjusts the test's expected tags for related changes.
      
      Gbp-Dch: ignore
      84b9e71a
    • Felix Lechner's avatar
      Use non-native skeleton in test changelog-file-experimental for check changelog-file. · e6c34703
      Felix Lechner authored
      The tag non-consecutive-debian-revision is intended for non-native
      packages, but the test for it uses a native skeleton. The
      inconsistency showed up when version parsing was centralized, and the
      tag disappeared. Instead uses the non-native skeleton to trigger the
      non-native tag.
      
      Also adjusts the expected tags for related changes.
      
      Gbp-Dch: ignore
      e6c34703