This is a sequel to the thread that started here:
http://lists.gnu.org/archive/html/guile-devel/2014-02/msg00047.html
As agreed with Mark at the end of that thread, please find below
patches that enable open-process and friends in the MinGW build of
Guile. The main changes since the patches I
Once open-process worked for me, I quickly found out that
modules/ice-9/popen.scm is not being compiled. This is because
configure.ac explicitly excludes it for systems lacking 'fork':
AM_CONDITIONAL([BUILD_ICE_9_POPEN],
[test "x$enable_posix" = "xyes" && test "x$ac_cv_func_fork" = "xyes"
Another issue related to open-process is that popen.test was being
skipped because if-supported returns #f. I fixed it thusly:
(define-syntax-rule (if-supported body ...)
(if (or (provided? 'fork)
((string-contains %host-type "-mingw32")))
(begin body ...)))
This issue is caused by code that treats file names like strings.
That fails when the compared strings differ by their directory
separators ('/' vs '\'). I bumped into this in a couple of tests that
failed or even aborted with backtrace.
A related issue is the file names passed to Bash via open-p
Hello, Eli,
Eli Zaretskii skribis:
> This is a sequel to the thread that started here:
>
> http://lists.gnu.org/archive/html/guile-devel/2014-02/msg00047.html
>
> As agreed with Mark at the end of that thread, please find below
> patches that enable open-process and friends in the MinGW build
> From: l...@gnu.org (Ludovic Courtès)
> Cc: Mark H Weaver , guile-devel@gnu.org
> Date: Sun, 29 Jun 2014 22:21:28 +0200
>
> > +#ifdef __MINGW32__
> > +
> > +#include
> > +
> > +# define WEXITSTATUS(stat_val) ((stat_val) & 255)
> > +# define WIFEXITED(stat_val) (((stat_val) & 0xC000) == 0)