diff --git a/0005-Fix-build-fail.patch b/0005-Fix-build-fail.patch new file mode 100644 index 0000000..3f1ffba --- /dev/null +++ b/0005-Fix-build-fail.patch @@ -0,0 +1,51 @@ +Form ca34be70c509a2512d290340d5cebf7c4678acde Mon Sep 17 00:00:00 2001 +From: lyn1001 +Date: Sun, 13 Sep 2020 18:58:41 +0800 +Subject: [PATCH] fix build fail + +Change-Id: Ic8c0514c1fa10ee53580d2654ac6a363ccd66814 +--- + .../core/maven/TychoMavenLifecycleParticipant.java | 4 +++- + .../tycho/test/AbstractTychoIntegrationTest.java | 11 +++++------ + 2 files changed, 8 insertions(+), 7 deletions(-) + +diff --git a/tycho-core/src/main/java/org/eclipse/tycho/core/maven/TychoMavenLifecycleParticipant.java b/tycho-core/src/main/java/org/eclipse/tycho/core/maven/TychoMavenLifecycleParticipant.java +index 3cba466..f733774 100644 +--- a/tycho-core/src/main/java/org/eclipse/tycho/core/maven/TychoMavenLifecycleParticipant.java ++++ b/tycho-core/src/main/java/org/eclipse/tycho/core/maven/TychoMavenLifecycleParticipant.java +@@ -102,7 +102,9 @@ public class TychoMavenLifecycleParticipant extends AbstractMavenLifecyclePartic + } + + private void validate(List projects) throws MavenExecutionException { +- validateConsistentTychoVersion(projects); ++ if (System.getProperty("tycho.enableVersionCheck") != null) { ++ validateConsistentTychoVersion(projects); ++ } + validateUniqueBaseDirs(projects); + } + +diff --git a/tycho-testing-harness/src/main/java/org/eclipse/tycho/test/AbstractTychoIntegrationTest.java b/tycho-testing-harness/src/main/java/org/eclipse/tycho/test/AbstractTychoIntegrationTest.java +index 475afe2..2295d66 100644 +--- a/tycho-testing-harness/src/main/java/org/eclipse/tycho/test/AbstractTychoIntegrationTest.java ++++ b/tycho-testing-harness/src/main/java/org/eclipse/tycho/test/AbstractTychoIntegrationTest.java +@@ -114,12 +114,11 @@ public abstract class AbstractTychoIntegrationTest { + verifier.getCliOptions().add(customOptions); + } + +- if (System.getProperty(SYSPROP_STATELOCATION) != null) { +- verifier.setForkJvm(false); +- String m2eresolver = System.getProperty("tychodev-maven.ext.class.path"); // XXX +- if (m2eresolver != null) { +- verifier.addCliOption("-Dmaven.ext.class.path=" + m2eresolver); +- } ++ String m2eState = System.getProperty("m2eclipse.workspace.state"); ++ String m2eResolver = System.getProperty("m2eclipse.workspace.resolver"); ++ ++ if (m2eState != null && m2eResolver != null) { ++ verifier.getVerifierProperties().put("m2eclipse.workspace.state", m2eState); + } + + return verifier; +-- +2.20.1 + diff --git a/0006-Tycho-should-always-delegate-artifact-resolution-to-.patch b/0006-Tycho-should-always-delegate-artifact-resolution-to-.patch new file mode 100644 index 0000000..87b88ad --- /dev/null +++ b/0006-Tycho-should-always-delegate-artifact-resolution-to-.patch @@ -0,0 +1,688 @@ +From 2e005b107e6abda5bf09a963a54833cedabfba99 Mon Sep 17 00:00:00 2001 +From: Roland Grunberg +Date: Wed, 18 Jun 2014 13:01:31 -0400 +Subject: [PATCH 3/6] Tycho should always delegate artifact resolution to + Maven. + +Maven resolves dependencies from the following locations in the +following order: + * reactor, + * workspace (eg. XMvn), + * local repository, + * remote repositories. + +Tycho assumes that all resolved artifacts are present within the reactor +cache but this is not true for artifacts resolved from workspace +locations. + +Change-Id: Ia44969ed1064965a82c3507a63e54caeebb75b18 +--- + .../META-INF/MANIFEST.MF | 1 + + .../tycho/core/shared/MavenContext.java | 2 + + .../tycho/core/shared/MavenContextImpl.java | 10 +++- + .../core/shared/MavenRepositorySystem.java | 19 +++++++ + .../LocalArtifactRepositoryP2APITest.java | 4 +- + .../local/LocalMetadataRepositoryTest.java | 3 +- + .../local/LocalArtifactRepository.java | 8 +-- + .../local/LocalArtifactRepositoryFactory.java | 3 +- + .../index/LocalRepositoryP2IndicesImpl.java | 7 +++ + .../remote/RemoteAgentMavenMirrorsTest.java | 3 +- + ...emoteAgentMetadataRepositoryCacheTest.java | 5 +- + .../TargetPlatformBundlePublisherTest.java | 3 +- + .../tycho/p2/target/TestResolverFactory.java | 5 +- + .../p2/resolver/P2ResolverFactoryImpl.java | 8 +-- + .../p2/target/PomDependencyCollectorImpl.java | 2 +- + .../target/TargetPlatformBundlePublisher.java | 13 +++-- + .../repository/LocalRepositoryP2Indices.java | 4 ++ + .../p2/repository/LocalRepositoryReader.java | 49 +++++-------------- + .../TemporaryLocalMavenRepository.java | 4 +- + .../test/util/MavenRepositorySystemStub.java | 30 ++++++++++++ + .../MavenRepositorySystemAdapter.java | 37 ++++++++++++++ + .../MavenContextConfigurator.java | 8 ++- + 22 files changed, 166 insertions(+), 62 deletions(-) + create mode 100644 tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenRepositorySystem.java + create mode 100644 tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/test/util/MavenRepositorySystemStub.java + create mode 100644 tycho-core/src/main/java/org/eclipse/tycho/osgi/adapters/MavenRepositorySystemAdapter.java + +diff --git a/tycho-bundles/org.eclipse.tycho.core.shared.tests/META-INF/MANIFEST.MF b/tycho-bundles/org.eclipse.tycho.core.shared.tests/META-INF/MANIFEST.MF +index ef464f8..05ac727 100644 +--- a/tycho-bundles/org.eclipse.tycho.core.shared.tests/META-INF/MANIFEST.MF ++++ b/tycho-bundles/org.eclipse.tycho.core.shared.tests/META-INF/MANIFEST.MF +@@ -8,3 +8,4 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8 + Require-Bundle: org.junit;bundle-version="4.8.2" + Bundle-Vendor: %providerName + Automatic-Module-Name: org.eclipse.tycho.core.shared.tests ++Import-Package: org.eclipse.tycho.p2.repository +diff --git a/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenContext.java b/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenContext.java +index d63c1f1..cd8594d 100644 +--- a/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenContext.java ++++ b/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenContext.java +@@ -38,4 +38,6 @@ public interface MavenContext { + */ + public Properties getSessionProperties(); + ++ public MavenRepositorySystem getRepositorySystem(); ++ + } +diff --git a/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenContextImpl.java b/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenContextImpl.java +index d9f7bc6..683772c 100644 +--- a/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenContextImpl.java ++++ b/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenContextImpl.java +@@ -19,18 +19,20 @@ public class MavenContextImpl implements MavenContext { + private MavenLogger mavenLogger; + private boolean offline; + private Properties mergedProperties; ++ private MavenRepositorySystem repositorySystem; + + public MavenContextImpl(File localRepositoryRoot, boolean offline, MavenLogger mavenLogger, +- Properties mergedProperties) { ++ Properties mergedProperties, MavenRepositorySystem repositorySystem) { + this.localRepositoryRoot = localRepositoryRoot; + this.offline = offline; + this.mavenLogger = mavenLogger; + this.mergedProperties = mergedProperties; ++ this.repositorySystem = repositorySystem; + } + + // constructor for tests + public MavenContextImpl(File localRepositoryRoot, MavenLogger mavenLogger) { +- this(localRepositoryRoot, false, mavenLogger, new Properties()); ++ this(localRepositoryRoot, false, mavenLogger, new Properties(), null); + } + + @Override +@@ -53,4 +55,8 @@ public class MavenContextImpl implements MavenContext { + return mergedProperties; + } + ++ public MavenRepositorySystem getRepositorySystem() { ++ return repositorySystem; ++ } ++ + } +diff --git a/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenRepositorySystem.java b/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenRepositorySystem.java +new file mode 100644 +index 0000000..965e5cd +--- /dev/null ++++ b/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenRepositorySystem.java +@@ -0,0 +1,19 @@ ++/******************************************************************************* ++ * Copyright (c) 2014 Red Hat Inc. ++ * All rights reserved. This program and the accompanying materials ++ * are made available under the terms of the Eclipse Public License v1.0 ++ * which accompanies this distribution, and is available at ++ * http://www.eclipse.org/legal/epl-v10.html ++ * ++ * Contributors: ++ * Red Hat Inc. - initial API and implementation ++ *******************************************************************************/ ++package org.eclipse.tycho.core.shared; ++ ++import java.io.File; ++ ++public interface MavenRepositorySystem { ++ ++ public File resolve(String gid, String aid, String version, String type, String classifier); ++ ++} +diff --git a/tycho-bundles/org.eclipse.tycho.p2.maven.repository.tests/src/test/java/org/eclipse/tycho/repository/local/LocalArtifactRepositoryP2APITest.java b/tycho-bundles/org.eclipse.tycho.p2.maven.repository.tests/src/test/java/org/eclipse/tycho/repository/local/LocalArtifactRepositoryP2APITest.java +index 7bf376b..781b53f 100644 +--- a/tycho-bundles/org.eclipse.tycho.p2.maven.repository.tests/src/test/java/org/eclipse/tycho/repository/local/LocalArtifactRepositoryP2APITest.java ++++ b/tycho-bundles/org.eclipse.tycho.p2.maven.repository.tests/src/test/java/org/eclipse/tycho/repository/local/LocalArtifactRepositoryP2APITest.java +@@ -53,6 +53,7 @@ import org.eclipse.tycho.repository.p2base.artifact.repository.ArtifactRepositor + import org.eclipse.tycho.repository.streaming.testutil.ProbeArtifactSink; + import org.eclipse.tycho.repository.streaming.testutil.ProbeOutputStream; + import org.eclipse.tycho.repository.streaming.testutil.ProbeRawArtifactSink; ++import org.eclipse.tycho.test.util.MavenRepositorySystemStub; + import org.junit.After; + import org.junit.Before; + import org.junit.Rule; +@@ -114,7 +115,8 @@ public class LocalArtifactRepositoryP2APITest { + @Before + public void initSubject() throws Exception { + temporaryLocalMavenRepo.initContentFromResourceFolder(ResourceUtil.resourceFile("repositories/local")); +- subject = new LocalArtifactRepository(null, temporaryLocalMavenRepo.getLocalRepositoryIndex()); ++ subject = new LocalArtifactRepository(null, temporaryLocalMavenRepo.getLocalRepositoryIndex(), ++ new MavenRepositorySystemStub(temporaryLocalMavenRepo.getLocalRepositoryRoot())); + + testOutputStream = new ProbeOutputStream(); + } +diff --git a/tycho-bundles/org.eclipse.tycho.p2.maven.repository.tests/src/test/java/org/eclipse/tycho/repository/local/LocalMetadataRepositoryTest.java b/tycho-bundles/org.eclipse.tycho.p2.maven.repository.tests/src/test/java/org/eclipse/tycho/repository/local/LocalMetadataRepositoryTest.java +index 1695b0f..52ac568 100644 +--- a/tycho-bundles/org.eclipse.tycho.p2.maven.repository.tests/src/test/java/org/eclipse/tycho/repository/local/LocalMetadataRepositoryTest.java ++++ b/tycho-bundles/org.eclipse.tycho.p2.maven.repository.tests/src/test/java/org/eclipse/tycho/repository/local/LocalMetadataRepositoryTest.java +@@ -30,6 +30,7 @@ import org.eclipse.tycho.p2.repository.LocalRepositoryReader; + import org.eclipse.tycho.p2.repository.RepositoryLayoutHelper; + import org.eclipse.tycho.p2.repository.TychoRepositoryIndex; + import org.eclipse.tycho.repository.local.index.FileBasedTychoRepositoryIndex; ++import org.eclipse.tycho.test.util.MavenRepositorySystemStub; + import org.junit.Assert; + import org.junit.Test; + +@@ -47,7 +48,7 @@ public class LocalMetadataRepositoryTest extends BaseMavenRepositoryTest { + + protected IMetadataRepository loadRepository(File location) throws ProvisionException { + return new LocalMetadataRepository(location.toURI(), createMetadataIndex(location), +- new LocalRepositoryReader(location)); ++ new LocalRepositoryReader(location, new MavenRepositorySystemStub(location))); + } + + private LocalMetadataRepository createRepository(File location) throws ProvisionException { +diff --git a/tycho-bundles/org.eclipse.tycho.p2.maven.repository/src/main/java/org/eclipse/tycho/repository/local/LocalArtifactRepository.java b/tycho-bundles/org.eclipse.tycho.p2.maven.repository/src/main/java/org/eclipse/tycho/repository/local/LocalArtifactRepository.java +index 6e45753..406c1dc 100644 +--- a/tycho-bundles/org.eclipse.tycho.p2.maven.repository/src/main/java/org/eclipse/tycho/repository/local/LocalArtifactRepository.java ++++ b/tycho-bundles/org.eclipse.tycho.p2.maven.repository/src/main/java/org/eclipse/tycho/repository/local/LocalArtifactRepository.java +@@ -23,6 +23,7 @@ import java.util.Set; + import org.eclipse.equinox.p2.core.IProvisioningAgent; + import org.eclipse.equinox.p2.metadata.IArtifactKey; + import org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor; ++import org.eclipse.tycho.core.shared.MavenRepositorySystem; + import org.eclipse.tycho.p2.maven.repository.Activator; + import org.eclipse.tycho.p2.maven.repository.xmlio.ArtifactsIO; + import org.eclipse.tycho.p2.repository.GAV; +@@ -42,15 +43,16 @@ public class LocalArtifactRepository extends ArtifactRepositoryBaseImpl { + +- PublishedBundlesArtifactRepository(File localMavenRepositoryRoot) { ++ private MavenRepositorySystem repositorySystem; ++ ++ PublishedBundlesArtifactRepository(File localMavenRepositoryRoot, MavenRepositorySystem repositorySystem) { + super(null, localMavenRepositoryRoot.toURI(), ArtifactTransferPolicies.forLocalArtifacts()); ++ this.repositorySystem = repositorySystem; + } + + void addPublishedArtifact(IArtifactDescriptor baseDescriptor, IArtifactFacade mavenArtifact) { +@@ -250,7 +255,7 @@ public class TargetPlatformBundlePublisher { + @Override + protected File internalGetArtifactStorageLocation(IArtifactDescriptor descriptor) { + MavenRepositoryCoordinates coord = toInternalDescriptor(descriptor).getMavenCoordinates(); +- LocalRepositoryReader reader = new LocalRepositoryReader(getBaseDir()); ++ LocalRepositoryReader reader = new LocalRepositoryReader(getBaseDir(), repositorySystem); + return reader.getLocalArtifactLocation(coord.getGav(), coord.getClassifier(), coord.getExtensionOrDefault()); + } + +diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/repository/LocalRepositoryP2Indices.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/repository/LocalRepositoryP2Indices.java +index 2122578..5e4a01e 100644 +--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/repository/LocalRepositoryP2Indices.java ++++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/repository/LocalRepositoryP2Indices.java +@@ -13,6 +13,8 @@ package org.eclipse.tycho.p2.repository; + + import java.io.File; + ++import org.eclipse.tycho.core.shared.MavenRepositorySystem; ++ + /** + * This service provides access to the tycho p2 index files of the local maven repository. + */ +@@ -24,4 +26,6 @@ public interface LocalRepositoryP2Indices { + + public File getBasedir(); + ++ public MavenRepositorySystem getRepositorySystem(); ++ + } +diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/repository/LocalRepositoryReader.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/repository/LocalRepositoryReader.java +index 74b8028..1aeb3ac 100644 +--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/repository/LocalRepositoryReader.java ++++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/repository/LocalRepositoryReader.java +@@ -14,55 +14,28 @@ import java.io.File; + import java.lang.reflect.Constructor; + import java.lang.reflect.Method; + ++import org.eclipse.tycho.core.shared.MavenRepositorySystem; ++ + public class LocalRepositoryReader implements RepositoryReader { + + private final File localMavenRepositoryRoot; ++ private final MavenRepositorySystem repositorySystem; + +- public LocalRepositoryReader(File localMavenRepositoryRoot) { ++ public LocalRepositoryReader(File localMavenRepositoryRoot, MavenRepositorySystem repositorySystem) { + this.localMavenRepositoryRoot = localMavenRepositoryRoot; ++ this.repositorySystem = repositorySystem; + } + + @Override + @SuppressWarnings({ "unchecked", "rawtypes" }) + public File getLocalArtifactLocation(GAV gav, String classifier, String extension) { +- File file = new File(localMavenRepositoryRoot, RepositoryLayoutHelper.getRelativePath(gav, classifier, +- extension)); +- // In Fedora the artifact may be in an XMvn-defined repository location (not in reactor cache) +- if (!file.exists()) { +- try { +- // Create Plexus config +- Class pcclazz = Class.forName("org.codehaus.plexus.ContainerConfiguration"); +- Object conf = Class.forName("org.codehaus.plexus.DefaultContainerConfiguration").newInstance(); +- pcclazz.getMethod("setAutoWiring", boolean.class).invoke(conf, true); +- pcclazz.getMethod("setClassPathScanning", String.class).invoke(conf, "index"); +- +- // Use plexus container to lookup the reader +- Class pclazz = Class.forName("org.codehaus.plexus.DefaultPlexusContainer"); +- Object plexus = pclazz.getConstructor(pcclazz).newInstance(conf); +- +- // Retrieve the workspace reader from the plexus container +- Method mLookup = pclazz.getMethod("lookup", String.class, String.class); +- Object reader = mLookup.invoke(plexus, "org.eclipse.aether.repository.WorkspaceReader", "ide"); +- +- // Create an Aether Artifact based on GAV, classifier, and extension +- Class iartclazz = Class.forName("org.eclipse.aether.artifact.Artifact"); +- Class artclazz = Class.forName("org.eclipse.aether.artifact.DefaultArtifact"); +- Constructor cNew = artclazz.getConstructor(String.class, String.class, String.class, String.class, +- String.class); +- Object artifact = cNew.newInstance(gav.getGroupId(), gav.getArtifactId(), classifier, extension, +- gav.getVersion()); +- +- // Invoke "findArtifact" method of the workspace reader on the artifact +- Method mfindArtifact = reader.getClass().getMethod("findArtifact", iartclazz); +- File newFile = (File) mfindArtifact.invoke(reader, artifact); +- if (newFile != null) { +- file = newFile; +- } +- } catch (Exception e) { +- e.printStackTrace(); ++ File ret = new File(localMavenRepositoryRoot, RepositoryLayoutHelper.getRelativePath(gav, classifier, extension)); ++ if (repositorySystem != null) { ++ File tmp = repositorySystem.resolve(gav.getGroupId(), gav.getArtifactId(), gav.getVersion(), extension, classifier); ++ if (tmp != null) { ++ ret = tmp; + } + } +- return file; +- ++ return ret; + } + } +diff --git a/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/repository/local/testutil/TemporaryLocalMavenRepository.java b/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/repository/local/testutil/TemporaryLocalMavenRepository.java +index 5c0bcb8..3d05393 100644 +--- a/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/repository/local/testutil/TemporaryLocalMavenRepository.java ++++ b/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/repository/local/testutil/TemporaryLocalMavenRepository.java +@@ -14,9 +14,11 @@ import java.io.File; + import java.io.IOException; + + import org.eclipse.equinox.internal.p2.core.helpers.FileUtils; ++import org.eclipse.tycho.core.shared.MavenRepositorySystem; + import org.eclipse.tycho.p2.repository.LocalRepositoryP2Indices; + import org.eclipse.tycho.repository.local.LocalArtifactRepository; + import org.eclipse.tycho.repository.local.index.LocalRepositoryP2IndicesImpl; ++import org.eclipse.tycho.test.util.MavenRepositorySystemStub; + import org.eclipse.tycho.test.util.NoopFileLockService; + import org.junit.Rule; + import org.junit.rules.ExternalResource; +@@ -72,7 +74,7 @@ public class TemporaryLocalMavenRepository extends ExternalResource { + + public LocalArtifactRepository getLocalArtifactRepository() { + if (repo == null) { +- repo = new LocalArtifactRepository(null, getLocalRepositoryIndex()); ++ repo = new LocalArtifactRepository(null, getLocalRepositoryIndex(), new MavenRepositorySystemStub(getLocalRepositoryRoot())); + } + return repo; + } +diff --git a/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/test/util/MavenRepositorySystemStub.java b/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/test/util/MavenRepositorySystemStub.java +new file mode 100644 +index 0000000..7e020da +--- /dev/null ++++ b/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/test/util/MavenRepositorySystemStub.java +@@ -0,0 +1,30 @@ ++/******************************************************************************* ++ * Copyright (c) 2014 Red Hat Inc. ++ * All rights reserved. This program and the accompanying materials ++ * are made available under the terms of the Eclipse Public License v1.0 ++ * which accompanies this distribution, and is available at ++ * http://www.eclipse.org/legal/epl-v10.html ++ * ++ * Contributors: ++ * Red Hat Inc. - initial API and implementation ++ *******************************************************************************/ ++package org.eclipse.tycho.test.util; ++ ++import java.io.File; ++ ++import org.eclipse.tycho.core.shared.MavenRepositorySystem; ++import org.eclipse.tycho.p2.repository.RepositoryLayoutHelper; ++ ++public class MavenRepositorySystemStub implements MavenRepositorySystem { ++ ++ private File localMavenRepositoryRoot; ++ ++ public MavenRepositorySystemStub(File localMavenRepositoryRoot) { ++ this.localMavenRepositoryRoot = localMavenRepositoryRoot; ++ } ++ ++ public File resolve(String gid, String aid, String version, String type, String classifier) { ++ return new File(localMavenRepositoryRoot, RepositoryLayoutHelper.getRelativePath(gid, aid, version, classifier, ++ type)); ++ } ++} +diff --git a/tycho-core/src/main/java/org/eclipse/tycho/osgi/adapters/MavenRepositorySystemAdapter.java b/tycho-core/src/main/java/org/eclipse/tycho/osgi/adapters/MavenRepositorySystemAdapter.java +new file mode 100644 +index 0000000..e1d46fa +--- /dev/null ++++ b/tycho-core/src/main/java/org/eclipse/tycho/osgi/adapters/MavenRepositorySystemAdapter.java +@@ -0,0 +1,37 @@ ++/******************************************************************************* ++ * Copyright (c) 2014 Red Hat Inc. ++ * All rights reserved. This program and the accompanying materials ++ * are made available under the terms of the Eclipse Public License v1.0 ++ * which accompanies this distribution, and is available at ++ * http://www.eclipse.org/legal/epl-v10.html ++ * ++ * Contributors: ++ * Red Hat Inc. - initial API and implementation ++ *******************************************************************************/ ++package org.eclipse.tycho.osgi.adapters; ++ ++import java.io.File; ++ ++import org.apache.maven.artifact.Artifact; ++import org.apache.maven.artifact.resolver.ArtifactResolutionRequest; ++import org.apache.maven.artifact.resolver.ArtifactResolutionResult; ++import org.apache.maven.repository.RepositorySystem; ++import org.eclipse.tycho.core.shared.MavenRepositorySystem; ++ ++public class MavenRepositorySystemAdapter implements MavenRepositorySystem { ++ ++ private RepositorySystem repoSystem; ++ ++ public MavenRepositorySystemAdapter(RepositorySystem repoSystem) { ++ this.repoSystem = repoSystem; ++ } ++ ++ public File resolve(String gid, String aid, String version, String type, String classifier) { ++ ArtifactResolutionRequest req = new ArtifactResolutionRequest(); ++ Artifact art = repoSystem.createArtifactWithClassifier(gid, aid, version, type, classifier); ++ req.setArtifact(art); ++ ArtifactResolutionResult res = repoSystem.resolve(req); ++ return res.getArtifacts().size() > 0 ? res.getArtifacts().toArray(new Artifact[0])[0].getFile() : null; ++ } ++ ++} +diff --git a/tycho-core/src/main/java/org/eclipse/tycho/osgi/configuration/MavenContextConfigurator.java b/tycho-core/src/main/java/org/eclipse/tycho/osgi/configuration/MavenContextConfigurator.java +index e5837e2..137dcb1 100644 +--- a/tycho-core/src/main/java/org/eclipse/tycho/osgi/configuration/MavenContextConfigurator.java ++++ b/tycho-core/src/main/java/org/eclipse/tycho/osgi/configuration/MavenContextConfigurator.java +@@ -16,6 +16,7 @@ import java.util.Properties; + + import org.apache.maven.execution.MavenSession; + import org.apache.maven.plugin.LegacySupport; ++import org.apache.maven.repository.RepositorySystem; + import org.apache.maven.settings.Profile; + import org.apache.maven.settings.Settings; + import org.codehaus.plexus.component.annotations.Component; +@@ -26,6 +27,7 @@ import org.eclipse.sisu.equinox.embedder.EquinoxLifecycleListener; + import org.eclipse.tycho.core.shared.MavenContext; + import org.eclipse.tycho.core.shared.MavenContextImpl; + import org.eclipse.tycho.osgi.adapters.MavenLoggerAdapter; ++import org.eclipse.tycho.osgi.adapters.MavenRepositorySystemAdapter; + + @Component(role = EquinoxLifecycleListener.class, hint = "MavenContextConfigurator") + public class MavenContextConfigurator extends EquinoxLifecycleListener { +@@ -36,13 +38,17 @@ public class MavenContextConfigurator extends EquinoxLifecycleListener { + @Requirement + private LegacySupport context; + ++ @Requirement ++ private RepositorySystem repositorySystem; ++ + @Override + public void afterFrameworkStarted(EmbeddedEquinox framework) { + MavenSession session = context.getSession(); + File localRepoRoot = new File(session.getLocalRepository().getBasedir()); + MavenLoggerAdapter mavenLogger = new MavenLoggerAdapter(logger, false); + Properties globalProps = getGlobalProperties(session); +- MavenContext mavenContext = new MavenContextImpl(localRepoRoot, session.isOffline(), mavenLogger, globalProps); ++ MavenContext mavenContext = new MavenContextImpl(localRepoRoot, session.isOffline(), mavenLogger, globalProps, ++ new MavenRepositorySystemAdapter(repositorySystem)); + framework.registerService(MavenContext.class, mavenContext); + } + +-- +2.20.1 + diff --git a/tycho.spec b/tycho.spec index 0bfabd7..765dcb2 100644 --- a/tycho.spec +++ b/tycho.spec @@ -8,7 +8,7 @@ %define __requires_exclude osgi* Name: tycho Version: 1.3.0 -Release: 2 +Release: 3 Summary: Plugins and extensions for building Eclipse plugins and OSGI bundles with Maven License: ASL 2.0 and EPL-1.0 URL: http://eclipse.org/tycho @@ -28,6 +28,8 @@ Patch1: 0002-Bug-543850-Update-artifactcomparator-asm-dep-to-7.0.pa # Port to latest version of Mockito 2.x Patch2: 0003-Port-to-latest-versio-of-Mockito.patch Patch3: 0004-Implement-a-custom-resolver-for-Tycho-in-local-mode.patch +Patch4: 0005-Fix-build-fail.patch +Patch5: 0006-Tycho-should-always-delegate-artifact-resolution-to-.patch # Upstream Eclipse no longer supports non-64bit arches ExcludeArch: s390 %{arm} %{ix86} BuildArch: noarch @@ -111,6 +113,8 @@ mv fedoraproject-p2-%{fp_p2_git_tag} fedoraproject-p2 %patch1 -p1 %patch2 -p1 %patch3 -p1 +%patch4 -p1 +%patch5 -p1 %pom_remove_plugin :maven-site-plugin %if %{without junit5} %pom_disable_module org.eclipse.tycho.surefire.junit5 tycho-surefire @@ -251,6 +255,9 @@ ln -s %{_javadir}/tycho/org.fedoraproject.p2.jar %{buildroot}%{xmvn_libdir}/inst %files javadoc -f .mfiles-javadoc %changelog +* Sun Sep 13 2020 yanan li - 1.3.0-3 +- fix build fail + * Sat Sep 05 2020 maminjie - 1.3.0-2 - support local mode