Plasma GitLab Archive
Projects Blog Knowledge

GODI Project:
Home 
Highlights 
Screenshots 
Get GODI 
Docs 
Mailing List 
Resources 
Packages 
Workgroups 
OASIS 
Why Ocaml? 
GODI is discontinued. This is the archived content of the former site godi.camlcity.org.

How to check-in and release GODI packages

Here is short description of the package system:

The GODI packages have usually two parts:
  • The build instructions (with DESCR, Makefile, PLIST etc.)
  • The tarball with the original sources

The build instructions are stored in the Subversion repository at godirepo.camlcity.org. The source tarball should be primarily provided by the original author of the package, but a copy is also stored by the GODI server (and its mirrors). This is normally handled automatically, see below.

So the first question is: how to upload the build instructions? You need a Subversion client for this (>= 1.0.0, must have SSL-support compiled-in). You can either install the GODI package base-subversion-client, or use a third-party package. Once it is installed, there should be the command "svn".

Now do:

svn checkout https://godirepo.camlcity.org/svn/godi-build

You are asked whether to accept the SSL certificate. Of course, you can do this. Now a lot of files are downloaded, and copied onto your disk, all below the directory godi-build.

You can find the following directories:

  • trunk: contains the build instrucions for packages that are mainly independent of the O'Caml version
  • trunk312: contains the instructions for packages that intimately depend on O'Caml 3.12, e.g. because they patch the O'Caml sources
  • trunk400: contains the instructions for packages that intimately depend on O'Caml 4.00, e.g. because they patch the O'Caml sources
  • pack: contains release information, discussed below.

And usually a few more (ignore them).

Below trunk, trunk312, and trunk400 you can find the same directory structure as below $prefix/build of your GODI installation. This is intentional to ease development, so one can create symlinks from the checked out directories to the GODI build directory for "mk" and "distfiles", and test new packages directly from the checked out directories, i.e.

cd trunk312
ln -s $prefix/build/mk .
ln -s $prefix/build/distfiles .
Before you can continue, you need an account on godirepo.camlcity.org. I send a URL to you where you can enter your wish for username and password.

Now put your new files into the checked-out directories, e.g. under godi-build/trunk/godi/godi-foo.

Add your files to Subversion:

svn add godi-build/trunk/godi/godi-foo
Commit your files:
svn commit godi-build/trunk/godi/godi-foo 
For more documentation about svn, see the excellent Subversion Book at http://svnbook.red-bean.com

When you have done this, your files are checked in, but not yet available for the GODI users. The "Release Tool" is a web application that allows you to release your packages. You can invoke it under
https://godirepo.camlcity.org/godi_admin.

Before you start the release process, have a look at the godi-build/pack directory. It contains several files "release.<ID>.map" where <ID> is an identifier. These files actually control which revisions of the checked-in files are released. They have two columns, on the left the path below godi-build to the package directory godi-foo, on the right a number. For example,

trunk/godi/godi-pcre 122
means that the godi-pcre package under this path is to be released in revision 122. These numbers are printed by "svn commit" and "svn update". (Note that subversion has a single number space for all files in the repository, unlike CVS, where every file has its own number.)

There are two ways of doing a release: The "traditional" method via svn and the web interface, and the API. It is suggested that you do it at least once with the traditional way, because it is more illustrative. The API method is better for advanced users - the release can be done with a single command.

The traditional release method

To release your package, just add a line for it to the release map file.

Currently, three of the "release.<ID>.map" files are in use:

  • release.3.12.map is the end-user release basing on O'Caml 3.12, i.e. what people get when they just install GODI
  • release.4.00.map is the same for O'Caml 4.00. This is probably the file where you should add your package.
  • release.dev.map is the development release. It is used for various development purposes, mostly when major changes of the GODI core are tested
There may also be other, and older maps.

Please add only files to a release map if you have tested them with the corresponding OCaml version. There is no policy that one has to do releases for all O'Caml versions that have release maps. Just do what you can do.

After you have checked-in your changes with "svn commit", go to the web page with the Release Tool at https://godirepo.camlcity.org/godi_admin and follow the steps. When you press the "Finish" button, the following will happen automatically:

  • Your build instructions are archived into build.tgz files, and these files are uploaded to the GODI server
  • The source tarballs are downloaded from their original sites, and uploaded to the GODI server
If anything goes wrong, the error is displayed in the web browser. If you cannot resolve it yourself, do not hesitate to contact me.

When the Release Tool says it is done, the package is available for everybody.

The release API

The release API talks to the HTTP server at godirepo.camlcity.org directly, so you don't need a browser. Also, the release maps are automatically edited, and you don't need to add a release line for your package.

Prerequisites: Before you begin, make sure you have godi-tools version 3.0.34 or newer. Also, you need to build godi-tools with the option GODI_TOOLS_WITH_POWERWTOOL set to "yes". (Otherwise there is no https support in godi_console.)

The release API needs your user name at the GODI server. In godi.conf, set GODI_USER to this name.

The rest is totally easy. Assumed you want to release package "foo" in section 4.00, go to the package directory, and start the release:
$ cd godi-build/trunk/godi/godi-foo
$ godi_make release SECTIONS="4.00"
Some caveats and tips:
  • Be sure all files are checked in before you do this.
  • The variable SECTIONS can contain several section identifiers, separated by spaces.
  • As mentioned, the release map is automatically updated (on the server). This means your local copy is outdated after a release, and you need to "svn update" it to see the change.
  • You will be asked whether to accept the SSL certificate for the https request. If you say "yes", the certificate is saved in $prefix/etc/certificates, and this certificate is automatically trusted from now on.
  • You can request to save your password by setting GODI_STORE_PASSWORDS in godi.conf to "yes". The password is saved in ~/.godi_pw. It is encoded but not encrypted.
  • As of December 2012, the API is a very recent addition, and there may still be errors in it.

Epilogue


In order to get informed about what it going on, it is recommended to subscribe to the GODI mailing list:
https://godirepo.camlcity.org/mailman/listinfo/godi-list

In addition to this, there is also a mailing list for svn commits. This is very interesting as your are immediately informed about the actions of the other GODI developers:
https://godirepo.camlcity.org/mailman/listinfo/godi-commits

Some more links:

- https://godirepo.camlcity.org/svn allows you to interactively browse
  the subversion repository

- https://godirepo.camlcity.org/tracker is the entrance to the bug
  tracking system. As you have an account, you can use all
  functions of this system, including editing bugs.

If there are still any questions or problems, you can ask me for support.

Gerd

This web site is published by Informatikbüro Gerd Stolpmann
Powered by Caml