|
Andrew Overholt |
0077196 |
#!/bin/bash
|
|
Andrew Overholt |
0077196 |
|
|
Andrew Overholt |
0077196 |
# args: [-f <feature>] [-d <dependencies (outside SDK)>] [-a <additional build args>] [-j <JVM args>] [-v] [-D]
|
|
Andrew Overholt |
0077196 |
|
|
Andrew Overholt |
0077196 |
function usage {
|
|
Andrew Overholt |
0077196 |
cat << _EOF_
|
|
Andrew Overholt |
0077196 |
usage: $0 [<options>]
|
|
Andrew Overholt |
0077196 |
|
|
Andrew Overholt |
0077196 |
Use PDE Build to build Eclipse features
|
|
Andrew Overholt |
0077196 |
|
|
Andrew Overholt |
0077196 |
Optional arguments:
|
|
Andrew Overholt |
0077196 |
-h Show this help message
|
|
Andrew Overholt |
0077196 |
-f Feature ID to build
|
|
Andrew Overholt |
0077196 |
-d Plugin dependencies in addition to Eclipse SDK
|
|
Andrew Overholt |
0077196 |
(space-separated, names on which to glob features and plugins)
|
|
Andrew Overholt |
0077196 |
-a Additional build arguments (ex. -DjavacSource=1.5)
|
|
Andrew Overholt |
0077196 |
-j VM arguments (ex. -DJ2SE-1.5=%{_jvmdir}/java/jre/lib/rt.jar)
|
|
Andrew Overholt |
0077196 |
-v Be verbose
|
|
Andrew Overholt |
0077196 |
-D Debug platform itself (passes -consolelog -debug to Eclipse)
|
|
Andrew Overholt |
0077196 |
_EOF_
|
|
Andrew Overholt |
0077196 |
}
|
|
Andrew Overholt |
0077196 |
|
|
Andrew Overholt |
0077196 |
function copyPlatform {
|
|
Andrew Overholt |
0077196 |
# This seems silly but I was running into issues with empty strings
|
|
Andrew Overholt |
0077196 |
# counting as arguments to copy-platform -- overholt, 2008-03
|
|
Andrew Overholt |
0077196 |
if [ -z $dependencies ]; then
|
|
Andrew Overholt |
0077196 |
if [ $verbose -eq 1 ]; then
|
|
Andrew Overholt |
0077196 |
echo "/bin/sh -x $datadir/eclipse/buildscripts/copy-platform $SDK $datadir/eclipse"
|
|
Andrew Overholt |
0077196 |
/bin/sh -x $datadir/eclipse/buildscripts/copy-platform $SDK $datadir/eclipse
|
|
Andrew Overholt |
0077196 |
else
|
|
Andrew Overholt |
0077196 |
echo "/bin/sh $datadir/eclipse/buildscripts/copy-platform $SDK $datadir/eclipse"
|
|
Andrew Overholt |
0077196 |
/bin/sh $datadir/eclipse/buildscripts/copy-platform $SDK $datadir/eclipse
|
|
Andrew Overholt |
0077196 |
fi
|
|
Andrew Overholt |
0077196 |
else
|
|
Andrew Overholt |
0077196 |
if [ $verbose -eq 1 ]; then
|
|
Andrew Overholt |
0077196 |
echo "/bin/sh -x $datadir/eclipse/buildscripts/copy-platform $SDK $datadir/eclipse $dependencies"
|
|
Andrew Overholt |
0077196 |
/bin/sh -x $datadir/eclipse/buildscripts/copy-platform $SDK $datadir/eclipse $dependencies
|
|
Andrew Overholt |
0077196 |
else
|
|
Andrew Overholt |
0077196 |
echo "/bin/sh $datadir/eclipse/buildscripts/copy-platform $SDK $datadir/eclipse $dependencies"
|
|
Andrew Overholt |
0077196 |
/bin/sh $datadir/eclipse/buildscripts/copy-platform $SDK $datadir/eclipse $dependencies
|
|
Andrew Overholt |
0077196 |
fi
|
|
Andrew Overholt |
0077196 |
fi
|
|
Andrew Overholt |
0077196 |
}
|
|
Andrew Overholt |
0077196 |
|
|
Andrew Overholt |
0077196 |
function findFeatureId {
|
|
Andrew Overholt |
0077196 |
# We can determine the feature ID if we have only one
|
|
Andrew Overholt |
0077196 |
numFeatures=$(find $sourceDir -name feature.xml | wc -l)
|
|
Andrew Overholt |
0077196 |
if [ $numFeatures -ne 1 ]; then
|
|
Andrew Overholt |
0077196 |
#echo "# features found = $numFeatures"
|
|
Andrew Overholt |
0077196 |
echo "Cannot determine feature ID. Please specify with -f."
|
|
Andrew Overholt |
0077196 |
usage
|
|
Andrew Overholt |
0077196 |
exit 1
|
|
Andrew Overholt |
0077196 |
fi
|
|
Andrew Overholt |
0077196 |
|
|
Andrew Overholt |
0077196 |
featureXml=$(find $sourceDir -name feature.xml)
|
|
Andrew Overholt |
0077196 |
|
|
Andrew Overholt |
0077196 |
# Taken from Ben Konrath's package-build
|
|
Andrew Overholt |
0077196 |
# make an ant build files to extract the id from the feature.xml
|
|
Andrew Overholt |
0077196 |
buildFile=$buildDir/findFeatureForRPM-tmp-build.xml
|
|
Andrew Overholt |
0077196 |
|
|
Andrew Overholt |
0077196 |
echo "<project default=\"main\">
|
|
Andrew Overholt |
0077196 |
<target name=\"main\">
|
|
Andrew Overholt |
0077196 |
<xmlproperty file=\"$featureXml\" collapseAttributes=\"true\"/>
|
|
Andrew Overholt |
0077196 |
<fail unless=\"feature.id\" message=\"feature.id not set\"/>
|
|
Andrew Overholt |
0077196 |
<echo message=\"\${feature.id}\" />
|
|
Andrew Overholt |
0077196 |
</target>
|
|
Andrew Overholt |
0077196 |
</project>" > $buildFile
|
|
Andrew Overholt |
0077196 |
|
|
Andrew Overholt |
0077196 |
featureId=$(ant -Dbasedir=$sourceDir -f $buildFile 2>&1 | grep echo | cut --delimiter=' ' -f 7)
|
|
Andrew Overholt |
0077196 |
rm $buildFile
|
|
Andrew Overholt |
0077196 |
}
|
|
Andrew Overholt |
0077196 |
|
|
Andrew Overholt |
0077196 |
sourceDir=$PWD
|
|
Andrew Overholt |
0077196 |
buildDir=$PWD/build
|
|
Andrew Overholt |
0077196 |
SDK=$buildDir/SDK
|
|
Andrew Overholt |
0077196 |
homeDir=$buildDir/home
|
|
Andrew Overholt |
0077196 |
libdir=`rpm --eval "%{_libdir}"`
|
|
Andrew Overholt |
0077196 |
datadir=`rpm --eval "%{_datadir}"`
|
|
Andrew Overholt |
0077196 |
pdeBuildDir=$datadir/eclipse/plugins/org.eclipse.pde.build
|
|
Andrew Overholt |
0077196 |
|
|
Andrew Overholt |
0077196 |
featureId=
|
|
Andrew Overholt |
0077196 |
dependencies=
|
|
Andrew Overholt |
0077196 |
additionalArgs=
|
|
Andrew Overholt |
0077196 |
vmArgs=
|
|
Andrew Overholt |
0077196 |
verbose=0
|
|
Andrew Overholt |
0077196 |
dryRun=0
|
|
Andrew Overholt |
0077196 |
debugPlatform=0
|
|
Andrew Overholt |
0077196 |
|
|
Andrew Overholt |
0077196 |
# See above. r = dry run (used for testing)
|
|
Andrew Overholt |
0077196 |
while getopts “hf:d:a:j:vrD” OPTION
|
|
Andrew Overholt |
0077196 |
do
|
|
Andrew Overholt |
0077196 |
case $OPTION in
|
|
Andrew Overholt |
0077196 |
h)
|
|
Andrew Overholt |
0077196 |
usage
|
|
Andrew Overholt |
0077196 |
exit
|
|
Andrew Overholt |
0077196 |
;;
|
|
Andrew Overholt |
0077196 |
f)
|
|
Andrew Overholt |
0077196 |
featureId=$OPTARG
|
|
Andrew Overholt |
0077196 |
;;
|
|
Andrew Overholt |
0077196 |
d)
|
|
Andrew Overholt |
0077196 |
dependencies=$OPTARG
|
|
Andrew Overholt |
0077196 |
;;
|
|
Andrew Overholt |
0077196 |
a)
|
|
Andrew Overholt |
0077196 |
additionalArgs=$OPTARG
|
|
Andrew Overholt |
0077196 |
;;
|
|
Andrew Overholt |
0077196 |
j)
|
|
Andrew Overholt |
0077196 |
vmArgs=$OPTARG
|
|
Andrew Overholt |
0077196 |
;;
|
|
Andrew Overholt |
0077196 |
v)
|
|
Andrew Overholt |
0077196 |
verbose=1
|
|
Andrew Overholt |
0077196 |
;;
|
|
Andrew Overholt |
0077196 |
r)
|
|
Andrew Overholt |
0077196 |
dryRun=1
|
|
Andrew Overholt |
0077196 |
;;
|
|
Andrew Overholt |
0077196 |
D)
|
|
Andrew Overholt |
0077196 |
debugPlatform=1
|
|
Andrew Overholt |
0077196 |
;;
|
|
Andrew Overholt |
0077196 |
?)
|
|
Andrew Overholt |
0077196 |
usage
|
|
Andrew Overholt |
0077196 |
exit
|
|
Andrew Overholt |
0077196 |
;;
|
|
Andrew Overholt |
0077196 |
esac
|
|
Andrew Overholt |
0077196 |
done
|
|
Andrew Overholt |
0077196 |
|
|
Andrew Overholt |
0077196 |
echo "mkdir -p $buildDir"
|
|
Andrew Overholt |
0077196 |
if [ $dryRun -ne 1 ]; then
|
|
Andrew Overholt |
0077196 |
mkdir -p $buildDir
|
|
Andrew Overholt |
0077196 |
fi
|
|
Andrew Overholt |
0077196 |
|
|
Andrew Overholt |
0077196 |
# Eclipse may try to write to the building user's home directory so we create a
|
|
Andrew Overholt |
0077196 |
# temporary one for use by the build.
|
|
Andrew Overholt |
0077196 |
echo "mkdir -p $homeDir"
|
|
Andrew Overholt |
0077196 |
if [ $dryRun -ne 1 ]; then
|
|
Andrew Overholt |
0077196 |
mkdir -p $homeDir
|
|
Andrew Overholt |
0077196 |
fi
|
|
Andrew Overholt |
0077196 |
|
|
Andrew Overholt |
0077196 |
if [ -z $featureId ]; then
|
|
Andrew Overholt |
0077196 |
findFeatureId
|
|
Andrew Overholt |
0077196 |
fi
|
|
Andrew Overholt |
0077196 |
|
|
Andrew Overholt |
0077196 |
if [ -z $featureId ]; then
|
|
Andrew Overholt |
0077196 |
echo "Cannot determine feature ID. Please specify with -f."
|
|
Andrew Overholt |
0077196 |
usage
|
|
Andrew Overholt |
0077196 |
exit 1
|
|
Andrew Overholt |
0077196 |
fi
|
|
Andrew Overholt |
0077196 |
|
|
Andrew Overholt |
0077196 |
echo "Building feature = $featureId."
|
|
Andrew Overholt |
0077196 |
|
|
Andrew Overholt |
0077196 |
if [ -z "$dependencies" ]; then
|
|
Andrew Overholt |
0077196 |
if [ $verbose -eq 1 ]; then
|
|
Andrew Overholt |
0077196 |
echo "Assuming no dependencies except Eclipse SDK."
|
|
Andrew Overholt |
0077196 |
fi
|
|
Andrew Overholt |
0077196 |
fi
|
|
Andrew Overholt |
0077196 |
|
|
Andrew Overholt |
0077196 |
# Symlink the SDK and dependencies for build
|
|
Andrew Overholt |
0077196 |
if [ -z "$dependencies" ]; then
|
|
Andrew Overholt |
0077196 |
echo "Symlinking SDK into $SDK directory."
|
|
Andrew Overholt |
0077196 |
else
|
|
Andrew Overholt |
0077196 |
echo "Symlinking SDK and \"$dependencies\" into $SDK directory."
|
|
Andrew Overholt |
0077196 |
fi
|
|
Andrew Overholt |
0077196 |
if [ $dryRun -ne 1 ]; then
|
|
Andrew Overholt |
0077196 |
copyPlatform
|
|
Andrew Overholt |
0077196 |
fi
|
|
Andrew Overholt |
0077196 |
|
|
Andrew Overholt |
0077196 |
if [ $debugPlatform -eq 1 ]; then
|
|
Andrew Overholt |
0077196 |
debugPlatformArgs="-debug -consolelog"
|
|
Andrew Overholt |
0077196 |
fi
|
|
Andrew Overholt |
0077196 |
|
|
Andrew Overholt |
0077196 |
echo
|
|
Andrew Overholt |
0077196 |
echo "Starting build:"
|
|
Andrew Overholt |
0077196 |
|
|
Andrew Overholt |
0077196 |
echo "
|
|
Andrew Overholt |
0077196 |
java -cp $SDK/startup.jar \
|
|
Andrew Overholt |
0077196 |
-Dosgi.sharedConfiguration.area=$libdir/eclipse/configuration \
|
|
Andrew Overholt |
0077196 |
org.eclipse.core.launcher.Main \
|
|
Andrew Overholt |
0077196 |
-application org.eclipse.ant.core.antRunner \
|
|
Andrew Overholt |
0077196 |
$debugPlatformArgs \
|
|
Andrew Overholt |
0077196 |
-Dtype=feature \
|
|
Andrew Overholt |
0077196 |
-Did=$featureId \
|
|
Andrew Overholt |
0077196 |
-DbaseLocation=$SDK \
|
|
Andrew Overholt |
0077196 |
-DsourceDirectory=$sourceDir \
|
|
Andrew Overholt |
0077196 |
-DbuildDirectory=$buildDir \
|
|
Andrew Overholt |
0077196 |
-Dbuilder=$datadir/eclipse/plugins/org.eclipse.pde.build/templates/package-build \
|
|
Andrew Overholt |
0077196 |
$additionalArgs \
|
|
Andrew Overholt |
0077196 |
-f $pdeBuildDir/scripts/build.xml \
|
|
Andrew Overholt |
0077196 |
-vmargs \
|
|
Andrew Overholt |
0077196 |
-Duser.home=$homeDir \
|
|
Andrew Overholt |
0077196 |
$vmArgs
|
|
Andrew Overholt |
0077196 |
"
|
|
Andrew Overholt |
0077196 |
|
|
Andrew Overholt |
0077196 |
if [ $dryRun -ne 1 ]; then
|
|
Andrew Overholt |
0077196 |
java -cp $SDK/startup.jar \
|
|
Andrew Overholt |
0077196 |
-Dosgi.sharedConfiguration.area=$libdir/eclipse/configuration \
|
|
Andrew Overholt |
0077196 |
org.eclipse.core.launcher.Main \
|
|
Andrew Overholt |
0077196 |
-application org.eclipse.ant.core.antRunner \
|
|
Andrew Overholt |
0077196 |
$debugPlatformArgs \
|
|
Andrew Overholt |
0077196 |
-Dtype=feature \
|
|
Andrew Overholt |
0077196 |
-Did=$featureId \
|
|
Andrew Overholt |
0077196 |
-DbaseLocation=$SDK \
|
|
Andrew Overholt |
0077196 |
-DsourceDirectory=$sourceDir \
|
|
Andrew Overholt |
0077196 |
-DbuildDirectory=$buildDir \
|
|
Andrew Overholt |
0077196 |
-Dbuilder=$datadir/eclipse/plugins/org.eclipse.pde.build/templates/package-build \
|
|
Andrew Overholt |
0077196 |
$additionalArgs \
|
|
Andrew Overholt |
0077196 |
-f $pdeBuildDir/scripts/build.xml \
|
|
Andrew Overholt |
0077196 |
-vmargs \
|
|
Andrew Overholt |
0077196 |
-Duser.home=$homeDir \
|
|
Andrew Overholt |
0077196 |
$vmArgs
|
|
Andrew Overholt |
0077196 |
fi
|