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

EAPI=8

inherit toolchain-funcs

MY_TAG="99675884a93c09125dbfbef0ca47959626c81545c132e247e67a08bd12ac7256"

DESCRIPTION="Simple, high-reliability, source control management, and more"
HOMEPAGE="https://www.fossil-scm.org/home"

SRC_URI="https://fossil-scm.org/home/tarball/${MY_TAG}/fossil-src-${PV}.tar.gz"

S="${WORKDIR}/fossil-src-${PV}"
LICENSE="BSD-2"
SLOT="0"
KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
IUSE="debug fusefs json system-sqlite +ssl static tcl tcl-stubs
	  tcl-private-stubs test th1-docs th1-hooks"

# These tests are currently failing:
#   settings-valid-local-anon-cookie-lifespan
#   settings-valid-local-regexp-limit
#   settings-valid-local-robot-exception
#   settings-valid-global-anon-cookie-lifespan
#   settings-valid-global-regexp-limit
#   settings-valid-global-robot-exception
#
# They can be ignored[1] and should be removed with 2.28.
#
# [1]: https://fossil-scm.org/forum/forumpost/8ffbc6631bb043f1
RESTRICT="test"

# Please check sqlite minimum version on every release. This can be done with:
#     ./configure --print-minimum-sqlite-version
RDEPEND="
	virtual/zlib:=
	|| (
		sys-libs/readline:0
		dev-libs/libedit
	)
	system-sqlite? ( >=dev-db/sqlite-3.49.0:3 )
	ssl? ( dev-libs/openssl:0= )
	tcl? ( dev-lang/tcl:0= )
"

# Either tcl or jimtcl need to be present to build Fossil (Bug #675778)
DEPEND="${RDEPEND}
	static? (
		virtual/zlib[static-libs]
		ssl? ( dev-libs/openssl[static-libs] )
		system-sqlite? ( dev-db/sqlite[static-libs] )
	)
	!tcl? (
		|| (
			dev-lang/tcl:*
			dev-lang/jimtcl:*
		)
	)
"

BDEPEND="
	test? (
		dev-lang/tcl
		tcl? ( dev-db/sqlite[tcl] )
		!riscv? ( json? ( dev-tcltk/tcllib ) )
	)
"

PATCHES=(
	# fossil-2.10-check-lib64-for-tcl.patch: Bug 690828
	"${FILESDIR}"/fossil-2.10-check-lib64-for-tcl.patch
	"${FILESDIR}"/fossil-2.27-fix-json-test-content-length.patch
)

src_configure() {
	# this is not an autotools situation so don't make it seem like one
	# --with-tcl: works
	# --without-tcl: dies
	local myconf
	myconf=(--with-openssl="$(usex ssl auto none)")
	use debug         && myconf+=(--fossil-debug)
	use json          && myconf+=(--json)
	use system-sqlite && myconf+=(--disable-internal-sqlite)
	use static        && myconf+=(--static)
	use tcl           && myconf+=(--with-tcl=1)
	use fusefs        || myconf+=(--disable-fusefs)

	local u useflags
	useflags=( tcl-stubs tcl-private-stubs th1-docs th1-hooks )
	for u in "${useflags[@]}" ; do
		use "${u}" &&  myconf+=(--with-"${u}")
	done

	tc-export CC CXX
	CC_FOR_BUILD=${CC} ./configure "${myconf[@]}" || die
}

src_install() {
	dobin fossil
	doman fossil.1
}