Slavus programing blog

My random programing (and other) tips.

Getting Super Meat Boy to Work on OpenSUSE 12.1 and Intel Graphics Card

| Comments

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.

Comments