From a9d6e2dddd7b532b75d97a25c9f3804fc64176b7 Mon Sep 17 00:00:00 2001 From: Bertrand Jacquin Date: Tue, 9 Apr 2024 20:41:33 +0100 Subject: net-p2p/monero: add 9999 --- .../files/monero-9999-Drop-in-tree-miniupnpc.patch | 60 ++++++++++ .../monero-9999-Use-gentoo-dev-libs-randomx.patch | 18 +++ ...monero-9999-build-remove-mcpu-march-mtune.patch | 61 ++++++++++ ...onero-9999-translations-use-host-compiler.patch | 43 +++++++ net-p2p/monero/monero-9999.ebuild | 128 +++++++++++++++++++++ 5 files changed, 310 insertions(+) create mode 100644 net-p2p/monero/files/monero-9999-Drop-in-tree-miniupnpc.patch create mode 100644 net-p2p/monero/files/monero-9999-Use-gentoo-dev-libs-randomx.patch create mode 100644 net-p2p/monero/files/monero-9999-build-remove-mcpu-march-mtune.patch create mode 100644 net-p2p/monero/files/monero-9999-translations-use-host-compiler.patch create mode 100644 net-p2p/monero/monero-9999.ebuild (limited to 'net-p2p/monero') diff --git a/net-p2p/monero/files/monero-9999-Drop-in-tree-miniupnpc.patch b/net-p2p/monero/files/monero-9999-Drop-in-tree-miniupnpc.patch new file mode 100644 index 00000000..23c13dcf --- /dev/null +++ b/net-p2p/monero/files/monero-9999-Drop-in-tree-miniupnpc.patch @@ -0,0 +1,60 @@ +From 016ecdb58767bc1f44dcc3a00d79b44a739672eb Mon Sep 17 00:00:00 2001 +From: Bertrand Jacquin +Date: Sun, 17 Jun 2018 22:34:11 +0100 +Subject: [PATCH] Drop in-tree miniupnpc + +Since 6b8539803184 ("Build: update CMake and p2p for in-tree +miniupnp"), a hard dependency is made on miniupnpc which is a git +submodule not part of the archive available upstream. +--- + external/CMakeLists.txt | 19 +++---------------- + src/p2p/net_node.inl | 6 +++--- + 2 files changed, 6 insertions(+), 19 deletions(-) + +diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt +index 8deadc7ba63d..85db7880bd05 100644 +--- a/external/CMakeLists.txt ++++ b/external/CMakeLists.txt +@@ -36,22 +36,9 @@ + # others. + + find_package(Miniupnpc REQUIRED) +- +-message(STATUS "Using in-tree miniupnpc") +-set(UPNPC_NO_INSTALL TRUE CACHE BOOL "Disable miniupnp installation" FORCE) +-add_subdirectory(miniupnp/miniupnpc) +-set_property(TARGET libminiupnpc-static PROPERTY FOLDER "external") +-set_property(TARGET libminiupnpc-static PROPERTY POSITION_INDEPENDENT_CODE ON) +-if(MSVC) +- set_property(TARGET libminiupnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -wd4244 -wd4267") +-elseif(NOT MSVC) +- set_property(TARGET libminiupnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-undef -Wno-unused-result -Wno-unused-value") +-endif() +-if(CMAKE_SYSTEM_NAME MATCHES "NetBSD") +- set_property(TARGET libminiupnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -D_NETBSD_SOURCE") +-endif() +- +-set(UPNP_LIBRARIES "libminiupnpc-static" PARENT_SCOPE) ++set(UPNP_STATIC false PARENT_SCOPE) ++set(UPNP_INCLUDE ${MINIUPNP_INCLUDE_DIR} PARENT_SCOPE) ++set(UPNP_LIBRARIES ${MINIUPNP_LIBRARY} PARENT_SCOPE) + + find_package(Unbound) + +diff --git a/src/p2p/net_node.inl b/src/p2p/net_node.inl +index 815c1b354ef2..40205f50ca8b 100644 +--- a/src/p2p/net_node.inl ++++ b/src/p2p/net_node.inl +@@ -58,9 +58,9 @@ + #include "cryptonote_core/cryptonote_core.h" + #include "net/parse.h" + +-#include +-#include +-#include ++#include ++#include ++#include + + #undef MONERO_DEFAULT_LOG_CATEGORY + #define MONERO_DEFAULT_LOG_CATEGORY "net.p2p" diff --git a/net-p2p/monero/files/monero-9999-Use-gentoo-dev-libs-randomx.patch b/net-p2p/monero/files/monero-9999-Use-gentoo-dev-libs-randomx.patch new file mode 100644 index 00000000..a30def3a --- /dev/null +++ b/net-p2p/monero/files/monero-9999-Use-gentoo-dev-libs-randomx.patch @@ -0,0 +1,18 @@ +From ceb7f16d984c555cdeadda818516d2359857f8a5 Mon Sep 17 00:00:00 2001 +From: Bertrand Jacquin +Date: Wed, 6 Nov 2019 01:23:52 +0000 +Subject: [PATCH] Use gentoo dev-libs/randomx + +--- + external/CMakeLists.txt | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt +index 85db7880bd05..802fd6fd2525 100644 +--- a/external/CMakeLists.txt ++++ b/external/CMakeLists.txt +@@ -56,4 +56,3 @@ endif() + add_subdirectory(db_drivers) + add_subdirectory(easylogging++) + add_subdirectory(qrcodegen) +-add_subdirectory(randomx EXCLUDE_FROM_ALL) diff --git a/net-p2p/monero/files/monero-9999-build-remove-mcpu-march-mtune.patch b/net-p2p/monero/files/monero-9999-build-remove-mcpu-march-mtune.patch new file mode 100644 index 00000000..7c299d1d --- /dev/null +++ b/net-p2p/monero/files/monero-9999-build-remove-mcpu-march-mtune.patch @@ -0,0 +1,61 @@ +From 67d346887218546c8d3c232136329be3f9a112dd Mon Sep 17 00:00:00 2001 +From: Bertrand Jacquin +Date: Tue, 9 Apr 2024 21:47:47 +0100 +Subject: [PATCH] build: remove mcpu/march/mtune + +cc1plus: warning: switch '-mcpu=neoverse-n1+crc+crypto+ssbs' conflicts with '-march=armv8-a+crypto' switch +--- + CMakeLists.txt | 33 +-------------------------------- + 1 file changed, 1 insertion(+), 32 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 6de0b2a647f1..cc9c9bdc621f 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -717,32 +717,6 @@ if(MSVC) + else() + include(TestCXXAcceptsFlag) + message(STATUS "Building on ${CMAKE_SYSTEM_PROCESSOR} for ${ARCH}") +- if(ARCH STREQUAL "default") +- set(ARCH_FLAG "") +- elseif(PPC64LE) +- set(ARCH_FLAG "-mcpu=power8") +- elseif(PPC64) +- set(ARCH_FLAG "-mcpu=970") +- elseif(PPC) +- set(ARCH_FLAG "-mcpu=7400") +- elseif(IOS AND ARCH STREQUAL "arm64") +- message(STATUS "IOS: Changing arch from arm64 to armv8") +- set(ARCH_FLAG "-march=armv8") +- else() +- set(ARCH_FLAG "-march=${ARCH}") +- if(ARCH STREQUAL "native") +- check_c_compiler_flag(-march=native CC_SUPPORTS_MARCH_NATIVE) +- if (NOT CC_SUPPORTS_MARCH_NATIVE) +- check_c_compiler_flag(-mtune=native CC_SUPPORTS_MTUNE_NATIVE) +- if (CC_SUPPORTS_MTUNE_NATIVE) +- set(ARCH_FLAG "-mtune=${ARCH}") +- else() +- set(ARCH_FLAG "") +- endif() +- endif() +- endif() +- endif() +- + option(NO_AES "Explicitly disable AES support" ${NO_AES}) + + if(NO_AES) +@@ -765,12 +739,7 @@ else() + message(STATUS "AES support not available on ARMv7") + elseif(ARM8) + CHECK_CXX_ACCEPTS_FLAG("-march=${ARCH}+crypto" ARCH_PLUS_CRYPTO) +- if(ARCH_PLUS_CRYPTO) +- message(STATUS "Crypto extensions enabled for ARMv8") +- set(ARCH_FLAG "-march=${ARCH}+crypto") +- else() +- message(STATUS "Crypto extensions unavailable on your ARMv8 device") +- endif() ++ message(STATUS "${ARCH_PLUS_CRYPTO}") + else() + message(STATUS "AES support disabled") + endif() diff --git a/net-p2p/monero/files/monero-9999-translations-use-host-compiler.patch b/net-p2p/monero/files/monero-9999-translations-use-host-compiler.patch new file mode 100644 index 00000000..3d6fbb7a --- /dev/null +++ b/net-p2p/monero/files/monero-9999-translations-use-host-compiler.patch @@ -0,0 +1,43 @@ +From 11dff579c6a9e580c18dcee930b2c448a92857bc Mon Sep 17 00:00:00 2001 +From: Bertrand Jacquin +Date: Sat, 30 Nov 2019 02:09:14 +0000 +Subject: [PATCH] translations: use host compiler + +Do not pass target compiler and compiler flags as +generate_translations_header need to be created using host compiler and +compiler flags +--- + CMakeLists.txt | 4 +++- + translations/CMakeLists.txt | 4 ++++ + 2 files changed, 7 insertions(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 6ffdaeb55edd..6de0b2a647f1 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -671,7 +671,9 @@ ExternalProject_Add(generate_translations_header + SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/translations" + BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/translations" + STAMP_DIR ${LRELEASE_PATH} +- CMAKE_ARGS -DLRELEASE_PATH=${LRELEASE_PATH} ++ CMAKE_ARGS ++ -DCMAKE_TOOLCHAIN_FILE=${CMAKE_CURRENT_BINARY_DIR}/translations.cmake ++ -DLRELEASE_PATH=${LRELEASE_PATH} + INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "") + include_directories("${CMAKE_CURRENT_BINARY_DIR}/translations") + add_subdirectory(external) +diff --git a/translations/CMakeLists.txt b/translations/CMakeLists.txt +index 8abebf67310d..e7518d1279ea 100644 +--- a/translations/CMakeLists.txt ++++ b/translations/CMakeLists.txt +@@ -30,6 +30,10 @@ cmake_minimum_required(VERSION 3.5) + + project(translations) + ++# Ensure LDFLAGS for target are not propagated here since target are ++# meant for host ++UNSET(ENV{LDFLAGS}) ++ + # when crosscompiling import the executable targets from a file + IF(CMAKE_CROSSCOMPILING) + message(WARNING "CrossCompiling") diff --git a/net-p2p/monero/monero-9999.ebuild b/net-p2p/monero/monero-9999.ebuild new file mode 100644 index 00000000..26f4d500 --- /dev/null +++ b/net-p2p/monero/monero-9999.ebuild @@ -0,0 +1,128 @@ +# 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}-Drop-in-tree-miniupnpc.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" +) + +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 +} -- cgit v1.2.3