[tycho] Implement a custom resolver when running in local mode.
Roland Grunberg
rgrunber at fedoraproject.org
Wed May 16 17:33:33 UTC 2012
commit 733e99cdb19652d7b2bc543c022b8ef55edc66c4
Author: Roland Grunberg <rgrunber at redhat.com>
Date: Fri May 4 15:28:57 2012 -0400
Implement a custom resolver when running in local mode.
When running in local mode, dependencies should be resolved by looking
on the local system. Remote repositories should be ignored.
depmap.xml | 76 +----------------------------------
tycho-fix-build.patch | 36 +++++++++++-----
tycho-use-custom-resolver.patch | 84 +++++++++++++++++++++++++++++++++++++++
tycho.spec | 16 +++++--
4 files changed, 121 insertions(+), 91 deletions(-)
---
diff --git a/depmap.xml b/depmap.xml
index 71ff51b..ce74541 100644
--- a/depmap.xml
+++ b/depmap.xml
@@ -1,52 +1,4 @@
-<dependencies>
-<dependency>
- <maven>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-artifact</artifactId>
- <version>3.0.3</version>
- </maven>
- <jpp>
- <groupId>JPP/maven</groupId>
- <artifactId>maven-artifact</artifactId>
- <version>3.0.3</version>
- </jpp>
-</dependency>
-<dependency>
- <maven>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-plugin-api</artifactId>
- <version>3.0.3</version>
- </maven>
- <jpp>
- <groupId>JPP/maven</groupId>
- <artifactId>maven-plugin-api</artifactId>
- <version>3.0.3</version>
- </jpp>
-</dependency>
-<dependency>
- <maven>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-core</artifactId>
- <version>3.0.3</version>
- </maven>
- <jpp>
- <groupId>JPP/maven</groupId>
- <artifactId>maven-core</artifactId>
- <version>3.0.3</version>
- </jpp>
-</dependency>
-<dependency>
- <maven>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-settings</artifactId>
- <version>3.0.3</version>
- </maven>
- <jpp>
- <groupId>JPP/maven</groupId>
- <artifactId>maven-settings</artifactId>
- <version>3.0.3</version>
- </jpp>
-</dependency>
+<dependencies>
<dependency>
<maven>
<groupId>org.apache.maven</groupId>
@@ -59,30 +11,4 @@
<version>3.0.3</version>
</jpp>
</dependency>
-<dependency>
- <maven>
- <groupId>org.sonatype.tycho</groupId>
- <artifactId>org.eclipse.jdt.core</artifactId>
- <version>3.6.0</version>
- </maven>
- <jpp>
- <groupId>JPP</groupId>
- <artifactId>jdt-core</artifactId>
- <version>3.6.0</version>
- </jpp>
-</dependency>
-<dependency>
- <maven>
- <groupId>org.sonatype.tycho</groupId>
- <artifactId>org.eclipse.osgi</artifactId>
- <version>3.6.0</version>
- </maven>
- <jpp>
- <groupId>JPP</groupId>
- <artifactId>jdt-osgi</artifactId>
- <version>3.6.0</version>
- </jpp>
-</dependency>
-
-
</dependencies>
diff --git a/tycho-fix-build.patch b/tycho-fix-build.patch
index 2ed901b..f78242c 100644
--- a/tycho-fix-build.patch
+++ b/tycho-fix-build.patch
@@ -44,17 +44,6 @@
assertEquals(originalManifest.size(), writtenManifest.size());
for (Enumeration<String> keys = writtenManifest.keys(); keys.hasMoreElements();) {
String key = keys.nextElement();
---- ./tycho-0.14.0.old/tycho-core/src/main/java/org/eclipse/tycho/core/utils/EEVersion.java 2012-02-06 10:26:59.000000000 -0500
-+++ ./tycho-0.14.0/tycho-core/src/main/java/org/eclipse/tycho/core/utils/EEVersion.java 2012-02-14 10:47:58.743002506 -0500
-@@ -18,7 +18,7 @@
- public enum EEType {
-
- // order is significant for comparison
-- OSGI_MINIMUM("OSGi/Minimum"), CDC_FOUNDATION("CDC/Foundation"), JAVA_SE("JavaSE");
-+ OSGI_MINIMUM("OSGi/Minimum"), CDC_FOUNDATION("CDC/Foundation"), JAVA_SE("JavaSE"), JRE("JRE");
-
- private final String profileName;
-
--- ./tycho-0.14.0.old/tycho-core/src/main/java/org/eclipse/tycho/core/osgitools/OsgiManifest.java 2012-02-06 10:26:59.000000000 -0500
+++ ./tycho-0.14.0/tycho-core/src/main/java/org/eclipse/tycho/core/osgitools/OsgiManifest.java 2012-02-10 15:36:32.000000000 -0500
@@ -25,7 +25,7 @@
@@ -118,3 +107,28 @@
+Require-Bundle: org.junit;bundle-version="[3.8.0,4.9.0)"
Bundle-ClassPath: jars/surefire-junit3-2.10.jar
Bundle-Vendor: %providerName
+--- ./tycho-0.14.x.old/tycho-core/src/main/java/org/eclipse/tycho/core/utils/EEVersion.java 2012-02-24 06:40:15.000000000 -0500
++++ ./tycho-0.14.x/tycho-core/src/main/java/org/eclipse/tycho/core/utils/EEVersion.java 2012-05-03 14:09:09.000000000 -0400
+@@ -18,7 +18,7 @@
+ public enum EEType {
+
+ // order is significant for comparison
+- OSGI_MINIMUM("OSGi/Minimum"), CDC_FOUNDATION("CDC/Foundation"), JAVA_SE("JavaSE");
++ OSGI_MINIMUM("OSGi/Minimum"), CDC_FOUNDATION("CDC/Foundation"), JRE("JRE"), JAVA_SE("JavaSE");
+
+ private final String profileName;
+
+--- ./tycho-0.14.x.old/tycho-core/src/main/java/org/eclipse/tycho/core/utils/ExecutionEnvironment.java 2012-02-24 06:40:15.000000000 -0500
++++ ./tycho-0.14.x/tycho-core/src/main/java/org/eclipse/tycho/core/utils/ExecutionEnvironment.java 2012-05-03 14:09:09.000000000 -0400
+@@ -50,8 +50,9 @@
+
+ private EEVersion parseEEVersion(String systemCaps) {
+ if (systemCaps == null && "JRE-1.1".equals(profileName)) {
+- // system capabilities entry is missing for JRE-1.1
+- return new EEVersion(Version.parseVersion("1.1"), EEType.JAVA_SE);
++ // system capabilities entry is missing for JRE-1.1
++ // TODO remove workaround when https://bugs.eclipse.org/377277 is fixed
++ return new EEVersion(Version.parseVersion("1.1"), EEType.JRE);
+ }
+ List<EEVersion> eeVersions = new ArrayList<EEVersion>();
+ try {
diff --git a/tycho-use-custom-resolver.patch b/tycho-use-custom-resolver.patch
new file mode 100644
index 0000000..3894258
--- /dev/null
+++ b/tycho-use-custom-resolver.patch
@@ -0,0 +1,84 @@
+diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetDefinitionResolver.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetDefinitionResolver.java
+index 2d7d3b9..3084fff 100644
+--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetDefinitionResolver.java
++++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetDefinitionResolver.java
+@@ -24,6 +24,7 @@ import org.eclipse.core.runtime.CoreException;
+ import org.eclipse.core.runtime.IProgressMonitor;
+ import org.eclipse.core.runtime.IStatus;
+ import org.eclipse.core.runtime.NullProgressMonitor;
++import org.eclipse.core.runtime.URIUtil;
+ import org.eclipse.equinox.p2.core.IProvisioningAgent;
+ import org.eclipse.equinox.p2.core.ProvisionException;
+ import org.eclipse.equinox.p2.metadata.IInstallableUnit;
+@@ -100,8 +101,11 @@ public class TargetDefinitionResolver {
+
+ List<IMetadataRepository> metadataRepositories = new ArrayList<IMetadataRepository>();
+ for (Repository repository : iuLocationDefinition.getRepositories()) {
+- artifactRepositories.add(repository.getLocation());
+- metadataRepositories.add(loadRepository(repository));
++ // We cannot resolve a non-file URI in local mode
++ if (System.getProperty("maven.local.mode") == null || URIUtil.isFileURI(repository.getLocation())) {
++ artifactRepositories.add(repository.getLocation());
++ metadataRepositories.add(loadRepository(repository));
++ }
+ }
+
+ IQueryable<IInstallableUnit> locationUnits = new CompoundQueryable<IInstallableUnit>(
+diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetPlatformBuilderImpl.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetPlatformBuilderImpl.java
+index 9da87bb..3d15c5e 100644
+--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetPlatformBuilderImpl.java
++++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetPlatformBuilderImpl.java
+@@ -255,6 +255,11 @@ public class TargetPlatformBuilderImpl implements TargetPlatformBuilder {
+ return;
+ }
+
++ // We cannot resolve a non-file URI in local mode
++ if (System.getProperty("maven.local.mode") != null && !URIUtil.isFileURI(location)) {
++ return;
++ }
++
+ try {
+ metadataRepository = metadataRepositoryManager.loadRepository(location, monitor);
+ metadataRepositories.add(metadataRepository);
+diff --git a/tycho-core/src/main/java/org/eclipse/tycho/osgi/runtime/TychoP2RuntimeLocator.java b/tycho-core/src/main/java/org/eclipse/tycho/osgi/runtime/TychoP2RuntimeLocator.java
+index 15b3fff..c8f14df 100644
+--- a/tycho-core/src/main/java/org/eclipse/tycho/osgi/runtime/TychoP2RuntimeLocator.java
++++ b/tycho-core/src/main/java/org/eclipse/tycho/osgi/runtime/TychoP2RuntimeLocator.java
+@@ -23,6 +23,7 @@ import org.apache.maven.artifact.repository.ArtifactRepository;
+ import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+ import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
+ import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
++import org.apache.maven.artifact.resolver.JavadirWorkspaceReader;
+ import org.apache.maven.artifact.resolver.ResolutionErrorHandler;
+ import org.apache.maven.execution.MavenSession;
+ import org.apache.maven.model.Dependency;
+@@ -38,6 +39,7 @@ import org.codehaus.plexus.util.FileUtils;
+ import org.eclipse.sisu.equinox.embedder.EquinoxRuntimeLocator;
+ import org.eclipse.tycho.locking.facade.FileLockService;
+ import org.eclipse.tycho.locking.facade.FileLocker;
++import org.sonatype.aether.util.artifact.DefaultArtifact;
+
+ @Component(role = EquinoxRuntimeLocator.class)
+ public class TychoP2RuntimeLocator implements EquinoxRuntimeLocator {
+@@ -158,6 +160,21 @@ public class TychoP2RuntimeLocator implements EquinoxRuntimeLocator {
+ }
+
+ private File resolveArtifact(MavenSession session, Artifact artifact) throws MavenExecutionException {
++
++ // If we are in local mode, find the artifact on the system
++ if (System.getProperty("maven.local.mode") != null) {
++ JavadirWorkspaceReader wReader = new JavadirWorkspaceReader();
++ DefaultArtifact newArtifact = new DefaultArtifact(artifact.getGroupId()
++ + ":" + artifact.getArtifactId()
++ + ":" + artifact.getType()
++ + ":" + artifact.getVersion());
++ File file = wReader.findArtifact(newArtifact);
++ if (file != null) {
++ artifact.setFile(file);
++ return file;
++ }
++ }
++
+ List<ArtifactRepository> repositories = new ArrayList<ArtifactRepository>();
+ for (MavenProject project : session.getProjects()) {
+ repositories.addAll(project.getPluginArtifactRepositories());
diff --git a/tycho.spec b/tycho.spec
index d0fba72..1ecd5a5 100644
--- a/tycho.spec
+++ b/tycho.spec
@@ -1,4 +1,4 @@
-%global bootstrap 0
+%global bootstrap 1
%if %{bootstrap}
%global snap -SNAPSHOT
@@ -8,7 +8,7 @@
Name: tycho
Version: 0.14.1
-Release: 2%{?dist}
+Release: 2.1%{?dist}
Summary: Plugins and extensions for building Eclipse plugins and OSGI bundles with Maven
Group: Development/Libraries
@@ -22,17 +22,18 @@ Source0: %{name}-0.14.x.tar.bz2
# version 2.4.3 (impossible to have empty mojo created as aggregate). This
# should be fixed upstream properly
Source1: EmptyMojo.java
-
# we need to make sure we are using maven 3 deps
Source2: depmap.xml
+
Patch0: %{name}-fix-build.patch
# Upstream builds against maven-surefire 2.10 but in rawhide we have 2.12
Patch1: %{name}-maven-surefire.patch
+Patch2: %{name}-use-custom-resolver.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}
-Patch2: %{name}-bootstrap.patch
+Patch3: %{name}-bootstrap.patch
%endif
BuildArch: noarch
@@ -109,8 +110,9 @@ This package contains the API documentation for %{name}.
%patch0 -p2
%patch1 -p2
-%if %{bootstrap}
%patch2 -p1
+%if %{bootstrap}
+%patch3 -p1
%endif
find tycho-core -iname '*html' -delete
@@ -191,6 +193,10 @@ cp -pr target/site/api*/* %{buildroot}%{_javadocdir}/%{name}
%{_javadocdir}/%{name}
%changelog
+* Wed Apr 25 2012 Roland Grunberg <rgrunber at redhat.com> 0.14.1-2.1
+- Implement a custom resolver when running in local mode.
+- Use upstream solution for BZ #372395 to fix the build.
+
* Wed Apr 4 2012 Roland Grunberg <rgrunber at redhat.com> 0.14.1-2
- Non-bootstrap build.
More information about the scm-commits
mailing list