Port to z/OS

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Port to z/OS

Boost - Build mailing list
Hi,
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.)?

Regards,

Paul Groke

_______________________________________________
Unsubscribe & other changes: https://lists.boost.org/mailman/listinfo.cgi/boost-build
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Port to z/OS

Boost - Build mailing list
On Mon, Jun 12, 2017 at 4:04 AM, Groke, Paul via Boost-build <[hidden email]> wrote:
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?

Use github.
 
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.

I don't remember why this is.. Other than it's old ANSI-C code. Not sure how I feel about using raw files.
 
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?

I guess zero is fine initially. It just means any reporting that uses those numbers will be incorrect. I.e. I don't know of uses cases where the numbers are used that will fail if they are zero.
 
4) Is there some documentation/guideline for writing new compiler support files ("tools/xlcpp.jam" etc.)?

Not explicitly, AFAIK. But you should read through the extender chapter of the docs <http://www.boost.org/build/doc/html/bbv2/extender.html> at least. And use existing toolsets as examples.


--
-- Rene Rivera
-- Grafik - Don't Assume Anything
-- Robot Dreams - http://robot-dreams.net
-- rrivera/acm.org (msn) - grafikrobot/aim,yahoo,skype,efnet,gmail

_______________________________________________
Unsubscribe & other changes: https://lists.boost.org/mailman/listinfo.cgi/boost-build
Loading...