Version 3.1.7.7 has been pushed
Elias Pipping
pipping.elias at icloud.com
Mon Aug 22 00:53:16 UTC 2016
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/ba8c24ec9eedca905fdf5e4068737abc0da0ebe5
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/a35fbe20f6f342aa21dda55b149a39b4c25a4ee3
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/ec74b27edc9e53fb25723a0613c1db78b63178ad
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.
More information about the asdf-devel
mailing list