mirror of
https://github.com/Swordfish90/cool-retro-term.git
synced 2026-02-08 00:32:27 +00:00
84 lines
2.6 KiB
Bash
Executable File
84 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
set -x
|
|
|
|
REPO_ROOT="$(readlink -f "$(dirname "$(dirname "$0")")")"
|
|
OLD_CWD="$(readlink -f .)"
|
|
BUILD_DIR="$REPO_ROOT/build/appimage"
|
|
TOOLS_DIR="$BUILD_DIR/tools"
|
|
VERSION="$(git -C "$REPO_ROOT" describe --tags --always --dirty=-dirty 2>/dev/null || true)"
|
|
if [ -z "$VERSION" ]; then
|
|
VERSION="unknown"
|
|
fi
|
|
|
|
if ! command -v qmake >/dev/null; then
|
|
echo "qmake not found in PATH." >&2
|
|
exit 1
|
|
fi
|
|
QTDIR="$(qmake -query QT_INSTALL_PREFIX)"
|
|
QT_INSTALL_QML="$(qmake -query QT_INSTALL_QML)"
|
|
|
|
APPDIR="$BUILD_DIR/AppDir"
|
|
|
|
mkdir -p "$BUILD_DIR"
|
|
rm -rf "$APPDIR"
|
|
pushd "$BUILD_DIR"
|
|
|
|
qmake "$REPO_ROOT/cool-retro-term.pro"
|
|
make -j"$(nproc)"
|
|
|
|
# Install targets from subprojects (the top-level install only installs the desktop file).
|
|
make -C app install INSTALL_ROOT="$APPDIR"
|
|
make -C qmltermwidget install INSTALL_ROOT="$APPDIR"
|
|
make install INSTALL_ROOT="$APPDIR"
|
|
|
|
popd
|
|
|
|
# Relocate QMLTermWidget into the standard AppDir QML import path.
|
|
QML_ROOT="$APPDIR$QT_INSTALL_QML"
|
|
if [ -d "$QML_ROOT" ]; then
|
|
mkdir -p "$APPDIR/usr/qml"
|
|
rsync -a "$QML_ROOT/" "$APPDIR/usr/qml/"
|
|
rm -rf "$QML_ROOT"
|
|
QML_PARENT="$(dirname "$QML_ROOT")"
|
|
while [ "$QML_PARENT" != "$APPDIR" ] && rmdir "$QML_PARENT" 2>/dev/null; do
|
|
QML_PARENT="$(dirname "$QML_PARENT")"
|
|
done
|
|
fi
|
|
|
|
|
|
# Build AppImage using linuxdeploy and linuxdeploy-plugin-qt.
|
|
mkdir -p "$TOOLS_DIR"
|
|
LINUXDEPLOY="$TOOLS_DIR/linuxdeploy-x86_64.AppImage"
|
|
LINUXDEPLOY_QT="$TOOLS_DIR/linuxdeploy-plugin-qt-x86_64.AppImage"
|
|
if [ ! -x "$LINUXDEPLOY" ]; then
|
|
wget -c -O "$LINUXDEPLOY" https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage
|
|
chmod +x "$LINUXDEPLOY"
|
|
fi
|
|
if [ ! -x "$LINUXDEPLOY_QT" ]; then
|
|
wget -c -O "$LINUXDEPLOY_QT" https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage
|
|
chmod +x "$LINUXDEPLOY_QT"
|
|
fi
|
|
|
|
export QML_SOURCES_PATHS="$REPO_ROOT/app"
|
|
|
|
pushd "$BUILD_DIR"
|
|
|
|
export EXTRA_PLATFORM_PLUGINS="libqwayland.so;"
|
|
export EXTRA_QT_MODULES="sql;waylandcompositor;waylandclient"
|
|
export DEPLOY_PLATFORM_THEMES=true
|
|
export LINUXDEPLOY_EXCLUDED_LIBRARIES="libmysqlclient.so;libqsqlmimer.so;libqsqlmysql.so;libqsqlodbc.so;libqsqlpsql.so;libqsqloci.so;libqsqlibase.so"
|
|
|
|
"$LINUXDEPLOY" \
|
|
--appdir "$APPDIR" \
|
|
-e "$APPDIR/usr/bin/cool-retro-term" \
|
|
-i "$REPO_ROOT/app/icons/256x256/cool-retro-term.png" \
|
|
-d "$REPO_ROOT/cool-retro-term.desktop" \
|
|
--plugin qt \
|
|
--output appimage
|
|
|
|
APPIMAGE_PATH="$(ls -1 ./*.AppImage | head -n 1)"
|
|
APPIMAGE_OUT="cool-retro-term-${VERSION}.AppImage"
|
|
mv "$APPIMAGE_PATH" "$OLD_CWD/$APPIMAGE_OUT"
|
|
popd
|