This version contains bug fixes for RUN-PROGRAM contributed by Elias Pipping, for which many, many thanks!
Dear Robert, dear list,
I’m happy to see the first changes to run-program in ASDF-3.1.7.7. I’m now working more pragmatically towards making others mergeable. As usual, the list can be viewed at
https://gitlab.common-lisp.net/asdf/asdf/merge_requests/3
As of right now, it looks like this:
8e4f7fd Add and use process-info class ec74b27 Add %if-on-lispworks?+ ba8c24e Bug fix: Exit code with LispWorks 7 a35fbe2 Bug fix: Store exit code with Allegro CL 104da21 Change :if-*-exists default to :supersede 4ef7409 Add and use not-implemented-error 6359a4b Add file-stream*-p c2d5de3 Add and use parameter-error. Reorganise errors. 7ae0bcf Fix warnings on ABCL, etc. fb3dd9a Add and use close-streams 4971606 Add %process-info-*put getters c7570da Tests: Cover %run-program and %wait-process-result 1f43e5d Do not pass unnecessary keywords to SBCL
b277485 Export and document (%)wait-process-result 63f5b27 Tests: wait-process-result is now exported c2a5e08 Add process-alive-p and %process-status 2832ac8 Tests: Cover process-alive-p / %terminate-process dcc1288 Add terminate-process and %posix-process-send-signal e950e02 Tests: Cover terminate-process
It’s again made up of two parts, the first is essentially cleanup, fixes, and tests for existing features. The second half is new features and tests for these features.
The second is definitely not ready to be merged(*), while the first half is ready to be merged modulo (at least that’s what I expect) additional cleanup, renames, moves, etc.. (once those are sorted out I would add another branch containing only those commits and their fixes). I’ll name two issues myself further down (with commit ec74b27 and fb3dd9a).
The new tests are hooked up to the `make test` mechanism; they will only run on unix and only on those platforms that I’ve tested them on so far.
Tests that deserve special mention are:
1/a %process-info-pid: basic functionality 2/b %wait-process-result: asynchronous (repeated)
The former would fail on LispWorks7 prior to the commit
ba8c24e Bug fix: Exit code with LispWorks 7 https://gitlab.common-lisp.net/epipping/asdf/commit/ba8c24ec9eedca905fdf5e40...
mentioned above (and thus e.g. with ASDF 3.1.7.7). The former would fail on Allegro CL prior to the commit
a35fbe2 Bug fix: Store exit code with Allegro CL https://gitlab.common-lisp.net/epipping/asdf/commit/a35fbe20f6f342aa21dda55b...
mentioned above (and thus also with ASDF 3.1.7.7).
A commit that I’m personally not yet happy with is
ec74b27 Add %if-on-lispworks?+ https://gitlab.common-lisp.net/epipping/asdf/commit/ec74b27edc9e53fb25723a06...
The functionality should probably be moved to common-lisp.lisp or utility.lisp. Maybe the name should change. And if we decide not to support mkcl 1.1.9 and earlier(**), the #+mkcl clause can also go.
It might also be odd to make close-streams a public function already when it only makes sense to run on a process spawned via `(%run-program :wait nil)` which is not yet public; if so, I could split up
fb3dd9a Add and use close-streams https://gitlab.common-lisp.net/epipping/asdf/commit/fb3dd9a
into two commits: one that adds and uses a private %close-stream and another (to be pushed at a later point in time) that makes it public.
Elias
(*) Main issues: - Segfault with ECL that I don’t understand - determine if terminate-process is ever safe to call on unix (I think so, please see my previous e-mails) - decide (and then document) if it’s okay to call terminate-process repeatedly. - decide how asynchronous process spawning (through %run-program :wait nil) should be exposed (similar to how %run-program :wait t is currently exposed through run-program) (**) Tests have not worked on 1.1.9 for quite a while now. Unfortunately, 1.1.10 is still not out, though.