Addons/Versioning

From J Wiki
Jump to navigation Jump to search
User Guide | Installation | Development | Categories | Git | Build Log

Overview

This document describes the Subversion (SVN) layout, build and install procedures in terms of addons versioning and relationship with the J system and library releases. This is largely a historical document, as addons are currently stored on github.

The current version of any addon is located in trunk under

addons/trunk/category/name

e.g.

addons/trunk/data/sqlite

Also, the current version and any previous versions are in tags under

addons/tags/jXYY/category/name/major.minor

e.g.

addons/tags/j806/data/jd/4.3

The folder layout might be:

addons--tags--------trunk
        +--j806     +--data
           +--data     +--jd
              +--jd         |
                 +--4.2     |addon release
                 +--4.3     |addon release
                 +--4.4 <---+

Using Tags

Tags are used to separate code between J releases and allow for different versions of addons. There are two levels of tags according to the folder layout: J release jXYY tags and addon version major.minor tags.

Regular Development

Code under current development is committed into the trunk. During a build, code is merged from trunk into the current version tag under one or more J release folders, as defined by the manifest.

RELEASE=: 'j806 j807'        NB. J release folder(s)
VERSION=: '4.4'              NB. current addon version

Committing to Tags

Usually only the current version of any addon is changed, but the developer may update any tag folders manually.

Misc Folders

Misc folders should only be updated in trunk. For this, the tag numbers are autogenerated. Which also means that there is only one production tag for misc.

Build System

The build system monitors SVN. As soon as a build event is triggered in one of the tags folders, it picks up the sources from that folder, validates and attempts a build. If the build is successful, archives are created and placed into the distribution folder, updating its catalog.

Build Conventions

  • a build event happens when an addon's manifest is commited and either this tag did not have a build or its build version is greater than in the catalog for this tag
  • if the build fails due to validation or build errors, no distribution is created
  • the build log entry reflects the build status and any validation or build errors
  • the build event from trunk happens only if RELEASE is specified

Installation

User installs addons with installation tool in J system. It presents a list of addons, and for each, the installed version if any, and a dropdown of available versions from the catalog. User selects desired addons and their versions and after confirmation, the archives are downloaded and installed.