repo/gentoo:master commit in: dev-libs/botan/

"Sam James" <[email protected]>
Newsgroups gmane.linux.gentoo.cvs
Message-ID <1786754349.696056059bb4d53fd61ade6ccf1a615f533d51bd.sam@gentoo>
commit:     696056059bb4d53fd61ade6ccf1a615f533d51bd
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat Aug 15 00:39:09 2026 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Aug 15 00:39:09 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=69605605

dev-libs/botan: add 3.13.0

Bug: https://bugs.gentoo.org/980865
Signed-off-by: Sam James <sam <AT> gentoo.org>

 dev-libs/botan/Manifest            |   2 +
 dev-libs/botan/botan-3.13.0.ebuild | 204 +++++++++++++++++++++++++++++++++++++
 2 files changed, 206 insertions(+)

diff --git a/dev-libs/botan/Manifest b/dev-libs/botan/Manifest
index 12b67e6fa811..f62f3576012f 100644
--- a/dev-libs/botan/Manifest
+++ b/dev-libs/botan/Manifest
@@ -2,3 +2,5 @@ DIST Botan-3.11.1.tar.xz 8945412 BLAKE2B ff51a4b52a118eaaeb8f7df20332c23347f4d20
 DIST Botan-3.11.1.tar.xz.asc 488 BLAKE2B bd867108a063b6197c89dfe0bd75dcb74020309b713f84523128a0aea845456813a055671daa68e97ddcf5a8afd8f5fc596477c27958789225b73c67325ab45b SHA512 a369fe10d97d080ae82b85a862734e6fa6a3a9ec05782181530d7b12a5c55aec4049f6e501b668833d0d13e3ea43baa1414481abbbdbbbd175ea8328c0c0d25d
 DIST Botan-3.12.0.tar.xz 9041764 BLAKE2B cdade127c9344949b9b10f19b7b417b3f3e39b36fc1a091dbd493dc094050b6322906c33c39d15d9aaa4065fcd9889294812a49174b32f4d625719a1cd3c09d6 SHA512 97d39b0c73f8515fcef759715c5c0d06f83c0037e5d65805cda793970ad91fb847ddbce242f9a5365e0ee670fde3ec3e84866532a18c2d9ea8ad8e27fd28cc02
 DIST Botan-3.12.0.tar.xz.asc 488 BLAKE2B 58c9208f904907b7c858fa542ba6251e8b2d609242e0f69c038aa944f4dc3f35109ed0f5fc454df92e487d307e956d66eec9b1115431ae838f2c4fd0e3b0d733 SHA512 2ca5675982934ac0a55c98aed2e68a9b8d8fcba5b01a588eef03cbd0afe884d8c0f69a32ad9235a0ee4cebafe869f26842bcbd909a28149145ea7aff18886a37
+DIST Botan-3.13.0.tar.xz 9598736 BLAKE2B 1cbc851cbd917341fb6f3536ab657af7508ad2fb1b56026fc5e9cf43da89e13158c836c0d74550ed516fda10c39564e5d3997c0b513b0094fe5e0a19e5c250e9 SHA512 f596dcd4d9e6c39cf1a143c310213c8f5d838cc81f802788d516c6087f1ee337bce08599769630f7a3cda962ee3ea9cc20d559843b39bcdbaee3688b6adf13b9
+DIST Botan-3.13.0.tar.xz.asc 488 BLAKE2B 1a9c5e6142f7770ab7fb480df17f67f265a16f77ec5a92dd146330bfab4501f575fd2292d07e76e1c79d9044be15dc113bf32485ec507aaeeede88632cc34e1f SHA512 28f57afa9b8899ce2c81a7fa4d42e802b1980cfb6202fc5b7dde8efa54b0c2739ebcaf95d02fcbdbbb02ac6e2f9bd9b71cf3e49797b54d13a681a897e22211bd

diff --git a/dev-libs/botan/botan-3.13.0.ebuild b/dev-libs/botan/botan-3.13.0.ebuild
new file mode 100644
index 000000000000..40fd22340f8f
--- /dev/null
+++ b/dev-libs/botan/botan-3.13.0.ebuild
@@ -0,0 +1,204 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{11..14} )
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/botan.asc
+inherit edo dot-a flag-o-matic multiprocessing ninja-utils python-r1 toolchain-funcs verify-sig
+
+MY_P="Botan-${PV}"
+DESCRIPTION="C++ crypto library"
+HOMEPAGE="https://botan.randombit.net/"
+SRC_URI="https://botan.randombit.net/releases/${MY_P}.tar.xz"
+SRC_URI+=" verify-sig? ( https://botan.randombit.net/releases/${MY_P}.tar.xz.asc )"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="BSD-2"
+# New major versions are parallel-installable
+SLOT="$(ver_cut 1)/$(ver_cut 1-2)" # soname version
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="doc boost bzip2 lzma python static-libs sqlite test tools zlib"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
+
+# NOTE: Boost is needed at runtime too for the CLI tool.
+DEPEND="
+	boost? ( dev-libs/boost:= )
+	bzip2? ( >=app-arch/bzip2-1.0.5:= )
+	lzma? ( app-arch/xz-utils:= )
+	python? ( ${PYTHON_DEPS} )
+	sqlite? ( dev-db/sqlite:3= )
+	zlib? ( >=virtual/zlib-1.2.3:= )
+"
+RDEPEND="
+	${DEPEND}
+	!<dev-libs/botan-2.19.3-r1:2[tools]
+"
+BDEPEND="
+	${PYTHON_DEPS}
+	${NINJA_DEPEND}
+	$(python_gen_any_dep '
+		doc? (
+			dev-python/sphinx[${PYTHON_USEDEP}]
+			dev-python/furo[${PYTHON_USEDEP}]
+		)
+	')
+	|| ( >=sys-devel/gcc-11:* >=llvm-core/clang-14:* )
+	verify-sig? ( sec-keys/openpgp-keys-botan )
+"
+
+# NOTE: Considering patching Botan?
+# Please see upstream's guidance:
+# https://botan.randombit.net/handbook/packaging.html#minimize-distribution-patches
+
+python_check_deps() {
+	use doc || return 0
+	python_has_version "dev-python/sphinx[${PYTHON_USEDEP}]" &&
+	python_has_version "dev-python/furo[${PYTHON_USEDEP}]"
+}
+
+pkg_pretend() {
+	[[ ${MERGE_TYPE} == binary ]] && return
+
+	# bug #908958
+	tc-check-min_ver gcc 11
+	tc-check-min_ver clang 14
+}
+
+src_configure() {
+	tc-export AR CC CXX
+	use static-libs && lto-guarantee-fat
+	python_setup
+
+	local disable_modules=(
+		$(usev !boost 'boost')
+	)
+
+	if [[ -z "${DISABLE_MODULES}" ]] ; then
+		elog "Disabling module(s): ${disable_modules[@]}"
+	fi
+
+	local chostarch="${CHOST%%-*}"
+
+	# Arch specific wrangling
+	local myos=
+	case ${CHOST} in
+		*-darwin*)
+			myos=darwin
+			;;
+		*)
+			myos=linux
+
+			if [[ ${CHOST} == *hppa* ]] ; then
+				chostarch=parisc
+			elif [[ ${ABI} == sparc64 ]] ; then
+				chostarch="sparc64"
+			elif [[ ${ABI} == sparc32 ]] ; then
+				chostarch="sparc32"
+			fi
+			;;
+	esac
+
+	local pythonvers=()
+	if use python ; then
+		_append() {
+			pythonvers+=( ${EPYTHON/python/} )
+		}
+
+		python_foreach_impl _append
+	fi
+
+	local myargs=(
+		# We already set this by default in the toolchain
+		--without-stack-protector
+
+		$(use_with boost)
+		$(use_with bzip2)
+		$(use_with doc documentation)
+		$(use_with doc sphinx)
+		$(use_with lzma)
+		$(use_enable static-libs static-library)
+		$(use_with sqlite sqlite3)
+		$(use_with zlib)
+
+		--build-tool=ninja
+		--cpu=${chostarch}
+		--docdir=share/doc
+		--disable-modules=$(IFS=","; echo "${disable_modules[*]}")
+		--distribution-info="Gentoo ${PVR}"
+		--libdir="$(get_libdir)"
+		# Avoid collisions between slots for tools (bug #905700)
+		--program-suffix=$(ver_cut 1)
+
+		# Don't install Python bindings automatically
+		# (do it manually later in the right place)
+		# bug #723096
+		--no-install-python-module
+
+		--os=${myos}
+		--prefix="${EPREFIX}"/usr
+		--lto-cxxflags-to-ldflags
+		--with-python-version=$(IFS=","; echo "${pythonvers[*]}")
+	)
+
+	local build_targets=(
+		shared
+		$(usev static-libs static)
+		$(usev tools cli)
+		$(usev test tests)
+	)
+
+	myargs+=(
+		--build-targets=$(IFS=","; echo "${build_targets[*]}")
+	)
+
+	if ( use elibc_glibc || use elibc_musl ) && use kernel_linux ; then
+		myargs+=(
+			--with-os-features=getrandom,getentropy
+		)
+	fi
+
+	local sanitizers=()
+	if is-flagq -fsanitize=address ; then
+		sanitizers+=( address )
+	fi
+	if is-flagq -fsanitize=undefined ; then
+		sanitizers+=( undefined )
+	fi
+	filter-flags '-fsanitize=*'
+	myargs+=(
+		--enable-sanitizers=$(IFS=","; echo "${sanitizers[*]}")
+	)
+
+	edo ${EPYTHON} configure.py --verbose "${myargs[@]}"
+}
+
+src_compile() {
+	eninja
+}
+
+src_test() {
+	LD_LIBRARY_PATH="${S}" edo ./botan-test$(ver_cut 1) --test-threads="$(makeopts_jobs)"
+}
+
+src_install() {
+	DESTDIR="${D}" eninja install
+
+	strip-lto-bytecode
+
+	if [[ -d "${ED}"/usr/share/doc/${P} && ${P} != ${PF} ]] ; then
+		# --docdir in configure controls the parent directory unfortunately
+		mv "${ED}"/usr/share/doc/${P} "${ED}"/usr/share/doc/${PF} || die
+	fi
+
+	if [[ -d "${ED}"/usr/share/man/man1 ]] ; then
+		# --program-suffix doesn't apply to the man page
+		mv "${ED}"/usr/share/man/man1/botan{,$(ver_cut 1)}.1 || die
+	fi
+
+	# Manually install the Python bindings (bug #723096)
+	if use python ; then
+		python_foreach_impl python_domodule src/python/botan$(ver_cut 1).py
+	fi
+}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.