[tycho/f17] Allow for building SWT fragments (BZ #380934).

Roland Grunberg rgrunber at fedoraproject.org
Wed Jun 13 19:12:43 UTC 2012


commit 350cd55d4c8fc6c92d70011ef02db091da1da0ad
Author: Roland Grunberg <rgrunber at redhat.com>
Date:   Mon Jun 11 11:43:44 2012 -0400

    Allow for building SWT fragments (BZ #380934).

 tycho-fix-swt.patch |  129 +++++++++++++++++++++++++++++++++++++++++++++++++++
 tycho.spec          |    7 ++-
 2 files changed, 134 insertions(+), 2 deletions(-)
---
diff --git a/tycho-fix-swt.patch b/tycho-fix-swt.patch
new file mode 100644
index 0000000..f28a984
--- /dev/null
+++ b/tycho-fix-swt.patch
@@ -0,0 +1,129 @@
+From 198ef97930794f59230035f350f286255ea63c61 Mon Sep 17 00:00:00 2001
+From: Igor Fedorenko <igor at ifedorenko.com>
+Date: Wed, 30 May 2012 10:01:36 -0400
+Subject: [PATCH] 380934 do not 'fixSWT' for swt fragment projects
+
+Change-Id: I2990ff68acfe14e104480ba85ce30c2138d74e45
+Signed-off-by: Igor Fedorenko <igor at ifedorenko.com>
+---
+ .../swt/org.eclipse.swt/META-INF/MANIFEST.MF       |    4 ++
+ .../resolver/swt/swtFragment/META-INF/MANIFEST.MF  |    6 ++
+ .../tycho/p2/impl/resolver/P2ResolverTest.java     |   54 ++++++++++++++++++++
+ .../impl/resolver/ProjectorResolutionStrategy.java |   12 ++++
+ 4 files changed, 76 insertions(+), 0 deletions(-)
+ create mode 100644 tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/resources/resolver/swt/org.eclipse.swt/META-INF/MANIFEST.MF
+ create mode 100644 tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/resources/resolver/swt/swtFragment/META-INF/MANIFEST.MF
+
+diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/resources/resolver/swt/org.eclipse.swt/META-INF/MANIFEST.MF b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/resources/resolver/swt/org.eclipse.swt/META-INF/MANIFEST.MF
+new file mode 100644
+index 0000000..b2eda0d
+--- /dev/null
++++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/resources/resolver/swt/org.eclipse.swt/META-INF/MANIFEST.MF
+@@ -0,0 +1,4 @@
++Manifest-Version: 1.0
++Bundle-ManifestVersion: 2
++Bundle-SymbolicName: org.eclipse.swt
++Bundle-Version: 3.0.0.qualifier
+diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/resources/resolver/swt/swtFragment/META-INF/MANIFEST.MF b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/resources/resolver/swt/swtFragment/META-INF/MANIFEST.MF
+new file mode 100644
+index 0000000..380c312
+--- /dev/null
++++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/resources/resolver/swt/swtFragment/META-INF/MANIFEST.MF
+@@ -0,0 +1,6 @@
++Manifest-Version: 1.0
++Bundle-ManifestVersion: 2
++Bundle-Name: org.eclipse.tycho.p2.impl.resolver.test.swtFragment
++Bundle-SymbolicName: org.eclipse.tycho.p2.impl.resolver.swtFragment
++Bundle-Version: 1.0.0.qualifier
++Fragment-Host: org.eclipse.swt; bundle-version="[3.0.0,4.0.0)"
+diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/impl/resolver/P2ResolverTest.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/impl/resolver/P2ResolverTest.java
+index 7d5ea2d..cc7baf4 100644
+--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/impl/resolver/P2ResolverTest.java
++++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl.test/src/test/java/org/eclipse/tycho/p2/impl/resolver/P2ResolverTest.java
+@@ -222,6 +222,60 @@ public class P2ResolverTest extends P2ResolverTestBase {
+         assertContainsUnit("org.eclipse.swt.gtk.linux.x86_64", result.getNonReactorUnits());
+     }
+ 
++    @Test
++    public void swt() throws Exception {
++        File swt = resourceFile("resolver/swt/org.eclipse.swt");
++        addReactorProject(swt, TYPE_ECLIPSE_PLUGIN, "org.eclipse.swt");
++        File swtFragment = resourceFile("resolver/swt/swtFragment");
++        addReactorProject(swtFragment, TYPE_ECLIPSE_PLUGIN, "org.eclipse.tycho.p2.impl.resolver.test.swtFragment");
++
++        List<P2ResolutionResult> results = impl.resolveProject(context.buildTargetPlatform(), swt);
++
++        Assert.assertEquals(1, results.size());
++        P2ResolutionResult result = results.get(0);
++
++        Assert.assertEquals(1, result.getArtifacts().size());
++        assertContainLocation(result, swt);
++    }
++
++    @Test
++    public void swtFragment() throws Exception {
++        File swt = resourceFile("resolver/swt/org.eclipse.swt");
++        addReactorProject(swt, TYPE_ECLIPSE_PLUGIN, "org.eclipse.swt");
++        File swtFragment = resourceFile("resolver/swt/swtFragment");
++        addReactorProject(swtFragment, TYPE_ECLIPSE_PLUGIN, "org.eclipse.tycho.p2.impl.resolver.test.swtFragment");
++
++        List<P2ResolutionResult> results = impl.resolveProject(context.buildTargetPlatform(), swtFragment);
++
++        Assert.assertEquals(1, results.size());
++        P2ResolutionResult result = results.get(0);
++
++        Assert.assertEquals(2, result.getArtifacts().size());
++        Assert.assertEquals(0, result.getNonReactorUnits().size());
++
++        assertContainLocation(result, swtFragment);
++        assertContainLocation(result, swt);
++    }
++
++    @Test
++    public void swtFragmentWithRemoteSWT() throws Exception {
++        context.addP2Repository(resourceFile("repositories/e361").toURI());
++
++        File swtFragment = resourceFile("resolver/swt/swtFragment");
++        addReactorProject(swtFragment, TYPE_ECLIPSE_PLUGIN, "org.eclipse.tycho.p2.impl.resolver.test.swtFragment");
++
++        List<P2ResolutionResult> results = impl.resolveProject(context.buildTargetPlatform(), swtFragment);
++
++        Assert.assertEquals(1, results.size());
++        P2ResolutionResult result = results.get(0);
++
++        Assert.assertEquals(2, result.getArtifacts().size());
++        Assert.assertEquals(1, result.getNonReactorUnits().size());
++
++        assertContainLocation(result, swtFragment);
++        assertContainsUnit("org.eclipse.swt", result.getNonReactorUnits());
++    }
++
+     private static void assertContainsUnit(String unitID, Set<?> units) {
+         Assert.assertFalse("Unit " + unitID + " not found", getInstallableUnits(unitID, units).isEmpty());
+     }
+diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/resolver/ProjectorResolutionStrategy.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/resolver/ProjectorResolutionStrategy.java
+index 3d0f3db..c5bf797 100644
+--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/resolver/ProjectorResolutionStrategy.java
++++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/impl/resolver/ProjectorResolutionStrategy.java
+@@ -110,6 +110,18 @@ public class ProjectorResolutionStrategy extends AbstractSlicerResolutionStrateg
+             return;
+         }
+ 
++        // 380934 one of rootIUs can be SWT or an SWT fragment
++        for (IInstallableUnit iu : rootIUs) {
++            if ("org.eclipse.swt".equals(iu.getId())) {
++                return;
++            }
++            for (IProvidedCapability provided : iu.getProvidedCapabilities()) {
++                if ("osgi.fragment".equals(provided.getNamespace()) && "org.eclipse.swt".equals(provided.getName())) {
++                    return;
++                }
++            }
++        }
++
+         IInstallableUnit swtFragment = null;
+ 
+         all_ius: for (Iterator<IInstallableUnit> iter = availableIUs.query(QueryUtil.ALL_UNITS, monitor).iterator(); iter
+-- 
+1.7.7.6
+
diff --git a/tycho.spec b/tycho.spec
index 9621a35..72bbe9a 100644
--- a/tycho.spec
+++ b/tycho.spec
@@ -30,11 +30,12 @@ Source3:        copy-platform-all
 Patch0:	%{name}-fix-build.patch
 Patch1:	%{name}-fix-surefire.patch
 Patch2:	%{name}-use-custom-resolver.patch
+Patch3:	%{name}-fix-swt.patch
 # Set some temporary build version so that the bootstrapped build has
 # a different version from the nonbootstrapped. Otherwise there will
 # be cyclic dependencies.
 %if %{bootstrap}
-Patch3:	%{name}-bootstrap.patch
+Patch4:	%{name}-bootstrap.patch
 %endif
 
 BuildArch:      noarch
@@ -112,8 +113,9 @@ This package contains the API documentation for %{name}.
 %patch0 -p2
 %patch1 -p1
 %patch2 -p1
-%if %{bootstrap}
 %patch3 -p1
+%if %{bootstrap}
+%patch4 -p1
 %endif
 
 find tycho-core -iname '*html' -delete
@@ -198,6 +200,7 @@ install -pm 755 %{SOURCE3} %{buildroot}%{_javadir}/%{name}/copy-platform-all
 * Tue May 29 2012 Roland Grunberg <rgrunber at redhat.com> 0.14.1-4.1
 - Fix Tycho Surfire to run Eclipse test bundles.
 - Implement automatic creation of a system p2 repository.
+- Allow building SWT fragments (BZ #380934).
 
 * Wed May 23 2012 Roland Grunberg <rgrunber at redhat.com> 0.14.1-4
 - Non-bootstrap build.


More information about the scm-commits mailing list