[arch-commits] Commit in cjdns/trunk (1107.patch PKGBUILD)
Bartłomiej Piotrowski
bpiotrowski at archlinux.org
Thu Oct 5 09:37:17 UTC 2017
Date: Thursday, October 5, 2017 @ 09:37:16
Author: bpiotrowski
Revision: 261619
20-2: fix uv__getiovmax returning -1 (FS#55587)
https://github.com/cjdelisle/cjdns/pull/1107
Added:
cjdns/trunk/1107.patch
Modified:
cjdns/trunk/PKGBUILD
------------+
1107.patch | 143 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
PKGBUILD | 14 ++++-
2 files changed, 153 insertions(+), 4 deletions(-)
Added: 1107.patch
===================================================================
--- 1107.patch (rev 0)
+++ 1107.patch 2017-10-05 09:37:16 UTC (rev 261619)
@@ -0,0 +1,143 @@
+From 249c5b7e57f4d383978eab1d6340a1f31994a606 Mon Sep 17 00:00:00 2001
+From: PoroCYon <pcy at national.shitposting.agency>
+Date: Mon, 11 Sep 2017 17:47:34 +0200
+Subject: [PATCH 1/4] fix uv__getiovmax returning -1
+
+---
+ node_build/dependencies/libuv/src/unix/stream.c | 14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
+
+diff --git a/node_build/dependencies/libuv/src/unix/stream.c b/node_build/dependencies/libuv/src/unix/stream.c
+index 1175f9bcf..711f16baa 100644
+--- a/node_build/dependencies/libuv/src/unix/stream.c
++++ b/node_build/dependencies/libuv/src/unix/stream.c
+@@ -714,8 +714,18 @@ static int uv__getiovmax() {
+ return IOV_MAX;
+ #elif defined(_SC_IOV_MAX)
+ static int iovmax = -1;
+- if (iovmax == -1)
++ if (iovmax == -1) {
++ errno = 0;
+ iovmax = sysconf(_SC_IOV_MAX);
++ if (iovmax == -1) {
++ if (errno) {
++ iovmax = 1;
++ }
++ /*else {
++ iovmax = 1024;
++ }*/
++ }
++ }
+ return iovmax;
+ #else
+ return 1024;
+@@ -752,7 +762,7 @@ static void uv__write(uv_stream_t* stream) {
+ iovmax = uv__getiovmax();
+
+ /* Limit iov count to avoid EINVALs from writev() */
+- if (iovcnt > iovmax)
++ if (iovcnt > iovmax && iovmax != -1)
+ iovcnt = iovmax;
+
+ /*
+
+From fc73f49ebdf668d4185dcd4f89807d4444562655 Mon Sep 17 00:00:00 2001
+From: PoroCYon <pcy at national.shitposting.agency>
+Date: Mon, 11 Sep 2017 17:53:56 +0200
+Subject: [PATCH 2/4] fix uv__getiovmax calling sysconf(3) even after a 'valid'
+ -1
+
+---
+ node_build/dependencies/libuv/src/unix/stream.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/node_build/dependencies/libuv/src/unix/stream.c b/node_build/dependencies/libuv/src/unix/stream.c
+index 711f16baa..b721570d8 100644
+--- a/node_build/dependencies/libuv/src/unix/stream.c
++++ b/node_build/dependencies/libuv/src/unix/stream.c
+@@ -713,8 +713,8 @@ static int uv__getiovmax() {
+ #if defined(IOV_MAX)
+ return IOV_MAX;
+ #elif defined(_SC_IOV_MAX)
+- static int iovmax = -1;
+- if (iovmax == -1) {
++ static int iovmax = -2;
++ if (iovmax == -2) {
+ errno = 0;
+ iovmax = sysconf(_SC_IOV_MAX);
+ if (iovmax == -1) {
+
+From b119f17342a806d48a750c56adb32c17316f931e Mon Sep 17 00:00:00 2001
+From: PoroCYon <pcy at national.shitposting.agency>
+Date: Tue, 12 Sep 2017 17:35:01 +0200
+Subject: [PATCH 3/4] On Linux, take UIO_IOVMAX into account.
+
+---
+ node_build/dependencies/libuv/src/unix/stream.c | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+diff --git a/node_build/dependencies/libuv/src/unix/stream.c b/node_build/dependencies/libuv/src/unix/stream.c
+index b721570d8..09add6387 100644
+--- a/node_build/dependencies/libuv/src/unix/stream.c
++++ b/node_build/dependencies/libuv/src/unix/stream.c
+@@ -19,6 +19,10 @@
+ * IN THE SOFTWARE.
+ */
+
++#if !defined(_GNU_SOURCE) && defined(__linux__)
++#define _GNU_SOURCE
++#endif
++
+ #include "uv.h"
+ #include "internal.h"
+
+@@ -35,6 +39,10 @@
+ #include <unistd.h>
+ #include <limits.h> /* IOV_MAX */
+
++#if !defined(IOV_MAX) && defined(__linux__)
++#include <linux/uio.h>
++#endif
++
+ #if defined(__APPLE__)
+ # include <sys/event.h>
+ # include <sys/time.h>
+@@ -721,9 +729,15 @@ static int uv__getiovmax() {
+ if (errno) {
+ iovmax = 1;
+ }
++#ifdef __linux__
++ else {
++ iovmax = UIO_IOVMAX;
++ }
++#else
+ /*else {
+ iovmax = 1024;
+ }*/
++#endif
+ }
+ }
+ return iovmax;
+
+From 690d80c6a3e11cf6731b589d8d7752f8b2540594 Mon Sep 17 00:00:00 2001
+From: PoroCYon <pcy at national.shitposting.agency>
+Date: Tue, 12 Sep 2017 17:43:17 +0200
+Subject: [PATCH 4/4] Fix buid on arm64-v8a
+
+---
+ node_build/dependencies/libuv/src/unix/stream.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/node_build/dependencies/libuv/src/unix/stream.c b/node_build/dependencies/libuv/src/unix/stream.c
+index 09add6387..c4a2c529e 100644
+--- a/node_build/dependencies/libuv/src/unix/stream.c
++++ b/node_build/dependencies/libuv/src/unix/stream.c
+@@ -729,7 +729,7 @@ static int uv__getiovmax() {
+ if (errno) {
+ iovmax = 1;
+ }
+-#ifdef __linux__
++#if defined(__linux__) && defined(UIO_IOVMAX)
+ else {
+ iovmax = UIO_IOVMAX;
+ }
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2017-10-05 09:33:19 UTC (rev 261618)
+++ PKGBUILD 2017-10-05 09:37:16 UTC (rev 261619)
@@ -6,7 +6,7 @@
pkgname=cjdns
pkgver=20
-pkgrel=1
+pkgrel=2
pkgdesc='Routing engine designed for security, scalability, speed and ease of use'
url='https://github.com/cjdelisle/cjdns'
arch=('i686' 'x86_64')
@@ -15,10 +15,16 @@
optdepends=('nodejs: optional utilities support')
makedepends=('nodejs' 'python2')
install=cjdns.install
-source=(${pkgname}-${pkgver}.tar.gz::https://github.com/cjdelisle/${pkgname}/archive/cjdns-v${pkgver}.tar.gz)
-sha256sums=('08a1029d47f3b666eec9d901b2e2fe6e8f971348c10465427db95e4153ecd8b7')
-sha512sums=('7da6537ed417d33ebd9ffa27a9e08758c48ea99930a85497853f0ee43cc87501434ab76bee0e69dc935b3338959d86bcb4bef527f1b93887b0a3662b4ab55879')
+source=(${pkgname}-${pkgver}.tar.gz::https://github.com/cjdelisle/${pkgname}/archive/cjdns-v${pkgver}.tar.gz
+ 1107.patch)
+sha256sums=('e8c849fca47012412c640969f09a44300010ef5e9649e08a0d39f87795d124f5'
+ '0af8770c9b9948cb90fe9b4823a4abed4db9b72f6e13a26435000a4ea6cad732')
+prepare() {
+ cd ${pkgname}-${pkgname}-v${pkgver}
+ patch -p1 -i "${srcdir}/1107.patch"
+}
+
build() {
cd ${pkgname}-${pkgname}-v${pkgver}
CJDNS_RELEASE_VERSION="${pkgver}" \
More information about the arch-commits
mailing list