dev-db/mongodb - 8.0.29 (gentoo)

Search

Install

Install this version:

emerge -a =dev-db/mongodb-8.0.29

If this version is masked, you can unmask it using the autounmask tool or standard emerge options:

autounmask =dev-db/mongodb-8.0.29

Or alternatively:

emerge --autounmask-write -a =dev-db/mongodb-8.0.29

Package Information

Description:
A high-performance, open source, schema-free document-oriented database
Homepage:
https://www.mongodb.com
License:
Apache-2.0 SSPL-1

Ebuild Details

Version EAPI Keywords Slot
8.0.29 8 ~amd64 ~arm64 0
View Raw Ebuild
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

PYTHON_COMPAT=( python3_{12..14} )

CHECKREQS_DISK_BUILD="2500M"
CHECKREQS_DISK_USR="256M"
CHECKREQS_MEMORY="1024M"

inherit edo check-reqs eapi9-ver flag-o-matic multiprocessing pax-utils python-any-r1 systemd toolchain-funcs

BAZEL_VER="7.5.0-mongo_9ea3a8ad9f"
BAZEL_BASE_URL="https://mdb-build-public.s3.amazonaws.com/bazel_binary_waterfall_builds/9ea3a8ad9ffc29090d93780658c3ec19e75d9f17"
BAZEL_BCR_HASH="1451bc41ab31a6908b7bd0056797b5ea273c9fd8"

MY_PV=r${PV/_rc/-rc}

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
	amd64? (
		${BAZEL_BASE_URL}/${BAZEL_VER}/bazel-${BAZEL_VER}-linux-x86_64
		https://github.com/mikefarah/yq/releases/download/v4.25.2/yq_linux_amd64
	)
	arm64? (
		${BAZEL_BASE_URL}/${BAZEL_VER}/bazel-${BAZEL_VER}-linux-arm64
		https://github.com/mikefarah/yq/releases/download/v4.25.2/yq_linux_arm64
	)
	https://github.com/bazelbuild/bazel-central-registry/archive/${BAZEL_BCR_HASH}.tar.gz
		-> ${PN}-bcr-${BAZEL_BCR_HASH}.tar.gz
	https://github.com/bats-core/bats-core/archive/v1.10.0.tar.gz
		-> ${PN}-bats-core__v1.10.0.tar.gz
	https://github.com/bazelbuild/rules_proto/archive/refs/tags/5.3.0-21.7.tar.gz
		-> ${PN}-rules-proto__5.3.0-21.7.tar.gz
	https://github.com/keith/buildifier-prebuilt/archive/refs/tags/6.4.0.tar.gz
		-> ${PN}-buildifier-prebuilt__6.4.0.tar.gz
	https://github.com/mongodb-forks/bazel_clang_tidy/archive/33c9013349b6178897598e67929201356b0ad5ea.tar.gz
		-> ${PN}-bazel_clang_tidy__33c9013349b6178897598e67929201356b0ad5ea.tar.gz
	https://github.com/aspect-build/rules_js/releases/download/v2.1.3/rules_js-v2.1.3.tar.gz
	https://github.com/bazel-contrib/bazel-lib/releases/download/v2.13.0/bazel-lib-v2.13.0.tar.gz
	https://github.com/bazel-contrib/bazel_features/releases/download/v1.37.0/bazel_features-v1.37.0.tar.gz
	https://github.com/bazel-contrib/rules_nodejs/releases/download/v6.3.0/rules_nodejs-v6.3.0.tar.gz
	https://github.com/bazelbuild/apple_support/releases/download/1.17.1/apple_support.1.17.1.tar.gz
	https://github.com/bazelbuild/bazel-skylib/releases/download/1.7.1/bazel-skylib-1.7.1.tar.gz
	https://github.com/bazelbuild/platforms/releases/download/0.0.9/platforms-0.0.9.tar.gz
	https://github.com/bazelbuild/rules_cc/releases/download/0.0.16/rules_cc-0.0.16.tar.gz
	https://github.com/bazelbuild/rules_java/releases/download/8.5.1/rules_java-8.5.1.tar.gz
	https://github.com/bazelbuild/rules_kotlin/releases/download/v1.9.6/rules_kotlin-v1.9.6.tar.gz
	https://github.com/bazelbuild/rules_license/releases/download/1.0.0/rules_license-1.0.0.tar.gz
	https://github.com/bazelbuild/rules_pkg/releases/download/1.2.0/rules_pkg-1.2.0.tar.gz
	https://github.com/bazelbuild/rules_python/releases/download/1.0.0/rules_python-1.0.0.tar.gz
	https://github.com/bazelbuild/rules_shell/releases/download/v0.2.0/rules_shell-v0.2.0.tar.gz
	https://github.com/protocolbuffers/protobuf/releases/download/v29.0-rc3/protobuf-29.0-rc3.zip
	https://github.com/theoremlp/rules_multitool/releases/download/v0.4.0/rules_multitool-0.4.0.tar.gz
	https://registry.npmjs.org/eslint/-/eslint-9.19.0.tgz
	https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz
"
S="${WORKDIR}/mongo-${MY_PV}"

LICENSE="Apache-2.0 SSPL-1"
SLOT="0"
KEYWORDS="~amd64 ~arm64"
IUSE="debug ssl"

# 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
	net-misc/curl
	ssl? ( >=dev-libs/openssl-3.0.0:0= )
"
DEPEND="${RDEPEND}"
BDEPEND="
	$(python_gen_any_dep '
		dev-python/cheetah3[${PYTHON_USEDEP}]
		dev-python/pyyaml[${PYTHON_USEDEP}]
		dev-python/pymongo[${PYTHON_USEDEP}]
		dev-python/packaging[${PYTHON_USEDEP}]
	')
	dev-lang/perl
"
PATCHES=(
	"${FILESDIR}/${P}-add-missing-mongos-dependency.patch"
	"${FILESDIR}/${P}-disable-bazelisk-check.patch"
	"${FILESDIR}/${P}-fix-build-with-gcc-15.patch"
	"${FILESDIR}/${P}-fix-compiler-names.patch"
	"${FILESDIR}/${P}-fix-toolchain-environment.patch"
	"${FILESDIR}/${P}-override-distro.patch"
	"${FILESDIR}/${P}-remove-mtune-march-cflags.patch"
	"${FILESDIR}/${P}-restore-syscall_h-includes.patch"
	"${FILESDIR}/${P}-use-system-python.patch"
)

python_check_deps() {
	python_has_version -b "dev-python/cheetah3[${PYTHON_USEDEP}]" &&
	python_has_version -b "dev-python/pyyaml[${PYTHON_USEDEP}]" &&
	python_has_version -b "dev-python/pymongo[${PYTHON_USEDEP}]" &&
	python_has_version -b "dev-python/packaging[${PYTHON_USEDEP}]"
}

ebazel() {
	debug-print-function ${FUNCNAME} "${@}"

	edo "${WORKDIR}"/bazel "$@"
}

src_unpack() {
	case $(tc-arch) in
		amd64)	export EARCH=x86_64 ;;
		arm64)	export EARCH=arm64 ;;
		*)	die "architecture not supported: $(tc-arch)" ;;
	esac
	cp "${DISTDIR}/bazel-${BAZEL_VER}-linux-${EARCH}" bazel || die
	chmod +x bazel || die

	mkdir bazel_out || die

	unpack ${PN}-bcr-${BAZEL_BCR_HASH}.tar.gz
	ln -s bazel-central-registry-${BAZEL_BCR_HASH} bcr || die

	mkdir bazel_dist || die
	pushd "${DISTDIR}" >/dev/null || die
	local dep
	for dep in *; do
		ln -sfT "${DISTDIR}/${dep}" "${WORKDIR}/bazel_dist/${dep#*__}" || die
	done
	popd >/dev/null || die

	unpack ${P}.gh.tar.gz
}

pkg_pretend() {
	if [[ -n ${REPLACING_VERSIONS} ]]; then
		if ver_replacing -lt 7.0; then
			ewarn "To upgrade from a version earlier than 7.0, you must"
			ewarn "successively upgrade major releases until you have upgraded"
			ewarn "to 7.0. Then upgrade to 8.0."
		else
			ewarn "Be sure to set featureCompatibilityVersion to 7.0 before upgrading."
		fi
	fi
}

src_prepare() {
	default

	# remove enterprise files from build
	sed -i '/enterprise/d' src/BUILD.bazel || die

	# remove compass
	rm -r src/mongo/installer/compass || die

	# remove all references to poetry
	find "${S}" -name '*.b*z*l' -exec perl -0 -p -i \
		-e 's#load\("\@poetry//.+?"\)\s*##gm;' \
		-e 's#dependency\(.*?\),?##gs;' {} \; || die
}

src_configure() {
	# bug #954813
	filter-lto

	tc-export CC CXX AR

	MYEBAZELARGS=(
		--config=public-release
		--compiler=$(tc-getCC)
		--host_compiler=$(tc-getBUILD_CC)
		--compilation_mode=$(usex debug dbg opt)
		--distdir="${WORKDIR}/bazel_dist"
		--jobs=$(get_makeopts_jobs)
		--registry="file://${WORKDIR}/bcr"
		--repository_cache="${WORKDIR}/bazel_cache"
		--spawn_strategy=local
		--strip=$(usex debug never always)
		--subcommands
		--verbose_failures
		--noshow_progress
		--define=MONGO_VERSION="${PV}"
		--define=MONGO_DISTMOD=gentoo
		--repo_env=BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=0
		--features=external_include_paths
		--host_features=external_include_paths
		--features=-per_object_debug_info
		--host_features=-per_object_debug_info
		--separate_debug=False
		--build_enterprise=False
		--disable_warnings_as_errors=True
		--dbg=$(usex debug True False)
		--debug_symbols=$(usex debug True False)
		--ssl=$(usex ssl True False)
	)

	# several .cpp files attempt to compile with -std=c++17 and fail
	append-cxxflags -std=c++20

	# these defines are expected by build system and were placed inside
	# the mongo_linux toolchain that we bypassed
	append-cppflags -D_XOPEN_SOURCE=700 -D_GNU_SOURCE

	# -Werror is injected in a few places
	append-flags -Wno-error

	# strict aliasing is broken
	append-flags -fno-strict-aliasing

	# missing library reference in link stage
	append-libs -lresolv

	# the only valid options for --linker are auto, lld, and mold
	# auto is default and will set linker to lld on linux
	# it explicitly passes -fuse-ld and there is no option
	# to bypass this
	if tc-ld-is-mold; then
		MYEBAZELARGS+=( --linker=mold )
	elif tc-ld-is-gold; then
		append-ldflags -fuse-ld=gold
		BUILD_LDFLAGS="${BUILD_LDFLAGS} -fuse-ld=gold"
	elif tc-ld-is-bfd; then
		append-ldflags -fuse-ld=bfd
		BUILD_LDFLAGS="${BUILD_LDFLAGS} -fuse-ld=bfd"
	fi

	# .bazelrc unconditionally sets compiler-type to clang
	if tc-is-gcc; then
		MYEBAZELARGS+=( --compiler_type=gcc )
	fi

	local flags

	for flags in ${CPPFLAGS}; do
		MYEBAZELARGS+=( --copt="${flags}" )
	done

	for flags in ${CFLAGS}; do
		MYEBAZELARGS+=( --conlyopt="${flags}" )
	done

	for flags in ${CXXFLAGS}; do
		MYEBAZELARGS+=( --cxxopt="${flags}" )
	done

	for flags in ${LDFLAGS} ${LIBS}; do
		MYEBAZELARGS+=( --linkopt="${flags}" )
	done

	for flags in ${BUILD_CPPFLAGS}; do
		MYEBAZELARGS+=( --host_copt="${flags}" )
	done

	for flags in ${BUILD_CFLAGS}; do
		MYEBAZELARGS+=( --host_conlyopt="${flags}" )
	done

	for flags in ${BUILD_CXXFLAGS}; do
		MYEBAZELARGS+=( --host_cxxopt="${flags}" )
	done

	for flags in ${BUILD_LDFLAGS}; do
		MYEBAZELARGS+=( --host_linkopt="${flags}" )
	done

	# clean cache, just in case
	ebazel --output_base="${WORKDIR}/bazel_out" clean --expunge

	# this build --nobuild generates bazel_cache
	# this is useful to debug or make patch
	ebazel --output_base="${WORKDIR}/bazel_out" build --nobuild install-devcore "${MYEBAZELARGS[@]}"
}

src_compile() {
	ebazel --output_base="${WORKDIR}/bazel_out" build install-devcore "${MYEBAZELARGS[@]}"
}

src_install() {
	dobin bazel-bin/install/bin/{mongo,mongod,mongos}

	doman debian/mongo*.1
	dodoc 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"
	ewarn
	ewarn "app-admin/mongosh-bin and app-admin/mongo-tools are no longer pulled in by USE flags."
	ewarn "You will need to install them separately if you want to use them."
}

USE Flags

Manage flags for this package: euse -i <flag> -p dev-db/mongodb | euse -E <flag> -p dev-db/mongodb | euse -D <flag> -p dev-db/mongodb

Global/Standard Flags

ssl

Inherited Eclasses

edo

Dependencies

DEPEND

	acct-group/mongodb
	acct-user/mongodb
	net-misc/curl
	ssl? ( >=dev-libs/openssl-3.0.0:0= )

RDEPEND

	acct-group/mongodb
	acct-user/mongodb
	net-misc/curl
	ssl? ( >=dev-libs/openssl-3.0.0:0= )

BDEPEND

	$(python_gen_any_dep '
		dev-python/cheetah3[${PYTHON_USEDEP}]
		dev-python/pyyaml[${PYTHON_USEDEP}]
		dev-python/pymongo[${PYTHON_USEDEP}]
		dev-python/packaging[${PYTHON_USEDEP}]
	')
	dev-lang/perl

Manifest for 8.0.29

Type File Size Source URLs
DIST apple_support.1.17.1.tar.gz 86184 bytes https://github.com/bazelbuild/apple_support/releases/download/1.17.1/apple_support.1.17.1.tar.gz
DIST bazel-7.5.0-mongo_9ea3a8ad9f-linux-arm64 56161078 bytes https://mdb-build-public.s3.amazonaws.com/bazel_binary_waterfall_builds/9ea3a8ad9ffc29090d93780658c3ec19e75d9f17/7.5.0-mongo_9ea3a8ad9f/bazel-7.5.0-mongo_9ea3a8ad9f-linux-arm64
DIST bazel-7.5.0-mongo_9ea3a8ad9f-linux-x86_64 57583451 bytes https://mdb-build-public.s3.amazonaws.com/bazel_binary_waterfall_builds/9ea3a8ad9ffc29090d93780658c3ec19e75d9f17/7.5.0-mongo_9ea3a8ad9f/bazel-7.5.0-mongo_9ea3a8ad9f-linux-x86_64
DIST bazel-lib-v2.13.0.tar.gz 186419 bytes https://github.com/bazel-contrib/bazel-lib/releases/download/v2.13.0/bazel-lib-v2.13.0.tar.gz
DIST bazel-skylib-1.7.1.tar.gz 43566 bytes https://github.com/bazelbuild/bazel-skylib/releases/download/1.7.1/bazel-skylib-1.7.1.tar.gz
DIST bazel_features-v1.37.0.tar.gz 17596 bytes https://github.com/bazel-contrib/bazel_features/releases/download/v1.37.0/bazel_features-v1.37.0.tar.gz
DIST eslint-9.19.0.tgz 616480 bytes https://registry.npmjs.org/eslint/-/eslint-9.19.0.tgz
DIST mongodb-8.0.29.gh.tar.gz 88788792 bytes https://github.com/mongodb/mongo/archive/refs/tags/r8.0.29.tar.gz
DIST mongodb-bats-core__v1.10.0.tar.gz 159353 bytes https://github.com/bats-core/bats-core/archive/v1.10.0.tar.gz
DIST mongodb-bazel_clang_tidy__33c9013349b6178897598e67929201356b0ad5ea.tar.gz 8578 bytes https://github.com/mongodb-forks/bazel_clang_tidy/archive/33c9013349b6178897598e67929201356b0ad5ea.tar.gz
DIST mongodb-bcr-1451bc41ab31a6908b7bd0056797b5ea273c9fd8.tar.gz 9293608 bytes https://github.com/bazelbuild/bazel-central-registry/archive/1451bc41ab31a6908b7bd0056797b5ea273c9fd8.tar.gz
DIST mongodb-buildifier-prebuilt__6.4.0.tar.gz 19566 bytes https://github.com/keith/buildifier-prebuilt/archive/refs/tags/6.4.0.tar.gz
DIST mongodb-rules-proto__5.3.0-21.7.tar.gz 15191 bytes https://github.com/bazelbuild/rules_proto/archive/refs/tags/5.3.0-21.7.tar.gz
DIST platforms-0.0.9.tar.gz 7562 bytes https://github.com/bazelbuild/platforms/releases/download/0.0.9/platforms-0.0.9.tar.gz
DIST prettier-3.4.2.tgz 2020270 bytes https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz
DIST protobuf-29.0-rc3.zip 11173263 bytes https://github.com/protocolbuffers/protobuf/releases/download/v29.0-rc3/protobuf-29.0-rc3.zip
DIST rules_cc-0.0.16.tar.gz 168357 bytes https://github.com/bazelbuild/rules_cc/releases/download/0.0.16/rules_cc-0.0.16.tar.gz
DIST rules_java-8.5.1.tar.gz 103936 bytes https://github.com/bazelbuild/rules_java/releases/download/8.5.1/rules_java-8.5.1.tar.gz
DIST rules_js-v2.1.3.tar.gz 1687483 bytes https://github.com/aspect-build/rules_js/releases/download/v2.1.3/rules_js-v2.1.3.tar.gz
DIST rules_kotlin-v1.9.6.tar.gz 23089629 bytes https://github.com/bazelbuild/rules_kotlin/releases/download/v1.9.6/rules_kotlin-v1.9.6.tar.gz
DIST rules_license-1.0.0.tar.gz 35903 bytes https://github.com/bazelbuild/rules_license/releases/download/1.0.0/rules_license-1.0.0.tar.gz
DIST rules_multitool-0.4.0.tar.gz 12263 bytes https://github.com/theoremlp/rules_multitool/releases/download/v0.4.0/rules_multitool-0.4.0.tar.gz
DIST rules_nodejs-v6.3.0.tar.gz 232104 bytes https://github.com/bazel-contrib/rules_nodejs/releases/download/v6.3.0/rules_nodejs-v6.3.0.tar.gz
DIST rules_pkg-1.2.0.tar.gz 94391 bytes https://github.com/bazelbuild/rules_pkg/releases/download/1.2.0/rules_pkg-1.2.0.tar.gz
DIST rules_python-1.0.0.tar.gz 753569 bytes https://github.com/bazelbuild/rules_python/releases/download/1.0.0/rules_python-1.0.0.tar.gz
DIST rules_shell-v0.2.0.tar.gz 14070 bytes https://github.com/bazelbuild/rules_shell/releases/download/v0.2.0/rules_shell-v0.2.0.tar.gz
DIST yq_linux_amd64 10160405 bytes https://github.com/mikefarah/yq/releases/download/v4.25.2/yq_linux_amd64
DIST yq_linux_arm64 9893752 bytes https://github.com/mikefarah/yq/releases/download/v4.25.2/yq_linux_arm64