Do not provide funopen() on musl Fixes: https://bugs.debian.org/818246
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
diff --git a/configure.ac b/configure.ac
index 5cbc2fa..e4d190d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -51,7 +51,11 @@ AS_CASE([$host_os],
AC_SEARCH_LIBS([clock_gettime], [rt], [CLOCK_GETTIME_LIBS="-lrt"])
AC_SUBST([CLOCK_GETTIME_LIBS])
LIBS="$saved_LIBS"
- ]
+ ],
+ [*-musl], [
+ # Upstream refuses to define this, we will do it ourselves then.
+ AC_DEFINE([__MUSL__], [1], [Define to 1 if we are building for musl])
+ ],
)
# Checks for header files.
diff --git a/src/funopen.c b/src/funopen.c
index 7d6ae31..1e05c7e 100644
--- a/src/funopen.c
+++ b/src/funopen.c
@@ -1,5 +1,5 @@
/*
- * Copyright © 2011, 2013 Guillem Jover
+ * Copyright © 2011, 2013, 2017 Guillem Jover
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -137,6 +137,12 @@ funopen(const void *cookie,
return fopencookie(cookiewrap, mode, funcswrap);
}
+#elif defined(__MUSL__)
+/*
+ * This is unimplementable on musl based systems, and upstream has stated
+ * they will not add the needed support to implement it. Just ignore this
+ * interface there, as it has never been provided anyway.
+ */
#else
-#error "Function funopen() needs to be ported."
+#error "Function funopen() needs to be ported or disabled."
#endif
diff --git a/src/libbsd.map b/src/libbsd.map
index 2b9a3db..304c593 100644
--- a/src/libbsd.map
+++ b/src/libbsd.map
@@ -114,6 +114,9 @@ LIBBSD_0.6 {
LIBBSD_0.7 {
getbsize;
+ /* This symbol might not be present on some specific systems, such
+ * as musl based ones. It might need to be removed on SOVERSION bump,
+ * as it cannot be portabily implemented everywhere. */
funopen;
reallocarray;