summaryrefslogtreecommitdiffstats
path: root/pkgs/applications/blockchains
diff options
context:
space:
mode:
authorrnhmjoj <rnhmjoj@inventati.org>2020-10-07 17:32:44 +0200
committerrnhmjoj <rnhmjoj@inventati.org>2020-10-08 00:07:24 +0200
commitcc90474581424f08ffed9abc3ed159eb96e60a12 (patch)
treebf1ed82788ccf15e70206268f8d40b6ca594d29d /pkgs/applications/blockchains
parente40ede1821088f6e0ac5041907767aec5364308f (diff)
monero: force use of system libraries
Diffstat (limited to 'pkgs/applications/blockchains')
-rw-r--r--pkgs/applications/blockchains/monero/default.nix24
-rw-r--r--pkgs/applications/blockchains/monero/use-system-libraries.patch69
2 files changed, 89 insertions, 4 deletions
diff --git a/pkgs/applications/blockchains/monero/default.nix b/pkgs/applications/blockchains/monero/default.nix
index 02e781d271cf..f424624cc298 100644
--- a/pkgs/applications/blockchains/monero/default.nix
+++ b/pkgs/applications/blockchains/monero/default.nix
@@ -2,11 +2,18 @@
, cmake, pkgconfig
, boost, miniupnpc, openssl, unbound
, zeromq, pcsclite, readline, libsodium, hidapi
-, protobuf, randomx, rapidjson, libusb-compat-0_1
+, randomx, rapidjson
, CoreData, IOKit, PCSC
+, trezorSupport ? true
+ , libusb1 ? null
+ , protobuf ? null
+ , python3 ? null
}:
+with stdenv.lib;
+
assert stdenv.isDarwin -> IOKit != null;
+assert trezorSupport -> all (x: x!=null) [ libusb1 protobuf python3 ];
stdenv.mkDerivation rec {
pname = "monero";
@@ -20,21 +27,30 @@ stdenv.mkDerivation rec {
fetchSubmodules = true;
};
+ patches = [ ./use-system-libraries.patch ];
+
+ postPatch = ''
+ # remove vendored libraries
+ rm -r external/{miniupnp,randomx,rapidjson,unbound}
+ '';
+
nativeBuildInputs = [ cmake pkgconfig ];
buildInputs = [
boost miniupnpc openssl unbound
zeromq pcsclite readline
libsodium hidapi randomx rapidjson
- protobuf libusb-compat-0_1
- ] ++ stdenv.lib.optionals stdenv.isDarwin [ IOKit CoreData PCSC ];
+ protobuf
+ ] ++ optionals stdenv.isDarwin [ IOKit CoreData PCSC ]
+ ++ optionals trezorSupport [ libusb1 protobuf python3 ];
cmakeFlags = [
"-DCMAKE_BUILD_TYPE=Release"
"-DUSE_DEVICE_TREZOR=ON"
"-DBUILD_GUI_DEPS=ON"
"-DReadline_ROOT_DIR=${readline.dev}"
- ] ++ stdenv.lib.optional stdenv.isDarwin "-DBoost_USE_MULTITHREADED=OFF";
+ "-DRandomX_ROOT_DIR=${randomx}"
+ ] ++ optional stdenv.isDarwin "-DBoost_USE_MULTITHREADED=OFF";
meta = with stdenv.lib; {
description = "Private, secure, untraceable currency";
diff --git a/pkgs/applications/blockchains/monero/use-system-libraries.patch b/pkgs/applications/blockchains/monero/use-system-libraries.patch
new file mode 100644
index 000000000000..57e2a2e9a696
--- /dev/null
+++ b/pkgs/applications/blockchains/monero/use-system-libraries.patch
@@ -0,0 +1,69 @@
+diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt
+index a8916a7d0..39ec7747b 100644
+--- a/external/CMakeLists.txt
++++ b/external/CMakeLists.txt
+@@ -37,34 +37,16 @@
+
+ find_package(Miniupnpc REQUIRED)
+
+-message(STATUS "Using in-tree miniupnpc")
+-add_subdirectory(miniupnp/miniupnpc)
+-set_property(TARGET libminiupnpc-static PROPERTY FOLDER "external")
+-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)
+
+ if(NOT UNBOUND_INCLUDE_DIR OR STATIC)
+- # NOTE: If STATIC is true, CMAKE_FIND_LIBRARY_SUFFIXES has been reordered.
+- # unbound has config tests which used OpenSSL libraries, so -ldl may need to
+- # be set in this case.
+- # The unbound CMakeLists.txt can set it, since it's also needed for the
+- # static OpenSSL libraries set up there after with target_link_libraries.
+- add_subdirectory(unbound)
+-
+- set(UNBOUND_STATIC true PARENT_SCOPE)
+- set(UNBOUND_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/unbound/libunbound" PARENT_SCOPE)
+- set(UNBOUND_LIBRARY "unbound" PARENT_SCOPE)
+- set(UNBOUND_LIBRARY_DIRS "${LIBEVENT2_LIBDIR}" PARENT_SCOPE)
++ set(UNBOUND_STATIC false PARENT_SCOPE)
++ set(UPNP_INCLUDE ${MINIUPNP_INCLUDE_DIR} PARENT_SCOPE)
++ set(UPNP_LIBRARIES ${MINIUPNP_LIBRARY} PARENT_SCOPE)
+ else()
+ message(STATUS "Found libunbound include (unbound.h) in ${UNBOUND_INCLUDE_DIR}")
+ if(UNBOUND_LIBRARIES)
+@@ -81,4 +63,5 @@ endif()
+ add_subdirectory(db_drivers)
+ add_subdirectory(easylogging++)
+ add_subdirectory(qrcodegen)
+-add_subdirectory(randomx EXCLUDE_FROM_ALL)
++
++find_library(RANDOMX_LIBRARIES NAMES RandomX)
+diff --git a/src/p2p/net_node.inl b/src/p2p/net_node.inl
+index 175741146..088b582f7 100644
+--- a/src/p2p/net_node.inl
++++ b/src/p2p/net_node.inl
+@@ -60,9 +60,9 @@
+ #include "cryptonote_core/cryptonote_core.h"
+ #include "net/parse.h"
+
+-#include <miniupnp/miniupnpc/miniupnpc.h>
+-#include <miniupnp/miniupnpc/upnpcommands.h>
+-#include <miniupnp/miniupnpc/upnperrors.h>
++#include <miniupnpc/miniupnpc.h>
++#include <miniupnpc/upnpcommands.h>
++#include <miniupnpc/upnperrors.h>
+
+ #undef MONERO_DEFAULT_LOG_CATEGORY
+ #define MONERO_DEFAULT_LOG_CATEGORY "net.p2p"