commit 3b5d761830be052c056184ada3cec39f958f8727 Author: Roland Grunberg rgrunber@redhat.com Date: Wed Apr 25 17:29:31 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 db2a50c..6bc89a6 100644 --- a/tycho.spec +++ b/tycho.spec @@ -1,5 +1,5 @@ %global eclipsedir %{_libdir}/eclipse -%global bootstrap 0 +%global bootstrap 1
%if %{bootstrap} %global snap -SNAPSHOT @@ -9,7 +9,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 @@ -23,15 +23,16 @@ 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 +Patch1: %{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} -Patch1: %{name}-bootstrap.patch +Patch2: %{name}-bootstrap.patch %endif
BuildArch: noarch @@ -107,8 +108,9 @@ This package contains the API documentation for %{name}. %setup -q -n %{name}-0.14.x
%patch0 -p2 -%if %{bootstrap} %patch1 -p1 +%if %{bootstrap} +%patch2 -p1 %endif
find tycho-core -iname '*html' -delete @@ -189,6 +191,10 @@ cp -pr target/site/api*/* %{buildroot}%{_javadocdir}/%{name} %{_javadocdir}/%{name}
%changelog +* Wed Apr 25 2012 Roland Grunberg rgrunber@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@redhat.com 0.14.1-2 - Non-bootstrap build.
java-sig-commits@lists.fedoraproject.org