mirror of
https://gitlab.com/suyu-emu/suyu.git
synced 2024-03-15 23:15:44 +00:00
try three of importing hidden files from legacy
On branch master Your branch is up to date with 'origin/master'. Changes to be committed: new file: .ci/.DS_Store new file: .ci/scripts/android/build.sh new file: .ci/scripts/android/eabuild.sh new file: .ci/scripts/android/mainlinebuild.sh new file: .ci/scripts/android/upload.sh new file: .ci/scripts/clang/docker.sh new file: .ci/scripts/clang/exec.sh new file: .ci/scripts/clang/upload.sh new file: .ci/scripts/common/post-upload.sh new file: .ci/scripts/common/pre-upload.sh new file: .ci/scripts/format/docker.sh new file: .ci/scripts/format/exec.sh new file: .ci/scripts/format/script.sh new file: .ci/scripts/linux/docker.sh new file: .ci/scripts/linux/exec.sh new file: .ci/scripts/linux/upload.sh new file: .ci/scripts/merge/apply-patches-by-label-private.py new file: .ci/scripts/merge/apply-patches-by-label.py new file: .ci/scripts/merge/check-label-presence.py new file: .ci/scripts/merge/yuzubot-git-config.sh new file: .ci/scripts/transifex/docker.sh new file: .ci/scripts/windows/docker.sh new file: .ci/scripts/windows/exec.sh new file: .ci/scripts/windows/install-vulkan-sdk.ps1 new file: .ci/scripts/windows/scan_dll.py new file: .ci/scripts/windows/upload.ps1 new file: .ci/scripts/windows/upload.sh new file: .ci/templates/build-mock.yml new file: .ci/templates/build-msvc.yml new file: .ci/templates/build-single.yml new file: .ci/templates/build-standard.yml new file: .ci/templates/build-testing.yml new file: .ci/templates/format-check.yml new file: .ci/templates/merge-private.yml new file: .ci/templates/merge.yml new file: .ci/templates/mergebot-private.yml new file: .ci/templates/mergebot.yml new file: .ci/templates/release-download.yml new file: .ci/templates/release-github.yml new file: .ci/templates/release-private-tag.yml new file: .ci/templates/release-universal.yml new file: .ci/templates/retrieve-artifact-source.yml new file: .ci/templates/retrieve-master-source.yml new file: .ci/templates/sync-source.yml new file: .ci/yuzu-mainline-step1.yml new file: .ci/yuzu-mainline-step2.yml new file: .ci/yuzu-patreon-step1.yml new file: .ci/yuzu-patreon-step2.yml new file: .ci/yuzu-repo-sync.yml new file: .ci/yuzu-verify.yml new file: .codespellrc new file: .git-blame-ignore-revs new file: .gitattributes new file: .gitignore new file: .gitmodules new file: .reuse/dep5
This commit is contained in:
parent
31361cf71b
commit
e49c779bc0
BIN
.ci/.DS_Store
vendored
Normal file
BIN
.ci/.DS_Store
vendored
Normal file
Binary file not shown.
29
.ci/scripts/android/build.sh
Executable file
29
.ci/scripts/android/build.sh
Executable file
|
@ -0,0 +1,29 @@
|
||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
export NDK_CCACHE="$(which ccache)"
|
||||||
|
ccache -s
|
||||||
|
|
||||||
|
BUILD_FLAVOR="mainline"
|
||||||
|
|
||||||
|
BUILD_TYPE="release"
|
||||||
|
if [ "${GITHUB_REPOSITORY}" == "yuzu-emu/yuzu" ]; then
|
||||||
|
BUILD_TYPE="relWithDebInfo"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then
|
||||||
|
export ANDROID_KEYSTORE_FILE="${GITHUB_WORKSPACE}/ks.jks"
|
||||||
|
base64 --decode <<< "${ANDROID_KEYSTORE_B64}" > "${ANDROID_KEYSTORE_FILE}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd src/android
|
||||||
|
chmod +x ./gradlew
|
||||||
|
./gradlew "assemble${BUILD_FLAVOR}${BUILD_TYPE}" "bundle${BUILD_FLAVOR}${BUILD_TYPE}"
|
||||||
|
|
||||||
|
ccache -s
|
||||||
|
|
||||||
|
if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then
|
||||||
|
rm "${ANDROID_KEYSTORE_FILE}"
|
||||||
|
fi
|
21
.ci/scripts/android/eabuild.sh
Normal file
21
.ci/scripts/android/eabuild.sh
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2024 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
export NDK_CCACHE="$(which ccache)"
|
||||||
|
ccache -s
|
||||||
|
|
||||||
|
export ANDROID_KEYSTORE_FILE="${GITHUB_WORKSPACE}/ks.jks"
|
||||||
|
base64 --decode <<< "${EA_PLAY_ANDROID_KEYSTORE_B64}" > "${ANDROID_KEYSTORE_FILE}"
|
||||||
|
export ANDROID_KEY_ALIAS="${PLAY_ANDROID_KEY_ALIAS}"
|
||||||
|
export ANDROID_KEYSTORE_PASS="${PLAY_ANDROID_KEYSTORE_PASS}"
|
||||||
|
export SERVICE_ACCOUNT_KEY_PATH="${GITHUB_WORKSPACE}/sa.json"
|
||||||
|
base64 --decode <<< "${EA_SERVICE_ACCOUNT_KEY_B64}" > "${SERVICE_ACCOUNT_KEY_PATH}"
|
||||||
|
./gradlew "publishEaReleaseBundle"
|
||||||
|
|
||||||
|
ccache -s
|
||||||
|
|
||||||
|
if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then
|
||||||
|
rm "${ANDROID_KEYSTORE_FILE}"
|
||||||
|
fi
|
21
.ci/scripts/android/mainlinebuild.sh
Normal file
21
.ci/scripts/android/mainlinebuild.sh
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2024 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
export NDK_CCACHE="$(which ccache)"
|
||||||
|
ccache -s
|
||||||
|
|
||||||
|
export ANDROID_KEYSTORE_FILE="${GITHUB_WORKSPACE}/ks.jks"
|
||||||
|
base64 --decode <<< "${MAINLINE_PLAY_ANDROID_KEYSTORE_B64}" > "${ANDROID_KEYSTORE_FILE}"
|
||||||
|
export ANDROID_KEY_ALIAS="${PLAY_ANDROID_KEY_ALIAS}"
|
||||||
|
export ANDROID_KEYSTORE_PASS="${PLAY_ANDROID_KEYSTORE_PASS}"
|
||||||
|
export SERVICE_ACCOUNT_KEY_PATH="${GITHUB_WORKSPACE}/sa.json"
|
||||||
|
base64 --decode <<< "${MAINLINE_SERVICE_ACCOUNT_KEY_B64}" > "${SERVICE_ACCOUNT_KEY_PATH}"
|
||||||
|
./gradlew "publishMainlineReleaseBundle"
|
||||||
|
|
||||||
|
ccache -s
|
||||||
|
|
||||||
|
if [ ! -z "${ANDROID_KEYSTORE_B64}" ]; then
|
||||||
|
rm "${ANDROID_KEYSTORE_FILE}"
|
||||||
|
fi
|
22
.ci/scripts/android/upload.sh
Executable file
22
.ci/scripts/android/upload.sh
Executable file
|
@ -0,0 +1,22 @@
|
||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
. ./.ci/scripts/common/pre-upload.sh
|
||||||
|
|
||||||
|
REV_NAME="yuzu-${GITDATE}-${GITREV}"
|
||||||
|
|
||||||
|
BUILD_FLAVOR="mainline"
|
||||||
|
|
||||||
|
BUILD_TYPE_LOWER="release"
|
||||||
|
BUILD_TYPE_UPPER="Release"
|
||||||
|
if [ "${GITHUB_REPOSITORY}" == "yuzu-emu/yuzu" ]; then
|
||||||
|
BUILD_TYPE_LOWER="relWithDebInfo"
|
||||||
|
BUILD_TYPE_UPPER="RelWithDebInfo"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cp src/android/app/build/outputs/apk/"${BUILD_FLAVOR}/${BUILD_TYPE_LOWER}/app-${BUILD_FLAVOR}-${BUILD_TYPE_LOWER}.apk" \
|
||||||
|
"artifacts/${REV_NAME}.apk"
|
||||||
|
cp src/android/app/build/outputs/bundle/"${BUILD_FLAVOR}${BUILD_TYPE_UPPER}"/"app-${BUILD_FLAVOR}-${BUILD_TYPE_LOWER}.aab" \
|
||||||
|
"artifacts/${REV_NAME}.aab"
|
32
.ci/scripts/clang/docker.sh
Executable file
32
.ci/scripts/clang/docker.sh
Executable file
|
@ -0,0 +1,32 @@
|
||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2021 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
# Exit on error, rather than continuing with the rest of the script.
|
||||||
|
set -e
|
||||||
|
|
||||||
|
ccache -s
|
||||||
|
|
||||||
|
mkdir build || true && cd build
|
||||||
|
cmake .. \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_CXX_FLAGS="-march=x86-64-v2" \
|
||||||
|
-DCMAKE_CXX_COMPILER=/usr/lib/ccache/clang++ \
|
||||||
|
-DCMAKE_C_COMPILER=/usr/lib/ccache/clang \
|
||||||
|
-DCMAKE_INSTALL_PREFIX="/usr" \
|
||||||
|
-DDISPLAY_VERSION=$1 \
|
||||||
|
-DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON \
|
||||||
|
-DENABLE_QT_TRANSLATION=ON \
|
||||||
|
-DUSE_DISCORD_PRESENCE=ON \
|
||||||
|
-DYUZU_CRASH_DUMPS=ON \
|
||||||
|
-DYUZU_ENABLE_COMPATIBILITY_REPORTING=${ENABLE_COMPATIBILITY_REPORTING:-"OFF"} \
|
||||||
|
-DYUZU_USE_BUNDLED_FFMPEG=ON \
|
||||||
|
-GNinja
|
||||||
|
|
||||||
|
ninja
|
||||||
|
|
||||||
|
ccache -s
|
||||||
|
|
||||||
|
ctest -VV -C Release
|
||||||
|
|
11
.ci/scripts/clang/exec.sh
Normal file
11
.ci/scripts/clang/exec.sh
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2021 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
mkdir -p "ccache" || true
|
||||||
|
chmod a+x ./.ci/scripts/clang/docker.sh
|
||||||
|
# the UID for the container yuzu user is 1027
|
||||||
|
sudo chown -R 1027 ./
|
||||||
|
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"
|
||||||
|
sudo chown -R $UID ./
|
23
.ci/scripts/clang/upload.sh
Executable file
23
.ci/scripts/clang/upload.sh
Executable file
|
@ -0,0 +1,23 @@
|
||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2021 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
. .ci/scripts/common/pre-upload.sh
|
||||||
|
|
||||||
|
REV_NAME="yuzu-linux-${GITDATE}-${GITREV}"
|
||||||
|
ARCHIVE_NAME="${REV_NAME}.tar.xz"
|
||||||
|
COMPRESSION_FLAGS="-cJvf"
|
||||||
|
|
||||||
|
if [ "${RELEASE_NAME}" = "mainline" ]; then
|
||||||
|
DIR_NAME="${REV_NAME}"
|
||||||
|
else
|
||||||
|
DIR_NAME="${REV_NAME}_${RELEASE_NAME}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir "$DIR_NAME"
|
||||||
|
|
||||||
|
cp build/bin/yuzu-cmd "$DIR_NAME"
|
||||||
|
cp build/bin/yuzu "$DIR_NAME"
|
||||||
|
|
||||||
|
. .ci/scripts/common/post-upload.sh
|
20
.ci/scripts/common/post-upload.sh
Normal file
20
.ci/scripts/common/post-upload.sh
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
# Copy documentation
|
||||||
|
cp LICENSE.txt "$DIR_NAME"
|
||||||
|
cp README.md "$DIR_NAME"
|
||||||
|
|
||||||
|
if [[ -z "${NO_SOURCE_PACK}" ]]; then
|
||||||
|
git clone --depth 1 file://$(readlink -e .) ${REV_NAME}-source
|
||||||
|
tar -cJvf "${REV_NAME}-source.tar.xz" ${REV_NAME}-source
|
||||||
|
cp -v "${REV_NAME}-source.tar.xz" "$DIR_NAME"
|
||||||
|
cp -v "${REV_NAME}-source.tar.xz" "${ARTIFACTS_DIR}/"
|
||||||
|
fi
|
||||||
|
|
||||||
|
tar $COMPRESSION_FLAGS "$ARCHIVE_NAME" "$DIR_NAME"
|
||||||
|
|
||||||
|
# move the compiled archive into the artifacts directory to be uploaded by travis releases
|
||||||
|
mv "$ARCHIVE_NAME" "${ARTIFACTS_DIR}/"
|
10
.ci/scripts/common/pre-upload.sh
Normal file
10
.ci/scripts/common/pre-upload.sh
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
GITDATE="`git show -s --date=short --format='%ad' | sed 's/-//g'`"
|
||||||
|
GITREV="`git show -s --format='%h'`"
|
||||||
|
ARTIFACTS_DIR="$PWD/artifacts"
|
||||||
|
|
||||||
|
mkdir -p "${ARTIFACTS_DIR}/"
|
9
.ci/scripts/format/docker.sh
Normal file
9
.ci/scripts/format/docker.sh
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
# Run clang-format
|
||||||
|
cd /yuzu
|
||||||
|
chmod a+x ./.ci/scripts/format/script.sh
|
||||||
|
./.ci/scripts/format/script.sh
|
10
.ci/scripts/format/exec.sh
Normal file
10
.ci/scripts/format/exec.sh
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
chmod a+x ./.ci/scripts/format/docker.sh
|
||||||
|
# the UID for the container yuzu user is 1027
|
||||||
|
sudo chown -R 1027 ./
|
||||||
|
docker run -v "$(pwd):/yuzu" -w /yuzu yuzuemu/build-environments:linux-clang-format /bin/bash -ex /yuzu/.ci/scripts/format/docker.sh
|
||||||
|
sudo chown -R $UID ./
|
37
.ci/scripts/format/script.sh
Executable file
37
.ci/scripts/format/script.sh
Executable file
|
@ -0,0 +1,37 @@
|
||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
shopt -s nullglob globstar
|
||||||
|
|
||||||
|
if git grep -nrI '\s$' src **/*.yml **/*.txt **/*.md Doxyfile .gitignore .gitmodules .ci* dist/*.desktop dist/*.svg dist/*.xml; then
|
||||||
|
echo Trailing whitespace found, aborting
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Default clang-format points to default 3.5 version one
|
||||||
|
CLANG_FORMAT="${CLANG_FORMAT:-clang-format-15}"
|
||||||
|
"$CLANG_FORMAT" --version
|
||||||
|
|
||||||
|
# Turn off tracing for this because it's too verbose
|
||||||
|
set +x
|
||||||
|
|
||||||
|
# Check everything for branch pushes
|
||||||
|
FILES_TO_LINT="$(find src/ -name '*.cpp' -or -name '*.h')"
|
||||||
|
|
||||||
|
for f in $FILES_TO_LINT; do
|
||||||
|
echo "$f"
|
||||||
|
"$CLANG_FORMAT" -i "$f"
|
||||||
|
done
|
||||||
|
|
||||||
|
DIFF=$(git -c core.fileMode=false diff)
|
||||||
|
|
||||||
|
if [ ! -z "$DIFF" ]; then
|
||||||
|
echo "!!! Not compliant to coding style, here is the fix:"
|
||||||
|
echo "$DIFF"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd src/android
|
||||||
|
./gradlew ktlintCheck
|
79
.ci/scripts/linux/docker.sh
Executable file
79
.ci/scripts/linux/docker.sh
Executable file
|
@ -0,0 +1,79 @@
|
||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
# Exit on error, rather than continuing with the rest of the script.
|
||||||
|
set -e
|
||||||
|
|
||||||
|
ccache -s
|
||||||
|
|
||||||
|
mkdir build || true && cd build
|
||||||
|
cmake .. \
|
||||||
|
-DBoost_USE_STATIC_LIBS=ON \
|
||||||
|
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||||
|
-DCMAKE_CXX_FLAGS="-march=x86-64-v2" \
|
||||||
|
-DCMAKE_CXX_COMPILER=/usr/lib/ccache/g++ \
|
||||||
|
-DCMAKE_C_COMPILER=/usr/lib/ccache/gcc \
|
||||||
|
-DCMAKE_INSTALL_PREFIX="/usr" \
|
||||||
|
-DDISPLAY_VERSION=$1 \
|
||||||
|
-DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON \
|
||||||
|
-DENABLE_QT_TRANSLATION=ON \
|
||||||
|
-DUSE_DISCORD_PRESENCE=ON \
|
||||||
|
-DYUZU_ENABLE_COMPATIBILITY_REPORTING=${ENABLE_COMPATIBILITY_REPORTING:-"OFF"} \
|
||||||
|
-DYUZU_USE_BUNDLED_FFMPEG=ON \
|
||||||
|
-DYUZU_ENABLE_LTO=ON \
|
||||||
|
-DYUZU_CRASH_DUMPS=ON \
|
||||||
|
-GNinja
|
||||||
|
|
||||||
|
ninja
|
||||||
|
|
||||||
|
ccache -s
|
||||||
|
|
||||||
|
ctest -VV -C Release
|
||||||
|
|
||||||
|
# Separate debug symbols from specified executables
|
||||||
|
for EXE in yuzu; do
|
||||||
|
EXE_PATH="bin/$EXE"
|
||||||
|
# Copy debug symbols out
|
||||||
|
objcopy --only-keep-debug $EXE_PATH $EXE_PATH.debug
|
||||||
|
# Add debug link and strip debug symbols
|
||||||
|
objcopy -g --add-gnu-debuglink=$EXE_PATH.debug $EXE_PATH $EXE_PATH.out
|
||||||
|
# Overwrite original with stripped copy
|
||||||
|
mv $EXE_PATH.out $EXE_PATH
|
||||||
|
done
|
||||||
|
# Strip debug symbols from all executables
|
||||||
|
find bin/ -type f -not -regex '.*.debug' -exec strip -g {} ';'
|
||||||
|
|
||||||
|
DESTDIR="$PWD/AppDir" ninja install
|
||||||
|
rm -vf AppDir/usr/bin/yuzu-cmd AppDir/usr/bin/yuzu-tester
|
||||||
|
|
||||||
|
# Download tools needed to build an AppImage
|
||||||
|
wget -nc https://raw.githubusercontent.com/yuzu-emu/ext-linux-bin/main/appimage/deploy-linux.sh
|
||||||
|
wget -nc https://raw.githubusercontent.com/yuzu-emu/AppImageKit-checkrt/old/AppRun.sh
|
||||||
|
wget -nc https://github.com/yuzu-emu/ext-linux-bin/raw/main/appimage/exec-x86_64.so
|
||||||
|
# Set executable bit
|
||||||
|
chmod 755 \
|
||||||
|
deploy-linux.sh \
|
||||||
|
AppRun.sh \
|
||||||
|
exec-x86_64.so \
|
||||||
|
|
||||||
|
# Workaround for https://github.com/AppImage/AppImageKit/issues/828
|
||||||
|
export APPIMAGE_EXTRACT_AND_RUN=1
|
||||||
|
|
||||||
|
mkdir -p AppDir/usr/optional
|
||||||
|
mkdir -p AppDir/usr/optional/libstdc++
|
||||||
|
mkdir -p AppDir/usr/optional/libgcc_s
|
||||||
|
|
||||||
|
# Deploy yuzu's needed dependencies
|
||||||
|
DEPLOY_QT=1 ./deploy-linux.sh AppDir/usr/bin/yuzu AppDir
|
||||||
|
|
||||||
|
# Workaround for libQt5MultimediaGstTools indirectly requiring libwayland-client and breaking Vulkan usage on end-user systems
|
||||||
|
find AppDir -type f -regex '.*libwayland-client\.so.*' -delete -print
|
||||||
|
|
||||||
|
# Workaround for building yuzu with GCC 10 but also trying to distribute it to Ubuntu 18.04 et al.
|
||||||
|
# See https://github.com/darealshinji/AppImageKit-checkrt
|
||||||
|
cp exec-x86_64.so AppDir/usr/optional/exec.so
|
||||||
|
cp AppRun.sh AppDir/AppRun
|
||||||
|
cp --dereference /usr/lib/x86_64-linux-gnu/libstdc++.so.6 AppDir/usr/optional/libstdc++/libstdc++.so.6
|
||||||
|
cp --dereference /lib/x86_64-linux-gnu/libgcc_s.so.1 AppDir/usr/optional/libgcc_s/libgcc_s.so.1
|
16
.ci/scripts/linux/exec.sh
Normal file
16
.ci/scripts/linux/exec.sh
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
mkdir -p "ccache" || true
|
||||||
|
chmod a+x ./.ci/scripts/linux/docker.sh
|
||||||
|
# the UID for the container yuzu user is 1027
|
||||||
|
sudo chown -R 1027 ./
|
||||||
|
|
||||||
|
# The environment variables listed below:
|
||||||
|
# AZURECIREPO TITLEBARFORMATIDLE TITLEBARFORMATRUNNING DISPLAYVERSION
|
||||||
|
# are requested in src/common/CMakeLists.txt and appear to be provided somewhere in Azure DevOps
|
||||||
|
|
||||||
|
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"
|
||||||
|
sudo chown -R $UID ./
|
67
.ci/scripts/linux/upload.sh
Executable file
67
.ci/scripts/linux/upload.sh
Executable file
|
@ -0,0 +1,67 @@
|
||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
. .ci/scripts/common/pre-upload.sh
|
||||||
|
|
||||||
|
APPIMAGE_NAME="yuzu-${RELEASE_NAME}-${GITDATE}-${GITREV}.AppImage"
|
||||||
|
BASE_NAME="yuzu-linux"
|
||||||
|
REV_NAME="${BASE_NAME}-${GITDATE}-${GITREV}"
|
||||||
|
ARCHIVE_NAME="${REV_NAME}.tar.xz"
|
||||||
|
COMPRESSION_FLAGS="-cJvf"
|
||||||
|
|
||||||
|
if [ "${RELEASE_NAME}" = "mainline" ] || [ "${RELEASE_NAME}" = "early-access" ]; then
|
||||||
|
DIR_NAME="${BASE_NAME}-${RELEASE_NAME}"
|
||||||
|
else
|
||||||
|
DIR_NAME="${REV_NAME}-${RELEASE_NAME}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir "$DIR_NAME"
|
||||||
|
|
||||||
|
cp build/bin/yuzu-cmd "$DIR_NAME"
|
||||||
|
if [ "${RELEASE_NAME}" != "early-access" ] && [ "${RELEASE_NAME}" != "mainline" ]; then
|
||||||
|
cp build/bin/yuzu "$DIR_NAME"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Build an AppImage
|
||||||
|
cd build
|
||||||
|
|
||||||
|
wget -nc https://github.com/yuzu-emu/ext-linux-bin/raw/main/appimage/appimagetool-x86_64.AppImage
|
||||||
|
chmod 755 appimagetool-x86_64.AppImage
|
||||||
|
|
||||||
|
# if FUSE is not available, then fallback to extract and run
|
||||||
|
if ! ./appimagetool-x86_64.AppImage --version; then
|
||||||
|
export APPIMAGE_EXTRACT_AND_RUN=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Don't let AppImageLauncher ask to integrate EA
|
||||||
|
if [ "${RELEASE_NAME}" = "mainline" ] || [ "${RELEASE_NAME}" = "early-access" ]; then
|
||||||
|
echo "X-AppImage-Integrate=false" >> AppDir/org.yuzu_emu.yuzu.desktop
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${RELEASE_NAME}" = "mainline" ]; then
|
||||||
|
# Generate update information if releasing to mainline
|
||||||
|
./appimagetool-x86_64.AppImage -u "gh-releases-zsync|yuzu-emu|yuzu-${RELEASE_NAME}|latest|yuzu-*.AppImage.zsync" AppDir "${APPIMAGE_NAME}"
|
||||||
|
else
|
||||||
|
./appimagetool-x86_64.AppImage AppDir "${APPIMAGE_NAME}"
|
||||||
|
fi
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
# Copy the AppImage and update info to the artifacts directory and avoid compressing it
|
||||||
|
cp "build/${APPIMAGE_NAME}" "${ARTIFACTS_DIR}/"
|
||||||
|
if [ -f "build/${APPIMAGE_NAME}.zsync" ]; then
|
||||||
|
cp "build/${APPIMAGE_NAME}.zsync" "${ARTIFACTS_DIR}/"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Copy the AppImage to the general release directory and remove git revision info
|
||||||
|
if [ "${RELEASE_NAME}" = "mainline" ] || [ "${RELEASE_NAME}" = "early-access" ]; then
|
||||||
|
cp "build/${APPIMAGE_NAME}" "${DIR_NAME}/yuzu-${RELEASE_NAME}.AppImage"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Copy debug symbols to artifacts
|
||||||
|
cd build/bin
|
||||||
|
tar $COMPRESSION_FLAGS "${ARTIFACTS_DIR}/${REV_NAME}-debug.tar.xz" *.debug
|
||||||
|
cd -
|
||||||
|
|
||||||
|
. .ci/scripts/common/post-upload.sh
|
48
.ci/scripts/merge/apply-patches-by-label-private.py
Normal file
48
.ci/scripts/merge/apply-patches-by-label-private.py
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
# Download all pull requests as patches that match a specific label
|
||||||
|
# Usage: python download-patches-by-label.py <Label to Match> <Root Path Folder to DL to>
|
||||||
|
|
||||||
|
import requests, sys, json, shutil, subprocess, os, traceback
|
||||||
|
|
||||||
|
org = os.getenv("PRIVATEMERGEORG", "yuzu-emu")
|
||||||
|
repo = os.getenv("PRIVATEMERGEREPO", "yuzu-private")
|
||||||
|
tagline = sys.argv[3]
|
||||||
|
user = sys.argv[1]
|
||||||
|
|
||||||
|
dl_list = {}
|
||||||
|
|
||||||
|
TAG_NAME = sys.argv[2]
|
||||||
|
|
||||||
|
def check_individual(repo_id, pr_id):
|
||||||
|
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)
|
||||||
|
response = requests.get(url)
|
||||||
|
if (response.ok):
|
||||||
|
try:
|
||||||
|
js = response.json()
|
||||||
|
return any(tag.get('name') == TAG_NAME for tag in js['value'])
|
||||||
|
except:
|
||||||
|
return False
|
||||||
|
return False
|
||||||
|
|
||||||
|
def merge_pr(pn, ref):
|
||||||
|
print("Matched PR# %s" % pn)
|
||||||
|
print(subprocess.check_output(["git", "fetch", "https://%sdev.azure.com/%s/_git/%s" % (user, org, repo), ref, "-f", "--no-recurse-submodules"]))
|
||||||
|
print(subprocess.check_output(["git", "merge", "--squash", 'origin/' + ref.replace('refs/heads/','')]))
|
||||||
|
print(subprocess.check_output(["git", "commit", "-m\"Merge %s PR %s\"" % (tagline, pn)]))
|
||||||
|
|
||||||
|
def main():
|
||||||
|
url = 'https://%sdev.azure.com/%s/%s/_apis/git/pullrequests?api-version=5.1' % (user, org, repo)
|
||||||
|
response = requests.get(url)
|
||||||
|
if (response.ok):
|
||||||
|
js = response.json()
|
||||||
|
tagged_prs = filter(lambda pr: check_individual(pr['repository']['id'], pr['pullRequestId']), js['value'])
|
||||||
|
map(lambda pr: merge_pr(pr['pullRequestId'], pr['sourceRefName']), tagged_prs)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
try:
|
||||||
|
main()
|
||||||
|
except:
|
||||||
|
traceback.print_exc(file=sys.stdout)
|
||||||
|
sys.exit(-1)
|
38
.ci/scripts/merge/apply-patches-by-label.py
Normal file
38
.ci/scripts/merge/apply-patches-by-label.py
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
# Download all pull requests as patches that match a specific label
|
||||||
|
# Usage: python apply-patches-by-label.py <Label to Match>
|
||||||
|
|
||||||
|
import json, requests, subprocess, sys, traceback
|
||||||
|
|
||||||
|
tagline = sys.argv[2]
|
||||||
|
|
||||||
|
def check_individual(labels):
|
||||||
|
for label in labels:
|
||||||
|
if (label["name"] == sys.argv[1]):
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def do_page(page):
|
||||||
|
url = f"https://api.github.com/repos/yuzu-emu/yuzu/pulls?page={page}"
|
||||||
|
response = requests.get(url)
|
||||||
|
response.raise_for_status()
|
||||||
|
if (response.ok):
|
||||||
|
j = json.loads(response.content)
|
||||||
|
if j == []:
|
||||||
|
return
|
||||||
|
for pr in j:
|
||||||
|
if (check_individual(pr["labels"])):
|
||||||
|
pn = pr["number"]
|
||||||
|
print(f"Matched PR# {pn}")
|
||||||
|
print(subprocess.check_output(["git", "fetch", "https://github.com/yuzu-emu/yuzu.git", f"pull/{pn}/head:pr-{pn}", "-f", "--no-recurse-submodules"]))
|
||||||
|
print(subprocess.check_output(["git", "merge", "--squash", f"pr-{pn}"]))
|
||||||
|
print(subprocess.check_output(["git", "commit", f"-m\"Merge {tagline} PR {pn}\""]))
|
||||||
|
|
||||||
|
try:
|
||||||
|
for i in range(1,10):
|
||||||
|
do_page(i)
|
||||||
|
except:
|
||||||
|
traceback.print_exc(file=sys.stdout)
|
||||||
|
sys.exit(-1)
|
21
.ci/scripts/merge/check-label-presence.py
Normal file
21
.ci/scripts/merge/check-label-presence.py
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
# Checks to see if the specified pull request # has the specified tag
|
||||||
|
# Usage: python check-label-presence.py <Pull Request ID> <Name of Label>
|
||||||
|
|
||||||
|
import requests, json, sys
|
||||||
|
|
||||||
|
try:
|
||||||
|
url = 'https://api.github.com/repos/yuzu-emu/yuzu/issues/%s' % sys.argv[1]
|
||||||
|
response = requests.get(url)
|
||||||
|
if (response.ok):
|
||||||
|
j = json.loads(response.content)
|
||||||
|
for label in j["labels"]:
|
||||||
|
if label["name"] == sys.argv[2]:
|
||||||
|
print('##vso[task.setvariable variable=enabletesting;]true')
|
||||||
|
sys.exit()
|
||||||
|
except:
|
||||||
|
sys.exit(-1)
|
||||||
|
|
||||||
|
print('##vso[task.setvariable variable=enabletesting;]false')
|
5
.ci/scripts/merge/yuzubot-git-config.sh
Normal file
5
.ci/scripts/merge/yuzubot-git-config.sh
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
git config --global user.email "yuzu@yuzu-emu.org"
|
||||||
|
git config --global user.name "yuzubot"
|
19
.ci/scripts/transifex/docker.sh
Executable file
19
.ci/scripts/transifex/docker.sh
Executable file
|
@ -0,0 +1,19 @@
|
||||||
|
#!/bin/bash -e
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2021 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
set -x
|
||||||
|
|
||||||
|
echo -e "\e[1m\e[33mBuild tools information:\e[0m"
|
||||||
|
cmake --version
|
||||||
|
gcc -v
|
||||||
|
tx --version
|
||||||
|
|
||||||
|
mkdir build && cd build
|
||||||
|
cmake .. -DENABLE_QT_TRANSLATION=ON -DGENERATE_QT_TRANSLATION=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_SDL2=OFF -DYUZU_TESTS=OFF -DYUZU_USE_BUNDLED_VCPKG=ON
|
||||||
|
make translation
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
cd dist/languages
|
||||||
|
tx push -s
|
66
.ci/scripts/windows/docker.sh
Executable file
66
.ci/scripts/windows/docker.sh
Executable file
|
@ -0,0 +1,66 @@
|
||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
#cd /yuzu
|
||||||
|
|
||||||
|
ccache -sv
|
||||||
|
|
||||||
|
mkdir -p build && cd build
|
||||||
|
cmake .. \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE="${PWD}/../CMakeModules/MinGWCross.cmake" \
|
||||||
|
-DDISPLAY_VERSION="$1" \
|
||||||
|
-DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON \
|
||||||
|
-DENABLE_QT_TRANSLATION=ON \
|
||||||
|
-DUSE_CCACHE=ON \
|
||||||
|
-DYUZU_USE_BUNDLED_SDL2=OFF \
|
||||||
|
-DYUZU_USE_EXTERNAL_SDL2=OFF \
|
||||||
|
-DYUZU_TESTS=OFF \
|
||||||
|
-GNinja
|
||||||
|
ninja yuzu yuzu-cmd
|
||||||
|
|
||||||
|
ccache -sv
|
||||||
|
|
||||||
|
echo "Tests skipped"
|
||||||
|
#ctest -VV -C Release
|
||||||
|
|
||||||
|
echo 'Prepare binaries...'
|
||||||
|
cd ..
|
||||||
|
mkdir package
|
||||||
|
|
||||||
|
if [ -d "/usr/x86_64-w64-mingw32/lib/qt5/plugins/platforms/" ]; then
|
||||||
|
QT_PLUGINS_PATH='/usr/x86_64-w64-mingw32/lib/qt5/plugins'
|
||||||
|
else
|
||||||
|
#fallback to qt
|
||||||
|
QT_PLUGINS_PATH='/usr/x86_64-w64-mingw32/lib/qt/plugins'
|
||||||
|
fi
|
||||||
|
|
||||||
|
find build/ -name "yuzu*.exe" -exec cp {} 'package' \;
|
||||||
|
|
||||||
|
# copy Qt plugins
|
||||||
|
mkdir package/platforms
|
||||||
|
cp -v "${QT_PLUGINS_PATH}/platforms/qwindows.dll" package/platforms/
|
||||||
|
cp -rv "${QT_PLUGINS_PATH}/mediaservice/" package/
|
||||||
|
cp -rv "${QT_PLUGINS_PATH}/imageformats/" package/
|
||||||
|
cp -rv "${QT_PLUGINS_PATH}/styles/" package/
|
||||||
|
rm -f package/mediaservice/*d.dll
|
||||||
|
|
||||||
|
for i in package/*.exe; do
|
||||||
|
# we need to process pdb here, however, cv2pdb
|
||||||
|
# does not work here, so we just simply strip all the debug symbols
|
||||||
|
x86_64-w64-mingw32-strip "${i}"
|
||||||
|
done
|
||||||
|
|
||||||
|
python3 .ci/scripts/windows/scan_dll.py package/*.exe package/imageformats/*.dll "package/"
|
||||||
|
|
||||||
|
# copy FFmpeg libraries
|
||||||
|
EXTERNALS_PATH="$(pwd)/build/externals"
|
||||||
|
FFMPEG_DLL_PATH="$(find "${EXTERNALS_PATH}" -maxdepth 1 -type d | grep 'ffmpeg-')/bin"
|
||||||
|
find ${FFMPEG_DLL_PATH} -type f -regex ".*\.dll" -exec cp -nv {} package/ ';'
|
||||||
|
|
||||||
|
# copy libraries from yuzu.exe path
|
||||||
|
find "$(pwd)/build/bin/" -type f -regex ".*\.dll" -exec cp -v {} package/ ';'
|
11
.ci/scripts/windows/exec.sh
Normal file
11
.ci/scripts/windows/exec.sh
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
mkdir -p "ccache" || true
|
||||||
|
chmod a+x ./.ci/scripts/windows/docker.sh
|
||||||
|
# the UID for the container yuzu user is 1027
|
||||||
|
sudo chown -R 1027 ./
|
||||||
|
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"
|
||||||
|
sudo chown -R $UID ./
|
33
.ci/scripts/windows/install-vulkan-sdk.ps1
Normal file
33
.ci/scripts/windows/install-vulkan-sdk.ps1
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
|
||||||
|
$VulkanSDKVer = "1.3.250.1"
|
||||||
|
$ExeFile = "VulkanSDK-$VulkanSDKVer-Installer.exe"
|
||||||
|
$Uri = "https://sdk.lunarg.com/sdk/download/$VulkanSDKVer/windows/$ExeFile"
|
||||||
|
$Destination = "./$ExeFile"
|
||||||
|
|
||||||
|
echo "Downloading Vulkan SDK $VulkanSDKVer from $Uri"
|
||||||
|
$WebClient = New-Object System.Net.WebClient
|
||||||
|
$WebClient.DownloadFile($Uri, $Destination)
|
||||||
|
echo "Finished downloading $ExeFile"
|
||||||
|
|
||||||
|
$VULKAN_SDK = "C:/VulkanSDK/$VulkanSDKVer"
|
||||||
|
$Arguments = "--root `"$VULKAN_SDK`" --accept-licenses --default-answer --confirm-command install"
|
||||||
|
|
||||||
|
echo "Installing Vulkan SDK $VulkanSDKVer"
|
||||||
|
$InstallProcess = Start-Process -FilePath $Destination -NoNewWindow -PassThru -Wait -ArgumentList $Arguments
|
||||||
|
$ExitCode = $InstallProcess.ExitCode
|
||||||
|
|
||||||
|
if ($ExitCode -ne 0) {
|
||||||
|
echo "Error installing Vulkan SDK $VulkanSDKVer (Error: $ExitCode)"
|
||||||
|
Exit $ExitCode
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Finished installing Vulkan SDK $VulkanSDKVer"
|
||||||
|
|
||||||
|
if ("$env:GITHUB_ACTIONS" -eq "true") {
|
||||||
|
echo "VULKAN_SDK=$VULKAN_SDK" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||||
|
echo "$VULKAN_SDK/Bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
||||||
|
}
|
109
.ci/scripts/windows/scan_dll.py
Normal file
109
.ci/scripts/windows/scan_dll.py
Normal file
|
@ -0,0 +1,109 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
import pefile
|
||||||
|
import sys
|
||||||
|
import re
|
||||||
|
import os
|
||||||
|
import queue
|
||||||
|
import shutil
|
||||||
|
|
||||||
|
# constant definitions
|
||||||
|
KNOWN_SYS_DLLS = ['WINMM.DLL', 'MSVCRT.DLL', 'VERSION.DLL', 'MPR.DLL',
|
||||||
|
'DWMAPI.DLL', 'UXTHEME.DLL', 'DNSAPI.DLL', 'IPHLPAPI.DLL']
|
||||||
|
# below is for Ubuntu 18.04 with specified PPA enabled, if you are using
|
||||||
|
# other distro or different repositories, change the following accordingly
|
||||||
|
DLL_PATH = [
|
||||||
|
'/usr/x86_64-w64-mingw32/bin/',
|
||||||
|
'/usr/x86_64-w64-mingw32/lib/',
|
||||||
|
'/usr/lib/gcc/x86_64-w64-mingw32/7.3-posix/'
|
||||||
|
]
|
||||||
|
|
||||||
|
missing = []
|
||||||
|
|
||||||
|
|
||||||
|
def parse_imports(file_name):
|
||||||
|
results = []
|
||||||
|
pe = pefile.PE(file_name, fast_load=True)
|
||||||
|
pe.parse_data_directories()
|
||||||
|
|
||||||
|
for entry in pe.DIRECTORY_ENTRY_IMPORT:
|
||||||
|
current = entry.dll.decode()
|
||||||
|
current_u = current.upper() # b/c Windows is often case insensitive
|
||||||
|
# here we filter out system dlls
|
||||||
|
# dll w/ names like *32.dll are likely to be system dlls
|
||||||
|
if current_u.upper() not in KNOWN_SYS_DLLS and not re.match(string=current_u, pattern=r'.*32\.DLL'):
|
||||||
|
results.append(current)
|
||||||
|
|
||||||
|
return results
|
||||||
|
|
||||||
|
|
||||||
|
def parse_imports_recursive(file_name, path_list=[]):
|
||||||
|
q = queue.Queue() # create a FIFO queue
|
||||||
|
# file_name can be a string or a list for the convenience
|
||||||
|
if isinstance(file_name, str):
|
||||||
|
q.put(file_name)
|
||||||
|
elif isinstance(file_name, list):
|
||||||
|
for i in file_name:
|
||||||
|
q.put(i)
|
||||||
|
full_list = []
|
||||||
|
while q.qsize():
|
||||||
|
current = q.get_nowait()
|
||||||
|
print('> %s' % current)
|
||||||
|
deps = parse_imports(current)
|
||||||
|
# if this dll does not have any import, ignore it
|
||||||
|
if not deps:
|
||||||
|
continue
|
||||||
|
for dep in deps:
|
||||||
|
# the dependency already included in the list, skip
|
||||||
|
if dep in full_list:
|
||||||
|
continue
|
||||||
|
# find the requested dll in the provided paths
|
||||||
|
full_path = find_dll(dep)
|
||||||
|
if not full_path:
|
||||||
|
missing.append(dep)
|
||||||
|
continue
|
||||||
|
full_list.append(dep)
|
||||||
|
q.put(full_path)
|
||||||
|
path_list.append(full_path)
|
||||||
|
return full_list
|
||||||
|
|
||||||
|
|
||||||
|
def find_dll(name):
|
||||||
|
for path in DLL_PATH:
|
||||||
|
for root, _, files in os.walk(path):
|
||||||
|
for f in files:
|
||||||
|
if name.lower() == f.lower():
|
||||||
|
return os.path.join(root, f)
|
||||||
|
|
||||||
|
|
||||||
|
def deploy(name, dst, dry_run=False):
|
||||||
|
dlls_path = []
|
||||||
|
parse_imports_recursive(name, dlls_path)
|
||||||
|
for dll_entry in dlls_path:
|
||||||
|
if not dry_run:
|
||||||
|
shutil.copy(dll_entry, dst)
|
||||||
|
else:
|
||||||
|
print('[Dry-Run] Copy %s to %s' % (dll_entry, dst))
|
||||||
|
print('Deploy completed.')
|
||||||
|
return dlls_path
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
if len(sys.argv) < 3:
|
||||||
|
print('Usage: %s [files to examine ...] [target deploy directory]')
|
||||||
|
return 1
|
||||||
|
to_deploy = sys.argv[1:-1]
|
||||||
|
tgt_dir = sys.argv[-1]
|
||||||
|
if not os.path.isdir(tgt_dir):
|
||||||
|
print('%s is not a directory.' % tgt_dir)
|
||||||
|
return 1
|
||||||
|
print('Scanning dependencies...')
|
||||||
|
deploy(to_deploy, tgt_dir)
|
||||||
|
if missing:
|
||||||
|
print('Following DLLs are not found: %s' % ('\n'.join(missing)))
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
118
.ci/scripts/windows/upload.ps1
Normal file
118
.ci/scripts/windows/upload.ps1
Normal file
|
@ -0,0 +1,118 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
param($BUILD_NAME)
|
||||||
|
|
||||||
|
$GITDATE = $(git show -s --date=short --format='%ad') -replace "-", ""
|
||||||
|
$GITREV = $(git show -s --format='%h')
|
||||||
|
|
||||||
|
if ("$BUILD_NAME" -eq "mainline") {
|
||||||
|
$RELEASE_DIST = "yuzu-windows-msvc"
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$RELEASE_DIST = "yuzu-windows-msvc-$BUILD_NAME"
|
||||||
|
}
|
||||||
|
|
||||||
|
$MSVC_BUILD_ZIP = "yuzu-windows-msvc-$GITDATE-$GITREV.zip" -replace " ", ""
|
||||||
|
$MSVC_BUILD_PDB = "yuzu-windows-msvc-$GITDATE-$GITREV-debugsymbols.zip" -replace " ", ""
|
||||||
|
$MSVC_SEVENZIP = "yuzu-windows-msvc-$GITDATE-$GITREV.7z" -replace " ", ""
|
||||||
|
$MSVC_TAR = "yuzu-windows-msvc-$GITDATE-$GITREV.tar" -replace " ", ""
|
||||||
|
$MSVC_TARXZ = "yuzu-windows-msvc-$GITDATE-$GITREV.tar.xz" -replace " ", ""
|
||||||
|
$MSVC_SOURCE = "yuzu-windows-msvc-source-$GITDATE-$GITREV" -replace " ", ""
|
||||||
|
$MSVC_SOURCE_TAR = "$MSVC_SOURCE.tar"
|
||||||
|
$MSVC_SOURCE_TARXZ = "$MSVC_SOURCE_TAR.xz"
|
||||||
|
|
||||||
|
$env:BUILD_ZIP = $MSVC_BUILD_ZIP
|
||||||
|
$env:BUILD_SYMBOLS = $MSVC_BUILD_PDB
|
||||||
|
$env:BUILD_UPDATE = $MSVC_SEVENZIP
|
||||||
|
|
||||||
|
if (Test-Path -Path ".\build\bin\Release") {
|
||||||
|
$BUILD_DIR = ".\build\bin\Release"
|
||||||
|
} else {
|
||||||
|
$BUILD_DIR = ".\build\bin\"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Cleanup unneeded data in submodules
|
||||||
|
git submodule foreach git clean -fxd
|
||||||
|
|
||||||
|
# Upload debugging symbols
|
||||||
|
mkdir pdb
|
||||||
|
Get-ChildItem "$BUILD_DIR\" -Recurse -Filter "*.pdb" | Copy-Item -destination .\pdb
|
||||||
|
7z a -tzip $MSVC_BUILD_PDB .\pdb\*.pdb
|
||||||
|
rm "$BUILD_DIR\*.pdb"
|
||||||
|
|
||||||
|
# Create artifact directories
|
||||||
|
mkdir $RELEASE_DIST
|
||||||
|
mkdir $MSVC_SOURCE
|
||||||
|
mkdir "artifacts"
|
||||||
|
|
||||||
|
$CURRENT_DIR = Convert-Path .
|
||||||
|
|
||||||
|
# Build a tar.xz for the source of the release
|
||||||
|
git clone --depth 1 file://$CURRENT_DIR $MSVC_SOURCE
|
||||||
|
7z a -r -ttar $MSVC_SOURCE_TAR $MSVC_SOURCE
|
||||||
|
7z a -r -txz $MSVC_SOURCE_TARXZ $MSVC_SOURCE_TAR
|
||||||
|
|
||||||
|
# Following section is quick hack to package artifacts differently for GitHub Actions
|
||||||
|
if ("$env:GITHUB_ACTIONS" -eq "true") {
|
||||||
|
echo "Hello GitHub Actions"
|
||||||
|
|
||||||
|
# With vcpkg we now have a few more dll files
|
||||||
|
ls .\build\bin\*.dll
|
||||||
|
cp .\build\bin\*.dll .\artifacts\
|
||||||
|
|
||||||
|
# Hopefully there is an exe in either .\build\bin or .\build\bin\Release
|
||||||
|
cp .\build\bin\yuzu*.exe .\artifacts\
|
||||||
|
Copy-Item "$BUILD_DIR\*" -Destination "artifacts" -Recurse
|
||||||
|
Remove-Item .\artifacts\tests.exe -ErrorAction ignore
|
||||||
|
|
||||||
|
# None of the other GHA builds are including source, so commenting out today
|
||||||
|
#Copy-Item $MSVC_SOURCE_TARXZ -Destination "artifacts"
|
||||||
|
|
||||||
|
# Debugging symbols
|
||||||
|
cp .\build\bin\yuzu*.pdb .\artifacts\
|
||||||
|
|
||||||
|
# Write out a tag BUILD_TAG to environment for the Upload step
|
||||||
|
# We're getting ${{ github.event.number }} as $env:PR_NUMBER"
|
||||||
|
echo "env:PR_NUMBER: $env:PR_NUMBER"
|
||||||
|
if (Test-Path env:PR_NUMBER) {
|
||||||
|
$PR_NUMBER = $env:PR_NUMBER.Substring(2) -as [int]
|
||||||
|
$PR_NUMBER_TAG = "pr"+([string]$PR_NUMBER).PadLeft(5,'0')
|
||||||
|
if ($PR_NUMBER -gt 1){
|
||||||
|
$BUILD_TAG="verify-$PR_NUMBER_TAG-$GITDATE-$GITREV"
|
||||||
|
} else {
|
||||||
|
$BUILD_TAG = "verify-$GITDATE-$GITREV"
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
# If env:PR_NUMBER isn't set, we should still write out a variable
|
||||||
|
$BUILD_TAG = "verify-$GITDATE-$GITREV"
|
||||||
|
}
|
||||||
|
echo "BUILD_TAG=$BUILD_TAG"
|
||||||
|
echo "BUILD_TAG=$BUILD_TAG" >> $env:GITHUB_ENV
|
||||||
|
|
||||||
|
# For extra job, just the exe
|
||||||
|
$INDIVIDUAL_EXE = "yuzu-msvc-$BUILD_TAG.exe"
|
||||||
|
echo "INDIVIDUAL_EXE=$INDIVIDUAL_EXE"
|
||||||
|
echo "INDIVIDUAL_EXE=$INDIVIDUAL_EXE" >> $env:GITHUB_ENV
|
||||||
|
echo "Just the exe: $INDIVIDUAL_EXE"
|
||||||
|
cp .\artifacts\yuzu.exe .\$INDIVIDUAL_EXE
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
# Build the final release artifacts
|
||||||
|
Copy-Item $MSVC_SOURCE_TARXZ -Destination $RELEASE_DIST
|
||||||
|
Copy-Item "$BUILD_DIR\*" -Destination $RELEASE_DIST -Recurse
|
||||||
|
rm "$RELEASE_DIST\*.exe"
|
||||||
|
Get-ChildItem "$BUILD_DIR" -Recurse -Filter "yuzu*.exe" | Copy-Item -destination $RELEASE_DIST
|
||||||
|
Get-ChildItem "$BUILD_DIR" -Recurse -Filter "QtWebEngineProcess*.exe" | Copy-Item -destination $RELEASE_DIST
|
||||||
|
7z a -tzip $MSVC_BUILD_ZIP $RELEASE_DIST\*
|
||||||
|
7z a $MSVC_SEVENZIP $RELEASE_DIST
|
||||||
|
|
||||||
|
7z a -r -ttar $MSVC_TAR $RELEASE_DIST
|
||||||
|
7z a -r -txz $MSVC_TARXZ $MSVC_TAR
|
||||||
|
|
||||||
|
Get-ChildItem . -Filter "*.zip" | Copy-Item -destination "artifacts"
|
||||||
|
Get-ChildItem . -Filter "*.7z" | Copy-Item -destination "artifacts"
|
||||||
|
Get-ChildItem . -Filter "*.tar.xz" | Copy-Item -destination "artifacts"
|
||||||
|
}
|
22
.ci/scripts/windows/upload.sh
Executable file
22
.ci/scripts/windows/upload.sh
Executable file
|
@ -0,0 +1,22 @@
|
||||||
|
#!/bin/bash -ex
|
||||||
|
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
. .ci/scripts/common/pre-upload.sh
|
||||||
|
|
||||||
|
REV_NAME="yuzu-windows-mingw-${GITDATE}-${GITREV}"
|
||||||
|
ARCHIVE_NAME="${REV_NAME}.tar.xz"
|
||||||
|
COMPRESSION_FLAGS="-cJvf"
|
||||||
|
|
||||||
|
if [ "${RELEASE_NAME}" = "mainline" ]; then
|
||||||
|
DIR_NAME="${REV_NAME}"
|
||||||
|
else
|
||||||
|
DIR_NAME="${REV_NAME}_${RELEASE_NAME}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir "$DIR_NAME"
|
||||||
|
# get around the permission issues
|
||||||
|
cp -r package/* "$DIR_NAME"
|
||||||
|
|
||||||
|
. .ci/scripts/common/post-upload.sh
|
8
.ci/templates/build-mock.yml
Normal file
8
.ci/templates/build-mock.yml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- script: mkdir artifacts || echo 'X' > artifacts/T1.txt
|
||||||
|
- publish: artifacts
|
||||||
|
artifact: 'yuzu-$(BuildName)-mock'
|
||||||
|
displayName: 'Upload Artifacts'
|
31
.ci/templates/build-msvc.yml
Normal file
31
.ci/templates/build-msvc.yml
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
artifactSource: 'true'
|
||||||
|
cache: 'false'
|
||||||
|
version: ''
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- task: Powershell@2
|
||||||
|
displayName: 'Install Vulkan SDK'
|
||||||
|
inputs:
|
||||||
|
targetType: 'filePath'
|
||||||
|
filePath: './.ci/scripts/windows/install-vulkan-sdk.ps1'
|
||||||
|
- 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 ..
|
||||||
|
displayName: 'Configure CMake'
|
||||||
|
- task: MSBuild@1
|
||||||
|
displayName: 'Build'
|
||||||
|
inputs:
|
||||||
|
solution: 'build/yuzu.sln'
|
||||||
|
maximumCpuCount: true
|
||||||
|
configuration: release
|
||||||
|
- task: PowerShell@2
|
||||||
|
displayName: 'Package Artifacts'
|
||||||
|
inputs:
|
||||||
|
targetType: 'filePath'
|
||||||
|
filePath: './.ci/scripts/windows/upload.ps1'
|
||||||
|
arguments: '$(BuildName)'
|
||||||
|
- publish: artifacts
|
||||||
|
artifact: 'yuzu-$(BuildName)-windows-msvc'
|
||||||
|
displayName: 'Upload Artifacts'
|
26
.ci/templates/build-single.yml
Normal file
26
.ci/templates/build-single.yml
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
artifactSource: 'true'
|
||||||
|
cache: 'false'
|
||||||
|
version: ''
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- task: DockerInstaller@0
|
||||||
|
displayName: 'Prepare Environment'
|
||||||
|
inputs:
|
||||||
|
dockerVersion: '17.09.0-ce'
|
||||||
|
- task: CacheBeta@0
|
||||||
|
displayName: 'Cache Build System'
|
||||||
|
inputs:
|
||||||
|
key: yuzu-v1-$(BuildName)-$(BuildSuffix)-$(CacheSuffix)
|
||||||
|
path: $(System.DefaultWorkingDirectory)/ccache
|
||||||
|
cacheHitVar: CACHE_RESTORED
|
||||||
|
- script: chmod a+x ./.ci/scripts/$(ScriptFolder)/exec.sh && ./.ci/scripts/$(ScriptFolder)/exec.sh ${{ parameters['version'] }}
|
||||||
|
displayName: 'Build'
|
||||||
|
- script: chmod a+x ./.ci/scripts/$(ScriptFolder)/upload.sh && RELEASE_NAME=$(BuildName) ./.ci/scripts/$(ScriptFolder)/upload.sh
|
||||||
|
displayName: 'Package Artifacts'
|
||||||
|
- publish: artifacts
|
||||||
|
artifact: 'yuzu-$(BuildName)-$(BuildSuffix)'
|
||||||
|
displayName: 'Upload Artifacts'
|
33
.ci/templates/build-standard.yml
Normal file
33
.ci/templates/build-standard.yml
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
version: ''
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
- job: build
|
||||||
|
displayName: 'standard'
|
||||||
|
pool:
|
||||||
|
vmImage: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
maxParallel: 10
|
||||||
|
matrix:
|
||||||
|
windows:
|
||||||
|
BuildSuffix: 'windows-mingw'
|
||||||
|
ScriptFolder: 'windows'
|
||||||
|
clang:
|
||||||
|
BuildSuffix: 'clang'
|
||||||
|
ScriptFolder: 'clang'
|
||||||
|
linux:
|
||||||
|
BuildSuffix: 'linux'
|
||||||
|
ScriptFolder: 'linux'
|
||||||
|
steps:
|
||||||
|
- template: ./sync-source.yml
|
||||||
|
parameters:
|
||||||
|
artifactSource: $(parameters.artifactSource)
|
||||||
|
needSubmodules: 'true'
|
||||||
|
- template: ./build-single.yml
|
||||||
|
parameters:
|
||||||
|
artifactSource: 'false'
|
||||||
|
cache: $(parameters.cache)
|
||||||
|
version: $(parameters.version)
|
40
.ci/templates/build-testing.yml
Normal file
40
.ci/templates/build-testing.yml
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
version: ''
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
- job: build_test
|
||||||
|
displayName: 'testing'
|
||||||
|
pool:
|
||||||
|
vmImage: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
maxParallel: 5
|
||||||
|
matrix:
|
||||||
|
windows:
|
||||||
|
BuildSuffix: 'windows-testing'
|
||||||
|
ScriptFolder: 'windows'
|
||||||
|
steps:
|
||||||
|
- script: sudo apt-get update && sudo apt-get --only-upgrade -y install python3-pip && pip install requests urllib3
|
||||||
|
displayName: 'Prepare Environment'
|
||||||
|
- task: PythonScript@0
|
||||||
|
condition: eq(variables['Build.Reason'], 'PullRequest')
|
||||||
|
displayName: 'Determine Testing Status'
|
||||||
|
inputs:
|
||||||
|
scriptSource: 'filePath'
|
||||||
|
scriptPath: '.ci/scripts/merge/check-label-presence.py'
|
||||||
|
arguments: '$(System.PullRequest.PullRequestNumber) create-testing-build'
|
||||||
|
- ${{ if eq(variables.enabletesting, 'true') }}:
|
||||||
|
- template: ./sync-source.yml
|
||||||
|
parameters:
|
||||||
|
artifactSource: $(parameters.artifactSource)
|
||||||
|
needSubmodules: 'true'
|
||||||
|
- template: ./mergebot.yml
|
||||||
|
parameters:
|
||||||
|
matchLabel: 'testing-merge'
|
||||||
|
- template: ./build-single.yml
|
||||||
|
parameters:
|
||||||
|
artifactSource: 'false'
|
||||||
|
cache: 'false'
|
||||||
|
version: $(parameters.version)
|
17
.ci/templates/format-check.yml
Normal file
17
.ci/templates/format-check.yml
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
artifactSource: 'true'
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- template: ./sync-source.yml
|
||||||
|
parameters:
|
||||||
|
artifactSource: $(parameters.artifactSource)
|
||||||
|
needSubmodules: 'false'
|
||||||
|
- task: DockerInstaller@0
|
||||||
|
displayName: 'Prepare Environment'
|
||||||
|
inputs:
|
||||||
|
dockerVersion: '17.09.0-ce'
|
||||||
|
- script: chmod a+x ./.ci/scripts/format/exec.sh && ./.ci/scripts/format/exec.sh
|
||||||
|
displayName: 'Verify Formatting'
|
44
.ci/templates/merge-private.yml
Normal file
44
.ci/templates/merge-private.yml
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
- job: merge
|
||||||
|
displayName: 'pull requests'
|
||||||
|
pool:
|
||||||
|
vmImage: 'ubuntu-latest'
|
||||||
|
steps:
|
||||||
|
- checkout: self
|
||||||
|
submodules: recursive
|
||||||
|
- template: ./mergebot-private.yml
|
||||||
|
parameters:
|
||||||
|
matchLabel: '$(BuildName)-merge'
|
||||||
|
matchLabelPublic: '$(PublicBuildName)-merge'
|
||||||
|
- task: ArchiveFiles@2
|
||||||
|
displayName: 'Package Source'
|
||||||
|
inputs:
|
||||||
|
rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
|
||||||
|
includeRootFolder: false
|
||||||
|
archiveType: '7z'
|
||||||
|
archiveFile: '$(Build.ArtifactStagingDirectory)/yuzu-$(BuildName)-source.7z'
|
||||||
|
- task: PublishPipelineArtifact@1
|
||||||
|
displayName: 'Upload Artifacts'
|
||||||
|
inputs:
|
||||||
|
targetPath: '$(Build.ArtifactStagingDirectory)/yuzu-$(BuildName)-source.7z'
|
||||||
|
artifact: 'yuzu-$(BuildName)-source'
|
||||||
|
replaceExistingArchive: true
|
||||||
|
- job: upload_source
|
||||||
|
displayName: 'upload'
|
||||||
|
dependsOn: merge
|
||||||
|
pool:
|
||||||
|
vmImage: 'ubuntu-latest'
|
||||||
|
steps:
|
||||||
|
- template: ./sync-source.yml
|
||||||
|
parameters:
|
||||||
|
artifactSource: 'true'
|
||||||
|
needSubmodules: 'true'
|
||||||
|
- script: chmod a+x $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh && $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh
|
||||||
|
displayName: 'Apply Git Configuration'
|
||||||
|
- script: git remote add other $(GitRepoPushChangesURL)
|
||||||
|
displayName: 'Register Repository'
|
||||||
|
- script: git push --force other HEAD:$(GitPushBranch)
|
||||||
|
displayName: 'Update Code'
|
43
.ci/templates/merge.yml
Normal file
43
.ci/templates/merge.yml
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
- job: merge
|
||||||
|
displayName: 'pull requests'
|
||||||
|
pool:
|
||||||
|
vmImage: 'ubuntu-latest'
|
||||||
|
steps:
|
||||||
|
- checkout: self
|
||||||
|
submodules: recursive
|
||||||
|
- template: ./mergebot.yml
|
||||||
|
parameters:
|
||||||
|
matchLabel: '$(BuildName)-merge'
|
||||||
|
- task: ArchiveFiles@2
|
||||||
|
displayName: 'Package Source'
|
||||||
|
inputs:
|
||||||
|
rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
|
||||||
|
includeRootFolder: false
|
||||||
|
archiveType: '7z'
|
||||||
|
archiveFile: '$(Build.ArtifactStagingDirectory)/yuzu-$(BuildName)-source.7z'
|
||||||
|
- task: PublishPipelineArtifact@1
|
||||||
|
displayName: 'Upload Artifacts'
|
||||||
|
inputs:
|
||||||
|
targetPath: '$(Build.ArtifactStagingDirectory)/yuzu-$(BuildName)-source.7z'
|
||||||
|
artifact: 'yuzu-$(BuildName)-source'
|
||||||
|
replaceExistingArchive: true
|
||||||
|
- job: upload_source
|
||||||
|
displayName: 'upload'
|
||||||
|
dependsOn: merge
|
||||||
|
pool:
|
||||||
|
vmImage: 'ubuntu-latest'
|
||||||
|
steps:
|
||||||
|
- template: ./sync-source.yml
|
||||||
|
parameters:
|
||||||
|
artifactSource: 'true'
|
||||||
|
needSubmodules: 'true'
|
||||||
|
- script: chmod a+x $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh && $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh
|
||||||
|
displayName: 'Apply Git Configuration'
|
||||||
|
- script: git remote add other $(GitRepoPushChangesURL)
|
||||||
|
displayName: 'Register Repository'
|
||||||
|
- script: git push --force other HEAD:$(GitPushBranch)
|
||||||
|
displayName: 'Update Code'
|
33
.ci/templates/mergebot-private.yml
Normal file
33
.ci/templates/mergebot-private.yml
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
matchLabel: 'dummy-merge'
|
||||||
|
matchLabelPublic: 'dummy-merge'
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- script: mkdir $(System.DefaultWorkingDirectory)/patches && pip install requests urllib3
|
||||||
|
displayName: 'Prepare Environment'
|
||||||
|
- script: chmod a+x $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh && $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh
|
||||||
|
displayName: 'Apply Git Configuration'
|
||||||
|
- task: PythonScript@0
|
||||||
|
displayName: 'Discover, Download, and Apply Patches (Mainline)'
|
||||||
|
inputs:
|
||||||
|
scriptSource: 'filePath'
|
||||||
|
scriptPath: '.ci/scripts/merge/apply-patches-by-label.py'
|
||||||
|
arguments: '${{ parameters.matchLabelPublic }} $(MergeTaglinePublic) patches-public'
|
||||||
|
workingDirectory: '$(System.DefaultWorkingDirectory)'
|
||||||
|
- task: PythonScript@0
|
||||||
|
displayName: 'Discover, Download, and Apply Patches (Patreon Public)'
|
||||||
|
inputs:
|
||||||
|
scriptSource: 'filePath'
|
||||||
|
scriptPath: '.ci/scripts/merge/apply-patches-by-label.py'
|
||||||
|
arguments: '${{ parameters.matchLabel }} "$(MergeTaglinePrivate) Public" patches-mixed-public'
|
||||||
|
workingDirectory: '$(System.DefaultWorkingDirectory)'
|
||||||
|
- task: PythonScript@0
|
||||||
|
displayName: 'Discover, Download, and Apply Patches (Patreon Private)'
|
||||||
|
inputs:
|
||||||
|
scriptSource: 'filePath'
|
||||||
|
scriptPath: '.ci/scripts/merge/apply-patches-by-label-private.py'
|
||||||
|
arguments: '$(PrivateMergeUser) ${{ parameters.matchLabel }} "$(MergeTaglinePrivate) Private" patches-private'
|
||||||
|
workingDirectory: '$(System.DefaultWorkingDirectory)'
|
18
.ci/templates/mergebot.yml
Normal file
18
.ci/templates/mergebot.yml
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
matchLabel: 'dummy-merge'
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- script: mkdir $(System.DefaultWorkingDirectory)/patches && pip install requests urllib3
|
||||||
|
displayName: 'Prepare Environment'
|
||||||
|
- script: chmod a+x $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh && $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh
|
||||||
|
displayName: 'Apply Git Configuration'
|
||||||
|
- task: PythonScript@0
|
||||||
|
displayName: 'Discover, Download, and Apply Patches'
|
||||||
|
inputs:
|
||||||
|
scriptSource: 'filePath'
|
||||||
|
scriptPath: '.ci/scripts/merge/apply-patches-by-label.py'
|
||||||
|
arguments: '${{ parameters.matchLabel }} Tagged patches'
|
||||||
|
workingDirectory: '$(System.DefaultWorkingDirectory)'
|
16
.ci/templates/release-download.yml
Normal file
16
.ci/templates/release-download.yml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- task: DownloadPipelineArtifact@2
|
||||||
|
displayName: 'Download Windows Release'
|
||||||
|
inputs:
|
||||||
|
artifactName: 'yuzu-$(BuildName)-windows-msvc'
|
||||||
|
buildType: 'current'
|
||||||
|
targetPath: '$(Build.ArtifactStagingDirectory)'
|
||||||
|
- task: DownloadPipelineArtifact@2
|
||||||
|
displayName: 'Download Linux Release'
|
||||||
|
inputs:
|
||||||
|
artifactName: 'yuzu-$(BuildName)-linux'
|
||||||
|
buildType: 'current'
|
||||||
|
targetPath: '$(Build.ArtifactStagingDirectory)'
|
16
.ci/templates/release-github.yml
Normal file
16
.ci/templates/release-github.yml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- template: ./release-download.yml
|
||||||
|
- task: GitHubRelease@0
|
||||||
|
displayName: 'GitHub Release'
|
||||||
|
inputs:
|
||||||
|
action: 'create'
|
||||||
|
title: '$(ReleasePrefix) $(DisplayVersion)'
|
||||||
|
assets: '$(Build.ArtifactStagingDirectory)/*'
|
||||||
|
gitHubConnection: $(GitHubReleaseConnectionName)
|
||||||
|
repositoryName: '$(Build.Repository.Name)'
|
||||||
|
target: '$(Build.SourceVersion)'
|
||||||
|
tagSource: manual
|
||||||
|
tag: $(BuildName)-$(DisplayPrefix)-$(DisplayVersion)
|
12
.ci/templates/release-private-tag.yml
Normal file
12
.ci/templates/release-private-tag.yml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- script: chmod a+x $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh && $(System.DefaultWorkingDirectory)/.ci/scripts/merge/yuzubot-git-config.sh
|
||||||
|
displayName: 'Apply Git Configuration'
|
||||||
|
- script: git tag -a $(BuildName)-$(DisplayPrefix)-$(DisplayVersion) -m "yuzu $(BuildName) $(Build.BuildNumber) $(Build.DefinitionName) $(DisplayPrefix)-$(DisplayVersion)"
|
||||||
|
displayName: 'Tag Source'
|
||||||
|
- script: git remote add other $(GitRepoPushChangesURL)
|
||||||
|
displayName: 'Register Repository'
|
||||||
|
- script: git push other $(BuildName)-$(DisplayPrefix)-$(DisplayVersion)
|
||||||
|
displayName: 'Update Code'
|
13
.ci/templates/release-universal.yml
Normal file
13
.ci/templates/release-universal.yml
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- template: ./release-download.yml
|
||||||
|
- task: UniversalPackages@0
|
||||||
|
displayName: Publish Artifacts
|
||||||
|
inputs:
|
||||||
|
command: publish
|
||||||
|
publishDirectory: '$(Build.ArtifactStagingDirectory)'
|
||||||
|
vstsFeedPublish: 'yuzu-$(BuildName)'
|
||||||
|
vstsFeedPackagePublish: 'main'
|
||||||
|
packagePublishDescription: 'Yuzu Windows and Linux Executable Packages'
|
19
.ci/templates/retrieve-artifact-source.yml
Normal file
19
.ci/templates/retrieve-artifact-source.yml
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- checkout: none
|
||||||
|
- task: DownloadPipelineArtifact@2
|
||||||
|
displayName: 'Download Source'
|
||||||
|
inputs:
|
||||||
|
artifactName: 'yuzu-$(BuildName)-source'
|
||||||
|
buildType: 'current'
|
||||||
|
targetPath: '$(Build.ArtifactStagingDirectory)'
|
||||||
|
- script: rm -rf $(System.DefaultWorkingDirectory) && mkdir $(System.DefaultWorkingDirectory)
|
||||||
|
displayName: 'Clean Working Directory'
|
||||||
|
- task: ExtractFiles@1
|
||||||
|
displayName: 'Prepare Source'
|
||||||
|
inputs:
|
||||||
|
archiveFilePatterns: '$(Build.ArtifactStagingDirectory)/*.7z'
|
||||||
|
destinationFolder: '$(System.DefaultWorkingDirectory)'
|
||||||
|
cleanDestinationFolder: false
|
14
.ci/templates/retrieve-master-source.yml
Normal file
14
.ci/templates/retrieve-master-source.yml
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
needSubmodules: 'true'
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- checkout: self
|
||||||
|
displayName: 'Checkout Recursive'
|
||||||
|
submodules: recursive
|
||||||
|
# condition: eq(parameters.needSubmodules, 'true')
|
||||||
|
#- checkout: self
|
||||||
|
# displayName: 'Checkout Fast'
|
||||||
|
# condition: ne(parameters.needSubmodules, 'true')
|
10
.ci/templates/sync-source.yml
Normal file
10
.ci/templates/sync-source.yml
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- ${{ if eq(parameters.artifactSource, 'true') }}:
|
||||||
|
- template: ./retrieve-artifact-source.yml
|
||||||
|
- ${{ if ne(parameters.artifactSource, 'true') }}:
|
||||||
|
- template: ./retrieve-master-source.yml
|
||||||
|
parameters:
|
||||||
|
needSubmodules: $(parameters.needSubmodules)
|
14
.ci/yuzu-mainline-step1.yml
Normal file
14
.ci/yuzu-mainline-step1.yml
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
- master
|
||||||
|
|
||||||
|
pool:
|
||||||
|
vmImage: 'ubuntu-latest'
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- stage: merge
|
||||||
|
displayName: 'merge'
|
||||||
|
jobs:
|
||||||
|
- template: ./templates/merge.yml
|
64
.ci/yuzu-mainline-step2.yml
Normal file
64
.ci/yuzu-mainline-step2.yml
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
- master
|
||||||
|
|
||||||
|
variables:
|
||||||
|
DisplayVersion: $[counter(variables['DisplayPrefix'], 1)]
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- stage: build
|
||||||
|
displayName: 'build'
|
||||||
|
jobs:
|
||||||
|
- job: build
|
||||||
|
timeoutInMinutes: 120
|
||||||
|
displayName: 'standard'
|
||||||
|
pool:
|
||||||
|
vmImage: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
maxParallel: 10
|
||||||
|
matrix:
|
||||||
|
linux:
|
||||||
|
BuildSuffix: 'linux'
|
||||||
|
ScriptFolder: 'linux'
|
||||||
|
steps:
|
||||||
|
- template: ./templates/sync-source.yml
|
||||||
|
parameters:
|
||||||
|
artifactSource: $(parameters.artifactSource)
|
||||||
|
needSubmodules: 'true'
|
||||||
|
- template: ./templates/build-single.yml
|
||||||
|
parameters:
|
||||||
|
artifactSource: 'false'
|
||||||
|
cache: 'true'
|
||||||
|
version: $(DisplayVersion)
|
||||||
|
- stage: build_win
|
||||||
|
displayName: 'build-windows'
|
||||||
|
jobs:
|
||||||
|
- job: build
|
||||||
|
timeoutInMinutes: 120
|
||||||
|
displayName: 'msvc'
|
||||||
|
pool:
|
||||||
|
vmImage: windows-2022
|
||||||
|
steps:
|
||||||
|
- template: ./templates/sync-source.yml
|
||||||
|
parameters:
|
||||||
|
artifactSource: $(parameters.artifactSource)
|
||||||
|
needSubmodules: 'true'
|
||||||
|
- template: ./templates/build-msvc.yml
|
||||||
|
parameters:
|
||||||
|
artifactSource: 'false'
|
||||||
|
cache: 'true'
|
||||||
|
version: $(DisplayVersion)
|
||||||
|
- stage: release
|
||||||
|
displayName: 'release'
|
||||||
|
dependsOn:
|
||||||
|
- build
|
||||||
|
- build_win
|
||||||
|
jobs:
|
||||||
|
- job: github
|
||||||
|
displayName: 'github'
|
||||||
|
pool:
|
||||||
|
vmImage: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- template: ./templates/release-github.yml
|
14
.ci/yuzu-patreon-step1.yml
Normal file
14
.ci/yuzu-patreon-step1.yml
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
- master
|
||||||
|
|
||||||
|
pool:
|
||||||
|
vmImage: 'ubuntu-latest'
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- stage: merge
|
||||||
|
displayName: 'merge'
|
||||||
|
jobs:
|
||||||
|
- template: ./templates/merge-private.yml
|
59
.ci/yuzu-patreon-step2.yml
Normal file
59
.ci/yuzu-patreon-step2.yml
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
- master
|
||||||
|
|
||||||
|
variables:
|
||||||
|
DisplayVersion: $[counter(variables['DisplayPrefix'], 1)]
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- stage: build
|
||||||
|
displayName: 'build'
|
||||||
|
jobs:
|
||||||
|
- job: linux
|
||||||
|
timeoutInMinutes: 120
|
||||||
|
displayName: 'linux'
|
||||||
|
pool:
|
||||||
|
vmImage: ubuntu-latest
|
||||||
|
strategy:
|
||||||
|
maxParallel: 10
|
||||||
|
matrix:
|
||||||
|
linux:
|
||||||
|
BuildSuffix: 'linux'
|
||||||
|
ScriptFolder: 'linux'
|
||||||
|
steps:
|
||||||
|
- template: ./templates/sync-source.yml
|
||||||
|
parameters:
|
||||||
|
artifactSource: $(parameters.artifactSource)
|
||||||
|
needSubmodules: 'true'
|
||||||
|
- template: ./templates/build-single.yml
|
||||||
|
parameters:
|
||||||
|
artifactSource: 'false'
|
||||||
|
cache: $(parameters.cache)
|
||||||
|
version: $(DisplayVersion)
|
||||||
|
- job: msvc
|
||||||
|
timeoutInMinutes: 120
|
||||||
|
displayName: 'windows'
|
||||||
|
pool:
|
||||||
|
vmImage: windows-2022
|
||||||
|
steps:
|
||||||
|
- template: ./templates/sync-source.yml
|
||||||
|
parameters:
|
||||||
|
artifactSource: $(parameters.artifactSource)
|
||||||
|
needSubmodules: 'true'
|
||||||
|
- template: ./templates/build-msvc.yml
|
||||||
|
parameters:
|
||||||
|
artifactSource: 'false'
|
||||||
|
cache: $(parameters.cache)
|
||||||
|
version: $(DisplayVersion)
|
||||||
|
- stage: release
|
||||||
|
displayName: 'release'
|
||||||
|
dependsOn: build
|
||||||
|
jobs:
|
||||||
|
- job: release
|
||||||
|
displayName: 'source'
|
||||||
|
pool:
|
||||||
|
vmImage: 'ubuntu-latest'
|
||||||
|
steps:
|
||||||
|
- template: ./templates/release-private-tag.yml
|
22
.ci/yuzu-repo-sync.yml
Normal file
22
.ci/yuzu-repo-sync.yml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
- job: copy
|
||||||
|
displayName: 'Sync Repository'
|
||||||
|
pool:
|
||||||
|
vmImage: 'ubuntu-latest'
|
||||||
|
steps:
|
||||||
|
- script: echo 'https://$(GitUsername):$(GitAccessToken)@dev.azure.com' > $HOME/.git-credentials
|
||||||
|
displayName: 'Load Credentials'
|
||||||
|
- script: git config --global credential.helper store
|
||||||
|
displayName: 'Register Credential Helper'
|
||||||
|
- script: git remote add other $(GitRepoPushChangesURL)
|
||||||
|
displayName: 'Register Repository'
|
||||||
|
- script: git push --force other HEAD:$(GitPushBranch)
|
||||||
|
displayName: 'Update Code'
|
||||||
|
- script: rm -rf $HOME/.git-credentials
|
||||||
|
displayName: 'Clear Cached Credentials'
|
23
.ci/yuzu-verify.yml
Normal file
23
.ci/yuzu-verify.yml
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
stages:
|
||||||
|
- stage: format
|
||||||
|
displayName: 'format'
|
||||||
|
jobs:
|
||||||
|
- job: format
|
||||||
|
displayName: 'clang'
|
||||||
|
pool:
|
||||||
|
vmImage: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- template: ./templates/format-check.yml
|
||||||
|
parameters:
|
||||||
|
artifactSource: 'false'
|
||||||
|
- stage: build
|
||||||
|
displayName: 'build'
|
||||||
|
dependsOn: format
|
||||||
|
jobs:
|
||||||
|
- template: ./templates/build-standard.yml
|
||||||
|
parameters:
|
||||||
|
cache: 'false'
|
||||||
|
- template: ./templates/build-testing.yml
|
6
.codespellrc
Normal file
6
.codespellrc
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
; SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
||||||
|
; SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
[codespell]
|
||||||
|
skip = ./.git,./build,./dist,./Doxyfile,./externals,./LICENSES,./src/android/app/src/main/res
|
||||||
|
ignore-words-list = aci,allright,ba,canonicalizations,deques,fpr,froms,hda,inout,lod,masia,nam,nax,nce,nd,optin,pullrequests,pullrequest,te,transfered,unstall,uscaled,vas,zink
|
5
.git-blame-ignore-revs
Normal file
5
.git-blame-ignore-revs
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
# CRLF -> LF
|
||||||
|
90aa937593e53a5d5e070fb623b228578b0b225f
|
7
.gitattributes
vendored
Normal file
7
.gitattributes
vendored
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
dist/languages/* linguist-vendored
|
||||||
|
dist/qt_themes/* linguist-vendored
|
||||||
|
externals/* linguist-vendored
|
||||||
|
*.h linguist-language=cpp
|
38
.gitignore
vendored
Normal file
38
.gitignore
vendored
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
# SPDX-FileCopyrightText: 2013 Citra Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
# Build directory
|
||||||
|
[Bb]uild*/
|
||||||
|
doc-build/
|
||||||
|
|
||||||
|
# Generated source files
|
||||||
|
src/common/scm_rev.cpp
|
||||||
|
dist/english_plurals/generated_en.ts
|
||||||
|
|
||||||
|
# Project/editor files
|
||||||
|
*.swp
|
||||||
|
.idea/
|
||||||
|
.vs/
|
||||||
|
.vscode/
|
||||||
|
CMakeLists.txt.user*
|
||||||
|
|
||||||
|
# *nix related
|
||||||
|
# Common convention for backup or temporary files
|
||||||
|
*~
|
||||||
|
|
||||||
|
# Visual Studio CMake settings
|
||||||
|
CMakeSettings.json
|
||||||
|
|
||||||
|
# OSX global filetypes
|
||||||
|
# Created by Finder or Spotlight in directories for various OS functionality (indexing, etc)
|
||||||
|
.DS_Store
|
||||||
|
.DS_Store?
|
||||||
|
._*
|
||||||
|
.AppleDouble
|
||||||
|
.LSOverride
|
||||||
|
.Spotlight-V100
|
||||||
|
.Trashes
|
||||||
|
|
||||||
|
# Windows global filetypes
|
||||||
|
Thumbs.db
|
||||||
|
|
69
.gitmodules
vendored
Normal file
69
.gitmodules
vendored
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
# SPDX-FileCopyrightText: 2014 Citra Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
[submodule "enet"]
|
||||||
|
path = externals/enet
|
||||||
|
url = https://github.com/lsalzman/enet.git
|
||||||
|
[submodule "cubeb"]
|
||||||
|
path = externals/cubeb
|
||||||
|
url = https://github.com/mozilla/cubeb.git
|
||||||
|
[submodule "dynarmic"]
|
||||||
|
path = externals/dynarmic
|
||||||
|
url = https://github.com/merryhime/dynarmic.git
|
||||||
|
[submodule "libusb"]
|
||||||
|
path = externals/libusb/libusb
|
||||||
|
url = https://github.com/libusb/libusb.git
|
||||||
|
[submodule "discord-rpc"]
|
||||||
|
path = externals/discord-rpc
|
||||||
|
url = https://github.com/yuzu-emu/discord-rpc.git
|
||||||
|
[submodule "Vulkan-Headers"]
|
||||||
|
path = externals/Vulkan-Headers
|
||||||
|
url = https://github.com/KhronosGroup/Vulkan-Headers.git
|
||||||
|
[submodule "sirit"]
|
||||||
|
path = externals/sirit
|
||||||
|
url = https://github.com/yuzu-emu/sirit.git
|
||||||
|
[submodule "mbedtls"]
|
||||||
|
path = externals/mbedtls
|
||||||
|
url = https://github.com/yuzu-emu/mbedtls.git
|
||||||
|
[submodule "xbyak"]
|
||||||
|
path = externals/xbyak
|
||||||
|
url = https://github.com/herumi/xbyak.git
|
||||||
|
[submodule "opus"]
|
||||||
|
path = externals/opus
|
||||||
|
url = https://github.com/xiph/opus.git
|
||||||
|
[submodule "SDL"]
|
||||||
|
path = externals/SDL
|
||||||
|
url = https://github.com/libsdl-org/SDL.git
|
||||||
|
[submodule "cpp-httplib"]
|
||||||
|
path = externals/cpp-httplib
|
||||||
|
url = https://github.com/yhirose/cpp-httplib.git
|
||||||
|
[submodule "ffmpeg"]
|
||||||
|
path = externals/ffmpeg/ffmpeg
|
||||||
|
url = https://github.com/FFmpeg/FFmpeg.git
|
||||||
|
[submodule "vcpkg"]
|
||||||
|
path = externals/vcpkg
|
||||||
|
url = https://github.com/microsoft/vcpkg.git
|
||||||
|
[submodule "cpp-jwt"]
|
||||||
|
path = externals/cpp-jwt
|
||||||
|
url = https://github.com/arun11299/cpp-jwt.git
|
||||||
|
[submodule "libadrenotools"]
|
||||||
|
path = externals/libadrenotools
|
||||||
|
url = https://github.com/bylaws/libadrenotools.git
|
||||||
|
[submodule "tzdb_to_nx"]
|
||||||
|
path = externals/nx_tzdb/tzdb_to_nx
|
||||||
|
url = https://github.com/lat9nq/tzdb_to_nx.git
|
||||||
|
[submodule "VulkanMemoryAllocator"]
|
||||||
|
path = externals/VulkanMemoryAllocator
|
||||||
|
url = https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git
|
||||||
|
[submodule "breakpad"]
|
||||||
|
path = externals/breakpad
|
||||||
|
url = https://github.com/yuzu-emu/breakpad.git
|
||||||
|
[submodule "simpleini"]
|
||||||
|
path = externals/simpleini
|
||||||
|
url = https://github.com/brofield/simpleini.git
|
||||||
|
[submodule "oaknut"]
|
||||||
|
path = externals/oaknut
|
||||||
|
url = https://github.com/merryhime/oaknut
|
||||||
|
[submodule "Vulkan-Utility-Libraries"]
|
||||||
|
path = externals/Vulkan-Utility-Libraries
|
||||||
|
url = https://github.com/KhronosGroup/Vulkan-Utility-Libraries.git
|
161
.reuse/dep5
Normal file
161
.reuse/dep5
Normal file
|
@ -0,0 +1,161 @@
|
||||||
|
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||||
|
Comment: It is best to use this file to record copyright information about
|
||||||
|
generated, binary and third party files
|
||||||
|
|
||||||
|
Files: dist/english_plurals/*
|
||||||
|
dist/icons/controller/*.png
|
||||||
|
dist/icons/overlay/*.png
|
||||||
|
dist/languages/*
|
||||||
|
dist/qt_themes/*/icons/48x48/sd_card.png
|
||||||
|
dist/qt_themes/*/icons/index.theme
|
||||||
|
dist/qt_themes/default/style.qss
|
||||||
|
Copyright: yuzu Emulator Project
|
||||||
|
License: GPL-2.0-or-later
|
||||||
|
|
||||||
|
Files: dist/qt_themes/default/icons/256x256/yuzu.png
|
||||||
|
dist/yuzu.bmp
|
||||||
|
dist/yuzu.icns
|
||||||
|
dist/yuzu.ico
|
||||||
|
dist/yuzu.svg
|
||||||
|
Copyright: yuzu Emulator Project
|
||||||
|
License: GPL-2.0-or-later
|
||||||
|
|
||||||
|
Files: dist/qt_themes/qdarkstyle*/LICENSE.*
|
||||||
|
dist/qt_themes/qdarkstyle*/style.qrc
|
||||||
|
dist/qt_themes/qdarkstyle*/style.qss
|
||||||
|
Copyright: 2013 Colin Duquesnoy
|
||||||
|
2019 Daniel Cosmo Pizetta
|
||||||
|
License: MIT
|
||||||
|
|
||||||
|
Files: dist/qt_themes/qdarkstyle*/rc/*
|
||||||
|
Copyright: 2013 Colin Duquesnoy
|
||||||
|
2019 Daniel Cosmo Pizetta
|
||||||
|
License: CC-BY-4.0
|
||||||
|
|
||||||
|
Files: dist/qt_themes/default/icons/256x256/plus_folder.png
|
||||||
|
dist/qt_themes/default/icons/48x48/bad_folder.png
|
||||||
|
dist/qt_themes/default/icons/48x48/chip.png
|
||||||
|
dist/qt_themes/default/icons/48x48/folder.png
|
||||||
|
dist/qt_themes/default/icons/48x48/star.png
|
||||||
|
dist/qt_themes/qdarkstyle/icons/256x256/plus_folder.png
|
||||||
|
dist/qt_themes/qdarkstyle/icons/48x48/bad_folder.png
|
||||||
|
dist/qt_themes/qdarkstyle/icons/48x48/chip.png
|
||||||
|
dist/qt_themes/qdarkstyle/icons/48x48/folder.png
|
||||||
|
dist/qt_themes/qdarkstyle/icons/48x48/star.png
|
||||||
|
Copyright: Refactoring UI Inc.
|
||||||
|
License: MIT
|
||||||
|
Comment: https://github.com/tailwindlabs/heroicons
|
||||||
|
|
||||||
|
Files: dist/qt_themes/colorful/icons/16x16/lock.png
|
||||||
|
dist/qt_themes/colorful/icons/256x256/plus_folder.png
|
||||||
|
dist/qt_themes/colorful/icons/48x48/bad_folder.png
|
||||||
|
dist/qt_themes/colorful/icons/48x48/chip.png
|
||||||
|
dist/qt_themes/colorful/icons/48x48/folder.png
|
||||||
|
dist/qt_themes/colorful_dark/icons/16x16/lock.png
|
||||||
|
dist/qt_themes/colorful/icons/16x16/info.png
|
||||||
|
dist/qt_themes/colorful/icons/16x16/sync.png
|
||||||
|
Copyright: Icons8
|
||||||
|
License: MIT
|
||||||
|
Comment: https://github.com/icons8/flat-color-icons
|
||||||
|
|
||||||
|
Files: dist/qt_themes/*/icons/16x16/connected.png
|
||||||
|
dist/qt_themes/*/icons/16x16/connected_notification.png
|
||||||
|
dist/qt_themes/*/icons/16x16/disconnected.png
|
||||||
|
Copyright: GNOME Project
|
||||||
|
License: CC-BY-SA-3.0
|
||||||
|
Comment: connected_notification and disconnected are modified
|
||||||
|
|
||||||
|
Files: dist/qt_themes/*/icons/48x48/no_avatar.png
|
||||||
|
Copyright: Ionic (http://ionic.io/)
|
||||||
|
License: MIT
|
||||||
|
|
||||||
|
Files: dist/qt_themes/colorful/icons/48x48/star.png
|
||||||
|
dist/qt_themes/colorful/icons/16x16/checked.png
|
||||||
|
dist/qt_themes/colorful/icons/16x16/failed.png
|
||||||
|
Copyright: SVG Repo
|
||||||
|
License: CC0-1.0
|
||||||
|
|
||||||
|
Files: dist/qt_themes/*/icons/16x16/view-refresh.png
|
||||||
|
dist/qt_themes/default/icons/16x16/lock.png
|
||||||
|
dist/qt_themes/qdarkstyle/icons/16x16/lock.png
|
||||||
|
Copyright: Google, Inc.
|
||||||
|
License: Apache-2.0
|
||||||
|
|
||||||
|
Files: dist/qt_themes/*/icons/48x48/list-add.png
|
||||||
|
Copyright: Docteh
|
||||||
|
License: CC0-1.0
|
||||||
|
|
||||||
|
Files: externals/getopt/getopt.c
|
||||||
|
externals/getopt/getopt.h
|
||||||
|
Copyright: 2011 Ludvik Jerabek
|
||||||
|
License: LGPL-3.0-or-later
|
||||||
|
|
||||||
|
Files: externals/glad/include/glad/glad.h
|
||||||
|
externals/glad/src/glad.c
|
||||||
|
Copyright: The Khronos Group Inc.
|
||||||
|
License: (WTFPL OR CC0-1.0) AND Apache-2.0
|
||||||
|
Comment: https://github.com/Dav1dde/glad/issues/365#issuecomment-1138419515
|
||||||
|
|
||||||
|
Files: externals/glad/include/KHR/khrplatform.h
|
||||||
|
Copyright: 2008-2018 The Khronos Group Inc.
|
||||||
|
License: MIT
|
||||||
|
|
||||||
|
Files: externals/microprofile/*
|
||||||
|
Copyright: Jonas Meyer
|
||||||
|
License: Unlicense
|
||||||
|
|
||||||
|
Files: externals/FidelityFX-FSR/*
|
||||||
|
Copyright: 2021 Advanced Micro Devices, Inc.
|
||||||
|
License: MIT
|
||||||
|
|
||||||
|
Files: src/yuzu/*.ui
|
||||||
|
Copyright: 2018-2022 yuzu Emulator Project
|
||||||
|
License: GPL-2.0-or-later
|
||||||
|
|
||||||
|
Files: src/yuzu/compatdb.ui
|
||||||
|
src/yuzu/main.ui
|
||||||
|
Copyright: 2014-2017 Citra Emulator Project
|
||||||
|
License: GPL-2.0-or-later
|
||||||
|
|
||||||
|
Files: src/yuzu/loading_screen.ui
|
||||||
|
Copyright: 2019 James Rowe <jroweboy@gmail.com>
|
||||||
|
License: GPL-2.0-or-later
|
||||||
|
|
||||||
|
Files: src/yuzu/applets/aboutdialog.ui
|
||||||
|
src/yuzu/applets/qt_software_keyboard.ui
|
||||||
|
src/yuzu/util/overlay_dialog.ui
|
||||||
|
Copyright: 2020-2021 Its-Rei <kupfel@gmail.com>
|
||||||
|
2020-2021 yuzu Emulator Project
|
||||||
|
License: GPL-2.0-or-later
|
||||||
|
|
||||||
|
Files: vcpkg.json
|
||||||
|
Copyright: 2022 yuzu Emulator Project
|
||||||
|
License: GPL-3.0-or-later
|
||||||
|
|
||||||
|
Files: .github/ISSUE_TEMPLATE/*
|
||||||
|
Copyright: 2022 yuzu Emulator Project
|
||||||
|
License: GPL-2.0-or-later
|
||||||
|
|
||||||
|
Files: src/android/app/src/ea/res/*
|
||||||
|
Copyright: 2023 yuzu Emulator Project
|
||||||
|
License: GPL-3.0-or-later
|
||||||
|
|
||||||
|
Files: src/android/app/src/main/res/*
|
||||||
|
Copyright: 2023 yuzu Emulator Project
|
||||||
|
License: GPL-3.0-or-later
|
||||||
|
|
||||||
|
Files: src/android/gradle/wrapper/*
|
||||||
|
Copyright: 2023 yuzu Emulator Project
|
||||||
|
License: GPL-3.0-or-later
|
||||||
|
|
||||||
|
Files: externals/stb/*
|
||||||
|
Copyright: Sean Barrett
|
||||||
|
License: MIT
|
||||||
|
|
||||||
|
Files: externals/gamemode/*
|
||||||
|
Copyright: Copyright 2017-2019 Feral Interactive
|
||||||
|
License: BSD-3-Clause
|
||||||
|
|
||||||
|
Files: src/android/app/debug.keystore
|
||||||
|
Copyright: 2023 yuzu Emulator Project
|
||||||
|
License: GPL-3.0-or-later
|
Loading…
Reference in a new issue