### Eclipse Workspace Patch 1.0 #P org.eclipse.equinox.p2.director.app Index: src/org/eclipse/equinox/internal/p2/director/app/Application.java =================================================================== RCS file: /cvsroot/rt/org.eclipse.equinox/p2/bundles/org.eclipse.equinox.p2.director.app/src/org/eclipse/equinox/internal/p2/director/app/Application.java,v retrieving revision 1.43 diff -u -r1.43 Application.java --- src/org/eclipse/equinox/internal/p2/director/app/Application.java 21 Jan 2009 19:51:47 -0000 1.43 +++ src/org/eclipse/equinox/internal/p2/director/app/Application.java 13 Feb 2009 00:06:52 -0000 @@ -38,10 +38,11 @@ public class Application implements IApplication { private static final Integer EXIT_ERROR = new Integer(13); - static private String FLAVOR_DEFAULT = "tooling"; //$NON-NLS-1$ - static private String EXEMPLARY_SETUP = "org.eclipse.equinox.p2.exemplarysetup"; //$NON-NLS-1$ - static private String FRAMEWORKADMIN_EQUINOX = "org.eclipse.equinox.frameworkadmin.equinox"; //$NON-NLS-1$ - static private String SIMPLE_CONFIGURATOR_MANIPULATOR = "org.eclipse.equinox.simpleconfigurator.manipulator"; //$NON-NLS-1$ + static private final String ANT_PROPERTY_PREFIX = "${"; //$NON-NLS-1$ + static private final String FLAVOR_DEFAULT = "tooling"; //$NON-NLS-1$ + static private final String EXEMPLARY_SETUP = "org.eclipse.equinox.p2.exemplarysetup"; //$NON-NLS-1$ + static private final String FRAMEWORKADMIN_EQUINOX = "org.eclipse.equinox.frameworkadmin.equinox"; //$NON-NLS-1$ + static private final String SIMPLE_CONFIGURATOR_MANIPULATOR = "org.eclipse.equinox.simpleconfigurator.manipulator"; //$NON-NLS-1$ public static final int COMMAND_INSTALL = 0; public static final int COMMAND_UNINSTALL = 1; @@ -331,7 +332,8 @@ } if (opt.equalsIgnoreCase("-version")) { //$NON-NLS-1$ - version = new Version(arg); + if (arg != null && !arg.startsWith(ANT_PROPERTY_PREFIX)) + version = new Version(arg); } if (opt.equalsIgnoreCase(COMMAND_NAMES[COMMAND_UNINSTALL])) { #P org.eclipse.pde.build Index: src/org/eclipse/pde/internal/build/IXMLConstants.java =================================================================== RCS file: /cvsroot/eclipse/pde/build/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/IXMLConstants.java,v retrieving revision 1.83 diff -u -r1.83 IXMLConstants.java --- src/org/eclipse/pde/internal/build/IXMLConstants.java 6 Feb 2009 22:11:37 -0000 1.83 +++ src/org/eclipse/pde/internal/build/IXMLConstants.java 13 Feb 2009 00:06:54 -0000 @@ -65,6 +65,8 @@ public static final String TARGET_ROOT_TARGET = "rootTarget"; //$NON-NLS-1$ public static final String TARGET_CUSTOM_ASSEMBLY = "customAssembly"; //$NON-NLS-1$ public static final String TARGET_P2_METADATA = "generate.p2.metadata"; //$NON-NLS-1$ + public static final String TARGET_RUN_DIRECTOR = "runDirector"; //$NON-NLS-1$ + // properties public static final String PROPERTY_ARCH = "arch"; //$NON-NLS-1$ public static final String PROPERTY_BASE_ARCH = "basearch"; //$NON-NLS-1$ @@ -153,6 +155,7 @@ public static final String PROPERTY_OMIT_ROOTFILES = "updateJar.omitRootfiles"; //$NON-NLS-1$ public static final String PROPERTY_GENERATE_API_DESCRIPTION = "generateAPIDescription"; //$NON-NLS-1$ public static final String PROPERTY_BINARY_FOLDERS = "binary.folders"; //$NON-NLS-1$ + public static final String PROPERTY_LAUNCHER_JAR = "equinoxLauncherJar"; //$NON-NLS-1$ //Jar processor properties public static final String PROPERTY_SIGN_ALIAS = "sign.alias"; //$NON-NLS-1$ Index: src/org/eclipse/pde/internal/build/IBuildPropertiesConstants.java =================================================================== RCS file: /cvsroot/eclipse/pde/build/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/IBuildPropertiesConstants.java,v retrieving revision 1.36 diff -u -r1.36 IBuildPropertiesConstants.java --- src/org/eclipse/pde/internal/build/IBuildPropertiesConstants.java 6 Feb 2009 22:11:37 -0000 1.36 +++ src/org/eclipse/pde/internal/build/IBuildPropertiesConstants.java 13 Feb 2009 00:06:54 -0000 @@ -96,9 +96,15 @@ public static final String PROPERTY_P2_COMPRESS = "p2.compress"; //$NON-NLS-1$ public static final String PROPERTY_P2_METADATA_REPO_NAME = "p2.metadata.repo.name"; //$NON-NLS-1$ public static final String PROPERTY_P2_ARTIFACT_REPO_NAME = "p2.artifact.repo.name"; //$NON-NLS-1$ - public static final String PROPERTY_P2_BUILD_REPO = "p2.build.repo"; //$NON-NLS-1$ + //Internal usage only + public static final String PROPERTY_P2_BUILD_REPO = "p2.build.repo"; //$NON-NLS-1$ public static final String PROPERTY_P2_GENERATION_MODE = "p2.generation.mode"; //$NON-NLS-1$ + public static final String PROPERTY_P2_REPO = "p2.repo"; //$NON-NLS-1$ + public static final String PROPERTY_P2_DIRECTOR_IU = "p2.director.iu"; //$NON-NLS-1$ + public static final String PROPERTY_P2_DIRECTOR_VERSION = "p2.director.version"; //$NON-NLS-1$ + public static final String PROPERTY_P2_DIRECTOR_INSTALLPATH = "p2.director.installPath"; //$NON-NLS-1$ + public static final String SOURCE_PLUGIN = "sourcePlugin"; //$NON-NLS-1$ public static final String PROPERTY_PACKAGER_MODE = "packagerMode"; //$NON-NLS-1$ Index: src/org/eclipse/pde/internal/build/P2ConfigScriptGenerator.java =================================================================== RCS file: /cvsroot/eclipse/pde/build/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/P2ConfigScriptGenerator.java,v retrieving revision 1.2 diff -u -r1.2 P2ConfigScriptGenerator.java --- src/org/eclipse/pde/internal/build/P2ConfigScriptGenerator.java 12 Feb 2009 21:41:32 -0000 1.2 +++ src/org/eclipse/pde/internal/build/P2ConfigScriptGenerator.java 13 Feb 2009 00:06:54 -0000 @@ -9,10 +9,15 @@ package org.eclipse.pde.internal.build; +import java.io.File; import java.util.*; -import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.*; import org.eclipse.osgi.service.resolver.BundleDescription; +import org.eclipse.pde.internal.build.ant.AntScript; +import org.eclipse.pde.internal.build.ant.FileSet; import org.eclipse.pde.internal.build.site.BuildTimeFeature; +import org.eclipse.pde.internal.build.site.BuildTimeSite; +import org.eclipse.pde.internal.build.site.compatibility.FeatureEntry; public class P2ConfigScriptGenerator extends AssembleConfigScriptGenerator { private AssemblyInformation assemblyInformation = null; @@ -32,14 +37,14 @@ initializeCollections(); try { - openScript(directory, "assemble." + featureId + ".p2.xml"); //$NON-NLS-1$ //$NON-NLS-2$ + String prefix = assembling ? "assemble." : "package."; //$NON-NLS-1$ //$NON-NLS-2$ + openScript(directory, prefix + featureId + ".p2.xml"); //$NON-NLS-1$ } catch (CoreException e) { return; } generatePrologue(); generateMainBegin(); generateGatherCalls(); - generateBrandingCalls(); generateMetadataCalls(); generateMainEnd(); @@ -110,24 +115,94 @@ } } script.printDeleteTask(Utils.getPropertyFormat(PROPERTY_ASSEMBLY_TMP) + "/p2.branding", null, null); //$NON-NLS-1$ + script.println(); } protected void generateMetadataTarget() { - script.printTargetDeclaration(TARGET_P2_METADATA, null, null, null, null); + script.printTargetDeclaration(TARGET_P2_METADATA, null, null, assembling ? PROPERTY_RUN_PACKAGER : null, null); + + generateBrandingCalls(); ProductFile product = getProductFile(); if (product != null) { + + String productPath = product.getLocation(); + String productDir = getWorkingDirectory() + '/' + DEFAULT_FEATURE_LOCATION + '/' + CONTAINER_FEATURE + "/product"; //$NON-NLS-1$ + File productFile = new File(productPath); + String newProduct = new File(productDir, productFile.getName()).getAbsolutePath(); + script.printCopyFileTask(productPath, newProduct, true); + + File parent = new File(productPath).getParentFile(); + File p2Inf = new File(parent, "p2.inf"); //$NON-NLS-1$ + if (p2Inf.exists()) + script.printCopyTask(p2Inf.getAbsolutePath(), productDir, null, false, true); + generateProductReplaceTask(product, newProduct); + productPath = newProduct; + script.printTab(); script.print(""); //$NON-NLS-1$ } script.printTargetEnd(); } + //TODO this is duplicated from AssembleScriptGenerator + protected void generateProductReplaceTask(ProductFile product, String productDirectory) { + if (product == null) + return; + + BuildTimeSite site = null; + try { + site = getSite(false); + } catch (CoreException e1) { + return; + } + + List productEntries = product.getProductEntries(); + String mappings = Utils.getEntryVersionMappings((FeatureEntry[]) productEntries.toArray(new FeatureEntry[productEntries.size()]), site); + script.println(""); //$NON-NLS-1$ //$NON-NLS-2$ + else + script.println(" pluginIds=\"" + mappings + "\"/>"); //$NON-NLS-1$ //$NON-NLS-2$ + + return; + } + protected void generateEpilogue() { script.printProjectEnd(); } + + protected void generateGatherBinPartsTarget() { + if (assembling) { + super.generateGatherBinPartsTarget(); + return; + } + + script.printTargetDeclaration(TARGET_GATHER_BIN_PARTS, null, null, null, null); + + ArrayList p2Features = new ArrayList(); + ArrayList p2Bundles = new ArrayList(); + for (int i = 0; i < plugins.length; i++) { + Path pluginLocation = new Path(plugins[i].getLocation()); + p2Bundles.add(new FileSet(pluginLocation.removeLastSegments(1).toOSString(), null, pluginLocation.lastSegment(), null, null, null, null)); + + } + + for (int i = 0; i < features.length; i++) { + IPath featureLocation = new Path(features[i].getURL().getPath()); + featureLocation = featureLocation.removeLastSegments(1); + p2Features.add(new FileSet(featureLocation.removeLastSegments(1).toOSString(), null, featureLocation.lastSegment(), null, null, null, null)); + } + + String repo = Utils.getPropertyFormat(PROPERTY_P2_BUILD_REPO); + script.printP2PublishFeaturesAndBundles(repo, repo, (FileSet[]) p2Bundles.toArray(new FileSet[p2Bundles.size()]), (FileSet[]) p2Features.toArray(new FileSet[p2Features.size()]), Utils.getPropertyFormat(PROPERTY_P2_CATEGORY_SITE)); + + script.printTargetEnd(); + script.println(); + } } Index: src/org/eclipse/pde/internal/build/IPDEBuildConstants.java =================================================================== RCS file: /cvsroot/eclipse/pde/build/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/IPDEBuildConstants.java,v retrieving revision 1.48 diff -u -r1.48 IPDEBuildConstants.java --- src/org/eclipse/pde/internal/build/IPDEBuildConstants.java 6 Feb 2009 22:11:37 -0000 1.48 +++ src/org/eclipse/pde/internal/build/IPDEBuildConstants.java 13 Feb 2009 00:06:54 -0000 @@ -39,6 +39,7 @@ public final static String MANIFEST = "MANIFEST.MF"; //$NON-NLS-1$ // default values + public final static String PROPERTY_GENERIC_TARGETS = "genericTargets"; //$NON-NLS-1$ public final static String DEFAULT_BUILD_SCRIPT_FILENAME = "build.xml"; //$NON-NLS-1$ public final static String DEFAULT_FEATURE_LOCATION = "features"; //$NON-NLS-1$ public final static String DEFAULT_FETCH_SCRIPT_FILENAME = "fetch.xml"; //$NON-NLS-1$ Index: src/org/eclipse/pde/internal/build/AssembleScriptGenerator.java =================================================================== RCS file: /cvsroot/eclipse/pde/build/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/AssembleScriptGenerator.java,v retrieving revision 1.37 diff -u -r1.37 AssembleScriptGenerator.java --- src/org/eclipse/pde/internal/build/AssembleScriptGenerator.java 6 Feb 2009 22:11:37 -0000 1.37 +++ src/org/eclipse/pde/internal/build/AssembleScriptGenerator.java 13 Feb 2009 00:06:54 -0000 @@ -110,7 +110,7 @@ basicGenerateAssembleConfigFileTargetCall(current, configInfo[0], configInfo[1], configInfo[2], configInfo[3]); } } - if (configScriptGenerator.haveP2Bundles()) + if (configScriptGenerator.haveP2Bundles() && !BuildDirector.p2Gathering) script.printAntCallTask(TARGET_P2_METADATA, true, null); script.printTargetEnd(); } @@ -125,6 +125,7 @@ p2ConfigGenerator.initialize(directory, featureId); p2ConfigGenerator.generate(); + script.printTab(); script.print(""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ } @@ -492,13 +528,14 @@ if (embeddedSource) generateGatherSourceTarget(); generatePostProcessingTarget(); - generateArchivingTarget(); + generateArchivingTarget(true); if (FORMAT_TAR.equalsIgnoreCase(archiveFormat)) generateGZipTarget(true); generateCustomAssemblyTarget(); generateMetadataTarget(); + generateDirectorTarget(true); script.printProjectEnd(); script.close(); Index: src/org/eclipse/pde/internal/build/ant/AntScript.java =================================================================== RCS file: /cvsroot/eclipse/pde/build/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/ant/AntScript.java,v retrieving revision 1.60 diff -u -r1.60 AntScript.java --- src/org/eclipse/pde/internal/build/ant/AntScript.java 11 Feb 2009 22:59:03 -0000 1.60 +++ src/org/eclipse/pde/internal/build/ant/AntScript.java 13 Feb 2009 00:06:54 -0000 @@ -102,6 +102,7 @@ bundles[i].printAs("bundles", this); //$NON-NLS-1$ } indent--; + printTab(); output.println(""); //$NON-NLS-1$ } Index: src/org/eclipse/pde/internal/build/packager/PackageScriptGenerator.java =================================================================== RCS file: /cvsroot/eclipse/pde/build/org.eclipse.pde.build/src/org/eclipse/pde/internal/build/packager/PackageScriptGenerator.java,v retrieving revision 1.26 diff -u -r1.26 PackageScriptGenerator.java --- src/org/eclipse/pde/internal/build/packager/PackageScriptGenerator.java 6 Feb 2009 22:11:37 -0000 1.26 +++ src/org/eclipse/pde/internal/build/packager/PackageScriptGenerator.java 13 Feb 2009 00:06:54 -0000 @@ -47,7 +47,18 @@ } protected void generateP2ConfigFileTargetCall() { - //empty + P2ConfigScriptGenerator p2ConfigGenerator = new P2ConfigScriptGenerator(assemblageInformation, false); + p2ConfigGenerator.setProduct(productLocation); + p2ConfigGenerator.initialize(directory, featureId); + p2ConfigGenerator.generate(); + + script.printTab(); + script.print(""); //$NON-NLS-1$ } protected void basicGenerateAssembleConfigFileTargetCall(Config aConfig, Collection binaryPlugins, Collection binaryFeatures, Collection allFeatures, Collection rootFiles) throws CoreException { @@ -59,6 +70,7 @@ configScriptGenerator.setBuildSiteFactory(siteFactory); configScriptGenerator.generate(); + script.printTab(); script.print(" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +