Message ID | 20190617084436.12311-1-glv@posteo.net |
---|---|
State | Accepted |
Headers | show |
Series | [bug#36258,1/2] gnu: monero: Update to 0.14.1.0. | expand |
Context | Check | Description |
---|---|---|
cbaines/applying patch | success | Successfully applied |
On 2019-06-17 10:44, Guillaume LE VAILLANT wrote: > * gnu/packages/finance.scm (monero): Update to 0.14.1.0. > * gnu/packages/patches/monero-use-system-miniupnpc.patch: Update file. > --- Thanks for the patch! I tried building it with 4GB ram and 4GB swap but it failed with this error which I suspect is memory-related. I'm building it again now with -c 1 and it got past this point :) I will review further once it is done. make -f src/wallet/CMakeFiles/obj_wallet.dir/build.make src/wallet/CMakeFiles/obj_wallet.dir/build make[2]: Entering directory '/tmp/guix-build-monero-0.14.1.0.drv-0/build' [ 32%] Building CXX object src/wallet/CMakeFiles/obj_wallet.dir/wallet2.cpp.o cd /tmp/guix-build-monero-0.14.1.0.drv-0/build/src/wallet && /gnu/store/n2p1zs14y89lwkg9da68y12pc10c6sw9-gcc-5.5.0/bin/c++ -DAUTO_INITIALIZE_EASYLOGGINGPP -DBLOCKCHAIN_DB=DB_LMDB -DDEFAULT_DB_TYPE=\"lmdb\" -DHAVE_EXPLICIT_BZERO -DHAVE_HIDAPI -DHAVE_STRPTIME -DPER_BLOCK_CHECKPOINT -I/tmp/guix-build-monero-0.14.1.0.drv-0/monero-0.14.1.0-checkout/external/rapidjson/include -I/tmp/guix-build-monero-0.14.1.0.drv-0/monero-0.14.1.0-checkout/external/easylogging++ -I/tmp/guix-build-monero-0.14.1.0.drv-0/monero-0.14.1.0-checkout/src -I/tmp/guix-build-monero-0.14.1.0.drv-0/monero-0.14.1.0-checkout/contrib/epee/include -I/tmp/guix-build-monero-0.14.1.0.drv-0/monero-0.14.1.0-checkout/external -I/gnu/store/yl1vi61qmvvh83amwiwaik7s7jc03n5z-openssl-1.0.2p/include -I/tmp/guix-build-monero-0.14.1.0.drv-0/build/translations -I/gnu/store/2bpljhwxmm4w50ah93g80wrpzipzji2v-unbound-1.9.1/include -I/tmp/guix-build-monero-0.14.1.0.drv-0/monero-0.14.1.0-checkout/external/db_drivers/liblmdb -I/gnu/store/0rqzg8jrmvza1a6n9qg26j6dpy49850c-hidapi-0.8.0-rc1/include/hidapi -isystem /gnu/store/pz22lgiw476i9fla6ds5f1shchndk7ny-boost-1.69.0/include -pthread -maes -fno-strict-aliasing -std=c++11 -D_GNU_SOURCE -Wall -Wextra -Wpointer-arith -Wundef -Wvla -Wwrite-strings -Wno-error=extra -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-variable -Wno-error=unused-variable -Wno-error=undef -Wno-error=uninitialized -Wlogical-op -Wno-error=maybe-uninitialized -Wno-error=cpp -Wno-reorder -Wno-missing-field-initializers -fPIC -Wformat -Wformat-security -fstack-protector -fstack-protector-strong -fno-strict-aliasing -ftemplate-depth=900 -O2 -g -DNDEBUG -o CMakeFiles/obj_wallet.dir/wallet2.cpp.o -c /tmp/guix-build-monero-0.14.1.0.drv-0/monero-0.14.1.0-checkout/src/wallet/wallet2.cpp In file included from /gnu/store/pz22lgiw476i9fla6ds5f1shchndk7ny-boost-1.69.0/include/boost/detail/endian.hpp:9:0, from /tmp/guix-build-monero-0.14.1.0.drv-0/monero-0.14.1.0-checkout/external/boost/archive/portable_binary_archive.hpp:25, from /tmp/guix-build-monero-0.14.1.0.drv-0/monero-0.14.1.0-checkout/external/boost/archive/portable_binary_iarchive.hpp:33, from /tmp/guix-build-monero-0.14.1.0.drv-0/monero-0.14.1.0-checkout/src/cryptonote_basic/cryptonote_boost_serialization.h:40, from /tmp/guix-build-monero-0.14.1.0.drv-0/monero-0.14.1.0-checkout/src/cryptonote_basic/account_boost_serialization.h:34, from /tmp/guix-build-monero-0.14.1.0.drv-0/monero-0.14.1.0-checkout/src/wallet/wallet2.h:46, from /tmp/guix-build-monero-0.14.1.0.drv-0/monero-0.14.1.0-checkout/src/wallet/wallet2.cpp:47: /gnu/store/pz22lgiw476i9fla6ds5f1shchndk7ny-boost-1.69.0/include/boost/predef/detail/endian_compat.h:11:161: note: #pragma message: The use of BOOST_*_ENDIAN and BOOST_BYTE_ORDER is deprecated. Please include <boost/predef/other/endian.h> and use BOOST_ENDIAN_*_BYTE instead #pragma message("The use of BOOST_*_ENDIAN and BOOST_BYTE_ORDER is deprecated. Please include <boost/predef/other/endian.h> and use BOOST_ENDIAN_*_BYTE instead") ^ In file included from /gnu/store/pz22lgiw476i9fla6ds5f1shchndk7ny-boost-1.69.0/include/boost/random/detail/integer_log2.hpp:19:0, from /gnu/store/pz22lgiw476i9fla6ds5f1shchndk7ny-boost-1.69.0/include/boost/random/detail/large_arithmetic.hpp:19, from /gnu/store/pz22lgiw476i9fla6ds5f1shchndk7ny-boost-1.69.0/include/boost/random/detail/const_mod.hpp:23, from /gnu/store/pz22lgiw476i9fla6ds5f1shchndk7ny-boost-1.69.0/include/boost/random/detail/seed_impl.hpp:26, from /gnu/store/pz22lgiw476i9fla6ds5f1shchndk7ny-boost-1.69.0/include/boost/random/mersenne_twister.hpp:30, from /gnu/store/pz22lgiw476i9fla6ds5f1shchndk7ny-boost-1.69.0/include/boost/uuid/random_generator.hpp:17, from /tmp/guix-build-monero-0.14.1.0.drv-0/monero-0.14.1.0-checkout/contrib/epee/include/net/network_throttle.hpp:61, from /tmp/guix-build-monero-0.14.1.0.drv-0/monero-0.14.1.0-checkout/contrib/epee/include/net/network_throttle-detail.hpp:40, from /tmp/guix-build-monero-0.14.1.0.drv-0/monero-0.14.1.0-checkout/contrib/epee/include/net/abstract_tcp_server2.h:59, from /tmp/guix-build-monero-0.14.1.0.drv-0/monero-0.14.1.0-checkout/contrib/epee/include/net/http_server_impl_base.h:36, from /tmp/guix-build-monero-0.14.1.0.drv-0/monero-0.14.1.0-checkout/src/wallet/message_transporter.h:35, from /tmp/guix-build-monero-0.14.1.0.drv-0/monero-0.14.1.0-checkout/src/wallet/message_store.h:46, from /tmp/guix-build-monero-0.14.1.0.drv-0/monero-0.14.1.0-checkout/src/wallet/wallet2.h:65, from /tmp/guix-build-monero-0.14.1.0.drv-0/monero-0.14.1.0-checkout/src/wallet/wallet2.cpp:47: /gnu/store/pz22lgiw476i9fla6ds5f1shchndk7ny-boost-1.69.0/include/boost/pending/integer_log2.hpp:7:89: note: #pragma message: This header is deprecated. Use <boost/integer/integer_log2.hpp> instead. /tmp/guix-build-monero-0.14.1.0.drv-0/monero-0.14.1.0-checkout/src/wallet/wallet2.cpp: In member function ‘void tools::wallet2::get_outs(std::vector<std::vector<std::tuple<long unsigned int, crypto::public_key, rct::key> > >&, const std::vector<long unsigned int>&, size_t)’: /tmp/guix-build-monero-0.14.1.0.drv-0/monero-0.14.1.0-checkout/src/wallet/wallet2.cpp:7729:12: warning: variable ‘existing_ring_found’ set but not used [-Wunused-but-set-variable] bool existing_ring_found = false; ^ c++: internal compiler error: Killed (program cc1plus) Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. make[2]: *** [src/wallet/CMakeFiles/obj_wallet.dir/build.make:66: src/wallet/CMakeFiles/obj_wallet.dir/wallet2.cpp.o] Error 4 make[2]: Leaving directory '/tmp/guix-build-monero-0.14.1.0.drv-0/build' make[1]: *** [CMakeFiles/Makefile2:2456: src/wallet/CMakeFiles/obj_wallet.dir/all] Error 2
swedebugia a écrit : > I tried building it with 4GB ram and 4GB swap but it failed with this error > which I suspect is memory-related. > > I'm building it again now with -c 1 and it got past this point :) I will review > further once it is done. > > make -f src/wallet/CMakeFiles/obj_wallet.dir/build.make > src/wallet/CMakeFiles/obj_wallet.dir/build > make[2]: Entering directory '/tmp/guix-build-monero-0.14.1.0.drv-0/build' > [ 32%] Building CXX object src/wallet/CMakeFiles/obj_wallet.dir/wallet2.cpp.o > > [...] > > c++: internal compiler error: Killed (program cc1plus) Yes I think it's a crash caused by an "out of memory" error. The wallet2.cpp file is pretty big (around 500 kB), and apparently g++ wants several gigabytes of RAM to compile it. When compiling on my system with 8 threads, 16 GB of RAM and 8 GB of swap, I often saw between 3 and 4 GB being swapped when the compiling process got to that file.
On 2019-06-23 00:17, Guillaume LE VAILLANT wrote: > > swedebugia a écrit : > >> I tried building it with 4GB ram and 4GB swap but it failed with this error >> which I suspect is memory-related. >> >> I'm building it again now with -c 1 and it got past this point :) I will review >> further once it is done. >> >> make -f src/wallet/CMakeFiles/obj_wallet.dir/build.make >> src/wallet/CMakeFiles/obj_wallet.dir/build >> make[2]: Entering directory '/tmp/guix-build-monero-0.14.1.0.drv-0/build' >> [ 32%] Building CXX object src/wallet/CMakeFiles/obj_wallet.dir/wallet2.cpp.o >> >> [...] >> >> c++: internal compiler error: Killed (program cc1plus) > > Yes I think it's a crash caused by an "out of memory" error. The > wallet2.cpp file is pretty big (around 500 kB), and apparently g++ wants > several gigabytes of RAM to compile it. When compiling on my system with > 8 threads, 16 GB of RAM and 8 GB of swap, I often saw between 3 and 4 GB > being swapped when the compiling process got to that file. > It finished compiling on 1 core but the tests stopped after an hour and was completely silent and no cpu use. How do I run the tests manually? I tried: cd into /tmp/guix-build-xxx source the env cd build make "ARGS=-R 'hash|core_tests'" "test" but got this error: Could not find executable /tmp/guix-build-monero-0.14.1.0.drv-0/build/tests/hash-target-tests
swedebugia a écrit : > It finished compiling on 1 core but the tests stopped after an hour and was > completely silent and no cpu use. > > How do I run the tests manually? > > I tried: > cd into /tmp/guix-build-xxx > source the env > cd build > make "ARGS=-R 'hash|core_tests'" "test" > but got this error: > Could not find executable > /tmp/guix-build-monero-0.14.1.0.drv-0/build/tests/hash-target-tests That's strange, if the compilation phase finished, the 'build/tests/hash-target-tests' file should exist. Do the 'build/tests/core_tests/core_tests' and 'build/tests/unit_tests/unit_tests' programs exist, or is your 'build/tests' directory empty? Also, 'core_tests' takes a long time to complete (around 40 minutes on my machine I think), and it doesn't print any message while it's running (but there should be 1 CPU core in use).
On 2019-06-23 14:53, Guillaume LE VAILLANT wrote: > > swedebugia a écrit : ... >> Could not find executable >> /tmp/guix-build-monero-0.14.1.0.drv-0/build/tests/hash-target-tests > > That's strange, if the compilation phase finished, the > 'build/tests/hash-target-tests' file should exist. > Do the 'build/tests/core_tests/core_tests' and > 'build/tests/unit_tests/unit_tests' programs exist, or is your > 'build/tests' directory empty? It did exist but the drv-paths in the makefiles was wrong. > > Also, 'core_tests' takes a long time to complete (around 40 minutes on > my machine I think), and it doesn't print any message while it's > running (but there should be 1 CPU core in use). > Got them running now. Will report back when they are done :)
On 2019-06-23 15:18, swedebugia wrote: > On 2019-06-23 14:53, Guillaume LE VAILLANT wrote: >> >> swedebugia a écrit : > ... > >>> Could not find executable >>> /tmp/guix-build-monero-0.14.1.0.drv-0/build/tests/hash-target-tests >> >> That's strange, if the compilation phase finished, the >> 'build/tests/hash-target-tests' file should exist. >> Do the 'build/tests/core_tests/core_tests' and >> 'build/tests/unit_tests/unit_tests' programs exist, or is your >> 'build/tests' directory empty? > > It did exist but the drv-paths in the makefiles was wrong. > >> >> Also, 'core_tests' takes a long time to complete (around 40 minutes on >> my machine I think), and it doesn't print any message while it's >> running (but there should be 1 CPU core in use). >> > > Got them running now. Will report back when they are done :) > Tests completed succesfully. I saw this note: + ;; TODO: Find why portability_wallet test fails + ;; Maybe the Boost version used to create the test + ;; wallet and the current Boost version are not + ;; completely compatible? + "Serialization.portability_wallet" + "is_hdd.linux_os_root") Did you report this upstream? Could you include the failed test also (commented below the comment) Otherwise LGTM :) PS: I started working on Aeon (fork of monero) since they are very similar it should be "easy" to package now that you got monero working again.
swedebugia a écrit : > Tests completed succesfully. I saw this note: > > + ;; TODO: Find why portability_wallet test fails > + ;; Maybe the Boost version used to create the test > + ;; wallet and the current Boost version are not > + ;; completely compatible? > + "Serialization.portability_wallet" > + "is_hdd.linux_os_root") > > Did you report this upstream? > Could you include the failed test also (commented below the comment) > > Otherwise LGTM :) > > PS: I started working on Aeon (fork of monero) since they are very similar it > should be "easy" to package now that you got monero working again. I'm not entirely sure why the "Serialization.portability_wallet" test fails. It might not be related to compatibility between Boost versions, because compiling with the same Boost version in two different ways gives different results. When I compile using 'guix build monero', the test fails. --- /tmp/guix-build-monero-0.14.1.0.drv-0/monero-0.14.1.0-checkout/tests/unit_tests/serialization.cpp:633: Failure Value of: r Actual: false Expected: true --- When I compile by hand using 'guix environment --pure monero', the test passes.
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm index 5b95bcb704..50a96183f7 100644 --- a/gnu/packages/finance.scm +++ b/gnu/packages/finance.scm @@ -11,6 +11,7 @@ ;;; Copyright © 2018 Adriano Peluso <catonano@gmail.com> ;;; Copyright © 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net> +;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -39,6 +40,7 @@ #:use-module (gnu packages base) #:use-module (gnu packages boost) #:use-module (gnu packages check) + #:use-module (gnu packages compression) #:use-module (gnu packages crypto) #:use-module (gnu packages databases) #:use-module (gnu packages documentation) @@ -68,6 +70,7 @@ #:use-module (gnu packages textutils) #:use-module (gnu packages tls) #:use-module (gnu packages upnp) + #:use-module (gnu packages version-control) #:use-module (gnu packages web) #:use-module (gnu packages xml) #:use-module (gnu packages gnuzilla)) @@ -428,49 +431,59 @@ other machines/servers. Electroncash does not download the Bitcoin Cash blockch (define-public monero ;; This package bundles easylogging++ and lmdb. - ;; The bundled easylogging++ is modified, and the changes will not be upstreamed. + ;; The bundled easylogging++ is modified, and the changes will not be + ;; upstreamed. ;; The devs deem the lmdb driver too critical a consenus component, to use ;; the system's dynamically linked library. (package (name "monero") - (version "0.12.3.0") + (version "0.14.1.0") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/monero-project/monero") - (commit (string-append "v" version)))) + (url "https://github.com/monero-project/monero.git") + (commit (string-append "v" version)) + (recursive? #t))) (file-name (git-file-name name version)) (patches (search-patches "monero-use-system-miniupnpc.patch")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Delete bundled dependencies. + (for-each + delete-file-recursively + '("external/miniupnp" "external/rapidjson" + "external/unbound")) + #t)) (sha256 (base32 - "14db9kgjm2ha93c2x5fjdw01xaqshn756qr3x2cnzyyjh7caz5qd")))) + "1asa197fad81jfv12qgaa7y7pdr1r1pda96m9pvivkh4v30cx0nh")))) (build-system cmake-build-system) (native-inputs `(("doxygen" ,doxygen) - ("googletest" ,googletest) + ("git" ,git) ("graphviz" ,graphviz) - ("pkg-config" ,pkg-config))) + ("pkg-config" ,pkg-config) + ("qttools" ,qttools))) (inputs - `(("bind" ,isc-bind) - ("boost" ,boost) - ("zeromq" ,zeromq) + `(("boost" ,boost) ("cppzmq" ,cppzmq) ("expat" ,expat) - ("libsodium" ,libsodium) + ("hidapi" ,hidapi) ("libunwind" ,libunwind) - ("lmdb" ,lmdb) - ("miniupnpc" ,monero-miniupnpc) + ("libsodium" ,libsodium) + ("miniupnpc" ,miniupnpc) ("openssl" ,openssl) ("rapidjson" ,rapidjson) - ("unbound" ,unbound))) + ("readline" ,readline) + ("unbound" ,unbound) + ("xz" ,xz) + ("zeromq" ,zeromq))) (arguments `(#:out-of-source? #t - #:build-type "release" - #:configure-flags '("-DBUILD_TESTS=ON" - ,@(if (string=? "aarch64-linux" (%current-system)) - '("-DARCH=armv8-a") - '()) + #:configure-flags '("-DARCH=default" + "-DBUILD_TESTS=ON" "-DBUILD_GUI_DEPS=ON") #:phases (modify-phases %standard-phases @@ -479,24 +492,18 @@ other machines/servers. Electroncash does not download the Bitcoin Cash blockch (lambda _ (setenv "HOME" (getcwd)) #t)) - (add-after 'set-home 'fix-wallet-path-for-unit-tests - (lambda _ - (substitute* "tests/unit_tests/serialization.cpp" - (("\\.\\./\\.\\./\\.\\./\\.\\./") "../../")) - #t)) - (add-after 'fix-wallet-path-for-unit-tests 'change-log-path + (add-after 'set-home 'change-log-path (lambda _ (substitute* "contrib/epee/src/mlog.cpp" (("epee::string_tools::get_current_module_folder\\(\\)") - "\".bitmonero\"")) - (substitute* "contrib/epee/src/mlog.cpp" - (("return \\(") "return ((std::string(getenv(\"HOME\"))) / ")) + "\".bitmonero\"") + (("return \\(") + "return ((std::string(getenv(\"HOME\"))) / ")) #t)) + ;; Only try tests that don't need access to network or system (replace 'check (lambda _ - (invoke "make" "ARGS=-E 'unit_tests|libwallet_api_tests'" - "test"))) - ;; The excluded unit tests need network access + (invoke "make" "ARGS=-R 'hash|core_tests'" "test"))) (add-after 'check 'unit-tests (lambda _ (let ((excluded-unit-tests @@ -506,22 +513,22 @@ other machines/servers. Electroncash does not download the Bitcoin Cash blockch "DNSResolver.IPv4Success" "DNSResolver.DNSSECSuccess" "DNSResolver.DNSSECFailure" - "DNSResolver.GetTXTRecord") + "DNSResolver.GetTXTRecord" + ;; TODO: Find why portability_wallet test fails + ;; Maybe the Boost version used to create the test + ;; wallet and the current Boost version are not + ;; completely compatible? + "Serialization.portability_wallet" + "is_hdd.linux_os_root") ":"))) (invoke "tests/unit_tests/unit_tests" (string-append "--gtest_filter=-" - excluded-unit-tests))))) - (add-after 'install 'install-blockchain-import-export - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin"))) - (install-file "bin/monero-blockchain-import" bin) - (install-file "bin/monero-blockchain-export" bin))))))) + excluded-unit-tests)))))))) (home-page "https://getmonero.org/") (synopsis "Command-line interface to the Monero currency") (description - "Monero is a secure, private, untraceable currency. This package provides the -Monero command line client and daemon.") + "Monero is a secure, private, untraceable currency. This package provides +the Monero command line client and daemon.") (license license:bsd-3))) (define-public monero-gui diff --git a/gnu/packages/patches/monero-use-system-miniupnpc.patch b/gnu/packages/patches/monero-use-system-miniupnpc.patch index 6bc825d121..c5d376d793 100644 --- a/gnu/packages/patches/monero-use-system-miniupnpc.patch +++ b/gnu/packages/patches/monero-use-system-miniupnpc.patch @@ -1,111 +1,42 @@ -This reverts commit 1e20d705e7c64d2b17c031f345057d1e8850fafa, so that it's possible to use our own -miniupnpc, instead of a git submodule. ---- - CMakeLists.txt | 8 ++++++++ - external/CMakeLists.txt | 41 +++++++++++++++++++++++++++++++---------- - src/p2p/net_node.inl | 13 ++++++++++--- - 3 files changed, 49 insertions(+), 13 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 3b93988e..ef948885 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -430,6 +430,14 @@ include_directories("${CMAKE_CURRENT_BINARY_DIR}/translations") - - add_subdirectory(external) - -+# Final setup for miniupnpc -+if(UPNP_STATIC OR IOS) -+ add_definitions("-DUPNP_STATIC") -+else() -+ add_definitions("-DUPNP_DYNAMIC") -+ include_directories(${UPNP_INCLUDE}) -+endif() -+ - # Final setup for libunbound - include_directories(${UNBOUND_INCLUDE}) - link_directories(${UNBOUND_LIBRARY_DIRS}) diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt -index 1fc4d64c..b4f712ee 100644 +index 7553f87e..8e865c6c 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt -@@ -34,21 +34,42 @@ - # We always compile if we are building statically to reduce static dependency issues... - # ...except for FreeBSD, because FreeBSD is a special case that doesn't play well with - # others. -+if(NOT IOS) -+ find_package(Miniupnpc QUIET) -+endif() +@@ -37,19 +37,7 @@ --find_package(Miniupnpc REQUIRED) -+# If we have the correct shared version and we're not building static, use it -+if(STATIC OR IOS) -+ set(USE_SHARED_MINIUPNPC false) -+elseif(MINIUPNP_FOUND AND MINIUPNPC_VERSION_1_7_OR_HIGHER) -+ set(USE_SHARED_MINIUPNPC true) -+endif() + find_package(Miniupnpc REQUIRED) -message(STATUS "Using in-tree miniupnpc") -+if(USE_SHARED_MINIUPNPC) -+ message(STATUS "Using shared miniupnpc found at ${MINIUPNP_INCLUDE_DIR}") - -add_subdirectory(miniupnp/miniupnpc) -+ set(UPNP_STATIC false PARENT_SCOPE) -+ set(UPNP_INCLUDE ${MINIUPNP_INCLUDE_DIR} PARENT_SCOPE) -+ set(UPNP_LIBRARIES ${MINIUPNP_LIBRARY} PARENT_SCOPE) -+else() -+ if(STATIC) -+ message(STATUS "Using miniupnpc from local source tree for static build") -+ else() -+ message(STATUS "Using miniupnpc from local source tree (/external/miniupnp/miniupnpc)") -+ endif() - -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() -+ 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 true PARENT_SCOPE) -+ set(UPNP_LIBRARIES "libminiupnpc-static" PARENT_SCOPE) -+endif() ++set(UPNP_LIBRARIES "miniupnpc" PARENT_SCOPE) find_package(Unbound) diff --git a/src/p2p/net_node.inl b/src/p2p/net_node.inl -index 9b21705e..76340a22 100644 +index 74924e4f..3554dd0d 100644 --- a/src/p2p/net_node.inl +++ b/src/p2p/net_node.inl -@@ -49,9 +49,16 @@ +@@ -49,9 +49,9 @@ #include "storages/levin_abstract_invoke2.h" #include "cryptonote_core/cryptonote_core.h" -#include <miniupnp/miniupnpc/miniupnpc.h> -#include <miniupnp/miniupnpc/upnpcommands.h> -#include <miniupnp/miniupnpc/upnperrors.h> -+// We have to look for miniupnpc headers in different places, dependent on if its compiled or external -+#ifdef UPNP_STATIC -+ #include <miniupnp/miniupnpc/miniupnpc.h> -+ #include <miniupnp/miniupnpc/upnpcommands.h> -+ #include <miniupnp/miniupnpc/upnperrors.h> -+#else -+ #include "miniupnpc.h" -+ #include "upnpcommands.h" -+ #include "upnperrors.h" -+#endif ++#include <miniupnpc/miniupnpc.h> ++#include <miniupnpc/upnpcommands.h> ++#include <miniupnpc/upnperrors.h> #undef MONERO_DEFAULT_LOG_CATEGORY #define MONERO_DEFAULT_LOG_CATEGORY "net.p2p" --- -2.16.2 -