I've come up with another idea on we can make building and packaging
plugins easier. The general strategy is to make an eclipse plugin that
allows you to build plugins from an archive with a headless eclipse
application. Under the hood, the plugin would simply import the projects
from the archive and then export them as a deployable feature or plugin.
The latter action takes care of building the actual plugins and
Building a feature would look something like this:
java -cp /usr/share/eclipse/startup.jar \
-archive <path/to/archive/with/eclipse/projects> \
-exportDir <path/to/export/directory> \
-featuree <feature to build>
plugins would still have to modify their releng scripts to
tar/zip the source after it has been checked out of cvs and provide that
source along with the binaries. Plugins that don't use the releng
process (ie most independently developed plugins on sourceforge and
such) can simply export the projects to a zip or tar archive from within
eclipse or tar/zip the sources that have been checked out of their cvs
Some advantages to this solution are:
(1) we would be able to easily build plugins that don't use the eclipse
releng process easily
(2) we would be able to build plugins from eclipse.org
and 'joe open
source developer' in a consistent manner
(3) it provides a way for eclipse.org
plugins to release source
archives which frees eclipse packagers from doing this task.
I have a working proof-of-concept plugin in my svn repo:
There are a tonne of problems with this implementation:
* Most of the code in the plugin has been ripped directly out of
eclipse. It would be nice if this application became part of eclipse or
the relevant parts of eclipse were exported properly.
* There is currently no output when the plugins are building, so you
can't really tell if something went wrong or not.
* There is no error handling at all.
Before I proceed, I'd like to get comments from the Fedora and Debian
Eclipse communities. If people like this method, then I will get
comments from the appropriate Eclipse developers and hopefully resolve
some the issues with the current implementation.