This commit is contained in:
BruebachL 2026-11-05 07:50:09 +01:00 • committed by GitHub
commit 50aedb243b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 526 additions and 66 deletions

View file

@ -191,7 +191,14 @@ if [[ $USE_CCACHE ]]; then
fi
fi
if [[ $PACKAGE_TYPE ]]; then
flags+=("-DCPACK_GENERATOR=$PACKAGE_TYPE")
if [[ $PACKAGE_TYPE == NSIS || $PACKAGE_TYPE == InnoSetup ]]; then
# The Windows installer is chosen by a CMake option, and that option then adds its CPack
# generator itself. Passing CPACK_GENERATOR as well would list both installers and build
# both in one run.
flags+=("-DCOCKATRICE_WIN_INSTALLER=$PACKAGE_TYPE")
else
flags+=("-DCPACK_GENERATOR=$PACKAGE_TYPE")
fi
fi
if [[ $USE_VCPKG ]]; then
flags+=("-DUSE_VCPKG=1")
@ -741,20 +748,22 @@ if [[ $MAKE_PACKAGE ]]; then
fi
# 7-Zip writes CRLF on Windows, so the \r has to come off before any
# whole-line comparison below. Normalize separators to /, and strip the
# install-root prefixes an NSIS listing may carry, so the entries can be
# compared as exact relative paths. -xF keeps a '.' in a DLL name from
# being a wildcard; -i because that is how the installed tree behaves -
# the uninstaller clears both $INSTDIR\plugins and $INSTDIR\Plugins.
# The archive side and the manifest side have to agree on line endings.
# CMake writes required-runtime.txt with the platform's line ending and
# 7-Zip writes CRLF on Windows, so a trailing \r survives on $entry and
# defeats the whole-line match - every entry then reads as missing even
# though the listing holds it verbatim.
# install-root prefixes a listing may carry - $INSTDIR/$OUTDIR/$PLUGINSDIR
# from NSIS, {app} from Inno Setup - so the entries can be compared as exact
# relative paths. -xF keeps a '.' in a DLL name from being a wildcard; -i
# because that is how the installed tree behaves - the uninstaller clears
# both $INSTDIR\plugins and $INSTDIR\Plugins. The archive side and the
# manifest side have to agree on line endings. CMake writes
# required-runtime.txt with the platform's line ending and 7-Zip writes CRLF
# on Windows, so a trailing \r survives on $entry and defeats the whole-line
# match - every entry then reads as missing even though the listing holds it
# verbatim.
# [$] rather than \$ so the literal dollar is a bracket expression and the
# linter does not read these as unexpanded shell variables (SC2016).
# linter does not read these as unexpanded shell variables (SC2016). The
# same goes for the braces of Inno Setup's {app} prefix.
installer_paths="$("$seven_zip" l -slt "$package" | tr -d '\r' |
sed -n 's/^Path = //p' |
sed -e 's|\\|/|g' -e 's|^[$]INSTDIR/||' -e 's|^[$]OUTDIR/||' -e 's|^[$]PLUGINSDIR/||' -e 's|^\./||' -e 's|^/||')"
sed -e 's|\\|/|g' -e 's|^[$]INSTDIR/||' -e 's|^[$]OUTDIR/||' -e 's|^[$]PLUGINSDIR/||' -e 's|^[{]app[}]/||' -e 's|^\./||' -e 's|^/||')"
manifest="$(tr -d '\r' <required-runtime.txt)"
missing=""
checked=0