committed by
Briar
57 changed files with 0 additions and 2308 deletions
-
29.ci/scripts/android/build.sh
-
21.ci/scripts/android/eabuild.sh
-
21.ci/scripts/android/mainlinebuild.sh
-
22.ci/scripts/android/upload.sh
-
32.ci/scripts/clang/docker.sh
-
11.ci/scripts/clang/exec.sh
-
23.ci/scripts/clang/upload.sh
-
20.ci/scripts/common/post-upload.sh
-
10.ci/scripts/common/pre-upload.sh
-
9.ci/scripts/format/docker.sh
-
10.ci/scripts/format/exec.sh
-
37.ci/scripts/format/script.sh
-
79.ci/scripts/linux/docker.sh
-
16.ci/scripts/linux/exec.sh
-
67.ci/scripts/linux/upload.sh
-
48.ci/scripts/merge/apply-patches-by-label-private.py
-
38.ci/scripts/merge/apply-patches-by-label.py
-
21.ci/scripts/merge/check-label-presence.py
-
5.ci/scripts/merge/yuzubot-git-config.sh
-
19.ci/scripts/transifex/docker.sh
-
66.ci/scripts/windows/docker.sh
-
11.ci/scripts/windows/exec.sh
-
33.ci/scripts/windows/install-vulkan-sdk.ps1
-
109.ci/scripts/windows/scan_dll.py
-
118.ci/scripts/windows/upload.ps1
-
22.ci/scripts/windows/upload.sh
-
8.ci/templates/build-mock.yml
-
31.ci/templates/build-msvc.yml
-
26.ci/templates/build-single.yml
-
33.ci/templates/build-standard.yml
-
40.ci/templates/build-testing.yml
-
17.ci/templates/format-check.yml
-
44.ci/templates/merge-private.yml
-
43.ci/templates/merge.yml
-
33.ci/templates/mergebot-private.yml
-
18.ci/templates/mergebot.yml
-
16.ci/templates/release-download.yml
-
16.ci/templates/release-github.yml
-
12.ci/templates/release-private-tag.yml
-
13.ci/templates/release-universal.yml
-
19.ci/templates/retrieve-artifact-source.yml
-
14.ci/templates/retrieve-master-source.yml
-
10.ci/templates/sync-source.yml
-
14.ci/yuzu-mainline-step1.yml
-
64.ci/yuzu-mainline-step2.yml
-
14.ci/yuzu-patreon-step1.yml
-
59.ci/yuzu-patreon-step2.yml
-
22.ci/yuzu-repo-sync.yml
-
23.ci/yuzu-verify.yml
-
80.github/workflows/android-build.yml
-
66.github/workflows/android-ea-play-release.yml
-
59.github/workflows/android-mainline-play-release.yml
-
318.github/workflows/android-merge.js
-
57.github/workflows/android-publish.yml
-
33.github/workflows/ci.yml
-
17.github/workflows/codespell.yml
-
192.github/workflows/verify.yml
@ -1,29 +0,0 @@ |
|||||
#!/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 |
|
||||
@ -1,21 +0,0 @@ |
|||||
#!/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 |
|
||||
@ -1,21 +0,0 @@ |
|||||
#!/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 |
|
||||
@ -1,22 +0,0 @@ |
|||||
#!/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" |
|
||||
@ -1,32 +0,0 @@ |
|||||
#!/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 |
|
||||
|
|
||||
@ -1,11 +0,0 @@ |
|||||
#!/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 ./ |
|
||||
@ -1,23 +0,0 @@ |
|||||
#!/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 |
|
||||
@ -1,20 +0,0 @@ |
|||||
#!/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}/" |
|
||||
@ -1,10 +0,0 @@ |
|||||
#!/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}/" |
|
||||
@ -1,9 +0,0 @@ |
|||||
#!/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 |
|
||||
@ -1,10 +0,0 @@ |
|||||
#!/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 ./ |
|
||||
@ -1,37 +0,0 @@ |
|||||
#!/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 |
|
||||
@ -1,79 +0,0 @@ |
|||||
#!/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 |
|
||||
@ -1,16 +0,0 @@ |
|||||
#!/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 ./ |
|
||||
@ -1,67 +0,0 @@ |
|||||
#!/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 |
|
||||
@ -1,48 +0,0 @@ |
|||||
# 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) |
|
||||
@ -1,38 +0,0 @@ |
|||||
# 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) |
|
||||
@ -1,21 +0,0 @@ |
|||||
# 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') |
|
||||
@ -1,5 +0,0 @@ |
|||||
# 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" |
|
||||
@ -1,19 +0,0 @@ |
|||||
#!/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 |
|
||||
@ -1,66 +0,0 @@ |
|||||
#!/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/ ';' |
|
||||
@ -1,11 +0,0 @@ |
|||||
#!/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 ./ |
|
||||
@ -1,33 +0,0 @@ |
|||||
# 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 |
|
||||
} |
|
||||
@ -1,109 +0,0 @@ |
|||||
# 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() |
|
||||
@ -1,118 +0,0 @@ |
|||||
# 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" |
|
||||
} |
|
||||
@ -1,22 +0,0 @@ |
|||||
#!/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 |
|
||||
@ -1,8 +0,0 @@ |
|||||
# 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' |
|
||||
@ -1,31 +0,0 @@ |
|||||
# 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' |
|
||||
@ -1,26 +0,0 @@ |
|||||
# 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' |
|
||||
@ -1,33 +0,0 @@ |
|||||
# 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) |
|
||||
@ -1,40 +0,0 @@ |
|||||
# 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) |
|
||||
@ -1,17 +0,0 @@ |
|||||
# 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' |
|
||||
@ -1,44 +0,0 @@ |
|||||
# 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' |
|
||||
@ -1,43 +0,0 @@ |
|||||
# 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' |
|
||||
@ -1,33 +0,0 @@ |
|||||
# 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)' |
|
||||
@ -1,18 +0,0 @@ |
|||||
# 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)' |
|
||||
@ -1,16 +0,0 @@ |
|||||
# 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)' |
|
||||
@ -1,16 +0,0 @@ |
|||||
# 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) |
|
||||
@ -1,12 +0,0 @@ |
|||||
# 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' |
|
||||
@ -1,13 +0,0 @@ |
|||||
# 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' |
|
||||
@ -1,19 +0,0 @@ |
|||||
# 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 |
|
||||
@ -1,14 +0,0 @@ |
|||||
# 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') |
|
||||
@ -1,10 +0,0 @@ |
|||||
# 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) |
|
||||
@ -1,14 +0,0 @@ |
|||||
# 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 |
|
||||
@ -1,64 +0,0 @@ |
|||||
# 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 |
|
||||
@ -1,14 +0,0 @@ |
|||||
# 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 |
|
||||
@ -1,59 +0,0 @@ |
|||||
# 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 |
|
||||
@ -1,22 +0,0 @@ |
|||||
# 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' |
|
||||
@ -1,23 +0,0 @@ |
|||||
# 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 |
|
||||
@ -1,80 +0,0 @@ |
|||||
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project |
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later |
|
||||
|
|
||||
name: 'yuzu-android-build' |
|
||||
|
|
||||
on: |
|
||||
push: |
|
||||
tags: [ "*" ] |
|
||||
|
|
||||
jobs: |
|
||||
android: |
|
||||
runs-on: ubuntu-latest |
|
||||
if: ${{ github.repository == 'yuzu-emu/yuzu-android' }} |
|
||||
steps: |
|
||||
- uses: actions/checkout@v3 |
|
||||
with: |
|
||||
submodules: recursive |
|
||||
fetch-depth: 0 |
|
||||
- name: Set up JDK 17 |
|
||||
uses: actions/setup-java@v3 |
|
||||
with: |
|
||||
java-version: '17' |
|
||||
distribution: 'temurin' |
|
||||
- name: Set up cache |
|
||||
uses: actions/cache@v3 |
|
||||
with: |
|
||||
path: | |
|
||||
~/.gradle/caches |
|
||||
~/.gradle/wrapper |
|
||||
~/.ccache |
|
||||
key: ${{ runner.os }}-android-${{ github.sha }} |
|
||||
restore-keys: | |
|
||||
${{ runner.os }}-android- |
|
||||
- name: Query tag name |
|
||||
uses: olegtarasov/get-tag@v2.1.2 |
|
||||
id: tagName |
|
||||
- name: Install dependencies |
|
||||
run: | |
|
||||
sudo apt-get update |
|
||||
sudo apt-get install -y ccache apksigner glslang-dev glslang-tools |
|
||||
- name: Build |
|
||||
run: ./.ci/scripts/android/build.sh |
|
||||
env: |
|
||||
ANDROID_KEYSTORE_B64: ${{ secrets.ANDROID_KEYSTORE_B64 }} |
|
||||
ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }} |
|
||||
ANDROID_KEYSTORE_PASS: ${{ secrets.ANDROID_KEYSTORE_PASS }} |
|
||||
- name: Copy artifacts |
|
||||
run: ./.ci/scripts/android/upload.sh |
|
||||
- name: Upload |
|
||||
uses: actions/upload-artifact@v3 |
|
||||
with: |
|
||||
name: android |
|
||||
path: artifacts/ |
|
||||
# release steps |
|
||||
release-android: |
|
||||
runs-on: ubuntu-latest |
|
||||
needs: [android] |
|
||||
if: ${{ startsWith(github.ref, 'refs/tags/') }} |
|
||||
permissions: |
|
||||
contents: write |
|
||||
steps: |
|
||||
- uses: actions/download-artifact@v3 |
|
||||
- name: Query tag name |
|
||||
uses: olegtarasov/get-tag@v2.1.2 |
|
||||
id: tagName |
|
||||
- name: Create release |
|
||||
uses: actions/create-release@v1 |
|
||||
env: |
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
|
||||
with: |
|
||||
tag_name: ${{ steps.tagName.outputs.tag }} |
|
||||
release_name: ${{ steps.tagName.outputs.tag }} |
|
||||
draft: false |
|
||||
prerelease: false |
|
||||
- name: Upload artifacts |
|
||||
uses: alexellis/upload-assets@0.2.3 |
|
||||
env: |
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
|
||||
with: |
|
||||
asset_paths: '["./**/*.apk","./**/*.aab"]' |
|
||||
@ -1,66 +0,0 @@ |
|||||
# SPDX-FileCopyrightText: 2024 yuzu Emulator Project |
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later |
|
||||
|
|
||||
name: yuzu-android-ea-play-release |
|
||||
|
|
||||
on: |
|
||||
workflow_dispatch: |
|
||||
inputs: |
|
||||
release-track: |
|
||||
description: 'Play store release track (internal/alpha/beta/production)' |
|
||||
required: true |
|
||||
default: 'alpha' |
|
||||
|
|
||||
jobs: |
|
||||
android: |
|
||||
runs-on: ubuntu-latest |
|
||||
if: ${{ github.repository == 'yuzu-emu/yuzu' }} |
|
||||
steps: |
|
||||
- uses: actions/checkout@v3 |
|
||||
name: Checkout |
|
||||
with: |
|
||||
fetch-depth: 0 |
|
||||
submodules: true |
|
||||
token: ${{ secrets.ALT_GITHUB_TOKEN }} |
|
||||
- run: npm install execa@5 |
|
||||
- uses: actions/github-script@v5 |
|
||||
name: 'Merge and publish Android EA changes' |
|
||||
env: |
|
||||
ALT_GITHUB_TOKEN: ${{ secrets.ALT_GITHUB_TOKEN }} |
|
||||
BUILD_EA: true |
|
||||
with: |
|
||||
script: | |
|
||||
const execa = require("execa"); |
|
||||
const mergebot = require('./.github/workflows/android-merge.js').mergebot; |
|
||||
process.chdir('${{ github.workspace }}'); |
|
||||
mergebot(github, context, execa); |
|
||||
- name: Get tag name |
|
||||
run: echo "GIT_TAG_NAME=$(cat tag-name.txt)" >> $GITHUB_ENV |
|
||||
- name: Set up JDK 17 |
|
||||
uses: actions/setup-java@v3 |
|
||||
with: |
|
||||
java-version: '17' |
|
||||
distribution: 'temurin' |
|
||||
- name: Install dependencies |
|
||||
run: | |
|
||||
sudo apt-get update |
|
||||
sudo apt-get install -y ccache apksigner glslang-dev glslang-tools |
|
||||
- name: Build |
|
||||
run: ./.ci/scripts/android/eabuild.sh |
|
||||
env: |
|
||||
EA_PLAY_ANDROID_KEYSTORE_B64: ${{ secrets.PLAY_ANDROID_KEYSTORE_B64 }} |
|
||||
PLAY_ANDROID_KEY_ALIAS: ${{ secrets.PLAY_ANDROID_KEY_ALIAS }} |
|
||||
PLAY_ANDROID_KEYSTORE_PASS: ${{ secrets.PLAY_ANDROID_KEYSTORE_PASS }} |
|
||||
EA_SERVICE_ACCOUNT_KEY_B64: ${{ secrets.EA_SERVICE_ACCOUNT_KEY_B64 }} |
|
||||
STORE_TRACK: ${{ github.event.inputs.release-track }} |
|
||||
AUTO_VERSIONED: true |
|
||||
BUILD_EA: true |
|
||||
- name: Create release |
|
||||
uses: softprops/action-gh-release@v1 |
|
||||
with: |
|
||||
tag_name: ${{ env.EA_TAG_NAME }} |
|
||||
name: ${{ env.EA_TAG_NAME }} |
|
||||
draft: false |
|
||||
prerelease: false |
|
||||
repository: yuzu/yuzu-android |
|
||||
token: ${{ secrets.ALT_GITHUB_TOKEN }} |
|
||||
@ -1,59 +0,0 @@ |
|||||
# SPDX-FileCopyrightText: 2024 yuzu Emulator Project |
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later |
|
||||
|
|
||||
name: yuzu-android-mainline-play-release |
|
||||
|
|
||||
on: |
|
||||
workflow_dispatch: |
|
||||
inputs: |
|
||||
release-tag: |
|
||||
description: 'Tag # from yuzu-android that you want to build and publish' |
|
||||
required: true |
|
||||
default: '200' |
|
||||
release-track: |
|
||||
description: 'Play store release track (internal/alpha/beta/production)' |
|
||||
required: true |
|
||||
default: 'alpha' |
|
||||
|
|
||||
jobs: |
|
||||
android: |
|
||||
runs-on: ubuntu-latest |
|
||||
if: ${{ github.repository == 'yuzu-emu/yuzu' }} |
|
||||
steps: |
|
||||
- uses: actions/checkout@v3 |
|
||||
name: Checkout |
|
||||
with: |
|
||||
fetch-depth: 0 |
|
||||
submodules: true |
|
||||
token: ${{ secrets.ALT_GITHUB_TOKEN }} |
|
||||
- run: npm install execa@5 |
|
||||
- uses: actions/github-script@v5 |
|
||||
name: 'Pull mainline tag' |
|
||||
env: |
|
||||
MAINLINE_TAG: ${{ github.event.inputs.release-tag }} |
|
||||
with: |
|
||||
script: | |
|
||||
const execa = require("execa"); |
|
||||
const mergebot = require('./.github/workflows/android-merge.js').getMainlineTag; |
|
||||
process.chdir('${{ github.workspace }}'); |
|
||||
mergebot(execa); |
|
||||
- name: Set up JDK 17 |
|
||||
uses: actions/setup-java@v3 |
|
||||
with: |
|
||||
java-version: '17' |
|
||||
distribution: 'temurin' |
|
||||
- name: Install dependencies |
|
||||
run: | |
|
||||
sudo apt-get update |
|
||||
sudo apt-get install -y ccache apksigner glslang-dev glslang-tools |
|
||||
- name: Build |
|
||||
run: | |
|
||||
echo "GIT_TAG_NAME=android-${{ github.event.inputs.releast-tag }}" >> $GITHUB_ENV |
|
||||
./.ci/scripts/android/mainlinebuild.sh |
|
||||
env: |
|
||||
MAINLINE_PLAY_ANDROID_KEYSTORE_B64: ${{ secrets.PLAY_ANDROID_KEYSTORE_B64 }} |
|
||||
PLAY_ANDROID_KEY_ALIAS: ${{ secrets.PLAY_ANDROID_KEY_ALIAS }} |
|
||||
PLAY_ANDROID_KEYSTORE_PASS: ${{ secrets.PLAY_ANDROID_KEYSTORE_PASS }} |
|
||||
SERVICE_ACCOUNT_KEY_B64: ${{ secrets.MAINLINE_SERVICE_ACCOUNT_KEY_B64 }} |
|
||||
STORE_TRACK: ${{ github.event.inputs.release-track }} |
|
||||
AUTO_VERSIONED: true |
|
||||
@ -1,318 +0,0 @@ |
|||||
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||
|
|
||||
// Note: This is a GitHub Actions script
|
|
||||
// It is not meant to be executed directly on your machine without modifications
|
|
||||
|
|
||||
const fs = require("fs"); |
|
||||
// which label to check for changes
|
|
||||
const CHANGE_LABEL_MAINLINE = 'android-merge'; |
|
||||
const CHANGE_LABEL_EA = 'android-ea-merge'; |
|
||||
// how far back in time should we consider the changes are "recent"? (default: 24 hours)
|
|
||||
const DETECTION_TIME_FRAME = (parseInt(process.env.DETECTION_TIME_FRAME)) || (24 * 3600 * 1000); |
|
||||
const BUILD_EA = process.env.BUILD_EA == 'true'; |
|
||||
const MAINLINE_TAG = process.env.MAINLINE_TAG; |
|
||||
|
|
||||
async function checkBaseChanges(github) { |
|
||||
// query the commit date of the latest commit on this branch
|
|
||||
const query = `query($owner:String!, $name:String!, $ref:String!) {
|
|
||||
repository(name:$name, owner:$owner) { |
|
||||
ref(qualifiedName:$ref) { |
|
||||
target { |
|
||||
... on Commit { id pushedDate oid } |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
}`;
|
|
||||
const variables = { |
|
||||
owner: 'yuzu-emu', |
|
||||
name: 'yuzu', |
|
||||
ref: 'refs/heads/master', |
|
||||
}; |
|
||||
const result = await github.graphql(query, variables); |
|
||||
const pushedAt = result.repository.ref.target.pushedDate; |
|
||||
console.log(`Last commit pushed at ${pushedAt}.`); |
|
||||
const delta = new Date() - new Date(pushedAt); |
|
||||
if (delta <= DETECTION_TIME_FRAME) { |
|
||||
console.info('New changes detected, triggering a new build.'); |
|
||||
return true; |
|
||||
} |
|
||||
console.info('No new changes detected.'); |
|
||||
return false; |
|
||||
} |
|
||||
|
|
||||
async function checkAndroidChanges(github) { |
|
||||
if (checkBaseChanges(github)) return true; |
|
||||
const pulls = getPulls(github, false); |
|
||||
for (let i = 0; i < pulls.length; i++) { |
|
||||
let pull = pulls[i]; |
|
||||
if (new Date() - new Date(pull.headRepository.pushedAt) <= DETECTION_TIME_FRAME) { |
|
||||
console.info(`${pull.number} updated at ${pull.headRepository.pushedAt}`); |
|
||||
return true; |
|
||||
} |
|
||||
} |
|
||||
console.info("No changes detected in any tagged pull requests."); |
|
||||
return false; |
|
||||
} |
|
||||
|
|
||||
async function tagAndPush(github, owner, repo, execa, commit=false) { |
|
||||
let altToken = process.env.ALT_GITHUB_TOKEN; |
|
||||
if (!altToken) { |
|
||||
throw `Please set ALT_GITHUB_TOKEN environment variable. This token should have write access to ${owner}/${repo}.`; |
|
||||
} |
|
||||
const query = `query ($owner:String!, $name:String!) {
|
|
||||
repository(name:$name, owner:$owner) { |
|
||||
refs(refPrefix: "refs/tags/", orderBy: {field: TAG_COMMIT_DATE, direction: DESC}, first: 10) { |
|
||||
nodes { name } |
|
||||
} |
|
||||
} |
|
||||
}`;
|
|
||||
const variables = { |
|
||||
owner: owner, |
|
||||
name: repo, |
|
||||
}; |
|
||||
const tags = await github.graphql(query, variables); |
|
||||
const tagList = tags.repository.refs.nodes; |
|
||||
let lastTag = 'android-1'; |
|
||||
for (let i = 0; i < tagList.length; ++i) { |
|
||||
if (tagList[i].name.includes('android-')) { |
|
||||
lastTag = tagList[i].name; |
|
||||
break; |
|
||||
} |
|
||||
} |
|
||||
const tagNumber = /\w+-(\d+)/.exec(lastTag)[1] | 0; |
|
||||
const channel = repo.split('-')[1]; |
|
||||
const newTag = `${channel}-${tagNumber + 1}`; |
|
||||
console.log(`New tag: ${newTag}`); |
|
||||
if (commit) { |
|
||||
let channelName = channel[0].toUpperCase() + channel.slice(1); |
|
||||
console.info(`Committing pending commit as ${channelName} ${tagNumber + 1}`); |
|
||||
await execa("git", ['commit', '-m', `${channelName} ${tagNumber + 1}`]); |
|
||||
} |
|
||||
console.info('Pushing tags to GitHub ...'); |
|
||||
await execa("git", ['tag', newTag]); |
|
||||
await execa("git", ['remote', 'add', 'target', `https://${altToken}@github.com/${owner}/${repo}.git`]); |
|
||||
await execa("git", ['push', 'target', 'master', '-f']); |
|
||||
await execa("git", ['push', 'target', 'master', '--tags']); |
|
||||
console.info('Successfully pushed new changes.'); |
|
||||
} |
|
||||
|
|
||||
async function tagAndPushEA(github, owner, repo, execa) { |
|
||||
let altToken = process.env.ALT_GITHUB_TOKEN; |
|
||||
if (!altToken) { |
|
||||
throw `Please set ALT_GITHUB_TOKEN environment variable. This token should have write access to ${owner}/${repo}.`; |
|
||||
} |
|
||||
const query = `query ($owner:String!, $name:String!) {
|
|
||||
repository(name:$name, owner:$owner) { |
|
||||
refs(refPrefix: "refs/tags/", orderBy: {field: TAG_COMMIT_DATE, direction: DESC}, first: 10) { |
|
||||
nodes { name } |
|
||||
} |
|
||||
} |
|
||||
}`;
|
|
||||
const variables = { |
|
||||
owner: owner, |
|
||||
name: repo, |
|
||||
}; |
|
||||
const tags = await github.graphql(query, variables); |
|
||||
const tagList = tags.repository.refs.nodes; |
|
||||
let lastTag = 'ea-1'; |
|
||||
for (let i = 0; i < tagList.length; ++i) { |
|
||||
if (tagList[i].name.includes('ea-')) { |
|
||||
lastTag = tagList[i].name; |
|
||||
break; |
|
||||
} |
|
||||
} |
|
||||
const tagNumber = /\w+-(\d+)/.exec(lastTag)[1] | 0; |
|
||||
const newTag = `ea-${tagNumber + 1}`; |
|
||||
console.log(`New tag: ${newTag}`); |
|
||||
console.info('Pushing tags to GitHub ...'); |
|
||||
await execa("git", ["remote", "add", "android", "https://github.com/yuzu-emu/yuzu-android.git"]); |
|
||||
await execa("git", ["fetch", "android"]); |
|
||||
|
|
||||
await execa("git", ['tag', newTag]); |
|
||||
await execa("git", ['push', 'android', `${newTag}`]); |
|
||||
|
|
||||
fs.writeFile('tag-name.txt', newTag, (err) => { |
|
||||
if (err) throw 'Could not write tag name to file!' |
|
||||
}) |
|
||||
|
|
||||
console.info('Successfully pushed new changes.'); |
|
||||
} |
|
||||
|
|
||||
async function generateReadme(pulls, context, mergeResults, execa) { |
|
||||
let baseUrl = `https://github.com/${context.repo.owner}/${context.repo.repo}/`; |
|
||||
let output = |
|
||||
"| Pull Request | Commit | Title | Author | Merged? |\n|----|----|----|----|----|\n"; |
|
||||
for (let pull of pulls) { |
|
||||
let pr = pull.number; |
|
||||
let result = mergeResults[pr]; |
|
||||
output += `| [${pr}](${baseUrl}/pull/${pr}) | [\`${result.rev || "N/A"}\`](${baseUrl}/pull/${pr}/files) | ${pull.title} | [${pull.author.login}](https://github.com/${pull.author.login}/) | ${result.success ? "Yes" : "No"} |\n`; |
|
||||
} |
|
||||
output += |
|
||||
"\n\nEnd of merge log. You can find the original README.md below the break.\n\n-----\n\n"; |
|
||||
output += fs.readFileSync("./README.md"); |
|
||||
fs.writeFileSync("./README.md", output); |
|
||||
await execa("git", ["add", "README.md"]); |
|
||||
} |
|
||||
|
|
||||
async function fetchPullRequests(pulls, repoUrl, execa) { |
|
||||
console.log("::group::Fetch pull requests"); |
|
||||
for (let pull of pulls) { |
|
||||
let pr = pull.number; |
|
||||
console.info(`Fetching PR ${pr} ...`); |
|
||||
await execa("git", [ |
|
||||
"fetch", |
|
||||
"-f", |
|
||||
"--no-recurse-submodules", |
|
||||
repoUrl, |
|
||||
`pull/${pr}/head:pr-${pr}`, |
|
||||
]); |
|
||||
} |
|
||||
console.log("::endgroup::"); |
|
||||
} |
|
||||
|
|
||||
async function mergePullRequests(pulls, execa) { |
|
||||
let mergeResults = {}; |
|
||||
console.log("::group::Merge pull requests"); |
|
||||
await execa("git", ["config", "--global", "user.name", "yuzubot"]); |
|
||||
await execa("git", [ |
|
||||
"config", |
|
||||
"--global", |
|
||||
"user.email", |
|
||||
"yuzu\x40yuzu-emu\x2eorg", // prevent email harvesters from scraping the address
|
|
||||
]); |
|
||||
let hasFailed = false; |
|
||||
for (let pull of pulls) { |
|
||||
let pr = pull.number; |
|
||||
console.info(`Merging PR ${pr} ...`); |
|
||||
try { |
|
||||
const process1 = execa("git", [ |
|
||||
"merge", |
|
||||
"--squash", |
|
||||
"--no-edit", |
|
||||
`pr-${pr}`, |
|
||||
]); |
|
||||
process1.stdout.pipe(process.stdout); |
|
||||
await process1; |
|
||||
|
|
||||
const process2 = execa("git", ["commit", "-m", `Merge yuzu-emu#${pr}`]); |
|
||||
process2.stdout.pipe(process.stdout); |
|
||||
await process2; |
|
||||
|
|
||||
const process3 = await execa("git", ["rev-parse", "--short", `pr-${pr}`]); |
|
||||
mergeResults[pr] = { |
|
||||
success: true, |
|
||||
rev: process3.stdout, |
|
||||
}; |
|
||||
} catch (err) { |
|
||||
console.log( |
|
||||
`::error title=#${pr} not merged::Failed to merge pull request: ${pr}: ${err}` |
|
||||
); |
|
||||
mergeResults[pr] = { success: false }; |
|
||||
hasFailed = true; |
|
||||
await execa("git", ["reset", "--hard"]); |
|
||||
} |
|
||||
} |
|
||||
console.log("::endgroup::"); |
|
||||
if (hasFailed) { |
|
||||
throw 'There are merge failures. Aborting!'; |
|
||||
} |
|
||||
return mergeResults; |
|
||||
} |
|
||||
|
|
||||
async function resetBranch(execa) { |
|
||||
console.log("::group::Reset master branch"); |
|
||||
let hasFailed = false; |
|
||||
try { |
|
||||
await execa("git", ["remote", "add", "source", "https://github.com/yuzu-emu/yuzu.git"]); |
|
||||
await execa("git", ["fetch", "source"]); |
|
||||
const process1 = await execa("git", ["rev-parse", "source/master"]); |
|
||||
const headCommit = process1.stdout; |
|
||||
|
|
||||
await execa("git", ["reset", "--hard", headCommit]); |
|
||||
} catch (err) { |
|
||||
console.log(`::error title=Failed to reset master branch`); |
|
||||
hasFailed = true; |
|
||||
} |
|
||||
console.log("::endgroup::"); |
|
||||
if (hasFailed) { |
|
||||
throw 'Failed to reset the master branch. Aborting!'; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
async function getPulls(github) { |
|
||||
const query = `query ($owner:String!, $name:String!, $label:String!) {
|
|
||||
repository(name:$name, owner:$owner) { |
|
||||
pullRequests(labels: [$label], states: OPEN, first: 100) { |
|
||||
nodes { |
|
||||
number title author { login } |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
}`;
|
|
||||
const mainlineVariables = { |
|
||||
owner: 'yuzu-emu', |
|
||||
name: 'yuzu', |
|
||||
label: CHANGE_LABEL_MAINLINE, |
|
||||
}; |
|
||||
const mainlineResult = await github.graphql(query, mainlineVariables); |
|
||||
const pulls = mainlineResult.repository.pullRequests.nodes; |
|
||||
if (BUILD_EA) { |
|
||||
const eaVariables = { |
|
||||
owner: 'yuzu-emu', |
|
||||
name: 'yuzu', |
|
||||
label: CHANGE_LABEL_EA, |
|
||||
}; |
|
||||
const eaResult = await github.graphql(query, eaVariables); |
|
||||
const eaPulls = eaResult.repository.pullRequests.nodes; |
|
||||
return pulls.concat(eaPulls); |
|
||||
} |
|
||||
return pulls; |
|
||||
} |
|
||||
|
|
||||
async function getMainlineTag(execa) { |
|
||||
console.log(`::group::Getting mainline tag android-${MAINLINE_TAG}`); |
|
||||
let hasFailed = false; |
|
||||
try { |
|
||||
await execa("git", ["remote", "add", "mainline", "https://github.com/yuzu-emu/yuzu-android.git"]); |
|
||||
await execa("git", ["fetch", "mainline", "--tags"]); |
|
||||
await execa("git", ["checkout", `tags/android-${MAINLINE_TAG}`]); |
|
||||
await execa("git", ["submodule", "update", "--init", "--recursive"]); |
|
||||
} catch (err) { |
|
||||
console.log('::error title=Failed pull tag'); |
|
||||
hasFailed = true; |
|
||||
} |
|
||||
console.log("::endgroup::"); |
|
||||
if (hasFailed) { |
|
||||
throw 'Failed pull mainline tag. Aborting!'; |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
async function mergebot(github, context, execa) { |
|
||||
// Reset our local copy of master to what appears on yuzu-emu/yuzu - master
|
|
||||
await resetBranch(execa); |
|
||||
|
|
||||
const pulls = await getPulls(github); |
|
||||
let displayList = []; |
|
||||
for (let i = 0; i < pulls.length; i++) { |
|
||||
let pull = pulls[i]; |
|
||||
displayList.push({ PR: pull.number, Title: pull.title }); |
|
||||
} |
|
||||
console.info("The following pull requests will be merged:"); |
|
||||
console.table(displayList); |
|
||||
await fetchPullRequests(pulls, "https://github.com/yuzu-emu/yuzu", execa); |
|
||||
const mergeResults = await mergePullRequests(pulls, execa); |
|
||||
|
|
||||
if (BUILD_EA) { |
|
||||
await tagAndPushEA(github, 'yuzu-emu', `yuzu-android`, execa); |
|
||||
} else { |
|
||||
await generateReadme(pulls, context, mergeResults, execa); |
|
||||
await tagAndPush(github, 'yuzu-emu', `yuzu-android`, execa, true); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
module.exports.mergebot = mergebot; |
|
||||
module.exports.checkAndroidChanges = checkAndroidChanges; |
|
||||
module.exports.tagAndPush = tagAndPush; |
|
||||
module.exports.checkBaseChanges = checkBaseChanges; |
|
||||
module.exports.getMainlineTag = getMainlineTag; |
|
||||
@ -1,57 +0,0 @@ |
|||||
# SPDX-FileCopyrightText: 2024 yuzu Emulator Project |
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later |
|
||||
|
|
||||
name: yuzu-android-publish |
|
||||
|
|
||||
on: |
|
||||
schedule: |
|
||||
- cron: '37 0 * * *' |
|
||||
workflow_dispatch: |
|
||||
inputs: |
|
||||
android: |
|
||||
description: 'Whether to trigger an Android build (true/false/auto)' |
|
||||
required: false |
|
||||
default: 'true' |
|
||||
|
|
||||
jobs: |
|
||||
android: |
|
||||
runs-on: ubuntu-latest |
|
||||
if: ${{ github.event.inputs.android != 'false' && github.repository == 'yuzu-emu/yuzu' }} |
|
||||
steps: |
|
||||
# this checkout is required to make sure the GitHub Actions scripts are available |
|
||||
- uses: actions/checkout@v3 |
|
||||
name: Pre-checkout |
|
||||
with: |
|
||||
submodules: false |
|
||||
- uses: actions/github-script@v6 |
|
||||
id: check-changes |
|
||||
name: 'Check for new changes' |
|
||||
env: |
|
||||
# 24 hours |
|
||||
DETECTION_TIME_FRAME: 86400000 |
|
||||
with: |
|
||||
script: | |
|
||||
if (context.payload.inputs && context.payload.inputs.android === 'true') return true; |
|
||||
const checkAndroidChanges = require('./.github/workflows/android-merge.js').checkAndroidChanges; |
|
||||
return checkAndroidChanges(github); |
|
||||
- run: npm install execa@5 |
|
||||
if: ${{ steps.check-changes.outputs.result == 'true' }} |
|
||||
- uses: actions/checkout@v3 |
|
||||
name: Checkout |
|
||||
if: ${{ steps.check-changes.outputs.result == 'true' }} |
|
||||
with: |
|
||||
path: 'yuzu-merge' |
|
||||
fetch-depth: 0 |
|
||||
submodules: true |
|
||||
token: ${{ secrets.ALT_GITHUB_TOKEN }} |
|
||||
- uses: actions/github-script@v5 |
|
||||
name: 'Check and merge Android changes' |
|
||||
if: ${{ steps.check-changes.outputs.result == 'true' }} |
|
||||
env: |
|
||||
ALT_GITHUB_TOKEN: ${{ secrets.ALT_GITHUB_TOKEN }} |
|
||||
with: |
|
||||
script: | |
|
||||
const execa = require("execa"); |
|
||||
const mergebot = require('./.github/workflows/android-merge.js').mergebot; |
|
||||
process.chdir('${{ github.workspace }}/yuzu-merge'); |
|
||||
mergebot(github, context, execa); |
|
||||
@ -1,33 +0,0 @@ |
|||||
# SPDX-FileCopyrightText: 2021 yuzu Emulator Project |
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later |
|
||||
|
|
||||
name: yuzu-ci |
|
||||
|
|
||||
on: |
|
||||
push: |
|
||||
branches: [ master ] |
|
||||
tags: [ "*" ] |
|
||||
pull_request: |
|
||||
branches: [ master ] |
|
||||
|
|
||||
jobs: |
|
||||
transifex: |
|
||||
runs-on: ubuntu-latest |
|
||||
container: yuzuemu/build-environments:linux-transifex |
|
||||
if: ${{ github.repository == 'yuzu-emu/yuzu' && !github.head_ref }} |
|
||||
steps: |
|
||||
- uses: actions/checkout@v3 |
|
||||
with: |
|
||||
submodules: recursive |
|
||||
fetch-depth: 0 |
|
||||
- name: Update Translation |
|
||||
run: ./.ci/scripts/transifex/docker.sh |
|
||||
env: |
|
||||
TX_TOKEN: ${{ secrets.TRANSIFEX_API_TOKEN }} |
|
||||
|
|
||||
reuse: |
|
||||
runs-on: ubuntu-latest |
|
||||
if: ${{ github.repository == 'yuzu-emu/yuzu' }} |
|
||||
steps: |
|
||||
- uses: actions/checkout@v3 |
|
||||
- uses: fsfe/reuse-action@v1 |
|
||||
@ -1,17 +0,0 @@ |
|||||
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project |
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later |
|
||||
# GitHub Action to automate the identification of common misspellings in text files. |
|
||||
# https://github.com/codespell-project/actions-codespell |
|
||||
# https://github.com/codespell-project/codespell |
|
||||
name: codespell |
|
||||
on: pull_request |
|
||||
permissions: {} |
|
||||
jobs: |
|
||||
codespell: |
|
||||
name: Check for spelling errors |
|
||||
runs-on: ubuntu-latest |
|
||||
steps: |
|
||||
- uses: actions/checkout@v3 |
|
||||
with: |
|
||||
persist-credentials: false |
|
||||
- uses: codespell-project/actions-codespell@master |
|
||||
@ -1,192 +0,0 @@ |
|||||
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project |
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later |
|
||||
|
|
||||
name: 'yuzu verify' |
|
||||
|
|
||||
on: |
|
||||
pull_request: |
|
||||
branches: [ master ] |
|
||||
env: |
|
||||
PR_NUMBER: pr${{ github.event.number }} |
|
||||
|
|
||||
jobs: |
|
||||
format: |
|
||||
name: 'verify format' |
|
||||
runs-on: ubuntu-latest |
|
||||
steps: |
|
||||
- uses: actions/checkout@v3 |
|
||||
with: |
|
||||
submodules: false |
|
||||
- name: set up JDK 17 |
|
||||
uses: actions/setup-java@v3 |
|
||||
with: |
|
||||
java-version: '17' |
|
||||
distribution: 'temurin' |
|
||||
- name: 'Verify Formatting' |
|
||||
run: bash -ex ./.ci/scripts/format/script.sh |
|
||||
build: |
|
||||
name: 'test build' |
|
||||
needs: format |
|
||||
runs-on: ubuntu-latest |
|
||||
strategy: |
|
||||
fail-fast: false |
|
||||
matrix: |
|
||||
include: |
|
||||
- type: clang |
|
||||
image: linux-fresh |
|
||||
- type: linux |
|
||||
image: linux-fresh |
|
||||
- type: windows |
|
||||
image: linux-mingw |
|
||||
container: |
|
||||
image: yuzuemu/build-environments:${{ matrix.image }} |
|
||||
options: -u 1001 |
|
||||
steps: |
|
||||
- uses: actions/checkout@v3 |
|
||||
with: |
|
||||
submodules: recursive |
|
||||
fetch-depth: 0 |
|
||||
- name: Set up cache |
|
||||
uses: actions/cache@v3 |
|
||||
id: ccache-restore |
|
||||
with: |
|
||||
path: ~/.ccache |
|
||||
key: ${{ runner.os }}-${{ matrix.type }}-${{ github.sha }} |
|
||||
restore-keys: | |
|
||||
${{ runner.os }}-${{ matrix.type }}- |
|
||||
- name: Create ccache directory |
|
||||
if: steps.ccache-restore.outputs.cache-hit != 'true' |
|
||||
run: mkdir -p ~/.ccache |
|
||||
- name: Build |
|
||||
run: ./.ci/scripts/${{ matrix.type }}/docker.sh |
|
||||
env: |
|
||||
ENABLE_COMPATIBILITY_REPORTING: "ON" |
|
||||
- name: Pack |
|
||||
run: ./.ci/scripts/${{ matrix.type }}/upload.sh |
|
||||
env: |
|
||||
NO_SOURCE_PACK: "YES" |
|
||||
- name: Upload |
|
||||
uses: actions/upload-artifact@v3 |
|
||||
with: |
|
||||
name: ${{ matrix.type }} |
|
||||
path: artifacts/ |
|
||||
build-mac: |
|
||||
name: 'test build (macos)' |
|
||||
needs: format |
|
||||
runs-on: macos-14 |
|
||||
steps: |
|
||||
- uses: actions/checkout@v3 |
|
||||
with: |
|
||||
submodules: recursive |
|
||||
fetch-depth: 0 |
|
||||
- name: Install dependencies |
|
||||
run: | |
|
||||
brew install autoconf automake boost ccache ffmpeg fmt glslang hidapi libtool libusb lz4 ninja nlohmann-json openssl pkg-config qt@5 sdl2 speexdsp zlib zlib zstd |
|
||||
- name: Build |
|
||||
run: | |
|
||||
mkdir build |
|
||||
cd build |
|
||||
export Qt5_DIR="$(brew --prefix qt@5)/lib/cmake" |
|
||||
cmake .. -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DYUZU_USE_BUNDLED_VCPKG=OFF -DYUZU_TESTS=OFF -DENABLE_WEB_SERVICE=OFF -DENABLE_LIBUSB=OFF |
|
||||
ninja |
|
||||
build-msvc: |
|
||||
name: 'test build (windows, msvc)' |
|
||||
needs: format |
|
||||
runs-on: windows-2022 |
|
||||
steps: |
|
||||
- uses: actions/checkout@v3 |
|
||||
with: |
|
||||
submodules: recursive |
|
||||
fetch-depth: 0 |
|
||||
- name: Set up cache |
|
||||
uses: actions/cache@v3 |
|
||||
with: |
|
||||
path: ~/.buildcache |
|
||||
key: ${{ runner.os }}-msvc-${{ github.sha }} |
|
||||
restore-keys: | |
|
||||
${{ runner.os }}-msvc- |
|
||||
- name: Install dependencies |
|
||||
shell: pwsh |
|
||||
run: | |
|
||||
$ErrorActionPreference = "Stop" |
|
||||
$BuildCacheVer = "v0.28.4" |
|
||||
$File = "buildcache-windows.zip" |
|
||||
$Uri = "https://github.com/mbitsnbites/buildcache/releases/download/$BuildCacheVer/$File" |
|
||||
$WebClient = New-Object System.Net.WebClient |
|
||||
$WebClient.DownloadFile($Uri, $File) |
|
||||
7z x $File |
|
||||
$CurrentDir = Convert-Path . |
|
||||
echo "$CurrentDir/buildcache/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append |
|
||||
- name: Install Vulkan SDK |
|
||||
shell: pwsh |
|
||||
run: .\.ci\scripts\windows\install-vulkan-sdk.ps1 |
|
||||
- name: Set up MSVC |
|
||||
uses: ilammy/msvc-dev-cmd@v1 |
|
||||
- name: Configure |
|
||||
env: |
|
||||
CC: cl.exe |
|
||||
CXX: cl.exe |
|
||||
run: | |
|
||||
glslangValidator --version |
|
||||
mkdir build |
|
||||
cmake . -B build -GNinja -DCMAKE_TOOLCHAIN_FILE="CMakeModules/MSVCCache.cmake" -DUSE_CCACHE=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=ON -DUSE_DISCORD_PRESENCE=ON -DENABLE_QT_TRANSLATION=ON -DCMAKE_BUILD_TYPE=Release -DGIT_BRANCH=pr-verify -DYUZU_CRASH_DUMPS=ON |
|
||||
- name: Build |
|
||||
run: cmake --build build |
|
||||
- name: Cache Summary |
|
||||
run: buildcache -s |
|
||||
- name: Pack |
|
||||
shell: pwsh |
|
||||
run: .\.ci\scripts\windows\upload.ps1 |
|
||||
- name: Upload |
|
||||
uses: actions/upload-artifact@v3 |
|
||||
with: |
|
||||
name: msvc |
|
||||
path: artifacts/ |
|
||||
- name: Upload EXE |
|
||||
uses: actions/upload-artifact@v3 |
|
||||
with: |
|
||||
name: ${{ env.INDIVIDUAL_EXE }} |
|
||||
path: ${{ env.INDIVIDUAL_EXE }} |
|
||||
android: |
|
||||
runs-on: ubuntu-latest |
|
||||
needs: format |
|
||||
steps: |
|
||||
- uses: actions/checkout@v3 |
|
||||
with: |
|
||||
submodules: recursive |
|
||||
fetch-depth: 0 |
|
||||
- name: set up JDK 17 |
|
||||
uses: actions/setup-java@v3 |
|
||||
with: |
|
||||
java-version: '17' |
|
||||
distribution: 'temurin' |
|
||||
- name: Set up cache |
|
||||
uses: actions/cache@v3 |
|
||||
with: |
|
||||
path: | |
|
||||
~/.gradle/caches |
|
||||
~/.gradle/wrapper |
|
||||
~/.ccache |
|
||||
key: ${{ runner.os }}-android-${{ github.sha }} |
|
||||
restore-keys: | |
|
||||
${{ runner.os }}-android- |
|
||||
- name: Query tag name |
|
||||
uses: olegtarasov/get-tag@v2.1.2 |
|
||||
id: tagName |
|
||||
- name: Install dependencies |
|
||||
run: | |
|
||||
sudo apt-get update |
|
||||
sudo apt-get install -y ccache apksigner glslang-dev glslang-tools |
|
||||
- name: Build |
|
||||
run: ./.ci/scripts/android/build.sh |
|
||||
- name: Copy and sign artifacts |
|
||||
env: |
|
||||
ANDROID_KEYSTORE_B64: ${{ secrets.ANDROID_KEYSTORE_B64 }} |
|
||||
ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }} |
|
||||
ANDROID_KEYSTORE_PASS: ${{ secrets.ANDROID_KEYSTORE_PASS }} |
|
||||
run: ./.ci/scripts/android/upload.sh |
|
||||
- name: Upload |
|
||||
uses: actions/upload-artifact@v3 |
|
||||
with: |
|
||||
name: android |
|
||||
path: artifacts/ |
|
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue