libbsd: apply upstream patch to fix w/musl
This commit is contained in:
parent
8349d73c8f
commit
88ea78745a
2 changed files with 78 additions and 1 deletions
|
@ -13,7 +13,10 @@ stdenv.mkDerivation rec {
|
||||||
# the configure scripts
|
# the configure scripts
|
||||||
nativeBuildInputs = [ autoreconfHook ];
|
nativeBuildInputs = [ autoreconfHook ];
|
||||||
|
|
||||||
patches = stdenv.lib.optionals stdenv.isDarwin [ ./darwin.patch ];
|
patches = stdenv.lib.optional stdenv.isDarwin ./darwin.patch
|
||||||
|
# Suitable for all, but limited to musl to avoid rebuilds
|
||||||
|
# https://cgit.freedesktop.org/libbsd/patch/?id=1f8a3f7bccfc84b195218ad0086ebd57049c3490
|
||||||
|
++ stdenv.lib.optional stdenv.hostPlatform.isMusl ./non-glibc.patch;
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "Common functions found on BSD systems";
|
description = "Common functions found on BSD systems";
|
||||||
|
|
74
pkgs/development/libraries/libbsd/non-glibc.patch
Normal file
74
pkgs/development/libraries/libbsd/non-glibc.patch
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
From 1f8a3f7bccfc84b195218ad0086ebd57049c3490 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Guillem Jover <guillem@hadrons.org>
|
||||||
|
Date: Tue, 6 Mar 2018 01:39:45 +0100
|
||||||
|
Subject: Fix function declaration protection for glibc already providing them
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
On non-glibc based systems we cannot unconditionally use the
|
||||||
|
__GLIBC_PREREQ macro as it gets expanded before evaluation. Instead,
|
||||||
|
if it is undefined, define it to 0.
|
||||||
|
|
||||||
|
We should also always declare these functions on non-glibc based
|
||||||
|
systems. And on systems with a new enough glibc, which provides these
|
||||||
|
functions, we should still provide the declarations if _GNU_SOURCE
|
||||||
|
is *not* defined.
|
||||||
|
|
||||||
|
Reported-by: Jörg Krause <joerg.krause@embedded.rocks>
|
||||||
|
---
|
||||||
|
include/bsd/stdlib.h | 3 ++-
|
||||||
|
include/bsd/string.h | 3 ++-
|
||||||
|
include/bsd/sys/cdefs.h | 8 ++++++++
|
||||||
|
3 files changed, 12 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/include/bsd/stdlib.h b/include/bsd/stdlib.h
|
||||||
|
index 8d33d1f..a5b063c 100644
|
||||||
|
--- a/include/bsd/stdlib.h
|
||||||
|
+++ b/include/bsd/stdlib.h
|
||||||
|
@@ -71,7 +71,8 @@ int sradixsort(const unsigned char **base, int nmemb,
|
||||||
|
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(__GLIBC__) || \
|
||||||
|
+ (defined(__GLIBC__) && (!__GLIBC_PREREQ(2, 26) || !defined(_GNU_SOURCE)))
|
||||||
|
void *reallocarray(void *ptr, size_t nmemb, size_t size);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
diff --git a/include/bsd/string.h b/include/bsd/string.h
|
||||||
|
index 29097f6..f987fee 100644
|
||||||
|
--- a/include/bsd/string.h
|
||||||
|
+++ b/include/bsd/string.h
|
||||||
|
@@ -46,7 +46,8 @@ size_t strlcat(char *dst, const char *src, size_t siz);
|
||||||
|
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(__GLIBC__) || \
|
||||||
|
+ (defined(__GLIBC__) && (!__GLIBC_PREREQ(2, 25) || !defined(_GNU_SOURCE)))
|
||||||
|
void explicit_bzero(void *buf, size_t len);
|
||||||
|
#endif
|
||||||
|
__END_DECLS
|
||||||
|
diff --git a/include/bsd/sys/cdefs.h b/include/bsd/sys/cdefs.h
|
||||||
|
index b4c8f30..d1cc419 100644
|
||||||
|
--- a/include/bsd/sys/cdefs.h
|
||||||
|
+++ b/include/bsd/sys/cdefs.h
|
||||||
|
@@ -59,6 +59,14 @@
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
+ * On non-glibc based systems, we cannot unconditionally use the
|
||||||
|
+ * __GLIBC_PREREQ macro as it gets expanded before evaluation.
|
||||||
|
+ */
|
||||||
|
+#ifndef __GLIBC_PREREQ
|
||||||
|
+#define __GLIBC_PREREQ(maj, min) 0
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+/*
|
||||||
|
* Some kFreeBSD headers expect those macros to be set for sanity checks.
|
||||||
|
*/
|
||||||
|
#ifndef _SYS_CDEFS_H_
|
||||||
|
--
|
||||||
|
cgit v1.1
|
||||||
|
|
Loading…
Reference in a new issue