summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--patches/libbsd-0.8.7.local.patch186
-rw-r--r--patches/libbsd-0.9.1.local.patch320
-rw-r--r--vars/build.vars4
3 files changed, 322 insertions, 188 deletions
diff --git a/patches/libbsd-0.8.7.local.patch b/patches/libbsd-0.8.7.local.patch
deleted file mode 100644
index 56f024ea..00000000
--- 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 <sys/types.h>
-+#include <sys/param.h>
-+#include <sys/ioctl.h>
-+#include <sys/resource.h>
-+#include <sys/syscall.h>
-+#include <sys/statvfs.h>
-+#include <sys/socket.h>
-+#include <sys/mount.h>
-+#include <sys/mman.h>
-+#include <sys/stat.h>
-+#include <sys/time.h>
-+#include <stdlib.h>
-+#include <stdint.h>
-+#include <stdio.h>
-+#include <link.h>
-+#include <termios.h>
-+#include <fcntl.h>
-+#include <signal.h>
-+#include <string.h>
-+#include <errno.h>
-+#include <unistd.h>
-+#include <time.h>
-+
-+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 00000000..9de2d3fd
--- /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 <sys/stat.h>
+
+ #include <errno.h>
++#include <fcntl.h>
+ #include <stdarg.h>
+ #include <unistd.h>
+
+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 <deraadt@openbsd.org>
++ * Copyright (c) 2014 Bob Beck <beck@obtuse.com>
++ *
++ * 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 <sys/types.h>
++#include <sys/param.h>
++#include <sys/ioctl.h>
++#include <sys/resource.h>
++#include <sys/syscall.h>
++#include <sys/statvfs.h>
++#include <sys/socket.h>
++#include <sys/mount.h>
++#include <sys/mman.h>
++#include <sys/stat.h>
++#include <sys/time.h>
++#include <stdlib.h>
++#include <stdint.h>
++#include <stdio.h>
++#include <link.h>
++#include <termios.h>
++#include <fcntl.h>
++#include <signal.h>
++#include <string.h>
++#include <errno.h>
++#include <unistd.h>
++#include <time.h>
++
++#include "hash/sha512.h"
++
++#ifdef HAVE_GETAUXVAL
++#include <sys/auxv.h>
++#endif
++#include <sys/vfs.h>
++
++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 8c2a3b42..aff40ee7 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};