diff mbox series

[bug#36258,1/2] gnu: monero: Update to 0.14.1.0.

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

Checks

Context Check Description
cbaines/applying patch success Successfully applied

Commit Message

Guillaume Le Vaillant June 17, 2019, 8:44 a.m. UTC
* gnu/packages/finance.scm (monero): Update to 0.14.1.0.
* gnu/packages/patches/monero-use-system-miniupnpc.patch: Update file.
---
 gnu/packages/finance.scm                      | 89 +++++++++--------
 .../patches/monero-use-system-miniupnpc.patch | 95 +++----------------
 2 files changed, 61 insertions(+), 123 deletions(-)

Comments

swedebugia June 22, 2019, 8:38 p.m. UTC | #1
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
Guillaume Le Vaillant June 22, 2019, 10:17 p.m. UTC | #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.
swedebugia June 23, 2019, 11:31 a.m. UTC | #3
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
Guillaume Le Vaillant June 23, 2019, 12:53 p.m. UTC | #4
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).
swedebugia June 23, 2019, 1:18 p.m. UTC | #5
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 :)
swedebugia June 24, 2019, 6:20 a.m. UTC | #6
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.
Guillaume Le Vaillant June 24, 2019, 9:54 a.m. UTC | #7
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 mbox series

Patch

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
-