GilbertClaus commited on
Commit
3708354
·
1 Parent(s): e18d0a2

Tambah Data

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. Releases/Yuzu/android.zip +2 -2
  2. Releases/Yuzu/apk.zip +3 -0
  3. Releases/Yuzu/mainline.zip +3 -0
  4. Releases/Yuzu/windows.zip +3 -0
  5. Source Code/Citra/.ci/android.sh +22 -0
  6. Source Code/Citra/.ci/clang-format.sh +37 -0
  7. Source Code/Citra/.ci/linux.sh +20 -0
  8. Source Code/Citra/.ci/macos-universal.sh +43 -0
  9. Source Code/Citra/.ci/macos.sh +21 -0
  10. Source Code/Citra/.ci/pack.sh +41 -0
  11. Source Code/Citra/.ci/source.sh +20 -0
  12. Source Code/Citra/.ci/transifex.sh +14 -0
  13. Source Code/Citra/.ci/windows.sh +17 -0
  14. Source Code/Citra/.lgtm.yml +13 -0
  15. Source Code/Yuzu/.ci/scripts/android/build.sh +29 -0
  16. Source Code/Yuzu/.ci/scripts/android/eabuild.sh +21 -0
  17. Source Code/Yuzu/.ci/scripts/android/mainlinebuild.sh +21 -0
  18. Source Code/Yuzu/.ci/scripts/android/upload.sh +22 -0
  19. Source Code/Yuzu/.ci/scripts/clang/docker.sh +32 -0
  20. Source Code/Yuzu/.ci/scripts/clang/exec.sh +11 -0
  21. Source Code/Yuzu/.ci/scripts/clang/upload.sh +23 -0
  22. Source Code/Yuzu/.ci/scripts/common/post-upload.sh +20 -0
  23. Source Code/Yuzu/.ci/scripts/common/pre-upload.sh +10 -0
  24. Source Code/Yuzu/.ci/scripts/format/docker.sh +9 -0
  25. Source Code/Yuzu/.ci/scripts/format/exec.sh +10 -0
  26. Source Code/Yuzu/.ci/scripts/format/script.sh +37 -0
  27. Source Code/Yuzu/.ci/scripts/linux/docker.sh +79 -0
  28. Source Code/Yuzu/.ci/scripts/linux/exec.sh +16 -0
  29. Source Code/Yuzu/.ci/scripts/linux/upload.sh +67 -0
  30. Source Code/Yuzu/.ci/scripts/merge/apply-patches-by-label-private.py +48 -0
  31. Source Code/Yuzu/.ci/scripts/merge/apply-patches-by-label.py +38 -0
  32. Source Code/Yuzu/.ci/scripts/merge/check-label-presence.py +21 -0
  33. Source Code/Yuzu/.ci/scripts/merge/yuzubot-git-config.sh +5 -0
  34. Source Code/Yuzu/.ci/scripts/transifex/docker.sh +19 -0
  35. Source Code/Yuzu/.ci/scripts/windows/docker.sh +66 -0
  36. Source Code/Yuzu/.ci/scripts/windows/exec.sh +11 -0
  37. Source Code/Yuzu/.ci/scripts/windows/install-vulkan-sdk.ps1 +33 -0
  38. Source Code/Yuzu/.ci/scripts/windows/scan_dll.py +109 -0
  39. Source Code/Yuzu/.ci/scripts/windows/upload.ps1 +118 -0
  40. Source Code/Yuzu/.ci/scripts/windows/upload.sh +22 -0
  41. Source Code/Yuzu/.ci/templates/build-mock.yml +8 -0
  42. Source Code/Yuzu/.ci/templates/build-msvc.yml +31 -0
  43. Source Code/Yuzu/.ci/templates/build-single.yml +26 -0
  44. Source Code/Yuzu/.ci/templates/build-standard.yml +33 -0
  45. Source Code/Yuzu/.ci/templates/build-testing.yml +40 -0
  46. Source Code/Yuzu/.ci/templates/format-check.yml +17 -0
  47. Source Code/Yuzu/.ci/templates/merge-private.yml +44 -0
  48. Source Code/Yuzu/.ci/templates/merge.yml +43 -0
  49. Source Code/Yuzu/.ci/templates/mergebot-private.yml +33 -0
  50. Source Code/Yuzu/.ci/templates/mergebot.yml +18 -0
Releases/Yuzu/android.zip CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:0221141a61c7af1f0a179a8ca514a8e829908ec4219d114421f905ab920dc591
3
- size 35803097
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9047a4bcffde130cf20769ab22e3dfce8298cbcd4349a8399ea2eb2630863b36
3
+ size 102856905
Releases/Yuzu/apk.zip ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:0221141a61c7af1f0a179a8ca514a8e829908ec4219d114421f905ab920dc591
3
+ size 35803097
Releases/Yuzu/mainline.zip ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2b6413ea082660f86e2ce78f2b7ca1b79c420751ff4e480f2542a906f1c24b6b
3
+ size 67220852
Releases/Yuzu/windows.zip ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a055ba626734a62fdc51c89c1b1172f94a9e9567bf8fc078e8b8f0037b30a329
3
+ size 100106861
Source Code/Citra/.ci/android.sh ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ export NDK_CCACHE=$(which ccache)
4
+ [ "$GITHUB_REPOSITORY" = "citra-emu/citra-canary" ] &&
5
+ BUILD_FLAVOR=canary ||
6
+ BUILD_FLAVOR=nightly
7
+
8
+ if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then
9
+ export ANDROID_KEYSTORE_FILE="${GITHUB_WORKSPACE}/ks.jks"
10
+ base64 --decode <<< "${ANDROID_KEYSTORE_B64}" > "${ANDROID_KEYSTORE_FILE}"
11
+ fi
12
+
13
+ cd src/android
14
+ chmod +x ./gradlew
15
+ ./gradlew assemble${BUILD_FLAVOR}Release
16
+ ./gradlew bundle${BUILD_FLAVOR}Release
17
+
18
+ ccache -s
19
+
20
+ if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then
21
+ rm "${ANDROID_KEYSTORE_FILE}"
22
+ fi
Source Code/Citra/.ci/clang-format.sh ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ if grep -nrI '\s$' src *.yml *.txt *.md Doxyfile .gitignore .gitmodules .ci* dist/*.desktop \
4
+ dist/*.svg dist/*.xml; then
5
+ echo Trailing whitespace found, aborting
6
+ exit 1
7
+ fi
8
+
9
+ # Default clang-format points to default 3.5 version one
10
+ CLANG_FORMAT=clang-format-12
11
+ $CLANG_FORMAT --version
12
+
13
+ if [ "$GITHUB_EVENT_NAME" = "pull_request" ]; then
14
+ # Get list of every file modified in this pull request
15
+ files_to_lint="$(git diff --name-only --diff-filter=ACMRTUXB $COMMIT_RANGE | grep '^src/[^.]*[.]\(cpp\|h\)$' || true)"
16
+ else
17
+ # Check everything for branch pushes
18
+ files_to_lint="$(find src/ -name '*.cpp' -or -name '*.h')"
19
+ fi
20
+
21
+ # Turn off tracing for this because it's too verbose
22
+ set +x
23
+
24
+ for f in $files_to_lint; do
25
+ d=$(diff -u "$f" <($CLANG_FORMAT "$f") || true)
26
+ if ! [ -z "$d" ]; then
27
+ echo "!!! $f not compliant to coding style, here is the fix:"
28
+ echo "$d"
29
+ fail=1
30
+ fi
31
+ done
32
+
33
+ set -x
34
+
35
+ if [ "$fail" = 1 ]; then
36
+ exit 1
37
+ fi
Source Code/Citra/.ci/linux.sh ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/sh -ex
2
+
3
+ mkdir build && cd build
4
+ cmake .. -G Ninja \
5
+ -DCMAKE_BUILD_TYPE=Release \
6
+ -DCMAKE_C_COMPILER_LAUNCHER=ccache \
7
+ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
8
+ -DENABLE_QT_TRANSLATION=ON \
9
+ -DCITRA_ENABLE_COMPATIBILITY_REPORTING=ON \
10
+ -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON \
11
+ -DUSE_DISCORD_PRESENCE=ON
12
+ ninja
13
+
14
+ if [ "$TARGET" = "appimage" ]; then
15
+ ninja bundle
16
+ fi
17
+
18
+ ccache -s
19
+
20
+ ctest -VV -C Release
Source Code/Citra/.ci/macos-universal.sh ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ ARTIFACTS_LIST=($ARTIFACTS)
4
+
5
+ BUNDLE_DIR=build/bundle
6
+ mkdir build
7
+
8
+ # Set up the base artifact to combine into.
9
+ BASE_ARTIFACT=${ARTIFACTS_LIST[0]}
10
+ BASE_ARTIFACT_ARCH="${BASE_ARTIFACT##*-}"
11
+ mv $BASE_ARTIFACT $BUNDLE_DIR
12
+
13
+ # Executable binary paths that need to be combined.
14
+ BIN_PATHS=(citra citra-room citra-qt.app/Contents/MacOS/citra-qt)
15
+
16
+ # Dylib paths that need to be combined.
17
+ IFS=$'\n'
18
+ DYLIB_PATHS=($(cd $BUNDLE_DIR && find . -name '*.dylib'))
19
+ unset IFS
20
+
21
+ # Combine all of the executable binaries and dylibs.
22
+ for OTHER_ARTIFACT in "${ARTIFACTS_LIST[@]:1}"; do
23
+ OTHER_ARTIFACT_ARCH="${OTHER_ARTIFACT##*-}"
24
+
25
+ for BIN_PATH in "${BIN_PATHS[@]}"; do
26
+ lipo -create -output $BUNDLE_DIR/$BIN_PATH $BUNDLE_DIR/$BIN_PATH $OTHER_ARTIFACT/$BIN_PATH
27
+ done
28
+
29
+ for DYLIB_PATH in "${DYLIB_PATHS[@]}"; do
30
+ # Only merge if the libraries do not have conflicting arches, otherwise it will fail.
31
+ DYLIB_INFO=`file $BUNDLE_DIR/$DYLIB_PATH`
32
+ OTHER_DYLIB_INFO=`file $OTHER_ARTIFACT/$DYLIB_PATH`
33
+ if ! [[ "$DYLIB_INFO" =~ "$OTHER_ARTIFACT_ARCH" ]] && ! [[ "$OTHER_DYLIB_INFO" =~ "$BASE_ARTIFACT_ARCH" ]]; then
34
+ lipo -create -output $BUNDLE_DIR/$DYLIB_PATH $BUNDLE_DIR/$DYLIB_PATH $OTHER_ARTIFACT/$DYLIB_PATH
35
+ fi
36
+ done
37
+ done
38
+
39
+ # Re-sign executables and bundles after combining.
40
+ APP_PATHS=(citra citra-room citra-qt.app)
41
+ for APP_PATH in "${APP_PATHS[@]}"; do
42
+ codesign --deep -fs - $BUNDLE_DIR/$APP_PATH
43
+ done
Source Code/Citra/.ci/macos.sh ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ mkdir build && cd build
4
+ cmake .. -GNinja \
5
+ -DCMAKE_BUILD_TYPE=Release \
6
+ -DCMAKE_OSX_ARCHITECTURES="$TARGET" \
7
+ -DCMAKE_C_COMPILER_LAUNCHER=ccache \
8
+ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
9
+ -DENABLE_QT_TRANSLATION=ON \
10
+ -DCITRA_ENABLE_COMPATIBILITY_REPORTING=ON \
11
+ -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON \
12
+ -DUSE_DISCORD_PRESENCE=ON
13
+ ninja
14
+ ninja bundle
15
+
16
+ ccache -s
17
+
18
+ CURRENT_ARCH=`arch`
19
+ if [ "$TARGET" = "$CURRENT_ARCH" ]; then
20
+ ctest -VV -C Release
21
+ fi
Source Code/Citra/.ci/pack.sh ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ GITDATE="`git show -s --date=short --format='%ad' | sed 's/-//g'`"
4
+ GITREV="`git show -s --format='%h'`"
5
+ REV_NAME="citra-${OS}-${TARGET}-${GITDATE}-${GITREV}"
6
+
7
+ # Find out what release we are building
8
+ if [[ "$GITHUB_REF_NAME" =~ ^canary- ]] || [[ "$GITHUB_REF_NAME" =~ ^nightly- ]]; then
9
+ RELEASE_NAME=$(echo $GITHUB_REF_NAME | cut -d- -f1)
10
+ else
11
+ RELEASE_NAME=head
12
+ fi
13
+
14
+ mkdir -p artifacts
15
+
16
+ if [ -z "${UPLOAD_RAW}" ]; then
17
+ # Archive and upload the artifacts.
18
+ mkdir "$REV_NAME"
19
+ mv build/bundle/* "$REV_NAME"
20
+
21
+ if [ "$OS" = "windows" ]; then
22
+ ARCHIVE_NAME="${REV_NAME}.zip"
23
+ powershell Compress-Archive "$REV_NAME" "$ARCHIVE_NAME"
24
+ else
25
+ ARCHIVE_NAME="${REV_NAME}.tar.gz"
26
+ tar czvf "$ARCHIVE_NAME" "$REV_NAME"
27
+ fi
28
+
29
+ mv "$REV_NAME" $RELEASE_NAME
30
+ 7z a "$REV_NAME.7z" $RELEASE_NAME
31
+
32
+ mv "$ARCHIVE_NAME" artifacts/
33
+ mv "$REV_NAME.7z" artifacts/
34
+ else
35
+ # Directly upload the raw artifacts, renamed with the revision.
36
+ for ARTIFACT in build/bundle/*; do
37
+ FILENAME=$(basename "$ARTIFACT")
38
+ EXTENSION="${FILENAME##*.}"
39
+ mv "$ARTIFACT" "artifacts/$REV_NAME.$EXTENSION"
40
+ done
41
+ fi
Source Code/Citra/.ci/source.sh ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ GITDATE="`git show -s --date=short --format='%ad' | sed 's/-//g'`"
4
+ GITREV="`git show -s --format='%h'`"
5
+ REV_NAME="citra-unified-source-${GITDATE}-${GITREV}"
6
+
7
+ COMPAT_LIST='dist/compatibility_list/compatibility_list.json'
8
+
9
+ mkdir artifacts
10
+
11
+ pip3 install git-archive-all
12
+ wget -q https://api.citra-emu.org/gamedb -O "${COMPAT_LIST}"
13
+ git describe --abbrev=0 --always HEAD > GIT-COMMIT
14
+ git describe --tags HEAD > GIT-TAG || echo 'unknown' > GIT-TAG
15
+ git archive-all --include "${COMPAT_LIST}" --include GIT-COMMIT --include GIT-TAG --force-submodules artifacts/"${REV_NAME}.tar"
16
+
17
+ cd artifacts/
18
+ xz -T0 -9 "${REV_NAME}.tar"
19
+ sha256sum "${REV_NAME}.tar.xz" > "${REV_NAME}.tar.xz.sha256sum"
20
+ cd ..
Source Code/Citra/.ci/transifex.sh ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ echo -e "\e[1m\e[33mBuild tools information:\e[0m"
4
+ cmake --version
5
+ gcc -v
6
+ tx --version
7
+
8
+ mkdir build && cd build
9
+ cmake .. -DENABLE_QT_TRANSLATION=ON -DGENERATE_QT_TRANSLATION=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_SDL2=OFF
10
+ make translation
11
+ cd ..
12
+
13
+ cd dist/languages
14
+ tx push -s
Source Code/Citra/.ci/windows.sh ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/sh -ex
2
+
3
+ mkdir build && cd build
4
+ cmake .. -G Ninja \
5
+ -DCMAKE_BUILD_TYPE=Release \
6
+ -DCMAKE_C_COMPILER_LAUNCHER=ccache \
7
+ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
8
+ -DENABLE_QT_TRANSLATION=ON \
9
+ -DCITRA_ENABLE_COMPATIBILITY_REPORTING=ON \
10
+ -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON \
11
+ -DUSE_DISCORD_PRESENCE=ON
12
+ ninja
13
+ ninja bundle
14
+
15
+ ccache -s
16
+
17
+ ctest -VV -C Release || echo "::error ::Test error occurred on Windows build"
Source Code/Citra/.lgtm.yml ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ path_classifiers:
2
+ library: "externals"
3
+ extraction:
4
+ cpp:
5
+ prepare:
6
+ packages:
7
+ - "libsdl2-dev"
8
+ - "qtmultimedia5-dev"
9
+ - "clang-format-6.0"
10
+ - "libtbb-dev"
11
+ - "libjack-jackd2-dev"
12
+ - "doxygen"
13
+ - "graphviz"
Source Code/Yuzu/.ci/scripts/android/build.sh ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ # SPDX-FileCopyrightText: 2023 yuzu Emulator Project
4
+ # SPDX-License-Identifier: GPL-3.0-or-later
5
+
6
+ export NDK_CCACHE="$(which ccache)"
7
+ ccache -s
8
+
9
+ BUILD_FLAVOR="mainline"
10
+
11
+ BUILD_TYPE="release"
12
+ if [ "${GITHUB_REPOSITORY}" == "yuzu-emu/yuzu" ]; then
13
+ BUILD_TYPE="relWithDebInfo"
14
+ fi
15
+
16
+ if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then
17
+ export ANDROID_KEYSTORE_FILE="${GITHUB_WORKSPACE}/ks.jks"
18
+ base64 --decode <<< "${ANDROID_KEYSTORE_B64}" > "${ANDROID_KEYSTORE_FILE}"
19
+ fi
20
+
21
+ cd src/android
22
+ chmod +x ./gradlew
23
+ ./gradlew "assemble${BUILD_FLAVOR}${BUILD_TYPE}" "bundle${BUILD_FLAVOR}${BUILD_TYPE}"
24
+
25
+ ccache -s
26
+
27
+ if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then
28
+ rm "${ANDROID_KEYSTORE_FILE}"
29
+ fi
Source Code/Yuzu/.ci/scripts/android/eabuild.sh ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ # SPDX-FileCopyrightText: 2024 yuzu Emulator Project
4
+ # SPDX-License-Identifier: GPL-3.0-or-later
5
+
6
+ export NDK_CCACHE="$(which ccache)"
7
+ ccache -s
8
+
9
+ export ANDROID_KEYSTORE_FILE="${GITHUB_WORKSPACE}/ks.jks"
10
+ base64 --decode <<< "${EA_PLAY_ANDROID_KEYSTORE_B64}" > "${ANDROID_KEYSTORE_FILE}"
11
+ export ANDROID_KEY_ALIAS="${PLAY_ANDROID_KEY_ALIAS}"
12
+ export ANDROID_KEYSTORE_PASS="${PLAY_ANDROID_KEYSTORE_PASS}"
13
+ export SERVICE_ACCOUNT_KEY_PATH="${GITHUB_WORKSPACE}/sa.json"
14
+ base64 --decode <<< "${EA_SERVICE_ACCOUNT_KEY_B64}" > "${SERVICE_ACCOUNT_KEY_PATH}"
15
+ ./gradlew "publishEaReleaseBundle"
16
+
17
+ ccache -s
18
+
19
+ if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then
20
+ rm "${ANDROID_KEYSTORE_FILE}"
21
+ fi
Source Code/Yuzu/.ci/scripts/android/mainlinebuild.sh ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ # SPDX-FileCopyrightText: 2024 yuzu Emulator Project
4
+ # SPDX-License-Identifier: GPL-3.0-or-later
5
+
6
+ export NDK_CCACHE="$(which ccache)"
7
+ ccache -s
8
+
9
+ export ANDROID_KEYSTORE_FILE="${GITHUB_WORKSPACE}/ks.jks"
10
+ base64 --decode <<< "${MAINLINE_PLAY_ANDROID_KEYSTORE_B64}" > "${ANDROID_KEYSTORE_FILE}"
11
+ export ANDROID_KEY_ALIAS="${PLAY_ANDROID_KEY_ALIAS}"
12
+ export ANDROID_KEYSTORE_PASS="${PLAY_ANDROID_KEYSTORE_PASS}"
13
+ export SERVICE_ACCOUNT_KEY_PATH="${GITHUB_WORKSPACE}/sa.json"
14
+ base64 --decode <<< "${MAINLINE_SERVICE_ACCOUNT_KEY_B64}" > "${SERVICE_ACCOUNT_KEY_PATH}"
15
+ ./gradlew "publishMainlineReleaseBundle"
16
+
17
+ ccache -s
18
+
19
+ if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then
20
+ rm "${ANDROID_KEYSTORE_FILE}"
21
+ fi
Source Code/Yuzu/.ci/scripts/android/upload.sh ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ # SPDX-FileCopyrightText: 2023 yuzu Emulator Project
4
+ # SPDX-License-Identifier: GPL-3.0-or-later
5
+
6
+ . ./.ci/scripts/common/pre-upload.sh
7
+
8
+ REV_NAME="yuzu-${GITDATE}-${GITREV}"
9
+
10
+ BUILD_FLAVOR="mainline"
11
+
12
+ BUILD_TYPE_LOWER="release"
13
+ BUILD_TYPE_UPPER="Release"
14
+ if [ "${GITHUB_REPOSITORY}" == "yuzu-emu/yuzu" ]; then
15
+ BUILD_TYPE_LOWER="relWithDebInfo"
16
+ BUILD_TYPE_UPPER="RelWithDebInfo"
17
+ fi
18
+
19
+ cp src/android/app/build/outputs/apk/"${BUILD_FLAVOR}/${BUILD_TYPE_LOWER}/app-${BUILD_FLAVOR}-${BUILD_TYPE_LOWER}.apk" \
20
+ "artifacts/${REV_NAME}.apk"
21
+ cp src/android/app/build/outputs/bundle/"${BUILD_FLAVOR}${BUILD_TYPE_UPPER}"/"app-${BUILD_FLAVOR}-${BUILD_TYPE_LOWER}.aab" \
22
+ "artifacts/${REV_NAME}.aab"
Source Code/Yuzu/.ci/scripts/clang/docker.sh ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ # SPDX-FileCopyrightText: 2021 yuzu Emulator Project
4
+ # SPDX-License-Identifier: GPL-2.0-or-later
5
+
6
+ # Exit on error, rather than continuing with the rest of the script.
7
+ set -e
8
+
9
+ ccache -s
10
+
11
+ mkdir build || true && cd build
12
+ cmake .. \
13
+ -DCMAKE_BUILD_TYPE=Release \
14
+ -DCMAKE_CXX_FLAGS="-march=x86-64-v2" \
15
+ -DCMAKE_CXX_COMPILER=/usr/lib/ccache/clang++ \
16
+ -DCMAKE_C_COMPILER=/usr/lib/ccache/clang \
17
+ -DCMAKE_INSTALL_PREFIX="/usr" \
18
+ -DDISPLAY_VERSION=$1 \
19
+ -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON \
20
+ -DENABLE_QT_TRANSLATION=ON \
21
+ -DUSE_DISCORD_PRESENCE=ON \
22
+ -DYUZU_CRASH_DUMPS=ON \
23
+ -DYUZU_ENABLE_COMPATIBILITY_REPORTING=${ENABLE_COMPATIBILITY_REPORTING:-"OFF"} \
24
+ -DYUZU_USE_BUNDLED_FFMPEG=ON \
25
+ -GNinja
26
+
27
+ ninja
28
+
29
+ ccache -s
30
+
31
+ ctest -VV -C Release
32
+
Source Code/Yuzu/.ci/scripts/clang/exec.sh ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ # SPDX-FileCopyrightText: 2021 yuzu Emulator Project
4
+ # SPDX-License-Identifier: GPL-2.0-or-later
5
+
6
+ mkdir -p "ccache" || true
7
+ chmod a+x ./.ci/scripts/clang/docker.sh
8
+ # the UID for the container yuzu user is 1027
9
+ sudo chown -R 1027 ./
10
+ docker run -e ENABLE_COMPATIBILITY_REPORTING -e CCACHE_DIR=/yuzu/ccache -v "$(pwd):/yuzu" -w /yuzu yuzuemu/build-environments:linux-fresh /bin/bash /yuzu/.ci/scripts/clang/docker.sh "$1"
11
+ sudo chown -R $UID ./
Source Code/Yuzu/.ci/scripts/clang/upload.sh ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ # SPDX-FileCopyrightText: 2021 yuzu Emulator Project
4
+ # SPDX-License-Identifier: GPL-2.0-or-later
5
+
6
+ . .ci/scripts/common/pre-upload.sh
7
+
8
+ REV_NAME="yuzu-linux-${GITDATE}-${GITREV}"
9
+ ARCHIVE_NAME="${REV_NAME}.tar.xz"
10
+ COMPRESSION_FLAGS="-cJvf"
11
+
12
+ if [ "${RELEASE_NAME}" = "mainline" ]; then
13
+ DIR_NAME="${REV_NAME}"
14
+ else
15
+ DIR_NAME="${REV_NAME}_${RELEASE_NAME}"
16
+ fi
17
+
18
+ mkdir "$DIR_NAME"
19
+
20
+ cp build/bin/yuzu-cmd "$DIR_NAME"
21
+ cp build/bin/yuzu "$DIR_NAME"
22
+
23
+ . .ci/scripts/common/post-upload.sh
Source Code/Yuzu/.ci/scripts/common/post-upload.sh ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
4
+ # SPDX-License-Identifier: GPL-2.0-or-later
5
+
6
+ # Copy documentation
7
+ cp LICENSE.txt "$DIR_NAME"
8
+ cp README.md "$DIR_NAME"
9
+
10
+ if [[ -z "${NO_SOURCE_PACK}" ]]; then
11
+ git clone --depth 1 file://$(readlink -e .) ${REV_NAME}-source
12
+ tar -cJvf "${REV_NAME}-source.tar.xz" ${REV_NAME}-source
13
+ cp -v "${REV_NAME}-source.tar.xz" "$DIR_NAME"
14
+ cp -v "${REV_NAME}-source.tar.xz" "${ARTIFACTS_DIR}/"
15
+ fi
16
+
17
+ tar $COMPRESSION_FLAGS "$ARCHIVE_NAME" "$DIR_NAME"
18
+
19
+ # move the compiled archive into the artifacts directory to be uploaded by travis releases
20
+ mv "$ARCHIVE_NAME" "${ARTIFACTS_DIR}/"
Source Code/Yuzu/.ci/scripts/common/pre-upload.sh ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
4
+ # SPDX-License-Identifier: GPL-2.0-or-later
5
+
6
+ GITDATE="`git show -s --date=short --format='%ad' | sed 's/-//g'`"
7
+ GITREV="`git show -s --format='%h'`"
8
+ ARTIFACTS_DIR="$PWD/artifacts"
9
+
10
+ mkdir -p "${ARTIFACTS_DIR}/"
Source Code/Yuzu/.ci/scripts/format/docker.sh ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
4
+ # SPDX-License-Identifier: GPL-2.0-or-later
5
+
6
+ # Run clang-format
7
+ cd /yuzu
8
+ chmod a+x ./.ci/scripts/format/script.sh
9
+ ./.ci/scripts/format/script.sh
Source Code/Yuzu/.ci/scripts/format/exec.sh ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
4
+ # SPDX-License-Identifier: GPL-2.0-or-later
5
+
6
+ chmod a+x ./.ci/scripts/format/docker.sh
7
+ # the UID for the container yuzu user is 1027
8
+ sudo chown -R 1027 ./
9
+ docker run -v "$(pwd):/yuzu" -w /yuzu yuzuemu/build-environments:linux-clang-format /bin/bash -ex /yuzu/.ci/scripts/format/docker.sh
10
+ sudo chown -R $UID ./
Source Code/Yuzu/.ci/scripts/format/script.sh ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
4
+ # SPDX-License-Identifier: GPL-2.0-or-later
5
+
6
+ shopt -s nullglob globstar
7
+
8
+ if git grep -nrI '\s$' src **/*.yml **/*.txt **/*.md Doxyfile .gitignore .gitmodules .ci* dist/*.desktop dist/*.svg dist/*.xml; then
9
+ echo Trailing whitespace found, aborting
10
+ exit 1
11
+ fi
12
+
13
+ # Default clang-format points to default 3.5 version one
14
+ CLANG_FORMAT="${CLANG_FORMAT:-clang-format-15}"
15
+ "$CLANG_FORMAT" --version
16
+
17
+ # Turn off tracing for this because it's too verbose
18
+ set +x
19
+
20
+ # Check everything for branch pushes
21
+ FILES_TO_LINT="$(find src/ -name '*.cpp' -or -name '*.h')"
22
+
23
+ for f in $FILES_TO_LINT; do
24
+ echo "$f"
25
+ "$CLANG_FORMAT" -i "$f"
26
+ done
27
+
28
+ DIFF=$(git -c core.fileMode=false diff)
29
+
30
+ if [ ! -z "$DIFF" ]; then
31
+ echo "!!! Not compliant to coding style, here is the fix:"
32
+ echo "$DIFF"
33
+ exit 1
34
+ fi
35
+
36
+ cd src/android
37
+ ./gradlew ktlintCheck
Source Code/Yuzu/.ci/scripts/linux/docker.sh ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
4
+ # SPDX-License-Identifier: GPL-2.0-or-later
5
+
6
+ # Exit on error, rather than continuing with the rest of the script.
7
+ set -e
8
+
9
+ ccache -s
10
+
11
+ mkdir build || true && cd build
12
+ cmake .. \
13
+ -DBoost_USE_STATIC_LIBS=ON \
14
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
15
+ -DCMAKE_CXX_FLAGS="-march=x86-64-v2" \
16
+ -DCMAKE_CXX_COMPILER=/usr/lib/ccache/g++ \
17
+ -DCMAKE_C_COMPILER=/usr/lib/ccache/gcc \
18
+ -DCMAKE_INSTALL_PREFIX="/usr" \
19
+ -DDISPLAY_VERSION=$1 \
20
+ -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON \
21
+ -DENABLE_QT_TRANSLATION=ON \
22
+ -DUSE_DISCORD_PRESENCE=ON \
23
+ -DYUZU_ENABLE_COMPATIBILITY_REPORTING=${ENABLE_COMPATIBILITY_REPORTING:-"OFF"} \
24
+ -DYUZU_USE_BUNDLED_FFMPEG=ON \
25
+ -DYUZU_ENABLE_LTO=ON \
26
+ -DYUZU_CRASH_DUMPS=ON \
27
+ -GNinja
28
+
29
+ ninja
30
+
31
+ ccache -s
32
+
33
+ ctest -VV -C Release
34
+
35
+ # Separate debug symbols from specified executables
36
+ for EXE in yuzu; do
37
+ EXE_PATH="bin/$EXE"
38
+ # Copy debug symbols out
39
+ objcopy --only-keep-debug $EXE_PATH $EXE_PATH.debug
40
+ # Add debug link and strip debug symbols
41
+ objcopy -g --add-gnu-debuglink=$EXE_PATH.debug $EXE_PATH $EXE_PATH.out
42
+ # Overwrite original with stripped copy
43
+ mv $EXE_PATH.out $EXE_PATH
44
+ done
45
+ # Strip debug symbols from all executables
46
+ find bin/ -type f -not -regex '.*.debug' -exec strip -g {} ';'
47
+
48
+ DESTDIR="$PWD/AppDir" ninja install
49
+ rm -vf AppDir/usr/bin/yuzu-cmd AppDir/usr/bin/yuzu-tester
50
+
51
+ # Download tools needed to build an AppImage
52
+ wget -nc https://raw.githubusercontent.com/yuzu-emu/ext-linux-bin/main/appimage/deploy-linux.sh
53
+ wget -nc https://raw.githubusercontent.com/yuzu-emu/AppImageKit-checkrt/old/AppRun.sh
54
+ wget -nc https://github.com/yuzu-mirror/ext-linux-bin/raw/main/appimage/exec-x86_64.so
55
+ # Set executable bit
56
+ chmod 755 \
57
+ deploy-linux.sh \
58
+ AppRun.sh \
59
+ exec-x86_64.so \
60
+
61
+ # Workaround for https://github.com/AppImage/AppImageKit/issues/828
62
+ export APPIMAGE_EXTRACT_AND_RUN=1
63
+
64
+ mkdir -p AppDir/usr/optional
65
+ mkdir -p AppDir/usr/optional/libstdc++
66
+ mkdir -p AppDir/usr/optional/libgcc_s
67
+
68
+ # Deploy yuzu's needed dependencies
69
+ DEPLOY_QT=1 ./deploy-linux.sh AppDir/usr/bin/yuzu AppDir
70
+
71
+ # Workaround for libQt5MultimediaGstTools indirectly requiring libwayland-client and breaking Vulkan usage on end-user systems
72
+ find AppDir -type f -regex '.*libwayland-client\.so.*' -delete -print
73
+
74
+ # Workaround for building yuzu with GCC 10 but also trying to distribute it to Ubuntu 18.04 et al.
75
+ # See https://github.com/darealshinji/AppImageKit-checkrt
76
+ cp exec-x86_64.so AppDir/usr/optional/exec.so
77
+ cp AppRun.sh AppDir/AppRun
78
+ cp --dereference /usr/lib/x86_64-linux-gnu/libstdc++.so.6 AppDir/usr/optional/libstdc++/libstdc++.so.6
79
+ cp --dereference /lib/x86_64-linux-gnu/libgcc_s.so.1 AppDir/usr/optional/libgcc_s/libgcc_s.so.1
Source Code/Yuzu/.ci/scripts/linux/exec.sh ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
4
+ # SPDX-License-Identifier: GPL-2.0-or-later
5
+
6
+ mkdir -p "ccache" || true
7
+ chmod a+x ./.ci/scripts/linux/docker.sh
8
+ # the UID for the container yuzu user is 1027
9
+ sudo chown -R 1027 ./
10
+
11
+ # The environment variables listed below:
12
+ # AZURECIREPO TITLEBARFORMATIDLE TITLEBARFORMATRUNNING DISPLAYVERSION
13
+ # are requested in src/common/CMakeLists.txt and appear to be provided somewhere in Azure DevOps
14
+
15
+ docker run -e AZURECIREPO -e TITLEBARFORMATIDLE -e TITLEBARFORMATRUNNING -e DISPLAYVERSION -e ENABLE_COMPATIBILITY_REPORTING -e CCACHE_DIR=/yuzu/ccache -v "$(pwd):/yuzu" -w /yuzu yuzuemu/build-environments:linux-fresh /bin/bash /yuzu/.ci/scripts/linux/docker.sh "$1"
16
+ sudo chown -R $UID ./
Source Code/Yuzu/.ci/scripts/linux/upload.sh ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
4
+ # SPDX-License-Identifier: GPL-2.0-or-later
5
+
6
+ . .ci/scripts/common/pre-upload.sh
7
+
8
+ APPIMAGE_NAME="yuzu-${RELEASE_NAME}-${GITDATE}-${GITREV}.AppImage"
9
+ BASE_NAME="yuzu-linux"
10
+ REV_NAME="${BASE_NAME}-${GITDATE}-${GITREV}"
11
+ ARCHIVE_NAME="${REV_NAME}.tar.xz"
12
+ COMPRESSION_FLAGS="-cJvf"
13
+
14
+ if [ "${RELEASE_NAME}" = "mainline" ] || [ "${RELEASE_NAME}" = "early-access" ]; then
15
+ DIR_NAME="${BASE_NAME}-${RELEASE_NAME}"
16
+ else
17
+ DIR_NAME="${REV_NAME}-${RELEASE_NAME}"
18
+ fi
19
+
20
+ mkdir "$DIR_NAME"
21
+
22
+ cp build/bin/yuzu-cmd "$DIR_NAME"
23
+ if [ "${RELEASE_NAME}" != "early-access" ] && [ "${RELEASE_NAME}" != "mainline" ]; then
24
+ cp build/bin/yuzu "$DIR_NAME"
25
+ fi
26
+
27
+ # Build an AppImage
28
+ cd build
29
+
30
+ wget -nc https://github.com/yuzu-mirror/ext-linux-bin/raw/main/appimage/appimagetool-x86_64.AppImage
31
+ chmod 755 appimagetool-x86_64.AppImage
32
+
33
+ # if FUSE is not available, then fallback to extract and run
34
+ if ! ./appimagetool-x86_64.AppImage --version; then
35
+ export APPIMAGE_EXTRACT_AND_RUN=1
36
+ fi
37
+
38
+ # Don't let AppImageLauncher ask to integrate EA
39
+ if [ "${RELEASE_NAME}" = "mainline" ] || [ "${RELEASE_NAME}" = "early-access" ]; then
40
+ echo "X-AppImage-Integrate=false" >> AppDir/org.yuzu_emu.yuzu.desktop
41
+ fi
42
+
43
+ if [ "${RELEASE_NAME}" = "mainline" ]; then
44
+ # Generate update information if releasing to mainline
45
+ ./appimagetool-x86_64.AppImage -u "gh-releases-zsync|yuzu-emu|yuzu-${RELEASE_NAME}|latest|yuzu-*.AppImage.zsync" AppDir "${APPIMAGE_NAME}"
46
+ else
47
+ ./appimagetool-x86_64.AppImage AppDir "${APPIMAGE_NAME}"
48
+ fi
49
+ cd ..
50
+
51
+ # Copy the AppImage and update info to the artifacts directory and avoid compressing it
52
+ cp "build/${APPIMAGE_NAME}" "${ARTIFACTS_DIR}/"
53
+ if [ -f "build/${APPIMAGE_NAME}.zsync" ]; then
54
+ cp "build/${APPIMAGE_NAME}.zsync" "${ARTIFACTS_DIR}/"
55
+ fi
56
+
57
+ # Copy the AppImage to the general release directory and remove git revision info
58
+ if [ "${RELEASE_NAME}" = "mainline" ] || [ "${RELEASE_NAME}" = "early-access" ]; then
59
+ cp "build/${APPIMAGE_NAME}" "${DIR_NAME}/yuzu-${RELEASE_NAME}.AppImage"
60
+ fi
61
+
62
+ # Copy debug symbols to artifacts
63
+ cd build/bin
64
+ tar $COMPRESSION_FLAGS "${ARTIFACTS_DIR}/${REV_NAME}-debug.tar.xz" *.debug
65
+ cd -
66
+
67
+ . .ci/scripts/common/post-upload.sh
Source Code/Yuzu/.ci/scripts/merge/apply-patches-by-label-private.py ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
2
+ # SPDX-License-Identifier: GPL-2.0-or-later
3
+
4
+ # Download all pull requests as patches that match a specific label
5
+ # Usage: python download-patches-by-label.py <Label to Match> <Root Path Folder to DL to>
6
+
7
+ import requests, sys, json, shutil, subprocess, os, traceback
8
+
9
+ org = os.getenv("PRIVATEMERGEORG", "yuzu-emu")
10
+ repo = os.getenv("PRIVATEMERGEREPO", "yuzu-private")
11
+ tagline = sys.argv[3]
12
+ user = sys.argv[1]
13
+
14
+ dl_list = {}
15
+
16
+ TAG_NAME = sys.argv[2]
17
+
18
+ def check_individual(repo_id, pr_id):
19
+ url = 'https://%sdev.azure.com/%s/%s/_apis/git/repositories/%s/pullRequests/%s/labels?api-version=5.1-preview.1' % (user, org, repo, repo_id, pr_id)
20
+ response = requests.get(url)
21
+ if (response.ok):
22
+ try:
23
+ js = response.json()
24
+ return any(tag.get('name') == TAG_NAME for tag in js['value'])
25
+ except:
26
+ return False
27
+ return False
28
+
29
+ def merge_pr(pn, ref):
30
+ print("Matched PR# %s" % pn)
31
+ print(subprocess.check_output(["git", "fetch", "https://%sdev.azure.com/%s/_git/%s" % (user, org, repo), ref, "-f", "--no-recurse-submodules"]))
32
+ print(subprocess.check_output(["git", "merge", "--squash", 'origin/' + ref.replace('refs/heads/','')]))
33
+ print(subprocess.check_output(["git", "commit", "-m\"Merge %s PR %s\"" % (tagline, pn)]))
34
+
35
+ def main():
36
+ url = 'https://%sdev.azure.com/%s/%s/_apis/git/pullrequests?api-version=5.1' % (user, org, repo)
37
+ response = requests.get(url)
38
+ if (response.ok):
39
+ js = response.json()
40
+ tagged_prs = filter(lambda pr: check_individual(pr['repository']['id'], pr['pullRequestId']), js['value'])
41
+ map(lambda pr: merge_pr(pr['pullRequestId'], pr['sourceRefName']), tagged_prs)
42
+
43
+ if __name__ == '__main__':
44
+ try:
45
+ main()
46
+ except:
47
+ traceback.print_exc(file=sys.stdout)
48
+ sys.exit(-1)
Source Code/Yuzu/.ci/scripts/merge/apply-patches-by-label.py ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
2
+ # SPDX-License-Identifier: GPL-2.0-or-later
3
+
4
+ # Download all pull requests as patches that match a specific label
5
+ # Usage: python apply-patches-by-label.py <Label to Match>
6
+
7
+ import json, requests, subprocess, sys, traceback
8
+
9
+ tagline = sys.argv[2]
10
+
11
+ def check_individual(labels):
12
+ for label in labels:
13
+ if (label["name"] == sys.argv[1]):
14
+ return True
15
+ return False
16
+
17
+ def do_page(page):
18
+ url = f"https://api.github.com/repos/yuzu-mirror/yuzu/pulls?page={page}"
19
+ response = requests.get(url)
20
+ response.raise_for_status()
21
+ if (response.ok):
22
+ j = json.loads(response.content)
23
+ if j == []:
24
+ return
25
+ for pr in j:
26
+ if (check_individual(pr["labels"])):
27
+ pn = pr["number"]
28
+ print(f"Matched PR# {pn}")
29
+ print(subprocess.check_output(["git", "fetch", "https://github.com/yuzu-mirror/yuzu.git", f"pull/{pn}/head:pr-{pn}", "-f", "--no-recurse-submodules"]))
30
+ print(subprocess.check_output(["git", "merge", "--squash", f"pr-{pn}"]))
31
+ print(subprocess.check_output(["git", "commit", f"-m\"Merge {tagline} PR {pn}\""]))
32
+
33
+ try:
34
+ for i in range(1,10):
35
+ do_page(i)
36
+ except:
37
+ traceback.print_exc(file=sys.stdout)
38
+ sys.exit(-1)
Source Code/Yuzu/.ci/scripts/merge/check-label-presence.py ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
2
+ # SPDX-License-Identifier: GPL-2.0-or-later
3
+
4
+ # Checks to see if the specified pull request # has the specified tag
5
+ # Usage: python check-label-presence.py <Pull Request ID> <Name of Label>
6
+
7
+ import requests, json, sys
8
+
9
+ try:
10
+ url = 'https://api.github.com/repos/yuzu-emu/yuzu/issues/%s' % sys.argv[1]
11
+ response = requests.get(url)
12
+ if (response.ok):
13
+ j = json.loads(response.content)
14
+ for label in j["labels"]:
15
+ if label["name"] == sys.argv[2]:
16
+ print('##vso[task.setvariable variable=enabletesting;]true')
17
+ sys.exit()
18
+ except:
19
+ sys.exit(-1)
20
+
21
+ print('##vso[task.setvariable variable=enabletesting;]false')
Source Code/Yuzu/.ci/scripts/merge/yuzubot-git-config.sh ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
2
+ # SPDX-License-Identifier: GPL-2.0-or-later
3
+
4
+ git config --global user.email "yuzu@yuzu-emu.org"
5
+ git config --global user.name "yuzubot"
Source Code/Yuzu/.ci/scripts/transifex/docker.sh ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -e
2
+
3
+ # SPDX-FileCopyrightText: 2021 yuzu Emulator Project
4
+ # SPDX-License-Identifier: GPL-2.0-or-later
5
+
6
+ set -x
7
+
8
+ echo -e "\e[1m\e[33mBuild tools information:\e[0m"
9
+ cmake --version
10
+ gcc -v
11
+ tx --version
12
+
13
+ mkdir build && cd build
14
+ cmake .. -DENABLE_QT_TRANSLATION=ON -DGENERATE_QT_TRANSLATION=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_SDL2=OFF -DYUZU_TESTS=OFF -DYUZU_USE_BUNDLED_VCPKG=ON
15
+ make translation
16
+ cd ..
17
+
18
+ cd dist/languages
19
+ tx push -s
Source Code/Yuzu/.ci/scripts/windows/docker.sh ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
4
+ # SPDX-License-Identifier: GPL-2.0-or-later
5
+
6
+ set -e
7
+
8
+ #cd /yuzu
9
+
10
+ ccache -sv
11
+
12
+ mkdir -p build && cd build
13
+ cmake .. \
14
+ -DCMAKE_BUILD_TYPE=Release \
15
+ -DCMAKE_TOOLCHAIN_FILE="${PWD}/../CMakeModules/MinGWCross.cmake" \
16
+ -DDISPLAY_VERSION="$1" \
17
+ -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON \
18
+ -DENABLE_QT_TRANSLATION=ON \
19
+ -DUSE_CCACHE=ON \
20
+ -DYUZU_USE_BUNDLED_SDL2=OFF \
21
+ -DYUZU_USE_EXTERNAL_SDL2=OFF \
22
+ -DYUZU_TESTS=OFF \
23
+ -GNinja
24
+ ninja yuzu yuzu-cmd
25
+
26
+ ccache -sv
27
+
28
+ echo "Tests skipped"
29
+ #ctest -VV -C Release
30
+
31
+ echo 'Prepare binaries...'
32
+ cd ..
33
+ mkdir package
34
+
35
+ if [ -d "/usr/x86_64-w64-mingw32/lib/qt5/plugins/platforms/" ]; then
36
+ QT_PLUGINS_PATH='/usr/x86_64-w64-mingw32/lib/qt5/plugins'
37
+ else
38
+ #fallback to qt
39
+ QT_PLUGINS_PATH='/usr/x86_64-w64-mingw32/lib/qt/plugins'
40
+ fi
41
+
42
+ find build/ -name "yuzu*.exe" -exec cp {} 'package' \;
43
+
44
+ # copy Qt plugins
45
+ mkdir package/platforms
46
+ cp -v "${QT_PLUGINS_PATH}/platforms/qwindows.dll" package/platforms/
47
+ cp -rv "${QT_PLUGINS_PATH}/mediaservice/" package/
48
+ cp -rv "${QT_PLUGINS_PATH}/imageformats/" package/
49
+ cp -rv "${QT_PLUGINS_PATH}/styles/" package/
50
+ rm -f package/mediaservice/*d.dll
51
+
52
+ for i in package/*.exe; do
53
+ # we need to process pdb here, however, cv2pdb
54
+ # does not work here, so we just simply strip all the debug symbols
55
+ x86_64-w64-mingw32-strip "${i}"
56
+ done
57
+
58
+ python3 .ci/scripts/windows/scan_dll.py package/*.exe package/imageformats/*.dll "package/"
59
+
60
+ # copy FFmpeg libraries
61
+ EXTERNALS_PATH="$(pwd)/build/externals"
62
+ FFMPEG_DLL_PATH="$(find "${EXTERNALS_PATH}" -maxdepth 1 -type d | grep 'ffmpeg-')/bin"
63
+ find ${FFMPEG_DLL_PATH} -type f -regex ".*\.dll" -exec cp -nv {} package/ ';'
64
+
65
+ # copy libraries from yuzu.exe path
66
+ find "$(pwd)/build/bin/" -type f -regex ".*\.dll" -exec cp -v {} package/ ';'
Source Code/Yuzu/.ci/scripts/windows/exec.sh ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
4
+ # SPDX-License-Identifier: GPL-2.0-or-later
5
+
6
+ mkdir -p "ccache" || true
7
+ chmod a+x ./.ci/scripts/windows/docker.sh
8
+ # the UID for the container yuzu user is 1027
9
+ sudo chown -R 1027 ./
10
+ docker run -e CCACHE_DIR=/yuzu/ccache -v "$(pwd):/yuzu" -w /yuzu yuzuemu/build-environments:linux-mingw /bin/bash -ex /yuzu/.ci/scripts/windows/docker.sh "$1"
11
+ sudo chown -R $UID ./
Source Code/Yuzu/.ci/scripts/windows/install-vulkan-sdk.ps1 ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SPDX-FileCopyrightText: 2023 yuzu Emulator Project
2
+ # SPDX-License-Identifier: GPL-3.0-or-later
3
+
4
+ $ErrorActionPreference = "Stop"
5
+
6
+ $VulkanSDKVer = "1.3.250.1"
7
+ $ExeFile = "VulkanSDK-$VulkanSDKVer-Installer.exe"
8
+ $Uri = "https://sdk.lunarg.com/sdk/download/$VulkanSDKVer/windows/$ExeFile"
9
+ $Destination = "./$ExeFile"
10
+
11
+ echo "Downloading Vulkan SDK $VulkanSDKVer from $Uri"
12
+ $WebClient = New-Object System.Net.WebClient
13
+ $WebClient.DownloadFile($Uri, $Destination)
14
+ echo "Finished downloading $ExeFile"
15
+
16
+ $VULKAN_SDK = "C:/VulkanSDK/$VulkanSDKVer"
17
+ $Arguments = "--root `"$VULKAN_SDK`" --accept-licenses --default-answer --confirm-command install"
18
+
19
+ echo "Installing Vulkan SDK $VulkanSDKVer"
20
+ $InstallProcess = Start-Process -FilePath $Destination -NoNewWindow -PassThru -Wait -ArgumentList $Arguments
21
+ $ExitCode = $InstallProcess.ExitCode
22
+
23
+ if ($ExitCode -ne 0) {
24
+ echo "Error installing Vulkan SDK $VulkanSDKVer (Error: $ExitCode)"
25
+ Exit $ExitCode
26
+ }
27
+
28
+ echo "Finished installing Vulkan SDK $VulkanSDKVer"
29
+
30
+ if ("$env:GITHUB_ACTIONS" -eq "true") {
31
+ echo "VULKAN_SDK=$VULKAN_SDK" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
32
+ echo "$VULKAN_SDK/Bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
33
+ }
Source Code/Yuzu/.ci/scripts/windows/scan_dll.py ADDED
@@ -0,0 +1,109 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
2
+ # SPDX-License-Identifier: GPL-2.0-or-later
3
+
4
+ import pefile
5
+ import sys
6
+ import re
7
+ import os
8
+ import queue
9
+ import shutil
10
+
11
+ # constant definitions
12
+ KNOWN_SYS_DLLS = ['WINMM.DLL', 'MSVCRT.DLL', 'VERSION.DLL', 'MPR.DLL',
13
+ 'DWMAPI.DLL', 'UXTHEME.DLL', 'DNSAPI.DLL', 'IPHLPAPI.DLL']
14
+ # below is for Ubuntu 18.04 with specified PPA enabled, if you are using
15
+ # other distro or different repositories, change the following accordingly
16
+ DLL_PATH = [
17
+ '/usr/x86_64-w64-mingw32/bin/',
18
+ '/usr/x86_64-w64-mingw32/lib/',
19
+ '/usr/lib/gcc/x86_64-w64-mingw32/7.3-posix/'
20
+ ]
21
+
22
+ missing = []
23
+
24
+
25
+ def parse_imports(file_name):
26
+ results = []
27
+ pe = pefile.PE(file_name, fast_load=True)
28
+ pe.parse_data_directories()
29
+
30
+ for entry in pe.DIRECTORY_ENTRY_IMPORT:
31
+ current = entry.dll.decode()
32
+ current_u = current.upper() # b/c Windows is often case insensitive
33
+ # here we filter out system dlls
34
+ # dll w/ names like *32.dll are likely to be system dlls
35
+ if current_u.upper() not in KNOWN_SYS_DLLS and not re.match(string=current_u, pattern=r'.*32\.DLL'):
36
+ results.append(current)
37
+
38
+ return results
39
+
40
+
41
+ def parse_imports_recursive(file_name, path_list=[]):
42
+ q = queue.Queue() # create a FIFO queue
43
+ # file_name can be a string or a list for the convenience
44
+ if isinstance(file_name, str):
45
+ q.put(file_name)
46
+ elif isinstance(file_name, list):
47
+ for i in file_name:
48
+ q.put(i)
49
+ full_list = []
50
+ while q.qsize():
51
+ current = q.get_nowait()
52
+ print('> %s' % current)
53
+ deps = parse_imports(current)
54
+ # if this dll does not have any import, ignore it
55
+ if not deps:
56
+ continue
57
+ for dep in deps:
58
+ # the dependency already included in the list, skip
59
+ if dep in full_list:
60
+ continue
61
+ # find the requested dll in the provided paths
62
+ full_path = find_dll(dep)
63
+ if not full_path:
64
+ missing.append(dep)
65
+ continue
66
+ full_list.append(dep)
67
+ q.put(full_path)
68
+ path_list.append(full_path)
69
+ return full_list
70
+
71
+
72
+ def find_dll(name):
73
+ for path in DLL_PATH:
74
+ for root, _, files in os.walk(path):
75
+ for f in files:
76
+ if name.lower() == f.lower():
77
+ return os.path.join(root, f)
78
+
79
+
80
+ def deploy(name, dst, dry_run=False):
81
+ dlls_path = []
82
+ parse_imports_recursive(name, dlls_path)
83
+ for dll_entry in dlls_path:
84
+ if not dry_run:
85
+ shutil.copy(dll_entry, dst)
86
+ else:
87
+ print('[Dry-Run] Copy %s to %s' % (dll_entry, dst))
88
+ print('Deploy completed.')
89
+ return dlls_path
90
+
91
+
92
+ def main():
93
+ if len(sys.argv) < 3:
94
+ print('Usage: %s [files to examine ...] [target deploy directory]')
95
+ return 1
96
+ to_deploy = sys.argv[1:-1]
97
+ tgt_dir = sys.argv[-1]
98
+ if not os.path.isdir(tgt_dir):
99
+ print('%s is not a directory.' % tgt_dir)
100
+ return 1
101
+ print('Scanning dependencies...')
102
+ deploy(to_deploy, tgt_dir)
103
+ if missing:
104
+ print('Following DLLs are not found: %s' % ('\n'.join(missing)))
105
+ return 0
106
+
107
+
108
+ if __name__ == '__main__':
109
+ main()
Source Code/Yuzu/.ci/scripts/windows/upload.ps1 ADDED
@@ -0,0 +1,118 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
2
+ # SPDX-License-Identifier: GPL-2.0-or-later
3
+
4
+ param($BUILD_NAME)
5
+
6
+ $GITDATE = $(git show -s --date=short --format='%ad') -replace "-", ""
7
+ $GITREV = $(git show -s --format='%h')
8
+
9
+ if ("$BUILD_NAME" -eq "mainline") {
10
+ $RELEASE_DIST = "yuzu-windows-msvc"
11
+ }
12
+ else {
13
+ $RELEASE_DIST = "yuzu-windows-msvc-$BUILD_NAME"
14
+ }
15
+
16
+ $MSVC_BUILD_ZIP = "yuzu-windows-msvc-$GITDATE-$GITREV.zip" -replace " ", ""
17
+ $MSVC_BUILD_PDB = "yuzu-windows-msvc-$GITDATE-$GITREV-debugsymbols.zip" -replace " ", ""
18
+ $MSVC_SEVENZIP = "yuzu-windows-msvc-$GITDATE-$GITREV.7z" -replace " ", ""
19
+ $MSVC_TAR = "yuzu-windows-msvc-$GITDATE-$GITREV.tar" -replace " ", ""
20
+ $MSVC_TARXZ = "yuzu-windows-msvc-$GITDATE-$GITREV.tar.xz" -replace " ", ""
21
+ $MSVC_SOURCE = "yuzu-windows-msvc-source-$GITDATE-$GITREV" -replace " ", ""
22
+ $MSVC_SOURCE_TAR = "$MSVC_SOURCE.tar"
23
+ $MSVC_SOURCE_TARXZ = "$MSVC_SOURCE_TAR.xz"
24
+
25
+ $env:BUILD_ZIP = $MSVC_BUILD_ZIP
26
+ $env:BUILD_SYMBOLS = $MSVC_BUILD_PDB
27
+ $env:BUILD_UPDATE = $MSVC_SEVENZIP
28
+
29
+ if (Test-Path -Path ".\build\bin\Release") {
30
+ $BUILD_DIR = ".\build\bin\Release"
31
+ } else {
32
+ $BUILD_DIR = ".\build\bin\"
33
+ }
34
+
35
+ # Cleanup unneeded data in submodules
36
+ git submodule foreach git clean -fxd
37
+
38
+ # Upload debugging symbols
39
+ mkdir pdb
40
+ Get-ChildItem "$BUILD_DIR\" -Recurse -Filter "*.pdb" | Copy-Item -destination .\pdb
41
+ 7z a -tzip $MSVC_BUILD_PDB .\pdb\*.pdb
42
+ rm "$BUILD_DIR\*.pdb"
43
+
44
+ # Create artifact directories
45
+ mkdir $RELEASE_DIST
46
+ mkdir $MSVC_SOURCE
47
+ mkdir "artifacts"
48
+
49
+ $CURRENT_DIR = Convert-Path .
50
+
51
+ # Build a tar.xz for the source of the release
52
+ git clone --depth 1 file://$CURRENT_DIR $MSVC_SOURCE
53
+ 7z a -r -ttar $MSVC_SOURCE_TAR $MSVC_SOURCE
54
+ 7z a -r -txz $MSVC_SOURCE_TARXZ $MSVC_SOURCE_TAR
55
+
56
+ # Following section is quick hack to package artifacts differently for GitHub Actions
57
+ if ("$env:GITHUB_ACTIONS" -eq "true") {
58
+ echo "Hello GitHub Actions"
59
+
60
+ # With vcpkg we now have a few more dll files
61
+ ls .\build\bin\*.dll
62
+ cp .\build\bin\*.dll .\artifacts\
63
+
64
+ # Hopefully there is an exe in either .\build\bin or .\build\bin\Release
65
+ cp .\build\bin\yuzu*.exe .\artifacts\
66
+ Copy-Item "$BUILD_DIR\*" -Destination "artifacts" -Recurse
67
+ Remove-Item .\artifacts\tests.exe -ErrorAction ignore
68
+
69
+ # None of the other GHA builds are including source, so commenting out today
70
+ #Copy-Item $MSVC_SOURCE_TARXZ -Destination "artifacts"
71
+
72
+ # Debugging symbols
73
+ cp .\build\bin\yuzu*.pdb .\artifacts\
74
+
75
+ # Write out a tag BUILD_TAG to environment for the Upload step
76
+ # We're getting ${{ github.event.number }} as $env:PR_NUMBER"
77
+ echo "env:PR_NUMBER: $env:PR_NUMBER"
78
+ if (Test-Path env:PR_NUMBER) {
79
+ $PR_NUMBER = $env:PR_NUMBER.Substring(2) -as [int]
80
+ $PR_NUMBER_TAG = "pr"+([string]$PR_NUMBER).PadLeft(5,'0')
81
+ if ($PR_NUMBER -gt 1){
82
+ $BUILD_TAG="verify-$PR_NUMBER_TAG-$GITDATE-$GITREV"
83
+ } else {
84
+ $BUILD_TAG = "verify-$GITDATE-$GITREV"
85
+ }
86
+ } else {
87
+ # If env:PR_NUMBER isn't set, we should still write out a variable
88
+ $BUILD_TAG = "verify-$GITDATE-$GITREV"
89
+ }
90
+ echo "BUILD_TAG=$BUILD_TAG"
91
+ echo "BUILD_TAG=$BUILD_TAG" >> $env:GITHUB_ENV
92
+
93
+ # For extra job, just the exe
94
+ $INDIVIDUAL_EXE = "yuzu-msvc-$BUILD_TAG.exe"
95
+ echo "INDIVIDUAL_EXE=$INDIVIDUAL_EXE"
96
+ echo "INDIVIDUAL_EXE=$INDIVIDUAL_EXE" >> $env:GITHUB_ENV
97
+ echo "Just the exe: $INDIVIDUAL_EXE"
98
+ cp .\artifacts\yuzu.exe .\$INDIVIDUAL_EXE
99
+
100
+
101
+ } else {
102
+
103
+ # Build the final release artifacts
104
+ Copy-Item $MSVC_SOURCE_TARXZ -Destination $RELEASE_DIST
105
+ Copy-Item "$BUILD_DIR\*" -Destination $RELEASE_DIST -Recurse
106
+ rm "$RELEASE_DIST\*.exe"
107
+ Get-ChildItem "$BUILD_DIR" -Recurse -Filter "yuzu*.exe" | Copy-Item -destination $RELEASE_DIST
108
+ Get-ChildItem "$BUILD_DIR" -Recurse -Filter "QtWebEngineProcess*.exe" | Copy-Item -destination $RELEASE_DIST
109
+ 7z a -tzip $MSVC_BUILD_ZIP $RELEASE_DIST\*
110
+ 7z a $MSVC_SEVENZIP $RELEASE_DIST
111
+
112
+ 7z a -r -ttar $MSVC_TAR $RELEASE_DIST
113
+ 7z a -r -txz $MSVC_TARXZ $MSVC_TAR
114
+
115
+ Get-ChildItem . -Filter "*.zip" | Copy-Item -destination "artifacts"
116
+ Get-ChildItem . -Filter "*.7z" | Copy-Item -destination "artifacts"
117
+ Get-ChildItem . -Filter "*.tar.xz" | Copy-Item -destination "artifacts"
118
+ }
Source Code/Yuzu/.ci/scripts/windows/upload.sh ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash -ex
2
+
3
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
4
+ # SPDX-License-Identifier: GPL-2.0-or-later
5
+
6
+ . .ci/scripts/common/pre-upload.sh
7
+
8
+ REV_NAME="yuzu-windows-mingw-${GITDATE}-${GITREV}"
9
+ ARCHIVE_NAME="${REV_NAME}.tar.xz"
10
+ COMPRESSION_FLAGS="-cJvf"
11
+
12
+ if [ "${RELEASE_NAME}" = "mainline" ]; then
13
+ DIR_NAME="${REV_NAME}"
14
+ else
15
+ DIR_NAME="${REV_NAME}_${RELEASE_NAME}"
16
+ fi
17
+
18
+ mkdir "$DIR_NAME"
19
+ # get around the permission issues
20
+ cp -r package/* "$DIR_NAME"
21
+
22
+ . .ci/scripts/common/post-upload.sh
Source Code/Yuzu/.ci/templates/build-mock.yml ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
2
+ # SPDX-License-Identifier: GPL-2.0-or-later
3
+
4
+ steps:
5
+ - script: mkdir artifacts || echo 'X' > artifacts/T1.txt
6
+ - publish: artifacts
7
+ artifact: 'yuzu-$(BuildName)-mock'
8
+ displayName: 'Upload Artifacts'
Source Code/Yuzu/.ci/templates/build-msvc.yml ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
2
+ # SPDX-License-Identifier: GPL-2.0-or-later
3
+
4
+ parameters:
5
+ artifactSource: 'true'
6
+ cache: 'false'
7
+ version: ''
8
+
9
+ steps:
10
+ - task: Powershell@2
11
+ displayName: 'Install Vulkan SDK'
12
+ inputs:
13
+ targetType: 'filePath'
14
+ filePath: './.ci/scripts/windows/install-vulkan-sdk.ps1'
15
+ - script: refreshenv && glslangValidator --version && mkdir build && cd build && cmake -E env CXXFLAGS="/Gw" cmake -G "Visual Studio 17 2022" -A x64 -DCMAKE_POLICY_DEFAULT_CMP0069=NEW -DYUZU_ENABLE_LTO=ON -DYUZU_USE_BUNDLED_QT=1 -DYUZU_USE_BUNDLED_SDL2=1 -DYUZU_USE_QT_WEB_ENGINE=ON -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DYUZU_ENABLE_COMPATIBILITY_REPORTING=${COMPAT} -DYUZU_TESTS=OFF -DUSE_DISCORD_PRESENCE=ON -DENABLE_QT_TRANSLATION=ON -DDISPLAY_VERSION=${{ parameters['version'] }} -DCMAKE_BUILD_TYPE=Release -DYUZU_CRASH_DUMPS=ON .. && cd ..
16
+ displayName: 'Configure CMake'
17
+ - task: MSBuild@1
18
+ displayName: 'Build'
19
+ inputs:
20
+ solution: 'build/yuzu.sln'
21
+ maximumCpuCount: true
22
+ configuration: release
23
+ - task: PowerShell@2
24
+ displayName: 'Package Artifacts'
25
+ inputs:
26
+ targetType: 'filePath'
27
+ filePath: './.ci/scripts/windows/upload.ps1'
28
+ arguments: '$(BuildName)'
29
+ - publish: artifacts
30
+ artifact: 'yuzu-$(BuildName)-windows-msvc'
31
+ displayName: 'Upload Artifacts'
Source Code/Yuzu/.ci/templates/build-single.yml ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
2
+ # SPDX-License-Identifier: GPL-2.0-or-later
3
+
4
+ parameters:
5
+ artifactSource: 'true'
6
+ cache: 'false'
7
+ version: ''
8
+
9
+ steps:
10
+ - task: DockerInstaller@0
11
+ displayName: 'Prepare Environment'
12
+ inputs:
13
+ dockerVersion: '17.09.0-ce'
14
+ - task: CacheBeta@0
15
+ displayName: 'Cache Build System'
16
+ inputs:
17
+ key: yuzu-v1-$(BuildName)-$(BuildSuffix)-$(CacheSuffix)
18
+ path: $(System.DefaultWorkingDirectory)/ccache
19
+ cacheHitVar: CACHE_RESTORED
20
+ - script: chmod a+x ./.ci/scripts/$(ScriptFolder)/exec.sh && ./.ci/scripts/$(ScriptFolder)/exec.sh ${{ parameters['version'] }}
21
+ displayName: 'Build'
22
+ - script: chmod a+x ./.ci/scripts/$(ScriptFolder)/upload.sh && RELEASE_NAME=$(BuildName) ./.ci/scripts/$(ScriptFolder)/upload.sh
23
+ displayName: 'Package Artifacts'
24
+ - publish: artifacts
25
+ artifact: 'yuzu-$(BuildName)-$(BuildSuffix)'
26
+ displayName: 'Upload Artifacts'
Source Code/Yuzu/.ci/templates/build-standard.yml ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
2
+ # SPDX-License-Identifier: GPL-2.0-or-later
3
+
4
+ parameters:
5
+ version: ''
6
+
7
+ jobs:
8
+ - job: build
9
+ displayName: 'standard'
10
+ pool:
11
+ vmImage: ubuntu-latest
12
+ strategy:
13
+ maxParallel: 10
14
+ matrix:
15
+ windows:
16
+ BuildSuffix: 'windows-mingw'
17
+ ScriptFolder: 'windows'
18
+ clang:
19
+ BuildSuffix: 'clang'
20
+ ScriptFolder: 'clang'
21
+ linux:
22
+ BuildSuffix: 'linux'
23
+ ScriptFolder: 'linux'
24
+ steps:
25
+ - template: ./sync-source.yml
26
+ parameters:
27
+ artifactSource: $(parameters.artifactSource)
28
+ needSubmodules: 'true'
29
+ - template: ./build-single.yml
30
+ parameters:
31
+ artifactSource: 'false'
32
+ cache: $(parameters.cache)
33
+ version: $(parameters.version)
Source Code/Yuzu/.ci/templates/build-testing.yml ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
2
+ # SPDX-License-Identifier: GPL-2.0-or-later
3
+
4
+ parameters:
5
+ version: ''
6
+
7
+ jobs:
8
+ - job: build_test
9
+ displayName: 'testing'
10
+ pool:
11
+ vmImage: ubuntu-latest
12
+ strategy:
13
+ maxParallel: 5
14
+ matrix:
15
+ windows:
16
+ BuildSuffix: 'windows-testing'
17
+ ScriptFolder: 'windows'
18
+ steps:
19
+ - script: sudo apt-get update && sudo apt-get --only-upgrade -y install python3-pip && pip install requests urllib3
20
+ displayName: 'Prepare Environment'
21
+ - task: PythonScript@0
22
+ condition: eq(variables['Build.Reason'], 'PullRequest')
23
+ displayName: 'Determine Testing Status'
24
+ inputs:
25
+ scriptSource: 'filePath'
26
+ scriptPath: '.ci/scripts/merge/check-label-presence.py'
27
+ arguments: '$(System.PullRequest.PullRequestNumber) create-testing-build'
28
+ - ${{ if eq(variables.enabletesting, 'true') }}:
29
+ - template: ./sync-source.yml
30
+ parameters:
31
+ artifactSource: $(parameters.artifactSource)
32
+ needSubmodules: 'true'
33
+ - template: ./mergebot.yml
34
+ parameters:
35
+ matchLabel: 'testing-merge'
36
+ - template: ./build-single.yml
37
+ parameters:
38
+ artifactSource: 'false'
39
+ cache: 'false'
40
+ version: $(parameters.version)
Source Code/Yuzu/.ci/templates/format-check.yml ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
2
+ # SPDX-License-Identifier: GPL-2.0-or-later
3
+
4
+ parameters:
5
+ artifactSource: 'true'
6
+
7
+ steps:
8
+ - template: ./sync-source.yml
9
+ parameters:
10
+ artifactSource: $(parameters.artifactSource)
11
+ needSubmodules: 'false'
12
+ - task: DockerInstaller@0
13
+ displayName: 'Prepare Environment'
14
+ inputs:
15
+ dockerVersion: '17.09.0-ce'
16
+ - script: chmod a+x ./.ci/scripts/format/exec.sh && ./.ci/scripts/format/exec.sh
17
+ displayName: 'Verify Formatting'
Source Code/Yuzu/.ci/templates/merge-private.yml ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
2
+ # SPDX-License-Identifier: GPL-2.0-or-later
3
+
4
+ jobs:
5
+ - job: merge
6
+ displayName: 'pull requests'
7
+ pool:
8
+ vmImage: 'ubuntu-latest'
9
+ steps:
10
+ - checkout: self
11
+ submodules: recursive
12
+ - template: ./mergebot-private.yml
13
+ parameters:
14
+ matchLabel: '$(BuildName)-merge'
15
+ matchLabelPublic: '$(PublicBuildName)-merge'
16
+ - task: ArchiveFiles@2
17
+ displayName: 'Package Source'
18
+ inputs:
19
+ rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
20
+ includeRootFolder: false
21
+ archiveType: '7z'
22
+ archiveFile: '$(Build.ArtifactStagingDirectory)/yuzu-$(BuildName)-source.7z'
23
+ - task: PublishPipelineArtifact@1
24
+ displayName: 'Upload Artifacts'
25
+ inputs:
26
+ targetPath: '$(Build.ArtifactStagingDirectory)/yuzu-$(BuildName)-source.7z'
27
+ artifact: 'yuzu-$(BuildName)-source'
28
+ replaceExistingArchive: true
29
+ - job: upload_source
30
+ displayName: 'upload'
31
+ dependsOn: merge
32
+ pool:
33
+ vmImage: 'ubuntu-latest'
34
+ steps:
35
+ - template: ./sync-source.yml
36
+ parameters:
37
+ artifactSource: 'true'
38
+ needSubmodules: 'true'
39
+ - script: chmod a+x $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh && $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh
40
+ displayName: 'Apply Git Configuration'
41
+ - script: git remote add other $(GitRepoPushChangesURL)
42
+ displayName: 'Register Repository'
43
+ - script: git push --force other HEAD:$(GitPushBranch)
44
+ displayName: 'Update Code'
Source Code/Yuzu/.ci/templates/merge.yml ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
2
+ # SPDX-License-Identifier: GPL-2.0-or-later
3
+
4
+ jobs:
5
+ - job: merge
6
+ displayName: 'pull requests'
7
+ pool:
8
+ vmImage: 'ubuntu-latest'
9
+ steps:
10
+ - checkout: self
11
+ submodules: recursive
12
+ - template: ./mergebot.yml
13
+ parameters:
14
+ matchLabel: '$(BuildName)-merge'
15
+ - task: ArchiveFiles@2
16
+ displayName: 'Package Source'
17
+ inputs:
18
+ rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
19
+ includeRootFolder: false
20
+ archiveType: '7z'
21
+ archiveFile: '$(Build.ArtifactStagingDirectory)/yuzu-$(BuildName)-source.7z'
22
+ - task: PublishPipelineArtifact@1
23
+ displayName: 'Upload Artifacts'
24
+ inputs:
25
+ targetPath: '$(Build.ArtifactStagingDirectory)/yuzu-$(BuildName)-source.7z'
26
+ artifact: 'yuzu-$(BuildName)-source'
27
+ replaceExistingArchive: true
28
+ - job: upload_source
29
+ displayName: 'upload'
30
+ dependsOn: merge
31
+ pool:
32
+ vmImage: 'ubuntu-latest'
33
+ steps:
34
+ - template: ./sync-source.yml
35
+ parameters:
36
+ artifactSource: 'true'
37
+ needSubmodules: 'true'
38
+ - script: chmod a+x $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh && $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh
39
+ displayName: 'Apply Git Configuration'
40
+ - script: git remote add other $(GitRepoPushChangesURL)
41
+ displayName: 'Register Repository'
42
+ - script: git push --force other HEAD:$(GitPushBranch)
43
+ displayName: 'Update Code'
Source Code/Yuzu/.ci/templates/mergebot-private.yml ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
2
+ # SPDX-License-Identifier: GPL-2.0-or-later
3
+
4
+ parameters:
5
+ matchLabel: 'dummy-merge'
6
+ matchLabelPublic: 'dummy-merge'
7
+
8
+ steps:
9
+ - script: mkdir $(System.DefaultWorkingDirectory)/patches && pip install requests urllib3
10
+ displayName: 'Prepare Environment'
11
+ - script: chmod a+x $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh && $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh
12
+ displayName: 'Apply Git Configuration'
13
+ - task: PythonScript@0
14
+ displayName: 'Discover, Download, and Apply Patches (Mainline)'
15
+ inputs:
16
+ scriptSource: 'filePath'
17
+ scriptPath: '.ci/scripts/merge/apply-patches-by-label.py'
18
+ arguments: '${{ parameters.matchLabelPublic }} $(MergeTaglinePublic) patches-public'
19
+ workingDirectory: '$(System.DefaultWorkingDirectory)'
20
+ - task: PythonScript@0
21
+ displayName: 'Discover, Download, and Apply Patches (Patreon Public)'
22
+ inputs:
23
+ scriptSource: 'filePath'
24
+ scriptPath: '.ci/scripts/merge/apply-patches-by-label.py'
25
+ arguments: '${{ parameters.matchLabel }} "$(MergeTaglinePrivate) Public" patches-mixed-public'
26
+ workingDirectory: '$(System.DefaultWorkingDirectory)'
27
+ - task: PythonScript@0
28
+ displayName: 'Discover, Download, and Apply Patches (Patreon Private)'
29
+ inputs:
30
+ scriptSource: 'filePath'
31
+ scriptPath: '.ci/scripts/merge/apply-patches-by-label-private.py'
32
+ arguments: '$(PrivateMergeUser) ${{ parameters.matchLabel }} "$(MergeTaglinePrivate) Private" patches-private'
33
+ workingDirectory: '$(System.DefaultWorkingDirectory)'
Source Code/Yuzu/.ci/templates/mergebot.yml ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SPDX-FileCopyrightText: 2019 yuzu Emulator Project
2
+ # SPDX-License-Identifier: GPL-2.0-or-later
3
+
4
+ parameters:
5
+ matchLabel: 'dummy-merge'
6
+
7
+ steps:
8
+ - script: mkdir $(System.DefaultWorkingDirectory)/patches && pip install requests urllib3
9
+ displayName: 'Prepare Environment'
10
+ - script: chmod a+x $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh && $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh
11
+ displayName: 'Apply Git Configuration'
12
+ - task: PythonScript@0
13
+ displayName: 'Discover, Download, and Apply Patches'
14
+ inputs:
15
+ scriptSource: 'filePath'
16
+ scriptPath: '.ci/scripts/merge/apply-patches-by-label.py'
17
+ arguments: '${{ parameters.matchLabel }} Tagged patches'
18
+ workingDirectory: '$(System.DefaultWorkingDirectory)'