unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
From: Leo Famulari <leo@famulari.name>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: 27811@debbugs.gnu.org
Subject: bug#27811: net-tools patch has no effect?
Date: Tue, 25 Jul 2017 13:52:02 -0400	[thread overview]
Message-ID: <20170725175202.GA27528@jasmine.lan> (raw)
In-Reply-To: <87shhkncq3.fsf@gnu.org>


[-- Attachment #1.1: Type: text/plain, Size: 266 bytes --]

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?

[-- Attachment #1.2: 0001-gnu-net-tools-Add-a-test-only-variant-and-use-it-for.patch --]
[-- Type: text/plain, Size: 2328 bytes --]

From 5c738ab1ec5543981c9d5e512ee94d469bcca12b Mon Sep 17 00:00:00 2001
From: Leo Famulari <leo@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


[-- Attachment #1.3: 0002-gnu-net-tools-Update-to-1.60-0.90da8a0.patch --]
[-- Type: text/plain, Size: 6025 bytes --]

From f57732d79ac265917f154da5791ff203c82c9733 Mon Sep 17 00:00:00 2001
From: Leo Famulari <leo@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


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  parent reply	other threads:[~2017-07-25 18:00 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-24 22:02 bug#27811: net-tools patch has no effect? Leo Famulari
2017-07-25  4:12 ` Leo Famulari
2017-07-25  4:59   ` Leo Famulari
2017-07-25  8:27     ` Ludovic Courtès
2017-07-25 16:10       ` Leo Famulari
2017-07-25 17:52       ` Leo Famulari [this message]
2017-07-25 17:53         ` Leo Famulari
2017-07-25 18:03         ` Leo Famulari
2017-07-25 18:08           ` Leo Famulari
2017-07-25 21:30             ` Ludovic Courtès
2017-07-25 21:33         ` Ludovic Courtès
2017-07-26 16:08           ` Leo Famulari
2017-07-26 16:11         ` Leo Famulari
2017-07-26 21:04           ` Ludovic Courtès
2017-07-27 17:41             ` Leo Famulari

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170725175202.GA27528@jasmine.lan \
    --to=leo@famulari.name \
    --cc=27811@debbugs.gnu.org \
    --cc=ludo@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).