blob: 9e9ac412759544d99c0e1428c4de15bd15a35486 [file] [log] [blame]
diff --git a/plugins/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/ProfileSynchronizer.java b/plugins/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/ProfileSynchronizer.java
index 001684f..d482f1c 100644
--- a/plugins/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/ProfileSynchronizer.java
+++ b/plugins/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/ProfileSynchronizer.java
@@ -10,6 +10,8 @@
******************************************************************************/
package org.eclipse.equinox.internal.p2.reconciler.dropins;
+import org.eclipse.equinox.p2.metadata.IRequirement;
+
import java.io.*;
import java.net.*;
import java.util.*;
@@ -18,6 +20,7 @@ import org.eclipse.core.runtime.*;
import org.eclipse.equinox.internal.p2.core.helpers.*;
import org.eclipse.equinox.internal.p2.director.ProfileChangeRequest;
import org.eclipse.equinox.internal.p2.extensionlocation.Constants;
+import org.eclipse.equinox.internal.p2.metadata.RequiredCapability;
import org.eclipse.equinox.internal.provisional.configurator.Configurator;
import org.eclipse.equinox.internal.provisional.p2.directorywatcher.RepositoryListener;
import org.eclipse.equinox.p2.core.IProvisioningAgent;
@@ -123,6 +126,15 @@ public class ProfileSynchronizer {
if (moveResult.getSeverity() == IStatus.ERROR || moveResult.getSeverity() == IStatus.CANCEL)
return moveResult;
+ if (!request.getRemovals().isEmpty()) {
+ Collection<IRequirement> requirements = new ArrayList<IRequirement>();
+ for (IInstallableUnit unit : request.getRemovals()) {
+ RequiredCapability req = new RequiredCapability(IInstallableUnit.NAMESPACE_IU_ID, unit.getId(), new VersionRange(unit.getVersion(), true, unit.getVersion(), true), null, 0, 0, false, null);
+ requirements.add(req);
+ }
+ request.addExtraRequirements(requirements);
+ }
+
// now create a plan for the rest of the work and execute it
IStatus addRemoveResult = performAddRemove(request, context, monitor);
if (addRemoveResult.getSeverity() == IStatus.ERROR || addRemoveResult.getSeverity() == IStatus.CANCEL)
diff --git a/plugins/org.eclipse.equinox.p2.reconciler.dropins/META-INF/MANIFEST.MF b/plugins/org.eclipse.equinox.p2.reconciler.dropins/META-INF/MANIFEST.MF
index 067f887..131e3c8 100644
--- a/plugins/org.eclipse.equinox.p2.reconciler.dropins/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.equinox.p2.reconciler.dropins/META-INF/MANIFEST.MF
@@ -8,7 +8,8 @@ Bundle-Vendor: %providerName
Bundle-Localization: plugin
Export-Package: org.eclipse.equinox.internal.p2.reconciler.dropins;x-internal:=true
Require-Bundle: org.eclipse.equinox.common;bundle-version="[3.5.0,4.0.0)",
- org.eclipse.equinox.p2.touchpoint.eclipse;bundle-version="1.0.0"
+ org.eclipse.equinox.p2.touchpoint.eclipse;bundle-version="1.0.0",
+ org.eclipse.equinox.p2.metadata
Bundle-RequiredExecutionEnvironment: J2SE-1.5,
J2SE-1.4,
CDC-1.1/Foundation-1.1
diff --git a/plugins/org.eclipse.equinox.p2.metadata/META-INF/MANIFEST.MF b/plugins/org.eclipse.equinox.p2.metadata/META-INF/MANIFEST.MF
index 04056a5..7590cde 100644
--- a/plugins/org.eclipse.equinox.p2.metadata/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.equinox.p2.metadata/META-INF/MANIFEST.MF
@@ -20,7 +20,8 @@ Export-Package: org.eclipse.equinox.internal.p2.metadata;
org.eclipse.equinox.p2.ql,
org.eclipse.equinox.p2.ui,
org.eclipse.equinox.p2.touchpoint.eclipse,
- org.eclipse.equinox.p2.repository.tools",
+ org.eclipse.equinox.p2.repository.tools,
+ org.eclipse.equinox.p2.reconciler.dropins",
org.eclipse.equinox.internal.p2.metadata.expression;
x-friends:="org.eclipse.equinox.p2.artifact.repository,
org.eclipse.equinox.p2.directorywatcher,