sys-libs/ldb: Uprev from version 2.0.12 to 2.4.1

sys-libs/ldb is a dependency of net-fs/samba which is being uprevved
to 4.15.0 which has a dependency requirement for tdb of >=2.4.1 and
<2.5.0.

Further to the above crrev.com/c/3288388 removes sys-libs/ldb from
chromiumos-overlay back to portage-stable (hence the added files). This
was previously done to allow patching of upstream, but now these patches
have merged back don't require any excessive patching. The files that
remain in chromiumos-overlay are the WAF cross-compilation answers as
they are required to stay there (compilation fails if moved to
portage-stable).

BUG=chromium:1261791, chromium:1261790
TEST=emerge-{hatch,kevin,kevin64} ldb, deploy and test

Cq-Depend: chromium:3260296, chromium:3260297, chromium:3260298
Change-Id: Iad6686732844091ed438c7b7486732e84c555642
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/overlays/portage-stable/+/3260299
Tested-by: Ben Reich <benreich@chromium.org>
Reviewed-by: Josh Simmons <simmonsjosh@google.com>
Reviewed-by: François Degros <fdegros@chromium.org>
Commit-Queue: Ben Reich <benreich@chromium.org>
diff --git a/metadata/md5-cache/sys-libs/ldb-2.4.1 b/metadata/md5-cache/sys-libs/ldb-2.4.1
new file mode 100644
index 0000000..854f1fa
--- /dev/null
+++ b/metadata/md5-cache/sys-libs/ldb-2.4.1
@@ -0,0 +1,16 @@
+BDEPEND=python_single_target_python3_8? ( dev-lang/python:3.8[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_8] ) python_single_target_python3_9? ( dev-lang/python:3.9[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_9] ) python_single_target_python3_10? ( dev-lang/python:3.10[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_10] ) dev-libs/libxslt virtual/pkgconfig doc? ( app-doc/doxygen )
+DEFINED_PHASES=compile configure install postinst prepare setup test
+DEPEND=!elibc_FreeBSD? ( dev-libs/libbsd[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) dev-libs/popt[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-util/cmocka-1.1.3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/talloc-2.3.3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/tdb-1.4.4[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/tevent-0.11.0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ldap? ( net-nds/openldap ) lmdb? ( >=dev-db/lmdb-0.9.16[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) python? ( python_single_target_python3_8? ( dev-lang/python:3.8[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_8] ) python_single_target_python3_9? ( dev-lang/python:3.9[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_9] ) python_single_target_python3_10? ( dev-lang/python:3.10[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_10] ) sys-libs/talloc[python,python_single_target_python3_8(-)?,python_single_target_python3_9(-)?,python_single_target_python3_10(-)?] sys-libs/tdb[python,python_single_target_python3_8(-)?,python_single_target_python3_9(-)?,python_single_target_python3_10(-)?] sys-libs/tevent[python,python_single_target_python3_8(-)?,python_single_target_python3_9(-)?,python_single_target_python3_10(-)?] )
+DESCRIPTION=LDAP-like embedded database
+EAPI=7
+HOMEPAGE=https://ldb.samba.org
+IUSE=doc ldap +lmdb python test python_single_target_python3_8 python_single_target_python3_9 python_single_target_python3_10 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=LGPL-3
+RDEPEND=!elibc_FreeBSD? ( dev-libs/libbsd[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) dev-libs/popt[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-util/cmocka-1.1.3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/talloc-2.3.3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/tdb-1.4.4[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/tevent-0.11.0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ldap? ( net-nds/openldap ) lmdb? ( >=dev-db/lmdb-0.9.16[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) python? ( python_single_target_python3_8? ( dev-lang/python:3.8[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_8] ) python_single_target_python3_9? ( dev-lang/python:3.9[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_9] ) python_single_target_python3_10? ( dev-lang/python:3.10[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_10] ) sys-libs/talloc[python,python_single_target_python3_8(-)?,python_single_target_python3_9(-)?,python_single_target_python3_10(-)?] sys-libs/tdb[python,python_single_target_python3_8(-)?,python_single_target_python3_9(-)?,python_single_target_python3_10(-)?] sys-libs/tevent[python,python_single_target_python3_8(-)?,python_single_target_python3_9(-)?,python_single_target_python3_10(-)?] )
+REQUIRED_USE=^^ ( python_single_target_python3_8 python_single_target_python3_9 python_single_target_python3_10 ) test? ( python )
+RESTRICT=!test? ( test )
+SLOT=0/2.4.1
+SRC_URI=https://samba.org/ftp/pub/ldb/ldb-2.4.1.tar.gz
+_eclasses_=eapi8-dosym	cd7d420bb5be5ee079f27239ce76b8f5	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	655fe65f186504e455c2f3116808fda8	toolchain-funcs	f783d68a26b62d6b19e070e6bcada5e6	waf-utils	6dce9ffe7d6fe961321a99f8da53a887
+_md5_=bf02520bcf3fbee1eba0b9f89ee3b2cf
diff --git a/sys-libs/ldb/Manifest b/sys-libs/ldb/Manifest
new file mode 100644
index 0000000..703765c
--- /dev/null
+++ b/sys-libs/ldb/Manifest
@@ -0,0 +1,5 @@
+DIST ldb-2.2.1.tar.gz 1676819 BLAKE2B 794575d5bd7d33dcd586cb5de6c392411795c467f472f517d5182a2559698a5489e703c8360baf2d0b1bff080c943a403a666d0ef7a9a180ae90052055966f40 SHA512 a2b1598869e3d9f17c5b82fc2b7289f1f08a7378a1d72609af5ed5cc91fb571ac67d3a8c22d64dad5dcc9fe32520baccd5cc37d5b4fc5f1b00a7064902296344
+DIST ldb-2.3.0.tar.gz 1686378 BLAKE2B b31949e14a41f6fc99ef022e4072021d135037d835aeca80ee81a58ed20cab4f8cbd96e394f59460df11e2424e2e263d5fb01b9cebbfb4ca1bcc77162e93ed3f SHA512 7e389c0b4700a809893276d69216436ebd6d30e1f52407e4a08a1113cf14e151aed74300d8c36765c91c8f3195d8054b13a28cbdfcab031f88fd1d353e415348
+DIST ldb-2.3.1.tar.gz 1718379 BLAKE2B e2aa196e6e09846be2a631d81bf0b94c0cd80984ac124757888889717efdf78caf5501c4278ace33dcc2a6fb92a4a2f224b20ea9f3bf3fa5c7333f9994dcbdc1 SHA512 d87f3839481c3ac3f5ce5e2b5bb766451fe39681bff9c53747d45e2cdcef9f1eb91c0a7d6a9c202c4d01097600d66ca431a175f4fc28a126ad987b9783cb87bc
+DIST ldb-2.4.0.tar.gz 1689484 BLAKE2B 904d74900011ce3f63ad1c24fe88b1a090e835c68829ddfda5e8af2c0ab3674d7a8cd9a62b95c1f38f26578d0704556d3562e46e21a54cbb44a15b9d83676521 SHA512 6c500b723c081488bc0717b6a5b0e8966c5d8a751232f8856281a6fe4d358ae6b5878c8400a82fa666379066105fbb9259b2967313e73efabef0e1386095e2ee
+DIST ldb-2.4.1.tar.gz 1719769 BLAKE2B 868d3dcc51bd8272d99f2335ed1af2e37506b6a175254f1aca37f758488ba0997e37419a7d8c81def77698128307df97de26d4807ac78c34088f7a623f8d9e68 SHA512 14ab5397d28c369142b2ccf55a2ab4e678a3fe6e018541cfce46241f8226400bc169360bbef254fae4410a6e15024ae986f02298d3d324e3d3a8b88801bf76d7
diff --git a/sys-libs/ldb/OWNERS b/sys-libs/ldb/OWNERS
new file mode 100644
index 0000000..1261db2
--- /dev/null
+++ b/sys-libs/ldb/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/smbfs/OWNERS
diff --git a/sys-libs/ldb/files/ldb-1.1.31-fix_PKGCONFIGDIR-when-python-disabled.patch b/sys-libs/ldb/files/ldb-1.1.31-fix_PKGCONFIGDIR-when-python-disabled.patch
new file mode 100644
index 0000000..c45b13f
--- /dev/null
+++ b/sys-libs/ldb/files/ldb-1.1.31-fix_PKGCONFIGDIR-when-python-disabled.patch
@@ -0,0 +1,17 @@
+--- a/wscript	2017-07-05 15:35:52.178964698 -0400
++++ b/wscript	2017-07-05 15:49:20.137977649 -0400
+@@ -208,6 +208,14 @@
+         ldb_headers = ('include/ldb.h include/ldb_errors.h '
+                        'include/ldb_module.h include/ldb_handlers.h')
+ 
++        # we're not currently linking against the ldap libs, but ldb.pc.in
++        # has @LDAP_LIBS@
++        bld.env.LDAP_LIBS = ''
++
++        if not 'PACKAGE_VERSION' in bld.env:
++            bld.env.PACKAGE_VERSION = VERSION
++            bld.env.PKGCONFIGDIR = '${LIBDIR}/pkgconfig'
++
+         bld.SAMBA_LIBRARY('ldb',
+                           COMMON_SRC + ' ' + LDB_MAP_SRC,
+                           deps='tevent LIBLDB_MAIN replace',
diff --git a/sys-libs/ldb/files/ldb-1.5.2-optional_packages.patch b/sys-libs/ldb/files/ldb-1.5.2-optional_packages.patch
new file mode 100644
index 0000000..bdceeb3
--- /dev/null
+++ b/sys-libs/ldb/files/ldb-1.5.2-optional_packages.patch
@@ -0,0 +1,40 @@
+--- ldb-1.5.2/wscript
++++ ldb-1.5.2/wscript
+@@ -33,6 +33,10 @@
+     opt.RECURSE('lib/tevent')
+     opt.RECURSE('lib/replace')
+     opt.load('python') # options for disabling pyc or pyo compilation
++    if opt.IN_LAUNCH_DIR():
++        opt.add_option('--disable-ldap',
++        help=("disable ldap support"),
++        action="store_true", dest='disable_ldap', default=False)
+ 
+     opt.add_option('--without-ldb-lmdb',
+                    help='disable new LMDB backend for LDB',
+@@ -40,6 +44,10 @@
+ 
+ 
+ def configure(conf):
++    conf.env.standalone_ldb = conf.IN_LAUNCH_DIR()
++
++    conf.env.disable_ldap = getattr(Options.options, 'disable_ldap', False)
++
+     conf.RECURSE('lib/tdb')
+     conf.RECURSE('lib/tevent')
+ 
+@@ -157,9 +165,12 @@
+     if conf.env.standalone_ldb:
+         conf.CHECK_XSLTPROC_MANPAGES()
+ 
+-        # we need this for the ldap backend
+-        if conf.CHECK_FUNCS_IN('ber_flush ldap_open ldap_initialize', 'lber ldap', headers='lber.h ldap.h'):
+-            conf.env.ENABLE_LDAP_BACKEND = True
++        if not conf.env.disable_ldap:
++    	    # we need this for the ldap backend
++            if conf.CHECK_FUNCS_IN('ber_flush ldap_open ldap_initialize', 'lber ldap', headers='lber.h ldap.h'):
++                conf.env.ENABLE_LDAP_BACKEND = True
++        else:
++            conf.env.ENABLE_LDAP_BACKEND = False
+ 
+         # we don't want any libraries or modules to rely on runtime
+         # resolution of symbols
diff --git a/sys-libs/ldb/ldb-2.4.1.ebuild b/sys-libs/ldb/ldb-2.4.1.ebuild
new file mode 100644
index 0000000..44fc29b
--- /dev/null
+++ b/sys-libs/ldb/ldb-2.4.1.ebuild
@@ -0,0 +1,118 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{6..9} )
+PYTHON_REQ_USE="threads(+)"
+inherit python-single-r1 waf-utils multilib-minimal
+
+DESCRIPTION="LDAP-like embedded database"
+HOMEPAGE="https://ldb.samba.org"
+SRC_URI="https://samba.org/ftp/pub/${PN}/${P}.tar.gz"
+
+LICENSE="LGPL-3"
+SLOT="0/${PV}"
+KEYWORDS="*"
+IUSE="doc ldap +lmdb python test"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}
+	test? ( python )"
+
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+	!elibc_FreeBSD? ( dev-libs/libbsd[${MULTILIB_USEDEP}] )
+	dev-libs/popt[${MULTILIB_USEDEP}]
+	>=dev-util/cmocka-1.1.3[${MULTILIB_USEDEP}]
+	>=sys-libs/talloc-2.3.3[${MULTILIB_USEDEP}]
+	>=sys-libs/tdb-1.4.4[${MULTILIB_USEDEP}]
+	>=sys-libs/tevent-0.11.0[${MULTILIB_USEDEP}]
+	ldap? ( net-nds/openldap )
+	lmdb? ( >=dev-db/lmdb-0.9.16[${MULTILIB_USEDEP}] )
+	python? (
+		${PYTHON_DEPS}
+		sys-libs/talloc[python,${PYTHON_SINGLE_USEDEP}]
+		sys-libs/tdb[python,${PYTHON_SINGLE_USEDEP}]
+		sys-libs/tevent[python,${PYTHON_SINGLE_USEDEP}]
+	)
+"
+DEPEND="${RDEPEND}"
+BDEPEND="${PYTHON_DEPS}
+	dev-libs/libxslt
+	virtual/pkgconfig
+	doc? ( app-doc/doxygen )
+"
+
+WAF_BINARY="${S}/buildtools/bin/waf"
+
+MULTILIB_WRAPPED_HEADERS=( /usr/include/pyldb.h )
+
+PATCHES=(
+	"${FILESDIR}"/${PN}-1.5.2-optional_packages.patch
+	"${FILESDIR}"/${PN}-1.1.31-fix_PKGCONFIGDIR-when-python-disabled.patch
+)
+
+pkg_setup() {
+	# Package fails to build with distcc
+	export DISTCC_DISABLE=1
+
+	# waf requires a python interpreter
+	python-single-r1_pkg_setup
+}
+
+src_prepare() {
+	default
+	multilib_copy_sources
+}
+
+multilib_src_configure() {
+	local myconf=(
+		$(usex ldap '' --disable-ldap)
+		$(usex lmdb '' --without-ldb-lmdb)
+		--disable-rpath
+		--disable-rpath-install --bundled-libraries=NONE
+		--with-modulesdir="${EPREFIX}"/usr/$(get_libdir)/samba
+		--builtin-libraries=NONE
+	)
+	if ! multilib_is_native_abi; then
+		myconf+=( --disable-python )
+	else
+		use python || myconf+=( --disable-python )
+	fi
+	waf-utils_src_configure "${myconf[@]}"
+}
+
+multilib_src_compile() {
+	waf-utils_src_compile
+	multilib_is_native_abi && use doc && doxygen Doxyfile
+}
+
+multilib_src_test() {
+	if multilib_is_native_abi; then
+		WAF_MAKE=1 \
+		PATH=buildtools/bin:../../../buildtools/bin:$PATH:"${BUILD_DIR}"/bin/shared/private/ \
+		LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"${BUILD_DIR}"/bin/shared/private/:"${BUILD_DIR}"/bin/shared \
+		waf test || die
+	fi
+}
+
+multilib_src_install() {
+	waf-utils_src_install
+
+	if multilib_is_native_abi && use doc; then
+		doman  apidocs/man/man3/*.3
+		docinto html
+		dodoc -r apidocs/html/.
+	fi
+
+	use python && python_optimize #726454
+}
+
+pkg_postinst() {
+	if has_version sys-auth/sssd; then
+		ewarn "You have sssd installed. It is known to break after ldb upgrades,"
+		ewarn "so please try to rebuild it before reporting bugs."
+		ewarn "See https://bugs.gentoo.org/404281"
+	fi
+}
diff --git a/sys-libs/ldb/metadata.xml b/sys-libs/ldb/metadata.xml
new file mode 100644
index 0000000..a47d418
--- /dev/null
+++ b/sys-libs/ldb/metadata.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+	<maintainer type="project">
+		<email>samba@gentoo.org</email>
+		<name>Samba</name>
+	</maintainer>
+	<upstream>
+		<remote-id type="cpe">cpe:/a:samba:samba</remote-id>
+	</upstream>
+	<use>
+		<flag name="doc">Builds documentation</flag>
+		<flag name="ldap">Enable LDAP support</flag>
+		<flag name="lmdb">Enable LMDB backend</flag>
+		<flag name="python">Enable Python support</flag>
+	</use>
+</pkgmetadata>