Use fedoraproject-p2 to do OSGi bundle discovery.
This commit is contained in:
parent
c7cad093f3
commit
b31d03ca43
|
@ -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 <rgrunber@redhat.com>
|
From: Roland Grunberg <rgrunber@redhat.com>
|
||||||
Date: Tue, 12 Jun 2012 10:38:51 -0400
|
Date: Tue, 12 Jun 2012 10:38:51 -0400
|
||||||
Subject: [PATCH] Implement a custom resolver for Tycho in local mode.
|
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
|
on the local system. Remote repositories should be ignored unless
|
||||||
offline mode is disabled.
|
offline mode is disabled.
|
||||||
|
|
||||||
Automatically create a local p2 repository of all bundles on the system
|
Use fedoraproject-p2 to resolve bundles from their system location.
|
||||||
so that they may be used for local dependency resolution. This is done
|
|
||||||
using a modified version of Eclipse's copy-platform script.
|
|
||||||
|
|
||||||
Since Fedora 17, we need an Execution Environment of at least JavaSE-1.6
|
Since Fedora 17, we need an Execution Environment of at least JavaSE-1.6
|
||||||
for Eclipse bundles. Eclipse Juno platform bundles depend on
|
for Eclipse bundles. Eclipse Juno platform bundles depend on
|
||||||
|
@ -29,18 +27,19 @@ Change-Id: Ia1ece07ece2412bc4a88901631f3f651ad2b634b
|
||||||
---
|
---
|
||||||
.../p2/remote/RemoteRepositoryCacheManager.java | 14 +++++++
|
.../p2/remote/RemoteRepositoryCacheManager.java | 14 +++++++
|
||||||
.../tycho/p2/target/TargetDefinitionResolver.java | 12 ++++--
|
.../tycho/p2/target/TargetDefinitionResolver.java | 12 ++++--
|
||||||
.../p2/target/TargetPlatformBundlePublisher.java | 15 ++-----
|
.../p2/target/TargetPlatformBundlePublisher.java | 15 ++------
|
||||||
.../tycho/p2/target/TargetPlatformFactoryImpl.java | 45 ++++++++++++++++++--
|
.../tycho/p2/target/TargetPlatformFactoryImpl.java | 45 ++++++++++++++++++++--
|
||||||
.../tycho/p2/repository/LocalRepositoryReader.java | 44 +++++++++++++++++++-
|
.../tycho/p2/repository/LocalRepositoryReader.java | 44 ++++++++++++++++++++-
|
||||||
.../facade/TargetPlatformConfigurationStub.java | 6 ++-
|
.../facade/TargetPlatformConfigurationStub.java | 6 ++-
|
||||||
.../tycho-bundles-external.product | 1 +
|
.../tycho-bundles-external.product | 1 +
|
||||||
.../eclipse/tycho/core/locking/FileLockerImpl.java | 26 +++++++++---
|
.../eclipse/tycho/core/locking/FileLockerImpl.java | 26 ++++++++++---
|
||||||
.../core/maven/TychoMavenLifecycleParticipant.java | 13 ++++++
|
.../core/maven/TychoMavenLifecycleParticipant.java | 13 +++++++
|
||||||
.../tycho/core/osgitools/AbstractTychoProject.java | 23 +++++++++++
|
.../tycho/core/osgitools/AbstractTychoProject.java | 23 +++++++++++
|
||||||
.../tycho/core/osgitools/OsgiBundleProject.java | 29 ++++++++++++-
|
.../tycho/core/osgitools/OsgiBundleProject.java | 29 +++++++++++++-
|
||||||
.../DefaultTargetPlatformConfigurationReader.java | 6 ++-
|
.../DefaultTargetPlatformConfigurationReader.java | 6 ++-
|
||||||
.../tycho/p2/resolver/P2DependencyResolver.java | 48 ++++++++++++++++++++++
|
tycho-p2/tycho-p2-facade/pom.xml | 5 +++
|
||||||
13 files changed, 253 insertions(+), 29 deletions(-)
|
.../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
|
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
|
index 707b1c5..c8c4152 100644
|
||||||
|
@ -511,8 +510,24 @@ index 4a1f157..65cbf47 100644
|
||||||
|
|
||||||
setTargetPlatformResolver(result, configuration);
|
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 @@
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
+ <dependency>
|
||||||
|
+ <groupId>org.fedoraproject.p2</groupId>
|
||||||
|
+ <artifactId>org.fedoraproject.p2</artifactId>
|
||||||
|
+ <version>0.0.1-SNAPSHOT</version>
|
||||||
|
+ </dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
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
|
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
|
--- 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
|
+++ b/tycho-p2/tycho-p2-facade/src/main/java/org/eclipse/tycho/p2/resolver/P2DependencyResolver.java
|
||||||
@@ -15,6 +15,7 @@ import java.net.MalformedURLException;
|
@@ -15,6 +15,7 @@ import java.net.MalformedURLException;
|
||||||
|
@ -523,49 +538,38 @@ index 255df24..554702d 100644
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
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());
|
pomDependencies.setProjectLocation(project.getBasedir());
|
||||||
}
|
}
|
||||||
|
|
||||||
+ // Add Fedora Local P2 Repository when running in local mode
|
+ // Add Fedora Local P2 Repository when running in local mode
|
||||||
+ if (System.getProperty("TYCHO_MVN_LOCAL") != null || System.getProperty("TYCHO_MVN_RPMBUILD") != null) {
|
+ if (System.getProperty("TYCHO_MVN_LOCAL") != null || System.getProperty("TYCHO_MVN_RPMBUILD") != null) {
|
||||||
+
|
+
|
||||||
+ // Find all SCL roots
|
+ Set<String> allLocations = new HashSet<String>();
|
||||||
+ String jconfdirs = System.getProperty("JAVACONFDIRS");
|
+ final Set<String> roots = EclipseSystemLayout.getSCLRoots();
|
||||||
+ List<String> roots = new ArrayList<String>();
|
|
||||||
+ roots.add("/");
|
|
||||||
+ if (jconfdirs != null && !jconfdirs.isEmpty()) {
|
|
||||||
+ String[] jconfRoots = jconfdirs.split(":");
|
|
||||||
+ for (String jconfRoot : jconfRoots) {
|
|
||||||
+ roots.add(jconfRoot.replace("etc/java", ""));
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
+
|
||||||
+ String is64 = System.getProperty("os.arch").contains("64") ? "64" : "";
|
+ Set<String> platformDirs = new HashSet<String>();
|
||||||
+ // Locations for all OSGi bundles
|
+ Set<String> internalDirs = new HashSet<String>();
|
||||||
+ final String[] locations = new String[] { "usr/lib" + is64 + "/eclipse/plugins", "usr/lib" + is64 + "/eclipse/features",
|
+ Set<String> externalDirs = new HashSet<String>();
|
||||||
+ "usr/share/eclipse/dropins/", "usr/lib" + is64 + "/eclipse/dropins/", "usr/share/java/",
|
|
||||||
+ "usr/lib/java/" };
|
|
||||||
+
|
|
||||||
+ List<String> uris = new ArrayList<String>();
|
|
||||||
+ for (String root : roots) {
|
+ for (String root : roots) {
|
||||||
+ for (String loc : locations) {
|
+ EclipseSystemLayout.initLocations(Paths.get(root), platformDirs, internalDirs, externalDirs, false);
|
||||||
+ 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);
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ 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 {
|
+ try {
|
||||||
+ tpConfiguration.addP2Repository(new MavenRepositoryLocation(uri, new URI(uri)));
|
+ tpConfiguration.addP2Repository(new MavenRepositoryLocation(uri, new URI(uri)));
|
||||||
+ } catch (URISyntaxException e) {
|
+ } catch (URISyntaxException e) {
|
||||||
|
|
20
tycho.spec
20
tycho.spec
|
@ -23,7 +23,7 @@
|
||||||
|
|
||||||
Name: tycho
|
Name: tycho
|
||||||
Version: 0.21.0
|
Version: 0.21.0
|
||||||
Release: 5%{?dist}
|
Release: 6%{?dist}
|
||||||
Summary: Plugins and extensions for building Eclipse plugins and OSGI bundles with Maven
|
Summary: Plugins and extensions for building Eclipse plugins and OSGI bundles with Maven
|
||||||
|
|
||||||
Group: Development/Libraries
|
Group: Development/Libraries
|
||||||
|
@ -168,6 +168,8 @@ This package contains the API documentation for %{name}.
|
||||||
# Prepare fedoraproject-p2
|
# Prepare fedoraproject-p2
|
||||||
tar -xf %{SOURCE5}
|
tar -xf %{SOURCE5}
|
||||||
|
|
||||||
|
%pom_disable_module org.fedoraproject.p2.tests fedoraproject-p2
|
||||||
|
|
||||||
%patch0 -p1
|
%patch0 -p1
|
||||||
%patch1 -p1
|
%patch1 -p1
|
||||||
%patch2 -p1
|
%patch2 -p1
|
||||||
|
@ -234,7 +236,10 @@ mkdir boot
|
||||||
|
|
||||||
# Copy Tycho POMs from system repo and set their versions to %%{version}-SNAPSHOT.
|
# Copy Tycho POMs from system repo and set their versions to %%{version}-SNAPSHOT.
|
||||||
for pom in $(grep 'pom</ns1:path>' $medadataFile | sed 's|.*>\(.*\)<.*|\1|'); do
|
for pom in $(grep 'pom</ns1:path>' $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
|
done
|
||||||
|
|
||||||
# Update Maven lifecycle mappings for Tycho packaging types provided by tycho-maven-plugin.
|
# 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 '
|
sed '
|
||||||
s|>/[^<]*/\([^/]*\.pom\)</ns1:path>|>'$PWD'/boot/\1</ns1:path>|
|
s|>/[^<]*/\([^/]*\.pom\)</ns1:path>|>'$PWD'/boot/\1</ns1:path>|
|
||||||
s|>'$sysVer'</ns1:version>|>%{version}-SNAPSHOT</ns1:version><ns1:compatVersions><ns1:version>%{version}-SNAPSHOT</ns1:version></ns1:compatVersions>|
|
s|>'$sysVer'</ns1:version>|>%{version}-SNAPSHOT</ns1:version><ns1:compatVersions><ns1:version>%{version}-SNAPSHOT</ns1:version></ns1:compatVersions>|
|
||||||
|
s|>'%{fp_p2_version}%{fp_p2_snap}'</ns1:version>|>%{fp_p2_version}</ns1:version><ns1:compatVersions><ns1:version>%{fp_p2_version}</ns1:version></ns1:compatVersions>|
|
||||||
s|%{_javadir}/tycho/tycho-maven-plugin.jar|'$PWD'/boot/tycho-maven-plugin.jar|
|
s|%{_javadir}/tycho/tycho-maven-plugin.jar|'$PWD'/boot/tycho-maven-plugin.jar|
|
||||||
' $medadataFile >boot/tycho-metadata.xml
|
' $medadataFile >boot/tycho-metadata.xml
|
||||||
%mvn_config resolverSettings/metadataRepositories/repository $PWD/boot/tycho-metadata.xml
|
%mvn_config resolverSettings/metadataRepositories/repository $PWD/boot/tycho-metadata.xml
|
||||||
|
@ -260,7 +266,7 @@ sed '
|
||||||
%build
|
%build
|
||||||
xmvn -o -Dtycho-version=%{version}-SNAPSHOT -Dmaven.test.skip=true \
|
xmvn -o -Dtycho-version=%{version}-SNAPSHOT -Dmaven.test.skip=true \
|
||||||
-Dmaven.repo.local=$(pwd)/.m2 -Dfedora.p2.repos=$(pwd)/bootstrap \
|
-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
|
clean install org.apache.maven.plugins:maven-javadoc-plugin:aggregate
|
||||||
|
|
||||||
xmvn -o -DtychoBootstrapVersion=%{version}-SNAPSHOT -Dmaven.test.skip=true \
|
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}
|
mkdir -p $RPM_BUILD_ROOT%{_javadir}/%{name}
|
||||||
install -d -m 755 $RPM_BUILD_ROOT%{_mavenpomdir}
|
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
|
# org.fedoraproject.p2
|
||||||
mod=fedoraproject-p2/org.fedoraproject.p2
|
mod=fedoraproject-p2/org.fedoraproject.p2
|
||||||
aid=`basename $mod`
|
aid=`basename $mod`
|
||||||
|
@ -368,6 +379,9 @@ install -m 644 $osgiStateJarPath $RPM_BUILD_ROOT%{_javadir}/%{name}/osgi.compati
|
||||||
%{_javadocdir}/%{name}
|
%{_javadocdir}/%{name}
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Sep 04 2014 Roland Grunberg <rgrunber@redhat.com> - 0.21.0-6
|
||||||
|
- Use fedoraproject-p2 to do OSGi bundle discovery.
|
||||||
|
|
||||||
* Wed Sep 03 2014 Mat Booth <mat.booth@redhat.com> - 0.21.0-5
|
* Wed Sep 03 2014 Mat Booth <mat.booth@redhat.com> - 0.21.0-5
|
||||||
- Include eclipse features dir in custom resolver
|
- Include eclipse features dir in custom resolver
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue