chicken-hackers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Chicken-hackers] [PATCH] #1277 make check failure on OS X 10.11


From: Jim Ursetto
Subject: [Chicken-hackers] [PATCH] #1277 make check failure on OS X 10.11
Date: Thu, 14 Apr 2016 15:22:59 -0500

This is an initial patchset for #1277 on which I invite comments.

The problem was correctly diagnosed in that OS X 10.11 blacklists
certain environment variables such as DYLD_LIBRARY_PATH from being
passed to trusted binaries, and /bin/sh is trusted.  This prevents
`make check` from working.

The cleanest solution was to change certain 'system' calls (to
chicken, csc and csi) to direct calls via 'process-run'.  This avoids
the blacklisting problem and as a bonus, lets us avoid quoting shell
metacharacters.

Since this needs thorough testing, it probably has to wait until after 4.11.  I did test building and rebuilding of the compiler as well as installing chickadee and dependencies, on OS X.

Issues:

1. I don't know if it works on Windows.  It needs to be tested.  If it
doesn't work we could fall back to the shell method, at the cost of
extra code.

2. Only the minimum required calls were changed to direct: csc call
out to chicken; chicken-install call out to csi; setup-api (compile)
calls.  There are several other opportunities for direct calls, but
they are not needed to pass the tests on OS X, so can be deferred until
after this is approved and verified to work.

3. Some code duplication for execing of processes.

4. It loses a bit of quoting in verbose mode; we don't try to simulate
a quoted shell command.

Compatibility issue:

The 'reverser' test executes a (compile) step via
(standard-extension), so the (compile) macro was converted to direct
call.  However, this affects a minority of eggs which execute
backticks or assume a string with spaces denotes multiple arguments
(usually, C or LD flags).  I think this is preferable and we should
disallow shell metacharacters in (compile).  (run (csc ...)) still
retains the old behavior, but a few eggs would have to be updated to
use this form, so this is backwards incompatible.  If not acceptable, we
could implement (compile*) separately and change standard-extension to
use it, which would allow the test to pass without disrupting any
eggs.


Attachment: 0001-Replace-csc-shell-out-to-chicken-with-direct-call-12.patch.txt
Description: Text document

Attachment: 0002-Replace-chicken-install-shell-out-to-csi-with-direct.patch.txt
Description: Text document

Attachment: 0003-Add-run-to-setup-api-change-compile-from-shell-to-di.patch.txt
Description: Text document


reply via email to

[Prev in Thread] Current Thread [Next in Thread]