diff options
author | Andrew Niefer | 2009-08-25 18:32:17 +0000 |
---|---|---|
committer | Andrew Niefer | 2009-08-25 18:32:17 +0000 |
commit | 019a5ce1f8598735c28d04b9222465fa6621079c (patch) | |
tree | 06100de486d2240a6883cb38fcde2981e48cc403 /releng | |
parent | f2038e27ced3abeccf41326e7319418656827d9a (diff) | |
download | rt.equinox.framework-019a5ce1f8598735c28d04b9222465fa6621079c.tar.gz rt.equinox.framework-019a5ce1f8598735c28d04b9222465fa6621079c.tar.xz rt.equinox.framework-019a5ce1f8598735c28d04b9222465fa6621079c.zip |
Diffstat (limited to 'releng')
-rw-r--r-- | releng/org.eclipse.equinox.launcher.releng/.project | 11 | ||||
-rw-r--r-- | releng/org.eclipse.equinox.launcher.releng/build.xml | 247 | ||||
-rw-r--r-- | releng/org.eclipse.equinox.launcher.releng/remote.sh | 45 |
3 files changed, 303 insertions, 0 deletions
diff --git a/releng/org.eclipse.equinox.launcher.releng/.project b/releng/org.eclipse.equinox.launcher.releng/.project new file mode 100644 index 000000000..8433d045d --- /dev/null +++ b/releng/org.eclipse.equinox.launcher.releng/.project @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.equinox.launcher.releng</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + </buildSpec> + <natures> + </natures> +</projectDescription> diff --git a/releng/org.eclipse.equinox.launcher.releng/build.xml b/releng/org.eclipse.equinox.launcher.releng/build.xml new file mode 100644 index 000000000..aa0c0ad52 --- /dev/null +++ b/releng/org.eclipse.equinox.launcher.releng/build.xml @@ -0,0 +1,247 @@ +<!-- + Copyright (c) 2009 IBM Corporation and others. + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + + Contributors: + IBM Corporation - initial API and implementation + --> +<project name="Launcher Build" basedir="." default="build"> + + <property name="cvsRoot" value=":pserver:anonymous@dev.eclipse.org:/cvsroot/rt" /> + <property name="cvsExecutablePath" value="org.eclipse.equinox/framework/bundles/org.eclipse.equinox.executable" /> + <property name="cvsTag" value="HEAD" /> + + <!-- Macro for execing scp --> + <macrodef name="SCP"> + <attribute name="dir" /> + <attribute name="source"/> + <attribute name="destination" /> + <attribute name="failonerror" default="true" /> + <sequential> + <echo message="Copying @{source} to @{destination}."/> + <exec dir="@{dir}" executable="scp" failonerror="@{failonerror}"> + <arg value="-q"/> + <arg line="@{source}" /> + <arg value="@{destination}" /> + </exec> + </sequential> + </macrodef> + + <!-- macro to resolve properties because we can't do ${${prop}} --> + <macrodef name="resolveProperty"> + <attribute name="name" /> + <attribute name="value" /> + <sequential> + <condition property="@{name}" value="${@{value}}" > + <isset property="@{value}"/> + </condition> + </sequential> + </macrodef> + + <target name="init_exeFolder" > + <!-- set to "bin" or "contributed" according to which folder under org.eclipse.equinox.executable to store the built eclipse --> + <condition property="exeFolder" value="contributed" else="bin"> + <or> + <equals arg1="s390" arg2="${arch}" /> + <equals arg1="s390x" arg2="${arch}" /> + <equals arg1="motif.sparc" arg2="${ws}.${arch}" /> + <equals arg1="win32.ia64" arg2="${ws}.${arch}" /> + </or> + </condition> + </target> + + <target name="init_fragment" > + <!-- set to "contributed" or "fragments" according to which folder under org.eclipse.equinox.launcher to find the fragment --> + <condition property="subFolder" value="contributed" else="fragments"> + <or> + <equals arg1="s390" arg2="${arch}" /> + <equals arg1="s390x" arg2="${arch}" /> + <equals arg1="solaris.x86" arg2="${os}.${arch}" /> + </or> + </condition> + <!-- mac only has arch in fragment name for x86_64 --> + <condition property="fragmentFolder" value="${subFolder}/org.eclipse.equinox.launcher.${ws}.${os}.${arch}" + else="${subFolder}/org.eclipse.equinox.launcher.${ws}.${os}" > + <not> + <and> + <equals arg1="macosx" arg2="${os}"/> + <not> <equals arg1="x86_64" arg2="${arch}"/> </not> + </and> + </not> + </condition> + </target> + + <target name="fetchExecutableSource" > + <!-- fetch the source and put it in a folder unique to this platform so we don't interfere with other + compiles if the working folder is shared accross multiple machines --> + <delete dir="${basedir}/${os}.${ws}.${arch}/library" failonerror="false"/> + <cvs command="export -d ${os}.${ws}.${arch}/library" tag="${cvsTag}" package="${cvsExecutablePath}/library" cvsRoot="${cvsRoot}" dest="${basedir}" quiet="true" failonerror="true"/> + </target> + + <target name="buildNix" if="buildNix"> + <!-- exec the build.sh for flavors of unix --> + <exec dir="${libraryFolder}/${ws}" executable="sh" failonerror="true"> + <arg value="build.sh"/> + <arg line="-ws ${ws} -os ${os} -arch ${arch}"/> + <arg line="-java ${javaHome}"/> + <arg value="clean all" /> + <env key="PATH" value="/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin" /> + </exec> + + <!-- copy the resulting executable and .so --> + <SCP dir="${libraryFolder}/${ws}" source="eclipse" destination="${resultsBaseFolder}/org.eclipse.equinox.executable/${exeFolder}/${ws}/${os}/${arch}" /> + <SCP dir="${libraryFolder}/${ws}" source="eclipse_${maj_ver}${min_ver}.so" destination="${resultsBaseFolder}/org.eclipse.equinox.launcher/${fragmentFolder}" /> + </target> + + <target name="buildWindows" if="buildWindows"> + <!-- exec the batch file to build on windows --> + <exec dir="${libraryFolder}/${ws}" executable="cmd" failonerror="true"> + <arg value="/c" /> + <arg value="build.bat" /> + <arg line="${arch}"/> + <arg value="-java"/> + <arg value="${javaHome}"/> + <arg line="clean all" /> + </exec> + + <SCP dir="${libraryFolder}/${ws}" source="eclipse.exe eclipsec.exe" destination="${resultsBaseFolder}/org.eclipse.equinox.executable/${exeFolder}/${ws}/${os}/${arch}" /> + <SCP dir="${libraryFolder}/${ws}" source="eclipse_${maj_ver}${min_ver}.dll" destination="${resultsBaseFolder}/org.eclipse.equinox.launcher/${fragmentFolder}" /> + <condition property="copyWPF"> + <equals arg1="${ws}" arg2="wpf" /> + </condition> + <antcall target="copyWPF" /> + </target> + + <target name="copyWPF" if="copyWPF" > + <SCP dir="${libraryFolder}/${ws}" source="com_${maj_ver}${min_ver}.dll" destination="${resultsBaseFolder}/org.eclipse.equinox.launcher/${fragmentFolder}" failonerror="false" /> + </target> + + <target name="buildMac" if="buildMac"> + <exec dir="${libraryFolder}/carbon" executable="sh" failonerror="true"> + <arg value="build.sh"/> + <arg line="-ws ${ws} -arch ${arch}"/> + <arg value="clean all" /> + <env key="PATH" value="/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:${extraPath}" /> + </exec> + + <SCP dir="${libraryFolder}/carbon" source="eclipse" destination="${resultsBaseFolder}/org.eclipse.equinox.executable/${exeFolder}/${ws}/${os}/${arch}/Eclipse.app/Contents/MacOS" /> + <SCP dir="${libraryFolder}/carbon" source="eclipse_${maj_ver}${min_ver}.so" destination="${resultsBaseFolder}/org.eclipse.equinox.launcher/${fragmentFolder}" /> + <!-- x86 and ppc are the same universal binary, copy to both under the executable feature --> + <condition property="copyMacPPC"> + <equals arg1="${arch}" arg2="x86" /> + </condition> + <antcall target="copyMacPPC" /> + </target> + + <target name="copyMacPPC" if="copyMacPPC" > + <SCP dir="${libraryFolder}/carbon" source="eclipse" destination="${resultsBaseFolder}/org.eclipse.equinox.executable/${exeFolder}/${ws}/${os}/ppc/Eclipse.app/Contents/MacOS" /> + </target> + + <target name="determineBuild" > + <condition property="buildWindows" > + <equals arg1="${os}" arg2="win32"/> + </condition> + <condition property="buildMac" > + <equals arg1="${os}" arg2="macosx" /> + </condition> + <condition property="buildNix" > + <not><or> + <isset property="buildWindows" /> + <isset property="buildMac" /> + </or></not> + </condition> + </target> + + <target name="initProperties" > + <property name="ws" value="${env.ws}"/> + <property name="os" value="${env.os}" /> + <property name="arch" value="${env.arch}" /> + + <resolveProperty name="machine" value="m_${os}.${arch}" /> + <resolveProperty name="javaArg" value="j_${os}.${arch}" /> + <resolveProperty name="userName" value="u_${os}.${arch}" /> + + <!-- windows is built locally, everything else is remote --> + <condition property="local" > + <equals arg1="${os}" arg2="win32"/> + </condition> + <condition property="remote" > + <not> <isset property="local"/> </not> + </condition> + + <!-- working directory defaults for our machines. Others should + pass in workspace as a property on the command line --> + <condition property="workspace" value="/Users/swtbuild/build/equinox" > + <equals arg1="${os}" arg2="macosx"/> + </condition> + <condition property="workspace" value="~/equinox" > + <equals arg1="${os}.${arch}" arg2="solaris.x86" /> + </condition> + <property name="workspace" value="/bluebird/teamswt/equinox" /> + </target> + + + <!-- + Main entry point. We expect the following properties: + os, ws, arch - to be passed as ant properties or set as environment variables. + resultsBaseFolder - location to scp the resulting binaries to, usually a workspace containing the executable & launcher projects (eg: user@machine:~/workspace) + m_<os>.<arch> - name of a machine to ssh to for this os & arch + u_<os>.<arch> - optional user on the machine for this platform + j_<os>.<arch> - location of a jdk we can compile against + We expect ssh keys to be set up so that we don't need passwords + + The j_<os>.<arch> properties work together with remote.sh, and are either + -javaHome /path/to/jdk + or -java relative/path/to/jdk + --> + <target name="build" depends="initProperties"> + <echo message="Building for ${os}, ${ws}, ${arch}"/> + <antcall target="buildLocal" /> + <antcall target="buildRemote" /> + </target> + + <target name="buildLocal" if="local" > + <condition property="javaHome" value="${j_win32}" else="${java.home}" > + <isset property="j_win32"/> + </condition> + <antcall target="buildConfig" /> + </target> + + <target name="buildRemote" if="remote"> + <echo message="Machine: ${machine}" /> + <condition property="scpDest" value="${userName}@${machine}" else="${machine}" > + <isset property="userName" /> + </condition> + <condition property="sshUser" value="-l ${userName}" else="" > + <isset property="userName" /> + </condition> + <SCP dir="${basedir}" source="remote.sh build.xml" destination="${scpDest}:${workspace}" /> + <echo message="Execing ssh ${machine}" /> + <exec executable="ssh" failonerror="true" > + <arg line="${sshUser} ${machine}" /> + <arg line="sh ${workspace}/remote.sh" /> + <arg line="${javaArg}" /> + <arg line="-Dos=${os} -Dws=${ws} -Darch=${arch}" /> + <arg value="-DresultsBaseFolder=${resultsBaseFolder}" /> + </exec> + </target> + + <target name="buildConfig" depends="init_exeFolder,init_fragment,determineBuild" > + <antcall target="fetchExecutableSource" /> + <property name="javaHome" value="${java.home}/.." /> + <property name="libraryFolder" value="${basedir}/${os}.${ws}.${arch}/library" /> + <property file="${libraryFolder}/make_version.mak" /> + + <antcall target="buildNix" /> + <antcall target="buildWindows" /> + <antcall target="buildMac" /> + </target> + +</project> + + + + diff --git a/releng/org.eclipse.equinox.launcher.releng/remote.sh b/releng/org.eclipse.equinox.launcher.releng/remote.sh new file mode 100644 index 000000000..6dde35a36 --- /dev/null +++ b/releng/org.eclipse.equinox.launcher.releng/remote.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +#the directory containing this script +scriptDir=`dirname "$0"` + +ANT_HOME=/bluebird/teamswt/swt-builddir/build/apache-ant-1.7.1 +extraArgs="" + +while [ "$1" != "" ]; do + if [ "$1" = "-java" ] && [ "$2" != "" ]; then + JAVA_HOME=/bluebird/teamswt/swt-builddir/build/JRE/$2 + shift + elif [ "$1" = "-javaHome" ] && [ "$2" != "" ]; then + JAVA_HOME="$2" + shift + elif [ "$1" = "-antHome" ] && [ "$2" != "" ]; then + ANT_HOME="$2" + shift + else + extraArgs="$extraArgs $1" + fi + shift +done + +OS=`uname -s` +case $OS in + "SunOS") + if [ "$PROC" = "" ]; then + PROC=`uname -p` + fi + case ${PROC} in + "i386") + ANT_HOME=~/equinox/apache-ant-1.7.1 + ;; + esac + ;; +esac + +PATH=$JAVA_HOME/jre/bin:$ANT_HOME/bin:$PATH + +export JAVA_HOME ANT_HOME PATH +echo JAVA_HOME = $JAVA_HOME +echo ANT_HOME = $ANT_HOME +echo ant -f ${scriptDir}/build.xml buildConfig $extraArgs +ant -f ${scriptDir}/build.xml buildConfig $extraArgs |