[eclipse] Run reconciler after installation.
sami wagiaalla
swagiaal at fedoraproject.org
Mon Sep 26 13:42:15 UTC 2011
commit ed6ceab2aa9c4ebf9f3a08e6da7f45d1fe4a09c8
Author: Sami Wagiaalla <swagiaal at redhat.com>
Date: Fri Sep 23 10:56:22 2011 -0400
Run reconciler after installation.
eclipse-reconciler.sh | 57 +++++++++++++++++++++++++++++++++++++++++++++++++
eclipse.spec | 41 ++++++++++++++++++++++++++++++-----
2 files changed, 92 insertions(+), 6 deletions(-)
---
diff --git a/eclipse-reconciler.sh b/eclipse-reconciler.sh
new file mode 100755
index 0000000..271b1a9
--- /dev/null
+++ b/eclipse-reconciler.sh
@@ -0,0 +1,57 @@
+#!/bin/bash
+
+# This script runs the eclipse can do the following:
+# - backup configuration files
+# - restore configuration files from backup loation
+# - run the eclipse reconciler
+# - delete the backup files.
+
+# A list of the files of directory that are to be backed up
+config_files=("artifacts.xml" "eclipse.ini" "p2" "configuration")
+
+if [ $# -ge 2 ]
+then
+ echo "backing up configuration files"
+ for file in ${config_files[@]}
+ do
+ echo $file
+ cp -r $1/$file $2/$file
+ done
+
+ echo "Running eclipse reconciler"
+ pushd $1
+ ./eclipse --launcher.suppressErrors -nosplash -consolelog -application org.eclipse.equinox.p2.reconciler.application ${@:3}
+ exit_value=$?
+
+ # Check exit value
+ if [ ! $exit_value -eq 0 ]
+ then
+ # Restore files
+ echo "Reconciler failed. Restoring files"
+ for file in ${config_files[@]}
+ do
+ echo $file
+ cp --remove-destination -Tr $2/$file $1/$file
+ done
+ fi
+ popd
+
+ #delete the backup files
+ for file in ${config_files[@]}
+ do
+ rm -rf $2/$file
+ done
+
+ exit $exit_value
+fi
+
+echo "Invalid options"
+echo ""
+echo "Usage:"
+echo ""
+echo " eclipse-reconciler <eclipse dir> <backup location> [reconciler parameters]"
+echo " Backsup configuration files in the given location, run the reconciler"
+echo " and restore the files if there is a problem at the end delete backup files."
+echo " Any parameters given after the first two are passed directly to the reconciler"
+
+exit 1;
diff --git a/eclipse.spec b/eclipse.spec
index 5b3eefb..7404b0e 100644
--- a/eclipse.spec
+++ b/eclipse.spec
@@ -22,6 +22,7 @@ Group: Text Editors/Integrated Development Environments (IDE)
URL: http://www.eclipse.org/
Source0: %{download_url}eclipse-build-db208c33d1a67591d17b02148ae7948fd178a80d.tar.xz
Source1: %{download_url}eclipse-3.7.0-src.tar.bz2
+Source2: eclipse-reconciler.sh
BuildRequires: ant
BuildRequires: rsync
@@ -208,6 +209,9 @@ for id in `ls configuration/org.eclipse.osgi/bundles`; do
done
popd
+#install the reconciler script
+cp -p %{SOURCE2} $RPM_BUILD_ROOT%{_bindir}/
+
# Symlinks to the SWT JNI shared libraries in %%{_libdir}/eclipse
pushd $RPM_BUILD_ROOT%{_libdir}/%{name}
for lib in $(find configuration -name libswt\*.so); do
@@ -272,17 +276,35 @@ PDEBUILDVERSION=$(ls $RPM_BUILD_ROOT%{_libdir}/%{name}/dropins/sdk/plugins \
sed -i "s/@PDEBUILDVERSION@/$PDEBUILDVERSION/g" \
$RPM_BUILD_ROOT%{_libdir}/%{name}/buildscripts/pdebuild
+%pre rcp
+# Remove all the profiles that were created by the reconciler.
+# this rpm will install a new profile and it will be reconciled
+# by running the reconciler in %post platform
+rm -rf %{_libdir}/%{name}/p2/org.eclipse.equinox.p2.engine/profileRegistry/PlatformProfile.profile/*
+
%post platform
touch --no-create %{_datadir}/icons/hicolor
if [ -x /usr/bin/gtk-update-icon-cache ]; then
gtk-update-icon-cache -q %{_datadir}/icons/hicolor
fi
+# We run the reconciler not to provision the platform but to reprovision
+# all other plugins which may have already been installed in the system.
+eclipse-reconciler.sh %{_libdir}/%{name} %{_tmppath} -clean > /dev/null
%postun platform
touch --no-create %{_datadir}/icons/hicolor
if [ -x /usr/bin/gtk-update-icon-cache ]; then
gtk-update-icon-cache -q %{_datadir}/icons/hicolor
fi
+# Cannot run the reconciler because it will have been removed at
+# this point, and there is no need to.
+
+%post jdt
+eclipse-reconciler.sh %{_libdir}/%{name} %{_tmppath} > /dev/null
+
+%postun jdt
+eclipse-reconciler.sh %{_libdir}/%{name} %{_tmppath} > /dev/null
+
%pre jdt
# workaround for rpm bug, can be removed in F-20 Fixes the problem with efj being directory instead of launcher
@@ -318,10 +340,10 @@ rm -rf %{_bindir}/efj/
%{_libdir}/%{name}/configuration/org.eclipse.osgi/.manager
%{_libdir}/%{name}/configuration/org.eclipse.osgi/.state*
%endif
-%dir %{_libdir}/%{name}/configuration
-%config %{_libdir}/%{name}/configuration/config.ini
-%config %{_libdir}/%{name}/configuration/org.eclipse.equinox.simpleconfigurator/bundles.info
-%dir %{_libdir}/%{name}/configuration/org.eclipse.equinox.simpleconfigurator
+%verify(not md5 size mtime) %dir %{_libdir}/%{name}/configuration
+%verify(not md5 size mtime) %{_libdir}/%{name}/configuration/config.ini
+%verify(not md5 size mtime) %{_libdir}/%{name}/configuration/org.eclipse.equinox.simpleconfigurator/bundles.info
+%verify(not md5 size mtime) %dir %{_libdir}/%{name}/configuration/org.eclipse.equinox.simpleconfigurator
%ifnarch ppc ppc64
%{_libdir}/%{name}/about.html
%endif
@@ -365,13 +387,14 @@ rm -rf %{_bindir}/efj/
%attr(0755,root,root) %{_bindir}/%{name}
%{_libdir}/%{name}/.eclipseproduct
%config %{_libdir}/%{name}/eclipse.ini
-%config %{_sysconfdir}/eclipse.ini
+%verify(not md5 size mtime) %config %{_sysconfdir}/eclipse.ini
%ifnarch ppc ppc64
%{_libdir}/%{name}/about_files
%endif
%{_datadir}/applications/*
%{_datadir}/pixmaps/*
%{_datadir}/icons/*/*/apps/*
+%{_bindir}/eclipse-reconciler.sh
%{_libdir}/%{name}/eclipse
%dir %{_libdir}/%{name}/dropins
%dir %{_datadir}/%{name}/dropins
@@ -512,7 +535,7 @@ rm -rf %{_bindir}/efj/
%{_libdir}/%{name}/artifacts.xml
# FIXME: should we ship content.xml for the platform?
#%{_libdir}/%{name}/metadata
-%{_libdir}/%{name}/p2
+%verify(not md5 size mtime) %{_libdir}/%{name}/p2
%files jdt
%{_bindir}/efj
@@ -523,6 +546,12 @@ rm -rf %{_bindir}/efj/
%{_libdir}/%{name}/dropins/sdk
%changelog
+* Fri Sep 23 2011 Sami Wagiaalla <swagiaal at redhat.com> 1:3.7.0-4
+- Add new script eclipse-reconciler.sh
+- Run eclipse-reconciler.sh in the post and postun sections of jdt
+ and post seciton on platform.
+- Remove all old profiles in %pre rcp.
+
* Wed Sep 21 2011 Alexander Kurtakov <akurtako at redhat.com> 1:3.7.0-4
- Remove _bindir/efj in pre - Fixes #738677.
More information about the scm-commits
mailing list