[PATCH] gnu: Add traceroute.

  • Done
  • quality assurance status badge
Details
4 participants
  • Leo Famulari
  • Christopher Baines
  • Maxim Cournoyer
  • Vincent Legoll
Owner
unassigned
Submitted by
Vincent Legoll
Severity
normal

Debbugs page

Vincent Legoll wrote 5 years ago
(address . guix-patches@gnu.org)
CAEwRq=qLnNS2HzekK-PVPc3Pytk9+uz+F4K+H2BWP2Xo3DEk=Q@mail.gmail.com
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:
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 <vincent.legoll@gmail.com>
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(+)

Toggle diff (58 lines)
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
Vincent Legoll wrote 5 years ago
(address . 39961@debbugs.gnu.org)
CAEwRq=pqy68n5oiHdrc7r3eJ4P2g9OE54dLO8d7P0pwBM0YC2A@mail.gmail.com
tracerouted OK to 9.9.9.9

--
Vincent Legoll
Vincent Legoll wrote 5 years ago
(address . 39961@debbugs.gnu.org)
CAEwRq=qvJFQqAkPEumB7O8efrc=JLM3VyS6FfaBRa++fd_WUkg@mail.gmail.com
I've since seen a few other issues on the same subject, but cannot
find a way to get it work without setting LIBRARY_PATH...

I tried guix environment --ad-hoc gcc-toolchain, adding the missed
GUIX_PROFILE to .bash_profile, etc.

--
Vincent Legoll
Vincent Legoll wrote 5 years ago
(address . 39961@debbugs.gnu.org)
CAEwRq=pfYMxbQpH-0PBFMcbLt8RrQrMUek5wPjwGoE0TXOyJiQ@mail.gmail.com
I am running all this through ssh into a VM, so I also tried to run
with bash -l...

This is probably misconfiguration on my end...

--
Vincent Legoll
Leo Famulari wrote 5 years ago
Re: [bug#39961] [PATCH] gnu: Add traceroute.
(name . Vincent Legoll)(address . vincent.legoll@gmail.com)(address . 39961@debbugs.gnu.org)
20200307130918.GA3194@jasmine.lan
On Sat, Mar 07, 2020 at 12:13:18AM +0100, Vincent Legoll wrote:
Toggle quote (3 lines)
> + (uri (string-append "mirror://sourceforge/traceroute/traceroute/"
> + "traceroute-" version "/traceroute-" version ".tar.gz"))

How does this compare to the traceroute provided by the inetutils
package?
Vincent Legoll wrote 5 years ago
(name . Leo Famulari)(address . leo@famulari.name)(address . 39961@debbugs.gnu.org)
CAEwRq=pOqB-kkixxbU92MZUKMKJk=FdweGLOsCBZHFcwAXME-w@mail.gmail.com
On Sat, Mar 7, 2020 at 2:09 PM Leo Famulari <leo@famulari.name> wrote:
Toggle quote (3 lines)
> How does this compare to the traceroute provided by the inetutils
> package?

It looks like this one does not need special permissions to run:

guest@guixsd ~/dev/repo/guix [env]$
/gnu/store/3h3h9qr14l7m1cwxi9598jzc3qd5pzaf-traceroute-2.1.0/bin/traceroute
-n 9.9.9.9
traceroute to 9.9.9.9 (9.9.9.9), 30 hops max, 60 byte packets
[...]
7 212.27.56.30 45.227 ms 41.741 ms 41.734 ms
8 212.27.56.38 48.909 ms 49.304 ms 48.599 ms
9 212.27.56.41 55.846 ms 50.545 ms 51.603 ms
10 195.66.225.238 54.105 ms 51.924 ms 56.401 ms
11 9.9.9.9 54.743 ms !X 50.748 ms !X 52.979 ms !X

guest@guixsd ~/dev/repo/guix [env]$
/gnu/store/ljwvyw48n2j28q0w96qykr04wcgwzcnh-inetutils-1.9.4/bin/traceroute
9.9.9.9
traceroute to 9.9.9.9 (9.9.9.9), 64 hops max
/gnu/store/ljwvyw48n2j28q0w96qykr04wcgwzcnh-inetutils-1.9.4/bin/traceroute:
socket: Operation not permitted

guest@guixsd ~/dev/repo/guix [env]$ sudo
/gnu/store/ljwvyw48n2j28q0w96qykr04wcgwzcnh-inetutils-1.9.4/bin/traceroute
9.9.9.9
traceroute to 9.9.9.9 (9.9.9.9), 64 hops max
[...]
7 212.27.56.30 51.092ms 38.423ms 34.532ms
8 212.27.56.38 44.764ms 41.931ms 44.963ms
9 212.27.56.41 55.887ms 50.083ms 49.295ms
10 195.66.225.238 51.184ms 62.666ms 57.945ms
11 9.9.9.9 48.800ms !* 48.870ms !* 61.399ms !*

guest@guixsd ~/dev/repo/guix [env]$ ls -lh
/gnu/store/3h3h9qr14l7m1cwxi9598jzc3qd5pzaf-traceroute-2.1.0/bin/traceroute
/gnu/store/ljwvyw48n2j28q0w96qykr04wcgwzcnh-inetutils-1.9.4/bin/traceroute
-r-xr-xr-x 8 root root 85K Jan 1 1970
/gnu/store/3h3h9qr14l7m1cwxi9598jzc3qd5pzaf-traceroute-2.1.0/bin/traceroute
-r-xr-xr-x 2 root root 70K Jan 1 1970
/gnu/store/ljwvyw48n2j28q0w96qykr04wcgwzcnh-inetutils-1.9.4/bin/traceroute

--
Vincent Legoll
Vincent Legoll wrote 4 years ago
traceroute
(address . 39961@debbugs.gnu.org)
CAEwRq=ppPXpJRp6E0ttCB1OWhj+LapuyauE8=f4+RqpushYQDw@mail.gmail.com
ping ?

Anything I should add ?

--
Vincent Legoll
Christopher Baines wrote 4 years ago
(name . Vincent Legoll)(address . vincent.legoll@gmail.com)(address . 39961@debbugs.gnu.org)
87o8i897xa.fsf@cbaines.net
Vincent Legoll <vincent.legoll@gmail.com> writes:

Toggle quote (4 lines)
> ping ?
>
> Anything I should add ?

This traceroute implementation looks to be particularly difficult to
build, just searching the web for some of the errors brings up other
people having problems with it (like [1]).


Some comments though, I'd suggest transforming what you're doing with
make flags from modifying the phases to adding to the #:make-flags
argument, so something like this:

#:make-flags
(list (string-append "LIBRARY_PATH="
(assoc-ref %build-inputs "libc")
"/lib")
(string-append "CFLAGS=-I"
(assoc-ref %build-inputs "kernel-headers")
"/include")
"LDFLAGS=-lm -L../libsupp"
(string-append "prefix=" (assoc-ref %outputs "out")))

What I've also done here is used the %build-inputs alist, which includes
the implicit libc and kernel-headers inputs, so you can remove those
inputs from the package definition.

As for the -lm issue with the Makefile, that's pretty frustrating. The
best thing I could come up with is something like this:

(substitute* "default.rules"
((" \\$\\(LIBDEPS\\)") "$(filter-out -l%,$(LIBDEPS))"))

That has the advantage of still passing the -lm flag to gcc, and just
avoiding make tripping up over it.

Finally, I think the license might be gpl2+, with lgpl2.1+ for libsupp,
so it would be good to list both of those, with a comment describing
what the lgpl license applies to.

Could you send an updated patch?

Thanks,

Chris
-----BEGIN PGP SIGNATURE-----

iQKlBAEBCgCPFiEEPonu50WOcg2XVOCyXiijOwuE9XcFAl/vEKFfFIAAAAAALgAo
aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDNF
ODlFRUU3NDU4RTcyMEQ5NzU0RTBCMjVFMjhBMzNCMEI4NEY1NzcRHG1haWxAY2Jh
aW5lcy5uZXQACgkQXiijOwuE9XdS1g/+KeWIM+ByjMC25XiwtVC5xSFw2NFbklP3
keVRE8EufRBvMlzklxXi11ybProCxw5IVFTyhhZt2+9E9QIh5hdks3ugckSWMZP7
tOuwFVDIj0iIz96MgbpjkyPTt+itqf/A+qcCgiBdf/8p68sMP0M89ByW/s2ZH5/5
P/5rI2UAN1ffwsL2KtVf9xaHpW2BMm379XraKddqXI1Mtx9lLbpBxlXYsQiJKEGb
/7cIBoPK3lkixWnwchG3YWL178Jgmr3u82p8WgerrZs4UUBmXHXwFmlKY1HF4XSM
GhdZFqaoWJYTZydz4olCKrlUkKXMMsNjCyOI9btZSwQUHzdAW4kUtQwTbN8mk5Tw
pjKAGH5jeKirZQgrwZvBfIcAMkFvKWxKRLdle7wJdi98hnfUaH82Fj1H6u54+P8z
5uCyBUO3ZbRjTj4pYrAMSVRNeNqitszcCFePkjyscM5s8uBCeZbS1u0YPH5yFdAA
J/sgCmqEb4uOTzalImTyB0mVqeB9l7M3lEnBiSmm/6RTici1dXCED2jVyptntdZ5
JPXxdoG6wYMj5rh+VoeSVnNRU3iiQ4j1rsu1PCao2A/EWvAjhlobSfgBl2fat23T
B4Im9h+G3aqcBi0k/VLMUNNdkePrp3HoR7mvJtoWOQycg9ExgGwATgf1a5KI6Ace
25dkEOSnzKY=
=Ffzv
-----END PGP SIGNATURE-----

Vincent Legoll wrote 4 years ago
New patch
(address . 39961@debbugs.gnu.org)
CAEwRq=oLC2=zXj8GLz4v7e=Wm9__zkDg5onEa-m1QB5E9R_w_Q@mail.gmail.com
Hello,

following this is an updated patch, with
Christopher's feddback applied.

The nice thing is it now builds properly
without the LIBRABRY_PATH and the other
hacks. The licenses should be also good
now.

Is this OK ?

--
Vincent Legoll
Vincent Legoll wrote 4 years ago
[PATCH] gnu: Add traceroute.
(address . 39961@debbugs.gnu.org)(name . Vincent Legoll)(address . vincent.legoll@gmail.com)
20210111163117.20895-1-vincent.legoll@gmail.com
* gnu/packages/networking.scm (traceroute): New variable.
---
gnu/packages/networking.scm | 45 +++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)

Toggle diff (58 lines)
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
Vincent Legoll wrote 4 years ago
(address . 39961@debbugs.gnu.org)(name . Vincent Legoll)(address . vincent.legoll@gmail.com)
20210111163240.20986-1-vincent.legoll@gmail.com
* gnu/packages/networking.scm (traceroute): New variable.
---
gnu/packages/networking.scm | 39 +++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)

Toggle diff (52 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 83a99ded72..4c3faaa578 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -3680,6 +3680,45 @@ 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.
+ #:make-flags
+ (list (string-append "LIBRARY_PATH="
+ (assoc-ref %build-inputs "libc") "/lib")
+ (string-append "CFLAGS=-I"
+ (assoc-ref %build-inputs "kernel-headers") "/include")
+ "LDFLAGS=-lm -L../libsupp"
+ (string-append "prefix=" (assoc-ref %outputs "out")))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-make
+ (lambda _
+ (substitute* "default.rules"
+ ((" \\$\\(LIBDEPS\\)") "$(filter-out -l%,$(LIBDEPS))"))
+ #t))
+ (delete 'bootstrap) ; there is no configure.ac file
+ (delete 'configure)))) ; there is no configure script
+ (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+
+ license:lgpl2.1+)))) ; for the libsupp subdirectory
+
(define-public vde2
(package
(name "vde2")
--
2.30.0
Maxim Cournoyer wrote 4 years ago
(name . Vincent Legoll)(address . vincent.legoll@gmail.com)
87wnptpow7.fsf_-_@gmail.com
Hello,

Vincent Legoll <vincent.legoll@gmail.com> writes:

Toggle quote (56 lines)
> * gnu/packages/networking.scm (traceroute): New variable.
> ---
> gnu/packages/networking.scm | 39 +++++++++++++++++++++++++++++++++++++
> 1 file changed, 39 insertions(+)
>
> diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
> index 83a99ded72..4c3faaa578 100644
> --- a/gnu/packages/networking.scm
> +++ b/gnu/packages/networking.scm
> @@ -3680,6 +3680,45 @@ 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.
> + #:make-flags
> + (list (string-append "LIBRARY_PATH="
> + (assoc-ref %build-inputs "libc") "/lib")
> + (string-append "CFLAGS=-I"
> + (assoc-ref %build-inputs "kernel-headers") "/include")
> + "LDFLAGS=-lm -L../libsupp"
> + (string-append "prefix=" (assoc-ref %outputs "out")))
> + #:phases
> + (modify-phases %standard-phases
> + (add-after 'unpack 'patch-make
> + (lambda _
> + (substitute* "default.rules"
> + ((" \\$\\(LIBDEPS\\)") "$(filter-out -l%,$(LIBDEPS))"))
> + #t))
> + (delete 'bootstrap) ; there is no configure.ac file
> + (delete 'configure)))) ; there is no configure script
> + (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+
> + license:lgpl2.1+)))) ; for the libsupp subdirectory
> +
> (define-public vde2
> (package
> (name "vde2")

I edited it to expound the description someone and for cosmetic reasons
(fitting in the 80 chars limit for example), like so:

Toggle snippet (61 lines)
1 file changed, 18 insertions(+), 14 deletions(-)
gnu/packages/networking.scm | 32 ++++++++++++++++++--------------

modified gnu/packages/networking.scm
@@ -3796,17 +3796,19 @@ network. This must be enabled on the target host, usually in the BIOS.")
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/traceroute/traceroute/"
- "traceroute-" version "/traceroute-" version ".tar.gz"))
+ "traceroute-" version "/traceroute-"
+ version ".tar.gz"))
(sha256
(base32 "1dh32vcfawkl1p9g4ral1p0camds4paqr8db1kaqxwyk6hmd4s9n"))))
(build-system gnu-build-system)
(arguments
- `(#:tests? #f ; No tests.
+ `(#:tests? #f ;no test suite
#:make-flags
(list (string-append "LIBRARY_PATH="
- (assoc-ref %build-inputs "libc") "/lib")
+ (assoc-ref %build-inputs "libc") "/lib")
(string-append "CFLAGS=-I"
- (assoc-ref %build-inputs "kernel-headers") "/include")
+ (assoc-ref %build-inputs "kernel-headers")
+ "/include")
"LDFLAGS=-lm -L../libsupp"
(string-append "prefix=" (assoc-ref %outputs "out")))
#:phases
@@ -3814,18 +3816,20 @@ network. This must be enabled on the target host, usually in the BIOS.")
(add-after 'unpack 'patch-make
(lambda _
(substitute* "default.rules"
- ((" \\$\\(LIBDEPS\\)") "$(filter-out -l%,$(LIBDEPS))"))
- #t))
- (delete 'bootstrap) ; there is no configure.ac file
- (delete 'configure)))) ; there is no configure script
+ ((" \\$\\(LIBDEPS\\)") "$(filter-out -l%,$(LIBDEPS))"))))
+ (delete 'bootstrap) ;no configure.ac file
+ (delete 'configure)))) ;no configure script
(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+
- license:lgpl2.1+)))) ; for the libsupp subdirectory
+ (description "This package provides a modern, but Linux-specific
+implementation of the @command{traceroute} command that can be used to follow
+the route taken by packets on 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.
+Compared to other implementations, this @command{traceroute} command allows
+some traces for unprivileged users.")
+ (license (list license:gpl2+
+ license:lgpl2.1+)))) ;for the libsupp subdirectory
(define-public vde2
(package

And pushed as 59e97a67ba.

Thank you!

Closing.

Maxim
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 39961@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 39961
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch
You may also tag this issue. See list of standard tags. For example, to set the confirmed and easy tags
mumi command -t +confirmed -t +easy
Or, remove the moreinfo tag and set the help tag
mumi command -t -moreinfo -t +help