diff --git a/.gitignore b/.gitignore index e69de29..ffaed2b 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,17 @@ +/maven-repo.tar.bz2 +/org.eclipse.tycho-* +/tycho-*.xz +/tycho-*.bz2 +/tycho-*.gz +/tycho-*/ +maven-repo.tar.xz +*.src.rpm +/noarch +/.project +/fedoraproject-p2-*.tar.xz +/fedoraproject-p2-*.tar.gz +/eclipse-bootstrap-neon.tar.xz +/eclipse-bootstrap-oxygen.tar.xz +/eclipse-bootstrap-photon.tar.xz +/eclipse-bootstrap-2019-12.tar.xz +/eclipse-bootstrap-2020-09.tar.xz diff --git a/0001-Fix-the-Tycho-build-to-work-on-Fedora.patch b/0001-Fix-the-Tycho-build-to-work-on-Fedora.patch new file mode 100644 index 0000000..fadc8ba --- /dev/null +++ b/0001-Fix-the-Tycho-build-to-work-on-Fedora.patch @@ -0,0 +1,53 @@ +From 7c8407e05ff8426af7a2b67d4101c9872b429d6f Mon Sep 17 00:00:00 2001 +From: Roland Grunberg +Date: Tue, 12 Jun 2012 09:56:38 -0400 +Subject: [PATCH 1/7] Fix the Tycho build to work on Fedora. + +Minor fixes of limited scope needed to have Tycho building on Fedora. + +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 3cba4662..f7337742 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 5b8a92d5..200030e8 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 +@@ -113,12 +113,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.28.0 + diff --git a/0002-Implement-a-custom-resolver-for-Tycho-in-local-mode.patch b/0002-Implement-a-custom-resolver-for-Tycho-in-local-mode.patch new file mode 100644 index 0000000..82e3071 --- /dev/null +++ b/0002-Implement-a-custom-resolver-for-Tycho-in-local-mode.patch @@ -0,0 +1,704 @@ +From a179fbb73edb21d245fb183ce2cfb9e938699125 Mon Sep 17 00:00:00 2001 +From: Roland Grunberg +Date: Tue, 12 Jun 2012 10:38:51 -0400 +Subject: [PATCH 2/7] Implement a custom resolver for Tycho in local mode. + +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. + +Use fedoraproject-p2 to resolve bundles from their system location. + +Relax constraints for bundles used in Tycho's Equinox runtime. + +Since Fedora 17, we need an Execution Environment of at least JavaSE-1.6 +for Eclipse bundles. Eclipse Juno platform bundles depend on +javax.annotation. In Fedora this is provided by geronimo-annotation, but +has a dependency on javax.lang.model (since 1.6). + +Use the defined target environments in local mode when the property +tycho.local.keepTarget is set. + +In situations where Tycho must resolve maven artifacts, upstream's +implementation only looks in the reactor cache. In Fedora, maven +artifacts may be located on the system using repository layouts +understood by XMvn. Therefore, when an artifact is not found in the +reactor cache, resolution should be attempted using the XMvn Resolver. + +Upstream/Fedora Tycho differ in the kind of OSGi Runtime used +(org.eclipse.tycho:tycho-bundles-external:zip) so use separate location +for our runtime (fedora-eclipse) to avoid collisions. + +Change-Id: Ia1ece07ece2412bc4a88901631f3f651ad2b634b +--- + .../internal/DefaultEquinoxEmbedder.java | 13 ++++-- + .../remote/RemoteRepositoryCacheManager.java | 11 +++++ + .../p2/target/TargetDefinitionResolver.java | 11 ++++- + .../target/TargetPlatformBundlePublisher.java | 20 +++------ + .../p2/target/TargetPlatformFactoryImpl.java | 45 +++++++++++++++++-- + .../p2/repository/LocalRepositoryReader.java | 41 ++++++++++++++++- + .../TargetPlatformConfigurationStub.java | 6 ++- + .../tycho-bundles-external.product | 1 + + .../tycho/core/locking/FileLockerImpl.java | 26 ++++++++--- + .../maven/TychoMavenLifecycleParticipant.java | 21 +++++++-- + .../core/osgitools/AbstractTychoProject.java | 37 +++++++++++++++ + .../core/osgitools/OsgiBundleProject.java | 9 +++- + ...aultTargetPlatformConfigurationReader.java | 6 ++- + .../osgi/runtime/TychoOsgiRuntimeLocator.java | 33 +++++++++----- + tycho-p2/tycho-p2-facade/pom.xml | 5 +++ + .../p2/resolver/P2DependencyResolver.java | 9 ++++ + 16 files changed, 246 insertions(+), 48 deletions(-) + +diff --git a/sisu-equinox/sisu-equinox-embedder/src/main/java/org/eclipse/sisu/equinox/embedder/internal/DefaultEquinoxEmbedder.java b/sisu-equinox/sisu-equinox-embedder/src/main/java/org/eclipse/sisu/equinox/embedder/internal/DefaultEquinoxEmbedder.java +index f3d38198..f51d258b 100644 +--- a/sisu-equinox/sisu-equinox-embedder/src/main/java/org/eclipse/sisu/equinox/embedder/internal/DefaultEquinoxEmbedder.java ++++ b/sisu-equinox/sisu-equinox-embedder/src/main/java/org/eclipse/sisu/equinox/embedder/internal/DefaultEquinoxEmbedder.java +@@ -202,7 +202,7 @@ public class DefaultEquinoxEmbedder extends AbstractLogEnabled + private void activateBundlesInWorkingOrder() { + // activate bundles which need to do work in their respective activator; stick to a working order (cf. bug 359787) + // TODO this order should come from the EquinoxRuntimeLocator +- tryActivateBundle("org.apache.felix.scr"); ++ tryActivateBundle("org.apache.felix.scr"); + tryActivateBundle("org.eclipse.equinox.ds"); + tryActivateBundle("org.eclipse.equinox.registry"); + tryActivateBundle("org.eclipse.core.net"); +@@ -239,7 +239,14 @@ public class DefaultEquinoxEmbedder extends AbstractLogEnabled + if (verIdx > 0) { + bundles.append(name.substring(0, verIdx)); + } else { +- throw new EquinoxEmbedderException("File name doesn't match expected pattern: " + file); ++ // In Fedora, NAME_VERSION.QUALIFIER.jar is too fragile. ++ // Let's also accept NAME.jar ++ verIdx = name.lastIndexOf(".jar"); ++ if (verIdx > 0) { ++ bundles.append(name.substring(0, verIdx)); ++ } else { ++ throw new EquinoxEmbedderException("File name doesn't match expected pattern: " + file); ++ } + } + } + } +@@ -247,7 +254,7 @@ public class DefaultEquinoxEmbedder extends AbstractLogEnabled + } + + protected boolean isFrameworkBundle(File file) { +- return file.getName().startsWith("org.eclipse.osgi_"); ++ return file.getName().startsWith("org.eclipse.osgi_") || file.getName().equals("org.eclipse.osgi.jar"); + } + + String getReferenceUrl(File file) { +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 1f233e11..744e7dd4 100644 +--- 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 +@@ -12,14 +12,18 @@ package org.eclipse.tycho.p2.remote; + + import java.io.File; + import java.io.IOException; ++import java.net.MalformedURLException; + import java.net.URI; ++import java.net.URL; + + import org.eclipse.core.runtime.IProgressMonitor; + import org.eclipse.core.runtime.IStatus; + import org.eclipse.core.runtime.Status; + import org.eclipse.equinox.internal.p2.repository.CacheManager; ++import org.eclipse.equinox.internal.p2.repository.Messages; + import org.eclipse.equinox.internal.p2.repository.Transport; + import org.eclipse.equinox.p2.core.ProvisionException; ++import org.eclipse.osgi.util.NLS; + import org.eclipse.tycho.core.shared.MavenContext; + import org.eclipse.tycho.core.shared.MavenLogger; + import org.eclipse.tycho.p2.impl.Activator; +@@ -51,6 +55,13 @@ class RemoteRepositoryCacheManager extends CacheManager { + @Override + public File createCache(URI repositoryLocation, String prefix, IProgressMonitor monitor) + throws IOException, ProvisionException { ++ try { ++ new URL(repositoryLocation.toASCIIString()); ++ } catch (MalformedURLException e) { ++ throw new ProvisionException(new Status(IStatus.ERROR, ++ org.eclipse.equinox.internal.p2.repository.Activator.ID, ProvisionException.REPOSITORY_NOT_FOUND, ++ NLS.bind(Messages.CacheManager_CannotLoadNonUrlLocation, repositoryLocation), null)); ++ } + File cacheFile = getCache(repositoryLocation, prefix); + if (offline) { + if (cacheFile != null) { +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 23b9e640..9d164661 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 java.util.regex.Matcher; + import java.util.regex.Pattern; + + import org.eclipse.core.runtime.IProgressMonitor; ++import org.eclipse.core.runtime.URIUtil; + import org.eclipse.equinox.p2.core.IProvisioningAgent; + import org.eclipse.equinox.p2.metadata.IArtifactKey; + import org.eclipse.equinox.p2.metadata.IInstallableUnit; +@@ -136,8 +137,14 @@ public final class TargetDefinitionResolver { + } else { + key = location.normalize().toASCIIString(); + } +- locations.add(uriRepositories.computeIfAbsent(key, +- s -> new URITargetDefinitionContent(provisioningAgent, location, id))); ++ // We cannot resolve a non-file URI in local mode ++ if ((System.getProperty("TYCHO_MVN_LOCAL") == null ++ && System.getProperty("TYCHO_MVN_RPMBUILD") == null) ++ || URIUtil.isFileURI(repository.getLocation()) ++ || "fedora".equals(repository.getLocation().getScheme())) { ++ locations.add(uriRepositories.computeIfAbsent(key, ++ s -> new URITargetDefinitionContent(provisioningAgent, location, id))); ++ } + } + IQueryable locationUnits = QueryUtil.compoundQueryable(locations); + installableUnitResolver.addLocation((InstallableUnitLocation) locationDefinition, locationUnits); +diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetPlatformBundlePublisher.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetPlatformBundlePublisher.java +index 2c2f29a4..63794cad 100644 +--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetPlatformBundlePublisher.java ++++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetPlatformBundlePublisher.java +@@ -38,6 +38,7 @@ import org.eclipse.tycho.core.shared.MavenLogger; + import org.eclipse.tycho.p2.impl.publisher.MavenPropertiesAdvice; + import org.eclipse.tycho.p2.impl.publisher.repo.TransientArtifactRepository; + import org.eclipse.tycho.p2.metadata.IArtifactFacade; ++import org.eclipse.tycho.p2.repository.LocalRepositoryReader; + import org.eclipse.tycho.p2.repository.MavenRepositoryCoordinates; + import org.eclipse.tycho.repository.local.GAVArtifactDescriptor; + import org.eclipse.tycho.repository.p2base.artifact.provider.IRawArtifactFileProvider; +@@ -385,22 +386,9 @@ public class TargetPlatformBundlePublisher { + GAVArtifactDescriptor descriptorForRepository = new GAVArtifactDescriptor(baseDescriptor, + repositoryCoordinates); + +- File requiredArtifactLocation = new File(getBaseDir(), +- descriptorForRepository.getMavenCoordinates().getLocalRepositoryPath()); +- File actualArtifactLocation = mavenArtifact.getLocation(); +- if (!equivalentPaths(requiredArtifactLocation, actualArtifactLocation)) { +- throw new AssertionFailedException( +- "The Maven artifact to be added to the target platform is not stored at the required location on disk: required \"" +- + requiredArtifactLocation + "\" but was \"" + actualArtifactLocation + "\""); +- } +- + internalAddInternalDescriptor(descriptorForRepository); + } + +- private boolean equivalentPaths(File path, File otherPath) { +- return path.equals(otherPath); +- } +- + @Override + protected GAVArtifactDescriptor getInternalDescriptorForAdding(IArtifactDescriptor descriptor) { + // artifacts are only added via the dedicated method +@@ -426,8 +414,10 @@ public class TargetPlatformBundlePublisher { + + @Override + protected File internalGetArtifactStorageLocation(IArtifactDescriptor descriptor) { +- String relativePath = toInternalDescriptor(descriptor).getMavenCoordinates().getLocalRepositoryPath(); +- return new File(getBaseDir(), relativePath); ++ MavenRepositoryCoordinates coord = toInternalDescriptor(descriptor).getMavenCoordinates(); ++ LocalRepositoryReader reader = new LocalRepositoryReader(getBaseDir()); ++ return reader.getLocalArtifactLocation(coord.getGav(), coord.getClassifier(), ++ coord.getExtensionOrDefault()); + } + + private File getBaseDir() { +diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetPlatformFactoryImpl.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetPlatformFactoryImpl.java +index a909caf7..fed19448 100644 +--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetPlatformFactoryImpl.java ++++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.impl/src/main/java/org/eclipse/tycho/p2/target/TargetPlatformFactoryImpl.java +@@ -35,6 +35,9 @@ 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; ++import org.eclipse.equinox.p2.metadata.expression.ExpressionUtil; ++import org.eclipse.equinox.p2.metadata.expression.IExpression; ++import org.eclipse.equinox.p2.query.IQuery; + import org.eclipse.equinox.p2.query.IQueryResult; + import org.eclipse.equinox.p2.query.QueryUtil; + import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository; +@@ -277,9 +280,43 @@ public class TargetPlatformFactoryImpl implements TargetPlatformFactory { + metadataRepositories.add(localMetadataRepository); + } + +- for (IMetadataRepository repository : metadataRepositories) { +- IQueryResult matches = repository.query(QueryUtil.ALL_UNITS, monitor); +- result.addAll(matches.toUnmodifiableSet()); ++ if (System.getProperty("TYCHO_MVN_LOCAL") != null) { ++ final IExpression notmatchIU_ID = ExpressionUtil.parse("id != $0"); ++ Set fedoraRepos = new HashSet(); ++ ++ // Sanity check even though the repo we want should be at index 1 ++ for (IMetadataRepository repository : metadataRepositories) { ++ if ("fedora".equals(repository.getLocation().getScheme())) { ++ fedoraRepos.add(repository); ++ } ++ } ++ ++ IQuery noLocalIUs = QueryUtil.createIUAnyQuery(); ++ ++ // Create a conjunction query that negates all IUs on the local system ++ for (IMetadataRepository repo : fedoraRepos) { ++ for (IInstallableUnit unit : repo.query(QueryUtil.ALL_UNITS, null).toUnmodifiableSet()) { ++ noLocalIUs = QueryUtil.createCompoundQuery(noLocalIUs, ++ QueryUtil.createMatchQuery(notmatchIU_ID, unit.getId()), true); ++ } ++ } ++ ++ for (IMetadataRepository repository : metadataRepositories) { ++ IQueryResult matches; ++ if ("fedora".equals(repository.getLocation().getScheme())) { ++ matches = repository.query(QueryUtil.ALL_UNITS, monitor); ++ } else { ++ // Don't collect any remote IUs that can be found on the system ++ // This will favour IUs in the system local p2 repository ++ matches = repository.query(noLocalIUs, monitor); ++ } ++ result.addAll(matches.toUnmodifiableSet()); ++ } ++ } else { ++ for (IMetadataRepository repository : metadataRepositories) { ++ IQueryResult matches = repository.query(QueryUtil.ALL_UNITS, monitor); ++ result.addAll(matches.toUnmodifiableSet()); ++ } + } + + result.addAll(pomDependenciesContent.gatherMavenInstallableUnits()); +@@ -333,7 +370,7 @@ public class TargetPlatformFactoryImpl implements TargetPlatformFactory { + List artifactRepositories = new ArrayList<>(); + + for (MavenRepositoryLocation location : mavenRepositories) { +- if (!offline || URIUtil.isFileURI(location.getURL())) { ++ if (!offline || URIUtil.isFileURI(location.getURL()) || "fedora".equals(location.getURL().getScheme())) { + artifactRepositories.add(new LazyArtifactRepository(remoteAgent, location.getURL(), + RepositoryArtifactProvider::loadRepository)); + } +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 e05f8715..03900e27 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 +@@ -11,6 +11,8 @@ + package org.eclipse.tycho.p2.repository; + + import java.io.File; ++import java.lang.reflect.Constructor; ++import java.lang.reflect.Method; + + public class LocalRepositoryReader implements RepositoryReader { + +@@ -22,7 +24,44 @@ public class LocalRepositoryReader implements RepositoryReader { + + @Override + public File getLocalArtifactLocation(GAV gav, String classifier, String extension) { +- return new File(localMavenRepositoryRoot, RepositoryLayoutHelper.getRelativePath(gav, classifier, 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(); ++ } ++ } ++ return file; + } + + } +diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/target/facade/TargetPlatformConfigurationStub.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/target/facade/TargetPlatformConfigurationStub.java +index 272db570..70897e4a 100644 +--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/target/facade/TargetPlatformConfigurationStub.java ++++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/target/facade/TargetPlatformConfigurationStub.java +@@ -59,7 +59,11 @@ public class TargetPlatformConfigurationStub { + } + + public void addP2Repository(MavenRepositoryLocation location) { +- this.repositories.add(location); ++ // We cannot resolve a non-file URI in local mode while offline ++ if (System.getProperty("TYCHO_MVN_RPMBUILD") == null || "file".equalsIgnoreCase(location.getURL().getScheme()) ++ || "fedora".equalsIgnoreCase(location.getURL().getScheme())) { ++ this.repositories.add(location); ++ } + } + + // convenience method for tests +diff --git a/tycho-bundles/tycho-bundles-external/tycho-bundles-external.product b/tycho-bundles/tycho-bundles-external/tycho-bundles-external.product +index 7e3d5fbe..b146c08f 100644 +--- a/tycho-bundles/tycho-bundles-external/tycho-bundles-external.product ++++ b/tycho-bundles/tycho-bundles-external/tycho-bundles-external.product +@@ -77,6 +77,7 @@ + + + ++ + + + +diff --git a/tycho-core/src/main/java/org/eclipse/tycho/core/locking/FileLockerImpl.java b/tycho-core/src/main/java/org/eclipse/tycho/core/locking/FileLockerImpl.java +index 99405613..9a98a400 100644 +--- a/tycho-core/src/main/java/org/eclipse/tycho/core/locking/FileLockerImpl.java ++++ b/tycho-core/src/main/java/org/eclipse/tycho/core/locking/FileLockerImpl.java +@@ -27,20 +27,34 @@ public class FileLockerImpl implements FileLocker { + final File lockMarkerFile; + + public FileLockerImpl(File file, Location anyLocation) { ++ File lockFileCandidate = null; + try { + if (file.isDirectory()) { +- this.lockMarkerFile = new File(file, LOCKFILE_SUFFIX).getCanonicalFile(); ++ lockFileCandidate = new File(file, LOCKFILE_SUFFIX).getCanonicalFile(); + } else { +- this.lockMarkerFile = new File(file.getParentFile(), file.getName() + LOCKFILE_SUFFIX) +- .getCanonicalFile(); ++ lockFileCandidate = new File(file.getParentFile(), file.getName() + LOCKFILE_SUFFIX).getCanonicalFile(); + } +- if (lockMarkerFile.isDirectory()) { +- throw new RuntimeException("Lock marker file " + lockMarkerFile + " already exists and is a directory"); ++ if (lockFileCandidate.isDirectory()) { ++ throw new RuntimeException( ++ "Lock marker file " + lockFileCandidate + " already exists and is a directory"); + } +- File parentDir = lockMarkerFile.getParentFile(); ++ File parentDir = lockFileCandidate.getParentFile(); + if (!parentDir.isDirectory() && !parentDir.mkdirs()) { + throw new RuntimeException("Could not create parent directory " + parentDir + " of lock marker file"); + } ++ ++ String baseDir = System.getProperty("user.dir"); ++ String reactorCache = baseDir + "/.m2/"; ++ // In Fedora we can only assume reactor cache is safe for read/write. ++ if (!lockFileCandidate.getAbsolutePath().startsWith(reactorCache)) { ++ String lockFileDir = reactorCache + LOCKFILE_SUFFIX; ++ // If the file is located within baseDir, no need to repeat ++ String lockFileName = file.getAbsolutePath().replace(baseDir, "").replace("/", "-").replaceFirst("-", ++ "/") + LOCKFILE_SUFFIX; ++ lockFileCandidate = new File(lockFileDir, lockFileName); ++ } ++ ++ this.lockMarkerFile = lockFileCandidate; + this.lockFileLocation = anyLocation.createLocation(null, null, false); + this.lockFileLocation.set(lockMarkerFile.toURL(), false, lockMarkerFile.getAbsolutePath()); + } catch (MalformedURLException e) { +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 f7337742..8ca51b1e 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 +@@ -30,6 +30,7 @@ import org.apache.maven.project.MavenProject; + import org.codehaus.plexus.PlexusContainer; + import org.codehaus.plexus.component.annotations.Component; + import org.codehaus.plexus.component.annotations.Requirement; ++import org.codehaus.plexus.component.repository.exception.ComponentLookupException; + import org.codehaus.plexus.logging.Logger; + import org.eclipse.tycho.ReactorProject; + import org.eclipse.tycho.core.osgitools.BundleReader; +@@ -86,6 +87,18 @@ public class TychoMavenLifecycleParticipant extends AbstractMavenLifecyclePartic + + configureComponents(session); + ++ try { ++ if (plexus.lookup("org.fedoraproject.xmvn.resolver.Resolver") != null) { ++ if (session.isOffline()) { ++ System.setProperty("TYCHO_MVN_RPMBUILD", ""); ++ } else { ++ System.setProperty("TYCHO_MVN_LOCAL", ""); ++ } ++ } ++ } catch (ComponentLookupException e) { ++ // No XMvn (Upstream Maven in use) ++ } ++ + for (MavenProject project : projects) { + resolver.setupProject(session, project, DefaultReactorProject.adapt(project)); + } +@@ -118,8 +131,8 @@ public class TychoMavenLifecycleParticipant extends AbstractMavenLifecyclePartic + if (version == null) { + continue; + } +- log.debug(TYCHO_GROUPID + ":" + plugin.getArtifactId() + ":" + version + " configured in " +- + project); ++ log.debug( ++ TYCHO_GROUPID + ":" + plugin.getArtifactId() + ":" + version + " configured in " + project); + Set projectSet = versionToProjectsMap.get(version); + if (projectSet == null) { + projectSet = new LinkedHashSet<>(); +@@ -152,8 +165,8 @@ public class TychoMavenLifecycleParticipant extends AbstractMavenLifecyclePartic + for (MavenProject project : projects) { + File basedir = project.getBasedir(); + if (baseDirs.contains(basedir)) { +- throw new MavenExecutionException("Multiple modules within the same basedir are not supported: " +- + basedir, project.getFile()); ++ throw new MavenExecutionException( ++ "Multiple modules within the same basedir are not supported: " + basedir, project.getFile()); + } else { + baseDirs.add(basedir); + } +diff --git a/tycho-core/src/main/java/org/eclipse/tycho/core/osgitools/AbstractTychoProject.java b/tycho-core/src/main/java/org/eclipse/tycho/core/osgitools/AbstractTychoProject.java +index b53a889a..7ea21770 100644 +--- a/tycho-core/src/main/java/org/eclipse/tycho/core/osgitools/AbstractTychoProject.java ++++ b/tycho-core/src/main/java/org/eclipse/tycho/core/osgitools/AbstractTychoProject.java +@@ -15,12 +15,18 @@ import java.util.Objects; + + import org.apache.maven.execution.MavenSession; + import org.apache.maven.project.MavenProject; ++import org.apache.maven.toolchain.ToolchainManager; ++import org.codehaus.plexus.component.annotations.Requirement; + import org.codehaus.plexus.logging.AbstractLogEnabled; ++import org.codehaus.plexus.logging.Logger; + import org.eclipse.tycho.artifacts.DependencyArtifacts; + import org.eclipse.tycho.core.TargetPlatformConfiguration; + import org.eclipse.tycho.core.TychoConstants; + import org.eclipse.tycho.core.TychoProject; ++import org.eclipse.tycho.core.ee.ExecutionEnvironmentUtils; + import org.eclipse.tycho.core.ee.TargetDefinitionFile; ++import org.eclipse.tycho.core.ee.UnknownEnvironmentException; ++import org.eclipse.tycho.core.ee.shared.ExecutionEnvironment; + import org.eclipse.tycho.core.ee.shared.ExecutionEnvironmentConfiguration; + import org.eclipse.tycho.core.osgitools.targetplatform.LocalDependencyResolver; + import org.eclipse.tycho.core.osgitools.targetplatform.MultiEnvironmentDependencyArtifacts; +@@ -30,6 +36,12 @@ import org.eclipse.tycho.p2.target.facade.TargetDefinition; + + public abstract class AbstractTychoProject extends AbstractLogEnabled implements TychoProject { + ++ @Requirement ++ private Logger logger; ++ ++ @Requirement ++ private ToolchainManager toolchainManager; ++ + @Override + public DependencyArtifacts getDependencyArtifacts(MavenProject project) { + return TychoProjectUtils.getDependencyArtifacts(project); +@@ -98,6 +110,8 @@ public abstract class AbstractTychoProject extends AbstractLogEnabled implements + + String configuredForcedProfile = tpConfiguration.getExecutionEnvironment(); + if (configuredForcedProfile != null) { ++ configuredForcedProfile = overrideToAtLeastJavaSE16(configuredForcedProfile, toolchainManager, mavenSession, ++ logger); + sink.overrideProfileConfiguration(configuredForcedProfile, + "target-platform-configuration "); + } else { +@@ -112,9 +126,32 @@ public abstract class AbstractTychoProject extends AbstractLogEnabled implements + + String configuredDefaultProfile = tpConfiguration.getExecutionEnvironmentDefault(); + if (configuredDefaultProfile != null) { ++ configuredDefaultProfile = overrideToAtLeastJavaSE16(configuredDefaultProfile, toolchainManager, ++ mavenSession, logger); + sink.setProfileConfiguration(configuredDefaultProfile, + "target-platform-configuration "); + } + } + ++ public String overrideToAtLeastJavaSE16(String profile, ToolchainManager toolchainManager, MavenSession session, ++ Logger logger) { ++ try { ++ ExecutionEnvironment ee = ExecutionEnvironmentUtils.getExecutionEnvironment(profile, toolchainManager, ++ session, logger); ++ ++ if (System.getProperty("TYCHO_MVN_LOCAL") != null || System.getProperty("TYCHO_MVN_RPMBUILD") != null) { ++ // EE must be at least JavaSE-1.6 ++ final ExecutionEnvironment javaSE16 = ExecutionEnvironmentUtils.getExecutionEnvironment("JavaSE-1.6", ++ toolchainManager, session, logger); ++ if (!ee.isCompatibleCompilerTargetLevel(javaSE16.getCompilerTargetLevelDefault())) { ++ ee = javaSE16; ++ } ++ } ++ ++ return ee.getProfileName(); ++ } catch (UnknownEnvironmentException e) { ++ // can't happen, ee is validated during configuration parsing ++ return null; ++ } ++ } + } +diff --git a/tycho-core/src/main/java/org/eclipse/tycho/core/osgitools/OsgiBundleProject.java b/tycho-core/src/main/java/org/eclipse/tycho/core/osgitools/OsgiBundleProject.java +index 4ec4166d..d57245de 100644 +--- a/tycho-core/src/main/java/org/eclipse/tycho/core/osgitools/OsgiBundleProject.java ++++ b/tycho-core/src/main/java/org/eclipse/tycho/core/osgitools/OsgiBundleProject.java +@@ -516,6 +516,7 @@ public class OsgiBundleProject extends AbstractTychoProject implements BundlePro + String pdeProfileName = getEclipsePluginProject(DefaultReactorProject.adapt(project)).getBuildProperties() + .getJreCompilationProfile(); + if (pdeProfileName != null) { ++ pdeProfileName = overrideToAtLeastJavaSE16(pdeProfileName, toolchainManager, mavenSession, logger); + sink.setProfileConfiguration(pdeProfileName.trim(), "build.properties"); + } else { + // ... derived from BREE in bundle manifest +@@ -548,16 +549,22 @@ public class OsgiBundleProject extends AbstractTychoProject implements BundlePro + StandardExecutionEnvironment configuredProfile = ExecutionEnvironmentUtils + .getExecutionEnvironment(configuredProfileName, toolchainManager, mavenSession, logger); + if (configuredProfile != null) { ++ configuredProfileName = overrideToAtLeastJavaSE16(configuredProfileName, toolchainManager, mavenSession, ++ logger); + // non standard profile, stick to it + sink.setProfileConfiguration(configuredProfileName, reason); + } + StandardExecutionEnvironment currentProfile = ExecutionEnvironmentUtils.getExecutionEnvironment( + "JavaSE-" + Runtime.version().feature(), toolchainManager, mavenSession, logger); + if (currentProfile.compareTo(configuredProfile) > 0) { +- sink.setProfileConfiguration(currentProfile.getProfileName(), ++ String configuredProfile1 = overrideToAtLeastJavaSE16(currentProfile.getProfileName(), toolchainManager, ++ mavenSession, logger); ++ sink.setProfileConfiguration(configuredProfile1, + "Currently running profile, newer than configured profile (" + configuredProfileName + ") from [" + + reason + "]"); + } else { ++ configuredProfileName = overrideToAtLeastJavaSE16(configuredProfileName, toolchainManager, mavenSession, ++ logger); + sink.setProfileConfiguration(configuredProfileName, reason); + } + } +diff --git a/tycho-core/src/main/java/org/eclipse/tycho/core/resolver/DefaultTargetPlatformConfigurationReader.java b/tycho-core/src/main/java/org/eclipse/tycho/core/resolver/DefaultTargetPlatformConfigurationReader.java +index 87042d2b..85d52aa0 100644 +--- a/tycho-core/src/main/java/org/eclipse/tycho/core/resolver/DefaultTargetPlatformConfigurationReader.java ++++ b/tycho-core/src/main/java/org/eclipse/tycho/core/resolver/DefaultTargetPlatformConfigurationReader.java +@@ -87,7 +87,11 @@ public class DefaultTargetPlatformConfigurationReader { + + configuration.toString()); + } + +- addTargetEnvironments(result, project, configuration); ++ // Use the defined environments only in local mode with tycho.local.keepTarget ++ if ((System.getProperty("TYCHO_MVN_LOCAL") == null && System.getProperty("TYCHO_MVN_RPMBUILD") == null) ++ || System.getProperty("tycho.local.keepTarget") != null) { ++ addTargetEnvironments(result, project, configuration); ++ } + + setTargetPlatformResolver(result, configuration); + +diff --git a/tycho-core/src/main/java/org/eclipse/tycho/osgi/runtime/TychoOsgiRuntimeLocator.java b/tycho-core/src/main/java/org/eclipse/tycho/osgi/runtime/TychoOsgiRuntimeLocator.java +index ea817a92..c71fc930 100644 +--- a/tycho-core/src/main/java/org/eclipse/tycho/osgi/runtime/TychoOsgiRuntimeLocator.java ++++ b/tycho-core/src/main/java/org/eclipse/tycho/osgi/runtime/TychoOsgiRuntimeLocator.java +@@ -160,40 +160,53 @@ public class TychoOsgiRuntimeLocator implements EquinoxRuntimeLocator { + Artifact artifact = resolveDependency(session, dependency); + + if ("zip".equals(dependency.getType())) { +- File artifactFile = new File(session.getLocalRepository().getBasedir(), session.getLocalRepository() +- .pathOf(artifact)); ++ File artifactFile = new File(session.getLocalRepository().getBasedir(), ++ session.getLocalRepository().pathOf(artifact)); + File eclipseDir = new File(artifactFile.getParentFile(), "eclipse"); ++ File eclipseSaveDir = new File(artifactFile.getParentFile(), "eclipse-save"); ++ File fedoraDir = new File(artifactFile.getParentFile(), "fedora-eclipse"); + + FileLocker locker = fileLockService.getFileLocker(artifactFile); + locker.lock(); + try { +- if (!eclipseDir.exists() || artifact.isSnapshot()) { ++ if (!fedoraDir.exists() || artifact.isSnapshot()) { + logger.debug("Extracting Tycho's OSGi runtime"); + +- if (artifact.getFile().lastModified() > eclipseDir.lastModified()) { ++ if (artifact.getFile().lastModified() > fedoraDir.lastModified()) { + logger.debug("Unpacking Tycho's OSGi runtime to " + eclipseDir); + try { +- FileUtils.deleteDirectory(eclipseDir); ++ FileUtils.deleteDirectory(fedoraDir); ++ if (eclipseDir.exists()) { ++ FileUtils.rename(eclipseDir, eclipseSaveDir); ++ } + } catch (IOException e) { +- logger.warn("Failed to delete Tycho's OSGi runtime " + eclipseDir + ": " + e.getMessage()); ++ logger.warn("Failed to delete Tycho's OSGi runtime " + fedoraDir + ": " + e.getMessage()); + } + eclipseDir.mkdirs(); + unArchiver.setSourceFile(artifact.getFile()); + unArchiver.setDestDirectory(eclipseDir); + try { + unArchiver.extract(); ++ logger.debug("Moving Tycho's OSGi runtime to " + fedoraDir); ++ FileUtils.rename(eclipseDir, fedoraDir); ++ if (eclipseSaveDir.exists()) { ++ FileUtils.rename(eclipseSaveDir, eclipseDir); ++ } + } catch (ArchiverException e) { +- throw new MavenExecutionException("Failed to unpack Tycho's OSGi runtime: " +- + e.getMessage(), e); ++ throw new MavenExecutionException( ++ "Failed to unpack Tycho's OSGi runtime: " + e.getMessage(), e); ++ } catch (IOException e) { ++ throw new MavenExecutionException("Failed to move Tycho's OSGi runtime: " + e.getMessage(), ++ e); + } + +- eclipseDir.setLastModified(artifact.getFile().lastModified()); ++ fedoraDir.setLastModified(artifact.getFile().lastModified()); + } + } + } finally { + locker.release(); + } +- description.addInstallation(eclipseDir); ++ description.addInstallation(fedoraDir); + } else { + description.addBundle(artifact.getFile()); + } +diff --git a/tycho-p2/tycho-p2-facade/pom.xml b/tycho-p2/tycho-p2-facade/pom.xml +index a5cbdb6d..c6099934 100644 +--- a/tycho-p2/tycho-p2-facade/pom.xml ++++ b/tycho-p2/tycho-p2-facade/pom.xml +@@ -57,6 +57,11 @@ + junit-jupiter-api + 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 c911d45a..26df4a67 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 +@@ -92,6 +92,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 { +@@ -200,6 +201,14 @@ public class P2DependencyResolver extends AbstractLogEnabled implements Dependen + + PomDependencyCollector pomDependencies = collectPomDependencies(project, reactorProjects, session, + configuration.getPomDependencies()); ++ ++ // Add Fedora Local P2 Repository when running in local mode ++ if (System.getProperty("TYCHO_MVN_LOCAL") != null || System.getProperty("TYCHO_MVN_RPMBUILD") != null) { ++ for (URI uri : EclipseSystemLayout.getRepositories()) { ++ tpConfiguration.addP2Repository(new MavenRepositoryLocation(uri.getPath(), uri)); ++ } ++ } ++ + for (ArtifactRepository repository : project.getRemoteArtifactRepositories()) { + addEntireP2RepositoryToTargetPlatform(repository, tpConfiguration); + } +-- +2.28.0 + diff --git a/0003-Tycho-should-always-delegate-artifact-resolution-to-.patch b/0003-Tycho-should-always-delegate-artifact-resolution-to-.patch new file mode 100644 index 0000000..7f4f9e3 --- /dev/null +++ b/0003-Tycho-should-always-delegate-artifact-resolution-to-.patch @@ -0,0 +1,700 @@ +From a09b3d4a8b0005d50a311d2210e360e6d845531d Mon Sep 17 00:00:00 2001 +From: Roland Grunberg +Date: Wed, 18 Jun 2014 13:01:31 -0400 +Subject: [PATCH 3/7] 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 +--- + .../tycho/core/shared/MavenContext.java | 1 + + .../tycho/core/shared/MavenContextImpl.java | 9 +++- + .../core/shared/MavenRepositorySystem.java | 19 +++++++ + .../LocalArtifactRepositoryP2APITest.java | 4 +- + .../local/LocalMetadataRepositoryTest.java | 3 +- + .../local/LocalArtifactRepository.java | 18 +++---- + .../local/LocalArtifactRepositoryFactory.java | 3 +- + .../index/LocalRepositoryP2IndicesImpl.java | 6 +++ + .../remote/RemoteAgentMavenMirrorsTest.java | 3 +- + ...emoteAgentMetadataRepositoryCacheTest.java | 9 ++-- + .../TargetPlatformBundlePublisherTest.java | 4 +- + .../tycho/p2/target/TestResolverFactory.java | 7 ++- + .../p2/resolver/P2ResolverFactoryImpl.java | 8 +-- + .../p2/target/PomDependencyCollectorImpl.java | 2 +- + .../target/TargetPlatformBundlePublisher.java | 13 +++-- + .../repository/LocalRepositoryP2Indices.java | 3 ++ + .../p2/repository/LocalRepositoryReader.java | 50 +++++-------------- + .../TemporaryLocalMavenRepository.java | 4 +- + .../test/util/MavenRepositorySystemStub.java | 30 +++++++++++ + .../MavenRepositorySystemAdapter.java | 37 ++++++++++++++ + .../MavenContextConfigurator.java | 7 ++- + 21 files changed, 170 insertions(+), 70 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/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 00ee911d..d2efe795 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 +@@ -48,4 +48,5 @@ public interface MavenContext { + */ + public Collection getProjects(); + ++ 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 dba2b323..585f2d42 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 +@@ -27,18 +27,20 @@ public class MavenContextImpl implements MavenContext { + private boolean offline; + private Properties mergedProperties; + private List projects = new ArrayList<>(); ++ 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 +@@ -70,4 +72,7 @@ public class MavenContextImpl implements MavenContext { + projects.add(reactorProject); + } + ++ 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 00000000..965e5cd9 +--- /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 43ca3cbc..7958be3c 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.Assume; + import org.junit.Before; +@@ -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 4bcd11ce..86bc7eda 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 +@@ -33,6 +33,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.eclipse.tycho.test.util.NoopFileLockService; + import org.junit.Assert; + import org.junit.Test; +@@ -51,7 +52,7 @@ public class LocalMetadataRepositoryTest { + + protected IMetadataRepository loadRepository(File location) throws ProvisionException { + return new LocalMetadataRepository(location.toURI(), createMetadataIndex(location), +- new LocalRepositoryReader(location)); ++ new LocalRepositoryReader(location, new MavenRepositorySystemStub(location))); + } + + private TychoRepositoryIndex createMetadataIndex(File location) { +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 1dc91006..bf26e3dd 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 gavDescriptors = io.readXML(is); + for (IArtifactDescriptor descriptor : gavDescriptors) { + internalAddDescriptor(descriptor); +@@ -119,11 +121,9 @@ 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) { +@@ -415,7 +420,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 2122578c..164d106f 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,5 @@ 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 03900e27..f957c017 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 +@@ -11,57 +11,31 @@ + package org.eclipse.tycho.p2.repository; + + 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 + public File getLocalArtifactLocation(GAV gav, String classifier, String extension) { +- File file = new File(localMavenRepositoryRoot, ++ File ret = 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(); ++ 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 5c0bcb86..a0f9fd0e 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 +@@ -17,6 +17,7 @@ import org.eclipse.equinox.internal.p2.core.helpers.FileUtils; + 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 +73,8 @@ 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 00000000..be02d644 +--- /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 00000000..e1d46faa +--- /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 4a213418..e16c7e04 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 +@@ -18,6 +18,7 @@ import java.util.Properties; + import org.apache.maven.execution.MavenSession; + import org.apache.maven.plugin.LegacySupport; + import org.apache.maven.project.MavenProject; ++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; +@@ -29,6 +30,7 @@ import org.eclipse.tycho.core.osgitools.DefaultReactorProject; + 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 { +@@ -39,6 +41,9 @@ public class MavenContextConfigurator extends EquinoxLifecycleListener { + @Requirement + private LegacySupport context; + ++ @Requirement ++ private RepositorySystem repositorySystem; ++ + @Override + public void afterFrameworkStarted(EmbeddedEquinox framework) { + MavenSession session = context.getSession(); +@@ -46,7 +51,7 @@ public class MavenContextConfigurator extends EquinoxLifecycleListener { + MavenLoggerAdapter mavenLogger = new MavenLoggerAdapter(logger, false); + Properties globalProps = getGlobalProperties(session); + MavenContextImpl mavenContext = new MavenContextImpl(localRepoRoot, session.isOffline(), mavenLogger, +- globalProps); ++ globalProps, new MavenRepositorySystemAdapter(repositorySystem)); + for (MavenProject project : session.getProjects()) { + mavenContext.addProject(DefaultReactorProject.adapt(project)); + } +-- +2.28.0 + diff --git a/0004-Fix-uncaught-exception.patch b/0004-Fix-uncaught-exception.patch new file mode 100644 index 0000000..f92a866 --- /dev/null +++ b/0004-Fix-uncaught-exception.patch @@ -0,0 +1,31 @@ +From 8c8bea67c3bc50acef79b2ccf2c0439c8bae5192 Mon Sep 17 00:00:00 2001 +From: Mat Booth +Date: Thu, 20 Feb 2020 16:08:00 +0000 +Subject: [PATCH 4/7] Fix uncaught exception + +"unreported exception org.codehaus.plexus.configuration.PlexusConfigurationException; must be caught or declared to be thrown" +--- + .../tycho/extras/sourcefeature/SourceFeatureMojo.java | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/tycho-extras/tycho-source-feature-plugin/src/main/java/org/eclipse/tycho/extras/sourcefeature/SourceFeatureMojo.java b/tycho-extras/tycho-source-feature-plugin/src/main/java/org/eclipse/tycho/extras/sourcefeature/SourceFeatureMojo.java +index 0433b397..9a8e99f3 100644 +--- a/tycho-extras/tycho-source-feature-plugin/src/main/java/org/eclipse/tycho/extras/sourcefeature/SourceFeatureMojo.java ++++ b/tycho-extras/tycho-source-feature-plugin/src/main/java/org/eclipse/tycho/extras/sourcefeature/SourceFeatureMojo.java +@@ -567,7 +567,12 @@ public class SourceFeatureMojo extends AbstractMojo { + } + + private String getAttribute(PlexusConfiguration dom, String attrName) { +- String attr = dom.getAttribute(attrName); ++ String attr = null; ++ try { ++ attr = dom.getAttribute(attrName); ++ } catch (Exception ex) { ++ attr = null; ++ } + if (attr == null) { + return null; + } +-- +2.28.0 + diff --git a/0005-Fix-dependency-problems-when-bootstrapping-with-extr.patch b/0005-Fix-dependency-problems-when-bootstrapping-with-extr.patch new file mode 100644 index 0000000..d618041 --- /dev/null +++ b/0005-Fix-dependency-problems-when-bootstrapping-with-extr.patch @@ -0,0 +1,80 @@ +From 15b0c018b6167fb1b358383fc36d6f53260a2d7e Mon Sep 17 00:00:00 2001 +From: Mat Booth +Date: Fri, 20 Mar 2020 02:35:02 +0000 +Subject: [PATCH 5/7] Fix dependency problems when bootstrapping with extras + +--- + tycho-extras/pack200/tycho-pack200b-plugin/pom.xml | 4 ++-- + tycho-extras/pom.xml | 10 +++++----- + tycho-extras/tycho-source-feature-plugin/pom.xml | 2 +- + 3 files changed, 8 insertions(+), 8 deletions(-) + +diff --git a/tycho-extras/pack200/tycho-pack200b-plugin/pom.xml b/tycho-extras/pack200/tycho-pack200b-plugin/pom.xml +index 8f86f86a..861652ed 100644 +--- a/tycho-extras/pack200/tycho-pack200b-plugin/pom.xml ++++ b/tycho-extras/pack200/tycho-pack200b-plugin/pom.xml +@@ -36,7 +36,7 @@ + + org.eclipse.tycho + org.eclipse.tycho.p2.resolver.shared +- ${tycho-version} ++ ${project.version} + + +- +\ No newline at end of file ++ +diff --git a/tycho-extras/pom.xml b/tycho-extras/pom.xml +index 335abfee..f44a6f2b 100644 +--- a/tycho-extras/pom.xml ++++ b/tycho-extras/pom.xml +@@ -72,28 +72,28 @@ + + org.eclipse.tycho + tycho-core +- ${tycho-version} ++ ${project.version} + + + org.eclipse.tycho + tycho-p2-facade +- ${tycho-version} ++ ${project.version} + + + org.eclipse.tycho + org.eclipse.tycho.core.shared +- ${tycho-version} ++ ${project.version} + + + org.eclipse.tycho + tycho-testing-harness +- ${tycho-version} ++ ${project.version} + test + + + org.eclipse.tycho + sisu-equinox-launching +- ${tycho-version} ++ ${project.version} + + + org.eclipse.tycho +diff --git a/tycho-extras/tycho-source-feature-plugin/pom.xml b/tycho-extras/tycho-source-feature-plugin/pom.xml +index 8e0a4082..a032f350 100644 +--- a/tycho-extras/tycho-source-feature-plugin/pom.xml ++++ b/tycho-extras/tycho-source-feature-plugin/pom.xml +@@ -42,7 +42,7 @@ + + org.eclipse.tycho + tycho-packaging-plugin +- ${tycho-version} ++ ${project.version} + maven-plugin + + +-- +2.28.0 + diff --git a/0006-Use-custom-resolver-for-tycho-eclipserun-plugin.patch b/0006-Use-custom-resolver-for-tycho-eclipserun-plugin.patch new file mode 100644 index 0000000..85d8bee --- /dev/null +++ b/0006-Use-custom-resolver-for-tycho-eclipserun-plugin.patch @@ -0,0 +1,51 @@ +From 8b062ae9182fbf3a50edf7c4a0c98965032efb23 Mon Sep 17 00:00:00 2001 +From: Roland Grunberg +Date: Mon, 6 May 2013 14:20:58 -0400 +Subject: [PATCH 6/7] Use custom resolver for tycho-eclipserun-plugin. + +Add various system local OSGi bundle locations to the target platform +used by tycho-eclipserun-plugin. + +Change-Id: Ifd0aae3f32c8077cd0ae33e70f40698c1129788d +--- + .../tycho/extras/eclipserun/EclipseRunMojo.java | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/tycho-extras/tycho-eclipserun-plugin/src/main/java/org/eclipse/tycho/extras/eclipserun/EclipseRunMojo.java b/tycho-extras/tycho-eclipserun-plugin/src/main/java/org/eclipse/tycho/extras/eclipserun/EclipseRunMojo.java +index 8f4cc249..28137edb 100644 +--- a/tycho-extras/tycho-eclipserun-plugin/src/main/java/org/eclipse/tycho/extras/eclipserun/EclipseRunMojo.java ++++ b/tycho-extras/tycho-eclipserun-plugin/src/main/java/org/eclipse/tycho/extras/eclipserun/EclipseRunMojo.java +@@ -13,6 +13,7 @@ package org.eclipse.tycho.extras.eclipserun; + + import java.io.File; + import java.net.MalformedURLException; ++import java.net.URI; + import java.util.ArrayList; + import java.util.List; + import java.util.Map; +@@ -54,6 +55,7 @@ import org.eclipse.tycho.p2.resolver.facade.P2Resolver; + import org.eclipse.tycho.p2.resolver.facade.P2ResolverFactory; + import org.eclipse.tycho.p2.target.facade.TargetPlatformConfigurationStub; + import org.eclipse.tycho.plugins.p2.extras.Repository; ++import org.fedoraproject.p2.EclipseSystemLayout; + + /** + * Launch an eclipse process with arbitrary commandline arguments. The eclipse installation is +@@ -237,6 +239,14 @@ public class EclipseRunMojo extends AbstractMojo { + TargetPlatformConfigurationStub tpConfiguration = new TargetPlatformConfigurationStub(); + // we want to resolve from remote repos only + tpConfiguration.setForceIgnoreLocalArtifacts(true); ++ ++ // Add Fedora Local P2 Repository when running in local mode ++ if (System.getProperty("TYCHO_MVN_LOCAL") != null || System.getProperty("TYCHO_MVN_RPMBUILD") != null) { ++ for (URI uri : EclipseSystemLayout.getRepositories()) { ++ tpConfiguration.addP2Repository(new MavenRepositoryLocation(uri.getPath(), uri)); ++ } ++ } ++ + for (Repository repository : repositories) { + tpConfiguration.addP2Repository(new MavenRepositoryLocation(repository.getId(), repository.getLocation())); + } +-- +2.28.0 + diff --git a/0007-Revert-change-for-surefire-update-that-is-not-in-Fed.patch b/0007-Revert-change-for-surefire-update-that-is-not-in-Fed.patch new file mode 100644 index 0000000..21a6f4b --- /dev/null +++ b/0007-Revert-change-for-surefire-update-that-is-not-in-Fed.patch @@ -0,0 +1,69 @@ +From d90cb4ea647623da0daab058010c454d8dc832ed Mon Sep 17 00:00:00 2001 +From: Mat Booth +Date: Wed, 25 Nov 2020 10:35:26 +0000 +Subject: [PATCH 7/7] Revert change for surefire update that is not in Fedora + +--- + pom.xml | 2 +- + .../META-INF/MANIFEST.MF | 8 ++++---- + .../tycho/surefire/osgibooter/OsgiSurefireBooter.java | 5 ++--- + 3 files changed, 7 insertions(+), 8 deletions(-) + +diff --git a/pom.xml b/pom.xml +index 89500fd2..05a0fd88 100644 +--- a/pom.xml ++++ b/pom.xml +@@ -85,7 +85,7 @@ + 3.6.0 + 3.6.3 + +- 2.22.2 ++ 2.22.0 + + 3.16.0 + 1.2.100 +diff --git a/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/META-INF/MANIFEST.MF b/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/META-INF/MANIFEST.MF +index 3888be52..d9ae3dce 100644 +--- a/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/META-INF/MANIFEST.MF ++++ b/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/META-INF/MANIFEST.MF +@@ -5,10 +5,10 @@ Require-Bundle: org.eclipse.osgi;bundle-version="3.2.2", + Bundle-ActivationPolicy: lazy + Bundle-Version: 2.1.0 + Bundle-ClassPath: ., +- jars/surefire-booter-2.22.2.jar, +- jars/surefire-api-2.22.2.jar, +- jars/surefire-logger-api-2.22.2.jar, +- jars/maven-surefire-common-2.22.2.jar ++ jars/surefire-booter-2.22.0.jar, ++ jars/surefire-api-2.22.0.jar, ++ jars/surefire-logger-api-2.22.0.jar, ++ jars/maven-surefire-common-2.22.0.jar + Bundle-Name: Tycho Surefire OSGi Booter Eclipse Application + Bundle-ManifestVersion: 2 + Bundle-SymbolicName: org.eclipse.tycho.surefire.osgibooter;singleton:=true +diff --git a/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/src/main/java/org/eclipse/tycho/surefire/osgibooter/OsgiSurefireBooter.java b/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/src/main/java/org/eclipse/tycho/surefire/osgibooter/OsgiSurefireBooter.java +index 70be36f1..5734a440 100644 +--- a/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/src/main/java/org/eclipse/tycho/surefire/osgibooter/OsgiSurefireBooter.java ++++ b/tycho-surefire/org.eclipse.tycho.surefire.osgibooter/src/main/java/org/eclipse/tycho/surefire/osgibooter/OsgiSurefireBooter.java +@@ -27,7 +27,6 @@ import java.util.Set; + + import org.apache.maven.plugin.surefire.StartupReportConfiguration; + import org.apache.maven.plugin.surefire.log.api.PrintStreamLogger; +-import org.apache.maven.plugin.surefire.report.ConsoleReporter; + import org.apache.maven.plugin.surefire.report.DefaultReporterFactory; + import org.apache.maven.surefire.booter.BooterConstants; + import org.apache.maven.surefire.booter.ClassLoaderConfiguration; +@@ -105,8 +104,8 @@ public class OsgiSurefireBooter { + extractProviderProperties(testProps), null, false, Collections. emptyList(), + skipAfterFailureCount, Shutdown.DEFAULT, 30); + StartupReportConfiguration startupReportConfig = new StartupReportConfiguration(useFile, printSummary, +- ConsoleReporter.PLAIN, redirectTestOutputToFile, disableXmlReport, reportsDir, trimStackTrace, null, +- new File(reportsDir, "TESTHASH"), false, rerunFailingTestsCount, XSD, null, false); ++ StartupReportConfiguration.PLAIN_REPORT_FORMAT, redirectTestOutputToFile, disableXmlReport, reportsDir, ++ trimStackTrace, null, new File(reportsDir, "TESTHASH"), false, rerunFailingTestsCount, XSD, null); + ReporterFactory reporterFactory = new DefaultReporterFactory(startupReportConfig, + new PrintStreamLogger(startupReportConfig.getOriginalSystemOut())); + // API indicates we should use testClassLoader below but surefire also tries +-- +2.28.0 + diff --git a/EmptyMojo.java b/EmptyMojo.java new file mode 100644 index 0000000..84d970f --- /dev/null +++ b/EmptyMojo.java @@ -0,0 +1,19 @@ +package org.fedoraproject; + +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.MojoFailureException; +import org.apache.maven.plugin.AbstractMojo; + +/** + * Empty goal to fix + * @goal empty + * @phase clean + */ +public class EmptyMojo + extends AbstractMojo +{ + public void execute() + throws MojoExecutionException, MojoFailureException + { + } +} diff --git a/p2-install.sh b/p2-install.sh new file mode 100755 index 0000000..e04cb9d --- /dev/null +++ b/p2-install.sh @@ -0,0 +1,20 @@ +#!/bin/sh +set -e + +_prefer_jre="true" +. /usr/share/java-utils/java-functions + +set_jvm + +set_classpath \ + beust-jcommander \ + eclipse/osgi \ + slf4j/api \ + slf4j/simple \ + tycho/org.fedoraproject.p2 \ + tycho/xmvn-p2-installer-plugin \ + xmvn/xmvn-api \ + xmvn/xmvn-core \ + +MAIN_CLASS=org.fedoraproject.p2.app.P2InstallerApp +run "$@" diff --git a/sources b/sources new file mode 100644 index 0000000..7416547 --- /dev/null +++ b/sources @@ -0,0 +1,3 @@ +SHA512 (fedoraproject-p2-290f67a4c717599b2f5166ea89aa5365571314b1.tar.gz) = 5ddfa3e7c1dc3d64335d836d74d7325904f294e0ab1782de41a8815b09ddf42f0c47a263c3a6217626aaf293a17788d01174c327e17b192a0f451d07d5655c49 +SHA512 (eclipse-bootstrap-2020-09.tar.xz) = a534271fb86e23e0a11b3c3e943b5f981fcbd16e8a0c6b826752ed82e4fd1594af8318c1483798174b0aa2871d5744b3eb404235d89bbf7ace58b5d5fb156c1a +SHA512 (org.eclipse.tycho-tycho-2.1.0.tar.xz) = b87c99ebe76e7ab5a13e40f26d875e23c79e11ccd29329f87c641e6dff13bdf73698551a03c5347ba629a4ace260debfd5e8347b39355321328fb25aef981a6b diff --git a/tycho-bootstrap.sh b/tycho-bootstrap.sh new file mode 100755 index 0000000..6bbb0a4 --- /dev/null +++ b/tycho-bootstrap.sh @@ -0,0 +1,115 @@ +#! /bin/bash -e + +. $(pwd)/tycho-scripts.sh + +preV=$1 +v="$preV-SNAPSHOT" +osgiV='3.16.0.v20200914-0420' +osgiCompatV='1.2.100.v20200914-0420' +fp2V='0.0.1-SNAPSHOT' +bundles=() +bundles[0]='tycho-bundles/org.eclipse.tycho.embedder.shared' +bundles[1]='tycho-bundles/org.eclipse.tycho.core.shared' +bundles[2]='tycho-bundles/org.eclipse.tycho.p2.resolver.shared' +bundles[3]='tycho-bundles/org.eclipse.tycho.p2.tools.shared' +bundles[4]='tycho-bundles/org.eclipse.tycho.p2.maven.repository' +bundles[5]='tycho-bundles/org.eclipse.tycho.p2.resolver.impl' +bundles[6]='tycho-bundles/org.eclipse.tycho.p2.tools.impl' + +xtraBundles[0]='fedoraproject-p2/org.fedoraproject.p2' + +deps[0]="" +deps[1]="tycho-bundles/org.eclipse.tycho.embedder.shared/target/org.eclipse.tycho.embedder.shared-${v}.jar" +deps[2]="tycho-bundles/org.eclipse.tycho.embedder.shared/target/org.eclipse.tycho.embedder.shared-${v}.jar:tycho-bundles/org.eclipse.tycho.core.shared/target/org.eclipse.tycho.core.shared-${v}.jar" +deps[3]="tycho-bundles/org.eclipse.tycho.embedder.shared/target/org.eclipse.tycho.embedder.shared-${v}.jar:tycho-bundles/org.eclipse.tycho.core.shared/target/org.eclipse.tycho.core.shared-${v}.jar:tycho-bundles/org.eclipse.tycho.p2.resolver.shared/target/org.eclipse.tycho.p2.resolver.shared-${v}.jar" +deps[4]="tycho-bundles/org.eclipse.tycho.embedder.shared/target/org.eclipse.tycho.embedder.shared-${v}.jar:tycho-bundles/org.eclipse.tycho.core.shared/target/org.eclipse.tycho.core.shared-${v}.jar:tycho-bundles/org.eclipse.tycho.p2.resolver.shared/target/org.eclipse.tycho.p2.resolver.shared-${v}.jar" +deps[5]="tycho-bundles/org.eclipse.tycho.embedder.shared/target/org.eclipse.tycho.embedder.shared-${v}.jar:tycho-bundles/org.eclipse.tycho.core.shared/target/org.eclipse.tycho.core.shared-${v}.jar:tycho-bundles/org.eclipse.tycho.p2.resolver.shared/target/org.eclipse.tycho.p2.resolver.shared-${v}.jar:tycho-bundles/org.eclipse.tycho.p2.maven.repository/target/org.eclipse.tycho.p2.maven.repository-${v}.jar:fedoraproject-p2/org.fedoraproject.p2/target/org.fedoraproject.p2-${fp2V}.jar" +deps[6]="tycho-bundles/org.eclipse.tycho.embedder.shared/target/org.eclipse.tycho.embedder.shared-${v}.jar:tycho-bundles/org.eclipse.tycho.core.shared/target/org.eclipse.tycho.core.shared-${v}.jar:tycho-bundles/org.eclipse.tycho.p2.resolver.shared/target/org.eclipse.tycho.p2.resolver.shared-${v}.jar:tycho-bundles/org.eclipse.tycho.p2.tools.shared/target/org.eclipse.tycho.p2.tools.shared-${v}.jar:tycho-bundles/org.eclipse.tycho.p2.maven.repository/target/org.eclipse.tycho.p2.maven.repository-${v}.jar:tycho-bundles/org.eclipse.tycho.p2.resolver.impl/target/org.eclipse.tycho.p2.resolver.impl-${v}.jar" + +xtraDeps[0]="" + +externalDeps[4]="org.eclipse.equinox.common,org.eclipse.equinox.p2.repository,org.eclipse.equinox.p2.metadata,org.eclipse.equinox.p2.core,org.eclipse.equinox.p2.metadata.repository,org.eclipse.equinox.p2.artifact.repository,org.eclipse.osgi" +externalDeps[5]="org.eclipse.core.runtime,org.eclipse.equinox.security,org.eclipse.equinox.frameworkadmin.equinox,org.eclipse.equinox.frameworkadmin,org.eclipse.equinox.p2.core,org.eclipse.equinox.p2.metadata,org.eclipse.equinox.p2.publisher,org.eclipse.equinox.p2.publisher.eclipse,org.eclipse.equinox.p2.artifact.repository,org.eclipse.equinox.p2.metadata.repository,org.eclipse.equinox.p2.director,org.eclipse.equinox.p2.repository,org.eclipse.equinox.p2.updatesite,org.eclipse.core.net,org.eclipse.equinox.common,org.eclipse.osgi,org.eclipse.equinox.preferences" +externalDeps[6]="org.eclipse.equinox.p2.director.app,org.eclipse.equinox.frameworkadmin.equinox,org.eclipse.equinox.frameworkadmin,org.eclipse.equinox.p2.core,org.eclipse.equinox.p2.publisher,org.eclipse.equinox.p2.updatesite,org.eclipse.core.runtime,org.eclipse.equinox.p2.metadata,org.eclipse.equinox.p2.repository,org.eclipse.equinox.p2.repository.tools,org.eclipse.equinox.p2.metadata.repository,org.eclipse.equinox.p2.artifact.repository,org.eclipse.equinox.p2.publisher.eclipse,org.eclipse.equinox.p2.engine,org.eclipse.equinox.p2.director,org.eclipse.osgi,org.eclipse.equinox.common,org.eclipse.equinox.app,org.eclipse.equinox.registry" + +xtraExternalDeps[0]="org.eclipse.osgi,org.eclipse.core.runtime,org.eclipse.equinox.common,org.eclipse.equinox.p2.metadata,org.eclipse.equinox.p2.repository,org.eclipse.equinox.p2.core,org.eclipse.equinox.p2.publisher.eclipse,org.eclipse.equinox.p2.publisher,org.eclipse.equinox.p2.touchpoint.eclipse,org.eclipse.equinox.p2.updatesite,org.eclipse.equinox.p2.repository.tools,org.eclipse.equinox.app,slf4j.api" + +reactorprojs=( 'tycho-embedder-api' 'tycho-metadata-model' 'sisu-equinox/sisu-equinox-api' 'sisu-equinox/sisu-equinox-embedder' 'tycho-core' 'tycho-packaging-plugin' 'tycho-p2/tycho-p2-facade' 'tycho-maven-plugin' 'tycho-p2/tycho-p2-repository-plugin' 'tycho-p2/tycho-p2-publisher-plugin' 'target-platform-configuration' 'tycho-artifactcomparator' 'sisu-equinox/sisu-equinox-launching' 'tycho-p2/tycho-p2-plugin' 'tycho-lib-detector' 'tycho-compiler-jdt' 'tycho-compiler-plugin' ) + +for ((i=0; i < ${#xtraBundles[@]}; i++)) ;do + echo '' + echo 'Building ' ${xtraBundles[${i}]} '...' + echo '' + isolateProject ${xtraBundles[${i}]} ${fp2V} + minibuild ${xtraBundles[${i}]} "${xtraDeps[${i}]}" ${xtraExternalDeps[${i}]} + unifyProject ${xtraBundles[${i}]} +done + +# TODO: stop minibuild function from hard-coding org/eclipse/tycho GID path +dir=$(pwd)/.m2/org/fedoraproject/p2/org.fedoraproject.p2/ +mkdir -p ${dir} +ln -s $(pwd)/.m2/org/eclipse/tycho/org.fedoraproject.p2/${fp2V} ${dir} + +for ((i=0; i < ${#bundles[@]}; i++)) ;do + echo '' + echo 'Building ' ${bundles[${i}]} '...' + echo '' + isolateProject ${bundles[${i}]} + minibuild ${bundles[${i}]} "${deps[${i}]}" ${externalDeps[${i}]} + unifyProject ${bundles[${i}]} +done + +# Run the build on this maven reactor project +for proj in ${reactorprojs[@]} ; do + isolateProject ${proj} + xmvn -B -o -e -f "${proj}/pom.xml" -Dmaven.repo.local=$(pwd)/.m2 -Dmaven.test.skip=true \ + -Dmaven.compiler.source=1.8 -Dmaven.compiler.target=1.8 -Dmaven.compiler.release=8 -Dproject.build.sourceEncoding=UTF-8 \ + clean install + unifyProject ${proj} +done + +# Add org.fedoraproject.p2 to target platform for tycho-bundles-external +extras='bootstrap/extras' +mkdir -p ${extras} +fp2Loc=`find .m2 -name "org.fedoraproject.p2-*.jar"` +cp ${fp2Loc} ${extras} + +# Tycho Bundles External (needed for Tycho's OSGi Runtime) +tbeDir='tycho-bundles/tycho-bundles-external' +tbeTargetDir="${tbeDir}/target" +wantedBundles=`sed 's/ fragment=\"true\"//' "${tbeDir}/tycho-bundles-external.product" | sed -n 's/.*.*/\1/ p'` + +mkdir -p ${tbeTargetDir}'/eclipse/plugins' +copyBundles "${wantedBundles}" "${tbeTargetDir}/eclipse/plugins" + +pushd ${tbeTargetDir} + +echo "#Eclipse Product File +#Thu Dec 19 21:40:37 EST 2013 +version=${v} +name=org.eclipse.tycho.p2 +id=tycho-bundles-external" > 'eclipse/.eclipseproduct' + +mkdir -p 'eclipse/configuration' + +echo '#Product Runtime Configuration File +#Thu Dec 19 21:40:37 EST 2013 +osgi.bundles=org.apache.commons.codec,org.apache.commons.logging,org.apache.httpcomponents.httpclient,org.apache.httpcomponents.httpcore,org.eclipse.core.contenttype,org.eclipse.core.jobs,org.eclipse.core.net,org.eclipse.core.runtime@4\:start,org.eclipse.core.runtime.compatibility.registry,org.eclipse.ecf,org.eclipse.ecf.filetransfer,org.eclipse.ecf.identity,org.eclipse.ecf.provider.filetransfer,org.eclipse.ecf.provider.filetransfer.httpclient4,org.eclipse.ecf.provider.filetransfer.httpclient4.ssl,org.eclipse.ecf.provider.filetransfer.ssl,org.eclipse.ecf.ssl,org.eclipse.equinox.app,org.eclipse.equinox.common@2\:start,org.eclipse.equinox.concurrent,org.eclipse.equinox.ds@2\:start,org.eclipse.equinox.frameworkadmin,org.eclipse.equinox.frameworkadmin.equinox,org.eclipse.equinox.launcher,org.eclipse.equinox.p2.artifact.repository,org.eclipse.equinox.p2.core,org.eclipse.equinox.p2.director,org.eclipse.equinox.p2.director.app,org.eclipse.equinox.p2.engine,org.eclipse.equinox.p2.garbagecollector,org.eclipse.equinox.p2.jarprocessor,org.eclipse.equinox.p2.metadata,org.eclipse.equinox.p2.metadata.repository,org.eclipse.equinox.p2.publisher,org.eclipse.equinox.p2.publisher.eclipse,org.eclipse.equinox.p2.repository,org.eclipse.equinox.p2.repository.tools,org.eclipse.equinox.p2.touchpoint.eclipse,org.eclipse.equinox.p2.touchpoint.natives,org.eclipse.equinox.p2.transport.ecf,org.eclipse.equinox.p2.updatesite,org.eclipse.equinox.preferences,org.eclipse.equinox.registry,org.eclipse.equinox.security,org.eclipse.equinox.simpleconfigurator,org.eclipse.equinox.simpleconfigurator.manipulator,org.eclipse.equinox.util,org.eclipse.osgi.services,org.eclipse.osgi.compatibility.state,org.eclipse.tycho.noopsecurity,org.sat4j.core,org.sat4j.pb,org.eclipse.osgi.util,org.apache.felix.scr,org.kxml2,org.xmlpull,org.fedoraproject.p2 +osgi.bundles.defaultStartLevel=4 +eclipse.product=org.eclipse.equinox.p2.director.app.product +osgi.splashPath=platform\:/base/plugins/org' > 'eclipse/configuration/config.ini' + +zip -r "tycho-bundles-external-${v}.zip" 'eclipse' + +popd + +loc=".m2/org/eclipse/tycho/tycho-bundles-external/${v}" + +mkdir -p ${loc} +cp "${tbeTargetDir}/tycho-bundles-external-${v}.zip" ${loc} +cp 'tycho-bundles/tycho-bundles-external/pom.xml' "${loc}/tycho-bundles-external-${v}.pom" + +sed -i "s/.*<\/equinoxVersion>/${osgiV}<\/equinoxVersion>/" pom.xml +sed -i "s/.*<\/equinoxCompatVersion>/${osgiCompatV}<\/equinoxCompatVersion>/" pom.xml +# xmvn-p2-installer-plugin needs to find the org.eclipse.osgi bundle +sed -i "s/>\${equinox-version}${osgiV}.*/\1/ p'` +pushd ${tmpDir} +pluginsDir=`find . -type d -name plugins` +pushd ${pluginsDir} && rm -rf * +symlinkBundles "${wantedBundles}" +for b in *; do readlink $b; done >$mfLoc +popd +zip -ry ${zipFile} * +popd +mv ${tmpDir}/${zipFile} ${zipLoc} diff --git a/tycho-scripts.sh b/tycho-scripts.sh new file mode 100755 index 0000000..de3bd06 --- /dev/null +++ b/tycho-scripts.sh @@ -0,0 +1,181 @@ +#! /bin/bash + +function minibuild () { + +basedir=$1 + +src=$(cat "${basedir}/build.properties" | grep 'source..' | cut -d'=' -f2 | sed -e 's/ //g') +output=$(cat "${basedir}/build.properties" | grep 'output..' | cut -d'=' -f2 | sed -e 's/ //g') +bName=$(cat "${basedir}/META-INF/MANIFEST.MF" | grep 'Bundle-SymbolicName:' | sed 's/Bundle-SymbolicName: \([a-zA-Z0-9_.-]*\)\(;\)\?.*/\1/') +artifactId=$(cat "${basedir}/pom.xml" | sed '//,/<\/parent>/ d' | grep "" | sed 's/.*\(.*\)<\/artifactId>.*/\1/') +version=$(cat "${basedir}/pom.xml" | grep "" | sed 's/.*\(.*\)<\/version>.*/\1/') + +# External (System) dependencies +if [ $# -eq 3 ]; then + mkdir -p "${basedir}/target/externalDeps" + copyBundles $3 "${basedir}/target/externalDeps" +else + mkdir -p "${basedir}/target" +fi + +mkdir -p "${basedir}/${output}" + +# Compile +cp= +if [ $# -gt 1 ]; then + cp='-classpath '$2':'"${basedir}"'/target/externalDeps/*' +fi + +javac -d "${basedir}/${output}" -encoding utf8 --release 8 \ + $(for file in `find "${basedir}/${src}" -name "*.java"`; \ + do echo -n "${file} "; \ + done;) \ + ${cp} + +# Package +pushd ${basedir} +pushd ${output} +classfiles=`for file in $(find . -name "*.class"); do echo -n ' -C '${output} ${file} ; done;` +popd +packagefiles="${classfiles}" +[ -e about.html ] && packagefiles="about.html $packagefiles" +[ -e plugin.properties ] && packagefiles="plugin.properties $packagefiles" +[ -e plugin.xml ] && packagefiles="plugin.xml $packagefiles" +[ -e OSGI-INF ] && packagefiles="OSGI-INF $packagefiles" +jar -cfmv "target/${bName}-${version}.jar" 'META-INF/MANIFEST.MF' ${packagefiles} +popd + +# Install +loc=".m2/org/eclipse/tycho/${artifactId}/${version}" +mkdir -p ${loc} +cp "${basedir}/target/${bName}-${version}.jar" ${loc} +cp "${basedir}/pom.xml" "${loc}/${bName}-${version}.pom" + +} + + +function copyBundles () { + +# X_SCLS expands to list of currently enabled SCLs, in the order they were enabled, if any +scls="$X_SCLS" +baseLocations=( '/usr/share/java' '/usr/lib/java' '/usr/lib/eclipse' ) +osgiLocations=(${baseLocations[@]} ${osgiLocations[@]} ) +for scl in ${scls} ; do + osgiLocations=( ${baseLocations[@]/#//opt/rh/${scl}/root} ${osgiLocations[@]} ) +done + +prefix="$(pwd)/bootstrap" +osgiLocations=( ${osgiLocations[@]/#/${prefix}} ) +osgiLocations+=( ${osgiLocations[@]/${prefix}/} ) +osgiLocations=( ${prefix}/extras ${osgiLocations[@]} ) + +wantedBundles=`echo $1 | tr ',' ' '` +destDir=$2 + +for loc in ${osgiLocations[@]} ; do + for jar in `find ${loc} -name "*.jar" 2>/dev/null`; do + bsn=`readBSN ${jar}` + if [ -n "${bsn}" ]; then + versionline=`unzip -p ${jar} 'META-INF/MANIFEST.MF' | grep 'Bundle-Version:'` + vers=`echo "${versionline}" | sed 's/Bundle-Version: \([a-zA-Z0-9_.-]*\).*/\1/'` + if echo ${wantedBundles} | grep "${bsn}" ; then + cp ${jar} "${destDir}/${bsn}_${vers}.jar" + wantedBundles=`removeFromList "${wantedBundles}" "${bsn}"` + fi + fi + done +done + +} + +function symlinkBundles () { + +# Bootstrap Built Tycho provides some Eclipse bundles +# Prevent non-bootstrap build's de-bundling from symlinking to them +# SCL priority is from right to left. +# X_SCLS expands to list of currently enabled SCLs, in the order they were enabled, if any +scls="$X_SCLS" +baseLocations=( '/usr/share/java/eclipse' '/usr/share/java' '/usr/lib/java' ) +osgiLocations=(${baseLocations[@]} ${osgiLocations[@]} ) +for scl in ${scls} ; do + osgiLocations=( ${baseLocations[@]/#//opt/rh/${scl}/root} ${osgiLocations[@]} ) +done + + +wantedBundles=`echo $1 | tr ',' ' '` + +for loc in ${osgiLocations[@]} ; do + for jar in `find ${loc} -name "*.jar" 2>/dev/null`; do + bsn=`readBSN ${jar}` + if [ -n "${bsn}" ]; then + echo ${wantedBundles} | grep -q "${bsn}" + if [ $? -eq 0 ]; then + ln -s ${jar} "${bsn}.jar" + wantedBundles=`removeFromList "${wantedBundles}" "${bsn}"` + fi + fi + done +done +} + +function removeFromList () { +arr=( ${1} ) +for (( i=0; i < ${#arr[@]}; i++ )); do + if [ "${arr[${i}]}" = "$2" ]; then + arr[${i}]= + fi +done +echo ${arr[@]} +} + +function isolateProject () { + cp $1/pom.xml $1/pom.xml.boot + + sed -i -e "/org.eclipse.osgi${osgiV}" \ + -e "/org.eclipse.osgi.compatibility.state${osgiCompatV}" \ + -e '//,/<\/parent>/ d' "$1/pom.xml" + if ! grep -q generate-metadata "$1/pom.xml" ; then + sed -i -e "/plexus-component-metadata1.5.5generate-metadata" "$1/pom.xml" + fi + + if [ $# -eq 2 ]; then + sed -i "// a org.eclipse.tycho<\/groupId>$2<\/version>" "$1/pom.xml" + else + sed -i "// a org.eclipse.tycho<\/groupId>${v}<\/version>" "$1/pom.xml" + fi +} + +function unifyProject () { + cp $1/pom.xml.boot $1/pom.xml +} + +function readBSN () { + +bsn= +manEntryPat="^[a-zA-Z-]*:" +foundBSNLine=0 + +while read line; do +if [ ${foundBSNLine} -eq 1 ]; then + echo ${line} | grep -qE ${manEntryPat} + if [ $? -eq 0 ]; then + break + else + bsn=${bsn}"`echo ${line} | sed 's/\([a-zA-Z0-9_.-]*\)\(;\)\?.*/\1/'`" + fi +fi + +echo ${line} | grep -q "Bundle-SymbolicName:" +if [ $? -eq 0 ]; then + bsn=`echo ${line} | grep 'Bundle-SymbolicName:' | sed 's/Bundle-SymbolicName: \([a-zA-Z0-9_.-]*\)\(;\)\?.*/\1/'` + echo ${line} | grep "Bundle-SymbolicName:" | grep -q ";" + if [ $? -eq 0 ]; then + break + fi + foundBSNLine=1 +fi +done < <(unzip -p $1 'META-INF/MANIFEST.MF') + +echo ${bsn} + +} diff --git a/tycho.spec b/tycho.spec new file mode 100644 index 0000000..596cbf7 --- /dev/null +++ b/tycho.spec @@ -0,0 +1,1237 @@ +# Tycho depends on itself, and Eclipse to build but in certain cases these +# requirements may not be satisfiable then building Tycho becomes problematic. +# For example: +# * A library (in Fedora) used by Tycho's runtime broke API and so Tycho +# from the buildroot is broken +# * Building into a new distro or buildroot, where neither Tycho nor Eclipse +# is available yet and we need to build Tycho before building Eclipse +# In bootstrap mode, javac and plain xmvn are used to build a subset of +# Tycho such that it can build a bootstrap mode Eclipse and subsequently +# fully rebuild itself. In this mode, there may be reduced functionality, +# so a full non-bootstrap mode build should always be done afterwards. +%bcond_with bootstrap + +# Allow conditionally building without Junit 5 support +%bcond_with junit5 + +# Release tags or git SHAs +%global git_tag tycho-%{version} +%global fp_p2_git_tag 290f67a4c717599b2f5166ea89aa5365571314b1 + +%global fp_p2_version 0.0.1 +%global fp_p2_snap -SNAPSHOT + +# The location of the xmvn dir into which we need to install the xmvn plugin +%global xmvn_libdir %(realpath $(dirname $(readlink -f $(which xmvn)))/../lib) + +%define __requires_exclude osgi* + +Name: tycho +Version: 2.1.0 +Release: 1%{?dist} +Summary: Plugins and extensions for building Eclipse plugins and OSGI bundles with Maven + +# license file is missing but all files having some licensing information are ASL 2.0 +License: ASL 2.0 and EPL-1.0 +URL: http://eclipse.org/tycho + +# Tycho project source +Source0: http://git.eclipse.org/c/tycho/org.eclipse.tycho.git/snapshot/org.eclipse.tycho-%{git_tag}.tar.xz +# Eclipse Plugin Project supporting filesystem as p2 repository +Source1: https://github.com/rgrunber/fedoraproject-p2/archive/%{fp_p2_git_tag}/fedoraproject-p2-%{fp_p2_git_tag}.tar.gz + +# this is a workaround for maven-plugin-plugin changes that happened after +# version 2.4.3 (impossible to have empty mojo created as aggregate). This +# should be fixed upstream properly +Source2: EmptyMojo.java +Source3: tycho-scripts.sh +Source4: tycho-bootstrap.sh +Source5: tycho-debundle.sh +# Script that can be used to install or simulate installation of P2 +# artifacts. It is used in OSGi requires generation. +Source6: p2-install.sh + +# Fedora Eclipse bundles needed to build Tycho when Eclipse is not present +# or when the Eclipse that is present is not compatible +%if %{with bootstrap} +Source10: eclipse-bootstrap-2020-09.tar.xz +%endif + +# Fedora-specific patches +Patch0: 0001-Fix-the-Tycho-build-to-work-on-Fedora.patch +Patch1: 0002-Implement-a-custom-resolver-for-Tycho-in-local-mode.patch +Patch2: 0003-Tycho-should-always-delegate-artifact-resolution-to-.patch +Patch5: 0006-Use-custom-resolver-for-tycho-eclipserun-plugin.patch +# Fix compile error with uncaught exception +Patch3: 0004-Fix-uncaught-exception.patch +# Fix incorrect generated requires +Patch4: 0005-Fix-dependency-problems-when-bootstrapping-with-extr.patch +# Revert of https://git.eclipse.org/c/tycho/org.eclipse.tycho.git/commit/?id=645ff2273c18af08088e4a7f80dad1627a96f447 +# Can be dropped when Fedora gets surefire >= 2.22.2 +Patch6: 0007-Revert-change-for-surefire-update-that-is-not-in-Fed.patch + +# Upstream Eclipse no longer supports non-64bit arches +ExcludeArch: s390 %{arm} %{ix86} + +BuildArch: noarch + +# Extras was folded into the main tycho package in F31 +Obsoletes: tycho-extras < 1.6.0-1 +Provides: tycho-extras = %{version}-%{release} + +BuildRequires: maven-local +BuildRequires: mvn(biz.aQute.bnd:bnd-maven-plugin) +BuildRequires: mvn(com.beust:jcommander) +BuildRequires: mvn(de.pdark:decentxml) +BuildRequires: mvn(io.takari.polyglot:polyglot-common) >= 0.4.5 +BuildRequires: mvn(org.apache.commons:commons-compress) +BuildRequires: mvn(org.apache.commons:commons-exec) +BuildRequires: mvn(org.apache.commons:commons-lang3) +BuildRequires: mvn(org.apache.felix:maven-bundle-plugin) +BuildRequires: mvn(org.apache.maven:maven-archiver) +BuildRequires: mvn(org.apache.maven:maven-compat) +BuildRequires: mvn(org.apache.maven:maven-core) +BuildRequires: mvn(org.apache.maven:maven-model) +BuildRequires: mvn(org.apache.maven:maven-model-builder) +BuildRequires: mvn(org.apache.maven:maven-plugin-api) +BuildRequires: mvn(org.apache.maven.plugins:maven-antrun-plugin) +BuildRequires: mvn(org.apache.maven.plugins:maven-clean-plugin) +BuildRequires: mvn(org.apache.maven.plugins:maven-dependency-plugin) +BuildRequires: mvn(org.apache.maven.plugins:maven-install-plugin) +BuildRequires: mvn(org.apache.maven.plugins:maven-plugin-plugin) +BuildRequires: mvn(org.apache.maven.plugins:maven-source-plugin) +BuildRequires: mvn(org.apache.maven.plugin-tools:maven-plugin-annotations) +BuildRequires: mvn(org.apache.maven.surefire:maven-surefire-common) +BuildRequires: mvn(org.apache.maven.surefire:surefire-api) +BuildRequires: mvn(org.codehaus.plexus:plexus-archiver) +BuildRequires: mvn(org.codehaus.plexus:plexus-compiler-api) +BuildRequires: mvn(org.codehaus.plexus:plexus-compiler-manager) +BuildRequires: mvn(org.codehaus.plexus:plexus-component-annotations) +BuildRequires: mvn(org.codehaus.plexus:plexus-component-metadata) +BuildRequires: mvn(org.codehaus.plexus:plexus-utils) +BuildRequires: mvn(org.eclipse.jdt:ecj) +BuildRequires: mvn(org.eclipse.sisu:org.eclipse.sisu.plexus) +BuildRequires: mvn(org.fedoraproject.xmvn:xmvn-api) +BuildRequires: mvn(org.fedoraproject.xmvn:xmvn-core) +BuildRequires: mvn(org.fedoraproject.xmvn:xmvn-install) +BuildRequires: mvn(org.fedoraproject.xmvn:xmvn-parent:pom:) +BuildRequires: mvn(org.ow2.asm:asm-tree) +BuildRequires: mvn(org.ow2.asm:asm-util) +BuildRequires: mvn(org.slf4j:slf4j-api) +BuildRequires: mvn(org.slf4j:slf4j-simple) +%if %{with junit5} +BuildRequires: mvn(org.apache.maven.surefire:surefire-junit-platform) +BuildRequires: mvn(org.apiguardian:apiguardian-api) +BuildRequires: mvn(org.opentest4j:opentest4j) +%endif + +%if ! %{with bootstrap} +# Ordinarily Tycho additionally requires itself and Eclipse to build +BuildRequires: %{name} +BuildRequires: eclipse-platform >= 1:4.17 +%else +# For bootstrapping, we just need the dependencies of the Eclipse bundles we use +BuildRequires: osgi(com.ibm.icu) +BuildRequires: osgi(org.apache.commons.jxpath) +BuildRequires: osgi(org.apache.batik.css) +BuildRequires: osgi(org.apache.felix.scr) +BuildRequires: osgi(org.sat4j.core) +BuildRequires: osgi(org.sat4j.pb) +BuildRequires: osgi(org.w3c.css.sac) +BuildRequires: glassfish-annotation-api +BuildRequires: glassfish-servlet-api +BuildRequires: glassfish-jsp-api +BuildRequires: jna +BuildRequires: jna-contrib +%endif + +Requires: maven-local +Requires: xmvn-minimal +Requires: ecj + +%if ! %{with bootstrap} +Requires: eclipse-platform >= 1:4.17 +%endif + +# maven-clean-plugin is bound to "initialize" Maven phase for +# "eclipse-repository" projects +Requires: maven-clean-plugin + +%description +Tycho is a set of Maven plugins and extensions for building Eclipse +plugins and OSGI bundles with Maven. Eclipse plugins and OSGI bundles +have their own metadata for expressing dependencies, source folder +locations, etc. that are normally found in a Maven POM. Tycho uses +native metadata for Eclipse plugins and OSGi bundles and uses the POM +to configure and drive the build. Tycho supports bundles, fragments, +features, update site projects and RCP applications. Tycho also knows +how to run JUnit test plugins using OSGi runtime and there is also +support for sharing build results using Maven artifact repositories. + +Tycho plugins introduce new packaging types and the corresponding +lifecycle bindings that allow Maven to use OSGi and Eclipse metadata +during a Maven build. OSGi rules are used to resolve project +dependencies and package visibility restrictions are honored by the +OSGi-aware JDT-based compiler plugin. Tycho will use OSGi metadata and +OSGi rules to calculate project dependencies dynamically and injects +them into the Maven project model at build time. Tycho supports all +attributes supported by the Eclipse OSGi resolver (Require-Bundle, +Import-Package, Eclipse-GenericRequire, etc). Tycho will use proper +classpath access rules during compilation. Tycho supports all project +types supported by PDE and will use PDE/JDT project metadata where +possible. One important design goal in Tycho is to make sure there is +no duplication of metadata between POM and OSGi metadata. + +%package javadoc +Summary: Javadocs for %{name} +# Extras was folded into the main tycho package in F31 +Obsoletes: tycho-extras-javadoc < 1.6.0-1 +Provides: tycho-extras-javadoc = %{version}-%{release} + +%description javadoc +This package contains the API documentation for %{name}. + +%prep +%setup -q -n org.eclipse.tycho-%{git_tag} -a 1 +mv fedoraproject-p2-%{fp_p2_git_tag} fedoraproject-p2 + +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 + +# Unneeded for RPM builds +%pom_remove_plugin :maven-site-plugin + +# These tycho plug-ins don't make sense in the context of RPM builds of Eclipse plug-ins +%pom_disable_module tycho-buildtimestamp-jgit tycho-extras +%pom_disable_module tycho-sourceref-jgit tycho-extras + +%if %{without junit5} +%pom_disable_module org.eclipse.tycho.surefire.junit5 tycho-surefire +%pom_disable_module org.eclipse.tycho.surefire.junit54 tycho-surefire +%pom_disable_module org.eclipse.tycho.surefire.junit55 tycho-surefire +%pom_disable_module org.eclipse.tycho.surefire.junit56 tycho-surefire +%pom_remove_dep ":org.eclipse.tycho.surefire.junit5" tycho-surefire/tycho-surefire-plugin +%pom_remove_dep ":org.eclipse.tycho.surefire.junit54" tycho-surefire/tycho-surefire-plugin +%pom_remove_dep ":org.eclipse.tycho.surefire.junit55" tycho-surefire/tycho-surefire-plugin +%pom_remove_dep ":org.eclipse.tycho.surefire.junit56" tycho-surefire/tycho-surefire-plugin +%endif + +# Move from org.sonatype.aether to org.eclipse.aether +find . -name "*.java" | xargs sed -i 's/org.sonatype.aether/org.eclipse.aether/g' +find . -name "*.java" | xargs sed -i 's/org.eclipse.aether.util.DefaultRepositorySystemSession/org.eclipse.aether.DefaultRepositorySystemSession/g' +sed -i 's/public int getPriority/public float getPriority/g' tycho-core/src/main/java/org/eclipse/tycho/core/p2/P2RepositoryConnectorFactory.java + +# Relax dep on aqute-bndlib +sed -i -e '/biz.aQute.bndlib/s/5.1.2/3.5.0/' \ + tycho-bundles/org.eclipse.tycho.p2.resolver.impl/META-INF/MANIFEST.MF +# Relax dep on asm +sed -i -e 's/ASM9/ASM8/' \ + tycho-artifactcomparator/src/main/java/org/eclipse/tycho/zipcomparator/internal/ClassfileComparator.java +# Fix dep on slf4j +sed -i -e '/slf4j.api/s/org.slf4j.api/slf4j.api/' \ + tycho-bundles/tycho-bundles-external/tycho-bundles-external.product + +# place empty mojo in place +mkdir -p tycho-maven-plugin/src/main/java/org/fedoraproject +pushd tycho-maven-plugin/src/main/java/org/fedoraproject +cp %{SOURCE2} . +popd + +# Homogenise requirement on OSGi bundle +%if %{with bootstrap} +sed -i -e "s/>org.eclipse.platformorg.eclipse.tychoorg.eclipse.tychoorg.eclipse.platformtycho" %{_mavenpomdir}/tycho/tycho.pom | grep "version" | sed 's/.*>\(.*\)<.*/\1/'` +mkdir boot +sed -e 's/ns[0-9]://g' %{_datadir}/maven-metadata/tycho.xml > boot/tycho-metadata.xml + +# Copy Tycho POMs from system repo and set their versions to %%{version}-SNAPSHOT. +for pom in $(grep 'pom' boot/tycho-metadata.xml | sed 's|.*>\(.*\)<.*|\1|'); do + sed -e "s/>$sysVer/>%{version}-SNAPSHOT/g" -e "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. +cp -p $(build-classpath tycho/tycho-maven-plugin) boot/tycho-maven-plugin.jar +jar xf boot/tycho-maven-plugin.jar META-INF/plexus/components.xml +sed -i s/$sysVer/%{version}-SNAPSHOT/ META-INF/plexus/components.xml +jar uf boot/tycho-maven-plugin.jar META-INF/plexus/components.xml + +# Create XMvn metadata for the new JARs and POMs by customizing system Tycho metadata. +sed -i -e 's/xmlns=".*"//' boot/tycho-metadata.xml +%pom_xpath_remove -f "metadata/artifacts/artifact[artifactId='org.eclipse.osgi']" boot/tycho-metadata.xml +%pom_xpath_remove -f "metadata/artifacts/artifact[artifactId='org.eclipse.osgi.util']" boot/tycho-metadata.xml +%pom_xpath_remove -f "metadata/artifacts/artifact[artifactId='org.eclipse.osgi.services']" boot/tycho-metadata.xml +%pom_xpath_remove -f "metadata/artifacts/artifact[artifactId='org.eclipse.osgi.compatibility.state']" boot/tycho-metadata.xml +sed -i ' + 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| +' boot/tycho-metadata.xml +%mvn_config resolverSettings/metadataRepositories/repository $PWD/boot/tycho-metadata.xml +%endif + +# Avoid duplicate execution of clean when generating javadocs, see ebz#399756 +%pom_add_plugin :maven-clean-plugin tycho-bundles/tycho-standalone-p2-director " + + + default-clean-1 + initialize + + true + + +" + +# Add fp-p2 to main build +%pom_xpath_inject "pom:modules" "fedoraproject-p2" + +%build +%mvn_build -f -- \ + -Dtycho-version=%{version}-SNAPSHOT -DtychoBootstrapVersion=%{version}-SNAPSHOT \ + -Dmaven.repo.local=$(pwd)/.m2 -Dfedora.p2.repos=$(pwd)/bootstrap -Dasm-version=8.0.1 + +%mvn_artifact fedoraproject-p2/org.fedoraproject.p2/pom.xml + +# Relying on xmvn p2 plugin being present would be a circular dep +# So install as if all artifacts are normal jar files +sed -i -e 's|type>eclipse.*<|type>jar<|' .xmvn-reactor + +# Don't package target platform definition files +%mvn_package "::target::" __noinstall + +%install +# Get debundling scripts +cp %{SOURCE3} %{SOURCE5} . + +%if ! %{with bootstrap} +# Debundle p2 runtime +./tycho-debundle.sh $(pwd)/tycho-bundles/tycho-bundles-external \ + $(pwd)/tycho-bundles/tycho-bundles-external/target/tycho-bundles-external-manifest.txt + +# Debundle standalone p2 director +./tycho-debundle.sh $(pwd)/tycho-bundles/tycho-standalone-p2-director +%endif + +%if %{with bootstrap} +# Install our own copy of OSGi runtime when bootstrapping to avoid external dep on Eclipse +for b in org.eclipse.osgi \ + org.eclipse.osgi.util \ + org.eclipse.osgi.services \ + org.eclipse.osgi.compatibility.state ; do + osgiJarPath=$(find .m2/org/eclipse/tycho/$b/*/ -name "*.jar") + osgiPomPath=$(find .m2/org/eclipse/tycho/$b/*/ -name "*.pom") + %mvn_artifact $osgiPomPath $osgiJarPath +done +%endif + +%mvn_install + +%if ! %{with bootstrap} +install -pm 644 tycho-bundles/tycho-bundles-external/target/tycho-bundles-external-manifest.txt %{buildroot}%{_javadir}/tycho +%add_maven_depmap org.eclipse.tycho:tycho-bundles-external:txt:manifest:%{version} tycho/tycho-bundles-external-manifest.txt +%endif + +%if %{with bootstrap} +# Misc other bundles needed for bootstrapping +for bnd in \ + core.contenttype \ + core.expressions \ + core.filesystem \ + core.jobs \ + core.net \ + core.resources \ + core.runtime \ + equinox.app \ + equinox.common \ + equinox.concurrent \ + equinox.preferences \ + equinox.registry \ + equinox.security ; do +bndJarPath=$(find bootstrap -name "org.eclipse.${bnd}_*.jar") +install -m 644 -T $bndJarPath $RPM_BUILD_ROOT%{_javadir}/tycho/$bnd.jar +done +%endif + +# For some reason fp-p2 is treated as a compat version, this prevents that +# TODO: figure out why +sed -i '//d' %{buildroot}%{_datadir}/maven-metadata/tycho.xml + +# p2-install script +install -dm 755 %{buildroot}%{_javadir}-utils/ +install -pm 755 %{SOURCE6} %{buildroot}%{_javadir}-utils/ + +# Symlink XMvn P2 plugin with all dependencies so that it can be loaded by XMvn +install -dm 755 %{buildroot}%{xmvn_libdir}/installer/ +%if %{with bootstrap} +ln -s %{_javadir}/tycho/org.eclipse.osgi.jar %{buildroot}%{xmvn_libdir}/installer/ +%else +ln -s %{_javadir}/eclipse/osgi.jar %{buildroot}%{xmvn_libdir}/installer/ +%endif +ln -s %{_javadir}/tycho/xmvn-p2-installer-plugin.jar %{buildroot}%{xmvn_libdir}/installer/ +ln -s %{_javadir}/tycho/org.fedoraproject.p2.jar %{buildroot}%{xmvn_libdir}/installer/ + +%files -f .mfiles +%{xmvn_libdir}/installer/* +%{_javadir}-utils/p2-install.sh +%if %{with bootstrap} +%{_javadir}/tycho/core.*.jar +%{_javadir}/tycho/equinox.*.jar +%endif +%doc README.md + +%files javadoc -f .mfiles-javadoc + +%changelog +* Tue Nov 24 2020 Mat Booth - 2.1.0-1 +- Update to latest upstream release + +* Wed Nov 11 2020 Mat Booth - 1.7.0-4 +- Debootstrap build + +* Wed Nov 11 2020 Mat Booth - 1.7.0-3 +- Add deps needed for bootstrapping + +* Wed Nov 11 2020 Mat Booth - 1.7.0-2 +- Bootstrap against Eclipse 4.17 + +* Wed Nov 11 2020 Mat Booth - 1.7.0-1 +- Interrim update to tycho version + +* Tue Aug 18 2020 Mat Booth - 1.6.0-6 +- Fix bootstrap mode against Java 11 + +* Wed Jul 29 2020 Fedora Release Engineering - 1.6.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Sat Jul 11 2020 Jiri Vanek - 1.6.0-4 +- Rebuilt for JDK-11, see https://fedoraproject.org/wiki/Changes/Java11 + +* Sat Mar 21 2020 Mat Booth - 1.6.0-3 +- Add missing resolver patch for eclipserun plugin + +* Fri Mar 20 2020 Mat Booth - 1.6.0-2 +- Add obsoletes/provides for extras javadoc package + +* Wed Feb 19 2020 Mat Booth - 1.6.0-1 +- Update to latest upstream release + +* Fri Jan 31 2020 Fedora Release Engineering - 1.5.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Mon Jan 27 2020 Mat Booth - 1.5.0-5 +- Fix build with Eclipse 4.14 + +* Thu Jan 23 2020 Mat Booth - 1.5.0-4 +- Remove references to kxml/xpp3 + +* Wed Dec 18 2019 Mat Booth - 1.5.0-3 +- Full build + +* Wed Dec 18 2019 Mat Booth - 1.5.0-2 +- Bootstrap mode + +* Tue Dec 17 2019 Mat Booth - 1.5.0-1 +- Update to latest upstream release + +* Fri Aug 09 2019 Mat Booth - 1.4.0-2 +- Fix bootstrapping with new ECF + +* Fri May 24 2019 Mat Booth - 1.4.0-1 +- Update to latest upstream release + +* Tue May 07 2019 Mat Booth - 1.3.0-5 +- Don't build tests, they are not being run anyway + +* Mon Mar 11 2019 Mat Booth - 1.3.0-4 +- Debootstrap build +- Restrict to the same architectures as Eclipse itself + +* Mon Mar 11 2019 Mat Booth - 1.3.0-3 +- Bootstrap with new felix-scr + +* Tue Feb 19 2019 Mat Booth - 1.3.0-2 +- Allow building against ASM 6 + +* Mon Feb 18 2019 Mat Booth - 1.3.0-1 +- Update to latest upstream release +- Allow conditionally building Junit5 support + +* Sun Feb 03 2019 Fedora Release Engineering - 1.2.0-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Thu Dec 13 2018 Mat Booth - 1.2.0-7 +- Fix build against newest Mockito and ASM + +* Mon Aug 20 2018 Mat Booth - 1.2.0-6 +- Rebuild against Eclipse 2018-09 + +* Fri Aug 17 2018 Mat Booth - 1.2.0-5 +- Bootstrap mode improvements +- Patch to use Java 8 as the default target EE, prevents unnecessary dep + on Java 9 + +* Wed Jul 25 2018 Mat Booth - 1.2.0-4 +- Fix build against new surefire + +* Sat Jul 14 2018 Fedora Release Engineering - 1.2.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Thu Jul 12 2018 Mat Booth - 1.2.0-2 +- Bootstrap build + +* Tue Jun 05 2018 Mat Booth - 1.2.0-1 +- Update to latest release for Java 10 support +- Drop upstreamed patch + +* Wed May 09 2018 Mat Booth - 1.2.0-0.5.git5d018bb +- Surefure now used maven-shared-utils instead of plexus-utils, fixes test runs + in other packages + +* Thu May 03 2018 Mat Booth - 1.2.0-0.4.git5d018bb +- Add a proper patch for ebz#534255 + +* Wed May 02 2018 Mat Booth - 1.2.0-0.3.git5d018bb +- Update tycho snapshot and simplify bootstrapping + +* Wed May 02 2018 Mat Booth - 1.2.0-0.2.gitd9ce75d +- Non-bootstrap build + +* Mon Apr 30 2018 Mat Booth - 1.2.0-0.1.gitd9ce75d +- Update to latest tycho snapshot +- Bootstrap build + +* Fri Feb 09 2018 Fedora Release Engineering - 1.0.0-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Fri Dec 08 2017 Mat Booth - 1.0.0-10 +- Calculate xmvn/lib path, allow building against older and newer surefire + +* Wed Oct 11 2017 Mat Booth - 1.0.0-9 +- Port to latest surefire + +* Thu Jul 27 2017 Fedora Release Engineering - 1.0.0-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Wed Jun 21 2017 Mikolaj Izdebski - 1.0.0-7 +- Update to latest fp-p2 snapshot for XMvn 3.0.0 support + +* Tue Jun 20 2017 Mat Booth - 1.0.0-6 +- Improve bootstrap mode + +* Sat Jun 17 2017 Mat Booth - 1.0.0-5 +- Debootstrap build + +* Sat Jun 17 2017 Mat Booth - 1.0.0-4 +- Add osgi.util bundle to tycho runtime + +* Wed May 24 2017 Mikolaj Izdebski - 1.0.0-3 +- Remove no longer needed requires on Maven plugins + +* Wed Apr 26 2017 Mat Booth - 1.0.0-2 +- Debootstrap build + +* Thu Apr 20 2017 Mat Booth - 1.0.0-1 +- Update to 1.0.0 +- Simplify artifact installation +- Tycho 1.0 requires Eclipse Oxygen +- Add felix-scr and deps to tycho-bundles-external + +* Thu Apr 20 2017 Mat Booth - 0.26.0-3 +- Fix and enable bootstrap mode + +* Sat Feb 11 2017 Fedora Release Engineering - 0.26.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Wed Nov 02 2016 Mat Booth - 0.26.0-1 +- Update to latest upstream + +* Mon Jul 25 2016 Mat Booth - 0.25.0-7 +- Remove incomplete SCL macros + +* Thu Jun 30 2016 Mikolaj Izdebski - 0.25.0-6 +- Add missing requires on maven-plugin-testing-harness + +* Thu Jun 30 2016 Mikolaj Izdebski - 0.25.0-5 +- Require full xmvn + +* Wed Jun 15 2016 Mikolaj Izdebski - 0.25.0-4 +- Add missing requires on maven-source-plugin + +* Fri Apr 22 2016 Mat Booth - 0.25.0-3 +- Require newer ECJ with correct aliases + +* Thu Apr 21 2016 Mat Booth - 0.25.0-2 +- Non-bootstrap build against Eclipse Neon + +* Wed Apr 20 2016 Mat Booth - 0.25.0-1 +- Update to latest upstream release +- Full bootstrap mode due to incompatibility with Eclipse Mars + +* Thu Apr 14 2016 Mat Booth - 0.23.0-17 +- Fix build against new maven-archiver, which removed some deprecated methods + that tycho was using + +* Tue Mar 15 2016 Mat Booth - 0.23.0-16 +- Update to latest fp-p2 snapshot + +* Fri Feb 05 2016 Fedora Release Engineering - 0.23.0-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Mon Jan 25 2016 Mat Booth - 0.23.0-14 +- Updates to latest version of fedoraproject-p2. +- fedoraproject-p2: Fix a concurrent modification exception when feature + plugins have circular deps + +* Mon Jan 11 2016 Roland Grunberg - 0.23.0-13 +- Updated to latest version of fedoraproject-p2. +- fedoraproject-p2: Correctly handle splitting virtual packages. + +* Mon Jan 4 2016 Mikolaj Izdebski - 0.23.0-12 +- Update for maven-surefire 2.19.1 + +* Mon Oct 26 2015 Roland Grunberg - 0.23.0-11 +- Fix bug in org.eclipse.tycho.surefire.junit4 provider. + +* Tue Oct 20 2015 Roland Grunberg - 0.23.0-10 +- Update to work with maven-surefire 2.19. + +* Thu Aug 27 2015 Roland Grunberg - 0.23.0-9 +- fedoraproject-p2: Enable support for p2 Droplets. + +* Tue Jul 28 2015 Roland Grunberg - 0.23.0-8 +- fedoraproject-p2: Single IU resolving requirements with multiple matches. + +* Fri Jul 17 2015 Roland Grunberg - 0.23.0-7 +- fedoraproject-p2: Remove host localization fragments from reactor units. + +* Tue Jun 30 2015 Mat Booth - 0.23.0-6 +- Fix bootstrap build +- fedoraproject-p2: Allow xmvn-p2-installer to work in bootstrap mode + +* Thu Jun 25 2015 Roland Grunberg - 0.23.0-5 +- fedoraproject-p2: Do not generate requires for fragments. +- Update to work with maven-surefire 2.18. + +* Fri Jun 19 2015 Fedora Release Engineering - 0.23.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Tue Jun 09 2015 Mat Booth - 0.23.0-3 +- Fix bootstrap build + +* Tue Jun 9 2015 Mikolaj Izdebski - 0.23.0-2 +- Port to Plexus Archiver 3.0.1 + +* Fri Jun 05 2015 Mat Booth - 0.23.0-1 +- Update to 0.23.0 release +- Allow tycho-bootstrap.sh to work with "set -e" to fail faster + and see errors more easily + +* Sat May 30 2015 Alexander Kurtakov 0.22.0-18 +- Fix build with no tomcat servlet. + +* Thu May 07 2015 Mat Booth - 0.22.0-17 +- Add org.tukaani.xz to tycho-bundles-external + +* Tue Apr 28 2015 Roland Grunberg - 0.22.0-16 +- Fix resolution issues when upstream version in local repository. +- Resolves: rhbz#1216170 + +* Thu Apr 23 2015 Mat Booth - 0.22.0-15 +- fedoraproject-p2: Add support for archful dropins + +* Mon Apr 20 2015 Roland Grunberg - 0.22.0-14 +- Handle possible changes to metadata namespace (ns[0-9]). + +* Fri Apr 17 2015 Roland Grunberg - 0.22.0-13 +- fedoraproject-p2: Subpackages '*-tests' should not be in dropins. + +* Sun Mar 29 2015 Mikolaj Izdebski - 0.22.0-12 +- Port to Jetty 9.3.0 + +* Thu Feb 5 2015 Mikolaj Izdebski - 0.22.0-11 +- fedoraproject-p2: Fix support for shallow dropin directory layout + +* Wed Feb 4 2015 Mikolaj Izdebski - 0.22.0-10 +- fedoraproject-p2: Bump BREE to JavaSE-1.8 +- fedoraproject-p2: Fix installing of virtual bundles provided by p2.inf + +* Wed Jan 28 2015 Mikolaj Izdebski - 0.22.0-9 +- fedoraproject-p2: Allow installation of bundles not built with tycho + +* Mon Jan 19 2015 Roland Grunberg - 0.22.0-8 +- Introduce basic SCL support. +- Minor changes for bootstrap build. +- Suppress failed lookups on non-existing paths in scripts. +- Explicitly depend on org.hamcrest.core where necessary. + +* Thu Dec 11 2014 Mat Booth - 0.22.0-7 +- fedoraproject-p2: Fix for bundles containing underscores + +* Wed Dec 10 2014 Mat Booth - 0.22.0-6 +- fedoraproject-p2: Update to latest snapshot + +* Wed Dec 10 2014 Roland Grunberg - 0.22.0-5 +- Rebuild to pick up arch-independent ECF bundle locations. + +* Mon Dec 08 2014 Roland Grunberg - 0.22.0-4 +- fedoraproject-p2: Permit installation of tycho-generated source features. + +* Thu Dec 4 2014 Mikolaj Izdebski - 0.22.0-3 +- Non-bootstrap build + +* Thu Dec 4 2014 Mikolaj Izdebski - 0.22.0-2.1 +- fedoraproject-p2: Add support for installation into SCLs +- Bootstrap build + +* Thu Dec 04 2014 Mat Booth - 0.22.0-2 +- Fix osgi.jar symlink when in eclipse-bootstrap mode +- Remove no longer needed workaround for rhbz#1139180 +- Tidy up and remove unneeded R/BRs +- Also reduce number of changes needed to SCL-ise package + +* Mon Dec 01 2014 Mat Booth - 0.22.0-1 +- Update to tagged release + +* Thu Nov 27 2014 Roland Grunberg - 0.22.0-0.1.gitb1051d +- Update to 0.22.0 pre-release. + +* Thu Nov 27 2014 Mikolaj Izdebski - 0.21.0-23 +- fedoraproject-p2: Obtain SCL roots by parsing Java conf files +- fedoraproject-p2: Add support for installing into SCL root + +* Thu Nov 27 2014 Mikolaj Izdebski - 0.21.0-22 +- Install p2-install.sh script in java-utils/ + +* Thu Nov 27 2014 Mikolaj Izdebski - 0.21.0-21 +- fedoraproject-p2: Implement installer application + +* Tue Nov 25 2014 Mikolaj Izdebski - 0.21.0-20 +- fedoraproject-p2: Update to latest snapshot (SCL improvements) + +* Thu Nov 06 2014 Mat Booth - 0.21.0-19 +- fedoraproject-p2: Fix occasionally failing to generate metadata + +* Tue Oct 28 2014 Roland Grunberg - 0.21.0-18 +- Fixes to bootstrap build. +- Package com.ibm.icu (icu4j-eclipse) for bootstrap build. +- Resolves: rhbz#1129801 + +* Thu Oct 09 2014 Mat Booth - 0.21.0-17 +- fedoraproject-p2: Fix incorrect metadata generation bugs + +* Tue Oct 07 2014 Mat Booth - 0.21.0-16 +- fedoraproject-p2: Update to latest snapshot + +* Thu Oct 02 2014 Roland Grunberg - 0.21.0-15 +- Update to build against plexus-archiver 2.6. + +* Thu Sep 25 2014 Mikolaj Izdebski - 0.21.0-14 +- fedoraproject-p2: Fix requires generation bug + +* Wed Sep 24 2014 Mikolaj Izdebski - 0.21.0-13 +- fedoraproject-p2: Allow installation of source bundles + +* Mon Sep 22 2014 Roland Grunberg - 0.21.0-12 +- Add Fedora system repos to target definition resolver. +- Look for any IU if IU/Version query fails in target definition resolver. + +* Fri Sep 12 2014 Mikolaj Izdebski - 0.21.0-11 +- fedoraproject-p2: Allow installing the same symlink into separate dropins + +* Wed Sep 10 2014 Mikolaj Izdebski - 0.21.0-10 +- Fix tycho-bundles-external-manifest.txt generation + +* Wed Sep 10 2014 Mikolaj Izdebski - 0.21.0-9 +- fedoraproject-p2: Fix self-dependencies failing builds + +* Tue Sep 9 2014 Roland Grunberg - 0.21.0-8 +- Make debundling more resilient to changes. +- fedoraproject-p2: Update to latest (Fix metapackage merging). + +* Mon Sep 8 2014 Mikolaj Izdebski - 0.21.0-8 +- fedoraproject-p2: Import XMvn P2 plugin +- fedoraproject-p2: Fix NPE bug +- fedoraproject-p2: Avoid extracting tycho-bundles-external.zip + +* Fri Sep 05 2014 Roland Grunberg - 0.21.0-7 +- Debundle tycho-bundles-external and tycho-standalone-p2-director. +- Resolves: rhbz#789272 + +* 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 + +* Wed Sep 03 2014 Roland Grunberg - 0.21.0-4 +- fedoraproject-p2: Do not regenerate IU metadata on every query. + +* Thu Aug 28 2014 Mat Booth - 0.21.0-3 +- Perform non-bootstrap build +- Update running-env-only patch + +* Wed Aug 27 2014 Roland Grunberg - 0.21.0-2.1 +- fedoraproject-p2: Fix issues with creation of feature IUs. +- fedoraproject-p2: Fix jar corruption bug. + +* Thu Aug 21 2014 Roland Grunberg - 0.21.0-2 +- Integrate fedoraproject-p2 into Tycho. + +* Thu Jul 24 2014 Roland Grunberg - 0.21.0-1 +- Update to 0.21.0 Release. + +* Fri Jul 11 2014 Mat Booth - 0.20.0-18 +- Allow director plugin to only assemble products for the current arch +- Drop some unneeded BR/Rs on surefire (maven-local pulls these in) + +* Wed Jul 02 2014 Roland Grunberg - 0.20.0-17 +- Return non-existant expected local path when resolution fails. +- Resolves: rhbz#1114120 + +* Fri Jun 27 2014 Roland Grunberg - 0.20.0-16 +- Tycho should always delegate artifact resolution to Maven. + +* Wed Jun 25 2014 Alexander Kurtakov 0.20.0-15 +- Non-bootstrap build now that aarch64 is done. + +* Tue Jun 24 2014 Roland Grunberg - 0.20.0-14.1 +- Add swt aarch64 fragment to bootstrap repo. + +* Tue Jun 24 2014 Alexander Kurtakov 0.20.0-14 +- Full bootstrap build for secondary archs. + +* Thu Jun 12 2014 Mikolaj Izdebski - 0.20.0-13 +- Restore runtime dependencies on XMvn + +* Sun Jun 08 2014 Fedora Release Engineering - 0.20.0-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Tue Jun 3 2014 Mikolaj Izdebski - 0.20.0-11 +- Skip intermediary build in non-bootstrap mode +- Resolves: rhbz#1103839 +- Remove unneeded XMvn bits + +* Fri May 30 2014 Mikolaj Izdebski - 0.20.0-10 +- Fix runtime dependencies on XMvn in POMs +- Use custom Plexus config to lookup XMvn classes +- Lookup Aether WorkspaceReader using role hint "ide" + +* Thu May 29 2014 Mikolaj Izdebski - 0.20.0-9 +- Don'n install duplicate Maven metadata for sisu-equinox + +* Wed May 21 2014 Mikolaj Izdebski - 0.20.0-8 +- Use .mfiles generated during build + +* Fri May 16 2014 Mikolaj Izdebski - 0.20.0-7 +- Add support for XMvn 2.0 + +* Tue May 13 2014 Alexander Kurtakov 0.20.0-6 +- Make tycho copy licence feature to the system repo. + +* Wed Apr 30 2014 Alexander Kurtakov 0.20.0-5 +- Non-bootstrap build. + +* Tue Apr 29 2014 Alexander Kurtakov 0.20.0-4 +- Organize patches. + +* Tue Apr 22 2014 Roland Grunberg - 0.20.0-3 +- Add support for compact profiles (Bug 1090003). + +* Wed Apr 02 2014 Roland Grunberg - 0.20.0-2 +- Non-bootstrap build. + +* Thu Mar 27 2014 Roland Grunberg - 0.20.0-1.1 +- Update to Eclipse Luna (4.4). + +* Mon Mar 24 2014 Roland Grunberg - 0.20.0-1 +- Update to 0.20.0 Release. + +* Wed Mar 12 2014 Roland Grunberg - 0.19.0-11 +- Respect %%{eclipse_bootstrap} flag in tycho-bootstrap.sh. +- Update Eclipse bootstrap cache. +- Fix Equinox Launcher usage logic in copy-platform-all. + +* Thu Mar 06 2014 Roland Grunberg - 0.19.0-10 +- Non-bootstrap build. + +* Thu Mar 06 2014 Roland Grunberg - 0.19.0-9.1 +- Do not check %%{_libdir}/eclipse plugins/features folders twice. + +* Wed Feb 26 2014 Mikolaj Izdebski - 0.19.0-9 +- Improve logging and error handling fop copy-platform-all + +* Wed Jan 15 2014 Roland Grunberg - 0.19.0-8 +- Perform a pure bootstrap build. +- Fix issues with bootstrap build. + +* Thu Jan 09 2014 Roland Grunberg - 0.19.0-7 +- Fix bootstrap build. + +* Mon Jan 6 2014 Mikolaj Izdebski - 0.19.0-6 +- Fix usage of %%add_maven_depmap for zip files +- Resolves: rhbz#1004310 + +* Mon Dec 9 2013 Alexander Kurtakov 0.19.0-5 +- Switch to using %%mvn_build. +- Update BR/R names. +- Adapt to asm5. + +* Thu Nov 21 2013 Roland Grunberg - 0.19.0-4 +- Return expected reactor cache location when XMvn resolution fails. + +* Wed Nov 20 2013 Roland Grunberg - 0.19.0-3 +- Bump release for rebuild (Bug 1031769). + +* Mon Nov 18 2013 Roland Grunberg - 0.19.0-2 +- Reduce length of file lock name when file is in build directory. + +* Thu Oct 24 2013 Roland Grunberg - 0.19.0-1 +- Update to 0.19.0 Release. + +* Fri Oct 04 2013 Roland Grunberg - 0.18.1-7 +- Do not use XMvn internals (Bug 1015038). + +* Thu Oct 3 2013 Krzysztof Daniel 0.18.1-6 +- Adjust to latest Xmvn (workaround for 1015038). + +* Mon Sep 9 2013 Mikolaj Izdebski - 0.18.1-5 +- Add workaround for rhbz#1004310 + +* Tue Jul 30 2013 Roland Grunberg - 0.18.1-4 +- Improve artifact resolution using XMvn Resolver. (Bug 986900) + +* Mon Jul 29 2013 Roland Grunberg - 0.18.1-3 +- Fix Tycho file locking to work in Fedora. +- Skip validateConsistentTychoVersion by default. (Bug 987271) + +* Wed Jul 24 2013 Roland Grunberg - 0.18.1-2 +- Non-bootstrap build. + +* Wed Jul 24 2013 Roland Grunberg - 0.18.1-1.1 +- Update to use Eclipse Aether. +- Use MavenSession and Plexus to determine state. +- Fix bootstrap build. + +* Thu Jul 18 2013 Roland Grunberg 0.18.1-1 +- Make changes to ensure intermediary build succeeds. +- Remove %%Patch6 in favour of call to sed. + +* Thu Jul 18 2013 Krzysztof Daniel 0.18.1-1 +- Update to 0.18.1. + +* Tue Jul 16 2013 Roland Grunberg - 0.18.0-5 +- Look for maven artifacts using XMvn Resolver. + +* Tue Jul 9 2013 Roland Grunberg 0.18.0-4 +- Update to use maven-surefire 2.15 API. + +* Fri Jul 5 2013 Alexander Kurtakov 0.18.0-3 +- Use _jnidir too when building local p2 repo. + +* Thu Jun 6 2013 Mikolaj Izdebski - 0.18.0-2 +- Add Requires on plugins present in Maven super POM +- Resolves: rhbz#971301 + +* Tue May 28 2013 Roland Grunberg 0.18.0-1 +- Update to 0.18.0 Release. + +* Thu Apr 11 2013 Roland Grunberg 0.17.0-1 +- Fix bootstrap build for potential future use. + +* Tue Apr 2 2013 Roland Grunberg 0.17.0-1 +- Update to 0.17.0 Release. + +* Mon Mar 18 2013 Roland Grunberg 0.17.0-0.11.git3351b1 +- Non-bootstrap build. + +* Mon Mar 18 2013 Krzysztof Daniel 0.17.0-0.10.git3351b1 +- Merge mizdebsk patch with existing custom resolver patch. + +* Mon Mar 18 2013 Krzysztof Daniel 0.17.0-0.9.git3351b1 +- Move the patch into better place. + +* Mon Mar 18 2013 Krzysztof Daniel 0.17.0-0.8.git3351b1 +- Non-bootstrap build. + +* Mon Mar 18 2013 Krzysztof Daniel 0.17.0-0.7.git3351b1 +- Commit the patch. + +* Mon Mar 18 2013 Krzysztof Daniel 0.17.0-0.6.git3351b1 +- Use plexus to instantiate workspace reader. + +* Sun Mar 17 2013 Roland Grunberg 0.17.0-0.5.git3351b1 +- Non-bootstrap build. + +* Fri Mar 15 2013 Roland Grunberg 0.17.0-0.4.git3351b1 +- Update bootstrapped build for 0.17.0-SNAPSHOT to work against 0.16.0. +- Update to Plexus Compiler 2.2 API. + +* Thu Feb 28 2013 Roland Grunberg 0.17.0-0.3.git3351b1 +- Update to using Jetty 9 API. + +* Mon Feb 25 2013 Roland Grunberg 0.17.0-0.2.git3351b1 +- Set the global default execution environment to JavaSE-1.6. +- Patch clean-up. + +* Mon Feb 25 2013 Krzysztof Daniel 0.17.0-0.1.git3351b1 +- Update to latest upstream. +- RHBZ#915194 - API changed in maven-surefire + +* Wed Feb 6 2013 Roland Grunberg 0.16.0-21 +- Non-bootstrap build. + +* Wed Feb 06 2013 Java SIG - 0.16.0-20.2 +- Update for https://fedoraproject.org/wiki/Fedora_19_Maven_Rebuild +- Replace maven BuildRequires with maven-local + +* Wed Feb 6 2013 Roland Grunberg 0.16.0-20.1 +- Change BR/R on maven to maven-local for XMvn support. +- Build bootstrapped to fix missing Fedora Maven class. + +* Thu Jan 24 2013 Roland Grunberg 0.16.0-20 +- Use TYCHO_MVN_{LOCAL,RPMBUILD} to determine how maven was called. +- Update to maven-surefire 2.13. + +* Thu Dec 20 2012 Roland Grunberg 0.16.0-19 +- Fix upstream Bug 361204. + +* Mon Dec 3 2012 Roland Grunberg 0.16.0-18 +- Add support for more flexible OSGi bundle paths. +- Use OSGi Requires instead of package name. +- Expand Requires to include the Eclipse platform. + +* Mon Nov 19 2012 Roland Grunberg 0.16.0-17 +- Make additional changes to get Tycho building bootstrapped. + +* Mon Nov 5 2012 Roland Grunberg 0.16.0-16 +- Add capability to build without depending on Tycho or Eclipse. + +* Sat Oct 20 2012 Roland Grunberg 0.16.0-15 +- Package org.eclipse.osgi and org.eclipse.jdt.core. + +* Fri Oct 19 2012 Roland Grunberg 0.16.0-14 +- Update to finalized 0.16.0 Release. + +* Wed Oct 17 2012 Roland Grunberg 0.16.0-13 +- Build Tycho properly in one RPM build. +- Update to 0.16.0 Release. + +* Thu Oct 11 2012 Roland Grunberg 0.16.0-12.d7f885 +- Non-bootstrap build. + +* Thu Oct 11 2012 Roland Grunberg 0.16.0-11.1.d7f885 +- Remove dependence on eclipse by use of self-bundled equinox launcher. + +* Wed Oct 10 2012 Roland Grunberg 0.16.0-11.d7f885 +- copy-platform-all should make symlinked jars from %%{_javadir} unique. +- Non-bootstrap build (reset the %%bootstrap flag properly). + +* Mon Oct 8 2012 Krzysztof Daniel 0.16.0-10.d7f885 +- Non-bootstrap build. + +* Mon Oct 8 2012 Krzysztof Daniel 0.16.0-9.1.d7f885 +- Filter out OSGi dependencies. + +* Thu Oct 4 2012 Roland Grunberg 0.16.0-9.d7f885 +- Non-bootstrap build. + +* Thu Oct 4 2012 Roland Grunberg 0.16.0-8.1.d7f885 +- Fix Bug in overriding of BREE to JavaSE-1.6. + +* Wed Oct 3 2012 Roland Grunberg 0.16.0-8.d7f885 +- Non-bootstrap build. + +* Wed Oct 3 2012 Roland Grunberg 0.16.0-7.1.d7f885 +- Update to latest 0.16.0 SNAPSHOT. +- First attempts to build without cyclic dependency to JDT. + +* Mon Aug 27 2012 Roland Grunberg 0.16.0-7.df2c35 +- Non bootstrap-build. + +* Mon Aug 27 2012 Roland Grunberg 0.16.0-6.1.df2c35 +- Add BR/R on explicit dependency objectweb-asm4. +- Use consistent whitespace in specfile. + +* Fri Aug 24 2012 Roland Grunberg 0.16.0-6.df2c35 +- Non-bootstrap build. + +* Thu Aug 23 2012 Roland Grunberg 0.16.0-5.1.df2c35 +- Set BREE to at least JavaSE-1.6 for all eclipse packaging types. +- Remove unneeded workaround for JSR14 incompatibility of JDK 1.7. + +* Wed Aug 15 2012 Roland Grunberg 0.16.0-5.df2c35 +- Non-bootstrap build. + +* Mon Aug 13 2012 Roland Grunberg 0.16.0-4.1.df2c35 +- Correctly reference objectweb-asm4 and fix local mode resolution bug. +- Update spec file to honour new java packaging guidelines. + +* Thu Aug 9 2012 Roland Grunberg 0.16.0-4.df2c35 +- Non-bootstrap build. + +* Thu Aug 9 2012 Roland Grunberg 0.16.0-3.1.df2c35 +- Add tycho.local.keepTarget flag to bypass ignoring environments. + +* Thu Aug 9 2012 Krzysztof Daniel 0.16.0-3.df2c35 +- Non-bootstrap build. + +* Thu Aug 9 2012 Krzysztof Daniel 0.16.0-2.1.df2c35 +- Use recommended %%add_maven_depmap. + +* Thu Aug 9 2012 Krzysztof Daniel 0.16.0-2.df2c35 +- Non-bootstrap build. + +* Thu Aug 9 2012 Krzysztof Daniel 0.16.0-1.2.df2c35 +- Properly change bootstrap flag. +- Add some git ignores. + +* Thu Aug 9 2012 Krzysztof Daniel 0.16.0-1.1.df2c35 +- Install missing tycho-standalone-p2-director.zip. + +* Thu Aug 2 2012 Roland Grunberg 0.16.0-1.df2c35 +- Update to 0.16.0 SNAPSHOT. + +* Tue Jul 31 2012 Roland Grunberg 0.15.0-3 +- Non-bootstrap build. + +* Tue Jul 31 2012 Roland Grunberg 0.15.0-2.1 +- Ignore defined environments in local mode. + +* Mon Jul 30 2012 Roland Grunberg 0.15.0-2 +- Non-bootstrap build. + +* Mon Jul 30 2012 Roland Grunberg 0.15.0-1.1 +- Fix copy-platform-all script to properly link %%{_datadir}/eclipse jars. + +* Thu Jul 26 2012 Roland Grunberg 0.15.0-1 +- Update to 0.15.0. +- Set BREE to at least JavaSE-1.6 for Eclipse feature bundles. + +* Wed Jul 25 2012 Roland Grunberg 0.14.1-7 +- Non-bootstrap build. + +* Mon Jul 23 2012 Roland Grunberg 0.14.1-6 +- Detect OSGi jars using presence of Bundle-SymbolicName entry (BZ #838513). + +* Sun Jul 22 2012 Fedora Release Engineering - 0.14.1-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Mon Jun 11 2012 Roland Grunberg 0.14.1-5 +- Non-bootstrap build. + +* Tue May 29 2012 Roland Grunberg 0.14.1-4.1 +- Fix Tycho Surfire to run Eclipse test bundles. +- Implement automatic creation of a system p2 repository. +- Allow building SWT fragments (BZ #380934). + +* Wed May 23 2012 Roland Grunberg 0.14.1-4 +- Non-bootstrap build. + +* Thu May 17 2012 Roland Grunberg 0.14.1-3.1 +- Set BREE to be at least JavaSE-1.6 for Eclipse OSGi bundles. + +* Wed May 16 2012 Roland Grunberg 0.14.1-3 +- Non-bootstrap build. + +* Wed Apr 25 2012 Roland Grunberg 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 0.14.1-2 +- Non-bootstrap build. + +* Tue Mar 27 2012 Roland Grunberg 0.14.1-1.1 +- Add missing tycho-testing-harness to be packaged. +- Use %%{_eclipse_base} from eclipse-platform. + +* Fri Mar 9 2012 Roland Grunberg 0.14.1-1 +- Update to 0.14.1 upstream tag. +- Allow building against maven-surefire 2.12 (instead of 2.10). +- Stop symlinking o.e.osgi and o.e.jdt.core into the m2 cache. + +* Thu Feb 16 2012 Roland Grunberg 0.14.0-4 +- Non-bootstrap build. + +* Tue Feb 14 2012 Roland Grunberg 0.14.0-3 +- Update to 0.14.0 upstream tag. + +* Thu Feb 9 2012 Roland Grunberg 0.14.0-2 +- Non-bootstrap build. + +* Wed Feb 01 2012 Roland Grunberg - 0.14.0-1 +- Update to 0.14.0. + +* Sat Jan 14 2012 Fedora Release Engineering - 0.10.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Fri May 27 2011 Stanislav Ochotnicky - 0.12.0-0.1.a74b1717 +- Update to new version do bootstrap from scratch + +* Fri May 6 2011 Alexander Kurtakov 0.10.0-3 +- Non-bootstrap build. + +* Tue May 3 2011 Stanislav Ochotnicky - 0.10.0-2 +- Add README and make build more silent + +* Tue Mar 29 2011 Stanislav Ochotnicky - 0.10.0-1 +- First bootstrapped version