blob: d8b29b4193d87fe5f92358d5ef00863e0bc47432 [file] [log] [blame]
#!/usr/bin/env bash
#*******************************************************************************
# Copyright (c) 2016 IBM Corporation and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# 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