Skip to content

Commit 00b3aca

Browse files
committed
Revert scripts for now, we'll do more on another branch
1 parent 1f7452e commit 00b3aca

File tree

10 files changed

+269
-668
lines changed

10 files changed

+269
-668
lines changed
Lines changed: 7 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -1,123 +1,13 @@
1-
name: Combined CI
1+
name: Dolphin-AppImage
22

3-
on:
3+
on:
44
push:
5-
pull_request:
5+
workflow_dispatch:
6+
schedule:
7+
- cron: "15 0 * * 3"
68

7-
jobs:
8-
build_flatpak:
9-
runs-on: ubuntu-latest
10-
container:
11-
image: bilelmoussaoui/flatpak-github-actions:gnome-nightly
12-
options: --privileged
13-
steps:
14-
- uses: actions/checkout@v2
15-
- name: Purge .git for space reasons
16-
run: rm -rf /home/runner/work/Project-Plus-Dolphin/Project-Plus-Dolphin/.git
17-
- name: Setup Packages
18-
run: |
19-
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo && \
20-
flatpak install org.kde.Sdk//5.15 org.kde.Platform//5.15 -y && \
21-
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
22-
- name: Run Flatpak Builder
23-
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
24-
with:
25-
manifest-path: Distribution/flatpak.yml
26-
bundle: Project-Plus-Dolphin-flatpak-linux-x86_64.flatpak
27-
28-
build_macos:
29-
runs-on: macos11-x64-nayla
30-
steps:
31-
- uses: actions/checkout@v2
32-
- name: Setup Submodules
33-
run: git config --global --add safe.directory . && git submodule update --init --recursive
34-
- name: Build
35-
run: |
36-
mkdir -p build && cd build && cmake .. -G Ninja -DCMAKE_CXX_FLAGS="-Xclang -fcolor-diagnostics" -DCMAKE_PREFIX_PATH=$(brew --prefix qt6) -DDISTRIBUTOR="Project Plus" && ninja -j8
37-
- name: Prepare macOS Build Artifact
38-
# yes we have to double zip to preserve perms.
39-
run: |
40-
mv build/Binaries/Project-Plus-Dolphin.app build/Binaries/Project-Plus-Dolphin.app
41-
mkdir -p build/OUT
42-
mv build/Binaries/Project-Plus-Dolphin.app build/OUT/
43-
cd build/OUT
44-
xattr -cr Project-Plus-Dolphin.app
45-
zip -r Project-Plus-Dolphin-macOS-x86_64.zip Project-Plus-Dolphin.app
46-
rm -rf Project-Plus-Dolphin.app
47-
- name: Upload Build Artifact
48-
uses: actions/upload-artifact@v4
49-
with:
50-
name: Project-Plus-Dolphin-macOS-x86_64
51-
path: build/OUT/
52-
53-
54-
build_windows:
55-
strategy:
56-
fail-fast: false
57-
matrix:
58-
build_type: [ Netplay ]
59-
include:
60-
- build_type: Netplay
61-
artifact_name: windows64-netplay
62-
build_config: -G "Ninja" -DCMAKE_SYSTEM_VERSION="10.0.22621" -DCMAKE_BUILD_TYPE="Release" -DQt6_DIR:STRING="D:\a\dolphin\dolphin\Externals\Qt\Qt6.3.0\x64\lib\cmake\Qt6\"
63-
env:
64-
DXSDK_DIR: "C:\\Program Files (x86)\\Microsoft DirectX SDK (June 2010)\\"
65-
name: "Windows ${{ matrix.build_type }}"
66-
runs-on: windows-2022
67-
steps:
68-
- name: "Checkout"
69-
uses: actions/checkout@v2
70-
with:
71-
submodules: recursive
72-
- name: 'Fetch Git Tags'
73-
shell: bash
74-
if: success()
75-
run: |
76-
git fetch --prune --unshallow
77-
echo "GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)" >> $GITHUB_ENV
78-
echo "GIT_HASH=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
79-
echo "GIT_TAG=$(git describe --tags --abbrev=0)" >> $GITHUB_ENV
80-
echo "CURR_DATE=$(date +%Y-%m-%d)" >> $GITHUB_ENV
81-
- uses: seanmiddleditch/gha-setup-ninja@master
82-
- uses: egor-tensin/vs-shell@v2
83-
# - name: "Install Windows SDK"
84-
# shell: pwsh
85-
# working-directory: ${{ github.workspace }}
86-
# run: |
87-
# powershell -NoLogo -Sta -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command ./install-windows-sdk.ps1 22621
88-
- name: "Build ${{ matrix.build_type }} Dolphin"
89-
shell: cmd
90-
working-directory: ${{ github.workspace }}
91-
run: |
92-
SET PATH=%PATH%;C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64;C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x86;C:\Program Files\7-Zip;C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin;C:\Python27\;C:\Python27\Scripts;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin;C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\Git\cmd
93-
cd ./Source
94-
msbuild.exe /v:m /p:Platform=x64 /p:Configuration=Release dolphin-emu.sln
95-
- name: "Package ${{ matrix.build_type }}"
96-
working-directory: ${{ github.workspace }}
97-
run: |
98-
Xcopy /Y /E /I .\Data\Games .\Binary\x64\Games
99-
Xcopy /Y /E /I .\Data\Launcher .\Binary\x64\Launcher
100-
Xcopy /Y /E /I .\Data\User .\Binary\x64\User
101-
Xcopy /Y /E /I .\Data\Sys .\Binary\x64\Sys
102-
cd .\Binary\x64\
103-
fsutil file createnew portable.txt 0
104-
- name: Package Artifact
105-
working-directory: ${{ github.workspace }}
106-
run: |
107-
$FILE_NAME="${{ env.CURR_DATE }}-${{ env.GIT_HASH }}-${{ env.GIT_TAG }}-${{ matrix.artifact_name }}.zip"
108-
mkdir artifact
109-
cd .\Binary\x64\
110-
fsutil file createnew portable.txt 0
111-
7z a $FILE_NAME .\*
112-
move $FILE_NAME ..\..\artifact\
113-
- name: "Publish"
114-
if: success()
115-
uses: actions/upload-artifact@v4
116-
with:
117-
name: ${{ matrix.artifact_name }}
118-
path: "./artifact/"
119-
120-
build_appimage:
9+
jobs:
10+
dolphin-appimage:
12111
name: Project Plus Dolphin bundled as appimage
12212
runs-on: ubuntu-24.04
12313
env:

.github/workflows/macos_build.yml

Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
name: MacOS Build Steps
2+
3+
on: [push, pull_request]
4+
5+
jobs:
6+
build_macos:
7+
name: macOS Build
8+
runs-on: macos-14
9+
env:
10+
CCACHE_BASEDIR: ${{ github.workspace }}
11+
CCACHE_DIR: ${{ github.workspace }}/.ccache
12+
CCACHE_COMPRESS: true
13+
CCACHE_COMPRESSLEVEL: 9
14+
CCACHE_MAXSIZE: 200M
15+
16+
steps:
17+
- name: Checkout Repository
18+
uses: actions/checkout@v4
19+
with:
20+
submodules: recursive
21+
22+
- name: Install Packages
23+
env:
24+
HOMEBREW_NO_INSTALL_CLEANUP: 1
25+
HOMEBREW_NO_ANALYTICS: 1
26+
run: |
27+
if ! brew install ccache ninja; then
28+
brew update
29+
brew install ccache ninja
30+
fi
31+
32+
- name: Cache Dependencies
33+
id: cache-deps
34+
uses: actions/cache@v4
35+
with:
36+
path: ~/deps
37+
key: macOS deps ${{ hashFiles('.github/workflows/scripts/macos/build-dependencies.sh') }}
38+
39+
- name: Build Dependencies
40+
if: steps.cache-deps.outputs.cache-hit != 'true'
41+
run: .github/workflows/scripts/macos/build-dependencies.sh
42+
43+
- name: Cache MoltenVK
44+
id: cache-moltenvk
45+
uses: actions/cache@v4
46+
with:
47+
path: ~/moltenvk
48+
key: macOS MoltenVK ${{ hashFiles('Externals/MoltenVK') }}
49+
50+
- name: Build MoltenVK
51+
if: steps.cache-moltenvk.outputs.cache-hit != 'true'
52+
run: |
53+
MVK_VER="$(sed -nr 's/^.*set\(MOLTENVK_VERSION "([^"]+)".*$/\1/p' Externals/MoltenVK/CMakeLists.txt)"
54+
if [ -z "$MVK_VER" ]; then
55+
echo "::error::Failed to parse MoltenVK version from CMakeLists"
56+
exit 1
57+
fi
58+
git clone --depth 1 --branch "$MVK_VER" https://github.com/KhronosGroup/MoltenVK.git mvk-build
59+
pushd mvk-build
60+
git apply ../Externals/MoltenVK/patches/*.patch
61+
./fetchDependencies --macos
62+
make macos
63+
ls -l Package/Release/MoltenVK/dynamic/*
64+
chmod 755 Package/Release/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib
65+
mkdir -p "$HOME/moltenvk/lib/"
66+
mv Package/Release/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib "$HOME/moltenvk/lib/"
67+
popd
68+
rm -rf mvk-build
69+
70+
# -- SETUP CCACHE - https://cristianadam.eu/20200113/speeding-up-c-plus-plus-github-actions-using-ccache/
71+
- name: Prepare ccache timestamp
72+
id: ccache_cache_timestamp
73+
run: echo "timestamp=$(date -u "+%Y-%m-%d-%H;%M;%S")" >> $GITHUB_OUTPUT
74+
75+
- name: Cache ccache cache
76+
uses: actions/cache@v4
77+
with:
78+
path: .ccache
79+
key: macOS ccache ${{ steps.ccache_cache_timestamp.outputs.timestamp }}
80+
restore-keys: macOS ccache
81+
82+
- name: Generate CMake Files
83+
run: |
84+
COMMON_ARGS=(
85+
-DCMAKE_PREFIX_PATH="$HOME/deps;$HOME/moltenvk"
86+
-DCMAKE_BUILD_TYPE=Release
87+
-DUSE_BUNDLED_MOLTENVK=OFF
88+
-DMACOS_CODE_SIGNING=OFF
89+
-DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON
90+
-DCMAKE_C_COMPILER_LAUNCHER=ccache
91+
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache
92+
-DCMAKE_DISABLE_PRECOMPILE_HEADERS=ON
93+
-DUSE_SYSTEM_LIBS=OFF
94+
-DUSE_SYSTEM_BZIP2=ON
95+
-DUSE_SYSTEM_CURL=ON
96+
-DUSE_SYSTEM_ICONV=ON
97+
-DUSE_SYSTEM_SDL2=ON
98+
-GNinja
99+
)
100+
101+
cmake -DCMAKE_OSX_ARCHITECTURES=x86_64 \
102+
-DCMAKE_SYSTEM_PROCESSOR=x86_64 \
103+
-DCMAKE_SYSTEM_NAME=Darwin \
104+
-DCMAKE_OSX_DEPLOYMENT_TARGET=11.00 \
105+
"${COMMON_ARGS[@]}" \
106+
-B build .
107+
cmake -DCMAKE_OSX_ARCHITECTURES=arm64 \
108+
-DCMAKE_SYSTEM_PROCESSOR=arm64 \
109+
-DCMAKE_SYSTEM_NAME=Darwin \
110+
-DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 \
111+
"${COMMON_ARGS[@]}" \
112+
-B build-arm .
113+
114+
- name: Build Dolphin (x86_64)
115+
working-directory: build
116+
run: |
117+
ccache -p
118+
ccache -s
119+
ccache -z
120+
ninja dolphin-emu
121+
ccache -s
122+
123+
- name: Build Dolphin (arm64)
124+
working-directory: build-arm
125+
run: |
126+
ccache -p
127+
ccache -s
128+
ccache -z
129+
ninja dolphin-emu
130+
ccache -s
131+
132+
- name: Prepare Build Artifacts
133+
id: create-artifact
134+
env:
135+
EVENT_NAME: ${{ github.event_name }}
136+
PR_TITLE: ${{ github.event.pull_request.title }}
137+
PR_NUM: ${{ github.event.pull_request.number }}
138+
PR_SHA: ${{ github.event.pull_request.head.sha }}
139+
run: |
140+
lipo -create build/Binaries/DolphinQt.app/Contents/MacOS/DolphinQt build-arm/Binaries/DolphinQt.app/Contents/MacOS/DolphinQt -o dolphin
141+
mv dolphin build/Binaries/DolphinQt.app/Contents/MacOS/DolphinQt
142+
TAG="$(git tag --points-at HEAD)"
143+
if [ ! -z "$TAG" ]; then
144+
SUFFIX="$TAG"
145+
elif [ "$EVENT_NAME" == "pull_request" ]; then
146+
PR_TITLE=$(echo "${PR_TITLE}" | tr -cd '[a-zA-Z0-9[:space:]]_-')
147+
SUFFIX="pr[$PR_NUM]-sha[$PR_SHA]-title[$PR_TITLE"
148+
SUFFIX=$(printf "%.99s]" "$SUFFIX")
149+
else
150+
SUFFIX="sha[$(git rev-parse --short HEAD)]"
151+
fi
152+
APPNAME="ProjectPlus-$SUFFIX"
153+
mv build/Binaries/DolphinQt.app "$APPNAME.app"
154+
tar --options xz:compression-level=9 -cvJf "$APPNAME.tar.xz" "$APPNAME.app"
155+
echo "name=$APPNAME" >> "$GITHUB_OUTPUT"
156+
157+
- name: Upload Artifact
158+
uses: actions/upload-artifact@v4
159+
with:
160+
name: ${{ steps.create-artifact.outputs.name }}
161+
path: "*.tar.xz"
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
export MACOSX_DEPLOYMENT_TARGET=11.00
6+
INSTALLDIR="$HOME/deps"
7+
NPROCS="$(getconf _NPROCESSORS_ONLN)"
8+
SDL=SDL2-2.30.9
9+
QT=6.2.10
10+
QT_SUFFIX=-opensource
11+
12+
mkdir deps-build
13+
cd deps-build
14+
15+
export PKG_CONFIG_PATH="$INSTALLDIR/lib/pkgconfig:$PKG_CONFIG_PATH"
16+
export LDFLAGS="-L$INSTALLDIR/lib -dead_strip $LDFLAGS"
17+
export CFLAGS="-I$INSTALLDIR/include -Os $CFLAGS"
18+
export CXXFLAGS="-I$INSTALLDIR/include -Os $CXXFLAGS"
19+
20+
cat > SHASUMS <<EOF
21+
24b574f71c87a763f50704bbb630cbe38298d544a1f890f099a4696b1d6beba4 $SDL.tar.gz
22+
efbeff5ad6f4d46e82734a681909892401688432fd7ef02c63d2083304d8265c qtbase-everywhere$QT_SUFFIX-src-$QT.tar.xz
23+
5e04e4b7699d837c52641310ca386373801a24e8924de7ffcc4b84890431eb38 qtsvg-everywhere$QT_SUFFIX-src-$QT.tar.xz
24+
62809b242ebcb0e65ac6738f76d005d24c352a8b813128fa3772906ca50cf980 qttools-everywhere$QT_SUFFIX-src-$QT.tar.xz
25+
57e7cb80d31c32ccbb00bbd7da170970b9effb992970aaf687d4524117aca41e qttranslations-everywhere$QT_SUFFIX-src-$QT.tar.xz
26+
EOF
27+
28+
curl -L \
29+
-O "https://libsdl.org/release/$SDL.tar.gz" \
30+
-O "https://download.qt.io/archive/qt/${QT%.*}/$QT/submodules/qtbase-everywhere$QT_SUFFIX-src-$QT.tar.xz" \
31+
-O "https://download.qt.io/archive/qt/${QT%.*}/$QT/submodules/qtsvg-everywhere$QT_SUFFIX-src-$QT.tar.xz" \
32+
-O "https://download.qt.io/archive/qt/${QT%.*}/$QT/submodules/qttools-everywhere$QT_SUFFIX-src-$QT.tar.xz" \
33+
-O "https://download.qt.io/archive/qt/${QT%.*}/$QT/submodules/qttranslations-everywhere$QT_SUFFIX-src-$QT.tar.xz" \
34+
35+
shasum -a 256 --check SHASUMS
36+
37+
echo "Installing SDL..."
38+
tar xf "$SDL.tar.gz"
39+
cd "$SDL"
40+
CC="clang -arch x86_64 -arch arm64" ./configure --prefix "$INSTALLDIR" --without-x
41+
make "-j$NPROCS"
42+
make install
43+
cd ..
44+
45+
echo "Installing Qt Base..."
46+
tar xf "qtbase-everywhere$QT_SUFFIX-src-$QT.tar.xz"
47+
cd "qtbase-everywhere-src-$QT"
48+
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
49+
make -C build "-j$NPROCS"
50+
make -C build install
51+
cd ..
52+
53+
echo "Installing Qt SVG..."
54+
tar xf "qtsvg-everywhere$QT_SUFFIX-src-$QT.tar.xz"
55+
cd "qtsvg-everywhere-src-$QT"
56+
cmake -B build -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DCMAKE_BUILD_TYPE=Release
57+
make -C build "-j$NPROCS"
58+
make -C build install
59+
cd ..
60+
61+
echo "Installing Qt Tools..."
62+
tar xf "qttools-everywhere$QT_SUFFIX-src-$QT.tar.xz"
63+
cd "qttools-everywhere-src-$QT"
64+
# Linguist relies on a library in the Designer target, which takes 5-7 minutes to build on the CI
65+
# Avoid it by not building Linguist, since we only need the tools that come with it
66+
patch -u src/linguist/CMakeLists.txt <<EOF
67+
--- src/linguist/CMakeLists.txt
68+
+++ src/linguist/CMakeLists.txt
69+
@@ -14,7 +14,7 @@
70+
add_subdirectory(lrelease-pro)
71+
add_subdirectory(lupdate)
72+
add_subdirectory(lupdate-pro)
73+
-if(QT_FEATURE_process AND QT_FEATURE_pushbutton AND QT_FEATURE_toolbutton AND TARGET Qt::Widgets AND NOT no-png)
74+
+if(QT_FEATURE_process AND QT_FEATURE_pushbutton AND QT_FEATURE_toolbutton AND TARGET Qt::Widgets AND TARGET Qt::PrintSupport AND NOT no-png)
75+
add_subdirectory(linguist)
76+
endif()
77+
EOF
78+
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
79+
make -C build "-j$NPROCS"
80+
make -C build install
81+
cd ..
82+
83+
echo "Installing Qt Translations..."
84+
tar xf "qttranslations-everywhere$QT_SUFFIX-src-$QT.tar.xz"
85+
cd "qttranslations-everywhere-src-$QT"
86+
cmake -B build -DCMAKE_PREFIX_PATH="$INSTALLDIR" -DCMAKE_INSTALL_PREFIX="$INSTALLDIR" -DCMAKE_BUILD_TYPE=Release
87+
make -C build "-j$NPROCS"
88+
make -C build install
89+
cd ..
90+
91+
echo "Cleaning up..."
92+
cd ..
93+
rm -r deps-build

0 commit comments

Comments
 (0)