Current Gump is a bit difficult for most people to develop: one needs to know java, XSLT and shell scripting. So Sam proposed to write a new implementation of the same basic idea, this time using Python. Sam's original random thoughts on this are at
http://marc.theaimsgroup.com/?l=alexandria-dev&m=105024330711316&w=2
ensuing discussion is interesting
in development inside the gump CVS:
http://cvs.apache.org/viewcvs.cgi/gump/python/
current output:
http://lsd.student.utwente.nl/gump/
Gump has two primary usage interfaces:
Key point is that where most of the action is at the moment is in gumpview.
SET PYTHONPATH=C:\gump\python CD /d C:\gump\python python gump\gui\view.py -w ..\myworkspace.xml cd /gump/python export PYTHONPATH=`pwd` python gump/gui/view.py -w ../myworkspace.xml |
Unless optimized (a switch not currently exposed) each time you run it, it takes time to download all the external project definitions. Subsequent runs load in seconds.
If you select a project, you can walk the project dependencies in both directions, see what prereqs aren't installed, see the actual classpath and properties used in the ant builds, and see what jars a project produces. One pane initially shows the fully expanded XML project definition (implicit dependencies added, properties resolved, etc).
You actually can run a build from this tool. A typical scenario is to select the project that you are interested in, check the prereqs and dependencies tabs. If a dependency failed, you can click on it to go to that project. Press the 'run' icon to build it. If it succeeds, press the 'back' button to return to the project you started with and repeat.
More detailed information on what is being done can be found in the console window which you can access by pressing the console icon.
SET PYTHONPATH=C:\gump\python CD /d C:\gump\python python gump\build.py -w ..\myworkspace.xml all cd /gump/python export PYTHONPATH=`pwd` python gump/build.py -w ../myworkspace.xml all |
Note: There are similar tools w/ similar command line arguments:
Note: The command line arguments accept a regular expression that resolves over project names NOT module names. "all" is converted to the regular expression "*". This is a new feature in Python Gump, and a mild divergence from traditional gump usage. When (say) updating a "list of modules" the utilities calculate the modules containing the requests projects, and hence translates for the user.
SET PYTHONPATH=C:\gump\python CD /d C:\gump\python python gump\integrate.py -w ..\myworkspace.xml all cd /gump/python export PYTHONPATH=`pwd` python gump/integrate.py -w ../myworkspace.xml krysalis-* |
This tool is intended for use from cron, or similar scheduling software. It does:
See: http://lsd.student.utwente.nl/gump/
One of the more elegant aspects of this development is the approach of turning SAX events into an attributed object model, and vice verse. The 'target' classes are self-describing (containing the schema information for things like "repeating sub-elements ought be created using a list of class X", and so on.
For more details see gump/model/*.py and the "engine code" in gump/util/xmlutils.py
A "parallel" tree of "associated context information" such as:
GumpContext: ----> Workspace Contains N of "WorkItem" (e.g. launched Forrest) Contains N of: ModuleContext: -----> Module Contains N of "WorkItem" (e.g. launched cvs to update...) Contains N of : ProjectContext -----> Project Contains N of "WorkItem" (e.g. did a sync, did a "build") |
For more details see gump/context.py
NOTE: The attempt here is to NOT polute the object model with runtime information.
A simple DBM database of statistics (per project name) is kept containing:
For more details see gump/statistics.py
The context tree above, plus statistics, is serialized to a set of xdocs
Tabs: "Main" – the build output grouped by modules, "Stats" – generated statistics, "XRef" – cross reference information. This is a work in progress, and only the first two are attempted.
NOTE: The site.xml/book.xml and skin information are not yet provided.
For more details see gump/document.py
The context tree above, plus statistics, is serialized to an RSS|Atom feeds.
For more details see gump/syndicate/rss|atom.py
Here's a list of cool things-to-do:
rpm -i gumpy-0.3.5.rpm gumpy install-service gumpy build-all --result-email-to=gump@jakarta.apache.org gumpy clean |
None of the existing gump developers are python experts; but it is turning out to be a neat tool. Interesting links: