# Contributor: Steeve Chailloux # Contributor: Sören Tempel # Contributor: Mitch Tishmack # Maintainer: Sören Tempel pkgname=cabal pkgver=3.10.3.0 pkgrel=0 pkgdesc="The Haskell Cabal" url="https://haskell.org/cabal" arch="aarch64 x86_64" # Limited by GHC license="BSD-3-Clause" depends="ghc gmp zlib curl" makedepends="ghc>=9.4.6 gmp-dev libffi-dev zlib-dev cabal-bootstrap" options="net !check" # TODO: enable tests subpackages="$pkgname-doc" source="https://hackage.haskell.org/package/cabal-install-$pkgver/cabal-install-$pkgver.tar.gz cabal.project.freeze" builddir="$srcdir/cabal-install-$pkgver" # We currently don't package Haskell dependencies in aports. As such, # building cabal requires a pre-existing cabal version to download all # dependencies of the cabal package itself. Presently, this is achieved # through the separate cabal-stage0 package which bootstraps cabal # from source using a provided Python script. From that point onward, # we can use the previous version of cabal to compile cabal. # # For this reason, both community/cabal-stage0 and community/cabal # provide the virtual cabal-bootstrap package but the former has the # lower priority. # # See also https://lists.alpinelinux.org/~alpine/devel/%3C33KG0XO61I4IL.2Z7RTAZ5J3SY6%408pit.net%3E provides="cabal-bootstrap" provider_priority=100 # highest # Directory were cabal files are stored. _cabal_home="$srcdir/dist" cabal_update() { cd $builddir # Build a freeze file to make the build reproducible. # This freeze file is stored in $source and thus tracked in Git. HOME="$_cabal_home" cabal v2-update ( cd "$builddir" HOME="$_cabal_home" cabal v2-freeze \ --shadow-installed-packages mv cabal.project.freeze "$startdir/" ) } prepare() { default_prepare ln -sf "$srcdir/cabal.project.freeze" \ "$builddir/cabal.project.freeze" } build() { # ghc version path export PATH="$PATH:/usr/lib/llvm15/bin" HOME="$_cabal_home" cabal v2-update HOME="$_cabal_home" cabal v2-build cabal-install:exes \ --jobs=${JOBS:-1} \ --prefix=/usr \ --docdir=/usr/share/doc/$pkgname \ --sysconfdir=/etc } package() { # With v2- cabal no longer wants us to separate v2-build and # v2-install, however, we don't want to build everything in a # fakeroot. We work around this by copying binaries build in the # previous step manually. # # See https://github.com/haskell/cabal/issues/6919#issuecomment-761563498 HOME="$_cabal_home" cabal list-bin cabal-install:exes | \ xargs install -Dm755 -t "$pkgdir"/usr/bin mkdir -p "$pkgdir"/usr/share/man/man1 HOME="$_cabal_home" cabal man --raw \ > "$pkgdir"/usr/share/man/man1/cabal.1 install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE" } sha512sums=" e004dfc05903316c3264aa7a056d287e25f0589fa9adea2e93114e1750f3ae9774177b5d274c78fee37b6ba4bd5c03455d72437258b168607c2a81856ef06ddb cabal-install-3.10.3.0.tar.gz 0b5d4302eb326376385636e17dd42ea592f6b9395c2df7c9b14cca81b41d24629a1b6f4c65fe674b8cd072c9ee164776e88fb520c19da14f853d5d5113847775 cabal.project.freeze "