CFFI grovel passes a broadcast-stream to (run-program ... :output $)
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
CFFI |
New
|
Undecided
|
Unassigned |
Bug Description
As you can see from this TravisCI log of cl-plus-ssl, ECL fails when it tries to grovel static-vectors library with ERROR:
:OUTPUT argument to RUN-PROGRAM does not have a file handle:
#<broadcast stream 00000000038cd5a0>
https:/
And indeed, in https:/
According to Fare "this is unlikely to work, not just on ECL, but on many other implementations with similar non-unreasonable limitations.
if you want the output to two streams, the portable thing to do is capture to a string, and princ the string to two streams."
The TravisCI build is run on ECL 16.1.2, ASDF 3.1.5.4 at 2016-12-05
(http://
description: | updated |
My original TravisCI issue isn't caused by cffi-grovel directly, it's a result of the :silent t flag passed to (ql:quickload ...). The :silent t feature is implemented in quicklisp by binding *standard-output* to a dummy broadcast stream. More details here: https:/ /github. com/roswell/ roswell/ issues/ 195
But I'm not closing the issue because a place where broadcast-stream is passed to run-program exists in cffi.
BTW, in a recent change in ASDF there is an explicit check on ECL that the stream was associated with a file descriptor: https:/ /github. com/fare/ asdf/blob/ 46eb49bf88ebd99 efb2b511a62a79d 778cc0240b/ uiop/run- program. lisp#L479