git.iko.soy/typeable/nixpkgs
on master help sign in
monero: force use of system libraries
commitcc90474581424f08ffed9abc3ed159eb96e60a12 authorrnhmjoj <rnhmjoj@inventati.org> dateWed 7 Oct 2020, 17:32 (6 years ago) parente40ede1
2 files changed+89−4
pkgs/applications/blockchains/monero/default.nix+20−4 pkgs/applications/blockchains/monero/use-system-libraries.patch+69
pkgs/applications/blockchains/monero/default.nix+20−4
@@ -2,11 +2,18 @@
22, cmake, pkgconfig
33, boost, miniupnpc, openssl, unbound
44, zeromq, pcsclite, readline, libsodium, hidapi
5−, protobuf, randomx, rapidjson, libusb-compat-0_1
5+, randomx, rapidjson
66, CoreData, IOKit, PCSC
7+, trezorSupport ? true
8+ , libusb1 ? null
9+ , protobuf ? null
10+ , python3 ? null
711}:
812
13+with stdenv.lib;
14+
915assert stdenv.isDarwin -> IOKit != null;
16+assert trezorSupport -> all (x: x!=null) [ libusb1 protobuf python3 ];
1017
1118stdenv.mkDerivation rec {
1219 pname = "monero";
@@ -20,21 +27,30 @@ stdenv.mkDerivation rec {
2027 fetchSubmodules = true;
2128 };
2229
30+ patches = [ ./use-system-libraries.patch ];
31+
32+ postPatch = ''
33+ # remove vendored libraries
34+ rm -r external/{miniupnp,randomx,rapidjson,unbound}
35+ '';
36+
2337 nativeBuildInputs = [ cmake pkgconfig ];
2438
2539 buildInputs = [
2640 boost miniupnpc openssl unbound
2741 zeromq pcsclite readline
2842 libsodium hidapi randomx rapidjson
29− protobuf libusb-compat-0_1
30− ] ++ stdenv.lib.optionals stdenv.isDarwin [ IOKit CoreData PCSC ];
43+ protobuf
44+ ] ++ optionals stdenv.isDarwin [ IOKit CoreData PCSC ]
45+ ++ optionals trezorSupport [ libusb1 protobuf python3 ];
3146
3247 cmakeFlags = [
3348 "-DCMAKE_BUILD_TYPE=Release"
3449 "-DUSE_DEVICE_TREZOR=ON"
3550 "-DBUILD_GUI_DEPS=ON"
3651 "-DReadline_ROOT_DIR=${readline.dev}"
37− ] ++ stdenv.lib.optional stdenv.isDarwin "-DBoost_USE_MULTITHREADED=OFF";
52+ "-DRandomX_ROOT_DIR=${randomx}"
53+ ] ++ optional stdenv.isDarwin "-DBoost_USE_MULTITHREADED=OFF";
3854
3955 meta = with stdenv.lib; {
4056 description = "Private, secure, untraceable currency";
pkgs/applications/blockchains/monero/use-system-libraries.patchnew file+69
@@ -0,0 +1,69 @@
1+diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt
2+index a8916a7d0..39ec7747b 100644
3+--- a/external/CMakeLists.txt
4++++ b/external/CMakeLists.txt
5+@@ -37,34 +37,16 @@
6+
7+ find_package(Miniupnpc REQUIRED)
8+
9+-message(STATUS "Using in-tree miniupnpc")
10+-add_subdirectory(miniupnp/miniupnpc)
11+-set_property(TARGET libminiupnpc-static PROPERTY FOLDER "external")
12+-if(MSVC)
13+- set_property(TARGET libminiupnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -wd4244 -wd4267")
14+-elseif(NOT MSVC)
15+- set_property(TARGET libminiupnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-undef -Wno-unused-result -Wno-unused-value")
16+-endif()
17+-if(CMAKE_SYSTEM_NAME MATCHES "NetBSD")
18+- set_property(TARGET libminiupnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -D_NETBSD_SOURCE")
19+-endif()
20+-
21+-set(UPNP_LIBRARIES "libminiupnpc-static" PARENT_SCOPE)
22++set(UPNP_STATIC false PARENT_SCOPE)
23++set(UPNP_INCLUDE ${MINIUPNP_INCLUDE_DIR} PARENT_SCOPE)
24++set(UPNP_LIBRARIES ${MINIUPNP_LIBRARY} PARENT_SCOPE)
25+
26+ find_package(Unbound)
27+
28+ if(NOT UNBOUND_INCLUDE_DIR OR STATIC)
29+- # NOTE: If STATIC is true, CMAKE_FIND_LIBRARY_SUFFIXES has been reordered.
30+- # unbound has config tests which used OpenSSL libraries, so -ldl may need to
31+- # be set in this case.
32+- # The unbound CMakeLists.txt can set it, since it's also needed for the
33+- # static OpenSSL libraries set up there after with target_link_libraries.
34+- add_subdirectory(unbound)
35+-
36+- set(UNBOUND_STATIC true PARENT_SCOPE)
37+- set(UNBOUND_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/unbound/libunbound" PARENT_SCOPE)
38+- set(UNBOUND_LIBRARY "unbound" PARENT_SCOPE)
39+- set(UNBOUND_LIBRARY_DIRS "${LIBEVENT2_LIBDIR}" PARENT_SCOPE)
40++ set(UNBOUND_STATIC false PARENT_SCOPE)
41++ set(UPNP_INCLUDE ${MINIUPNP_INCLUDE_DIR} PARENT_SCOPE)
42++ set(UPNP_LIBRARIES ${MINIUPNP_LIBRARY} PARENT_SCOPE)
43+ else()
44+ message(STATUS "Found libunbound include (unbound.h) in ${UNBOUND_INCLUDE_DIR}")
45+ if(UNBOUND_LIBRARIES)
46+@@ -81,4 +63,5 @@ endif()
47+ add_subdirectory(db_drivers)
48+ add_subdirectory(easylogging++)
49+ add_subdirectory(qrcodegen)
50+-add_subdirectory(randomx EXCLUDE_FROM_ALL)
51++
52++find_library(RANDOMX_LIBRARIES NAMES RandomX)
53+diff --git a/src/p2p/net_node.inl b/src/p2p/net_node.inl
54+index 175741146..088b582f7 100644
55+--- a/src/p2p/net_node.inl
56++++ b/src/p2p/net_node.inl
57+@@ -60,9 +60,9 @@
58+ #include "cryptonote_core/cryptonote_core.h"
59+ #include "net/parse.h"
60+
61+-#include <miniupnp/miniupnpc/miniupnpc.h>
62+-#include <miniupnp/miniupnpc/upnpcommands.h>
63+-#include <miniupnp/miniupnpc/upnperrors.h>
64++#include <miniupnpc/miniupnpc.h>
65++#include <miniupnpc/upnpcommands.h>
66++#include <miniupnpc/upnperrors.h>
67+
68+ #undef MONERO_DEFAULT_LOG_CATEGORY
69+ #define MONERO_DEFAULT_LOG_CATEGORY "net.p2p"