# Contributor: Antoine Martin (ayakael) <dev@ayakael.net>
# Maintainer: Antoine Martin (ayakael) <dev@ayakael.net>
pkgname=git-annex
pkgver=10.20250630
pkgrel=0
pkgdesc="Manage files with git, without checking their contents into git"
url="http://git-annex.branchable.com"
arch="x86_64 aarch64" # limited by ghc
license="AGPL-3.0-or-later"
options="net"
depends="
	curl
	git
	rsync
	"
makedepends="
	alex
	cabal
	dbus-dev
	file-dev
	ghc
	gmp-dev
	gnutls-dev
	happy
	libffi-dev
	libgsasl-dev
	libxml2-dev
	ncurses-dev
	zlib-dev
	"
source="
	https://git.joeyh.name/index.cgi/git-annex.git/snapshot/git-annex-$pkgver.tar.gz
	https://ayakael.net/api/packages/mirrors/generic/git-annex/$pkgver/git-annex-$pkgver-v322.cabal
	fix-makefile.patch
	ghc-9.8.patch
	wai-extra-downgrade-3.1.16.patch
	git-annex.desktop
	git-annex-autostart.desktop
	"
subpackages="$pkgname-doc $pkgname-bash-completion $pkgname-fish-completion $pkgname-zsh-completion"

_feature_flags="+assistant +webapp +pairing +production +torrentparser +magicmime +benchmark -debuglocks +dbus +networkbsd +gitlfs +httpclientrestricted"

# Cabal seems to be built without sandbox, moving the cabal-dir into src
export CABAL_DIR="$srcdir/.cabal"

cabal_update() {
	cd "$builddir"
	cabal update
	(
		cabal v2-freeze \
			--strong-flags \
			--shadow-installed-packages \
			--flags="$_feature_flags"

		mv cabal.project.freeze "$startdir/git-annex-$pkgver.config"
	)
}

prepare() {
	cp -L "$srcdir"/git-annex-*.cabal "$builddir"/cabal.project.freeze
	default_prepare
}

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

	# Avoid invoking ghc(1) in install() function.
 	make mans

	# Prepare executable for the tests and make install.
	local executable="$(cabal list-bin git-annex:exes)"
	cp "$executable" .
	ln -s git-annex git-annex-shell
	ln -s git-annex git-remote-annex
}

check() {
	# add dup: passes locally and on aarch64, but fails in ci for x86_64
	"$builddir"/git-annex test \
		-p '!/add dup/'
}

package() {
	make DESTDIR="$pkgdir" install

	install -Dm644 "$srcdir"/git-annex.desktop "$pkgdir"/usr/share/applications/git-annex.desktop
	install -Dm644 "$srcdir"/git-annex-autostart.desktop "$pkgdir"/etc/xdg/autostart/git-annex.desktop
	install -Dm644 "$builddir"/doc/logo.svg "$pkgdir"/usr/share/icons/hicolor/scalable/apps/git-annex.svg
	install -Dm644 "$builddir"/doc/logo_16x16.png  "$pkgdir"/usr/share/icons/hicolor/16x16/apps/git-annex.png
}

sha512sums="
044c48f73922d530f5beb0ff9fbfdd7d62d1b45659ffecc5c94e834b2c6d674cc1e554f5c8ed8393284b60a2215758846859f3b95e388db318cdad93e6075415  git-annex-10.20250630.tar.gz
d20d92c26f4db92b20f2182f94c0cc4ed3ec2c2ee74ea48ba30f175d84f4fa0912698b83ddd316c6ee14126affb52a8b98cf574bc519f473b5004ebdf21d6f0c  git-annex-10.20250630-v322.cabal
0ec1e99dd4abba94dfa0ab707731dca0de6e4fe73e3ecb10db8dec315db1dabfcb978f14c4d17fdfa66d5a89515e9dc41e1daf4206cb94c3731e9c24a95e80f5  fix-makefile.patch
05b2f7248ebe3244e7a89a889bc6b6acf91114aa72b8b8e63c742483f7bd94e2ba8b16e917a091954893ba57a6ab0b0a9ccc23c219f2fd626d78d06b9fa106f1  ghc-9.8.patch
81b67fc0c4eb44bf045ef472ccbb41efbf3fae2eb983ccf2a9776cb97862d09f507e0c67030371345107f63b57b99481ae52f9b88d6a52fd6518cd05f54498b0  wai-extra-downgrade-3.1.16.patch
1c16197c00a6fd8dcdc3e1ddc8ac3b874301d435b3cde68cb28b3122443da2c511ca05d4ac23fe20ae16a3544e4b3dae154aece49164b28989aeafe473903919  git-annex.desktop
fc1326dcadffdc70d8a2d19b9f4892e0ee58ca46cac30a8553750504402d695602c466aae38bf6c04b9f63a212fc6eb58096176c7cdb33920fa3c8e610aa112c  git-annex-autostart.desktop
"
