tweak for cffi-grovel::trim-whitespaces?

Mirko Vukovic mirko.vukovic at gmail.com
Wed Nov 11 20:42:47 UTC 2015


A bit more progress ... see below:

On Wed, Nov 11, 2015 at 2:51 PM, Mirko Vukovic <mirko.vukovic at gmail.com>
wrote:

>
>
> On Wed, Nov 11, 2015 at 1:32 PM, Luís Oliveira <luismbo at gmail.com> wrote:
>
>> On Wed, Nov 11, 2015 at 6:14 PM, Mirko Vukovic <mirko.vukovic at gmail.com>
>> wrote:
>> > I traced INVOKE, and UIOP/RUN-PROGRAM:RUN-PROGRAM.
>> >
>> > The problem originates in reading the output of
>> > uiop/run-program:run-program.  Here are the trace outputs for
>> > (CFFI-TOOLCHAIN:INVOKE "pkg-config.exe" "--version"):
>> >
>> >  <1 UIOP/RUN-PROGRAM:RUN-PROGRAM returned 3 values :
>> >  <1      NIL
>> >  <1      NIL
>> >  <1      0
>> > <0 CFFI-TOOLCHAIN:INVOKE returned 3 values :
>> > <0      NIL
>> > <0      NIL
>> > <0      0
>> >
>> > For some reason, the output of pkg-config is not being read.
>> >
>> > I will play with CCL:run-program to get output out of it, and then trace
>> > this back to uiop and invoke.
>>
>> Good job. Thanks for debugging this. Perhaps Faré can chime in since
>> he touched this code last. (I've cced him.)
>>
>> Cheers,
>>
>> --
>> Luís Oliveira
>> http://kerno.org/~luis/
>>
>
> To augment: this is not just a Windows+CCL issue.  On Windows+SBCL I get
> the same behavior:
>
> CL-USER> (trace cffi-toolchain:invoke uiop/run-program:run-program)
> (CFFI-TOOLCHAIN:INVOKE UIOP/RUN-PROGRAM:RUN-PROGRAM)
> CL-USER> (CFFI-TOOLCHAIN:INVOKE "pkg-config.exe" "--version")
>   0: (CFFI-TOOLCHAIN:INVOKE "pkg-config.exe" "--version")
> ; pkg-config.exe --version
>     1: (UIOP/RUN-PROGRAM:RUN-PROGRAM ("pkg-config.exe" "--version") :OUTPUT
>                                      :INTERACTIVE :ERROR-OUTPUT
> :INTERACTIVE)
>     1: UIOP/RUN-PROGRAM:RUN-PROGRAM returned NIL NIL 0
>   0: CFFI-TOOLCHAIN:INVOKE returned NIL NIL 0
> NIL
> NIL
> 0
>
> Mirko
>

If I modify INVOKE so that argument of RUN-PROGRAM'S :OUTPUT keyword is
:STRING (instead of :INTERACTIVE) I can capture the command output:

CL-USER> (CFFI-TOOLCHAIN:INVOKE "pkg-config.exe" "libffi" "--cflags")
  0: (CFFI-TOOLCHAIN:INVOKE "pkg-config.exe" "libffi" "--cflags")
; pkg-config.exe libffi --cflags
    1: (UIOP/RUN-PROGRAM:RUN-PROGRAM ("pkg-config.exe" "libffi" "--cflags")
                                     :OUTPUT :STRING :ERROR-OUTPUT :STRING)
    1: UIOP/RUN-PROGRAM:RUN-PROGRAM returned
         "-IE:/msys64/mingw64/lib/libffi-3.2.1/include

"
         ""
         0
  0: CFFI-TOOLCHAIN:INVOKE returned
       "-IE:/msys64/mingw64/lib/libffi-3.2.1/include^M

"
       ""
       0
"-IE:/msys64/mingw64/lib/libffi-3.2.1/include^M

"
""
0

My eyes glazed over while reading RUN-PROGRAM's description of the
:INTERACTIVE keyword.

Hopefully this can lead to a fix in UIOP or CFFI.

Mirko
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/cffi-devel/attachments/20151111/6c75c7fa/attachment-0001.html>


More information about the cffi-devel mailing list