diff --git a/pkgs/development/interpreters/rakudo/default.nix b/pkgs/development/interpreters/rakudo/default.nix index 76dd7ba163d2..ca6a5fd2d849 100644 --- a/pkgs/development/interpreters/rakudo/default.nix +++ b/pkgs/development/interpreters/rakudo/default.nix @@ -20,6 +20,15 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-rCLlLxFexk2fzuuSMrJjbwhgU+HgJNX6Ect6uCsuJmo="; }; + postPatch = '' + substituteInPlace src/core.c/CompUnit/Repository/Installation.rakumod \ + --subst-var out + ''; + + patches = [ + ./rakudo-plain-wrapper.patch + ]; + configureScript = "${lib.getExe perl} ./Configure.pl"; configureFlags = [ "--backends=moar" diff --git a/pkgs/development/interpreters/rakudo/rakudo-plain-wrapper.patch b/pkgs/development/interpreters/rakudo/rakudo-plain-wrapper.patch new file mode 100644 index 000000000000..aaab84cd129a --- /dev/null +++ b/pkgs/development/interpreters/rakudo/rakudo-plain-wrapper.patch @@ -0,0 +1,13 @@ +--- a/src/core.c/CompUnit/Repository/Installation.rakumod ++++ b/src/core.c/CompUnit/Repository/Installation.rakumod +@@ -848,6 +848,10 @@ + my $val = $1.Str; + given $op { + when "plain" | "plat-sep" { ++ # use rakudo from our store path and avoid PATH lookups ++ if $val ~~ / ^ "rakudo" / { ++ return '"@out@/bin/' ~ sh-escape($val) ~ '"'; ++ } + return '"' ~ sh-escape($val) ~ '"'; + } + when "cmd-args" {