OCaml package guidelines

From ArchWiki
Revision as of 07:57, 2 January 2011 by Lavandero (talk | contribs) (OCaml PKGBUILD Example: no GPL bias)
Jump to: navigation, search

Package Naming

For libraries, use ocaml-modulename. For applications, use the program name. In either case, the pkgname should be entirely lowercase.

OCaml Library Locations

All OCaml libraries should be installed via ocaml-findlib, ocaml-findlib maintains a means whereby ocaml packages are more clearly tracked. The only distinction for ocaml-findlib is that it requires that a META file be created. Most OCaml packages already have a META file, for those which do not provide an upstream META file chances are the file can be obtained from the Debian/Ubuntu or Fedora package.

The OCaml libraries should all be installed under /usr/lib/ocaml, there has been some confusion about where to install OCaml libraries, and many OCaml libraries have been installed under /usr/lib/ocaml/site-lib, this practice can break a number of OCaml program builds and has resulted in a schism in OCaml package development. Maintaining a central location for all OCaml packages will aleviate a number of problems with the continued development of ArchLinux OCaml support.

In most packages the OCaml findlib directory will need to be specified, this should never be specified statically, but should use the ocaml-findlib destdir variable. Generally this is set in this manner: OCAMLFIND_DESTDIR=${pkgdir}/$(ocamlfind printconf destdir)


If bytecode is produced make sure to include "options=('!strip')". Otherwise the packaging process will damage the OCaml bytecode.

OCaml PKGBUILD Example

# Contributor: Your Name <youremail@domain.com>

pkgname=ocaml-<package name>
arch=('i686' 'x86_64')
pkgdesc="An OCaml Package"
makedepends=('ocaml' 'ocaml-findlib')

build() {
  cd "${srcdir}/${pkgname}-${pkgver}"
  OCAMLFIND_DESTDIR="${pkgdir}$(ocamlfind printconf destdir)"
  ./configure --prefix=/usr
  env DESTDIR=${pkgdir} \
    make install


Keep in mind that many OCaml Packages will often need extra parameters passed to make and make install.