From 84bf7c26f8d482a4214428b719170afbe02b928a Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Feb 07 2020 08:26:29 +0000 Subject: import tycho-1.4.0-2.module+el8.1.1+4657+f90e8085 --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..888737e --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +SOURCES/fedoraproject-p2-290f67a4c717599b2f5166ea89aa5365571314b1.tar.gz +SOURCES/org.eclipse.tycho-tycho-1.4.0.tar.xz diff --git a/.tycho.metadata b/.tycho.metadata new file mode 100644 index 0000000..04cc225 --- /dev/null +++ b/.tycho.metadata @@ -0,0 +1,2 @@ +95db40ba7632e9d1cc78b1aef59440a1f7bea532 SOURCES/fedoraproject-p2-290f67a4c717599b2f5166ea89aa5365571314b1.tar.gz +5f0700a1da64982e9e700372a57a084c4f6b0447 SOURCES/org.eclipse.tycho-tycho-1.4.0.tar.xz diff --git a/SOURCES/0001-Fix-the-Tycho-build-to-work-on-Fedora.patch b/SOURCES/0001-Fix-the-Tycho-build-to-work-on-Fedora.patch new file mode 100644 index 0000000..2ff8a53 --- /dev/null +++ b/SOURCES/0001-Fix-the-Tycho-build-to-work-on-Fedora.patch @@ -0,0 +1,53 @@ +From f4cc3361a141ac14556a956745bd0488bee2420d Mon Sep 17 00:00:00 2001 +From: Roland Grunberg +Date: Tue, 12 Jun 2012 09:56:38 -0400 +Subject: [PATCH 1/6] 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 3cba466..f733774 100644 +--- a/tycho-core/src/main/java/org/eclipse/tycho/core/maven/TychoMavenLifecycleParticipant.java ++++ b/tycho-core/src/main/java/org/eclipse/tycho/core/maven/TychoMavenLifecycleParticipant.java +@@ -102,7 +102,9 @@ public class TychoMavenLifecycleParticipant extends AbstractMavenLifecyclePartic + } + + private void validate(List projects) throws MavenExecutionException { +- validateConsistentTychoVersion(projects); ++ if (System.getProperty("tycho.enableVersionCheck") != null) { ++ validateConsistentTychoVersion(projects); ++ } + validateUniqueBaseDirs(projects); + } + +diff --git a/tycho-testing-harness/src/main/java/org/eclipse/tycho/test/AbstractTychoIntegrationTest.java b/tycho-testing-harness/src/main/java/org/eclipse/tycho/test/AbstractTychoIntegrationTest.java +index 475afe2..2295d66 100644 +--- a/tycho-testing-harness/src/main/java/org/eclipse/tycho/test/AbstractTychoIntegrationTest.java ++++ b/tycho-testing-harness/src/main/java/org/eclipse/tycho/test/AbstractTychoIntegrationTest.java +@@ -114,12 +114,11 @@ public abstract class AbstractTychoIntegrationTest { + verifier.getCliOptions().add(customOptions); + } + +- if (System.getProperty(SYSPROP_STATELOCATION) != null) { +- verifier.setForkJvm(false); +- String m2eresolver = System.getProperty("tychodev-maven.ext.class.path"); // XXX +- if (m2eresolver != null) { +- verifier.addCliOption("-Dmaven.ext.class.path=" + m2eresolver); +- } ++ String m2eState = System.getProperty("m2eclipse.workspace.state"); ++ String m2eResolver = System.getProperty("m2eclipse.workspace.resolver"); ++ ++ if (m2eState != null && m2eResolver != null) { ++ verifier.getVerifierProperties().put("m2eclipse.workspace.state", m2eState); + } + + return verifier; +-- +2.20.1 + diff --git a/SOURCES/0002-Implement-a-custom-resolver-for-Tycho-in-local-mode.patch b/SOURCES/0002-Implement-a-custom-resolver-for-Tycho-in-local-mode.patch new file mode 100644 index 0000000..fc1cc2b --- /dev/null +++ b/SOURCES/0002-Implement-a-custom-resolver-for-Tycho-in-local-mode.patch @@ -0,0 +1,649 @@ +From 623916240bd0626e7fd5146bfb2acfe9c77502da Mon Sep 17 00:00:00 2001 +From: Roland Grunberg +Date: Tue, 12 Jun 2012 10:38:51 -0400 +Subject: [PATCH 2/6] 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 | 11 ++++- + .../remote/RemoteRepositoryCacheManager.java | 11 +++++ + .../p2/target/TargetDefinitionResolver.java | 17 +++++-- + .../target/TargetPlatformBundlePublisher.java | 15 ++----- + .../p2/target/TargetPlatformFactoryImpl.java | 45 +++++++++++++++++-- + .../p2/repository/LocalRepositoryReader.java | 44 +++++++++++++++++- + .../TargetPlatformConfigurationStub.java | 6 ++- + .../tycho-bundles-external.product | 3 ++ + .../tycho/core/locking/FileLockerImpl.java | 26 ++++++++--- + .../maven/TychoMavenLifecycleParticipant.java | 13 ++++++ + .../core/osgitools/AbstractTychoProject.java | 23 ++++++++++ + .../core/osgitools/OsgiBundleProject.java | 5 ++- + ...aultTargetPlatformConfigurationReader.java | 6 ++- + .../osgi/runtime/TychoOsgiRuntimeLocator.java | 27 ++++++++--- + tycho-p2/tycho-p2-facade/pom.xml | 5 +++ + .../p2/resolver/P2DependencyResolver.java | 8 ++++ + 16 files changed, 227 insertions(+), 38 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 359c464..b644539 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 +@@ -240,7 +240,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); ++ } + } + } + } +@@ -248,7 +255,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 1f233e1..c9a6dc1 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 e5e99a1..1cf8089 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 +@@ -20,6 +20,7 @@ import java.util.Set; + + import org.eclipse.core.runtime.IProgressMonitor; + import org.eclipse.core.runtime.NullProgressMonitor; ++import org.eclipse.core.runtime.URIUtil; + import org.eclipse.equinox.p2.core.IProvisioningAgent; + import org.eclipse.equinox.p2.core.ProvisionException; + import org.eclipse.equinox.p2.metadata.IInstallableUnit; +@@ -121,7 +122,12 @@ public final class TargetDefinitionResolver { + resolverRun.addLocation((InstallableUnitLocation) locationDefinition); + + for (Repository repository : ((InstallableUnitLocation) locationDefinition).getRepositories()) { +- artifactRepositories.add(repository.getLocation()); ++ // 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())) { ++ artifactRepositories.add(repository.getLocation()); ++ } + } + } else { + logger.warn("Target location type '" + locationDefinition.getTypeDescription() + "' is not supported"); +@@ -278,8 +284,13 @@ public final class TargetDefinitionResolver { + + loadedRepositories = new ArrayList<>(); + for (Repository repository : locationDefinition.getRepositories()) { +- repositoryIdManager.addMapping(repository.getId(), repository.getLocation()); +- loadedRepositories.add(loadRepository(repository)); ++ // 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())) { ++ repositoryIdManager.addMapping(repository.getId(), repository.getLocation()); ++ loadedRepositories.add(loadRepository(repository)); ++ } + } + } + +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 6a59c2a..0d15db9 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 +@@ -28,6 +28,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; +@@ -216,15 +217,6 @@ 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); + } + +@@ -257,8 +249,9 @@ 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 7854bca..2247be6 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 +@@ -32,6 +32,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.IArtifactRepositoryManager; +@@ -273,9 +276,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()); +@@ -329,7 +366,7 @@ public class TargetPlatformFactoryImpl implements TargetPlatformFactory { + List allRemoteArtifactRepositories = new ArrayList<>(); + + for (MavenRepositoryLocation location : completeRepositories) { +- if (!offline || URIUtil.isFileURI(location.getURL())) { ++ if (!offline || URIUtil.isFileURI(location.getURL()) || "fedora".equals(location.getURL().getScheme())) { + allRemoteArtifactRepositories.add(location.getURL()); + } + } +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 e05f871..74b8028 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 { + +@@ -21,8 +23,46 @@ public class LocalRepositoryReader implements RepositoryReader { + } + + @Override ++ @SuppressWarnings({ "unchecked", "rawtypes" }) + 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 19d12c6..abe89e8 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 +@@ -56,7 +56,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 11b7c8b..182122d 100644 +--- a/tycho-bundles/tycho-bundles-external/tycho-bundles-external.product ++++ b/tycho-bundles/tycho-bundles-external/tycho-bundles-external.product +@@ -79,6 +79,9 @@ + + + ++ ++ ++ + + + +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 e4612c3..3abcc5d 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,22 +27,36 @@ 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) { + throw new RuntimeException(e); + } catch (IOException 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 f733774..1bd97e6 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)); + } +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 94b02f1..f833854 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 +@@ -19,6 +19,9 @@ 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.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; +@@ -94,15 +97,35 @@ public abstract class AbstractTychoProject extends AbstractLogEnabled implements + + String configuredForcedProfile = tpConfiguration.getExecutionEnvironment(); + if (configuredForcedProfile != null) { ++ configuredForcedProfile = overrideToAtLeastJavaSE16(configuredForcedProfile); + sink.overrideProfileConfiguration(configuredForcedProfile, + "target-platform-configuration "); + } + + String configuredDefaultProfile = tpConfiguration.getExecutionEnvironmentDefault(); + if (configuredDefaultProfile != null) { ++ configuredDefaultProfile = overrideToAtLeastJavaSE16(configuredDefaultProfile); + sink.setProfileConfiguration(configuredDefaultProfile, + "target-platform-configuration "); + } + } + ++ public String overrideToAtLeastJavaSE16 (String profile) { ++ try { ++ ExecutionEnvironment ee = ExecutionEnvironmentUtils.getExecutionEnvironment(profile); ++ ++ 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"); ++ 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 13ed51d..bd21204 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 +@@ -504,6 +504,7 @@ public class OsgiBundleProject extends AbstractTychoProject implements BundlePro + String pdeProfile = getEclipsePluginProject(DefaultReactorProject.adapt(project)).getBuildProperties() + .getJreCompilationProfile(); + if (pdeProfile != null) { ++ pdeProfile = overrideToAtLeastJavaSE16(pdeProfile); + sink.setProfileConfiguration(pdeProfile.trim(), "build.properties"); + + } else { +@@ -514,13 +515,13 @@ public class OsgiBundleProject extends AbstractTychoProject implements BundlePro + + switch (tpConfiguration.getBREEHeaderSelectionPolicy()) { + case first: +- sink.setProfileConfiguration(manifestBREEs[0].getProfileName(), ++ sink.setProfileConfiguration(overrideToAtLeastJavaSE16(manifestBREEs[0].getProfileName()), + "Bundle-RequiredExecutionEnvironment (first entry)"); + break; + + case minimal: + ExecutionEnvironment manifestMinimalEE = Collections.min(Arrays.asList(manifestBREEs)); +- sink.setProfileConfiguration(manifestMinimalEE.getProfileName(), ++ sink.setProfileConfiguration(overrideToAtLeastJavaSE16(manifestMinimalEE.getProfileName()), + "Bundle-RequiredExecutionEnvironment (minimal entry)"); + } + +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 ed413e1..0b89bae 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 +@@ -68,7 +68,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 35f1b6b..b64653e 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 +@@ -12,6 +12,8 @@ package org.eclipse.tycho.osgi.runtime; + + import java.io.File; + import java.io.IOException; ++import java.nio.file.Files; ++import java.nio.file.StandardCopyOption; + import java.util.ArrayList; + import java.util.List; + import java.util.Map; +@@ -163,36 +165,49 @@ public class TychoOsgiRuntimeLocator implements EquinoxRuntimeLocator { + 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()); + } + unArchiver.setSourceFile(artifact.getFile()); + unArchiver.setDestDirectory(eclipseDir.getParentFile()); + 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); ++ } 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 9c59b14..54cc384 100644 +--- a/tycho-p2/tycho-p2-facade/pom.xml ++++ b/tycho-p2/tycho-p2-facade/pom.xml +@@ -57,6 +57,11 @@ + junit + 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 d5be20c..8405058 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 +@@ -89,6 +89,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 { +@@ -209,6 +210,13 @@ public class P2DependencyResolver extends AbstractLogEnabled implements Dependen + pomDependencies.setProjectLocation(project.getBasedir()); + } + ++ // 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.20.1 + diff --git a/SOURCES/0003-Tycho-should-always-delegate-artifact-resolution-to-.patch b/SOURCES/0003-Tycho-should-always-delegate-artifact-resolution-to-.patch new file mode 100644 index 0000000..87b88ad --- /dev/null +++ b/SOURCES/0003-Tycho-should-always-delegate-artifact-resolution-to-.patch @@ -0,0 +1,688 @@ +From 2e005b107e6abda5bf09a963a54833cedabfba99 Mon Sep 17 00:00:00 2001 +From: Roland Grunberg +Date: Wed, 18 Jun 2014 13:01:31 -0400 +Subject: [PATCH 3/6] Tycho should always delegate artifact resolution to + Maven. + +Maven resolves dependencies from the following locations in the +following order: + * reactor, + * workspace (eg. XMvn), + * local repository, + * remote repositories. + +Tycho assumes that all resolved artifacts are present within the reactor +cache but this is not true for artifacts resolved from workspace +locations. + +Change-Id: Ia44969ed1064965a82c3507a63e54caeebb75b18 +--- + .../META-INF/MANIFEST.MF | 1 + + .../tycho/core/shared/MavenContext.java | 2 + + .../tycho/core/shared/MavenContextImpl.java | 10 +++- + .../core/shared/MavenRepositorySystem.java | 19 +++++++ + .../LocalArtifactRepositoryP2APITest.java | 4 +- + .../local/LocalMetadataRepositoryTest.java | 3 +- + .../local/LocalArtifactRepository.java | 8 +-- + .../local/LocalArtifactRepositoryFactory.java | 3 +- + .../index/LocalRepositoryP2IndicesImpl.java | 7 +++ + .../remote/RemoteAgentMavenMirrorsTest.java | 3 +- + ...emoteAgentMetadataRepositoryCacheTest.java | 5 +- + .../TargetPlatformBundlePublisherTest.java | 3 +- + .../tycho/p2/target/TestResolverFactory.java | 5 +- + .../p2/resolver/P2ResolverFactoryImpl.java | 8 +-- + .../p2/target/PomDependencyCollectorImpl.java | 2 +- + .../target/TargetPlatformBundlePublisher.java | 13 +++-- + .../repository/LocalRepositoryP2Indices.java | 4 ++ + .../p2/repository/LocalRepositoryReader.java | 49 +++++-------------- + .../TemporaryLocalMavenRepository.java | 4 +- + .../test/util/MavenRepositorySystemStub.java | 30 ++++++++++++ + .../MavenRepositorySystemAdapter.java | 37 ++++++++++++++ + .../MavenContextConfigurator.java | 8 ++- + 22 files changed, 166 insertions(+), 62 deletions(-) + create mode 100644 tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenRepositorySystem.java + create mode 100644 tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/test/util/MavenRepositorySystemStub.java + create mode 100644 tycho-core/src/main/java/org/eclipse/tycho/osgi/adapters/MavenRepositorySystemAdapter.java + +diff --git a/tycho-bundles/org.eclipse.tycho.core.shared.tests/META-INF/MANIFEST.MF b/tycho-bundles/org.eclipse.tycho.core.shared.tests/META-INF/MANIFEST.MF +index ef464f8..05ac727 100644 +--- a/tycho-bundles/org.eclipse.tycho.core.shared.tests/META-INF/MANIFEST.MF ++++ b/tycho-bundles/org.eclipse.tycho.core.shared.tests/META-INF/MANIFEST.MF +@@ -8,3 +8,4 @@ Bundle-RequiredExecutionEnvironment: JavaSE-1.8 + Require-Bundle: org.junit;bundle-version="4.8.2" + Bundle-Vendor: %providerName + Automatic-Module-Name: org.eclipse.tycho.core.shared.tests ++Import-Package: org.eclipse.tycho.p2.repository +diff --git a/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenContext.java b/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenContext.java +index d63c1f1..cd8594d 100644 +--- a/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenContext.java ++++ b/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenContext.java +@@ -38,4 +38,6 @@ public interface MavenContext { + */ + public Properties getSessionProperties(); + ++ public MavenRepositorySystem getRepositorySystem(); ++ + } +diff --git a/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenContextImpl.java b/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenContextImpl.java +index d9f7bc6..683772c 100644 +--- a/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenContextImpl.java ++++ b/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenContextImpl.java +@@ -19,18 +19,20 @@ public class MavenContextImpl implements MavenContext { + private MavenLogger mavenLogger; + private boolean offline; + private Properties mergedProperties; ++ private MavenRepositorySystem repositorySystem; + + public MavenContextImpl(File localRepositoryRoot, boolean offline, MavenLogger mavenLogger, +- Properties mergedProperties) { ++ Properties mergedProperties, MavenRepositorySystem repositorySystem) { + this.localRepositoryRoot = localRepositoryRoot; + this.offline = offline; + this.mavenLogger = mavenLogger; + this.mergedProperties = mergedProperties; ++ this.repositorySystem = repositorySystem; + } + + // constructor for tests + public MavenContextImpl(File localRepositoryRoot, MavenLogger mavenLogger) { +- this(localRepositoryRoot, false, mavenLogger, new Properties()); ++ this(localRepositoryRoot, false, mavenLogger, new Properties(), null); + } + + @Override +@@ -53,4 +55,8 @@ public class MavenContextImpl implements MavenContext { + return mergedProperties; + } + ++ public MavenRepositorySystem getRepositorySystem() { ++ return repositorySystem; ++ } ++ + } +diff --git a/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenRepositorySystem.java b/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenRepositorySystem.java +new file mode 100644 +index 0000000..965e5cd +--- /dev/null ++++ b/tycho-bundles/org.eclipse.tycho.core.shared/src/main/java/org/eclipse/tycho/core/shared/MavenRepositorySystem.java +@@ -0,0 +1,19 @@ ++/******************************************************************************* ++ * Copyright (c) 2014 Red Hat Inc. ++ * All rights reserved. This program and the accompanying materials ++ * are made available under the terms of the Eclipse Public License v1.0 ++ * which accompanies this distribution, and is available at ++ * http://www.eclipse.org/legal/epl-v10.html ++ * ++ * Contributors: ++ * Red Hat Inc. - initial API and implementation ++ *******************************************************************************/ ++package org.eclipse.tycho.core.shared; ++ ++import java.io.File; ++ ++public interface MavenRepositorySystem { ++ ++ public File resolve(String gid, String aid, String version, String type, String classifier); ++ ++} +diff --git a/tycho-bundles/org.eclipse.tycho.p2.maven.repository.tests/src/test/java/org/eclipse/tycho/repository/local/LocalArtifactRepositoryP2APITest.java b/tycho-bundles/org.eclipse.tycho.p2.maven.repository.tests/src/test/java/org/eclipse/tycho/repository/local/LocalArtifactRepositoryP2APITest.java +index 7bf376b..781b53f 100644 +--- a/tycho-bundles/org.eclipse.tycho.p2.maven.repository.tests/src/test/java/org/eclipse/tycho/repository/local/LocalArtifactRepositoryP2APITest.java ++++ b/tycho-bundles/org.eclipse.tycho.p2.maven.repository.tests/src/test/java/org/eclipse/tycho/repository/local/LocalArtifactRepositoryP2APITest.java +@@ -53,6 +53,7 @@ import org.eclipse.tycho.repository.p2base.artifact.repository.ArtifactRepositor + import org.eclipse.tycho.repository.streaming.testutil.ProbeArtifactSink; + import org.eclipse.tycho.repository.streaming.testutil.ProbeOutputStream; + import org.eclipse.tycho.repository.streaming.testutil.ProbeRawArtifactSink; ++import org.eclipse.tycho.test.util.MavenRepositorySystemStub; + import org.junit.After; + import org.junit.Before; + import org.junit.Rule; +@@ -114,7 +115,8 @@ public class LocalArtifactRepositoryP2APITest { + @Before + public void initSubject() throws Exception { + temporaryLocalMavenRepo.initContentFromResourceFolder(ResourceUtil.resourceFile("repositories/local")); +- subject = new LocalArtifactRepository(null, temporaryLocalMavenRepo.getLocalRepositoryIndex()); ++ subject = new LocalArtifactRepository(null, temporaryLocalMavenRepo.getLocalRepositoryIndex(), ++ new MavenRepositorySystemStub(temporaryLocalMavenRepo.getLocalRepositoryRoot())); + + testOutputStream = new ProbeOutputStream(); + } +diff --git a/tycho-bundles/org.eclipse.tycho.p2.maven.repository.tests/src/test/java/org/eclipse/tycho/repository/local/LocalMetadataRepositoryTest.java b/tycho-bundles/org.eclipse.tycho.p2.maven.repository.tests/src/test/java/org/eclipse/tycho/repository/local/LocalMetadataRepositoryTest.java +index 1695b0f..52ac568 100644 +--- a/tycho-bundles/org.eclipse.tycho.p2.maven.repository.tests/src/test/java/org/eclipse/tycho/repository/local/LocalMetadataRepositoryTest.java ++++ b/tycho-bundles/org.eclipse.tycho.p2.maven.repository.tests/src/test/java/org/eclipse/tycho/repository/local/LocalMetadataRepositoryTest.java +@@ -30,6 +30,7 @@ import org.eclipse.tycho.p2.repository.LocalRepositoryReader; + import org.eclipse.tycho.p2.repository.RepositoryLayoutHelper; + import org.eclipse.tycho.p2.repository.TychoRepositoryIndex; + import org.eclipse.tycho.repository.local.index.FileBasedTychoRepositoryIndex; ++import org.eclipse.tycho.test.util.MavenRepositorySystemStub; + import org.junit.Assert; + import org.junit.Test; + +@@ -47,7 +48,7 @@ public class LocalMetadataRepositoryTest extends BaseMavenRepositoryTest { + + protected IMetadataRepository loadRepository(File location) throws ProvisionException { + return new LocalMetadataRepository(location.toURI(), createMetadataIndex(location), +- new LocalRepositoryReader(location)); ++ new LocalRepositoryReader(location, new MavenRepositorySystemStub(location))); + } + + private LocalMetadataRepository createRepository(File location) throws ProvisionException { +diff --git a/tycho-bundles/org.eclipse.tycho.p2.maven.repository/src/main/java/org/eclipse/tycho/repository/local/LocalArtifactRepository.java b/tycho-bundles/org.eclipse.tycho.p2.maven.repository/src/main/java/org/eclipse/tycho/repository/local/LocalArtifactRepository.java +index 6e45753..406c1dc 100644 +--- a/tycho-bundles/org.eclipse.tycho.p2.maven.repository/src/main/java/org/eclipse/tycho/repository/local/LocalArtifactRepository.java ++++ b/tycho-bundles/org.eclipse.tycho.p2.maven.repository/src/main/java/org/eclipse/tycho/repository/local/LocalArtifactRepository.java +@@ -23,6 +23,7 @@ import java.util.Set; + import org.eclipse.equinox.p2.core.IProvisioningAgent; + import org.eclipse.equinox.p2.metadata.IArtifactKey; + import org.eclipse.equinox.p2.repository.artifact.IArtifactDescriptor; ++import org.eclipse.tycho.core.shared.MavenRepositorySystem; + import org.eclipse.tycho.p2.maven.repository.Activator; + import org.eclipse.tycho.p2.maven.repository.xmlio.ArtifactsIO; + import org.eclipse.tycho.p2.repository.GAV; +@@ -42,15 +43,16 @@ public class LocalArtifactRepository extends ArtifactRepositoryBaseImpl { + +- PublishedBundlesArtifactRepository(File localMavenRepositoryRoot) { ++ private MavenRepositorySystem repositorySystem; ++ ++ PublishedBundlesArtifactRepository(File localMavenRepositoryRoot, MavenRepositorySystem repositorySystem) { + super(null, localMavenRepositoryRoot.toURI(), ArtifactTransferPolicies.forLocalArtifacts()); ++ this.repositorySystem = repositorySystem; + } + + void addPublishedArtifact(IArtifactDescriptor baseDescriptor, IArtifactFacade mavenArtifact) { +@@ -250,7 +255,7 @@ public class TargetPlatformBundlePublisher { + @Override + protected File internalGetArtifactStorageLocation(IArtifactDescriptor descriptor) { + MavenRepositoryCoordinates coord = toInternalDescriptor(descriptor).getMavenCoordinates(); +- LocalRepositoryReader reader = new LocalRepositoryReader(getBaseDir()); ++ LocalRepositoryReader reader = new LocalRepositoryReader(getBaseDir(), repositorySystem); + return reader.getLocalArtifactLocation(coord.getGav(), coord.getClassifier(), coord.getExtensionOrDefault()); + } + +diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/repository/LocalRepositoryP2Indices.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/repository/LocalRepositoryP2Indices.java +index 2122578..5e4a01e 100644 +--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/repository/LocalRepositoryP2Indices.java ++++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/repository/LocalRepositoryP2Indices.java +@@ -13,6 +13,8 @@ package org.eclipse.tycho.p2.repository; + + import java.io.File; + ++import org.eclipse.tycho.core.shared.MavenRepositorySystem; ++ + /** + * This service provides access to the tycho p2 index files of the local maven repository. + */ +@@ -24,4 +26,6 @@ public interface LocalRepositoryP2Indices { + + public File getBasedir(); + ++ public MavenRepositorySystem getRepositorySystem(); ++ + } +diff --git a/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/repository/LocalRepositoryReader.java b/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/repository/LocalRepositoryReader.java +index 74b8028..1aeb3ac 100644 +--- a/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/repository/LocalRepositoryReader.java ++++ b/tycho-bundles/org.eclipse.tycho.p2.resolver.shared/src/main/java/org/eclipse/tycho/p2/repository/LocalRepositoryReader.java +@@ -14,55 +14,28 @@ import java.io.File; + import java.lang.reflect.Constructor; + import java.lang.reflect.Method; + ++import org.eclipse.tycho.core.shared.MavenRepositorySystem; ++ + public class LocalRepositoryReader implements RepositoryReader { + + private final File localMavenRepositoryRoot; ++ private final MavenRepositorySystem repositorySystem; + +- public LocalRepositoryReader(File localMavenRepositoryRoot) { ++ public LocalRepositoryReader(File localMavenRepositoryRoot, MavenRepositorySystem repositorySystem) { + this.localMavenRepositoryRoot = localMavenRepositoryRoot; ++ this.repositorySystem = repositorySystem; + } + + @Override + @SuppressWarnings({ "unchecked", "rawtypes" }) + public File getLocalArtifactLocation(GAV gav, String classifier, String extension) { +- File file = new File(localMavenRepositoryRoot, RepositoryLayoutHelper.getRelativePath(gav, classifier, +- extension)); +- // In Fedora the artifact may be in an XMvn-defined repository location (not in reactor cache) +- if (!file.exists()) { +- try { +- // Create Plexus config +- Class pcclazz = Class.forName("org.codehaus.plexus.ContainerConfiguration"); +- Object conf = Class.forName("org.codehaus.plexus.DefaultContainerConfiguration").newInstance(); +- pcclazz.getMethod("setAutoWiring", boolean.class).invoke(conf, true); +- pcclazz.getMethod("setClassPathScanning", String.class).invoke(conf, "index"); +- +- // Use plexus container to lookup the reader +- Class pclazz = Class.forName("org.codehaus.plexus.DefaultPlexusContainer"); +- Object plexus = pclazz.getConstructor(pcclazz).newInstance(conf); +- +- // Retrieve the workspace reader from the plexus container +- Method mLookup = pclazz.getMethod("lookup", String.class, String.class); +- Object reader = mLookup.invoke(plexus, "org.eclipse.aether.repository.WorkspaceReader", "ide"); +- +- // Create an Aether Artifact based on GAV, classifier, and extension +- Class iartclazz = Class.forName("org.eclipse.aether.artifact.Artifact"); +- Class artclazz = Class.forName("org.eclipse.aether.artifact.DefaultArtifact"); +- Constructor cNew = artclazz.getConstructor(String.class, String.class, String.class, String.class, +- String.class); +- Object artifact = cNew.newInstance(gav.getGroupId(), gav.getArtifactId(), classifier, extension, +- gav.getVersion()); +- +- // Invoke "findArtifact" method of the workspace reader on the artifact +- Method mfindArtifact = reader.getClass().getMethod("findArtifact", iartclazz); +- File newFile = (File) mfindArtifact.invoke(reader, artifact); +- if (newFile != null) { +- file = newFile; +- } +- } catch (Exception e) { +- e.printStackTrace(); ++ File ret = new File(localMavenRepositoryRoot, RepositoryLayoutHelper.getRelativePath(gav, classifier, extension)); ++ if (repositorySystem != null) { ++ File tmp = repositorySystem.resolve(gav.getGroupId(), gav.getArtifactId(), gav.getVersion(), extension, classifier); ++ if (tmp != null) { ++ ret = tmp; + } + } +- return file; +- ++ return ret; + } + } +diff --git a/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/repository/local/testutil/TemporaryLocalMavenRepository.java b/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/repository/local/testutil/TemporaryLocalMavenRepository.java +index 5c0bcb8..3d05393 100644 +--- a/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/repository/local/testutil/TemporaryLocalMavenRepository.java ++++ b/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/repository/local/testutil/TemporaryLocalMavenRepository.java +@@ -14,9 +14,11 @@ import java.io.File; + import java.io.IOException; + + import org.eclipse.equinox.internal.p2.core.helpers.FileUtils; ++import org.eclipse.tycho.core.shared.MavenRepositorySystem; + import org.eclipse.tycho.p2.repository.LocalRepositoryP2Indices; + import org.eclipse.tycho.repository.local.LocalArtifactRepository; + import org.eclipse.tycho.repository.local.index.LocalRepositoryP2IndicesImpl; ++import org.eclipse.tycho.test.util.MavenRepositorySystemStub; + import org.eclipse.tycho.test.util.NoopFileLockService; + import org.junit.Rule; + import org.junit.rules.ExternalResource; +@@ -72,7 +74,7 @@ public class TemporaryLocalMavenRepository extends ExternalResource { + + public LocalArtifactRepository getLocalArtifactRepository() { + if (repo == null) { +- repo = new LocalArtifactRepository(null, getLocalRepositoryIndex()); ++ repo = new LocalArtifactRepository(null, getLocalRepositoryIndex(), new MavenRepositorySystemStub(getLocalRepositoryRoot())); + } + return repo; + } +diff --git a/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/test/util/MavenRepositorySystemStub.java b/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/test/util/MavenRepositorySystemStub.java +new file mode 100644 +index 0000000..7e020da +--- /dev/null ++++ b/tycho-bundles/org.eclipse.tycho.test.utils/src/main/java/org/eclipse/tycho/test/util/MavenRepositorySystemStub.java +@@ -0,0 +1,30 @@ ++/******************************************************************************* ++ * Copyright (c) 2014 Red Hat Inc. ++ * All rights reserved. This program and the accompanying materials ++ * are made available under the terms of the Eclipse Public License v1.0 ++ * which accompanies this distribution, and is available at ++ * http://www.eclipse.org/legal/epl-v10.html ++ * ++ * Contributors: ++ * Red Hat Inc. - initial API and implementation ++ *******************************************************************************/ ++package org.eclipse.tycho.test.util; ++ ++import java.io.File; ++ ++import org.eclipse.tycho.core.shared.MavenRepositorySystem; ++import org.eclipse.tycho.p2.repository.RepositoryLayoutHelper; ++ ++public class MavenRepositorySystemStub implements MavenRepositorySystem { ++ ++ private File localMavenRepositoryRoot; ++ ++ public MavenRepositorySystemStub(File localMavenRepositoryRoot) { ++ this.localMavenRepositoryRoot = localMavenRepositoryRoot; ++ } ++ ++ public File resolve(String gid, String aid, String version, String type, String classifier) { ++ return new File(localMavenRepositoryRoot, RepositoryLayoutHelper.getRelativePath(gid, aid, version, classifier, ++ type)); ++ } ++} +diff --git a/tycho-core/src/main/java/org/eclipse/tycho/osgi/adapters/MavenRepositorySystemAdapter.java b/tycho-core/src/main/java/org/eclipse/tycho/osgi/adapters/MavenRepositorySystemAdapter.java +new file mode 100644 +index 0000000..e1d46fa +--- /dev/null ++++ b/tycho-core/src/main/java/org/eclipse/tycho/osgi/adapters/MavenRepositorySystemAdapter.java +@@ -0,0 +1,37 @@ ++/******************************************************************************* ++ * Copyright (c) 2014 Red Hat Inc. ++ * All rights reserved. This program and the accompanying materials ++ * are made available under the terms of the Eclipse Public License v1.0 ++ * which accompanies this distribution, and is available at ++ * http://www.eclipse.org/legal/epl-v10.html ++ * ++ * Contributors: ++ * Red Hat Inc. - initial API and implementation ++ *******************************************************************************/ ++package org.eclipse.tycho.osgi.adapters; ++ ++import java.io.File; ++ ++import org.apache.maven.artifact.Artifact; ++import org.apache.maven.artifact.resolver.ArtifactResolutionRequest; ++import org.apache.maven.artifact.resolver.ArtifactResolutionResult; ++import org.apache.maven.repository.RepositorySystem; ++import org.eclipse.tycho.core.shared.MavenRepositorySystem; ++ ++public class MavenRepositorySystemAdapter implements MavenRepositorySystem { ++ ++ private RepositorySystem repoSystem; ++ ++ public MavenRepositorySystemAdapter(RepositorySystem repoSystem) { ++ this.repoSystem = repoSystem; ++ } ++ ++ public File resolve(String gid, String aid, String version, String type, String classifier) { ++ ArtifactResolutionRequest req = new ArtifactResolutionRequest(); ++ Artifact art = repoSystem.createArtifactWithClassifier(gid, aid, version, type, classifier); ++ req.setArtifact(art); ++ ArtifactResolutionResult res = repoSystem.resolve(req); ++ return res.getArtifacts().size() > 0 ? res.getArtifacts().toArray(new Artifact[0])[0].getFile() : null; ++ } ++ ++} +diff --git a/tycho-core/src/main/java/org/eclipse/tycho/osgi/configuration/MavenContextConfigurator.java b/tycho-core/src/main/java/org/eclipse/tycho/osgi/configuration/MavenContextConfigurator.java +index e5837e2..137dcb1 100644 +--- a/tycho-core/src/main/java/org/eclipse/tycho/osgi/configuration/MavenContextConfigurator.java ++++ b/tycho-core/src/main/java/org/eclipse/tycho/osgi/configuration/MavenContextConfigurator.java +@@ -16,6 +16,7 @@ import java.util.Properties; + + import org.apache.maven.execution.MavenSession; + import org.apache.maven.plugin.LegacySupport; ++import org.apache.maven.repository.RepositorySystem; + import org.apache.maven.settings.Profile; + import org.apache.maven.settings.Settings; + import org.codehaus.plexus.component.annotations.Component; +@@ -26,6 +27,7 @@ import org.eclipse.sisu.equinox.embedder.EquinoxLifecycleListener; + import org.eclipse.tycho.core.shared.MavenContext; + import org.eclipse.tycho.core.shared.MavenContextImpl; + import org.eclipse.tycho.osgi.adapters.MavenLoggerAdapter; ++import org.eclipse.tycho.osgi.adapters.MavenRepositorySystemAdapter; + + @Component(role = EquinoxLifecycleListener.class, hint = "MavenContextConfigurator") + public class MavenContextConfigurator extends EquinoxLifecycleListener { +@@ -36,13 +38,17 @@ public class MavenContextConfigurator extends EquinoxLifecycleListener { + @Requirement + private LegacySupport context; + ++ @Requirement ++ private RepositorySystem repositorySystem; ++ + @Override + public void afterFrameworkStarted(EmbeddedEquinox framework) { + MavenSession session = context.getSession(); + File localRepoRoot = new File(session.getLocalRepository().getBasedir()); + MavenLoggerAdapter mavenLogger = new MavenLoggerAdapter(logger, false); + Properties globalProps = getGlobalProperties(session); +- MavenContext mavenContext = new MavenContextImpl(localRepoRoot, session.isOffline(), mavenLogger, globalProps); ++ MavenContext mavenContext = new MavenContextImpl(localRepoRoot, session.isOffline(), mavenLogger, globalProps, ++ new MavenRepositorySystemAdapter(repositorySystem)); + framework.registerService(MavenContext.class, mavenContext); + } + +-- +2.20.1 + diff --git a/SOURCES/0004-Bug-537963-Make-the-default-EE-Java-1.8.patch b/SOURCES/0004-Bug-537963-Make-the-default-EE-Java-1.8.patch new file mode 100644 index 0000000..1db821f --- /dev/null +++ b/SOURCES/0004-Bug-537963-Make-the-default-EE-Java-1.8.patch @@ -0,0 +1,183 @@ +From b7dae094376ab642339d5bcbe52e16cba0fa11f1 Mon Sep 17 00:00:00 2001 +From: Mat Booth +Date: Wed, 15 Aug 2018 15:58:10 +0100 +Subject: [PATCH 4/6] Bug 537963 - Make the default EE Java 1.8 + +This allows bundles that don't otherwise specify an EE (for example +if the bundle contains only a plugin.xml, or is a documentation only +bundle, or otherwise does not contain any bytecode) to continue +working in environments that are supported by the latest release +of Eclipse. + +Change-Id: Ic6e41c3000c85e2e4222e8153e84b7701ab0e750 +Signed-off-by: Mat Booth +--- + .../tycho/osgicompiler/test/OsgiCompilerTest.java | 6 +++--- + .../ee/ExecutionEnvironmentConfigurationImpl.java | 6 +++--- + .../ee/ExecutionEnvironmentConfigurationTest.java | 4 ++-- + .../tycho/core/osgitools/EquinoxResolverTest.java | 2 +- + .../org/eclipse/tycho/core/test/TychoTest.java | 5 ++++- + .../src/test/resources/projects/bree/pom.xml | 1 + + .../bree/tycho-default/META-INF/MANIFEST.MF | 5 +++++ + .../projects/bree/tycho-default/build.properties | 2 ++ + .../resources/projects/bree/tycho-default/pom.xml | 15 +++++++++++++++ + 9 files changed, 36 insertions(+), 10 deletions(-) + create mode 100644 tycho-core/src/test/resources/projects/bree/tycho-default/META-INF/MANIFEST.MF + create mode 100644 tycho-core/src/test/resources/projects/bree/tycho-default/build.properties + create mode 100644 tycho-core/src/test/resources/projects/bree/tycho-default/pom.xml + +diff --git a/tycho-compiler-plugin/src/test/java/org/eclipse/tycho/osgicompiler/test/OsgiCompilerTest.java b/tycho-compiler-plugin/src/test/java/org/eclipse/tycho/osgicompiler/test/OsgiCompilerTest.java +index 7451d97..a0dae08 100644 +--- a/tycho-compiler-plugin/src/test/java/org/eclipse/tycho/osgicompiler/test/OsgiCompilerTest.java ++++ b/tycho-compiler-plugin/src/test/java/org/eclipse/tycho/osgicompiler/test/OsgiCompilerTest.java +@@ -37,7 +37,7 @@ import copied.org.apache.maven.plugin.CompilationFailureException; + public class OsgiCompilerTest extends AbstractTychoMojoTestCase { + + private static final int TARGET_1_4 = 48; +- private static final int TARGET_9 = 53; ++ private static final int TARGET_8 = 52; + + protected File storage; + +@@ -235,10 +235,10 @@ public class OsgiCompilerTest extends AbstractTychoMojoTestCase { + List projects = getSortedProjects(basedir, null); + MavenProject project; + // project with neither POM nor MANIFEST configuration => must fallback to +- // source/target level == 9 ++ // source/target level == 8 + project = projects.get(1); + getMojo(projects, project).execute(); +- assertBytecodeMajorLevel(TARGET_9, new File(project.getBasedir(), "target/classes/Generic.class")); ++ assertBytecodeMajorLevel(TARGET_8, new File(project.getBasedir(), "target/classes/Generic.class")); + + // project with multiple execution envs. + // Minimum source and target level must be taken +diff --git a/tycho-core/src/main/java/org/eclipse/tycho/core/ee/ExecutionEnvironmentConfigurationImpl.java b/tycho-core/src/main/java/org/eclipse/tycho/core/ee/ExecutionEnvironmentConfigurationImpl.java +index 11f0ccf..ea67379 100644 +--- a/tycho-core/src/main/java/org/eclipse/tycho/core/ee/ExecutionEnvironmentConfigurationImpl.java ++++ b/tycho-core/src/main/java/org/eclipse/tycho/core/ee/ExecutionEnvironmentConfigurationImpl.java +@@ -1,5 +1,5 @@ + /******************************************************************************* +- * Copyright (c) 2012, 2014 SAP SE and others. ++ * Copyright (c) 2012, 2018 SAP SE and others. + * 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 +@@ -19,8 +19,8 @@ import org.eclipse.tycho.core.ee.shared.SystemCapability; + import org.eclipse.tycho.core.shared.BuildFailureException; + + public class ExecutionEnvironmentConfigurationImpl implements ExecutionEnvironmentConfiguration { +- // Most likely best to always be the latest known supported EE +- private static final String DEFAULT_EXECUTION_ENVIRONMENT = "JavaSE-9"; ++ // Most likely best to always be the latest known supported long-term supported EE ++ private static final String DEFAULT_EXECUTION_ENVIRONMENT = "JavaSE-1.8"; + + private static final int PRIMARY = 0; + private static final int SECONDARY = 1; +diff --git a/tycho-core/src/test/java/org/eclipse/tycho/core/ee/ExecutionEnvironmentConfigurationTest.java b/tycho-core/src/test/java/org/eclipse/tycho/core/ee/ExecutionEnvironmentConfigurationTest.java +index 5391eb2..f04fa21 100644 +--- a/tycho-core/src/test/java/org/eclipse/tycho/core/ee/ExecutionEnvironmentConfigurationTest.java ++++ b/tycho-core/src/test/java/org/eclipse/tycho/core/ee/ExecutionEnvironmentConfigurationTest.java +@@ -45,9 +45,9 @@ public class ExecutionEnvironmentConfigurationTest { + + @Test + public void testDefaults() { +- assertThat(subject.getProfileName(), is("JavaSE-9")); ++ assertThat(subject.getProfileName(), is("JavaSE-1.8")); + assertThat(subject.isCustomProfile(), is(false)); +- assertThat(subject.getFullSpecification().getProfileName(), is("JavaSE-9")); ++ assertThat(subject.getFullSpecification().getProfileName(), is("JavaSE-1.8")); + } + + @Test +diff --git a/tycho-core/src/test/java/org/eclipse/tycho/core/osgitools/EquinoxResolverTest.java b/tycho-core/src/test/java/org/eclipse/tycho/core/osgitools/EquinoxResolverTest.java +index 54f1134..fa2ce8d 100644 +--- a/tycho-core/src/test/java/org/eclipse/tycho/core/osgitools/EquinoxResolverTest.java ++++ b/tycho-core/src/test/java/org/eclipse/tycho/core/osgitools/EquinoxResolverTest.java +@@ -61,7 +61,7 @@ public class EquinoxResolverTest extends AbstractTychoMojoTestCase { + properties.put("tycho-version", TychoVersion.getTychoVersion()); + + List projects = getSortedProjects(basedir, properties, null); +- assertEquals(6, projects.size()); ++ assertEquals(7, projects.size()); + + assertEquals("executionenvironment.manifest-minimal", projects.get(2).getArtifactId()); + ExecutionEnvironment ee = TychoProjectUtils.getExecutionEnvironmentConfiguration(projects.get(2)) +diff --git a/tycho-core/src/test/java/org/eclipse/tycho/core/test/TychoTest.java b/tycho-core/src/test/java/org/eclipse/tycho/core/test/TychoTest.java +index e8eb7ad..a88e2e4 100644 +--- a/tycho-core/src/test/java/org/eclipse/tycho/core/test/TychoTest.java ++++ b/tycho-core/src/test/java/org/eclipse/tycho/core/test/TychoTest.java +@@ -360,7 +360,7 @@ public class TychoTest extends AbstractTychoMojoTestCase { + properties.put("tycho-version", TychoVersion.getTychoVersion()); + + List projects = getSortedProjects(basedir, properties, null); +- assertEquals(6, projects.size()); ++ assertEquals(7, projects.size()); + int i = 0; + + assertEquals("executionenvironment.manifest", projects.get(++i).getArtifactId()); +@@ -377,6 +377,9 @@ public class TychoTest extends AbstractTychoMojoTestCase { + + assertEquals("executionenvironment.pom-default", projects.get(++i).getArtifactId()); + assertEquals("OSGi/Minimum-1.2", getActiveEEProfile(projects.get(i))); ++ ++ assertEquals("executionenvironment.tycho-default", projects.get(++i).getArtifactId()); ++ assertEquals("JavaSE-1.8", getActiveEEProfile(projects.get(i))); + } + + public void testWithProjectReferencesItself() throws Exception { +diff --git a/tycho-core/src/test/resources/projects/bree/pom.xml b/tycho-core/src/test/resources/projects/bree/pom.xml +index 1ddff1d..18c5885 100644 +--- a/tycho-core/src/test/resources/projects/bree/pom.xml ++++ b/tycho-core/src/test/resources/projects/bree/pom.xml +@@ -14,6 +14,7 @@ + pom-hard + buildproperties + pom-default ++ tycho-default + + + +diff --git a/tycho-core/src/test/resources/projects/bree/tycho-default/META-INF/MANIFEST.MF b/tycho-core/src/test/resources/projects/bree/tycho-default/META-INF/MANIFEST.MF +new file mode 100644 +index 0000000..e6d85c6 +--- /dev/null ++++ b/tycho-core/src/test/resources/projects/bree/tycho-default/META-INF/MANIFEST.MF +@@ -0,0 +1,5 @@ ++Manifest-Version: 1.0 ++Bundle-ManifestVersion: 2 ++Bundle-Name: A bundle that specifies no EE at all and relies on Tycho to set one. ++Bundle-SymbolicName: executionenvironment.tycho-default ++Bundle-Version: 1.0.0 +diff --git a/tycho-core/src/test/resources/projects/bree/tycho-default/build.properties b/tycho-core/src/test/resources/projects/bree/tycho-default/build.properties +new file mode 100644 +index 0000000..7b02ed4 +--- /dev/null ++++ b/tycho-core/src/test/resources/projects/bree/tycho-default/build.properties +@@ -0,0 +1,2 @@ ++bin.includes = META-INF/ ++ +diff --git a/tycho-core/src/test/resources/projects/bree/tycho-default/pom.xml b/tycho-core/src/test/resources/projects/bree/tycho-default/pom.xml +new file mode 100644 +index 0000000..f538f5e +--- /dev/null ++++ b/tycho-core/src/test/resources/projects/bree/tycho-default/pom.xml +@@ -0,0 +1,15 @@ ++ ++ 4.0.0 ++ ++ ++ executionenvironment ++ parent ++ 1.0.0 ++ ++ ++ executionenvironment.tycho-default ++ 1.0.0 ++ eclipse-plugin ++ ++ +-- +2.20.1 + diff --git a/SOURCES/EmptyMojo.java b/SOURCES/EmptyMojo.java new file mode 100644 index 0000000..84d970f --- /dev/null +++ b/SOURCES/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/SOURCES/p2-install.sh b/SOURCES/p2-install.sh new file mode 100755 index 0000000..e04cb9d --- /dev/null +++ b/SOURCES/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/tycho-bootstrap.sh b/SOURCES/tycho-bootstrap.sh new file mode 100755 index 0000000..0340fdd --- /dev/null +++ b/SOURCES/tycho-bootstrap.sh @@ -0,0 +1,115 @@ +#! /bin/bash -e + +. $(pwd)/tycho-scripts.sh + +preV=$1 +v="$preV-SNAPSHOT" +osgiV='3.13.0.v20180428-1222' +osgiCompatV='1.1.100.v20180428-1222' +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 -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/.*<\/equinoxVersionMaven>/${osgiV}<\/equinoxVersionMaven>/" pom.xml +sed -i "s/.*<\/equinoxCompatVersionMaven>/${osgiCompatV}<\/equinoxCompatVersionMaven>/" 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/SOURCES/tycho-scripts.sh b/SOURCES/tycho-scripts.sh new file mode 100755 index 0000000..25ed6af --- /dev/null +++ b/SOURCES/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 \ + $(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/SPECS/tycho.spec b/SPECS/tycho.spec new file mode 100644 index 0000000..85558b2 --- /dev/null +++ b/SPECS/tycho.spec @@ -0,0 +1,1149 @@ +# 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_without 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: 1.4.0 +Release: 2%{?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-photon.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 +# Submitted upstream: https://bugs.eclipse.org/bugs/show_bug.cgi?id=537963 +Patch3: 0004-Bug-537963-Make-the-default-EE-Java-1.8.patch + +ExclusiveArch: x86_64 + +BuildArch: noarch + +BuildRequires: maven-local +BuildRequires: mvn(biz.aQute.bnd:bnd-maven-plugin) +BuildRequires: mvn(com.beust:jcommander) +BuildRequires: mvn(de.pdark:decentxml) +BuildRequires: mvn(junit:junit) +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-plugin-api) +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-testing:maven-plugin-testing-harness) +BuildRequires: mvn(org.apache.maven.plugin-tools:maven-plugin-annotations) +BuildRequires: mvn(org.apache.maven.shared:maven-verifier) +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-container-default) +BuildRequires: mvn(org.codehaus.plexus:plexus-utils) +BuildRequires: mvn(org.eclipse.jdt:ecj) +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.hamcrest:hamcrest-core) +BuildRequires: mvn(org.mockito:mockito-core) +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.11 +%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.kxml2) +BuildRequires: osgi(org.sat4j.core) +BuildRequires: osgi(org.sat4j.pb) +BuildRequires: osgi(org.w3c.css.sac) +BuildRequires: osgi(javax.servlet-api) +BuildRequires: osgi(javax.servlet.jsp) +%endif + +Requires: maven-local +Requires: xmvn-minimal >= 3 +Requires: ecj >= 1:4.7.3a-1 + +%if ! %{with bootstrap} +Requires: eclipse-platform >= 1:4.11 +%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} + +%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 + +# Unneeded for RPM builds +%pom_remove_plugin :maven-site-plugin + +%if %{without junit5} +%pom_disable_module org.eclipse.tycho.surefire.junit5 tycho-surefire +%pom_remove_dep ":org.eclipse.tycho.surefire.junit5" 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 + +# 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.platform${project.version}' tycho-surefire/tycho-surefire-plugin/pom.xml + +# Don't build tests +for b in core.shared.tests p2.resolver.impl.test p2.resolver.shared.tests p2.maven.repository.tests p2.tools.tests test.utils ; do + %pom_disable_module org.eclipse.tycho.$b tycho-bundles +done +%pom_disable_module org.fedoraproject.p2.tests fedoraproject-p2 +%pom_xpath_remove "pom:requirement[pom:id='org.hamcrest']" tycho-bundles +%pom_remove_dep -r :::test + +# Bootstrap Build +%if %{with bootstrap} + +# Break circular dep between tycho-lib-detector and tycho-compiler-jdt for bootstrapping +%pom_xpath_remove "pom:compilerId" tycho-lib-detector +%pom_remove_dep "org.eclipse.tycho:tycho-compiler-jdt" tycho-lib-detector + +# Unpack a compatible version of Eclipse we can use to build against +tar -xf %{SOURCE10} +# Install OSGi bundles into local repo to override any incompatible system version +# that may be already installed +pushd bootstrap +for f in usr/lib/eclipse/plugins/org.eclipse.osgi.compatibility.state_*.jar \ + usr/lib/eclipse/plugins/org.eclipse.osgi.services_*.jar \ + usr/lib/eclipse/plugins/org.eclipse.osgi.util_*.jar \ + usr/lib/eclipse/plugins/org.eclipse.osgi_*.jar ; do + xmvn -o install:install-file -Dfile=$f -Dpackaging=jar -DgroupId=org.eclipse.tycho -Dmaven.repo.local=$(pwd)/../.m2 \ + -DartifactId=$(echo $(basename $f) | cut -d_ -f1) -Dversion=$(echo "${f%.jar}" | cut -d_ -f2) +done +popd + +# Perform the 'minimal' (bootstrap) build of Tycho +cp %{SOURCE3} %{SOURCE4} . +./tycho-bootstrap.sh %{version} + +# Non-Bootstrap Build +%else + +# Set some temporary build version so that the bootstrapped build has +# a different version from the nonbootstrapped. Otherwise there will +# be cyclic dependencies. + +sysVer=`grep -C 1 "tycho" %{_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 + +%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 +* 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