# Maintainer: Konstantin Gizdov # Maintainer: Bruno Pagani # Contributor: Jakob Gahde pkgname=dune pkgver=3.0.3 pkgrel=2 pkgdesc="A composable build system for OCaml (formerly jbuilder)" arch=(x86_64) url="https://github.com/ocaml/dune" license=(Apache) groups=(custom) depends=('glibc' 'ocaml>=4.13.1' 'ocaml-csexp' 'ocaml-pp') source=("${url}/archive/${pkgver}/${pkgname}-${pkgver}.tar.gz") sha512sums=('839e942bcf8189763d0d9b01614333bb2f036bce68c82959e51d2e9145b57067cb862b66781912391c1a0f531b8dddf2ffeafcee71c626169a437fe40feba155') _dune_release_pkgs=('dune' 'dune-action-plugin' 'dune-build-info' 'dune-configurator' 'dune-glob' 'dune-private-libs' 'dune-site' 'dyn' 'stdune' 'ordering' 'xdg' 'fiber') prepare () { cd "${srcdir}/${pkgname}-${pkgver}" ./configure --libdir /usr/lib/ocaml } build() { cd "${srcdir}/${pkgname}-${pkgver}" make dune.exe # this runs `ocaml bootstrap.ml`, but keeps upstream's choice # dune build needs a comma separated list of packages local dune_release_pkgs='dummy' for _pkg in "${_dune_release_pkgs[@]}"; do dune_release_pkgs+=",${_pkg}" done dune_release_pkgs="${dune_release_pkgs#dummy,}" echo "Building packages: ${dune_release_pkgs}" ./dune.exe build -p "${dune_release_pkgs}" --profile dune-bootstrap } # Tests require a bunch of (currently) unpackaged dependencies # check() { # cd "${srcdir}/${pkgname}-${pkgver}" # make test # } package() { cd "${srcdir}/${pkgname}-${pkgver}" # we need to install packages one by one for _pkg in "${_dune_release_pkgs[@]}"; do ./dune.exe install "${_pkg}" --destdir="${pkgdir}" --prefix="/usr" --libdir="$(ocamlfind printconf destdir)" done # Fix doc and man install install -d "${pkgdir}"/usr/share mv "${pkgdir}"/usr/{doc,share/} mv "${pkgdir}"/usr/{man,share/} install -dm755 "${pkgdir}/usr/share/licenses/${pkgname}" ln -s /usr/share/doc/pp/LICENSE.md "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" }