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 via email to