# Contributor: Celeste <cielesti@protonmail.com>
# Maintainer: Celeste <cielesti@protonmail.com>
pkgname=glirc
pkgver=2.41
pkgrel=0
pkgdesc="Console IRC client written in Haskell"
url="https://github.com/glguy/irc-core"
arch="aarch64 x86_64" # ghc
license="ISC"
makedepends="
	cabal
	ghc
	ncurses-dev
	openssl-dev
	"
subpackages="$pkgname-doc"
_hsopenssl=7c90fc32bd2539b0de0280e686b9836f301e39aa
source="https://hackage.haskell.org/package/glirc-$pkgver/glirc-$pkgver.tar.gz
	https://github.com/glguy/HsOpenSSL/archive/$_hsopenssl/HsOpenSSL-$_hsopenssl.tar.gz
	cabal.project.freeze
	"

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

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/}"
	}

	[ -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() {
	cp -r "$srcdir"/HsOpenSSL-$_hsopenssl "$builddir"/HsOpenSSL

	default_prepare

	cat > "$builddir"/cabal.project <<-'END'
		packages: glirc.cabal HsOpenSSL/HsOpenSSL.cabal
	END

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

build() {
	cabal v2-update
	cabal v2-build glirc:exes \
		--jobs=${JOBS:-1} \
		--prefix=/usr \
		--docdir=/usr/share/doc/$pkgname \
		--sysconfdir=/etc \
		--ghc-options="-optc=-Wno-incompatible-pointer-types"
	# FIXME: errors are related to code generated by Haskell:
	# https://github.com/haskell-cryptography/HsOpenSSL/issues/88
}

check() {
	cabal test
}

package() {
	install -Dvm755 "$(cabal list-bin $pkgname)" -t "$pkgdir"/usr/bin/
	install -Dvm644 $pkgname.1 -t "$pkgdir"/usr/share/man/man1/
	install -Dvm644 README.md -t "$pkgdir"/usr/share/doc/$pkgname/
	install -Dvm644 LICENSE -t "$pkgdir"/usr/share/licenses/$pkgname/
}

sha512sums="
9a5655a84ea79364035e6f7c68091d92ee968636b3ccd3461c673c1eedac3ef02e544e9cde88d9ea8adc660fe7cbdd807d0ddf8d3e1c0f5ce82b3dd41bf3a4d6  glirc-2.41.tar.gz
435c4e3f8d5f73eb2a1d6cb25352dea31d19f8881e5625e12a96a4258de64a8d40caf4d3a79084c2319ffdeb482ea82f0c7ca1137d353bdc258665626723dbd9  HsOpenSSL-7c90fc32bd2539b0de0280e686b9836f301e39aa.tar.gz
1fbd9baa539334941f344ee954bad0ecc67b0aa22d77a24494eca934a0f46380838594d6d3e700f6e5572cbf7452662edeb7dda85a586a13a8c37416743a165d  cabal.project.freeze
"