diff --git a/eclipse-fix-dropins.patch b/eclipse-fix-dropins.patch index 159445b..d9f3f2e 100644 --- a/eclipse-fix-dropins.patch +++ b/eclipse-fix-dropins.patch @@ -27,7 +27,7 @@ + // therefore dropins reconciliation can't load dropins plugins installed into user configuration + // after the user configuration has been dropped. + // It is necessary to unset this property. -+ System.setProperty(PROP_IGNORE_USER_CONFIGURATION, "processed_and_unset"); //$NON-NLS-1$ //$NON-NLS-2$ ++ //System.setProperty(PROP_IGNORE_USER_CONFIGURATION, "processed_and_unset"); //$NON-NLS-1$ //$NON-NLS-2$ } else { //This is the first time we create the shared profile. Tag it as such and also remember the timestamp of the base internalSetProfileStateProperty(profile, profile.getTimestamp(), IProfile.STATE_PROP_SHARED_INSTALL, IProfile.STATE_SHARED_INSTALL_VALUE_INITIAL); @@ -38,9 +38,47 @@ + // if the property is set by OSGI, and there is no new timestamp (because of the previous condition) + // ignore current profile. This will happen only once, because SERVICE_SHARED_INSTALL_NEW_TIMESTAMP + // is set during profile reset. -+ if ("true".equals(System.getProperty(PROP_IGNORE_USER_CONFIGURATION))) //$NON-NLS-1$ //$NON-NLS-2$ -+ return true; -+ ++ if ("true".equals(System.getProperty(PROP_IGNORE_USER_CONFIGURATION))){ //$NON-NLS-1$ //$NON-NLS-2$ ++ System.setProperty(PROP_IGNORE_USER_CONFIGURATION, "processed_and_unset"); //$NON-NLS-1$ //$NON-NLS-2$ ++ return true;} String baseTimestamp = getBaseTimestamp(profile.getProfileId()); if (baseTimestamp == null) return false; +--- rt.equinox.p2/bundles/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/ProfileSynchronizer.java ++++ rt.equinox.p2/bundles/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/ProfileSynchronizer.java +@@ -570,6 +570,7 @@ + + // get all IUs from all our repos + IQueryResult allIUs = getAllIUsFromRepos(); ++ HashSet removedFromAllIUs = new HashSet(); + for (Iterator iter = allIUs.iterator(); iter.hasNext();) { + final IInstallableUnit iu = iter.next(); + IInstallableUnit existing = profileIUs.get(iu); +@@ -583,6 +584,7 @@ + // (and more expensive) way to find this out is to do an IU profile property query. + if (two == null) { + // the IU is already installed so don't mark it as a dropin now - see bug 404619. ++ removedFromAllIUs.add(iu); + iter.remove(); + continue; + } +@@ -625,7 +627,7 @@ + } + // if the IU from the profile is in the "all available" list, then it is already added + // otherwise if it isn't in the repo then we have to remove it from the profile. +- if (!all.contains(iu)) ++ if (!all.contains(iu) && !removedFromAllIUs.contains(iu)) + toRemove.add(iu); + } + +@@ -799,8 +801,8 @@ + IStatus installerPlanStatus = engine.perform(plan.getInstallerPlan(), phaseSet, monitor); + if (!installerPlanStatus.isOK()) + return installerPlanStatus; +- +- applyConfiguration(true); ++ if (isReconciliationApplicationRunning()) ++ applyConfiguration(true); + } + return engine.perform(plan, phaseSet, monitor); + } diff --git a/eclipse.spec b/eclipse.spec index 242235e..096375a 100644 --- a/eclipse.spec +++ b/eclipse.spec @@ -52,7 +52,7 @@ fi; Summary: An open, extensible IDE Name: %{?scl_prefix}eclipse Version: %{eclipse_version} -Release: 0.59.git7bf397%{?dist} +Release: 0.60.git7bf397%{?dist} License: EPL Group: Development/Tools URL: http://www.eclipse.org/ @@ -1009,6 +1009,9 @@ fi %{_libdir}/%{pkg_name}/plugins/org.eclipse.osgi.util_* %changelog +* Thu Jun 6 2013 Krzysztof Daniel 1:4.3.0-0.60.git7bf397 +- Fix the dropins reconciliation. + * Tue Jun 4 2013 Alexander Kurtakov 1:4.3.0-0.59.git7bf397 - Fix bogus dates and SWT description.