Installing SDL Hyperion

Now this is the fun part. I will try to describe this as clearly as I can. It’s not all that complicated once you know where to get your stuff (and your info).

At the time of writing this article we are building SDL Hyperion 4.2, assuming you are logged on to a command line terminal, as a sudo enabled user. All directories created and referenced below are based on the path ~/

Here we go.

Pre-requisites

First we need some stuff installed, like cmake and github.

Install cmake

NOTE: CMAKE is used later on in the process to build the external packages. If you need CMAKE, it is a simple APT sequence:

sudo apt-get install cmake

Install Github

Furthermore we ensure that we have access to Github, a ginormous open source source file repository. To get our access to Github we proceed as follows:

sudo apt-get install git

When this is done, we create our own git working directory and we go there:

cd ~
mkdir git
cd ~/git

There we are, you now have your own git workshop.

Prepare directories

We will make three directories, starting at our home path ~/

We will make a source directory, a target directory for binaries and a directory for the needed external packages:

cd ~/
mkdir sdl42 herc42 extpkgs 

Install sources

Install source for external packages

Let’s get the sources for the external packages first:

cd ~/extpkgs
git clone https://github.com/SDL-Hercules-390/gists

Now copy two files from the gists directory to the extpkgs directory (note: we are still in the extpkgs directory). Also, set the permissions so the sh files can be executed.

cp gists/extpkgs.sh .
cp gists/extpkgs.sh.ini .
sudo chmod 777 ./extpkgs.sh

Only when you are building for a Raspberry Pi:

For all Pi’s, before you build extpkgs edit the extpkgs.sh.ini file and set the target to arm. There’s a line that by default reads:

cpu = x86

Alter this line so it reads instead:

cpu = arm

Now build the extpkgs

We are now ready to build the external packages. This will run for 3-4 minutes.

./extpkgs.sh c d s t

Done! We have now built the external packages that Hyperion needs.

Install source for Hercules

Next we are going to download (in git terms we ‘clone’) our version of Hercules. We use the one from this Github user: SDL-Hercules-390. Go to his page, then click on the ‘Hyperion’ link. Once there, you will see a green ‘Clone or download’ button. Click on it and you will see this pop-up screen open.

Now you click on the small symbol next to the URL. This will copy the URL into your buffer to be pasted. Now we go to our terminal window we type:

cd ~/sdl42
git clone https://github.com/SDL-Hercules-390/hyperion

Mind you, the URL I got, might be outdated at the time you try this recipe! Paste in your own after the ‘git clone ‘ command. Execute the command and have it install all files you need.

Make sure we have all packages we need

To make sure our tool box is up to date we type:

cd ~/sdl42/hyperion/util
./bldlvlck

This will tell us which tools we need to get or upgrade. It will look something like this:

You carefully check which tools you need to get or upgrade and then you type:

sudo apt-get install ... autotools-dev cmake g++  zlib1g-dev libbz2-dev 

This line above is an example! Fill in your packages on the dots! Important to notice is that ‘g++‘, ‘autotools-dev‘, ‘cmake‘, ‘ zlib1g-dev‘ and ‘libbz2-dev‘ are in the list of files to install. the bldlvlck utility will not warn you about g++, but install it, just like the others, the process needs it!

Building & installing Hercules

Now we can go back to our Hyperion directory and build our version. First we do:

cd ~/sdl42/hyperion
./autogen.sh

And now, when the previous command went well, we are ready to configure our build; but watch it, you have to specify your own path name for the external packages:

./configure --prefix=/{your_home_dir}/herc42 --enable-extpkgs=/{your_home_dir}/extpkgs

Building on a Raspberry Pi?

In case you are building on a Raspberry Pi, some extra pramaters are needed, depending on your model (thanks to @Tahoeloj on Discord).

For the Pi 3 add:

–enable-optimization=”-mcpu=cortex-a53 -mtune=arm8 -mfpu=neon-vfpv4 -frenameregisters”

For the Pi 4 add:

–enable-optimization=”-mcpu=cortex-a72 -mtune=arm8 -mfpu=neon-vfpv4 -frenameregisters”

Build the binaries

After this command executed well, you can proceed to actually ‘make‘ the build:

make

This will take a while… It will generate a lot of warnings, that is expected and can be ignored. When this make finished without errors we can do:

sudo make install

And we’re done building our own version. The binaries will install into ~/herc42

Removing previous version

Now we need to take care of the old hercules version you might have installed from the repositories:

sudo apt-get remove hercules

This will (only) remove the hercules files that were installed by apt-get, so no worries, your build is save.

Before you start

Ok that’s it. Before you start Hercules, I’d recommend you shut down and reboot your Linux. This is in case Hercules hangs, you want to make sure that all of the changes from the build have been recorded to the file system. So let it record all of that first and start Hercules after the boot.

How I start it:

My VM system is in a directory called ~/VM6PExt/6PExt, and there’s a hercules.cnf file there. So I wrote a shell script called ~/bin/vm6 to start it up that reads:

!/bin/bash
# pre-pend new bin directory to path
export PATH=/{your_home_dir}/herc42/bin:$PATH
# pre-pend new lib directories to library path
#
export LD_LIBRARY_PATH=/{your_home_dir}/herc42/lib:/{your_home_dir}/herc42/lib/hercules:$LD_LIBRARY_PATH
#
#Start hercules
/{your_home_dir}/herc42/bin/hercules