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
trunk310: contains the instructions for packages that intimately
depend on O'Caml 3.10, e.g. because they patch the O'Caml sources
trunk311: contains the instructions for packages that intimately
depend on O'Caml 3.11, e.g. because they patch the O'Caml sources
pack: contains release information, discussed below.
And usually a few more (ignore them).
Below trunk, trunk310, and trunk311 you can find the same directory structure as below <base>/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 trunk310
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 CVS users: svn works much the same way, but there are some small differences: "svn add" is recursive by default. "svn add" does not talk to the server at all. "svn commit" does this, and you also need to commit directories as such.
If you have added too much files, use "svn rm" to remove them individually.
For more documentation about svn, see the excellent Subversion Book at
http://subversion.tigris.org
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.)
To release your package, just add a line for it.
Currently, three of the "release.<ID>.map" files are in use:
- release.3.10.map is the end-user release basing on O'Caml 3.10, i.e.
what people get when they just install GODI
- release.3.11.map is the same for O'Caml 3.11
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.
In general, you can force to use a certain "release.<ID>.map" by setting the variable GODI_SECTION to <ID> (in godi.conf).
Please add only files to release.3.10map if you have tested them with O'Caml 3.10, and only to release.3.11.map if you have tested them with O'Caml 3.11. There is no policy that one has to do releases for both O'Caml versions, 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 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.
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