Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/publisher/BrandP2Task.java115
1 files changed, 33 insertions, 82 deletions
diff --git a/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/publisher/BrandP2Task.java b/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/publisher/BrandP2Task.java
index 39c90d80..2120781c 100644
--- a/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/publisher/BrandP2Task.java
+++ b/org.eclipse.pde.build/src_ant/org/eclipse/pde/internal/build/publisher/BrandP2Task.java
@@ -1,12 +1,12 @@
/*******************************************************************************
- * Copyright (c) 2009, 2013 IBM Corporation and others. All rights reserved. This
+ * Copyright (c) 2009, 2015 IBM Corporation and others. All rights reserved. This
* program and the accompanying materials are made available under the terms of
* the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
- * Pascal Rapicault - Support for bundled macosx application - http://bugs.eclipse.org/57349
+ * Pascal Rapicault - Support for bundled macosx application - http://bugs.eclipse.org/431116
******************************************************************************/
package org.eclipse.pde.internal.build.publisher;
@@ -26,7 +26,8 @@ import org.eclipse.equinox.internal.p2.engine.Phase;
import org.eclipse.equinox.internal.p2.engine.PhaseSet;
import org.eclipse.equinox.internal.p2.engine.phases.Collect;
import org.eclipse.equinox.internal.p2.engine.phases.Install;
-import org.eclipse.equinox.internal.p2.metadata.*;
+import org.eclipse.equinox.internal.p2.metadata.TouchpointData;
+import org.eclipse.equinox.internal.p2.metadata.TouchpointInstruction;
import org.eclipse.equinox.internal.p2.publisher.eclipse.BrandingIron;
import org.eclipse.equinox.internal.p2.publisher.eclipse.ExecutablesDescriptor;
import org.eclipse.equinox.p2.core.IProvisioningAgent;
@@ -35,7 +36,6 @@ import org.eclipse.equinox.p2.internal.repository.tools.Repo2Runnable;
import org.eclipse.equinox.p2.internal.repository.tools.tasks.IUDescription;
import org.eclipse.equinox.p2.internal.repository.tools.tasks.Repo2RunnableTask;
import org.eclipse.equinox.p2.metadata.*;
-import org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitDescription;
import org.eclipse.equinox.p2.repository.artifact.IArtifactRepository;
import org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager;
import org.eclipse.equinox.p2.repository.artifact.spi.ArtifactDescriptor;
@@ -103,9 +103,6 @@ public class BrandP2Task extends Repo2RunnableTask {
if (ius.size() == 1) {
callBrandingIron();
publishBrandedIU(metadataRepo, artifactRepo, ius.get(0));
- if ("macosx".equals(config.getOs())) { //$NON-NLS-1$
- publishBundledMacOS(metadataRepo, artifactRepo, ius.get(0));
- }
FileUtils.deleteAll(new File(getRootFolder()));
}
} catch (BuildException e) {
@@ -212,25 +209,15 @@ public class BrandP2Task extends Repo2RunnableTask {
Version version = Version.parseVersion(productVersion);
if (version.equals(Version.emptyVersion))
version = originalIU.getVersion();
- InstallableUnitDescription newIUDescription = new MetadataFactory.InstallableUnitDescription();
+ org.eclipse.equinox.p2.metadata.MetadataFactory.InstallableUnitDescription newIUDescription = new MetadataFactory.InstallableUnitDescription();
newIUDescription.setSingleton(originalIU.isSingleton());
newIUDescription.setId(id);
newIUDescription.setVersion(version);
newIUDescription.setCapabilities(new IProvidedCapability[] {PublisherHelper.createSelfCapability(id, version)});
newIUDescription.setTouchpointType(originalIU.getTouchpointType());
+ newIUDescription.setFilter(originalIU.getFilter());
- //Tweak the filter to take macosx case into account
- if ("macosx".equals(config.getOs())) { //$NON-NLS-1$
- StringBuffer newLDAPFilter = new StringBuffer();
- newLDAPFilter.append("(& (!(macosx-bundled=*))"); //$NON-NLS-1$
- newLDAPFilter.append(createLDAPString());
- newLDAPFilter.append(")"); //$NON-NLS-1$
- newIUDescription.setFilter(InstallableUnit.parseFilter(newLDAPFilter.toString()));
- } else {
- newIUDescription.setFilter(originalIU.getFilter());
- }
-
- List<ITouchpointData> data = brandTouchpointData(originalIU.getTouchpointData(), false);
+ List<ITouchpointData> data = brandTouchpointData(originalIU.getTouchpointData());
for (int i = 0; i < data.size(); i++) {
newIUDescription.addTouchpointData(data.get(i));
}
@@ -244,39 +231,6 @@ public class BrandP2Task extends Repo2RunnableTask {
publishBrandedArtifact(artifactRepo, key);
}
- public void publishBundledMacOS(IMetadataRepository metadataRepo, IArtifactRepository artifactRepo, IInstallableUnit originalIU) {
- String nonBrandedId = productId + "_root." + getConfigString(); //$NON-NLS-1$
- String id = productId + "_root." + getConfigString() + "-bundled"; //$NON-NLS-1$ //$NON-NLS-2$
- Version version = Version.parseVersion(productVersion);
- if (version.equals(Version.emptyVersion))
- version = originalIU.getVersion();
- InstallableUnitDescription newIUDescription = new MetadataFactory.InstallableUnitDescription();
- newIUDescription.setSingleton(originalIU.isSingleton());
- newIUDescription.setId(id);
- newIUDescription.setVersion(version);
- newIUDescription.setCapabilities(new IProvidedCapability[] {PublisherHelper.createSelfCapability(id, version), PublisherHelper.createSelfCapability(nonBrandedId, version)});
- newIUDescription.setTouchpointType(originalIU.getTouchpointType());
-
- //Tweak the filter for macosx-bundled
- StringBuffer newLDAPFilter = new StringBuffer();
- newLDAPFilter.append("(& (macosx-bundled=true)"); //$NON-NLS-1$
- newLDAPFilter.append(createLDAPString());
- newLDAPFilter.append(")"); //$NON-NLS-1$
- newIUDescription.setFilter(InstallableUnit.parseFilter(newLDAPFilter.toString()));
-
- List<ITouchpointData> data = brandTouchpointData(originalIU.getTouchpointData(), true);
- for (int i = 0; i < data.size(); i++) {
- newIUDescription.addTouchpointData(data.get(i));
- }
-
- //The same artifact is used for the two shapes of MacOS
- IArtifactKey key = artifactRepo.createArtifactKey(PublisherHelper.BINARY_ARTIFACT_CLASSIFIER, nonBrandedId, newIUDescription.getVersion());
- newIUDescription.setArtifacts(new IArtifactKey[] {key});
-
- IInstallableUnit newIU = MetadataFactory.createInstallableUnit(newIUDescription);
- metadataRepo.addInstallableUnits(Arrays.asList(new IInstallableUnit[] {newIU}));
- }
-
protected String createLDAPString() {
String filter = "(& "; //$NON-NLS-1$
filter += "(osgi.ws=" + config.getWs() + ')'; //$NON-NLS-1$
@@ -307,14 +261,14 @@ public class BrandP2Task extends Repo2RunnableTask {
}
private static final String CHMOD = "chmod"; //$NON-NLS-1$
- private static final String LN = "ln"; //$NON-NLS-1$
- private static final String LINK_TARGET = "linkTarget"; //$NON-NLS-1$
- private static final String LINK_NAME = "linkName"; //$NON-NLS-1$
private static final String TARGET_FILE = "targetFile"; //$NON-NLS-1$
private static final String INSTALL = "install"; //$NON-NLS-1$
+ private static final String UNINSTALL = "uninstall"; //$NON-NLS-1$
private static final String CONFIGURE = "configure"; //$NON-NLS-1$
- private List<ITouchpointData> brandTouchpointData(Collection<ITouchpointData> data, boolean macosxBundled) {
+ private List<ITouchpointData> brandTouchpointData(Collection<ITouchpointData> data) {
+ if (config.getOs().equals("macosx")) //$NON-NLS-1$
+ return brandMacTouchpointData();
ArrayList<ITouchpointData> results = new ArrayList<ITouchpointData>(data.size() + 1);
results.addAll(data);
@@ -323,12 +277,7 @@ public class BrandP2Task extends Repo2RunnableTask {
String brandedLauncher = null;
if (config.getOs().equals("win32")) //$NON-NLS-1$
brandedLauncher = launcherName + ".exe"; //$NON-NLS-1$
- else if (config.getOs().equals("macosx")) {//$NON-NLS-1$
- if (macosxBundled)
- brandedLauncher = "Contents/MacOS/" + launcherName; //$NON-NLS-1$
- else
- brandedLauncher = launcherName + ".app/Contents/MacOS/" + launcherName; //$NON-NLS-1$
- } else
+ else
brandedLauncher = launcherName;
for (int i = 0; i < results.size(); i++) {
@@ -353,8 +302,7 @@ public class BrandP2Task extends Repo2RunnableTask {
continue; //data has properly branded chmod, nothing to do
}
- if ((config.getOs().equals("macosx") && (targetFile.endsWith(".app/Contents/MacOS/launcher") || targetFile.endsWith(".app/Contents/MacOS/eclipse"))) || //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- (config.getOs().equals("win32") && (targetFile.equals("launcher.exe") || targetFile.equals("eclipse.exe"))) || //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ if ((config.getOs().equals("win32") && (targetFile.equals("launcher.exe") || targetFile.equals("eclipse.exe"))) || //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
(targetFile.equals("launcher") || targetFile.equals("eclipse"))) //$NON-NLS-1$ //$NON-NLS-2$
{
map.put(TARGET_FILE, brandedLauncher);
@@ -363,16 +311,6 @@ public class BrandP2Task extends Repo2RunnableTask {
phaseChanged = true;
break;
}
- } else if (actions[j].startsWith(LN) && config.getOs().equals("macosx")) { //$NON-NLS-1$
- //for now only checking links on mac
- Map<String, String> map = parseAction(actions[j]);
- String linkTarget = map.get(LINK_TARGET);
- if (linkTarget.endsWith(".app/Contents/MacOS/launcher") || linkTarget.endsWith(".app/Contents/MacOS/eclipse")) { //$NON-NLS-1$ //$NON-NLS-2$
- map.put(LINK_TARGET, brandedLauncher);
- map.put(LINK_NAME, launcherName);
- actions[j] = LN + toString(map);
- phaseChanged = true;
- }
}
}
if (phaseChanged) {
@@ -386,13 +324,7 @@ public class BrandP2Task extends Repo2RunnableTask {
//add a chmod if there wasn't one before
if (!haveChmod && !config.getOs().equals("win32")) { //$NON-NLS-1$
- String body = null;
- if (macosxBundled) {
- body = "unzip(source:@artifact, target:${installFolder}, path:" + launcherName + ".app);"; //$NON-NLS-1$ //$NON-NLS-2$
- body += " chmod(targetDir:${installFolder}/Contents/MacOS/, targetFile:" + launcherName + ", permissions:755);"; //$NON-NLS-1$ //$NON-NLS-2$
- } else {
- body = "chmod(targetDir:${installFolder}, targetFile:" + brandedLauncher + ", permissions:755)"; //$NON-NLS-1$ //$NON-NLS-2$
- }
+ String body = "chmod(targetDir:${installFolder}, targetFile:" + brandedLauncher + ", permissions:755)"; //$NON-NLS-1$ //$NON-NLS-2$
TouchpointInstruction newInstruction = new TouchpointInstruction(body, null);
Map<String, ITouchpointInstruction> instructions = new HashMap<String, ITouchpointInstruction>();
instructions.put(INSTALL, newInstruction);
@@ -401,6 +333,25 @@ public class BrandP2Task extends Repo2RunnableTask {
return results;
}
+ private List<ITouchpointData> brandMacTouchpointData() {
+ Map<String, ITouchpointInstruction> instructions = new HashMap<String, ITouchpointInstruction>(3);
+ instructions.put(INSTALL, getMacInstallInstruction());
+ instructions.put(UNINSTALL, getMacUninstallInstruction());
+ List<ITouchpointData> result = new ArrayList<ITouchpointData>(2);
+ result.add(new TouchpointData(instructions));
+ return result;
+ }
+
+ private ITouchpointInstruction getMacUninstallInstruction() {
+ return new TouchpointInstruction("cleanupzip(source:@artifact, target:${installFolder}/../);", null); //$NON-NLS-1$
+ }
+
+ private ITouchpointInstruction getMacInstallInstruction() {
+ String body = "unzip(source:@artifact, target:${installFolder}/../);"; //$NON-NLS-1$
+ body += " chmod(targetDir:${installFolder}/../MacOS/, targetFile:" + launcherName + ", permissions:755);"; //$NON-NLS-1$ //$NON-NLS-2$
+ return new TouchpointInstruction(body, null);
+ }
+
private String toString(String[] elements, String separator) {
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < elements.length; i++) {

Back to the top