From c035b2b83f0e94c4b2e82184f00bcef874e6276b Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Sat, 11 May 2024 00:01:23 +0100 Subject: gentoo auto-resync : 11:05:2024 - 00:01:22 --- dev-db/mongodb/Manifest | 7 +- .../files/mongodb-4.4.29-no-enterprise.patch | 24 +++ dev-db/mongodb/metadata.xml | 3 + dev-db/mongodb/mongodb-4.4.29.ebuild | 188 +++++++++++++++++++ dev-db/mongodb/mongodb-5.0.26.ebuild | 205 +++++++++++++++++++++ 5 files changed, 426 insertions(+), 1 deletion(-) create mode 100644 dev-db/mongodb/files/mongodb-4.4.29-no-enterprise.patch create mode 100644 dev-db/mongodb/mongodb-4.4.29.ebuild create mode 100644 dev-db/mongodb/mongodb-5.0.26.ebuild (limited to 'dev-db/mongodb') diff --git a/dev-db/mongodb/Manifest b/dev-db/mongodb/Manifest index fe4e41548d1b..95db2e664cd7 100644 --- a/dev-db/mongodb/Manifest +++ b/dev-db/mongodb/Manifest @@ -4,6 +4,7 @@ AUX mongodb-4.4.1-gcc11.patch 250 BLAKE2B b92bcd6acee092f9da84005a0abc7c6b4ff124 AUX mongodb-4.4.10-boost-1.79.patch 2071 BLAKE2B b00dfba23f2928793ace34abf26989b6bebe00a6484f36eab114b8612bf509123161925f0ccad04bdafd05c3c30ffb2cdea18303c8473dd3e62e422b73a92c53 SHA512 6bad4c75d8da261ce1e36a3648f0758cd9564eefeacbc2ce7c48ccf68e1f069058daaa9d1a6aa60925330ca50d3a712fda4ffaf2d90a0c6af428993283039a83 AUX mongodb-4.4.10-boost-1.81.patch 13467 BLAKE2B 970163a8084893190ca52e31577b2900d90ee6238ed496cefcdcd51590c6bcb4ae2e620d012ba101c022954d2d5ebd03b13eb2e7f26e8ce68c772d62470adbdc SHA512 62f4802a26398ffb17ac289d9e9de4044b753ece694785d3462f406391abdcfd16ff281959b4e4fb6751cc9247da7a4c55e8fa48eb90fd681eed724fedcb03e9 AUX mongodb-4.4.10-no-force-lld.patch 1401 BLAKE2B da5798d94f01a821a0d008fab71c90fe6055faca1020259ea3d385ec3a2af28f8b90bdb9daf2bb43e60028ea47ba733a649831584a53596c2e908c0db0a0f755 SHA512 07cdd61e92cf61be0646900c55dab753009d1cc18151c429dd7fdfd22f0b8836a0d51fc184f4459530397893f8863c5d12594ceea6d1fd2e90f98aba832d651a +AUX mongodb-4.4.29-no-enterprise.patch 969 BLAKE2B b6c607ed7054c74c1c1e29da53292be41bfb690a770fddf9239d9752dec5a87def42488f05295ec505c2cc5f0418358fa51658b9318604c53ae6a3a75d903f8c SHA512 6e84db876022c21c1fcff8c9f88d4ff7375ebb8b37ab0dd445d1697484a1344098bfbffd82b3da7f2f8c2f926c4f403f2ffce9d67ef46b894f3a9f0b981aba10 AUX mongodb-4.4.8-gcc-13.patch 748 BLAKE2B d198b79704812aff95642a485c4a028d76c74d5a6b2d6cdd45bdb7b13d1795d72b4089cdf72840c5aa860095590bde8ab40543cc29ad7e31cbbfcb53f3936bd2 SHA512 c3c2560f858dcd3bbb4604f7d74a5a3efde885995e658ff521cce165be7cd8dea2975931df39a54b70acdc02a7fb480ad39e271875010a633a57af4ebd9ff095 AUX mongodb-4.4.8-no-compass.patch 1598 BLAKE2B af1944476041b3e5ea317f52adfced103f5b103484a4de4bb2a2d07ffcbc8b18a975f543e042c3563f1d46978496482ce7de653de8e4b943ef6ecf6e501d9f52 SHA512 0b8f5d085831180dec72ff81a37b4d537e550c8ea80d970b4af1ea6bc66b60ba957ff6506d2e21b9e5bc77b9812251dda33fae8a7c0cac4086141b5fb8ff4190 AUX mongodb-5.0.16-arm64-assert.patch 636 BLAKE2B 443b16404e8a13c7d1ce1a77b72960a40b8a366bae321af9047c1070142f2461a0fd5e813d2a4b3fcbe3b390e5f28f15bc7396ec13d48753a1cdf1cf3043c4b6 SHA512 24851bee5d93783df6f8a605b7d85d78d591bb2361aca4dbecef901c368a92f96661a9c860c98142224a94aa9dca90c6baa2feb58cfab58adc23e2e8b69ba91c @@ -22,8 +23,12 @@ AUX mongodb.service-r1 239 BLAKE2B 4e2da934120da54034e2dd030cdd349e7fa9a22293f3d AUX mongos.conf-r2 648 BLAKE2B 420bebfafc1ef4af4b90580077a803fe30f37d63eca6509e7381ca5fcf4e5bc31e136dfc72b653b4d942fdeda058f9fcecc3dcbec9c61e2c82ac3324b9fc0f44 SHA512 5aa8ced8d83572358e008c0df45dbe72a2e9c0003c9f49514d6b91bf9b75d4fb48b189ffe00d14e5675679943a05215a9873c5c9bde9ab1be4ed4813e75714e3 AUX mongos.confd-r3 470 BLAKE2B 9cf6f201d337430901d957a5a0811ff11ac2e81814aac2120c5018e6ec4c38b5ca22d19caea593834416c63609c69a8294227fb6b30200b41dfb29799cc5c1b4 SHA512 952fb9cf5d3eeea2006b101e23142e408c98d66d1f4f868f6ea5a4df6a6331ddcbcbdfb24f4b031c1a8c42652141a3684073b96dfc0b3fbd21dc6b5bcf0e36cb AUX mongos.initd-r3 422 BLAKE2B 90872d0d8cdc5e33e3eebee848f58a2db0511d48b496ba9318117b74ad9265ead53a21b7d1790729a62d61839099bee315ace8ff3646c01e096a943c2251bf88 SHA512 bf5897614d59c6b4e72529b126408a62ea37d9e9368e5ff69c8fcf2bad3ec09065cff09467f82117a892c51090018706d2f38c03cb9a974a61a49bd9efa0f144 +DIST mongodb-4.4.29.gh.tar.gz 51651007 BLAKE2B 9e9bd08ce87659fcf788964ec1bff80baef5bb9c2f5bd4968588511d289b9baf9fc68812f72ee89f90fb557dcc8d2ecbb3f607ca8e31c2212ec9633c0b99da37 SHA512 3c32a918c8b5587b04ee9263788c250a9bbd64f34ed2c19939e78607456215697966e596c2cfd160604b629188e4bdf3fff071db268bb3c25de3077a7c2ef335 +DIST mongodb-5.0.26.gh.tar.gz 57252091 BLAKE2B a4663a4dbac90118b56646816b178680a6bd99be6abb582fdfdb662c8ddf14eb9db18ed97260a37b2d04bf11715e6cfaa34bb12c4f4b08426e3afa90908f0b3c SHA512 efd56649006bb61070a2f255e8d843e4ddab33562ec9454afe55848dcc3ce8ee90431f70c9362b14e52c4a49a162ea3075a869a6fd71f63efdd5f4358703fea4 DIST mongodb-src-r4.4.20.tar.gz 50883098 BLAKE2B 3ef2fddc4d926e372033449a14b0a71c606b6f8a9bb6767ff32c8da5a9287bf2972fae9dd83eab3ad934b1341c3edeed7708afd46f9a096819e9eca48aca40f5 SHA512 70b264b6a6f3ec16c8b0750d47026928f6250cb7a1a64d980c400ffbcc3af1b9c6301fe098d209fb8461cba4534b7c2edffdcdeb0548e627da107cc23d9a6b9c DIST mongodb-src-r5.0.16.tar.gz 56217257 BLAKE2B d78704c0cff4f8c1da20fdc5e083634c6dbe539136de58410ae6b86c9c5cd8044926425545ae07a7011a5febec5abb6f67773b8e539a4ac16daa1ad0ffc6a070 SHA512 d5fccd6cd3ee3f70457bd96a8eff66ca9872df37e196f1baf26993b6c080297d77504020e5554eaf3a2e92bb2730a467226b4bef47ab7fdc4de247d91c0143eb EBUILD mongodb-4.4.20.ebuild 5166 BLAKE2B 2cbbe01c324473eb74834b474fc13ee1e38a8e2ed3a1f471afc99d596434db41fd2697e36e87c0077da418f7a36c320221b192063e549f75c2366b1c4db0f4f8 SHA512 e3c9b4383892226232e70ee600f6b2d87c79967e04f290598657dc8618df3bd774601df6e6897d80c6d49ebc5b183cd443d82068da4eb1ede094c522292a0a7a +EBUILD mongodb-4.4.29.ebuild 5390 BLAKE2B 37c15937cd50a12631c0008adbe5d7f1c45ee2d3d7694b7dd482cbcaa8472f2448cbd3901367be4d210cc90e65f794ece12525125b97ecea60fbf756200178b2 SHA512 fbef97744213d897824d24a55f41a69e8dd50df87525be4ef382b6614d9987ab3c3733a3a897df5ece1bfaaa6eacd94aaaef3f5c15fb174f4a0d678a4e67aca2 EBUILD mongodb-5.0.16-r1.ebuild 5580 BLAKE2B 5b03069e397d7c557dce111edf565e27a5609b0d634818825e73e2fec5939909d1abefc3b24e0e4b88757c2c9d9af6fbaafa3029f5ad91a96ed4b64bd5c1ccae SHA512 be046025e299a3b3de9592babaacbaca575fa1b67bc046b17a792dece61f6c3bfaa7aed92211f467004fb902c877ae045f7a6fa8bbc563f1281352982a9f2c6e -MISC metadata.xml 853 BLAKE2B fef5b12bf1ac004fe59de6ab55cb537d1b287b28ce4eaaee88d555c17784bf7b95273e25e917c7c75a511e24515d12eeb255108e07ef549db4e225a03adfbfc0 SHA512 fc7f8225e517043b6c5e0ceb77191204c4c66b1454e889837572c04aaaf5a973f89efed26f07493f448e69eefb90cca90a3f84e0acac134454f17bdc97959997 +EBUILD mongodb-5.0.26.ebuild 5863 BLAKE2B d6a5eac27be583c953ff82108925d3f2cc0f894030fad39d2651e98f26cf6a689818e99645adc0f211bcc18df8c45f1518a8094dd0cd84bfd4c55780268a600c SHA512 a9256a5474eafec4a0e4e6a3868855019e624d09b8a656817cd05882bf9e75add0389bf3fa4de66ec42b360006376a4445c4dededa934d0bf2b590002ae0c2d8 +MISC metadata.xml 931 BLAKE2B 7ac7f9f4c2f048262d980577ef99c4a4200b805ea32976309bc68abaa7d0afc6818d1a24351b4850a7855f6f3e73bd0fd8241326c8a81484815342ba85c2e3ea SHA512 86fc063b5759fe7af2dd288897b8bff77e0d64a934abee3a68c0e0fb4454d67f0ced71e092257004885e375f2f17fd50577bacff802882d2dedff8306cfdf3d2 diff --git a/dev-db/mongodb/files/mongodb-4.4.29-no-enterprise.patch b/dev-db/mongodb/files/mongodb-4.4.29-no-enterprise.patch new file mode 100644 index 000000000000..bbcbe34fe6f3 --- /dev/null +++ b/dev-db/mongodb/files/mongodb-4.4.29-no-enterprise.patch @@ -0,0 +1,24 @@ + buildscripts/moduleconfig.py | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/buildscripts/moduleconfig.py b/buildscripts/moduleconfig.py +index b4d0bba0490..03541fab940 100644 +--- a/buildscripts/moduleconfig.py ++++ b/buildscripts/moduleconfig.py +@@ -27,7 +27,6 @@ MongoDB SConscript files do. + __all__ = ('discover_modules', 'discover_module_directories', 'configure_modules', + 'register_module_test') # pylint: disable=undefined-all-variable + +-import imp + import inspect + import os + +@@ -71,8 +70,6 @@ def discover_modules(module_root, allowed_modules): + print("adding module: %s" % (name)) + fp = open(build_py, "r") + try: +- module = imp.load_module("module_" + name, fp, build_py, +- (".py", "r", imp.PY_SOURCE)) + if getattr(module, "name", None) is None: + module.name = name + found_modules.append(module) diff --git a/dev-db/mongodb/metadata.xml b/dev-db/mongodb/metadata.xml index f8c3c65fba50..1f55f5a2d2d2 100644 --- a/dev-db/mongodb/metadata.xml +++ b/dev-db/mongodb/metadata.xml @@ -17,4 +17,7 @@ Install the MongoDB shell from app-admin/mongosh-bin Install the MongoDB tools (mongoimport, mongodump...) from app-admin/mongo-tools + + mongodb/mongo + diff --git a/dev-db/mongodb/mongodb-4.4.29.ebuild b/dev-db/mongodb/mongodb-4.4.29.ebuild new file mode 100644 index 000000000000..830acd956f53 --- /dev/null +++ b/dev-db/mongodb/mongodb-4.4.29.ebuild @@ -0,0 +1,188 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..12} ) + +SCONS_MIN_VERSION="3.3.1" +CHECKREQS_DISK_BUILD="2400M" +CHECKREQS_DISK_USR="512M" +CHECKREQS_MEMORY="1024M" + +inherit check-reqs flag-o-matic multiprocessing pax-utils python-any-r1 scons-utils systemd toolchain-funcs + +MY_PV=r${PV/_rc/-rc} +MY_P=mongo-${MY_PV} + +DESCRIPTION="A high-performance, open source, schema-free document-oriented database" +HOMEPAGE="https://www.mongodb.com" +SRC_URI="https://github.com/mongodb/mongo/archive/refs/tags/${MY_PV}.tar.gz -> ${P}.gh.tar.gz" +S="${WORKDIR}/${MY_P}" +LICENSE="Apache-2.0 SSPL-1" +SLOT="0" +KEYWORDS="~amd64 ~arm64 -riscv" +IUSE="debug kerberos ssl test +tools" +RESTRICT="!test? ( test )" + +RDEPEND="acct-group/mongodb + acct-user/mongodb + >=app-arch/snappy-1.1.3:= + >=dev-cpp/yaml-cpp-0.6.2:= + dev-libs/boost:=[nls] + >=dev-libs/libpcre-8.42[cxx] + app-arch/zstd:= + dev-libs/snowball-stemmer:= + net-misc/curl + >=sys-libs/zlib-1.2.11:= + kerberos? ( dev-libs/cyrus-sasl[kerberos] ) + ssl? ( + >=dev-libs/openssl-1.0.1g:0= + )" +DEPEND="${RDEPEND} + ${PYTHON_DEPS} + sys-libs/ncurses:0= + sys-libs/readline:0= + debug? ( dev-debug/valgrind )" +BDEPEND=" + $(python_gen_any_dep ' + test? ( dev-python/pymongo[${PYTHON_USEDEP}] dev-python/requests[${PYTHON_USEDEP}] ) + >=dev-build/scons-3.1.1[${PYTHON_USEDEP}] + dev-python/cheetah3[${PYTHON_USEDEP}] + dev-python/psutil[${PYTHON_USEDEP}] + dev-python/pyyaml[${PYTHON_USEDEP}] + ') +" +PDEPEND="tools? ( >=app-admin/mongo-tools-100 )" + +PATCHES=( + "${FILESDIR}/${PN}-4.4.1-fix-scons.patch" + "${FILESDIR}/${PN}-4.4.8-no-compass.patch" + "${FILESDIR}/${PN}-4.4.1-boost.patch" + "${FILESDIR}/${PN}-4.4.1-gcc11.patch" + "${FILESDIR}/${PN}-4.4.10-boost-1.79.patch" + "${FILESDIR}/${PN}-4.4.10-no-force-lld.patch" + "${FILESDIR}/${PN}-4.4.10-boost-1.81.patch" + "${FILESDIR}/${P}-no-enterprise.patch" +) + +python_check_deps() { + if use test; then + python_has_version "dev-python/pymongo[${PYTHON_USEDEP}]" || return 1 + python_has_version "dev-python/requests[${PYTHON_USEDEP}]" || return 1 + fi + python_has_version -b ">=dev-build/scons-3.1.1[${PYTHON_USEDEP}]" && + python_has_version -b "dev-python/cheetah3[${PYTHON_USEDEP}]" && + python_has_version -b "dev-python/psutil[${PYTHON_USEDEP}]" && + python_has_version -b "dev-python/pyyaml[${PYTHON_USEDEP}]" +} + +pkg_pretend() { + if [[ -n ${REPLACING_VERSIONS} ]]; then + if ver_test "$REPLACING_VERSIONS" -lt 4.2; then + ewarn "To upgrade from a version earlier than the 4.2-series, you must" + ewarn "successively upgrade major releases until you have upgraded" + ewarn "to 4.2-series. Then upgrade to 4.4 series." + else + ewarn "Be sure to set featureCompatibilityVersion to 4.2 before upgrading." + fi + fi +} + +src_prepare() { + default + + # remove bundled libs + rm -r src/third_party/{boost-*,pcre-*,scons-*,snappy-*,yaml-cpp-*,zlib-*} || die + + # remove compass + rm -r src/mongo/installer/compass || die +} + +src_configure() { + # https://github.com/mongodb/mongo/wiki/Build-Mongodb-From-Source + # --use-system-icu fails tests + # --use-system-tcmalloc is strongly NOT recommended: + # for MONGO_GIT_HASH use GitOrigin-RevId from the commit of the tag + scons_opts=( + AR="$(tc-getAR)" + CC="$(tc-getCC)" + CXX="$(tc-getCXX)" + CCFLAGS="${CXXFLAGS}" + + VERBOSE=1 + VARIANT_DIR=gentoo + MONGO_VERSION="${PV}" + MONGO_GIT_HASH="f4dda329a99811c707eb06d05ad023599f9be263" + + --disable-warnings-as-errors + --use-system-boost + --use-system-pcre + --use-system-snappy + --use-system-stemmer + --use-system-yaml + --use-system-zlib + --use-system-zstd + ) + + use arm64 && scons_opts+=( --use-hardware-crc32=off ) # Bug 701300 + use debug && scons_opts+=( --dbg=on ) + use kerberos && scons_opts+=( --use-sasl-client ) + use ssl && scons_opts+=( --ssl ) + + # Needed to avoid forcing FORTIFY_SOURCE + # Gentoo's toolchain applies these anyway + scons_opts+=( --runtime-hardening=off ) + + # respect mongoDB upstream's basic recommendations + # see bug #536688 and #526114 + if ! use debug; then + filter-flags '-m*' + filter-flags '-O?' + fi + + default +} + +src_compile() { + PREFIX="${EPREFIX}/usr" escons "${scons_opts[@]}" --nostrip install-core +} + +# FEATURES="test -usersandbox" emerge dev-db/mongodb +src_test() { + ewarn "Tests may hang with FEATURES=usersandbox" + "${EPYTHON}" ./buildscripts/resmoke.py run --dbpathPrefix=test --suites core --jobs=$(makeopts_jobs) || die "Tests failed with ${EPYTHON}" +} + +src_install() { + dobin build/install/bin/{mongo,mongod,mongos} + + doman debian/mongo*.1 + dodoc README docs/building.md + + newinitd "${FILESDIR}/${PN}.initd-r3" ${PN} + newconfd "${FILESDIR}/${PN}.confd-r3" ${PN} + newinitd "${FILESDIR}/mongos.initd-r3" mongos + newconfd "${FILESDIR}/mongos.confd-r3" mongos + + insinto /etc + newins "${FILESDIR}/${PN}.conf-r3" ${PN}.conf + newins "${FILESDIR}/mongos.conf-r2" mongos.conf + + systemd_newunit "${FILESDIR}/${PN}.service-r1" "${PN}.service" + + insinto /etc/logrotate.d/ + newins "${FILESDIR}/${PN}.logrotate" ${PN} + + # see bug #526114 + pax-mark emr "${ED}"/usr/bin/{mongo,mongod,mongos} + + diropts -m0750 -o mongodb -g mongodb + keepdir /var/log/${PN} +} + +pkg_postinst() { + ewarn "Make sure to read the release notes and follow the upgrade process:" + ewarn " https://docs.mongodb.com/manual/release-notes/$(ver_cut 1-2)/" + ewarn " https://docs.mongodb.com/manual/release-notes/$(ver_cut 1-2)/#upgrade-procedures" +} diff --git a/dev-db/mongodb/mongodb-5.0.26.ebuild b/dev-db/mongodb/mongodb-5.0.26.ebuild new file mode 100644 index 000000000000..f40515d8f961 --- /dev/null +++ b/dev-db/mongodb/mongodb-5.0.26.ebuild @@ -0,0 +1,205 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{10..12} ) + +SCONS_MIN_VERSION="3.3.1" +CHECKREQS_DISK_BUILD="2400M" +CHECKREQS_DISK_USR="512M" +CHECKREQS_MEMORY="1024M" + +inherit check-reqs flag-o-matic multiprocessing pax-utils python-any-r1 scons-utils systemd toolchain-funcs + +MY_PV=r${PV/_rc/-rc} +MY_P=mongo-${MY_PV} + +DESCRIPTION="A high-performance, open source, schema-free document-oriented database" +HOMEPAGE="https://www.mongodb.com" +SRC_URI="https://github.com/mongodb/mongo/archive/refs/tags/${MY_PV}.tar.gz -> ${P}.gh.tar.gz" +S="${WORKDIR}/${MY_P}" + +LICENSE="Apache-2.0 SSPL-1" +SLOT="0" +KEYWORDS="~amd64 ~arm64 -riscv" +CPU_FLAGS="cpu_flags_x86_avx" +IUSE="debug kerberos mongosh ssl +tools ${CPU_FLAGS}" + +# https://github.com/mongodb/mongo/wiki/Test-The-Mongodb-Server +# resmoke needs python packages not yet present in Gentoo +RESTRICT="test" + +RDEPEND="acct-group/mongodb + acct-user/mongodb + >=app-arch/snappy-1.1.7:= + >=dev-cpp/yaml-cpp-0.6.2:= + dev-libs/boost:=[nls] + >=dev-libs/libpcre-8.42[cxx] + app-arch/zstd:= + dev-libs/snowball-stemmer:= + >=sys-libs/zlib-1.2.12:= + kerberos? ( dev-libs/cyrus-sasl[kerberos] ) + ssl? ( + >=dev-libs/openssl-1.0.1g:0= + )" +DEPEND="${RDEPEND} + ${PYTHON_DEPS} + sys-libs/ncurses:0= + sys-libs/readline:0= + debug? ( dev-debug/valgrind )" +BDEPEND=" + $(python_gen_any_dep ' + >=dev-build/scons-3.1.1[${PYTHON_USEDEP}] + dev-python/cheetah3[${PYTHON_USEDEP}] + dev-python/psutil[${PYTHON_USEDEP}] + dev-python/pyyaml[${PYTHON_USEDEP}] + ') +" +PDEPEND=" + mongosh? ( app-admin/mongosh-bin ) + tools? ( >=app-admin/mongo-tools-100 ) +" + +PATCHES=( + "${FILESDIR}/${PN}-4.4.1-boost.patch" + "${FILESDIR}/${PN}-4.4.1-gcc11.patch" + "${FILESDIR}/${PN}-5.0.2-fix-scons.patch" + "${FILESDIR}/${PN}-5.0.2-no-compass.patch" + "${FILESDIR}/${PN}-5.0.2-skip-no-exceptions.patch" + "${FILESDIR}/${PN}-5.0.2-skip-reqs-check.patch" + "${FILESDIR}/${PN}-5.0.2-boost-1.79.patch" + "${FILESDIR}/${PN}-5.0.5-no-force-lld.patch" + "${FILESDIR}/${PN}-4.4.10-boost-1.81.patch" + "${FILESDIR}/${PN}-5.0.5-boost-1.81-extra.patch" + "${FILESDIR}/${PN}-4.4.29-no-enterprise.patch" +) + +python_check_deps() { + python_has_version -b ">=dev-build/scons-3.1.1[${PYTHON_USEDEP}]" && + python_has_version -b "dev-python/cheetah3[${PYTHON_USEDEP}]" && + python_has_version -b "dev-python/psutil[${PYTHON_USEDEP}]" && + python_has_version -b "dev-python/pyyaml[${PYTHON_USEDEP}]" +} + +pkg_pretend() { + # Bug 809692 + 890294 + if use amd64 && ! use cpu_flags_x86_avx; then + ewarn "MongoDB 5.0 requires use of the AVX instruction set." + ewarn "This ebuild will use --experimental-optimization=-sandybridge which" + ewarn "will result in an experimental build of MongoDB as per upstream." + ewarn "https://docs.mongodb.com/v5.0/administration/production-notes/" + fi + + if [[ -n ${REPLACING_VERSIONS} ]]; then + if ver_test "$REPLACING_VERSIONS" -lt 4.4; then + ewarn "To upgrade from a version earlier than the 4.4-series, you must" + ewarn "successively upgrade major releases until you have upgraded" + ewarn "to 4.4-series. Then upgrade to 5.0 series." + else + ewarn "Be sure to set featureCompatibilityVersion to 4.4 before upgrading." + fi + fi +} + +src_prepare() { + default + + # remove bundled libs + rm -r src/third_party/{boost,pcre-*,snappy-*,yaml-cpp,zlib-*} || die + + # remove compass + rm -r src/mongo/installer/compass || die +} + +src_configure() { + # https://github.com/mongodb/mongo/wiki/Build-Mongodb-From-Source + # --use-system-icu fails tests + # --use-system-tcmalloc is strongly NOT recommended: + # for MONGO_GIT_HASH use GitOrigin-RevId from the commit of the tag + scons_opts=( + AR="$(tc-getAR)" + CC="$(tc-getCC)" + CXX="$(tc-getCXX)" + CCFLAGS="${CXXFLAGS}" + + VERBOSE=1 + VARIANT_DIR=gentoo + MONGO_VERSION="${PV}" + MONGO_GIT_HASH="0b4f1ea980b5380a66425a90b414106a191365f4" + + --disable-warnings-as-errors + --jobs="$(makeopts_jobs)" + --use-system-boost + --use-system-pcre + --use-system-snappy + --use-system-stemmer + --use-system-yaml + --use-system-zlib + --use-system-zstd + ) + + use arm64 && scons_opts+=( --use-hardware-crc32=off ) # Bug 701300 + use amd64 && scons_opts+=( --experimental-optimization=-sandybridge ) # Bug 890294 + use debug && scons_opts+=( --dbg=on ) + use kerberos && scons_opts+=( --use-sasl-client ) + + scons_opts+=( --ssl=$(usex ssl on off) ) + + # Needed to avoid forcing FORTIFY_SOURCE + # Gentoo's toolchain applies these anyway + scons_opts+=( --runtime-hardening=off ) + + # gold is an option here but we don't really do that anymore + if tc-ld-is-lld; then + scons_opts+=( --linker=lld ) + else + scons_opts+=( --linker=bfd ) + fi + + # respect mongoDB upstream's basic recommendations + # see bug #536688 and #526114 + if ! use debug; then + filter-flags '-m*' + filter-flags '-O?' + fi + + default +} + +src_compile() { + PREFIX="${EPREFIX}/usr" ./buildscripts/scons.py "${scons_opts[@]}" install-core || die +} + +src_install() { + dobin build/install/bin/{mongo,mongod,mongos} + + doman debian/mongo*.1 + dodoc README docs/building.md + + newinitd "${FILESDIR}/${PN}.initd-r3" ${PN} + newconfd "${FILESDIR}/${PN}.confd-r3" ${PN} + newinitd "${FILESDIR}/mongos.initd-r3" mongos + newconfd "${FILESDIR}/mongos.confd-r3" mongos + + insinto /etc + newins "${FILESDIR}/${PN}.conf-r3" ${PN}.conf + newins "${FILESDIR}/mongos.conf-r2" mongos.conf + + systemd_newunit "${FILESDIR}/${PN}.service-r1" "${PN}.service" + + insinto /etc/logrotate.d/ + newins "${FILESDIR}/${PN}.logrotate" ${PN} + + # see bug #526114 + pax-mark emr "${ED}"/usr/bin/{mongo,mongod,mongos} + + diropts -m0750 -o mongodb -g mongodb + keepdir /var/log/${PN} +} + +pkg_postinst() { + ewarn "Make sure to read the release notes and follow the upgrade process:" + ewarn " https://docs.mongodb.com/manual/release-notes/$(ver_cut 1-2)/" + ewarn " https://docs.mongodb.com/manual/release-notes/$(ver_cut 1-2)/#upgrade-procedures" +} -- cgit v1.2.3