New eclipse-build snapshot. Pdebuild and ecf compilation are part of it.

This commit is contained in:
Alexander Kurtakov 2009-10-12 14:15:58 +00:00
parent dc18c1d1c4
commit 8b0c1fa102
6 changed files with 7 additions and 535 deletions

View File

@ -1 +0,0 @@
bin.includes = feature.xml

View File

@ -1,85 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<feature
id="org.eclipse.ecf.filetransfer_feature"
label="ECF filetransfer"
version="2.0.0">
<description url="http://www.example.com/description">
[Enter Feature Description here.]
</description>
<copyright url="http://www.example.com/copyright">
[Enter Copyright Description here.]
</copyright>
<license url="http://www.example.com/license">
[Enter License Description here.]
</license>
<plugin
id="org.eclipse.equinox.concurrent"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.eclipse.ecf"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.eclipse.ecf.filetransfer"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.eclipse.ecf.identity"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.eclipse.ecf.provider.filetransfer"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.eclipse.ecf.provider.filetransfer.httpclient"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.eclipse.ecf.provider.filetransfer.httpclient.ssl"
download-size="0"
install-size="0"
version="0.0.0"
unpack="false"/>
<plugin
id="org.eclipse.ecf.provider.filetransfer.ssl"
download-size="0"
install-size="0"
version="0.0.0"
fragment="true"
unpack="false"/>
<plugin
id="org.eclipse.ecf.ssl"
download-size="0"
install-size="0"
version="0.0.0"
fragment="true"
unpack="false"/>
</feature>

View File

@ -1,77 +0,0 @@
#! /bin/sh
# We need to make our own copy of the eclipse platform in order to
# build against it. We do this since the build root might already
# contain a copy of the plugin we are building -- and the eclipse
# releng scripts fail in this situation. We put this script in the
# eclipse core so that it is easy to use from other spec files.
# Arguments are:
# * directory where results should end up (script will make it)
# * base location of eclipse platform install
# * an optional string that is used to select non-platform
# plugins and features. At present if a plugin or feature has
# this as a substring, it will be included. You need only run
# this script once, it will link both the platform and the other
# optionally-selected parts in a single invocation.
# Test to see if the minimum arguments
# are specified
if [ $# -lt 2 ]; then
echo "Usage: copy-platform where eclipse_base optional_directories"
echo "For example: copy-plaform ~/SDK /usr/lib/eclipse cdt pydev jdt"
exit 1
fi
where=$1; shift
eclipse=$1; shift
datadir=/usr/share/eclipse
mkdir -p $where/plugins $where/features
cd $where
# Are there any optional arguments left?
if [ $# -gt 0 ]; then
for optional in "$@"; do
(cd $eclipse; ls -d plugins/*"$optional"* features/*"$optional"*) |
while read f; do
[ ! -e $f ] && ln -s $eclipse/$f $f
done
(cd $eclipse/dropins; ls -d *"$optional"*) |
while read f; do
if [ -e $eclipse/dropins/$f/eclipse ]; then
(cd $eclipse/dropins/$f/eclipse; ls -d plugins/* features/*) |
while read g; do
[ ! -e $g ] && \
ln -s $eclipse/dropins/$f/eclipse/$g $g
done
else
(cd $eclipse/dropins/$f; ls -d plugins/* features/*) |
while read g; do
[ ! -e $g ] && \
ln -s $eclipse/dropins/$f/$g $g
done
fi
done
(cd $datadir/dropins; ls -d *"$optional"*) |
while read f; do
if [ -e $datadir/dropins/$f/eclipse ]; then
(cd $datadir/dropins/$f/eclipse; ls -d plugins/* features/*) |
while read g; do
[ ! -e $g ] && \
ln -s $datadir/dropins/$f/eclipse/$g $g
done
else
(cd $datadir/dropins/$f; ls -d plugins/* features/*) |
while read g; do
[ ! -e $g ] && \
ln -s $datadir/dropins/$g $g
done
fi
done
done
fi
# Code after this point is automatically created by eclipse.spec.

View File

@ -1,303 +0,0 @@
#!/bin/bash
# args: [-f <feature>] [-d <dependencies (outside SDK)>] [-a <additional build args>] [-j <JVM args>] [-v] [-D] [-o <Orbit dependencies>]
function usage {
cat << _EOF_
usage: $0 [<options>]
Use PDE Build to build Eclipse features
Optional arguments:
-h Show this help message
-f Feature ID to build
-d Plugin dependencies in addition to Eclipse SDK
(space-separated, names on which to glob features and plugins)
-a Additional build arguments (ex. -DjavacSource=1.5)
-j VM arguments (ex. -DJ2SE-1.5=%{_jvmdir}/java/jre/lib/rt.jar)
-v Be verbose
-D Debug platform itself (passes -consolelog -debug to Eclipse)
-o Directory containing Orbit-style dependencies
-z Comma-delimited list of dependency zips (not for use during RPM build)
_EOF_
}
function copyPlatform {
# This seems silly but I was running into issues with empty strings
# counting as arguments to copy-platform -- overholt, 2008-03
if [ -z "$dependencies" ]; then
if [ $verbose -eq 1 ]; then
echo "/bin/sh -x $datadir/eclipse/buildscripts/copy-platform $SDK $datadir/eclipse"
/bin/sh -x $datadir/eclipse/buildscripts/copy-platform $SDK $datadir/eclipse
else
echo "/bin/sh $datadir/eclipse/buildscripts/copy-platform $SDK $datadir/eclipse"
/bin/sh $datadir/eclipse/buildscripts/copy-platform $SDK $datadir/eclipse
fi
else
if [ $verbose -eq 1 ]; then
echo "/bin/sh -x $datadir/eclipse/buildscripts/copy-platform $SDK $datadir/eclipse $dependencies"
/bin/sh -x $datadir/eclipse/buildscripts/copy-platform $SDK $datadir/eclipse $dependencies
else
echo "/bin/sh $datadir/eclipse/buildscripts/copy-platform $SDK $datadir/eclipse $dependencies"
/bin/sh $datadir/eclipse/buildscripts/copy-platform $SDK $datadir/eclipse $dependencies
fi
fi
}
function findFeatureId {
# We can determine the feature ID if we have only one
numFeatures=$(find $sourceDir -name feature.xml | wc -l)
if [ $numFeatures -ne 1 ]; then
#echo "# features found = $numFeatures"
echo "Cannot determine feature ID. Please specify with -f."
usage
exit 1
fi
featureXml=$(find $sourceDir -name feature.xml)
# Taken from Ben Konrath's package-build
# make an ant build files to extract the id from the feature.xml
buildFile=$buildDir/findFeatureForRPM-tmp-build.xml
echo "<project default=\"main\">
<target name=\"main\">
<xmlproperty file=\"$featureXml\" collapseAttributes=\"true\"/>
<fail unless=\"feature.id\" message=\"feature.id not set\"/>
<echo message=\"\${feature.id}\" />
</target>
</project>" > $buildFile
featureId=$(ant -Dbasedir=$sourceDir -f $buildFile 2>&1 | grep echo | cut --delimiter=' ' -f 7)
rm $buildFile
}
function findFeatureNameAndVersion {
featureXml=$(find $sourceDir -name feature.xml | while read f; do grep -l id=\"$featureId\" $f; done)
buildFile=$buildDir/findFeatureForRPM-tmp-build.xml
echo "<project default=\"main\">
<target name=\"main\">
<xmlproperty file=\"$featureXml\" collapseAttributes=\"true\"/>
<fail unless=\"feature.id\" message=\"feature.id not set\"/>
<echo message=\"\${feature.label}\" />
</target>
</project>" > $buildFile
featureName=$(ant -Dbasedir=$sourceDir -f $buildFile 2>&1 | grep echo | sed "s/.*\[echo\]\ //")
rm $buildFile
echo "<project default=\"main\">
<target name=\"main\">
<xmlproperty file=\"$featureXml\" collapseAttributes=\"true\"/>
<fail unless=\"feature.id\" message=\"feature.id not set\"/>
<echo message=\"\${feature.version}\" />
</target>
</project>" > $buildFile
featureVersion=$(ant -Dbasedir=$sourceDir -f $buildFile 2>&1 | grep echo | sed "s/.*\[echo\]\ //")
rm $buildFile
}
function findMaxBREE {
manifests=$(find $sourceDir -name MANIFEST.MF)
maxBree=1.4
for i in $manifests; do
breeLine=$(cat $i|grep RequiredExecutionEnvironment|cut -c37-|sed 's/^ *\(.*\) *$/\1/')
case $breeLine in
"J2SE-1.5")
bree=1.5
;;
"JavaSE-1.6")
bree=1.6
;;
esac
if [ "$bree" \> "$maxBree" ]; then
maxBree=$bree
fi
done
}
sourceDir=$PWD
buildDir=$PWD/build
SDK=$buildDir/SDK
homeDir=$buildDir/home
datadir=`rpm --eval "%{_libdir}"`
pdeBuildDir=$datadir/eclipse/dropins/sdk/plugins/org.eclipse.pde.build_@PDEBUILDVERSION@
featureId=
dependencies=
additionalArgs=
vmArgs=
verbose=0
dryRun=0
debugPlatform=0
orbitDepsDir=
p2Generate=
testing=false
zipDeps=
# See above. r = dry run (used for testing)
while getopts “hf:d:z:a:j:tvrDo:” OPTION
do
case $OPTION in
h)
usage
exit
;;
f)
featureId=$OPTARG
;;
d)
dependencies=$OPTARG
;;
a)
additionalArgs=$OPTARG
;;
j)
vmArgs=$OPTARG
;;
t)
testing=true
;;
v)
verbose=1
;;
r)
dryRun=1
;;
D)
debugPlatform=1
;;
o)
orbitDepsDir=$OPTARG
;;
z)
zipDeps=$OPTARG
;;
?)
usage
exit
;;
esac
done
echo "mkdir -p $buildDir"
if [ $dryRun -ne 1 ]; then
mkdir -p $buildDir
fi
# Eclipse may try to write to the building user's home directory so we create a
# temporary one for use by the build.
echo "mkdir -p $homeDir"
if [ $dryRun -ne 1 ]; then
mkdir -p $homeDir
fi
if [ -z $featureId ]; then
findFeatureId
fi
if [ -z $featureId ]; then
echo "Cannot determine feature ID. Please specify with -f."
usage
exit 1
fi
findFeatureNameAndVersion
echo "Building feature = $featureId."
if [ -z "$dependencies" ]; then
if [ $verbose -eq 1 ]; then
echo "Assuming no dependencies except Eclipse SDK."
fi
fi
# Symlink the SDK and dependencies for build
if [ -z "$dependencies" ]; then
echo "Symlinking SDK into $SDK directory."
else
echo "Symlinking SDK and \"$dependencies\" into $SDK directory."
fi
if [ $dryRun -ne 1 ]; then
copyPlatform
fi
if [ $debugPlatform -eq 1 ]; then
debugPlatformArgs="-debug -consolelog"
fi
if [ "x$orbitDepsDir" != "x" ]; then
orbitDeps="-DorbitDepsDir=\"$orbitDepsDir\""
fi
if [ "x$zipDeps" != "x" ]; then
OLD_IFS="$IFS"
IFS=","
zipDepsArray=($zipDeps)
IFS="$OLD_IFS"
numZips=${#zipDepsArray[@]}
for (( i=0; i< $numZips; i++ )); do
thisZip=${zipDepsArray[$i]}
thisFile=$(basename $thisZip)
thisURL=$(echo $thisZip | sed s/$thisFile//)
if [ ! -e $thisFile ]; then
wget -q $thisZip
fi
mkdir -p tmp
unzip -q -o $thisFile -d tmp
cp -raf tmp/eclipse/features/* $SDK/features
cp -raf tmp/eclipse/plugins/* $SDK/plugins
rm -rf tmp
thisZip=
thisFile=
thisURL=
done
fi
if [ -z "$additionalArgs" ]; then
findMaxBREE
additionalArgs="-DjavacSource=$maxBree -DjavacTarget=$maxBree"
fi
echo "Starting build:"
if [ $testing != true ]; then
java -cp $SDK/startup.jar \
org.eclipse.core.launcher.Main \
-application org.eclipse.ant.core.antRunner \
$debugPlatformArgs \
-Dtype=feature \
-Did=$featureId \
-DbaseLocation=$SDK \
-DsourceDirectory=$sourceDir \
-DbuildDirectory=$buildDir \
-Dbuilder=$datadir/eclipse/dropins/sdk/plugins/org.eclipse.pde.build_@PDEBUILDVERSION@/templates/package-build \
$orbitDeps \
-Dtesting="$testing" \
$additionalArgs \
-f $pdeBuildDir/scripts/build.xml \
-vmargs \
-Duser.home=$homeDir \
$vmArgs
else
java -cp $SDK/startup.jar \
org.eclipse.core.launcher.Main \
-application org.eclipse.ant.core.antRunner \
$debugPlatformArgs \
-Dtype=feature \
-Did=$featureId \
-DbaseLocation=$SDK \
-DsourceDirectory=$sourceDir \
-DbuildDirectory=$buildDir \
-Dbuilder=$datadir/eclipse/dropins/sdk/plugins/org.eclipse.pde.build_@PDEBUILDVERSION@/templates/package-build \
$orbitDeps \
-Dtesting="$testing" \
$additionalArgs \
-f $pdeBuildDir/scripts/build.xml \
-vmargs \
-Duser.home=$homeDir \
$vmArgs
fi

View File

@ -10,7 +10,6 @@ Epoch: 1
%define eclipse_minor 5
%define eclipse_majmin %{eclipse_major}.%{eclipse_minor}
%define eclipse_micro 1
%define swtver 3.5.1.v3555a
%define initialize 1
%global download_url http://download.eclipse.org/technology/linuxtools/eclipse-build/
@ -30,22 +29,16 @@ Epoch: 1
Summary: An open, extensible IDE
Name: eclipse
Version: %{eclipse_majmin}.%{eclipse_micro}
Release: 5%{?dist}
Release: 6%{?dist}
License: EPL
Group: Text Editors/Integrated Development Environments (IDE)
URL: http://www.eclipse.org/
Source0: %{download_url}eclipse-build-0.4.0RC0.tar.gz
Source1: %{download_url}eclipse-R3_5_1-fetched-src.tar.bz2
Source16: %{name}-copy-platform.sh
Source17: efj.sh.in
# This file contains the types of files we'd like to extract from the jars
# when using the FileInitializer
Source19: %{name}-filenamepatterns.txt
# Script to wrap PDE Build calls for bundle builds
Source21: %{name}-pdebuild.sh
# Create a simple feature for building ECF's filetransfer plugins
Source26: ecf-filetransfer-feature.xml
Source27: ecf-filetransfer-build.properties
# This script copies the platform sub-set of the SDK for generating metadata
Source28: %{name}-mv-Platform.sh
@ -128,9 +121,6 @@ SWT Library for GTK+-2.0.
Summary: Eclipse Rich Client Platform
Group: Development/Languages
Requires: %{name}-swt = %{epoch}:%{version}-%{release}
# FIXME: investigate. Can we just add a %{arch} to the above?
## This file-level requirement is for the bi-arch multilib case
#Requires: %{_libdir}/%{name}/plugins/org.eclipse.swt.gtk.linux.%{eclipse_arch}_%{swtver}.jar
Requires: icu4j-eclipse >= 1:4.0.1-3
Requires: java >= 1.6.0
@ -141,9 +131,6 @@ Eclipse Rich Client Platform
Summary: Eclipse platform common files
Group: Text Editors/Integrated Development Environments (IDE)
Requires: %{name}-rcp = %{epoch}:%{version}-%{release}
# FIXME: investigate. Can we just add a %{arch} to the above?
## This file-level requirement is for the bi-arch multilib case
#Requires: %{_libdir}/%{name}/plugins/org.eclipse.swt.gtk.linux.%{eclipse_arch}_%{swtver}.jar
Requires: ant-antlr ant-apache-bcel ant-apache-log4j ant-apache-oro ant-apache-regexp ant-apache-resolver ant-commons-logging ant-apache-bsf ant-commons-net
Requires: ant-javamail ant-jdepend ant-junit ant-nodeps ant-swing ant-trax ant-jsch
Requires: jakarta-commons-beanutils jakarta-commons-collections jakarta-commons-digester jakarta-commons-dbcp jakarta-commons-fileupload jakarta-commons-launcher jakarta-commons-modeler jakarta-commons-pool
@ -477,56 +464,13 @@ if [ ! -z "$JARS" ]; then
#FIXME: enable exit 1
fi
# ECF filetransfer plugins
pushd ecf-src
mkdir -p plugins
mv org.eclipse* plugins
mkdir -p features/org.eclipse.ecf.filetransfer-feature
pushd features/org.eclipse.ecf.filetransfer-feature
cp -p %{SOURCE26} feature.xml
cp -p %{SOURCE27} build.properties
popd
popd
# target platform template patch
%patch3 -p0
popd
%build
ORIGCLASSPATH=$CLASSPATH
export JAVA_HOME=%{java_home}
./build.sh
SDK=$(cd build/eclipse-R3_5_1-fetched-src/installation && pwd)
LAUNCHERVERSION=$(ls $SDK/plugins | grep equinox.launcher_ | sed 's/org.eclipse.equinox.launcher_//')
PDEPLUGINVERSION=$(ls $SDK/plugins | grep pde.build_ | sed 's/org.eclipse.pde.build_//')
pushd build/eclipse-R3_5_1-fetched-src/plugins/org.eclipse.equinox.initializer
java -cp $SDK/plugins/org.eclipse.equinox.launcher_$LAUNCHERVERSION \
org.eclipse.core.launcher.Main \
-application org.eclipse.ant.core.antRunner \
-f build.xml build.update.jar
cp org.eclipse.equinox.initializer*.jar $SDK/plugins
popd
# Build the ECF filetransfer plugins
pushd build/eclipse-R3_5_1-fetched-src/ecf-src
mkdir -p build
homedir=$(mkdir home| cd home|pwd)
java -cp $SDK/plugins/org.eclipse.equinox.launcher_$LAUNCHERVERSION \
-Duser.home=$homedir \
org.eclipse.core.launcher.Main \
-application org.eclipse.ant.core.antRunner \
-Dtype=feature \
-Did=org.eclipse.ecf.filetransfer_feature \
-DsourceDirectory=$(pwd) \
-DbaseLocation=$SDK \
-DforceContextQualifier=v20090831-1906 \
-Dbuilder=$SDK/plugins/org.eclipse.pde.build_$PDEPLUGINVERSION/templates/package-build \
-debug -consolelog \
-f $SDK/plugins/org.eclipse.pde.build_$PDEPLUGINVERSION/scripts/build.xml
popd
%install
rm -rf $RPM_BUILD_ROOT
# Get swt version
@ -550,16 +494,7 @@ install -d -m 755 $RPM_BUILD_ROOT%{_libdir}/java
install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/features
install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/%{name}/plugins
# Explode the resulting SDK tarball
cp -R build/eclipse-R3_5_1-fetched-src/installation/* $RPM_BUILD_ROOT%{_libdir}/eclipse
rm -fr $RPM_BUILD_ROOT%{_libdir}/eclipse/p2
# ECF filetransfer plugins we built
rm $sdkDir/plugins/org.eclipse.ecf*.jar
unzip -d $RPM_BUILD_ROOT%{_libdir} \
build/eclipse-R3_5_1-fetched-src/ecf-src/build/rpmBuild/org.eclipse.ecf.filetransfer_feature.zip
# Remove the feature we used for building
rm -rf \
$sdkDir/features/org.eclipse.ecf.filetransfer_feature_*
LAUNCHERVERSION=$(ls $sdkDir/plugins | grep equinox.launcher_ | sed 's/org.eclipse.equinox.launcher_//')
@ -809,7 +744,7 @@ desktop-file-install --vendor="fedora" \
# Create a script that can be used to make a symlink tree of the
# eclipse platform.
cp -p %{SOURCE16} copy-platform
cp -p pdebuild/eclipse-copy-platform.sh copy-platform
(
cd $RPM_BUILD_ROOT%{_libdir}/%{name}
ls -d * | egrep -v '^(plugins|features|about_files|dropins)$'
@ -836,7 +771,7 @@ sed --in-place "s|file\\\:%{_libdir}/eclipse/p2/|@config.dir/../p2/|" \
$RPM_BUILD_ROOT%{_libdir}/%{name}/configuration/config.ini
# Install the PDE Build wrapper script.
install -p -D -m0755 %{SOURCE21} \
install -p -D -m0755 pdebuild/eclipse-pdebuild.sh \
$RPM_BUILD_ROOT%{_libdir}/%{name}/buildscripts/pdebuild
PDEBUILDVERSION=$(ls $RPM_BUILD_ROOT%{_libdir}/%{name}/dropins/sdk/plugins \
| grep org.eclipse.pde.build_ | \
@ -1228,6 +1163,9 @@ fi
#%{_libdir}/%{name}/configuration/org.eclipse.equinox.source
%changelog
* Mon Oct 12 2009 Alexander Kurtakov <akurtako@redhat.com> 1:3.5.1-6
- New eclipse-build snapshot. Pdebuild and ecf compilation are part of it.
* Thu Oct 8 2009 Alexander Kurtakov <akurtako@redhat.com> 1:3.5.1-5
- Fix install call.

View File

@ -1,2 +1,2 @@
3ed7a1c9c13a73f6d7abc0b0305631e3 eclipse-R3_5_1-fetched-src.tar.bz2
c02651bd19acc5bddec2e53dbc3e8820 eclipse-build-0.4.0RC0.tar.gz
4b283c975b7c7b2894ef4de040f6b9c4 eclipse-build-0.4.0RC0.tar.gz