Much ado about scripting, Linux & Eclipse: card subject to change

2010-03-04

Athena: p2 repos w/ associate sites

Want to insert associate update sites into your user's Eclipse when they go to install your features from an update site/zip? With an Athena build this is now a trivial exercise. For example... say you're building a plugin which supports integration with Subclipse or Subversive. In a traditional install from an SDK or runtime zip, you'd unpack into eclipse/, and wonder why the new plugins didn't work. In the new p2 install world, you point Eclipse at the update site or zip, and are told that you cannot install the SVN integration because missing requirements cannot be found. So you hunt down the required sites, add them to Eclipse, and try again; this time you are allowed to install the new features. To improve the ease of use for the end user, Athena now allows you to define associate.sites in your build.properties. If this property is set, URLs will be added into your p2 repo's metadata and Eclipse will automatically add those sites when it scans your zip or site. No more manual copy+paste from documentation needed!

associate.sites=\
http://subclipse.tigris.org/update_1.6.x,\
http://download.eclipse.org/technology/subversive/0.7/update-site/,\
http://community.polarion.com/projects/subversive/download/eclipse/2.0/update-site/
And, of course, you can reuse these sites when resolving dependencies against which to build or test:
repositoryURLs=\
http://download.eclipse.org/releases/galileo/,\
http://download.eclipse.org/athena/repos/eclipse-Update-3.5.2-201002111343.zip,\
http://download.eclipse.org/eclipse/updates/3.5/,\
${associate.sites}

IUsToInstall=org.eclipse.sdk.feature.group+org.eclipse.sdk.ide+\
org.eclipse.team.svn+org.eclipse.team.svn.core+org.eclipse.team.svn.ui+\
org.tigris.subversion.subclipse.core+org.tigris.subversion.subclipse.ui

4 comments:

Miles Parker said...

This is so cool Nick -- something I've been wanting to have working better for a long long time. Question though -- what's the deal with this and internal Eclipse projects? Would it be reasonable to include a third party dependency from update sites in this way? For example, could XText include a link to the Itemis repository? Could AMP include one for our dependency through GEF3D on LWJGL? My guess is that there is some kind of annoying but ultimtily reasonable reason why we couldn't..

nickb said...

Disclaimer: IANAL, TINLA.

That disclaimer out of the way, I don't see why you can't publish an update site repo/zip with links to 3rd party sites simply in order to facilitate your end user being able to install your code w/o having to read docs and hunt for other people's update site URLs.

Before your user installs anything, they are faced w/ accepting licenses - be they EPL, GPL, LGPL, or my personal favourite, WTFPL. So all you've done is provide them an easier way to get that list of licenses. You have not sneakily forced anything to be installed w/o their explicit acceptance.

But of course, YMMV with your legal department.

Mat Booth said...

Thanks for the tip, but I am having some trouble getting it working for me.

My plug-in has a dependency on the man-page viewer plug-in, so I added the following line to my build.properties:

associate.sites=http://download.eclipse.org/technology/linuxtools/updates-nightly/

Now, that causes the repository references to be added to the end of the content.xml file as expected, but when I try to install my plug-in from the local update archive that the build generates, it still cannot find the dependency.

What am I doing wrong?

nickb said...

@mbooth: Is the site already listed, but disabled?