Docker provides portable development environments (among many other uses but for Endless Sky this is a key feature). It enables you to bring all of your dependencies to compile endless sky into a docker container so that you do not need them to be installed on your main operating system.
Follow these instructions https://docs.docker.com/engine/install/
You can open the resulting AppImage on any Linux distribution.
As part of this build the version is substituted with <branch>-<git short hash>"
.
mkdir -p ~/git/github/
cd ~/git/github/
git clone https://github.com/endless-sky/endless-sky.git
cd endless-sky/
git remote add pirates https://github.com/endless-sky-pirate-campaign/endless-sky
git fetch pirates
git checkout pirates/smuggling -b smuggling
Assumes you have docker installed, running, and accessible to your user. Also, assumes you're in the Endless Sky source tree.
Launch a new user shell which has access to running docker commands.
sudo su -g docker - $USER
cd ~/git/github/endless-sky/
../build-endless-sky-with-docker.sh
Note:
../build-endless-sky-with-docker.sh
is one directory up because if you're checking out and building different commits you should reset the work space (including cleaning the workspace). To reset the workspace run the following commands.git reset --hard git clean -xfd
Just open ./Endless_Sky-x86_64*.AppImage
. It is an executable file.
Download endless-sky-wrapper.sh
to $HOME/git/github/endless-sky-wrapper.sh
.
Configure steam launch options for endless sky.
$HOME/git/github/endless-sky-wrapper.sh %command%
It is good to manage your save games with git so that you can track differences as you play.
cd ~/.local/share/endless-sky/
git init
git add -A
git commit -m 'initial commit'
I find it useful to configure a cron job to run every 5 minutes while playtesting via crontab -e
.
*/5 * * * * /bin/bash -lc 'cd ~/.local/share/endless-sky/; git add -A; git commit -m checkpoint'
https://github.com/Endless-Sky-Pirate-Campaign/endless-sky/actions/runs/1672276130 there's a continuous build so you can skip these docker instructions if you want. I still build from source because it's useful for bug hunting and validation.