summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--vlc/build/vlc-1.0.0_allow_older_glibc.diff77
1 files changed, 77 insertions, 0 deletions
diff --git a/vlc/build/vlc-1.0.0_allow_older_glibc.diff b/vlc/build/vlc-1.0.0_allow_older_glibc.diff
new file mode 100644
index 00000000..ad82a88e
--- /dev/null
+++ b/vlc/build/vlc-1.0.0_allow_older_glibc.diff
@@ -0,0 +1,77 @@
+# We have revert the following commits below which prevent
+# VLC from compiling with Slackware 12.2's glibc 2.7:
+# 82f20ceb63d9437d5d8c2eb92312ef37dae93e44
+# 288559204f8b0ef943d5e7273b9a076f69318c26
+--- a/configure.ac
++++ b/configure.ac
+@@ -503,6 +503,24 @@ AC_LANG_PUSH(C++)
+ AC_LANG_POP(C++)
+ fi
+
++dnl
++dnl Buggy glibc prevention. Purposedly not cached.
++dnl Ubuntu alone has 20 bug numbers for this...
++dnl
++AC_MSG_CHECKING(for buggy GNU/libc versions)
++AC_PREPROC_IFELSE([
++#include <limits.h>
++#if defined (__GLIBC__) && (__GLIBC__ == 2) \
++ && (__GLIBC_MINOR__ >= 5) && (__GLIBC_MINOR__ <= 7)
++# error GNU/libc with dcgettext killer bug!
++#endif
++], [
++ AC_MSG_RESULT([not present])
++], [
++ AC_MSG_RESULT([found])
++ AC_MSG_ERROR([Buggy GNU/libc (version 2.5 - 2.7) present. VLC would crash; there is no viable work-around for this. Check with your distribution vendor on how to update the glibc run-time.])
++])
++
+ dnl Plugin compilation stuff
+
+ VLC_LIBRARY_SUFFIX
+--- a/src/misc/linux_specific.c
++++ b/src/misc/linux_specific.c
+@@ -22,11 +22,13 @@
+ # include "config.h"
+ #endif
+
++#include <stdio.h>
++#include <string.h>
++
+ #include <vlc_common.h>
+ #include "../libvlc.h"
+
+ #if 0
+-#include <stdio.h>
+ #include <assert.h>
+ #include <pthread.h>
+
+@@ -70,8 +72,28 @@ static void set_libvlc_path (void)
+ }
+ #endif
+
++#ifdef __GLIBC__
++# include <gnu/libc-version.h>
++# include <stdlib.h>
++#endif
++
+ void system_Init (libvlc_int_t *libvlc, int *argc, const char *argv[])
+ {
++#ifdef __GLIBC__
++ const char *glcv = gnu_get_libc_version ();
++
++ /* gettext in glibc 2.5-2.7 is not thread-safe. LibVLC keeps crashing,
++ * especially in sterror_r(). Even if we have NLS disabled, the calling
++ * process might have called setlocale(). */
++ if (strverscmp (glcv, "2.5") >= 0 && strverscmp (glcv, "2.8") < 0)
++ {
++ fputs ("LibVLC has detected an unusable buggy GNU/libc version.\n"
++ "Please update to version 2.8 or newer.\n", stderr);
++ fflush (stderr);
++ abort ();
++ }
++#endif
++
+ #if 0
+ static pthread_once_t once = PTHREAD_ONCE_INIT;
+ pthread_once (&once, set_libvlc_path);