You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
306 lines
10 KiB
306 lines
10 KiB
#!/bin/bash
|
|
WHY_FORCE=""
|
|
if [ "x$FORCE_LMK_UPDATE" = "x" ]; then
|
|
FORCE_LMK_UPDATE=false
|
|
elif "x$FORCE_LMK_UPDATE" = "xtrue" ]; then
|
|
WHY_FORCE="FORCE_LMK_UPDATE=true"
|
|
fi
|
|
if [ "x$1" = "x--force" ]; then
|
|
FORCE_LMK_UPDATE=true
|
|
WHY_FORCE="--force"
|
|
fi
|
|
|
|
if [ "x$LOCAL_MASTER" = "x" ]; then
|
|
LOCAL_MASTER="$HOME/src/minetest.org-master"
|
|
fi
|
|
echo "LOCAL_MASTER=\"$LOCAL_MASTER\""
|
|
|
|
mkdir -p "$LOCAL_MASTER"
|
|
code=$?
|
|
if [ $code -ne 0 ]; then exit $code; fi
|
|
|
|
cd "$LOCAL_MASTER"
|
|
code=$?
|
|
if [ $code -ne 0 ]; then exit $code; fi
|
|
|
|
DO_UPDATE_ZIP=true
|
|
DO_EXTRACT=true
|
|
TRY_VERSION="`date '+%y%m%d'`"
|
|
EXISTING_VERSION=""
|
|
EXISTING_NAME="linux-minetest-kit"
|
|
GOT_NAME="linux-minetest-kit"
|
|
GOT_VERSION=""
|
|
TRY_NAME="linux-minetest-kit-$TRY_VERSION"
|
|
MASTER_PATH=""
|
|
MASTER_VERSION=""
|
|
printf "* checking for '$TRY_NAME' or '$EXISTING_NAME'..."
|
|
|
|
FOUND=false
|
|
# Wipe out the linux-minetest-kit/ first if do_update so it is ready to use:
|
|
if [ -d "$EXISTING_NAME" ]; then
|
|
FOUND=true
|
|
if [ ! -f "$EXISTING_NAME/release.txt" ]; then
|
|
echo "Error: '`realpath $EXISTING_NAME`' doesn't contain release.txt."
|
|
exit 1
|
|
fi
|
|
EXISTING_VERSION="`cat $EXISTING_NAME/release.txt`"
|
|
if [ "x$FORCE_LMK_UPDATE" != "true" ]; then
|
|
echo "Warning: using existing '`realpath $EXISTING_NAME`'. Specify --force to replace it with the remote version."
|
|
OLD_EXISTING_NAME="$EXISTING_NAME"
|
|
EXISTING_NAME="linux-minetest-kit-$EXISTING_VERSION"
|
|
if [ -d "$EXISTING_NAME" ]; then
|
|
echo "Error: '`realpath $EXISTING_NAME`' already exists and conflicts with the new '`realpath linux-minetest-kit`' which is the same version so you can remove the new linux-minetest-kit."
|
|
exit 1
|
|
fi
|
|
printf "mv '$OLD_EXISTING_NAME' '$EXISTING_NAME'..."
|
|
mv '$OLD_EXISTING_NAME' '$EXISTING_NAME'
|
|
code=$?
|
|
if [ $code -ne 0 ]; then
|
|
echo "FAILED"
|
|
exit $code;
|
|
else
|
|
echo "OK"
|
|
fi
|
|
MASTER_PATH="`realpath $EXISTING_NAME`"
|
|
echo "'$MASTER_PATH' (EXISTING_NAME) is ready to use."
|
|
DO_EXTRACT=false
|
|
else
|
|
echo "removing $EXISTING_NAME ($WHY_FORCE)."
|
|
rm -Rf "$EXISTING_NAME"
|
|
fi
|
|
fi
|
|
|
|
if [ -d "$TRY_NAME" ]; then
|
|
FOUND=true
|
|
if [ "x$FORCE_LMK_UPDATE" != "true" ]; then
|
|
DO_UPDATE_ZIP=false
|
|
EXISTING_NAME="$TRY_NAME"
|
|
EXISTING_VERSION="$TRY_VERSION"
|
|
echo "Warning: using existing '`realpath $TRY_NAME`'. Specify --force to replace it with the remote version."
|
|
DO_EXTRACT=false
|
|
MASTER_PATH="`realpath $TRY_NAME`"
|
|
echo "'$MASTER_PATH' (local copy: $TRY_NAME today's datestamp) is ready to use."
|
|
# else true, so check for it later if version matches.
|
|
else
|
|
echo "Found `realpath $TRY_NAME` (will be replaced if same version as remote due to $WHY_FORCE)"
|
|
fi
|
|
fi
|
|
|
|
if [ "$FOUND" != "true" ]; then
|
|
echo "no."
|
|
fi
|
|
|
|
|
|
if [ "x$DO_UPDATE_ZIP" = "xtrue" ]; then
|
|
printf "* checking for linux-minetest-kit.zip..."
|
|
if [ -f "linux-minetest-kit.zip" ]; then
|
|
if [ "x$FORCE_LMK_UPDATE" != "true" ]; then
|
|
echo "Warning: using existing '`realpath linux-minetest-kit.zip`'. Specify --force to update it."
|
|
DO_UPDATE_ZIP=false
|
|
else
|
|
printf "updating..."
|
|
fi
|
|
else
|
|
printf "downloading (this may take a while)..."
|
|
fi
|
|
fi
|
|
|
|
if [ "x$DO_UPDATE_ZIP" = "xtrue" ]; then
|
|
rsync -t minetest.io:/opt/minebest/assemble/prod/linux-minetest-kit.zip ./
|
|
code=$?
|
|
if [ $code -ne 0 ]; then
|
|
echo "FAILED"
|
|
exit $code
|
|
else
|
|
echo "OK"
|
|
fi
|
|
fi
|
|
|
|
if [ "x$DO_EXTRACT" = "xtrue" ]; then
|
|
if [ -d "linux-minetest-kit" ]; then
|
|
echo "Error: $WHY_FORCE extracting but linux-minetest-kit still exists"
|
|
exit 1
|
|
fi
|
|
printf "* extracting linux-minetest-kit in `pwd`..."
|
|
unzip linux-minetest-kit.zip
|
|
code=$?
|
|
if [ $code -ne 0 ]; then
|
|
echo "FAILED"
|
|
exit $code
|
|
else
|
|
echo "OK"
|
|
fi
|
|
if [ ! -d "linux-minetest-kit" ]; then
|
|
echo "Error: The structure of the archive is unknown. It extracted ok but didn't produce linux-minetest-kit/ in '`pwd`'"
|
|
exit 1
|
|
fi
|
|
if [ ! -f "linux-minetest-kit/release.txt" ]; then
|
|
echo "Error: The structure of the archive is unknown. It extracted ok but '`realpath linux-minetest-kit`' doesn't contain a release.txt file."
|
|
exit 1
|
|
fi
|
|
GOT_VERSION="`cat linux-minetest-kit/release.txt`"
|
|
if [ -z "$GOT_VERSION" ]; then
|
|
echo "Error: The structure of the archive is unknown. It extracted ok but '`realpath linux-minetest-kit/release.txt`' is blank."
|
|
exit 1
|
|
fi
|
|
echo "* extracted version=$GOT_VERSION"
|
|
GOT_NAME="linux-minetest-kit-$GOT_VERSION"
|
|
if [ -d "$GOT_NAME" ]; then
|
|
if [ "x$FORCE_LMK_UPDATE" != "true" ]; then
|
|
echo "Warning: using existing '`realpath $GOT_NAME`'. Specify --force (or delete it and re-run this script normally) to replace it with the remote version."
|
|
MASTER_PATH="`realpath $GOT_NAME`"
|
|
echo "'$MASTER_PATH' (GOT_NAME from previously-extracted local copy's version) is ready to use."
|
|
else
|
|
echo "* merging (and moving) '`realpath linux-minetest-kit`' into '`realpath $GOT_NAME`'..."
|
|
rsync -rtv --delete --remove-source-files linux-minetest-kit/ "$GOT_NAME"
|
|
code=$?
|
|
if [ $code -ne 0 ]; then
|
|
echo "FAILED"
|
|
exit $code
|
|
else
|
|
echo "OK"
|
|
fi
|
|
if [ -d "linux-minetest-kit" ]; then
|
|
rm -Rf linux-minetest-kit
|
|
code=$?
|
|
if [ $code -ne 0 ]; then
|
|
echo "Warning: 'rm -Rf linux-minetest-kit' failed in '`pwd`'. Remove the incomplete copy manually."
|
|
fi
|
|
fi
|
|
MASTER_PATH="`realpath $GOT_NAME`"
|
|
echo "'$MASTER_PATH' (GOT_NAME from version downloaded) is ready to use."
|
|
fi
|
|
else
|
|
mv linux-minetest-kit "$GOT_NAME"
|
|
code=$?
|
|
printf "* mv 'linux-minetest-kit' '`realpath $GOT_NAME`'..."
|
|
if [ $code -ne 0 ]; then exit $code; fi
|
|
MASTER_PATH="`realpath $GOT_NAME`"
|
|
echo "'$MASTER_PATH' (GOT_NAME newly downloaded and renamed to that) is ready to use."
|
|
fi
|
|
fi
|
|
|
|
|
|
# if [ -z "$GOT_VERSION" ]; then
|
|
# echo "Error: GOT_VERSION is blank."
|
|
# exit 1
|
|
# fi
|
|
|
|
if [ -z "$MASTER_PATH" ]; then
|
|
echo "Error: MASTER_PATH was not set (This path of logic is incomplete)."
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -f "$MASTER_PATH/release.txt" ]; then
|
|
echo "Error: MASTER_PATH $MASTER_PATH doesn't contain release.txt"
|
|
exit 1
|
|
fi
|
|
MASTER_VERSION="`cat $MASTER_PATH/release.txt`"
|
|
|
|
VERSION="$MASTER_VERSION"
|
|
|
|
|
|
# VERSION="$GOT_VERSION"
|
|
BG_VERSIONS=$HOME/bucket_game-versions
|
|
mkdir -p "$BG_VERSIONS"
|
|
|
|
|
|
if [ -z "$VERSION" ]; then
|
|
echo
|
|
echo "error: cat release.txt in $MASTER_PATH did not produce a version."
|
|
echo
|
|
exit 1
|
|
fi
|
|
echo "linux-minetest-kit VERSION=$VERSION"
|
|
cat <<END
|
|
|
|
# build via:
|
|
cd "$MASTER_PATH"
|
|
mtcompile-libraries.sh build
|
|
# or to give the program out (to do the later step and use the --makeprod option for creating a binary that will run on computers with different configurations), instead run: env DOBOOTSTRAP=1 ./mtcompile-libraries.sh build
|
|
perl mtcompile-program.pl build --finetest --client
|
|
# ^ based on MoNTE48's protocol-detecting client
|
|
# or: perl mtcompile-program.pl build --classic --client
|
|
# ^ minetest.org MT6
|
|
# or: perl mtcompile-program.pl build --trolltest --client
|
|
# ^ based on MT5 client
|
|
END
|
|
echo
|
|
echo "Checking destination..."
|
|
DST_MT="$HOME/minetest" # should be a symlink to the latest version such as ~/minetest-220509
|
|
DST_DST_MT="`readlink $DST_MT`"
|
|
if [ -z "$DST_DST_MT" ]; then
|
|
echo "DST_MT=$DST_MT"
|
|
else
|
|
echo "DST_MT=$DST_MT -> $DST_DST_MT"
|
|
fi
|
|
|
|
echo
|
|
|
|
echo "Processing bucket_game..."
|
|
|
|
BG_VERSION=$VERSION
|
|
|
|
cd $MASTER_PATH/mtsrc/game
|
|
code=$?
|
|
if [ $code -ne 0 ]; then
|
|
exit $code
|
|
fi
|
|
DST_BG_ARCHIVE=$BG_VERSIONS/bucket_game-$VERSION.tgz
|
|
if [ ! -f "$DST_BG_ARCHIVE" ]; then cp bucket_game.tgz "$DST_BG_ARCHIVE"; fi
|
|
cd $BG_VERSIONS/
|
|
SRC_GAME_NAME=bucket_game-$VERSION
|
|
SRC_GAME_PATH=$BG_VERSIONS/$SRC_GAME_NAME
|
|
if [ ! -d "$SRC_GAME_PATH" ]; then
|
|
tar xfv "$DST_BG_ARCHIVE"
|
|
mv bucket_game "$SRC_GAME_PATH"
|
|
else
|
|
echo "* using existing '$SRC_GAME_PATH' (not extracting '$DST_BG_ARCHIVE')"
|
|
fi
|
|
BG_VERSION=$VERSION
|
|
|
|
|
|
if [ -f "$SRC_GAME_PATH/release.txt" ]; then BG_VERSION=`cat "$SRC_GAME_PATH/release.txt"`; fi
|
|
if [ "$BG_VERSION" != "$VERSION" ]; then
|
|
echo "Warning: The bucket_game is version $BG_VERSION but the linux-minetest-kit is version $VERSION. Renaming..."
|
|
OLD_DST_BG_ARCHIVE="$DST_BG_ARCHIVE"
|
|
DST_BG_ARCHIVE=$BG_VERSIONS/bucket_game-$BG_VERSION.tgz
|
|
echo "mv '$OLD_DST_BG_ARCHIVE' '$DST_BG_ARCHIVE'"
|
|
mv "$OLD_DST_BG_ARCHIVE" "$DST_BG_ARCHIVE"
|
|
TMP_SRC_GAME_PATH="$SRC_GAME_PATH"
|
|
SRC_GAME_NAME=bucket_game-$BG_VERSION
|
|
SRC_GAME_PATH=$BG_VERSIONS/$SRC_GAME_NAME
|
|
if [ -d "$SRC_GAME_PATH" ]; then
|
|
echo "Warning: $SRC_GAME_PATH already exists, so $TMP_SRC_GAME_PATH will be removed."
|
|
rm -Rf "$TMP_SRC_GAME_PATH"
|
|
else
|
|
echo "mv '$TMP_SRC_GAME_PATH' '$SRC_GAME_PATH'"
|
|
mv "$TMP_SRC_GAME_PATH" "$SRC_GAME_PATH"
|
|
code=$?
|
|
if [ $code -ne 0 ]; then exit $code; fi
|
|
fi
|
|
fi
|
|
echo "OK"
|
|
echo
|
|
echo "'$SRC_GAME_PATH' is ready to use such as via:"
|
|
# RM_DST_BG_PREFIX=" "
|
|
# if [ ! -d "$DST_MT/games/bucket_game" ]; then
|
|
# RM_DST_BG_PREFIX="# (doesn't exist so not necessary) "
|
|
# fi
|
|
# echo "$RM_DST_BG_PREFIX rm -Rf $DST_MT/games/bucket_game"
|
|
echo "rsync -rt --delete $SRC_GAME_PATH/ $DST_MT/games/bucket_game"
|
|
if [ -d "$DST_MT/games/bucket_game" ]; then
|
|
DST_BG_VERSION="`cat $DST_MT/games/bucket_game/version.txt`"
|
|
# ^ Poikilos-style version writeup with patch names
|
|
if [ -z "$DST_BG_VERSION" ]; then
|
|
DST_BG_VERSION="`cat $DST_MT/games/bucket_game/release.txt`"
|
|
# ^ new style suggested by Poikilos and implemented by OldCoder
|
|
fi
|
|
if [ -z "$DST_BG_VERSION" ]; then
|
|
echo "^ BE CAREFUL: The version is not known, so make a backup before doing this command!"
|
|
elif [ "x$DST_BG_VERSION" != "x$BG_VERSION" ]; then
|
|
echo "^ BEFORE PROCEEDING: The source version is $BG_VERSION but the destination version is '$DST_BG_VERSION', so make a backup before doing this command!"
|
|
fi
|
|
fi
|
|
|
|
echo
|
|
|