The cirros image was rebuilt against the 3.13.0-83 kernel, drivers e1000e, igbvf...
[packages/trusty/cirros-testvm.git] / cirros-testvm / src-cirros / buildroot-2015.05 / package / mesa3d / 0002-Fix-runtime-error-with-uClibc.patch
diff --git a/cirros-testvm/src-cirros/buildroot-2015.05/package/mesa3d/0002-Fix-runtime-error-with-uClibc.patch b/cirros-testvm/src-cirros/buildroot-2015.05/package/mesa3d/0002-Fix-runtime-error-with-uClibc.patch
new file mode 100644 (file)
index 0000000..c85f88a
--- /dev/null
@@ -0,0 +1,48 @@
+Fix runtime error with uClibc
+
+Patch inspired by
+https://www.winehq.org/pipermail/wine-bugs/2011-September/288987.html
+http://git.alpinelinux.org/cgit/aports/tree/main/wine/uclibc-fmaxf-fminf.patch?id=c9b491b6099eec02a835ffd05539b5c783c6c43a
+
+Starting an app using mesa3d 10.5.x, Kodi for example, fails:
+
+/usr/lib/kodi/kodi.bin: symbol 'fminf': can't resolve symbol in lib '/usr/lib/dri/i965_dri.so'.
+libGL error: unable to load driver: i965_dri.so
+libGL error: driver pointer missing
+libGL error: failed to load driver: i965
+libGL error: unable to load driver: swrast_dri.so
+libGL error: failed to load driver: swrast
+
+This patch was rejected by upstream mesa3d:
+http://lists.freedesktop.org/archives/mesa-dev/2015-March/079436.html
+
+The real fix was committed to uClibc:
+http://git.uclibc.org/uClibc/commit/?id=6c4538905e65ceb203f59aaa9a61728e81c6bc0a
+
+Until the external toolchains do not contain this uClibc patch we keep this
+patch: http://lists.busybox.net/pipermail/buildroot/2015-March/123410.html
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+---
+diff -uNr mesa-10.5.3.org/src/glsl/nir/nir_constant_expressions.c mesa-10.5.3/src/glsl/nir/nir_constant_expressions.c
+--- mesa-10.5.3.org/src/glsl/nir/nir_constant_expressions.c    2015-04-12 23:31:29.000000000 +0200
++++ mesa-10.5.3/src/glsl/nir/nir_constant_expressions.c        2015-04-13 19:59:37.819786541 +0200
+@@ -48,6 +48,18 @@
+ }
+ #endif
++#ifdef __UCLIBC__
++float fmaxf(float a, float b)
++{
++      return (a > b) ? a : b;
++}
++
++float fminf(float a, float b)
++{
++      return (a < b) ? a : b;
++}
++#endif
++
+ /**
+  * Evaluate one component of packSnorm4x8.
+  */