Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • 21-installer-nodd
  • 2212-pre3-appimage
  • 304-the-amount-of-mashing-to-kill-a-pterabyte-should-be-reduced
  • 3ds
  • 3ds-next
  • 3ds-real
  • 3ds-real-wtf-man
  • 64-gl-log
  • COM_ImmedExecute-lua
  • DJGPP
  • S_SKIN-missing-flag
  • addon_loading
  • addplayer
  • alien-breed-3d
  • android-model-bug-bitten-2213
  • appimage-arm
  • appveyor
  • arm-appimage-next
  • better-download
  • better-refusal
  • blend-locking
  • blendmode-rangecheck
  • blentran
  • blua-unary-not-fix
  • boost-tickrate
  • catchup-timeout
  • cleanup-opengl
  • continue_tweaks
  • crawlacommander-sprites
  • custom-save
  • custom_save
  • cutscene-cleanup
  • dashmode-lowroad
  • dd-music-bypass
  • dd-music-fix
  • delete-connection-screen-and-midgame-joins
  • delete-lua
  • delete-slopes
  • deprecate-lua-dedicated-server
  • dofile
  • doom-test
  • dpl-2
  • dropshadows-spawning
  • dummy-renderer
  • easings
  • exchndl-xp-fix
  • few-kart-lua-changes
  • ffloorclip
  • filtering
  • final-hours
  • final-tweaks
  • fix-1288
  • fix-allowjoin
  • fix-autoexec-netvars
  • fix-cvar-conflicts
  • fix-ded-servers
  • fix-fire-shield
  • fix-input-buffer
  • fix-intermission-mouse
  • fix-joiner-consoleplayer
  • fix-keepbody-ping
  • fix-packet-name
  • fix-playercmd
  • fix-polyobject-rotation-crash
  • fix-rollout-rock-crash
  • fix-spawn-desynch
  • fix-splitscreen
  • fix-stacktrace
  • fix-ticcmd-received
  • fix-timeout
  • fixargstr
  • fixmul
  • flipfuncpointers
  • flipfuncpointers-master
  • fof-lightlist-fixes
  • font-FUCK
  • frictionrefactor
  • fuck-macros-1
  • funmenus
  • funmenus-next
  • gamepad_experiments
  • gif-splitting
  • gl-texfmt-p8-ap88-a8-ai8-fix
  • grr-lj
  • high-resolution-timer-2
  • hooklib-refactor
  • hwr-texture-cache-refactor
  • idk-if-this-will-fix-linux-opengl
  • increase-input-buffer
  • increase-input-buffer-more
  • increase-packet-tics
  • input-display
  • input-display-translucency
  • io
  • join-delay
  • joystick-juggling-maz
  • keep-body
  • keycodes-only
  • ksf-wadfiles
  • ld413-mp-fix
  • SRB2_release_2.1
  • SRB2_release_2.1.1
  • SRB2_release_2.1.10
  • SRB2_release_2.1.11
  • SRB2_release_2.1.12
  • SRB2_release_2.1.14
  • SRB2_release_2.1.15
  • SRB2_release_2.1.16
  • SRB2_release_2.1.16a
  • SRB2_release_2.1.17
  • SRB2_release_2.1.18
  • SRB2_release_2.1.19
  • SRB2_release_2.1.2
  • SRB2_release_2.1.20
  • SRB2_release_2.1.21
  • SRB2_release_2.1.22
  • SRB2_release_2.1.23
  • SRB2_release_2.1.24
  • SRB2_release_2.1.25
  • SRB2_release_2.1.3
  • SRB2_release_2.1.4
  • SRB2_release_2.1.5
  • SRB2_release_2.1.6
  • SRB2_release_2.1.7
  • SRB2_release_2.1.8
  • SRB2_release_2.1.9
  • SRB2_release_2.2.0
  • SRB2_release_2.2.1
  • SRB2_release_2.2.2
  • SRB2_release_2.2.3
  • SRB2_release_2.2.4
  • SRB2_release_2.2.5
  • SRB2_release_2.2.6
  • SRB2_release_2.2.7
  • SRB2_release_2.2.8
  • SRB2_release_2.2.9
  • td-release-v1.0.0
137 results

Target

Select target project
  • STJr/SRB2
  • Sryder/SRB2
  • wolfy852/SRB2
  • Alpha2244/SRB2
  • Inuyasha/SRB2
  • yoshibot/SRB2
  • TehRealSalt/SRB2
  • PrisimaTF/SRB2
  • Hatninja/SRB2
  • SteelT/SRB2
  • james/SRB2
  • ShaderWraith/SRB2
  • SinnamonLat/SRB2
  • mazmazz_/SRB2
  • filpAM/SRB2
  • chaoloveicemdboy/SRB2
  • Whooa21/SRB2
  • Machturne/SRB2
  • Golden/SRB2
  • Tatsuru/SRB2
  • Snu/SRB2
  • Zwip-Zwap_Zapony/SRB2
  • fickleheart/SRB2
  • alphaRexJames/SRB2
  • JJK/SRB2
  • diskpoppy/SRB2
  • Hannu_Hanhi/SRB2
  • ZipperQR/SRB2
  • kays/SRB2
  • spherallic/SRB2
  • Zippy_Zolton/SRB2
  • namiishere/SRB2
  • Ors/SRB2
  • SMS_Alfredo/SRB2
  • sonic_edge/SRB2
  • lavla/SRB2
  • ashi/SRB2
  • X.organic/SRB2
  • Fafabis/SRB2
  • Meziu/SRB2
  • v-rob/SRB2
  • tertu/SRB2
  • bitten2up/SRB2
  • flarn2006/SRB2
  • Krabs/SRB2
  • clairebun/SRB2
  • Lactozilla/SRB2
  • thehackstack/SRB2
  • Spice/SRB2
  • win8linux/SRB2
  • JohnFrostFox/SRB2
  • talktoneon726/SRB2
  • Wane/SRB2
  • Lamibe/SRB2
  • spectrumuk2/srb-2
  • nerdyminer18/srb-2
  • 256nil/SRB2
  • ARJr/SRB2
  • Alam/SRB2
  • Zenya/srb-2-marathon-demos
  • Acelite/srb-2-archivedmodifications
  • MIDIMan/SRB2
  • Lach/SRB2
  • Frostiikin/bounce-tweaks
  • Jaden/SRB2
  • Tyron/SRB2
  • Astronight/SRB2
  • Mari0shi06/SRB2
  • aiire/SRB2
  • Galactice/SRB2
  • srb2-ports/srb2-dreamcast
  • sdasdas/SRB2
  • chreas/srb-2-vr
  • StarManiaKG/the-story-of-sinically-rocketing-and-botching-the-2nd
  • LoganAir/SRB2
  • NepDisk/srb-2
  • alufolie91/SRB2
  • Felicia.iso/SRB2
  • twi/SRB2
  • BarrelsOFun/SRB2
  • Speed2411/SRB2
  • Leather_Realms/SRB2
  • Ayemar/SRB2
  • Acelite/SRB2
  • VladDoc/SRB2
  • kaldrum/model-features
  • strawberryfox417/SRB2
  • Lugent/SRB2
  • Rem/SRB2
  • Refrag/SRB2
  • Henry_3230/srb-3230
  • TehPuertoRicanSpartan2/tprs-srb2
  • Leminn/srb-2-marathon-stuff
  • chromaticpipe2/SRB2
  • MiguelGustavo15/SRB2
  • Maru/srb-2-tests
  • SilicDev/SRB2
  • UnmatchedBracket/SRB2
  • HybridDog/SRB2
  • xordspar0/SRB2
  • jsjhbewfhh/SRB2
  • Fancy2209/SRB2
  • Lorsoen/SRB2
  • shindoukin/SRB2
  • GamerOfDays/SRB2
  • Craftyawesome/SRB2
  • tenshi-tensai-tennoji/SRB2
  • Scarfdudebalder/SRB2
  • luigi-budd/srb-2-fix-interplag-lockon
  • mskluesner/SRB2
  • johnpetersa19/SRB2
  • Pheazant/SRB2
  • chromaticpipe2/srb2classic
  • romoney5/SRB2
  • PAS/SRB2Classic
  • BlueStaggo/SRB2
  • Jisk/srb-2-beef-jerky
117 results
Select Git revision
  • 1392-2-2-15-attempting-to-draw-a-hud-graphic-with-the-same-lump-name-as-a-lua-script-crashes-the
  • 21-installer-nodd
  • 2210-pre1
  • 2210-pre2
  • 2210-rc1
  • 2210-rc2
  • 2210-rc3
  • 2211-pre1
  • 2211-pre2
  • 2211-rc1
  • 2212-pre1
  • 2212-pre2
  • 2212-pre3
  • 2212-rc1
  • 2213
  • 2214-pre1
  • 2214-pre2
  • 2214-pre3
  • 2214-pre4
  • 2_2_12
  • 64-gl-log
  • COM_ImmedExecute-lua
  • DJGPP
  • accel-momentum
  • acs
  • action-args
  • alpha-fixes
  • any-resolution
  • appveyor
  • blend-locking
  • blentran
  • blua-unary-not-fix
  • boost-tickrate
  • bustablesoundz
  • cleanup-opengl
  • cleanupmusic
  • clipmidtex
  • cmake-valgrind
  • crawlacommander-sprites
  • custom-map-names
  • custom-teams
  • cutscene-cleanup
  • dd-music-bypass
  • dd-music-fix
  • delfile2
  • deprecate-lua-dedicated-server
  • dpl-2
  • dropshadows-spawning
  • dynabsp
  • emblem-drawing
  • exchndl-xp-fix
  • extra-textures
  • few-kart-lua-changes
  • ffloorclip
  • fix-167
  • fix-cvar-conflicts
  • fix-opengl-parameter-crash
  • fix-opengl-shear-roll
  • flipfuncpointers
  • fof-lightlist-fixes
  • font-FUCK
  • frictionrefactor
  • fuck-macros-1
  • gamepad-luakeydown
  • gamepad-morefixes
  • gamepad_experiments
  • gametype-refactor
  • gametype-refactor-1
  • gametype-refactor-player-spawns
  • ghost-networking
  • gif-splitting
  • grr-lj
  • hitboxviewer
  • hwr-texture-cache-refactor
  • hwrender2
  • improve-439
  • increase-maxconditionsets
  • increase-packet-tics
  • input-display
  • input-display-translucency
  • io
  • joystick-juggling-maz
  • just-in-case
  • keycodes-only
  • ksf-wadfiles
  • ld413-mp-fix
  • levelstruct
  • libpng-version-support
  • linedef-actions
  • lj-test
  • lol-states
  • loopedsounds
  • lower-unpegged-fix
  • lua-change-gametype
  • lua-command-netids
  • lua-gfx-2
  • lua-gfx-sprites
  • lua-local
  • makefile-auto-mingw-gcc
  • makefile-tinkering
  • SRB2_release_2.1
  • SRB2_release_2.1.1
  • SRB2_release_2.1.10
  • SRB2_release_2.1.11
  • SRB2_release_2.1.12
  • SRB2_release_2.1.14
  • SRB2_release_2.1.15
  • SRB2_release_2.1.16
  • SRB2_release_2.1.16a
  • SRB2_release_2.1.17
  • SRB2_release_2.1.18
  • SRB2_release_2.1.19
  • SRB2_release_2.1.2
  • SRB2_release_2.1.20
  • SRB2_release_2.1.21
  • SRB2_release_2.1.22
  • SRB2_release_2.1.23
  • SRB2_release_2.1.24
  • SRB2_release_2.1.25
  • SRB2_release_2.1.3
  • SRB2_release_2.1.4
  • SRB2_release_2.1.5
  • SRB2_release_2.1.6
  • SRB2_release_2.1.7
  • SRB2_release_2.1.8
  • SRB2_release_2.1.9
  • SRB2_release_2.2.0
  • SRB2_release_2.2.1
  • SRB2_release_2.2.10
  • SRB2_release_2.2.11
  • SRB2_release_2.2.12
  • SRB2_release_2.2.13
  • SRB2_release_2.2.15
  • SRB2_release_2.2.2
  • SRB2_release_2.2.3
  • SRB2_release_2.2.4
  • SRB2_release_2.2.5
  • SRB2_release_2.2.6
  • SRB2_release_2.2.7
  • SRB2_release_2.2.8
  • SRB2_release_2.2.9
  • td-release-v1.0.0
142 results
Show changes
Commits on Source (27)
#!/bin/bash
set -e
# Make Linux AppImage program data
# https://docs.appimage.org/reference/appdir.html
# PWD: {repo_root}/build
# See deployer.sh for usage
RESET="\e[0m"
FAILURE="\e[91m"
SUCCESS="\e[92m"
NOTICE="\e[93m"
VERBOSE="\e[94m"
verbosity=0 # By default don't print anything unless it's *ultra* important.
quiet=0 # Also don't print anything if they supplied the quiet argument
function print { ((quiet == 0)) && echo "$@" || :; } # echo if not quiet
function coloredText { printf $1; print "${@:2}"; printf $RESET; } # use print to inherit quiet
function success { coloredText $SUCCESS "$@"; } # use coloredText to inherit quiet
function important { coloredText $NOTICE "$@"; } # use coloredText to inherit quiet
function verboseOnly { (( verbosity >= $1 )) && (coloredText $VERBOSE "${@:2}") || :; } # use coloredText to inherit quiet
# Parses an argument with a single dash
function parseSingleDashArg() {
while read -n 1 char; do
if [[ $char == '-' || $char == '' ]]; then
:
elif [[ $char == 'h' ]]; then
helppassed=1
elif [[ $char == 'q' ]]; then
quiet=1
elif [[ $char == 'v' ]]; then
verbosity=$((verbosity + 1))
elif [[ $char == 'd' ]]; then
dry=1
elif [[ $char == 's' ]]; then
small=1
else
echo "$0: invalid option -- '$1'"
echo "Try '$0 --help' for more information."
return 1
fi
done <<<"$1"
}
# Simple help argument checker.
currentarg=1; # Which argument is --help...
for arg in "$@"; do # For $arg in the argument array...
if [[ $arg == "--help" ]]; then # Is it a help argument?
helppassed=1; # Help is passed, set $helppassed!
set -- "${@:1:$currentarg-1}" "${@:$currentarg+1}"; # Remove argument from list
elif [[ $arg == "--quiet" ]]; then
quiet=1
set -- "${@:1:$currentarg-1}" "${@:$currentarg+1}"; # Remove argument from list
elif [[ $arg == "--verbose" ]]; then
verbosity=$((verbosity + 1)) # Increase verbosity!
set -- "${@:1:$currentarg-1}" "${@:$currentarg+1}"; # Remove argument from list
elif [[ $arg == "--dry" ]]; then
dry=1; # Show parameters instead of using them.
set -- "${@:1:$currentarg-1}" "${@:$currentarg+1}"; # Remove argument from list
elif [[ $arg == "--small" ]]; then
small=1; # Don't copy assets to save on bandwidth.
set -- "${@:1:$currentarg-1}" "${@:$currentarg+1}"; # Remove argument from list
elif [[ ! $arg == *'--'* && $arg == *'-'* ]]; then
parseSingleDashArg $arg
if [[ $? == 0 ]]; then
set -- "${@:1:$currentarg-1}" "${@:$currentarg+1}"; # Remove argument from list
fi
elif [[ $arg == *'--'* ]]; then
print "$0: invalid option -- '$1'"
print "Try '$0 --help' for more information."
return 1;
else
currentarg=$((currentarg+1)); # Increment current argument number otherwise...
fi
done
important "SRB2 AppImage Packager v1.0, by mazmazz and Golden."
# Get root directory from the full path of this script.
__ROOT_DIR=${3:-$(dirname $(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd -P)/$(basename "${BASH_SOURCE[0]}"))}
# If it starts with '.', put the current working directory behind it so things work.
if [[ "$__ROOT_DIR" == '.' || "$__ROOT_DIR" == '..' ]]; then
__ROOT_DIR=$PWD/$__ROOT_DIR
fi
__PROGRAM_NAME=${PROGRAM_NAME:-Sonic Robo Blast 2}
__PROGRAM_DESCRIPTION=${PROGRAM_DESCRIPTION:-A 3D Sonic the Hedgehog fangame inspired by the original Sonic games on the Sega Genesis.}
__PROGRAM_FILENAME=${PROGRAM_FILENAME:-lsdl2srb2}
__PROGRAM_ASSETS=${PROGRAM_ASSETS:-$__ROOT_DIR/assets/installer}
__BUILD_DIR=${1:-$PWD}
__OUTPUT_FILENAME=${2:-$__PROGRAM_FILENAME.AppImage}
if [[ ! -z $4 ]]; then
__APPIMAGETOOL="$4" # appimagetool will be automatically downloaded if the path isn't given
fi
# Stuff that prints and exits.
# Prints setup text using method given by arguments.
# Example: printSetup "print" # print "Setup for AppImage...
function printSetup {
$@ "Setup for AppImage in BUILD_DIR: '$__BUILD_DIR'..."
$@ "With the OUTPUT_FILENAME: '$__OUTPUT_FILENAME'"
$@ "And SRB2 Repository Root ROOT_DIR: '$__ROOT_DIR'"
$@ "Using APPIMAGETOOL: '$([ -z "$__APPIMAGETOOL" ] && echo '(download)' || echo $__APPIMAGETOOL)'"
$@ ""
$@ "This should be run from a Makefile or from the directory of the build. If it is not, then change to that directory or specify that directory as an argument."
$@ "If ROOT_DIR isn't SRB2's repository root, specify that as an argument too."
$@ "Make must have built the program before you run this script."
$@ ""
$@ "Make sure these Environment Variables are correct."
$@ "If not, then enter: export PROGRAM_VARIABLE=value"
$@ "PROGRAM_NAME: $__PROGRAM_NAME"
$@ "PROGRAM_DESCRIPTION: $__PROGRAM_DESCRIPTION"
$@ "PROGRAM_FILENAME: $__PROGRAM_FILENAME"
$@ "PROGRAM_ASSETS: $__PROGRAM_ASSETS"
}
if [[ $helppassed ]]; then
print "Usage: $(basename "$0") [OPTION]... [BUILD_DIR] [OUTPUT_NAME] [ROOT_DIR] [APPIMAGETOOL]"
print "Packages a SRB2 binary into an AppImage."
print "OPTIONs may be included anywhere within the arguments."
print ""
print "Arguments:"
print " -h, --help display this help and exit."
print " -q, --quiet don't display any text."
print " -v, --verbose make commands more verbose, will always print."
print " -s, --small don't copy SRB2 assets to save on bandwidth."
print " parameters regardless of --dry."
print " -d, --dry print parameters and exit."
print ""
if (( $verbosity > 0 )) || [[ $dry ]]; then
printSetup "print"
else
print "This should be run from a Makefile or from the directory of the build."
print "Make must have built the program before you run this script."
fi
exit;
fi
if (( $verbosity > 0 )) || [[ $dry ]]; then
printSetup "verboseOnly" "0"
verboseOnly 0 ""
if [[ $dry ]]; then
set -n; # Enable debug mode and verbose for dry run.
fi
fi
# End stuff that prints and exits.
if (( $verbosity >= 4 )); then
set -v; # Really verbose? Print *everything*!
fi
# Define AppDir structure
mkdir -p $__BUILD_DIR/AppDir/usr/bin
mkdir -p $__BUILD_DIR/AppDir/lib
mkdir -p $__BUILD_DIR/AppDir/usr/share/applications
mkdir -p $__BUILD_DIR/AppDir/usr/share/icons/hicolor/256x256/apps
# Copy program data
if [[ ! $small ]]; then
verboseOnly 1 "Packaging program assets..."
cp -r $__PROGRAM_ASSETS/* $__BUILD_DIR/AppDir/usr/bin/
cp -r $__BUILD_DIR/$__PROGRAM_FILENAME $__BUILD_DIR/AppDir/usr/bin
else
verboseOnly 1 "Skipping program asset packing, --small or -s passed..."
fi
verboseOnly 1 "Packaging SRB2..."
verboseOnly 1 "Assuming executable name $__PROGRAM_FILENAME"
cp -r $__BUILD_DIR/$__PROGRAM_FILENAME $__BUILD_DIR/AppDir/usr/bin
# Copy required dependencies, but only if the program is dynamically linked.
verboseOnly 1 "Testing if this build is dynamically linked..."
set +e # Disable auto-exit for ldd.
ldd $__BUILD_DIR/$__PROGRAM_FILENAME >> /dev/null
exitcode=$?
set -e
if (( exitcode == 0 )); then
verboseOnly 1 "This build *is* dynamically linked! Continuing with Python script."
__LDD_LIST=$(python3 "$__ROOT_DIR/AppImage_prunedepends.py" "$__BUILD_DIR/$__PROGRAM_FILENAME")
IFS=' ' read -r -a paths <<< "$__LDD_LIST"
for path in "${paths[@]}";
do
if [ -f "$path" ]; then
verboseOnly 2 "Packaging dependency $(basename $path)...";
cp "$path" $__BUILD_DIR/AppDir/lib/;
else
verboseOnly 2 "Dependency $(basename $path) not found";
fi;
done;
else
verboseOnly 1 "This SRB2 build is statically linked, skipping dependency packing."
fi
cd $__BUILD_DIR/AppDir
# Copy icons
verboseOnly 1 "Packaging resources..."
cp $__ROOT_DIR/srb2.png ./usr/share/icons/hicolor/256x256/apps/$__PROGRAM_FILENAME.png
ln -sf ./usr/share/icons/hicolor/256x256/apps/$__PROGRAM_FILENAME.png ./.DirIcon
ln -sf ./usr/share/icons/hicolor/256x256/apps/$__PROGRAM_FILENAME.png ./$__PROGRAM_FILENAME.png
# Make desktop descriptor
cat > ./usr/share/applications/$__PROGRAM_FILENAME.desktop <<EOF
[Desktop Entry]
Type=Application
Name=${__PROGRAM_NAME}
Comment=${__PROGRAM_DESCRIPTION}
Icon=${__PROGRAM_FILENAME}
Exec=AppRun %F
Categories=Game;
EOF
ln -sf ./usr/share/applications/$__PROGRAM_FILENAME.desktop ./$__PROGRAM_FILENAME.desktop
# Make entry point
echo -e \#\!$(dirname $SHELL)/sh > ./AppRun
echo -e 'HERE="$(dirname "$(readlink -f "${0}")")"' >> ./AppRun
echo -e 'SRB2WADDIR=$HERE/usr/bin LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HERE/lib exec $HERE/usr/bin/'$__PROGRAM_FILENAME' "$@"' >> ./AppRun
chmod +x ./AppRun
cd ..
# Package AppImage
if [ -z "$__APPIMAGETOOL" ] || (! command -v $__APPIMAGETOOL &> /dev/null); then
verboseOnly 1 "No valid appimagetool path given, downloading appimagetool..."
# Print notice for internet connection.
important "If the command hangs here, check your internet connection, or download appimagetool and add it to your \$PATH and try compiling again."
url="https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage"
(( verbosity >= 3 )) && wget $url || wget -q $url
APPIMAGETOOL=./appimagetool-x86_64.AppImage
chmod a+x $APPIMAGETOOL
else
verboseOnly 1 "appimagetool path given, no download required."
APPIMAGETOOL=$__APPIMAGETOOL
fi
verboseOnly 1 "Packing AppImage $__OUTPUT_FILENAME"
if (( verbosity >= 3 )); then
$APPIMAGETOOL ./AppDir $__OUTPUT_FILENAME
elif (( verbosity >= 2 )); then
$APPIMAGETOOL ./AppDir $__OUTPUT_FILENAME >/dev/null
else
$APPIMAGETOOL ./AppDir $__OUTPUT_FILENAME >/dev/null 2>&1
fi
success "AppImage ready!"
verboseOnly 1 "Cleaning up files..."
rm -r ./AppDir
if [ -z "$__APPIMAGETOOL" ]; then
rm ./appimagetool-x86_64.AppImage
fi
cd $__ROOT_DIR
\ No newline at end of file
#!/usr/bin/python3
##############################
# Select Linux dependencies for inclusion into AppImage (`ldd` command)
##############################
from urllib.request import urlopen
import subprocess
import sys
import re
import os
__WHITELIST = [
'libnsl',
'libSDL2',
'libSDL2_mixer',
'libgme',
'libopenmpt',
'libpng',
'libfluidsynth',
'libpulse',
'libmodplug',
'libvorbisfile',
'libopusfile',
'libFLAC',
'libmad',
'libmpg123',
'libvorbis',
'libpulsecommon',
'libsndfile',
'libsndio',
'libogg',
'libvorbisenc',
'libjson',
'libreadline',
'libwrap',
'libtinfo',
'libtirpc',
'libpng16'
]
if len(sys.argv) < 2:
raise ValueError("First argument must be a path to the program executable.")
#print('Whitelist: Matching libraries against {} names. See {} for the list.'.format(len(__WHITELIST), os.path.basename(__file__)))
# Get most recent excludelist for AppImage depends
#with urlopen('https://raw.githubusercontent.com/AppImage/pkg2appimage/master/excludelist') as f:
# excludelist = f.read().decode('utf-8')
# Get only the filenames from excludelist
#exlist = re.sub(r'#.*', '', excludelist)
#exlist = re.sub(r'\s.*$', '', exlist)
#exlist = [s for s in exlist.splitlines() if s]
# Get list of dependencies for EXE name
ldd = subprocess.check_output(['ldd',sys.argv[1]]).decode('utf-8')
ldd = re.sub(r' \(.*', '', ldd)
ldd = ldd.splitlines()
# Format list of dependencies
deps = []
for line in ldd:
keyval = line.split(' => ')
if len(keyval) < 2:
continue
# Perform basename because a depend may have a path prefix
#if os.path.basename(keyval[0]) not in exlist:
#if any([(os.path.basename(keyval[0]).find(s) > -1): for s in __WHITELIST]):
deps.append(keyval[1])
print(' '.join(deps))
...@@ -220,7 +220,13 @@ dbg:=$(bin)/$(DBGNAME) ...@@ -220,7 +220,13 @@ dbg:=$(bin)/$(DBGNAME)
build_done==== Build is done, look for \ build_done==== Build is done, look for \
$(<F) at $(abspath $(<D)) === $(<F) at $(abspath $(<D)) ===
all : $(exe) ifdef APPIMAGE
appimage:=$(exe).AppImage
else
appimage:=
endif
all : $(exe) $(appimage)
$(call Echo,$(build_done)) $(call Echo,$(build_done))
ifndef VALGRIND ifndef VALGRIND
...@@ -328,9 +334,21 @@ $(dbg).txt : $(dbg) ...@@ -328,9 +334,21 @@ $(dbg).txt : $(dbg)
$(.)$(OBJDUMP) $(OBJDUMP_OPTS) $< > $@ $(.)$(OBJDUMP) $(OBJDUMP_OPTS) $< > $@
$(.)$(GZIP) $(GZIP_OPTS) $@ $(.)$(GZIP) $(GZIP_OPTS) $@
ifdef APPIMAGE
$(appimage) : $(exe)
$(call Echo,Building AppImage...)
ifdef APPIMAGE_NOASSETS
$(.)../AppImage_build.sh -q --small $(bin) $(EXENAME).AppImage .. appimagetool
else
$(.)../AppImage_build.sh -q $(bin) $(EXENAME).AppImage .. appimagetool
endif
$(call Echo,AppImage build complete!)
endif
# '::' means run unconditionally # '::' means run unconditionally
# this really updates comptime.h # this really updates comptime.h
comptime.c :: comptime.c ::
ifdef WINDOWSHELL ifdef WINDOWSHELL
-$(.)..\comptime.bat . -$(.)..\comptime.bat .
else else
......
...@@ -138,7 +138,6 @@ FILE *fopenfile(const char*, const char*); ...@@ -138,7 +138,6 @@ FILE *fopenfile(const char*, const char*);
extern FILE *logstream; extern FILE *logstream;
extern char logfilename[1024]; extern char logfilename[1024];
#endif #endif
/* A mod name to further distinguish versions. */ /* A mod name to further distinguish versions. */
#define SRB2APPLICATION "SRB2" #define SRB2APPLICATION "SRB2"
......
This diff is collapsed.
...@@ -123,32 +123,32 @@ static void CL_DrawConnectionStatus(void) ...@@ -123,32 +123,32 @@ static void CL_DrawConnectionStatus(void)
{ {
fileneeded_t *file = &fileneeded[filedownload.current]; fileneeded_t *file = &fileneeded[filedownload.current];
cltext = M_GetText("Downloading game state..."); cltext = M_GetText("Downwoading game state...");
DrawFileProgress(file, BASEVIDHEIGHT-16); DrawFileProgress(file, BASEVIDHEIGHT-16);
} }
else else
cltext = M_GetText("Waiting to download game state..."); cltext = M_GetText("Waiting to downwoad game state...");
break; break;
case CL_ASKFULLFILELIST: case CL_ASKFULLFILELIST:
case CL_CHECKFILES: case CL_CHECKFILES:
cltext = M_GetText("Checking server addon list..."); cltext = M_GetText("Checking sewvew addon wist...");
break; break;
case CL_CONFIRMCONNECT: case CL_CONFIRMCONNECT:
cltext = ""; cltext = "";
break; break;
case CL_LOADFILES: case CL_LOADFILES:
cltext = M_GetText("Loading server addons..."); cltext = M_GetText("Woading sewvew addons...");
break; break;
case CL_ASKJOIN: case CL_ASKJOIN:
case CL_WAITJOINRESPONSE: case CL_WAITJOINRESPONSE:
if (serverisfull) if (serverisfull)
cltext = M_GetText("Server full, waiting for a slot..."); cltext = M_GetText("Sewvew fuww, waiting fow a swot...");
else else
cltext = M_GetText("Requesting to join..."); cltext = M_GetText("*blushes* Wequesting to join...");
break; break;
default: default:
cltext = M_GetText("Connecting to server..."); cltext = M_GetText("Connyecting to s-sewvew...");
break; break;
} }
V_DrawCenteredString(BASEVIDWIDTH/2, BASEVIDHEIGHT-16-24, V_YELLOWMAP, cltext); V_DrawCenteredString(BASEVIDWIDTH/2, BASEVIDHEIGHT-16-24, V_YELLOWMAP, cltext);
...@@ -160,7 +160,7 @@ static void CL_DrawConnectionStatus(void) ...@@ -160,7 +160,7 @@ static void CL_DrawConnectionStatus(void)
INT32 totalfileslength; INT32 totalfileslength;
INT32 loadcompletednum = 0; INT32 loadcompletednum = 0;
V_DrawCenteredString(BASEVIDWIDTH/2, BASEVIDHEIGHT-16-16, V_YELLOWMAP, "Press ESC to abort"); V_DrawCenteredString(BASEVIDWIDTH/2, BASEVIDHEIGHT-16-16, V_YELLOWMAP, "Pwess ESC to abowt");
// ima just count files here // ima just count files here
if (fileneeded) if (fileneeded)
...@@ -171,13 +171,13 @@ static void CL_DrawConnectionStatus(void) ...@@ -171,13 +171,13 @@ static void CL_DrawConnectionStatus(void)
} }
// Loading progress // Loading progress
V_DrawCenteredString(BASEVIDWIDTH/2, BASEVIDHEIGHT-16-24, V_YELLOWMAP, "Loading server addons..."); V_DrawCenteredString(BASEVIDWIDTH/2, BASEVIDHEIGHT-16-24, V_YELLOWMAP, "W-Woading s-sewvew addons...");
totalfileslength = (INT32)((loadcompletednum/(double)(fileneedednum)) * 256); totalfileslength = (INT32)((loadcompletednum/(double)(fileneedednum)) * 256);
M_DrawTextBox(BASEVIDWIDTH/2-128-8, BASEVIDHEIGHT-16-8, 32, 1); M_DrawTextBox(BASEVIDWIDTH/2-128-8, BASEVIDHEIGHT-16-8, 32, 1);
V_DrawFill(BASEVIDWIDTH/2-128, BASEVIDHEIGHT-16, 256, 8, 111); V_DrawFill(BASEVIDWIDTH/2-128, BASEVIDHEIGHT-16, 256, 8, 111);
V_DrawFill(BASEVIDWIDTH/2-128, BASEVIDHEIGHT-16, totalfileslength, 8, 96); V_DrawFill(BASEVIDWIDTH/2-128, BASEVIDHEIGHT-16, totalfileslength, 8, 96);
V_DrawCenteredString(BASEVIDWIDTH/2, BASEVIDHEIGHT-16, V_20TRANS|V_MONOSPACE, V_DrawCenteredString(BASEVIDWIDTH/2, BASEVIDHEIGHT-16, V_20TRANS|V_MONOSPACE,
va(" %2u/%2u files",loadcompletednum,fileneedednum)); va(" %2u/%2u fiwes",loadcompletednum,fileneedednum));
} }
else if (filedownload.current != -1) else if (filedownload.current != -1)
{ {
...@@ -218,10 +218,10 @@ static void CL_DrawConnectionStatus(void) ...@@ -218,10 +218,10 @@ static void CL_DrawConnectionStatus(void)
// (also it doesn't really fit on a typical SRB2 screen) // (also it doesn't really fit on a typical SRB2 screen)
#if 0 #if 0
const char *download_str = cl_mode == CL_DOWNLOADHTTPFILES const char *download_str = cl_mode == CL_DOWNLOADHTTPFILES
? M_GetText("HTTP downloading \"%s\"") ? M_GetText(" H-HTTP downwoading OwO\"%s\"")
: M_GetText("Downloading \"%s\""); : M_GetText("D-downwoading \"%s\"");
#else #else
const char *download_str = M_GetText("Downloading \"%s\""); const char *download_str = M_GetText("Downwoading \"%s\"");
#endif #endif
V_DrawCenteredString(BASEVIDWIDTH/2, BASEVIDHEIGHT-16-24, V_ALLOWLOWERCASE|V_YELLOWMAP, V_DrawCenteredString(BASEVIDWIDTH/2, BASEVIDHEIGHT-16-24, V_ALLOWLOWERCASE|V_YELLOWMAP,
...@@ -245,12 +245,12 @@ static void CL_DrawConnectionStatus(void) ...@@ -245,12 +245,12 @@ static void CL_DrawConnectionStatus(void)
} }
V_DrawCenteredString(BASEVIDWIDTH/2, BASEVIDHEIGHT-16-16, V_ALLOWLOWERCASE|V_YELLOWMAP, V_DrawCenteredString(BASEVIDWIDTH/2, BASEVIDHEIGHT-16-16, V_ALLOWLOWERCASE|V_YELLOWMAP,
va(M_GetText("from %s"), tempname)); va(M_GetText("fwom %s"), tempname));
} }
else else
{ {
V_DrawCenteredString(BASEVIDWIDTH/2, BASEVIDHEIGHT-16-16, V_ALLOWLOWERCASE|V_YELLOWMAP, V_DrawCenteredString(BASEVIDWIDTH/2, BASEVIDHEIGHT-16-16, V_ALLOWLOWERCASE|V_YELLOWMAP,
M_GetText("from the server")); M_GetText("fwom t-the sewvew"));
} }
DrawFileProgress(file, BASEVIDHEIGHT-16); DrawFileProgress(file, BASEVIDHEIGHT-16);
...@@ -262,7 +262,7 @@ static void CL_DrawConnectionStatus(void) ...@@ -262,7 +262,7 @@ static void CL_DrawConnectionStatus(void)
DrawConnectionStatusBox(); DrawConnectionStatusBox();
V_DrawCenteredString(BASEVIDWIDTH/2, BASEVIDHEIGHT-16-24, V_YELLOWMAP, V_DrawCenteredString(BASEVIDWIDTH/2, BASEVIDHEIGHT-16-24, V_YELLOWMAP,
M_GetText("Waiting to download files...")); M_GetText("Waiting to downwoad fiwes... OwO"));
} }
} }
} }
...@@ -285,7 +285,7 @@ boolean CL_SendJoin(void) ...@@ -285,7 +285,7 @@ boolean CL_SendJoin(void)
UINT8 localplayers = 1; UINT8 localplayers = 1;
char const *player2name; char const *player2name;
if (netgame) if (netgame)
CONS_Printf(M_GetText("Sending join request...\n")); CONS_Printf(M_GetText("S-Sending join wequest...\n"));
netbuffer->packettype = PT_CLIENTJOIN; netbuffer->packettype = PT_CLIENTJOIN;
netbuffer->u.clientcfg.modversion = MODVERSION; netbuffer->u.clientcfg.modversion = MODVERSION;
...@@ -603,9 +603,9 @@ static void BeginDownload(boolean direct) ...@@ -603,9 +603,9 @@ static void BeginDownload(boolean direct)
// why was this its own cl_mode_t? // why was this its own cl_mode_t?
M_StartMessage(M_GetText( M_StartMessage(M_GetText(
"The direct downloader encountered an error.\n" "*giggles* The d-diwect downwoadew encountewed an ewwow.\n"
"See the logfile for more info.\n\n" "See the wogfiwe fow m-mowe info. OwO\n\n"
"Press ESC\n" "Pwess ESC\n"
), NULL, MM_NOTHING); ), NULL, MM_NOTHING);
} }
} }
...@@ -662,18 +662,18 @@ static void ShowDownloadConsentMessage(void) ...@@ -662,18 +662,18 @@ static void ShowDownloadConsentMessage(void)
if (serverisfull) if (serverisfull)
M_StartMessage(va(M_GetText( M_StartMessage(va(M_GetText(
"This server is full!\n" "*blushes* This sewvew is f-fuww!\n"
"Download of %s of additional\ncontent is required to join.\n" "Downwoad of %s of additionyaw\ncontent is wequiwed to join. OwO\n"
"\n" "\n"
"You may download server addons,\nand wait for a slot.\n" "You may downwoad sewvew a-addons,\nyand wait fow a s-swot.\n"
"\n" "\n"
"Press ENTER to continue\nor ESC to cancel.\n" "Pwess ENTER to continue\nor ESC to cancel.\n"
), downloadsize), M_ConfirmConnect, MM_EVENTHANDLER); ), downloadsize), M_ConfirmConnect, MM_EVENTHANDLER);
else else
M_StartMessage(va(M_GetText( M_StartMessage(va(M_GetText(
"Download of %s of additional\ncontent is required to join.\n" "Downwoad of %s of a-additionyaw\ncontent is wequiwed to join.\n"
"\n" "\n"
"Press ENTER to continue\nor ESC to cancel.\n" "Pwess ENTER to continue\now ESC to cancel.\n"
), downloadsize), M_ConfirmConnect, MM_EVENTHANDLER); ), downloadsize), M_ConfirmConnect, MM_EVENTHANDLER);
cl_mode = CL_CONFIRMCONNECT; cl_mode = CL_CONFIRMCONNECT;
...@@ -685,13 +685,13 @@ static const char *GetDirectDownloadFailReason(UINT8 dlstatus) ...@@ -685,13 +685,13 @@ static const char *GetDirectDownloadFailReason(UINT8 dlstatus)
switch (dlstatus) switch (dlstatus)
{ {
case DLSTATUS_TOOLARGE: case DLSTATUS_TOOLARGE:
return M_GetText("Some addons are larger than the server is willing to send."); return M_GetText("Some a-addons awe wawgew t-than the sewvew is wiwwing to s-send.");
case DLSTATUS_WONTSEND: case DLSTATUS_WONTSEND:
return M_GetText("The server is not allowing download requests."); return M_GetText("The sewvew is nyot awwowing downwoad wequests.");
case DLSTATUS_NODOWNLOAD: case DLSTATUS_NODOWNLOAD:
return M_GetText("All addons downloadable, but you have chosen to disable addon downloading."); return M_GetText("Aww addons downwoadabwe, b-b-but you have chosen to disabwe addon downwoading.");
case DLSTATUS_FOLDER: case DLSTATUS_FOLDER:
return M_GetText("One or more addons were added as a folder, which the server cannot send."); return M_GetText("Onye ow mowe addons wewe added as a fowdew, which the sewvew cannyot send.");
} }
return "Unknown reason"; return "Unknown reason";
...@@ -700,7 +700,7 @@ static const char *GetDirectDownloadFailReason(UINT8 dlstatus) ...@@ -700,7 +700,7 @@ static const char *GetDirectDownloadFailReason(UINT8 dlstatus)
static void HandleDirectDownloadFail(UINT8 dlstatus) static void HandleDirectDownloadFail(UINT8 dlstatus)
{ {
// not downloadable, put reason in console // not downloadable, put reason in console
CONS_Alert(CONS_NOTICE, M_GetText("You need additional addons to connect to this server:\n")); CONS_Alert(CONS_NOTICE, M_GetText("You nyeed additionyaw addons to c-connyect t-to this sewvew:\n"));
for (UINT8 i = 0; i < fileneedednum; i++) for (UINT8 i = 0; i < fileneedednum; i++)
{ {
...@@ -745,10 +745,10 @@ static boolean CL_FinishedFileList(void) ...@@ -745,10 +745,10 @@ static boolean CL_FinishedFileList(void)
{ {
AbortConnection(); AbortConnection();
M_StartMessage(M_GetText( M_StartMessage(M_GetText(
"You have too many WAD files loaded\n" "You have too m-m-many WAD f-fiwes woaded\n"
"to add ones the server is using.\n" "to add onyes the sewvew is using OwO.\n"
"Please restart SRB2 before connecting.\n\n" "Pwease westawt SWB2 befowe connyecting.\n\n"
"Press ESC\n" "Pwess ESC\n"
), NULL, MM_NOTHING); ), NULL, MM_NOTHING);
return false; return false;
} }
...@@ -756,14 +756,14 @@ static boolean CL_FinishedFileList(void) ...@@ -756,14 +756,14 @@ static boolean CL_FinishedFileList(void)
{ {
AbortConnection(); AbortConnection();
M_StartMessage(M_GetText( M_StartMessage(M_GetText(
"You have the wrong addons loaded.\n" "You have the wwong addons woaded.\n"
"\n" "\n"
"To play on this server, restart\n" "To pway on this sewvew, westawt\n"
"the game and don't load any addons.\n" "the game and don't w-woad any addons.\n"
"SRB2 will automatically add\n" "SWB2 w-wiww automaticawwy wutomaticawwy add\n"
"everything you need when you join.\n" "evewything y-you nyeed when y-you join.\n"
"\n" "\n"
"Press ESC\n" "Pwess ESC\n"
), NULL, MM_NOTHING); ), NULL, MM_NOTHING);
return false; return false;
} }
...@@ -772,11 +772,11 @@ static boolean CL_FinishedFileList(void) ...@@ -772,11 +772,11 @@ static boolean CL_FinishedFileList(void)
if (serverisfull) if (serverisfull)
{ {
M_StartMessage(M_GetText( M_StartMessage(M_GetText(
"This server is full!\n" "This sewvew is f-fuww!\n"
"\n" "\n"
"You may load server addons (if any), and wait for a slot.\n" "You may woad sewvew addons (if any), and wait fow a swot.\n"
"\n" "\n"
"Press ENTER to continue\nor ESC to cancel.\n\n" "Pwess ENTEW to c-continyue\nyow ESC to c-c-c-cancew.\n\n"
), M_ConfirmConnect, MM_EVENTHANDLER); ), M_ConfirmConnect, MM_EVENTHANDLER);
cl_mode = CL_CONFIRMCONNECT; cl_mode = CL_CONFIRMCONNECT;
curfadevalue = 0; curfadevalue = 0;
...@@ -795,13 +795,13 @@ static boolean CL_FinishedFileList(void) ...@@ -795,13 +795,13 @@ static boolean CL_FinishedFileList(void)
HandleDirectDownloadFail(status); HandleDirectDownloadFail(status);
AbortConnection(); AbortConnection();
M_StartMessage(M_GetText( M_StartMessage(M_GetText(
"An error occurred when trying to\n" "An ewwow occuwwed when twying to\n"
"download missing addons.\n" "downwoad missing addons.\n"
"(This is almost always a problem\n" "(This i-is awmost awways a pwobwem\n"
"with the server, not your game.)\n" "w-with the sewvew, n-nyot youw game.)\n"
"\n" "\n"
"See the console or log file\n" "OwO S-S-See the consowe ow wog fiwe\n"
"for additional details.\n" "fow a-additionyaw detaiws.\n"
"\n" "\n"
"Press ESC\n" "Press ESC\n"
), NULL, MM_NOTHING); ), NULL, MM_NOTHING);
...@@ -862,23 +862,23 @@ static const char * InvalidServerReason (serverinfo_pak *info) ...@@ -862,23 +862,23 @@ static const char * InvalidServerReason (serverinfo_pak *info)
{ {
case REFUSE_BANNED: case REFUSE_BANNED:
return return
"You have been banned\n" "You have been bannyed\n"
"from the server.\n" EOT; "from the server.\n" EOT;
case REFUSE_JOINS_DISABLED: case REFUSE_JOINS_DISABLED:
return return
"The server is not accepting\n" "The sewvew is nyot accepting\n"
"joins for the moment.\n" EOT; "joins for the moment.\n" EOT;
case REFUSE_SLOTS_FULL: case REFUSE_SLOTS_FULL:
return va( return va(
"Maximum players reached: %d\n" EOT, "Maximum pwayews weached: %d\n" EOT,
info->maxplayer - D_NumBots()); info->maxplayer - D_NumBots());
default: default:
if (info->refusereason) if (info->refusereason)
{ {
return return
"You can't join.\n" "You c-can't join.\n"
"I don't know why,\n" "Watashi don't knyow why,\n"
"but you can't join.\n" EOT; "byut you can't join.\n" EOT;
} }
} }
...@@ -1366,7 +1366,7 @@ void PT_ServerRefuse(SINT8 node) ...@@ -1366,7 +1366,7 @@ void PT_ServerRefuse(SINT8 node)
return; return;
} }
M_StartMessage(va(M_GetText("Server refuses connection\n\nReason:\n%s"), M_StartMessage(va(M_GetText("Sewvew wefuses connyection\n\nWeason:\n%s"),
reason), NULL, MM_NOTHING); reason), NULL, MM_NOTHING);
AbortConnection(); AbortConnection();
......