mvslovers / brexx370

MVS version of Vasilis Vlachoudis awesome rexx implementation
46 stars 11 forks source link

New BREXX Build Engine and Github Actions #120

Closed mainframed closed 6 months ago

mainframed commented 6 months ago

New Build Engine

I've completely re-written the makefile and the build engine. Now a python script (which uses automvs), in conjuctions with the makefile, builds and tests BREXX370 on TK4-, MVS/CE and TK5, it also can make the XMIT files for those releases and push them to githum. It come with multiple make targets. The documentation is in the /build/ folder in the README.md file.

With these changes anyone now can build BREXX fully from source. There are no longer any pre-built object files, they are built using the make command as well.

To use this in a development capacity make sure you edit the make file to point at the TK4 or TK5 folder, make your changes and type make or make install or make test.

Releases

To make a BREXX release you can type make release which will make 3 ZIP files which include:

Testing

When running make test all tests from the /test folder as well as all the tests in the $TESTRX jcl file are run, the build fails if any of the tests fail.

Samples and rxlib changes

All the samples were changed such that no line in the sample file is longer than 80 chars. This is to accommodate the way files are uploaded to MVS using the card reader.

Also, the JESVIEW sample was change to handle the -8 return code on failure as it was failing some tests on MVS/CE.

Github Actions

The new github actions make heavy use of the new build engine and rely on each step to complete. On any pull request or push the test action will run which:

  1. Builds BREXX on MVS/CE, TK4-, and TK5
  2. Tests BREXX on MVS/CE, TK4-, and TK5
  3. If those succeed a pre-release build is made
  4. The prerelease XMIT and the included installation JCL is tested on MVS/CE, TK4-, and TK5
  5. If that also succeeds a pre-release version is added to the releases

There's also a release github action which will make an official release of the current version (it grabs the version to BREXX.h).

To make a release on github, in a terminal you can type git tag -a V2R5M3 -m "This is the new release", replacing the version number and hitting enter. Then type git push --tags and a new release of BREXX will be placed in github.

I should also not that the $README file in the BREXX XMIT is now automatically generated from the installation instructions in /docs/source/installation.rst. I've edited this file to ensure none of the lines are wider than 72 columns to make it easier to read in RFE/RPF.

Let me know if you have questions.