From 5d1c762cc38049d3782a75ed492d14ce70b32394 Mon Sep 17 00:00:00 2001 From: Phillip Muldoon Date: Apr 28 2005 01:37:27 +0000 Subject: * Wed Apr 27 2005 Phil Muldoon 3.0.0_fc-0.M6.5 - Changed to find-and-aot-compile build usage - Added "if gcj_support" toggle - Fixed installing all arch fragments (now only installs one (correct) arch) - Redid BuildRequires and Requires --- diff --git a/eclipse-cdt.spec b/eclipse-cdt.spec index fd23ac9..24f9716 100644 --- a/eclipse-cdt.spec +++ b/eclipse-cdt.spec @@ -1,26 +1,9 @@ Epoch: 1 ExclusiveArch: i386 x86_64 ppc -%ifarch %{ix86} -%define eclipse_arch x86 -%endif -%ifarch x86_64 -%define eclipse_arch x86_64 -%endif -%ifarch ia64 -%define eclipse_arch ia64 -%endif -%ifarch ppc -%define eclipse_arch ppc -%endif -%ifarch ppc64 -%define eclipse_arch ppc64 -%endif -%ifarch ppc64pseries -%define eclipse_arch ppc64 -%endif - +%define gcj_support 1 %define pkg_summary C/C++ Development Tools (CDT) plugin for Eclipse +%define section free %define eclipse_name eclipse %define major 3 %define minor 0 @@ -29,15 +12,22 @@ ExclusiveArch: i386 x86_64 ppc %define eclipse_base %{_datadir}/%{eclipse_name} %define eclipse_lib_base %{_libdir}/%{eclipse_name} +# All arches line up except i386 -> x86 +%ifarch %{ix86} +%define eclipse_arch x86 +%else +%define eclipse_arch %{_arch} +%endif + Summary: %{pkg_summary} Name: %{eclipse_name}-cdt Version: %{majmin}.%{micro}_fc -Release: 0.M6.4 +Release: 0.M6.5 License: Eclipse Public License - v 1.0 (EPL) Group: Text Editors/Integrated Development Environments (IDE) URL: http://www.eclipse.org/cdt Requires: eclipse-platform -Requires: gcc-java + Source0: %{name}-fetched-src-3.0M6.tar.gz Patch1: %{name}-no-cvs2-patch @@ -47,22 +37,16 @@ Patch4: %{name}-no-tests.patch Patch5: %{name}-no-sdkbuild.patch Patch6: %{name}-libhover.patch -BuildRequires: jpackage-utils >= 0:1.5 -BuildRequires: gtk2-devel -BuildRequires: glib2-devel -BuildRequires: gnome-vfs2-devel -BuildRequires: desktop-file-utils -BuildRequires: eclipse-platform -BuildRequires: eclipse-jdt -BuildRequires: eclipse-pde -BuildRequires: libswt3-gtk2 -BuildRequires: eclipse-gtk2 -BuildRequires: gcc-java >= 4.0.0-0.35 -BuildRequires: java-1.4.2-gcj-compat-devel >= 1.4.2.0-40jpp_4rh +BuildRequires: eclipse-pde +%if %{gcj_support} +BuildRequires: gcc-java >= 4.0.0-1 +BuildRequires: java-1.4.2-gcj-compat-devel >= 1.4.2.0-40jpp_18rh +Requires(post,postun): java-1.4.2-gcj-compat >= 1.4.2.0-40jpp_18rh +%else +BuildRequires: java-devel >= 1.4.2 +%endif Requires: ctags gdb make eclipse-platform -Requires: java-1.4.2-gcj-compat >= 1.4.2.0-40jpp_14rh -Requires: gcc-java >= 4.0.0-0.35 BuildRoot: %{_tmppath}/%{name}-buildroot @@ -97,10 +81,8 @@ SDK=$(cd SDK >/dev/null && pwd) # Eclipse may try to write to the home directory. mkdir home -mkdir native homedir=$(cd home > /dev/null && pwd) -nativehome=$(cd native > /dev/null && pwd) pushd `pwd` cd org.eclipse.cdt.releng @@ -123,98 +105,120 @@ java -cp $SDK/startup.jar \ -Dpde.build.scripts=$SDK/plugins/org.eclipse.pde.build_3.1.0/scripts \ -DdontFetchAnything=true -# Build the each .jar to .so. We have to extract them from the tar file -# that the releng build produces -popd - -if ! [ -e $(pwd)/org.eclipse.cdt.releng/results/org.eclipse.cdt.sdk-*-linux.%{eclipse_arch}* ]; then +if ! [ -e $(pwd)/org.eclipse.cdt.releng/results/org.eclipse.cdt-*-linux.%{eclipse_arch}* ]; then buildArch="x86" else buildArch=%{eclipse_arch} fi -for file in $(pwd)/org.eclipse.cdt.releng/results/I.*/*.tar.gz; do - case $file in - */org.eclipse.cdt-*-linux.$buildArch.*) - tar -zxv -C $nativehome -f $file *.jar - cd $nativehome/eclipse/plugins - for jarname in `find . -type f -name "*.jar"`; do - jarname=`echo $jarname | cut -c3-` - gcj -fPIC -fjni -O2 -findirect-dispatch -shared -Wl,-Bsymbolic -o $jarname.so $jarname - - # Once compiled, we don't care about the jar (it's still in the original tar) - rm $jarname - done - ;; - esac -done +%if %{gcj_support} + mkdir native + for file in $(pwd)/results/I.*/*.tar.gz; do + case $file in + */org.eclipse.cdt-*-linux.$buildArch.*) + tar -zx -C native -f $file *.jar + cd native + %ifarch %{ix86} ppc + find-and-aot-compile %{name}-native "-fPIC -fjni -O2" + %else + find-and-aot-compile %{name}-native "-fPIC -fjni -O1" + %endif + mv %{name}-native.tar.gz .. + ;; + esac + done +%endif +popd %install -nativehome=$(cd native > /dev/null && pwd) rm -rf ${RPM_BUILD_ROOT} -mkdir -p ${RPM_BUILD_ROOT}/%{eclipse_base} + +install -d -m755 ${RPM_BUILD_ROOT}/%{eclipse_base} + +if ! [ -e $(pwd)/org.eclipse.cdt.releng/results/org.eclipse.cdt-*-linux.%{eclipse_arch}* ]; then + buildArch="x86" +else + buildArch=%{eclipse_arch} +fi for file in $(pwd)/org.eclipse.cdt.releng/results/I.*/*.tar.gz; do case $file in - *org.eclipse.cdt-*-linux*) + */org.eclipse.cdt-*-linux.$buildArch.*) # The ".." is needed since the zip files contain "eclipse/foo". (cd $RPM_BUILD_ROOT/%{eclipse_base}/.. && tar zxvf $file) ;; esac done -# Create mappings directory -install -d -m755 $RPM_BUILD_ROOT/`gcj-dbtool -p %{_libdir}`.d +%if %{gcj_support} -# Create the initial cdt database -gcjdbdir=$RPM_BUILD_ROOT`gcj-dbtool -p %{_libdir}`.d -gcj-dbtool -n $gcjdbdir/%{name}.db 8000 + # Create plugins directory in eclipse lib base + install -d -m755 $RPM_BUILD_ROOT/%{eclipse_lib_base}/plugins + cd org.eclipse.cdt.releng/native + tar zxf ../%{name}-native.tar.gz + mv %{name}-native/eclipse/plugins/* $RPM_BUILD_ROOT/%{eclipse_lib_base}/plugins -# Create plugins directory in eclipse lib base -install -d -m755 $RPM_BUILD_ROOT/%{eclipse_lib_base}/plugins/ + # Directory to hold all the .jar->.so mapping dbs + install -d -m 755 $RPM_BUILD_ROOT`gcj-dbtool -p %{_libdir}` + install -d -m 755 $RPM_BUILD_ROOT`gcj-dbtool -p %{_libdir}`.d -# Populate db with mappings -for j in `find $RPM_BUILD_ROOT/%{eclipse_base} -name \*.jar`; do - gcj-dbtool -f $gcjdbdir/%{name}.db \ - $j `echo $j | sed "s:$RPM_BUILD_ROOT/::" | sed "s:%{_datadir}:%{_libdir}:"`.so; -done + # Create the cdt database + gcjdbdir=$RPM_BUILD_ROOT`gcj-dbtool -p %{_libdir}`.d + mkdir -p $gcjdbdir + gcj-dbtool -n $gcjdbdir/%{name}.db 8000 -cd $nativehome/eclipse/plugins + # Populate it + for j in `find $RPM_BUILD_ROOT/%{eclipse_base} -name \*.jar`; do + lib=`echo $j | sed "s:%{_datadir}:%{_libdir}:"`.so; + lib=`dirname $lib`/lib`basename $lib`; + ls -l $lib; + if [ -f $lib ]; then + gcj-dbtool -f $gcjdbdir/%{name}.db \ + $j `echo $lib | sed "s:$RPM_BUILD_ROOT/::"`; + fi; + done; -# Copy the .so(s) we created earlier into the build root -for file in `find . -type f -name *.so`; do - install -m755 -d $RPM_BUILD_ROOT/%{eclipse_lib_base}/plugins/`dirname $file` - install -m644 $file $RPM_BUILD_ROOT/%{eclipse_lib_base}/plugins/`dirname $file` -done +%endif # We move the libraries to libdir, leaving symlinks behind. And since # zip doesn't preserve file permissions, we must also mark all the .so # files as executable. + ( cd $RPM_BUILD_ROOT find ./%{eclipse_base} -name '*.so' -print | while read sofile; do newname=$(echo "$sofile" | sed -e 's,^./%{eclipse_base},%{_libdir}/eclipse,') + echo $newname mkdir -p ./$(dirname "$newname") mv $sofile ./$newname ln -s $newname $sofile done ) +%clean +rm -rf ${RPM_BUILD_ROOT} + +%if %{gcj_support} %post -rebuild-gcj-db %{_libdir} +/usr/bin/rebuild-gcj-db %{_libdir} %postun -rebuild-gcj-db %{_libdir} +/usr/bin/rebuild-gcj-db %{_libdir} +%endif + %files %defattr(-,root,root) +%if %{gcj_support} +%{eclipse_lib_base}/plugins/org.eclipse.cdt* %{_libdir}/gcj-4.0.0/classmap.db.d/%{name}.db +%endif %{eclipse_base}/features/org.eclipse.cdt* %{eclipse_base}/plugins/org.eclipse.cdt* -%{eclipse_lib_base}/plugins/org.eclipse.cdt* + # Cannot get dir name org.eclipse.cdt.source.linux.*.x86_2.0.2 to glob # properly. Will fix later @@ -255,6 +259,13 @@ rebuild-gcj-db %{_libdir} %changelog +* Wed Apr 27 2005 Phil Muldoon 3.0.0_fc-0.M6.5 +- Changed to find-and-aot-compile build usage +- Added "if gcj_support" toggle +- Fixed installing all arch fragments (now only installs one (correct) arch) +- Redid BuildRequires and Requires to remove old/unneeded dependencies +- Cleaned %eclipse_arch declares. + * Thu Apr 21 2005 Phil Muldoon 3.0.0_fc-0.M6.4 - Added Chris Moller's libhover patch