Control: tags -1 ftbfs patch

On Thu, 18 Dec 2025 13:46:04 +0100 Guillem Jover <[email protected]> wrote:
With the new dpkg >= 1.23.0 release series, which contains several
deprecations that emit warnings and is more strict when parsing data,
the autopkgtests for this package are failing, making it also affect
dpkg's own migration.

The lintian test suite might also be failing I guess.

One of the failures is:

 
t/recipes/debian/test-out/packages/checks/debian/control/field/build-profiles/fields-build-profiles-general:
 [...]
 dpkg-source: error: '<<in<valid>>' is not a valid build profile restriction 
formula

That seems be caused by this change in dpkg 1.23.0:

 
https://git.dpkg.org/cgit/dpkg/dpkg.git/commit/?id=7ef1a039771fc833ca0518e50cc68c21c8c6f872

I guess we'd need to use valid syntax in the source package that gets built, 
and then modify the generated package to reintroduce the invalid value.

Alternatively drop/disable the check because dpkg now catches it.

According to UDD there are no affected packages:

 
https://udd.debian.org/lintian-tag/invalid-restriction-formula-in-build-profiles-field?affected=yes


The same dpkg-source error is causing a second test to fail:

 
t/recipes/debian/test-out/packages/checks/fields/package-relations/fields-build-profiles-general:
 [...]
 dpkg-source: error: '<<in<valid>>' is not a valid build profile restriction 
formula


A different test failure is in between the above two:

 t/recipes/debian/test-out/packages/checks/debian/rules/rules-symlink:
 [...]
 dpkg-source: warning: --auto-commit is not a valid option for 
Dpkg::Source::Package::V3::Native
  debian/rules clean
 Can't exec "debian/rules": Permission denied at 
/usr/share/perl5/Dpkg/BuildDriver/DebianRules.pm line 200.
 dpkg-buildpackage: error: debian/rules clean subprocess failed with unknown 
status code -1

Making rules.real executable resolves this issue.


The attached patch fixes the FTFBS by dropping the 
invalid-restriction-formula-in-build-profiles-field check and making the rules 
files executable.

Kind Regards,

Bas

--
 PGP Key ID: 4096R/6750F10AE88D4AF1
Fingerprint: 8182 DE41 7056 408D 6146  50D1 6750 F10A E88D 4AF1
From 66d83f8be0527d08421746b3fb44d396ff00086e Mon Sep 17 00:00:00 2001
From: Bas Couwenberg <[email protected]>
Date: Fri, 26 Dec 2025 13:17:58 +0100
Subject: =?UTF-8?q?Fix=20FTBFS=20with=20dpkg=201.23.0.=20(closes:=20#11235?=
 =?UTF-8?q?80)=0A-=20Drop=20invalid-restriction-formula-in-build-profiles-?=
 =?UTF-8?q?field,=0A=20=20cannot=20be=20tested=20easily=20as=20dpkg=20no?=
 =?UTF-8?q?=20longer=20accepts=20invalid=20syntax.=0A-=20Make=20rules=20fi?=
 =?UTF-8?q?les=20executable?=

---
 .../Check/Debian/Control/Field/BuildProfiles.pm      |  7 +------
 .../build-spec/debian/control.in                     | 12 ------------
 .../fields-build-profiles-general/eval/hints         |  3 +--
 .../build-spec/debian/rules                          |  0
 .../build-spec/debian/rules                          |  0
 .../debhelper-compat-old/build-spec/debian/rules     |  0
 .../debian-rules-calls-nproc/build-spec/debian/rules |  0
 .../rules-missing-targets/build-spec/debian/rules    |  0
 .../build-spec/debian/rules                          |  0
 .../rules-special-variables/build-spec/debian/rules  |  0
 .../rules/rules-symlink/build-spec/debian/rules.real |  0
 .../rules-variable-targets/build-spec/debian/rules   |  0
 .../build-spec/debian/control.in                     | 12 ------------
 ...d-restriction-formula-in-build-profiles-field.tag |  8 --------
 14 files changed, 2 insertions(+), 40 deletions(-)
 mode change 100644 => 100755 t/recipes/checks/debian/rules/control-file-rules-requires-root-binary-targets/build-spec/debian/rules
 mode change 100644 => 100755 t/recipes/checks/debian/rules/control-file-rules-requires-root-no/build-spec/debian/rules
 mode change 100644 => 100755 t/recipes/checks/debian/rules/debhelper-compat-old/build-spec/debian/rules
 mode change 100644 => 100755 t/recipes/checks/debian/rules/debian-rules-calls-nproc/build-spec/debian/rules
 mode change 100644 => 100755 t/recipes/checks/debian/rules/rules-missing-targets/build-spec/debian/rules
 mode change 100644 => 100755 t/recipes/checks/debian/rules/rules-parses-dpkg-parsechangelog/build-spec/debian/rules
 mode change 100644 => 100755 t/recipes/checks/debian/rules/rules-special-variables/build-spec/debian/rules
 mode change 100644 => 100755 t/recipes/checks/debian/rules/rules-symlink/build-spec/debian/rules.real
 mode change 100644 => 100755 t/recipes/checks/debian/rules/rules-variable-targets/build-spec/debian/rules
 delete mode 100644 tags/i/invalid-restriction-formula-in-build-profiles-field.tag

diff --git a/lib/Lintian/Check/Debian/Control/Field/BuildProfiles.pm b/lib/Lintian/Check/Debian/Control/Field/BuildProfiles.pm
index 50e96635e..59333a184 100644
--- a/lib/Lintian/Check/Debian/Control/Field/BuildProfiles.pm
+++ b/lib/Lintian/Check/Debian/Control/Field/BuildProfiles.pm
@@ -54,7 +54,7 @@ sub source {
         my $pointer = $control_item->pointer($position);
 
         if (
-            $raw!~ m{^\s*              # skip leading whitespace
+            $raw=~ m{^\s*              # skip leading whitespace
                      <                 # first list start
                        !?[^\s<>]+      # (possibly negated) term
                        (?:             # any additional terms
@@ -75,11 +75,6 @@ sub source {
                      \s*$              # trailing spaces at the end
               }x
         ) {
-            $self->pointed_hint(
-                'invalid-restriction-formula-in-build-profiles-field',
-                $pointer, $raw,"(in section for $installable)");
-
-        } else {
             # parse the field and check the profile names
             $raw =~ s/^\s*<(.*)>\s*$/$1/;
 
diff --git a/t/recipes/checks/debian/control/field/build-profiles/fields-build-profiles-general/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/build-profiles/fields-build-profiles-general/build-spec/debian/control.in
index 7df1b9f2f..316796623 100644
--- a/t/recipes/checks/debian/control/field/build-profiles/fields-build-profiles-general/build-spec/debian/control.in
+++ b/t/recipes/checks/debian/control/field/build-profiles/fields-build-profiles-general/build-spec/debian/control.in
@@ -8,18 +8,6 @@ Build-Depends: [% $build_depends %],
  bpcomplicated <stage1 nocheck> <cross> <!pkg.[% $source %].foo>
 Rules-Requires-Root: no
 
-Package: [% $source %]-wrong-syntax
-Architecture: [% $package_architecture %]
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Build-Profiles: <in<valid>
-Description: [% $description %] (wrong syntax)
- Check the syntax of the Build-Profiles field
- .
- This is a test package designed to exercise some feature or tag of
- Lintian.  It is part of the Lintian test suite and may do very odd
- things.  It should not be installed like a regular package.  It may
- be an empty package.
-
 Package: [% $source %]-unknown-profile
 Architecture: [% $package_architecture %]
 Depends: ${shlibs:Depends}, ${misc:Depends}
diff --git a/t/recipes/checks/debian/control/field/build-profiles/fields-build-profiles-general/eval/hints b/t/recipes/checks/debian/control/field/build-profiles/fields-build-profiles-general/eval/hints
index e100e0028..a54963e68 100644
--- a/t/recipes/checks/debian/control/field/build-profiles/fields-build-profiles-general/eval/hints
+++ b/t/recipes/checks/debian/control/field/build-profiles/fields-build-profiles-general/eval/hints
@@ -1,2 +1 @@
-fields-build-profiles-general (source): invalid-restriction-formula-in-build-profiles-field <in<valid> (in section for fields-build-profiles-general-wrong-syntax) [debian/control:14]
-fields-build-profiles-general (source): invalid-profile-name-in-build-profiles-field unknown (in section for fields-build-profiles-general-unknown-profile) [debian/control:26]
+fields-build-profiles-general (source): invalid-profile-name-in-build-profiles-field unknown (in section for fields-build-profiles-general-unknown-profile) [debian/control:14]
diff --git a/t/recipes/checks/debian/rules/control-file-rules-requires-root-binary-targets/build-spec/debian/rules b/t/recipes/checks/debian/rules/control-file-rules-requires-root-binary-targets/build-spec/debian/rules
old mode 100644
new mode 100755
diff --git a/t/recipes/checks/debian/rules/control-file-rules-requires-root-no/build-spec/debian/rules b/t/recipes/checks/debian/rules/control-file-rules-requires-root-no/build-spec/debian/rules
old mode 100644
new mode 100755
diff --git a/t/recipes/checks/debian/rules/debhelper-compat-old/build-spec/debian/rules b/t/recipes/checks/debian/rules/debhelper-compat-old/build-spec/debian/rules
old mode 100644
new mode 100755
diff --git a/t/recipes/checks/debian/rules/debian-rules-calls-nproc/build-spec/debian/rules b/t/recipes/checks/debian/rules/debian-rules-calls-nproc/build-spec/debian/rules
old mode 100644
new mode 100755
diff --git a/t/recipes/checks/debian/rules/rules-missing-targets/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-missing-targets/build-spec/debian/rules
old mode 100644
new mode 100755
diff --git a/t/recipes/checks/debian/rules/rules-parses-dpkg-parsechangelog/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-parses-dpkg-parsechangelog/build-spec/debian/rules
old mode 100644
new mode 100755
diff --git a/t/recipes/checks/debian/rules/rules-special-variables/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-special-variables/build-spec/debian/rules
old mode 100644
new mode 100755
diff --git a/t/recipes/checks/debian/rules/rules-symlink/build-spec/debian/rules.real b/t/recipes/checks/debian/rules/rules-symlink/build-spec/debian/rules.real
old mode 100644
new mode 100755
diff --git a/t/recipes/checks/debian/rules/rules-variable-targets/build-spec/debian/rules b/t/recipes/checks/debian/rules/rules-variable-targets/build-spec/debian/rules
old mode 100644
new mode 100755
diff --git a/t/recipes/checks/fields/package-relations/fields-build-profiles-general/build-spec/debian/control.in b/t/recipes/checks/fields/package-relations/fields-build-profiles-general/build-spec/debian/control.in
index 7df1b9f2f..316796623 100644
--- a/t/recipes/checks/fields/package-relations/fields-build-profiles-general/build-spec/debian/control.in
+++ b/t/recipes/checks/fields/package-relations/fields-build-profiles-general/build-spec/debian/control.in
@@ -8,18 +8,6 @@ Build-Depends: [% $build_depends %],
  bpcomplicated <stage1 nocheck> <cross> <!pkg.[% $source %].foo>
 Rules-Requires-Root: no
 
-Package: [% $source %]-wrong-syntax
-Architecture: [% $package_architecture %]
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Build-Profiles: <in<valid>
-Description: [% $description %] (wrong syntax)
- Check the syntax of the Build-Profiles field
- .
- This is a test package designed to exercise some feature or tag of
- Lintian.  It is part of the Lintian test suite and may do very odd
- things.  It should not be installed like a regular package.  It may
- be an empty package.
-
 Package: [% $source %]-unknown-profile
 Architecture: [% $package_architecture %]
 Depends: ${shlibs:Depends}, ${misc:Depends}
diff --git a/tags/i/invalid-restriction-formula-in-build-profiles-field.tag b/tags/i/invalid-restriction-formula-in-build-profiles-field.tag
deleted file mode 100644
index 8375d8724..000000000
--- a/tags/i/invalid-restriction-formula-in-build-profiles-field.tag
+++ /dev/null
@@ -1,8 +0,0 @@
-Tag: invalid-restriction-formula-in-build-profiles-field
-Severity: error
-Check: debian/control/field/build-profiles
-Explanation: The restriction formula in the <code>Build-Profiles</code> field
- must be in the same format as the restriction formula in the
- <code>Build-Depends</code> field (with angle brackets).
-See-Also:
- https://wiki.debian.org/BuildProfileSpec#The_Build-Profiles_field
-- 
2.47.3

Reply via email to