diff --git a/.github/workflows/rolling-release.yml b/.github/workflows/rolling-release.yml index 13735ebaf..e71106083 100644 --- a/.github/workflows/rolling-release.yml +++ b/.github/workflows/rolling-release.yml @@ -242,7 +242,7 @@ jobs: shell: bash run: | sudo apt-get update - sudo apt-get -y install cmake ninja-build ccache libsdl2-dev libgtk-3-dev qtbase5-dev qtbase5-dev-tools qtbase5-private-dev qt5-default qttools5-dev libegl1-mesa-dev libevdev-dev libgbm-dev libdrm-dev libwayland-dev libwayland-egl-backend-dev extra-cmake-modules libcurl4-gnutls-dev libxrandr-dev + sudo apt-get -y install cmake ninja-build ccache libsdl2-dev libgtk-3-dev qtbase5-dev qtbase5-dev-tools qtbase5-private-dev qt5-default qttools5-dev qtwayland5 libegl1-mesa-dev libevdev-dev libgbm-dev libdrm-dev libqt5waylandclient5-dev libqt5waylandcompositor5-dev libwayland-dev libwayland-egl-backend-dev extra-cmake-modules libcurl4-gnutls-dev libxrandr-dev - name: Compile build shell: bash @@ -352,7 +352,7 @@ jobs: uses: actions/download-artifact@v1 with: name: "linux-x64-appimage-qt-zsync" - + - name: Create preview release if: github.ref == 'refs/heads/master' uses: "marvinpinto/action-automatic-releases@latest" @@ -372,7 +372,7 @@ jobs: linux-x64-appimage-nogui-zsync/duckstation-nogui-x64.AppImage.zsync linux-x64-appimage-qt/duckstation-qt-x64.AppImage linux-x64-appimage-qt-zsync/duckstation-qt-x64.AppImage.zsync - + - name: Create dev release if: github.ref == 'refs/heads/dev' uses: "marvinpinto/action-automatic-releases@latest" @@ -392,3 +392,4 @@ jobs: linux-x64-appimage-nogui-zsync/duckstation-nogui-x64.AppImage.zsync linux-x64-appimage-qt/duckstation-qt-x64.AppImage linux-x64-appimage-qt-zsync/duckstation-qt-x64.AppImage.zsync + diff --git a/scripts/generate_appimages.sh b/scripts/generate_appimages.sh index 3008ca5f7..d7bc71d26 100755 --- a/scripts/generate_appimages.sh +++ b/scripts/generate_appimages.sh @@ -62,10 +62,22 @@ for frontend in ${FRONTENDS[@]}; do cp -av ${TRANSLATIONS_DIR} ${CURRENT_APPDIR}/usr/bin done +# Replace Patchelf +curl -sSfLO https://github.com/NixOS/patchelf/releases/download/0.12/patchelf-0.12.tar.bz2 +tar xvf patchelf-0.12.tar.bz2 +cd patchelf-0.12*/ +./configure +make && sudo make install +cd ${BUILD_DIR} + # Pass UPDATE_INFORMATION and OUTPUT variables (used by linuxdeploy-plugin-appimage) # to the environment of the linuxdeploy commands -${BUILD_DIR}/linuxdeploy-x86_64.AppImage \ +${BUILD_DIR}/linuxdeploy-x86_64.AppImage --appimage-extract +mv ${BUILD_DIR}/squashfs-root/usr/bin/patchelf ${BUILD_DIR}/squashfs-root/usr/bin/patchelf.orig +sudo cp /usr/local/bin/patchelf ${BUILD_DIR}/squashfs-root/usr/bin/patchelf + +${BUILD_DIR}/squashfs-root/AppRun \ --appdir=${BUILD_DIR}/duckstation-qt.AppDir \ --executable=${BUILD_DIR}/bin/duckstation-qt \ --desktop-file=${APPIMAGE_RESOURCES_DIR}/linux-desktop-files/duckstation-qt.desktop \ @@ -75,15 +87,29 @@ ${BUILD_DIR}/linuxdeploy-x86_64.AppImage \ # Patch AppRun to work around system Qt libraries being loaded ahead of bundled libraries sed -i 's|exec "$this_dir"/AppRun.wrapped "$@"|exec env LD_LIBRARY_PATH="$this_dir"/usr/lib:$LD_LIBRARY_PATH "$this_dir"/AppRun.wrapped "$@"|' \ ${BUILD_DIR}/duckstation-qt.AppDir/AppRun + +mkdir -p ${BUILD_DIR}/duckstation-qt.AppDir/usr/plugins +mkdir -p ${BUILD_DIR}/duckstation-qt.AppDir/usr/lib/dri +cp /usr/lib/x86_64-linux-gnu/{libQt5WaylandClient.so.5,libEGL_mesa.so.0} ${BUILD_DIR}/duckstation-qt.AppDir/usr/lib +cp /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so ${BUILD_DIR}/duckstation-qt.AppDir/usr/lib/dri +cp -r /usr/lib/x86_64-linux-gnu/qt5/plugins/{xcbglintegrations,platforms,wayland-graphics-integration-client,wayland-decoration-client,wayland-shell-integration} ${BUILD_DIR}/duckstation-qt.AppDir/usr/plugins + +cat <<'EOF'>> ${BUILD_DIR}/duckstation-qt.AppDir/apprun-hooks/linuxdeploy-plugin-qt-hook.sh +case "${WAYLAND_DISPLAY}" in + *wayland*) + export QT_QPA_PLATFORM=wayland + ;; +esac +EOF UPDATE_INFORMATION="zsync|https://github.com/stenzek/duckstation/releases/download/latest/duckstation-qt-x64.AppImage.zsync" \ OUTPUT="duckstation-qt-x64.AppImage" \ ${BUILD_DIR}/linuxdeploy-plugin-appimage-x86_64.AppImage \ - --appdir=${BUILD_DIR}/duckstation-qt.AppDir + --appdir=${BUILD_DIR}/duckstation-qt.AppDir UPDATE_INFORMATION="zsync|https://github.com/stenzek/duckstation/releases/download/latest/duckstation-nogui-x64.AppImage.zsync" \ OUTPUT="duckstation-nogui-x64.AppImage" \ -${BUILD_DIR}/linuxdeploy-x86_64.AppImage \ +${BUILD_DIR}/squashfs-root/AppRun \ --appdir=${BUILD_DIR}/duckstation-nogui.AppDir \ --executable=${BUILD_DIR}/bin/duckstation-nogui \ --desktop-file=${APPIMAGE_RESOURCES_DIR}/linux-desktop-files/duckstation-nogui.desktop \