Message ID | 1426435802-14030-2-git-send-email-bernd.kuhls@t-online.de |
---|---|
State | Accepted |
Headers | show |
Dear Bernd Kuhls, On Sun, 15 Mar 2015 17:10:01 +0100, Bernd Kuhls wrote: > Dropped several dependencies because the "distribution tarball has been renamed > and now contains all the generated sources." > http://lists.freedesktop.org/archives/mesa-announce/2015-March/000145.html > > Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> > --- > v2: updated hash (Baruch), added note about dependency changes (Thomas) Thanks for the additional explanation, makes a lot more sense now. I've applied your patch. I however have a comment: > ++#ifdef __UCLIBC__ > ++float fmaxf(float a, float b) This is really a crappy solution. I know we use it in various places, but it simply does not work properly: if a new version of uClibc is released with an implementation of fmaxf(), then __UCLIBC__ will still be true, but we'll have a duplicated implementation of fmaxf(). http://autobuild.buildroot.org/results/6f6/6f62dffec0e299a36755184338524e107a932b16/build-end.log is an excellent demonstration of why using __UCLIBC__ is bad. This build failure is caused by the patch package/freerdp/0001-add-support-for-uclibc.patch, wihch just like yours adds replacement function if __UCLIBC__ is defined. Now, enters uClibc-ng, which does implement eventfd_read() and eventfd_write(), and bang, it fails. Solution: use a proper autoconf test to see if fmax() is available or not, or provide an alternate implementation only if it's not already provided. Since we're doing this __UCLIBC__ trick in lots of places, I've nonetheless applied your patch, but it'd be good to use proper solutions in the future. Thanks! Thomas
Dear Bernd Kuhls, On Sun, 15 Mar 2015 17:10:01 +0100, Bernd Kuhls wrote: > MESA3D_DEPENDENCIES = \ > expat \ > - host-bison \ > - host-flex \ > host-gettext \ > - host-python \ > - host-xutil_makedepend \ > + host-python-mako \ This is apparently not working well in some cases, see http://autobuild.buildroot.net/results/1ce/1ce2509c8abb7483397c7d0f21c299095e94a254/. Thanks, Thomas
[posted and mailed] Thomas Petazzoni <thomas.petazzoni@free-electrons.com> wrote in news:20150321095905.0e24d32c@free-electrons.com: > This is apparently not working well in some cases, see > http://autobuild.buildroot.net/results/1ce/1ce2509c8abb7483397c7d0f21c299 > 095e94a254/. Hi Thomas, this seems to be a python2 <-> python3 problem: $ grep -i "ge_python \|ge_python3=" .config # BR2_PACKAGE_PYTHON is not set BR2_PACKAGE_PYTHON3=y host-python is compiled as $ ls -la output/build/ | grep host-py drwxr-xr-x 17 fli4l fli4l 4096 Mär 21 10:48 host-python3-3.4.2 drwxr-xr-x 9 fli4l fli4l 4096 Mär 21 10:48 host-python-mako-1.0.1 but mesa3d checks for python2 first which picks up /usr/bin/python on my machine $ grep PYTHON2 output/build/mesa3d-10.5.1/config.log ac_cv_prog_PYTHON2=python2 PYTHON2='python2' due to "AC_CHECK_PROGS([PYTHON2], [python2 python])" in mesa3d/configure.ac Adding MESA3D_CONF_ENV += ac_cv_prog_PYTHON2=$(HOST_DIR)/usr/bin/python to mesa3d.mk forcing the usage of host-python3 does not help either: checking if module mako in python is installed... Traceback (most recent call last): File "<stdin>", line 10, in <module> TypeError: unorderable types: map() > map() configure: error: mako 0.3.4 or later is required. make: *** [/home/fli4l/br3/output/build/mesa3d-10.5.1/.stamp_configured] Fehler 1 Please note that mesa3d does not need the target version of python, only host-python 2.x. Is it possible to compile host-python2 parallel to host-python3 or should I add a "depends on !BR2_PACKAGE_PYTHON3" to mesa3d/Config.in? Regards, Bernd
Thomas Petazzoni <thomas.petazzoni-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8 @public.gmane.org> wrote in news:20150317233027.1aee93ce@free-electrons.com: > Thanks for the additional explanation, makes a lot more sense now. I've > applied your patch. I however have a comment: > >> ++#ifdef __UCLIBC__ >> ++float fmaxf(float a, float b) > > This is really a crappy solution. I know we use it in various places, > but it simply does not work properly: if a new version of uClibc is > released with an implementation of fmaxf(), then __UCLIBC__ will still > be true, but we'll have a duplicated implementation of fmaxf(). Hi, uclibc added fmaxf upstream: http://git.uclibc.org/uClibc/commit/?id= 6c4538905e65ceb203f59aaa9a61728e81c6bc0a mesa3d/0002-Fix-runtime-error-with-uClibc.patch can be removed when the forementioned patch is used in buildroot, a local run-time test was positive. Let´s hope uclibc will make a new release soon ;) Regards, Bernd
diff --git a/package/mesa3d/0002-Fix-runtime-error-with-uClibc.patch b/package/mesa3d/0002-Fix-runtime-error-with-uClibc.patch new file mode 100644 index 0000000..6fca65f --- /dev/null +++ b/package/mesa3d/0002-Fix-runtime-error-with-uClibc.patch @@ -0,0 +1,58 @@ +Fix runtime error with uClibc + +Patch sent upstream: +http://lists.freedesktop.org/archives/mesa-dev/2015-March/079431.html + + +From b1dae3cae9df36d9c4f64c342cfe7c106e34ec72 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls <bernd.kuhls@t-online.de> +Date: Sun, 15 Mar 2015 12:23:26 +0100 +Subject: [PATCH 1/1] 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 + +Here is some background information about the fminf/fmaxf situation in uClibc: +http://thread.gmane.org/gmane.comp.lib.uclibc.general/24189 + +Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> +--- + src/glsl/nir/nir_constant_expressions.py | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/src/glsl/nir/nir_constant_expressions.py b/src/glsl/nir/nir_constant_expressions.py +index 22bc4f0..139c25a 100644 +--- a/src/glsl/nir/nir_constant_expressions.py ++++ b/src/glsl/nir/nir_constant_expressions.py +@@ -50,6 +50,18 @@ static double copysign(double x, double y) + } + #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. + */ +-- +1.7.10.4 + diff --git a/package/mesa3d/mesa3d.hash b/package/mesa3d/mesa3d.hash index 9d193dc..f562469 100644 --- a/package/mesa3d/mesa3d.hash +++ b/package/mesa3d/mesa3d.hash @@ -1,2 +1,2 @@ -# From http://lists.freedesktop.org/archives/mesa-announce/2015-March/000144.html -sha256 d8baedd20e79ccd98a5a7b05e23d59a30892e68de1fcc057ca6873dafca02735 MesaLib-10.4.6.tar.bz2 +# From http://lists.freedesktop.org/archives/mesa-announce/2015-March/000146.html +sha256 ffc51943d15c6812ee7611d053d8980a683fbd6a4986cff567b12cc66637d679 mesa-10.5.1.tar.xz diff --git a/package/mesa3d/mesa3d.mk b/package/mesa3d/mesa3d.mk index 811a1ef..23cc331 100644 --- a/package/mesa3d/mesa3d.mk +++ b/package/mesa3d/mesa3d.mk @@ -5,8 +5,8 @@ ################################################################################ # When updating the version, please also update mesa3d-headers -MESA3D_VERSION = 10.4.6 -MESA3D_SOURCE = MesaLib-$(MESA3D_VERSION).tar.bz2 +MESA3D_VERSION = 10.5.1 +MESA3D_SOURCE = mesa-$(MESA3D_VERSION).tar.xz MESA3D_SITE = ftp://ftp.freedesktop.org/pub/mesa/$(MESA3D_VERSION) MESA3D_LICENSE = MIT, SGI, Khronos MESA3D_LICENSE_FILES = docs/license.html @@ -18,11 +18,8 @@ MESA3D_PROVIDES = MESA3D_DEPENDENCIES = \ expat \ - host-bison \ - host-flex \ host-gettext \ - host-python \ - host-xutil_makedepend \ + host-python-mako \ libdrm ifeq ($(BR2_PACKAGE_XORG7),y) @@ -35,7 +32,7 @@ MESA3D_DEPENDENCIES += \ xlib_libXdamage \ xlib_libXfixes \ libxcb -MESA3D_CONF_OPTS += --enable-glx +MESA3D_CONF_OPTS += --enable-glx --disable-mangling # quote from mesa3d configure "Building xa requires at least one non swrast gallium driver." ifeq ($(BR2_PACKAGE_MESA3D_NEEDS_XA),y) MESA3D_CONF_OPTS += --enable-xa @@ -92,6 +89,7 @@ MESA3D_PROVIDES += libgl MESA3D_CONF_OPTS += \ --enable-dri \ --enable-shared-glapi \ + --enable-driglx-direct \ --with-dri-drivers=$(subst $(space),$(comma),$(MESA3D_DRI_DRIVERS-y)) endif
Dropped several dependencies because the "distribution tarball has been renamed and now contains all the generated sources." http://lists.freedesktop.org/archives/mesa-announce/2015-March/000145.html Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> --- v2: updated hash (Baruch), added note about dependency changes (Thomas) .../0002-Fix-runtime-error-with-uClibc.patch | 58 ++++++++++++++++++++ package/mesa3d/mesa3d.hash | 4 +- package/mesa3d/mesa3d.mk | 12 ++-- 3 files changed, 65 insertions(+), 9 deletions(-) create mode 100644 package/mesa3d/0002-Fix-runtime-error-with-uClibc.patch