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.
Table of Contents
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.
3) Roadmap ¶
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.