diff mbox

[v2,2/3] package/mesa3d: bump version to 10.5.1

Message ID 1426435802-14030-2-git-send-email-bernd.kuhls@t-online.de
State Accepted
Headers show

Commit Message

Bernd Kuhls March 15, 2015, 4:10 p.m. UTC
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

Comments

Thomas Petazzoni March 17, 2015, 10:30 p.m. UTC | #1
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
Thomas Petazzoni March 21, 2015, 8:59 a.m. UTC | #2
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
Bernd Kuhls March 21, 2015, 10:39 a.m. UTC | #3
[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
Bernd Kuhls March 23, 2015, 8:40 p.m. UTC | #4
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 mbox

Patch

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