123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- #!/bin/bash
- export PATH=/home/jenkins/jdk/bin/:$PATH
- # Get the Eclipse launcher and build script to use
- set -x
- set -e
- TRUNK_HOME=$(cd $(pwd)/../../ ; pwd)
- #gives you the posibility to overwrite eclipse, if you do not use URL
- [ -n "${ECLIPSE_HOME}" ] || { echo "using default ECLIPSE_HOME=${TRUNK_HOME}/eclipse"; ECLIPSE_HOME=${TRUNK_HOME}/eclipse; }
- BUILD_RELEASE_ID_PREFIX=Linux_SGX_1.5
- if [ "$RELEASE_ID" != "${RELEASE_ID%$BUILD_RELEASE_ID_PREFIX*}" ]; then
- echo "$BUILD_RELEASE_ID_PREFIX IS in $RELEASE_ID, so it is an triggered build. Change the RELEASE_ID to an accepted form."
- temp=${RELEASE_ID#$BUILD_RELEASE_ID_PREFIX}
- RELEASE_ID=v`echo ${temp} | tr -d _ | tr -d -`
- else
- echo "$BUILD_RELEASE_ID_PREFIX is NOT in $RELEASE_ID. Keeping the user specified RELEASE_ID."
- fi
- function main() {
- validate-jenkins-parameters
- cleanupPreBuild
- checkEnvironment
- buildPlugin
- archivePlugin
- }
- function validate-jenkins-parameters {
- validate-parameter "DELETE_CURRENT_ECLIPSE" "$DELETE_CURRENT_ECLIPSE"
- [[ "ECLIPSE_DOWNLOAD_URL" != "" ]] &&
- echo "[WARNING] ECLIPSE_DOWNLOAD_URL is not set; assume eclipse archive is already downloaded"
- }
- function validate-parameter {
- local NAME="$1"
- local VALUE="$2"
- [[ ! -z "$VALUE" ]] || {
- echo "Mandatory Jenkins parameter '\$$NAME' not set !"
- exit 1
- }
- }
- function cleanupPreBuild() {
- ./clean.sh
- [[ "false" == "${DELETE_CURRENT_ECLIPSE}" ]] || {
- forceRemoveEclipse
- }
- }
- function forceRemoveEclipse() {
- pushd ${TRUNK_HOME}
- rm -fr eclipse
- popd
- }
- function checkEnvironment() {
- if [ ! -d "${ECLIPSE_HOME}" ]; then
- echo "Eclipse does not exist"
- echo "Downloading eclipse"
- getEclipse
- fi
- if [ -z "$RELEASE_ID" ]; then
- echo "Mandatory variable RELEASE_ID not defined; exiting"
- exit
- fi
- }
- function getEclipse() {
- local eclipseArchiveURL="${ECLIPSE_DOWNLOAD_URL}"
- pushd $TRUNK_HOME
- cleanupEclipseArchive
- downloadEclipse "${eclipseArchiveURL}"
- unzipEclipse
- installPDE
- cleanupEclipseArchive
- popd
- }
- function cleanupEclipseArchive() {
- find . -maxdepth 1 -mindepth 1 -name "*eclipse*.zip*" | xargs rm -f
- }
- function downloadEclipse() {
- local URL="$1"
- if [[ "$1" != "" ]] ; then
- echo " wget --no-proxy "$1""
- wget --no-proxy "$1"
- else
- echo "skip downloaded empty url"
- fi
- }
- function unzipEclipse() {
- pwd
- rm -fr eclipse
- local eclipseArchiveName="$(find . -maxdepth 1 -mindepth 1 -name "*eclipse*.zip*")"
- unzip "${eclipseArchiveName}"
- [[ -d eclipse ]] || {
- echo "Eclipse directory does not exist!"
- exit
- }
- # local eclipseFolderName=${eclipseArchiveName%.zip}
- # local eclipseArchiveName="eclipse"
- # mv "${eclipseFolderName}" eclipse
- }
- function installPDE() {
- echo "~~~~>"
- pwd
- ${ECLIPSE_HOME}/eclipse -nosplash \
- -application org.eclipse.equinox.p2.director \
- -repository http://download.eclipse.org/eclipse/updates/4.4 \
- -destination ${ECLIPSE_HOME} \
- -installIU org.eclipse.pde.source.feature.group \
- -installIU org.eclipse.pde.feature.group
- }
- function preBuild() {
- local BUILDDIR="$1"
- local BUILDDIRWORK="$2"
-
- local SITEFILE="$BUILDDIRWORK/sites/site.xml"
- local FEATUREDIR="$BUILDDIRWORK/features"
- local FEATUREFILE="feature.xml"
- local PLUGINDIR="$BUILDDIRWORK/plugins"
- local PLUGINFILE="META-INF/MANIFEST.MF"
- local ROOTDIR=$(dirname "$0")"/.."
- local VERSION=$(awk '/STRFILEVER/ {print $3}' ${ROOTDIR}/common/inc/internal/se_version.h|sed 's/^\"\(.*\)\"$/\1/')
- VERSION=$(echo "$VERSION" | awk -F'.' '{for(i=1; i<=NF&&i<=3; i++) if(i==1){version=$i} else{version=version"."$i}}; END{print version}')
- if [[ "$VERSION" =~ ^[0-9]{1,}(.[0-9]{1,}){2}$ ]]; then
- rm -fr "$BUILDDIRWORK"
- cp -fr "$BUILDDIR" "$BUILDDIRWORK"
- #site.xml
- sed -i "s#[0-9]\{1,\}\(\.[0-9]\{1,\}\)\{0,2\}\.qualifier#$VERSION\.qualifier#g" "$SITEFILE"
- #feature
- for DIR in $(ls "$FEATUREDIR"); do
- sed -i "s#[0-9]\{1,\}\(\.[0-9]\{1,\}\)\{0,2\}\.qualifier#$VERSION\.qualifier#g" "$FEATUREDIR/$DIR/$FEATUREFILE"
- done
- #plugin
- for DIR in $(ls "$PLUGINDIR"); do
- sed -i "s#[0-9]\{1,\}\(\.[0-9]\{1,\}\)\{0,2\}\.qualifier#$VERSION\.qualifier#g" "$PLUGINDIR/$DIR/$PLUGINFILE"
- done
- fi
- }
- function postBuild() {
- local BUILDDIR="$1"
- local BUILDDIRWORK="$2"
- local UPDATESITEDIR="updatesite"
-
- if [[ -d "$BUILDDIRWORK" ]] && [[ -d "$BUILDDIRWORK/$UPDATESITEDIR" ]]; then
- rm -fr "$BUILDDIR/$UPDATESITEDIR"
- cp -fr "$BUILDDIRWORK/$UPDATESITEDIR" "$BUILDDIR/$UPDATESITEDIR"
- rm -fr "$BUILDDIRWORK"
- fi
- }
- function buildPlugin() {
- pwd
- echo "PWD=`pwd`"
- echo "ECLIPSE_HOME=$ECLIPSE_HOME"
- #BASELOCATION="$PWD/target_platform"
- BASELOCATION="$ECLIPSE_HOME"
- BUILDVERSION="$RELEASE_ID"
- BUILDDIR="$PWD/build_directory"
- BUILDDIRWORK="$PWD/.build_directory"
- BUILDCONFIG="$PWD/build_config"
- LAUNCHER=`findFirst "$ECLIPSE_HOME"/plugins/org.eclipse.equinox.launcher_*.jar`
- BUILDFILE=`findFirst "$ECLIPSE_HOME"/plugins/org.eclipse.pde.build_*/scripts/build.xml`
- # make sure we found valid files
- if [ ! -f "$LAUNCHER" ]; then
- echo "Installation Error: Eclipse plugin org.eclipse.equinox.launcher...jar not detected. " \
- "Found '$LAUNCHER'. Aborting."
- exit 1
- fi
- if [ ! -f "$BUILDFILE" ]; then
- echo "Installation Error: Eclipse build file org.eclipse.pde.build_.../scripts/build.xml " \
- "not detected. Found '$BUILDFILE'. Aborting."
- exit 1
- fi
- preBuild "$BUILDDIR" "$BUILDDIRWORK"
- #
- # -- Print configuration used and actually execute the build --
- #
- echo "Eclipse configuration found:"
- echo " Eclipse Home: $ECLIPSE_HOME"
- echo " Launcher: $LAUNCHER"
- echo " Build File: $BUILDFILE"
- echo " Build Config: $BUILDCONFIG"
- echo " Base Location: $BASELOCATION"
- echo " Build Directory: $BUILDDIRWORK"
- echo " Build Version: $BUILDVERSION"
- echo " Java: " $(which java)
- java -version
- # CURRENT_DIR=$(pwd)
- # ${ECLIPSE_HOME}/eclipse -application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher -metadataRepository file:/${CURRENT_DIR}/build_directory/updatesite/sgx-eclipse-plugin -artifactRepository file:/${CURRENT_DIR}/build_directory/updatesite/featuresAndBundles -source ${CURRENT_DIR}/build_directory/ -config gtk.linux.x86 -compress -publishArtifacts
- # cp ./build_directory/updatesite/featuresAndBundles/artifacts.jar ./build_directory/updatesite/sgx-eclipse-plugin/
-
- java \
- -jar $LAUNCHER \
- -application org.eclipse.ant.core.antRunner \
- -buildfile $BUILDFILE \
- -DbuildDirectory=$BUILDDIRWORK \
- -DbaseLocation=$BASELOCATION \
- -Dbuilder=$BUILDCONFIG \
- -DforceContextQualifier=$BUILDVERSION \
- -v -v -v -v
- postBuild "$BUILDDIR" "$BUILDDIRWORK"
- }
- function findFirst() {
- echo "enter Find First, $@" 1>&2
- for i in "$@"; do
- if [ -f "$i" ]; then
- echo "found $i" 1>&2
- echo "$i"
- return
- fi
- done
- }
- function archivePlugin() {
- pushd build_directory/updatesite/sgx-eclipse-plugin
- zip -r Intel-sgx-eclipse-plugin.zip *
- popd
- }
- main
|