#!/usr/bin/env bash #******************************************************************************* # Copyright (c) 2017 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 #******************************************************************************* # # this localBuildProperties.shsource file is to ease local builds to override some variables. # It should not be used for production builds. source localBuildProperties.shsource 2>/dev/null export BUILD_HOME=${BUILD_HOME:-/shared/eclipse/builds} if [ $# -ne 1 ]; then echo USAGE: $0 env_file exit 1 fi if [ ! -r "$1" ]; then echo "$1" cannot be read echo USAGE: $0 env_file exit 1 fi source "$1" export SCRIPT_PATH=${SCRIPT_PATH:-$(pwd)} source $SCRIPT_PATH/build-functions.shsource # USAGE: fn-eq-build-dir ROOT BUILD_ID STREAM # ROOT: /shared/eclipse/builds # BUILD_ID: M20121119-1900 # STREAM: 4.3.0 fn-eq-build-dir () { ROOT="$1"; shift BUILD_ID="$1"; shift STREAM="$1"; shift eclipseStreamMajor=${STREAM:0:1} buildType=${BUILD_ID:0:1} dropDirSegment=${eclipseStreamMajor}${buildType}/siteDir/equinox/drops3 if (( $eclipseStreamMajor > 3 )) then dropDirSegment=${eclipseStreamMajor}${buildType}/siteDir/equinox/drops fi echo $ROOT/$dropDirSegment/$BUILD_ID } # USAGE: fn-eq-gather-starterkit BUILD_ID REPO_DIR BUILD_DIR # BUILD_ID: I20121116-0700 # REPO_DIR: /shared/eclipse/builds/R4_2_maintenance/gitCache/eclipse.platform.releng.aggregator # BUILD_DIR: /shared/eclipse/builds/R4_2_maintenance/dirs/M20121120-1747 fn-eq-gather-starterkit () { if [[ $# != 3 ]] then echo "PROGRAM ERROR: this function, fn-eq-gather-starterkit, requires 3 arguments" return 1 fi BUILD_ID="$1"; shift REPO_DIR="$1"; shift DROP_DIR="$1"; shift TARGET_PRODUCTS="$REPO_DIR"/eclipse.platform.releng.tychoeclipsebuilder/equinox.starterkit.product/target/products echo "Starting fn-eq-gather-starterkit" echo "BUILD_ID: $BUILD_ID" echo "REPO_DIR: $REPO_DIR" echo "DROP_DIR: $DROP_DIR" if [[ ! -d $DROP_DIR ]] then echo "Making DROP_DIR at $DROP_DIR" mkdir -p $DROP_DIR fi if [[ -d "$TARGET_PRODUCTS" ]] then pushd "$TARGET_PRODUCTS" cp -v org.eclipse.rt.osgistarterkit.product-linux.gtk.x86_64.tar.gz "$DROP_DIR"/EclipseRT-OSGi-StarterKit-${BUILD_ID}-linux-gtk-x86_64.tar.gz cp -v org.eclipse.rt.osgistarterkit.product-linux.gtk.x86.tar.gz "$DROP_DIR"/EclipseRT-OSGi-StarterKit-${BUILD_ID}-linux-gtk-x86.tar.gz cp -v org.eclipse.rt.osgistarterkit.product-macosx.cocoa.x86_64.tar.gz "$DROP_DIR"/EclipseRT-OSGi-StarterKit-${BUILD_ID}-macosx-cocoa-x86_64.tar.gz cp -v org.eclipse.rt.osgistarterkit.product-macosx.cocoa.x86_64.dmg "$DROP_DIR"/EclipseRT-OSGi-StarterKit-${BUILD_ID}-macosx-cocoa-x86_64.dmg cp -v org.eclipse.rt.osgistarterkit.product-win32.win32.x86_64.zip "$DROP_DIR"/EclipseRT-OSGi-StarterKit-${BUILD_ID}-win32-win32-x86_64.zip cp -v org.eclipse.rt.osgistarterkit.product-win32.win32.x86.zip "$DROP_DIR"/EclipseRT-OSGi-StarterKit-${BUILD_ID}-win32-win32-x86.zip popd else echo " ERROR: $TARGET_PRODUCTS did not exist in fn-eq-gather-starterkit" return 1 fi echo "Ending fn-eq-gather-starterkit" return 0 } # USAGE: fn-publish-equinox BUILD_TYPE BUILD_STREAM BUILD_ID REPO_DIR BUILD_DIR BASEBUILDER_LAUNCHER # BUILD_TYPE: I # BUILD_STREAM: 4.2.2 # BUILD_ID: I20121116-0700 # REPO_DIR: /shared/eclipse/builds/R4_2_maintenance/gitCache/eclipse.platform.releng.aggregator # BUILD_DIR: /shared/eclipse/builds/R4_2_maintenance/dirs/M20121120-1747 # BASEBUILDER_LAUNCHER: /shared/eclipse/builds/R4_2_maintenance/org.eclipse.releng.basebuilder_R3_7/plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar fn-publish-equinox () { BUILD_TYPE="$1"; shift BUILD_STREAM="$1"; shift BUILD_ID="$1"; shift REPO_DIR="$1"; shift BUILD_DIR="$1"; shift BASEBUILDER_LAUNCHER="$1"; shift BUILD_MACHINE_ROOT=${BUILD_HOME} BUILD_MACHINE_DROP_DIR=$(fn-eq-build-dir "$BUILD_MACHINE_ROOT" "$BUILD_ID" "$BUILD_STREAM") BUILD_MACHINE_DROP_DIR_PARENT=$(dirname $BUILD_MACHINE_DROP_DIR) EBuilderDir="$BUILD_DIR"/eclipse.platform.releng.aggregator/eclipse.platform.releng.tychoeclipsebuilder fn-eq-gather-starterkit $BUILD_ID $REPO_DIR $BUILD_MACHINE_DROP_DIR TARGET_PRODUCTS="$REPO_DIR"/eclipse.platform.releng.tychoeclipsebuilder/equinox-sdk/target if [[ -d "$TARGET_PRODUCTS" ]] then pushd "$TARGET_PRODUCTS" # The glob '*' here, is to match (and hence remove) "version number" in built version, such as 3.10.0, 4.4.0, etc. # And leave only BUILD_ID. cp -v equinox-sdk-*-SNAPSHOT.zip "${BUILD_MACHINE_DROP_DIR}/equinox-SDK-${BUILD_ID}.zip" RC=$? if [[ $RC != 0 ]] then TODO: change 'cp' above to rsync .. it gives better error messages and logging? echo "ERROR: cp command could not copy equinox-sdk-*-SNAPSHOT.zip. RC: $RC" fi # following used to be done in "build-configs", based on "master-equinox" feature, # but that has now "gone away". pushd "${BUILD_MACHINE_DROP_DIR}" unzip -o -j equinox-SDK-${BUILD_ID}.zip plugins/*.jar -x plugins/*.source_* popd else echo " ERROR: $TARGET_PRODUCTS did not exist in fn-gather-sdks" fi popd pushd "$BUILD_DIR" java -Djava.io.tmpdir=$TMP_DIR -jar "$BASEBUILDER_LAUNCHER" \ -data ${BUILD_DIR}/workspace-publishEquinox \ -application org.eclipse.ant.core.antRunner \ -v \ -buildfile "$EBuilderDir"/equinox/helper.xml \ -Dequinox.build.configs="$EBuilderDir"/equinox/buildConfigs \ -DbuildId="$BUILD_ID" \ -DbuildRepo="$REPO_DIR"/eclipse.platform.releng.tychoeclipsebuilder/eclipse.platform.repository/target/repository \ -DpostingDirectory=$BUILD_DIR \ -DequinoxPostingDirectory=$BUILD_MACHINE_DROP_DIR_PARENT \ -DeqpublishingContent="$EBuilderDir"/equinox/publishingFiles \ -DdropTemplateFileName="$EBuilderDir/eclipse/publishingFiles/templateFiles/index.template_${PATCH_OR_BRANCH_LABEL}.php" \ -DindexFileName="index.php" \ -DbuildDir="$EQ_BUILD_DIR_SEG" \ -DEBuilderDir="$EBuilderDir" \ -DeclipseStream=$BUILD_STREAM \ -DbuildType="$BUILD_TYPE" \ -Dbase.builder=$(dirname $(dirname "$BASEBUILDER_LAUNCHER" ) ) \ -DbuildDirectory=$BUILD_MACHINE_DROP_DIR_PARENT \ -Djava.io.tmpdir=$TMP_DIR \ publish if [[ "$invisibleBuild" == "true" ]] then touch buildHidden fi popd } cd $BUILD_ROOT # derived values gitCache=$( fn-git-cache "$BUILD_ROOT") aggDir=$( fn-git-dir "$gitCache" "$AGGREGATOR_REPO" ) if [ -z "$BUILD_ID" ]; then BUILD_ID=$(fn-build-id "$BUILD_TYPE" ) fi buildDirectory=$( fn-build-dir "$BUILD_ROOT" "$BUILD_ID" "$STREAM" ) basebuilderDir=$( fn-basebuilder-dir "$BUILD_ROOT" "$BUILD_ID" "$STREAM" ) $SCRIPT_PATH/getEBuilderForDropDir.sh $buildDirectory $EBUILDER_HASH fn-checkout-basebuilder "$basebuilderDir" launcherJar=$( fn-basebuilder-launcher "$basebuilderDir" ) fn-publish-equinox "$BUILD_TYPE" "$STREAM" "$BUILD_ID" "$aggDir" "$buildDirectory" "$launcherJar" RC=$? if [[ $RC != 0 ]] then echo "ERROR: Somethign went wrong publishing Equinox. RC: $RC" exit $RC fi