Closed DarwinAwardWinner closed 13 years ago
Hmm. It turns out there's this alternative operating system called Windows, where one cannot rely on "sh" being available. Not sure what to do in that case.
Aha! We cheat and copy what "shell-command" does:
(call-process shell-file-name nil
(if error-file
(list t error-file)
t)
nil shell-command-switch command)
Hopefully this is more portable than "sh -c".
That would allow to support simple strings in either sync (call-process) or async (start-process) settings, good design :)
I think you can close this now, since #435 was merged.
See 9be99cc3dbb6c089e079585fe31f4f2e6cd10a39 for a description of the problem, and #426 for some further discussion
Here's a list of all the offending recipes and their offending build commands:
And here's the code I used to generate that:
I just figured out an easy way to execute a command as is when it is supplied as a single string. If the command is
"command with args && more commands"
, then we convert it to a list'("sh" "-c" "command with args && more commands")
. I tried manually making this change on the ProofGeneral recipe, and it worked (except that ProofGeneral compile process itself fails because it makes warnings fatal, and it produces an obsolete variable warning on Emacs 24).So I'm going to code up
el-get-build
to do this automatically, replacing the current behavior of splitting the string on spaces into a list. A cursory inspection of the offending commands listed above suggests that this approach should work for all of them.As a test case, I believe that emms fails to build because of quoting issues.