I've attached patches to fix this. First, a patch to create an otherwise equivalent package variant and to use it in GnuTLS, and a second patch to actually update the public net-tools variable.
Is this the right way to create the test-only package variant for now?
From 5c738ab1ec5543981c9d5e512ee94d469bcca12b Mon Sep 17 00:00:00 2001 From: Leo Famulari <l...@famulari.name> Date: Tue, 25 Jul 2017 00:19:56 -0400 Subject: [PATCH 1/2] gnu: net-tools: Add a test-only variant and use it for GnuTLS. * gnu/packages/linux.scm (net-tools-for-tests): Add net-tools variant for the GnuTLS test suite, et cetera. (net-tools): Inherit from net-tools-for-tests. * gnu/packages/tls.scm (gnutls)[native-inputs]: Use net-tools-for-tests instead of net-tools. --- gnu/packages/linux.scm | 5 ++++- gnu/packages/tls.scm | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 456909a94..4f9fa6d25 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -1187,7 +1187,7 @@ consists of several tools, of which the most important are @command{ip} and messages and are accompanied by a set of manpages.") (license license:gpl2+))) -(define-public net-tools +(define net-tools-for-tests ;; XXX: This package is basically unmaintained, but it provides a few ;; commands not yet provided by Inetutils, such as 'route', so we have to ;; live with it. @@ -1288,6 +1288,9 @@ network hardware types (plipconfig, slattach) and advanced aspects of IP configuration (iptunnel, ipmaddr).") (license license:gpl2+))) +(define-public net-tools + (package (inherit net-tools-for-tests))) + (define-public libcap (package (name "libcap") diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index 0a81633aa..740f5a42e 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -140,6 +140,8 @@ coordinating the use of PKCS#11 by different components or libraries living in the same process.") (license license:bsd-3))) +;; TODO Add net-tools to #:disallowed-references when we can afford to rebuild +;; GnuTLS. (define-public gnutls (package (name "gnutls") @@ -194,7 +196,7 @@ living in the same process.") "debug" "doc")) ;4.1 MiB of man pages (native-inputs - `(("net-tools" ,net-tools) + `(("net-tools" ,(@@ (gnu packages linux) net-tools-for-tests)) ("pkg-config" ,pkg-config) ("which" ,which))) (inputs -- 2.13.3
From f57732d79ac265917f154da5791ff203c82c9733 Mon Sep 17 00:00:00 2001 From: Leo Famulari <l...@famulari.name> Date: Tue, 25 Jul 2017 01:46:38 -0400 Subject: [PATCH 2/2] gnu: net-tools: Update to 1.60-0.90da8a0. Fixes <https://bugs.gnu.org/27811>. * gnu/packages/linux.scm (net-tools): Update to 1.60-0.90da8a0. [inputs]: Remove the Debian patch. [arguments]: Use modify-phases. Remove the 'patch' phase. Disable SELINUX and AFBLUETOOTH from build configuration. --- gnu/packages/linux.scm | 77 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 76 insertions(+), 1 deletion(-) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 4f9fa6d25..12c6a1241 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -106,6 +106,7 @@ #:use-module (guix build-system python) #:use-module (guix build-system trivial) #:use-module (guix download) + #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix utils) @@ -1187,6 +1188,18 @@ consists of several tools, of which the most important are @command{ip} and messages and are accompanied by a set of manpages.") (license license:gpl2+))) +;; There are two packages for net-tools. This one, net-tools-for-tests, is +;; relatively old and buggy. It can be used in package test suites and should +;; never be referenced by a built package. Use #:disallowed-references to +;; enforce this. The second one, net-tools, is more recent and probably safer to +;; use, and it is the one that is exported as a public variable. +;; +;; When we are able to rebuild many packages (i.e. core-updates), the +;; relationship of these two net-tools packages will be reversed. That is, +;; net-tools will become the primary package, and net-tools-from-tests will +;; inherit from it. +;; +;; See <https://bugs.gnu.org/27811> for more information. (define net-tools-for-tests ;; XXX: This package is basically unmaintained, but it provides a few ;; commands not yet provided by Inetutils, such as 'route', so we have to @@ -1270,6 +1283,10 @@ messages and are accompanied by a set of manpages.") ;; Use the big Debian patch set (the thing does not even compile out of ;; the box.) + ;; XXX The patch is not actually applied, due to a bug in the 'patch' phase + ;; above. However, this package variant is only used in GnuTLS's tests. It + ;; will be adjusted when convenient for the build farm. + ;; See <https://bugs.gnu.org/27811> for more information. (inputs `(("patch" ,(origin (method url-fetch) (uri @@ -1289,8 +1306,66 @@ configuration (iptunnel, ipmaddr).") (license license:gpl2+))) (define-public net-tools - (package (inherit net-tools-for-tests))) + (package (inherit net-tools-for-tests) + (version "1.60-0.90da8a0") + ;; This tarball from Debian is equivalent to a Git checkout of the upstream + ;; repo, <https://git.code.sf.net/p/net-tools/code>, commit + ;; 90da8a01bd27a945bb85c7773e8174a6cb7037a1. + ;; Git depends on net-tools, transitively, so we fetch this tarball to avoid + ;; a reference cycle. We should find a better workaround for this problem so + ;; that we can use the latest upstream source. + (source (origin + (method url-fetch) + (uri (string-append "http://http.debian.net/debian/pool/main/n/" + "net-tools/net-tools_1.60+git20161116.90da8a0" + ".orig.tar.gz")) + (sha256 + (base32 + "0ahrqhxrgqk0x785ghzlpcfgs7418cj1xcpbajxv46slf15mrhnk")))) + (arguments + '(#:modules ((guix build gnu-build-system) + (guix build utils) + (srfi srfi-1) + (srfi srfi-26)) + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (mkdir-p (string-append out "/bin")) + (mkdir-p (string-append out "/sbin")) + + ;; Pretend we have everything... + (system "yes | make config") + + ;; ... except for the things we don't have. + ;; HAVE_AFDECnet requires libdnet, which we don't have. + ;; HAVE_HWSTRIP and HAVE_HWTR require kernel headers + ;; that have been removed. + ;; XXX SELINUX and AFBLUETOOTH are removed for now, but we should + ;; think about adding them later. + (substitute* '("config.make" "config.h") + (("^.*HAVE_(AFDECnet|HWSTRIP|HWTR|SELINUX|AFBLUETOOTH)[ =]1.*$") + ""))))) + (add-after 'install 'remove-redundant-commands + (lambda* (#:key outputs #:allow-other-keys) + ;; Remove commands and man pages redundant with Inetutils. + (let* ((out (assoc-ref outputs "out")) + (dup (append-map (cut find-files out <>) + '("^hostname" + "^(yp|nis|dns)?domainname")))) + (for-each delete-file dup) + #t)))) + ;; Binaries that depend on libnet-tools.a don't declare that + ;; dependency, making it parallel-unsafe. + #:parallel-build? #f + #:tests? #f ; no test suite + #:make-flags (let ((out (assoc-ref %outputs "out"))) + (list "CC=gcc" + (string-append "BASEDIR=" out) + (string-append "INSTALLNLSDIR=" out "/share/locale") + (string-append "mandir=/share/man"))))))) (define-public libcap (package (name "libcap") -- 2.13.3
signature.asc
Description: PGP signature