# Maintainer: Felix Yan <felixonmars@archlinux.org>
# Contributor: Arch Haskell Team <arch-haskell@haskell.org>

pkgname=darcs
pkgver=2.16.4
pkgrel=57
pkgdesc="A distributed, interactive, smart revision control system"
url="http://darcs.net"
license=("GPL")
arch=('x86_64')
depends=('curl' 'ghc-libs' 'haskell-async' 'haskell-attoparsec' 'haskell-base16-bytestring'
         'haskell-conduit' 'haskell-constraints' 'haskell-cryptonite' 'haskell-data-ordlist'
         'haskell-fgl' 'haskell-hashable' 'haskell-html' 'haskell-http-conduit' 'haskell-http-types'
         'haskell-knob' 'haskell-memory' 'haskell-mmap' 'haskell-network' 'haskell-network-uri'
         'haskell-old-time' 'haskell-regex-applicative' 'haskell-regex-compat-tdfa'
         'haskell-tar' 'haskell-temporary' 'haskell-unix-compat' 'haskell-utf8-string'
         'haskell-vector' 'haskell-zip-archive' 'haskell-zlib')
makedepends=('ghc' 'uusi' 'haskell-cmdargs' 'haskell-findbin' 'haskell-hunit' 'haskell-leancheck'
             'haskell-quickcheck' 'haskell-test-framework' 'haskell-test-framework-hunit'
             'haskell-test-framework-leancheck' 'haskell-test-framework-quickcheck2'
             # Added for their bundled shelly
             'haskell-exceptions' 'haskell-monad-control' 'haskell-system-filepath'
             'haskell-system-fileio' 'haskell-transformers-base')
checkdepends=('bc' 'time')
source=("https://hackage.haskell.org/packages/archive/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.gz")
sha512sums=('0f9a924d68416b660b86fd076d4f47915aba0e4a58bd92609e0f05f45913d6251109f3c477e20e0a517ca5fd35735b638690a8a0f7010a52e324c5a21a540a2a')

prepare() {
    cd $pkgname-$pkgver
    sed -e 's/^ghc /ghc -dynamic /' \
        -e 's/ ghc / ghc -dynamic /' \
        -i tests/*.sh tests/lib
    uusi $pkgname.cabal
    sed -i 's/canonizeSplit/(\\x y -> canonizeSplit x y)/' src/Darcs/UI/SelectChanges.hs
}

build() {
    cd $pkgname-$pkgver

    runhaskell Setup configure -O --enable-shared --enable-executable-dynamic --disable-library-vanilla \
        --prefix=/usr --docdir="/usr/share/doc/${pkgname}" --enable-tests \
        --dynlibdir=/usr/lib --libsubdir=\$compiler/site-local/\$pkgid --ghc-option=-fllvm \
        -fcurl -fpkgconfig -f-static -fterminfo -fthreaded -fexecutable \
        -f-rts -foptimize -f-warn-as-error -f-libiconv
    LD_LIBRARY_PATH="$srcdir"/$pkgname-$pkgver/dist/build runhaskell Setup build $MAKEFLAGS
    runhaskell Setup register --gen-script
    runhaskell Setup unregister --gen-script
    sed -i -r -e "s|ghc-pkg.*update[^ ]* |&'--force' |" register.sh
    sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
}

check() {
    cd $pkgname-$pkgver
    runhaskell Setup test --show-details=direct
}

package() {
    cd $pkgname-$pkgver

    install -D -m744 register.sh   "${pkgdir}/usr/share/haskell/register/${pkgname}.sh"
    install -D -m744 unregister.sh "${pkgdir}/usr/share/haskell/unregister/${pkgname}.sh"
    runhaskell Setup copy --destdir="${pkgdir}"
    rm -f "$pkgdir"/usr/share/doc/$pkgname/LICENSE
    chmod 644 "${pkgdir}/usr/share/man/man1/darcs.1"

    install -Dm644 contrib/darcs_completion "${pkgdir}/usr/share/bash-completion/completions/darcs"
    install -Dm644 contrib/_darcs.zsh "${pkgdir}/usr/share/zsh/site-functions/_darcs"
}
