Subject: [PATCH] gnu: Add traceroute.

From: Vincent Legoll <[email-masked]>
Date: Sat, 7 Mar 2020 00:13:18 +0100

This need an in-depth review, as there is something strange, I had to
set LIBRARY_PATH to overcome gcc/ld not finding crt{i,1}.o

I found the following bug:
https://issues.guix.gnu.org/issue/32131
that met a similar issue...

Please advise how to proceed further.

-- 
Vincent Legoll
From 5252f45030c9d725befcba698b0e5e9f9c49e00d Mon Sep 17 00:00:00 2001
From: Vincent Legoll <[email-masked]>
Date: Sat, 7 Mar 2020 00:05:39 +0100
Subject: [PATCH] gnu: Add traceroute.

* gnu/packages/networking.scm (traceroute): New variable.
---
 gnu/packages/networking.scm | 45 +++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index eddfffd662..92b6391a53 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -2864,6 +2864,51 @@ Such interfaces are useful for VPN software, virtualization, emulation,
 simulation, and a number of other applications.")
     (license license:gpl2)))
 
+(define-public traceroute
+  (package
+    (name "traceroute")
+    (version "2.1.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/traceroute/traceroute/"
+               "traceroute-" version "/traceroute-" version ".tar.gz"))
+       (sha256
+        (base32 "1dh32vcfawkl1p9g4ral1p0camds4paqr8db1kaqxwyk6hmd4s9n"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; No tests.
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-make
+           (lambda _
+               (substitute* "Make.rules"
+                 ((" -lm ") " "))
+             #t))
+         (replace 'build
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let* ((libglibc (assoc-ref inputs "glibc"))
+                    (headers (assoc-ref inputs "linux-libre-headers")))
+               (invoke "make" "LDFLAGS=-lm -L../libsupp"
+                              (string-append "LIBRARY_PATH=" libglibc "/lib")
+                              (string-append "CFLAGS=-I" headers "/include")))))
+         (replace 'install
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (invoke "make" (string-append "prefix=" out) "install"))))
+         (delete 'bootstrap)            ;there is no configure.ac file
+         (delete 'configure))))         ;there is no configure script
+    (native-inputs
+     `(("glibc" ,glibc)
+       ("linux-libre-headers" ,linux-libre-headers)))
+    (home-page "http://traceroute.sourceforge.net/")
+    (synopsis "Tracks the route taken by packets over an IP network")
+    (description "Traceroute tracks the route packets taken from an IP network
+on their way to a given host.  It utilizes the IP protocol's time to live (TTL)
+field and attempts to elicit an ICMP TIME_EXCEEDED response from each gateway
+along the path to the host.")
+    (license license:gpl2)))
+
 (define-public vde2
   (package
     (name "vde2")
-- 
2.25.1