* 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 | 65 +++++++++++++++++++ gnu/packages/racket.scm | 1 + 3 files changed, 67 insertions(+) create mode 100644 gnu/packages/patches/racket-launcher-config-dir.patch diff --git a/gnu/local.mk b/gnu/local.mk index bbe6fe4fce..9690bbe647 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -2165,6 +2165,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/reduce-unbundle-libffi.patch \ %D%/packages/patches/remake-impure-dirs.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..9a1eec6e8b --- /dev/null +++ b/gnu/packages/patches/racket-launcher-config-dir.patch @@ -0,0 +1,65 @@ +From 6b3aed3d71ea9481762de7bd42395704176b6625 Mon Sep 17 00:00:00 2001 +From: Suhail <suh...@bayesians.ca> +Date: Mon, 16 Dec 2024 15:07:55 -0500 +Subject: [PATCH v2] racket: raco: Ensure launchers of packages include config + directory. + +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 (which is missing the -G configuration option +in the call to the racket binary), when invoked, 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 in the call to the racket binary fixes the +above error. + +The executable scripts (at least on linux) are generated via +make-unix-launcher in ./racket/collects/launcher/launcher.rkt . The patch +below ensures that the -G flag is added to such launcher scripts. The patch +is conservative in that it allows it to be overwritten by callers of +launcher.rkt as desired. + +--- + 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 2ff1d159fa..30c8e4df53 100644 --- a/gnu/packages/racket.scm +++ b/gnu/packages/racket.scm @@ -214,6 +214,7 @@ (define %racket-origin (base32 "1lci426vvi64s077vwkxdgpkda4aggafxz52k7km2p8ngwmg9f78")) (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: 1afbf48b250f667ce45de40a6c275e3e42ade67c