blob: 82e48296cd5d4e51c80f3714095b9e46faab4d8d [file] [log] [blame]
#!/bin/bash
set -e
baseDir=$(pwd)
workDirectory=
baseBuilder=
eclipseBuilder=
buildID="R3_7_1"
baseBuilderTag="R3_7_1"
eclipseBuilderTag="R3_7_1"
label="3.7.1"
fetchTests="yes"
usage="usage: <build ID> [-workdir <working directory>] [-baseBuilder <path to org.eclipse.releng.basebuilder checkout>] [-eclipseBuilder <path to org.eclipse.releng.eclipsebuilder checkout>] [-baseBuilderTag <org.eclipse.releng.basebuilder tag to check out>] [-noTests]"
while [ $# -gt 0 ]
do
case "$1" in
-workdir) workDirectory="$2"; shift;;
-workDir) workDirectory="$2"; shift;;
-baseBuilder) baseBuilder="$2"; shift;;
-baseBuilderTag) baseBuilderTag="$2"; shift;;
-eclipseBuilder) eclipseBuilder="$2"; shift;;
-eclipseBuilderTag) eclipseBuilderTag="$2"; shift;;
-noTests) fetchTests="no"; shift;;
-help) echo $usage; exit 0;;
--help) echo $usage; exit 0;;
-h) echo $usage; exit 0;;
*) buildID="$1";
esac
shift
done
# Must specify a build ID
if [ "x${buildID}x" = "xx" ]; then
echo >&2 "Must specify build ID. Example: R3_5_1 ."
echo >&2 "${usage}"
exit 1
else
echo "Going to create source tarballs for ${buildID}."
fi
if [ "x${workDirectory}x" = "xx" ]; then
workDirectory="${baseDir}"
echo "Working directory not set; using this directory (${baseDir})."
fi
if [ "x${baseBuilder}x" = "xx" ]; then
baseBuilder="${workDirectory}"/org.eclipse.releng.basebuilder
echo "Basebuilder checkout not specified; will check out ${baseBuilderTag} into ${baseBuilder}."
fi
if [ "x${eclipseBuilder}x" = "xx" ]; then
eclipseBuilder="${workDirectory}"/org.eclipse.releng.eclipsebuilder
echo "Eclipsebuilder checkout not specified; will check out into ${eclipseBuilder}."
fi
fetchDirectory="${workDirectory}"/fetch
mkdir -p "${fetchDirectory}"
homeDirectory="${workDirectory}"/userhome
rm -rf "${homeDirectory}"
mkdir -p "${homeDirectory}"
workspace="${workDirectory}"/workspace
rm -rf "${workspace}"
mkdir -p "${workspace}"
cvsRepo=":pserver:anonymous@dev.eclipse.org:/cvsroot/eclipse"
mapsRoot="org.eclipse.releng/maps"
commonGitRepo="git://git.eclipse.org/gitroot/platform/eclipse.platform.common"
# Fetch basebuilder
if [ ! -e "${baseBuilder}" ]; then
mkdir -p "${baseBuilder}"
cd "${baseBuilder}"/..
cvs -d${cvsRepo} co -r ${baseBuilderTag} org.eclipse.releng.basebuilder
cd "${baseDir}"
fi
# Fetch eclipsebuilder
if [ ! -e ${eclipseBuilder} ]; then
mkdir -p "${eclipseBuilder}"
cd "${eclipseBuilder}"/..
cvs -d${cvsRepo} co -r ${eclipseBuilderTag} org.eclipse.releng.eclipsebuilder
cd "${eclipseBuilder}"
patch -p0 < "${baseDir}"/patches/eclipse-addFetchMasterAndTestsTargets.patch
patch -p0 < "${baseDir}"/patches/eclipse-removeSkipMapsCheck.patch
cd "${baseDir}"
fi
if [ -e ${fetchDirectory}/orbitRepo ]; then
cd "${eclipseBuilder}"
patch -p0 < "${baseDir}"/patches/eclipse-dontusefullmoonformaster.patch
cd "${baseDir}"
fi
if [ -e ${fetchDirectory}/ecfBundles ]; then
cd "${eclipseBuilder}"
patch -p0 < "${baseDir}"/patches/eclipse-useLocalECFBundles.patch
cd "${baseDir}"
fi
# Build must be run from within o.e.r.eclipsebuilder checkout
cd "${eclipseBuilder}"
java -jar \
"${baseBuilder}"/plugins/org.eclipse.equinox.launcher_*.jar \
-consolelog \
-data "${workspace}" \
-application org.eclipse.ant.core.antRunner \
-f buildAll.xml \
fetchMasterFeature \
-DbuildDirectory="${fetchDirectory}" \
-DskipBase=true \
-DmapsRepo=${cvsRepo} \
-DmapCvsRoot=${cvsRepo} \
-DmapsCvsRoot=${cvsRepo} \
-DmapsRoot=${mapsRoot} \
-DmapsCheckoutTag=${buildID} \
-DmapVersionTag=${buildID} \
-Dcommonrepo=${commonGitRepo} \
-Duser.home="${homeDirectory}" \
2>&1 | tee ${workDirectory}/sourcesFetch.log
cd "${fetchDirectory}"
# Extract osgi.util src for rebuilding
pushd plugins/org.eclipse.osgi.util
unzip -q -d src src.zip
# Remove pre-compiled class files and the source.zip
rm -r org/ src.zip
popd
# Remove scmCache directory
rm -rf scmCache
git clone git://git.eclipse.org/gitroot/ecf/org.eclipse.ecf.git
cd org.eclipse.ecf
git archive --format=tar --prefix=ecf-3.5.0/ R-Release_HEAD-sdk_feature-19_2011-03-13_18-40-16 | gzip >ecf-3.5.0.tar.gz
cp ecf-3.5.0.tar.gz ../
cd ..
rm -fr org.eclipse.ecf
tar -xf ecf-3.5.0.tar.gz
rm -fr ecf-3.5.0.tar.gz
cd ecf-3.5.0
# Source for ECF bthat aren't part of SDK map files
for f in \
org.eclipse.ecf \
org.eclipse.ecf.filetransfer \
org.eclipse.ecf.identity \
org.eclipse.ecf.ssl \
; do
mv framework/bundles/$f ../plugins;
done
for f in \
org.eclipse.ecf.provider.filetransfer \
org.eclipse.ecf.provider.filetransfer.httpclient \
org.eclipse.ecf.provider.filetransfer.httpclient.ssl \
org.eclipse.ecf.provider.filetransfer.ssl \
; do
mv providers/bundles/$f ../plugins;
done
cd ..
rm -fr ecf-3.5.0
cd "${fetchDirectory}"
# We don't want to re-ship these as those bundles inside will already be
# copied into the right places for the build
rm -rf ecfBundles orbitRepo
# Remove files from the version control system
find -depth -name CVS -exec rm -rf {} \;
# Remove prebuilt binaries
find \( -name '*.exe' -o -name '*.dll' \) -delete
find -type f \( -name '*.so' -o -name '*.so.2' -o -name '*.a' \) -delete
find \( -name '*.sl' -o -name '*.jnilib' \) -delete
find \( -name '*.cvsignore' \) -delete
# Remove unnecessary repo
rm -rf tempSite
# Remove binary JARs
find -type f -name '*.jar' -delete
# Remove fetch logs
rm fetch_*
# Remove unnecessary feature and plugins
rm -rf features/org.eclipse.sdk.examples
rm -rf plugins/*.examples*
# Remove temporary files
find -name '*.orig' -delete
# Remove empty directories
find -type d -empty -delete
cd ..
mv fetch eclipse-${label}-src
tar cjf "${workDirectory}"/eclipse-${label}-src.tar.bz2 \
eclipse-${label}-src
cd "${eclipseBuilder}"
if [ "${fetchTests}" = "yes" ]; then
rm -rf "${fetchDirectory}"/*
java -jar \
"${baseBuilder}"/plugins/org.eclipse.equinox.launcher_*.jar \
-consolelog \
-data "${workspace}" \
-application org.eclipse.ant.core.antRunner \
-f buildAll.xml \
fetchSdkTestsFeature \
-DbuildDirectory="${fetchDirectory}" \
-DskipBase=true \
-Dhuson=true \
-DmapsRepo=${cvsRepo} \
-DmapCvsRoot=${cvsRepo} \
-DmapsCvsRoot=${cvsRepo} \
-DmapsRoot=${mapsRoot} \
-DmapsCheckoutTag=${buildID} \
-DmapVersionTag=${buildID} \
-Dcommonrepo=${commonGitRepo} \
-Duser.home="${homeDirectory}" \
2>&1 | tee "${workDirectory}"/testsFetch.log
cd ${workDirectory}
mkdir ${workDirectory}/eclipse-sdktests-${label}-src
mv ${fetchDirectory}/* ${workDirectory}/eclipse-sdktests-${label}-src
tar cjf ${workDirectory}/eclipse-sdktests-${label}-src.tar.bz2 \
eclipse-sdktests-${label}-src
scriptsDir=org.eclipse.releng.eclipsebuilder/eclipse/buildConfigs/sdk.tests/testScripts
testScripts=eclipse-sdktests-${label}-scripts
# Testing runtests and test.xml scripts which are not in org.eclipse.test
rm -rf org.eclipse.releng.eclipsebuilder/eclipse/buildConfigs/sdk.tests/testScripts/*
cvs -d ${cvsRepo} co -r ${buildID} ${scriptsDir}
mkdir ${testScripts}
mv ${scriptsDir}/runtests ${testScripts}
mv ${scriptsDir}/test.xml ${testScripts}
rm -rf org.eclipse.releng.eclipsebuilder
tar cjf ${workDirectory}/eclipse-sdktests-${label}-scripts.tar.bz2 ${testScripts}
fi
cd "${baseDir}"