From fbddeb915f414b870dfdcdfb8ba5700fad43c650 Mon Sep 17 00:00:00 2001 From: The Force <2040992+TheForce172@users.noreply.github.com> Date: Mon, 18 May 2026 16:45:18 +0100 Subject: [PATCH 01/16] Enable QTFRED Nightly Fix Indent add test ability Actually enable qtfred buidling configure QTDIR environment variable fix copy paste errors and enable testing indent update cache update install qt action set qt5_dir find help missing quote disable qtfred on arm actually disable on arm install python for mac so we can get QT indent correct bash syntax try another way maybe fix more changes use platform_cmake_options dont wipe field when adding install qt dependencies build appimage enable appimage --- .github/workflows/build-nightly.yaml | 125 ++++++++++++++++----------- .github/workflows/build-test.yaml | 87 ++++++++++--------- ci/linux/configure_cmake.sh | 14 ++- ci/linux/generate_appimage.sh | 4 +- 4 files changed, 133 insertions(+), 97 deletions(-) diff --git a/.github/workflows/build-nightly.yaml b/.github/workflows/build-nightly.yaml index 0a5731a2953..999bb654df5 100644 --- a/.github/workflows/build-nightly.yaml +++ b/.github/workflows/build-nightly.yaml @@ -1,10 +1,10 @@ name: Build Nightly package -on: - push: - tags: - - 'nightly_*' - +#on: + #push: + #tags: + #- 'nightly_*' +on: [pull_request] env: QT_VERSION: 5.12.12 @@ -23,6 +23,24 @@ jobs: runs-on: ${{ matrix.os }} container: ghcr.io/scp-fs2open/linux_build:sha-71099c9 steps: + - name: Install Qt Dependencies + run: | + sudo apt-get update + sudo apt-get install -y \ + libegl1-mesa \ + libgl1-mesa-glx \ + libglib2.0-0 \ + libfontconfig1 \ + libdbus-1-3 \ + libx11-xcb1 \ + libxcb-icccm4 \ + libxcb-image0 \ + libxcb-keysyms1 \ + libxcb-randr0 \ + libxcb-render-util0 \ + libxcb-xinerama0 \ + libxcb-xkb1 \ + libxkbcommon-x11-0 - uses: actions/checkout@v1 name: Checkout with: @@ -31,14 +49,16 @@ jobs: env: CONFIGURATION: ${{ matrix.configuration }} COMPILER: gcc-9 - ENABLE_QTFRED: OFF + ENABLE_QTFRED: ON + Qt5_DIR: /qt/${{ env.QT_VERSION }}/gcc_64/lib/cmake/Qt5 + QTHELP_DIR: /qt/${{ env.QT_VERSION }}/gcc_64/libexec/qhelpgenerator run: $GITHUB_WORKSPACE/ci/linux/configure_cmake.sh - name: Compile working-directory: ./build env: CONFIGURATION: ${{ matrix.configuration }} run: | - LD_LIBRARY_PATH=$Qt5_DIR/lib:$LD_LIBRARY_PATH ninja -k 20 all + LD_LIBRARY_PATH=$Qt5_DIR/lib:$LD_LIBRARY_PATH ninja -k 20 all - name: Run Tests working-directory: ./build env: @@ -48,7 +68,9 @@ jobs: - name: Generate AppImage working-directory: ./build env: + QTDIR: Qt5_DIR CONFIGURATION: ${{ matrix.configuration }} + ENABLE_QTFRED: ON run: $GITHUB_WORKSPACE/ci/linux/generate_appimage.sh $GITHUB_WORKSPACE/build/install - name: Upload build result uses: actions/upload-artifact@v4 @@ -110,30 +132,30 @@ jobs: name: Checkout with: submodules: true - # - name: Cache Qt - # id: cache-qt-win - # uses: actions/cache@v1 - # with: - # path: ${{ github.workspace }}/../Qt - # key: ${{ runner.os }}-${{ matrix.arch }}-QtCache-${{ env.QT_VERSION }} - # - name: Install Qt (32 bit) - # uses: jurplel/install-qt-action@v2 - # if: ${{ matrix.arch == 'Win32' }} - # with: - # version: ${{ env.QT_VERSION }} - # dir: ${{ github.workspace }}/.. - # arch: win32_msvc2017 - # cached: ${{ steps.cache-qt-win.outputs.cache-hit }} - # aqtversion: ==0.8 - # - name: Install Qt (64 bit) - # uses: jurplel/install-qt-action@v2 - # if: ${{ matrix.arch == 'x64' }} - # with: - # version: ${{ env.QT_VERSION }} - # dir: ${{ github.workspace }}/.. - # arch: win64_msvc2017_64 - # cached: ${{ steps.cache-qt-win.outputs.cache-hit }} - # aqtversion: ==0.8 + - name: Cache Qt + id: cache-qt-win + uses: actions/cache@v4 + with: + path: ${{ github.workspace }}/../Qt + key: ${{ runner.os }}-${{ matrix.arch }}-QtCache-${{ env.QT_VERSION }} + - name: Install Qt (32 bit) + uses: jurplel/install-qt-action@v4 + if: ${{ matrix.arch == 'Win32' }} + with: + version: ${{ env.QT_VERSION }} + dir: ${{ github.workspace }}/.. + arch: win32_msvc2017 + cached: ${{ steps.cache-qt-win.outputs.cache-hit }} + #aqtversion: ==0.8 + - name: Install Qt (64 bit) + uses: jurplel/install-qt-action@v4 + if: ${{ matrix.arch == 'x64' }} + with: + version: ${{ env.QT_VERSION }} + dir: ${{ github.workspace }}/.. + arch: win64_msvc2017_64 + cached: ${{ steps.cache-qt-win.outputs.cache-hit }} + #aqtversion: ==0.8 - name: Prepare Vulkan SDK uses: humbletim/setup-vulkan-sdk@v1.2.1 with: @@ -153,13 +175,13 @@ jobs: if [ "$ARCHITECTURE" = "Win32" ]; then cmake -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DFSO_USE_SPEECH="ON" \ -DFSO_USE_VOICEREC="ON" -DFORCED_SIMD_INSTRUCTIONS="$SIMD" \ - -DFSO_BUILD_QTFRED=OFF -DFSO_BUILD_TESTS=ON \ + -DFSO_BUILD_QTFRED=ON -DFSO_BUILD_TESTS=ON \ -DFSO_INSTALL_DEBUG_FILES="ON" -DFSO_BUILD_WITH_VULKAN="OFF" -A "$ARCHITECTURE" \ -G "Visual Studio 17 2022" -T "v143" -DCMAKE_BUILD_TYPE=$CONFIGURATION .. else cmake -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DFSO_USE_SPEECH="ON" \ -DFSO_USE_VOICEREC="ON" -DFORCED_SIMD_INSTRUCTIONS="$SIMD" \ - -DFSO_BUILD_QTFRED=OFF -DFSO_BUILD_TESTS=ON \ + -DFSO_BUILD_QTFRED=ON -DFSO_BUILD_TESTS=ON \ -DFSO_INSTALL_DEBUG_FILES="ON" -A "$ARCHITECTURE" \ -G "Visual Studio 17 2022" -T "v143" -DCMAKE_BUILD_TYPE=$CONFIGURATION .. fi @@ -234,21 +256,24 @@ jobs: name: Mac runs-on: macos-latest steps: - # - name: Cache Qt - # id: cache-qt-mac - # uses: actions/cache@v1 - # with: - # path: ${{ github.workspace }}/../Qt - # key: ${{ runner.os }}-QtCache-${{ env.QT_VERSION }} - # - name: Install Qt - # uses: jurplel/install-qt-action@v2 - # with: - # version: ${{ env.QT_VERSION }} - # dir: ${{ github.workspace }}/.. - # cached: ${{ steps.cache-qt-mac.outputs.cache-hit }} - # setup-python: 'false' - # aqtversion: ==1.1.3 - # py7zrversion: '==0.19.*' + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.x' + - name: Cache Qt + id: cache-qt-mac + uses: actions/cache@v4 + with: + path: ${{ github.workspace }}/../Qt + key: ${{ runner.os }}-QtCache-${{ env.QT_VERSION }} + - name: Install Qt + uses: jurplel/install-qt-action@v4 + with: + version: ${{ env.QT_VERSION }} + dir: ${{ github.workspace }}/.. + setup-python: 'false' + #aqtversion: ==1.1.3 + py7zrversion: '==0.19.*' - uses: actions/checkout@v1 name: Checkout with: @@ -272,11 +297,11 @@ jobs: COMPILER: ${{ matrix.compiler }} ARCHITECTURE: ${{ matrix.arch }} JOB_CMAKE_OPTIONS: ${{ matrix.cmake_options }} - ENABLE_QTFRED: OFF + ENABLE_QTFRED: ON run: $GITHUB_WORKSPACE/ci/linux/configure_cmake.sh - name: Compile working-directory: ./build - run: LD_LIBRARY_PATH=$Qt5_DIR/lib:$LD_LIBRARY_PATH ninja all + run: LD_LIBRARY_PATH=$QT_ROOT_DIR/lib:$LD_LIBRARY_PATH ninja all - name: Run Tests working-directory: ./build env: diff --git a/.github/workflows/build-test.yaml b/.github/workflows/build-test.yaml index 99f7fc1144c..ed78bfb9e2e 100644 --- a/.github/workflows/build-test.yaml +++ b/.github/workflows/build-test.yaml @@ -31,7 +31,7 @@ jobs: env: CONFIGURATION: ${{ matrix.configuration }} COMPILER: gcc-9 - ENABLE_QTFRED: OFF + ENABLE_QTFRED: ON run: $GITHUB_WORKSPACE/ci/linux/configure_cmake.sh - name: Compile working-directory: ./build @@ -48,6 +48,7 @@ jobs: - name: Generate AppImage working-directory: ./build env: + QTDIR: Qt5_DIR CONFIGURATION: ${{ matrix.configuration }} run: $GITHUB_WORKSPACE/ci/linux/generate_appimage.sh $GITHUB_WORKSPACE/build/install - name: Upload build result @@ -108,30 +109,30 @@ jobs: [[ "${{ github.ref }}" =~ ^refs\/heads\/test\/(.*)$ ]] # Override the revision string so that the builds are named correctly echo "set(FSO_VERSION_REVISION_STR ${BASH_REMATCH[1]})" > "version_override.cmake" - # - name: Cache Qt - # id: cache-qt-win - # uses: actions/cache@v1 - # with: - # path: ${{ github.workspace }}/../Qt - # key: ${{ runner.os }}-${{ matrix.arch }}-QtCache-${{ env.QT_VERSION }} - # - name: Install Qt (32 bit) - # uses: jurplel/install-qt-action@v2 - # if: ${{ matrix.arch == 'Win32' }} - # with: - # version: ${{ env.QT_VERSION }} - # dir: ${{ github.workspace }}/.. - # arch: win32_msvc2017 - # cached: ${{ steps.cache-qt-win.outputs.cache-hit }} - # aqtversion: ==0.8 - # - name: Install Qt (64 bit) - # uses: jurplel/install-qt-action@v2 - # if: ${{ matrix.arch == 'x64' }} - # with: - # version: ${{ env.QT_VERSION }} - # dir: ${{ github.workspace }}/.. - # arch: win64_msvc2017_64 - # cached: ${{ steps.cache-qt-win.outputs.cache-hit }} - # aqtversion: ==0.8 + - name: Cache Qt + id: cache-qt-win + uses: actions/cache@v1 + with: + path: ${{ github.workspace }}/../Qt + key: ${{ runner.os }}-${{ matrix.arch }}-QtCache-${{ env.QT_VERSION }} + - name: Install Qt (32 bit) + uses: jurplel/install-qt-action@v2 + if: ${{ matrix.arch == 'Win32' }} + with: + version: ${{ env.QT_VERSION }} + dir: ${{ github.workspace }}/.. + arch: win32_msvc2017 + cached: ${{ steps.cache-qt-win.outputs.cache-hit }} + aqtversion: ==0.8 + - name: Install Qt (64 bit) + uses: jurplel/install-qt-action@v2 + if: ${{ matrix.arch == 'x64' }} + with: + version: ${{ env.QT_VERSION }} + dir: ${{ github.workspace }}/.. + arch: win64_msvc2017_64 + cached: ${{ steps.cache-qt-win.outputs.cache-hit }} + aqtversion: ==0.8 - name: Prepare Vulkan SDK uses: humbletim/setup-vulkan-sdk@v1.2.1 with: @@ -151,13 +152,13 @@ jobs: if [ "$ARCHITECTURE" = "Win32" ]; then cmake -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DFSO_USE_SPEECH="ON" \ -DFSO_USE_VOICEREC="ON" -DFORCED_SIMD_INSTRUCTIONS="$SIMD" \ - -DFSO_BUILD_QTFRED=OFF -DFSO_BUILD_TESTS=ON \ + -DFSO_BUILD_QTFRED=ON -DFSO_BUILD_TESTS=ON \ -DFSO_INSTALL_DEBUG_FILES="ON" -DFSO_BUILD_WITH_VULKAN="OFF" -A "$ARCHITECTURE" \ -G "Visual Studio 17 2022" -T "v143" -DCMAKE_BUILD_TYPE=$CONFIGURATION .. else cmake -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DFSO_USE_SPEECH="ON" \ -DFSO_USE_VOICEREC="ON" -DFORCED_SIMD_INSTRUCTIONS="$SIMD" \ - -DFSO_BUILD_QTFRED=OFF -DFSO_BUILD_TESTS=ON \ + -DFSO_BUILD_QTFRED=ON -DFSO_BUILD_TESTS=ON \ -DFSO_INSTALL_DEBUG_FILES="ON" -A "$ARCHITECTURE" \ -G "Visual Studio 17 2022" -T "v143" -DCMAKE_BUILD_TYPE=$CONFIGURATION .. fi @@ -233,21 +234,21 @@ jobs: name: Mac runs-on: macos-latest steps: - # - name: Cache Qt - # id: cache-qt-mac - # uses: actions/cache@v1 - # with: - # path: ${{ github.workspace }}/../Qt - # key: ${{ runner.os }}-QtCache-${{ env.QT_VERSION }} - # - name: Install Qt - # uses: jurplel/install-qt-action@v2 - # with: - # version: ${{ env.QT_VERSION }} - # dir: ${{ github.workspace }}/.. - # cached: ${{ steps.cache-qt-mac.outputs.cache-hit }} - # setup-python: 'false' - # aqtversion: ==1.1.3 - # py7zrversion: '==0.19.*' + - name: Cache Qt + id: cache-qt-mac + uses: actions/cache@v1 + with: + path: ${{ github.workspace }}/../Qt + key: ${{ runner.os }}-QtCache-${{ env.QT_VERSION }} + - name: Install Qt + uses: jurplel/install-qt-action@v2 + with: + version: ${{ env.QT_VERSION }} + dir: ${{ github.workspace }}/.. + cached: ${{ steps.cache-qt-mac.outputs.cache-hit }} + setup-python: 'false' + aqtversion: ==1.1.3 + py7zrversion: '==0.19.*' - uses: actions/checkout@v1 name: Checkout with: @@ -270,7 +271,7 @@ jobs: CONFIGURATION: ${{ matrix.configuration }} COMPILER: ${{ matrix.compiler }} ARCHITECTURE: ${{ matrix.arch }} - ENABLE_QTFRED: OFF + ENABLE_QTFRED: ON run: $GITHUB_WORKSPACE/ci/linux/configure_cmake.sh - name: Compile working-directory: ./build diff --git a/ci/linux/configure_cmake.sh b/ci/linux/configure_cmake.sh index bb0decb22be..1884264c079 100755 --- a/ci/linux/configure_cmake.sh +++ b/ci/linux/configure_cmake.sh @@ -12,16 +12,24 @@ if [ "$COMPILER" = "clang-16" ]; then export CC=clang-16 export CXX=clang++-16 fi +if [ "$RUNNER_ARCH" = "ARM" ] || [ "$RUNNER_ARCH" = "ARM64" ]; then + PLATFORM_CMAKE_OPTIONS="$PLATFORM_CMAKE_OPTIONS -DFSO_BUILD_QTFRED=OFF" +else + PLATFORM_CMAKE_OPTIONS="$PLATFORM_CMAKE_OPTIONS -DFSO_BUILD_QTFRED=${ENABLE_QTFRED:-OFF}" +fi +if [ "$ENABLE_QTFRED" = "ON" ]; then + CMAKE_OPTIONS="$CMAKE_OPTIONS -DQHELPGENERATOR_EXECUTABLE=${QTHELP_DIR}" +fi LD_LIBRARY_PATH=$Qt5_DIR/lib:$LD_LIBRARY_PATH if [ "$RUNNER_OS" = "macOS" ]; then CXXFLAGS="-mtune=generic -pipe -Wno-unknown-pragmas" CFLAGS="-mtune=generic -pipe -Wno-unknown-pragmas" # TODO: Vulkan support is disabled on MacOS due to issues with the test suite not linking correctly - PLATFORM_CMAKE_OPTIONS="-DFSO_BUILD_WITH_VULKAN=OFF" + PLATFORM_CMAKE_OPTIONS="$PLATFORM_CMAKE_OPTIONS -DFSO_BUILD_WITH_VULKAN=OFF" export CMAKE_OSX_ARCHITECTURES="$ARCHITECTURE" else - PLATFORM_CMAKE_OPTIONS="-DFSO_BUILD_APPIMAGE=ON -DFORCED_SIMD_INSTRUCTIONS=SSE2 -DUSE_STATIC_LIBCXX=ON" + PLATFORM_CMAKE_OPTIONS="$PLATFORM_CMAKE_OPTIONS -DFSO_BUILD_APPIMAGE=ON -DFORCED_SIMD_INSTRUCTIONS=SSE2 -DUSE_STATIC_LIBCXX=ON" fi CMAKE_OPTIONS="$JOB_CMAKE_OPTIONS" @@ -51,5 +59,5 @@ fi cmake -G Ninja -DFSO_FATAL_WARNINGS=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON $CMAKE_OPTIONS $PLATFORM_CMAKE_OPTIONS \ -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DCMAKE_BUILD_TYPE=$CONFIGURATION \ - -DFFMPEG_USE_PRECOMPILED=ON -DFSO_BUILD_TESTS=ON -DFSO_BUILD_INCLUDED_LIBS=ON -DFSO_BUILD_QTFRED=${ENABLE_QTFRED:-OFF} \ + -DFFMPEG_USE_PRECOMPILED=ON -DFSO_BUILD_TESTS=ON -DFSO_BUILD_INCLUDED_LIBS=ON \ -DSHADERS_ENABLE_COMPILATION=ON -DCMAKE_JOB_POOLS=link=1 -DCMAKE_JOB_POOL_LINK=link .. diff --git a/ci/linux/generate_appimage.sh b/ci/linux/generate_appimage.sh index 11bc7300a7e..2e328586b24 100755 --- a/ci/linux/generate_appimage.sh +++ b/ci/linux/generate_appimage.sh @@ -12,7 +12,8 @@ appimagetool -n "$INSTALL_FOLDER/Freespace2" "$INSTALL_FOLDER/$FILENAME" chmod +x "$INSTALL_FOLDER/$FILENAME" # Maybe install qtFRED targets -if [ -f qtfred/cmake_install.cmake ]; then +if [[ "$RUNNER_ARCH" != "ARM" && "$RUNNER_ARCH" != "ARM64" ]]; then +if [ "$ENABLE_QTFRED" = "ON" ]; then cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER/qtFRED -DCOMPONENT=Unspecified -P cmake_install.cmake cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER/qtFRED -DCOMPONENT=qtFRED -P cmake_install.cmake @@ -21,5 +22,6 @@ if [ -f qtfred/cmake_install.cmake ]; then appimagetool -n "$INSTALL_FOLDER/qtFRED" "$INSTALL_FOLDER/$FILENAME" chmod +x "$INSTALL_FOLDER/$FILENAME" fi +fi ls -al $INSTALL_FOLDER From 528e0e4b75ac3ab827979acbad954d7e4ca6be72 Mon Sep 17 00:00:00 2001 From: The Force <2040992+TheForce172@users.noreply.github.com> Date: Tue, 19 May 2026 19:00:38 +0100 Subject: [PATCH 02/16] specify arch --- .github/workflows/build-nightly.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-nightly.yaml b/.github/workflows/build-nightly.yaml index 999bb654df5..6b7e683efb7 100644 --- a/.github/workflows/build-nightly.yaml +++ b/.github/workflows/build-nightly.yaml @@ -68,6 +68,7 @@ jobs: - name: Generate AppImage working-directory: ./build env: + ARCH: ${{ matrix.arch }} QTDIR: Qt5_DIR CONFIGURATION: ${{ matrix.configuration }} ENABLE_QTFRED: ON From e21e6d2dffc100e7ec65f6778fa638c98c577b8c Mon Sep 17 00:00:00 2001 From: The Force <2040992+TheForce172@users.noreply.github.com> Date: Tue, 19 May 2026 19:44:50 +0100 Subject: [PATCH 03/16] don't try to turn help file into appimage --- ci/linux/generate_appimage.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/linux/generate_appimage.sh b/ci/linux/generate_appimage.sh index 2e328586b24..0c44e1efc4e 100755 --- a/ci/linux/generate_appimage.sh +++ b/ci/linux/generate_appimage.sh @@ -18,7 +18,7 @@ if [ "$ENABLE_QTFRED" = "ON" ]; then cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER/qtFRED -DCOMPONENT=qtFRED -P cmake_install.cmake # We need to be a bit creative for determining the AppImage name since we don't want to hard-code the name - FILENAME="$(find $INSTALL_FOLDER/qtFRED/bin -iname 'qtfred_*' -type f -printf "%f\n").AppImage" + FILENAME="$(find $INSTALL_FOLDER/qtFRED/bin -iname 'qtfred_*' ! -iname '*help*' -type f -printf "%f\n").AppImage" appimagetool -n "$INSTALL_FOLDER/qtFRED" "$INSTALL_FOLDER/$FILENAME" chmod +x "$INSTALL_FOLDER/$FILENAME" fi From 604bc04a05f898c346534caf41e6709c412fb5c4 Mon Sep 17 00:00:00 2001 From: The Force <2040992+TheForce172@users.noreply.github.com> Date: Tue, 19 May 2026 20:55:46 +0100 Subject: [PATCH 04/16] use linuxdeploy qt to get qt libs --- ci/linux/generate_appimage.sh | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/ci/linux/generate_appimage.sh b/ci/linux/generate_appimage.sh index 0c44e1efc4e..03dc5b27329 100755 --- a/ci/linux/generate_appimage.sh +++ b/ci/linux/generate_appimage.sh @@ -1,7 +1,29 @@ #!/usr/bin/env bash INSTALL_FOLDER=$1 +# safety check +if [ ! -d bin -o ! -f cmake_install.cmake ]; then + echo "ERROR! This script must be run from within the build root!" + exit 1 +fi + +if [ ! -x "$(which wget)" ]; then + echo "ERROR! Required utility is not available: wget" + exit 1 +fi + +# install newest appimagetool if it's not already available +if [ ! -x ./bin/linuxdeployqt ]; then + APPIMAGE_TOOL_URL="https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-$(uname -m).AppImage" + wget -O ./bin/linuxdeployqt "$APPIMAGE_TOOL_URL" || { echo "ERROR! Failed to get linuxdeployqt!" && exit 1; } + chmod +x ./bin/linuxdeployqt +fi + +# This shouldn't be needed with newer runtimes, but they still generate an +# error if fusermount is missing even though it works. So to skip error msg +# and have max compatibility with runtimes and containers we'll use it. +export APPIMAGE_EXTRACT_AND_RUN=1 # Install Freespace2 targets cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER/Freespace2 -DCOMPONENT=Unspecified -P cmake_install.cmake cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER/Freespace2 -DCOMPONENT=Freespace2 -P cmake_install.cmake @@ -16,9 +38,9 @@ if [[ "$RUNNER_ARCH" != "ARM" && "$RUNNER_ARCH" != "ARM64" ]]; then if [ "$ENABLE_QTFRED" = "ON" ]; then cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER/qtFRED -DCOMPONENT=Unspecified -P cmake_install.cmake cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER/qtFRED -DCOMPONENT=qtFRED -P cmake_install.cmake - # We need to be a bit creative for determining the AppImage name since we don't want to hard-code the name FILENAME="$(find $INSTALL_FOLDER/qtFRED/bin -iname 'qtfred_*' ! -iname '*help*' -type f -printf "%f\n").AppImage" + ./bin/linuxdeployqt "$INSTALL_FOLDER/qtFRED" appimagetool -n "$INSTALL_FOLDER/qtFRED" "$INSTALL_FOLDER/$FILENAME" chmod +x "$INSTALL_FOLDER/$FILENAME" fi From e047ad1de33605e96cf1a715833492dfa9282d10 Mon Sep 17 00:00:00 2001 From: The Force <2040992+TheForce172@users.noreply.github.com> Date: Tue, 19 May 2026 21:18:07 +0100 Subject: [PATCH 05/16] properly point linuxdeployqt --- ci/linux/generate_appimage.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ci/linux/generate_appimage.sh b/ci/linux/generate_appimage.sh index 03dc5b27329..f5f368d42f5 100755 --- a/ci/linux/generate_appimage.sh +++ b/ci/linux/generate_appimage.sh @@ -39,8 +39,9 @@ if [ "$ENABLE_QTFRED" = "ON" ]; then cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER/qtFRED -DCOMPONENT=Unspecified -P cmake_install.cmake cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER/qtFRED -DCOMPONENT=qtFRED -P cmake_install.cmake # We need to be a bit creative for determining the AppImage name since we don't want to hard-code the name + CLEANFILENAME="$(find $INSTALL_FOLDER/qtFRED/bin -iname 'qtfred_*' ! -iname '*help*' -type f -printf "%f\n")" FILENAME="$(find $INSTALL_FOLDER/qtFRED/bin -iname 'qtfred_*' ! -iname '*help*' -type f -printf "%f\n").AppImage" - ./bin/linuxdeployqt "$INSTALL_FOLDER/qtFRED" + ./bin/linuxdeployqt "$INSTALL_FOLDER/qtFRED/bin/$CLEANFILENAME" appimagetool -n "$INSTALL_FOLDER/qtFRED" "$INSTALL_FOLDER/$FILENAME" chmod +x "$INSTALL_FOLDER/$FILENAME" fi From 57cbba8f3f22d7cf3fdee705650d43185ebb1e31 Mon Sep 17 00:00:00 2001 From: The Force <2040992+TheForce172@users.noreply.github.com> Date: Tue, 19 May 2026 21:48:31 +0100 Subject: [PATCH 06/16] error checking --- ci/linux/generate_appimage.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ci/linux/generate_appimage.sh b/ci/linux/generate_appimage.sh index f5f368d42f5..bad17c40343 100755 --- a/ci/linux/generate_appimage.sh +++ b/ci/linux/generate_appimage.sh @@ -39,7 +39,11 @@ if [ "$ENABLE_QTFRED" = "ON" ]; then cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER/qtFRED -DCOMPONENT=Unspecified -P cmake_install.cmake cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER/qtFRED -DCOMPONENT=qtFRED -P cmake_install.cmake # We need to be a bit creative for determining the AppImage name since we don't want to hard-code the name - CLEANFILENAME="$(find $INSTALL_FOLDER/qtFRED/bin -iname 'qtfred_*' ! -iname '*help*' -type f -printf "%f\n")" + CLEANFILENAME=$(find "$INSTALL_FOLDER/qtFRED/bin" -iname 'qtfred_*' ! -iname '*help*' -type f -print -quit) + if [ -z "$CLEANFILENAME" ]; then + echo "ERROR: Target binary 'qtfred_*' not found in install folder!" + exit 1 +fi FILENAME="$(find $INSTALL_FOLDER/qtFRED/bin -iname 'qtfred_*' ! -iname '*help*' -type f -printf "%f\n").AppImage" ./bin/linuxdeployqt "$INSTALL_FOLDER/qtFRED/bin/$CLEANFILENAME" appimagetool -n "$INSTALL_FOLDER/qtFRED" "$INSTALL_FOLDER/$FILENAME" From 5b4208310657c835732e0888d139909c0a1f01a9 Mon Sep 17 00:00:00 2001 From: The Force <2040992+TheForce172@users.noreply.github.com> Date: Tue, 19 May 2026 22:21:09 +0100 Subject: [PATCH 07/16] lets try this --- ci/linux/generate_appimage.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ci/linux/generate_appimage.sh b/ci/linux/generate_appimage.sh index bad17c40343..b1812453b70 100755 --- a/ci/linux/generate_appimage.sh +++ b/ci/linux/generate_appimage.sh @@ -40,9 +40,7 @@ if [ "$ENABLE_QTFRED" = "ON" ]; then cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER/qtFRED -DCOMPONENT=qtFRED -P cmake_install.cmake # We need to be a bit creative for determining the AppImage name since we don't want to hard-code the name CLEANFILENAME=$(find "$INSTALL_FOLDER/qtFRED/bin" -iname 'qtfred_*' ! -iname '*help*' -type f -print -quit) - if [ -z "$CLEANFILENAME" ]; then - echo "ERROR: Target binary 'qtfred_*' not found in install folder!" - exit 1 + ls $INSTALL_FOLDER/qtFRED fi FILENAME="$(find $INSTALL_FOLDER/qtFRED/bin -iname 'qtfred_*' ! -iname '*help*' -type f -printf "%f\n").AppImage" ./bin/linuxdeployqt "$INSTALL_FOLDER/qtFRED/bin/$CLEANFILENAME" From 517c91b6211d8476c73173178935455a897f83c0 Mon Sep 17 00:00:00 2001 From: The Force <2040992+TheForce172@users.noreply.github.com> Date: Tue, 19 May 2026 22:36:17 +0100 Subject: [PATCH 08/16] fix indenting --- ci/linux/generate_appimage.sh | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/ci/linux/generate_appimage.sh b/ci/linux/generate_appimage.sh index b1812453b70..f2c330aea98 100755 --- a/ci/linux/generate_appimage.sh +++ b/ci/linux/generate_appimage.sh @@ -35,18 +35,24 @@ chmod +x "$INSTALL_FOLDER/$FILENAME" # Maybe install qtFRED targets if [[ "$RUNNER_ARCH" != "ARM" && "$RUNNER_ARCH" != "ARM64" ]]; then -if [ "$ENABLE_QTFRED" = "ON" ]; then - cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER/qtFRED -DCOMPONENT=Unspecified -P cmake_install.cmake - cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER/qtFRED -DCOMPONENT=qtFRED -P cmake_install.cmake - # We need to be a bit creative for determining the AppImage name since we don't want to hard-code the name - CLEANFILENAME=$(find "$INSTALL_FOLDER/qtFRED/bin" -iname 'qtfred_*' ! -iname '*help*' -type f -print -quit) - ls $INSTALL_FOLDER/qtFRED -fi - FILENAME="$(find $INSTALL_FOLDER/qtFRED/bin -iname 'qtfred_*' ! -iname '*help*' -type f -printf "%f\n").AppImage" - ./bin/linuxdeployqt "$INSTALL_FOLDER/qtFRED/bin/$CLEANFILENAME" - appimagetool -n "$INSTALL_FOLDER/qtFRED" "$INSTALL_FOLDER/$FILENAME" - chmod +x "$INSTALL_FOLDER/$FILENAME" -fi + if [ "$ENABLE_QTFRED" = "ON" ]; then + cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER/qtFRED -DCOMPONENT=Unspecified -P cmake_install.cmake + cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER/qtFRED -DCOMPONENT=qtFRED -P cmake_install.cmake + # We need to be a bit creative for determining the AppImage name since we don't want to hard-code the name + + TARGET_DIR="$INSTALL_FOLDER/qtFRED/bin" + BINARY_PATH=$(find "$TARGET_DIR" -type f -name "qtfred_*" -not -name "*help*" -print -quit) + CLEANFILENAME=$(basename "$BINARY_PATH") + FILENAME="${CLEANFILENAME}.AppImage" + if [ -z "$BINARY_PATH" ] || [ ! -f "$BINARY_PATH" ]; then + echo "ERROR: linuxdeployqt target not found at $BINARY_PATH" + exit 1 + fi + #FILENAME="$(find $INSTALL_FOLDER/qtFRED/bin -iname 'qtfred_*' ! -iname '*help*' -type f -printf "%f\n").AppImage" + ./bin/linuxdeployqt "$BINARY_PATH" + appimagetool -n "$INSTALL_FOLDER/qtFRED" "$INSTALL_FOLDER/$FILENAME" + chmod +x "$INSTALL_FOLDER/$FILENAME" + fi fi ls -al $INSTALL_FOLDER From d4ebb3ec7a63f7ea674bc35261c874fe1e3bd30a Mon Sep 17 00:00:00 2001 From: The Force <2040992+TheForce172@users.noreply.github.com> Date: Tue, 19 May 2026 22:56:13 +0100 Subject: [PATCH 09/16] try using desktop file instead --- ci/linux/generate_appimage.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ci/linux/generate_appimage.sh b/ci/linux/generate_appimage.sh index f2c330aea98..f1e2364ac3c 100755 --- a/ci/linux/generate_appimage.sh +++ b/ci/linux/generate_appimage.sh @@ -41,6 +41,7 @@ if [[ "$RUNNER_ARCH" != "ARM" && "$RUNNER_ARCH" != "ARM64" ]]; then # We need to be a bit creative for determining the AppImage name since we don't want to hard-code the name TARGET_DIR="$INSTALL_FOLDER/qtFRED/bin" + DESKTOP_PATH=$(find "$INSTALL_FOLDER/qtFRED" -name "*.desktop" -type f -print -quit) BINARY_PATH=$(find "$TARGET_DIR" -type f -name "qtfred_*" -not -name "*help*" -print -quit) CLEANFILENAME=$(basename "$BINARY_PATH") FILENAME="${CLEANFILENAME}.AppImage" @@ -49,7 +50,7 @@ if [[ "$RUNNER_ARCH" != "ARM" && "$RUNNER_ARCH" != "ARM64" ]]; then exit 1 fi #FILENAME="$(find $INSTALL_FOLDER/qtFRED/bin -iname 'qtfred_*' ! -iname '*help*' -type f -printf "%f\n").AppImage" - ./bin/linuxdeployqt "$BINARY_PATH" + ./bin/linuxdeployqt "$DESKTOP_PATH" appimagetool -n "$INSTALL_FOLDER/qtFRED" "$INSTALL_FOLDER/$FILENAME" chmod +x "$INSTALL_FOLDER/$FILENAME" fi From f7a1ee3e812f5d7593095e3a2973689b398ae545 Mon Sep 17 00:00:00 2001 From: The Force <2040992+TheForce172@users.noreply.github.com> Date: Tue, 19 May 2026 23:27:41 +0100 Subject: [PATCH 10/16] use linuxdeploy instead --- .github/workflows/build-nightly.yaml | 2 +- ci/linux/generate_appimage.sh | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-nightly.yaml b/.github/workflows/build-nightly.yaml index 6b7e683efb7..43102a1e25b 100644 --- a/.github/workflows/build-nightly.yaml +++ b/.github/workflows/build-nightly.yaml @@ -69,7 +69,7 @@ jobs: working-directory: ./build env: ARCH: ${{ matrix.arch }} - QTDIR: Qt5_DIR + QMAKE: /qt/${{ env.QT_VERSION }}/gcc_64/bin/qmake CONFIGURATION: ${{ matrix.configuration }} ENABLE_QTFRED: ON run: $GITHUB_WORKSPACE/ci/linux/generate_appimage.sh $GITHUB_WORKSPACE/build/install diff --git a/ci/linux/generate_appimage.sh b/ci/linux/generate_appimage.sh index f1e2364ac3c..4d1e6c93997 100755 --- a/ci/linux/generate_appimage.sh +++ b/ci/linux/generate_appimage.sh @@ -14,9 +14,11 @@ fi # install newest appimagetool if it's not already available if [ ! -x ./bin/linuxdeployqt ]; then - APPIMAGE_TOOL_URL="https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-$(uname -m).AppImage" + APPIMAGE_TOOL_URL="https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-$(uname -m).AppImage" + PLUGIN_TOOL_URL="https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-$(uname -m).AppImage" - wget -O ./bin/linuxdeployqt "$APPIMAGE_TOOL_URL" || { echo "ERROR! Failed to get linuxdeployqt!" && exit 1; } + wget -O ./bin/linuxdeploy "$APPIMAGE_TOOL_URL" || { echo "ERROR! Failed to get linuxdeployqt!" && exit 1; } + wget -O ./bin/linuxdeploy-plugin-qt "$APPIMAGE_TOOL_URL" || { echo "ERROR! Failed to get linuxdeployqt!" && exit 1; } chmod +x ./bin/linuxdeployqt fi @@ -39,7 +41,7 @@ if [[ "$RUNNER_ARCH" != "ARM" && "$RUNNER_ARCH" != "ARM64" ]]; then cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER/qtFRED -DCOMPONENT=Unspecified -P cmake_install.cmake cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER/qtFRED -DCOMPONENT=qtFRED -P cmake_install.cmake # We need to be a bit creative for determining the AppImage name since we don't want to hard-code the name - + export QMAKE=/usr/lib/x86_64-linux-gnu/qt5/bin/qmake TARGET_DIR="$INSTALL_FOLDER/qtFRED/bin" DESKTOP_PATH=$(find "$INSTALL_FOLDER/qtFRED" -name "*.desktop" -type f -print -quit) BINARY_PATH=$(find "$TARGET_DIR" -type f -name "qtfred_*" -not -name "*help*" -print -quit) @@ -50,7 +52,7 @@ if [[ "$RUNNER_ARCH" != "ARM" && "$RUNNER_ARCH" != "ARM64" ]]; then exit 1 fi #FILENAME="$(find $INSTALL_FOLDER/qtFRED/bin -iname 'qtfred_*' ! -iname '*help*' -type f -printf "%f\n").AppImage" - ./bin/linuxdeployqt "$DESKTOP_PATH" + ./bin/linuxdeploy --appdir "$INSTALL_FOLDER/qtFRED" --plugin qt --executable "$BINARY_PATH" appimagetool -n "$INSTALL_FOLDER/qtFRED" "$INSTALL_FOLDER/$FILENAME" chmod +x "$INSTALL_FOLDER/$FILENAME" fi From 1a30f651f4051e3fc4ffe815cdcd092f475e99c6 Mon Sep 17 00:00:00 2001 From: The Force <2040992+TheForce172@users.noreply.github.com> Date: Tue, 19 May 2026 23:47:43 +0100 Subject: [PATCH 11/16] correct permissions --- ci/linux/generate_appimage.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ci/linux/generate_appimage.sh b/ci/linux/generate_appimage.sh index 4d1e6c93997..00f0781d8dc 100755 --- a/ci/linux/generate_appimage.sh +++ b/ci/linux/generate_appimage.sh @@ -19,7 +19,8 @@ if [ ! -x ./bin/linuxdeployqt ]; then wget -O ./bin/linuxdeploy "$APPIMAGE_TOOL_URL" || { echo "ERROR! Failed to get linuxdeployqt!" && exit 1; } wget -O ./bin/linuxdeploy-plugin-qt "$APPIMAGE_TOOL_URL" || { echo "ERROR! Failed to get linuxdeployqt!" && exit 1; } - chmod +x ./bin/linuxdeployqt + chmod +x ./bin/linuxdeploy + chmod +x ./bin/linuxdeploy-plugin-qt fi # This shouldn't be needed with newer runtimes, but they still generate an From 210ddd7ad5521018e151125744e5d61a99d42326 Mon Sep 17 00:00:00 2001 From: The Force <2040992+TheForce172@users.noreply.github.com> Date: Wed, 20 May 2026 00:15:07 +0100 Subject: [PATCH 12/16] run headless --- ci/linux/generate_appimage.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/linux/generate_appimage.sh b/ci/linux/generate_appimage.sh index 00f0781d8dc..b349735841d 100755 --- a/ci/linux/generate_appimage.sh +++ b/ci/linux/generate_appimage.sh @@ -42,7 +42,7 @@ if [[ "$RUNNER_ARCH" != "ARM" && "$RUNNER_ARCH" != "ARM64" ]]; then cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER/qtFRED -DCOMPONENT=Unspecified -P cmake_install.cmake cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_FOLDER/qtFRED -DCOMPONENT=qtFRED -P cmake_install.cmake # We need to be a bit creative for determining the AppImage name since we don't want to hard-code the name - export QMAKE=/usr/lib/x86_64-linux-gnu/qt5/bin/qmake + export QT_QPA_PLATFORM=offscreen TARGET_DIR="$INSTALL_FOLDER/qtFRED/bin" DESKTOP_PATH=$(find "$INSTALL_FOLDER/qtFRED" -name "*.desktop" -type f -print -quit) BINARY_PATH=$(find "$TARGET_DIR" -type f -name "qtfred_*" -not -name "*help*" -print -quit) From a086e2d296645fe377d3e89db787ef6092d6840c Mon Sep 17 00:00:00 2001 From: The Force <2040992+TheForce172@users.noreply.github.com> Date: Wed, 20 May 2026 00:51:07 +0100 Subject: [PATCH 13/16] try to avoid fuse error --- ci/linux/generate_appimage.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ci/linux/generate_appimage.sh b/ci/linux/generate_appimage.sh index b349735841d..a974b6162dc 100755 --- a/ci/linux/generate_appimage.sh +++ b/ci/linux/generate_appimage.sh @@ -21,6 +21,11 @@ if [ ! -x ./bin/linuxdeployqt ]; then wget -O ./bin/linuxdeploy-plugin-qt "$APPIMAGE_TOOL_URL" || { echo "ERROR! Failed to get linuxdeployqt!" && exit 1; } chmod +x ./bin/linuxdeploy chmod +x ./bin/linuxdeploy-plugin-qt + + ./linuxdeploy --appimage-extract + ./linuxdeploy-plugin-qt --appimage-extract + mkdir -p squashfs-root/usr/bin/ + cp linuxdeploy-plugin-qt squashfs-root/usr/bin/linuxdeploy-plugin-qt fi # This shouldn't be needed with newer runtimes, but they still generate an @@ -53,7 +58,7 @@ if [[ "$RUNNER_ARCH" != "ARM" && "$RUNNER_ARCH" != "ARM64" ]]; then exit 1 fi #FILENAME="$(find $INSTALL_FOLDER/qtFRED/bin -iname 'qtfred_*' ! -iname '*help*' -type f -printf "%f\n").AppImage" - ./bin/linuxdeploy --appdir "$INSTALL_FOLDER/qtFRED" --plugin qt --executable "$BINARY_PATH" + ./squashfs-root/AppRun --appdir "$INSTALL_FOLDER/qtFRED" --plugin qt appimagetool -n "$INSTALL_FOLDER/qtFRED" "$INSTALL_FOLDER/$FILENAME" chmod +x "$INSTALL_FOLDER/$FILENAME" fi From 16f420044c933ffed789820f29493517f06b5f1a Mon Sep 17 00:00:00 2001 From: The Force <2040992+TheForce172@users.noreply.github.com> Date: Wed, 20 May 2026 01:13:52 +0100 Subject: [PATCH 14/16] actually download plugin rather than program twice --- ci/linux/generate_appimage.sh | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/ci/linux/generate_appimage.sh b/ci/linux/generate_appimage.sh index a974b6162dc..6ea1a3af50f 100755 --- a/ci/linux/generate_appimage.sh +++ b/ci/linux/generate_appimage.sh @@ -18,14 +18,11 @@ if [ ! -x ./bin/linuxdeployqt ]; then PLUGIN_TOOL_URL="https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-$(uname -m).AppImage" wget -O ./bin/linuxdeploy "$APPIMAGE_TOOL_URL" || { echo "ERROR! Failed to get linuxdeployqt!" && exit 1; } - wget -O ./bin/linuxdeploy-plugin-qt "$APPIMAGE_TOOL_URL" || { echo "ERROR! Failed to get linuxdeployqt!" && exit 1; } + wget -O ./bin/linuxdeploy-plugin-qt "$PLUGIN_TOOL_URL" || { echo "ERROR! Failed to get linuxdeployqt!" && exit 1; } chmod +x ./bin/linuxdeploy chmod +x ./bin/linuxdeploy-plugin-qt - ./linuxdeploy --appimage-extract - ./linuxdeploy-plugin-qt --appimage-extract - mkdir -p squashfs-root/usr/bin/ - cp linuxdeploy-plugin-qt squashfs-root/usr/bin/linuxdeploy-plugin-qt + fi # This shouldn't be needed with newer runtimes, but they still generate an @@ -58,7 +55,7 @@ if [[ "$RUNNER_ARCH" != "ARM" && "$RUNNER_ARCH" != "ARM64" ]]; then exit 1 fi #FILENAME="$(find $INSTALL_FOLDER/qtFRED/bin -iname 'qtfred_*' ! -iname '*help*' -type f -printf "%f\n").AppImage" - ./squashfs-root/AppRun --appdir "$INSTALL_FOLDER/qtFRED" --plugin qt + ./bin/linuxdeploy --appdir "$INSTALL_FOLDER/qtFRED" --plugin qt appimagetool -n "$INSTALL_FOLDER/qtFRED" "$INSTALL_FOLDER/$FILENAME" chmod +x "$INSTALL_FOLDER/$FILENAME" fi From c89e68a0ae1ba8f19a03fd9cd75ae640565385ae Mon Sep 17 00:00:00 2001 From: The Force <2040992+TheForce172@users.noreply.github.com> Date: Wed, 20 May 2026 01:37:28 +0100 Subject: [PATCH 15/16] add executable --- ci/linux/generate_appimage.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/linux/generate_appimage.sh b/ci/linux/generate_appimage.sh index 6ea1a3af50f..6d9a86d3e08 100755 --- a/ci/linux/generate_appimage.sh +++ b/ci/linux/generate_appimage.sh @@ -55,7 +55,7 @@ if [[ "$RUNNER_ARCH" != "ARM" && "$RUNNER_ARCH" != "ARM64" ]]; then exit 1 fi #FILENAME="$(find $INSTALL_FOLDER/qtFRED/bin -iname 'qtfred_*' ! -iname '*help*' -type f -printf "%f\n").AppImage" - ./bin/linuxdeploy --appdir "$INSTALL_FOLDER/qtFRED" --plugin qt + ./bin/linuxdeploy --appdir "$INSTALL_FOLDER/qtFRED" --plugin qt --executable "$BINARY_PATHY" appimagetool -n "$INSTALL_FOLDER/qtFRED" "$INSTALL_FOLDER/$FILENAME" chmod +x "$INSTALL_FOLDER/$FILENAME" fi From 033ec57d64560a29d51e652ff1227db2a35f2a28 Mon Sep 17 00:00:00 2001 From: The Force <2040992+TheForce172@users.noreply.github.com> Date: Wed, 20 May 2026 01:47:19 +0100 Subject: [PATCH 16/16] add library path --- ci/linux/generate_appimage.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/linux/generate_appimage.sh b/ci/linux/generate_appimage.sh index 6d9a86d3e08..692196b41b9 100755 --- a/ci/linux/generate_appimage.sh +++ b/ci/linux/generate_appimage.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash - +export LD_LIBRARY_PATH=$(pwd)/bin/lib:$LD_LIBRARY_PATH INSTALL_FOLDER=$1 # safety check if [ ! -d bin -o ! -f cmake_install.cmake ]; then