From 738759b2ebb5f5a52a51e278aca972e4cfb976a0 Mon Sep 17 00:00:00 2001 From: Hannes Wellmann Date: Tue, 29 Apr 2025 23:38:39 +0200 Subject: [PATCH] Consider dependencies of transitively included fragments Fixes https://github.com/eclipse-pde/eclipse.pde/issues/1727 --- .../pde/internal/core/DependencyManager.java | 18 ++++++++++++ .../tests/internal/DependencyManagerTest.java | 28 +++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/DependencyManager.java b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/DependencyManager.java index ba6c2b94989..692bbe53321 100644 --- a/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/DependencyManager.java +++ b/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/DependencyManager.java @@ -35,6 +35,7 @@ import org.eclipse.pde.core.target.NameVersionDescriptor; import org.osgi.framework.Constants; import org.osgi.framework.Version; +import org.osgi.framework.namespace.HostNamespace; import org.osgi.framework.wiring.BundleRequirement; import org.osgi.framework.wiring.BundleRevision; import org.osgi.framework.wiring.BundleWire; @@ -196,6 +197,19 @@ public static Set findRequirementsClosure(Collection requiredWires = wiring.getRequiredWires(null); for (BundleWire wire : requiredWires) { BundleRevision declaringBundle = wire.getRequirement().getRevision(); @@ -222,6 +236,10 @@ private static void addNewRequiredBundle(BundleDescription bundle, Set bundles = List.of(bundleHost, bundleA); + // It's important that the host is first + + Set noFragmentsClosure = findRequirementsClosure(bundles); + assertThat(noFragmentsClosure).isEqualTo(Set.of(bundleHost, bundleFragment, bundleA, bundleB)); + } + @Test public void testFindRequirementsClosure_includeOptional() throws Exception {