Commit ·
3708354
1
Parent(s): e18d0a2
Tambah Data
Browse filesThis view is limited to 50 files because it contains too many changes.
See raw diff
- Releases/Yuzu/android.zip +2 -2
- Releases/Yuzu/apk.zip +3 -0
- Releases/Yuzu/mainline.zip +3 -0
- Releases/Yuzu/windows.zip +3 -0
- Source Code/Citra/.ci/android.sh +22 -0
- Source Code/Citra/.ci/clang-format.sh +37 -0
- Source Code/Citra/.ci/linux.sh +20 -0
- Source Code/Citra/.ci/macos-universal.sh +43 -0
- Source Code/Citra/.ci/macos.sh +21 -0
- Source Code/Citra/.ci/pack.sh +41 -0
- Source Code/Citra/.ci/source.sh +20 -0
- Source Code/Citra/.ci/transifex.sh +14 -0
- Source Code/Citra/.ci/windows.sh +17 -0
- Source Code/Citra/.lgtm.yml +13 -0
- Source Code/Yuzu/.ci/scripts/android/build.sh +29 -0
- Source Code/Yuzu/.ci/scripts/android/eabuild.sh +21 -0
- Source Code/Yuzu/.ci/scripts/android/mainlinebuild.sh +21 -0
- Source Code/Yuzu/.ci/scripts/android/upload.sh +22 -0
- Source Code/Yuzu/.ci/scripts/clang/docker.sh +32 -0
- Source Code/Yuzu/.ci/scripts/clang/exec.sh +11 -0
- Source Code/Yuzu/.ci/scripts/clang/upload.sh +23 -0
- Source Code/Yuzu/.ci/scripts/common/post-upload.sh +20 -0
- Source Code/Yuzu/.ci/scripts/common/pre-upload.sh +10 -0
- Source Code/Yuzu/.ci/scripts/format/docker.sh +9 -0
- Source Code/Yuzu/.ci/scripts/format/exec.sh +10 -0
- Source Code/Yuzu/.ci/scripts/format/script.sh +37 -0
- Source Code/Yuzu/.ci/scripts/linux/docker.sh +79 -0
- Source Code/Yuzu/.ci/scripts/linux/exec.sh +16 -0
- Source Code/Yuzu/.ci/scripts/linux/upload.sh +67 -0
- Source Code/Yuzu/.ci/scripts/merge/apply-patches-by-label-private.py +48 -0
- Source Code/Yuzu/.ci/scripts/merge/apply-patches-by-label.py +38 -0
- Source Code/Yuzu/.ci/scripts/merge/check-label-presence.py +21 -0
- Source Code/Yuzu/.ci/scripts/merge/yuzubot-git-config.sh +5 -0
- Source Code/Yuzu/.ci/scripts/transifex/docker.sh +19 -0
- Source Code/Yuzu/.ci/scripts/windows/docker.sh +66 -0
- Source Code/Yuzu/.ci/scripts/windows/exec.sh +11 -0
- Source Code/Yuzu/.ci/scripts/windows/install-vulkan-sdk.ps1 +33 -0
- Source Code/Yuzu/.ci/scripts/windows/scan_dll.py +109 -0
- Source Code/Yuzu/.ci/scripts/windows/upload.ps1 +118 -0
- Source Code/Yuzu/.ci/scripts/windows/upload.sh +22 -0
- Source Code/Yuzu/.ci/templates/build-mock.yml +8 -0
- Source Code/Yuzu/.ci/templates/build-msvc.yml +31 -0
- Source Code/Yuzu/.ci/templates/build-single.yml +26 -0
- Source Code/Yuzu/.ci/templates/build-standard.yml +33 -0
- Source Code/Yuzu/.ci/templates/build-testing.yml +40 -0
- Source Code/Yuzu/.ci/templates/format-check.yml +17 -0
- Source Code/Yuzu/.ci/templates/merge-private.yml +44 -0
- Source Code/Yuzu/.ci/templates/merge.yml +43 -0
- Source Code/Yuzu/.ci/templates/mergebot-private.yml +33 -0
- 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:
|
| 3 |
-
size
|
|
|
|
| 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)'
|