Guix racket: binaries installed via "raco pkg install" missing --config directory

  • Open
  • quality assurance status badge
Details
One participant
  • Suhail Singh
Owner
unassigned
Submitted by
Suhail Singh
Severity
normal
S
S
Suhail Singh wrote on 13 Dec 2024 04:07
(name . Guix-bugs mailing list)(address . bug-guix@gnu.org)(name . Philip McGrath)(address . philip@philipmcgrath.com)
87ttb8b7sa.fsf@gmail.com
Hello Guix,

Currently, binaries installed via "raco" (included in Guix's "racket"
package) don't include the -G / --config configuration option specifying
the "Main configuration directory". This is problematic.

Specifically, when installing "rash" via raco using the below:

#+begin_src sh
raco pkg install rash
#+end_src

The resulting rash-repl binary is missing the -G configuration option in
the call to the racket binary. Invoking the installed rash-repl binary
results in the following error:

#+begin_src sh
standard-module-name-resolver: collection not found
for module path: (lib "rash/repl.rkt")
collection: "rash"
in collection directories:
${HOME}/.local/share/racket/8.14/collects
/gnu/store/vn20i9xk22czljr9drwzwpgw209l49s8-racket-vm-cs-8.14/opt/racket-vm/collects/
#+end_src

Adding the -G configuration option similar to what's included in the
"raco" script itself, fixes the above error.

The executable scripts (at least on linux) seem to be generated via
make-unix-launcher in ./racket/collects/launcher/launcher.rkt . What's
unclear is the best way in which to address this issue. For one thing,
the -G configuration option in the "raco" script (which addressed the
issue in the rash-repl script above) references the store location of
the racket guix package. However, the launcher.rkt (which contains the
definition of make-unix-launcher) file is compiled as part of
racket-vm-cs (which is an input of racket).

--
Suhail
S
S
Suhail Singh wrote on 16 Dec 2024 21:25
[PATCH] gnu: racket: Ensure package launchers reference config directory.
(address . 74845@debbugs.gnu.org)
1e53d03ab96410d841ed154d1c866e07b2973f84.1734413825.git.suhail@bayesians.ca
* gnu/packages/patches/racket-launcher-config-dir.patch: New file. With this
patch, packages installed at runtime via raco have configuration directory
correctly set.
* gnu/local.mk (dist_patch_DATA): Register it.
* gnu/packages/racket.scm (%racket-origin): Use it.

Change-Id: Ibba2d73b72a66e58a3c51dad8cf4fbf0c8969c4e
---
gnu/local.mk | 1 +
.../patches/racket-launcher-config-dir.patch | 33 +++++++++++++++++++
gnu/packages/racket.scm | 1 +
3 files changed, 35 insertions(+)
create mode 100644 gnu/packages/patches/racket-launcher-config-dir.patch

Toggle diff (65 lines)
diff --git a/gnu/local.mk b/gnu/local.mk
index ffb8eb6d29..774cc97a83 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2124,6 +2124,7 @@ dist_patch_DATA = \
%D%/packages/patches/rpcbind-CVE-2017-8779.patch \
%D%/packages/patches/rtags-separate-rct.patch \
%D%/packages/patches/racket-chez-scheme-bin-sh.patch \
+ %D%/packages/patches/racket-launcher-config-dir.patch \
%D%/packages/patches/racket-rktio-bin-sh.patch \
%D%/packages/patches/remake-impure-dirs.patch \
%D%/packages/patches/restartd-update-robust.patch \
diff --git a/gnu/packages/patches/racket-launcher-config-dir.patch b/gnu/packages/patches/racket-launcher-config-dir.patch
new file mode 100644
index 0000000000..575e3b6151
--- /dev/null
+++ b/gnu/packages/patches/racket-launcher-config-dir.patch
@@ -0,0 +1,33 @@
+From 6b3aed3d71ea9481762de7bd42395704176b6625 Mon Sep 17 00:00:00 2001
+From: Suhail <suhail@bayesians.ca>
+Date: Mon, 16 Dec 2024 15:07:55 -0500
+Subject: [PATCH v2] racket: raco: Ensure launchers of packages include config
+ directory.
+
+---
+ racket/collects/launcher/launcher.rkt | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/racket/collects/launcher/launcher.rkt b/racket/collects/launcher/launcher.rkt
+index 0faacec4ce..2c77d55caf 100644
+--- a/racket/collects/launcher/launcher.rkt
++++ b/racket/collects/launcher/launcher.rkt
+@@ -405,7 +405,14 @@
+ [x-flags? (and (eq? kind 'mred)
+ (eq? (cross-system-type) 'unix)
+ (not (script-variant? variant)))]
+- [flags (let ([m (assq 'wm-class aux)])
++ [flags (let ([m (assq 'wm-class aux)]
++ [flags (if (or (member "-G" flags)
++ (member "--config" flags))
++ flags
++ (list* "-G"
++ (format "~a"
++ (find-system-path 'config-dir))
++ flags))])
+ (if m
+ (list* "-J" (cdr m) flags)
+ flags))]
+--
+2.47.1
+
diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm
index 1016915b47..75f333c468 100644
--- a/gnu/packages/racket.scm
+++ b/gnu/packages/racket.scm
@@ -214,6 +214,7 @@ (define %racket-origin
(base32 "0hg113fnd4nkvisf0ia9b367h02xfww9kysnb6fc6iac059lpard"))
(file-name (git-file-name "racket" %racket-version))
(patches (search-patches "racket-chez-scheme-bin-sh.patch"
+ "racket-launcher-config-dir.patch"
"racket-rktio-bin-sh.patch"))
(modules '((guix build utils)))
(snippet

base-commit: 2e8a8b3ddb4ca31b918d63ff2957c6da1424a2a9
?
Your comment

Commenting via the web interface is currently disabled.

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

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