views:

53

answers:

3

Hello,

I am currently trying to get my headless pde-build working but I am stuck on a point where I do not know how to continue. The problem is how to define the related target platform to compile the plugins against. I have a build.bat with the following call (all in one line!):

java -jar D:\target\eclipse\plugins\org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar 
-application org.eclipse.ant.core.antRunner 
-f D:\target\eclipse\plugins\org.eclipse.pde.build_3.5.2.R35x_20100114\scripts\productBuild\productBuild.xml 
-Dbuilder=c:\pde-build\scripts %*

I tried to create the target eclipse platform from different parts: The eclipse SDK, RCP SDK, Delta Pack, PDE-SDK in all combinations but none of them worked well.

I got the following error:

BUILD FAILED
D:\target\eclipse\plugins\org.eclipse.pde.build_3.5.2.R35x_20100114\scripts\productBuild\productBuild.xml:18: Cannot fin
d ${eclipse.pdebuild.scripts}/build.xml imported from D:\target\eclipse\plugins\org.eclipse.pde.build_3.5.2.R35x_2010011
4\scripts\productBuild\productBuild.xml

where the variable ${eclipse.pdebuild.scripts} does not got resolved. I also tried to give this parameter via the command line but then I got another error regarding missing svn task which is absolutely confusing as this is working with my local eclipse installation referenced.

When I replace the path from d:/target/eclipse to my local eclipse installation the pde build works as expected! This leads my to the point that the configuration of the target eclipse is not correct but in the moment I have no idea how to configure this!

My goal is the automate the pde build first on my local site without referencing my local eclipse and later on integrate this building process into our running cruisecontrol instance.

As I saw already another question about defining the target eclipse I would be happy if anyone can contribute hints or facts regarding the problem.

Regards, Andreas

A: 

Hello,

after some more time of investigation I found out, what I did wrong so far. As I mentioned above defining the target platform is not that easy as copying the SDK and plugins in into one location (as it was in early times of eclipse dev).

The working solution by now is the following: Copying the eclipse SDK into the target location and run this version. Install inside this the neccessary PDE-Tools to enable plugin development. After that, close the IDE and copy the delta pack + the respective svn plugin (I used org.eclipse.pde.build.svn-1.0.1RC2 from sourceforge) into the target platform and you're done. Now my automated PDE build is running as expected.

Only minor issue now is the following: The result product contains eclipse-specific menu entries which are not there when I ran this from inside my dev-eclipse.

Any hints on that?

Andreas
A: 

Hi Andrea, I just posted an answer to my question on this kind of topics, may be this can help you:

http://stackoverflow.com/questions/3140299/plugin-product-vs-feature-product

Manuel Selva
Hi Manuel, I wrote an answer here which lead me to a working solution. But I am still searching for the "optimal" target platform. nevertheless my product does contain all needed plugins and is therefor runnable. I tried this with the template+view plugin which results in a 48MB zip file ;-) .
Andreas
A: 

When performing a headless build, the target can be separate from the eclipse that is actually running the build itself. The problem you had here is that the eclipse that you were using to run the build did not have PDE/Build properly installed.

This is why the ${eclipse.pdebuild.scripts} was not set, because PDE/Build was not installed into that eclipse instance, the org.eclipse.pde.build bundle was not resolved and the code that sets this property never got called. Similarly, the necessary ant classpath entries for PDE/Build tasks would not have been set up properly either.

You need the Eclipse with PDE installed inside to run the build, but the target for the build can be separate from this.

In the build.properties file found under -Dbuilder=c:\pde-build\scripts you can set several properties:

  1. baseLocation This is a path to an eclipse that is your target.
  2. buildDirectory This is where the build will actually take place, source is fetched to plugins/ and features/ subfolders, but if there are already binary plugins located here then those become part of the target as well.
  3. pluginPath This is a list of paths (separated with ';' on windows or ':' on linux) containing other locations that should be considered as part of your target. These locations can be several things:
    1. The root of an eclipse-like install with plugins/ and features/ subfolders. This is a good way to provide the delta-pack instead of just unzipping it on top of an eclipse install.
    2. The root of a workspace-like folder, where all subfolders are treated as plugins or features depending on the presence of a manifest or feature.xml.
    3. The root of a bundle or feature, or the jar for a bundle.
  4. If you are doing a p2 build (p2.gathering = true) you can also provide p2 repositories under a ${repoBaseLocation} which will be transformed and placed under ${transformedRepoLocation} and will become part of your target, and the p2 metadata there will get reused during the build.
Andrew Niefer
Hi Andrew,thx for the great explanation. I think this is now much more clearer to me! Hopefully to others too ;-)
Andreas