BUILD_CONFIG="release" fail() { echo "$1" 1>&2 exit 1 } BUILD_ROOT=$PWD/build SOURCE_ROOT=$PWD BUILD_FOLDER=$BUILD_ROOT/build-$BUILD_CONFIG DEPLOY_FOLDER=$BUILD_ROOT/deploy-$BUILD_CONFIG INSTALLER_FOLDER=$BUILD_ROOT/installer-$BUILD_CONFIG LINUXDEPLOY=linuxdeploy-$(uname -m).AppImage if [ -n "$CI_VERSION" ]; then VERSION=$CI_VERSION else VERSION=`cat $SOURCE_ROOT/app/version.txt` fi command -v qmake6 >/dev/null 2>&1 || fail "Unable to find 'qmake6' in your PATH!" command -v $LINUXDEPLOY >/dev/null 2>&1 || fail "Unable to find '$LINUXDEPLOY' in your PATH!" echo Cleaning output directories rm -rf $BUILD_FOLDER rm -rf $DEPLOY_FOLDER rm -rf $INSTALLER_FOLDER mkdir $BUILD_ROOT mkdir $BUILD_FOLDER mkdir $DEPLOY_FOLDER mkdir $INSTALLER_FOLDER echo Configuring the project pushd $BUILD_FOLDER qmake6 $SOURCE_ROOT/moonlight-qt.pro PREFIX=$DEPLOY_FOLDER/usr DEFINES+=APP_IMAGE || fail "Qmake failed!" popd echo Compiling Moonlight in $BUILD_CONFIG configuration pushd $BUILD_FOLDER make -j$(nproc) $(echo "$BUILD_CONFIG" | tr '[:upper:]' '[:lower:]') || fail "Make failed!" popd echo Deploying to staging directory pushd $BUILD_FOLDER make install || fail "Make install failed!" popd export QML_SOURCES_PATHS=$SOURCE_ROOT/app/gui export QMAKE=qmake6 export EXTRA_QT_MODULES="waylandclient;eglfsdeviceintegration;eglfskmssupport" export EXTRA_PLATFORM_PLUGINS="libqwayland-egl.so;libqwayland-generic.so;libqeglfs.so;libqlinuxfb.so" echo Creating AppImage pushd $INSTALLER_FOLDER VERSION=$VERSION $LINUXDEPLOY --appdir $DEPLOY_FOLDER \ --library=/usr/local/lib/libSDL3.so.0 \ --plugin qt --output appimage || fail "linuxdeploy failed!" popd echo Build successful