From fb0b4c7e278bbeb275458f2c2dfd5c2ca1576e20 Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Tue, 9 Feb 2021 21:17:53 -0500 Subject: [PATCH] ci: Add clang build scripts Adds scripts that instruct CI to build yuzu with the installed Clang compiler on yuzuemu/build-environments:linux-fresh. These scripts are based on the .ci/scripts/linux scripts, minus AppImage building since that isn't necessary. Re-uses linux-fresh since that container has Clang 12 installed. --- .ci/scripts/clang/docker.sh | 18 ++++++++++++++++++ .ci/scripts/clang/exec.sh | 8 ++++++++ .ci/scripts/clang/upload.sh | 20 ++++++++++++++++++++ .ci/templates/build-standard.yml | 5 ++++- 4 files changed, 50 insertions(+), 1 deletion(-) create mode 100755 .ci/scripts/clang/docker.sh create mode 100644 .ci/scripts/clang/exec.sh create mode 100644 .ci/scripts/clang/upload.sh diff --git a/.ci/scripts/clang/docker.sh b/.ci/scripts/clang/docker.sh new file mode 100755 index 000000000..885d74e97 --- /dev/null +++ b/.ci/scripts/clang/docker.sh @@ -0,0 +1,18 @@ +#!/bin/bash -ex + +# Exit on error, rather than continuing with the rest of the script. +set -e + +cd /yuzu + +ccache -s + +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" + +make -j$(nproc) + +ccache -s + +ctest -VV -C Release + diff --git a/.ci/scripts/clang/exec.sh b/.ci/scripts/clang/exec.sh new file mode 100644 index 000000000..e56cd4325 --- /dev/null +++ b/.ci/scripts/clang/exec.sh @@ -0,0 +1,8 @@ +#!/bin/bash -ex + +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 yuzuemu/build-environments:linux-fresh /bin/bash /yuzu/.ci/scripts/clang/docker.sh $1 +sudo chown -R $UID ./ diff --git a/.ci/scripts/clang/upload.sh b/.ci/scripts/clang/upload.sh new file mode 100644 index 000000000..fe4e6b2ac --- /dev/null +++ b/.ci/scripts/clang/upload.sh @@ -0,0 +1,20 @@ +#!/bin/bash -ex + +. .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 diff --git a/.ci/templates/build-standard.yml b/.ci/templates/build-standard.yml index 7422c8346..57d36f813 100644 --- a/.ci/templates/build-standard.yml +++ b/.ci/templates/build-standard.yml @@ -12,6 +12,9 @@ jobs: windows: BuildSuffix: 'windows-mingw' ScriptFolder: 'windows' + clang: + BuildSuffix: 'clang' + ScriptFolder: 'clang' linux: BuildSuffix: 'linux' ScriptFolder: 'linux' @@ -24,4 +27,4 @@ jobs: parameters: artifactSource: 'false' cache: $(parameters.cache) - version: $(parameters.version) \ No newline at end of file + version: $(parameters.version)