# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit desktop optfeature wrapper xdg

DESCRIPTION="Animator, constraint solver and model checker for B, Event-B, CSP, TLA+, Z"
HOMEPAGE="https://prob.hhu.de/"
# The release tarball is an unversioned filename under a versioned path.
SRC_URI="https://stups.hhu-hosting.de/downloads/prob/tcltk/releases/${PV}/ProB.linux64.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/ProB"

LICENSE="EPL-1.0"
SLOT="0"
KEYWORDS="-* ~amd64"

# Prebuilt SICStus-Prolog binaries. The parser jars (lib/*.jar) need a
# JRE and the Tcl/Tk UI needs a system Tcl/Tk. Most native helpers ship
# in lib/ (z3, zmq, bliss, ...) and are resolved relative to the
# executable, but two link system libraries that QA_PREBUILT hides from
# scanning: the bundled cspmf (CSP-M support) needs libgmp and the
# bundled libczmq needs libuuid.
RDEPEND="
	dev-lang/tk
	dev-libs/gmp
	sys-apps/util-linux
	>=virtual/jre-1.8:*
"

RESTRICT="strip"
QA_PREBUILT="opt/prob/*"

src_install() {
	newicon tcl/icons/prob.xpm prob.xpm
	# probcli.sh chmods its own binary under "set -e", which fails for a
	# non-root user against the read-only install, so wrap the binary
	# directly. StartProB.sh only exports TRAILSTKSIZE and execs prob, so
	# wrap it to preserve that. Both binaries resolve their home (lib/,
	# tcl/, stdlib/) from the executable path, so cwd is irrelevant.
	make_wrapper prob /opt/prob/StartProB.sh
	make_wrapper probcli /opt/prob/probcli
	make_desktop_entry prob "ProB" prob "Development;Science"

	# Move rather than copy to avoid duplicating the large vendor tree
	# in the build directory. Step out of ${S} first so we are not
	# renaming the current working directory.
	dodir /opt
	cd "${WORKDIR}" || die
	mv "${S}" "${ED}/opt/prob" || die
	mkdir "${S}" || die # later phases expect ${S} to exist
}

pkg_postinst() {
	xdg_pkg_postinst
	optfeature "graph and state-space visualization" media-gfx/graphviz
}