diff options
-rw-r--r-- | bigtop.bom | 368 | ||||
-rw-r--r-- | bigtop.mk | 404 | ||||
-rw-r--r-- | buildSrc/src/main/groovy/org/apache/bigtop/BuildUtils.groovy | 53 | ||||
-rw-r--r-- | buildSrc/src/test/groovy/org/apache/bigtop/TestBuildUtils.groovy | 81 | ||||
-rw-r--r-- | packages.gradle | 153 |
5 files changed, 449 insertions, 610 deletions
diff --git a/bigtop.bom b/bigtop.bom new file mode 100644 index 00000000..ddc1894c --- /dev/null +++ b/bigtop.bom @@ -0,0 +1,368 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** DSL documentation + The structure of this configuration DSL is pretty self-explanatory. The main + section is 'components' that contains the description of all things included + into the stack. The following words are considered terminals and shouldn't be + modified as it will affect the parsing behavior: + - bigtop + - version + - stack + - version_base + - apache + - pkg + - tarball, source, destinations + - url, download_path, site, archive + Also, the following are base constants and if renamed will affect the some of + the stack's definitions + - APACHE_MIRROR + - APACHE_ARCHIVE + + 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.7'; version_base = version } + 'scala' { version = '2.10.3'; version_base = version } + } + apache { // *required* These shoudn't be modified unless ASF Infra demands changes + APACHE_MIRROR = "http://apache.osuosl.org" + APACHE_ARCHIVE = "http://archive.apache.org/dist" + } + components { *required; preserve the name* if empty, nothing will be built + 'label' { // label could be anything; it's a good practice to make it same as the name + 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" // *optional* + destination = source + } + url { // *optional* + download_path = "/component1/component1-${version.base}" + site = "${apache.APACHE_MIRROR}/${download_path}" + archive = "${apache.APACHE_ARCHIVE}/${download_path}" + } + } + } + } + End of DSL Documentation */ + +bigtop { +/** Base Configuration of the mirror and archives */ + version = "1.1.0-SNAPSHOT" + stack { + 'jdk' { version = '1.7'; version_base = version } + 'scala' { version = '2.10.3'; version_base = version } + } + apache { + APACHE_MIRROR = "http://apache.osuosl.org" + APACHE_ARCHIVE = "http://archive.apache.org/dist" + } +/** End of Base Configuration */ + + components { + 'zookeeper' { + name = 'zookeeper' + pkg = name + version { + base = '3.4.6' + pkg = base + release = 1 + } + tarball { + source = "zookeeper-${version.base}.tar.gz" + destination = source + } + url { + download_path = "/zookeeper/zookeeper-${version.base}" + site = "${apache.APACHE_MIRROR}/${download_path}" + archive = "${apache.APACHE_ARCHIVE}/${download_path}" + } + } + 'hadoop' { + name = 'hadoop' + relNotes = 'Apache Hadoop' + version { base = '2.7.1'; pkg = base; release = 1 } + tarball { destination = "${name}-${version.base}.tar.gz" + source = "${name}-${version.base}-src.tar.gz" } + url { download_path = "/$name/common/$name-${version.base}" + site = "${apache.APACHE_MIRROR}/${download_path}" + archive = "${apache.APACHE_ARCHIVE}/${download_path}" } + } + 'ignite' { + name = 'ignite-hadoop' + relNotes = 'Apache Ignite in-memory data fabric' + version { base = '1.3.0'; pkg = base; release = 1 } + tarball { destination = "${name}-${version.base}.tar.gz" + source = "apache-ignite-${version.base}-incubating-src.zip" } + url { download_path = "/incubator/ignite/${version.base}/" + site = "${apache.APACHE_MIRROR}/${download_path}" + archive = "${apache.APACHE_ARCHIVE}/${download_path}" } + } + + 'hbase' { + name = 'hbase' + relNotes = 'Apache HBase' + version { base = '0.98.12'; pkg = base; release = 1 } + tarball { destination = "${name}-${version.base}.tar.gz" + source = "${name}-${version.base}-src.tar.gz" } + url { download_path = "/$name/$name-${version.base}/" + site = "${apache.APACHE_MIRROR}/${download_path}" + archive = "${apache.APACHE_ARCHIVE}/${download_path}" } + } + + 'pig' { + name = 'pig' + pkg = 'pig' + relNotes = 'Apache Pig' + version { base = '0.14.0'; pkg = base; release = 1 } + tarball { destination = "${name}-${version.base}.tar.gz" + source = "${name}-${version.base}-src.tar.gz" } + url { download_path = "/$name/$name-${version.base}/" + site = "${apache.APACHE_MIRROR}/${download_path}" + archive = "${apache.APACHE_ARCHIVE}/${download_path}" } + } + 'hive' { + name = 'hive' + relNotes = 'Apache Hive' + version { base = '1.0.0'; pkg = base; release = 1 } + tarball { destination = "apache-${name}-${version.base}-src.tar.gz" + source = destination } + url { download_path = "/$name/$name-${version.base}/" + site = "${apache.APACHE_MIRROR}/${download_path}" + archive = "${apache.APACHE_ARCHIVE}/${download_path}" } + } + 'tez' { + name = 'tez' + relNotes = 'Apache TEZ' + version { base = '0.6.2'; pkg = base; release = 1 } + tarball { destination = "apache-${name}-${version.base}-src.tar.gz" + source = destination } + url { download_path = "/$name/${version.base}/" + site = "${apache.APACHE_MIRROR}/${download_path}" + archive = "${apache.APACHE_ARCHIVE}/${download_path}" } + } + 'sqoop' { + name = 'sqoop' + relNotes = 'Apache Sqoop v1' + version { base = '1.4.5'; pkg = base; release = 1 } + tarball { destination = "${name}-${version.base}.tar.gz" + source = destination } + url { download_path = "/$name/${version.base}/" + site = "${apache.APACHE_MIRROR}/${download_path}" + archive = "${apache.APACHE_ARCHIVE}/${download_path}" } + } + 'sqoop2' { + name = 'sqoop2' + relNotes = 'Apache Sqoop v2' + version { base = '1.99.4'; pkg = base; release = 1 } + tarball { destination = "${sqoop.name}-${version.base}.tar.gz" + source = destination } + url { download_path = "/${sqoop.name}/${version.base}/" + site = "${apache.APACHE_MIRROR}/${download_path}" + archive = "${apache.APACHE_ARCHIVE}/${download_path}" } + } + 'oozie' { + name = 'oozie' + relNotes = 'Apache Oozie' + version { base = '4.0.1'; pkg = base; release = 1 } + tarball { destination = "$name-${version.base}.tar.gz" + source = destination } + url { download_path = "/$name/${version.base}/" + site = "${apache.APACHE_MIRROR}/${download_path}" + archive = "${apache.APACHE_ARCHIVE}/${download_path}" } + } + 'mahout' { + name = 'mahout' + relNotes = 'Apache Mahout' + version { base = '0.11.0'; pkg = base; release = 1 } + tarball { destination = "apache-$name-distribution-${version.base}-src.tar.gz" + source = destination } + url { download_path = "/$name/${version.base}/" + site = "${apache.APACHE_MIRROR}/${download_path}" + archive = "${apache.APACHE_ARCHIVE}/${download_path}" } + } + 'flume' { + name = 'flume' + relNotes = 'Apache Flume' + version { base = '1.6.0'; pkg = base; release = 1 } + tarball { destination = "apache-$name-${version.base}-src.tar.gz" + source = destination } + url { download_path = "/$name/${version.base}/" + site = "${apache.APACHE_MIRROR}/${download_path}" + archive = "${apache.APACHE_ARCHIVE}/${download_path}" } + } + 'giraph' { + name = 'giraph' + relNotes = 'Apache Giraph' + version { base = '1.1.0'; pkg = base; release = 1 } + tarball { destination = "$name-${version.base}.tar.gz" + source = "$name-dist-${version.base}-src.tar.gz" } + url { download_path = "/$name/$name-${version.base}/" + site = "${apache.APACHE_MIRROR}/${download_path}" + archive = "${apache.APACHE_ARCHIVE}/${download_path}" } + } + 'hue' { + name = 'hue' + relNotes = 'Hadoop User Interface' + version { base = '3.8.1'; pkg = base; release = 1 } + tarball { destination = "$name-${version.base}.tar.gz" + source = "release-${version.base}.tar.gz" } + url { site = "https://github.com/cloudera/hue/archive" + archive = site } + } + 'datafu' { + name = 'datafu' + pkg = 'pig-udf-datafu' + relNotes = 'Pig UDF Datafu' + version { base = '1.0.0'; pkg = base; release = 1 } + tarball { destination = "$name-${version.base}.tar.gz" + source = "${version.base}.tar.gz" } + url { site = "https://github.com/linkedin/datafu/archive" + archive = site } + } + 'solr' { + name = 'solr' + relNotes = 'Apache Solr' + version { base = '4.9.0'; pkg = base; release = 1 } + tarball { destination = "$name-${version.base}-src.tar.gz" + source = destination } + url { download_path = "/lucene/$name/${version.base}/" + site = "${apache.APACHE_MIRROR}/${download_path}" + archive = "${apache.APACHE_ARCHIVE}/${download_path}" } + } + 'crunch' { + name = 'crunch' + relNotes = 'Apache Crunch' + version { base = '0.12.0'; pkg = base; release = 1 } + tarball { destination = "apache-$name-${version.base}-src.tar.gz" + source = destination } + url { download_path = "/$name/$name-${version.base}/" + site = "${apache.APACHE_MIRROR}/${download_path}" + archive = "${apache.APACHE_ARCHIVE}/${download_path}" } + } + 'spark' { + name = 'spark' + relNotes = 'Apache Spark' + version { base = '1.3.1'; pkg = base; release = 1 } + tarball { destination = "$name-${version.base}.tar.gz" + source = "$name-${version.base}.tgz" } + url { download_path = "/$name/$name-${version.base}" + site = "${apache.APACHE_MIRROR}/${download_path}" + archive = "${apache.APACHE_ARCHIVE}/${download_path}" } + } + 'phoenix' { + name = 'phoenix' + relNotes = 'Apache Phoenix: A SQL skin over HBase' + version { base = '4.4.0'; pkg = base; release = 1 } + phoenix.hbase ='HBase-0.98' + tarball { destination = "$name-${version.base}-${phoenix.hbase}-src.tar.gz" + source = destination } + url { download_path = "/$name/$name-${version.base}-${phoenix.hbase}/src" + site = "${apache.APACHE_MIRROR}/${download_path}" + archive = "${apache.APACHE_ARCHIVE}/${download_path}" } + } + 'bigtop-groovy' { + name = 'bigtop-groovy' + version { base = '2.4.4'; pkg = '2.4.4'; release = 1} + relNotes = "Groovy: a dynamic language for the Java platform" + tarball { destination = "$name-${version.base}.tar.gz"; + source = "apache-groovy-binary-${version.base}.zip"} + url { site = "http://dl.bintray.com/groovy/maven/"; archive = site } + // Optional, as only null values are specified + git { repo = null; ref = null; dir = null} + } + 'bigtop-utils' { + name = "bigtop-utils" + relNotes = "Service package for Apache Bigtop runtime" + version { base = bigtop.version; pkg = base-"-SNAPSHOT"; release = 1 } + tarball { destination = "bigtop-utils-${version.base}.tar.gz" } + } + 'bigtop-jsvc' { + name = "bigtop-jsvc" + relNotes = "Apache Common Daemon (jsvc) service package" + version { base = '1.0.15'; pkg = base; release = 1 } + tarball { source = "commons-daemon-${version.base}-native-src.tar.gz" + destination = "commons-daemon-${version.base}.tar.gz" } + url { download_path = "/commons/daemon/source" + site = "${apache.APACHE_MIRROR}/${download_path}" + archive = "${apache.APACHE_ARCHIVE}/${download_path}" } + } + 'bigtop-tomcat' { + name = "bigtop-tomcat" + relNotes = "Apache Tomcat" + version { base = '6.0.36'; pkg = base; release = 1 } + tarball { source = "apache-tomcat-${version.base}-src.tar.gz" + destination = "apache-tomcat-${version.base}.tar.gz" } + url { download_path = "/tomcat/tomcat-6/v${version.base}/src" + site = "${apache.APACHE_MIRROR}/${download_path}" + archive = "${apache.APACHE_ARCHIVE}/${download_path}" } + } + 'tachyon' { + name = "tachyon" + name = "tachyon-tfs" + relNotes = "Tachyon: a memory-centric distributed file system" + version { base = '0.6.0'; pkg = base; release = 1 } + tarball { destination = "$name-${version.base}.tar.gz" + source = "v${version.base}.tar.gz" } + url { site = "https://github.com/amplab/tachyon/archive" + archive = site } + } + 'kafka' { + name = 'kafka' + relNotes = 'Apache Kafka' + version { base = '0.8.1.1'; pkg = base; release = 1 } + tarball { destination = "$name-${version.base}.tar.gz" + source = "$name-${version.base}-src.tar.gz" } + url { download_path = "/$name/${version.base}/" + site = "${apache.APACHE_MIRROR}/${download_path}" + archive = "${apache.APACHE_ARCHIVE}/${download_path}" } + } + 'ycsb' { + name = 'ycsb' + relNotes = 'Yahoo! Cloud Serving Benchmark' + version { base = '0.1.4'; pkg = base; release = 1 } + tarball { destination = "$name-${version.base}.tar.gz" + source = "${version.base}.tar.gz" } + url { site = "https://github.com/brianfrankcooper/YCSB/archive" + archive = site } + } + 'kite' { + name = 'kite' + relNotes = 'Kite Software Development Kit' + version { base = '1.1.0'; pkg = base; release = 1 } + tarball { destination = "$name-${version.base}.tar.gz" + source = "release-${version.base}.tar.gz" } + url { site = "https://github.com/kite-sdk/kite/archive" + archive = site } + } + 'hama' { + name = 'hama' + relNotes = 'Apache Hama' + version { base = '0.7.0'; pkg = base; release = 1 } + tarball { destination = "$name-dist-${version.base}.tar.gz" + source = "$name-dist-${version.base}-src.tar.gz" } + url { download_path = "/$name/$name-${version.base}/" + site = "${apache.APACHE_MIRROR}/${download_path}" + archive = "${apache.APACHE_ARCHIVE}/${download_path}" } + } + } +} diff --git a/bigtop.mk b/bigtop.mk deleted file mode 100644 index 19eb2f6e..00000000 --- a/bigtop.mk +++ /dev/null @@ -1,404 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You under the Apache License, Version 2.0 -# (the "License"); you may not use this file except in compliance with -# the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -BIGTOP_VERSION=1.1.0-SNAPSHOT - -# JDK Version -JDK_VERSION=1.7 -JDK_BASE_VERSION=$(JDK_VERSION) - -# Scala Version -SCALA_VERSION=2.10.3 -SCALA_BASE_VERSION=$(SCALA_VERSION) - -# ZooKeeper -ZOOKEEPER_NAME=zookeeper -ZOOKEEPER_RELNOTES_NAME=Apache Zookeeper -ZOOKEEPER_PKG_NAME=zookeeper -ZOOKEEPER_BASE_VERSION=3.4.6 -ZOOKEEPER_PKG_VERSION=3.4.6 -ZOOKEEPER_RELEASE_VERSION=1 -ZOOKEEPER_TARBALL_DST=zookeeper-$(ZOOKEEPER_BASE_VERSION).tar.gz -ZOOKEEPER_TARBALL_SRC=$(ZOOKEEPER_TARBALL_DST) -ZOOKEEPER_DOWNLOAD_PATH=/zookeeper/zookeeper-$(ZOOKEEPER_BASE_VERSION) -ZOOKEEPER_SITE=$(APACHE_MIRROR)$(ZOOKEEPER_DOWNLOAD_PATH) -ZOOKEEPER_ARCHIVE=$(APACHE_ARCHIVE)$(ZOOKEEPER_DOWNLOAD_PATH) -$(eval $(call PACKAGE,zookeeper,ZOOKEEPER)) - -# Hadoop 0.20.0-based hadoop package -HADOOP_NAME=hadoop -HADOOP_RELNOTES_NAME=Apache Hadoop -HADOOP_BASE_VERSION=2.7.1 -HADOOP_PKG_VERSION=2.7.1 -HADOOP_RELEASE_VERSION=1 -HADOOP_TARBALL_DST=$(HADOOP_NAME)-$(HADOOP_BASE_VERSION).tar.gz -HADOOP_TARBALL_SRC=$(HADOOP_NAME)-$(HADOOP_BASE_VERSION)-src.tar.gz -HADOOP_DOWNLOAD_PATH=/hadoop/common/$(HADOOP_NAME)-$(HADOOP_BASE_VERSION) -HADOOP_SITE=$(APACHE_MIRROR)$(HADOOP_DOWNLOAD_PATH) -HADOOP_ARCHIVE=$(APACHE_ARCHIVE)$(HADOOP_DOWNLOAD_PATH) -$(eval $(call PACKAGE,hadoop,HADOOP)) - -# Apache Ignite -IGNITE_HADOOP_NAME=ignite-hadoop -IGNITE_HADOOP_RELNOTES_NAME=Ignite -IGNITE_HADOOP_PKG_NAME=$(IGNITE_HADOOP_NAME) -IGNITE_HADOOP_BASE_VERSION=1.3.0 -IGNITE_HADOOP_PKG_VERSION=$(IGNITE_HADOOP_BASE_VERSION) -IGNITE_HADOOP_RELEASE_VERSION=1 -IGNITE_HADOOP_TARBALL_DST=$(IGNITE_HADOOP_NAME)-$(IGNITE_HADOOP_BASE_VERSION).tar.gz -IGNITE_HADOOP_TARBALL_SRC=apache-ignite-$(IGNITE_HADOOP_BASE_VERSION)-incubating-src.zip -IGNITE_HADOOP_DOWNLOAD_PATH=/incubator/ignite/$(IGNITE_HADOOP_BASE_VERSION)/ -IGNITE_HADOOP_SITE=$(APACHE_MIRROR)$(IGNITE_HADOOP_DOWNLOAD_PATH) -IGNITE_HADOOP_ARCHIVE=$(APACHE_ARCHIVE)$(IGNITE_HADOOP_DOWNLOAD_PATH) -$(eval $(call PACKAGE,ignite-hadoop,IGNITE_HADOOP)) - -# HBase -HBASE_NAME=hbase -HBASE_RELNOTES_NAME=Apache HBase -HBASE_PKG_NAME=hbase -HBASE_BASE_VERSION=0.98.12 -HBASE_PKG_VERSION=$(HBASE_BASE_VERSION) -HBASE_RELEASE_VERSION=1 -HBASE_TARBALL_DST=hbase-$(HBASE_BASE_VERSION).tar.gz -HBASE_TARBALL_SRC=hbase-$(HBASE_BASE_VERSION)-src.tar.gz -HBASE_DOWNLOAD_PATH=/hbase/hbase-$(HBASE_BASE_VERSION) -HBASE_SITE=$(APACHE_MIRROR)$(HBASE_DOWNLOAD_PATH) -HBASE_ARCHIVE=$(APACHE_ARCHIVE)$(HBASE_DOWNLOAD_PATH) -$(eval $(call PACKAGE,hbase,HBASE)) - -# Pig -PIG_BASE_VERSION=0.14.0 -PIG_PKG_VERSION=$(PIG_BASE_VERSION) -PIG_RELEASE_VERSION=1 -PIG_NAME=pig -PIG_RELNOTES_NAME=Apache Pig -PIG_PKG_NAME=pig -PIG_TARBALL_DST=pig-$(PIG_BASE_VERSION)-src.tar.gz -PIG_TARBALL_SRC=$(PIG_TARBALL_DST) -PIG_DOWNLOAD_PATH=/pig/pig-$(PIG_BASE_VERSION) -PIG_SITE=$(APACHE_MIRROR)$(PIG_DOWNLOAD_PATH) -PIG_ARCHIVE=$(APACHE_ARCHIVE)$(PIG_DOWNLOAD_PATH) -$(eval $(call PACKAGE,pig,PIG)) - -# Hive -HIVE_NAME=hive -HIVE_RELNOTES_NAME=Apache Hive -HIVE_PKG_NAME=hive -HIVE_BASE_VERSION=1.0.0 -HIVE_PKG_VERSION=$(HIVE_BASE_VERSION) -HIVE_RELEASE_VERSION=1 -HIVE_TARBALL_DST=apache-hive-$(HIVE_BASE_VERSION)-src.tar.gz -HIVE_TARBALL_SRC=$(HIVE_TARBALL_DST) -HIVE_DOWNLOAD_PATH=/hive/hive-$(HIVE_BASE_VERSION) -HIVE_SITE=$(APACHE_MIRROR)$(HIVE_DOWNLOAD_PATH) -HIVE_ARCHIVE=$(APACHE_ARCHIVE)$(HIVE_DOWNLOAD_PATH) -$(eval $(call PACKAGE,hive,HIVE)) - -# TEZ -TEZ_NAME=tez -TEZ_RELNOTES_NAME=Apache TEZ -TEZ_PKG_NAME=tez -TEZ_BASE_VERSION=0.6.2 -TEZ_PKG_VERSION=$(TEZ_BASE_VERSION) -TEZ_RELEASE_VERSION=1 -TEZ_TARBALL_DST=apache-tez-$(TEZ_BASE_VERSION)-src.tar.gz -TEZ_TARBALL_SRC=$(TEZ_TARBALL_DST) -TEZ_DOWNLOAD_PATH=/tez/$(TEZ_BASE_VERSION) -TEZ_SITE=$(APACHE_MIRROR)$(TEZ_DOWNLOAD_PATH) -TEZ_ARCHIVE=$(APACHE_ARCHIVE)$(TEZ_DOWNLOAD_PATH) -$(eval $(call PACKAGE,tez,TEZ)) - -# Sqoop -SQOOP_NAME=sqoop -SQOOP_RELNOTES_NAME=Sqoop -SQOOP_PKG_NAME=sqoop -SQOOP_BASE_VERSION=1.4.5 -SQOOP_PKG_VERSION=$(SQOOP_BASE_VERSION) -SQOOP_RELEASE_VERSION=1 -SQOOP_TARBALL_DST=$(SQOOP_NAME)-$(SQOOP_BASE_VERSION).tar.gz -SQOOP_TARBALL_SRC=$(SQOOP_TARBALL_DST) -SQOOP_DOWNLOAD_PATH=/sqoop/$(SQOOP_BASE_VERSION) -SQOOP_SITE=$(APACHE_MIRROR)$(SQOOP_DOWNLOAD_PATH) -SQOOP_ARCHIVE=$(APACHE_ARCHIVE)$(SQOOP_DOWNLOAD_PATH) -$(eval $(call PACKAGE,sqoop,SQOOP)) - -# Sqoop 2 -SQOOP2_NAME=sqoop2 -SQOOP2_RELNOTES_NAME=Sqoop 2 -SQOOP2_PKG_NAME=sqoop2 -SQOOP2_BASE_VERSION=1.99.4 -SQOOP2_PKG_VERSION=$(SQOOP2_BASE_VERSION) -SQOOP2_RELEASE_VERSION=1 -SQOOP2_TARBALL_DST=$(SQOOP_NAME)-$(SQOOP2_BASE_VERSION).tar.gz -SQOOP2_TARBALL_SRC=$(SQOOP2_TARBALL_DST) -SQOOP2_DOWNLOAD_PATH=/sqoop/$(SQOOP2_BASE_VERSION) -SQOOP2_SITE=$(APACHE_MIRROR)$(SQOOP2_DOWNLOAD_PATH) -SQOOP2_ARCHIVE=$(APACHE_ARCHIVE)$(SQOOP2_DOWNLOAD_PATH) -$(eval $(call PACKAGE,sqoop2,SQOOP2)) - -# Oozie -OOZIE_NAME=oozie -OOZIE_RELNOTES_NAME=Apache Oozie -OOZIE_PKG_NAME=oozie -OOZIE_BASE_VERSION=4.0.1 -OOZIE_PKG_VERSION=$(OOZIE_BASE_VERSION) -OOZIE_RELEASE_VERSION=1 -OOZIE_TARBALL_DST=oozie-$(OOZIE_BASE_VERSION).tar.gz -OOZIE_TARBALL_SRC=$(OOZIE_TARBALL_DST) -OOZIE_DOWNLOAD_PATH=/$(OOZIE_NAME)/$(OOZIE_BASE_VERSION) -OOZIE_SITE=$(APACHE_MIRROR)$(OOZIE_DOWNLOAD_PATH) -OOZIE_ARCHIVE=$(APACHE_ARCHIVE)$(OOZIE_DOWNLOAD_PATH) -$(eval $(call PACKAGE,oozie,OOZIE)) - -# Mahout -MAHOUT_NAME=mahout -MAHOUT_RELNOTES_NAME=Apache Mahout -MAHOUT_PKG_NAME=mahout -MAHOUT_BASE_VERSION=0.11.0 -MAHOUT_PKG_VERSION=0.11.0 -MAHOUT_RELEASE_VERSION=1 -MAHOUT_TARBALL_DST=apache-mahout-distribution-$(MAHOUT_BASE_VERSION)-src.tar.gz -MAHOUT_TARBALL_SRC=$(MAHOUT_TARBALL_DST) -MAHOUT_DOWNLOAD_PATH=/mahout/$(MAHOUT_BASE_VERSION) -MAHOUT_SITE=$(APACHE_MIRROR)$(MAHOUT_DOWNLOAD_PATH) -MAHOUT_ARCHIVE=$(APACHE_ARCHIVE)$(MAHOUT_DOWNLOAD_PATH) -$(eval $(call PACKAGE,mahout,MAHOUT)) - -# Flume -FLUME_NAME=flume -FLUME_RELNOTES_NAME=Flume -FLUME_PKG_NAME=flume -FLUME_BASE_VERSION=1.6.0 -FLUME_PKG_VERSION=1.6.0 -FLUME_RELEASE_VERSION=1 -FLUME_TARBALL_DST=apache-$(FLUME_NAME)-$(FLUME_BASE_VERSION)-src.tar.gz -FLUME_TARBALL_SRC=$(FLUME_TARBALL_DST) -FLUME_DOWNLOAD_PATH=/flume/$(FLUME_BASE_VERSION) -FLUME_SITE=$(APACHE_MIRROR)$(FLUME_DOWNLOAD_PATH) -FLUME_ARCHIVE=$(APACHE_ARCHIVE)$(FLUME_DOWNLOAD_PATH) -$(eval $(call PACKAGE,flume,FLUME)) - -# Giraph -GIRAPH_NAME=giraph -GIRAPH_RELNOTES_NAME=Giraph -GIRAPH_PKG_NAME=giraph -GIRAPH_BASE_VERSION=1.1.0 -GIRAPH_PKG_VERSION=1.1.0 -GIRAPH_RELEASE_VERSION=1 -GIRAPH_TARBALL_DST=$(GIRAPH_NAME)-$(GIRAPH_BASE_VERSION).tar.gz -GIRAPH_TARBALL_SRC=$(GIRAPH_NAME)-dist-$(GIRAPH_BASE_VERSION)-src.tar.gz -GIRAPH_DOWNLOAD_PATH=/giraph/$(GIRAPH_PKG_NAME)-$(GIRAPH_BASE_VERSION) -GIRAPH_SITE=$(APACHE_MIRROR)$(GIRAPH_DOWNLOAD_PATH) -GIRAPH_ARCHIVE=$(APACHE_ARCHIVE)$(GIRAPH_DOWNLOAD_PATH) -$(eval $(call PACKAGE,giraph,GIRAPH)) - -# Hue -HUE_NAME=hue -HUE_RELNOTES_NAME=Hadoop User Experience -HUE_PKG_NAME=hue -HUE_BASE_VERSION=3.8.1 -HUE_PKG_VERSION=3.8.1 -HUE_RELEASE_VERSION=1 -HUE_TARBALL_DST=hue-$(HUE_BASE_VERSION).tar.gz -HUE_TARBALL_SRC=release-$(HUE_BASE_VERSION).tar.gz -HUE_SITE=https://github.com/cloudera/hue/archive -HUE_ARCHIVE=$(HUE_SITE) -$(eval $(call PACKAGE,hue,HUE)) - -# DataFu -DATAFU_NAME=datafu -DATAFU_RELNOTES_NAME=Collection of user-defined functions -DATAFU_PKG_NAME=pig-udf-datafu -DATAFU_BASE_VERSION=1.0.0 -DATAFU_PKG_VERSION=1.0.0 -DATAFU_RELEASE_VERSION=1 -DATAFU_TARBALL_DST=datafu-$(DATAFU_BASE_VERSION).tar.gz -DATAFU_TARBALL_SRC=v$(DATAFU_BASE_VERSION).tar.gz -DATAFU_SITE=https://github.com/linkedin/datafu/archive -DATAFU_ARCHIVE=$(DATAFU_SITE) -$(eval $(call PACKAGE,datafu,DATAFU)) - -# Solr -SOLR_NAME=solr -SOLR_RELNOTES_NAME=Search engine server -SOLR_PKG_NAME=solr -SOLR_BASE_VERSION=4.9.0 -SOLR_PKG_VERSION=$(SOLR_BASE_VERSION) -SOLR_RELEASE_VERSION=1 -SOLR_TARBALL_DST=solr-$(SOLR_BASE_VERSION)-src.tgz -SOLR_TARBALL_SRC=$(SOLR_TARBALL_DST) -SOLR_DOWNLOAD_PATH=/lucene/solr/$(SOLR_BASE_VERSION) -SOLR_SITE=$(APACHE_MIRROR)$(SOLR_DOWNLOAD_PATH) -SOLR_ARCHIVE=$(APACHE_ARCHIVE)$(SOLR_DOWNLOAD_PATH) -$(eval $(call PACKAGE,solr,SOLR)) - -# Crunch -CRUNCH_NAME=crunch -CRUNCH_RELNOTES_NAME=Java library for MapReduce pipelines -CRUNCH_PKG_NAME=crunch -CRUNCH_BASE_VERSION=0.12.0 -CRUNCH_PKG_VERSION=$(CRUNCH_BASE_VERSION) -CRUNCH_RELEASE_VERSION=1 -CRUNCH_TARBALL_DST=apache-crunch-$(CRUNCH_BASE_VERSION)-src.tar.gz -CRUNCH_TARBALL_SRC=$(CRUNCH_TARBALL_DST) -CRUNCH_DOWNLOAD_PATH=/crunch/crunch-$(CRUNCH_BASE_VERSION) -CRUNCH_SITE=$(APACHE_MIRROR)$(CRUNCH_DOWNLOAD_PATH) -CRUNCH_ARCHIVE=$(APACHE_ARCHIVE)$(CRUNCH_DOWNLOAD_PATH) -$(eval $(call PACKAGE,crunch,CRUNCH)) - -# Spark -SPARK_NAME=spark -SPARK_RELNOTES_NAME=Spark -SPARK_PKG_NAME=spark-core -SPARK_BASE_VERSION=1.3.1 -SPARK_PKG_VERSION=1.3.1 -SPARK_RELEASE_VERSION=1 -SPARK_TARBALL_DST=spark-$(SPARK_BASE_VERSION).tar.gz -SPARK_TARBALL_SRC=spark-$(SPARK_BASE_VERSION).tgz -SPARK_DOWNLOAD_PATH=/spark/spark-$(SPARK_BASE_VERSION) -SPARK_SITE=$(APACHE_MIRROR)$(SPARK_DOWNLOAD_PATH) -SPARK_ARCHIVE=$(APACHE_ARCHIVE)$(SPARK_DOWNLOAD_PATH) -$(eval $(call PACKAGE,spark,SPARK)) - -# Phoenix -PHOENIX_NAME=phoenix -PHOENIX_RELNOTES_NAME=Phoenix: A SQL skin over HBase -PHOENIX_PKG_NAME=phoenix -PHOENIX_BASE_VERSION=4.4.0 -PHOENIX_PKG_VERSION=$(PHOENIX_BASE_VERSION) -PHOENIX_RELEASE_VERSION=1 -PHOENIX_HBASE_VERSION=HBase-0.98 -PHOENIX_TARBALL_DST=phoenix-$(PHOENIX_BASE_VERSION)-$(PHOENIX_HBASE_VERSION)-src.tar.gz -PHOENIX_TARBALL_SRC=$(PHOENIX_TARBALL_DST) -PHOENIX_DOWNLOAD_PATH=/phoenix/phoenix-$(PHOENIX_BASE_VERSION)-$(PHOENIX_HBASE_VERSION)/src/ -PHOENIX_SITE=$(APACHE_MIRROR)$(PHOENIX_DOWNLOAD_PATH) -PHOENIX_ARCHIVE=$(APACHE_ARCHIVE)$(PHOENIX_DOWNLOAD_PATH) -$(eval $(call PACKAGE,phoenix,PHOENIX)) - -# Groovy -BIGTOP_GROOVY_NAME=bigtop-groovy -BIGTOP_GROOVY_RELNOTES_NAME=Grovvy: a dynamic language for the Java platform -BIGTOP_GROOVY_PKG_NAME=bigtop-groovy -BIGTOP_GROOVY_BASE_VERSION=2.4.4 -BIGTOP_GROOVY_PKG_VERSION=$(BIGTOP_GROOVY_BASE_VERSION) -BIGTOP_GROOVY_RELEASE_VERSION=1 -BIGTOP_GROOVY_TARBALL_DST=$(BIGTOP_GROOVY_NAME)-$(BIGTOP_GROOVY_BASE_VERSION).tar.gz -BIGTOP_GROOVY_TARBALL_SRC=apache-groovy-binary-$(BIGTOP_GROOVY_BASE_VERSION).zip -BIGTOP_GROOVY_SITE=http://dl.bintray.com/groovy/maven/ -BIGTOP_GROOVY_ARCHIVE=$(BIGTOP_GROOVY_SITE) -$(eval $(call PACKAGE,bigtop-groovy,BIGTOP_GROOVY)) - -# Bigtop-utils -BIGTOP_UTILS_NAME=bigtop-utils -BIGTOP_UTILS__RELNOTES_NAME=Bigtop-utils -BIGTOP_UTILS_PKG_NAME=bigtop-utils -BIGTOP_UTILS_BASE_VERSION=$(subst -,.,$(BIGTOP_VERSION)) -BIGTOP_UTILS_PKG_VERSION=$(BIGTOP_UTILS_BASE_VERSION) -BIGTOP_UTILS_RELEASE_VERSION=1 -BIGTOP_UTILS_TARBALL_DST=$(BIGTOP_UTILS_PKG_NAME)-$(BIGTOP_UTILS_BASE_VERSION).tar.gz -$(eval $(call PACKAGE,bigtop-utils,BIGTOP_UTILS)) - -# Bigtop-jsvc -BIGTOP_JSVC_NAME=bigtop-jsvc -BIGTOP_JSVC_RELNOTES_NAME=Apache Commons Daemon (jsvc) -BIGTOP_JSVC_PKG_NAME=bigtop-jsvc -BIGTOP_JSVC_BASE_VERSION=1.0.15 -BIGTOP_JSVC_PKG_VERSION=$(BIGTOP_JSVC_BASE_VERSION) -BIGTOP_JSVC_RELEASE_VERSION=1 -BIGTOP_JSVC_TARBALL_SRC=commons-daemon-$(BIGTOP_JSVC_BASE_VERSION)-native-src.tar.gz -BIGTOP_JSVC_TARBALL_DST=commons-daemon-$(BIGTOP_JSVC_BASE_VERSION).tar.gz -BIGTOP_JSVC_SITE=$(APACHE_MIRROR)/commons/daemon/source/ -BIGTOP_JSVC_ARCHIVE=$(APACHE_ARCHIVE)/commons/daemon/source/ -$(eval $(call PACKAGE,bigtop-jsvc,BIGTOP_JSVC)) - -# Bigtop-tomcat -BIGTOP_TOMCAT_NAME=bigtop-tomcat -BIGTOP_TOMCAT_RELNOTES_NAME=Apache Tomcat -BIGTOP_TOMCAT_PKG_NAME=bigtop-tomcat -BIGTOP_TOMCAT_BASE_VERSION=6.0.36 -BIGTOP_TOMCAT_PKG_VERSION=$(BIGTOP_TOMCAT_BASE_VERSION) -BIGTOP_TOMCAT_RELEASE_VERSION=1 -BIGTOP_TOMCAT_TARBALL_SRC=apache-tomcat-$(BIGTOP_TOMCAT_BASE_VERSION)-src.tar.gz -BIGTOP_TOMCAT_TARBALL_DST=apache-tomcat-$(BIGTOP_TOMCAT_BASE_VERSION).tar.gz -BIGTOP_TOMCAT_SITE=$(APACHE_MIRROR)/tomcat/tomcat-6/v$(BIGTOP_TOMCAT_BASE_VERSION)/src/ -BIGTOP_TOMCAT_ARCHIVE=$(APACHE_ARCHIVE)/tomcat/tomcat-6/v$(BIGTOP_TOMCAT_BASE_VERSION)/src/ -$(eval $(call PACKAGE,bigtop-tomcat,BIGTOP_TOMCAT)) - -# Tachyon -TACHYON_NAME=tachyon-tfs -TACHYON_RELNOTES_NAME=Tachyon: a memory-centric distributed file system -TACHYON_PKG_NAME=tachyon-tfs -TACHYON_BASE_VERSION=0.6.0 -TACHYON_PKG_VERSION=0.6.0 -TACHYON_RELEASE_VERSION=1 -TACHYON_TARBALL_DST=tachyon-$(TACHYON_BASE_VERSION).tar.gz -TACHYON_TARBALL_SRC=v$(TACHYON_BASE_VERSION).tar.gz -TACHYON_SITE=https://github.com/amplab/tachyon/archive -TACHYON_ARCHIVE=$(TACHYON_SITE) -$(eval $(call PACKAGE,tachyon,TACHYON)) - -# Kafka -KAFKA_NAME=kafka -KAFKA_RELNOTES_NAME=Apache Kafka -KAFKA_PKG_NAME=kafka -KAFKA_BASE_VERSION=0.8.1.1 -KAFKA_PKG_VERSION=$(KAFKA_BASE_VERSION) -KAFKA_RELEASE_VERSION=1 -KAFKA_TARBALL_DST=kafka-$(KAFKA_BASE_VERSION).tar.gz -KAFKA_TARBALL_SRC=kafka-$(KAFKA_BASE_VERSION)-src.tgz -KAFKA_DOWNLOAD_PATH=/kafka/$(KAFKA_BASE_VERSION) -KAFKA_SITE=$(APACHE_MIRROR)$(KAFKA_DOWNLOAD_PATH) -KAFKA_ARCHIVE=$(APACHE_ARCHIVE)$(KAFKA_DOWNLOAD_PATH) -$(eval $(call PACKAGE,kafka,KAFKA)) - -# YCSB -YCSB_NAME=YCSB -YCSB_RELNOTES_NAME=Yahoo! Cloud Serving Benchmark -YCSB_PKG_NAME=ycsb -YCSB_BASE_VERSION=0.1.4 -YCSB_PKG_VERSION=0.1.4 -YCSB_RELEASE_VERSION=1 -YCSB_TARBALL_DST=ycsb-$(YCSB_BASE_VERSION).tar.gz -YCSB_TARBALL_SRC=$(YCSB_BASE_VERSION).tar.gz -YCSB_SITE=https://github.com/brianfrankcooper/YCSB/archive -YCSB_ARCHIVE=$(YCSB_SITE) -$(eval $(call PACKAGE,ycsb,YCSB)) - -# Kite -KITE_NAME=kite -KITE_RELNOTES_NAME=Kite Software Development Kit -KITE_PKG_NAME=kite -KITE_BASE_VERSION=1.1.0 -KITE_PKG_VERSION=$(KITE_BASE_VERSION) -KITE_RELEASE_VERSION=1 -KITE_TARBALL_SRC=release-$(KITE_BASE_VERSION).tar.gz -KITE_TARBALL_DST=kite-$(KITE_BASE_VERSION).tar.gz -KITE_SITE=https://github.com/kite-sdk/kite/archive -KITE_ARCHIVE=$(KITE_SITE) -$(eval $(call PACKAGE,kite,KITE)) - -# Hama -HAMA_NAME=hama -HAMA_RELNOTES_NAME=Apache Hama -HAMA_PKG_NAME=hama -HAMA_BASE_VERSION=0.7.0 -HAMA_PKG_VERSION=$(HAMA_BASE_VERSION) -HAMA_RELEASE_VERSION=1 -HAMA_TARBALL_DST=hama-dist-$(HAMA_BASE_VERSION).tar.gz -HAMA_TARBALL_SRC=hama-dist-$(HAMA_BASE_VERSION)-src.tar.gz -HAMA_DOWNLOAD_PATH=/hama/hama-$(HAMA_BASE_VERSION) -HAMA_SITE=$(APACHE_MIRROR)$(HAMA_DOWNLOAD_PATH) -HAMA_ARCHIVE=$(APACHE_ARCHIVE)$(HAMA_DOWNLOAD_PATH) -$(eval $(call PACKAGE,hama,HAMA)) diff --git a/buildSrc/src/main/groovy/org/apache/bigtop/BuildUtils.groovy b/buildSrc/src/main/groovy/org/apache/bigtop/BuildUtils.groovy deleted file mode 100644 index 11c6a48b..00000000 --- a/buildSrc/src/main/groovy/org/apache/bigtop/BuildUtils.groovy +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.bigtop - -class BuildUtils { - - def evaluateBOM = { map, eval -> - if (eval.contains("\$(")) { - // Crazy case of using make's subst - if (eval.contains("\$(subst")) { - // Extracting name of the var from something like - // $(subst -,.,$(BIGTOP_VERSION)) - def pattern = ~ /.*\$\(subst (.*),(.*),\$\((\w+[-]?\w+?)\)\)/ - def m = eval =~ pattern - def token = "" - if (m.matches()) { - token = m[0][3] - } - eval = map.get(token).replaceAll(m[0][1], m[0][2]) - return eval - } - // Extracting all variable names that might or not be separated by dash - def pattern = ~/\$\((\w+[-]?\w+?)\)/ - def m = eval =~ pattern - def counter = 0 - // Moving forward while matches are found - while (m.find()) { - eval = eval.replaceAll(/\$\(/, "").replaceAll(/\)/,"") - (1..m.groupCount()).each { i -> - def token = m[counter++][i] - assert map.get(token) != null - eval = eval.replaceAll(token, map.get(token)) - } - } - } - eval - } -}
\ No newline at end of file diff --git a/buildSrc/src/test/groovy/org/apache/bigtop/TestBuildUtils.groovy b/buildSrc/src/test/groovy/org/apache/bigtop/TestBuildUtils.groovy deleted file mode 100644 index 8d98c057..00000000 --- a/buildSrc/src/test/groovy/org/apache/bigtop/TestBuildUtils.groovy +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.bigtop - -import org.junit.Assert -import org.junit.Test - -class TestBuildUtils { - - def final PREFIX = "BIGTOP_UTILS" - def input = [ - 'BIGTOP_VERSION=0.9.0-3', - 'BIGTOP_GROOVY=2.4-SNAPSHOT', - 'BIGTOP_UTILS_NAME=bigtop-utils', - 'BIGTOP_UTILS__RELNOTES_NAME=Bigtop-utils', - 'BIGTOP_UTILS_PKG_NAME=bigtop-utils', - 'BIGTOP_UTILS_BASE_VERSION=$(subst -,.,$(BIGTOP_VERSION))', - 'BIGTOP_GROOVY_BASE_VERSION=$(subst -SNAPSHOT,,$(BIGTOP_GROOVY))', - 'BIGTOP_GROOVY_BASE_VERSION=$(BIGTOP_GROOVY_BASE_VERSION)', - 'BIGTOP_UTILS_PKG_VERSION=$(BIGTOP_UTILS_BASE_VERSION)', - 'BIGTOP_UTILS_RELEASE_VERSION=1', - 'HADOOP_SITE=$(APACHE_MIRROR)/$(BIGTOP_UTILS_RELEASE_VERSION)/hadoop-2.0.6-alpha-src.tar.gz', - 'BIGTOP_BUILD_STAMP=1' - ] - Map map = [ - APACHE_MIRROR: "http://apache.osuosl.org", - APACHE_ARCHIVE: "http://archive.apache.org/dist", - ] - - @Test - void testEvaluateBOM () { - BuildUtils buildUtils = new BuildUtils() - def envs = [] - input.each { line -> - envs = line?.split("=") - map.put(envs[0], buildUtils.evaluateBOM(map, envs[1])) - } - - Assert.assertEquals("2.4", map.get("BIGTOP_GROOVY_BASE_VERSION")) - Assert.assertEquals("0.9.0.3", map.get("BIGTOP_UTILS_BASE_VERSION")) - Assert.assertEquals("0.9.0.3", map.get("BIGTOP_UTILS_PKG_VERSION")) - Assert.assertEquals("http://apache.osuosl.org/1/hadoop-2.0.6-alpha-src.tar.gz", map.get("HADOOP_SITE")) - } - - @Test - void testOverrideBOM () { - System.setProperty("BIGTOP_UTILS_BASE_VERSION", "10.1.0") - System.setProperty("BIGTOP_BUILD_STAMP", "12") - System.setProperty("HADOOP_SITE", "http://www.apache.org") - BuildUtils buildUtils = new BuildUtils() - def envs = [] - input.each { line -> - envs = line?.split("=") - def value = buildUtils.evaluateBOM(map, envs[1]) - value = System.getProperty(envs[0]) ?: value - map.put(envs[0], value) - } - - Assert.assertEquals("10.1.0", map.get("BIGTOP_UTILS_BASE_VERSION")) - Assert.assertEquals("12", map.get("BIGTOP_BUILD_STAMP")) - Assert.assertEquals("http://www.apache.org", map.get("HADOOP_SITE")) - System.clearProperty("HADOOP_SITE") - System.clearProperty("BIGTOP_BUILD_STAMP") - System.clearProperty("BIGTOP_UTILS_BASE_VERSION") - } -} diff --git a/packages.gradle b/packages.gradle index 74b84d91..ce5e1102 100644 --- a/packages.gradle +++ b/packages.gradle @@ -36,12 +36,11 @@ apply plugin: 'groovy' def PACKAGES_GROUP = 'package' final String VERBOSE = "verbose" -final String BOM = "$rootDir/bigtop.mk" +final String BOM = "$rootDir/bigtop.bom" +def final config //HashMap <String, String> def BOM_map = [ - APACHE_MIRROR: "http://apache.osuosl.org", - APACHE_ARCHIVE: "http://archive.apache.org/dist", BASE_DIR: projectDir.absolutePath, BUILD_DIR: projectDir.absolutePath + "/build", OUTPUT_DIR: projectDir.absolutePath + "/output", @@ -51,7 +50,8 @@ def BOM_map = [ BIGTOP_BUILD_STAMP: 1 ] -def final BIGTOP_BOM = 'BIGTOP_BOM' +def final BIGTOP_VERSION = 'BIGTOP_VERSION' +def final BIGTOP_BOM_VERSIONS = 'BIGTOP_BOM' def final BASE_DIR = BOM_map['BASE_DIR'] def final REPO_DIR = "${BOM_map['BASE_DIR']}/bigtop-repos" @@ -105,21 +105,21 @@ task "bom-json" (description: "List the components of the stack in json format") [ name: [ project: BOM_map[it + '_NAME'], - pkg: BOM_map[it + '_PKG_NAME'], - relNotes: BOM_map[it + '_RELNOTES_NAME'], + pkg: BOM_map[it + '_PKG'], + relNotes: BOM_map[it + '_RELNOTES'], ], tarball: [ - destination: BOM_map[it + '_TARBALL_DST'], - source: BOM_map[it + '_TARBALL_SRC'], + destination: BOM_map[it + '_TARBALL_DESTINATION'], + source: BOM_map[it + '_TARBALL_SOURCE'], ], url: [ - site: BOM_map[it + '_SITE'], - archive: BOM_map[it + '_ARCHIVE'], + site: BOM_map[it + '_URL_SITE'], + archive: BOM_map[it + '_URL_ARCHIVE'], ], version: [ - base: BOM_map[it + '_BASE_VERSION'], - pkg: BOM_map[it + '_PKG_VERSION'], - release: BOM_map[it + '_RELEASE_VERSION'], + base: BOM_map[it + '_VERSION_BASE'], + pkg: BOM_map[it + '_VERSION_PKG'], + release: BOM_map[it + '_VERSION_RELEASE'], ], git: [ repo: BOM_map[it + '_GIT_REPO'], @@ -129,7 +129,7 @@ task "bom-json" (description: "List the components of the stack in json format") ] } def fullDefinition = [ - version: BOM_map['BIGTOP_VERSION'], + version: BOM_map[BIGTOP_VERSION], components: componentObjects ] def json = JsonOutput.toJson(fullDefinition) @@ -137,9 +137,9 @@ task "bom-json" (description: "List the components of the stack in json format") } task "all-components" (description: "List the components of the stack") << { - println "${project.name} ${BOM_map['BIGTOP_VERSION']} stack includes the following components" + println "${project.name} ${BOM_map[BIGTOP_VERSION]} stack includes the following components" components.sort().each { comp -> - println sprintf ('\t%1$s %2$s', comp.toLowerCase().padRight(20), BOM_map[comp + "_BASE_VERSION"].padLeft(10)) + println sprintf ('\t%1$s %2$s', comp.toLowerCase().padRight(20), BOM_map[comp + "_VERSION_BASE"].padLeft(15)) } } @@ -148,7 +148,7 @@ def genTasks = { target, variable -> description: "Download $target artifacts", group: PACKAGES_GROUP) << { - def final TARBALL_SRC = BOM_map[variable + '_TARBALL_SRC'] + def final TARBALL_SRC = BOM_map[variable + '_TARBALL_SOURCE'] def final DOWNLOAD_DST = BOM_map[variable + '_DOWNLOAD_DST'] def final DOWNLOAD_URL = BOM_map[variable + '_DOWNLOAD_URL'] @@ -198,7 +198,7 @@ def genTasks = { target, variable -> return } def final TAR_DIR = BOM_map[variable + '_TAR_DIR'] - def final TARBALL_SRC = BOM_map[variable + '_TARBALL_SRC'] ?: "" + def final TARBALL_SRC = BOM_map[variable + '_TARBALL_SOURCE'] ?: "" def final DOWNLOAD_DST = BOM_map[variable + '_DOWNLOAD_DST'] ?: "" def final SEED_TAR = BOM_map[variable + '_SEED_TAR'] @@ -253,11 +253,11 @@ def genTasks = { target, variable -> println "\tNothing to do. Exiting..." return } - def final PKG_NAME = BOM_map[variable + '_PKG_NAME'] + def final PKG_NAME = BOM_map[variable + '_PKG'] def final PKG_RELEASE = BOM_map[variable + '_PKG_RELEASE'] - def final PKG_VERSION = BOM_map[variable + '_PKG_VERSION'] + def final PKG_VERSION = BOM_map[variable + '_VERSION_PKG'] def final PKG_OUTPUT_DIR = BOM_map[variable + '_OUTPUT_DIR'] - def final BASE_VERSION = BOM_map[variable + '_BASE_VERSION'] + def final BASE_VERSION = BOM_map[variable + '_VERSION_BASE'] def final SRCDEB = "${PKG_NAME}_$PKG_VERSION-${BIGTOP_BUILD_STAMP}.dsc" exec { @@ -302,18 +302,20 @@ def genTasks = { target, variable -> } def final PKG_BUILD_DIR = BOM_map[variable + '_BUILD_DIR'] def final NAME = BOM_map[variable + '_NAME'] - def final PKG_NAME = BOM_map[variable + '_PKG_NAME'] + def final PKG_NAME = BOM_map[variable + '_PKG'] def final SEED_TAR = BOM_map[variable + '_SEED_TAR'] - def final PKG_VERSION = BOM_map[variable + '_PKG_VERSION'] + def final PKG_VERSION = BOM_map[variable + '_VERSION_PKG'] def final PKG_OUTPUT_DIR = BOM_map[variable + '_OUTPUT_DIR'] delete ("$PKG_BUILD_DIR/deb") def final DEB_BLD_DIR = "$PKG_BUILD_DIR/deb/$NAME-${PKG_VERSION}" def final DEB_PKG_DIR = "$PKG_BUILD_DIR/deb/$PKG_NAME-${PKG_VERSION}-${BIGTOP_BUILD_STAMP}" mkdir (DEB_BLD_DIR) - copy { + println BOM_map[variable + '_TARBALL_DESTINATION'] + " " + "${PKG_NAME}_${PKG_VERSION}.orig.tar.gz" + + copy { from SEED_TAR into "$PKG_BUILD_DIR/deb/" - rename BOM_map[variable + '_TARBALL_DST'], "${PKG_NAME}_${PKG_VERSION}.orig.tar.gz" + rename BOM_map[variable + '_TARBALL_DESTINATION'], "${PKG_NAME}_${PKG_VERSION}.orig.tar.gz" } exec { workingDir DEB_BLD_DIR @@ -331,7 +333,7 @@ def genTasks = { target, variable -> }.copy { into "$DEB_BLD_DIR/debian" } // Prepeare bom file with all the versions def bomWriter = new File("$DEB_BLD_DIR/debian/bigtop.bom").newWriter() - BOM_map[BIGTOP_BOM].split(" ").each { bomWriter << "$it\n"} + BOM_map[BIGTOP_BOM_VERSIONS].split(" ").each { bomWriter << "$it\n"} bomWriter.close() // Create changelog def changelog = new File("$DEB_BLD_DIR/debian/changelog").newWriter() @@ -375,10 +377,10 @@ def genTasks = { target, variable -> } def final PKG_BUILD_DIR = BOM_map[variable + '_BUILD_DIR'] def final NAME = BOM_map[variable + '_NAME'] - def final PKG_NAME = BOM_map[variable + '_PKG_NAME'] + def final PKG_NAME = BOM_map[variable + '_PKG'] def final PKG_OUTPUT_DIR = BOM_map[variable + '_OUTPUT_DIR'] - def final PKG_VERSION = BOM_map[variable + '_PKG_VERSION'] - def final BASE_VERSION = BOM_map[variable + '_BASE_VERSION'] + def final PKG_VERSION = BOM_map[variable + '_VERSION_PKG'] + def final BASE_VERSION = BOM_map[variable + '_VERSION_BASE'] def RELEASE_DIST = "rpmbuild --eval '%{?dist}' 2>/dev/null".execute().text.trim().replaceAll("'",'') def SRCRPM="$PKG_OUTPUT_DIR/$PKG_NAME-${PKG_VERSION}-$BIGTOP_BUILD_STAMP${RELEASE_DIST}.src.rpm" @@ -410,12 +412,12 @@ def genTasks = { target, variable -> return } def final NAME = BOM_map[variable + '_NAME'] - def final PKG_NAME = BOM_map[variable + '_PKG_NAME'] + def final PKG_NAME = BOM_map[variable + '_PKG'] def final PKG_NAME_FOR_PKG = BOM_map[variable + '_NAME'].replaceAll("-", "_") def final PKG_BUILD_DIR = BOM_map[variable + '_BUILD_DIR'] def final SEED_TAR = BOM_map[variable + '_SEED_TAR'] - def final PKG_VERSION = BOM_map[variable + '_PKG_VERSION'] - def final BASE_VERSION = BOM_map[variable + '_BASE_VERSION'] + def final PKG_VERSION = BOM_map[variable + '_VERSION_PKG'] + def final BASE_VERSION = BOM_map[variable + '_VERSION_BASE'] def final PKG_OUTPUT_DIR = BOM_map[variable + '_OUTPUT_DIR'] delete ("$PKG_BUILD_DIR/rpm") ['INSTALL','SOURCES','BUILD','SRPMS','RPMS'].each { rpmdir -> @@ -437,7 +439,7 @@ def genTasks = { target, variable -> }.copy { into "$PKG_BUILD_DIR/rpm/SOURCES" } // Writing bigtop.bom files with all the versions def bomWriter = new File("$PKG_BUILD_DIR/rpm/SOURCES/bigtop.bom").newWriter() - BOM_map[BIGTOP_BOM].split(" ").each { bomWriter << "$it\n"} + BOM_map[BIGTOP_BOM_VERSIONS].split(" ").each { bomWriter << "$it\n"} bomWriter.close() def specFileName = "${PKG_BUILD_DIR}/rpm/SPECS/${NAME}.spec" @@ -500,30 +502,33 @@ def genTasks = { target, variable -> } } task "$target-version" (description: "Show version of $target component", group: PACKAGES_GROUP) << { - println "Base: ${BOM_map[variable + '_BASE_VERSION']}" + println "Base: ${BOM_map[variable + '_VERSION_BASE']}" } task "${target}_vardefines" << { BOM_map[variable + '_NAME'] = target - if (!BOM_map[variable + '_PKG_NAME']) { - BOM_map[variable + '_PKG_NAME'] = BOM_map[variable + '_NAME'] + if (!BOM_map[variable + '_PKG']) { + BOM_map[variable + '_PKG'] = BOM_map[variable + '_NAME'] + } + if (!BOM_map[variable + '_VERSION_PKG']) { + BOM_map[variable + '_VERSION_PKG'] = BOM_map[variable + '_VERSION_BASE'] } BOM_map[variable + '_PKG_RELEASE'] = '1' BOM_map[variable + '_BUILD_DIR'] = BOM_map['BUILD_DIR'] + "/$target" BOM_map[variable + '_OUTPUT_DIR'] = BOM_map['OUTPUT_DIR'] + "/$target" BOM_map[variable + '_SOURCE_DIR'] = BOM_map['BUILD_DIR'] + "/source" - BOM_map[variable + '_TAR_DIR'] = BOM_map['BUILD_DIR'] + "/$target/tar/${target}-${BOM_map[variable + '_BASE_VERSION']}" - BOM_map[variable + '_SEED_TAR'] = BOM_map['BUILD_DIR'] + "/$target/tar/" + BOM_map[variable + '_TARBALL_DST'] + BOM_map[variable + '_TAR_DIR'] = BOM_map['BUILD_DIR'] + "/$target/tar/${target}-${BOM_map[variable + '_VERSION_BASE']}" + BOM_map[variable + '_SEED_TAR'] = BOM_map['BUILD_DIR'] + "/$target/tar/" + BOM_map[variable + '_TARBALL_DESTINATION'] BOM_map[variable + '_DOWNLOAD_URL'] = - (BOM_map[variable + '_SITE'] != null && BOM_map[variable + '_TARBALL_SRC'] != null) ? - BOM_map[variable + '_SITE'] + '/' + BOM_map[variable + '_TARBALL_SRC'] : null - BOM_map[variable + '_DOWNLOAD_DST'] = (BOM_map[variable + '_TARBALL_SRC'] != null) ? - DL_DIR + '/' + BOM_map[variable + '_TARBALL_SRC'] : null + (BOM_map[variable + '_URL_SITE'] != null && BOM_map[variable + '_TARBALL_SOURCE'] != null) ? + BOM_map[variable + '_URL_SITE'] + '/' + BOM_map[variable + '_TARBALL_SOURCE'] : null + BOM_map[variable + '_DOWNLOAD_DST'] = (BOM_map[variable + '_TARBALL_SOURCE'] != null) ? + DL_DIR + '/' + BOM_map[variable + '_TARBALL_SOURCE'] : null // test that the download url will return http 200. If it does not, use the ARCHIVE url instead of the MIRROR SITE url if (!ifExists(BOM_map[variable + '_DOWNLOAD_URL'])) { - BOM_map[variable + '_DOWNLOAD_URL'] = BOM_map[variable + '_ARCHIVE'] + '/' + BOM_map[variable + '_TARBALL_SRC'] + BOM_map[variable + '_DOWNLOAD_URL'] = BOM_map[variable + '_URL_ARCHIVE'] + '/' + BOM_map[variable + '_TARBALL_SOURCE'] } BOM_map[variable + '_TARGET_DL'] = BOM_map[variable + '_BUILD_DIR'] + '/.download' @@ -550,7 +555,7 @@ def genTasks = { target, variable -> println " Then unpack into ${BOM_map[variable + '_SOURCE_DIR']}" println " And create a seed tarball ${BOM_map[variable + '_SEED_TAR']}" - println "Version: " + BOM_map[variable + '_BASE_VERSION'] + println "Version: " + BOM_map[variable + '_VERSION_BASE'] //TODO more about stamping } task "$target-relnotes" (description: "Preparing release notes for $target. No yet implemented!!!", group: PACKAGES_GROUP)<< { @@ -567,32 +572,35 @@ def genTasks = { target, variable -> } def readBOM = { - - def buildUtils = new org.apache.bigtop.BuildUtils() - def bomfile = new File(BOM) - def envs = [] - - bomfile.eachLine { - if (!it.startsWith("#") && !it.isEmpty()) { - if (it.startsWith("\$(eval")) { - def pattern = ~/.*call PACKAGE,(\w+[-\w+]*),(\w+)/ - def m = it =~ pattern - assert m.size() == 1 - def target = m[0][1] - def variable = m[0][2] - genTasks(target, variable) - targets.add(target) - // Store the component name in the list - // TODO - we might not need them components anymore: version are calculated differently now - components.add(variable) - return - } - envs = it?.split("=") - def value = buildUtils.evaluateBOM(BOM_map, envs[1]) - value = System.getProperty(envs[0]) ?: value - BOM_map.put(envs[0], value) + config = new ConfigSlurper().parse(new URL("file:$BOM")) + doValidateBOM(config) + BOM_map[BIGTOP_VERSION] = config.bigtop.version + config.bigtop.apache.each { name, value -> + BOM_map[name] = value + } + config.bigtop.stack.each { name, comp -> + comp.toProperties(name).each {k, v -> + BOM_map[(k.replaceAll("\\.", "_").toUpperCase())] = v } } + config.bigtop.components.each { label, comp -> + // while closure name in the component's config could include '-'; the prefix in the BOM_map shouldn't + def prefix = comp.name.replaceAll("\\-", "_").toUpperCase() +// TODO?: To avoid changing every bit of the builds logic, let's stick to the old naming format + comp.toProperties(prefix).each {comp_config_key, comp_config_value -> + BOM_map[(comp_config_key.replaceAll("\\.", "_").toUpperCase())] = comp_config_value + } + genTasks(comp.name, prefix) + components.add(prefix) + } +} + +// Let's enforce some of the configuration requirements +private void doValidateBOM(config) { + assert config.bigtop.version + assert config.bigtop.stack.jdk + assert config.bigtop.stack.scala + assert config.bigtop.apache.size() != 0 } // We need to make sure that all dynamic tasks are available for invocation @@ -602,11 +610,12 @@ project.afterEvaluate { // Versions need to be preserved for more than just component: // - there are JDK version requirement // - possibly more in the future - BOM_map.keySet().findAll { it ==~ /.*_BASE_VERSION/ }.each { base_version -> - bomVersions += "${base_version.replaceAll('_BASE', '')}=${BOM_map[base_version]} " + BOM_map.keySet().findAll { it ==~ /.*VERSION_BASE/ }.each { version_base -> + bomVersions += "${version_base.replaceAll('_BASE', '')}=${BOM_map[version_base]} " } - BOM_map[BIGTOP_BOM] = bomVersions - if (System.getProperty(VERBOSE))println "BIGTOP_BOM:\n${BOM_map[BIGTOP_BOM]}" + BOM_map[BIGTOP_BOM_VERSIONS] = bomVersions + if (System.getProperty(VERBOSE))println "BIGTOP_BOM_VERSIONS:\n${BOM_map[BIGTOP_BOM_VERSIONS]}" + if (System.getProperty(VERBOSE))println "Full content:\n${BOM_map}" // Putting all targets of different types into one common target task "srpm" (dependsOn: tasks.findAll { alltask -> alltask.name.endsWith("-srpm")}*.name, description: "Build all SRPM packages for the stack components", |