packages/sound/mpd/patches/100-musl_gcc5_fixes.patch
Ted Hess e8bd00dd39 mpd: Update to 0.19.11, fix gcc5 builds
Add a patch from the Alpine Linux project to fix a musl build issue with gcc 5:

Signed-off-by: Ted Hess <thess@kitschensync.net>
2015-11-23 08:57:18 -05:00

50 lines
1.4 KiB
Diff

Add a patch from the Alpine Linux project to fix a musl build issue with gcc 5:
Problem has been reported upstream and closed with WONTFIX:
http://bugs.musicpd.org/view.php?id=4387
http://bugs.musicpd.org/view.php?id=4110
however...
POSIX does not permit using PTHREAD_COND_INITIALIZER except for static
initialization, and certainly does not permit using it as a value
POSIX does not specify the type of the object (it's opaque) so if
there are any types for which their code would be invalid C++, then their
code is invalid
Volatile in the type is necessary. without that, LTO can break the code.
--- a/src/notify.hxx
+++ b/src/notify.hxx
@@ -28,7 +28,7 @@ struct notify {
Cond cond;
bool pending;
-#if !defined(WIN32) && !defined(__NetBSD__) && !defined(__BIONIC__)
+#if defined(__GLIBC__)
constexpr
#endif
notify():pending(false) {}
--- a/src/thread/PosixCond.hxx
+++ b/src/thread/PosixCond.hxx
@@ -41,7 +41,7 @@ class PosixCond {
pthread_cond_t cond;
public:
-#if defined(__NetBSD__) || defined(__BIONIC__)
+#if !defined(__GLIBC__)
/* NetBSD's PTHREAD_COND_INITIALIZER is not compatible with
"constexpr" */
PosixCond() {
--- a/src/thread/PosixMutex.hxx
+++ b/src/thread/PosixMutex.hxx
@@ -41,7 +41,7 @@ class PosixMutex {
pthread_mutex_t mutex;
public:
-#if defined(__NetBSD__) || defined(__BIONIC__)
+#if !defined(__GLIBC__)
/* NetBSD's PTHREAD_MUTEX_INITIALIZER is not compatible with
"constexpr" */
PosixMutex() {