DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
Build system and stack DSL
Apache Bigtop has moved away from the original make-based system at the end of 2014. We have decided in favor of more human-oriented and a way more powerful Gradle-based approach. Thanks to the amazing power of Apache Groovy, it was easy to create a descriptive DSL for software stacks under the Bigtop control. By default, the stack definition is located in
bigtop.bom at the top-level project's folder. Here's a snipped of the self-documented DSL
bigtop { // *the name should be change: the parsing code depends on it*
version = "STACK-VERSION" // *required*
stack { // *required* Fundamental properties of the Stack: JDK, SDK, GDK, etc
'jdk' { version = '1.8'; version_base = version }
'scala' { version = '2.10.4'; version_base = version }
}
apache { // *required* These shoudn't be modified unless ASF Infra demands changes
APACHE_MIRROR = "http://apache.osuosl.org"
APACHE_ARCHIVE = "https://archive.apache.org/dist"
}
git { // *optional* This is a global setting to access protected git repositories,
// can be specified per component as well
user = "john_doe"
token = "john's access token"
}
components { *required; preserve the name* if empty, nothing will be built
'label' { // label *SHOULD* be the same as the name; otherwise some tasks will fail
name = 'component1' // *required* the name of the component
// 'pkg' value is optional and will be set to that of 'name' i.e. [pkg := name]
pkg = name // *optional* and will be set to the 'name' value
// 'base' is required; [pkg := base ]; [release := 1 ]
version { base = 'x.y.z'; pkg = base; release = 1 }
tarball {
source = "apache-component1-${version.base}.tar.gz"
// It is advised to use different destination filenames to avoid
// clashes when working with git repos and downloading the artifacts
// from the branches with the same names.
destination = source
}
url { // *optional*
download_path = "/component1/component1-${version.base}"
site = "${apache.APACHE_MIRROR}/${download_path}"
archive = "${apache.APACHE_ARCHIVE}/${download_path}"
}
git {
// Setting the info to access a git repository. Ref is any valid git reference.
// If git repo information is provided, the *url* element above will be ignored.
repo = "https://github.com/apache/bigtop.git"
ref = "branch-name"
// *dir* defines the name of the top-level folder inside of the tar-ball archive.
// if set to null, the directory name will be set to tar-ball.dist without
// the .tar* suffix
// This setting is important to allow build to locate unpacked source code
dir = "${name}-${version.base}-src"
// *optional*
// You can setup repo-specific user credentials overriding any global settings
user = "john_doe"
token = "john's access token"
}
}
}
}
A special note needs to be made about building components with -SNAPSHOT versions. Because RPM format doesn't permit symbol - in the package name, one needs to remove the suffix from the package version string. Fortunatelly, it is very easy to do in a Groovy DSL:
version { base = '2.7.4-SNAPSHOT'; pkg = base-"-SNAPSHOT"; release = 1 }
Yes, you can substract -SNAPSHOT token from the base version string.
Setting up the CI environment
How to build...
- How to build Bigtop-trunk: (development with toolchain, Docker images, etc.)
- How to build Bigtop-1.1
- How to build Bigtop-1.0