Skip to content

:silent t fails on ECL when a system invokes external program (like cffi-grovel) #136

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
avodonosov opened this issue Dec 11, 2016 · 0 comments

Comments

@avodonosov
Copy link

avodonosov commented Dec 11, 2016

Loading some systems requires running external program. Example of this is cffi-grovel. On ECL run-program can't work with an :output stream if that stream doesn't have a file descriptor.

(ql:quickload ... :silent t) implements silence by binding *standard-ouput* to a dummy broadcast stream. When cffi-grovel passes *standard-output*' to asdf:run-program` ECL signals an error:

:OUTPUT argument to RUN-PROGRAM does not have a file handle:
#<broadcast stream 00000000038cd5a0>.

More info here: roswell/roswell#195

I propose to at least signal warning when :silent t is used on ECL. Otherwise it's quite difficult to debug this problem (especially if that happens during TravisCI build and not on local machine).

Binding to /dev/null can make it working on ECL on unix-like systems.

Other approaches are possible too (e.g. extending ECL's run-program)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant