From 470950a3d5b291ed731ac4e8896a99a6f82f9a53 Mon Sep 17 00:00:00 2001 From: Lucio Andrés Illanes Albornoz Date: May 30 2018 14:12:31 +0000 Subject: vars/build.vars, patches/libbsd-0.9.1.local.patch: updates libbsd to v0.9.1 (via Redfoxmoon.) --- diff --git a/patches/libbsd-0.8.7.local.patch b/patches/libbsd-0.8.7.local.patch deleted file mode 100644 index 56f024e..0000000 --- a/patches/libbsd-0.8.7.local.patch +++ /dev/null @@ -1,186 +0,0 @@ -diff -Nru libbsd-0.8.7.orig/include/bsd/stdlib.h libbsd-0.8.7/include/bsd/stdlib.h ---- libbsd-0.8.7.orig/include/bsd/stdlib.h 2017-08-05 13:20:00.000000000 +0200 -+++ libbsd-0.8.7/include/bsd/stdlib.h 2018-04-27 21:18:23.074047191 +0200 -@@ -67,7 +67,7 @@ - const unsigned char *table, unsigned endbyte); - - void *reallocf(void *ptr, size_t size); --#if defined(_GNU_SOURCE) && defined(__GLIBC__) && !__GLIBC_PREREQ(2, 26) -+#if defined(_GNU_SOURCE) - void *reallocarray(void *ptr, size_t nmemb, size_t size); - #endif - -diff -Nru libbsd-0.8.7.orig/include/bsd/string.h libbsd-0.8.7/include/bsd/string.h ---- libbsd-0.8.7.orig/include/bsd/string.h 2017-08-05 13:20:54.000000000 +0200 -+++ libbsd-0.8.7/include/bsd/string.h 2018-04-27 21:18:02.670455792 +0200 -@@ -42,7 +42,7 @@ - char *strnstr(const char *str, const char *find, size_t str_len); - void strmode(mode_t mode, char *str); - --#if defined(_GNU_SOURCE) && defined(__GLIBC__) && !__GLIBC_PREREQ(2, 25) -+#if defined(_GNU_SOURCE) - void explicit_bzero(void *buf, size_t len); - #endif - __END_DECLS -diff -Nru libbsd-0.8.7.orig/src/getentropy.c libbsd-0.8.7/src/getentropy.c ---- libbsd-0.8.7.orig/src/getentropy.c 2017-06-06 04:21:24.000000000 +0200 -+++ libbsd-0.8.7/src/getentropy.c 2018-04-27 21:09:29.121945744 +0200 -@@ -40,6 +40,8 @@ - #include "getentropy_aix.c" - #elif defined(__hpux) - #include "getentropy_hpux.c" -+#elif defined(__midipix__) /* temporary - no native getentropy() yet */ -+#include "getentropy_midipix.c" - #else - #error "No getentropy hooks defined for this platform." - #endif -diff -Nru libbsd-0.8.7.orig/src/getentropy_midipix.c libbsd-0.8.7/src/getentropy_midipix.c ---- libbsd-0.8.7.orig/src/getentropy_midipix.c 1970-01-01 01:00:00.000000000 +0100 -+++ libbsd-0.8.7/src/getentropy_midipix.c 2018-04-27 21:11:22.917696342 +0200 -@@ -0,0 +1,118 @@ -+/* Temporary copy-paste from getentropy_linux.c until we get a native getentropy() implementation */ -+ -+ -+#define _POSIX_C_SOURCE 199309L -+#define _GNU_SOURCE 1 -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+int getentropy(void *buf, size_t len); -+ -+static int gotdata(char *buf, size_t len); -+static int getentropy_urandom(void *buf, size_t len); -+ -+int -+getentropy(void *buf, size_t len) -+{ -+ int ret = -1; -+ -+ if (len > 256) { -+ errno = EIO; -+ return (-1); -+ } -+ -+ ret = getentropy_urandom(buf, len); -+ if (ret != -1) -+ return (ret); -+ -+ /* Oh well! */ -+ raise(SIGKILL); -+ return -1; -+} -+ -+static int -+gotdata(char *buf, size_t len) -+{ -+ char any_set = 0; -+ size_t i; -+ -+ for (i = 0; i < len; ++i) -+ any_set |= buf[i]; -+ if (any_set == 0) -+ return (-1); -+ return (0); -+} -+ -+static int -+getentropy_urandom(void *buf, size_t len) -+{ -+ struct stat st; -+ size_t i; -+ int fd, cnt, flags; -+ int save_errno = errno; -+ -+start: -+ -+ flags = O_RDONLY; -+#ifdef O_NOFOLLOW -+ flags |= O_NOFOLLOW; -+#endif -+#ifdef O_CLOEXEC -+ flags |= O_CLOEXEC; -+#endif -+ fd = open("/dev/urandom", flags, 0); -+ if (fd == -1) { -+ if (errno == EINTR) -+ goto start; -+ goto nodevrandom; -+ } -+#ifndef O_CLOEXEC -+ fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC); -+#endif -+ -+ /* Lightly verify that the device node looks sane */ -+ if (fstat(fd, &st) == -1 || !S_ISCHR(st.st_mode)) { -+ close(fd); -+ goto nodevrandom; -+ } -+ for (i = 0; i < len; ) { -+ size_t wanted = len - i; -+ ssize_t ret = read(fd, (char *)buf + i, wanted); -+ -+ if (ret == -1) { -+ if (errno == EAGAIN || errno == EINTR) -+ continue; -+ close(fd); -+ goto nodevrandom; -+ } -+ i += ret; -+ } -+ close(fd); -+ if (gotdata(buf, len) == 0) { -+ errno = save_errno; -+ return (0); /* satisfied */ -+ } -+nodevrandom: -+ errno = EIO; -+ return (-1); -+} -diff -Nru libbsd-0.8.7.orig/src/getpeereid.c libbsd-0.8.7/src/getpeereid.c ---- libbsd-0.8.7.orig/src/getpeereid.c 2017-06-06 04:06:45.000000000 +0200 -+++ libbsd-0.8.7/src/getpeereid.c 2018-04-27 21:11:49.277638606 +0200 -@@ -40,7 +40,7 @@ - getpeereid(int s, uid_t *euid, gid_t *egid) - { - /* XXX: This should be autodetected at build time instead. */ --#if defined(__linux__) -+#if defined(__linux__) || defined(__midipix__) - struct ucred cred; - #elif defined(__OpenBSD__) - struct sockpeercred cred; -diff -Nru libbsd-0.8.7.orig/src/setproctitle.c libbsd-0.8.7/src/setproctitle.c ---- libbsd-0.8.7.orig/src/setproctitle.c 2017-07-17 00:47:19.000000000 +0200 -+++ libbsd-0.8.7/src/setproctitle.c 2018-04-27 21:12:24.521561430 +0200 -@@ -280,6 +280,7 @@ - *++nul = '\0'; - } - } -+#ifndef __midipix__ - __asm__(".symver setproctitle_impl,setproctitle@@LIBBSD_0.5"); - - /* The original function introduced in 0.2 was a stub, it only got implemented -@@ -293,3 +294,4 @@ - __attribute__((alias("setproctitle_impl"))); - #endif - __asm__(".symver setproctitle_stub,setproctitle@LIBBSD_0.2"); -+#endif diff --git a/patches/libbsd-0.9.1.local.patch b/patches/libbsd-0.9.1.local.patch new file mode 100644 index 0000000..9de2d3f --- /dev/null +++ b/patches/libbsd-0.9.1.local.patch @@ -0,0 +1,320 @@ +diff -Nru libbsd-0.9.1.orig/include/bsd/sys/cdefs.h libbsd-0.9.1/include/bsd/sys/cdefs.h +--- libbsd-0.9.1.orig/include/bsd/sys/cdefs.h 2018-05-22 15:56:14.000000000 +0200 ++++ libbsd-0.9.1/include/bsd/sys/cdefs.h 2018-05-30 15:27:07.067975364 +0200 +@@ -93,7 +93,7 @@ + #define LIBBSD_DEPRECATED(x) + #endif + +-#if LIBBSD_GCC_VERSION >= 0x0200 ++#if 0 + #define LIBBSD_REDIRECT(name, proto, alias) name proto __asm__(LIBBSD_ASMNAME(#alias)) + #endif + #define LIBBSD_ASMNAME(cname) LIBBSD_ASMNAME_PREFIX(__USER_LABEL_PREFIX__, cname) +diff -Nru libbsd-0.9.1.orig/include/bsd/vis.h libbsd-0.9.1/include/bsd/vis.h +--- libbsd-0.9.1.orig/include/bsd/vis.h 2018-05-22 16:07:42.000000000 +0200 ++++ libbsd-0.9.1/include/bsd/vis.h 2018-05-30 15:37:23.466013504 +0200 +@@ -113,14 +113,9 @@ + + int strvis(char *, const char *, int); + int stravis(char **, const char *, int); +-#ifdef LIBBSD_NETBSD_VIS +-/* NetBSD prototype. */ +-int LIBBSD_REDIRECT(strnvis, (char *, size_t, const char *, int), +- strnvis_netbsd); +-#else +-/* OpenBSD prototype (current default). */ +-int strnvis(char *, const char *, size_t, int); +-#endif ++ ++/* NetBSD prototype */ ++int strnvis(char *, size_t, const char *, int); + + int strsvis(char *, const char *, int, const char *); + int strsnvis(char *, size_t, const char *, int, const char *); +@@ -135,14 +130,9 @@ + int *); + + int strunvis(char *, const char *); +-#ifdef LIBBSD_NETBSD_VIS +-/* NetBSD prototype. */ +-int LIBBSD_REDIRECT(strnunvis, (char *, size_t, const char *), +- strnunvis_netbsd); +-#else +-/* OpenBSD prototype (current default). */ +-ssize_t strnunvis(char *, const char *, size_t); +-#endif ++ ++/* NetBSD prototype */ ++int strnunvis(char *, size_t, const char *); + + int strunvisx(char *, const char *, int); + int strnunvisx(char *, size_t, const char *, int); +diff -Nru libbsd-0.9.1.orig/src/flopen.c libbsd-0.9.1/src/flopen.c +--- libbsd-0.9.1.orig/src/flopen.c 2018-05-21 04:33:33.000000000 +0200 ++++ libbsd-0.9.1/src/flopen.c 2018-05-30 15:09:48.789934331 +0200 +@@ -32,6 +32,7 @@ + #include + + #include ++#include + #include + #include + +diff -Nru libbsd-0.9.1.orig/src/getentropy.c libbsd-0.9.1/src/getentropy.c +--- libbsd-0.9.1.orig/src/getentropy.c 2018-05-21 04:48:37.000000000 +0200 ++++ libbsd-0.9.1/src/getentropy.c 2018-05-30 15:44:15.596626881 +0200 +@@ -26,6 +26,8 @@ + + #if defined(__linux__) + #include "getentropy_linux.c" ++#elif defined(__midipix__) ++#include "getentropy_midipix.c" + #elif defined(__GNU__) + #include "getentropy_hurd.c" + #elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) +diff -Nru libbsd-0.9.1.orig/src/getentropy_midipix.c libbsd-0.9.1/src/getentropy_midipix.c +--- libbsd-0.9.1.orig/src/getentropy_midipix.c 1970-01-01 01:00:00.000000000 +0100 ++++ libbsd-0.9.1/src/getentropy_midipix.c 2018-05-30 15:43:30.744779217 +0200 +@@ -0,0 +1,153 @@ ++/* $OpenBSD: getentropy_linux.c,v 1.45 2018/03/13 22:53:28 bcook Exp $ */ ++ ++/* ++ * Copyright (c) 2014 Theo de Raadt ++ * Copyright (c) 2014 Bob Beck ++ * ++ * Permission to use, copy, modify, and distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ++ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ * ++ * Emulation of getentropy(2) as documented at: ++ * http://man.openbsd.org/getentropy.2 ++ */ ++ ++#define _POSIX_C_SOURCE 199309L ++#define _GNU_SOURCE 1 ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "hash/sha512.h" ++ ++#ifdef HAVE_GETAUXVAL ++#include ++#endif ++#include ++ ++int getentropy(void *buf, size_t len); ++ ++static int gotdata(char *buf, size_t len); ++ ++static int getentropy_urandom(void *buf, size_t len); ++ ++int ++getentropy(void *buf, size_t len) ++{ ++ int ret = -1; ++ ++ if (len > 256) { ++ errno = EIO; ++ return (-1); ++ } ++ ++ /* ++ * Try to get entropy with /dev/urandom ++ * ++ * This can fail if the process is inside a chroot or if file ++ * descriptors are exhausted. ++ */ ++ ret = getentropy_urandom(buf, len); ++ if (ret != -1) ++ return (ret); ++ ++ errno = EIO; ++ return (ret); ++} ++ ++/* ++ * Basic sanity checking; wish we could do better. ++ */ ++static int ++gotdata(char *buf, size_t len) ++{ ++ char any_set = 0; ++ size_t i; ++ ++ for (i = 0; i < len; ++i) ++ any_set |= buf[i]; ++ if (any_set == 0) ++ return (-1); ++ return (0); ++} ++ ++static int ++getentropy_urandom(void *buf, size_t len) ++{ ++ struct stat st; ++ size_t i; ++ int fd, cnt, flags; ++ int save_errno = errno; ++ ++start: ++ ++ flags = O_RDONLY; ++#ifdef O_NOFOLLOW ++ flags |= O_NOFOLLOW; ++#endif ++#ifdef O_CLOEXEC ++ flags |= O_CLOEXEC; ++#endif ++ fd = open("/dev/urandom", flags, 0); ++ if (fd == -1) { ++ if (errno == EINTR) ++ goto start; ++ goto nodevrandom; ++ } ++#ifndef O_CLOEXEC ++ fcntl(fd, F_SETFD, fcntl(fd, F_GETFD) | FD_CLOEXEC); ++#endif ++ ++ /* Lightly verify that the device node looks sane */ ++ if (fstat(fd, &st) == -1 || !S_ISCHR(st.st_mode)) { ++ close(fd); ++ goto nodevrandom; ++ } ++ for (i = 0; i < len; ) { ++ size_t wanted = len - i; ++ ssize_t ret = read(fd, (char *)buf + i, wanted); ++ ++ if (ret == -1) { ++ if (errno == EAGAIN || errno == EINTR) ++ continue; ++ close(fd); ++ goto nodevrandom; ++ } ++ i += ret; ++ } ++ close(fd); ++ if (gotdata(buf, len) == 0) { ++ errno = save_errno; ++ return (0); /* satisfied */ ++ } ++nodevrandom: ++ errno = EIO; ++ return (-1); ++} +diff -Nru libbsd-0.9.1.orig/src/getpeereid.c libbsd-0.9.1/src/getpeereid.c +--- libbsd-0.9.1.orig/src/getpeereid.c 2017-06-06 04:06:45.000000000 +0200 ++++ libbsd-0.9.1/src/getpeereid.c 2018-05-30 15:10:23.777937764 +0200 +@@ -40,7 +40,7 @@ + getpeereid(int s, uid_t *euid, gid_t *egid) + { + /* XXX: This should be autodetected at build time instead. */ +-#if defined(__linux__) ++#if defined(__linux__) || defined(__midipix__) + struct ucred cred; + #elif defined(__OpenBSD__) + struct sockpeercred cred; +diff -Nru libbsd-0.9.1.orig/src/setproctitle.c libbsd-0.9.1/src/setproctitle.c +--- libbsd-0.9.1.orig/src/setproctitle.c 2018-04-21 23:30:22.000000000 +0200 ++++ libbsd-0.9.1/src/setproctitle.c 2018-05-30 15:13:25.245835004 +0200 +@@ -221,8 +221,13 @@ + #define SPT_MAXTITLE 255 + #endif + ++#ifdef __midipix__ ++void ++setproctitle(const char *fmt, ...) ++#else + void + setproctitle_impl(const char *fmt, ...) ++#endif + { + /* Use buffer in case argv[0] is passed. */ + char buf[SPT_MAXTITLE + 1]; +@@ -280,6 +285,7 @@ + *++nul = '\0'; + } + } ++#ifndef __midipix__ + __asm__(".symver setproctitle_impl,setproctitle@@LIBBSD_0.5"); + + /* The original function introduced in 0.2 was a stub, it only got implemented +@@ -293,3 +299,4 @@ + __attribute__((alias("setproctitle_impl"))); + #endif + __asm__(".symver setproctitle_stub,setproctitle@LIBBSD_0.2"); ++#endif /* !__midipix__ */ +diff -Nru libbsd-0.9.1.orig/src/unvis.c libbsd-0.9.1/src/unvis.c +--- libbsd-0.9.1.orig/src/unvis.c 2018-05-22 16:07:42.000000000 +0200 ++++ libbsd-0.9.1/src/unvis.c 2018-05-30 15:20:12.613101869 +0200 +@@ -560,6 +560,8 @@ + * OpenBSD, 2001: strnunvis(char *dst, const char *src, size_t dlen); + * NetBSD: 2012, strnunvis(char *dst, size_t dlen, const char *src); + */ ++#ifndef __midipix__ /* Temporary fix until upstream resolves this in a later version, */ ++ /* do not upstream */ + ssize_t + strnunvis_openbsd(char *dst, const char *src, size_t dlen) + { +@@ -573,3 +575,9 @@ + return strnunvisx(dst, dlen, src, 0); + } + __asm__(".symver strnunvis_netbsd,strnunvis@LIBBSD_0.9.1"); ++#else ++int strnunvis(char *dst, size_t dlen, const char *src) ++{ ++ return strnunvisx(dst, dlen, src, 0); ++} ++#endif /* __midipix__ */ +diff -Nru libbsd-0.9.1.orig/src/vis.c libbsd-0.9.1/src/vis.c +--- libbsd-0.9.1.orig/src/vis.c 2018-05-22 16:07:42.000000000 +0200 ++++ libbsd-0.9.1/src/vis.c 2018-05-30 15:34:26.362596310 +0200 +@@ -718,6 +718,7 @@ + * OpenBSD, 2001: strnvis(char *dst, const char *src, size_t dlen, int flag); + * NetBSD: 2012, strnvis(char *dst, size_t dlen, const char *src, int flag); + */ ++#ifndef __midipix__ /* see src/unvis.c */ + int + strnvis_openbsd(char *mbdst, const char *mbsrc, size_t dlen, int flags) + { +@@ -731,6 +732,13 @@ + return istrsenvisxl(&mbdst, &dlen, mbsrc, flags, "", NULL); + } + __asm__(".symver strnvis_netbsd,strnvis@LIBBSD_0.9.1"); ++#else ++int ++strnvis(char *mbdst, size_t dlen, const char *mbsrc, int flags) ++{ ++ return istrsenvisxl(&mbdst, &dlen, mbsrc, flags, "", NULL); ++} ++#endif + + int + stravis(char **mbdstp, const char *mbsrc, int flags) diff --git a/vars/build.vars b/vars/build.vars index 8c2a3b4..aff40ee 100644 --- a/vars/build.vars +++ b/vars/build.vars @@ -494,8 +494,8 @@ NATIVE_PACKAGES_DEPS_PYTHON="${PREFIX}/bin/python"; : ${PKG_LIBATOMIC_OPS_URLS_GIT:="libatomic_ops=https://github.com/ivmai/libatomic_ops@master"}; : ${PKG_MUSL_COMPAT_URLS_GIT:=musl_compat=https://github.com/Redfoxmoon3/musl-compat.git@master}; : ${PKG_MUSL_COMPAT_BUILD_DIR:=musl_compat}; -: ${PKG_LIBBSD_SHA256SUM:=f548f10e5af5a08b1e22889ce84315b1ebe41505b015c9596bad03fd13a12b31}; -: ${PKG_LIBBSD_VERSION:=0.8.7}; +: ${PKG_LIBBSD_SHA256SUM:=56d835742327d69faccd16955a60b6dcf30684a8da518c4eca0ac713b9e0a7a4}; +: ${PKG_LIBBSD_VERSION:=0.9.1}; : ${PKG_LIBBSD_URL:=https://libbsd.freedesktop.org/releases/libbsd-${PKG_LIBBSD_VERSION}.tar.xz}; : ${PKG_LIBPIPELINE_SHA256SUM:=da46d7b20163aadb9db2faae483f734e9096a7550c84b94029abeab62dd1b9ee}; : ${PKG_LIBPIPELINE_VERSION:=1.4.1};