Introduction of new properties in the build.properties file of feature

When building an eclipse based product from features, it is now possible to copy files or directories to the eclipse directory. This is achieved thanks to the following properties:

root=a comma separated list of files and directories

To refer to a file prefix the name with "file:", to refer to a directory, simply list the name.

It is also possible to set permissions on those root files:

root.permissions.XXX=a comma separated list of files and directories

where XXX is a unix chmod style permission description. It is also possible to copy files and apply permissions on a configuration basis

root.configName= root.configName.permissions.XXX=

where configName is a doted description of the platform (os.ws.arch). Here an example for org.eclipse.platform

root=eclipse root.macosx.carbon.ppc=macosx.carbon,../../plugins/platform-launcher/bin/macosx root.macosx.carbon.ppc.link=Eclipse.app/Contents/MacOS/eclipse,eclipse root.macosx.carbon.ppc.permissions.755=Eclipse.app/Contents/MacOS/eclipse

It is also possible to trigger the generation of source features and plugins

generate.feature@nameOfTheFeatureToGenerate=featureName, plugin@XXXX

generate a feature called 'nameOfTheFeatureToGenerate' from the plugins contained in the feature called 'featureName' and also include the plugin xxxx

Example : generate.feature@org.eclipse.jdt.source=org.eclipse.jdt, plugin@org.eclipse.jdt.doc.isv

Introduction of new properties in the build.properties file of plugin

For every jar file that is being built three variables can be provided. Note that "{jarname}" describes the name of the jar file including its path relative to the project.

- a variable named "source.{jarname}" describing where the source of the jar can be found. The expected value is a path relative to the project (for example "src/").
- a variable named "output.{jarname}" describing where the bin of the jar can be found. The expected value is a path relative to the project (for example "bin/").
- a variable named "extra.{jarname}" describing the list of jars required to compile this jar. The expected values are paths relative to the place where the project is.

A short way to explain the content of those variables is to see them as variables used for the compilation:

- the source indicates where to find the source of the jar.
- the extra gives extra values to be put at the end of the classpath when we are compiling the source.
- the output indicates where the content of a compiled version of the library exists (this is typically used in the classpath of plugins requiring this jar).

Setting permissions on a per basis plugin

During a build it is now possible to set permissions and create links on a per plugin basis. Those information are listed in a file called permissions.properties provided at the root of the plugin (as a sibling of build.properties). The format of the file is as follow:

permissions.executable=list of files

permissions.link=list of files

permissions.XXX=list of files

Enhancement of the map file | The map file entries have been enhanced to allow plugins and features to be located anywhere in a cvs repository. feature|fragment|plugin@elementID=versionName,CVSRepository,passwordInfo,pathInTheRepository (no starting slash) example: feature@com.foo=v101,:pserver:anon@foo.com:/home/cvs,,a/b/foo-feature

New properties introduced to control the compilation of plugins

javacSource: Give the format of the source code. Legal values are 1.3 and 1.4.
javacTarget: Generate class files for specific VM version.
javacFailOnError: Indicates whether the build will continue even if there are compilation errors.
javacDebugInfo: Indicates whether source should be compiled with debug information.
javacVerbose: Asks the compiler for verbose output.
bootclasspath: Set the classpath of the jdk you compile against.
All those properties are surfaced in the pde ui.

Reusable automated build process | The new pde build process ease the creation of automated build process by providing a set of template scripts and a general script. Those scripts and templates are used to build the 3.0 build of eclipse (see the project org.eclipse.releng.eclipsebuilder). A small example of their usage is also provided in the feature folder of the plugin.

Filling version numbers of features | In the features, version numbers for nested features and plugins can now be specified to 0.0.0 and will be filled in by the appropriate values by the pde build engine.