Simplify linux build script a bit

This commit is contained in:
Deve 2021-03-20 00:35:40 +01:00
parent 6631dbdfb9
commit 3a6038fc67

View File

@ -49,7 +49,7 @@ export DIRNAME="$(dirname "$(readlink -f "$0")")"
######################## CONFIG ######################## ######################## CONFIG ########################
export STK_VERSION="git20200711" export STK_VERSION="git`date +%Y%m%d`"
export THREADS_NUMBER=`nproc` export THREADS_NUMBER=`nproc`
export SCHROOT_32BIT_NAME="chroot-jessie32" export SCHROOT_32BIT_NAME="chroot-jessie32"
export SCHROOT_64BIT_NAME="chroot-jessie64" export SCHROOT_64BIT_NAME="chroot-jessie64"
@ -63,10 +63,8 @@ export BLACKLIST_LIBS="ld-linux libbsd.so libc.so libdl.so libdrm libexpat \
libGL libgl libm.so libmvec.so libpthread libresolv \ libGL libgl libm.so libmvec.so libpthread libresolv \
librt.so libX libxcb libxshm" librt.so libX libxcb libxshm"
export BUILD_DIR_32BIT="build-linux-32bit" export BUILD_DIR="build-linux"
export BUILD_DIR_64BIT="build-linux-64bit" export DEPENDENCIES_DIR="$STKCODE_DIR/dependencies-linux"
export DEPENDENCIES_DIR_32BIT="$STKCODE_DIR/dependencies-linux-32bit"
export DEPENDENCIES_DIR_64BIT="$STKCODE_DIR/dependencies-linux-64bit"
export STK_INSTALL_DIR="$STKCODE_DIR/build-linux-install" export STK_INSTALL_DIR="$STKCODE_DIR/build-linux-install"
# Use it if you build STK with Debian Jessie # Use it if you build STK with Debian Jessie
@ -96,7 +94,6 @@ write_run_game_sh()
echo '#!/bin/sh' > "$FILE" echo '#!/bin/sh' > "$FILE"
echo '' >> "$FILE" echo '' >> "$FILE"
echo 'export DIRNAME="$(dirname "$(readlink -f "$0")")"' >> "$FILE" echo 'export DIRNAME="$(dirname "$(readlink -f "$0")")"' >> "$FILE"
echo 'export MACHINE_TYPE=`uname -m`' >> "$FILE"
echo 'export SYSTEM_LD_LIBRARY_PATH="$LD_LIBRARY_PATH"' >> "$FILE" echo 'export SYSTEM_LD_LIBRARY_PATH="$LD_LIBRARY_PATH"' >> "$FILE"
echo '' >> "$FILE" echo '' >> "$FILE"
echo 'export SUPERTUXKART_DATADIR="$DIRNAME"' >> "$FILE" echo 'export SUPERTUXKART_DATADIR="$DIRNAME"' >> "$FILE"
@ -104,15 +101,9 @@ write_run_game_sh()
echo '' >> "$FILE" echo '' >> "$FILE"
echo 'cd "$DIRNAME"' >> "$FILE" echo 'cd "$DIRNAME"' >> "$FILE"
echo '' >> "$FILE" echo '' >> "$FILE"
echo 'if [ $MACHINE_TYPE = "x86_64" ]; then' >> "$FILE" echo 'export LD_LIBRARY_PATH="$DIRNAME/lib:$LD_LIBRARY_PATH"' >> "$FILE"
echo ' echo "Running 64-bit version..."' >> "$FILE" echo '"$DIRNAME/bin/supertuxkart" "$@"' >> "$FILE"
echo ' export LD_LIBRARY_PATH="$DIRNAME/lib-64:$LD_LIBRARY_PATH"' >> "$FILE" echo '' >> "$FILE"
echo ' "$DIRNAME/bin-64/supertuxkart" "$@"' >> "$FILE"
echo 'else' >> "$FILE"
echo ' echo "Running 32-bit version..."' >> "$FILE"
echo ' export LD_LIBRARY_PATH="$DIRNAME/lib:$LD_LIBRARY_PATH"' >> "$FILE"
echo ' "$DIRNAME/bin/supertuxkart" "$@"' >> "$FILE"
echo 'fi' >> "$FILE"
} }
build_stk() build_stk()
@ -456,9 +447,9 @@ copy_libraries()
return return
fi fi
export DEPENDENCIES_DIR=$1 export DEPENDENCIES_DIR="$1"
export BUILD_DIR=$2 export BUILD_DIR="$2"
export LIB_INSTALL_DIR=$3 export LIB_INSTALL_DIR="$3"
if [ -z "$DEPENDENCIES_DIR" ] || [ -z "$BUILD_DIR" ] || [ -z "$LIB_INSTALL_DIR" ]; then if [ -z "$DEPENDENCIES_DIR" ] || [ -z "$BUILD_DIR" ] || [ -z "$LIB_INSTALL_DIR" ]; then
return return
@ -496,24 +487,15 @@ test_package()
fi fi
PACKAGE_DIR="$1" PACKAGE_DIR="$1"
BINARY_ARCH="$2"
if [ `objdump -a "$PACKAGE_DIR/bin/supertuxkart" | grep -c "elf32-i386"` -eq 0 ]; then if [ `objdump -a "$PACKAGE_DIR/bin/supertuxkart" | grep -c "$BINARY_ARCH"` -eq 0 ]; then
echo "Error: bin/supertuxkart is not 32-bit" echo "Error: bin/supertuxkart is not $BINARY_ARCH"
exit 1 exit 1
fi fi
if [ `objdump -a "$PACKAGE_DIR/bin/supertuxkart-editor" | grep -c "elf32-i386"` -eq 0 ]; then if [ `objdump -a "$PACKAGE_DIR/bin/supertuxkart-editor" | grep -c "$BINARY_ARCH"` -eq 0 ]; then
echo "Error: bin/supertuxkart-editor is not 32-bit" echo "Error: bin/supertuxkart-editor is not $BINARY_ARCH"
exit 1
fi
if [ `objdump -a "$PACKAGE_DIR/bin-64/supertuxkart" | grep -c "elf64-x86-64"` -eq 0 ]; then
echo "Error: bin-64/supertuxkart is not 64-bit"
exit 1
fi
if [ `objdump -a "$PACKAGE_DIR/bin-64/supertuxkart-editor" | grep -c "elf64-x86-64"` -eq 0 ]; then
echo "Error: bin-64/supertuxkart-editor is not 64-bit"
exit 1 exit 1
fi fi
@ -527,43 +509,91 @@ test_package()
exit 1 exit 1
fi fi
if [ `LD_LIBRARY_PATH="$PACKAGE_DIR/lib-64" ldd "$PACKAGE_DIR/bin-64/supertuxkart" | grep -c "not found"` -gt 0 ]; then
echo "Error: bin-64/supertuxkart has some missing libraries"
exit 1
fi
if [ `ldd "$PACKAGE_DIR/bin-64/supertuxkart-editor" | grep -c "not found"` -gt 0 ]; then
echo "Error: bin-64/supertuxkart-editor has some missing libraries"
exit 1
fi
LD_LIBRARY_PATH="$PACKAGE_DIR/lib" "$PACKAGE_DIR/bin/supertuxkart" --version LD_LIBRARY_PATH="$PACKAGE_DIR/lib" "$PACKAGE_DIR/bin/supertuxkart" --version
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo "Error: Couldn't start bin/supertuxkart" echo "Error: Couldn't start bin/supertuxkart"
exit 1 exit 1
fi fi
}
create_package()
{
SCHROOT_NAME="$1"
ARCH="$2"
BINARY_ARCH="$3"
LD_LIBRARY_PATH="$PACKAGE_DIR/lib-64" "$PACKAGE_DIR/bin-64/supertuxkart" --version echo "Building $ARCH version..."
if [ $? -ne 0 ]; then schroot -c $SCHROOT_NAME -- "$0" build_stk "$DEPENDENCIES_DIR-$ARCH" "$BUILD_DIR-$ARCH" "-DDEBUG_SYMBOLS=1"
echo "Error: Couldn't start bin-64/supertuxkart"
if [ ! -f "$STKCODE_DIR/$BUILD_DIR-$ARCH/bin/supertuxkart" ]; then
echo "Couldn't build $ARCH version."
exit 1 exit 1
fi fi
echo "Prepare package..."
STK_PACKAGE_DIR="$STK_INSTALL_DIR/SuperTuxKart-$STK_VERSION-linux-$ARCH"
if [ -f "$STK_PACKAGE_DIR" ]; then
rm -rf "$STK_PACKAGE_DIR"
fi
mkdir -p "$STK_PACKAGE_DIR"
mkdir -p "$STK_PACKAGE_DIR/bin"
mkdir -p "$STK_PACKAGE_DIR/lib"
schroot -c $SCHROOT_NAME -- "$0" copy_libraries "$DEPENDENCIES_DIR-$ARCH" "$BUILD_DIR-$ARCH" "$STK_PACKAGE_DIR/lib"
find "$STK_PACKAGE_DIR/lib" -type f -exec strip -s {} \;
mv "$STK_PACKAGE_DIR/lib/libgcc_s.so.1" "$STK_PACKAGE_DIR/lib/libgcc_s.so.1-orig"
mv "$STK_PACKAGE_DIR/lib/libstdc++.so.6" "$STK_PACKAGE_DIR/lib/libstdc++.so.6-orig"
write_run_game_sh "$STK_PACKAGE_DIR"
cp "$STKCODE_DIR/$BUILD_DIR-$ARCH/bin/supertuxkart" "$STK_INSTALL_DIR/supertuxkart-$STK_VERSION-linux-$ARCH-symbols"
cp "$STKEDITOR_DIR/$BUILD_DIR-$ARCH/bin/supertuxkart-editor" "$STK_INSTALL_DIR/supertuxkart-editor-$STK_VERSION-linux-$ARCH-symbols"
cp -a "$STKCODE_DIR/$BUILD_DIR-$ARCH/bin/supertuxkart" "$STK_PACKAGE_DIR/bin/"
cp -a "$STKEDITOR_DIR/$BUILD_DIR-$ARCH/bin/supertuxkart-editor" "$STK_PACKAGE_DIR/bin/"
cp -a "$STKCODE_DIR/data/." "$STK_PACKAGE_DIR/data"
cp -a "$STKASSETS_DIR/editor" "$STK_PACKAGE_DIR/data/"
cp -a "$STKASSETS_DIR/karts" "$STK_PACKAGE_DIR/data/"
cp -a "$STKASSETS_DIR/library" "$STK_PACKAGE_DIR/data/"
cp -a "$STKASSETS_DIR/models" "$STK_PACKAGE_DIR/data/"
cp -a "$STKASSETS_DIR/music" "$STK_PACKAGE_DIR/data/"
cp -a "$STKASSETS_DIR/sfx" "$STK_PACKAGE_DIR/data/"
cp -a "$STKASSETS_DIR/textures" "$STK_PACKAGE_DIR/data/"
cp -a "$STKASSETS_DIR/tracks" "$STK_PACKAGE_DIR/data/"
cp -a "$STKASSETS_DIR/licenses.txt" "$STK_PACKAGE_DIR/data/"
strip --strip-debug "$STK_PACKAGE_DIR/bin/supertuxkart"
strip --strip-debug "$STK_PACKAGE_DIR/bin/supertuxkart-editor"
chmod a+rwx "$STK_PACKAGE_DIR" -R
find "$STK_PACKAGE_DIR" -type f -exec chmod a-x {} \;
find "$STK_PACKAGE_DIR/bin" -type f -exec chmod a+x {} \;
chmod a+x "$STK_PACKAGE_DIR/run_game.sh"
test_package "$STK_PACKAGE_DIR" "$BINARY_ARCH"
# Compress package
echo "Compress package..."
cd "$STK_INSTALL_DIR"
tar cf - "SuperTuxKart-$STK_VERSION-linux-$ARCH" | xz -z -e -f - > "SuperTuxKart-$STK_VERSION-linux-$ARCH.tar.xz"
cd -
} }
# Handle clean command # Handle clean command
if [ ! -z "$1" ] && [ "$1" = "clean" ]; then if [ ! -z "$1" ] && [ "$1" = "clean" ]; then
rm -rf "$DEPENDENCIES_DIR_32BIT" rm -rf "$DEPENDENCIES_DIR-"*
rm -rf "$DEPENDENCIES_DIR_64BIT" rm -rf "$STKCODE_DIR/$BUILD_DIR-"*
rm -rf "$STKCODE_DIR/$BUILD_DIR_32BIT" rm -rf "$STKEDITOR_DIR/$BUILD_DIR-"*
rm -rf "$STKCODE_DIR/$BUILD_DIR_64BIT"
rm -rf "$STKCODE_DIR/$BUILD_DIR_32BIT-symbols"
rm -rf "$STKCODE_DIR/$BUILD_DIR_64BIT-symbols"
rm -rf "$STKEDITOR_DIR/$BUILD_DIR_32BIT"
rm -rf "$STKEDITOR_DIR/$BUILD_DIR_64BIT"
rm -rf "$STKEDITOR_DIR/$BUILD_DIR_32BIT-symbols"
rm -rf "$STKEDITOR_DIR/$BUILD_DIR_64BIT-symbols"
rm -rf "$STK_INSTALL_DIR" rm -rf "$STK_INSTALL_DIR"
exit 0 exit 0
fi fi
@ -581,106 +611,8 @@ if [ ! -z "$1 " ] && [ "$1" = "copy_libraries" ]; then
fi fi
# Building STK # Building STK
echo "Building 32-bit version..."
schroot -c $SCHROOT_32BIT_NAME -- "$0" build_stk "$DEPENDENCIES_DIR_32BIT" "$BUILD_DIR_32BIT" create_package "$SCHROOT_32BIT_NAME" "32bit" "elf32-i386"
create_package "$SCHROOT_64BIT_NAME" "64bit" "elf64-x86-64"
if [ ! -f "$STKCODE_DIR/$BUILD_DIR_32BIT/bin/supertuxkart" ]; then
echo "Couldn't build 32-bit version."
exit 1
fi
echo "Building 64-bit version..."
schroot -c $SCHROOT_64BIT_NAME -- "$0" build_stk "$DEPENDENCIES_DIR_64BIT" "$BUILD_DIR_64BIT"
if [ ! -f "$STKCODE_DIR/$BUILD_DIR_64BIT/bin/supertuxkart" ]; then
echo "Couldn't build 64-bit version."
exit 1
fi
echo "Building 32-bit version with symbols..."
schroot -c $SCHROOT_32BIT_NAME -- "$0" build_stk "$DEPENDENCIES_DIR_32BIT" "$BUILD_DIR_32BIT-symbols" "-DDEBUG_SYMBOLS=1"
if [ ! -f "$STKCODE_DIR/$BUILD_DIR_32BIT/bin/supertuxkart" ]; then
echo "Couldn't build 32-bit version with symbols."
exit 1
fi
echo "Building 64-bit version with symbols..."
schroot -c $SCHROOT_64BIT_NAME -- "$0" build_stk "$DEPENDENCIES_DIR_64BIT" "$BUILD_DIR_64BIT-symbols" "-DDEBUG_SYMBOLS=1"
if [ ! -f "$STKCODE_DIR/$BUILD_DIR_64BIT/bin/supertuxkart" ]; then
echo "Couldn't build 64-bit version with symbols."
exit 1
fi
# Making package
echo "Prepare package..."
STK_PACKAGE_DIR="$STK_INSTALL_DIR/SuperTuxKart-$STK_VERSION-linux"
if [ -f "$STK_PACKAGE_DIR" ]; then
rm -rf "$STK_PACKAGE_DIR"
fi
mkdir -p "$STK_PACKAGE_DIR"
mkdir -p "$STK_PACKAGE_DIR/bin"
mkdir -p "$STK_PACKAGE_DIR/bin-64"
mkdir -p "$STK_PACKAGE_DIR/lib"
mkdir -p "$STK_PACKAGE_DIR/lib-64"
schroot -c $SCHROOT_32BIT_NAME -- "$0" copy_libraries "$DEPENDENCIES_DIR_32BIT" "$BUILD_DIR_32BIT" "$STK_PACKAGE_DIR/lib"
schroot -c $SCHROOT_64BIT_NAME -- "$0" copy_libraries "$DEPENDENCIES_DIR_64BIT" "$BUILD_DIR_64BIT" "$STK_PACKAGE_DIR/lib-64"
find "$STK_PACKAGE_DIR/lib" -type f -exec strip -s {} \;
find "$STK_PACKAGE_DIR/lib-64" -type f -exec strip -s {} \;
mv "$STK_PACKAGE_DIR/lib/libgcc_s.so.1" "$STK_PACKAGE_DIR/lib/libgcc_s.so.1-orig"
mv "$STK_PACKAGE_DIR/lib-64/libgcc_s.so.1" "$STK_PACKAGE_DIR/lib-64/libgcc_s.so.1-orig"
mv "$STK_PACKAGE_DIR/lib/libstdc++.so.6" "$STK_PACKAGE_DIR/lib/libstdc++.so.6-orig"
mv "$STK_PACKAGE_DIR/lib-64/libstdc++.so.6" "$STK_PACKAGE_DIR/lib-64/libstdc++.so.6-orig"
write_run_game_sh "$STK_PACKAGE_DIR"
cp "$STKCODE_DIR/$BUILD_DIR_32BIT-symbols/bin/supertuxkart" "$STK_INSTALL_DIR/supertuxkart-$STK_VERSION-linux32-symbols"
cp "$STKCODE_DIR/$BUILD_DIR_64BIT-symbols/bin/supertuxkart" "$STK_INSTALL_DIR/supertuxkart-$STK_VERSION-linux64-symbols"
cp "$STKEDITOR_DIR/$BUILD_DIR_32BIT-symbols/bin/supertuxkart-editor" "$STK_INSTALL_DIR/supertuxkart-editor-$STK_VERSION-linux32-symbols"
cp "$STKEDITOR_DIR/$BUILD_DIR_64BIT-symbols/bin/supertuxkart-editor" "$STK_INSTALL_DIR/supertuxkart-editor-$STK_VERSION-linux64-symbols"
cp -a "$STKCODE_DIR/$BUILD_DIR_32BIT/bin/supertuxkart" "$STK_PACKAGE_DIR/bin/"
cp -a "$STKCODE_DIR/$BUILD_DIR_64BIT/bin/supertuxkart" "$STK_PACKAGE_DIR/bin-64/"
cp -a "$STKEDITOR_DIR/$BUILD_DIR_32BIT/bin/supertuxkart-editor" "$STK_PACKAGE_DIR/bin/"
cp -a "$STKEDITOR_DIR/$BUILD_DIR_64BIT/bin/supertuxkart-editor" "$STK_PACKAGE_DIR/bin-64/"
cp -a "$STKCODE_DIR/data/." "$STK_PACKAGE_DIR/data"
cp -a "$STKASSETS_DIR/editor" "$STK_PACKAGE_DIR/data/"
cp -a "$STKASSETS_DIR/karts" "$STK_PACKAGE_DIR/data/"
cp -a "$STKASSETS_DIR/library" "$STK_PACKAGE_DIR/data/"
cp -a "$STKASSETS_DIR/models" "$STK_PACKAGE_DIR/data/"
cp -a "$STKASSETS_DIR/music" "$STK_PACKAGE_DIR/data/"
cp -a "$STKASSETS_DIR/sfx" "$STK_PACKAGE_DIR/data/"
cp -a "$STKASSETS_DIR/textures" "$STK_PACKAGE_DIR/data/"
cp -a "$STKASSETS_DIR/tracks" "$STK_PACKAGE_DIR/data/"
cp -a "$STKASSETS_DIR/licenses.txt" "$STK_PACKAGE_DIR/data/"
chmod a+rwx "$STK_PACKAGE_DIR" -R
find "$STK_PACKAGE_DIR" -type f -exec chmod a-x {} \;
find "$STK_PACKAGE_DIR/bin" -type f -exec chmod a+x {} \;
find "$STK_PACKAGE_DIR/bin-64" -type f -exec chmod a+x {} \;
chmod a+x "$STK_PACKAGE_DIR/run_game.sh"
test_package "$STK_PACKAGE_DIR"
# Compress package
echo "Compress package..."
cd "$STK_INSTALL_DIR"
tar cf - "SuperTuxKart-$STK_VERSION-linux" | xz -z -e -f - > "SuperTuxKart-$STK_VERSION-linux.tar.xz"
cd -
echo "Success." echo "Success."