mirror of
https://github.com/yuzu-emu/yuzu.git
synced 2024-07-04 23:31:19 +01:00
Merge pull request #8486 from liushuyu/github-actions-verify
CI: Use GitHub Actions to validate pull requests
This commit is contained in:
commit
770611fdf3
16 changed files with 174 additions and 24 deletions
|
@ -3,14 +3,12 @@
|
||||||
# Exit on error, rather than continuing with the rest of the script.
|
# Exit on error, rather than continuing with the rest of the script.
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
cd /yuzu
|
|
||||||
|
|
||||||
ccache -s
|
ccache -s
|
||||||
|
|
||||||
mkdir build || true && cd build
|
mkdir build || true && cd build
|
||||||
cmake .. -DDISPLAY_VERSION=$1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/lib/ccache/clang -DCMAKE_CXX_COMPILER=/usr/lib/ccache/clang++ -DYUZU_ENABLE_COMPATIBILITY_REPORTING=${ENABLE_COMPATIBILITY_REPORTING:-"OFF"} -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DUSE_DISCORD_PRESENCE=ON -DENABLE_QT_TRANSLATION=ON -DCMAKE_INSTALL_PREFIX="/usr"
|
cmake .. -GNinja -DDISPLAY_VERSION=$1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=/usr/lib/ccache/clang -DCMAKE_CXX_COMPILER=/usr/lib/ccache/clang++ -DYUZU_ENABLE_COMPATIBILITY_REPORTING=${ENABLE_COMPATIBILITY_REPORTING:-"OFF"} -DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON -DUSE_DISCORD_PRESENCE=ON -DENABLE_QT_TRANSLATION=ON -DCMAKE_INSTALL_PREFIX="/usr"
|
||||||
|
|
||||||
make -j$(nproc)
|
ninja
|
||||||
|
|
||||||
ccache -s
|
ccache -s
|
||||||
|
|
||||||
|
|
|
@ -4,5 +4,5 @@ mkdir -p "ccache" || true
|
||||||
chmod a+x ./.ci/scripts/clang/docker.sh
|
chmod a+x ./.ci/scripts/clang/docker.sh
|
||||||
# the UID for the container yuzu user is 1027
|
# the UID for the container yuzu user is 1027
|
||||||
sudo chown -R 1027 ./
|
sudo chown -R 1027 ./
|
||||||
docker run -e ENABLE_COMPATIBILITY_REPORTING -e CCACHE_DIR=/yuzu/ccache -v $(pwd):/yuzu yuzuemu/build-environments:linux-fresh /bin/bash /yuzu/.ci/scripts/clang/docker.sh $1
|
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 ./
|
sudo chown -R $UID ./
|
||||||
|
|
0
.ci/scripts/clang/upload.sh
Normal file → Executable file
0
.ci/scripts/clang/upload.sh
Normal file → Executable file
|
@ -4,8 +4,10 @@
|
||||||
cp license.txt "$DIR_NAME"
|
cp license.txt "$DIR_NAME"
|
||||||
cp README.md "$DIR_NAME"
|
cp README.md "$DIR_NAME"
|
||||||
|
|
||||||
|
if [[ -z "${NO_SOURCE_PACK}" ]]; then
|
||||||
tar -cJvf "${REV_NAME}-source.tar.xz" src externals CMakeLists.txt README.md license.txt
|
tar -cJvf "${REV_NAME}-source.tar.xz" src externals CMakeLists.txt README.md license.txt
|
||||||
cp "${REV_NAME}-source.tar.xz" "$DIR_NAME"
|
cp -v "${REV_NAME}-source.tar.xz" "$DIR_NAME"
|
||||||
|
fi
|
||||||
|
|
||||||
tar $COMPRESSION_FLAGS "$ARCHIVE_NAME" "$DIR_NAME"
|
tar $COMPRESSION_FLAGS "$ARCHIVE_NAME" "$DIR_NAME"
|
||||||
|
|
||||||
|
|
|
@ -3,5 +3,5 @@
|
||||||
chmod a+x ./.ci/scripts/format/docker.sh
|
chmod a+x ./.ci/scripts/format/docker.sh
|
||||||
# the UID for the container yuzu user is 1027
|
# the UID for the container yuzu user is 1027
|
||||||
sudo chown -R 1027 ./
|
sudo chown -R 1027 ./
|
||||||
docker run -v $(pwd):/yuzu yuzuemu/build-environments:linux-clang-format /bin/bash -ex /yuzu/.ci/scripts/format/docker.sh
|
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 ./
|
sudo chown -R $UID ./
|
||||||
|
|
|
@ -3,8 +3,6 @@
|
||||||
# Exit on error, rather than continuing with the rest of the script.
|
# Exit on error, rather than continuing with the rest of the script.
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
cd /yuzu
|
|
||||||
|
|
||||||
ccache -s
|
ccache -s
|
||||||
|
|
||||||
mkdir build || true && cd build
|
mkdir build || true && cd build
|
||||||
|
@ -19,15 +17,16 @@ cmake .. \
|
||||||
-DENABLE_QT_TRANSLATION=ON \
|
-DENABLE_QT_TRANSLATION=ON \
|
||||||
-DUSE_DISCORD_PRESENCE=ON \
|
-DUSE_DISCORD_PRESENCE=ON \
|
||||||
-DYUZU_ENABLE_COMPATIBILITY_REPORTING=${ENABLE_COMPATIBILITY_REPORTING:-"OFF"} \
|
-DYUZU_ENABLE_COMPATIBILITY_REPORTING=${ENABLE_COMPATIBILITY_REPORTING:-"OFF"} \
|
||||||
-DYUZU_USE_BUNDLED_FFMPEG=ON
|
-DYUZU_USE_BUNDLED_FFMPEG=ON \
|
||||||
|
-GNinja
|
||||||
|
|
||||||
make -j$(nproc)
|
ninja
|
||||||
|
|
||||||
ccache -s
|
ccache -s
|
||||||
|
|
||||||
ctest -VV -C Release
|
ctest -VV -C Release
|
||||||
|
|
||||||
make install DESTDIR=AppDir
|
DESTDIR="$PWD/AppDir" ninja install
|
||||||
rm -vf AppDir/usr/bin/yuzu-cmd AppDir/usr/bin/yuzu-tester
|
rm -vf AppDir/usr/bin/yuzu-cmd AppDir/usr/bin/yuzu-tester
|
||||||
|
|
||||||
# Download tools needed to build an AppImage
|
# Download tools needed to build an AppImage
|
||||||
|
|
|
@ -4,5 +4,5 @@ mkdir -p "ccache" || true
|
||||||
chmod a+x ./.ci/scripts/linux/docker.sh
|
chmod a+x ./.ci/scripts/linux/docker.sh
|
||||||
# the UID for the container yuzu user is 1027
|
# the UID for the container yuzu user is 1027
|
||||||
sudo chown -R 1027 ./
|
sudo chown -R 1027 ./
|
||||||
docker run -e ENABLE_COMPATIBILITY_REPORTING -e CCACHE_DIR=/yuzu/ccache -v $(pwd):/yuzu yuzuemu/build-environments:linux-fresh /bin/bash /yuzu/.ci/scripts/linux/docker.sh $1
|
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/linux/docker.sh "$1"
|
||||||
sudo chown -R $UID ./
|
sudo chown -R $UID ./
|
||||||
|
|
5
.ci/scripts/linux/upload.sh
Normal file → Executable file
5
.ci/scripts/linux/upload.sh
Normal file → Executable file
|
@ -24,6 +24,11 @@ cd build
|
||||||
wget -nc https://github.com/yuzu-emu/ext-linux-bin/raw/main/appimage/appimagetool-x86_64.AppImage
|
wget -nc https://github.com/yuzu-emu/ext-linux-bin/raw/main/appimage/appimagetool-x86_64.AppImage
|
||||||
chmod 755 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
|
||||||
|
|
||||||
if [ "${RELEASE_NAME}" = "mainline" ]; then
|
if [ "${RELEASE_NAME}" = "mainline" ]; then
|
||||||
# Generate update information if releasing to mainline
|
# 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}"
|
./appimagetool-x86_64.AppImage -u "gh-releases-zsync|yuzu-emu|yuzu-${RELEASE_NAME}|latest|yuzu-*.AppImage.zsync" AppDir "${APPIMAGE_NAME}"
|
||||||
|
|
|
@ -2,19 +2,23 @@
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
cd /yuzu
|
#cd /yuzu
|
||||||
|
|
||||||
ccache -s
|
ccache -sv
|
||||||
|
|
||||||
mkdir build || true && cd build
|
mkdir -p "$HOME/.conan/profiles"
|
||||||
LDFLAGS="-fuse-ld=lld"
|
wget -c "https://github.com/yuzu-emu/build-environments/raw/master/linux-mingw/default" -O "$HOME/.conan/profiles/default"
|
||||||
|
wget -c "https://github.com/yuzu-emu/build-environments/raw/master/linux-mingw/settings.yml" -O "$HOME/.conan/settings.yml"
|
||||||
|
|
||||||
|
mkdir -p build && cd build
|
||||||
|
export LDFLAGS="-fuse-ld=lld"
|
||||||
# -femulated-tls required due to an incompatibility between GCC and Clang
|
# -femulated-tls required due to an incompatibility between GCC and Clang
|
||||||
# TODO(lat9nq): If this is widespread, we probably need to add this to CMakeLists where appropriate
|
# TODO(lat9nq): If this is widespread, we probably need to add this to CMakeLists where appropriate
|
||||||
|
export CXXFLAGS="-femulated-tls"
|
||||||
cmake .. \
|
cmake .. \
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
-DCMAKE_CXX_FLAGS="-femulated-tls" \
|
-DCMAKE_TOOLCHAIN_FILE="${PWD}/../CMakeModules/MinGWClangCross.cmake" \
|
||||||
-DCMAKE_TOOLCHAIN_FILE="$(pwd)/../CMakeModules/MinGWClangCross.cmake" \
|
-DDISPLAY_VERSION="$1" \
|
||||||
-DDISPLAY_VERSION=$1 \
|
|
||||||
-DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON \
|
-DENABLE_COMPATIBILITY_LIST_DOWNLOAD=ON \
|
||||||
-DENABLE_QT_TRANSLATION=ON \
|
-DENABLE_QT_TRANSLATION=ON \
|
||||||
-DUSE_CCACHE=ON \
|
-DUSE_CCACHE=ON \
|
||||||
|
@ -23,7 +27,7 @@ cmake .. \
|
||||||
-GNinja
|
-GNinja
|
||||||
ninja yuzu yuzu-cmd
|
ninja yuzu yuzu-cmd
|
||||||
|
|
||||||
ccache -s
|
ccache -sv
|
||||||
|
|
||||||
echo "Tests skipped"
|
echo "Tests skipped"
|
||||||
#ctest -VV -C Release
|
#ctest -VV -C Release
|
||||||
|
|
|
@ -4,5 +4,5 @@ mkdir -p "ccache" || true
|
||||||
chmod a+x ./.ci/scripts/windows/docker.sh
|
chmod a+x ./.ci/scripts/windows/docker.sh
|
||||||
# the UID for the container yuzu user is 1027
|
# the UID for the container yuzu user is 1027
|
||||||
sudo chown -R 1027 ./
|
sudo chown -R 1027 ./
|
||||||
docker run -e CCACHE_DIR=/yuzu/ccache -v $(pwd):/yuzu yuzuemu/build-environments:linux-mingw /bin/bash -ex /yuzu/.ci/scripts/windows/docker.sh $1
|
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 ./
|
sudo chown -R $UID ./
|
||||||
|
|
0
.ci/scripts/windows/upload.sh
Normal file → Executable file
0
.ci/scripts/windows/upload.sh
Normal file → Executable file
115
.github/workflows/verify.yml
vendored
Normal file
115
.github/workflows/verify.yml
vendored
Normal file
|
@ -0,0 +1,115 @@
|
||||||
|
name: 'yuzu verify'
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches: [ master ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
format:
|
||||||
|
name: 'verify format'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: yuzuemu/build-environments:linux-clang-format
|
||||||
|
options: -u 1001
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: false
|
||||||
|
- 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@v2
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
fetch-depth: 0
|
||||||
|
- name: Set up cache
|
||||||
|
uses: actions/cache@v2
|
||||||
|
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-msvc:
|
||||||
|
name: 'test build (windows, msvc)'
|
||||||
|
needs: format
|
||||||
|
runs-on: windows-2019
|
||||||
|
steps:
|
||||||
|
- name: Set up cache
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: ~/.buildcache
|
||||||
|
key: ${{ runner.os }}-msvc-${{ github.sha }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-msvc-
|
||||||
|
- name: Install dependencies
|
||||||
|
# due to how chocolatey works, only cmd.exe is supported here
|
||||||
|
shell: cmd
|
||||||
|
run: |
|
||||||
|
choco install vulkan-sdk wget
|
||||||
|
python -m pip install --upgrade pip conan
|
||||||
|
call refreshenv
|
||||||
|
wget https://github.com/mbitsnbites/buildcache/releases/download/v0.27.6/buildcache-windows.zip
|
||||||
|
7z x buildcache-windows.zip
|
||||||
|
copy buildcache\bin\buildcache.exe C:\ProgramData\chocolatey\bin
|
||||||
|
rmdir buildcache
|
||||||
|
echo %PATH% >> %GITHUB_PATH%
|
||||||
|
- name: Set up MSVC
|
||||||
|
uses: ilammy/msvc-dev-cmd@v1
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
fetch-depth: 0
|
||||||
|
- 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
|
||||||
|
- 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/
|
|
@ -627,6 +627,14 @@ add_definitions(-DBOOST_ERROR_CODE_HEADER_ONLY
|
||||||
-DBOOST_DATE_TIME_NO_LIB
|
-DBOOST_DATE_TIME_NO_LIB
|
||||||
-DBOOST_REGEX_NO_LIB
|
-DBOOST_REGEX_NO_LIB
|
||||||
)
|
)
|
||||||
|
# Adjustments for MSVC + Ninja
|
||||||
|
if (MSVC AND CMAKE_GENERATOR STREQUAL "Ninja")
|
||||||
|
add_compile_options(
|
||||||
|
/wd4711 # function 'function' selected for automatic inline expansion
|
||||||
|
/wd4464 # relative include path contains '..'
|
||||||
|
/wd4820 # 'identifier1': '4' bytes padding added after data member 'identifier2'
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
enable_testing()
|
enable_testing()
|
||||||
add_subdirectory(externals)
|
add_subdirectory(externals)
|
||||||
|
|
|
@ -2,5 +2,6 @@ function(copy_yuzu_FFmpeg_deps target_dir)
|
||||||
include(WindowsCopyFiles)
|
include(WindowsCopyFiles)
|
||||||
set(DLL_DEST "${CMAKE_BINARY_DIR}/bin/$<CONFIG>/")
|
set(DLL_DEST "${CMAKE_BINARY_DIR}/bin/$<CONFIG>/")
|
||||||
file(READ "${FFmpeg_PATH}/requirements.txt" FFmpeg_REQUIRED_DLLS)
|
file(READ "${FFmpeg_PATH}/requirements.txt" FFmpeg_REQUIRED_DLLS)
|
||||||
|
string(STRIP "${FFmpeg_REQUIRED_DLLS}" FFmpeg_REQUIRED_DLLS)
|
||||||
windows_copy_files(${target_dir} ${FFmpeg_DLL_DIR} ${DLL_DEST} ${FFmpeg_REQUIRED_DLLS})
|
windows_copy_files(${target_dir} ${FFmpeg_DLL_DIR} ${DLL_DEST} ${FFmpeg_REQUIRED_DLLS})
|
||||||
endfunction(copy_yuzu_FFmpeg_deps)
|
endfunction(copy_yuzu_FFmpeg_deps)
|
||||||
|
|
12
CMakeModules/MSVCCache.cmake
Normal file
12
CMakeModules/MSVCCache.cmake
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
# buildcache wrapper
|
||||||
|
OPTION(USE_CCACHE "Use buildcache for compilation" OFF)
|
||||||
|
IF(USE_CCACHE)
|
||||||
|
FIND_PROGRAM(CCACHE buildcache)
|
||||||
|
IF (CCACHE)
|
||||||
|
MESSAGE(STATUS "Using buildcache found in PATH")
|
||||||
|
SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE})
|
||||||
|
SET_PROPERTY(GLOBAL PROPERTY RULE_LAUNCH_LINK ${CCACHE})
|
||||||
|
ELSE(CCACHE)
|
||||||
|
MESSAGE(WARNING "USE_CCACHE enabled, but no buildcache executable found")
|
||||||
|
ENDIF(CCACHE)
|
||||||
|
ENDIF(USE_CCACHE)
|
|
@ -36,7 +36,6 @@ if (MSVC)
|
||||||
# /GT - Supports fiber safety for data allocated using static thread-local storage
|
# /GT - Supports fiber safety for data allocated using static thread-local storage
|
||||||
add_compile_options(
|
add_compile_options(
|
||||||
/MP
|
/MP
|
||||||
/Zi
|
|
||||||
/Zm200
|
/Zm200
|
||||||
/Zo
|
/Zo
|
||||||
/permissive-
|
/permissive-
|
||||||
|
@ -79,6 +78,13 @@ if (MSVC)
|
||||||
/we5245 # 'function': unreferenced function with internal linkage has been removed
|
/we5245 # 'function': unreferenced function with internal linkage has been removed
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (USE_CCACHE)
|
||||||
|
# when caching, we need to use /Z7 to downgrade debug info to use an older but more cachable format
|
||||||
|
add_compile_options(/Z7)
|
||||||
|
else()
|
||||||
|
add_compile_options(/Zi)
|
||||||
|
endif()
|
||||||
|
|
||||||
if (ARCHITECTURE_x86_64)
|
if (ARCHITECTURE_x86_64)
|
||||||
add_compile_options(/QIntel-jcc-erratum)
|
add_compile_options(/QIntel-jcc-erratum)
|
||||||
endif()
|
endif()
|
||||||
|
|
Loading…
Reference in a new issue