# 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 cmake flag-o-matic toolchain-funcs python-any-r1 systemd qmake-utils DESCRIPTION="Secure, private, untraceable cryptocurrency" HOMEPAGE="https://getmonero.org" EGIT_COMMIT_EXTERNAL_TREZOR_COMMON="028c9b2e95d83b4164748a12cfdc181f0dd11920" EGIT_COMMIT_EXTERNAL_SUPERCOP="633500ad8c8759995049ccd022107d1fa8a1bbc9" EGIT_COMMIT_EXTERNAL_QUIRC="516d91a94d880ca1006fc1d57f318bdff8411f0d" SRC_URI="https://github.com/monero-project/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz https://github.com/trezor/trezor-common/archive/${EGIT_COMMIT_EXTERNAL_TREZOR_COMMON}.tar.gz -> trezor-common-${EGIT_COMMIT_EXTERNAL_TREZOR_COMMON}.tar.gz https://github.com/monero-project/supercop/archive/${EGIT_COMMIT_EXTERNAL_SUPERCOP}.tar.gz -> supercop-${EGIT_COMMIT_EXTERNAL_SUPERCOP}.tar.gz qt5? ( https://github.com/monero-project/${PN}-gui/archive/refs/tags/v${PV}.tar.gz -> ${PN}-gui-${PV}.tar.gz https://github.com/dlbeer/quirc/archive/${EGIT_COMMIT_EXTERNAL_QUIRC}.tar.gz -> quirc-${EGIT_COMMIT_EXTERNAL_QUIRC}.tar.gz )" LICENSE="NEWLIB" SLOT="0/${PV}" KEYWORDS="~amd64 ~arm64" CPU_FLAGS="cpu_flags_arm_aes cpu_flags_x86_aes" IUSE="doc qt5 nls readline smartcard ${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:= ) smartcard? ( >=dev-libs/hidapi-0.11.0:= virtual/libusb:= virtual/libudev:= dev-libs/protobuf:= ) qt5? ( dev-qt/qtconcurrent:5 dev-qt/qtcore:5 dev-qt/qtgui:5 dev-qt/qtdeclarative:5 dev-qt/qtnetwork:5 dev-qt/qtsvg:5 dev-qt/qtxmlpatterns:5[qml] dev-qt/qtwidgets:5 dev-qt/qtmultimedia:5 dev-qt/qtquickcontrols:5 dev-qt/qtquickcontrols2:5 dev-qt/qtgraphicaleffects:5 dev-libs/libgcrypt:= media-fonts/fontawesome[ttf] ) acct-user/monero acct-group/monero" DEPEND="${RDEPEND} nls? ( dev-qt/linguist-tools )" BDEPEND="${PYTHON_DEPS} doc? ( media-gfx/graphviz app-text/doxygen ) qt5? ( dev-qt/linguist-tools:5 ) smartcard? ( $(python_gen_any_dep 'dev-python/protobuf-python[${PYTHON_USEDEP}]') )" 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-versioning.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" ) PATCHES_MONERO_GUI=( "${FILESDIR}/monero-gui-${PV}-cmake-use-gentoo-versioning.patch" ) CMAKE_BUILD_TYPE=Release src_unpack() { default rm -rf "${S}/external/trezor-common" || die ln -snf "${WORKDIR}/trezor-common-${EGIT_COMMIT_EXTERNAL_TREZOR_COMMON}" "${S}/external/trezor-common" || die rm -rf "${S}/external/supercop" || die ln -snf "${WORKDIR}/supercop-${EGIT_COMMIT_EXTERNAL_SUPERCOP}" "${S}/external/supercop" || die if use qt5 ; then rm -rf "${WORKDIR}/monero-gui-${PV}/monero" || die ln -snf "${WORKDIR}/monero-${PV}" "${WORKDIR}/monero-gui-${PV}/monero" || die rm -rf "${WORKDIR}/monero-gui-${PV}/external/quirc" || die ln -snf "${WORKDIR}/quirc-${EGIT_COMMIT_EXTERNAL_QUIRC}" "${WORKDIR}/monero-gui-${PV}/external/quirc" || die fi } src_prepare() { export AR=$(tc-getAR) export CC=$(tc-getCC) export CXX=$(tc-getCXX) tc-export_build_env BUILD_C{C,XX} # Needed for lrelease export PATH="${PATH}:$(qt5_get_bindir)" || die 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 if use qt5 ; then CMAKE_USE_DIR="${WORKDIR}/monero-gui-${PV}" BUILD_DIR="${WORKDIR}/monero-gui-${PV}_build" pushd "${CMAKE_USE_DIR}" > /dev/null || die S="${CMAKE_USE_DIR}" PATCHES="${PATCHES_MONERO_GUI[@]}" cmake_src_prepare popd > /dev/null || die fi } src_configure() { local mycmakeargs local cmakeargs_monero=( -Wno-dev -DBUILD_TAG="$(tc-arch)" -DUSE_CCACHE=OFF -DPYTHON_EXECUTABLE="${PYTHON}" -DBUILD_DOCUMENTATION="$(usex doc ON OFF)" -DBUILD_TESTS=OFF -DUSE_READLINE="$(usex readline ON OFF)" -DUSE_DEVICE_TREZOR="$(usex smartcard ON OFF)" -DBUILD_GUI_DEPS="$(usex qt5 ON 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 local cmakeargs_monerogui=( "${cmakeargs_monero[@]}" -DWITH_DESKTOP_ENTRY=ON -DWITH_SCANNER=ON -DWITH_UPDATER=OFF -DDEV_MODE=OFF ) 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 if use qt5 ; then mkdir -p "${WORKDIR}/monero-gui-${PV}_build/monero" || die cp "${WORKDIR}/monero-${PV}_build/translations.cmake" "${WORKDIR}/monero-gui-${PV}_build/monero/translations.cmake" || die CMAKE_USE_DIR="${WORKDIR}/monero-gui-${PV}" BUILD_DIR="${WORKDIR}/monero-gui-${PV}_build" mycmakeargs=( ${cmakeargs_monerogui[@]} ) cmake_src_configure fi } src_compile() { CMAKE_USE_DIR="${WORKDIR}/monero-${PV}" BUILD_DIR="${WORKDIR}/monero-${PV}_build" cmake_src_compile if use qt5 ; then CMAKE_USE_DIR="${WORKDIR}/monero-gui-${PV}" BUILD_DIR="${WORKDIR}/monero-gui-${PV}_build" cmake_src_compile fi } src_install() { CMAKE_USE_DIR="${WORKDIR}/monero-${PV}" BUILD_DIR="${WORKDIR}/monero-${PV}_build" cmake_src_install if use qt5 ; then CMAKE_USE_DIR="${WORKDIR}/monero-gui-${PV}" BUILD_DIR="${WORKDIR}/monero-gui-${PV}_build" cmake_src_install fi 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 }