Bug#1057176: [PATCH v2] Do not raise silent-on-rules-requiring-root if dpkg-build-api is v1 or newer
Closes: #1057176
Also see <https://bugs.debian.org/1057238> for additional context.
---
This revision adds tests and reformats with perltidy.
.../Debian/Control/Field/RulesRequiresRoot.pm | 4 +++-
.../build-spec/debian/control.in | 17 +++++++++++++++++
.../build-spec/fill-values | 4 ++++
.../eval/desc | 4 ++++
.../eval/hints | 0
5 files changed, 28 insertions(+), 1 deletion(-)
create mode 100644 t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing-with-dpkg-build-api/build-spec/debian/control.in
create mode 100644 t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing-with-dpkg-build-api/build-spec/fill-values
create mode 100644 t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing-with-dpkg-build-api/eval/desc
create mode 100644 t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing-with-dpkg-build-api/eval/hints
diff --git a/lib/Lintian/Check/Debian/Control/Field/RulesRequiresRoot.pm b/lib/Lintian/Check/Debian/Control/Field/RulesRequiresRoot.pm
index b97a673b3..9d5d043a7 100644
--- a/lib/Lintian/Check/Debian/Control/Field/RulesRequiresRoot.pm
+++ b/lib/Lintian/Check/Debian/Control/Field/RulesRequiresRoot.pm
@@ -38,6 +38,7 @@ sub source {
my $control = $self->processable->debian_control;
my $source_fields = $control->source_fields;
+ my $build_prerequisites= $self->processable->relation('Build-Depends-All');
my @r3_misspelled = grep { $_ ne 'Rules-Requires-Root' }
grep { m{^ Rules? - Requires? - Roots? $}xi } $source_fields->names;
@@ -64,7 +65,8 @@ sub source {
&& $source_fields->value('Rules-Requires-Root') ne 'no';
$self->pointed_hint('silent-on-rules-requiring-root', $pointer)
- unless $source_fields->declares('Rules-Requires-Root');
+ unless $source_fields->declares('Rules-Requires-Root')
+ || $build_prerequisites->satisfies('dpkg-build-api (>= 1)');
if ( !$source_fields->declares('Rules-Requires-Root')
|| $source_fields->value('Rules-Requires-Root') eq 'no') {
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing-with-dpkg-build-api/build-spec/debian/control.in b/t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing-with-dpkg-build-api/build-spec/debian/control.in
new file mode 100644
index 000000000..fb3b62f68
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing-with-dpkg-build-api/build-spec/debian/control.in
@@ -0,0 +1,17 @@
+Source: [% $source %]
+Priority: [% $priority %]
+Section: [% $section %]
+Maintainer: [% $author %]
+Standards-Version: [% $standards_version %]
+Build-Depends: [% $build_depends %]
+Homepage: [% $homepage %]
+
+Package: [% $source %]
+Architecture: [% $package_architecture %]
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: [% $description %]
+ 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.
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing-with-dpkg-build-api/build-spec/fill-values b/t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing-with-dpkg-build-api/build-spec/fill-values
new file mode 100644
index 000000000..65be27a45
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing-with-dpkg-build-api/build-spec/fill-values
@@ -0,0 +1,4 @@
+Testname: rules-requires-root-missing-with-dpkg-build-api
+Skeleton: upload-native
+Description: d/control without explicit rules-requires-root but with dpkg-build-api
+Extra-Build-Depends: dpkg-build-api (= 1)
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing-with-dpkg-build-api/eval/desc b/t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing-with-dpkg-build-api/eval/desc
new file mode 100644
index 000000000..12305298c
--- /dev/null
+++ b/t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing-with-dpkg-build-api/eval/desc
@@ -0,0 +1,4 @@
+Testname: rules-requires-root-missing-with-dpkg-build-api
+Check: debian/control/field/rules-requires-root
+Test-Against: silent-on-rules-requiring-root
+See-Also: Bug #1057176
diff --git a/t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing-with-dpkg-build-api/eval/hints b/t/recipes/checks/debian/control/field/rules-requires-root/rules-requires-root-missing-with-dpkg-build-api/eval/hints
new file mode 100644
index 000000000..e69de29bb
--
2.43.0
Reply to: