# Contributor: gay <gay@disroot.org>
# Maintainer: Celeste <cielesti@protonmail.com>
maintainer="Celeste <cielesti@protonmail.com>"
pkgname=darcs
pkgver=2.18.5
pkgrel=0
pkgdesc="Patch-based revision control system"
url="https://darcs.net/"
arch="aarch64 x86_64" # limited by ghc
license="GPL-2.0-or-later"
makedepends="cabal ghc curl-dev ncurses-dev zlib-dev"
#checkdepends="diffutils grep lighttpd musl-locales"
options="!check" # tests relying on presence of shell utils fail without giving detailed log
subpackages="$pkgname-doc"
source="https://hackage.haskell.org/package/darcs-$pkgver/darcs-$pkgver.tar.gz
	cabal.project.freeze
	"

# Directory where cabal files are stored.
export CABAL_DIR="${CABAL_DIR:-"$srcdir/dist"}"

cabal_update() {
	local repo="hackage.haskell.org"

	# Default config uses HTTP, change it to HTTPS.
	[ -f "$CABAL_DIR"/config ] || {
		cabal user-config init
		cabal user-config update -a \
			"repository $repo {url: https://$repo/}"
	}

	cd "$startdir"
	[ -d "$builddir" ] || abuild unpack
	msg "Freezing $pkgname dependencies"

	# Resolve deps and generate fresh cabal.project.freeze with version constraints.
	(
		cd "$builddir" || {
			error 'Is $builddir set correctly?'
			return 1
		}
		cabal v2-update
		cabal v2-freeze --shadow-installed-packages

		mv -v cabal.project.freeze "$startdir"/
	)

	if ! abuild checksum; then
		die "Failed to update checksum, run 'abuild checksum' manually"
	fi
}

prepare() {
	default_prepare

	ln -svf "$srcdir"/cabal.project.freeze "$builddir"/
}

build() {
	cabal v2-update
	cabal v2-build darcs:exes \
		--jobs=${JOBS:-1} \
		--prefix=/usr \
		--docdir=/usr/share/doc/$pkgname \
		--sysconfdir=/etc
}

check() {
	cabal test
}

package() {
	cd dist-newstyle/build/*-linux/ghc-*/$pkgname-$pkgver/build/$pkgname
	install -Dm755 $pkgname "$pkgdir"/usr/bin/$pkgname
	install -Dm644 $pkgname.1 "$pkgdir"/usr/share/man/man1/$pkgname.1
}

sha512sums="
858d134e0ad4af1b4adeb4dd8250a34b12358de5993c34ee33c9ebbbe85f5b7bf49e219da7f0cdd254601095c4c70f41430871c2dd7508d5f02f1b141ff1ad4d  darcs-2.18.5.tar.gz
79fc2487eb3e5cbe236a43825b28e1bc759db53a6df550be51f66324077c37640d51d1477ae6b344468d08dfe2ec8ecb19022711324667eaf072a7a1beed0483  cabal.project.freeze
"
