...
No Format |
---|
subprocess is required for this tool and is not present in versions prior to 2.4.0 usage: buildCreator.py [options] options: -h, --help show this help message and exit -c, --config=CONFIG set configuration file : default = build.config -v, --verbose enable verbose output -d, --debug enable debug output -q, --quiet Enable quiet ouptut -i, --ignore-errors Ignore errors |
...
There are a number of available targets:
No Format |
---|
Available Targets:
distclean [source] - Remove all or specified retrieved source
clean [source] - Remove all or specified source build directory
retrieve [source] - Retrieve all or specified source
prepare [source] - Prepare all or specified source : i.e. extract archives
patch [source] - Patch all or specified source
showbuilds - List all builds
build [build] - Perform the build scripts for all or specified build
release [build] - Perform the release scripts for all or specified source
full - Perform clean, retrieve, prepare, patch, build, release for all builds (DEFAULT)
|
Targets
The default target is full which as listed above will perform all the required steps to create all the releases for the builds listed in the configuration. Most of the targets do exactly what they say above however a few have additional points of interest:
retrieve
The retrieve target pulls together all the source and patches and places this pristine copy in the builder/src directory. This is done so that the build can be repeatable performed with the untouched source.
prepare
The prepare target creates the builder/build tree and copies the source and patches for the later stages. If the source was not retrieved svn then the files are inspected and if an archive format is found this is expanded into the build directory.
release
The release scripts that are specified in the build files can contain a version macro $writeVersions(file). This will append details about the sources and patches used to generate this release artefact. If svn targets are used then the revision information will be added to the file.
Configuration Details
Two files are currently required by the tool the main configuration file and the build file.
...
The main configuration file (build.config by default) specifies the various sources, patches and builds that should be utilised.
The configuration file is used to define any common environment variables that may be used for substitution in the build scripts. The <sources> section contains a list of all source locations that the build will utilise. The <patch> section allows a number of patches to be specified to apply to the pristinely downloaded source to be modified.
NOTE: Limitiations
The build section can only contain <include> values not <build> elements directly
No Format |
---|
<builder> <environment> <[variable]>[value]</[variable]> </environment> <sources> <source> <name>[source-name]</name> <type>[source-type:svn|file|http|ftp]</type> <url>[value]</url> <path>[root offset, useful if to point the root of the source in to an archive output]</path> </source> </sources> <patches> <patch> <name>[patch-name]</name> <type>[source-type:svn|file|http|ftp]</type> <url>[value]</url> <source>[source name this patches]</source> <prefix>[patch prefix -p value]</prefix> <path>[root offset, useful if the base of the patch is not the root of the source]</path> </patch> </patches> <builds> <include>[string which is sent to ls to retrieve build include file so 'builds/*.build' works]</include> </builds> </builder> |
Build file
The build file contains scripts to perform the building and release of the build.
Limitiations
Anchor | ||||
---|---|---|---|---|
|
Source Section
The <source> section contains a number of required values.
Entry | Description |
<name> | The name you wish to give to this build. This value should not contain spaces as it can be used in the build and release scripts as a variable to refer to the build location. |
<type> | There are four types of source svn, file, http, ftp. These are explained further below |
<url> | This is the URL or file path to this source |
<path> | Optional path if you wish to move the root of the source. i.e. in to an archive file |
Source Types
The <type> of the determines how the creator will post process the file.
Type | Description |
svn | Uses svn to retrieve the given <url>, An optional <revision> element can be added to source to be used by the svn checkout |
file | Uses cp to take a copy of the specified file. |
http | Uses wget to retrieve the specified file or directory, it currently does not recurse. |
ftp | Uses wget to retrieve the specified file or directory, it currently does not recurse. |
Patch Section
The patch section contains all of the same entries as the Source Section. It also has two additional entries that are used in applying the patches.
Entry | Description |
<source> | Source name that this patch entry should be applied to. |
<prefix> | This is the patch prefix (-p) value used on the command line. |
The <url> value here can either be a file or a directory. In the case that it is a directory all files contained in that directory will be treated as patch files and applied to the specified <source> with the given options.
Builds section
The final section in the config file is the <builds> section. Currently this can only contain a single <include> value. This specifies the build scripts definitions that should be included in this configuration. Any value that is a valid argument to ls can be used here. This allows multiple files to be included. Future work includes the direct embedding of the build configuration.
Build file
The build file contains scripts to perform the build and release of a desired release. There is no restriction on what can be performed during either section however only one <build> may be contained in each file.Each build file can only contain one build
No Format |
---|
<builds> <build> <name>[build-name]</name> <dependency> <source>[source-name]</source> </dependency> <targets> <build> <script><![CDATA[ <shell script> ]]> </script> </build> <release> <script><![CDATA[ <shell script> ]]> </script> </release> </targets> </build> </builds> |
Build Section
The build sction contains three elements all must be present to be valid.
Element | Desctiption |
<name> | The name of this build. This is used to name directories on disk and to refer to this build directly on the command line. |
<dependency> | This is a list of <source> entries that this build requires. |
<targets> | This contains the two scripts one for <build> and one for <release>. The text in these scripts are executed in a shell rooted in the current directory. |
Example Files
No Format |
---|
<builder> <environment> <version>M3.0-beta</version> </environment> <sources> <source> <name>qpid</name> <type>file</type> <url>http://people.apache.org/~aidan/qpid/M3-beta/qpid-incubating-M3-beta.tar.gz</url> <path>qpid-incubating-M3</path> </source> <source> <name>bdb</name> <type>svn</type> <url>https://svn.jboss.org/repos/rhmessaging/store/branches/java/broker-queue-refactor/java/bdbstore</url> </source> </sources> <patches> <patch> <name>BDB-Classpath</name> <type>file</type> <url>/local/patches/bdb-qpid-run-classpath.diff</url> <source>qpid</source> <prefix>2</prefix> <path>qpid-incubating-M3/qpid/java/<path> </patch> </patches> <builds> <include>builds/*.config</include> </builds> </builder> |
...