[PATCH 1/4] gnu: Add wondershaper.

OpenSubmitted by Aljosha Papsch.
3 participants
  • Aljosha Papsch
  • Leo Prikler
  • Maxime Devos
Merged with
Aljosha Papsch wrote on 28 Jun 17:22 +0200
(address . guix-patches@gnu.org)(name . Aljosha Papsch)(address . 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.scmindex 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
Leo Prikler wrote on 28 Jun 17:36 +0200
(address . control@debbugs.gnu.org)
merge 49254 49255 49256 49257 49258thanks
Maxime Devos wrote on 30 Jun 22:15 +0200
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 bein $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 isin 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" somewhereas well, and substituting "/etc/conf.d/wondershaper.conf" and "/etc/systemd/wondershaper.conf"in 'wondershaper' appropriately, so it will have some defaults.
iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYNzQ3hccbWF4aW1lZGV2b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7hhxAQDvFswwmtiS5I2C8moFS/y1jpvDSa0ELUKhllhpdmb5YQD/ZqbLOcbjdWTWM870M+UJRAc+TKAkHiJQ209R3FvmBQM==c9Em-----END PGP SIGNATURE-----

Your comment

Commenting via the web interface is currently disabled.

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