add scripts to build aarch64/x86_64 appimages

This commit is contained in:
a-bad-dev 2026-04-19 23:00:42 -03:00 committed by GitHub
commit 63b74b0879
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 328 additions and 0 deletions

164
build-aarch64.sh Normal file
View file

@ -0,0 +1,164 @@
#!/bin/bash -e
# this script is intended to be run on debian 13 aarch64
VERSION="5.15.2"
BOLD="\x1b[1m"
RED="\x1b[31m"
GREEN="\x1b[32m"
RESET="\x1b[0m"
# make sure we are root
if [ "$(id -u)" != "0" ]; then
echo -e "${BOLD}${RED}This script must be run as root!${RESET}"
exit 1
fi
# install deps
echo -e "${BOLD}Downloading deps...${RESET}"
apt-get install -y --no-install-recommends \
git \
g++ \
make \
ninja-build \
libc6-dev \
cmake \
curl \
libpng-dev \
libjpeg-dev \
libxi-dev \
libgl1-mesa-dev \
libsqlite3-dev \
libogg-dev \
libvorbis-dev \
libopenal-dev \
libcurl4-openssl-dev \
libfreetype6-dev \
zlib1g-dev \
libgmp-dev \
libsdl2-dev \
libzstd-dev \
libleveldb-dev \
gettext \
desktop-file-utils \
ca-certificates \
file
# download luajit and luanti source code
echo -e "${BOLD}Downloading LuaJIT and Luanti source code...${RESET}"
git clone --depth=1 https://github.com/LuaJIT/LuaJIT.git luajit
curl -Lo luanti.zip https://github.com/luanti-org/luanti/archive/refs/tags/${VERSION}.zip
unzip luanti.zip
mv luanti-${VERSION} luanti/
# create patch files
cat > patch-1.patch <<'EOF'
3713c3713
< m_repeat_place_time = g_settings->getFloat("repeat_place_time", 0.16f, 2.0f);
---
> m_repeat_place_time = g_settings->getFloat("repeat_place_time", 0.001f, 2.0f);
EOF
cat > patch-2.patch <<'EOF'
151c151
< repeat_place_time (Place repetition interval) float 0.25 0.16 2.0
---
> repeat_place_time (Place repetition interval) float 0.25 0.001 2.0
EOF
# apply patches
patch luanti/src/client/game.cpp patch-1.patch
patch luanti/builtin/settingtypes.txt patch-2.patch
rm patch-[1-2].patch
# compile luajit
echo -e "${BOLD}Compiling LuaJIT...${RESET}"
cd luajit
make amalg -j$(nproc)
cd ..
# prepare to compile luanti
cd luanti
mkdir -p build
cd build
echo -e "${BOLD}Downloading AppImageTool${RESET}"
curl -Lo appimagetool https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-aarch64.AppImage
chmod +x appimagetool
# compile luanti
echo -e "${BOLD}Compiling Luanti...${RESET}"
cmake .. -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=AppDir/usr \
-DBUILD_UNITTESTS=OFF \
-DENABLE_SYSTEM_JSONCPP=OFF \
-DLUA_INCLUDE_DIR=../../luajit/src/ \
-DLUA_LIBRARY=../../luajit/src/libluajit.a
# install into the AppDir folder
ninja install -j$(nproc)
# build the appimage itself
cd AppDir
echo -e "${BOLD}Building AppImage...${RESET}"
# put desktop and icon at root of AppDir
ln -sf usr/share/applications/org.luanti.luanti.desktop luanti.desktop
ln -sf usr/share/icons/hicolor/128x128/apps/luanti.png luanti.png
ln -sf luanti.png .DirIcon
# fix locales
mv usr/share/locale usr/share/luanti
cat > AppRun <<'EOF'
#!/bin/bash
APP_PATH="$(dirname "$(readlink -f "${0}")")"
export LD_LIBRARY_PATH="${APP_PATH}"/usr/lib/:"${LD_LIBRARY_PATH}"
exec "${APP_PATH}/usr/bin/luanti" "$@"
EOF
chmod +x AppRun
# bundle the libraries
INCLUDE_LIBS=(
libopenal.so.1
libSDL2-2.0.so.0
libsndio.so.7.0
libbsd.so.0
libmd.so.0
libjpeg.so.62
libpng16.so.16
libvorbisfile.so.3
libogg.so.0
libvorbis.so.0
libzstd.so.1
libsqlite3.so.0
libleveldb.so.1d
libsnappy.so.1
)
mkdir -p usr/lib/
for i in "${INCLUDE_LIBS[@]}"; do
cp /usr/lib/aarch64-linux-gnu/${i} usr/lib/
done
# finally make the appimage
cd ..
ARCH=aarch64 ./appimagetool --appimage-extract-and-run AppDir/
# move the appimage to this script's folder
mv Luanti-aarch64.AppImage ../../luanti-${VERSION}-aarch64.AppImage
# clean up
cd ../..
rm -rf luanti{,.zip}
rm -rf luajit/
# done :D
echo -e "${BOLD}${GREEN}Done!${RESET}"

164
build-x86_64.sh Normal file
View file

@ -0,0 +1,164 @@
#!/bin/bash -e
# this script is intended to be run on debian 13 x86_64
VERSION="5.15.2"
BOLD="\x1b[1m"
RED="\x1b[31m"
GREEN="\x1b[32m"
RESET="\x1b[0m"
# make sure we are root
if [ "$(id -u)" != "0" ]; then
echo -e "${BOLD}${RED}This script must be run as root!${RESET}"
exit 1
fi
# install deps
echo -e "${BOLD}Downloading deps...${RESET}"
apt-get install -y --no-install-recommends \
git \
g++ \
make \
ninja-build \
libc6-dev \
cmake \
curl \
libpng-dev \
libjpeg-dev \
libxi-dev \
libgl1-mesa-dev \
libsqlite3-dev \
libogg-dev \
libvorbis-dev \
libopenal-dev \
libcurl4-openssl-dev \
libfreetype6-dev \
zlib1g-dev \
libgmp-dev \
libsdl2-dev \
libzstd-dev \
libleveldb-dev \
gettext \
desktop-file-utils \
ca-certificates \
file
# download luajit and luanti source code
echo -e "${BOLD}Downloading LuaJIT and Luanti source code...${RESET}"
git clone --depth=1 https://github.com/LuaJIT/LuaJIT.git luajit
curl -Lo luanti.zip https://github.com/luanti-org/luanti/archive/refs/tags/${VERSION}.zip
unzip luanti.zip
mv luanti-${VERSION} luanti/
# create patch files
cat > patch-1.patch <<'EOF'
3713c3713
< m_repeat_place_time = g_settings->getFloat("repeat_place_time", 0.16f, 2.0f);
---
> m_repeat_place_time = g_settings->getFloat("repeat_place_time", 0.001f, 2.0f);
EOF
cat > patch-2.patch <<'EOF'
151c151
< repeat_place_time (Place repetition interval) float 0.25 0.16 2.0
---
> repeat_place_time (Place repetition interval) float 0.25 0.001 2.0
EOF
# apply patches
patch luanti/src/client/game.cpp patch-1.patch
patch luanti/builtin/settingtypes.txt patch-2.patch
rm patch-[1-2].patch
# compile luajit
echo -e "${BOLD}Compiling LuaJIT...${RESET}"
cd luajit
make amalg -j$(nproc)
cd ..
# prepare to compile luanti
cd luanti
mkdir -p build
cd build
echo -e "${BOLD}Downloading AppImageTool${RESET}"
curl -Lo appimagetool https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage
chmod +x appimagetool
# compile luanti
echo -e "${BOLD}Compiling Luanti...${RESET}"
cmake .. -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=AppDir/usr \
-DBUILD_UNITTESTS=OFF \
-DENABLE_SYSTEM_JSONCPP=OFF \
-DLUA_INCLUDE_DIR=../../luajit/src/ \
-DLUA_LIBRARY=../../luajit/src/libluajit.a
# install into the AppDir folder
ninja install -j$(nproc)
# build the appimage itself
cd AppDir
echo -e "${BOLD}Building AppImage...${RESET}"
# put desktop and icon at root of AppDir
ln -sf usr/share/applications/org.luanti.luanti.desktop luanti.desktop
ln -sf usr/share/icons/hicolor/128x128/apps/luanti.png luanti.png
ln -sf luanti.png .DirIcon
# fix locales
mv usr/share/locale usr/share/luanti
cat > AppRun <<'EOF'
#!/bin/bash
APP_PATH="$(dirname "$(readlink -f "${0}")")"
export LD_LIBRARY_PATH="${APP_PATH}"/usr/lib/:"${LD_LIBRARY_PATH}"
exec "${APP_PATH}/usr/bin/luanti" "$@"
EOF
chmod +x AppRun
# bundle the libraries
INCLUDE_LIBS=(
libopenal.so.1
libSDL2-2.0.so.0
libsndio.so.7.0
libbsd.so.0
libmd.so.0
libjpeg.so.62
libpng16.so.16
libvorbisfile.so.3
libogg.so.0
libvorbis.so.0
libzstd.so.1
libsqlite3.so.0
libleveldb.so.1d
libsnappy.so.1
)
mkdir -p usr/lib/
for i in "${INCLUDE_LIBS[@]}"; do
cp /usr/lib/x86_64-linux-gnu/${i} usr/lib/
done
# finally make the appimage
cd ..
ARCH=x86_64 ./appimagetool --appimage-extract-and-run AppDir/
# move the appimage to this script's folder
mv Luanti-x86_64.AppImage ../../luanti-${VERSION}-x86_64.AppImage
# clean up
cd ../..
rm -rf luanti{,.zip}
rm -rf luajit/
# done :D
echo -e "${BOLD}${GREEN}Done!${RESET}"