From 00b0938f1070bc817bbef1b30d4567dacd29c07e Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Sun, 8 Oct 2023 14:51:29 -0400 Subject: [PATCH 1/2] ci/linux: Upload separated debug symbols Creates a new archive with a debug suffix that contains the debug symbols from compiling yuzu for mainline. The yuzu executable also gets a GNU debug link to the symbols file. ci/linux: Compile with debug symbols and upload separately Currently only uploads for yuzu but yuzu-cmd or other future executables can be added to the for-loop's parameters. --- .ci/scripts/common/pre-upload.sh | 2 +- .ci/scripts/linux/docker.sh | 15 ++++++++++++++- .ci/scripts/linux/upload.sh | 5 +++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/.ci/scripts/common/pre-upload.sh b/.ci/scripts/common/pre-upload.sh index 705362a3c0..3583f98402 100644 --- a/.ci/scripts/common/pre-upload.sh +++ b/.ci/scripts/common/pre-upload.sh @@ -5,6 +5,6 @@ GITDATE="`git show -s --date=short --format='%ad' | sed 's/-//g'`" GITREV="`git show -s --format='%h'`" -ARTIFACTS_DIR="artifacts" +ARTIFACTS_DIR="$PWD/artifacts" mkdir -p "${ARTIFACTS_DIR}/" diff --git a/.ci/scripts/linux/docker.sh b/.ci/scripts/linux/docker.sh index e5d83d4b90..202c07577b 100755 --- a/.ci/scripts/linux/docker.sh +++ b/.ci/scripts/linux/docker.sh @@ -11,7 +11,7 @@ ccache -s mkdir build || true && cd build cmake .. \ -DBoost_USE_STATIC_LIBS=ON \ - -DCMAKE_BUILD_TYPE=Release \ + -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 \ @@ -31,6 +31,19 @@ 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 -type f bin/ -not -regex '.*.debug' -exec strip -g {} ';' + DESTDIR="$PWD/AppDir" ninja install rm -vf AppDir/usr/bin/yuzu-cmd AppDir/usr/bin/yuzu-tester diff --git a/.ci/scripts/linux/upload.sh b/.ci/scripts/linux/upload.sh index e0f336427b..fbb2d9c1b0 100755 --- a/.ci/scripts/linux/upload.sh +++ b/.ci/scripts/linux/upload.sh @@ -59,4 +59,9 @@ if [ "${RELEASE_NAME}" = "mainline" ] || [ "${RELEASE_NAME}" = "early-access" ]; 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 From c206a04747b5e85e2c8ca1dac10be72d119e6a10 Mon Sep 17 00:00:00 2001 From: toast2903 <22451773+lat9nq@users.noreply.github.com> Date: Tue, 10 Oct 2023 13:50:50 -0400 Subject: [PATCH 2/2] ci/linux: Fix find parameter order Co-authored-by: liamwhite --- .ci/scripts/linux/docker.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/scripts/linux/docker.sh b/.ci/scripts/linux/docker.sh index 202c07577b..a16577b27c 100755 --- a/.ci/scripts/linux/docker.sh +++ b/.ci/scripts/linux/docker.sh @@ -42,7 +42,7 @@ for EXE in yuzu; do mv $EXE_PATH.out $EXE_PATH done # Strip debug symbols from all executables -find -type f bin/ -not -regex '.*.debug' -exec strip -g {} ';' +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