Problem with ACL on windows & proposed fix
edgar
edgar-rft at web.de
Sun Jun 28 17:44:09 UTC 2015
Am Sun, 28 Jun 2015 12:22:10 -0500
schrieb Robert Goldman <rpgoldman at sift.net>:
> On 6/27/15 Jun 27 -11:40 PM, Faré wrote:
> > On Fri, Jun 26, 2015 at 4:49 PM, Robert Goldman
> > <rpgoldman at sift.net> wrote:
> >> Sorry -- I've been traveling, so sat on this bug report for a
> >> while. Here's a test failure from Windows ACL. Looks like ACL is
> >> somehow not running the windows CWD program helper (which should
> >> invoke CMD.EXE), but instead is just taking the command and
> >> treating it as its own output.
> >>
> > Indeed, %run-program has these lines:
> > ;; NB: We do NOT add cmd /c here. You might want to.
> > #+(or allegro clisp) command
> >
> > Retrospectively, that's probably a mistake.
> >
> >> which suggests we should modify %NORMALIZE-COMMAND for Allegro to
> >> prepend "CMD /C " to all commands when on windows.
> >>
> > Yup.
> >
>
> Actually, I have a question about this: RUN-PROGRAM is supposed to
> run a program directly by default (as distinguished from
> RUN-SHELL-COMMAND), which has the (much more ambiguous) behavior of
> running through a shell.
>
> So it occurs to me that there are two possibilities:
>
> 1. We should be invoking CMD.EXE explicitly on Windows in ACL, as we
> discuss here. But there's a second possibility:
>
> 2. The definition of GETCWD-FROM-RUN-PROGRAM is wrong (see below). If
> G-F-R-P requires CMD.EXE, then doesn't that mean that
> GETCWD-FROM-RUN-PROGRAM is wrong because "echo %cd%" is a "shell"
> directive, and not a program to run? Doesn't %cd% require CMD.EXE?
> Indeed, doesn't G-F-R-P actually require a shell of some sort to do
> its job? Even on Unix, pwd is a shell command, right? So G-F-R-P
> should have :FORCE-SHELL T, shouldn't it?
>
> Oh, no, I see. if you provide a single string like "echo %cd%", you
> are implicitly specifying that you want the shell. But in this case
> why does (RUN-PROGRAM '("pwd" "-P")) work on Unix variants? Doesn't
> pwd require a shell?
At least here on Debian Linux there exist the external binary versions
/bin/echo and /bin/pwd additionally to the built-in shell commands.
> If my claim is correct, then an alternative patch is to:
>
> 1. Supply :FORCE-SHELL T in G-F-R-P
> 2. Change %normalize-system-command to explicitly supply "CMD /C" on
> Windows + ACL.
>
> I think that might be more correct than making ACL always explicitly
> use "CMD /C", since always supply CMD.EXE would make it impossible
> for ACL + Windows to ever provide the simpler behavior, right?
>
> <sigh>I should have put this in a launchpad ticket</sigh>
>
> Best,
> r
More information about the asdf-devel
mailing list