宋文武 writes: > iyzsong@member.fsf.org (宋文武) writes: > >> Christopher Baines writes: >> >>> Previously, the elixir package would often fail to build, as running :os:cmd >>> would fail, as /bin/sh doesn't exist when building the elixir package. These >>> changes fix that issue. >>> >>> * gnu/packages/erlang.scm (erlang)[arguments]: Add new patch-/bin/sh phase to >>> replace hardcoded references to /bin/sh with a file in the store. >>> --- >>> gnu/packages/erlang.scm | 21 +++++++++++++++++++++ >>> 1 file changed, 21 insertions(+) >>> >>> diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm >>> index 0e2b7b5bc..1fce57388 100644 >>> --- a/gnu/packages/erlang.scm >>> +++ b/gnu/packages/erlang.scm >>> @@ -127,6 +127,27 @@ >>> (date->string source-date-epoch >>> "{H,Mi,S} = {~H,~M,~S},"))) >>> #t))) >>> + (add-after 'unpack 'patch-/bin/sh >>> + (lambda _ >>> + (substitute* "erts/etc/unix/run_erl.c" >>> + (("sh = \"/bin/sh\";") >>> + (string-append "sh = \"" >>> + (which "sh") >>> + "\";"))) >>> + >>> + (substitute* "erts/emulator/sys/unix/sys_drivers.c" >>> + (("SHELL \"/bin/sh\"") >>> + (string-append "SHELL \"" >>> + (which "sh") >>> + "\""))) >>> + (substitute* "erts/emulator/sys/unix/erl_child_setup.c" >>> + (("SHELL \"/bin/sh\"") >>> + (string-append "SHELL \"" >>> + (which "sh") >>> + "\""))) >>> + >>> + (substitute* "lib/kernel/src/os.erl" >>> + (("/bin/sh") (which "sh"))))) >> >> It should return ‘#t’, otherwise look good to me! > > Oh, ‘substitute*’ does return ‘#t’ itself, never mind :-) I've added an explicit #t in there anyway, as I couldn't quite work out under what circumstances substitute* returned #t. The other phase in the erlang package using substitute* also explicitly returns #t.