Skip to content

Commit f4ba62d

Browse files
authored
Merge pull request #626 from IBM/develop
Release zAppBuild 3.11.0
2 parents db9fb09 + 476b3ce commit f4ba62d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+1435
-358
lines changed

README.md

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,30 @@
11
# zAppBuild
2+
23
zAppBuild is a generic build solution for building z/OS applications using Apache Groovy build scripts and IBM Dependency Based Build (DBB) APIs.
34

45
## Resources
6+
57
* [IBM Dependency Based Build Product Page](https://www.ibm.com/products/dependency-based-build)
6-
* [IBM DBB Knowledge Center](https://www.ibm.com/docs/en/dbb/1.1.0)
8+
* [IBM DBB Knowledge Center](https://www.ibm.com/docs/en/adffz/dbb/3.0.0)
79
* [IBM/dbb Repository](https://github.com/IBM/dbb/)
810
* [IBM IDZ Community](https://community.ibm.com/community/user/ibmz-and-linuxone/groups/topic-home?CommunityKey=f461c55d-159c-4a94-b708-9f7fe11d972b)
911
* [IBM DBB Community](https://community.ibm.com/community/user/ibmz-and-linuxone/groups/topic-home?CommunityKey=20c9b889-9450-4ab6-8f11-8a5eb2b3342d)
1012

1113

1214
## Contributing
15+
1316
For instructions on how to contribute enhancements and bug fixes to zAppBuild, please read the [Contributions Guidelines](CONTRIBUTIONS.md).
1417

1518
## How zAppBuild works
19+
1620
The zAppBuild repository is intended to be cloned to a single location on Unix Systems Services (USS) and used to build all of your z/OS applications. Global configuration properties are configured in the properties files in the [build-conf](build-conf/) directory. Specifying application-level properties is done by simply copying the supplied `application-conf` folder (located in the [samples folder](samples)) to the application source repository you want to build and then verify/update the contained default configuration property values to ensure they meet the build requirements of your application. See the included [MortgageApplication](samples/MortgageApplication) sample for an example of an application that has been modified to be built by zAppBuild.
1721

1822
**IMPORTANT** : The [datasets.properties](build-conf/datasets.properties) must be configured for your build machine before executing a build! See [build-conf/README.md](build-conf/README.md) for more information.
1923

2024
## Supported Languages
25+
2126
The zAppBuild sample provides the following *language* build scripts by default:
27+
2228
* Assembler.groovy
2329
* BMS.groovy
2430
* Cobol.groovy
@@ -37,11 +43,13 @@ The zAppBuild sample provides the following *language* build scripts by default:
3743
All language scripts both compile and optionally link-edit programs. The language build scripts are intended to be useful out of the box but depending on the complexity of your applications' build requirements, may require modifications to meet your development team's needs. By following the examples used in the existing language build scripts of keeping all application specific references out of the build scripts and instead using configuration properties with strong default values, the zAppBuild sample can continue to be a generic build solution for all of your specific applications.
3844

3945
## Build Scope
46+
4047
The build scope of zAppBuild is an application which is loosely defined as one or more Git repositories containing all the z/OS source files required to build the application. There are no specific rules as to the structure of the repositories except that one repository must contain the high level `application-conf` folder provided by zAppBuild which contains all of the configuration properties for building the application programs.
4148

4249
**NOTE:** All source repositories that make up the application must be cloned on the build machine under a common *workspace* directory prior to calling build.groovy.
4350

4451
zAppBuild supports a number of build scenarios:
52+
4553
* **Single Program** - Build a single program in the application.
4654
* **List of Programs** - Build a list of programs provided by a text file.
4755
* **Full Build** - Build all programs (or buildable files) of an application.
@@ -51,8 +59,9 @@ zAppBuild supports a number of build scenarios:
5159
* **Merge Build** - Build only changed programs which will be merged back into the mainBuildBranch by using a triple-dot git diff.
5260
* **Scan Source** - Skip the actual building and only scan source files to store dependency data in collection (migration scenario).
5361
* **Scan Source + Outputs** - Skip the actual building and only scan source files and existing load modules to dependency data in source and output collection (migration scenario with static linkage scenarios).
54-
* **Build Preview** - Supplemental build option. Process all phases of the supplied build option, but will not execute the commands. A build report and a build result are generated with a specific status that excludes them in subsequent impact build calculations.
62+
* **Build Preview** - Supplemental build option. Process all phases of the supplied build option, but will not execute the commands. A build report and a build result are generated with a specific status that excludes them in subsequent impact build calculations.
5563

64+
To check how to get started with zAppBuild, see [Getting started with zAppbuild](./docs/GettingStarted.md) section.
5665

5766
Instructions on invoking a zAppBuild is included in [docs/BUILD.md](docs/BUILD.md) as well as invocation samples for the above mentioned build scenarios including sample console logs.
5867

@@ -63,6 +72,7 @@ zAppBuild comes with a set of reporting features. It helps development teams to
6372
Links to additional documentation is provided in the table below.
6473

6574
## Repository Legend
75+
6676
Folder/File | Description | Documentation Link
6777
--- | --- | ---
6878
build-conf | This folder contains global configuration properties used by build.groovy and language build scripts. | [build-conf/README.md](build-conf/README.md)

build-conf/ACBgen.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ acbgen_loadPDS=${hlq}.ACBLIB
2121
acbgen_loadDatasets=${acbgen_loadPDS}
2222
acbgen_loadOptions=cyl space(5,5) dir(40) dsorg(PO) recfm(U) blksize(32760) dsntype(PDS)
2323

24-
acbgen_tempOptions=cyl space(5,5) unit(vio) blksize(80) lrecl(80) recfm(f,b) new
24+
acbgen_tempOptions=cyl space(5,5) unit(vio) lrecl(80) recfm(f,b) new
2525

2626
# List of output datasets to document deletions
2727
acbgen_outputDatasets=${acbgen_loadPDS}

build-conf/Assembler.properties

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ assembler_loadOptions=cyl space(1,1) dsorg(PO) recfm(U) blksize(32760) dsntype(l
3636

3737
#
3838
# temporary data set allocations
39-
assembler_tempOptions=cyl space(5,5) unit(vio) blksize(80) lrecl(80) recfm(f,b) new
39+
assembler_tempOptions=cyl space(5,5) unit(vio) lrecl(80) recfm(f,b) new
4040

4141
#
4242
# sysadata data set creation options
@@ -67,14 +67,23 @@ assembler_linkEditor=IEWBLINK
6767
# additional libraries for linkEdit SYSLIB concatenation, comma-separated, see definitions in application-conf
6868
# assembler_linkEditSyslibConcatenation=
6969

70-
# assembler_dependenciesDatasetMapping - an optional dbb property mapping to map dependencies to different target datasets
71-
# this property is used when dependencies are copied to the different build libraries, e.q dclgens going into to a dedicated library
72-
# note, that a dependency file needs to match a single rule, target dataset definitions need to exist
70+
# assembler_dependenciesDatasetMapping - an optional property mapping to map dependencies to different target datasets
71+
# this property is used when dependencies are copied to the different build libraries, e.q assembler copy going into to a dedicated library
7372
#
74-
# sample:
75-
# assembler_dependenciesDatasetMapping = assembler_macroPDS :: **/macro/*.mac
73+
# default copies all dependencies into the dependency dataset definition
74+
# assembler_dependenciesDatasetMapping = assembler_macroPDS
75+
#
76+
# sample to override for a subset of dependencies using DBB file properties:
7677
# assembler_dependenciesDatasetMapping = assembler_cpyPDS :: **/copy/*.asmcpy
7778
#
78-
# default copies all dependencies into the dependency dataset definition which was previously passed to the utilities/BuildUitilities.copySourceFiles method
79-
# assembler_dependenciesDatasetMapping = assembler_macroPDS :: **/*
80-
assembler_dependenciesDatasetMapping = assembler_macroPDS :: **/*
79+
assembler_dependenciesDatasetMapping = assembler_macroPDS
80+
81+
# assembler_dependenciesCopyMode defines the copy mode to copy files from the build workspace into the target libraries
82+
# default sets the mode to TEXT transfer
83+
# assembler_dependenciesCopyMode = TEXT
84+
#
85+
# sample to override for a subset of dependencies using DBB file properties:
86+
# copy resolved object decks as binary object:
87+
# assembler_dependenciesCopyMode = BINARY :: **/*.OBJ
88+
#
89+
assembler_dependenciesCopyMode = TEXT

build-conf/BMS.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ bms_srcOptions=cyl space(1,1) lrecl(80) dsorg(PO) recfm(F,B) dsntype(library)
2323
bms_loadDatasets=${bms_loadPDS}
2424
bms_loadOptions=cyl space(1,1) dsorg(PO) recfm(U) blksize(32760) dsntype(library)
2525

26-
bms_tempOptions=cyl space(5,5) unit(vio) blksize(80) lrecl(80) recfm(f,b) new
26+
bms_tempOptions=cyl space(5,5) unit(vio) lrecl(80) recfm(f,b) new
2727

2828
# List of output datasets to document deletions
2929
bms_outputDatasets=${bms_cpyPDS},${bms_loadPDS}

build-conf/CPP.properties

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# Releng properties used by language/cc.groovy
2+
3+
#
4+
# Comma separated list of required build properties for language/cc.groovy
5+
cpp_requiredBuildProperties=cpp_srcPDS,cpp_objPDS,cpp_loadPDS, \
6+
cpp_compiler,cpp_linkEditor,cpp_tempOptions,cpp_compileMaxRC,SCCNCMP\
7+
8+
9+
#
10+
# CC compiler name
11+
cpp_compiler=CCNDRVR
12+
13+
# CC linker name
14+
cpp_linkEditor=IEWBLINK
15+
16+
#
17+
# cc source data sets
18+
cpp_srcPDS=${hlq}.CPP
19+
cpp_headerPDS=${hlq}.CPP.H
20+
cpp_objPDS=${hlq}.OBJ
21+
22+
#
23+
# cc load data sets
24+
cpp_loadPDS=${hlq}.LOAD
25+
26+
# List the data sets that need to be created and their creation options
27+
cpp_srcDatasets=${cpp_srcPDS},${cpp_headerPDS},${cpp_objPDS}
28+
29+
cpp_srcOptions=cyl space(1,1) lrecl(80) dsorg(PO) recfm(F,B) dsntype(library)
30+
31+
cpp_loadDatasets=${cpp_loadPDS}
32+
cpp_loadOptions=cyl space(1,1) dsorg(PO) recfm(U) blksize(32760) dsntype(library)
33+
34+
cpp_tempOptions=cyl space(5,5) unit(vio) lrecl(80) recfm(f,b) new
35+
cpp_tempListOptions=cyl space(15,15) lrecl(137) recfm(v,b) new
36+
37+
#
38+
# List of output datasets to document deletions
39+
cpp_outputDatasets=${cpp_loadPDS}
40+
41+
# CC scanner language hint
42+
dbb.DependencyScanner.languageHint=C :: **/*.c, **/*.cpp, **/*.h
43+
44+
# cpp_dependenciesDatasetMapping - an optional dbb property mapping to map dependencies to different target datasets
45+
# this property is used when dependencies are copied to the different build libraries, e.q dclgens going into to a dedicated library
46+
# note, that a dependency file needs to match a single rule
47+
#
48+
# default copies all dependencies into the dependency dataset definition
49+
# cpp_dependenciesDatasetMapping = cpp_headerPDS
50+
#
51+
# sample to override for a subset of dependencies using DBB file properties:
52+
# copy dclgens into a different library:
53+
# cpp_dependenciesDatasetMapping = cpp_dclgensPDS :: **/dclgens/*.h
54+
cpp_dependenciesDatasetMapping = cpp_headerPDS
55+
56+
# cpp_dependenciesCopyMode defines the copy mode to copy files from the build workspace into the target libraries
57+
# default sets the mode to TEXT transfer
58+
# cpp_dependenciesCopyMode = TEXT
59+
#
60+
# Can be overridden for a subset of dependencies using DBB file properties.
61+
cpp_dependenciesCopyMode = TEXT

build-conf/Cobol.properties

Lines changed: 48 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,12 @@ cobol_objPDS=${hlq}.OBJ
2323
cobol_dbrmPDS=${hlq}.DBRM
2424
cobol_BMS_PDS=${team}.BMS.COPY
2525

26+
#
27+
# data sets used to pass in external dependencies
28+
# both for compile and link steps
29+
cobol_import_cpyPDS=${hlq}.COPY.IMP
30+
cobol_import_objPDS=${hlq}.OBJ.IMP
31+
2632
#
2733
# COBOL load data sets
2834
cobol_loadPDS=${hlq}.LOAD
@@ -38,13 +44,17 @@ cobol_testcase_loadPDS=${hlq}.TEST.LOAD
3844
#
3945
# List the data sets that need to be created and their creation options
4046
cobol_srcDatasets=${cobol_srcPDS},${cobol_cpyPDS},${cobol_objPDS},${cobol_dbrmPDS}
47+
# When zAppBuild is enabled to resolve dependencies from external archives,
48+
# the datasets referenced by 'cobol_cpyImpPDS' and 'cobol_objImpPDS' need to be added to be created
49+
# cobol_srcDatasets=${cobol_srcPDS},${cobol_cpyPDS},${cobol_objPDS},${cobol_dbrmPDS},${cobol_import_cpyPDS},${cobol_import_objPDS}
50+
4151
cobol_srcOptions=cyl space(1,1) lrecl(80) dsorg(PO) recfm(F,B) dsntype(library)
4252

4353
cobol_loadDatasets=${cobol_loadPDS}
4454
cobol_loadOptions=cyl space(1,1) dsorg(PO) recfm(U) blksize(32760) dsntype(library)
4555

46-
cobol_tempOptions=cyl space(5,5) unit(vio) blksize(80) lrecl(80) recfm(f,b) new
47-
cobol_printTempOptions=cyl space(5,5) unit(vio) blksize(133) lrecl(133) recfm(f,b) new
56+
cobol_tempOptions=cyl space(5,5) unit(vio) lrecl(80) recfm(f,b) new
57+
cobol_printTempOptions=cyl space(5,5) unit(vio) lrecl(133) recfm(f,b) new
4858

4959

5060
#
@@ -81,12 +91,42 @@ cobol_dependenciesAlternativeLibraryNameMapping=
8191

8292
# cobol_dependenciesDatasetMapping - an optional dbb property mapping to map dependencies to different target datasets
8393
# this property is used when dependencies are copied to the different build libraries, e.q dclgens going into to a dedicated library
84-
# note, that a dependency file needs to match a single rule
8594
#
86-
# sample:
87-
# cobol_dependenciesDatasetMapping = cobol_cpyPDS :: **/copybook/*.cpy
95+
# default copies all dependencies into the dependency dataset definition
96+
# cobol_dependenciesDatasetMapping = cobol_cpyPDS
97+
#
98+
# sample to override for a subset of dependencies using DBB file properties:
99+
# copy dclgens into a different library:
88100
# cobol_dependenciesDatasetMapping = cobol_dclgenPDS :: **/dclgens/*.cpy
89101
#
90-
# default copies all dependencies into the dependency dataset definition which was previously passed to the utilities/BuildUitilities.copySourceFiles method
91-
# cobol_dependenciesDatasetMapping = cobol_cpyPDS :: **/*
92-
cobol_dependenciesDatasetMapping = cobol_cpyPDS :: **/*
102+
cobol_dependenciesDatasetMapping = cobol_cpyPDS
103+
# target the object dataset for any dependencies with file extension OBJ
104+
cobol_dependenciesDatasetMapping = cobol_import_objPDS :: **/*.OBJ
105+
106+
# cobol_compileDependenciesDatasets - comma-separated list of additional datasets containing
107+
# dependencies resolved from the 'import' directory external for the compile step
108+
# OR
109+
# dependencies that got loaded into different target datasets via the
110+
# cobol_dependenciesDatasetMapping mapping
111+
#
112+
# these data sets are then added to the SYSLIB concatenation for the compile step
113+
#
114+
cobol_compileDependenciesDatasets = ${cobol_import_cpyPDS}
115+
116+
# cobol_linkEditDependenciesDatasets - comma-separated list of datasets containing
117+
# dependencies resolved from the 'import' directory external for the linkEdit step
118+
#
119+
# These data sets are then added to the SYSLIB concatenation
120+
#
121+
cobol_linkEditDependenciesDatasets = ${cobol_import_objPDS}
122+
123+
# cobol_dependenciesCopyMode defines the copy mode to copy files from the build workspace into the target libraries
124+
# default sets the mode to TEXT transfer
125+
# cobol_dependenciesCopyMode = TEXT
126+
#
127+
# sample to override for a subset of dependencies using DBB file properties:
128+
# copy resolved object decks as binary object:
129+
# cobol_dependenciesCopyMode = BINARY :: **/*.OBJ
130+
cobol_dependenciesCopyMode = TEXT
131+
# target the object dataset for any dependencies with file extension OBJ
132+
cobol_dependenciesCopyMode = BINARY :: **/*.OBJ

build-conf/DBDgen.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ dbdgen_srcOptions=cyl space(1,1) lrecl(80) dsorg(PO) recfm(F,B) dsntype(library)
2323
dbdgen_loadDatasets=${dbdgen_loadPDS}
2424
dbdgen_loadOptions=cyl space(1,1) dsorg(PO) recfm(U) blksize(32760) dsntype(library)
2525

26-
dbdgen_tempOptions=cyl space(5,5) unit(vio) blksize(80) lrecl(80) recfm(f,b) new
26+
dbdgen_tempOptions=cyl space(5,5) unit(vio) lrecl(80) recfm(f,b) new
2727

2828
# Allocation of SYSMLSD Dataset used for extracting Compile Messages to Remote Error List
2929
dbdgen_compileErrorFeedbackXmlOptions=tracks space(200,40) dsorg(PS) blksize(27998) lrecl(16383) recfm(v,b) new keep

build-conf/Easytrieve.properties

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,30 @@ easytrieve_srcOptions=cyl space(1,1) lrecl(80) dsorg(PO) recfm(F,B) dsntype(libr
3636
easytrieve_loadDatasets=${easytrieve_loadPDS}
3737
easytrieve_loadOptions=cyl space(1,1) dsorg(PO) recfm(U) blksize(32760) dsntype(library)
3838

39-
easytrieve_tempOptions=cyl space(5,5) unit(vio) blksize(80) lrecl(80) recfm(f,b) new
40-
easytrieve_printTempOptions=cyl space(5,5) unit(vio) blksize(133) lrecl(133) recfm(f,b) new
39+
easytrieve_tempOptions=cyl space(5,5) unit(vio) lrecl(80) recfm(f,b) new
40+
easytrieve_printTempOptions=cyl space(5,5) unit(vio) lrecl(133) recfm(f,b) new
4141

4242
#
4343
# List of output datasets to document deletions
4444
easytrieve_outputDatasets=${easytrieve_loadPDS}
4545

46+
# easytrieve_dependenciesDatasetMapping - an optional property mapping to map dependencies to different target datasets
47+
# this property is used when dependencies are copied to the different build libraries, e.q easytrieve copys going into to a dedicated library
48+
#
49+
# default copies all dependencies into the dependency dataset definition
50+
# easytrieve_dependenciesDatasetMapping = easytrieve_cpyPDS
51+
#
52+
# sample to override for a subset of dependencies using DBB file properties:
53+
# easytrieve_dependenciesDatasetMapping = easytrieve_macPDS :: **/copy/*.etzmac
54+
#
55+
easytrieve_dependenciesDatasetMapping = easytrieve_cpyPDS
56+
57+
# easytrieve_dependenciesCopyMode defines the copy mode to copy files from the build workspace into the target libraries
58+
# default sets the mode to TEXT transfer
59+
# easytrieve_dependenciesCopyMode = TEXT
60+
#
61+
# sample to override for a subset of dependencies using DBB file properties:
62+
# easytrieve_dependenciesCopyMode = BINARY :: **/*.OBJ
63+
#
64+
easytrieve_dependenciesCopyMode = TEXT
65+
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Releng properties used by zAppBuild
22

33
# Default allocation options for in-stream DD statements
4-
global_instreamDataTempAllocation=tracks space(5,5) unit(vio) blksize(80) lrecl(80) recfm(f,b) new
4+
global_instreamDataTempAllocation=tracks space(5,5) unit(vio) lrecl(80) recfm(f,b) new
55

build-conf/LinkEdit.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ linkedit_srcOptions=cyl space(1,1) lrecl(80) dsorg(PO) recfm(F,B) dsntype(librar
2727
linkedit_loadDatasets=${linkedit_loadPDS}
2828
linkedit_loadOptions=cyl space(1,1) dsorg(PO) recfm(U) blksize(32760) dsntype(library)
2929

30-
linkedit_tempOptions=cyl space(5,5) unit(vio) blksize(80) lrecl(80) recfm(f,b) new
30+
linkedit_tempOptions=cyl space(5,5) unit(vio) lrecl(80) recfm(f,b) new
3131

3232
#
3333
# List of output datasets to document deletions

0 commit comments

Comments
 (0)