Desktop Dependencies

Monkey Targets Forums/Desktop/Desktop Dependencies

Soap(Posted 2014) [#1]
Is there are a list of dependencies for Windows and Linux?

Depending on how Windows is built it requires openal for example. Anyone know where a list is?


dawlane(Posted 2014) [#2]
The only dependencies you should need for Windows is openAL, but Linux can be a big subject with different architectures and different distribution package naming.
To see what is required by a Linux application use the ldd command.


Soap(Posted 2014) [#3]
I will try that.

I've had reports from people that installing codec packs allowed them to run the game on Windows though... even after installing the OpenAL dependency installer. Right now trying to solve a problem Windows user has where game will open to black screen then crash.

Another problem is this:

"I checked the 32-bit executable:
./Game_32: /lib/i386-linux-gnu/libc.so.6: version `GLIBC_2.17' not found (required by ./Game_32)
I run Ubuntu 12.04 (LTS) and it has version 2.15. However, Ubuntu 13.04 has version 2.17."

Any idea how to solve this?


Soap(Posted 2014) [#4]
Here is more info on the Windows problem:

"I still can't start the game, same black screen for one second and than nothing.
Win 8.1 , Core 2 Duo 1.8 Ghz Ati HD2600 3GB RAM"

Anyone have GLFW Desktop build problems with Windows 8 like this?


dawlane(Posted 2014) [#5]
"I checked the 32-bit executable:
./Game_32: /lib/i386-linux-gnu/libc.so.6: version `GLIBC_2.17' not found (required by ./Game_32)
I run Ubuntu 12.04 (LTS) and it has version 2.15. However, Ubuntu 13.04 has version 2.17."

This could be a solution to this problem. Looking into this is one of the things on my need to do list. The simplest solution would be to have a two binaries built against each of version glibc.


Soap(Posted 2014) [#6]
I think only power users would be the ones sticking to older versions of Ubuntu.. so they should be able to set that up. It is the non-power users I worry about - asking them to do something like that would be out of the question, but having a launcher to choose which version would be fine. Any tips for building different glibc versions? My test Ubuntu install is running most recent everything.

I think maybe can detect in the shell launcher which version the user has installed and launch appropriate binary based on that.


Soap(Posted 2014) [#7]
To add to Windows 8 - should I be using "Windows 8 Game" target for Win8 and not expect GLFW builds to work on it? Can anyone confirm if their GLFW builds do work in Windows 8? No test install setup at the moment...


Soap(Posted 2014) [#8]
The Windows 8 user's computer ended up not having up to date drivers. The had "WDDM driver from ATI" and installed updated version using these steps http://www.minecraftforum.net/topic/1086017-ati-radeons-and-windows-8-the-fix/#entry15523571 also didn't tell me before they had mobility.


nikoniko(Posted 2014) [#9]
Soap wrote:
Can anyone confirm if their GLFW builds do work in Windows 8? No test install setup at the moment...


Yes, it works as usual win32 app.

Target "Window 8 game" is app for WinRT with Metro/Modern UI interface.


dawlane(Posted 2014) [#10]
Any tips for building different glibc versions? My test Ubuntu install is running most recent everything.
You have two choices on Linux
1) Use a virtual machine.
2) Use a chroot environment. To save me from explaining this, there is a guide here or here. Note I haven't checked these guides out, so I cannot confirm if this is accurate.

Edit: Be very careful when using chroot and you bind its home directory to your home directory. If you remove the chroot without unmounting it you could wipe your home directory and loose the lot.

Edit:This is what I did to set up a chroot environment to get BlitzMax running when 64bit Linux was released and we didn't have multi-arch.

I think maybe can detect in the shell launcher which version the user has installed and launch appropriate binary based on that.
Use ldd --version. To test which version of libc is installed.
#!/bin/bash
glib=$(ldd --version | awk {'print $5'} | sed 's/[[:alpha:]||(,;)[:space:]]//g') #get the last item on the first line and strip every thing apart from the peroid, else use 's/[^0-9]*//g' to strip the lot and use [ $glib -eq 217 ] in conditionals
if [ $glib = "2.17" ] ; then echo "libc is 2.17"; else echo "libc is not 2.17"; fi
echo $glib