aboutsummaryrefslogtreecommitdiff
path: root/package/mpd/0002-musl-gcc5-fixes.patch
diff options
context:
space:
mode:
authorGravatar Jörg Krause <joerg.krause@embedded.rocks>2015-08-05 12:43:49 +0200
committerGravatar Thomas Petazzoni <thomas.petazzoni@free-electrons.com>2015-08-06 08:45:13 +0200
commit3db495e4d787ec6a77cfe38510e68be098a98d63 (patch)
tree7d7a1866e621fc5e7d6d9f965fbf646c3ef9c418 /package/mpd/0002-musl-gcc5-fixes.patch
parentfe500c5c5c4a4987c060667152969da0478be198 (diff)
downloadbuildroot-3db495e4d787ec6a77cfe38510e68be098a98d63.tar.gz
buildroot-3db495e4d787ec6a77cfe38510e68be098a98d63.tar.bz2
package/mpd: add patch to fix musl gcc5 build issue
Add a patch from the Alpine Linux project [1] to fix a musl build issue with gcc 5: ``` error: temporary of non-literal type ‘pthread_mutex_t’ in a constant expression constexpr PosixMutex():mutex(PTHREAD_MUTEX_INITIALIZER) {} ``` Problem has been reported by the Alpine team upstream and was closed by the MPD maintainer 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. Also 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. Also, volatile in the type is necessary. without that, LTO can break the code. [1] http://git.alpinelinux.org/cgit/aports/log/main/mpd/musl-gcc5-fixes.patch Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Diffstat (limited to 'package/mpd/0002-musl-gcc5-fixes.patch')
-rw-r--r--package/mpd/0002-musl-gcc5-fixes.patch56
1 files changed, 56 insertions, 0 deletions
diff --git a/package/mpd/0002-musl-gcc5-fixes.patch b/package/mpd/0002-musl-gcc5-fixes.patch
new file mode 100644
index 0000000000..a4c65cceec
--- /dev/null
+++ b/package/mpd/0002-musl-gcc5-fixes.patch
@@ -0,0 +1,56 @@
+musl gcc5 fixes
+
+Fetch from:
+http://git.alpinelinux.org/cgit/aports/plain/main/mpd/musl-gcc5-fixes.patch
+
+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
+
+also 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
+
+also, volatile in the type is necessary. without that, LTO can break the code.
+
+Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks>
+
+--- ./src/notify.hxx.orig
++++ ./src/notify.hxx
+@@ -28,7 +28,7 @@
+ Cond cond;
+ bool pending;
+
+-#if !defined(WIN32) && !defined(__NetBSD__) && !defined(__BIONIC__)
++#if defined(__GLIBC__)
+ constexpr
+ #endif
+ notify():pending(false) {}
+--- ./src/thread/PosixCond.hxx.orig
++++ ./src/thread/PosixCond.hxx
+@@ -41,7 +41,7 @@
+ pthread_cond_t cond;
+
+ public:
+-#if defined(__NetBSD__) || defined(__BIONIC__)
++#if !defined(__GLIBC__)
+ /* NetBSD's PTHREAD_COND_INITIALIZER is not compatible with
+ "constexpr" */
+ PosixCond() {
+--- ./src/thread/PosixMutex.hxx.orig
++++ ./src/thread/PosixMutex.hxx
+@@ -41,7 +41,7 @@
+ pthread_mutex_t mutex;
+
+ public:
+-#if defined(__NetBSD__) || defined(__BIONIC__)
++#if !defined(__GLIBC__)
+ /* NetBSD's PTHREAD_MUTEX_INITIALIZER is not compatible with
+ "constexpr" */
+ PosixMutex() {
+