ColdFire SVN

As you may have heard Ray Camden and Rob Gonda recently made some updates to RIAForge which allow project owners to share SVN access. After this update Ray was kind enough to give me access to the ColdFire repository and since then I've done some reorganizing. So, what will you find in the ColdFire SVN repo?

First, you will no longer find built/packaged versions of ColdFire in the repository. Instead we now have the following layout:

/branches /1.0 /1.1 /tags /1.000 /1.001 /1.002 /1.003 /trunk

Trunk

The trunk is the mainline of development and has the latest stable code. It may contain new features not yet "officially" released, but it should build and run. (That is the goal at least.) Its source tree looks like this:

/trunk
    /src
        /coldfusion
        /docs
        /firefox

/trunk/src/coldfusion

This directory has the coldfire.cfm debugging template.

/trunk/src/docs

This folder has all the documentation. Currently there are multiple formats of the same document in the source tree but I hope to change this in the future so that the build process generates the different formats from one source file.

/trunk/src/firefox

This directory has the extension source code. For more on what is in this directory check out Building an Extension over at the Mozilla Developer Center.

Branches

Currently there are two branches. The 1.0 branch works with Firebug 1.0 releases. This is basically my working branch and should not be considered stable.

The 1.1 branch is for ColdFire 1.1, which will eventually work with Firebug 1.1 and Firefox 3. As both Firefox 3 and Firebug 1.1 are in beta, this will be a beta branch for the time being. (Right now there seems to be an issue with ColdFire's XPCOM component and Firebox 3 Beta 2. I'm hoping things will work in Firefox 3 Beta 3, which should be released sometime this week.)

Tags

These are tags for production and beta releases. Right now we have the four "production" releases tagged.

Building ColdFire

As I mentioned, the SVN repo no longer contains built/packaged versions of ColdFire. If you want the ColdFire Firefox extension and its corresponding ColdFusion debugging template you either have to download them from the RIAForge site or build them yourself. Fortunately each branch has an Ant build file which you can use to build and package the extension. Below are a few notes on the build process:

  • Running the default make-dist-zip target will create:
    • a build directory which has the coldfusion and firefox source trees with tokens replaced and some intermediate packaging done
    • a dist directory which contains the final installable coldfire_vX.XXX.xpi and coldfire.cfm as well as the documentation
    • a zip directory under the dist directory which has the dist contents packaged in a zip file.
  • Some of the source files use the token @@Version@@ as a placeholder. This token is replaced by the version number defined in the install.rdf during the build.
  • One step of the build process involves compiling the interface definition for ColdFire's XPCOM object into a binary format using the Gecko SDK. Most people will probably not want to deal with this so I've included the compiled interface definition in the source tree (/src/firefox/components/nsIColdFire.xpt). By default the build file will simply copy this file into the final distribution. If, however, you have the Gecko SDK and supporting .dlls installed you can have the build file compile the interface definition by un-commenting the geckosdk property and setting its location to the location of you Gecko SDK installation.

Well, I hope this will help if you decide to go poking around in the ColdFire source code. (And I hope you do!) One final note: While I've maintained a few CVS and Perforce repositories in the past I'm new to curating SVN, so if you have any question or suggestions please let me know.

Comments
Rob Gonda's Gravatar Great job explaining trunk, branches, and tags. The repo also has good examples of Firefox extension building and ANT scripts... love it.

My only suggestion is using external property files with ANT, thus separating logic from config...

Cheers
# Posted By Rob Gonda | 2/12/08 4:59 PM
Nathan Mische's Gravatar Thanks Rob. I've taken your suggestion regarding property files. The trunk and 1.0 branches now use a pair of property files (branch.properties and local.properties) to set key values for the build.
# Posted By Nathan Mische | 3/6/08 1:48 PM
BlogCFC was created by Raymond Camden. This blog is running version 5.8.001.