CI: Build Flatpak

This commit is contained in:
Stenzek 2023-09-02 17:05:49 +10:00
parent 59b70b6adb
commit 4588f9ee9f
2 changed files with 70 additions and 14 deletions

View file

@ -249,6 +249,49 @@ jobs:
path: "DuckStation-x64.AppImage"
linux-flatpak-build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install packages
shell: bash
run: scripts/flatpak/install-packages.sh
- name: Generate AppStream XML
run: |
scripts/flatpak/generate-metainfo.sh scripts/flatpak/org.duckstation.duckstation.metainfo.xml
cat scripts/flatpak/org.duckstation.duckstation.metainfo.xml
flatpak run org.freedesktop.appstream-glib validate scripts/flatpak/org.duckstation.duckstation.metainfo.xml
- name: Build Flatpak
uses: flatpak/flatpak-github-actions/flatpak-builder@v6.1
with:
bundle: duckstation-x64.flatpak
manifest-path: scripts/flatpak/org.duckstation.duckstation.json
arch: x86_64
build-bundle: true
verbose: true
#mirror-screenshots-url: https://dl.flathub.org/repo/screenshots
#branch: ${{ inputs.branch }}
branch: master
cache: true
restore-cache: true
cache-key: flatpak-x64-${{ hashFiles('.scripts/flatpak/**/*.json') }}
# - name: Commit screenshots to OSTree
# run: |
# ostree commit --repo=repo --canonical-permissions --branch=screenshots/x86_64 flatpak_app/screenshots
- name: Upload Flatpak
uses: actions/upload-artifact@v1
with:
name: "linux-flatpak"
path: "duckstation-x64.flatpak"
macos-build:
runs-on: macos-11
steps:
@ -288,7 +331,7 @@ jobs:
create-release:
needs: [windows-build, windows-arm64-build, linux-build, macos-build]
needs: [windows-build, windows-arm64-build, linux-build, linux-flatpak-build, macos-build]
runs-on: "ubuntu-20.04"
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev'
steps:
@ -307,6 +350,11 @@ jobs:
with:
name: "linux-x64-appimage-qt"
- name: Download Flatpak Artifact
uses: actions/download-artifact@v1
with:
name: "linux-flatpak"
- name: Download MacOS Artifact
uses: actions/download-artifact@v1
with:
@ -326,6 +374,7 @@ jobs:
windows-arm64/duckstation-windows-arm64-release.zip
windows-arm64/duckstation-windows-arm64-release-symbols.zip
linux-x64-appimage-qt/DuckStation-x64.AppImage
linux-flatpak/duckstation-x64.flatpak
macos/duckstation-mac-release.zip
- name: Create dev release
@ -342,5 +391,6 @@ jobs:
windows-arm64/duckstation-windows-arm64-release.zip
windows-arm64/duckstation-windows-arm64-release-symbols.zip
linux-x64-appimage-qt/DuckStation-x64.AppImage
linux-flatpak/duckstation-x64.flatpak
macos/duckstation-mac-release.zip

View file

@ -55,7 +55,7 @@ Other features include:
- SDL, XInput or DInput compatible game controller (e.g. XB360/XBOne/XBSeries). DualShock 3 users on Windows will need to install the official DualShock 3 drivers included as part of PlayStation Now.
## Downloading and running
Binaries of DuckStation for Windows x64/ARM64, Linux x86_64 (in AppImage format), and Android ARMv7/ARMv8 are available via GitHub Releases and are automatically built with every commit/push. Binaries or packages distributed through other sources may be out of date and are not supported by the developer, please speak to them for support, not us.
Binaries of DuckStation for Windows x64/ARM64, Linux x86_64 (in AppImage/Flatpak formats), and macOS Universal Binaries are available via GitHub Releases and are automatically built with every commit/push. Binaries or packages distributed through other sources may be out of date and are not supported by the developer, please speak to them for support, not us.
### Windows
@ -84,14 +84,21 @@ The Qt frontend includes an automatic update checker. Builds downloaded after 20
### Linux
The only supported version of DuckStation for Linux are the AppImages in the releases page. The AppImages require a distribution equivalent to Ubuntu 20.04 or newer to run, which is also the minimum requirement for Qt 6. If you are using a packaged version of DuckStation from another source, please do not ask us for assistance and speak to your packager instead, they have a history of breaking things and there's a good chance that's the issue.
The only supported version of DuckStation for Linux are the AppImage and Flatpak in the releases page. Other AppImages or Flatpaks, **including Flathub**/"Discover" store **are not supported**, and if history is any indication, **likely broken** because packagers tend to modify things they don't understand.
#### Binaries
#### AppImage
To download:
- Go to https://github.com/stenzek/duckstation/releases/tag/preview, and download `duckstation-qt.AppImage`.
The AppImages require a distribution equivalent to Ubuntu 20.04 or newer to run, which is also the minimum requirement for Qt 6.
- Go to https://github.com/stenzek/duckstation/releases/tag/preview, and download `duckstation-x64.AppImage`.
- Run `chmod a+x` on the downloaded AppImage -- following this step, the AppImage can be run like a typical executable.
#### Flatpak
- Go to https://github.com/stenzek/duckstation/releases/tag/preview, and download `duckstation-x64.flatpak`.
- Run `flatpak install ./duckstation-x64.flatpak`.
- Use `flatpak run org.duckstation.duckstation` to start, or select `DuckStation` in the launcher of your desktop environment.
### macOS
Universal MacOS builds are provided for both x64 and ARM64 (Apple Silicon).
@ -137,7 +144,7 @@ For example, if your disc image was named `Spyro3.cue`, you would place the SBI
Requirements:
- Visual Studio 2022
1. Clone the respository with submodules (`git clone --recursive https://github.com/stenzek/duckstation.git`).
1. Clone the respository: `git clone https://github.com/stenzek/duckstation.git`.
2. Open the Visual Studio solution `duckstation.sln` in the root, or "Open Folder" for cmake build.
3. Build solution.
4. Binaries are located in `bin/x64`.
@ -146,16 +153,15 @@ Requirements:
### Linux
Requirements (Debian/Ubuntu package names):
- CMake (`cmake`)
- SDL2 (at least version 2.0.22) (`libsdl2-dev` `libxrandr-dev`)
- SDL2 (at least version 2.28.2) (`libsdl2-dev` `libxrandr-dev`)
- pkgconfig (`pkg-config`)
- Qt 6 (at least version 6.5.0) (`qt6-base-dev` `qt6-base-private-dev` `qt6-base-dev-tools` `qt6-tools-dev` `libqt6svg6`)
- libevdev (`libevdev-dev`)
- Qt 6 (at least version 6.5.1) (`qt6-base-dev` `qt6-base-private-dev` `qt6-base-dev-tools` `qt6-tools-dev` `libqt6svg6`)
- git (`git`) (Note: needed to clone the repository and at build time)
- When Wayland is enabled (default): (`libwayland-dev` `libwayland-egl-backend-dev` `extra-cmake-modules` `qt6-wayland`)
- Optional for RetroAchievements (on by default): libcurl (`libcurl4-gnutls-dev`)
- Optional for faster building: Ninja (`ninja-build`)
1. Clone the repository. Submodules aren't necessary, there is only one and it is only used for Windows (`git clone https://github.com/stenzek/duckstation.git -b dev`).
1. Clone the repository: `git clone https://github.com/stenzek/duckstation.git -b dev`.
2. Create a build directory, either in-tree or elsewhere.
3. Run CMake to configure the build system. Assuming a build subdirectory of `build-release`, run `cmake -Bbuild-release -DCMAKE_BUILD_TYPE=Release`. If you have installed Ninja, add `-GNinja` at the end of the CMake command line for faster builds.
4. Compile the source code. For the example above, run `cmake --build build-release --parallel`.
@ -166,13 +172,13 @@ Requirements (Debian/Ubuntu package names):
Requirements:
- CMake
- SDL2 (at least version 2.0.22)
- Qt 6 (at least version 6.5.0)
- SDL2 (at least version 2.28.2)
- Qt 6 (at least version 6.5.1)
Optional (recommended for faster builds):
- Ninja
1. Clone the repository. Submodules aren't necessary; there is only one and it is only used for Windows (`git clone https://github.com/stenzek/duckstation.git`).
1. Clone the repository: `git clone https://github.com/stenzek/duckstation.git`.
2. Run CMake to configure the build system: `cmake -Bbuild-release -DCMAKE_BUILD_TYPE=Release -DBUILD_QT_FRONTEND=ON -DUSE_SDL2=ON`. You may need to specify `-DQt6_DIR` depending on your system. If you have installed Ninja, add `-GNinja` at the end of the CMake command line for faster builds.
4. Compile the source code: `cmake --build build-release --parallel`.
5. Run the binary, located in the build directory under `bin/DuckStation.app`.