Upstream libuv supports passing file descriptors >= 3 to child processes
via `STARTUPINFOW` members reserved by the MSVC C run-time. However,
some programs use `GetStartupInfoW` to initialize a `STARTUPINFOW`
structure to pass to `CreateProcessW` without clearing the reserved
members. If we launch such programs with non-zero values in the
reserved members, the MSVC C run-time in *their* children may not
correctly associate the stdin/stdout/stderr streams' file descriptors
with the corresponding `HANDLE`s.
Patch our copy of libuv to avoid using the reserved members. This
restores `execute_process` support for the above-described programs as
we had prior to commit 5420639a8d (cmExecuteProcessCommand: Replace
cmsysProcess with cmUVProcessChain, 2023-06-01, v3.28.0-rc1~138^2~8).
It also enables support for such programs when launched by `ctest`.
Fixes: #25996Fixes: #25889
f54ec4e7f9 libuv: macos: use posix poll instead of kqueue
af330faaf1 libuv: darwin: group kqueue-specific definitions together
0db6402687 libuv: process: de-duplicate conditions for using kqueue
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9392
Since commit 5420639a8d (cmExecuteProcessCommand: Replace cmsysProcess
with cmUVProcessChain, 2023-06-01, v3.28.0-rc1~138^2~8) we've observed
spurious process hangs in `uv__io_poll` waiting for `kqueue` to deliver
events on macOS.
Issue: #25839
If the PATH modification choice has not been saved persistently by an
existing installation of CMake, default to modifying the system PATH
environment variable to make our command-line tools available for all
users. This is a common expectation.
Fixes: #21465
Our Windows installer provides an interactive dialog to choose whether
the PATH should be modified. It may also be specified on the `msiexec`
command-line as an `ADD_CMAKE_TO_PATH={0,1}` property. Save the choice
persistently in the Windows Registry and use the same choice by default
in future installations.
Issue: #21465
Add explicit support for passing a `ADD_CMAKE_TO_PATH={0,1}` property to
`msiexec` command-line installations to control the checkbox. Also
preserve compatibility with the old `ADD_CMAKE_TO_PATH={None,System}`
property, which previously controlled the radio button group, by mapping
the values to the checkbox.
Remove the "Add CMake to the system PATH for the current user" option.
It actually added CMake to the installing user's PATH, not the system
PATH, even though CMake is installed to a system location.
Also revise the wording of the desktop shortcut checkbox to match
the style of the PATH checkbox wording.
Issue: #21465
Since libuv commit `83efa3dd71` (Reland "macos: use posix_spawn instead
of fork", 2022-03-02, v1.44.0~10), `uv_spawn` on macOS < 10.8
has been observed to cause kernel panics and/or resource exhaustion.
This became particularly noticeable in CMake since commit 5420639a8d
(cmExecuteProcessCommand: Replace cmsysProcess with cmUVProcessChain,
2023-06-01, v3.28.0-rc1~138^2~8). Prefer `fork` over `posix_spawn` in
libuv when targeting macOS < 10.8.
Fixes: #25414Fixes: #25818
Inspired-by: Ken Cunningham <kencu@macports.org>
b024732b19 ci: Explicitly enable CPackWiXGenerator test only in specific jobs
bb261818f4 ci: Explicitly build WiX custom action in packaging jobs
ac5aa7f1bf ci: Explicitly specify WiX architecture in packaging jobs
c1616c98bf ci: Move job settings away from unrelated comment
beecda4ddd Utilities/Release: Replace tabs with spaces in WiX input files
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9330
Our vendored zstd does not include the assembly language file from
upstream (huf_decompress_amd64.S), so it's fine to completely disable
assembly language.
Fixes: #25744
e14300816b librhash: aligned_alloc is not available with glibc < 2.15
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !9255
077a1d5769 libuv: win/spawn: optionally run executable paths with no file extension
f02ac51150 libuv: Revert "win/spawn: run executables with no file extension"
58a271e60b cmUVProcessChain: Implement no-extension-on-Windows support with libuv 1.48
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9238
077a1d5769 libuv: win/spawn: optionally run executable paths with no file extension
f02ac51150 libuv: Revert "win/spawn: run executables with no file extension"
58a271e60b cmUVProcessChain: Implement no-extension-on-Windows support with libuv 1.48
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9238
Backport libuv commit `3f7191e5` (win/spawn: optionally run executable
paths with no file extension, 2024-02-05, v1.48.0~8) to add the
`UV_PROCESS_WINDOWS_FILE_PATH_EXACT_NAME` option we now use.
Issue: #25450
This reverts commit fc6231bee5 (libuv: win/spawn: run executables with
no file extension, 2023-12-04, v3.28.0~9^2) to make room for the
corresponding fix from upstream libuv 1.48.
Record this as a merge from the last-imported upstream libuv snapshot
branch so that future `git blame` points to the upstream for the
original code instead of this commit.
Issue: #25450