diff --git a/tycho-use-custom-resolver.patch b/tycho-use-custom-resolver.patch index 4e88e58..d609bf1 100644 --- a/tycho-use-custom-resolver.patch +++ b/tycho-use-custom-resolver.patch @@ -1,4 +1,4 @@ -From c6cfa4c4e6ce97cc634694987d9f87a032808e15 Mon Sep 17 00:00:00 2001 +From d194350892237fe41982ab85e2a6e49df778c181 Mon Sep 17 00:00:00 2001 From: Roland Grunberg Date: Tue, 12 Jun 2012 10:38:51 -0400 Subject: [PATCH] Implement a custom resolver for Tycho in local mode. @@ -7,9 +7,7 @@ When running in local mode, dependencies should be resolved by looking on the local system. Remote repositories should be ignored unless offline mode is disabled. -Automatically create a local p2 repository of all bundles on the system -so that they may be used for local dependency resolution. This is done -using a modified version of Eclipse's copy-platform script. +Use fedoraproject-p2 to resolve bundles from their system location. Since Fedora 17, we need an Execution Environment of at least JavaSE-1.6 for Eclipse bundles. Eclipse Juno platform bundles depend on @@ -29,18 +27,19 @@ Change-Id: Ia1ece07ece2412bc4a88901631f3f651ad2b634b --- .../p2/remote/RemoteRepositoryCacheManager.java | 14 +++++++ .../tycho/p2/target/TargetDefinitionResolver.java | 12 ++++-- - .../p2/target/TargetPlatformBundlePublisher.java | 15 ++----- - .../tycho/p2/target/TargetPlatformFactoryImpl.java | 45 ++++++++++++++++++-- - .../tycho/p2/repository/LocalRepositoryReader.java | 44 +++++++++++++++++++- + .../p2/target/TargetPlatformBundlePublisher.java | 15 ++------ + .../tycho/p2/target/TargetPlatformFactoryImpl.java | 45 ++++++++++++++++++++-- + .../tycho/p2/repository/LocalRepositoryReader.java | 44 ++++++++++++++++++++- .../facade/TargetPlatformConfigurationStub.java | 6 ++- .../tycho-bundles-external.product | 1 + - .../eclipse/tycho/core/locking/FileLockerImpl.java | 26 +++++++++--- - .../core/maven/TychoMavenLifecycleParticipant.java | 13 ++++++ + .../eclipse/tycho/core/locking/FileLockerImpl.java | 26 ++++++++++--- + .../core/maven/TychoMavenLifecycleParticipant.java | 13 +++++++ .../tycho/core/osgitools/AbstractTychoProject.java | 23 +++++++++++ - .../tycho/core/osgitools/OsgiBundleProject.java | 29 ++++++++++++- + .../tycho/core/osgitools/OsgiBundleProject.java | 29 +++++++++++++- .../DefaultTargetPlatformConfigurationReader.java | 6 ++- - .../tycho/p2/resolver/P2DependencyResolver.java | 48 ++++++++++++++++++++++ - 13 files changed, 253 insertions(+), 29 deletions(-) + tycho-p2/tycho-p2-facade/pom.xml | 5 +++ + .../tycho/p2/resolver/P2DependencyResolver.java | 30 +++++++++++++++ + 14 files changed, 240 insertions(+), 29 deletions(-) diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/remote/RemoteRepositoryCacheManager.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/remote/RemoteRepositoryCacheManager.java index 707b1c5..c8c4152 100644 @@ -511,8 +510,24 @@ index 4a1f157..65cbf47 100644 setTargetPlatformResolver(result, configuration); +diff --git a/tycho-p2/tycho-p2-facade/pom.xml b/tycho-p2/tycho-p2-facade/pom.xml +index dc1941f..0e84b5b 100644 +--- a/tycho-p2/tycho-p2-facade/pom.xml ++++ b/tycho-p2/tycho-p2-facade/pom.xml +@@ -57,6 +57,11 @@ + junit + test + ++ ++ org.fedoraproject.p2 ++ org.fedoraproject.p2 ++ 0.0.1-SNAPSHOT ++ + + + diff --git a/tycho-p2/tycho-p2-facade/src/main/java/org/eclipse/tycho/p2/resolver/P2DependencyResolver.java b/tycho-p2/tycho-p2-facade/src/main/java/org/eclipse/tycho/p2/resolver/P2DependencyResolver.java -index 255df24..554702d 100644 +index 255df24..2e4e113 100644 --- a/tycho-p2/tycho-p2-facade/src/main/java/org/eclipse/tycho/p2/resolver/P2DependencyResolver.java +++ b/tycho-p2/tycho-p2-facade/src/main/java/org/eclipse/tycho/p2/resolver/P2DependencyResolver.java @@ -15,6 +15,7 @@ import java.net.MalformedURLException; @@ -523,49 +538,38 @@ index 255df24..554702d 100644 import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; -@@ -201,6 +202,53 @@ public class P2DependencyResolver extends AbstractLogEnabled implements Dependen +@@ -85,6 +86,7 @@ import org.eclipse.tycho.p2.resolver.facade.P2ResolverFactory; + import org.eclipse.tycho.p2.target.facade.PomDependencyCollector; + import org.eclipse.tycho.p2.target.facade.TargetPlatformConfigurationStub; + import org.eclipse.tycho.repository.registry.facade.ReactorRepositoryManagerFacade; ++import org.fedoraproject.p2.EclipseSystemLayout; + + @Component(role = DependencyResolver.class, hint = P2DependencyResolver.ROLE_HINT, instantiationStrategy = "per-lookup") + public class P2DependencyResolver extends AbstractLogEnabled implements DependencyResolver, Initializable { +@@ -201,6 +203,34 @@ public class P2DependencyResolver extends AbstractLogEnabled implements Dependen pomDependencies.setProjectLocation(project.getBasedir()); } + // Add Fedora Local P2 Repository when running in local mode + if (System.getProperty("TYCHO_MVN_LOCAL") != null || System.getProperty("TYCHO_MVN_RPMBUILD") != null) { + -+ // Find all SCL roots -+ String jconfdirs = System.getProperty("JAVACONFDIRS"); -+ List roots = new ArrayList(); -+ roots.add("/"); -+ if (jconfdirs != null && !jconfdirs.isEmpty()) { -+ String[] jconfRoots = jconfdirs.split(":"); -+ for (String jconfRoot : jconfRoots) { -+ roots.add(jconfRoot.replace("etc/java", "")); -+ } -+ } ++ Set allLocations = new HashSet(); ++ final Set roots = EclipseSystemLayout.getSCLRoots(); + -+ String is64 = System.getProperty("os.arch").contains("64") ? "64" : ""; -+ // Locations for all OSGi bundles -+ final String[] locations = new String[] { "usr/lib" + is64 + "/eclipse/plugins", "usr/lib" + is64 + "/eclipse/features", -+ "usr/share/eclipse/dropins/", "usr/lib" + is64 + "/eclipse/dropins/", "usr/share/java/", -+ "usr/lib/java/" }; -+ -+ List uris = new ArrayList(); ++ Set platformDirs = new HashSet(); ++ Set internalDirs = new HashSet(); ++ Set externalDirs = new HashSet(); + for (String root : roots) { -+ for (String loc : locations) { -+ if (Paths.get(root, loc).toFile().exists()) { -+ uris.add("fedora:" + root + loc); -+ } -+ } -+ } -+ String value = System.getProperty("fedora.p2.repos"); -+ if (value != null) { -+ String[] paths = value.split(","); -+ for (String path : paths) { -+ if (Paths.get(path).toFile().exists()) { -+ uris.add("fedora:" + path); -+ } -+ } ++ EclipseSystemLayout.initLocations(Paths.get(root), platformDirs, internalDirs, externalDirs, false); + } + -+ for (String uri : uris) { ++ allLocations.addAll(platformDirs); ++ allLocations.addAll(internalDirs); ++ allLocations.addAll(externalDirs); ++ allLocations.addAll(EclipseSystemLayout.getUserDefinedBundleLocations()); ++ ++ for (String loc : allLocations) { ++ String uri = "fedora:" + loc; + try { + tpConfiguration.addP2Repository(new MavenRepositoryLocation(uri, new URI(uri))); + } catch (URISyntaxException e) { diff --git a/tycho.spec b/tycho.spec index 8d985f4..277dd39 100644 --- a/tycho.spec +++ b/tycho.spec @@ -23,7 +23,7 @@ Name: tycho Version: 0.21.0 -Release: 5%{?dist} +Release: 6%{?dist} Summary: Plugins and extensions for building Eclipse plugins and OSGI bundles with Maven Group: Development/Libraries @@ -168,6 +168,8 @@ This package contains the API documentation for %{name}. # Prepare fedoraproject-p2 tar -xf %{SOURCE5} +%pom_disable_module org.fedoraproject.p2.tests fedoraproject-p2 + %patch0 -p1 %patch1 -p1 %patch2 -p1 @@ -234,7 +236,10 @@ mkdir boot # Copy Tycho POMs from system repo and set their versions to %%{version}-SNAPSHOT. for pom in $(grep 'pom' $medadataFile | sed 's|.*>\(.*\)<.*|\1|'); do - sed s/$sysVer/%{version}-SNAPSHOT/g <$pom >boot/$(basename $pom) + sed ' + s/$sysVer/%{version}-SNAPSHOT/g + s/%{fp_p2_version}%{fp_p2_snap}/%{fp_p2_version}/ +' <$pom >boot/$(basename $pom) done # Update Maven lifecycle mappings for Tycho packaging types provided by tycho-maven-plugin. @@ -247,6 +252,7 @@ jar uf boot/tycho-maven-plugin.jar META-INF/plexus/components.xml sed ' s|>/[^<]*/\([^/]*\.pom\)|>'$PWD'/boot/\1| s|>'$sysVer'|>%{version}-SNAPSHOT%{version}-SNAPSHOT| + s|>'%{fp_p2_version}%{fp_p2_snap}'|>%{fp_p2_version}%{fp_p2_version}| s|%{_javadir}/tycho/tycho-maven-plugin.jar|'$PWD'/boot/tycho-maven-plugin.jar| ' $medadataFile >boot/tycho-metadata.xml %mvn_config resolverSettings/metadataRepositories/repository $PWD/boot/tycho-metadata.xml @@ -260,7 +266,7 @@ sed ' %build xmvn -o -Dtycho-version=%{version}-SNAPSHOT -Dmaven.test.skip=true \ -Dmaven.repo.local=$(pwd)/.m2 -Dfedora.p2.repos=$(pwd)/bootstrap \ --f fedoraproject-p2/org.fedoraproject.p2/pom.xml \ +-f fedoraproject-p2/pom.xml \ clean install org.apache.maven.plugins:maven-javadoc-plugin:aggregate xmvn -o -DtychoBootstrapVersion=%{version}-SNAPSHOT -Dmaven.test.skip=true \ @@ -272,6 +278,11 @@ clean install org.apache.maven.plugins:maven-javadoc-plugin:aggregate mkdir -p $RPM_BUILD_ROOT%{_javadir}/%{name} install -d -m 755 $RPM_BUILD_ROOT%{_mavenpomdir} +# fedoraproject-p2 parent +mod=fedoraproject-p2 +install -pm 644 $mod/pom.xml $RPM_BUILD_ROOT%{_mavenpomdir}/JPP.%{name}-$mod.pom +%add_maven_depmap JPP.%{name}-$mod.pom + # org.fedoraproject.p2 mod=fedoraproject-p2/org.fedoraproject.p2 aid=`basename $mod` @@ -368,6 +379,9 @@ install -m 644 $osgiStateJarPath $RPM_BUILD_ROOT%{_javadir}/%{name}/osgi.compati %{_javadocdir}/%{name} %changelog +* Thu Sep 04 2014 Roland Grunberg - 0.21.0-6 +- Use fedoraproject-p2 to do OSGi bundle discovery. + * Wed Sep 03 2014 Mat Booth - 0.21.0-5 - Include eclipse features dir in custom resolver