# Thread: Simba test builds for Linux

1. SRL Member
Join Date
Dec 2011
Location
East Coast, USA
Posts
4,188
Mentioned
112 Post(s)
Quoted
1853 Post(s)

## Simba test builds for Linux

Recently there has been some movement on getting Simba (and related software) working properly on GNU/Linux. This is mainly a side effect of the increased development being done on Simba of late.

Travis now conducts automatic builds for the simba-1.3 branch. They can be found at the releases page. Also, the first release candidate of Simba 1.3 has landed, it can be found here. In deference to this, I am no longer hosting any binaries. This thread remains for historical reasons, as well as being a good reference for Simba's build process.

Linux support is quite solid as of Simba 1.3 RC1, many bug fixes and improvements have been made! Some templates for the X Binary Package System (XBPS) have been written, and there is now a (relatively) simple way to create reproducible builds of Simba for Linux.

XBPS is easy to install and use on any distribution; beyond some potential prerequisites it's as simple as cloning a repository and running a few commands on your local copy. Examples of other software for this type of work are Travis or Buildbot, both of which are already employed by the Simba project.

The entire process can be broken down into three pretty short steps. Lape does not support 32-bit and doesn't receive testing for that architecture, so we will be building 64-bit binaries only.

0) Prerequisites

Running Void Linux is passively recommended but absolutely not required. Even I am not running it directly for this, most testing performed has actually been on Ubuntu 18.04. In practice, any recent distribution should work fine.

However, if not using Void Linux you will need to manually download and install the static XBPS binaries for your architecture before you begin.

Code:
# 64-bit
$wget https://alpha.de.repo.voidlinux.org/static/xbps-static-latest.x86_64-musl.tar.xz$ mkdir ~/xbps
$tar xvf xbps-static-latest* -C ~/xbps$ export PATH=~/xbps/usr/bin:$PATH Note: This distribution of the X Binary Package System is tagged as -musl, which indicates that it will run on glibc systems and can also cross-compile for musl libc. That's it for the setup! The only other prerequisite is a functional installation of git. 1) Bootstrapping XBPS needs to install some initial packages before it's ready to build Simba. All operations are performed inside a chroot, no files outside the repository are written to. Code: $ git clone https://github.com/KeepBotting/void-packages
$cd void-packages$ ./xbps-src binary-bootstrap
2) Compiling Simba

The compilation process itself is two-step. First we build Lazarus, then we build Simba.

Code:
# the required templates are contained in this branch
$git checkout simba # optional, but it's a good idea to clean up before attempting a build$ ./xbps-src clean

# 64-bit build
$./xbps-src build lazarus$ ./xbps-src build simba
Wait for the compilation to finish. When complete, retrieve the binary and test it.

Code:
$find masterdir* -executable -type f -name "Simba*" -exec mv {}$(pwd) \;

\$ ./Simba.x86_64-linux
Side note: xbps-src runs against the real Void repositories, which only retain the latest version of a binary package at any given time. My fork of void-packages is not always in-sync with upstream, so during the course of your build you may observe XBPS compiling versions of dependent packages that have been superseded, and are no longer found in the repository.

This is not really a problem but might slow down the build process a lot. To bring your local copy up-to-date with upstream, follow the steps detailed here, keeping the upstream URL in mind. This will make your local copy aware of version bumps that have occurred in upstream since the last time it was fast-forwarded.

The roadmap should change relatively often. If you are interested in the project, check back here for updates. Or, check for new commits in the GitHub repository.

I have decided to go for packages next -- .tar.gz files which ideally will contain Simba binaries, plugins, and includes like SRL/RSW. Some progress has been made on this but it has not been committed to the repository just yet. Stay tuned. and I have posted about it here: https://villavu.com/forum/showthread...10#post1392810

Recently I have discovered that the OpenGL32 plugin (the lack of which has historically been a sticking point preventing RS3 from loading correctly inside SMART on Linux) actually has a Linux target in its makefile https://github.com/Brandon-T/GLX I must investigate this.

Another thing I would like to work on is getting Simba builds (probably 1.3 only) with the latest Lape submodules included, I understand the ones currently in the Simba repository are outdated and lack certain fixes. Lately, this has been getting handled as required.

I would also like to investigate GTK+3 builds, or possibly even Qt builds, I know the LCL supports that toolkit as well.

If anybody has any suggestions or information about the aforementioned that I might not already know, contributions are appreciated!

4) Closing words

These builds are fully functional and ready to be used out of the box. Since Simba 1.3 RC1, the binary will create its directory structure on startup if they don't already exist. In the future, I would like to distribute tarballs which contain Simba, plugins, and possibly even a version of the SRL include. Distribution packages (XBPS, DEB, and RPM) may follow later.

If you have a plugin you would like built for Linux, please post a link to the source code along with a short description of the build process (if known) as well as any quirks you're aware of. If you would like a Simba build using a different configuration than what I have posted here, please ask.

I'd like to extend a warm thank-you to everyone who's helped me so far with this project, both directly and indirectly. In no particular order: @Olly @slacky @BenLand100 @Wizzup? @Harrier @Patriq @6b49WR7VbUjs9Hqeq5Etr @Oox (don't know your username on the forum, sorry!) @R0b0t1;

Wouldn't be complete without some pictures, now would it?

5) FAQ

Q: Help! I receive the following error when trying to run Simba:
Code:
error while loading shared libraries: libkeybinder.so.0: cannot open shared object file: No such file or directory
A: Simba's only runtime dependency on Linux is libkeybinder. You may have to install the package manually if it does not already exist on your system. On Ubuntu, the package which provides this file is libkeybinder0. Note that some distributions may ship two libkeybinder packages, one for GTK2 and one for GTK3. Simba is built with GTK2, so the former package will be the one that is needed.

Final note: if an administrator would like any changes made as far as how these builds are distributed documented, please inform me and I will certainly comply.
Last edited by KeepBotting; 04-26-2019 at 08:19 PM. Reason: overhaul/simplify, remove templates for 32-bit stuff, update to align with upstream repository changes

2. But can it run Crysis?

Oh, and good job! =)
Last edited by slacky; 06-18-2018 at 04:26 AM.

3. Registered User
Join Date
Feb 2018
Posts
22
Mentioned
1 Post(s)
Quoted
3 Post(s)
Everything so far looks and works great, Glad for things to finally be moving forward in terms of linux support again , Keep up the good work.

4. SRL Junior Member
Join Date
Nov 2011
Location
root@fsociety:~#
Posts
106
Mentioned
1 Post(s)
Quoted
44 Post(s)
Hype! Thanks for sharing, really interesting. How's Simba running in Wine nowadays? I have tried it in the past and it seemed to work, native builds are obviously way better though.

5. SRL Junior Member
Join Date
Feb 2012
Location
Portugal
Posts
90
Mentioned
3 Post(s)
Quoted
38 Post(s)
Amazing work! I always wondered for how long would Linux support be broken:

Good stuff! Now I can show Lape to my fellow friends on the go! :3

6. SRL Member
Join Date
Dec 2011
Location
East Coast, USA
Posts
4,188
Mentioned
112 Post(s)
Quoted
1853 Post(s)
Thanks all

Originally Posted by Jeroen
Hype! Thanks for sharing, really interesting. How's Simba running in Wine nowadays? I have tried it in the past and it seemed to work, native builds are obviously way better though.
Wine works fine to my understanding, I have not tested it recently but have used it in the past with as much success as can be expected. If you're running everything through Wine, though, it becomes yet another dependency you've got to maintain. This project should more-or-less eliminate the need to run Simba using Wine.

7. Really nice to see, thanks! Made my first script in a number of years.
Screenshot_2018-06-18_15-48-33.png

8. Nice work! I have never attempted to use Simba on Linux but now I might do it just for fun!

9. SRL Member
Join Date
Dec 2011
Location
East Coast, USA
Posts
4,188
Mentioned
112 Post(s)
Quoted
1853 Post(s)
Picking up steam on this again. Started work on a packaging script for Simba, here's the progress so far: https://github.com/KeepBotting/void-...7c24765aeded2e

This will likely change often up until Simba 1.3 is released, as our software and how it will be distributed is very much in flux. @Olly; is hard at work re-structuring font sets and plugins, and I would like any packaging for Linux to align with how he is setting things up.

Ideally Linux packages will compile Simba and plugins from source, taking special care to stay identical to the versions that are officially distributed. In fact, simply downloading binaries from their official locations (once they exist) may even be preferable to building them.

Simba 1.3 will include a package manager, so I must align with that as well, to ensure that people using the unofficial Linux package will be able to update components normally.

When all is said and done, I hope to be able to provide a one-time download that can be extracted and used on Linux immediately, without any extra setup. The package should contain mechanisms whereby subsequent updating shall be conducted through official channels, meaning my infrastructure needn't be utilized outside of the initial download.

At which time official Linux installers/packages are distributed, this project will be rendered obsolete, which will make me very happy.

Edit: updated the roadmap earlier, forgot to mention

Edit2: Recently I have discovered that the OpenGL32 plugin (the lack of which has historically been a sticking point preventing RS3 from loading correctly inside SMART on Linux) actually has a Linux target in its makefile https://github.com/Brandon-T/GLX I must investigate this.

I have added the above paragraph to the roadmap as well as made a few other tweaks to the OP.
Last edited by KeepBotting; 09-18-2018 at 09:58 PM.

10. Registered User
Join Date
Aug 2018
Posts
2
Mentioned
0 Post(s)
Quoted
1 Post(s)
Gonna test this out. Thanks a lot

11. SRL Member
Join Date
Dec 2011
Location
East Coast, USA
Posts
4,188
Mentioned
112 Post(s)
Quoted
1853 Post(s)
Originally Posted by Flischking
Gonna test this out. Thanks a lot
Thanks for the support!

12. SRL Member
Join Date
Dec 2011
Location
East Coast, USA
Posts
4,188
Mentioned
112 Post(s)
Quoted
1853 Post(s)
Updated OP with a new build in response to the most recent wave of commits to the Simba repository (22nd Aug - 2nd Sep): https://github.com/MerlijnWajer/Simba/commits/fpc-3.0

I will only be updating the 64-bit build of Simba 1.3 from now on, unless anybody wants newer builds of other configurations.

I'd also like to toss a link out to another (small) project of mine, libframebuffer. It is Linux-specific (like the builds on this thread) and works as a great alternative to SMART. It is actually very similar to what was done here as a component of BenLand100's Python macroing solution.

Edit: Updated build again, we are now up-to-date with this commit: https://github.com/MerlijnWajer/Simb...cd8d65641b085b
Last edited by KeepBotting; 09-18-2018 at 10:00 PM.

13. @KeepBotting;

Update your guide. fpc-3.0 branch has been renamed simba-1.3

14. SRL Member
Join Date
Dec 2011
Location
East Coast, USA
Posts
4,188
Mentioned
112 Post(s)
Quoted
1853 Post(s)
Originally Posted by Dgby714
@KeepBotting;

Update your guide. fpc-3.0 branch has been renamed simba-1.3
Updated, thanks!