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.
?
Your comment

Commenting via the web interface is currently disabled.

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

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