| #!/usr/bin/env bash |
| #******************************************************************************* |
| # Copyright (c) 2016 IBM Corporation and others. |
| # All rights reserved. This program and the accompanying materials |
| # are made available under the terms of the Eclipse Public License v1.0 |
| # which accompanies this distribution, and is available at |
| # http://www.eclipse.org/legal/epl-v10.html |
| # |
| # Contributors: |
| # David Williams - initial API and implementation |
| #******************************************************************************* |
| |
| # version in master |
| |
| # Utility script to get "ebuilder" |
| printf "\n\tDEBUG: %s\n" "executing ${0}" |
| printf "\t\t\t%s\n" "As called from ${FUNCNAME[1]}, called from line number ${BASH_LINENO[0]} in ${BASH_SOURCE[1]}." |
| |
| export SCRIPT_PATH=${SCRIPT_PATH:-$(pwd)} |
| printf "\n\tINFO: %s\n" "SCRIPT_PATH: $SCRIPT_PATH" |
| source $SCRIPT_PATH/build-functions.shsource |
| |
| BUILD_DIR=$1 |
| EBUILDER_HASH=$2 |
| |
| |
| if [[ -z "${BUILD_DIR}" ]] |
| then |
| printf "\n\tWARNING: %s\n" "BUILD_DIR not defined, assuming $BUILD_DIR" |
| BUILD_DIR=${PWD} |
| else |
| # normally will exist by now, but if not, we'll create it. |
| if [[ ! -d "${BUILD_DIR}" ]] |
| then |
| printf "\n\tWARNING: %s\n" "BUILD_DIR did not exist when expected. Creating $BUILD_DIR" |
| mkdir -p $BUILD_DIR |
| fi |
| fi |
| |
| if [[ -z "${EBUILDER_HASH}" ]] |
| then |
| echo "EBUILDER HASH, BRANCH, or TAG was not supplied, assuming 'master'" |
| EBUILDER_HASH=master |
| fi |
| |
| EBUILDER=eclipse.platform.releng.aggregator |
| # derived values |
| gitCache=$( fn-git-cache "$BUILD_ROOT") |
| aggDir=$( fn-git-dir "$gitCache" "$AGGREGATOR_REPO" ) |
| |
| RC=0 |
| |
| # don't clone, if already exists. |
| # TODO: could do more error checking, if hash is what we expect, |
| # if the zip file already exists. But 99.99% sure all is fine, |
| # if this directory already exists. Might be an issue in resuming |
| # a failed build, without cleaning everything first? (Which we currently |
| # do not do.) Even then, might be best to delete everything, including |
| # the zip, and re-clone. It is, after all, a detached head. |
| if [[ ! -d ${BUILD_DIR}/${EBUILDER} ]] |
| then |
| # Not sure 'REPO_AND_ACCESS' is defined in all possible scenarios, so we'll provide a default. |
| # It is in main scenarios, but not sure about things like "re-running unit tests at a later time". |
| # If directory doesn't exist yet, create it first, so we can assign proper access |
| # permissions for later "clean up" routines. |
| # Permissions not correct for this 'mkdir' so we will use same trick as in bootstrapVariables |
| # see https://bugs.eclipse.org/bugs/show_bug.cgi?id=492493 |
| # mkdir -p "${BUILD_DIR}/${EBUILDER}" |
| # chmod -c g+ws "${BUILD_DIR}/${EBUILDER}" |
| # BUILD_DIR pretty much has to exist at this point, but in case not: |
| mkdir -p "${BUILD_DIR}" |
| pushd "${BUILD_DIR}" |
| mkdir "${EBUILDER}" |
| popd |
| |
| # note the use of "reference" ... we typically only need a little bit of |
| # new stuff, that the gitCache version doesn't have already, if any. |
| echo "Doing git clone using: --reference \${aggDir} \${AGGREGATOR_REPO} \${BUILD_DIR}/\${EBUILDER}" |
| echo "which evaluates to git clone --reference ${aggDir} ${AGGREGATOR_REPO} ${BUILD_DIR}/${EBUILDER}" |
| git clone --reference ${aggDir} ${AGGREGATOR_REPO} ${BUILD_DIR}/${EBUILDER} |
| RC=$? |
| if [[ $RC != 0 ]] |
| then |
| echo "[ERROR] Cloning EBUILDER returned non zero return code: $RC" |
| exit $RC |
| fi |
| |
| echo "INFO: ebuilder directory cloned." |
| echo "INFO: Location: ${BUILD_DIR}/${EBUILDER}" |
| echo "INFO: checking out specific HASH (which will make it detached)." |
| pushd ${BUILD_DIR}/${EBUILDER} |
| git checkout $EBUILDER_HASH |
| RC=$? |
| if [[ $RC != 0 ]] |
| then |
| echo "[ERROR] Checking out EBUILDER for $EBUILDER_HASH returned non zero return code: $RC" |
| exit $RC |
| fi |
| popd |
| |
| # prepare a (small) zip, for easy retrieval of "production" files, during unit tests on Hudson. |
| # This basic function used to be provided by CGit, but was turned off for "snapshots" of commits, |
| # and was a bit overkill for those doing their own "remote" test builds (or tests). |
| # This small zip is stored, unadvertised, on download site, and retrieved as part of the |
| # Hudson test "bootstrap". The "production" directory in general, though, is also |
| # used during the build itself. |
| # (hard to know "where" we are at ... so we'll make sure. |
| printf "\n\tDEBUG: %s\n" "About to create EBuilder zip: ${EBUILDER}-${EBUILDER_HASH}.zip" |
| pushd ${buildDirectory} |
| zip -r "${buildDirectory}/${EBUILDER}-${EBUILDER_HASH}.zip" "${EBUILDER}/production/testScripts" |
| popd |
| exit $RC |
| fi |