- build ecj first and use it to build the rest

- add %selfbuild to toggle between builds with java-gcj-compat and other
    JREs
- fold scripts into platform
This commit is contained in:
Andrew Overholt 2004-12-21 16:37:24 +00:00
parent 697e9be567
commit 5203712c67
1 changed files with 174 additions and 36 deletions

View File

@ -14,6 +14,7 @@ ExclusiveArch: i386 ia64 ppc
%define eclipse_majmin %{eclipse_major}.%{eclipse_minor}
%define eclipse_micro 1
%define libname libswt3
%define selfbuild 1
%ifarch %{ix86}
%define eclipse_arch x86
@ -51,7 +52,7 @@ ExclusiveArch: i386 ia64 ppc
Summary: %{pkg_summary}
Name: eclipse
Version: %{eclipse_majmin}.%{eclipse_micro}
Release: 3
Release: 4
License: CPL
Group: Text Editors/Integrated Development Environments (IDE)
URL: http://www.eclipse.org/
@ -88,6 +89,7 @@ Patch21: %{name}-org.eclipse.help.appserver-host.patch
Patch22: %{name}-welcome-screen.patch
Patch23: %{name}-cvs-permission-bits.patch
Patch24: %{name}-cvs-permission-bits2.patch
Patch25: %{name}-webappcpfix.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
BuildRequires: ant
@ -102,7 +104,8 @@ BuildRequires: %{_libdir}/pkgconfig/gtk+-2.0.pc
# MDK 9.1: libglib2.0_0-devel
# RH 8.0, 9, FC 1: glib2-devel
BuildRequires: %{_libdir}/pkgconfig/gthread-2.0.pc
BuildRequires: java >= 1.4.2
BuildRequires: gcc-java >= 3.4.2
#BuildRequires: java-1.4.2-gcj-compat-bootstrap
%description
@ -111,6 +114,22 @@ environments (IDEs) that can be used to create applications as diverse
as web sites, embedded Java(tm) programs, C++ programs, and Enterprise
JavaBeans(tm).
%package ecj
Summary: Eclipse Compiler for Java
Group: Development/Languages
Obsoletes: ecj
%description ecj
Eclipse compiler for Java.
%package ecj-native
Summary: Natively-compiled bits of the Eclipse Compiler for Java
Group: Development/Languages
Requires: %{name}-ecj
%description ecj-native
Natively-compiled bits of the Eclipse Compiler for Java
%package platform
Summary: Eclipse platform common files
Group: Text Editors/Integrated Development Environments (IDE)
@ -118,11 +137,12 @@ Provides: %{name} = %{version}-%{release}
Obsoletes: %{name}-sdk eclipse
Provides: %{name}-sdk
Requires: java >= 1.4.2
Requires: %{name}-gtk2
Requires: /usr/bin/perl
%description platform
Eclipse platform common files. In addition to this, you'll need the
startup scripts and a UI package (GTK2) to be able to
run the IDE.
Eclipse platform common files. In addition to this, you'll need a UI package
(GTK2) to be able to run the IDE.
%package gtk2
Summary: GTK2 UI for the Eclipse IDE
@ -140,6 +160,7 @@ GTK2 UI for the Eclipse IDE.
Summary: Eclipse Java development tools
Group: Text Editors/Integrated Development Environments (IDE)
Requires: %{name}-ui = %{version}-%{release}
Requires: %{name}-ecj = %{version}-%{release}
%description jdt
Eclipse Java developments tools.
@ -160,15 +181,6 @@ Requires: %{name}-source = %{version}-%{release}
%description pde
Eclipse PDE.
%package scripts
Summary: Eclipse startup scripts
Group: Text Editors/Integrated Development Environments (IDE)
Requires: %{name}-ui = %{version}-%{release}
Requires: /usr/bin/perl
%description scripts
Eclipse startup scripts.
%package -n %{libname}-gtk2
Summary: SWT Library for GTK2
Group: Text Editors/Integrated Development Environments (IDE)
@ -207,6 +219,11 @@ popd
pushd "plugins/org.eclipse.team.cvs.ui"
%patch24 -p0
popd
%if %selfbuild
pushd "plugins"
%patch25 -p1
popd
%endif
# Red Hat splash screen.
pushd plugins/org.eclipse.platform
@ -253,8 +270,74 @@ fi
%build
export ANT_OPTS=-Xmx768m
#find -name \*.jar -exec rm -f {} \;
%if %selfbuild
## -------- ecj build --------
## Build ecj that we can use for the rest of the build
##
# We're going to muck with this, so let's keep a clean copy
cp -r plugins/org.eclipse.jdt.core plugins/org.eclipse.jdt.core.original
pushd plugins/org.eclipse.jdt.core
for f in `find batch -name '*.java' -or -name '*.properties'`; do
g=`echo $f | sed 's:^batch/:compiler/:' | xargs dirname`
[ -d $g ] || mkdir -p $g
cp -a $f $g
done
cd compiler
for f in `find -name '*.java' | cut -c 3-`; do
gcj -Wno-deprecated -C $f
done
find -name '*.class' -or -name '*.properties' -or -name '*.rsc' |\
xargs jar cf ../../../ecj-%{version}.jar
popd
# Let's return o.e.jdt.core to its original src state
rm -rf plugins/org.eclipse.jdt.core
mv plugins/org.eclipse.jdt.core.original plugins/org.eclipse.jdt.core
ln -s ecj-%{version}.jar ecj.jar
# What we'll do in FC4:
#gcj -fnew-verifier -fPIC -fjni -findirect-dispatch -shared \
# -o ecj-${version}.so ecj.jar
#
# On FC3 with katana:
#katana ecj.jar
#
# ... but katana actually does:
mkdir -p .katana
mkdir -p .katana/ecj.jar
cd .katana/ecj.jar
jar xf ../../ecj.jar
jar cf ../org.eclipse.jdt.core.compiler-%{version}.jar \
org/eclipse/jdt/core/compiler
jar cf ../org.eclipse.jdt.internal.compiler-%{version}.jar \
org/eclipse/jdt/internal/compiler
cd ../..
rm -rf .katana/ecj.jar
gcj -O2 -g -march=i386 -mcpu=i686 -shared -fPIC \
.katana/org.eclipse.jdt.core.compiler-%{version}.jar \
-o lib-org-eclipse-jdt-core-compiler-%{version}.so
ln -sf lib-org-eclipse-jdt-core-compiler-%{version}.so \
lib-org-eclipse-jdt-core-compiler.so
gcj -O2 -g -march=i386 -mcpu=i686 -shared -fPIC \
.katana/org.eclipse.jdt.internal.compiler-%{version}.jar \
-classpath .katana/org.eclipse.jdt.core.compiler-%{version}.jar -L. \
-l-org-eclipse-jdt-core-compiler-%{version} \
-o lib-org-eclipse-jdt-internal-compiler-%{version}.so
ln -sf lib-org-eclipse-jdt-internal-compiler-%{version}.so \
lib-org-eclipse-jdt-internal-compiler.so
cp -a plugins/org.eclipse.jdt.core/compiler/org .
rm -rf .katana
# Now use this built ecj for the rest of the build
export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
# -------- ecj build --------
%endif
pushd plugins/org.eclipse.swt.tools
rm -f swttools.jar
%{ant} \
@ -264,6 +347,17 @@ rm -f swttools.jar
-Dbootclasspath=
popd
%if %selfbuild
# I had to add stuff to the bootclasspath to get this to work with
# java-gcj-compat. --overholt
mkdir -p './JNI Generation/org/eclipse/swt/tools/internal/'
%{ant} -buildfile build.xml \
-DinstallOs=linux -DinstallWs=gtk -DinstallArch=%{eclipse_arch} \
-Dbuild.compiler=modern \
-DjavacVerbose=false -DjavacFailOnError=true \
-Dbootclasspath=%{_datadir}/java/libgcj-3.4.2.jar:%{_datadir}/java/xml-commons-apis-1.0.jar \
compile
%else
mkdir -p './JNI Generation/org/eclipse/swt/tools/internal/'
%{ant} -buildfile build.xml \
-DinstallOs=linux -DinstallWs=gtk -DinstallArch=%{eclipse_arch} \
@ -271,19 +365,20 @@ mkdir -p './JNI Generation/org/eclipse/swt/tools/internal/'
-DjavacVerbose=false -DjavacFailOnError=true \
-Dbootclasspath= \
compile
%endif
# Overwrite eclipse.org documentation with our own and then build the docs
pushd plugins
ln org.eclipse.platform/startup.jar ../.
for buildDoc in `/usr/bin/gzip -dc %{SOURCE20} | tar -vxf - | grep build.xml`; do
pushd `echo $buildDoc | sed -e 's/build.xml//g'`
if [ -e buildDoc.xml ]; then
java -cp ../../startup.jar org.eclipse.core.launcher.Main -application org.eclipse.ant.core.antRunner -v -f buildDoc.xml
fi
popd
done
rm ../startup.jar
popd
## Overwrite eclipse.org documentation with our own and then build the docs
#pushd plugins
#ln org.eclipse.platform/startup.jar ../.
#for buildDoc in `/usr/bin/gzip -dc %{SOURCE20} | tar -vxf - | grep build.xml`; do
# pushd `echo $buildDoc | sed -e 's/build.xml//g'`
# if [ -e buildDoc.xml ]; then
# %{ant} -f buildDoc.xml
# fi
# popd
#done
#rm ../startup.jar
#popd
suff=
%ifarch alpha ia64 ppc64 sparc64 x86_64
@ -359,6 +454,17 @@ popd
rm -rf $RPM_BUILD_ROOT
export ANT_OPTS=-Xmx768m
# I had to add stuff to the bootclasspath to get this to work with
# java-gcj-compat. --overholt
%if %selfbuild
%{ant} \
-DinstallOs=linux -DinstallWs=gtk -DinstallArch=%{eclipse_arch} \
-Dbuild.compiler=modern \
-DjavacVerbose=false -DjavacFailOnError=true \
-Djavadoc=%{javadoc} \
-Dbootclasspath=%{_datadir}/java/libgcj-3.4.2.jar:%{_datadir}/java/xml-commons-apis-1.0.jar \
install
%else
%{ant} \
-DinstallOs=linux -DinstallWs=gtk -DinstallArch=%{eclipse_arch} \
-Dbuild.compiler=modern \
@ -366,6 +472,7 @@ export ANT_OPTS=-Xmx768m
-Dbootclasspath= \
-Djavadoc=%{javadoc} \
install
%endif
install -d -m 755 $RPM_BUILD_ROOT%{_datadir}/%{name}
find result -type f -name "*.zip" -exec unzip -d $RPM_BUILD_ROOT%{_datadir} {} \;
@ -516,16 +623,36 @@ sed -e's/^\(.*\)$/\1 \1/' -e's,^,ln -s $eclipse/,' >> copy-platform
mkdir $RPM_BUILD_ROOT%{_datadir}/%{name}/buildscripts
cp copy-platform $RPM_BUILD_ROOT%{_datadir}/%{name}/buildscripts
# Need gcc 4.0 for this
## GCJ build
#pwd
#gcj-dbtool -n $RPM_BUILD_ROOT%{_datadir}/%{name}/.eclipse.db 80000
#for j in `find $RPM_BUILD_ROOT%{_datadir}/%{name} -name \*.jar`; do
# echo $j;
# gcj -fnew-verifier -fPIC -fjni -findirect-dispatch -shared \
# -o $RPM_BUILD_ROOT%{_libdir}/%{name}/`basename $j .jar`.so $j;
# gcj-dbtool -a $RPM_BUILD_ROOT%{_datadir}/%{name}/.eclipse.db $j \
# $RPM_BUILD_ROOT%{_libdir}/%{name}/`basename $j .jar`.so;
#done
# Copy ecj.jar to %{_datadir}/java and put its associated native bits in
# %{_libdir}/%{name}
mkdir -p $RPM_BUILD_ROOT%{_datadir}/java
install -m644 ecj-%{version}.jar $RPM_BUILD_ROOT%{_datadir}/java
ln -s %{_datadir}/java/ecj-%{version}.jar \
$RPM_BUILD_ROOT%{_datadir}/java/ecj.jar
install -m755 lib-org-eclipse-jdt*.so $RPM_BUILD_ROOT%{_libdir}/%{name}
%clean
rm -rf $RPM_BUILD_ROOT
%files platform -f %{name}-platform.install
%defattr(0644,root,root,0755)
%dir %{_datadir}/%{name}
%dir %{_libdir}/%{name}
#%{_libdir}/%{name}/*.so
%{_datadir}/%{name}/.eclipseproduct
#%{_datadir}/%{name}/.eclipse.db
%{_datadir}/%{name}/startup.jar
%{_datadir}/%{name}/icon.xpm
%attr(0755,root,root) %{_libdir}/%{name}/libcore*
@ -533,6 +660,12 @@ rm -rf $RPM_BUILD_ROOT
%{_datadir}/%{name}/eclipse
%attr(0755,root,root) %{_datadir}/%{name}/buildscripts/copy-platform
%attr(0755,root,root) %{_libdir}/%{name}/libcvs.so
# formerly in scripts
%attr(0755,root,root) %{_bindir}/eclipse
%{_datadir}/applications/*
%{_datadir}/pixmaps/*
%{_datadir}/icons/*/*/apps/*
%config(noreplace) %{_sysconfdir}/eclipse.conf
%files gtk2 -f %{name}-gtk.install
%defattr(0644,root,root,0755)
@ -552,21 +685,26 @@ rm -rf $RPM_BUILD_ROOT
%files jdt -f %{name}-jdt.install
%defattr(0644,root,root,0755)
%files ecj
%defattr(0644,root,root,0755)
%{_datadir}/java/ecj*.jar
%files ecj-native
%defattr(0644,root,root,0755)
%{_libdir}/%{name}/lib-org-eclipse-jdt*.so
%files source -f %{name}-source.install
%defattr(0644,root,root,0755)
%files pde -f %{name}-pde.install
%defattr(0644,root,root,0755)
%files scripts
%defattr(0644,root,root,0755)
%attr(0755,root,root) %{_bindir}/eclipse
%{_datadir}/applications/*
%{_datadir}/pixmaps/*
%{_datadir}/icons/*/*/apps/*
%config(noreplace) %{_sysconfdir}/eclipse.conf
%changelog
* Mon Dec 20 2004 Andrew Overholt <overholt@redhat.com> 3.0.1-4
- build ecj first and use it to build the rest
- add %selfbuild to toggle between builds with java-gcj-compat and other JREs
- fold scripts into platform
* Mon Nov 22 2004 Ben Konrath <bkonrath@redhat.com> 3.0.1-3
- split cvs-permission-bits.patch in two
- bug fix for cvs-permission-bits.patch