[lintian] 01/01: Apply a patch from Michael Stapelberg to detect Golang packages with invalid or missing Built-Using headers. (Closes: #891072)
This is an automated email from the git hooks/post-receive script.
lamby pushed a commit to branch master
in repository lintian.
commit e83f69fd2f1ea31ce0ecc2d86f55ad9ef0dfded3
Author: Michael Stapelberg <stapelberg@debian.org>
Date: Thu Feb 22 13:51:19 2018 +0000
Apply a patch from Michael Stapelberg to detect Golang packages with invalid or missing Built-Using headers. (Closes: #891072)
Signed-off-by: Chris Lamb <lamby@debian.org>
---
checks/control-file.desc | 24 +++++++++++++
checks/control-file.pm | 17 +++++++++
debian/changelog | 4 +++
t/tests/binaries-golang/desc | 1 +
t/tests/binaries-golang/tags | 1 +
.../debian/Makefile | 16 +++++++++
.../control-file-golang-built-using/debian/basic.c | 12 +++++++
.../debian/debian/control.in | 40 ++++++++++++++++++++++
t/tests/control-file-golang-built-using/desc | 6 ++++
t/tests/control-file-golang-built-using/tags | 1 +
10 files changed, 122 insertions(+)
diff --git a/checks/control-file.desc b/checks/control-file.desc
index 2b2516b..3e6485f 100644
--- a/checks/control-file.desc
+++ b/checks/control-file.desc
@@ -350,3 +350,27 @@ Info: This package builds a binary package containing at least one path
Please specify (eg.) <tt>Rules-Requires-Root: binary-targets</tt> in
the <tt>debian/control</tt> source stanza.
Ref: /usr/share/doc/dpkg-dev/rootless-builds.txt.gz
+
+Tag: missing-built-using-field-for-golang-package
+Severity: wishlist
+Certainty: certain
+Info: This package builds a binary package which does not include
+ <tt>${misc:Built-Using}</tt> in its <tt>Built-Using</tt> control field.
+ .
+ The <tt>${misc:Built-Using}</tt> substvar is populated by
+ <tt>dh-golang(1)</tt> and used for scheduling binNMUs.
+ .
+ Please add the following line to your package definition:
+ .
+ <tt>Built-Using: ${misc:Built-Using}</tt>
+
+Tag: built-using-field-on-arch-all-package
+Severity: wishlist
+Certainty: certain
+Info: This package builds a binary arch:all package which incorrectly
+ specifies a Built-Using control field.
+ .
+ <tt>Built-Using</tt> only applies to architecture-specific packages.
+ .
+ Please remove the <tt>Built-Using</tt> line from your package
+ definition.
diff --git a/checks/control-file.pm b/checks/control-file.pm
index f2a97b2..84a82bd 100644
--- a/checks/control-file.pm
+++ b/checks/control-file.pm
@@ -427,6 +427,23 @@ sub run {
unless $relation->implies('${gir:Depends}');
}
+ # Verify that golang binary packages set Built-Using (except for arch:all
+ # library packages).
+ if ($info->relation('build-depends')->implies('golang-go | golang-any')) {
+ foreach my $bin (@package_names) {
+ my $bu = $info->binary_field($bin, 'built-using');
+ my $arch = $info->binary_field($bin, 'architecture');
+ if ($arch eq 'all') {
+ tag 'built-using-field-on-arch-all-package', $bin
+ if defined($bu);
+ } else {
+ if (!defined($bu) || $bu !~ /\$\{misc:Built-Using\}/) {
+ tag 'missing-built-using-field-for-golang-package', $bin;
+ }
+ }
+ }
+ }
+
return;
}
diff --git a/debian/changelog b/debian/changelog
index 10deb88..0a585d4 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -2,6 +2,10 @@ lintian (2.5.77) UNRELEASED; urgency=medium
XXX: generate tag summary
+ * checks/control-file.{desc,pm}:
+ + [CL] Apply a patch from Michael Stapelberg to detect Golang packages
+ with invalid or missing Built-Using headers. (Closes: #891072)
+
-- Chris Lamb <lamby@debian.org> Wed, 21 Feb 2018 19:26:55 +0000
lintian (2.5.76) unstable; urgency=medium
diff --git a/t/tests/binaries-golang/desc b/t/tests/binaries-golang/desc
index 0a13b19..8c34704 100644
--- a/t/tests/binaries-golang/desc
+++ b/t/tests/binaries-golang/desc
@@ -4,3 +4,4 @@ Extra-Build-Depends: golang-go (>= 2:1.1.1-4)
Description: Misc errors related to golang binaries
Architecture: any
Test-Against: statically-linked-binary
+Test-For: missing-built-using-field-for-golang-package
diff --git a/t/tests/binaries-golang/tags b/t/tests/binaries-golang/tags
index e69de29..9c49736 100644
--- a/t/tests/binaries-golang/tags
+++ b/t/tests/binaries-golang/tags
@@ -0,0 +1 @@
+I: binaries-golang source: missing-built-using-field-for-golang-package binaries-golang
diff --git a/t/tests/control-file-golang-built-using/debian/Makefile b/t/tests/control-file-golang-built-using/debian/Makefile
new file mode 100644
index 0000000..f04b342
--- /dev/null
+++ b/t/tests/control-file-golang-built-using/debian/Makefile
@@ -0,0 +1,16 @@
+NOPIE_CFLAGS = $(filter-out -fPIE,$(CFLAGS))
+NOPIE_LDFLAGS = $(filter-out -fPIE -pie,$(LDFLAGS))
+COMPILE:= $(CC) $(NOPIE_CFLAGS) $(CPPFLAGS) $(NOPIE_LDFLAGS)
+
+all:
+ # static version
+ $(COMPILE) -static -o basic.static basic.c
+
+install:
+ install -d $(DESTDIR)/usr/lib/foo/
+ install -m 755 basic.static $(DESTDIR)/usr/lib/foo/static
+
+clean distclean:
+ rm -f basic
+
+check test:
diff --git a/t/tests/control-file-golang-built-using/debian/basic.c b/t/tests/control-file-golang-built-using/debian/basic.c
new file mode 100644
index 0000000..7dea5a0
--- /dev/null
+++ b/t/tests/control-file-golang-built-using/debian/basic.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+
+int
+main(void)
+{
+ char t[10];
+ printf("Hello world!\n");
+ /* Bad choice for reading from stdin, but it forces a stack
+ protector, so meh.
+ */
+ gets (t);
+}
diff --git a/t/tests/control-file-golang-built-using/debian/debian/control.in b/t/tests/control-file-golang-built-using/debian/debian/control.in
new file mode 100644
index 0000000..136a3cb
--- /dev/null
+++ b/t/tests/control-file-golang-built-using/debian/debian/control.in
@@ -0,0 +1,40 @@
+Source: {$source}
+Section: net
+Priority: optional
+Maintainer: {$author}
+Standards-Version: {$standards_version}
+Build-Depends: {$build_depends},
+ golang-go (>= 2:1.1.1-4)
+
+Package: {$source}
+Architecture: {$architecture}
+Depends: $\{misc:Depends\}
+Built-Using: $\{misc:Built-Using\}
+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.
+
+Package: {$source}-dev
+Architecture: all
+Depends: $\{misc:Depends\}
+Built-Using: $\{misc:Built-Using\}
+Description: {$description} (dev)
+ 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.
+ .
+ This package contains the source.
+
+Package: {$source}-clean-dev
+Architecture: all
+Depends: $\{misc:Depends\}
+Description: {$description} (clean dev)
+ 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.
+ .
+ This package contains the source, without a built-using tag.
diff --git a/t/tests/control-file-golang-built-using/desc b/t/tests/control-file-golang-built-using/desc
new file mode 100644
index 0000000..38e6ac0
--- /dev/null
+++ b/t/tests/control-file-golang-built-using/desc
@@ -0,0 +1,6 @@
+Testname: control-file-golang-built-using
+Version: 1.0
+Description: False-positive test for Built-Using field
+Architecture: any
+Test-Against: missing-built-using-field-for-golang-package
+Test-For: built-using-field-on-arch-all-package
diff --git a/t/tests/control-file-golang-built-using/tags b/t/tests/control-file-golang-built-using/tags
new file mode 100644
index 0000000..d352ead
--- /dev/null
+++ b/t/tests/control-file-golang-built-using/tags
@@ -0,0 +1 @@
+I: control-file-golang-built-using source: built-using-field-on-arch-all-package control-file-golang-built-using-dev
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/lintian/lintian.git
Reply to: