Repository: bigtop Updated Branches: refs/heads/master 10193c89f -> b165d0c7f
BIGTOP-1527. Allow to fetch package's source code from Git Signed-off-by: Konstantin Boudnik <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/bigtop/repo Commit: http://git-wip-us.apache.org/repos/asf/bigtop/commit/b165d0c7 Tree: http://git-wip-us.apache.org/repos/asf/bigtop/tree/b165d0c7 Diff: http://git-wip-us.apache.org/repos/asf/bigtop/diff/b165d0c7 Branch: refs/heads/master Commit: b165d0c7f039f7797bb9941aebbb2094aef3be26 Parents: 10193c8 Author: Ivan Orlov <[email protected]> Authored: Tue Nov 25 12:39:23 2014 -0800 Committer: Konstantin Boudnik <[email protected]> Committed: Mon Dec 1 11:43:24 2014 -0800 ---------------------------------------------------------------------- README.md | 23 +++++++++++++++++++++++ packages.gradle | 41 ++++++++++++++++++++++++++++++++++++++--- 2 files changed, 61 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/bigtop/blob/b165d0c7/README.md ---------------------------------------------------------------------- diff --git a/README.md b/README.md index 2c088cc..17b7a4a 100644 --- a/README.md +++ b/README.md @@ -149,6 +149,29 @@ project. The main page can be accessed from "project_root/target/site/index.htm The source for the website is located in "project_root/src/site/". +For Developers: Building a component from Git repository +-------------------------------------------------------- + +To fetch source from a Git repository you need to modify `bigtop.mk` and add the +following fields to your package: + +* `_GIT_REPO` - SSH, HTTP or local path to Git repo. +* `_GIT_REF` - branch, tag or commit hash to check out. + +Some packages have different names for source directory and source tarball +(`hbase-0.98.5-src.tar.gz` contains `hbase-0.98.5` directory). +By default source will be fetched in a directory named `_TARBALL_SRC` +without `.t*` extension. +To explicitly set directory name use the `_GIT_DIR` option. + +Example for HBase: + + +```make +HBASE_GIT_REPO=https://github.com/apache/hbase.git +HBASE_GIT_REF=$(HBASE_PKG_VERSION) +HBASE_GIT_DIR=hbase-$(HBASE_PKG_VERSION) +``` Contact us http://git-wip-us.apache.org/repos/asf/bigtop/blob/b165d0c7/packages.gradle ---------------------------------------------------------------------- diff --git a/packages.gradle b/packages.gradle index 2abbb5d..a178b0b 100644 --- a/packages.gradle +++ b/packages.gradle @@ -15,6 +15,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import org.ajoberstar.grgit.* + +buildscript { + repositories { + mavenCentral() + } + dependencies { + classpath 'org.ajoberstar:grgit:0.2.2' + } +} + apply plugin: 'java' apply plugin: 'groovy' apply plugin: 'download-task' @@ -77,6 +88,10 @@ def genTasks = { target, variable -> def final DOWNLOAD_DST = BOM_map[variable + '_DOWNLOAD_DST'] def final DOWNLOAD_URL = BOM_map[variable + '_DOWNLOAD_URL'] + def final GIT_REPO = BOM_map[variable + '_GIT_REPO'] + def final GIT_REF = BOM_map[variable + '_GIT_REF'] + def final GIT_DIR = BOM_map[variable + '_GIT_DIR'] + if (!DOWNLOAD_DST) return @@ -85,9 +100,29 @@ def genTasks = { target, variable -> println "\tFile $DOWNLOAD_DST appears to be already downloaded. Exiting..." return } - download { - src DOWNLOAD_URL - dest DOWNLOAD_DST + if (GIT_REPO && GIT_REF) { + def dir = GIT_DIR + if (dir == null || dir.isEmpty()) { + dir = TARBALL_SRC.substring(0, TARBALL_SRC.lastIndexOf(".t")) + } + delete("${DL_DIR}/${dir}") + Grgit.clone( + uri: GIT_REPO, + refToCheckout: GIT_REF, + dir: new File("${DL_DIR}/${dir}") + ) + delete("${DL_DIR}/${dir}/.git") + exec { + workingDir DL_DIR + commandLine "tar -czf ${TARBALL_SRC} ${dir}".split() + } + delete("${DL_DIR}/${dir}") + } + else { + download { + src DOWNLOAD_URL + dest DOWNLOAD_DST + } } touchTargetFile(BOM_map[variable + '_TARGET_DL']) }
