Hi,

Definitely our goal is to make z/OS a first class development platform,
and not just a target platform. A few of us in the z/OS community
have started down this path back in December and we are working our
way up the tool chain.
Our approach is to build these tools as 64-bit ASCII-based (not EBCDIC-based)
now that z/OS has good support for ASCII and UTF8 in the system.
So far, we have been working with the various communities and creating
patches to the supported tarball and/or the git dev line for the different
tools. The goal is to keep the patches as close to 0 as possible by upstreaming
as we go.
‘bash’ is higher up the stack (along with zsh). So – they are definitely 
something
we plan to do – we just haven’t got that far up the stack yet.
Here is our starter list of ports we are working on: 
https://github.com/ZOSOpenTools
Some like Perl, m4, make are relatively far along. We have up-streamed many
Perl patches with the guidance of Karl Williamson for example. m4 has patches
I have developed for the tarball build, but I am now working on getting the git 
dev
line to build so that I can bring patches forward for upstreaming.

We also have CI/CD public facing systems we use for ensuring we not only get
The code running, but keep it running. We plan to make these systems available
more broadly very soon and integrate them into continuous build processes for 
the
open source packages, where the open source communities are willing.

This approach of ASCII-based tools is consistent with what IBM and Rocket have 
been
doing for awhile now. The big shift is to do this all in the open rather than 
doing one-off
ports (Node.js, Go, Python, clang, Java are all available for free with 
optional S&S through
IBM and a variety of tools like git and bash are available from Rocket through 
their anaconda
tooling for free with optional S&S).

The first on the ‘developed completely in the open’ is Perl:
https://github.com/ZOSOpenTools/perlport where I got it up and running with 
Karl’s help
then got patches upstreamed and we have the source and binaries and build all 
available
(the perlport repo is strictly for build scripts and patches and docs – it 
pulls in the actual
code from the perl ‘blead’ line). The binaries we build through our CI/CD 
Jenkins server
are at: https://github.com/ZOSOpenTools/perlport/tags

Thanks, Mike


From: Bruno Haible <br...@clisp.org>
Date: Tuesday, May 31, 2022 at 05:15
To: bug-gnulib@gnu.org <bug-gnulib@gnu.org>
Cc: Mike Fulton <fult...@ca.ibm.com>
Subject: [EXTERNAL] Re: Failure running gnulib-tool update on z/OS
Hi,

Mike Fulton wrote:
> I am attempting to bootstrap m4 on z/OS which uses gnulib-tool.

We need to distinguish two concepts: The development platform and the
target platform.

* The target platform is the type of system where the collected C code is
  being run. Gnulib attempts to support a lot of target platforms.
  See [1] for more info about the target platforms.

* The development platform is the type of system where 'git clone',
  'gnulib-tool', 'automake', 'autoconf', 'gperf' etc. are being run.
  Not all target platforms are usable as development platforms:
    - embedded systems, due to lack of memory,
    - native Windows platforms, due to trouble with file names and path names,
    - platforms with an absent or deficient /bin/sh, such as Android and
      Solaris 10.

Note: The C compiler is sometimes used on the target platform, sometimes
on the development platform.

z/OS is not even listed among the supported target platforms [1], because no
one is regularly running the Gnulib test suite on this platform. But with
some effort (especially to resolve the pervasive ASCII vs. EBCDIC problems on
this platform) there is a possibility that it could be got working.

Using z/OS as a development platform, OTOH, requires decent ports of the
development tools. Your mail seems to indicate that /bin/sh is a major stumbling
point. Another one will likely be gperf (which assumes ASCII).

Therefore my recommendation is to use a GNU system as development platform
and z/OS as target platform only. This means, create a tarball of sources
on the GNU system and compile it on the target platform.

Bruno

[1] https://www.gnu.org/software/gnulib/manual/html_node/Target-Platforms.html


Reply via email to