mirror of
https://github.com/corda/corda.git
synced 2024-12-28 00:38:55 +00:00
f978eab8d1
git-subtree-dir: sgx-jvm/linux-sgx git-subtree-mainline:d52accb52c
git-subtree-split:2df43c54f3
252 lines
6.9 KiB
Bash
Executable File
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
|