Skip to content

Fix formatting?

Fix formatting? #161

Workflow file for this run

name: Project+ Dolphin Builder
on: [push, pull_request]
jobs:
build_macos:
name: macOS Build x86_64
runs-on: macos-14
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install Packages
run: |
brew install gnu-sed
if ! brew install ccache ninja; then
brew update
brew install ccache ninja
fi
- name: Cache Dependencies
id: cache-deps
uses: actions/cache@v4
with:
path: ~/deps
key: macOS deps ${{ hashFiles('.github/workflows/ci.yml') }}
restore-keys: |
macOS deps
- name: Cache Homebrew
uses: actions/cache@v4
with:
path: |
/opt/homebrew/Cellar
/usr/local/Cellar
/opt/homebrew/Caskroom
/usr/local/Caskroom
~/.cache/Homebrew
key: ${{ runner.os }}-homebrew-${{ hashFiles('**/CMakeLists.txt', '**/cmake/**') }}
restore-keys: |
${{ runner.os }}-homebrew-
- name: Cache ccache
uses: actions/cache@v4
with:
path: |
~/.ccache
~/.cache/ccache
key: ${{ runner.os }}-ccache-${{ hashFiles('**/CMakeLists.txt', '**/cmake/**', '**/*.cpp', '**/*.h', '**/*.hpp') }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-ccache-${{ hashFiles('**/CMakeLists.txt', '**/cmake/**', '**/*.cpp', '**/*.h', '**/*.hpp') }}-
${{ runner.os }}-ccache-
- name: Build Dependencies
if: steps.cache-deps.outputs.cache-hit != 'true'
run: |
#!/bin/bash
set -e
export MACOSX_DEPLOYMENT_TARGET=11.00
INSTALLDIR="$HOME/deps"
NPROCS="$(getconf _NPROCESSORS_ONLN)"
SDL=SDL2-2.30.9
QT=6.2.10
QT_SUFFIX=-opensource
mkdir deps-build
cd deps-build
export PKG_CONFIG_PATH="$INSTALLDIR/lib/pkgconfig:$PKG_CONFIG_PATH"
export LDFLAGS="-L$INSTALLDIR/lib -dead_strip $LDFLAGS"
export CFLAGS="-I$INSTALLDIR/include -Os $CFLAGS"
export CXXFLAGS="-I$INSTALLDIR/include -Os $CXXFLAGS"
echo "Downloading dependencies..."
curl -L \
-O "https://libsdl.org/release/$SDL.tar.gz" \
-O "https://download.qt.io/archive/qt/${QT%.*}/$QT/submodules/qtbase-everywhere$QT_SUFFIX-src-$QT.tar.xz" \
-O "https://download.qt.io/archive/qt/${QT%.*}/$QT/submodules/qtsvg-everywhere$QT_SUFFIX-src-$QT.tar.xz" \
-O "https://download.qt.io/archive/qt/${QT%.*}/$QT/submodules/qttools-everywhere$QT_SUFFIX-src-$QT.tar.xz" \
-O "https://download.qt.io/archive/qt/${QT%.*}/$QT/submodules/qttranslations-everywhere$QT_SUFFIX-src-$QT.tar.xz"
echo "Installing SDL..."
tar xf "$SDL.tar.gz"
cd "$SDL"
CC="clang -arch x86_64" ./configure --prefix "$INSTALLDIR" --without-x
make "-j$NPROCS"
make install
cd ..
echo "Installing Qt Base..."
tar xf "qtbase-everywhere$QT_SUFFIX-src-$QT.tar.xz"
cd "qtbase-everywhere-src-$QT"
cmake -B build -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DCMAKE_BUILD_TYPE=Release -DFEATURE_optimize_size=ON -DFEATURE_dbus=OFF -DFEATURE_framework=OFF -DFEATURE_icu=OFF -DFEATURE_opengl=OFF -DFEATURE_printsupport=OFF -DFEATURE_sql=OFF -DFEATURE_gssapi=OFF -DFEATURE_system_png=OFF -DFEATURE_system_jpeg=OFF -DCMAKE_MESSAGE_LOG_LEVEL=STATUS
make -C build "-j$NPROCS"
make -C build install
cd ..
echo "Installing Qt SVG..."
tar xf "qtsvg-everywhere$QT_SUFFIX-src-$QT.tar.xz"
cd "qtsvg-everywhere-src-$QT"
cmake -B build -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DCMAKE_BUILD_TYPE=Release
make -C build "-j$NPROCS"
make -C build install
cd ..
echo "Installing Qt Tools..."
tar xf "qttools-everywhere$QT_SUFFIX-src-$QT.tar.xz"
cd "qttools-everywhere-src-$QT"
patch -u src/linguist/CMakeLists.txt <<EOF
--- src/linguist/CMakeLists.txt
+++ src/linguist/CMakeLists.txt
@@ -14,7 +14,7 @@
add_subdirectory(lrelease-pro)
add_subdirectory(lupdate)
add_subdirectory(lupdate-pro)
-if(QT_FEATURE_process AND QT_FEATURE_pushbutton AND QT_FEATURE_toolbutton AND TARGET Qt::Widgets AND NOT no-png)
+if(QT_FEATURE_process AND QT_FEATURE_pushbutton AND QT_FEATURE_toolbutton AND TARGET Qt::Widgets AND TARGET Qt::PrintSupport AND NOT no-png)
add_subdirectory(linguist)
endif()
EOF
cmake -B build -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DCMAKE_BUILD_TYPE=Release -DFEATURE_assistant=OFF -DFEATURE_clang=OFF -DFEATURE_designer=OFF -DFEATURE_kmap2qmap=OFF -DFEATURE_pixeltool=OFF -DFEATURE_pkg_config=OFF -DFEATURE_qev=OFF -DFEATURE_qtattributionsscanner=OFF -DFEATURE_qtdiag=OFF -DFEATURE_qtplugininfo=OFF -DFEATURE_linguist=OFF
make -C build "-j$NPROCS"
make -C build install
cd ..
echo "Installing Qt Translations... "
tar xf "qttranslations-everywhere$QT_SUFFIX-src-$QT.tar.xz"
cd "qttranslations-everywhere-src-$QT"
cmake -B build -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DCMAKE_BUILD_TYPE=Release
make -C build "-j$NPROCS"
cd ..
echo "Cleaning up..."
cd ..
rm -rf deps-build
echo "Dependencies built successfully in $INSTALLDIR"
- name: Cache MoltenVK
id: cache-moltenvk
uses: actions/cache@v4
with:
path: ~/moltenvk
key: macOS MoltenVK ${{ hashFiles('Externals/MoltenVK') }}
- name: Build MoltenVK
if: steps.cache-moltenvk.outputs.cache-hit != 'true'
run: >
MVK_VER="$(sed -nr 's/^.*set\(MOLTENVK_VERSION "([^"]+)".*$/\1/p'
Externals/MoltenVK/CMakeLists.txt)"
if [ -z "$MVK_VER" ]; then
echo "::error::Failed to parse MoltenVK version from CMakeLists"
exit 1
fi
git clone --depth 1 --branch "$MVK_VER" https://github.com/KhronosGroup/MoltenVK.git mvk-build
pushd mvk-build
git apply ../Externals/MoltenVK/patches/*.patch
./fetchDependencies --macos
make macos
ls -l Package/Release/MoltenVK/dynamic/*
chmod 755 Package/Release/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib
mkdir -p "$HOME/moltenvk/lib/"
mv Package/Release/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib "$HOME/moltenvk/lib/"
popd
rm -rf mvk-build
- name: Cache CMake build
uses: actions/cache@v4
with:
path: |
build
~/.cache/cmake
~/.cache/ninja
key: ${{ runner.os }}-cmake-macos-${{ hashFiles('**/CMakeLists.txt', '**/cmake/**', '**/*.cpp', '**/*.h', '**/*.hpp') }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-cmake-macos-${{ hashFiles('**/CMakeLists.txt', '**/cmake/**', '**/*.cpp', '**/*.h', '**/*.hpp') }}-
${{ runner.os }}-cmake-macos-${{ hashFiles('**/CMakeLists.txt', '**/cmake/**') }}-
${{ runner.os }}-cmake-macos-
- name: Generate CMake Files
run: |
# Configure ccache for faster builds
export CCACHE_DIR=~/.ccache
export CCACHE_MAXSIZE=10G
export CCACHE_COMPRESS=1
export CCACHE_COMPRESSLEVEL=6
COMMON_ARGS=(
-DCMAKE_PREFIX_PATH="$HOME/deps;$HOME/moltenvk"
-DCMAKE_BUILD_TYPE=Release
-DUSE_BUNDLED_MOLTENVK=OFF
-DMACOS_CODE_SIGNING=OFF
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON
-DCMAKE_DISABLE_PRECOMPILE_HEADERS=ON
-DUSE_SYSTEM_LIBS=OFF
-DUSE_SYSTEM_BZIP2=ON
-DUSE_SYSTEM_CURL=ON
-DUSE_SYSTEM_ICONV=ON
-DUSE_SYSTEM_SDL3=OFF
-G Ninja
)
cmake -DCMAKE_OSX_ARCHITECTURES=x86_64 \
-DCMAKE_SYSTEM_PROCESSOR=x86_64 \
-DCMAKE_SYSTEM_NAME=Darwin \
-DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 \
"${COMMON_ARGS[@]}" \
-B build .
# cmake -DCMAKE_OSX_ARCHITECTURES=arm64 \
# -DCMAKE_SYSTEM_PROCESSOR=arm64 \
# -DCMAKE_SYSTEM_NAME=Darwin \
# -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 \
# "${COMMON_ARGS[@]}" \
# -B build-arm .
- name: Build Dolphin (x86_64)
working-directory: build
run: ninja dolphin
# - name: Build Dolphin (arm64)
# working-directory: build-arm
# run: ninja dolphin
- name: Prepare Build Artifacts
run: >
mkdir -p build/OUT
rsync -av build/Binaries/DolphinQt.app/ build/OUT/Dolphin.app/
cd build/OUT
hdiutil create -volname "Dolphin" -srcfolder Dolphin.app -ov -format UDZO Dolphin-macOS-x86_64.dmg
rm -rf Dolphin.app
# - name: Codesign Executable
# run: >
# if [ -n "${{ secrets.MACOS_CERTIFICATE }}" ]; then
# echo "Code signing with local certificate..."
#
# # Create a temporary keychain
# security create-keychain -p "temp" build.keychain
# security list-keychains -s build.keychain
# security default-keychain -s build.keychain
# security unlock-keychain -p "temp" build.keychain
# security set-keychain-settings build.keychain
#
# # Import the certificate
# echo "${{ secrets.MACOS_CERTIFICATE }}" | base64 -d > certificate.p12
# security import certificate.p12 -k build.keychain -P "${{ secrets.MACOS_CERTIFICATE_PASSWORD }}" -T /usr/bin/codesign
#
# # Set the certificate as trusted
# security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "temp" build.keychain
#
# # Code sign the app (use --deep for complete signing)
# codesign --force --deep --sign "66B0C1FCF086977A36F88689D6FBD6269400E086" --keychain build.keychain "/build/OUT/Dolphin.app" -v
#
# # Clean up
# security delete-keychain build.keychain
# rm -f certificate.p12
# else
# echo "No certificate provided, skipping code signing"
# fi
- name: Upload Build Artifact
uses: actions/upload-artifact@v4
with:
name: Dolphin-macOS-x86_64
path: build/OUT/Dolphin-macOS-x86_64.dmg
build_windows_x86_64:
name: Windows Build
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Setup Submodules
run: git config --global --add safe.directory . && git submodule update --init --recursive
- name: Setup MSBuild
uses: microsoft/[email protected]
with:
vs-version: '16.6.2'
- name: Build
run: msbuild "Source\dolphin-emu.sln" /verbosity:minimal /property:Configuration=Release /property:Platform=x64
- name: Upload Build Artifact
uses: actions/upload-artifact@v4
with:
name: Project-Plus-Dolphin-windows-x86_64
path: Binary/x64/
build_flatpak:
name: Flatpak Build
runs-on: ubuntu-latest
container:
image: bilelmoussaoui/flatpak-github-actions:gnome-nightly
options: --privileged
steps:
- uses: actions/checkout@v2
- name: Purge .git for space reasons
run: rm -rf /home/runner/work/Project-Plus-Dolphin-src/.git
- name: Setup Packages
run: |
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo && \
flatpak install org.kde.Sdk//5.15 org.kde.Platform//5.15 -y && \
dnf install libusb1-devel cmake git gcc-c++ libXext-devel libgudev qt6-qtbase-devel systemd-devel openal-soft-devel libevdev-devel libao-devel SOIL-devel libXrandr-devel pulseaudio-libs-devel bluez-libs-devel p7zip SDL2-devel make automake gcc gcc-c++ kernel-devel -y
- name: Run Flatpak Builder
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
with:
manifest-path: Distribution/flatpak/flatpak.yml
bundle: Project-Plus-Dolphin-${{ env.DOLPHINVER }}.flatpak
build_appimage:
name: AppImage Build
runs-on: ubuntu-24.04
env:
yaqti: 6.7.3
steps:
- name: Checkout Upstream Repo
uses: actions/checkout@v4
with:
repository: Project-Plus-Development-Team/Project-Plus-Dolphin
ref: master
- name: Checkout Submodules
if: steps.cache-submodules.outputs.cache-hit != 'true'
run: git submodule update --init --recursive -j $(getconf _NPROCESSORS_ONLN)
- name: Checkout AppImage Repo
uses: actions/checkout@v4
with:
clean: false
path: ci
# Runs the Dolphin action
- name: Get Date
id: get-date
run: |
echo "date=$(/bin/date -u "+%Y%m%d")" >> $GITHUB_OUTPUT
shell: bash
- name: cache
uses: actions/cache@v4
with:
path: ~/.ccache
key: build-ccache-${{ steps.get-date.outputs.date }}
restore-keys: |
build-ccache-
env:
CCACHE_MAXSIZE: 200M
- name: Install Qt
run: |
curl -sLO https://files.pythonhosted.org/packages/47/42/351389ca36c7adfc5f4e92d086cdb2bdbde13f1b89ee882f4a1cab2183ac/yaqti-2021.7.29-py3-none-any.whl
python3 -m pip install yaqti-2021.7.29-py3-none-any.whl
pyver=$(python3 --version | awk '{print $2}')
curl -sL https://raw.githubusercontent.com/qurious-pixel/yaqti/fetch/yaqti/fetchers.py -o $HOME/.local/lib/python${pyver%.*}/site-packages/yaqti/fetchers.py
python -m yaqti install --os linux --platform desktop --version ${{ env.yaqti }} --modules linux_gcc_64 --set-envs --install-deps
- name: Install Packages
run: |
sudo apt-get install -y build-essential dialog dpkg libbluetooth-dev liblz4-dev liblzma-dev libssl-dev libopus-dev libpng-dev libsystemd-dev \
libzip-dev libzstd-dev zlib1g-dev libasound2-dev libpulse-dev pulseaudio p7zip p7zip-full libsfml-dev libminiupnpc-dev libmbedtls-dev libpugixml-dev \
libbz2-dev liblzo2-dev libxi-dev libavcodec-dev libudev-dev libusb-1.0-0-dev libevdev-dev libc6-dev libhidapi-dev libavformat-dev libavdevice-dev \
libfmt-dev libwayland-dev libxrandr-dev libglu1-mesa-dev libcurl4-openssl-dev x11-utils zenity wget curl git gettext ccache make cmake ninja-build \
libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-icccm4 libxcb-image0-dev libxcb-cursor-dev
- name: Dolphin-Build Number
run: |
export LASTCOMMIT=$(git log --pretty=format:%H -1)
export DOLPHINVER="v3.1.2-mainline-beta.5"
echo "DOLPHIN Build $DOLPHINVER"
echo "DOLPHINVER=$DOLPHINVER" >> $GITHUB_ENV
sed -i "s|\${DOLPHIN_WC_DESCRIBE}|$DOLPHINVER|g" Source/Core/Common/scmrev.h.in
- name: Update Patchelf
run: |
PATCHELFVER=0.14.5
curl -sL https://github.com/NixOS/patchelf/releases/download/${PATCHELFVER}/patchelf-${PATCHELFVER}-x86_64.tar.gz -o /tmp/patchelf.tar.gz
tar -xvf /tmp/patchelf.tar.gz --directory /tmp/ ./bin/patchelf --strip-components=2
sudo mv /tmp/patchelf /usr/bin
patchelf --version
- name: Build Dolphin
run: |
export Qt_DIR="${{github.workspace}}/qt/${{ env.yaqti }}/gcc_64/lib/cmake/Qt6"
mkdir -p "$HOME/.ccache"
mkdir build
cd build
cmake .. -GNinja -DCMAKE_C_COMPILER=/usr/lib/ccache/gcc-13 -DCMAKE_CXX_COMPILER=/usr/lib/ccache/g++-13 -DCMAKE_PREFIX_PATH="${{github.workspace}}/qt/${{ env.yaqti }}/gcc_64/" -Ddatadir:PATH="share/project-plus-dolphin" -DBIN_INSTALL_DIR="install/usr/bin" -DCMAKE_INSTALL_PREFIX="install/usr" -DINC_INSTALL_DIR="install/usr/include" -DLIB_INSTALL_DIR="install/usr/lib" -DPKGCONFIG_INSTALL_DIR="install/usr/lib/pkgconfig" -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -DENABLE_NOGUI=OFF
ninja
- name: Install Dolphin
run: |
cd build
ninja install
- name: Package Dolphin-Binary
run: |
mkdir -p $GITHUB_WORKSPACE/{artifacts,uploads}
cp -P build/install/usr/bin/project-plus-dolphin $GITHUB_WORKSPACE/artifacts
- name: Package Dolphin-AppImage
env:
QT_BASE_DIR: /qt/${{ env.yaqti }}/gcc_64
QTDIR: $QT_BASE_DIR
run: |
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${GITHUB_WORKSPACE}/qt/${{ env.yaqti }}/gcc_64/lib/
export PATH=$QT_BASE_DIR/bin:$PATH
echo "PATH $PATH"
sudo ln -s ${GITHUB_WORKSPACE}/$(find qt/ -name qmake) /usr/bin
qmake -v
cd /tmp
curl -sSfLO "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage"
curl -sSfLO "https://github.com/AppImage/AppImageUpdate/releases/download/continuous/AppImageUpdate-x86_64.AppImage"
chmod a+x linuxdeploy*.AppImage
chmod a+x AppImageUpdate-x86_64.AppImage
./linuxdeploy-x86_64.AppImage --appimage-extract
curl -sSfL "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage" -o /tmp/squashfs-root/usr/bin/linuxdeploy-plugin-qt.AppImage
chmod a+x /tmp/squashfs-root/usr/bin/linuxdeploy-plugin-qt.AppImage
mv /tmp/squashfs-root/usr/bin/patchelf /tmp/squashfs-root/usr/bin/patchelf.orig
sudo cp /usr/bin/patchelf /tmp/squashfs-root/usr/bin/patchelf
cd $GITHUB_WORKSPACE
mkdir -p squashfs-root
cp -a build/install/usr $GITHUB_WORKSPACE/squashfs-root/
cp Data/project-plus-dolphin.svg ./squashfs-root/project-plus-dolphin.svg
cp Data/project-plus-dolphin.desktop ./squashfs-root/project-plus-dolphin.desktop
curl -sSfL https://github.com/AppImage/AppImageKit/releases/download/continuous/runtime-x86_64 -o ./squashfs-root/runtime
curl -sSfL "https://github.com/RPCS3/AppImageKit-checkrt/releases/download/continuous2/AppRun-patched-x86_64" -o ./squashfs-root/AppRun-patched
cp ci/Distribution/appimage/{AppRun,update.sh} ./squashfs-root/
mv /tmp/AppImageUpdate-x86_64.AppImage ./squashfs-root/usr/bin/AppImageUpdate
echo ${{ env.DOLPHINVER }} > ./squashfs-root/version.txt
chmod a+x ./squashfs-root/AppRun
chmod a+x ./squashfs-root/runtime
chmod a+x ./squashfs-root/AppRun-patched
chmod a+x ./squashfs-root/update.sh
export UPD_INFO="gh-releases-zsync|Project-Plus-Development-Team|Project-Plus-Dolphin|continuous|Project+_Dolphin-x86_64.AppImage.zsync"
/tmp/squashfs-root/AppRun --appdir="$GITHUB_WORKSPACE"/squashfs-root/ --plugin qt -d "$GITHUB_WORKSPACE"/squashfs-root/project-plus-dolphin.desktop -i "$GITHUB_WORKSPACE"/squashfs-root/project-plus-dolphin.svg \
--exclude-library=libglib* --output appimage
ls . | grep *.AppImage
mv $(ls . | grep *.AppImage) $GITHUB_WORKSPACE/artifacts
ls -al $GITHUB_WORKSPACE/artifacts
sed -i 's/AppRun.wrapped/AppRun-patched/g' "$GITHUB_WORKSPACE"/squashfs-root/AppRun
cat "$GITHUB_WORKSPACE"/squashfs-root/AppRun
/tmp/squashfs-root/usr/bin/linuxdeploy-plugin-appimage --appdir="$GITHUB_WORKSPACE"/squashfs-root/
ls . | grep *.AppImage
mv Project+_Dolphin-x86_64.AppImage $GITHUB_WORKSPACE/uploads/Dolphin_${DOLPHINVER}.AppImage
ls -al $GITHUB_WORKSPACE/uploads
continue-on-error: true
- name: Upload Static Build
uses: actions/upload-artifact@v4
with:
name: Project-Plus-Dolphin_${{ env.DOLPHINVER }}
path: uploads/
env:
DEFAULT_BRANCH: git-actions
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}