# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit desktop optfeature prefix qmake-utils toolchain-funcs xdg

DESCRIPTION="The Linux Crypto Undertaker"
HOMEPAGE="
	https://dyne.org/software/tomb/
	https://github.com/dyne/Tomb
"
SRC_URI="https://files.dyne.org/tomb/releases/Tomb-${PV}.tar.gz"

S="${WORKDIR}/${P^}"

# doc/literate/shocco - MIT
LICENSE="GPL-3 MIT gui? ( GPL-3+ )"
SLOT="0"
KEYWORDS="~amd64"
IUSE="gui tray"

PATCHES=(
	"${FILESDIR}/${P}-gtomb.patch"
	"${FILESDIR}/${P}-qt-tray.patch"
	"${FILESDIR}/${PN}-2.9-respect-ldflags.patch"
)

DEPEND="
	dev-libs/libgcrypt:=
	tray? (
		dev-qt/qtbase:6[gui,network,widgets]
		dev-qt/qtdeclarative:6
	)
"
RDEPEND="
	${DEPEND}
	app-crypt/gnupg
	app-crypt/pinentry
	app-shells/zsh
	sys-fs/cryptsetup
	sys-fs/e2fsprogs[tools]
	gui? ( gnome-extra/zenity )
"
BDEPEND="
	dev-python/markdown
	dev-python/pygments
	sys-devel/gettext
"

src_prepare() {
	default
	hprefixify tomb extras/gtomb
	eprefixify extras/qt-tray/main.cpp
}

src_compile() {
	export CFLAGS LDFLAGS PREFIX="${EPREFIX}/usr"
	tc-export CC

	emake all -C extras/kdf-keys
	emake all -C doc/literate
	if use tray ; then
		pushd extras/qt-tray > /dev/null || die
		eqmake6
		emake all
		popd > /dev/null || die
	fi
}

src_test() {
	# test require sudo, can't be done non interactively
	# emake TEST_OPTS="--verbose --immediate --root="${T}"/tomb/sharness" test
	emake test -C extras/kdf-keys
}

src_install() {
	local -x DESTDIR="${D}"

	default
	emake install -C extras/translations
	emake install -C extras/kdf-keys
	if use gui ; then
		pushd extras/gtomb > /dev/null || die
		dobin gtomb
		newdoc README.md README-gtomb
		popd > /dev/null || die
	fi
	if use tray ; then
		pushd extras/qt-tray > /dev/null || die
		dobin tomb-qt-tray
		doicon pixmaps/tomb_icon.png
		insinto /usr/share/locale/it_IT/LC_MESSAGES
		doins i18n/tomb-qt-tray_it.qm
		popd > /dev/null || die
	fi

	pushd extras/gtk-tray > /dev/null  || die
	doicon monmort.xpm
	newicon --context mimetypes --size 32 monmort.xpm monmort
	newicon --size 32 monmort.xpm dyne-monmort
	popd > /dev/null || die

	pushd extras/desktop > /dev/null || die
	insinto /usr/share/mime/packages
	doins dyne-tomb.xml
	domenu tomb.desktop
	insinto /usr/share/mime-info
	doins tomb.mime
	doins tomb.keys
	insinto /usr/share/application-registry
	doins tomb.applications
	popd > /dev/null || die

	local DOCS=(
		AUTHORS.txt
		ChangeLog.txt
		KNOWN_BUGS.txt
		README.txt
		doc/bertini_thesis.pdf
		doc/HACKING.txt
		doc/KEY_SPECIFICATIONS.txt
		doc/LinuxHDEncSettings.txt
		doc/Luks_on_disk_format.pdf
		doc/New_methods_in_HD_encryption.pdf
		doc/TKS1-draft.pdf
		doc/tomb_manpage.pdf
	)
	einstalldocs
	cd doc/literate || die
	docinto html
	dodoc -r *.html *.css public
}

pkg_postinst() {
	xdg_pkg_postinst
	optfeature "Argon2 KDF" app-crypt/argon2
	optfeature "ACL" sys-apps/acl
	optfeature "privilege escalation to superuser" app-admin/doas app-admin/sudo sys-auth/polkit
	optfeature "fancy dd output" sys-apps/dcfldd
	optfeature "tomb index/search file contents" app-misc/recoll
	optfeature "tomb index/search file names" sys-apps/mlocate sys-apps/plocate
	optfeature "tomb engrave" "media-gfx/qrencode[png]"
	optfeature "tomb slam" sys-process/lsof
}