summaryrefslogblamecommitdiff
path: root/net-p2p/monero/monero-9999.ebuild
blob: 0c254aa53ab9bc650fd7e4b261914bd88d958309 (plain) (tree)







































                                                                       



                                                                                      

                                                                       





                                                                                             



















































































                                                                                 
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8
PYTHON_COMPAT=( python3_{11..12} )
CMAKE_MAKEFILE_GENERATOR="emake"
inherit git-r3 cmake flag-o-matic toolchain-funcs python-any-r1 systemd

DESCRIPTION="Secure, private, untraceable cryptocurrency"
HOMEPAGE="https://getmonero.org"

EGIT_REPO_URI="https://github.com/monero-project/monero.git"
EGIT_SUBMODULES=(
	external/trezor-common
	external/supercop
)

LICENSE="NEWLIB"
SLOT="0/${PV}"
CPU_FLAGS="cpu_flags_arm_aes cpu_flags_x86_aes"
IUSE="doc nls readline ${CPU_FLAGS}"

RDEPEND="net-dns/unbound:=[threads]
	>=dev-libs/randomx-1.1.9:=
	net-libs/miniupnpc:=
	dev-libs/openssl:0
	>=dev-libs/boost-1.62:=[icu,nls]
	>=net-libs/zeromq-4.3:=[sodium]
	dev-libs/rapidjson:=
	readline? ( sys-libs/readline:= )
	acct-user/monero
	acct-group/monero"
DEPEND="${RDEPEND}"
BDEPEND="${PYTHON_DEPS}
	doc? (
		media-gfx/graphviz
		app-text/doxygen
	)"

PATCHES_MONERO=(
	"${FILESDIR}/monero-${PV}-upnp-drop-in-tree-miniupnpc.patch"
	"${FILESDIR}/monero-${PV}-upnp-add-support-for-miniupnpc-API-version-18.patch"
	"${FILESDIR}/monero-${PV}-upnp-fix-warning.patch"
	"${FILESDIR}/monero-${PV}-use-gentoo-dev-libs-randomx.patch"
	"${FILESDIR}/monero-${PV}-translations-use-host-compiler.patch"
	"${FILESDIR}/monero-${PV}-build-remove-mcpu-march-mtune.patch"

	"${FILESDIR}/monero-${PV}-net-define-IPv4-object-explicitly.patch"
	"${FILESDIR}/monero-${PV}-net-bring-consistency-between-IPv4-port-and-IPv6-por.patch"
	"${FILESDIR}/monero-${PV}-net-add-retro-compatibility-with-legacy-IPv4-options.patch"
	"${FILESDIR}/monero-${PV}-dns-perform-AAAA-resolution.patch"
	"${FILESDIR}/monero-${PV}-net-enable-IPv6-by-default.patch"
)

CMAKE_BUILD_TYPE=Release

src_prepare() {
	export AR=$(tc-getAR)
	export CC=$(tc-getCC)
	export CXX=$(tc-getCXX)
	tc-export_build_env BUILD_C{C,XX}

	append-cflags -DUSE_EXTRA_EC_CERT
	append-cxxflags -DUSE_EXTRA_EC_CERT

	CMAKE_USE_DIR="${WORKDIR}/monero-${PV}"
	BUILD_DIR="${WORKDIR}/monero-${PV}_build"
	pushd "${CMAKE_USE_DIR}" > /dev/null || die
	S="${CMAKE_USE_DIR}" PATCHES="${PATCHES_MONERO[@]}" cmake_src_prepare
	popd > /dev/null || die
}

src_configure() {
	local mycmakeargs
	local cmakeargs_monero=(
		-Wno-dev
		-DBUILD_TAG="$(tc-arch)"
		-DARCH="native"
		-DUSE_CCACHE=OFF
		-DPYTHON_EXECUTABLE="${PYTHON}"
		-DBUILD_DOCUMENTATION="$(usex doc ON OFF)"
		-DBUILD_TESTS=OFF
		-DUSE_READLINE="$(usex readline ON OFF)"
		-DUSE_DEVICE_TREZOR=OFF
		-DBUILD_GUI_DEPS=OFF
		-DSTACK_TRACE=OFF
		-DBUILD_SHARED_LIBS=OFF
		-DMANUAL_SUBMODULES=ON
	)

	if use cpu_flags_arm_aes || use cpu_flags_x86_aes ; then
		cmakeargs_monero+=( -DNO_AES=OFF )
	else
		cmakeargs_monero+=( -DNO_AES=ON )
	fi

	export DATABASE="lmdb"
	export DEVELOPER_LOCAL_TOOLS=0
	export DEVELOPER_LIBUNBOUND_OLD=0

	cat > "${WORKDIR}/monero-${PV}_build/translations.cmake" <<- _EOF_ || die
		SET (CMAKE_C_COMPILER "${BUILD_CC}")
		SET (CMAKE_C_FLAGS "${BUILD_CFLAGS}")
		SET (CMAKE_CXX_COMPILER "${BUILD_CXX}")
		SET (CMAKE_CXX_FLAGS "${BUILD_CXXFLAGS}")
		SET (CMAKE_EXE_LINKER_FLAGS "${BUILD_LDFLAGS}")
		SET (CMAKE_MODULE_LINKER_FLAGS "${BUILD_LDFLAGS}")
		SET (CMAKE_SHARED_LINKER_FLAGS "${BUILD_LDFLAGS}")
_EOF_

	CMAKE_USE_DIR="${WORKDIR}/monero-${PV}"
	BUILD_DIR="${WORKDIR}/monero-${PV}_build"
	mycmakeargs=( ${cmakeargs_monero[@]} )
	cmake_src_configure
}

src_compile() {
	CMAKE_USE_DIR="${WORKDIR}/monero-${PV}"
	BUILD_DIR="${WORKDIR}/monero-${PV}_build"
	cmake_src_compile
}

src_install() {
	CMAKE_USE_DIR="${WORKDIR}/monero-${PV}"
	BUILD_DIR="${WORKDIR}/monero-${PV}_build"
	cmake_src_install

	rm -rf "${ED}/usr/include" || die
	rm -rf "${ED}/usr/lib" || die

	insinto /etc
	doins utils/conf/monerod.conf

	newinitd "${FILESDIR}/monerod.initd" monerod
	systemd_dounit utils/systemd/monerod.service
}