[PATCH 1/4] gnu: Add wondershaper.

  • Open
  • quality assurance status badge
Details
3 participants
  • Aljosha Papsch
  • Leo Prikler
  • Maxime Devos
Owner
unassigned
Submitted by
Aljosha Papsch
Severity
normal
Merged with
A
A
Aljosha Papsch wrote on 28 Jun 2021 17:22
(address . guix-patches@gnu.org)(name . Aljosha Papsch)(address . ep@stern-data.com)
20210628152232.31073-2-ep@stern-data.com
* gnu/packages/networking.scm (wondershaper): New variable.
---
gnu/packages/networking.scm | 45 +++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)

Toggle diff (62 lines)
diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm
index 82c7a0161a..7374ad5dbc 100644
--- a/gnu/packages/networking.scm
+++ b/gnu/packages/networking.scm
@@ -65,6 +65,7 @@
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system cmake)
+ #:use-module (guix build-system copy)
#:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system gnu)
#:use-module (guix build-system go)
@@ -4196,3 +4197,47 @@ IPv6 Internet connectivity - it also works over IPv4.")
;; version. This exception does not (and cannot) modify any license terms
;; which apply to the Application, with which you must still comply
license:lgpl3)))
+
+(define-public wondershaper
+ (package
+ (name "wondershaper")
+ (version "1.4.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://github.com/apapsch/wondershaper")
+ (commit "0987dbb0c360184b8aacf391646e19ea9ee78b10")))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1hyivkpvr5pv8wg64i7vgpxib4allbp4v1ahp3qhc1d88rkw7gjs"))))
+ (build-system copy-build-system)
+ (arguments
+ `(#:install-plan '(("./wondershaper" "./bin/"))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'patch-shebangs 'patch-invoked-commands
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin")))
+ (substitute* (string-append bin "/wondershaper")
+ (("^\\s*ip ")
+ (string-append (which "ip") " "))
+ (("^\\s*modprobe ")
+ (string-append (which "modprobe") " "))
+ (("^\\s*tc ")
+ (string-append (which "tc") " "))))
+ #t)))))
+ (inputs
+ `(("iproute2" ,iproute)
+ ("kmod" ,kmod)))
+ (synopsis "Command-line utility for limiting an adapter's bandwidth")
+ (description "Wonder Shaper allows the user to limit the bandwidth of one
+or more network adapters. It does so by using iproute's tc command, but
+greatly simplifies its operation. Wonder Shaper was first released by Bert
+Hubert in 2002. A subsequent release added a command-line interface. Wonder
+Shaper makes use of tc's Hierarchical Token Bucket (HTB) queue, ensuring good
+bandwidth management on high speed (above ten megabits) links.")
+ (home-page "https://github.com/magnific0/wondershaper")
+ (license license:gpl2)))
--
2.32.0
L
L
Leo Prikler wrote on 28 Jun 2021 17:36
(address . control@debbugs.gnu.org)
d7c0e430e623075f514b77880fb0f8810493b39b.camel@student.tugraz.at
merge 49254 49255 49256 49257 49258
thanks
M
M
Maxime Devos wrote on 30 Jun 2021 22:15
6648fb8c50107945119d30913a246a9d9a0e52cc.camel@telenet.be
Aljosha Papsch schreef op ma 28-06-2021 om 17:22 [+0200]:
Toggle quote (4 lines)
> + (git-reference
> + (url "https://github.com/apapsch/wondershaper")
> + (commit "0987dbb0c360184b8aacf391646e19ea9ee78b10")))

Best add a comment like

;; Use a fork that allows overriding the configuration file

‘We’ usually try to use upstream versions.

Toggle quote (16 lines)
> + (file-name (git-file-name name version))
> + (sha256
> + (base32 "1hyivkpvr5pv8wg64i7vgpxib4allbp4v1ahp3qhc1d88rkw7gjs"))))
> + (build-system copy-build-system)
> + (arguments
> + `(#:install-plan '(("./wondershaper" "./bin/"))
> + #:phases
> + (modify-phases %standard-phases
> + (add-after 'patch-shebangs 'patch-invoked-commands
> + (lambda* (#:key outputs inputs #:allow-other-keys)
> + (let* ((out (assoc-ref outputs "out"))
> + (bin (string-append out "/bin")))
> + (substitute* (string-append bin "/wondershaper")
> + (("^\\s*ip ")
> + (string-append (which "ip") " "))

Using (which "blabla") is not correct when cross-compiling, as
"which" looks in $PATH, but "iproute2" (and "kmod") won't be
in $PATH when cross-compiling as they are 'inputs', not 'native-inputs'

You'd need (search-input-file inputs "/bin/ip")
(or maybe "/sbin/ip", I dunno). Actually, search-input-file is
in core-updates, but not yet on 'master', so instead do

(string-append (assoc-ref inputs "iproute2") "/bin/ip")

or something like that.

Looking at the source code, I see

usage(){
cat << EOF

so it seems you need to substitute "cat" as well (it is from coreutils).

I'd recommend copying "wondershaper.conf" somewhere
as well, and substituting "/etc/conf.d/wondershaper.conf" and "/etc/systemd/wondershaper.conf"
in 'wondershaper' appropriately, so it will have some defaults.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYNzQ3hccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7hhxAQDvFswwmtiS5I2C8moFS/y1jpvD
Sa0ELUKhllhpdmb5YQD/ZqbLOcbjdWTWM870M+UJRAc+TKAkHiJQ209R3FvmBQM=
=c9Em
-----END PGP SIGNATURE-----


?
Your comment

Commenting via the web interface is currently disabled.

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

To respond to this issue using the mumi CLI, first switch to it
mumi current 49254
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