Skip to content
Merged
Show file tree
Hide file tree
Changes from 20 commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .github/workflows/build-all.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -279,9 +279,6 @@ jobs:
echo Downloaded: ${{ fromJson(steps.download-doxygen.outputs.downloaded_files)[0] }}
cd oolite
../doxygen/doxygen-*/bin/doxygen
python3 -m coverxygen --verbose --xml-dir doxygen/xml --src-dir . --output doxygen/coverxygen.info
mkdir -p doxygen/html/coverage
genhtml doxygen/coverxygen.info -o doxygen/html/coverage

# This is for debugging only and helps developing the workflow.
- name: Environment Variables 1
Expand Down
37 changes: 37 additions & 0 deletions ShellScripts/Linux/GNUstep.conf.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
GNUSTEP_MAKEFILES=@BASEDIR@/share/GNUstep/Makefiles
GNUSTEP_SYSTEM_USERS_DIR=/home
GNUSTEP_NETWORK_USERS_DIR=/home
GNUSTEP_LOCAL_USERS_DIR=/home
GNUSTEP_SYSTEM_APPS=@BASEDIR@/lib/GNUstep/Applications
GNUSTEP_SYSTEM_ADMIN_APPS=@BASEDIR@/lib/GNUstep/Applications
GNUSTEP_SYSTEM_WEB_APPS=@BASEDIR@/lib/GNUstep/WebApplications
GNUSTEP_SYSTEM_TOOLS=@BASEDIR@/bin
GNUSTEP_SYSTEM_ADMIN_TOOLS=@BASEDIR@/sbin
GNUSTEP_SYSTEM_LIBRARY=@BASEDIR@/lib/GNUstep
GNUSTEP_SYSTEM_HEADERS=@BASEDIR@/include
GNUSTEP_SYSTEM_LIBRARIES=@BASEDIR@/lib
GNUSTEP_SYSTEM_DOC=@BASEDIR@/share/GNUstep/Documentation
GNUSTEP_SYSTEM_DOC_MAN=@BASEDIR@/share/man
GNUSTEP_SYSTEM_DOC_INFO=@BASEDIR@/share/info
GNUSTEP_NETWORK_APPS=@BASEDIR@/lib/GNUstep/Applications
GNUSTEP_NETWORK_ADMIN_APPS=@BASEDIR@/lib/GNUstep/Applications
GNUSTEP_NETWORK_WEB_APPS=@BASEDIR@/lib/GNUstep/WebApplications
GNUSTEP_NETWORK_TOOLS=@BASEDIR@/bin
GNUSTEP_NETWORK_ADMIN_TOOLS=@BASEDIR@/sbin
GNUSTEP_NETWORK_LIBRARY=@BASEDIR@/lib/GNUstep
GNUSTEP_NETWORK_HEADERS=@BASEDIR@/include
GNUSTEP_NETWORK_LIBRARIES=@BASEDIR@/lib
GNUSTEP_NETWORK_DOC=@BASEDIR@/share/GNUstep/Documentation
GNUSTEP_NETWORK_DOC_MAN=@BASEDIR@/share/man
GNUSTEP_NETWORK_DOC_INFO=@BASEDIR@/share/info
GNUSTEP_LOCAL_APPS=@BASEDIR@/lib/GNUstep/Applications
GNUSTEP_LOCAL_ADMIN_APPS=@BASEDIR@/lib/GNUstep/Applications
GNUSTEP_LOCAL_WEB_APPS=@BASEDIR@/lib/GNUstep/WebApplications
GNUSTEP_LOCAL_TOOLS=@BASEDIR@/bin
GNUSTEP_LOCAL_ADMIN_TOOLS=@BASEDIR@/sbin
GNUSTEP_LOCAL_LIBRARY=@BASEDIR@/lib/GNUstep
GNUSTEP_LOCAL_HEADERS=@BASEDIR@/include
GNUSTEP_LOCAL_LIBRARIES=@BASEDIR@/lib
GNUSTEP_LOCAL_DOC=@BASEDIR@/share/GNUstep/Documentation
GNUSTEP_LOCAL_DOC_MAN=@BASEDIR@/share/man
GNUSTEP_LOCAL_DOC_INFO=@BASEDIR@/share/info
162 changes: 83 additions & 79 deletions ShellScripts/Linux/run_oolite.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,16 @@

HERE="$(dirname "$(readlink -f "$0")")"

SHOW_SPLASH=true
# Loop through all arguments
for arg in "$@"; do
case "$arg" in
-nosplash|--nosplash)
SHOW_SPLASH=false
;;
esac
done

notify_failure() {
if [[ -n "$FLATPAK_ID" ]]; then
local MSG="<b>$FLATPAK_ID failed to start!</b>\n\nExit Code: $EXIT_CODE"
Expand Down Expand Up @@ -33,7 +43,17 @@ notify_failure() {
}

launch_guarded() {
"$@"
if [[ "$1" == "packageinfo" ]]; then
cat "$OO_EXEDIR/Resources/manifest.plist"
exit 0
fi
if [[ "$SHOW_SPLASH" == true ]]; then
"$OO_EXEDIR/splash-launcher" "$OO_EXEDIR/Resources/Images/splash.bmp" &
"$OO_EXEDIR/oolite" "$@" -nosplash
else
# already has -nosplash
"$OO_EXEDIR/oolite" "$@"
fi
local EXIT_CODE=$?

if [ $EXIT_CODE -eq 0 ]; then
Expand All @@ -44,76 +64,85 @@ launch_guarded() {
exit $EXIT_CODE
}

find_exe_launch() {
if [[ -z "$OO_EXECUTABLE" ]]; then
OO_EXECUTABLE="$HERE/oolite"
if [[ ! -f "$OO_EXECUTABLE" ]]; then
OO_EXECUTABLE="$HERE/oolite.app/oolite"
find_exedir() {
if [[ -z "$OO_EXEDIR" ]]; then
OO_EXEDIR="$HERE"
if [[ ! -f "$OO_EXEDIR/oolite" ]]; then
OO_EXEDIR="$HERE/oolite.app"
fi
fi
launch_guarded "$OO_EXECUTABLE" "$@"
}

make_gnustepconf_template() {
export GNUSTEP_CONFIG_FILE=$(mktemp -t oolite_gnustep_XXXX --suffix=.conf)
sed -e "s|@BASEDIR@|$BASEDIR|g" "$OO_EXEDIR/Resources/GNUstep.conf.template" > "$GNUSTEP_CONFIG_FILE"
}

# Check if we are running inside a Flatpak
if [[ -n "$FLATPAK_ID" ]]; then
if [[ "$1" == "packageinfo" ]]; then
cat "/app/bin/Resources/manifest.plist"
exit 0
fi

BASEDIR="/app"
OO_EXEDIR="$BASEDIR/bin"
GAME_DATA="$HOME/.var/app/$FLATPAK_ID"
OO_EXECUTABLE="/app/bin/oolite"
make_gnustepconf_template

# Check if we are running inside an AppImage
elif [[ -n "$APPIMAGE" ]]; then
MANIFEST="$APPDIR/usr/bin/Resources/manifest.plist"
if [[ "$1" == "packageinfo" ]]; then
cat "$MANIFEST"
exit 0
fi

export LD_LIBRARY_PATH="$APPDIR/usr/lib:$LD_LIBRARY_PATH"
export PATH="$APPDIR/usr/bin:$PATH"
OO_EXECUTABLE="$APPDIR/usr/bin/oolite"
BASEDIR="$APPDIR/usr"
OO_EXEDIR="$BASEDIR/bin"
export LD_LIBRARY_PATH="$BASEDIR/lib:$LD_LIBRARY_PATH"
export PATH="$OO_EXEDIR:$PATH"

DEBUG_OXP=$(grep "debug_functionality_support" "$MANIFEST")
DEBUG_OXP=$(grep "debug_functionality_support" "$OO_EXEDIR/Resources/manifest.plist")
if [[ "$DEBUG_OXP" == *"yes"* ]]; then
INTERNAL_ADDONS="$APPDIR/usr/bin/AddOns"
INTERNAL_ADDONS="$OO_EXEDIR/AddOns"
export OO_ADDITIONALADDONSDIRS="${OO_ADDITIONALADDONSDIRS}${OO_ADDITIONALADDONSDIRS:+,}$INTERNAL_ADDONS"
fi

if [[ -n "$OO_DIRTYPE" ]]; then
if [[ "${OO_DIRTYPE,,}" == "xdg" ]]; then
GAME_DATA="$HOME/.local/share/Oolite"
elif [[ "${OO_DIRTYPE,,}" == "legacy" ]]; then
launch_guarded "$OO_EXECUTABLE" "$@"
launch_guarded "$@"
fi
else
# Get the folder containing the AppImage file
HERE="$(dirname "$APPIMAGE")"
GAME_DATA="$HERE/GameData"
fi
make_gnustepconf_template
else
if [[ "$1" == "packageinfo" ]]; then
if [ -f "$HERE/Resources/manifest.plist" ]; then
cat "$HERE/Resources/manifest.plist"
else
cat "$HERE/oolite.app/Resources/manifest.plist"
fi
exit 0
fi

# Check if OO_DIRTYPE set
if [[ -n "$OO_DIRTYPE" ]]; then
if [[ "${OO_DIRTYPE,,}" == "xdg" ]]; then
GAME_DATA="$HOME/.local/share/Oolite"
elif [[ "${OO_DIRTYPE,,}" == "legacy" ]]; then
find_exe_launch "$@"
find_exedir
launch_guarded "$@"
fi
else
# Use script directory
GAME_DATA="$HERE/GameData"
fi
# Find the current system configuration file
ORIGINAL_CONF=$(gnustep-config --variable=GNUSTEP_CONFIG_FILE)

# Fallback: If gnustep-config returns nothing, assume standard location
if [ -z "$ORIGINAL_CONF" ]; then
ORIGINAL_CONF="/etc/GNUstep/GNUstep.conf"
fi

if [ -z "$ORIGINAL_CONF" ]; then
ORIGINAL_CONF="/usr/local/etc/GNUstep/GNUstep.conf"
fi

GNUSTEP_CONFIG_FILE=$(mktemp -t oolite_gnustep_XXXX --suffix=.conf)
# Copy the original config (if it exists) to the temp file
if [ -f "$ORIGINAL_CONF" ]; then
cp "$ORIGINAL_CONF" "$GNUSTEP_CONFIG_FILE"
else
echo "No system config found at $ORIGINAL_CONF. Starting with empty config."
touch "$GNUSTEP_CONFIG_FILE"
fi
fi

mkdir -p "$GAME_DATA"
Expand All @@ -135,6 +164,7 @@ elif [[ -n "$OO_USERADDONSDIR" ]]; then
fi
fi
mkdir -p "$OO_ADDONSEXTRACTDIR"
# OO_ADDITIONALADDONSDIRS can be used to pass a comma separated list of additional OXP folders
if [ -n "$OO_ADDITIONALADDONSDIRS" ]; then
(IFS=,; mkdir -p $OO_ADDITIONALADDONSDIRS)
fi
Expand All @@ -144,47 +174,21 @@ mkdir -p "$OO_GNUSTEPDIR"
OO_GNUSTEPDEFAULTSDIR="${OO_GNUSTEPDEFAULTSDIR:-${GAME_DATA}}"
mkdir -p "$OO_GNUSTEPDEFAULTSDIR"

# OO_ADDITIONALADDONSDIRS can be used to pass a comma separated list of additional OXP folders


# Find the current system configuration file
ORIGINAL_CONF=$(gnustep-config --variable=GNUSTEP_CONFIG_FILE)

# Fallback: If gnustep-config returns nothing, assume standard location
if [ -z "$ORIGINAL_CONF" ]; then
ORIGINAL_CONF="/etc/GNUstep/GNUstep.conf"
fi

if [ -z "$ORIGINAL_CONF" ]; then
ORIGINAL_CONF="/usr/local/etc/GNUstep/GNUstep.conf"
fi

TEMP_CONF=$(mktemp -t oolite_gnustep_XXXX --suffix=.conf)

# Copy the original config to the temp file (if it exists)
if [ -f "$ORIGINAL_CONF" ]; then
cp "$ORIGINAL_CONF" "$TEMP_CONF"
else
echo "No system config found at $ORIGINAL_CONF. Starting with empty config."
touch "$TEMP_CONF"
fi

echo "" >> "$TEMP_CONF"
echo "# --- Overrides added by launcher script ---" >> "$TEMP_CONF"
echo "GNUSTEP_USER_DIR_APPS=$OO_GNUSTEPDIR/Applications" >> "$TEMP_CONF"
echo "GNUSTEP_USER_DIR_ADMIN_APPS=$OO_GNUSTEPDIR/Applications/Admin" >> "$TEMP_CONF"
echo "GNUSTEP_USER_DIR_WEB_APPS=$OO_GNUSTEPDIR/WebApplications" >> "$TEMP_CONF"
echo "GNUSTEP_USER_DIR_TOOLS=$OO_GNUSTEPDIR/Tools" >> "$TEMP_CONF"
echo "GNUSTEP_USER_DIR_ADMIN_TOOLS=$OO_GNUSTEPDIR/Tools/Admin" >> "$TEMP_CONF"
echo "GNUSTEP_USER_DIR_LIBRARY=$OO_GNUSTEPDIR/Library" >> "$TEMP_CONF"
echo "GNUSTEP_USER_DIR_HEADERS=$OO_GNUSTEPDIR/Library/Headers" >> "$TEMP_CONF"
echo "GNUSTEP_USER_DIR_LIBRARIES=$OO_GNUSTEPDIR/Library/Libraries" >> "$TEMP_CONF"
echo "GNUSTEP_USER_DIR_DOC=$OO_GNUSTEPDIR/Library/Documentation" >> "$TEMP_CONF"
echo "GNUSTEP_USER_DIR_DOC_MAN=$OO_GNUSTEPDIR/Library/Documentation/man" >> "$TEMP_CONF"
echo "GNUSTEP_USER_DIR_DOC_INFO=$OO_GNUSTEPDIR/Library/Documentation/info" >> "$TEMP_CONF"
echo "GNUSTEP_USER_DEFAULTS_DIR=$OO_GNUSTEPDEFAULTSDIR" >> "$TEMP_CONF"

export GNUSTEP_CONFIG_FILE="$TEMP_CONF"

find_exe_launch "$@"
rm "$TEMP_CONF"
echo "" >> "$GNUSTEP_CONFIG_FILE"
echo "GNUSTEP_USER_CONFIG_FILE=$GNUSTEP_CONFIG_FILE" >> "$GNUSTEP_CONFIG_FILE"
echo "GNUSTEP_USER_DIR_APPS=$OO_GNUSTEPDIR/Applications" >> "$GNUSTEP_CONFIG_FILE"
echo "GNUSTEP_USER_DIR_ADMIN_APPS=$OO_GNUSTEPDIR/Applications/Admin" >> "$GNUSTEP_CONFIG_FILE"
echo "GNUSTEP_USER_DIR_WEB_APPS=$OO_GNUSTEPDIR/WebApplications" >> "$GNUSTEP_CONFIG_FILE"
echo "GNUSTEP_USER_DIR_TOOLS=$OO_GNUSTEPDIR/Tools" >> "$GNUSTEP_CONFIG_FILE"
echo "GNUSTEP_USER_DIR_ADMIN_TOOLS=$OO_GNUSTEPDIR/Tools/Admin" >> "$GNUSTEP_CONFIG_FILE"
echo "GNUSTEP_USER_DIR_LIBRARY=$OO_GNUSTEPDIR/Library" >> "$GNUSTEP_CONFIG_FILE"
echo "GNUSTEP_USER_DIR_HEADERS=$OO_GNUSTEPDIR/Library/Headers" >> "$GNUSTEP_CONFIG_FILE"
echo "GNUSTEP_USER_DIR_LIBRARIES=$OO_GNUSTEPDIR/Library/Libraries" >> "$GNUSTEP_CONFIG_FILE"
echo "GNUSTEP_USER_DIR_DOC=$OO_GNUSTEPDIR/Library/Documentation" >> "$GNUSTEP_CONFIG_FILE"
echo "GNUSTEP_USER_DIR_DOC_MAN=$OO_GNUSTEPDIR/Library/Documentation/man" >> "$GNUSTEP_CONFIG_FILE"
echo "GNUSTEP_USER_DIR_DOC_INFO=$OO_GNUSTEPDIR/Library/Documentation/info" >> "$GNUSTEP_CONFIG_FILE"
echo "GNUSTEP_USER_DEFAULTS_DIR=$OO_GNUSTEPDEFAULTSDIR" >> "$GNUSTEP_CONFIG_FILE"

find_exedir
launch_guarded "$@"
rm "$GNUSTEP_CONFIG_FILE"
Binary file added ShellScripts/Linux/splash-launcher
Binary file not shown.
1 change: 1 addition & 0 deletions ShellScripts/common/post_build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ run_script() {
else
# Copy Linux-specific wrapper script
cp -fu ShellScripts/Linux/run_oolite.sh "$PROGDIR"
cp -fu ShellScripts/Linux/splash-launcher "$PROGDIR"
fi

echo "✅ Oolite post-build completed successfully"
Expand Down
11 changes: 8 additions & 3 deletions installers/appimage/create_appimage.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,19 @@ run_script() {

APPDIR="./Oolite.AppDir"
rm -rf $APPDIR
mkdir -p $APPDIR/usr/bin
APPBIN="$APPDIR/usr/bin"
APPLIB="$APPDIR/usr/lib"
mkdir -p "$APPBIN"

PROGDIR="../oolite.app"
cp -rf $PROGDIR/Resources $APPDIR/usr/bin
cp -uf "$PROGDIR/splash-launcher" "$APPBIN"
cp -rf "$PROGDIR/Resources" "$APPBIN"
cp -uf "../ShellScripts/Linux/GNUstep.conf.template" "$APPBIN/Resources"


if (( $# == 1 )); then
echo "Including Basic-debug.oxp"
cp -rf AddOns $APPDIR/usr/bin
cp -rf AddOns "$APPBIN"
fi

curl -o linuxdeploy -L https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
Expand Down
9 changes: 8 additions & 1 deletion installers/flatpak/flatpak_build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,14 @@ export ADDITIONAL_CFLAGS="-DBUILD_DATE='\"$CPP_DATE\"'"
export ADDITIONAL_OBJCFLAGS="-DBUILD_DATE='\"$CPP_DATE\"'"
make -f Makefile release-deployment -j$FLATPAK_BUILDER_N_JOBS

cp -r oolite.app/* /app/bin
PROGDIR="oolite.app"
APPBIN="/app/bin"

cp -uf "$PROGDIR/run_oolite.sh" "$APPBIN"
cp -uf "$PROGDIR/oolite" "$APPBIN"
cp -uf "$PROGDIR/splash-launcher" "$APPBIN"
cp -rf "$PROGDIR/Resources" "$APPBIN"
cp -uf "ShellScripts/Linux/GNUstep.conf.template" "/app/bin/Resources"

if [[ -z "$VERSION_OVERRIDE" ]]; then
source ShellScripts/common/get_version.sh
Expand Down
Loading