85e430e
diff -up ./dht/dhtcore/NodeStore.c.libuv ./dht/dhtcore/NodeStore.c
85e430e
--- ./dht/dhtcore/NodeStore.c.libuv	2018-04-18 03:35:41.000000000 -0400
85e430e
+++ ./dht/dhtcore/NodeStore.c	2019-04-24 23:37:26.625881889 -0400
85e430e
@@ -28,7 +28,7 @@
85e430e
 #include "util/Endian.h"
85e430e
 #include "util/events/Time.h"
85e430e
 
85e430e
-#include <tree.h>
85e430e
+#include "dependencies/uv_tree.h"
85e430e
 
85e430e
 /** A list of DHT nodes. */
85e430e
 struct NodeStore_pvt
85e430e
diff -up ./node_build/make.js.libuv ./node_build/make.js
85e430e
--- ./node_build/make.js.libuv	2018-04-18 03:35:41.000000000 -0400
85e430e
+++ ./node_build/make.js	2019-04-24 23:37:26.690882782 -0400
85e430e
@@ -46,7 +46,7 @@ Builder.configure({
85e430e
     crossCompiling: process.env['CROSS'] !== undefined,
85e430e
     gcc:            GCC,
85e430e
     tempDir:        process.env['CJDNS_BUILD_TMPDIR'] || '/tmp',
85e430e
-    optimizeLevel:  '-O3',
85e430e
+    optimizeLevel:  '-O',
85e430e
     logLevel:       process.env['Log_LEVEL'] || 'DEBUG'
85e430e
 }, function (builder, waitFor) {
85e430e
 
85e430e
@@ -101,7 +101,7 @@ Builder.configure({
85e430e
 
85e430e
     if (!builder.config.crossCompiling) {
85e430e
         if (NO_MARCH_FLAG.indexOf(process.arch) == -1) {
85e430e
-            builder.config.cflags.push('-march=native');
85e430e
+            builder.config.cflags.push('-mtune=generic');
85e430e
         }
85e430e
     }
85e430e
 
85e430e
@@ -287,7 +287,7 @@ Builder.configure({
85e430e
 
85e430e
                 if (!builder.config.crossCompiling) {
85e430e
                     if (NO_MARCH_FLAG.indexOf(process.arch) == -1) {
85e430e
-                        args.unshift('-march=native');
85e430e
+                        args.unshift('-mtune=generic');
85e430e
                     }
85e430e
                 }
85e430e
 
85e430e
@@ -301,7 +301,7 @@ Builder.configure({
85e430e
 
85e430e
     }).nThen(function (waitFor) {
85e430e
 
85e430e
-        builder.config.libs.push(libuvLib);
85e430e
+        builder.config.libs.push('-luv');
85e430e
         if (!android) {
85e430e
             builder.config.libs.push('-lpthread');
85e430e
         }
85e430e
@@ -328,15 +328,13 @@ Builder.configure({
85e430e
             );
85e430e
         }
85e430e
 
85e430e
-        builder.config.includeDirs.push(dependencyDir + '/libuv/include/');
85e430e
+        /* builder.config.includeDirs.push('/usr/include/uv/'); */
85e430e
 
85e430e
         var libuvBuilt;
85e430e
         var python;
85e430e
         nThen(function (waitFor) {
85e430e
 
85e430e
-            Fs.exists(libuvLib, waitFor(function (exists) {
85e430e
-                if (exists) { libuvBuilt = true; }
85e430e
-            }));
85e430e
+            libuvBuilt = true;
85e430e
 
85e430e
         }).nThen(function (waitFor) {
85e430e
 
85e430e
diff -up ./test/Beacon_test.c.libuv ./test/Beacon_test.c
85e430e
--- ./test/Beacon_test.c.libuv	2018-04-18 03:35:41.000000000 -0400
85e430e
+++ ./test/Beacon_test.c	2019-04-24 23:44:04.535476759 -0400
85e430e
@@ -256,7 +256,8 @@ int main()
85e430e
     start(alloc, logger, base, rand, runTest);
85e430e
 
85e430e
     EventBase_beginLoop(base);
85e430e
-    Allocator_free(alloc);
85e430e
+    EventBase_endLoop(base);
85e430e
+    /* Allocator_free(alloc); */
85e430e
     return 0;
85e430e
 }
85e430e
 #endif
85e430e
diff -up ./util/events/libuv/FileNo.c.libuv ./util/events/libuv/FileNo.c
85e430e
--- ./util/events/libuv/FileNo.c.libuv	2018-04-18 03:35:41.000000000 -0400
85e430e
+++ ./util/events/libuv/FileNo.c	2019-04-24 23:37:26.626881902 -0400
85e430e
@@ -77,14 +77,14 @@ static void onClose(uv_handle_t* handle)
85e430e
 #endif
85e430e
 #define ALLOC(buff) (((struct Allocator**) &(buff[-(8 + (((uintptr_t)buff) % 8))]))[0])
85e430e
 
85e430e
-static void incoming(uv_pipe_t* stream,
85e430e
+static void incoming(uv_stream_t* stream,
85e430e
                      ssize_t nread,
85e430e
-                     const uv_buf_t* buf,
85e430e
-                     uv_handle_type pending)
85e430e
+                     const uv_buf_t* buf)
85e430e
 {
85e430e
     // Grab out the allocator which was placed there by allocate()
85e430e
     struct Allocator* alloc = buf->base ? ALLOC(buf->base) : NULL;
85e430e
 
85e430e
+    uv_handle_type pending = uv_pipe_pending_type((uv_pipe_t*) stream);
85e430e
     Assert_true(pending == UV_UNKNOWN_HANDLE);
85e430e
 
85e430e
     if (nread < 0) {
85e430e
@@ -134,8 +134,8 @@ static void connected(uv_connect_t* req,
85e430e
                  fileno->pub.pipePath, uv_strerror(status) );
85e430e
         uv_close((uv_handle_t*) &fileno->peer, onClose);
85e430e
 
85e430e
-    } else if ((ret = uv_read2_start((uv_stream_t*)&fileno->peer, allocate, incoming))) {
85e430e
-        Log_info(fileno->pub.logger, "uv_read2_start() failed for pipe [%s] [%s]",
85e430e
+    } else if ((ret = uv_read_start((uv_stream_t*)&fileno->peer, allocate, incoming))) {
85e430e
+        Log_info(fileno->pub.logger, "uv_read_start() failed for pipe [%s] [%s]",
85e430e
                  fileno->pub.pipePath, uv_strerror(ret));
85e430e
         uv_close((uv_handle_t*) &fileno->peer, onClose);
85e430e
 
85e430e
diff -up ./util/events/libuv/Timeout.c.libuv ./util/events/libuv/Timeout.c
85e430e
--- ./util/events/libuv/Timeout.c.libuv	2018-04-18 03:35:41.000000000 -0400
85e430e
+++ ./util/events/libuv/Timeout.c	2019-04-24 23:37:26.626881902 -0400
85e430e
@@ -38,7 +38,7 @@ struct Timeout
85e430e
 /**
85e430e
  * The callback to be called by libuv.
85e430e
  */
85e430e
-static void handleEvent(uv_timer_t* handle, int status)
85e430e
+static void handleEvent(uv_timer_t* handle)
85e430e
 {
85e430e
     struct Timeout* timeout = Identity_check((struct Timeout*) handle);
85e430e
     if (!timeout->isInterval) {