corda/sgx-jvm/linux-sgx/Linux_SGXEclipsePlugin/build.sh
Andras Slemmer f978eab8d1 Add 'sgx-jvm/linux-sgx/' from commit '2df43c54f3a215b2fe927995c7a8869054cccf8f'
git-subtree-dir: sgx-jvm/linux-sgx
git-subtree-mainline: d52accb52c
git-subtree-split: 2df43c54f3
2017-03-13 12:18:12 +00:00

252 lines
6.9 KiB
Bash
Executable File

#!/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