Commit d6c35f618c4f3ca20a43a5a28e08cde3540e6b7c

Guillem Jover 2017-01-10T04:33:15

Do not provide funopen() on musl Fixes: https://bugs.debian.org/818246

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;