mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-11-08 02:53:25 -08:00
-g is required so the CI symbol upload has DWARF to send, but it was left in the shipped binaries too: the Linux Release client is 563 MiB, 552 MiB of it debug info, and every distribution channel pays for that. Keep the build tree unchanged (CI uploads symbols from build/) and strip only the packaged copy. A CPack pre-build script extracts each ELF's debug info to COCKATRICE_DEBUG_SYMBOL_DIR and then runs `strip --strip-debug --strip-unneeded`. .eh_frame is allocatable and survives, so unwinding is unaffected, and the build ID is identical in the stripped binary and the sidecar. Measured on a local Release build (GCC -O2 -g, WITH_CRASH_REPORTING=ON), bytes: binary build tree packaged before packaged after .debug sidecar cockatrice 590,722,560 590,722,560 28,086,480 579,623,576 oracle 53,432,608 53,432,608 1,649,888 52,075,344 tar.gz of both trees: 289,964,521 -> 19,018,058 (~15x smaller). Only ELF (Linux/BSD) is handled: Windows already links /DEBUG with separate PDBs, and macOS extracts a dSYM from the bundle. Opt-out via COCKATRICE_SPLIT_DEBUG_SYMBOLS; skipped with a warning when objcopy/strip are missing. CPACK_PRE_BUILD_SCRIPTS (not CPACK_INSTALL_SCRIPTS, which runs before staging) invokes it, and the script refuses to run unless CPACK_TEMPORARY_DIRECTORY is a real CPack staging tree so a missing variable can never turn its glob into a filesystem-wide walk. |
||
|---|---|---|
| .. | ||
| pch | ||
| CMakeDMGSetup.script | ||
| Coverage.cmake | ||
| CrashReporting.cmake | ||
| createversionfile.cmake | ||
| dmgBackground.tif | ||
| FindLibexecinfo.cmake | ||
| FindQtRuntime.cmake | ||
| FindVCredistRuntime.cmake | ||
| getversion.cmake | ||
| gtest-CMakeLists.txt.in | ||
| headerimage.bmp | ||
| Info.plist | ||
| launch-c.in | ||
| launch-cxx.in | ||
| leftimage.bmp | ||
| NSIS.definitions.nsh.in | ||
| NSIS.template.in | ||
| Sanitizers.cmake | ||
| SignMacApplications.cmake | ||
| SplitDebugSymbols.cmake.in | ||