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
>From 7318d47e2caff903267d0235d7ef3069d74041a5 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg <stapelb...@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
_______________________________________________ Pkg-go-maintainers mailing list Pkg-go-maintainers@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-go-maintainers