2024-06-25 18:05:22 +02:00
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI = 8
2024-07-13 01:59:29 +02:00
PYTHON_COMPAT = ( python3_{ 10..13} )
inherit cmake python-any-r1
2024-06-25 18:05:22 +02:00
DESCRIPTION = "Client library written in C for MongoDB"
HOMEPAGE = "https://github.com/mongodb/mongo-c-driver"
SRC_URI = " https://github.com/mongodb/mongo-c-driver/releases/download/ ${ PV } / ${ P } .tar.gz "
LICENSE = "Apache-2.0"
SLOT = "0"
KEYWORDS = "~amd64 ~arm64 ~hppa ~riscv ~x86"
2024-07-13 01:59:29 +02:00
IUSE = "debug examples icu sasl ssl static-libs test +test-full"
2024-06-25 18:05:22 +02:00
REQUIRED_USE = "test? ( static-libs )"
2024-07-13 01:59:29 +02:00
RESTRICT = "!test? ( test )"
2024-06-25 18:05:22 +02:00
RDEPEND = " app-arch/snappy:=
app-arch/zstd:=
2024-07-13 01:59:29 +02:00
~dev-libs/libbson-${ PV } [ static-libs?]
2024-06-25 18:05:22 +02:00
dev-python/sphinx
sys-libs/zlib:=
icu? ( dev-libs/icu:= )
sasl? ( dev-libs/cyrus-sasl:= )
ssl? (
dev-libs/openssl:=
) "
2024-07-13 01:59:29 +02:00
DEPEND = "
${ RDEPEND }
2024-06-25 18:05:22 +02:00
test? (
dev-libs/libbson[ static-libs]
2024-07-13 01:59:29 +02:00
test-full? (
dev-db/mongodb
)
)
"
BDEPEND = "
$( python_gen_any_dep '
dev-python/sphinx[ ${ PYTHON_USEDEP } ]
' )
"
python_check_deps( ) {
python_has_version -b " dev-python/sphinx[ ${ PYTHON_USEDEP } ] "
}
2024-06-25 18:05:22 +02:00
src_prepare( ) {
cmake_src_prepare
# copy private headers for tests since we don't build libbson
if use test; then
mkdir -p src/libbson/tests/bson || die
cp src/libbson/src/bson/bson-*.h src/libbson/tests/bson/ || die
fi
# remove doc files
sed -i '/^\s*install\s*(FILES COPYING NEWS/,/^\s*)/{d}' CMakeLists.txt || die
# enable tests
sed -i '/message ("-- disabling test-libmongoc since using system libbson")/{d}' CMakeLists.txt || die
sed -i '/SET (ENABLE_TESTS OFF)/{d}' CMakeLists.txt || die
sed -i 's/message (FATAL_ERROR "System libbson built without static library target")/message (STATUS "System libbson built without static library target")/' CMakeLists.txt || die
sed -i 's#<bson/bson-private.h>#"bson/bson-private.h"#' src/libbson/tests/test-bson.c || die
}
src_configure( ) {
local mycmakeargs = (
-DCMAKE_SKIP_RPATH= ON # mongoc-stat insecure runpath
-DUSE_SYSTEM_LIBBSON= ON
-DENABLE_EXAMPLES= OFF
-DENABLE_ICU= " $( usex icu ON OFF) "
-DENABLE_MAN_PAGES= ON
-DENABLE_MONGOC= ON
-DENABLE_SNAPPY= AUTO
-DENABLE_ZLIB= SYSTEM
-DENABLE_SASL= " $( usex sasl CYRUS OFF) "
-DENABLE_SSL= " $( usex ssl $( usex ssl OPENSSL) OFF) "
-DENABLE_STATIC= " $( usex static-libs ON OFF) "
-DENABLE_TESTS= " $( usex test ON OFF) "
-DENABLE_TRACING= " $( usex debug ON OFF) "
-DENABLE_UNINSTALL= OFF
-DENABLE_ZSTD= ON
)
cmake_src_configure
}
src_test( ) {
2024-07-13 01:59:29 +02:00
export MONGOC_TEST_OFFLINE = on
2024-07-13 19:41:52 +02:00
export MONGOC_TEST_SKIP_MOCK = on
2024-07-13 01:59:29 +02:00
if ! use test-full; then
export MONGOC_TEST_SKIP_LIVE = on
else
local PORT = 27099
export MONGOC_TEST_URI = " mongodb://[127.0.0.1]: ${ PORT } "
export MONGOC_ENABLE_MAJORITY_READ_CONCERN = on
LC_ALL = C \
mongod --setParameter enableTestCommands = 1 \
--port ${ PORT } --bind_ip 127.0.0.1 --nounixsocket \
--fork --dbpath= " ${ T } " \
--logpath= " ${ T } /mongod.log " || die
fi
../mongo-c-driver-${ PV } _build/src/libmongoc/test-libmongoc || die
2024-06-25 18:05:22 +02:00
kill $( <" ${ T } /mongod.lock " )
}
src_install( ) {
if use examples; then
docinto examples
dodoc src/libmongoc/examples/*.c
fi
cmake_src_install
}