[pkg-go] Bug#891072: [PATCH] Add golang-missing-built-using and golang-built-using-on-arch-all
Michael Stapelberg
stapelberg at debian.org
Thu Feb 22 08:15:17 UTC 2018
Package: lintian
Version: 2.5.72
Severity: wishlist
Tags: patch
Please review and merge the attached patch. Thanks!
-- System Information:
Debian Release: buster/sid
APT prefers testing
APT policy: (990, 'testing'), (500, 'unstable-debug'), (500, 'testing-debug'), (500, 'unstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386, armel, mipsel, arm64
Kernel: Linux 4.13.0-1-amd64 (SMP w/12 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8), LANGUAGE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
Versions of packages lintian depends on:
ii binutils 2.29.1-6
ii bzip2 1.0.6-8.1
ii diffstat 1.61-1+b1
ii dpkg 1.19.0.5
ii file 1:5.32-1
ii gettext 0.19.8.1-4
ii intltool-debian 0.35.0+20060710.4
ii libapt-pkg-perl 0.1.33
ii libarchive-zip-perl 1.59-1
ii libclass-accessor-perl 0.51-1
ii libclone-perl 0.38-2+b2
ii libdpkg-perl 1.19.0.5
ii libemail-valid-perl 1.202-1
ii libfile-basedir-perl 0.07-1
ii libipc-run-perl 0.96-1
ii liblist-moreutils-perl 0.416-1+b3
ii libparse-debianchangelog-perl 1.2.0-12
ii libperl5.22 [libdigest-sha-perl] 5.22.2-5
ii libperl5.26 [libdigest-sha-perl] 5.26.1-3
ii libtext-levenshtein-perl 0.13-1
ii libtimedate-perl 2.3000-2
ii liburi-perl 1.72-2
ii libxml-simple-perl 2.24-1
ii libyaml-libyaml-perl 0.63-2+b2
ii man-db 2.7.6.1-2
ii patchutils 0.3.4-2
ii perl 5.26.1-3
ii t1utils 1.41-1
ii xz-utils 5.2.2-1.3
Versions of packages lintian recommends:
pn libperlio-gzip-perl <none>
Versions of packages lintian suggests:
pn binutils-multiarch <none>
ii dpkg-dev 1.19.0.5
ii libhtml-parser-perl 3.72-3+b2
ii libtext-template-perl 1.47-1
-- no debconf information
-------------- next part --------------
>From 7318d47e2caff903267d0235d7ef3069d74041a5 Mon Sep 17 00:00:00 2001
From: Michael Stapelberg <stapelberg at debian.org>
Date: Thu, 22 Feb 2018 09:11:20 +0100
Subject: [PATCH] Add golang-missing-built-using and
golang-built-using-on-arch-all
---
checks/control-file.desc | 17 +++++++++
checks/control-file.pm | 15 ++++++++
.../binaries-golang-built-using/debian/Makefile | 16 +++++++++
t/tests/binaries-golang-built-using/debian/basic.c | 12 +++++++
.../debian/debian/control.in | 40 ++++++++++++++++++++++
t/tests/binaries-golang-built-using/desc | 6 ++++
t/tests/binaries-golang-built-using/tags | 1 +
t/tests/binaries-golang/desc | 1 +
t/tests/binaries-golang/tags | 1 +
9 files changed, 109 insertions(+)
create mode 100644 t/tests/binaries-golang-built-using/debian/Makefile
create mode 100644 t/tests/binaries-golang-built-using/debian/basic.c
create mode 100644 t/tests/binaries-golang-built-using/debian/debian/control.in
create mode 100644 t/tests/binaries-golang-built-using/desc
create mode 100644 t/tests/binaries-golang-built-using/tags
diff --git a/checks/control-file.desc b/checks/control-file.desc
index 2b2516bfc..9743aad81 100644
--- a/checks/control-file.desc
+++ b/checks/control-file.desc
@@ -350,3 +350,20 @@ 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: golang-missing-built-using
+Severity: wishlist
+Certainty: certain
+Info: This package builds a binary package which is not including
+ ${misc:Built-Using} in its Built-Using control field.
+ .
+ The ${misc:Built-Using} substvar is populated by <tt>dh-golang(1)</tt>
+ and used for scheduling binNMUs.
+
+Tag: golang-built-using-on-arch-all
+Severity: wishlist
+Certainty: certain
+Info: This package builds a binary arch:all package which incorrectly
+ specifies a Built-Using control field.
+ .
+ Built-Using only applies to architecture-specific packages.
diff --git a/checks/control-file.pm b/checks/control-file.pm
index f2a97b24d..8d8a1caac 100644
--- a/checks/control-file.pm
+++ b/checks/control-file.pm
@@ -427,6 +427,21 @@ 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' && defined($bu)) {
+ tag 'golang-built-using-on-arch-all', $bin;
+ }
+ if ($arch ne 'all' && (!defined($bu) || $bu !~ /\$\{misc:Built-Using\}/)) {
+ tag 'golang-missing-built-using', $bin;
+ }
+ }
+ }
+
return;
}
diff --git a/t/tests/binaries-golang-built-using/debian/Makefile b/t/tests/binaries-golang-built-using/debian/Makefile
new file mode 100644
index 000000000..f04b342de
--- /dev/null
+++ b/t/tests/binaries-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/binaries-golang-built-using/debian/basic.c b/t/tests/binaries-golang-built-using/debian/basic.c
new file mode 100644
index 000000000..7dea5a030
--- /dev/null
+++ b/t/tests/binaries-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/binaries-golang-built-using/debian/debian/control.in b/t/tests/binaries-golang-built-using/debian/debian/control.in
new file mode 100644
index 000000000..136a3cb65
--- /dev/null
+++ b/t/tests/binaries-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/binaries-golang-built-using/desc b/t/tests/binaries-golang-built-using/desc
new file mode 100644
index 000000000..85118b21f
--- /dev/null
+++ b/t/tests/binaries-golang-built-using/desc
@@ -0,0 +1,6 @@
+Testname: binaries-golang-built-using
+Version: 1.0
+Description: False-positive test for Built-Using field
+Architecture: any
+Test-Against: golang-missing-built-using
+Test-For: golang-built-using-on-arch-all
diff --git a/t/tests/binaries-golang-built-using/tags b/t/tests/binaries-golang-built-using/tags
new file mode 100644
index 000000000..5724c0cd7
--- /dev/null
+++ b/t/tests/binaries-golang-built-using/tags
@@ -0,0 +1 @@
+I: binaries-golang-built-using source: golang-built-using-on-arch-all binaries-golang-built-using-dev
diff --git a/t/tests/binaries-golang/desc b/t/tests/binaries-golang/desc
index 0a13b1901..7cc04dd02 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: golang-missing-built-using
diff --git a/t/tests/binaries-golang/tags b/t/tests/binaries-golang/tags
index e69de29bb..e287ae798 100644
--- a/t/tests/binaries-golang/tags
+++ b/t/tests/binaries-golang/tags
@@ -0,0 +1 @@
+I: binaries-golang source: golang-missing-built-using binaries-golang
--
2.15.1
More information about the Pkg-go-maintainers
mailing list