Subject: [Boost-build] Port to z/OS
From: Groke, Paul (paul.groke_at_[hidden])
Date: 2017-06-12 09:04:19
I'd like to make the Boost.Build engine compilable (and of course usable) on z/OS. Mainly because I want to be able to execute unit tests for some Boost libraries on z/OS. Before I start I'd like to ask a few questions though.
I have already done a quick test, and I'll need to make (at least) the following modifications:
*) Replace wait4 by e.g. waitpid, because wait4 isn't available on z/OS
*) Modify the "is the child process ready" test, because feof always returns 1 for the child process pipes on z/OS
*) Modify the function that deals with ranges in the GLOB implementation because the current one crashes with character codes > 127 (and EBCDIC has a lot of "important" stuff > 127, e.g. the decimal digits)
Except for the feof thing those are more or less trivial and can easily be done so that there will be no real change (after C preprocessing) for the currently supported platforms.
Now my questions
1) The CONTRIBUTING page says to create patches and post them to the mailing list. Is this still current, or can I use github - i.e. fork/push/create pull-request?
2) I'm puzzled as to why the Boost.Build engine uses FILE* streams on UNIX-like platforms (execunix.c) and not raw file descriptors when reading output of the child processes. Do you think it would be acceptable to change that code to simply use the "raw" file descriptors on all platforms? AFAICT the only real difference should be buffering, and I don't think the buffering that FILE* provides is important for that use case.
3) Do you think it would be acceptable for a z/OS port to simply not support getting "system" and "user" times for child processes (e.g. by simply setting them to zero)? Or is there a simple way to reliably get the system/user times for *one* child process when using waitpid?
4) Is there some documentation/guideline for writing new compiler support files ("tools/xlcpp.jam" etc.)?
Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk