diff --git a/.eclipse.metadata b/.eclipse.metadata new file mode 100644 index 0000000..bb28e9d --- /dev/null +++ b/.eclipse.metadata @@ -0,0 +1,2 @@ +2325a8753ec3e388d5f062a4e7ba3031cace4cfd SOURCES/eclipse-platform-sources-4.12RC2.tar.xz +cc4f1b206f1a5744884558b663b6064987a52a9c SOURCES/org.eclipse.linuxtools.eclipse-build-c985e357223668b4bc1fb76ea6b9e0c12829b7e8.tar.xz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..403b1dc --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +SOURCES/eclipse-platform-sources-4.12RC2.tar.xz +SOURCES/org.eclipse.linuxtools.eclipse-build-c985e357223668b4bc1fb76ea6b9e0c12829b7e8.tar.xz diff --git a/SOURCES/eclipse-adjust-droplets.patch b/SOURCES/eclipse-adjust-droplets.patch new file mode 100644 index 0000000..c751924 --- /dev/null +++ b/SOURCES/eclipse-adjust-droplets.patch @@ -0,0 +1,52 @@ +diff --git rt.equinox.p2/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/EngineActivator.java rt.equinox.p2/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/EngineActivator.java +index 5fc0e73..ed7e4fa 100644 +--- rt.equinox.p2/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/EngineActivator.java ++++ rt.equinox.p2/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/EngineActivator.java +@@ -150,7 +150,20 @@ public class EngineActivator implements BundleActivator { + } + continue; + } +- File[] listFiles = extension.listFiles(); ++ ++ // Support the additional 'eclipse' directory if it exists. ++ File[] extensionFiles = extension.listFiles(new FilenameFilter() { ++ public boolean accept(File dir, String name) { ++ return name.equals("eclipse"); ++ } ++ }); ++ ++ File[] listFiles; ++ if (extensionFiles.length == 1) { ++ listFiles = extensionFiles[0].listFiles(); ++ } else { ++ listFiles = extension.listFiles(); ++ } + // new magic - multiple info files, f.e. + // egit.info (git feature) + // cdt.linkĀ (properties file containing link=path) to other info file +diff --git rt.equinox.p2/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorUtils.java rt.equinox.p2/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorUtils.java +index 12e4d89..77945ef 100644 +--- rt.equinox.p2/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorUtils.java ++++ rt.equinox.p2/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorUtils.java +@@ -160,7 +160,20 @@ public class SimpleConfiguratorUtils { + } + continue; + } +- File[] listFiles = extension.listFiles(); ++ ++ // Support the additional 'eclipse' directory if it exists. ++ File[] extensionFiles = extension.listFiles(new FilenameFilter() { ++ public boolean accept(File dir, String name) { ++ return name.equals("eclipse"); ++ } ++ }); ++ ++ File[] listFiles; ++ if (extensionFiles.length == 1) { ++ listFiles = extensionFiles[0].listFiles(); ++ } else { ++ listFiles = extension.listFiles(); ++ } + // new magic - multiple info files, f.e. + // egit.info (git feature) + // cdt.linkĀ (properties file containing link=path) to other info file diff --git a/SOURCES/eclipse-debug-symbols.patch b/SOURCES/eclipse-debug-symbols.patch new file mode 100644 index 0000000..60016c2 --- /dev/null +++ b/SOURCES/eclipse-debug-symbols.patch @@ -0,0 +1,63 @@ +--- eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/build.sh.orig 2018-08-19 12:37:52.764590467 +0100 ++++ eclipse.platform.swt/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/library/build.sh 2018-08-19 12:38:15.032503913 +0100 +@@ -74,7 +74,8 @@ + + MAKE_TYPE=make + +-export CFLAGS='-O -Wall -fPIC' ++export CFLAGS='-O -g -Wall -fPIC' ++export NO_STRIP=1 + + # Determine which OS we are on + if [ "${OS}" = "" ]; then +--- rt.equinox.framework/features/org.eclipse.equinox.executable.feature/library/gtk/make_linux.mak.orig 2019-03-20 10:22:21.420240101 +0000 ++++ rt.equinox.framework/features/org.eclipse.equinox.executable.feature/library/gtk/make_linux.mak 2019-03-20 10:53:53.375471427 +0000 +@@ -92,7 +92,7 @@ + -DPIXBUF_LIB="\"libgdk_pixbuf-2.0.so.0\"" -DGOBJ_LIB="\"libgobject-2.0.so.0\"" \ + -DGIO_LIB="\"libgio-2.0.so.0\"" -DGLIB_LIB="\"libglib-2.0.so.0\"" + LFLAGS = ${M_ARCH} -shared -fpic -Wl,--export-dynamic +-CFLAGS = ${M_CFLAGS} ${M_ARCH} -g -s -Wall\ ++CFLAGS = ${M_CFLAGS} ${M_ARCH} -g -Wall\ + -fpic \ + -DLINUX \ + -DDEFAULT_OS="\"$(DEFAULT_OS)\"" \ +--- rt.equinox.bundles/bundles/org.eclipse.equinox.security.linux.x86_64/keystorelinuxnative/makefile.orig 2019-03-19 22:40:23.145082352 +0000 ++++ rt.equinox.bundles/bundles/org.eclipse.equinox.security.linux.x86_64/keystorelinuxnative/makefile 2019-03-20 09:29:20.370457348 +0000 +@@ -1,7 +1,8 @@ + LIBSECRET_CFLAGS = `pkg-config --cflags libsecret-1` + LIBSECRET_LIBS = `pkg-config --libs libsecret-1` + +-CFLAGS = -shared -fPIC -I"${JAVA_HOME}/include" -I"${JAVA_HOME}/include/linux" ++CFLAGS := $(CFLAGS) -fPIC -I"${JAVA_HOME}/include" -I"${JAVA_HOME}/include/linux" $(LIBSECRET_CFLAGS) ++LDFLAGS := $(LDFLAGS) -shared $(LIBSECRET_LIBS) + + all: ../libkeystorelinuxnative.so + +@@ -9,10 +10,10 @@ + rm ../libkeystorelinuxnative.so ../target/keystoreLinuxNative.o + + ../libkeystorelinuxnative.so: ../target/keystoreLinuxNative.o +- $(CC) $(CFLAGS) -o $@ $< $(LIBSECRET_LIBS) ++ $(CC) $(LDFLAGS) -o $@ $< + + ../target/keystoreLinuxNative.o: ../target keystoreLinuxNative.c +- $(CC) -c -fPIC -I"${JAVA_HOME}/include" -I"${JAVA_HOME}/include/linux" -o $@ $(TESTFLAGS) $(LIBSECRET_CFLAGS) keystoreLinuxNative.c ++ $(CC) -c $(CFLAGS) -o $@ $(TESTFLAGS) keystoreLinuxNative.c + + ../target: + mkdir -p ../target +--- eclipse.platform.team/bundles/org.eclipse.core.net/natives/unix/linux/makefile.orig 2019-03-20 09:49:40.694899138 +0000 ++++ eclipse.platform.team/bundles/org.eclipse.core.net/natives/unix/linux/makefile 2019-03-20 10:20:21.704664294 +0000 +@@ -25,10 +25,10 @@ + OS_TYPE = linux + JDK_INCLUDE = -I${JAVA_HOME}/include -I${JAVA_HOME}/include/${OS_TYPE} + INCLUDE = `pkg-config --cflags gio-2.0` +-COMPILER_FLAGS = -O0 -fPIC -g3 -Wall -c -fmessage-length=0 ${TARGET_ENVIRONMENT} ++COMPILER_FLAGS = $(CFLAGS) -fPIC -c ${TARGET_ENVIRONMENT} + + LIBS := `pkg-config --libs gio-2.0` +-LINKER_FLAGS= ${TARGET_ENVIRONMENT} ++LINKER_FLAGS = $(LDFLAGS) ${TARGET_ENVIRONMENT} + + all: link + diff --git a/SOURCES/eclipse-disable-droplets-in-dropins.patch b/SOURCES/eclipse-disable-droplets-in-dropins.patch new file mode 100644 index 0000000..b45995e --- /dev/null +++ b/SOURCES/eclipse-disable-droplets-in-dropins.patch @@ -0,0 +1,47 @@ +From edd5a395dd96699f91c463c0e0409a7488814775 Mon Sep 17 00:00:00 2001 +From: Roland Grunberg +Date: Tue, 16 Aug 2016 17:51:46 -0400 +Subject: [PATCH] Skip loading droplets in the configuration during + reconciliation. + +The reconciler attempts to load droplets as extended locations, which +seems to be an expensive operation. Avoid doing this for the sake of +efficiency. + +Change-Id: Iaf07aacb2d7eaabf3730654e757e69d22f0bc4ab +--- + .../internal/p2/reconciler/dropins/PlatformXmlListener.java | 13 +++++++++++++ + 1 file changed, 13 insertions(+) + +diff --git rt.equinox.p2/bundles/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/PlatformXmlListener.java rt.equinox.p2/bundles/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/PlatformXmlListener.java +index 802ee1b..74023fe 100644 +--- rt.equinox.p2/bundles/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/PlatformXmlListener.java ++++ rt.equinox.p2/bundles/org.eclipse.equinox.p2.reconciler.dropins/src/org/eclipse/equinox/internal/p2/reconciler/dropins/PlatformXmlListener.java +@@ -171,11 +171,24 @@ public class PlatformXmlListener extends DirectoryChangeListener { + * Ensure that we have a repository for each site in the given configuration. + */ + protected void synchronizeConfiguration(Configuration config) { ++ String fragments = System.getProperty("p2.fragments"); + List sites = config.getSites(); + Set newRepos = new LinkedHashSet<>(); + Set toBeRemoved = new HashSet<>(); + for (Site site : sites) { + String siteURL = site.getUrl(); ++ if (fragments != null) { ++ String[] rootPaths = fragments.split(","); ++ boolean skip = false; ++ for (String path : rootPaths) { ++ if (siteURL.startsWith("file:" + path)) { ++ skip = true; ++ } ++ } ++ if (skip) { ++ continue; ++ } ++ } + IMetadataRepository match = getMatchingRepo(Activator.getRepositories(), siteURL); + if (match == null) { + try { +-- +2.7.4 + diff --git a/SOURCES/eclipse-disable-uses-constraints.patch b/SOURCES/eclipse-disable-uses-constraints.patch new file mode 100644 index 0000000..5a56e61 --- /dev/null +++ b/SOURCES/eclipse-disable-uses-constraints.patch @@ -0,0 +1,28 @@ +From 889543269853e12925ef00a6e76c3dd85ce5b915 Mon Sep 17 00:00:00 2001 +From: Roland Grunberg +Date: Tue, 25 Oct 2016 16:48:28 -0400 +Subject: [PATCH] Disable uses by default (osgi.resolver.usesMode=ignore). + set. + +--- + .../felix/src/org/apache/felix/resolver/ResolverImpl.java | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git rt.equinox.framework/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/ResolverImpl.java rt.equinox.framework/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/ResolverImpl.java +index ded683f..7216865 100755 +--- rt.equinox.framework/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/ResolverImpl.java ++++ rt.equinox.framework/bundles/org.eclipse.osgi/felix/src/org/apache/felix/resolver/ResolverImpl.java +@@ -1231,7 +1231,9 @@ public class ResolverImpl implements Resolver + { + public void run() + { +- computeUses(session, allWireCandidates, allPackages, resource); ++ if (! "ignore".equals(System.getProperty("osgi.resolver.usesMode"))) { ++ computeUses(session, allWireCandidates, allPackages, resource); ++ } + } + }); + } +-- +2.7.4 + diff --git a/SOURCES/eclipse-ebz542708.patch b/SOURCES/eclipse-ebz542708.patch new file mode 100644 index 0000000..d1696ae --- /dev/null +++ b/SOURCES/eclipse-ebz542708.patch @@ -0,0 +1,28 @@ +From ceaa5685fe7f51dae0ce444407d2aea7a49b8896 Mon Sep 17 00:00:00 2001 +From: Lakshminarayana Nekkanti +Date: Mon, 3 Jun 2019 15:12:13 +0530 +Subject: Bug 542708 - stale JRE shown in Package Explorer after changing it + from 9 or above to 11 + +Change-Id: Ia9ef62a7e90fb12c9107bfaaf2f47af97fca75fb +Signed-off-by: Lakshminarayana Nekkanti +--- + .../jdt/internal/ui/packageview/PackageExplorerContentProvider.java | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageExplorerContentProvider.java b/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageExplorerContentProvider.java +index ff62fa9eda..143364142a 100644 +--- a/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageExplorerContentProvider.java ++++ b/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/packageview/PackageExplorerContentProvider.java +@@ -657,7 +657,7 @@ public class PackageExplorerContentProvider extends StandardJavaElementContentPr + return false; + } + // if the class path has changed we refresh the entire project +- if ((flags & IJavaElementDelta.F_RESOLVED_CLASSPATH_CHANGED) != 0) { ++ if ((flags & (IJavaElementDelta.F_CLASSPATH_CHANGED | IJavaElementDelta.F_RESOLVED_CLASSPATH_CHANGED)) != 0) { + postRefresh(element, ORIGINAL, element, runnables); + return false; + } +-- +cgit v1.2.1 + diff --git a/SOURCES/eclipse-ebz548211-2.patch b/SOURCES/eclipse-ebz548211-2.patch new file mode 100644 index 0000000..fff6f28 --- /dev/null +++ b/SOURCES/eclipse-ebz548211-2.patch @@ -0,0 +1,114 @@ +From 9ecc34bf838eae50a356b20c76d35fb62a423563 Mon Sep 17 00:00:00 2001 +From: Stephan Herrmann +Date: Tue, 18 Jun 2019 16:28:49 +0200 +Subject: Bug 548211 - "Remove" in the Module dependencies tab does not remove + system modules + +- more fixes, concerning update on Apply and re-open with only java.base + +Change-Id: I39a7a1da6c8ae733010009372fd36a88814e4faf +--- + .../ui/wizards/buildpaths/BuildPathsBlock.java | 3 +++ + .../ui/wizards/buildpaths/CPListElement.java | 24 +++++++++++++++------- + .../wizards/buildpaths/ModuleDependenciesPage.java | 13 ++++++++++++ + 3 files changed, 33 insertions(+), 7 deletions(-) + +diff --git a/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/BuildPathsBlock.java b/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/BuildPathsBlock.java +index 3fec77d579..37229a834b 100644 +--- a/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/BuildPathsBlock.java ++++ b/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/BuildPathsBlock.java +@@ -395,6 +395,9 @@ public class BuildPathsBlock { + } + + protected void doUpdateUI() { ++ if (fModulesPage.needReInit()) { ++ init(fCurrJProject, null, null); // extent of system modules was changed, re-init fClassPathList ++ } + fBuildPathDialogField.refresh(); + fClassPathList.refresh(); + boolean is9OrHigherAfter= JavaModelUtil.is9OrHigher(fCurrJProject); +diff --git a/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/CPListElement.java b/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/CPListElement.java +index a3c475e7ea..c670c0770f 100644 +--- a/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/CPListElement.java ++++ b/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/CPListElement.java +@@ -42,6 +42,7 @@ import org.eclipse.jdt.core.IModuleDescription; + import org.eclipse.jdt.core.IPackageFragmentRoot; + import org.eclipse.jdt.core.JavaCore; + import org.eclipse.jdt.core.JavaModelException; ++import org.eclipse.jdt.core.provisional.JavaModelAccess; + + + import org.eclipse.jdt.internal.corext.util.JavaModelUtil; +@@ -207,13 +208,22 @@ public class CPListElement { + boolean modulesAdded= false; + if (containerEntry != null) { + IPackageFragmentRoot[] fragmentRoots= fProject.findPackageFragmentRoots(containerEntry); +- if (fragmentRoots != null && fragmentRoots.length > 1) { +- for (IPackageFragmentRoot fragmentRoot : fragmentRoots) { +- IModuleDescription currModule= fragmentRoot.getModuleDescription(); +- if (currModule != null) { +- CPListElement curr= create(this, pseudoEntry, currModule, true, fProject); +- fChildren.add(curr); +- modulesAdded= true; ++ if (fragmentRoots != null) { ++ // detect if system library: ++ boolean addChildren= false; ++ if (fragmentRoots.length > 0) { ++ IModuleDescription module= fragmentRoots[0].getModuleDescription(); ++ if (module != null && JavaModelAccess.isSystemModule(module)) ++ addChildren= true; ++ } ++ if (addChildren) { ++ for (IPackageFragmentRoot fragmentRoot : fragmentRoots) { ++ IModuleDescription currModule= fragmentRoot.getModuleDescription(); ++ if (currModule != null) { ++ CPListElement curr= create(this, pseudoEntry, currModule, true, fProject); ++ fChildren.add(curr); ++ modulesAdded= true; ++ } + } + } + } +diff --git a/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ModuleDependenciesPage.java b/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ModuleDependenciesPage.java +index b813d22956..e9f1c9feff 100644 +--- a/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ModuleDependenciesPage.java ++++ b/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ModuleDependenciesPage.java +@@ -164,6 +164,7 @@ public class ModuleDependenciesPage extends BuildPathBasePage { + private Collection fAllDefaultSystemModules; // if current is unnamed module: transitive closure of default root modules (names) + + public final Map fPatchMap= new HashMap<>(); ++ private boolean needReInit= false; + + public ModuleDependenciesPage(IStatusChangeListener context, CheckedListDialogField classPathList) { + fClassPathList= classPathList; +@@ -530,6 +531,7 @@ public class ModuleDependenciesPage extends BuildPathBasePage { + } + updateLimitModules(cpListElement.findAttributeElement(CPListElement.MODULE)); + fModuleList.refresh(); ++ this.needReInit= true; + } + + public void addToSystemModules(List modulesToAdd) throws JavaModelException { +@@ -655,8 +657,19 @@ public class ModuleDependenciesPage extends BuildPathBasePage { + } + } + } ++ this.needReInit= true; + } + ++ /** Destructively reed the needReInit flag. ++ * @return {@code true} if the classpath needs to be reinitialized due to change of extent of the system library ++ */ ++ public boolean needReInit() { ++ try { ++ return this.needReInit; ++ } finally { ++ this.needReInit= false; ++ } ++ } + private Set computeForwardClosure(List seeds) { + Set closure= new HashSet<>(); + collectForwardClosure(seeds, closure); +-- +cgit v1.2.1 + diff --git a/SOURCES/eclipse-ebz548211.patch b/SOURCES/eclipse-ebz548211.patch new file mode 100644 index 0000000..f390e6d --- /dev/null +++ b/SOURCES/eclipse-ebz548211.patch @@ -0,0 +1,94 @@ +From 5ca45e97b527b5a4d4ed4ce92e32720859911968 Mon Sep 17 00:00:00 2001 +From: Stephan Herrmann +Date: Sat, 15 Jun 2019 20:47:45 +0200 +Subject: Bug 548211 - "Remove" in the Module dependencies tab does not remove + system modules + +Change-Id: I633fa86e5911c50b17a1c7ef188805902942e1db +--- + .../jdt/internal/ui/wizards/NewWizardMessages.java | 1 + + .../ui/wizards/NewWizardMessages.properties | 1 + + .../wizards/buildpaths/ModuleDependenciesPage.java | 22 ++++++++++++++++++---- + 3 files changed, 20 insertions(+), 4 deletions(-) + +diff --git a/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.java b/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.java +index 3a66ae56ed..961aa63bba 100644 +--- a/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.java ++++ b/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.java +@@ -564,6 +564,7 @@ public final class NewWizardMessages extends NLS { + public static String ModuleDependenciesPage_removeCurrentModule_error; + public static String ModuleDependenciesPage_removeModule_error_with_hint; + public static String ModuleDependenciesPage_removeSystemModule_error_hint; ++ public static String ModuleDependenciesPage_moduleIsRequired_error_hint; + + public static String ModuleDependenciesAdapter_patchConflict_title; + public static String ModuleDependenciesAdapter_patchConflict_message; +diff --git a/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.properties b/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.properties +index feb30bc627..a3d8a04624 100644 +--- a/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.properties ++++ b/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewWizardMessages.properties +@@ -605,6 +605,7 @@ ModuleDependenciesPage_removeCurrentModule_error=Cannot remove the current modul + ModuleDependenciesPage_removeModule_error_with_hint=Cannot remove module ''{0}''{1} + ModuleDependenciesPage_removeSystemModule_error_hint=\nOnly system modules can be removed here.\n\ + To remove other modules please remove them from the Modulepath (Projects or Libraries tab). ++ModuleDependenciesPage_moduleIsRequired_error_hint=\nIt is required along the path {0} + + ModuleDependenciesAdapter_patchConflict_title=Patch module conflict + ModuleDependenciesAdapter_patchConflict_message=The {0} {1} was declared to patch module ''{2}''.\n\ +diff --git a/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ModuleDependenciesPage.java b/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ModuleDependenciesPage.java +index ccc5c3317a..b813d22956 100644 +--- a/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ModuleDependenciesPage.java ++++ b/eclipse.jdt.ui/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/buildpaths/ModuleDependenciesPage.java +@@ -614,7 +614,16 @@ public class ModuleDependenciesPage extends BuildPathBasePage { + return; + } + selectedModuleNames.add(moduleName); +- collectModulesToRemove(moduleName, allModulesToRemove); ++ String problemModule= collectModulesToRemove(moduleName, allModulesToRemove); ++ if (problemModule != null) { ++ int lastArrow= problemModule.lastIndexOf("->"); //$NON-NLS-1$ ++ String leafMod= lastArrow == -1 ? problemModule : problemModule.substring(lastArrow+2); ++ MessageDialog.openError(getShell(), NewWizardMessages.ModuleDependenciesPage_removeModule_dialog_title, ++ MessageFormat.format(NewWizardMessages.ModuleDependenciesPage_removeModule_error_with_hint, ++ leafMod, ++ MessageFormat.format(NewWizardMessages.ModuleDependenciesPage_moduleIsRequired_error_hint, problemModule))); ++ return; ++ } + } + String seedModules= String.join(", ", selectedModuleNames); //$NON-NLS-1$ + if (allModulesToRemove.size() == selectedModuleNames.size()) { +@@ -664,15 +673,20 @@ public class ModuleDependenciesPage extends BuildPathBasePage { + } + } + +- private void collectModulesToRemove(String mod, Set modulesToRemove) { ++ private String collectModulesToRemove(String mod, Set modulesToRemove) { + if (fModuleList.fNames.contains(mod) && modulesToRemove.add(mod)) { + List requireds= fModuleRequiredByModules.get(mod); + if (requireds != null) { + for (String required : requireds) { +- collectModulesToRemove(required, modulesToRemove); ++ if (fModuleList.getModuleKind(required) == ModuleKind.Focus) ++ return required + "->" + mod; //$NON-NLS-1$ ++ String problemModule= collectModulesToRemove(required, modulesToRemove); ++ if (problemModule != null) ++ return problemModule + "->" + mod; //$NON-NLS-1$ + } + } + } ++ return null; + } + + private boolean confirmRemoveModule(String message) { +@@ -741,7 +755,7 @@ public class ModuleDependenciesPage extends BuildPathBasePage { + List dominators= fModuleRequiredByModules.get(name); + if (dominators != null) { + for (String dominator : dominators) { +- if (names.contains(dominator)) { ++ if (names.contains(dominator) && fModuleList.getModuleKind(dominator) == ModuleKind.System) { + continue outer; + } + } +-- +cgit v1.2.1 + diff --git a/SOURCES/eclipse-feature-plugins-to-category-ius.patch b/SOURCES/eclipse-feature-plugins-to-category-ius.patch new file mode 100644 index 0000000..b255cc7 --- /dev/null +++ b/SOURCES/eclipse-feature-plugins-to-category-ius.patch @@ -0,0 +1,810 @@ +From 42b1d14319f47d477f057a14aa1e2481729c6b13 Mon Sep 17 00:00:00 2001 +From: Mat Booth +Date: Thu, 6 Dec 2018 11:38:58 +0000 +Subject: [PATCH 1/2] Change features bundling third-party modules to feature + requirements + +--- + .../org.eclipse.jdt-feature/feature.xml | 114 ++----------- + .../org.eclipse.pde-feature/feature.xml | 16 +- + .../org.eclipse.platform.doc.isv/pom.xml | 11 +- + .../org.eclipse.help-feature/feature.xml | 130 +++------------ + .../org.eclipse.platform-feature/feature.xml | 18 +-- + .../org.eclipse.sdk.tests/feature.xml | 58 ++----- + .../org.eclipse.test-feature/feature.xml | 56 +------ + .../org.eclipse.tips.feature/feature.xml | 11 +- + .../features/org.eclipse.e4.rcp/feature.xml | 150 ++---------------- + 9 files changed, 83 insertions(+), 481 deletions(-) + +diff --git a/eclipse.jdt/org.eclipse.jdt-feature/feature.xml b/eclipse.jdt/org.eclipse.jdt-feature/feature.xml +index 06887d901..364cae9d8 100644 +--- a/eclipse.jdt/org.eclipse.jdt-feature/feature.xml ++++ b/eclipse.jdt/org.eclipse.jdt-feature/feature.xml +@@ -19,6 +19,23 @@ + %license + + ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- + + ++ ++ + + + + +- +- +- +- + + + eclipse-plugin +- javax.annotation +- 0.0.0 +- +- +- eclipse-plugin +- javax.el ++ javax.el-api + 0.0.0 + + +@@ -75,7 +70,7 @@ + + + eclipse-plugin +- javax.servlet ++ javax.servlet-api + 0.0.0 + + +@@ -95,7 +90,7 @@ + + + eclipse-plugin +- org.apache.jasper.glassfish ++ org.glassfish.web.javax.servlet.jsp + 0.0.0 + + +diff --git a/eclipse.platform.releng/features/org.eclipse.help-feature/feature.xml b/eclipse.platform.releng/features/org.eclipse.help-feature/feature.xml +index 853db711d..5195b6d59 100644 +--- a/eclipse.platform.releng/features/org.eclipse.help-feature/feature.xml ++++ b/eclipse.platform.releng/features/org.eclipse.help-feature/feature.xml +@@ -21,69 +21,6 @@ + %license + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- + + ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + +diff --git a/eclipse.platform.releng/features/org.eclipse.platform-feature/feature.xml b/eclipse.platform.releng/features/org.eclipse.platform-feature/feature.xml +index f825d4539..a9b974ca5 100644 +--- a/eclipse.platform.releng/features/org.eclipse.platform-feature/feature.xml ++++ b/eclipse.platform.releng/features/org.eclipse.platform-feature/feature.xml +@@ -19,6 +19,11 @@ + %license + + ++ ++ ++ ++ ++ + +@@ -32,12 +37,6 @@ + id="org.eclipse.help" + version="0.0.0"/> + +- +- + + +- +- + + ++ ++ ++ ++ ++ ++ ++ ++ ++ + +@@ -421,20 +430,6 @@ + install-size="0" + version="0.0.0"/> + +- +- +- +- + + +- +- +- +- +- +- +- +- +- +- + + ++ ++ ++ ++ ++ ++ ++ ++ + + +- +- +- +- +- +- +- +- +- +- +- +- + + +- +- + +diff --git a/eclipse.platform.ua/org.eclipse.tips.feature/feature.xml b/eclipse.platform.ua/org.eclipse.tips.feature/feature.xml +index 88d843b0f..d5b8195bc 100644 +--- a/eclipse.platform.ua/org.eclipse.tips.feature/feature.xml ++++ b/eclipse.platform.ua/org.eclipse.tips.feature/feature.xml +@@ -32,6 +32,10 @@ + %license + + ++ ++ ++ ++ + + +- +- + +diff --git a/eclipse.platform.ui/features/org.eclipse.e4.rcp/feature.xml b/eclipse.platform.ui/features/org.eclipse.e4.rcp/feature.xml +index ba217da7b..464451193 100644 +--- a/eclipse.platform.ui/features/org.eclipse.e4.rcp/feature.xml ++++ b/eclipse.platform.ui/features/org.eclipse.e4.rcp/feature.xml +@@ -22,6 +22,23 @@ + + + ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- + + +- +- +- +- +- +- +- +- +- +- + + +- +- + + +- +- + + +- +- +- +- +- +- + + +- +- + allIUs = getAllIUsFromRepos(); ++ HashSet removedFromAllIUs = new HashSet(); + for (Iterator iter = allIUs.iterator(); iter.hasNext();) { + final IInstallableUnit iu = iter.next(); + IInstallableUnit existing = profileIUs.get(iu); +@@ -576,6 +577,7 @@ + // (and more expensive) way to find this out is to do an IU profile property query. + if (two == null) { + // the IU is already installed so don't mark it as a dropin now - see bug 404619. ++ removedFromAllIUs.add(iu); + iter.remove(); + continue; + } +@@ -618,7 +620,7 @@ + } + // if the IU from the profile is in the "all available" list, then it is already added + // otherwise if it isn't in the repo then we have to remove it from the profile. +- if (!all.contains(iu)) ++ if (!all.contains(iu) && !removedFromAllIUs.contains(iu)) + toRemove.add(iu); + } + +@@ -792,8 +794,8 @@ + IStatus installerPlanStatus = engine.perform(plan.getInstallerPlan(), phaseSet, monitor); + if (!installerPlanStatus.isOK()) + return installerPlanStatus; +- +- applyConfiguration(true); ++ if (isReconciliationApplicationRunning()) ++ applyConfiguration(true); + } + return engine.perform(plan, phaseSet, monitor); + } +--- rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/migration/MigrationWizard.java.orig 2018-04-25 20:31:57.931223008 +0100 ++++ rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui.sdk.scheduler/src/org/eclipse/equinox/internal/p2/ui/sdk/scheduler/migration/MigrationWizard.java 2018-04-25 20:32:11.069144336 +0100 +@@ -151,7 +151,7 @@ + + @Override + public boolean performCancel() { +- String[] buttons = new String[] {IDialogConstants.YES_LABEL, ProvUIMessages.MigrationPage_LATER_BUTTON, IDialogConstants.NO_LABEL}; ++ String[] buttons = new String[] {IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL}; + MessageDialog dialog = new MessageDialog(getShell(), ProvUIMessages.MigrationPage_CONFIRMATION_TITLE, null, ProvUIMessages.MigrationPage_CONFIRMATION_DIALOG, MessageDialog.QUESTION, buttons, 2); + + return rememberCancellationDecision(dialog.open()); diff --git a/SOURCES/eclipse-fix-tests.patch b/SOURCES/eclipse-fix-tests.patch new file mode 100644 index 0000000..39bf472 --- /dev/null +++ b/SOURCES/eclipse-fix-tests.patch @@ -0,0 +1,268 @@ +--- eclipse.pde.ui/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/target/MinimalTargetDefinitionPersistenceTests.java.orig 2016-04-19 20:07:36.947017206 +0100 ++++ eclipse.pde.ui/ui/org.eclipse.pde.ui.tests/src/org/eclipse/pde/ui/tests/target/MinimalTargetDefinitionPersistenceTests.java 2016-04-19 20:09:59.166077383 +0100 +@@ -76,7 +76,7 @@ + */ + protected IPath getJdtFeatureLocation() { + IPath path = new Path(TargetPlatform.getDefaultLocation()); +- path = path.append("features"); ++ path = path.append("droplets").append("eclipse-jdt").append("features"); + File dir = path.toFile(); + assertTrue("Missing features directory", dir.exists() && !dir.isFile()); + String[] files = dir.list(); +diff --git rt.equinox.p2/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/reconciler/dropins/AbstractReconcilerTest.java rt.equinox.p2/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/reconciler/dropins/AbstractReconcilerTest.java +index f1f38f0..f9111e6 100644 +--- rt.equinox.p2/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/reconciler/dropins/AbstractReconcilerTest.java ++++ rt.equinox.p2/bundles/org.eclipse.equinox.p2.tests/src/org/eclipse/equinox/p2/tests/reconciler/dropins/AbstractReconcilerTest.java +@@ -217,7 +217,7 @@ + if (parent != null) { + File[] children = parent.listFiles((FileFilter) pathname -> { + String name = pathname.getName(); +- return name.startsWith("eclipse-platform-"); ++ return name.startsWith("eclipse-SDK-"); + }); + if (children != null && children.length == 1) + file = children[0]; +diff --git eclipse.jdt.core/org.eclipse.jdt.apt.pluggable.tests/build.properties eclipse.jdt.core/org.eclipse.jdt.apt.pluggable.tests/build.properties +index 376daa6..1742a8d 100644 +--- eclipse.jdt.core/org.eclipse.jdt.apt.pluggable.tests/build.properties ++++ eclipse.jdt.core/org.eclipse.jdt.apt.pluggable.tests/build.properties +@@ -17,6 +17,7 @@ bin.includes = .,\ + resources/,\ + lib/ + src.includes = about.html +-jars.compile.order = . ++jars.compile.order = .,\ ++ lib/annotations.jar + source.. = src/ +-output.. = bin/ ++source.lib/annotations.jar = src/ +diff --git eclipse.jdt.core/org.eclipse.jdt.apt.tests/build.properties eclipse.jdt.core/org.eclipse.jdt.apt.tests/build.properties +index f34ae40..0f9877d 100644 +--- eclipse.jdt.core/org.eclipse.jdt.apt.tests/build.properties ++++ eclipse.jdt.core/org.eclipse.jdt.apt.tests/build.properties +@@ -24,4 +24,6 @@ bin.includes = plugin.xml,\ + plugin.properties + src.includes = about.html + src.excludes = src-resources/ +-jars.compile.order = aptext.jar,apt.jar,. ++jars.compile.order = aptext.jar,apt.jar,.,\ ++ resources/question.jar ++source.resources/question.jar = src-resources/ +diff --git eclipse.jdt.core/org.eclipse.jdt.compiler.apt.tests/build.properties eclipse.jdt.core/org.eclipse.jdt.compiler.apt.tests/build.properties +index bc8963d..fbe4da3 100644 +--- eclipse.jdt.core/org.eclipse.jdt.compiler.apt.tests/build.properties ++++ eclipse.jdt.core/org.eclipse.jdt.compiler.apt.tests/build.properties +@@ -25,3 +25,6 @@ + src.includes = about.html + compilerArg=-proc:none + jars.extra.classpath = lib/java10api.jar ++source.lib/apttestprocessors.jar = processors/ ++jars.compile.order = lib/apttestprocessors.jar,\ ++ . +--- eclipse.platform/ant/org.eclipse.ant.tests.ui/build.properties.orig 2016-03-24 14:25:47.076289150 +0000 ++++ eclipse.platform/ant/org.eclipse.ant.tests.ui/build.properties 2016-03-24 14:26:39.528660802 +0000 +@@ -25,6 +25,8 @@ + Ant Tests/ + + source.lib/antUITestsSupport.jar = test support/ +-jars.compile.order=anttestsui.jar,lib/antUITestsSupport.jar ++source.testbuildfiles/antUITestsSupport.jar = test support/ ++jars.compile.order=anttestsui.jar,lib/antUITestsSupport.jar,testbuildfiles/antUITestsSupport.jar + output.lib/antUITestsSupport.jar = test_support_bin/ ++output.testbuildfiles/antUITestsSupport.jar = test_support_bin/ + output.anttestsui.jar = bin/ +--- eclipse.jdt.ui/org.eclipse.jdt.ui.tests/build.properties.orig 2016-03-25 15:09:40.557786910 +0000 ++++ eclipse.jdt.ui/org.eclipse.jdt.ui.tests/build.properties 2016-03-25 15:12:08.476059326 +0000 +@@ -22,3 +22,5 @@ + leaks/,\ + performance/ + javacWarnings..=-raw,-unchecked ++source.testresources/nls.jar = nls/ ++jars.compile.order = .,testresources/nls.jar +--- /dev/null 1970-01-01 01:00:00.000000000 +0100 ++++ eclipse.jdt.ui/org.eclipse.jdt.ui.tests/nls/pkg/Client.java 2004-11-12 14:37:36.000000000 +0000 +@@ -0,0 +1,25 @@ ++/******************************************************************************* ++ * Copyright (c) 2000, 2004 IBM Corporation and others. ++ * All rights reserved. This program and the accompanying materials ++ * are made available under the terms of the Common Public License v1.0 ++ * which accompanies this distribution, and is available at ++ * http://www.eclipse.org/legal/cpl-v10.html ++ * ++ * Contributors: ++ * IBM Corporation - initial API and implementation ++ *******************************************************************************/ ++package pkg; ++ ++public class Client { ++ ++ public String s; ++ ++ { ++ s= Messages.getString("test"); ++ s= Messages.getString("test_undefined"); ++ s= Messages.getString("duplicate"); ++ s= Messages.getString("test.long.key"); ++ s= Messages.getString("SearchResultView.removed_resource"); ++ } ++ ++} +--- /dev/null 1970-01-01 01:00:00.000000000 +0100 ++++ eclipse.jdt.ui/org.eclipse.jdt.ui.tests/nls/pkg/Messages.java 2004-11-12 14:37:28.000000000 +0000 +@@ -0,0 +1,58 @@ ++/******************************************************************************* ++ * Copyright (c) 2000, 2004 IBM Corporation and others. ++ * All rights reserved. This program and the accompanying materials ++ * are made available under the terms of the Common Public License v1.0 ++ * which accompanies this distribution, and is available at ++ * http://www.eclipse.org/legal/cpl-v10.html ++ * ++ * Contributors: ++ * IBM Corporation - initial API and implementation ++ *******************************************************************************/ ++package pkg; ++ ++import java.text.MessageFormat; ++import java.util.MissingResourceException; ++import java.util.ResourceBundle; ++ ++public class Messages extends Object { ++ private static final String RESOURCE_BUNDLE = Messages.class.getName(); ++ private static ResourceBundle fgResourceBundle = ResourceBundle.getBundle(RESOURCE_BUNDLE); ++ ++ private Messages() {} ++ ++ /** ++ * Gets a string from the resource bundle and formats it with the argument ++ * ++ * @param key the string used to get the bundle value, must not be null ++ */ ++ public static String getFormattedString(String key, Object arg) { ++ String format = null; ++ ++ try { ++ format = fgResourceBundle.getString(key); ++ } catch (MissingResourceException e) { ++ return "!" + key + "!"; //$NON-NLS-2$ //$NON-NLS-1$ ++ } ++ ++ if (arg == null) { ++ arg = ""; //$NON-NLS-1$ ++ } ++ ++ return MessageFormat.format(format, new Object[] { arg }); ++ } ++ ++ /** ++ * Gets a string from the resource bundle and formats it with arguments ++ */ ++ public static String getFormattedString(String key, String[] args) { ++ return MessageFormat.format(fgResourceBundle.getString(key), args); ++ } ++ ++ public static String getString(String key) { ++ try { ++ return fgResourceBundle.getString(key); ++ } catch (MissingResourceException e) { ++ return "!" + key + "!"; //$NON-NLS-2$ //$NON-NLS-1$ ++ } ++ } ++} +--- /dev/null 1970-01-01 01:00:00.000000000 +0100 ++++ eclipse.jdt.ui/org.eclipse.jdt.ui.tests/nls/pkg/Messages.properties 2004-11-12 14:38:06.000000000 +0000 +@@ -0,0 +1,15 @@ ++############################################################################### ++# Copyright (c) 2000, 2004 IBM Corporation and others. ++# All rights reserved. This program and the accompanying materials ++# are made available under the terms of the Common Public License v1.0 ++# which accompanies this distribution, and is available at ++# http://www.eclipse.org/legal/cpl-v10.html ++# ++# Contributors: ++# IBM Corporation - initial API and implementation ++############################################################################### ++test= Hello World ++duplicate= Duplicate 1 ++test.long.key= Hello World Long ++duplicate= Duplicate 2 ++SearchResultView.removed_resource= +--- eclipse.platform/ant/org.eclipse.ant.tests.core/build.properties.orig 2017-03-03 14:20:53.868573338 +0000 ++++ eclipse.platform/ant/org.eclipse.ant.tests.core/build.properties 2017-03-06 14:26:42.382365639 +0000 +@@ -23,6 +23,8 @@ + source.anttestscore.jar = test plugin/,\ + tests/ + source.lib/antTestsSupport.jar = test support/ +-jars.compile.order=anttestscore.jar,lib/antTestsSupport.jar ++source.testlib/classpathOrdering1.jar = testlib_src/classpathOrdering1/ ++source.testlib/classpathOrdering2.jar = testlib_src/classpathOrdering2/ ++jars.compile.order=anttestscore.jar,lib/antTestsSupport.jar,testlib/classpathOrdering1.jar,testlib/classpathOrdering2.jar + output.lib/antTestsSupport.jar = test_support_bin/ + output.anttestscore.jar = bin/ +--- /dev/null 2017-02-12 18:27:14.283389371 +0000 ++++ eclipse.platform/ant/org.eclipse.ant.tests.core/testlib_src/classpathOrdering1/ClasspathOrdering.java 2017-03-06 14:28:57.742879825 +0000 +@@ -0,0 +1,10 @@ ++import java.io.PrintStream; ++ ++public class ClasspathOrdering ++{ ++ public static void main(String[] args) ++ { ++ System.out.println("classpathOrdering1"); ++ } ++} ++ +--- /dev/null 2017-02-12 18:27:14.283389371 +0000 ++++ eclipse.platform/ant/org.eclipse.ant.tests.core/testlib_src/classpathOrdering2/ClasspathOrdering.java 2017-03-06 14:29:45.759352762 +0000 +@@ -0,0 +1,10 @@ ++import java.io.PrintStream; ++ ++public class ClasspathOrdering ++{ ++ public static void main(String[] args) ++ { ++ System.out.println("classpathOrdering2"); ++ } ++} ++ +--- eclipse.pde.build/org.eclipse.pde.build.tests/test.xml.orig 2017-04-28 11:49:47.046123546 +0100 ++++ eclipse.pde.build/org.eclipse.pde.build.tests/test.xml 2017-04-28 12:05:11.947521737 +0100 +@@ -156,13 +156,6 @@ + id="org.eclipse.jdt.source.feature.group" + version="" /> + +- +- +- + + ${tycho.surefire.argLine} + +- ++ ++ ++ org.eclipse.tycho ++ target-platform-configuration ++ ++ ++ ++ ++ eclipse-plugin ++ org.eclipse.jdt.annotation ++ 0.0.0 ++ ++ ++ ++ ++ + + + diff --git a/SOURCES/eclipse-hide-droplets-from-install-wizard.patch b/SOURCES/eclipse-hide-droplets-from-install-wizard.patch new file mode 100644 index 0000000..c261fef --- /dev/null +++ b/SOURCES/eclipse-hide-droplets-from-install-wizard.patch @@ -0,0 +1,64 @@ +commit 4bfc5a7c6d8c2aaf954c113d805419472de2bcaf +Author: Mat Booth +Date: Thu May 3 15:58:49 2018 +0100 + + Bug 534326 - Awkward p2 UI when many droplets are installed + + Filter out software site locations where we know that they are p2 + droplets in places we show the list to the user. + + Change-Id: I12364223850862783cb7cffd32fb7428fbf6b270 + Signed-off-by: Mat Booth + +diff --git a/rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositorySelectionGroup.java b/rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositorySelectionGroup.java +index e6eef8c39..fe5970e79 100644 +--- a/rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositorySelectionGroup.java ++++ b/rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/internal/p2/ui/dialogs/RepositorySelectionGroup.java +@@ -303,6 +303,19 @@ public class RepositorySelectionGroup { + void fillRepoCombo(final String selection) { + RepositoryTracker tracker = ui.getRepositoryTracker(); + URI[] sites = tracker.getKnownRepositories(ui.getSession()); ++ // Filter out sites that are actually installed p2 droplets ++ String fragments = System.getProperty("p2.fragments"); //$NON-NLS-1$ ++ ArrayList filteredSites = new ArrayList<>(Arrays.asList(sites)); ++ if (fragments != null) { ++ for (String root : fragments.split(",")) { //$NON-NLS-1$ ++ for (URI uri : sites) { ++ if (uri.getPath() != null && uri.getPath().startsWith(root)) { ++ filteredSites.remove(uri); ++ } ++ } ++ } ++ } ++ sites = filteredSites.toArray(new URI[0]); + boolean hasLocalSites = getLocalSites().length > 0; + final String[] items; + if (hasLocalSites) { +diff --git a/rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java b/rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java +index d796aefd0..c03924f90 100644 +--- a/rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java ++++ b/rt.equinox.p2/bundles/org.eclipse.equinox.p2.ui/src/org/eclipse/equinox/p2/ui/RepositoryManipulationPage.java +@@ -133,9 +133,22 @@ public class RepositoryManipulationPage extends PreferencePage implements IWorkb + if (cachedElements == null) { + Object[] children = super.fetchChildren(o, monitor); + cachedElements = new Hashtable<>(children.length); ++ String fragments = System.getProperty("p2.fragments"); //$NON-NLS-1$ + for (int i = 0; i < children.length; i++) { + if (children[i] instanceof MetadataRepositoryElement) { +- put((MetadataRepositoryElement) children[i]); ++ // Filter out locations that are actually installed p2 droplets ++ if (fragments != null) { ++ boolean isDroplet = false; ++ for (String root : fragments.split(",")) { //$NON-NLS-1$ ++ URI childLoc = ((MetadataRepositoryElement) children[i]).getLocation(); ++ if (childLoc.getPath() != null && childLoc.getPath().startsWith(root)) { ++ isDroplet = true; ++ } ++ } ++ if (!isDroplet) { ++ put((MetadataRepositoryElement) children[i]); ++ } ++ } + } + } + } diff --git a/SOURCES/eclipse-ignore-version-when-calculating-home.patch b/SOURCES/eclipse-ignore-version-when-calculating-home.patch new file mode 100644 index 0000000..b5e77b2 --- /dev/null +++ b/SOURCES/eclipse-ignore-version-when-calculating-home.patch @@ -0,0 +1,22 @@ +--- rt.equinox.framework/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/Main.java.orig 2014-03-24 12:06:59.530918305 +0000 ++++ rt.equinox.framework/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/Main.java 2014-03-24 12:07:42.709932098 +0000 +@@ -1351,7 +1351,7 @@ + String appVersion = props.getProperty(PRODUCT_SITE_VERSION); + if (appVersion == null || appVersion.trim().length() == 0) + appVersion = ""; //$NON-NLS-1$ +- appName += File.separator + appId + "_" + appVersion + "_" + installDirHash; //$NON-NLS-1$ //$NON-NLS-2$ ++ appName += File.separator + appId + "_" + installDirHash; //$NON-NLS-1$ //$NON-NLS-2$ + } catch (IOException e) { + // Do nothing if we get an exception. We will default to a standard location + // in the user's home dir. +--- rt.equinox.framework/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/location/EquinoxLocations.java.orig 2014-03-24 12:05:52.666896971 +0000 ++++ rt.equinox.framework/bundles/org.eclipse.osgi/container/src/org/eclipse/osgi/internal/location/EquinoxLocations.java 2014-03-24 12:06:46.076914704 +0000 +@@ -308,7 +308,7 @@ + String appVersion = props.getProperty(PRODUCT_SITE_VERSION); + if (appVersion == null || appVersion.trim().length() == 0) + appVersion = ""; //$NON-NLS-1$ +- appName += File.separator + appId + "_" + appVersion + "_" + installDirHash; //$NON-NLS-1$ //$NON-NLS-2$ ++ appName += File.separator + appId + "_" + installDirHash; //$NON-NLS-1$ //$NON-NLS-2$ + } catch (IOException e) { + // Do nothing if we get an exception. We will default to a standard location + // in the user's home dir. diff --git a/SOURCES/eclipse-make-droplets-runnable.patch b/SOURCES/eclipse-make-droplets-runnable.patch new file mode 100644 index 0000000..e1d1abc --- /dev/null +++ b/SOURCES/eclipse-make-droplets-runnable.patch @@ -0,0 +1,47 @@ +From decc6ec5f3c5ce87fa50c2cfe932d66e89496810 Mon Sep 17 00:00:00 2001 +From: Roland Grunberg +Date: Wed, 3 Aug 2016 14:57:10 -0400 +Subject: [PATCH] p2 Droplets should be recognized as runnable repositories. + +Normally, a runnable repository is identified by the 'p2.runnable' +property contained within the artifact repository (artifact.xml). +However, in Fedora we ship p2 Droplets without this file so we need a +way to let methods like getRunnableRepositories in +o.e.equinox.internal.p2.touchpoint.eclipse.Util know that p2 Droplets +are runnable repositories. + +Change-Id: I0ad0a7557f998b4d032466f89e6cc76036d1fb38 +--- + .../ExtensionLocationArtifactRepository.java | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +diff --git rt.equinox.p2/bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/ExtensionLocationArtifactRepository.java rt.equinox.p2/bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/ExtensionLocationArtifactRepository.java +index 342e33e..425a166 100644 +--- rt.equinox.p2/bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/ExtensionLocationArtifactRepository.java ++++ rt.equinox.p2/bundles/org.eclipse.equinox.p2.extensionlocation/src/org/eclipse/equinox/internal/p2/extensionlocation/ExtensionLocationArtifactRepository.java +@@ -283,6 +283,22 @@ public class ExtensionLocationArtifactRepository extends AbstractRepository references; + + public ClassFileSignatureVisitor() { +- super(Opcodes.ASM7); ++ super(Opcodes.ASM6); + this.references = new ArrayList<>(); + } + +@@ -250,7 +250,7 @@ public class ReferenceExtractor extends ClassVisitor { + * @param mv + */ + public ClassFileMethodVisitor(MethodVisitor mv, String name, int argumentcount) { +- super(Opcodes.ASM7, mv); ++ super(Opcodes.ASM6, mv); + this.argumentcount = argumentcount; + this.linePositionTracker = new LinePositionTracker(); + this.lastLineNumber = -1; +@@ -635,7 +635,7 @@ public class ReferenceExtractor extends ClassVisitor { + class ClassFileFieldVisitor extends FieldVisitor { + + ClassFileFieldVisitor() { +- super(Opcodes.ASM7); ++ super(Opcodes.ASM6); + } + + @Override +@@ -991,7 +991,7 @@ public class ReferenceExtractor extends ClassVisitor { + * {@link ReferenceModifiers} + */ + public ReferenceExtractor(IApiType type, Set collector, int referenceKinds) { +- super(Opcodes.ASM7, new ClassNode()); ++ super(Opcodes.ASM6, new ClassNode()); + fType = type; + this.collector = collector; + fReferenceKinds = referenceKinds; +@@ -1008,7 +1008,7 @@ public class ReferenceExtractor extends ClassVisitor { + * @param tracker + */ + protected ReferenceExtractor(IApiType type, Set collector, int referenceKinds, FieldTracker tracker) { +- super(Opcodes.ASM7, new ClassNode()); ++ super(Opcodes.ASM6, new ClassNode()); + fType = type; + this.collector = collector; + fReferenceKinds = referenceKinds; +diff --git a/eclipse.pde.ui/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/comparator/SignatureDecoder.java b/eclipse.pde.ui/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/comparator/SignatureDecoder.java +index e6e38604eb..490598b7b9 100644 +--- a/eclipse.pde.ui/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/comparator/SignatureDecoder.java ++++ b/eclipse.pde.ui/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/comparator/SignatureDecoder.java +@@ -32,7 +32,7 @@ final class SignatureDecoder extends SignatureVisitor { + SignatureDescriptor signatureDescriptor; + + public SignatureDecoder(SignatureDescriptor signatureDescriptor) { +- super(Opcodes.ASM7); ++ super(Opcodes.ASM6); + this.signatureDescriptor = signatureDescriptor; + } + +diff --git a/eclipse.pde.ui/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/model/TypeStructureBuilder.java b/eclipse.pde.ui/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/model/TypeStructureBuilder.java +index 4ff1492e86..7dc03b6aa4 100644 +--- a/eclipse.pde.ui/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/model/TypeStructureBuilder.java ++++ b/eclipse.pde.ui/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/model/TypeStructureBuilder.java +@@ -57,7 +57,7 @@ public class TypeStructureBuilder extends ClassVisitor { + * unknown + */ + TypeStructureBuilder(ClassVisitor cv, IApiComponent component, IApiTypeRoot file) { +- super(Opcodes.ASM7, cv); ++ super(Opcodes.ASM6, cv); + fComponent = component; + fFile = file; + } +@@ -154,7 +154,7 @@ public class TypeStructureBuilder extends ClassVisitor { + } + } + final ApiMethod method = fType.addMethod(name, desc, signature, laccess, names); +- return new MethodVisitor(Opcodes.ASM7, ++ return new MethodVisitor(Opcodes.ASM6, + super.visitMethod(laccess, name, desc, signature, exceptions)) { + @Override + public AnnotationVisitor visitAnnotation(String sig, boolean visible) { +@@ -190,7 +190,7 @@ public class TypeStructureBuilder extends ClassVisitor { + int traceCount = 0; + + public AnnotationDefaultVisitor(ApiMethod method) { +- super(Opcodes.ASM7); ++ super(Opcodes.ASM6); + this.method = method; + } + +@@ -308,7 +308,7 @@ public class TypeStructureBuilder extends ClassVisitor { + String typeName; + + public EnclosingMethodSetter(ClassVisitor cv, String typeName) { +- super(Opcodes.ASM7, cv); ++ super(Opcodes.ASM6, cv); + this.typeName = typeName.replace('.', '/'); + } + +@@ -341,7 +341,7 @@ public class TypeStructureBuilder extends ClassVisitor { + protected EnclosingMethodSetter setter; + + public TypeNameFinder(MethodVisitor mv, EnclosingMethodSetter enclosingMethodSetter) { +- super(Opcodes.ASM7, mv); ++ super(Opcodes.ASM6, mv); + this.setter = enclosingMethodSetter; + } + +Submodule eclipse.platform.ui contains modified content +diff --git a/eclipse.platform.ui/tests/org.eclipse.e4.ui.tests.css.swt/META-INF/MANIFEST.MF b/eclipse.platform.ui/tests/org.eclipse.e4.ui.tests.css.swt/META-INF/MANIFEST.MF +index eb08f62a5d..c11656359b 100644 +--- a/eclipse.platform.ui/tests/org.eclipse.e4.ui.tests.css.swt/META-INF/MANIFEST.MF ++++ b/eclipse.platform.ui/tests/org.eclipse.e4.ui.tests.css.swt/META-INF/MANIFEST.MF +@@ -10,8 +10,9 @@ Require-Bundle: org.junit, + org.w3c.css.sac, + org.eclipse.e4.ui.css.swt.theme;bundle-version="0.9.1", + org.eclipse.ui;bundle-version="3.106.0", ++ org.hamcrest.core;bundle-version="1.3.0", + org.hamcrest.library;bundle-version="1.3.0", +- org.mockito;bundle-version="2.13.0", ++ org.mockito.mockito-core, + org.eclipse.equinox.preferences;bundle-version="3.5.200", + org.eclipse.ui.forms, + org.eclipse.ui.views.properties.tabbed +diff --git a/eclipse.platform.ui/tests/org.eclipse.e4.ui.tests/META-INF/MANIFEST.MF b/eclipse.platform.ui/tests/org.eclipse.e4.ui.tests/META-INF/MANIFEST.MF +index 19458ab029..986226a097 100644 +--- a/eclipse.platform.ui/tests/org.eclipse.e4.ui.tests/META-INF/MANIFEST.MF ++++ b/eclipse.platform.ui/tests/org.eclipse.e4.ui.tests/META-INF/MANIFEST.MF +@@ -31,8 +31,9 @@ Require-Bundle: org.eclipse.emf.ecore.xmi;bundle-version="2.4.0", + org.eclipse.core.expressions;bundle-version="3.4.200", + org.eclipse.e4.ui.workbench.addons.swt;bundle-version="0.9.0", + org.eclipse.e4.ui.css.swt;bundle-version="0.11.0", ++ org.hamcrest.core;bundle-version="1.3.0", + org.hamcrest.library;bundle-version="1.3.0", +- org.mockito;bundle-version="2.13.0", ++ org.mockito.mockito-core, + org.eclipse.e4.ui.css.core;bundle-version="0.10.100", + org.eclipse.test.performance;bundle-version="3.13.0" + Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +diff --git a/eclipse.platform.ui/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/workbench/renderers/swt/ThemeDefinitionChangedHandlerTest.java b/eclipse.platform.ui/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/workbench/renderers/swt/ThemeDefinitionChangedHandlerTest.java +index 6d98e184d3..7def31d02c 100644 +--- a/eclipse.platform.ui/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/workbench/renderers/swt/ThemeDefinitionChangedHandlerTest.java ++++ b/eclipse.platform.ui/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/workbench/renderers/swt/ThemeDefinitionChangedHandlerTest.java +@@ -16,7 +16,7 @@ package org.eclipse.e4.ui.workbench.renderers.swt; + + import static org.junit.Assert.assertEquals; + import static org.junit.Assert.assertTrue; +-import static org.mockito.ArgumentMatchers.any; ++import static org.mockito.Matchers.any; + import static org.mockito.Mockito.doReturn; + import static org.mockito.Mockito.mock; + import static org.mockito.Mockito.never; +diff --git a/eclipse.platform.ui/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/themes/StylingPreferencesHandlerTest.java b/eclipse.platform.ui/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/themes/StylingPreferencesHandlerTest.java +index 99654e3845..07facbb824 100644 +--- a/eclipse.platform.ui/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/themes/StylingPreferencesHandlerTest.java ++++ b/eclipse.platform.ui/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/themes/StylingPreferencesHandlerTest.java +@@ -13,8 +13,8 @@ + *******************************************************************************/ + package org.eclipse.ui.tests.themes; + +-import static org.mockito.ArgumentMatchers.anyBoolean; +-import static org.mockito.ArgumentMatchers.anyObject; ++import static org.mockito.Matchers.anyBoolean; ++import static org.mockito.Matchers.anyObject; + import static org.mockito.Mockito.doReturn; + import static org.mockito.Mockito.mock; + import static org.mockito.Mockito.spy; +diff --git a/eclipse.platform.ui/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/themes/WorkbenchThemeChangedHandlerTest.java b/eclipse.platform.ui/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/themes/WorkbenchThemeChangedHandlerTest.java +index 5c6d765a76..fa59d14187 100644 +--- a/eclipse.platform.ui/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/themes/WorkbenchThemeChangedHandlerTest.java ++++ b/eclipse.platform.ui/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/themes/WorkbenchThemeChangedHandlerTest.java +@@ -15,10 +15,10 @@ + package org.eclipse.ui.tests.themes; + + import static org.eclipse.ui.internal.themes.WorkbenchThemeManager.EMPTY_COLOR_VALUE; +-import static org.mockito.ArgumentMatchers.any; +-import static org.mockito.ArgumentMatchers.anyObject; +-import static org.mockito.ArgumentMatchers.eq; +-import static org.mockito.ArgumentMatchers.isNull; ++import static org.mockito.Matchers.any; ++import static org.mockito.Matchers.anyObject; ++import static org.mockito.Matchers.eq; ++import static org.mockito.Matchers.isNull; + import static org.mockito.Mockito.doReturn; + import static org.mockito.Mockito.mock; + import static org.mockito.Mockito.never; +@@ -102,11 +102,11 @@ public class WorkbenchThemeChangedHandlerTest extends TestCase { + verify(colorRegistry, times(1)).put(eq("colorDefinition"), any(RGB.class)); + verify(colorRegistry, times(1)).put(eq("colorDefinition"), eq(EMPTY_COLOR_VALUE)); + +- verify(handler, times(1)).populateDefinition(isNull(), isNull(), ++ verify(handler, times(1)).populateDefinition(any(ITheme.class), any(org.eclipse.ui.themes.ITheme.class), + eq(fontRegistry), eq(fontDefinition1), any(IPreferenceStore.class)); + verify(handler, never()).populateDefinition(any(ITheme.class), any(org.eclipse.ui.themes.ITheme.class), + eq(fontRegistry), eq(fontDefinition2), any(IPreferenceStore.class)); +- verify(handler, times(1)).populateDefinition(isNull(), isNull(), ++ verify(handler, times(1)).populateDefinition(any(ITheme.class), any(org.eclipse.ui.themes.ITheme.class), + eq(colorRegistry), eq(colorDefinition), any(IPreferenceStore.class)); + + verify(stylingEngine, times(1)).style(fontDefinition2); +@@ -165,22 +165,22 @@ public class WorkbenchThemeChangedHandlerTest extends TestCase { + //then + verify(stylingEngine, times(1)).style(fontDefinition1); + verify(fontRegistry, times(1)).put("fontDefinition1", null); +- verify(handler, times(1)).populateDefinition(isNull(), isNull(), eq(fontRegistry), eq(fontDefinition1), ++ verify(handler, times(1)).populateDefinition(any(ITheme.class), any(org.eclipse.ui.themes.ITheme.class), eq(fontRegistry), eq(fontDefinition1), + any(IPreferenceStore.class)); + + verify(stylingEngine, times(1)).style(fontDefinition2); + verify(fontRegistry, never()).put(eq("fontDefinition2"), any(FontData[].class)); +- verify(handler, times(1)).populateDefinition(isNull(), isNull(), eq(fontRegistry), eq(fontDefinition2), ++ verify(handler, times(1)).populateDefinition(any(ITheme.class), any(org.eclipse.ui.themes.ITheme.class), eq(fontRegistry), eq(fontDefinition2), + any(IPreferenceStore.class)); + + verify(stylingEngine, times(1)).style(colorDefinition1); + verify(colorRegistry, never()).put(eq("colorDefinition1"), any(RGB.class)); +- verify(handler, times(1)).populateDefinition(isNull(), isNull(), eq(colorRegistry), eq(colorDefinition1), ++ verify(handler, times(1)).populateDefinition(any(ITheme.class), any(org.eclipse.ui.themes.ITheme.class), eq(colorRegistry), eq(colorDefinition1), + any(IPreferenceStore.class)); + + verify(stylingEngine, times(1)).style(colorDefinition2); + verify(colorRegistry, times(1)).put("colorDefinition2", null); +- verify(handler, times(1)).populateDefinition(isNull(), isNull(), eq(colorRegistry), eq(colorDefinition2), ++ verify(handler, times(1)).populateDefinition(any(ITheme.class), any(org.eclipse.ui.themes.ITheme.class), eq(colorRegistry), eq(colorDefinition2), + any(IPreferenceStore.class)); + } + +@@ -227,9 +227,9 @@ public class WorkbenchThemeChangedHandlerTest extends TestCase { + verify(colorRegistry, times(1)).put("colorDefinition", null); + assertEquals(1, themeRegistry.getColors().length); + +- verify(handler, times(1)).populateDefinition(isNull(), isNull(), eq(fontRegistry), eq(fontDefinition), ++ verify(handler, times(1)).populateDefinition(any(ITheme.class), any(org.eclipse.ui.themes.ITheme.class), eq(fontRegistry), eq(fontDefinition), + any(IPreferenceStore.class)); +- verify(handler, times(1)).populateDefinition(isNull(), isNull(), eq(colorRegistry), eq(colorDefinition), ++ verify(handler, times(1)).populateDefinition(any(ITheme.class), any(org.eclipse.ui.themes.ITheme.class), eq(colorRegistry), eq(colorDefinition), + any(IPreferenceStore.class)); + + verify(handler, times(1)).resetThemeRegistries(themeRegistry, fontRegistry, colorRegistry); +@@ -297,13 +297,13 @@ public class WorkbenchThemeChangedHandlerTest extends TestCase { + verify(colorRegistry, times(1)).put(eq("colorDefinition2"), any(RGB.class)); + verify(colorRegistry, times(1)).put(eq("colorDefinition2"), eq(EMPTY_COLOR_VALUE)); + +- verify(handler, times(1)).populateDefinition(isNull(), isNull(), eq(fontRegistry), eq(fontDefinition1), ++ verify(handler, times(1)).populateDefinition(any(ITheme.class), any(org.eclipse.ui.themes.ITheme.class), eq(fontRegistry), eq(fontDefinition1), + any(IPreferenceStore.class)); +- verify(handler, times(1)).populateDefinition(isNull(), isNull(), eq(fontRegistry), eq(fontDefinition2), ++ verify(handler, times(1)).populateDefinition(any(ITheme.class), any(org.eclipse.ui.themes.ITheme.class), eq(fontRegistry), eq(fontDefinition2), + any(IPreferenceStore.class)); +- verify(handler, times(1)).populateDefinition(isNull(), isNull(), eq(colorRegistry), eq(colorDefinition1), ++ verify(handler, times(1)).populateDefinition(any(ITheme.class), any(org.eclipse.ui.themes.ITheme.class), eq(colorRegistry), eq(colorDefinition1), + any(IPreferenceStore.class)); +- verify(handler, times(1)).populateDefinition(isNull(), isNull(), eq(colorRegistry), eq(colorDefinition2), ++ verify(handler, times(1)).populateDefinition(any(ITheme.class), any(org.eclipse.ui.themes.ITheme.class), eq(colorRegistry), eq(colorDefinition2), + any(IPreferenceStore.class)); + + verify(handler, times(1)).resetThemeRegistries(themeRegistry, fontRegistry, colorRegistry); +diff --git a/eclipse.platform.ui/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF b/eclipse.platform.ui/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF +index 45c025610f..484f3a0092 100644 +--- a/eclipse.platform.ui/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF ++++ b/eclipse.platform.ui/tests/org.eclipse.ui.tests/META-INF/MANIFEST.MF +@@ -44,7 +44,7 @@ Require-Bundle: org.eclipse.core.resources, + org.eclipse.osgi.services;bundle-version="3.3.100", + org.hamcrest.core;bundle-version="1.3.0", + org.hamcrest.library;bundle-version="1.3.0", +- org.mockito;bundle-version="2.13.0" ++ org.mockito.mockito-core + Import-Package: javax.annotation + Eclipse-AutoStart: true + Export-Package: org.eclipse.ui.tests.api, +diff --git a/eclipse.platform.releng/features/org.eclipse.sdk.tests/feature.xml b/eclipse.platform.releng/features/org.eclipse.sdk.tests/feature.xml +index 5514138f..ac5c0ee4 100644 +--- a/eclipse.platform.releng/features/org.eclipse.sdk.tests/feature.xml ++++ b/eclipse.platform.releng/features/org.eclipse.sdk.tests/feature.xml +@@ -23,7 +23,7 @@ + + + +- ++ + + + +diff --git a/eclipse.platform.releng/features/org.eclipse.test-feature/feature.xml b/eclipse.platform.releng/features/org.eclipse.test-feature/feature.xml +index d4728693..297e1031 100644 +--- a/eclipse.platform.releng/features/org.eclipse.test-feature/feature.xml ++++ b/eclipse.platform.releng/features/org.eclipse.test-feature/feature.xml +@@ -24,7 +24,7 @@ + + + +- ++ + + + + + ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +--- eclipse.platform.ui/features/org.eclipse.e4.rcp/pom.xml.orig 2014-05-26 18:37:25.406426611 +0300 ++++ eclipse.platform.ui/features/org.eclipse.e4.rcp/pom.xml 2014-05-26 18:37:47.327449374 +0300 +@@ -42,6 +42,23 @@ + + + ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + +--- eclipse.platform.releng/features/org.eclipse.sdk/feature.xml.orig 2019-06-17 13:00:29.410091487 +0100 ++++ eclipse.platform.releng/features/org.eclipse.sdk/feature.xml 2019-06-17 13:00:36.270076080 +0100 +@@ -51,16 +51,6 @@ + id="org.eclipse.help.source" + version="0.0.0"/> + +- +- +- +- +- +- +- +- +- +- + + + +- + + + +--- rt.equinox.bundles/bundles/org.eclipse.equinox.http.servlet.tests/src/org/eclipse/equinox/http/servlet/tests/ServletTest.java.orig 2019-06-20 11:48:48.317887414 +0100 ++++ rt.equinox.bundles/bundles/org.eclipse.equinox.http.servlet.tests/src/org/eclipse/equinox/http/servlet/tests/ServletTest.java 2019-06-20 11:49:35.106774459 +0100 +@@ -79,10 +79,6 @@ + import javax.servlet.http.HttpSessionListener; + import javax.servlet.http.Part; + +-import org.apache.commons.fileupload.FileItem; +-import org.apache.commons.fileupload.FileUploadException; +-import org.apache.commons.fileupload.disk.DiskFileItemFactory; +-import org.apache.commons.fileupload.servlet.ServletFileUpload; + import org.eclipse.equinox.http.servlet.ExtendedHttpService; + import org.eclipse.equinox.http.servlet.RangeAwareServletContextHelper; + import org.eclipse.equinox.http.servlet.context.ContextPathCustomizer; +@@ -2665,65 +2661,6 @@ + Assert.assertEquals("bundleresource", requestAdvisor.request("testDefaultHttpContextResource")); + } + +- @Test +- public void test_commonsFileUpload() throws Exception { +- Servlet servlet = new HttpServlet() { +- private static final long serialVersionUID = 1L; +- +- @Override +- protected void doPost(HttpServletRequest req, HttpServletResponse resp) +- throws IOException, ServletException { +- +- boolean isMultipart = ServletFileUpload.isMultipartContent(req); +- Assert.assertTrue(isMultipart); +- +- DiskFileItemFactory factory = new DiskFileItemFactory(); +- +- ServletContext servletContext = this.getServletConfig().getServletContext(); +- File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir"); +- factory.setRepository(repository); +- ServletFileUpload upload = new ServletFileUpload(factory); +- +- List items = null; +- try { +- List parseRequest = upload.parseRequest(req); +- items = parseRequest; +- } catch (FileUploadException e) { +- e.printStackTrace(); +- } +- +- Assert.assertNotNull(items); +- Assert.assertFalse(items.isEmpty()); +- +- FileItem fileItem = items.get(0); +- +- String submittedFileName = fileItem.getName(); +- String contentType = fileItem.getContentType(); +- long size = fileItem.getSize(); +- +- PrintWriter writer = resp.getWriter(); +- +- writer.write(submittedFileName); +- writer.write("|"); +- writer.write(contentType); +- writer.write("|" + size); +- } +- }; +- +- Dictionary props = new Hashtable(); +- props.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_NAME, "S16"); +- props.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_PATTERN, "/Servlet16/*"); +- registrations.add(getBundleContext().registerService(Servlet.class, servlet, props)); +- +- Map> map = new HashMap>(); +- +- map.put("file", Arrays.asList(getClass().getResource("blue.png"))); +- +- Map> result = requestAdvisor.upload("Servlet16/do", map); +- +- Assert.assertEquals("200", result.get("responseCode").get(0)); +- Assert.assertEquals("blue.png|image/png|292", result.get("responseBody").get(0)); +- } + + @Test + public void test_PathEncodings_Bug540970() throws Exception { diff --git a/SOURCES/eclipse-pde-tp-support-droplets.patch b/SOURCES/eclipse-pde-tp-support-droplets.patch new file mode 100644 index 0000000..dd23623 --- /dev/null +++ b/SOURCES/eclipse-pde-tp-support-droplets.patch @@ -0,0 +1,120 @@ +From 72e58be8c9c5fbc6f6527318b4381a58cebfc120 Mon Sep 17 00:00:00 2001 +From: Roland Grunberg +Date: Thu, 7 Apr 2016 10:23:49 -0400 +Subject: [PATCH] Support reading BundleInfo from p2 Droplets enabled + installations. + +- Additionally support reading source bundles from p2 Droplets location +--- + ui/org.eclipse.pde.core/META-INF/MANIFEST.MF | 3 +- + .../src/org/eclipse/pde/internal/core/P2Utils.java | 48 +++++++++++++++++++--- + 2 files changed, 45 insertions(+), 6 deletions(-) + +diff --git eclipse.pde.ui/ui/org.eclipse.pde.core/META-INF/MANIFEST.MF eclipse.pde.ui/ui/org.eclipse.pde.core/META-INF/MANIFEST.MF +index 7c20994..ab702e3 100644 +--- eclipse.pde.ui/ui/org.eclipse.pde.core/META-INF/MANIFEST.MF ++++ eclipse.pde.ui/ui/org.eclipse.pde.core/META-INF/MANIFEST.MF +@@ -104,6 +104,7 @@ Require-Bundle: + org.eclipse.core.filesystem;bundle-version="[1.0.0,2.0.0)" + Eclipse-LazyStart: true + Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +-Import-Package: com.ibm.icu.util ++Import-Package: com.ibm.icu.util, ++ org.eclipse.equinox.internal.simpleconfigurator.utils + Bundle-ActivationPolicy: lazy + Automatic-Module-Name: org.eclipse.pde.core +diff --git eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/P2Utils.java eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/P2Utils.java +index fbd4b81..55cd40e 100644 +--- eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/P2Utils.java ++++ eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/P2Utils.java +@@ -17,8 +17,9 @@ + import java.io.File; + import java.io.FileNotFoundException; + import java.io.IOException; +-import java.net.MalformedURLException; +-import java.net.URL; ++import java.net.*; ++import java.nio.file.Paths; ++import java.util.Arrays; + import java.util.ArrayList; + import java.util.Collection; + import java.util.HashMap; +@@ -31,7 +32,9 @@ + import org.eclipse.core.runtime.NullProgressMonitor; + import org.eclipse.core.runtime.Path; + import org.eclipse.core.runtime.Status; ++import org.eclipse.core.runtime.URIUtil; + import org.eclipse.equinox.frameworkadmin.BundleInfo; ++import org.eclipse.equinox.internal.simpleconfigurator.utils.SimpleConfiguratorUtils; + import org.eclipse.equinox.p2.core.IProvisioningAgent; + import org.eclipse.equinox.p2.core.IProvisioningAgentProvider; + import org.eclipse.equinox.p2.engine.IEngine; +@@ -60,6 +63,7 @@ + import org.eclipse.pde.core.plugin.TargetPlatform; + import org.eclipse.pde.internal.build.BundleHelper; + import org.eclipse.pde.internal.core.plugin.PluginBase; ++import org.eclipse.pde.internal.core.util.ManifestUtils; + import org.osgi.framework.Constants; + + /** +@@ -139,7 +143,16 @@ + try { + URL bundlesTxt = new URL(configurationArea.getProtocol(), configurationArea.getHost(), new File(configurationArea.getFile(), SimpleConfiguratorManipulator.BUNDLES_INFO_PATH).getAbsolutePath()); + File home = basePath.toFile(); +- BundleInfo bundles[] = getBundlesFromFile(bundlesTxt, home); ++ List ibundleList = SimpleConfiguratorUtils.readConfiguration(bundlesTxt, home.toURI()); ++ List bundleList = new ArrayList<>(); ++ for (org.eclipse.equinox.internal.simpleconfigurator.utils.BundleInfo b : ibundleList) { ++ URI location = b.getLocation(); ++ if (!location.isAbsolute() && b.getBaseLocation() != null) ++ location = URIUtil.makeAbsolute(location, b.getBaseLocation()); ++ BundleInfo binfo = new BundleInfo(b.getSymbolicName(), b.getVersion(), location, b.getStartLevel(), b.isMarkedAsStarted()); ++ bundleList.add(binfo); ++ } ++ BundleInfo[] bundles = bundleList.toArray(new BundleInfo[0]); + if (bundles == null || bundles.length == 0) { + return null; + } +@@ -171,11 +184,38 @@ + try { + File home = basePath.toFile(); + URL srcBundlesTxt = new URL(configurationArea.getProtocol(), configurationArea.getHost(), configurationArea.getFile().concat(SimpleConfiguratorManipulator.SOURCE_INFO_PATH)); ++ final List allSrcBundles = new ArrayList<>(); ++ try { ++ for (File infoFile : SimpleConfiguratorUtils.getInfoFiles()) { ++ File pluginsDir = Paths.get(infoFile.getParent(), "plugins").toFile(); //$NON-NLS-1$ ++ File[] sourceJars = pluginsDir.listFiles((dir, name) -> { ++ return name.matches(".*\\.source_.*\\.jar$"); //$NON-NLS-1$ ++ }); ++ for (File sourceJar : sourceJars) { ++ Map manifest; ++ try { ++ manifest = ManifestUtils.loadManifest(sourceJar); ++ final String bsn = manifest.get(Constants.BUNDLE_SYMBOLICNAME); ++ final String version = manifest.get(Constants.BUNDLE_VERSION); ++ BundleInfo info = new BundleInfo(bsn, version, sourceJar.toURI(), -1, false); ++ allSrcBundles.add(info); ++ } catch (CoreException e) { ++ // continue ++ } ++ } ++ } ++ } catch (URISyntaxException e) { ++ // continue ++ } ++ + BundleInfo srcBundles[] = getBundlesFromFile(srcBundlesTxt, home); +- if (srcBundles == null || srcBundles.length == 0) { ++ if (srcBundles != null && srcBundles.length > 0) { ++ allSrcBundles.addAll(Arrays.asList(srcBundles)); ++ } ++ if (allSrcBundles.size() == 0) { + return null; + } +- return srcBundles; ++ return allSrcBundles.toArray(new BundleInfo[0]); + } catch (MalformedURLException e) { + PDECore.log(e); + return null; +-- +2.7.4 diff --git a/SOURCES/eclipse-secondary-arches.patch b/SOURCES/eclipse-secondary-arches.patch new file mode 100644 index 0000000..caa42a8 --- /dev/null +++ b/SOURCES/eclipse-secondary-arches.patch @@ -0,0 +1,144 @@ +diff --git a/eclipse.platform.ui/features/org.eclipse.e4.rcp/feature.xml b/eclipse.platform.ui/features/org.eclipse.e4.rcp/feature.xml +index 7e1f520..734dd10 100644 +--- a/eclipse.platform.ui/features/org.eclipse.e4.rcp/feature.xml ++++ b/eclipse.platform.ui/features/org.eclipse.e4.rcp/feature.xml +@@ -393,6 +393,26 @@ + unpack="false"/> + + ++ ++ ++ ++ ++ ++ ++ ++ + +--- a/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/pom.xml 2014-11-28 15:09:42.000000000 +0000 ++++ b/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/pom.xml 2014-11-28 16:52:00.315007846 +0000 +@@ -123,7 +123,9 @@ + + + ++ + ++ + + + +--- a/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/build.properties 2015-01-30 14:44:03.436891441 +0000 ++++ b/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/build.properties 2015-01-30 14:45:25.232480509 +0000 +@@ -32,3 +32,9 @@ + + root.linux.gtk.x86_64=bin/gtk/linux/x86_64,gtk_root + root.linux.gtk.x86_64.permissions.755=libcairo-swt.so ++ ++root.linux.gtk.aarch64=bin/gtk/linux/aarch64,gtk_root ++root.linux.gtk.aarch64.permissions.755=launcher ++ ++root.linux.gtk.s390x=bin/gtk/linux/s390x,gtk_root ++root.linux.gtk.s390x.permissions.755=launcher +--- a/eclipse.platform.swt.binaries/pom.xml 2017-04-05 01:57:59.142576722 +0100 ++++ b/eclipse.platform.swt.binaries/pom.xml 2017-04-05 02:00:00.153247342 +0100 +@@ -54,7 +54,9 @@ + + + bundles/org.eclipse.swt.cocoa.macosx.x86_64 ++ bundles/org.eclipse.swt.gtk.linux.aarch64 + bundles/org.eclipse.swt.gtk.linux.ppc64le ++ bundles/org.eclipse.swt.gtk.linux.s390x + bundles/org.eclipse.swt.gtk.linux.x86_64 + bundles/org.eclipse.swt.win32.win32.x86_64 + +--- a/eclipse.platform.swt/bundles/org.eclipse.swt/META-INF/p2.inf 2017-04-21 10:15:34.857977599 +0100 ++++ b/eclipse.platform.swt/bundles/org.eclipse.swt/META-INF/p2.inf 2017-04-21 10:18:22.878025820 +0100 +@@ -24,3 +24,13 @@ + requires.5.name = org.eclipse.swt.gtk.linux.ppc64le + requires.5.range = [$version$,$version$] + requires.5.filter = (&(osgi.os=linux)(osgi.ws=gtk)(osgi.arch=ppc64le)(!(org.eclipse.swt.buildtime=true))) ++ ++requires.6.namespace = org.eclipse.equinox.p2.iu ++requires.6.name = org.eclipse.swt.gtk.linux.aarch64 ++requires.6.range = [$version$,$version$] ++requires.6.filter = (&(osgi.os=linux)(osgi.ws=gtk)(osgi.arch=aarch64)(!(org.eclipse.swt.buildtime=true))) ++ ++requires.7.namespace = org.eclipse.equinox.p2.iu ++requires.7.name = org.eclipse.swt.gtk.linux.s390x ++requires.7.range = [$version$,$version$] ++requires.7.filter = (&(osgi.os=linux)(osgi.ws=gtk)(osgi.arch=s390x)(!(org.eclipse.swt.buildtime=true))) +--- a/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/library/gtk/build.sh 2017-04-19 13:31:15.000000000 +0100 ++++ b/rt.equinox.framework/features/org.eclipse.equinox.executable.feature/library/gtk/build.sh 2017-04-23 16:58:34.022207885 +0100 +@@ -109,7 +109,7 @@ + "s390x") + defaultOSArch="s390x" + defaultJava=DEFAULT_JAVA_EXEC +- OUTPUT_DIR="$EXEC_DIR/contributed/$defaultWS/$defaultOS/$defaultOSArch" ++ OUTPUT_DIR="$EXEC_DIR/bin/$defaultWS/$defaultOS/$defaultOSArch" + ;; + arm*) + defaultOSArch="arm" +--- a/rt.equinox.framework/pom.xml 2017-04-26 22:19:15.548461372 +0100 ++++ b/rt.equinox.framework/pom.xml 2017-04-26 22:20:41.348571492 +0100 +@@ -77,6 +77,18 @@ + bundles/org.eclipse.equinox.launcher.gtk.linux.aarch64 + + ++ ++ build-native-launchers-gtk.linux.s390x ++ ++ ++ native ++ gtk.linux.s390x ++ ++ ++ ++ bundles/org.eclipse.equinox.launcher.gtk.linux.s390x ++ ++ + + + diff --git a/SOURCES/eclipse-support-symlink-bundles.patch b/SOURCES/eclipse-support-symlink-bundles.patch new file mode 100644 index 0000000..17f2e56 --- /dev/null +++ b/SOURCES/eclipse-support-symlink-bundles.patch @@ -0,0 +1,156 @@ +From aabcf5acff194b807c4d0bcf68425c3452c90339 Mon Sep 17 00:00:00 2001 +From: Roland Grunberg +Date: Fri, 12 Sep 2014 10:27:14 -0400 +Subject: [PATCH] Add support for regenerating bundle versions for symlinks. + +When the version field in a bundle info file corresponds to a bundle +whose location is a symbolic link, the correct version should be +regenerated every time, in case a change has occured. + +Change-Id: Ifbe8efed2218a8a1250fd1ac59f0cdd6bdd5f309 +--- + .../META-INF/MANIFEST.MF | 1 + + .../utils/SimpleConfiguratorUtils.java | 106 ++++++++++++++++++++- + 2 files changed, 106 insertions(+), 1 deletion(-) + +diff --git rt.equinox.p2/bundles/org.eclipse.equinox.simpleconfigurator/META-INF/MANIFEST.MF rt.equinox.p2/bundles/org.eclipse.equinox.simpleconfigurator/META-INF/MANIFEST.MF +index d88d0a6..07fe087 100644 +--- rt.equinox.p2/bundles/org.eclipse.equinox.simpleconfigurator/META-INF/MANIFEST.MF ++++ rt.equinox.p2/bundles/org.eclipse.equinox.simpleconfigurator/META-INF/MANIFEST.MF +@@ -9,6 +9,7 @@ Bundle-Activator: org.eclipse.equinox.internal.simpleconfigurator.Activator + Bundle-ActivationPolicy: lazy + Import-Package: org.eclipse.osgi.framework.console;version="1.0.0";resolution:=optional, + org.eclipse.osgi.service.datalocation;version="1.0.0";resolution:=optional, ++ org.eclipse.osgi.util;version="1.1.0", + org.osgi.framework;version="1.3.0", + org.osgi.framework.namespace;version="1.0.0", + org.osgi.framework.wiring;version="1.2.0", +diff --git rt.equinox.p2/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorUtils.java rt.equinox.p2/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorUtils.java +index ab69b88..d6bf121 100644 +--- rt.equinox.p2/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorUtils.java ++++ rt.equinox.p2/bundles/org.eclipse.equinox.simpleconfigurator/src/org/eclipse/equinox/internal/simpleconfigurator/utils/SimpleConfiguratorUtils.java +@@ -20,8 +20,12 @@ + import java.nio.file.Files; + import java.nio.file.attribute.FileTime; + import java.util.*; ++import java.util.jar.JarFile; ++import java.util.zip.ZipEntry; ++import java.util.zip.ZipFile; + import org.eclipse.equinox.internal.simpleconfigurator.Activator; +-import org.osgi.framework.Version; ++import org.eclipse.osgi.util.ManifestElement; ++import org.osgi.framework.*; + + public class SimpleConfiguratorUtils { + +@@ -282,6 +286,16 @@ + String symbolicName = tok.nextToken().trim(); + String version = tok.nextToken().trim(); + URI location = parseLocation(tok.nextToken().trim()); ++ if (base != null) { ++ URI absLoc = URIUtil.append(base, location.toString()); ++ java.nio.file.Path absPath = java.nio.file.Paths.get(absLoc); ++ // Symbolic links may change outside Eclipse so regenerate proper bundle version. ++ if (Files.isSymbolicLink(absPath) && absPath.toFile().isFile()) { ++ // We can't depend on org.eclipse.equinox.internal.frameworkadmin.utils.Utils ++ Dictionary manifest = getOSGiManifest(absLoc); ++ version = manifest.get(Constants.BUNDLE_VERSION); ++ } ++ } + int startLevel = Integer.parseInt(tok.nextToken().trim()); + boolean markedAsStarted = Boolean.parseBoolean(tok.nextToken()); + BundleInfo result = new BundleInfo(symbolicName, version, location, startLevel, markedAsStarted); +@@ -420,4 +434,93 @@ + } + return lastModified; + } ++ ++ private static Dictionary getOSGiManifest(URI location) { ++ if (location == null) ++ return null; ++ // if we have a file-based URL that doesn't end in ".jar" then... ++ if (FILE_SCHEME.equals(location.getScheme())) ++ return basicLoadManifest(URIUtil.toFile(location)); ++ ++ try { ++ URL url = new URL("jar:" + location.toString() + "!/"); //$NON-NLS-1$//$NON-NLS-2$ ++ JarURLConnection jarConnection = (JarURLConnection) url.openConnection(); ++ ZipFile jar = jarConnection.getJarFile(); ++ ++ try { ++ ZipEntry entry = jar.getEntry(JarFile.MANIFEST_NAME); ++ if (entry == null) ++ return null; ++ ++ Map manifest = ManifestElement.parseBundleManifest(jar.getInputStream(entry), null); ++ return manifestToProperties(manifest); ++ } catch (BundleException e) { ++ return null; ++ } finally { ++ jar.close(); ++ } ++ } catch (IOException e) { ++ if (System.getProperty("osgi.debug") != null) { //$NON-NLS-1$ ++ System.err.println("location=" + location); //$NON-NLS-1$ ++ e.printStackTrace(); ++ } ++ } ++ return null; ++ } ++ ++ private static Dictionary basicLoadManifest(File bundleLocation) { ++ InputStream manifestStream = null; ++ ZipFile jarFile = null; ++ try { ++ try { ++ // Handle a JAR'd bundle ++ if (bundleLocation.isFile()) { ++ jarFile = new ZipFile(bundleLocation, ZipFile.OPEN_READ); ++ ZipEntry manifestEntry = jarFile.getEntry(JarFile.MANIFEST_NAME); ++ if (manifestEntry != null) { ++ manifestStream = jarFile.getInputStream(manifestEntry); ++ } ++ } else { ++ // we have a directory-based bundle ++ File bundleManifestFile = new File(bundleLocation, JarFile.MANIFEST_NAME); ++ if (bundleManifestFile.exists()) ++ manifestStream = new BufferedInputStream(new FileInputStream(new File(bundleLocation, JarFile.MANIFEST_NAME))); ++ } ++ } catch (IOException e) { ++ //ignore ++ } ++ ++ try { ++ Map manifest = ManifestElement.parseBundleManifest(manifestStream, null); ++ return manifestToProperties(manifest); ++ } catch (IOException ioe) { ++ return null; ++ } catch (BundleException e) { ++ return null; ++ } ++ } finally { ++ try { ++ if (manifestStream != null) ++ manifestStream.close(); ++ } catch (IOException e1) { ++ //Ignore ++ } ++ try { ++ if (jarFile != null) ++ jarFile.close(); ++ } catch (IOException e2) { ++ //Ignore ++ } ++ } ++ } ++ ++ private static Dictionary manifestToProperties(Map d) { ++ Iterator iter = d.keySet().iterator(); ++ Dictionary result = new Hashtable(); ++ while (iter.hasNext()) { ++ String key = iter.next(); ++ result.put(key, d.get(key)); ++ } ++ return result; ++ } + } diff --git a/SOURCES/eclipse-swt-avoid-javascript-at-build.patch b/SOURCES/eclipse-swt-avoid-javascript-at-build.patch new file mode 100644 index 0000000..8864089 --- /dev/null +++ b/SOURCES/eclipse-swt-avoid-javascript-at-build.patch @@ -0,0 +1,98 @@ +--- eclipse.platform.swt.binaries/bundles/binaries-parent/pom.xml.orig 2019-05-01 16:18:20.026476746 +0100 ++++ eclipse.platform.swt.binaries/bundles/binaries-parent/pom.xml 2019-05-01 16:18:30.068453716 +0100 +@@ -75,18 +75,6 @@ + + + +- +- +- org.mozilla +- rhino +- 1.7.10 +- +- +- org.apache.ant +- ant-apache-bsf +- 1.10.6 +- +- + + + +--- eclipse.platform.swt/bundles/org.eclipse.swt/buildSWT.xml.orig 2019-05-01 15:19:21.784965731 +0100 ++++ eclipse.platform.swt/bundles/org.eclipse.swt/buildSWT.xml 2019-05-01 16:40:48.623849151 +0100 +@@ -399,27 +399,8 @@ + + + +- + +- +- Version=${swt_version}; New=${new_version}; New comma_ver=${new_comma_ver} ++ Version=${swt_version} + + + +@@ -548,11 +529,7 @@ + + + +- ++ + + + +@@ -686,23 +663,15 @@ + + + +- ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + diff --git a/SOURCES/explicit-hamcrest.patch b/SOURCES/explicit-hamcrest.patch new file mode 100644 index 0000000..a3b3bb3 --- /dev/null +++ b/SOURCES/explicit-hamcrest.patch @@ -0,0 +1,29 @@ +--- eclipse.jdt.debug/org.eclipse.jdt.debug.tests/META-INF/MANIFEST.MF.orig 2018-08-20 12:54:25.245305107 +0100 ++++ eclipse.jdt.debug/org.eclipse.jdt.debug.tests/META-INF/MANIFEST.MF 2018-08-20 12:54:37.952261537 +0100 +@@ -33,6 +33,7 @@ + org.eclipse.ui.workbench.texteditor;resolution:=optional, + org.eclipse.ui.editors;resolution:=optional, + org.junit, ++ org.hamcrest.core, + org.eclipse.core.resources, + org.eclipse.core.variables, + org.eclipse.ui, +--- eclipse.platform.ui/tests/org.eclipse.tests.urischeme/META-INF/MANIFEST.MF.orig 2018-08-20 13:22:04.987695821 +0100 ++++ eclipse.platform.ui/tests/org.eclipse.tests.urischeme/META-INF/MANIFEST.MF 2018-08-20 13:22:28.507613518 +0100 +@@ -7,4 +7,5 @@ + Fragment-Host: org.eclipse.urischeme;bundle-version="1.0.0" + Automatic-Module-Name: org.eclipse.urischeme.tests + Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +-Require-Bundle: org.junit;bundle-version="[4.12.0,5.0.0)" ++Require-Bundle: org.junit;bundle-version="[4.12.0,5.0.0)", ++ org.hamcrest.core;bundle-version="1.3.0" +--- eclipse.pde.ui/ui/org.eclipse.pde.ui.templates.tests/META-INF/MANIFEST.MF.orig 2019-06-20 11:25:47.959981490 +0100 ++++ eclipse.pde.ui/ui/org.eclipse.pde.ui.templates.tests/META-INF/MANIFEST.MF 2019-06-20 11:26:06.444935061 +0100 +@@ -9,6 +9,7 @@ + Require-Bundle: org.eclipse.pde.ui;bundle-version="3.10.0", + org.eclipse.pde.ui.templates;bundle-version="3.6.0", + org.junit;bundle-version="4.12.0", ++ org.hamcrest.core;bundle-version="1.3.0", + org.eclipse.core.runtime;bundle-version="3.13.0", + org.eclipse.core.resources;bundle-version="3.12.0", + org.eclipse.ui.ide;bundle-version="3.13.0", diff --git a/SOURCES/fix-ant-execution.patch b/SOURCES/fix-ant-execution.patch new file mode 100644 index 0000000..5ba0ebb --- /dev/null +++ b/SOURCES/fix-ant-execution.patch @@ -0,0 +1,26 @@ +diff --git a/eclipse.platform/ant/org.eclipse.ant.launching/remote/org/eclipse/ant/internal/launching/remote/AntSecurityManager.java b/eclipse.platform/ant/org.eclipse.ant.launching/remote/org/eclipse/ant/internal/launching/remote/AntSecurityManager.java +index b6c0d1e68..a35e683d7 100644 +--- a/eclipse.platform/ant/org.eclipse.ant.launching/remote/org/eclipse/ant/internal/launching/remote/AntSecurityManager.java ++++ b/eclipse.platform/ant/org.eclipse.ant.launching/remote/org/eclipse/ant/internal/launching/remote/AntSecurityManager.java +@@ -19,12 +19,6 @@ import java.net.SocketPermission; + import java.security.Permission; + import java.util.PropertyPermission; + +-import org.eclipse.ant.core.AntCorePlugin; +-import org.eclipse.ant.core.AntSecurityException; +-import org.eclipse.core.runtime.IStatus; +-import org.eclipse.core.runtime.Platform; +-import org.eclipse.core.runtime.Status; +- + /** + * A security manager that always throws an AntSecurityException if the calling thread attempts to cause the Java Virtual Machine to + * exit/halt or if the restricted thread attempts to set a System property. Otherwise this manager just delegates to the pre-existing manager passed +@@ -453,8 +447,6 @@ public class AntSecurityManager extends SecurityManager { + return super.getInCheck(); + } + catch (NoSuchMethodException | SecurityException e) { +- Platform.getLog(AntCorePlugin.getPlugin().getBundle()).log(new Status(IStatus.WARNING, "org.eclipse.ant.launching", //$NON-NLS-1$ +- RemoteAntMessages.getString("AntSecurityManager.getInCheck"))); //$NON-NLS-1$ + return false; + } + } diff --git a/SOURCES/fix_ant_build.patch b/SOURCES/fix_ant_build.patch new file mode 100644 index 0000000..40f51d8 --- /dev/null +++ b/SOURCES/fix_ant_build.patch @@ -0,0 +1,161 @@ +--- eclipse.platform/ant/org.eclipse.ant.launching/build.properties.orig 2017-01-09 10:24:16.258243377 +0000 ++++ eclipse.platform/ant/org.eclipse.ant.launching/build.properties 2017-01-09 10:25:08.302620557 +0000 +@@ -23,18 +23,14 @@ + about.html + + jars.compile.order = .,\ +- lib/loggers.jar +-# antdebug.jar and remote.jar are compiled locally using 1.6, see bug 495617: +-# lib/antdebug.jar,\ +-# lib/remote.jar ++ lib/antdebug.jar,\ ++ lib/loggers.jar,\ ++ lib/remote.jar + source.lib/loggers.jar = loggers/ + output.lib/loggers.jar = loggers_bin/ +-extra.lib/loggers.jar = lib/antdebug.jar +-#source.lib/antdebug.jar = common/ +-#output.lib/antdebug.jar = common_bin/ +-#source.lib/remote.jar = remote/ +-#output.lib/remote.jar = remote_bin/ +-src.includes = about.html,\ +- remote/,\ +- common/ ++source.lib/antdebug.jar = common/ ++output.lib/antdebug.jar = common_bin/ ++source.lib/remote.jar = remote/ ++output.lib/remote.jar = remote_bin/ ++src.includes = about.html + javacWarnings..=-unavoidableGenericProblems +--- eclipse.platform/ant/org.eclipse.ant.ui/build.properties.orig 2017-04-03 18:40:41.033489412 +0100 ++++ eclipse.platform/ant/org.eclipse.ant.ui/build.properties 2017-04-03 18:43:21.614928391 +0100 +@@ -17,8 +17,8 @@ + source.lib/antrunner.jar = Ant Runner Support/ + output.lib/antrunner.jar = ant_runner_support_bin/ + # Compiled with 1.6 locally, see bug 495617: +-#source.lib/remoteAnt.jar = Remote Ant Support/ +-#output.lib/remoteAnt.jar = remote_support_bin/ ++source.lib/remoteAnt.jar = Remote Ant Support/ ++output.lib/remoteAnt.jar = remote_support_bin/ + src.includes = about.html,\ + about_files/,\ + Remote Ant Support/ +@@ -34,6 +34,5 @@ + lib/antrunner.jar,\ + lib/remoteAnt.jar,\ + css/ +-jars.compile.order=.,lib/antrunner.jar +-# ,lib/remoteAnt.jar ++jars.compile.order=.,lib/antrunner.jar,lib/remoteAnt.jar + javacWarnings..=-unavoidableGenericProblems +--- eclipse.platform.common/bundles/org.eclipse.jdt.doc.user/build.xml.orig 2017-01-09 13:30:24.238066571 +0000 ++++ eclipse.platform.common/bundles/org.eclipse.jdt.doc.user/build.xml 2017-01-09 13:31:19.228456113 +0000 +@@ -1,106 +1,8 @@ + +- ++ + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- + diff --git a/SOURCES/prefer_x11_backend.patch b/SOURCES/prefer_x11_backend.patch new file mode 100644 index 0000000..838ab61 --- /dev/null +++ b/SOURCES/prefer_x11_backend.patch @@ -0,0 +1,14 @@ +--- rt.equinox.framework/features/org.eclipse.equinox.executable.feature/library/gtk/eclipseGtkInit.c.orig 2018-08-22 15:19:04.602623018 +0100 ++++ rt.equinox.framework/features/org.eclipse.equinox.executable.feature/library/gtk/eclipseGtkInit.c 2018-08-22 15:20:03.453348722 +0100 +@@ -114,6 +114,11 @@ + #define DLFLAGS RTLD_LAZY + #endif + ++ char *gdkBackend = getenv("GDK_BACKEND"); ++ if (gdkBackend == NULL) { ++ setenv("GDK_BACKEND", "x11", 0); ++ } ++ + void *gioLib = NULL, *glibLib = NULL, *gdkLib = NULL, *gtkLib = NULL, *objLib = NULL, *pixLib = NULL; + + gdkLib = dlopen(GDK3_LIB, DLFLAGS); diff --git a/SPECS/eclipse.spec b/SPECS/eclipse.spec new file mode 100644 index 0000000..49527ae --- /dev/null +++ b/SPECS/eclipse.spec @@ -0,0 +1,1403 @@ +# Set to build Eclipse without circular dependency to eclipse-pde, API +# generation and docs will not be built and a second run will be required, but +# this is a way to bootstrap Eclipse on secondary archs. +%bcond_with bootstrap + +# Set this to avoid building contributor tools and tests +%bcond_without contrib_tools + +Epoch: 1 + +%global eb_commit c985e357223668b4bc1fb76ea6b9e0c12829b7e8 +%global eclipse_rel %{version}RC2 +%global eclipse_tag S-%{eclipse_rel}-201906051800 + +%global _jetty_version 9.4.19 +%global _lucene_version 8.0.0 +%global _batik_version 1.11 + +%ifarch %{ix86} + %global eclipse_arch x86 +%endif +%ifarch %{arm} + %global eclipse_arch arm +%endif +%ifarch s390x x86_64 aarch64 ppc64le + %global eclipse_arch %{_arch} +%endif + +# Desktop file information +%global app_name %{?app_name_prefix}%{!?app_name_prefix:Eclipse} +%global app_exec %{?app_exec_prefix} eclipse + +# Eclipse is arch-specific, but multilib agnostic +%global _eclipsedir %{_prefix}/lib/eclipse + +%if 0%{?fedora} || 0%{?rhel} > 7 +%global use_wayland 1 +%else +%global use_wayland 0 +%endif + +Summary: An open, extensible IDE +Name: eclipse +Version: 4.12 +Release: 6%{?dist} +License: EPL-2.0 +URL: http://www.eclipse.org/ + +Source0: https://download.eclipse.org/eclipse/downloads/drops4/%{eclipse_tag}/eclipse-platform-sources-%{eclipse_rel}.tar.xz + +# Can generate locally with: +# git archive --format=tar --prefix=org.eclipse.linuxtools.eclipse-build-%%{eb_commit}/ \ +# %%{eb_commit} | xz > org.eclipse.linuxtools.eclipse-build-%%{eb_commit}.tar.xz +Source1: http://git.eclipse.org/c/linuxtools/org.eclipse.linuxtools.eclipse-build.git/snapshot/org.eclipse.linuxtools.eclipse-build-%{eb_commit}.tar.xz + +# Eclipse should not include source for dependencies that are not supplied by this package +# and should not include source for bundles that are not relevant to our platform +Patch0: eclipse-no-source-for-dependencies.patch + +# https://bugs.eclipse.org/bugs/show_bug.cgi?id=377515 +Patch1: eclipse-p2-pick-up-renamed-jars.patch + +# Patch for this was contributed. Unlikely to be released. +Patch2: eclipse-ignore-version-when-calculating-home.patch + +# Explicit requirement on hamcrest where it is used directly +Patch3: explicit-hamcrest.patch + +# Add support for all arches supported by Fedora +Patch4: eclipse-secondary-arches.patch + +Patch5: eclipse-debug-symbols.patch + +#Patch6: eclipse-test-support.patch + +# https://bugs.eclipse.org/bugs/show_bug.cgi?id=408138 +Patch12: eclipse-fix-dropins.patch + +# Feature plugin definitions lock onto version of plugin at build-time. +# If plugin is external, updating it breaks the feature. (version changes) +# Workaround : Change definition to a 'requirement' +# Also makes the following BSN changes at the same time: +# com.sun.el -> com.sun.el.javax.el +# javax.el -> javax.el-api +# javax.servlet -> javax.servlet-api +# org.apache.jasper.glassfish -> org.glassfish.web.javax.servlet.jsp +# javax.annotation -> javax.annotation-api +# org.w3c.dom.smil -> removed +Patch13: eclipse-feature-plugins-to-category-ius.patch + +Patch14: eclipse-support-symlink-bundles.patch + +# Fix various JDT and PDE tests +Patch15: eclipse-fix-tests.patch + +# Droplet fixes +Patch16: eclipse-adjust-droplets.patch +Patch17: eclipse-pde-tp-support-droplets.patch + +# Disable uses by default +Patch18: eclipse-disable-uses-constraints.patch + +# Droplet fixes +Patch19: eclipse-make-droplets-runnable.patch +Patch20: eclipse-disable-droplets-in-dropins.patch + +# Temporary measure until wayland improves +Patch21: prefer_x11_backend.patch + +# Fix errors when building ant launcher +Patch22: fix_ant_build.patch + +# Hide the p2 Droplets from cluttering Install Wizard Combo +Patch23: eclipse-hide-droplets-from-install-wizard.patch + +# Avoid the need for a javascript interpreter at build time +Patch24: eclipse-swt-avoid-javascript-at-build.patch + +# Avoid optional dep used only for tests +Patch25: eclipse-patch-out-fileupload-dep.patch + +# See https://bugs.eclipse.org/bugs/show_bug.cgi?id=548211 +Patch26: eclipse-ebz548211.patch +Patch27: eclipse-ebz548211-2.patch + +# See https://bugs.eclipse.org/bugs/show_bug.cgi?id=542708 +Patch28: eclipse-ebz542708.patch + +# Fix regression in ant support +Patch29: fix-ant-execution.patch + +# Use ASM 6 instead of 7 +Patch30: eclipse-mockito.patch + +ExclusiveArch: x86_64 + +BuildRequires: maven-local +BuildRequires: tycho +BuildRequires: tycho-extras +BuildRequires: cbi-plugins +BuildRequires: maven-antrun-plugin +BuildRequires: maven-assembly-plugin +BuildRequires: maven-dependency-plugin +BuildRequires: maven-enforcer-plugin +BuildRequires: maven-install-plugin +BuildRequires: maven-shade-plugin +BuildRequires: xml-maven-plugin +BuildRequires: sonatype-oss-parent +BuildRequires: rsync +BuildRequires: make, gcc +BuildRequires: zip, unzip +BuildRequires: desktop-file-utils +BuildRequires: pkgconfig(glib-2.0) +BuildRequires: pkgconfig(gio-2.0) +BuildRequires: pkgconfig(nspr) +BuildRequires: pkgconfig(glu) +BuildRequires: pkgconfig(gl) +BuildRequires: pkgconfig(cairo) +BuildRequires: pkgconfig(xt) +BuildRequires: pkgconfig(xtst) +BuildRequires: pkgconfig(libsecret-1) +BuildRequires: pkgconfig(gtk+-2.0) +BuildRequires: pkgconfig(gtk+-3.0) +BuildRequires: pkgconfig(webkit2gtk-4.0) +BuildRequires: icu4j >= 1:64.2 +BuildRequires: ant >= 1.10.5 +BuildRequires: ant-antlr ant-apache-bcel ant-apache-log4j ant-apache-oro ant-apache-regexp ant-apache-resolver ant-commons-logging ant-apache-bsf +BuildRequires: ant-commons-net ant-javamail ant-jdepend ant-junit ant-swing ant-jsch ant-testutil ant-apache-xalan2 ant-jmf ant-xz +BuildRequires: jsch >= 0:0.1.46-2 +BuildRequires: apache-commons-el >= 1.0-22 +BuildRequires: apache-commons-logging +BuildRequires: apache-commons-codec +BuildRequires: apache-commons-jxpath +BuildRequires: osgi(org.apache.felix.gogo.shell) >= 1.1.0 +BuildRequires: osgi(org.apache.felix.gogo.command) >= 1.0.2 +BuildRequires: osgi(org.apache.felix.gogo.runtime) >= 1.1.0 +BuildRequires: osgi(org.apache.felix.scr) >= 2.1.16 +BuildRequires: osgi(org.eclipse.jetty.util) >= %{_jetty_version} +BuildRequires: osgi(org.eclipse.jetty.server) >= %{_jetty_version} +BuildRequires: osgi(org.eclipse.jetty.http) >= %{_jetty_version} +BuildRequires: osgi(org.eclipse.jetty.continuation) >= %{_jetty_version} +BuildRequires: osgi(org.eclipse.jetty.io) >= %{_jetty_version} +BuildRequires: osgi(org.eclipse.jetty.security) >= %{_jetty_version} +BuildRequires: osgi(org.eclipse.jetty.servlet) >= %{_jetty_version} +BuildRequires: lucene-core >= %{_lucene_version} +BuildRequires: lucene-analysis >= %{_lucene_version} +BuildRequires: lucene-queryparser >= %{_lucene_version} +BuildRequires: lucene-analyzers-smartcn >= %{_lucene_version} +BuildRequires: junit >= 4.12 +BuildRequires: junit5 >= 5.4.0 +BuildRequires: apiguardian +BuildRequires: hamcrest +BuildRequires: sat4j +BuildRequires: objectweb-asm >= 6.1.1 +BuildRequires: sac +BuildRequires: batik-css >= %{_batik_version} +BuildRequires: batik-util >= %{_batik_version} +BuildRequires: google-gson +BuildRequires: xmlgraphics-commons >= 2.3 +BuildRequires: xml-commons-apis +BuildRequires: atinject +BuildRequires: eclipse-ecf-core >= 3.14.5 +BuildRequires: eclipse-emf-core >= 1:2.18.0 +BuildRequires: eclipse-license2 +BuildRequires: glassfish-annotation-api +BuildRequires: glassfish-el-api >= 3.0.1 +BuildRequires: glassfish-el >= 3.0.1 +BuildRequires: glassfish-jsp-api >= 2.2.1-4 +BuildRequires: glassfish-jsp >= 2.2.5 +BuildRequires: glassfish-servlet-api >= 3.1.0 +BuildRequires: httpcomponents-core +BuildRequires: httpcomponents-client +BuildRequires: jsoup +BuildRequires: xz-java +BuildRequires: osgi(osgi.annotation) +# Build deps that are excluded when bootstrapping +%if %{without bootstrap} +# For building docs and apitooling +BuildRequires: eclipse-pde +%if %{with contrib_tools} +# For contributor tools and tests +BuildRequires: eclipse-egit +BuildRequires: eclipse-emf-runtime +BuildRequires: mockito >= 2.23.9 +%endif +%endif + +%description +The Eclipse platform is designed for building integrated development +environments (IDEs), server-side applications, desktop applications, and +everything in between. + +%package swt +Summary: SWT Library for GTK+ +Requires: java-headless >= 1:1.8.0 +Requires: javapackages-tools +Requires: gtk3 +Requires: webkitgtk4 + +%description swt +SWT Library for GTK+. + +%package equinox-osgi +Summary: Eclipse OSGi - Equinox +Requires: java-headless >= 1:1.8.0 +Requires: javapackages-tools +Provides: osgi(system.bundle) = %{epoch}:%{version} + +%description equinox-osgi +Eclipse OSGi - Equinox + +%package platform +Summary: Eclipse platform common files +Recommends: eclipse-abrt +Recommends: eclipse-usage + +Requires: ant >= 1.10.5 +Requires: ant-antlr ant-apache-bcel ant-apache-log4j ant-apache-oro ant-apache-regexp ant-apache-resolver ant-commons-logging ant-apache-bsf +Requires: ant-commons-net ant-javamail ant-jdepend ant-junit ant-swing ant-jsch ant-testutil ant-apache-xalan2 ant-jmf ant-xz +Requires: jsch >= 0.1.46-2 +Requires: apache-commons-el >= 1.0-23 +Requires: apache-commons-logging +Requires: apache-commons-codec +Requires: apache-commons-jxpath +Requires: osgi(org.apache.felix.gogo.shell) >= 1.1.0 +Requires: osgi(org.apache.felix.gogo.command) >= 1.0.2 +Requires: osgi(org.apache.felix.gogo.runtime) >= 1.1.0 +Requires: osgi(org.apache.felix.scr) >= 2.1.16 +Requires: osgi(org.eclipse.jetty.util) >= %{_jetty_version} +Requires: osgi(org.eclipse.jetty.server) >= %{_jetty_version} +Requires: osgi(org.eclipse.jetty.http) >= %{_jetty_version} +Requires: osgi(org.eclipse.jetty.continuation) >= %{_jetty_version} +Requires: osgi(org.eclipse.jetty.io) >= %{_jetty_version} +Requires: osgi(org.eclipse.jetty.security) >= %{_jetty_version} +Requires: osgi(org.eclipse.jetty.servlet) >= %{_jetty_version} +Requires: lucene-core >= %{_lucene_version} +Requires: lucene-analysis >= %{_lucene_version} +Requires: lucene-queryparser >= %{_lucene_version} +Requires: lucene-analyzers-smartcn >= %{_lucene_version} +Requires: sat4j +Requires: sac +Requires: batik-css >= %{_batik_version} +Requires: batik-util >= %{_batik_version} +Requires: xmlgraphics-commons >= 2.3 +Requires: xml-commons-apis +Requires: atinject +Requires: eclipse-ecf-core >= 3.14.5 +Requires: eclipse-emf-core >= 1:2.18.0 +Requires: glassfish-annotation-api +Requires: glassfish-el-api >= 3.0.1 +Requires: glassfish-el >= 3.0.1 +Requires: glassfish-jsp-api >= 2.2.1-4 +Requires: glassfish-jsp >= 2.2.5 +Requires: glassfish-servlet-api >= 3.1.0 +Requires: icu4j >= 1:64.2 +Requires: %{name}-swt = %{epoch}:%{version}-%{release} +Requires: %{name}-equinox-osgi = %{epoch}:%{version}-%{release} +Requires: httpcomponents-core +Requires: httpcomponents-client +Requires: osgi(org.tukaani.xz) + +# Provides/obsoletes added in F26 +# This is the best place to add this because adding it to the nls RPMs causes every +# single language pack to be installed, which is not desireable -- it needs to be +# obsoleted by exactly one thing. +Provides: eclipse-nls = %{version}-%{release} +Obsoletes: eclipse-nls < %{version}-%{release} + +%description platform +The Eclipse Platform is the base of all IDE plugins. This does not include the +Java Development Tools or the Plugin Development Environment. + +%package jdt +Summary: Eclipse Java Development Tools +BuildArch: noarch + +Provides: %{name} = %{epoch}:%{version}-%{release} +Requires: %{name}-platform = %{epoch}:%{version}-%{release} +Requires: junit >= 4.12 +Requires: junit5 >= 5.4.0 +Requires: osgi(org.hamcrest.core) + +# Obsoletes added in F30 +Obsoletes: eclipse-recommenders <= 2.5.4-5 + +%description jdt +Eclipse Java Development Tools. This package is required to use Eclipse for +developing software written in the Java programming language. + +%package pde +Summary: Eclipse Plugin Development Environment + +Requires: %{name}-platform = %{epoch}:%{version}-%{release} +Requires: %{name}-jdt = %{epoch}:%{version}-%{release} +Requires: objectweb-asm >= 6.1.1 + +%description pde +Eclipse Plugin Development Environment. This package is required for +developing Eclipse plugins. + +%package p2-discovery +Summary: Eclipse p2 Discovery +BuildArch: noarch + +Requires: %{name}-platform = %{epoch}:%{version}-%{release} + +%description p2-discovery +The p2 Discovery mechanism provides a simplified and branded front-end for the +p2 provisioning platform. Discovery can be used as a tool to display and +install from existing P2 repositories or as a framework to build branded +installer UIs. + +%if %{without bootstrap} && %{with contrib_tools} +%package contributor-tools +Summary: Tools for Eclipse Contributors + +Requires: %{name}-platform = %{epoch}:%{version}-%{release} +Requires: easymock +Requires: hamcrest +Requires: mockito >= 2.23.9 + +%description contributor-tools +This package contains tools specifically for Eclipse contributors. It includes +SWT tools, E4 tools, Rel-Eng tools and Eclipse Test frameworks. + +%package tests +Summary: Eclipse Tests + +Requires: %{name}-contributor-tools = %{epoch}:%{version}-%{release} + +%description tests +Eclipse Tests. +%endif + +%prep +%setup -T -c + +# Extract main source +tar --strip-components=1 -xf %{SOURCE0} + +# Extract linuxtools/eclipse-build sources +tar --strip-components=1 -xf %{SOURCE1} + +# Delete pre-built binary artifacts except some test data that cannot be generated +find . ! -path "*/JCL/*" ! -name "rtstubs*.jar" ! -name "java10api.jar" ! -name "j9stubs.jar" \ + -type f -name *.jar -delete +find . -type f -name *.class -delete +find . -type f -name *.so -delete +find . -type f -name *.dll -delete +find . -type f -name *.jnilib -delete + +# Remove pre-compiled native launchers +rm -rf rt.equinox.binaries/org.eclipse.equinox.executable/{bin,contributed}/ + +%patch0 +%patch1 +%patch2 +%patch3 +%patch4 -p1 +%patch5 +#%patch6 +%patch12 +%patch13 -p1 +%patch14 +%patch15 +%patch16 +%patch17 +%patch18 +%patch19 +%patch20 +%if ! %{use_wayland} +# Enable wayland by default on F27+ +%patch21 +%endif +%patch22 +%patch23 -p1 +%patch24 +%patch25 +%patch26 -p1 +%patch27 -p1 +%patch28 -p1 +%patch29 -p1 +%patch30 -p1 + +# Optional (unused) multipart support (see patch 25) +rm rt.equinox.bundles/bundles/org.eclipse.equinox.http.servlet/src/org/eclipse/equinox/http/servlet/internal/multipart/MultipartSupport{Impl,FactoryImpl,Part}.java + +# Remove python-based test +rm eclipse.platform.swt/tests/org.eclipse.swt.tests.gtk/ManualTests/org/eclipse/swt/tests/gtk/accessibility/Bug543949_ComponentExtentsTest.py + +# Remove jgit deps because building from source tarball, not a git repo +%pom_remove_dep :tycho-buildtimestamp-jgit eclipse-platform-parent +%pom_remove_dep :tycho-sourceref-jgit eclipse-platform-parent +%pom_xpath_remove 'pom:configuration/pom:timestampProvider' eclipse-platform-parent +%pom_xpath_remove 'pom:configuration/pom:sourceReferences' eclipse-platform-parent + +# Resolving the target platform requires too many changes, so don't use it +%pom_xpath_remove "pom:configuration/pom:target" eclipse-platform-parent + +# Disable as many products as possible to make the build faster, we care only for the IDE +%pom_disable_module platform.sdk eclipse.platform.releng.tychoeclipsebuilder +%pom_disable_module rcp eclipse.platform.releng.tychoeclipsebuilder +%pom_disable_module rcp.sdk eclipse.platform.releng.tychoeclipsebuilder +%pom_disable_module rcp.config eclipse.platform.releng.tychoeclipsebuilder +%pom_disable_module sdk eclipse.platform.releng.tychoeclipsebuilder +%pom_disable_module equinox-sdk eclipse.platform.releng.tychoeclipsebuilder +%pom_disable_module equinox.starterkit.product eclipse.platform.releng.tychoeclipsebuilder +%pom_disable_module eclipse.platform.repository eclipse.platform.releng.tychoeclipsebuilder + +# Disable bundles that we don't ship as part of the remaining products +%pom_disable_module bundles/org.eclipse.equinox.cm.test rt.equinox.bundles +%pom_disable_module features/org.eclipse.equinox.sdk rt.equinox.bundles +%pom_disable_module bundles/org.eclipse.equinox.console.jaas.fragment rt.equinox.bundles +%pom_disable_module bundles/org.eclipse.equinox.console.ssh rt.equinox.bundles +%pom_disable_module bundles/org.eclipse.equinox.console.ssh.tests rt.equinox.bundles +%pom_disable_module bundles/org.eclipse.equinox.console.tests rt.equinox.bundles +%pom_disable_module bundles/org.eclipse.equinox.ip rt.equinox.bundles +%pom_disable_module bundles/org.eclipse.equinox.transforms.xslt rt.equinox.bundles +%pom_disable_module bundles/org.eclipse.equinox.transforms.hook rt.equinox.bundles +%pom_disable_module bundles/org.eclipse.equinox.weaving.caching.j9 rt.equinox.bundles +%pom_disable_module bundles/org.eclipse.equinox.weaving.caching rt.equinox.bundles +%pom_disable_module bundles/org.eclipse.equinox.weaving.hook rt.equinox.bundles +%pom_disable_module features/org.eclipse.equinox.compendium.sdk rt.equinox.bundles +%pom_disable_module features/org.eclipse.equinox.core.sdk rt.equinox.bundles +%pom_disable_module features/org.eclipse.equinox.p2.sdk rt.equinox.p2 +%pom_disable_module features/org.eclipse.equinox.server.p2 rt.equinox.bundles +%pom_disable_module features/org.eclipse.equinox.serverside.sdk rt.equinox.bundles +%pom_disable_module bundles/org.eclipse.equinox.p2.tests.reconciler.product rt.equinox.p2 +%pom_disable_module bundles/org.eclipse.equinox.p2.artifact.optimizers rt.equinox.p2 +%pom_disable_module bundles/org.eclipse.equinox.p2.tests.optimizers rt.equinox.p2 +%pom_disable_module bundles/org.eclipse.equinox.p2.artifact.processors rt.equinox.p2 + +# Don't need annotations for obsolete JDKs +%pom_disable_module org.eclipse.jdt.annotation_v1 eclipse.jdt.core +%pom_xpath_remove "plugin[@version='1.1.400.qualifier']" eclipse.jdt/org.eclipse.jdt-feature/feature.xml +sed -i -e '/org\.eclipse\.jdt\.annotation;bundle-version="\[1\.1\.0,2\.0\.0)"/d' \ + eclipse.jdt.core/org.eclipse.jdt.core.tests.{model,builder,compiler}/META-INF/MANIFEST.MF \ + eclipse.jdt.core/org.eclipse.jdt.apt.pluggable.tests/META-INF/MANIFEST.MF \ + eclipse.jdt.ui/org.eclipse.jdt.ui.tests/META-INF/MANIFEST.MF +sed -i -e 's/javax.annotation/javax.annotation-api/' eclipse-platform-parent/pom.xml \ + eclipse.jdt.core/org.eclipse.jdt.core.tests.compiler/META-INF/MANIFEST.MF + +# Disable examples +%pom_disable_module examples rt.equinox.p2 +%pom_disable_module examples eclipse.platform.ui +%pom_disable_module org.eclipse.debug.examples.core eclipse.platform.debug +%pom_disable_module org.eclipse.debug.examples.memory eclipse.platform.debug +%pom_disable_module org.eclipse.debug.examples.mixedmode eclipse.platform.debug +%pom_disable_module org.eclipse.debug.examples.ui eclipse.platform.debug +%pom_disable_module bundles/org.eclipse.sdk.examples eclipse.platform.releng +%pom_disable_module features/org.eclipse.sdk.examples-feature eclipse.platform.releng +%pom_disable_module examples/org.eclipse.swt.examples.ole.win32 eclipse.platform.swt +%pom_disable_module examples/org.eclipse.compare.examples eclipse.platform.team +%pom_disable_module examples/org.eclipse.compare.examples.xml eclipse.platform.team +%pom_disable_module examples/org.eclipse.team.examples.filesystem eclipse.platform.team +%pom_disable_module org.eclipse.ui.genericeditor.examples eclipse.platform.text +%pom_disable_module org.eclipse.ui.intro.quicklinks.examples eclipse.platform.ua +%pom_disable_module org.eclipse.ui.intro.solstice.examples eclipse.platform.ua +# Except for this one example, which is used by tests +%pom_xpath_inject "pom:modules" "examples/org.eclipse.jface.examples.databinding" eclipse.platform.ui + +# Disable servletbridge stuff +%pom_disable_module bundles/org.eclipse.equinox.http.servletbridge rt.equinox.bundles +%pom_disable_module bundles/org.eclipse.equinox.servletbridge rt.equinox.bundles +%pom_disable_module bundles/org.eclipse.equinox.servletbridge.template rt.equinox.bundles + +# Missing dep on reddeer +%pom_disable_module ui/org.eclipse.pde.ui.tests.smartimport eclipse.pde.ui + +# Don't need enforcer on RPM builds +%pom_remove_plugin :maven-enforcer-plugin eclipse-platform-parent + +# This part generates secondary fragments using primary fragments +rm -rf eclipse.platform.swt.binaries/bundles/org.eclipse.swt.gtk.linux.{aarch64,s390x} +rm -rf rt.equinox.framework/bundles/org.eclipse.equinox.launcher.gtk.linux.{aarch64,s390x} +for dir in rt.equinox.binaries rt.equinox.framework/bundles eclipse.platform.swt.binaries/bundles ; do + utils/ensure_arch.sh "$dir" x86_64 aarch64 s390x +done + +# Remove platform-specific stuff that we don't care about to reduce build time +# (i.e., all bundles that are not applicable to the current build platform -- +# this reduces the build time on arm by around 20 minutes per architecture that +# we are not currently building) +TYCHO_ENV="linuxgtk%{eclipse_arch}" +%pom_xpath_set "pom:configuration/pom:environments" "$TYCHO_ENV" eclipse-platform-parent +%pom_xpath_set "pom:configuration/pom:environments" "$TYCHO_ENV" eclipse.platform.releng.tychoeclipsebuilder/eclipse-junit-tests +%pom_xpath_set "pom:configuration/pom:environments" "$TYCHO_ENV" eclipse.platform.ui/bundles/org.eclipse.e4.ui.swt.gtk +for b in `ls eclipse.platform.swt.binaries/bundles | grep -P -e 'org.eclipse.swt\.(?!gtk\.linux.%{eclipse_arch}$)'` ; do + module=$(grep ">bundles/$b<" eclipse.platform.swt.binaries/pom.xml || :) + if [ -n "$module" ] ; then + %pom_disable_module bundles/$b eclipse.platform.swt.binaries + %pom_xpath_inject "pom:excludes" "" eclipse.platform.ui/features/org.eclipse.e4.rcp + fi +done +for b in `ls rt.equinox.framework/bundles | grep -P -e 'org.eclipse.equinox.launcher\.(?!gtk\.linux.%{eclipse_arch}$)'` ; do + module=$(grep ">bundles/$b<" rt.equinox.framework/pom.xml || :) + if [ -n "$module" ] ; then + %pom_disable_module bundles/$b rt.equinox.framework + %pom_xpath_remove -f "plugin[@id='$b']" rt.equinox.framework/features/org.eclipse.equinox.executable.feature/feature.xml + fi +done +for b in `(cd rt.equinox.bundles/bundles && ls -d *{macosx,win32,linux}*) | grep -P -e 'org.eclipse.equinox.security\.(?!linux\.%{eclipse_arch}$)'` ; do + module=$(grep ">bundles/$b<" rt.equinox.bundles/pom.xml || :) + if [ -n "$module" ] ; then + %pom_disable_module bundles/$b rt.equinox.bundles + %pom_xpath_remove -f "plugin[@id='$b']" rt.equinox.p2/features/org.eclipse.equinox.p2.core.feature/feature.xml + fi +done +for b in `ls eclipse.platform.team/bundles/org.eclipse.core.net/fragments/ | grep -P -e 'org.eclipse.core.net\.(?!linux.%{eclipse_arch}$)'` ; do + %pom_disable_module bundles/org.eclipse.core.net/fragments/$b eclipse.platform.team +done +for b in `ls eclipse.platform.resources/bundles/ | grep -P -e 'org.eclipse.core.filesystem\.(?!linux\.%{eclipse_arch}$)'` ; do + module=$(grep ">bundles/$b<" eclipse.platform.resources/pom.xml || :) + if [ -n "$module" ] ; then + %pom_disable_module bundles/$b eclipse.platform.resources + %pom_xpath_remove -f "plugin[@id='$b']" eclipse.platform.resources/tests/org.eclipse.core.tests.filesystem.feature/feature.xml + fi +done +%pom_disable_module org.eclipse.jdt.launching.macosx eclipse.jdt.debug +%pom_disable_module org.eclipse.jdt.launching.ui.macosx eclipse.jdt.debug +%pom_disable_module bundles/org.eclipse.compare.win32 eclipse.platform.team +%pom_disable_module org.eclipse.e4.ui.workbench.renderers.swt.cocoa eclipse.platform.ui/bundles +%pom_disable_module org.eclipse.ui.cocoa eclipse.platform.ui/bundles +%pom_disable_module org.eclipse.ui.win32 eclipse.platform.ui/bundles +%pom_disable_module bundles/org.eclipse.core.resources.win32.x86_64 eclipse.platform.resources +for f in eclipse.jdt/org.eclipse.jdt-feature/feature.xml \ + eclipse.platform.ui/features/org.eclipse.e4.rcp/feature.xml \ + eclipse.platform.releng/features/org.eclipse.rcp/feature.xml \ + eclipse.platform.releng/features/org.eclipse.platform-feature/feature.xml ; do + %pom_xpath_remove -f "plugin[@os='macosx']" $f + %pom_xpath_remove -f "plugin[@os='win32']" $f + %pom_xpath_remove -f "plugin[@ws='win32']" $f + for arch in x86_64 aarch64 ppc64le s390x ; do + if [ "$arch" != "%{eclipse_arch}" ] ; then + %pom_xpath_remove -f "plugin[@arch='$arch']" $f + fi + done +done + +# We don't need SWT fragments since we only care for current arch +%pom_disable_module tests/org.eclipse.swt.tests.fragments.feature eclipse.platform.swt +%pom_xpath_remove "pom:dependency-resolution" eclipse.platform.swt/tests/org.eclipse.swt.tests{,.gtk} + +%if %{with bootstrap} || %{without contrib_tools} +# Disable contributor tools that have external dependencies during bootstrap +%pom_disable_module eclipse.platform.ui.tools +%pom_disable_module features/org.eclipse.swt.tools.feature eclipse.platform.swt +%pom_disable_module bundles/org.eclipse.swt.tools.base eclipse.platform.swt +%pom_disable_module bundles/org.eclipse.swt.tools.spies eclipse.platform.swt +%pom_disable_module bundles/org.eclipse.swt.tools eclipse.platform.swt +%pom_disable_module features/org.eclipse.releng.tools eclipse.platform.releng +%pom_disable_module bundles/org.eclipse.releng.tools eclipse.platform.releng +# Disable tests for bootstrapping +%pom_disable_module features/org.eclipse.test-feature eclipse.platform.releng +%pom_disable_module bundles/org.eclipse.test eclipse.platform.releng +%pom_disable_module bundles/org.eclipse.test.performance eclipse.platform.releng +%pom_disable_module bundles/org.eclipse.test.performance.win32 eclipse.platform.releng +%pom_disable_module bundles/org.eclipse.ant.optional.junit eclipse.platform.releng +for pom in eclipse.jdt.core{,.binaries} eclipse.jdt.debug eclipse.jdt.ui eclipse.pde.build eclipse.pde.ui \ + eclipse.platform eclipse.platform.debug eclipse.platform.releng eclipse.platform.resources eclipse.platform.runtime \ + eclipse.platform.swt eclipse.platform.team eclipse.platform.text eclipse.platform.ui eclipse.platform.ua \ + rt.equinox.bundles rt.equinox.framework rt.equinox.p2 ; do + sed -i -e '/.*tests.*<\/module>/d' $pom/pom.xml +done +%pom_disable_module bundles/org.eclipse.equinox.frameworkadmin.test rt.equinox.p2 +%pom_disable_module eclipse-junit-tests eclipse.platform.releng.tychoeclipsebuilder +%pom_disable_module examples/org.eclipse.jface.examples.databinding eclipse.platform.ui +%endif + +# Include some extra features with the product that some other projects may need at +# build time as part of their target platform definitions +sed -i -e '//a' \ + eclipse.platform.releng.tychoeclipsebuilder/platform/platform.product + +# Ensure batch compiler gets installed correctly +sed -i -e '/org.eclipse.ui.themes/i' \ + eclipse.platform.releng/features/org.eclipse.platform-feature/feature.xml +sed -i -e '/<\/excludes>/i' \ + eclipse.platform.releng/features/org.eclipse.platform-feature/pom.xml + +# Prevent dep cycle +%pom_xpath_remove "plugin[@id='org.eclipse.core.tests.harness']" eclipse.platform.releng/features/org.eclipse.test-feature/feature.xml + +# Include maven descriptors to allow our test execution setup to work +%pom_xpath_set "pom:plugin[pom:artifactId = 'tycho-packaging-plugin']/pom:configuration/pom:archive/pom:addMavenDescriptor" "true" eclipse-platform-parent + +# Don't set perms on files for platforms that aren't linux +for f in rt.equinox.framework/features/org.eclipse.equinox.executable.feature/build.properties; do + grep '^root\.linux\.gtk\.%{eclipse_arch}[.=]' $f > tmp + sed -i -e '/^root\./d' $f && cat tmp >> $f +done + +# Hack - this can go away once upstream grows arm and aarch64 support +mkdir -p rt.equinox.binaries/org.eclipse.equinox.executable/bin/gtk/linux/%{eclipse_arch} + +# Ensure that bundles with native artifacts are dir-shaped, so no *.so is extracted into user.home +for f in eclipse.platform.swt.binaries/bundles/org.eclipse.swt.gtk.linux.*/META-INF/MANIFEST.MF \ + eclipse.platform.resources/bundles/org.eclipse.core.filesystem.linux.*/META-INF/MANIFEST.MF \ + eclipse.platform.team/bundles/org.eclipse.core.net.linux.*/META-INF/MANIFEST.MF ; do + echo -e "Eclipse-BundleShape: dir\n\n" >> $f; +done + +# Add dep on Java API stubs when compiling with JDT +%pom_xpath_inject "pom:pluginManagement/pom:plugins/pom:plugin[pom:artifactId='tycho-compiler-plugin']/pom:dependencies" \ + "org.eclipsejava10api10" eclipse-platform-parent + +# Build fake ant bundle that contains symlinks to system jars +dependencies/fake_ant_dependency.sh + +# Allow usage of javax.servlet.jsp 2.3. +sed -i '/javax\.servlet\.jsp/ s/2\.3/2\.4/' rt.equinox.bundles/bundles/org.eclipse.equinox.jsp.jasper/META-INF/MANIFEST.MF + +# Use javax.servlet-api (Glassfish) instead of javax.servlet (Tomcat) +find -name feature.xml | xargs sed -i -e 's|"javax.servlet"|"javax.servlet-api"|' +sed -i -e "2iRequire-Bundle: javax.servlet-api" rt.equinox.bundles/bundles/org.eclipse.equinox.http.{jetty,servlet}/META-INF/MANIFEST.MF + +# Fix constraint on gogo runtime +sed -i -e '/org.apache.felix.service.command/s/;status=provisional//' rt.equinox.bundles/bundles/org.eclipse.equinox.console{,.ssh}/META-INF/MANIFEST.MF + +# Pre-compiling JSPs does not currently work +%pom_remove_plugin org.eclipse.jetty:jetty-jspc-maven-plugin eclipse.platform.ua/org.eclipse.help.webapp + +# Use system osgi.annotation lib +ln -s $(build-classpath osgi-annotation) rt.equinox.framework/bundles/org.eclipse.osgi/osgi/ +ln -s $(build-classpath osgi-annotation) rt.equinox.framework/bundles/org.eclipse.osgi.services/lib/ +ln -s $(build-classpath osgi-annotation) rt.equinox.framework/bundles/org.eclipse.osgi.util/lib/ +ln -s $(build-classpath osgi-annotation) rt.equinox.bundles/bundles/org.eclipse.equinox.http.servlet/osgi/ +ln -s $(build-classpath osgi-annotation) rt.equinox.bundles/bundles/org.eclipse.equinox.coordinator/lib/ +ln -s $(build-classpath osgi-annotation) rt.equinox.bundles/bundles/org.eclipse.equinox.log.stream/osgi/ + +# The order of these mvn_package calls is important +%mvn_package "::pom::" __noinstall +%mvn_package ":*tests*" tests +%mvn_package ":org.eclipse.equinox.frameworkadmin.test" tests +%mvn_package ":org.eclipse.jface.examples.databinding" tests +%mvn_package ":org.eclipse.pde.tools.versioning" tests +%mvn_package "org.eclipse.test:org.eclipse.test" contributor-tools +%mvn_package "::jar:sources{,-feature}:" sdk +%mvn_package ":org.eclipse.jdt.doc.isv" sdk +%mvn_package ":org.eclipse.platform.doc.isv" sdk +%mvn_package ":org.eclipse.equinox.executable" sdk +%mvn_package "org.eclipse.jdt{,.feature}:" jdt +%mvn_package ":org.eclipse.ant.{launching,ui}" jdt +%mvn_package ":org.eclipse.equinox.p2.discovery.{feature,compatibility}" p2-discovery +%mvn_package ":org.eclipse.equinox.p2{,.ui}.discovery" p2-discovery +%mvn_package ":org.eclipse.e4{,.core}.tools*" contributor-tools +%mvn_package ":org.eclipse.releng.tools" contributor-tools +%mvn_package ":org.eclipse.swt.tools*" contributor-tools +%mvn_package "org.eclipse.test{,.feature}:" contributor-tools +%mvn_package ":org.eclipse.ant.optional.junit" contributor-tools +%mvn_package "org.eclipse.cvs{,.feature}:" cvs +%mvn_package "org.eclipse.team:org.eclipse.team.cvs*" cvs +%mvn_package "org.eclipse.pde{,.ui,.feature}:" pde +%mvn_package "org.eclipse.ui:org.eclipse.ui.trace" pde +%mvn_package "org.eclipse.sdk{,.feature}:" sdk +%mvn_package ":" __noinstall + +%build +# Compiler/linker flags for native parts +export CFLAGS="%{optflags}" +export LDFLAGS="%{__global_ldflags}" +export M_CFLAGS="$CFLAGS" +export M_ARCH="$LDFLAGS" + +#This is the lowest value where the build succeeds. 512m is not enough. +export MAVEN_OPTS="-Xmx1024m -XX:CompileCommand=exclude,org/eclipse/tycho/core/osgitools/EquinoxResolver,newState ${MAVEN_OPTS}" +export JAVA_HOME=%{_jvmdir}/java + +# Pre-build agent jar needed for AdvancedSourceLookupSupport +sed -i -e '/createSourcesJar/d' eclipse.jdt.debug/org.eclipse.jdt.launching.javaagent/pom.xml +(cd eclipse.jdt.debug/org.eclipse.jdt.launching.javaagent && xmvn -e -o -B clean verify) +mv eclipse.jdt.debug/org.eclipse.jdt.launching.javaagent/target/javaagent-shaded.jar \ + eclipse.jdt.debug/org.eclipse.jdt.launching/lib + +# Qualifier generated from last modification time of source tarball +QUALIFIER=$(date -u -d"$(stat --format=%y %{SOURCE0})" +v%Y%m%d-%H%M) +%mvn_build -j -f -- -e -DforceContextQualifier=$QUALIFIER \ +%if %{with bootstrap} + -P !api-generation,!build-docs \ +%endif + -Declipse.javadoc=/usr/bin/javadoc -Dnative=gtk.linux.%{eclipse_arch} \ + -Dtycho.local.keepTarget \ + -Dfedora.p2.repos=$(pwd)/.m2/p2/repo-sdk/plugins -DbuildType=X + +# Location that the product is materialised +product="eclipse.platform.releng.tychoeclipsebuilder/platform/target/products/org.eclipse.platform.ide/linux/gtk/%{eclipse_arch}" + +# Re-symlink ant bundle to use system jars +dependencies/fake_ant_dependency.sh $product/eclipse/plugins/org.apache.ant_* + +# Symlink necessary plugins that are provided by other packages +dependencies/replace_platform_plugins_with_symlinks.sh $product/eclipse %{_javadir} %{_jnidir} + +pushd $product/eclipse + +#clean up +rm -rf configuration/org.eclipse.core.runtime +rm -rf configuration/org.eclipse.equinox.app +rm -rf configuration/org.eclipse.update +rm -rf configuration/org.eclipse.osgi +rm -rf p2/org.eclipse.equinox.p2.core/cache/* +# no icon needed +rm -f icon.xpm + +# EMF and ECF are packaged separately +rm -rf features/org.eclipse.emf.* plugins/org.eclipse.emf.* \ + features/org.eclipse.ecf.* plugins/org.eclipse.ecf.* plugins/org.eclipse.ecf_* + +#delete all local repositories. We want to have only "original" by default. +pushd p2/org.eclipse.equinox.p2.engine/.settings + sed -i "/repositories\/file/d" *.prefs ../profileRegistry/SDKProfile.profile/.data/.settings/*.prefs + sed -i "/repositories\/memory/d" *.prefs ../profileRegistry/SDKProfile.profile/.data/.settings/*.prefs +popd + +# ini file adjustements +sed -i "s|-Xms40m|-Xms512m|g" eclipse.ini +sed -i "s|-Xmx512m|-Xmx1024m|g" eclipse.ini +sed -i '1i-protect\nroot' eclipse.ini + +# Temporary fix until https://bugs.eclipse.org/294877 is resolved +cat >> eclipse.ini < +-XX:CompileCommand=exclude,org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPTemplates,instantiateTemplate +-XX:CompileCommand=exclude,org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage,addBinding +-XX:CompileCommand=exclude,org/python/pydev/editor/codecompletion/revisited/PythonPathHelper,isValidSourceFile +-XX:CompileCommand=exclude,org/eclipse/tycho/core/osgitools/EquinoxResolver,newState +-Dorg.eclipse.equinox.p2.reconciler.dropins.directory=%{_datadir}/eclipse/dropins +-Dp2.fragments=%{_eclipsedir}/droplets,%{_datadir}/eclipse/droplets +-Declipse.p2.skipMovedInstallDetection=true +-Dosgi.resolver.usesMode=ignore +EOF + +popd #eclipse + +%install +%mvn_install + +# Some directories we need +install -d -m 755 $RPM_BUILD_ROOT%{_sysconfdir} +install -d -m 755 $RPM_BUILD_ROOT%{_jnidir} +install -d -m 755 $RPM_BUILD_ROOT%{_javadir}/eclipse +install -d -m 755 $RPM_BUILD_ROOT%{_mavenpomdir} +install -d -m 755 $RPM_BUILD_ROOT%{_bindir} + +# Install icons +install -D eclipse.platform/platform/org.eclipse.platform/eclipse32.png \ + $RPM_BUILD_ROOT/usr/share/icons/hicolor/32x32/apps/%{name}.png +install -D eclipse.platform/platform/org.eclipse.platform/eclipse48.png \ + $RPM_BUILD_ROOT/usr/share/icons/hicolor/48x48/apps/%{name}.png +install -D eclipse.platform/platform/org.eclipse.platform/eclipse256.png \ + $RPM_BUILD_ROOT/usr/share/icons/hicolor/256x256/apps/%{name}.png +install -d $RPM_BUILD_ROOT/usr/share/pixmaps +ln -s /usr/share/icons/hicolor/256x256/apps/%{name}.png \ + $RPM_BUILD_ROOT/usr/share/pixmaps/%{name}.png + +# Install desktop file +sed -i -e 's/Exec=eclipse/Exec=%{app_exec}/g' desktopintegration/eclipse.desktop +sed -i -e 's/Name=Eclipse/Name=%{app_name}/g' desktopintegration/eclipse.desktop +sed -i -e 's/Icon=eclipse/Icon=%{name}/g' desktopintegration/eclipse.desktop +install -m644 -D desktopintegration/eclipse.desktop $RPM_BUILD_ROOT/usr/share/applications/%{name}.desktop +desktop-file-validate $RPM_BUILD_ROOT/usr/share/applications/%{name}.desktop + +# Install appstream appdata +install -m644 -D desktopintegration/eclipse.appdata.xml $RPM_BUILD_ROOT%{_datadir}/appdata/eclipse.appdata.xml +install -m644 -D desktopintegration/eclipse-jdt.metainfo.xml $RPM_BUILD_ROOT%{_datadir}/appdata/eclipse-jdt.metainfo.xml +install -m644 -D desktopintegration/eclipse-pde.metainfo.xml $RPM_BUILD_ROOT%{_datadir}/appdata/eclipse-pde.metainfo.xml + +LOCAL_PWD=`pwd` +#change the installation p2 files +pushd eclipse.platform.releng.tychoeclipsebuilder/platform/target/products/org.eclipse.platform.ide/linux/gtk/%{eclipse_arch}/eclipse/p2/org.eclipse.equinox.p2.engine/profileRegistry/SDKProfile.profile/ +for i in `ls | grep "profile.gz"` ; do \ + echo $i ; \ + gunzip $i ; \ + sed -i -e "s@${LOCAL_PWD}/eclipse.platform.releng.tychoeclipsebuilder/platform/target/products/org.eclipse.platform.ide/linux/gtk/%{eclipse_arch}/eclipse@%{_eclipsedir}@g" *.profile ; \ + gzip *.profile ; \ + done +popd + +#installation itself - copy it into right location +rsync -vrpl eclipse.platform.releng.tychoeclipsebuilder/platform/target/products/org.eclipse.platform.ide/linux/gtk/%{eclipse_arch}/eclipse \ + %{buildroot}%{_prefix}/lib + +# Symlink eclipse binary +pushd %{buildroot}%{_bindir} + ln -s %{_eclipsedir}/eclipse +popd + +# Symlink eclipse ini +pushd %{buildroot}/%{_sysconfdir}/ + ln -s %{_eclipsedir}/eclipse.ini +popd + +# List jars to be symlinked into javadir +pushd %{buildroot}%{_eclipsedir}/plugins +EQUINOX_JARS=$(ls . | grep -P '^org.eclipse.equinox(?!.*\.ui[\._])' | sed -e 's|^org\.eclipse\.\(.*\)_.*|\1|') +OSGI_JARS=$(ls . | grep '^org.eclipse.osgi' | sed -e 's|^org\.eclipse\.\(.*\)_.*|\1|') +popd + +# Symlink jars into javadir +location=%{_eclipsedir}/plugins +while [ "$location" != "/" ] ; do + location=$(dirname $location) + updir="$updir../" +done +pushd %{buildroot}%{_javadir}/eclipse +for J in $EQUINOX_JARS core.contenttype core.jobs core.net core.runtime ; do + DIR=$updir%{_eclipsedir}/plugins + if [ "$J" != "equinox.http.servlet" ] ; then + [ -e "`ls $DIR/org.eclipse.${J}_*.jar`" ] && ln -s $DIR/org.eclipse.${J}_*.jar ${J}.jar + fi +done +popd + +# Generate addition Maven metadata +rm -rf .xmvn/ .xmvn-reactor +%mvn_package "org.eclipse.osgi:" equinox-osgi +%mvn_package "org.eclipse.swt:" swt + +# Install Maven metadata for OSGi jars +for J in $OSGI_JARS ; do + JAR=%{buildroot}%{_eclipsedir}/plugins/org.eclipse.${J}_*.jar + VER=$(echo $JAR | sed -e "s/.*${J}_\(.*\)\.jar/\1/") + %mvn_artifact "org.eclipse.osgi:$J:jar:$VER" $JAR + %mvn_alias "org.eclipse.osgi:$J" "org.eclipse.osgi:org.eclipse.$J" "org.eclipse.platform:org.eclipse.$J" +done + +# Install Maven metadata for SWT +JAR=%{buildroot}%{_eclipsedir}/plugins/org.eclipse.swt_*.jar +VER=$(echo $JAR | sed -e "s/.*_\(.*\)\.jar/\1/") +%mvn_artifact "org.eclipse.swt:org.eclipse.swt:jar:$VER" ./eclipse.platform.swt.binaries/bundles/org.eclipse.swt.gtk.linux.%{eclipse_arch}/target/org.eclipse.swt.gtk.linux.%{eclipse_arch}-*-SNAPSHOT.jar +%mvn_alias "org.eclipse.swt:org.eclipse.swt" "org.eclipse.swt:swt" +%mvn_file "org.eclipse.swt:org.eclipse.swt" swt + +%mvn_install + +# Symlink SWT jar +pushd %{buildroot}/%{_eclipsedir}/ + ln -s $(abs2rel %{_jnidir}/swt.jar %{_eclipsedir}) +popd + +%if %{without bootstrap} && %{with contrib_tools} +# Tests framework +unzip eclipse.platform.releng.tychoeclipsebuilder/eclipse-junit-tests/target/eclipse-junit-tests-bundle.zip \ + -d $RPM_BUILD_ROOT/%{_datadir}/ -x eclipse-testing/runtests.bat eclipse-testing/runtestsmac.sh +cp utils/splitter.xsl $RPM_BUILD_ROOT/%{_datadir}/eclipse-testing +rm $RPM_BUILD_ROOT/%{_datadir}/eclipse-testing/eclipse-junit-tests-*.zip + +# These properties are not correct and nested properties won't get resolved +sed -i '/org.eclipse.equinox.p2.reconciler.test/ d' $RPM_BUILD_ROOT/%{_datadir}/eclipse-testing/equinoxp2tests.properties + +# Package testbundle-to-eclipse-test +cp -r testbundle-to-eclipse-test $RPM_BUILD_ROOT/%{_datadir}/eclipse-testing/testbundle +mv $RPM_BUILD_ROOT/%{_datadir}/eclipse-testing/testbundle/eclipse-runTestBundles $RPM_BUILD_ROOT/%{_bindir}/eclipse-runTestBundles +%endif + +#fix so permissions +find $RPM_BUILD_ROOT/%{_eclipsedir} -name *.so -exec chmod a+x {} \; + +# Usage marker +install -d -m 755 %{buildroot}%{_eclipsedir}/.pkgs +echo "%{version}-%{release}" > %{buildroot}%{_eclipsedir}/.pkgs/Distro%{?dist} + +%files swt -f .mfiles-swt +%{_eclipsedir}/plugins/org.eclipse.swt_* +%{_eclipsedir}/plugins/org.eclipse.swt.gtk.linux.* +%{_eclipsedir}/swt.jar +%{_jnidir}/swt.jar + +%files platform +%{_bindir}/eclipse +%{_eclipsedir}/eclipse +%{_eclipsedir}/.eclipseproduct +%{_eclipsedir}/.pkgs +%config %{_eclipsedir}/eclipse.ini +%config %{_sysconfdir}/eclipse.ini +/usr/share/applications/* +/usr/share/pixmaps/* +/usr/share/icons/*/*/apps/* +%{_datadir}/appdata/eclipse.appdata.xml +%dir %{_eclipsedir}/configuration/ +%dir %{_eclipsedir}/configuration/org.eclipse.equinox.simpleconfigurator/ +%{_eclipsedir}/configuration/config.ini +%{_eclipsedir}/configuration/org.eclipse.equinox.simpleconfigurator/bundles.info +%{_eclipsedir}/features/org.eclipse.core.runtime.feature_* +%{_eclipsedir}/features/org.eclipse.e4.rcp_* +%{_eclipsedir}/features/org.eclipse.equinox.core.feature_* +%{_eclipsedir}/features/org.eclipse.equinox.p2.core.feature_* +%{_eclipsedir}/features/org.eclipse.equinox.p2.extras.feature_* +%{_eclipsedir}/features/org.eclipse.equinox.p2.rcp.feature_* +%{_eclipsedir}/features/org.eclipse.equinox.p2.user.ui_* +%{_eclipsedir}/features/org.eclipse.help_* +%{_eclipsedir}/features/org.eclipse.platform_* +%{_eclipsedir}/features/org.eclipse.rcp_* +%{_eclipsedir}/plugins/com.ibm.icu_* +%{_eclipsedir}/plugins/com.jcraft.jsch_* +%{_eclipsedir}/plugins/com.sun.el.javax.el_* +%{_eclipsedir}/plugins/javax.* +%{_eclipsedir}/plugins/org.apache.* +%{_eclipsedir}/plugins/org.eclipse.ant.core_* +%{_eclipsedir}/plugins/org.eclipse.compare_* +%{_eclipsedir}/plugins/org.eclipse.compare.core_* +%{_eclipsedir}/plugins/org.eclipse.core.commands_* +%{_eclipsedir}/plugins/org.eclipse.core.contenttype_* +%{_eclipsedir}/plugins/org.eclipse.core.databinding.beans_* +%{_eclipsedir}/plugins/org.eclipse.core.databinding.observable_* +%{_eclipsedir}/plugins/org.eclipse.core.databinding.property_* +%{_eclipsedir}/plugins/org.eclipse.core.databinding_* +%{_eclipsedir}/plugins/org.eclipse.core.expressions_* +%{_eclipsedir}/plugins/org.eclipse.core.externaltools_* +%{_eclipsedir}/plugins/org.eclipse.core.filebuffers_* +%{_eclipsedir}/plugins/org.eclipse.core.filesystem* +%{_eclipsedir}/plugins/org.eclipse.core.jobs_* +%{_eclipsedir}/plugins/org.eclipse.core.net* +%{_eclipsedir}/plugins/org.eclipse.core.resources_* +%{_eclipsedir}/plugins/org.eclipse.core.runtime_* +%{_eclipsedir}/plugins/org.eclipse.core.variables_* +%{_eclipsedir}/plugins/org.eclipse.debug.core_* +%{_eclipsedir}/plugins/org.eclipse.debug.ui_* +%{_eclipsedir}/plugins/org.eclipse.e4.core.commands_* +%{_eclipsedir}/plugins/org.eclipse.e4.core.contexts_* +%{_eclipsedir}/plugins/org.eclipse.e4.core.di_* +%{_eclipsedir}/plugins/org.eclipse.e4.core.di.annotations_* +%{_eclipsedir}/plugins/org.eclipse.e4.core.di.extensions_* +%{_eclipsedir}/plugins/org.eclipse.e4.core.di.extensions.supplier_* +%{_eclipsedir}/plugins/org.eclipse.e4.core.services_* +%{_eclipsedir}/plugins/org.eclipse.e4.emf.xpath_* +%{_eclipsedir}/plugins/org.eclipse.e4.ui.bindings_* +%{_eclipsedir}/plugins/org.eclipse.e4.ui.css.core_* +%{_eclipsedir}/plugins/org.eclipse.e4.ui.css.swt_* +%{_eclipsedir}/plugins/org.eclipse.e4.ui.css.swt.theme_* +%{_eclipsedir}/plugins/org.eclipse.e4.ui.di_* +%{_eclipsedir}/plugins/org.eclipse.e4.ui.dialogs_* +%{_eclipsedir}/plugins/org.eclipse.e4.ui.model.workbench_* +%{_eclipsedir}/plugins/org.eclipse.e4.ui.services_* +%{_eclipsedir}/plugins/org.eclipse.e4.ui.swt.gtk_* +%{_eclipsedir}/plugins/org.eclipse.e4.ui.widgets_* +%{_eclipsedir}/plugins/org.eclipse.e4.ui.workbench_* +%{_eclipsedir}/plugins/org.eclipse.e4.ui.workbench3_* +%{_eclipsedir}/plugins/org.eclipse.e4.ui.workbench.addons.swt_* +%{_eclipsedir}/plugins/org.eclipse.e4.ui.workbench.renderers.swt_* +%{_eclipsedir}/plugins/org.eclipse.e4.ui.workbench.swt_* +%{_eclipsedir}/plugins/org.eclipse.equinox.app_* +%{_eclipsedir}/plugins/org.eclipse.equinox.bidi_* +%{_eclipsedir}/plugins/org.eclipse.equinox.common_* +%{_eclipsedir}/plugins/org.eclipse.equinox.concurrent_* +%{_eclipsedir}/plugins/org.eclipse.equinox.console_* +%{_eclipsedir}/plugins/org.eclipse.equinox.ds_* +%{_eclipsedir}/plugins/org.eclipse.equinox.event_* +%{_eclipsedir}/plugins/org.eclipse.equinox.frameworkadmin_* +%{_eclipsedir}/plugins/org.eclipse.equinox.frameworkadmin.equinox_* +%{_eclipsedir}/plugins/org.eclipse.equinox.http.jetty_* +%{_eclipsedir}/plugins/org.eclipse.equinox.http.registry_* +%{_eclipsedir}/plugins/org.eclipse.equinox.http.servlet_* +%{_eclipsedir}/plugins/org.eclipse.equinox.jsp.jasper_* +%{_eclipsedir}/plugins/org.eclipse.equinox.jsp.jasper.registry_* +%{_eclipsedir}/plugins/org.eclipse.equinox.launcher_* +%{_eclipsedir}/plugins/org.eclipse.equinox.launcher.gtk.linux.*_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.artifact.repository_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.console_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.core_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.director_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.director.app_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.directorywatcher_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.engine_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.extensionlocation_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.garbagecollector_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.jarprocessor_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.metadata_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.metadata.repository_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.operations_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.publisher_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.publisher.eclipse_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.reconciler.dropins_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.repository_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.repository.tools_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.touchpoint.eclipse_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.touchpoint.natives_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.transport.ecf_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.ui_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.ui.importexport_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.ui.sdk_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.ui.sdk.scheduler_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.updatechecker_* +%{_eclipsedir}/plugins/org.eclipse.equinox.p2.updatesite_* +%{_eclipsedir}/plugins/org.eclipse.equinox.preferences_* +%{_eclipsedir}/plugins/org.eclipse.equinox.registry_* +%{_eclipsedir}/plugins/org.eclipse.equinox.security* +%{_eclipsedir}/plugins/org.eclipse.equinox.simpleconfigurator_* +%{_eclipsedir}/plugins/org.eclipse.equinox.simpleconfigurator.manipulator_* +%{_eclipsedir}/plugins/org.eclipse.equinox.util_* +%{_eclipsedir}/plugins/org.eclipse.help_* +%{_eclipsedir}/plugins/org.eclipse.help.base_* +%{_eclipsedir}/plugins/org.eclipse.help.ui_* +%{_eclipsedir}/plugins/org.eclipse.help.webapp_* +%{_eclipsedir}/plugins/org.eclipse.jdt.core.compiler.batch_* +%{_eclipsedir}/plugins/org.eclipse.jetty.* +%{_eclipsedir}/plugins/org.eclipse.jface_* +%{_eclipsedir}/plugins/org.eclipse.jface.databinding_* +%{_eclipsedir}/plugins/org.eclipse.jface.text_* +%{_eclipsedir}/plugins/org.eclipse.jsch.core_* +%{_eclipsedir}/plugins/org.eclipse.jsch.ui_* +%{_eclipsedir}/plugins/org.eclipse.ltk.core.refactoring_* +%{_eclipsedir}/plugins/org.eclipse.ltk.ui.refactoring_* +%{_eclipsedir}/plugins/org.eclipse.platform_* +%{_eclipsedir}/plugins/org.eclipse.platform.doc.user_* +%{_eclipsedir}/plugins/org.eclipse.rcp_* +%{_eclipsedir}/plugins/org.eclipse.search_* +%{_eclipsedir}/plugins/org.eclipse.team.core_* +%{_eclipsedir}/plugins/org.eclipse.team.genericeditor.diff.extension_* +%{_eclipsedir}/plugins/org.eclipse.team.ui_* +%{_eclipsedir}/plugins/org.eclipse.text_* +%{_eclipsedir}/plugins/org.eclipse.ui_* +%{_eclipsedir}/plugins/org.eclipse.ui.browser_* +%{_eclipsedir}/plugins/org.eclipse.ui.cheatsheets_* +%{_eclipsedir}/plugins/org.eclipse.ui.console_* +%{_eclipsedir}/plugins/org.eclipse.ui.editors_* +%{_eclipsedir}/plugins/org.eclipse.ui.externaltools_* +%{_eclipsedir}/plugins/org.eclipse.ui.forms_* +%{_eclipsedir}/plugins/org.eclipse.ui.genericeditor_* +%{_eclipsedir}/plugins/org.eclipse.ui.ide_* +%{_eclipsedir}/plugins/org.eclipse.ui.ide.application_* +%{_eclipsedir}/plugins/org.eclipse.ui.intro_* +%{_eclipsedir}/plugins/org.eclipse.ui.intro.quicklinks_* +%{_eclipsedir}/plugins/org.eclipse.ui.intro.universal_* +%{_eclipsedir}/plugins/org.eclipse.ui.monitoring_* +%{_eclipsedir}/plugins/org.eclipse.ui.navigator_* +%{_eclipsedir}/plugins/org.eclipse.ui.navigator.resources_* +%{_eclipsedir}/plugins/org.eclipse.ui.net_* +%{_eclipsedir}/plugins/org.eclipse.ui.themes_* +%{_eclipsedir}/plugins/org.eclipse.ui.views_* +%{_eclipsedir}/plugins/org.eclipse.ui.views.log_* +%{_eclipsedir}/plugins/org.eclipse.ui.views.properties.tabbed_* +%{_eclipsedir}/plugins/org.eclipse.ui.workbench_* +%{_eclipsedir}/plugins/org.eclipse.ui.workbench.texteditor_* +%{_eclipsedir}/plugins/org.eclipse.update.configurator_* +%{_eclipsedir}/plugins/org.eclipse.urischeme_* +%{_eclipsedir}/plugins/org.glassfish.web.javax.servlet.jsp_* +%{_eclipsedir}/plugins/org.kxml2_* +%{_eclipsedir}/plugins/org.sat4j.core_* +%{_eclipsedir}/plugins/org.sat4j.pb_* +%{_eclipsedir}/plugins/org.tukaani.xz_* +%{_eclipsedir}/plugins/org.w3c.css.sac_* +%{_eclipsedir}/plugins/org.w3c.dom.svg_* +%{_eclipsedir}/plugins/org.xmlpull_* +%doc %{_eclipsedir}/readme +%{_eclipsedir}/artifacts.xml +%{_eclipsedir}/p2 +%{_javadir}/%{name}/core* +%{_javadir}/%{name}/equinox* + +%files jdt -f .mfiles-jdt +%{_datadir}/appdata/eclipse-jdt.metainfo.xml + +%files pde -f .mfiles-pde -f .mfiles-cvs -f .mfiles-sdk +%{_datadir}/appdata/eclipse-pde.metainfo.xml + +%files p2-discovery -f .mfiles-p2-discovery + +%if %{without bootstrap} && %{with contrib_tools} +%files contributor-tools -f .mfiles-contributor-tools + +%files tests -f .mfiles-tests +%{_bindir}/eclipse-runTestBundles +%{_datadir}/eclipse-testing +%endif + +%files equinox-osgi -f .mfiles-equinox-osgi +%{_eclipsedir}/plugins/org.eclipse.osgi_* +%{_eclipsedir}/plugins/org.eclipse.osgi.compatibility.state_* +%{_eclipsedir}/plugins/org.eclipse.osgi.services_* +%{_eclipsedir}/plugins/org.eclipse.osgi.util_* + +%changelog +* Wed Jul 24 2019 Mat Booth - 1:4.12-6 +- Reenable normal debuginfo generation for the launcher binary on Fedora + +* Thu Jun 27 2019 Mat Booth - 1:4.12-5 +- Fix NoClassDefFoundError regression in ant support + +* Thu Jun 20 2019 Mat Booth - 1:4.12-4 +- Fix deps on batik stack + +* Thu Jun 20 2019 Mat Booth - 1:4.12-3 +- Disable more examples and allow contrib-tools mode to build properly + +* Wed Jun 19 2019 Mat Booth - 1:4.12-2 +- Additional fixes for ebz548211 + +* Mon Jun 17 2019 Mat Booth - 1:4.12-1 +- Update to 2019-06 release + +* Sun Jun 16 2019 Mat Booth - 1:4.11-15 +- Rebuild against new Jetty, ECF and EMF + +* Wed Jun 12 2019 Mat Booth - 1:4.11-14 +- Full rebuild + +* Wed Jun 12 2019 Mat Booth - 1:4.11-13 +- Add patch for lucene 8 and rebootstrap + +* Thu May 30 2019 Mat Booth - 1:4.11-12 +- Avoid requirement on optional test dependency commons-fileupload + +* Fri May 24 2019 Mat Booth - 1:4.11-11 +- Clean up unused maven metadata + +* Fri May 24 2019 Mat Booth - 1:4.11-10 +- Add missing BR on google-gson + +* Thu May 23 2019 Mat Booth - 1:4.11-9 +- Bump deps on batik and xmlgraphics + +* Tue May 07 2019 Mat Booth - 1:4.11-8 +- Re-instate junit5 dep since dependent modules were fixed + +* Wed May 01 2019 Mat Booth - 1:4.11-7 +- Bump requirements on Jetty +- Avoid reliance on Javascript in SWT build + +* Tue Apr 30 2019 Mat Booth - 1:4.11-6 +- Disable hard requirement on ant-junit5 + +* Thu Apr 25 2019 Mat Booth - 1:4.11-5 +- Fix bootstrap mode to use bcond flags +- Bump requirements on Jetty, SCR and ICU4j + +* Wed Apr 10 2019 Mat Booth - 1:4.11-4 +- Obsolete recommenders package, rhbz#1698504 + +* Tue Mar 19 2019 Mat Booth - 1:4.11-3 +- Pre-strip debuginfo from the launcher binary to avoid conflicts with other RCP + applications, which will use identical launcher binaries + +* Thu Mar 14 2019 Mat Booth - 1:4.11-2 +- Full build + +* Mon Mar 11 2019 Mat Booth - 1:4.11-1 +- Update to 2019-03 release +- Drop support for 32-bit architectures + +* Thu Jan 31 2019 Fedora Release Engineering - 1:4.10.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Thu Jan 10 2019 Mat Booth - 1:4.10.0-2 +- No longer recommend Code Recommenders + +* Tue Dec 11 2018 Mat Booth - 1:4.10.0-1 +- Update to 2018-12 release +- Update eclipse-build snapshot + +* Thu Dec 06 2018 Mat Booth - 1:4.10.0-0.3 +- Update to latest I-build +- Build against latest jetty, mockito packages +- Update requirements on EMF and ECF + +* Tue Dec 04 2018 Mat Booth - 1:4.10.0-0.2 +- Allow building on Fedora 29 + +* Thu Nov 29 2018 Mat Booth - 1:4.10.0-0.1 +- Update to latest I-build +- Enable bootstrap mode + +* Fri Sep 28 2018 Jeff Johnston - 1:4.9.0-2 +- Add org.eclipse.equinox.executable for building RCP apps + +* Wed Sep 12 2018 Mat Booth - 1:4.9.0-1 +- Update to final bits for 4.9 +- Fix NPE due to missing agent jar + +* Thu Aug 23 2018 Mat Booth - 1:4.9.0-0.4 +- Update to latest I-build +- Full non-bootstrap build + +* Wed Aug 22 2018 Mat Booth - 1:4.9.0-0.3 +- Fix prefer x11 patch used on RHEL + +* Mon Aug 20 2018 Mat Booth - 1:4.9.0-0.2 +- Fix secondary arch build + +* Sun Aug 19 2018 Mat Booth - 1:4.9.0-0.1 +- Update to latest I-build +- Update license + +* Thu Jul 12 2018 Fedora Release Engineering - 1:4.8.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Mon Jun 25 2018 Mat Booth - 1:4.8.0-3 +- Add patch to use gsettings instead of gconf + +* Wed Jun 13 2018 Mat Booth - 1:4.8.0-2 +- Backport patches for ebz#533655 and ebz#535392 + +* Tue Jun 12 2018 Mat Booth - 1:4.8.0-1 +- Update to Photon release + +* Thu Jun 07 2018 Mat Booth - 1:4.8.0-0.8 +- Update to last RC of Photon + +* Mon May 21 2018 Mat Booth - 1:4.8.0-0.7 +- Updated I-build +- Switch to using upstream tarball +- Disable unused annotation bundle + +* Mon May 21 2018 Mat Booth - 1:4.8.0-0.6 +- Rebuild to correct permissions + +* Tue May 15 2018 Mat Booth - 1:4.8.0-0.5 +- Rebuild against Photon EMF and ECF versions +- Updated I-build + +* Thu May 03 2018 Mat Booth - 1:4.8.0-0.4 +- Updated I-build +- Attempt to fix arm platform launchers + +* Wed May 02 2018 Mat Booth - 1:4.8.0-0.3 +- Non-bootstrap build + +* Sat Apr 28 2018 Mat Booth - 1:4.8.0-0.2 +- Update to latest I-build and fix build on 32bit intel platform +- Tighten deps on batik to prevent runtime bundle resolution errors + +* Tue Apr 24 2018 Mat Booth - 1:4.8.0-0.1 +- Update to Photon I-build +- Remove conditional for webkit2 (always use it now) +- Bump requirement on lucene + +* Tue Apr 10 2018 Mat Booth - 1:4.7.3a-4 +- Ensure patches apply cleanly +- Use java API stubs from ecj package + +* Mon Apr 09 2018 Mat Booth - 1:4.7.3a-3 +- Package java 10 API stubs jar + +* Mon Apr 09 2018 Mat Booth - 1:4.7.3a-2 +- Backport patches to fix broken table editing + +* Mon Apr 09 2018 Mat Booth - 1:4.7.3a-1 +- Update to Oxygen.3a release for java 10 support + +* Wed Mar 21 2018 Mat Booth - 1:4.7.3-2 +- Bump jetty dependency + +* Thu Mar 15 2018 Mat Booth - 1:4.7.3-1 +- Update to Oxygen.3 release + +* Wed Feb 07 2018 Fedora Release Engineering - 1:4.7.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Jan 09 2018 Merlin Mathesius - 1:4.7.2-2 +- Cleanup spec file conditionals + +* Wed Nov 29 2017 Mat Booth - 1:4.7.2-1 +- Update to last RC/final release of Oxygen.2 +- Fix x11 crash when running on wayland + +* Fri Nov 24 2017 Mat Booth - 1:4.7.2-0.2 +- Update to latest RC of Oxygen.2 + +* Tue Nov 21 2017 Mat Booth - 1:4.7.2-0.1 +- Update to latest RC of Oxygen.2 + +* Fri Nov 17 2017 Mat Booth - 1:4.7.1-8 +- Make java 9 api stubs available for use +- Migrate away from deprecated maven depmap macros + +* Wed Oct 18 2017 Mat Booth - 1:4.7.1-7 +- Update to 4.7.1a release + +* Mon Oct 02 2017 Mat Booth - 1:4.7.1-6 +- Use the jit on 32bit arm to speed up the build + +* Mon Oct 02 2017 Mat Booth - 1:4.7.1-5 +- Drop workaround for metainfo problem +- Add patch for javascript/webkit2 bug ebz#525340 +- Add missing mocking deps for contributor-tools + +* Tue Sep 19 2017 Mat Booth - 1:4.7.1-4 +- Add workaround for appstream metainfo bug in RPM on F27 + +* Tue Sep 19 2017 Mat Booth - 1:4.7.1-3 +- Obsolete e4-importer that was moved into platform +- Add recommends on recommenders from JDT + +* Fri Sep 15 2017 Mat Booth - 1:4.7.1-2 +- Debootstrap build + +* Fri Sep 15 2017 Mat Booth - 1:4.7.1-1 +- Update to Oxygen.1 release +- Relax restriction on objectweb-asm + +* Wed Aug 02 2017 Fedora Release Engineering - 1:4.7.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 1:4.7.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Tue Jul 04 2017 Mat Booth - 1:4.7.0-2 +- Use 'protect root' instead of 'protect master' + +* Fri Jun 30 2017 Mat Booth - 1:4.7.0-1 +- Update to final Oxygen release +- Bump jetty requirement + +* Thu Jun 15 2017 Mat Booth - 1:4.7.0-0.14 +- Update to latest release candidate build +- Rebuild for latest EMF and ECF +- Drop nashorn extension mechanism + +* Wed May 31 2017 Mikolaj Izdebski - 1:4.7.0-0.13 +- Add missing build-requires on Maven plugins +- Run xmvn in batch mode + +* Thu May 18 2017 Mat Booth - 1:4.7.0-0.12 +- Enable Wayland backend by default on F27+ +- Bump some dependency requirements + +* Tue May 16 2017 Mat Booth - 1:4.7.0-0.11 +- Update to latest I-build +- Rebuild for latest EMF + +* Tue May 09 2017 Mat Booth - 1:4.7.0-0.10 +- Rebuild for new ECF +- Obsolete core NLS package +- Fix cycle introduced between tests and contributor-tools + +* Sat May 06 2017 Mat Booth - 1:4.7.0-0.9 +- Fix build against new felix-gogo +- Update to latest I-build + +* Wed May 03 2017 Mat Booth - 1:4.7.0-0.8 +- Package missing PDE generic editor extension + +* Tue May 02 2017 Mat Booth - 1:4.7.0-0.7 +- Rebuild for s390x +- Don't require JDK directly + +* Fri Apr 28 2017 Mat Booth - 1:4.7.0-0.6 +- Non-bootstrap build + +* Tue Apr 25 2017 Mat Booth - 1:4.7.0-0.5 +- Update to latest I-build +- Update generated ant bundle to 1.10.1 +- Fix missing launcher bundle on s390, rhbz#1445162 +- Add missing BR on libsecret + +* Fri Apr 21 2017 Mat Booth - 1:4.7.0-0.4 +- Fix secondary arch build + +* Thu Apr 20 2017 Mat Booth - 1:4.7.0-0.3 +- Simplify test installation and move machinery out of javadir now + that java stuff is installed in its own place +- Enable bootstrap mode + +* Wed Apr 19 2017 Mat Booth - 1:4.7.0-0.2 +- Update to latest I-build + +* Tue Apr 04 2017 Mat Booth - 1:4.7.0-0.1 +- Update to Oxygen I-build +- Don't build unsupported GTK2 backend for SWT +- Move installation to a multilib agnostic location /usr/lib +