bashtop does not run without glibc installed in profile

  • Open
  • quality assurance status badge
Details
3 participants
  • Josselin Poiret
  • Lenny Händler
  • Maxime Devos
Owner
unassigned
Submitted by
Lenny Händler
Severity
normal
L
L
Lenny Händler wrote on 12 Nov 2021 23:55
(address . bug-guix@gnu.org)
0fe8420a-dae9-92e8-5dfb-b52260a7c669@lennyhaendler.com
the script needs both uname and locale. If glibc is not installed in
profile, it aborts. However glibc is not listed as a dependency. When I
install glibc it works.
J
J
Josselin Poiret wrote on 14 Nov 2021 15:01
[PATCH] gnu: bashtop: Add dependencies and wrap program with PATH
(name . Josselin Poiret)(address . dev@jpoiret.xyz)
20211114140137.13868-1-dev@jpoiret.xyz
You're right, none of the needed dependencies of bashtop were
actually present in the package definition. Here is a patch that
does work on my machine using `guix shell --pure bashtop -- bashtop`.

Best,
Josselin Poiret
-- >8 --

* gnu/packages/admin.scm (bashtop): Add dependencies, wrap the script
so that it can access the commands it needs.
---
gnu/packages/admin.scm | 27 +++++++++++++++++++++++----
1 file changed, 23 insertions(+), 4 deletions(-)

Toggle diff (48 lines)
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 2a7b0f310d..8f9125212c 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -71,6 +71,7 @@ (define-module (gnu packages admin)
#:use-module (guix build-system python)
#:use-module (guix build-system ruby)
#:use-module (guix build-system trivial)
+ #:use-module (guix build-system copy)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
@@ -670,11 +671,29 @@ (define-public bashtop
(sha256
(base32
"07nlr6vmyb7yihaxj1fp424lmhwkdjl6mls92v90f6gsvikpa13v"))))
- (build-system gnu-build-system)
+ (build-system copy-build-system)
(arguments
- '(#:make-flags (list (string-append "PREFIX=" %output))
- #:tests? #f ; bats test fails with loading load.bash
- #:phases (modify-phases %standard-phases (delete 'configure))))
+ '(#:install-plan '(("./bashtop" "./bin/bashtop"))
+ #:phases (modify-phases %standard-phases
+ (add-after 'install 'wrap
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((paths (map (lambda (program)
+ (dirname (which program)))
+ '("awk" "dd" "grep" "ip"
+ "locale" "ps" "sed")))
+ (bashtop (string-append (assoc-ref outputs
+ "out")
+ "/bin/bashtop")))
+ (wrap-program bashtop
+ `("PATH" ":" = ,paths))))))))
+ (inputs
+ `(("coreutils" ,coreutils)
+ ("gawk" ,gawk)
+ ("glibc" ,glibc) ; for 'locale'
+ ("grep" ,grep)
+ ("iproute" ,iproute)
+ ("procps" ,procps)
+ ("sed" ,sed)))
(home-page "https://github.com/aristocratos/bashtop")
(synopsis "Linux/OSX/FreeBSD resource monitor")
(description "Resource monitor that shows usage and stats for processor,
--
2.33.1
J
J
Josselin Poiret wrote on 14 Nov 2021 16:19
[PATCH v2] gnu: bashtop: Add dependencies and wrap program with PATH
(name . Josselin Poiret)(address . dev@jpoiret.xyz)
20211114151949.19754-1-dev@jpoiret.xyz
Sorry for the noise, but the patch I just sent wasn't up to
satisfaction: using `which` in the build phases breaks
cross-compilation, and the build-system change was a bit of an
unwarranted change.

Here's a modified patch!

Best,
Josselin Poiret
-- >8 --

* gnu/packages/admin.scm (bashtop): Add dependencies, wrap the script
so that it can access the commands it needs.
---
gnu/packages/admin.scm | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)

Toggle diff (37 lines)
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 2a7b0f310d..fe3987a9b8 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -674,7 +674,29 @@ (define-public bashtop
(arguments
'(#:make-flags (list (string-append "PREFIX=" %output))
#:tests? #f ; bats test fails with loading load.bash
- #:phases (modify-phases %standard-phases (delete 'configure))))
+ #:phases (modify-phases %standard-phases
+ (delete 'configure)
+ (add-after 'install 'wrap
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let ((path (map (lambda (input)
+ (string-append (assoc-ref inputs
+ input)
+ "/bin"))
+ '("coreutils" "gawk" "glibc" "grep"
+ "iproute" "procps" "sed")))
+ (bashtop (string-append (assoc-ref outputs
+ "out")
+ "/bin/bashtop")))
+ (wrap-program bashtop
+ `("PATH" ":" = ,path))))))))
+ (inputs
+ `(("coreutils" ,coreutils)
+ ("gawk" ,gawk)
+ ("glibc" ,glibc) ; needed for the 'locale' binary
+ ("grep" ,grep)
+ ("iproute" ,iproute)
+ ("procps" ,procps)
+ ("sed" ,sed)))
(home-page "https://github.com/aristocratos/bashtop")
(synopsis "Linux/OSX/FreeBSD resource monitor")
(description "Resource monitor that shows usage and stats for processor,
--
2.33.1
M
M
Maxime Devos wrote on 14 Nov 2021 22:33
66d97324a177c60a7b52b54e88a35945870d4ef8.camel@telenet.be
Josselin Poiret via Bug reports for GNU Guix schreef op zo 14-11-2021
om 15:19 [+0000]:
Toggle quote (2 lines)
> +                       (wrap-program bashtop

The input "bash-minimal" is missing. Adding that input is required
for cross-compilation (otherwise a native bash instead of a bash
for the target is used). It should be reported by guix lint.

Greetings,
Maxime.

--
not hacking on guix for a while, only occassionally looking at IRC logs
and bug reports. E-mails are unsigned until backup is located.
?