eclipse/eclipse-pde-tp-support-droplets.patch
DistroBaker e6112c26c7 Merged update from upstream sources
This is an automated DistroBaker update from upstream sources.
If you do not know what this is about or would like to opt out,
contact the OSCI team.

Source: https://src.fedoraproject.org/rpms/eclipse.git#c21212b002b4e7a2ff68dde825f2e885df0dd979
2021-01-19 00:06:31 +00:00

134 lines
6.0 KiB
Diff

From 85ad9719778aa0aa5b9e6655c015a352adb5540a Mon Sep 17 00:00:00 2001
From: Roland Grunberg <rgrunber@redhat.com>
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
---
.../org.eclipse.pde.core/META-INF/MANIFEST.MF | 1 +
.../eclipse/pde/internal/core/P2Utils.java | 50 +++++++++++++++++--
.../org.eclipse.pde.doc.user/pdeOptions.txt | 1 +
3 files changed, 47 insertions(+), 5 deletions(-)
diff --git a/eclipse.pde.ui/ui/org.eclipse.pde.core/META-INF/MANIFEST.MF b/eclipse.pde.ui/ui/org.eclipse.pde.core/META-INF/MANIFEST.MF
index 8b65b7b6f..ff1a881a0 100644
--- a/eclipse.pde.ui/ui/org.eclipse.pde.core/META-INF/MANIFEST.MF
+++ b/eclipse.pde.ui/ui/org.eclipse.pde.core/META-INF/MANIFEST.MF
@@ -102,5 +102,6 @@ Require-Bundle:
org.eclipse.core.filesystem;bundle-version="[1.0.0,2.0.0)"
Eclipse-LazyStart: true
Bundle-RequiredExecutionEnvironment: JavaSE-11
+Import-Package: org.eclipse.equinox.internal.simpleconfigurator.utils
Bundle-ActivationPolicy: lazy
Automatic-Module-Name: org.eclipse.pde.core
diff --git a/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/P2Utils.java b/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/P2Utils.java
index bd0be54a9..d9259321e 100644
--- a/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/P2Utils.java
+++ b/eclipse.pde.ui/ui/org.eclipse.pde.core/src/org/eclipse/pde/internal/core/P2Utils.java
@@ -17,10 +17,11 @@ package org.eclipse.pde.internal.core;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
+import java.net.*;
import java.nio.file.Files;
+import java.nio.file.Paths;
import java.nio.file.NoSuchFileException;
+import java.util.Arrays;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -34,6 +35,7 @@ import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
import org.eclipse.equinox.frameworkadmin.BundleInfo;
+import org.eclipse.core.runtime.URIUtil; 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;
@@ -62,6 +64,7 @@ import org.eclipse.pde.core.plugin.IPluginModelBase;
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;
/**
@@ -141,7 +144,17 @@ public class P2Utils {
try {
File bundlesTxt = new File(configurationArea, SimpleConfiguratorManipulator.BUNDLES_INFO_PATH);
File home = basePath.toFile();
- BundleInfo[] bundles = getBundlesFromFile(bundlesTxt, home);
+ List<org.eclipse.equinox.internal.simpleconfigurator.utils.BundleInfo> ibundleList = SimpleConfiguratorUtils.readConfiguration(bundlesTxt.toURI().toURL(), home.toURI());
+ List<BundleInfo> 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;
}
@@ -170,11 +183,38 @@ public class P2Utils {
try {
File home = basePath.toFile();
File srcBundlesTxt = new File(configurationArea, SimpleConfiguratorManipulator.SOURCE_INFO_PATH);
+ final List<BundleInfo> 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<String, String> 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 (IOException e) {
PDECore.log(e);
return null;
diff --git a/eclipse.platform.common/bundles/org.eclipse.pde.doc.user/pdeOptions.txt b/eclipse.platform.common/bundles/org.eclipse.pde.doc.user/pdeOptions.txt
index 0f71564d2..874580e04 100644
--- a/eclipse.platform.common/bundles/org.eclipse.pde.doc.user/pdeOptions.txt
+++ b/eclipse.platform.common/bundles/org.eclipse.pde.doc.user/pdeOptions.txt
@@ -76,6 +76,7 @@
;${rt.equinox.p2.bundles}/org.eclipse.equinox.p2.repository.tools/${dot.classes}
;${rt.equinox.p2.bundles}/org.eclipse.equinox.p2.touchpoint.eclipse/${dot.classes}
;${rt.equinox.p2.bundles}/org.eclipse.equinox.simpleconfigurator.manipulator/${dot.classes}
+;${rt.equinox.p2.bundles}/org.eclipse.equinox.simpleconfigurator/${dot.classes}
-breakiterator
-use
--
2.28.0