Subject: [PATCH] gnu: Add traceroute.

From: Vincent Legoll <[email-masked]>
Date: Mon, 11 Jan 2021 17:31:17 +0100

* 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 83a99ded72..5055cf399d 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -3680,6 +3680,51 @@ simulation, and a number of other applications.")
 network.  This must be enabled on the target host, usually in the BIOS.")
     (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.30.0