Hi, I bought Humble bundle 4, and I wanted to play Super Meat Boy, i started it up and I have got:
user@mypc: /usr/local/games/supermeatboy
➜ ./SuperMeatBoy
Super Meat Boy: Installed in '.'.
Super Meat Boy: Using x86 version.
Fatal Error: MojoShader compile failed!
So how to fix this?
First thing I started googling i I stumbled upon couple of links: Bug #905456 in mesa (Ubuntu): “needs to be built with –disable-asm for super meat boy to work” and explanation (on German but i translated it) SuperMeatboy und Intel-Grafik. It turns out Super Meat Boy Linux port has some kind of problems with integrated Intel graphics cards (which I have in my laptop). So after reading links above for some reason Mesa must be built with h “–disable-asm” switch. So I wanted to do the same on OpenSUSE 12.1, and here is guide how to do this:
Download Mesa srpm from Mesa srpm
$ unrpm Mesa-7.11-11.1.2.src.rpm
$ sudo zypper in build
Open up Mesa.spec and change following line in %install part of spec
%configure --disable-glw \
to :
%configure --disable-glw \
--disable-asm \
after that you can just do:
user@mypc: /home/user/mesa/rpm
➜ sudo build
If everything goes without problems you will probably get rpm that you can update over existing Mesa. By default built rpm should be at:
/var/tmp/build-root/home/abuild/rpmbuild/RPMS/i586
I had some problems during building of rpm, I have got following error message:
expanding package dependencies...
Warning: distribution not specified, assuming '12.1-i386' (see /usr/lib/build/configs).
expansion error
nothing provides libgcc45
nothing provides gcc45
nothing provides cpp45
nothing provides libstdc++45
nothing provides libgomp45
It turns out you have to change /usr/lib/build/configs/sl12.1.conf following line:
%define gcc_version 45
to:
%define gcc_version 45
And line :
Preinstall: filesystem fillup glibc grep insserv libacl libattr
to
Preinstall: filesystem fillup glibc grep insserv libacl1 libattr1
And now you can play Super Meat Boy.