/meta

Meta repository to tie together the various underlying z/OS Open Source tools repositories here

Primary LanguageShellApache License 2.0Apache-2.0

meta

Meta repository to tie together the various underlying z/OS Open Source tools repositories here.

View our documentation at https://zosopentools.github.io/meta/.

Background

There are some key 'foundational' Open Source technologies needed to port software. The goal of this set of repositories is to provide minimal 'port' repositories that can be used to get a foundational software package building on z/OS. We are starting with what we view as some 'foundational' technologies. One is the stack of technology to be able to build zsh. Another is to be able to build protocol buffers.

But - there is a transitive closure problem to address with porting a software package, namely understanding what packages are pre-requisites for the software package you want to port. As an example, for zsh, we see the following:

zsh requires autoconf to configure the build scripts, GNU make to run Makefiles, ncurses zsh is easier to develop (but doesn't require) curl and git natively on z/OS, and GNU techinfo for documentation

autoconf requires m4, automake, GNU make m4 requires a c99 compiler with c11 features, so ensure you have the latest C/C++ compilers installed on your system

GNU make requires GNU m4, automake, autoconf, Perl, and a C compiler that is gcc compatible

Perl requires a c89 compiler ncurses requires an ANSI C compiler

Order to Build from scratch

If you want to build the tools from scratch and not use the binary pax files available, you will want to tackle this in a particular order. First, you need to have some tools installed on your system:

System Pre-reqs:

Project License Download link
gnu make 4.1 GPL V3 z/OS Open Tools release
IBM XL C/C++ V2.4.1 IBM 1 ibm.com web download
git LGPL V2.1 z/OS Open Tools release
curl curl-license z/OS Open Tools release
gunzip GPL V3 z/OS Open Tools release

Recommended software:

Project License Download link
bash GPL V3 z/OS Open Tools release

Both IBM and Rocket provide supported versions of the software above for a fee.

Taking the defaults will mean there are less variables for you to configure. We recommend you structure your sandbox as follows:

  • Have the root of your development file system be $HOME/zopen (you will want to have several gigabytes of storage for use - we recommend at least 15GB)
  • Have sub-directories called boot, prod, dev.
    • boot: sub-directory for each tool required to bootstrap (make, git, curl, gunzip, m4)
    • prod: sub-directory for tools to be installed once built. These tools will be used by downstream software, e.g. make build process will use the Perl prod build
    • dev: sub-directory for tools you are building

Order to build:

The tools have dependencies on other tools, and there are also typically 2 ways the tools are packaged:

  • one that is pre-configured and therefore doesn't need autoconf/automake and associated tools
  • one that is not pre-reconfigured and therefore does require autoconf/automake and associated tools

To build from scratch, start with the tarballs of the following tools:

Project License Pre-requisites
m4 GPL V3 m4, curl in boot and xlclang installed on the system
perl GPL V3 additionally requires make, git in boot and m4 in prod
make GPL V3 perl in prod for running test cases
zlib zlib license make in prod
autoconf GPL V3 libz in prod
automake GPL V3 autoconf in prod

Once you either have these tools built, or have downloaded a pre-built pax file for the build, you may want to build other tools. Each tool has a buildenv file and one of the entries will describe the tools it requires to build, depending on where the source is from (currently TARBALL or GIT clone). So for example m4 requires:

  • ZOPEN_TARBALL_DEPS="curl gzip make m4" and:
  • ZOPEN_GIT_DEPS="git make m4 help2man perl makeinfo xz autoconf automake gettext"

If you want to build from the GIT clone, you can see you will need to have more software pre-installed.

Footnotes

  1. a no-charge add-on feature for clients that have enabled the XL C/C++ compiler (an optionally priced feature) on z/OS