Docs GODI Archive
Projects Blog Knowledge

GODI Project:
Home 
Highlights 
Screenshots 
Get GODI 
Docs 
Mailing List 
Resources 
Packages 
Workgroups 
OASIS 
Why Ocaml? 

OASIS-DB Import

In the past years, another format for packaging libraries has become popular, OASIS. Essentially, it is just a set of conventions, plus a utility to ease sticking to them. Additionally, there is a public database where everybody can upload packages in OASIS format, called OASIS-DB. GODI supports now an automatic import of the packages from OASIS-DB, and makes it thus very easy to integrate them into a GODI system.

Be aware that the import is still experimental!

Requirements: You need a GODI system that was bootstrapped with Skylift (if not, the commands listed below just fail). In case you don't remember, you can recognize a Skylift system by running godi_console dep 'godi-tools>=3'. If it says "not found" it is too old. Otherwise, the version of godi-tools is printed, and you can go on. Both OCaml-3.12 and 4.00 are supported.

The activation is very easy. After setting GODI up, run these commands:

godi_console rprofile -site http://download.camlcity.org/download/godi-profiles/ -get oasis_4.00
godi_console profile -enable oasis_4.00
godi_console update
This assumes you have an OCaml-4.00 system (if you still have 3.12, use "oasis_3.12" instead). Now the new packages are available. These have an "oasis" prefix and are easy to recognize (e.g. oasis-xstrp4 vs. godi-xstrp4).

Some answers

From where come the OASIS packages? The packages are retrieved from OASIS-DB. Everybody can here upload OASIS packages, and there is no quality check of any kind.

How often are the packages imported from OASIS? We run a nightly job.

The build of an OASIS package does not work. Why? We expect that the packages can be built by a certain sequence of commands. This sequence complies to the OASIS specification. If this does not work, the OASIS package is buggy.

Which sequence? We do:

  • ocaml setup.ml -configure and pass the arguments --prefix, --mandir, --docdir, and --destdir
  • ocaml setup.ml -build
  • ocaml setup.ml -doc
  • ocaml setup.ml -install

The installed package cannot be fully removed. Files are left over. Why? Most likely, the OASIS package ignores the --destdir option we pass at configuration time. This affects normal files like executables, but not libraries. The consequence of this ignorance is that at install time not all files can be properly recorded.

My OASIS package needs lwt, and GODI always prefers godi-lwt over oasis-lwt. Why, and how can I change this? There is the problem that some libraries are provided by both GODI core packages and by OASIS. GODI prefers the GODI packages because we think the quality is better. It is possible, though, to edit the dependency lists. For every OASIS package "foo" you can set a variable OASIS_FOO_DEPENDS_OVERRIDE and override the official dependencies.

After submitting an OASIS package it does no show up after 1-2 days. What are possible reasons? Most likely, we are back in maintenance mode, and the import job did not run. Another possibility is that the package fails the simplest tests (like a parseable _oasis file).

The dependencies do not contain version numbers. Why? Well, this is because we are experimental... Most version information from imported dependencies are deleted for now. We don't want to run into a "dependency hell" at this early time.

Dependencies on tools are missing. Why? This has not yet been developed. Actually, we always only add a dependency on findlib, but that's it.

How are the OASIS flags handled? In OASIS you can enable or disable flags at configuration time. These are converted into configuration options with values "yes" or "no". The emulation of the flags in GODI is almost perfect. (For experts: there is a limitation, though. OASIS expressions archictecture(string), system(string) and ccomp_type(string) are not yet properly supported.)

Can I translate packages from OASIS to GODI on my own computer? Yes. You need the script godi_oasis_import which is installed as part of godi-tools. Also install apps-oasis (needed by the script). The script gets a tarball as input, and writes the GODI package files like Makefile into an output directory.

How do you translate findlib names into package names? This is top-secret. We have a database mapping findlib names to package names. Don't tell anybody.

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