%define gcj_support 1
%define eclipse_name eclipse
%define eclipse_base %{_datadir}/%{eclipse_name}
%define core_plugin_jar %{eclipse_base}/plugins/org.tigris.subversion.subclipse.core_%{version}.jar
%define core_plugin_dir %{eclipse_base}/plugins/org.tigris.subversion.subclipse.core_%{version}
Name: eclipse-subclipse
Version: 1.1.9
Release: 2%{?dist}
Summary: Subversion Eclipse plugin
Group: Text Editors/Integrated Development Environments (IDE)
License: EPL
URL: http://subclipse.tigris.org/
Source0: subclipse-%{version}.tgz
# Script to fetch the source code
# the new source tarball does not includes the book feature and the layout is
# different than the source repository
Source10: subclipse-fetch-1.1.9.sh
# Disable javahl support temporaly until apparent classloader problem is fixed
Patch0: eclipse-subclipse-1.1.9-default-javasvn.patch
# This patch is applied after the build has finished when unpacking the plugin
# jar and replacing internal jars with links to its dependencies. It can not be
# applied at "prep" stage because it causes errors at build time
Source50: eclipse-subclipse-1.1.9-plugin-classpath.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: ant
BuildRequires: jpackage-utils >= 0:1.6
BuildRequires: coreutils
BuildRequires: eclipse-pde
%if %{gcj_support}
BuildRequires: gcc-java >= 4.0.2
BuildRequires: java-gcj-compat-devel >= 1.0.33
Requires(post): java-gcj-compat >= 1.0.33
Requires(postun): java-gcj-compat >= 1.0.33
%else
BuildRequires: java-devel >= 1.4.2
%endif
%if %{gcj_support}
ExclusiveArch: %{ix86} x86_64 ppc ia64
%else
BuildArch: noarch
%endif
Requires: eclipse-platform
BuildRequires: subversion-javahl >= 1.3.1
Requires: subversion-javahl >= 1.3.1
BuildRequires: javasvn >= 1.1.0
Requires: javasvn >= 1.1.0
BuildRequires: ganymed-ssh2 >= 209
Requires: ganymed-ssh2 >= 209
%package book
Summary: Subversion book
Group: Development/Tools
Requires: %{name} = %{version}-%{release}
%description
Subclipse is an Eclipse plugin that adds Subversion integration to the Eclipse
IDE.
%description book
The Subversion book as an Eclipse documentation plugin.
%prep
%setup -q -n subclipse-%{version}
%patch -p1
# delete the jars that are in the archive
rm svnClientAdapter/lib/svnjavahl.jar
ln -sf %{_libdir}/svn-javahl/svn-javahl.jar svnClientAdapter/lib/svnjavahl.jar
rm -f svnClientAdapter/lib/javasvn.jar
ln -sf %{_javadir}/javasvn.jar svnClientAdapter/lib/javasvn.jar
rm -f svnClientAdapter/lib/ganymed.jar
ln -sf %{_javadir}/ganymed-ssh2.jar svnClientAdapter/lib/ganymed.jar
rm -f subclipse/core/lib/svnjavahl.jar
ln -sf %{_libdir}/svn-javahl/svn-javahl.jar subclipse/core/lib/svnjavahl.jar
rm -f subclipse/core/lib/svnClientAdapter.jar
# svnClientAdapter.jar is copied after being built
rm -f subclipse/core/lib/javasvn.jar
ln -sf %{_javadir}/javasvn.jar subclipse/core/lib/javasvn.jar
rm -f subclipse/core/lib/ganymed.jar
ln -sf %{_javadir}/ganymed-ssh2.jar subclipse/core/lib/ganymed.jar
%build
# ---------------------------------
# building svnClientAdapter
pushd svnClientAdapter
ant svnClientAdapter.jar
popd
# copying svnClientAdapter inside subclipse module
cp svnClientAdapter/build/lib/svnClientAdapter.jar subclipse/core/lib/svnClientAdapter.jar
# ---------------------------------
# building subclipse
pushd subclipse
# See comments in the script to understand this.
/bin/sh -x %{eclipse_base}/buildscripts/copy-platform SDK %{eclipse_base}
SDK=$(cd SDK > /dev/null && pwd)
# Eclipse may try to write to the home directory.
mkdir home
homedir=$(cd home > /dev/null && pwd)
# build the main subclipse feature
eclipse \
-application org.eclipse.ant.core.antRunner \
-Duser.home=$homedir \
-Dtype=feature \
-Did=org.tigris.subversion.subclipse \
-DsourceDirectory=$(pwd) \
-DbaseLocation=$SDK \
-Dbuilder=%{eclipse_base}/plugins/org.eclipse.pde.build/templates/package-build \
-f %{eclipse_base}/plugins/org.eclipse.pde.build/scripts/build.xml
#java -cp %{eclipse_base}/startup.jar \
# -Duser.home=$homedir \
# org.eclipse.core.launcher.Main \
# -application org.eclipse.ant.core.antRunner \
# -Dtype=feature \
# -Did=org.tigris.subversion.subclipse \
# -DsourceDirectory=$(pwd) \
# -DbaseLocation=$SDK \
# -Dbuilder=%{eclipse_base}/plugins/org.eclipse.pde.build/templates/package-build \
# -f %{eclipse_base}/plugins/org.eclipse.pde.build/scripts/build.xml
# build the subclipse book feature
eclipse \
-application org.eclipse.ant.core.antRunner \
-Duser.home=$homedir \
-Dtype=feature \
-Did=org.tigris.subversion.book \
-DsourceDirectory=$(pwd) \
-DbaseLocation=$SDK \
-Dbuilder=%{eclipse_base}/plugins/org.eclipse.pde.build/templates/package-build \
-f %{eclipse_base}/plugins/org.eclipse.pde.build/scripts/build.xml
#java -cp %{eclipse_base}/startup.jar \
# -Duser.home=$homedir \
# org.eclipse.core.launcher.Main \
# -application org.eclipse.ant.core.antRunner \
# -Dtype=feature \
# -Did=org.tigris.subversion.book \
# -DsourceDirectory=$(pwd) \
# -DbaseLocation=$SDK \
# -Dbuilder=%{eclipse_base}/plugins/org.eclipse.pde.build/templates/package-build \
# -f %{eclipse_base}/plugins/org.eclipse.pde.build/scripts/build.xml
# returning to base build directory
popd
# Link source files to fix -debuginfo generation.
rm -rf subclipse/org
mkdir -p subclipse/org/tigris/subversion
ln -s $(pwd)/svnClientAdapter/src/main/org/tigris/subversion/svnclientadapter subclipse/org/tigris/subversion
mkdir -p subclipse/org/tigris/subversion/subclipse
ln -s $(pwd)/subclipse/core/src/org/tigris/subversion/subclipse/core subclipse/org/tigris/subversion/subclipse
ln -s $(pwd)/subclipse/ui/src/org/tigris/subversion/subclipse/ui subclipse/org/tigris/subversion/subclipse
%install
rm -rf $RPM_BUILD_ROOT
install -d -m 755 $RPM_BUILD_ROOT%{eclipse_base}
pushd subclipse
unzip -q -d $RPM_BUILD_ROOT%{eclipse_base}/.. build/rpmBuild/org.tigris.subversion.subclipse.zip
unzip -q -d $RPM_BUILD_ROOT%{eclipse_base}/.. build/rpmBuild/org.tigris.subversion.book.zip
# repacking core plugin as a directory based plugin, needed in order to replace some jars with symlinks
mkdir $RPM_BUILD_ROOT%{core_plugin_dir}
unzip -q -d $RPM_BUILD_ROOT%{core_plugin_dir} $RPM_BUILD_ROOT%{core_plugin_jar}
rm $RPM_BUILD_ROOT%{core_plugin_jar}
# packaging .class files as a jar file
jar -cf $RPM_BUILD_ROOT%{core_plugin_dir}/lib/subclipse-core.jar -C $RPM_BUILD_ROOT%{core_plugin_dir} org
rm -rf $RPM_BUILD_ROOT%{core_plugin_dir}/org
# adding the recently created jar to the plugin manifestOB
patch $RPM_BUILD_ROOT%{core_plugin_dir}/META-INF/MANIFEST.MF < %{SOURCE50}
# removing core plugin internal jars
rm -f $RPM_BUILD_ROOT%{core_plugin_dir}/lib/svnjavahl.jar
rm -f $RPM_BUILD_ROOT%{core_plugin_dir}/lib/javasvn.jar
rm -f $RPM_BUILD_ROOT%{core_plugin_dir}/lib/ganymed.jar
%if %{gcj_support}
aot-compile-rpm
%endif
# We need to setup the symlink because the ant copy task doesn't preserve symlinks
# TODO file a bug about this
ln -s %{_libdir}/svn-javahl/svn-javahl.jar $RPM_BUILD_ROOT%{core_plugin_dir}/lib/svnjavahl.jar
ln -s %{_javadir}/javasvn.jar $RPM_BUILD_ROOT%{core_plugin_dir}/lib/javasvn.jar
ln -s %{_javadir}/ganymed-ssh2.jar $RPM_BUILD_ROOT%{core_plugin_dir}/lib/ganymed.jar
%clean
rm -rf $RPM_BUILD_ROOT
%if %{gcj_support}
%post -p %{_bindir}/rebuild-gcj-db
%postun -p %{_bindir}/rebuild-gcj-db
%endif
%files
%defattr(-,root,root)
%{eclipse_base}/features/org.tigris.subversion.subclipse_*
%{eclipse_base}/plugins/org.tigris.subversion.subclipse.core_*
%{eclipse_base}/plugins/org.tigris.subversion.subclipse.ui_*
%{eclipse_base}/plugins/org.tigris.subversion.subclipse.doc_*
%doc svnClientAdapter/readme.txt svnClientAdapter/changelog.txt svnClientAdapter/license.txt
%if %{gcj_support}
%{_libdir}/gcj/%{name}
%endif
%files book
%defattr(-,root,root)
%{eclipse_base}/features/org.tigris.subversion.book_*
%{eclipse_base}/plugins/org.tigris.subversion.book_*
%changelog
* Thu Dec 21 2006 Robert Marcano <robert@marcanoonline.com> 1.1.9-2
- Update to upstream 1.1.9
- Removed patch that added source attribute to the javac ant task
- Using the "eclipse" launcher
* Wed Nov 08 2006 Robert Marcano <robert@marcanoonline.com> 1.1.8-2
- Update to upstream 1.1.8
* Mon Aug 28 2006 Robert Marcano <robert@marcanoonline.com> 1.1.5-2
- Rebuild
* Mon Aug 21 2006 Robert Marcano <robert@marcanoonline.com> 1.1.5-1
- Update to upstream 1.1.5
- svnClientAdapter documentation files added. Subclipse includes an eclipse
based documentation for the plugins
* Sat Aug 06 2006 Robert Marcano <robert@marcanoonline.com> 1.1.4-1
- Update to upstream 1.1.4
- License changed to EPL
- svnClientAdapter-1.1.4-javac-target.patch added fix to svnClientAdapter ant
script
* Tue Jul 04 2006 Andrew Overholt <overholt@redhat.com> 1.0.3-2
- Use versionless pde.build.
- Remove strict SDK version requirement due to above.
* Sun Jul 02 2006 Robert Marcano <robert@marcanoonline.com> 1.0.3-2
- Embeeding the script that fetch the source code
* Sun Jun 25 2006 Robert Marcano <robert@marcanoonline.com> 1.0.3-1
- Update to 1.0.3
- Dependency name changed to ganymed-ssh2
* Sun Jun 11 2006 Robert Marcano <robert@marcanoonline.com> 1.0.1-6
- rpmlint fixes and debuginfo generation workaround
* Thu Jun 01 2006 Robert Marcano <robert@marcanoonline.com> 1.0.1-5
- Use package-build from eclipse SDK
* Sun May 28 2006 Robert Marcano <robert@marcanoonline.com> 1.0.1-4
- Integrated svnClientAdapter inside this package
* Tue May 23 2006 Ben Konrath <bkonrath@redhat.com> 1.0.1-3
- Rename package to eclipse-subclipse.
- Use copy-platform script for now.
* Sun May 07 2006 Robert Marcano <robert@marcanoonline.com> 1.0.1-2
- use external libraries from dependent packages
* Wed Apr 26 2006 Ben Konrath <bkonrath@redhat.com> 1.0.1-1
- initial version based on the work of Robert Marcano