Skip to content

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

Open
@avodonosov

Description

@avodonosov

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions