When the client disconnects we need to remove all events from our loop.
Prior to the introduction of the file monitor we only needed to remove
the client pipes. Now we need to remove the file monitor events too.
Without this the event loop may continue to block on file monitor
events. If one does eventually come in then the event handler may try
to report it to the disconnected client and crash because our internal
structures for writing to the client have been freed.
This addresses a failure of the `Server` test on some machines.
957e72c0 Utilities/Release: Use python 3 for server mode test on Linux binary
64934f20 Utilities/Release: Enable server mode in all binaries
ec0bf638 bootstrap: Add options to enable/disable server mode explicitly
523f8ec8 server-mode: Add option to enable/disable test case explicitly
6b97a5ef server-mode: Add option to enable/disable the mode explicitly
a8334961 server-mode: Rename variable CMake_{HAVE => ENABLE}_SERVER_MODE
97b6e17c server-mode: Enable from bootstrapped CMake build
Enable the server to watch for filesystem changes. This patch includes
* The infrastructure for the file watching
* makes that infrastructure available to cmServerProtocols
* Resets the filesystemwatchers on "configure"
Add the CMake_ENABLE_SERVER_MODE option explicitly to the configuration
of all binary builds. We want to know the mode is available if the
build succeeds.
Add a `CMake_TEST_SERVER_MODE` option that can be set in testing builds
to enable/disable server mode tests explicitly. This will allow testing
in combination with `CMake_TEST_EXTERNAL_CMAKE` or for server mode to be
built on systems that have a python version that cannot run the test.
Provide a way for scripts building CMake to enable server mode
explicitly and assume the risk of a build failure if it is not
supported. This will allow such scripts to ensure that server
mode is available if the build succeeds. It also allows scripts
to explicitly disable server mode even if it would be supported.
Code extracted from:
http://public.kitware.com/KWSys.git
at commit 6cfcbedeb253b64e6d07f436f1ac0f0b488bbc9b (master).
Upstream Shortlog
-----------------
Brad King (1):
6cfcbede SystemTools: Include strings.h on MinGW for strcasecmp
71a50587 server-mode: Add project data for unit tests
7b1e60f2 server-mode: Report CMakeCache entries
84553a6e server-mode: Add command to retrieve build system files
ead71873 server-mode: Report information relevant for a codemodel
When hosting CMake's own build with the PGI compiler there are several
warnings that cannot easily be fixed or suppressed. We have enough code
quality tools and warnings from other compilers that it is unlikely a
PGI-only warning is useful.
The `PARSE_ARGV` mode was recently added to help functions properly
parse their arguments even when those arguments may be quoted and
contain literal `;` in their values. Fix the implementation to encode
`;`s in reported multi-value arguments and in `UNPARSED_ARGUMENTS` so
that `;`s in the individual values are preserved in the lists. This
allows clients to access all their argument values correctly.
Do some basic unit tests for "codemodel", "cmakeInputs" and "cache"
commands of the cmake server.
This just calls the commands right now and makes sure the server
thinks it can reply to the request. The data itself is currently not
validated.
On platforms that support shebang lines the `cxxtestgen` script should
be able to execute without an explicit interpreter. Do this if possible
so that the proper interpreter specified by the shebang line is honored.
Ideally we shouldn't even need to find `python` in this case, but that
will be a larger change better made by a dedicated module maintainer.
Closes: #16331
Update the toolset name matching added by commit v3.6.0-rc1~279^2~10
(VS: in Clang/C2 toolset, setup correct compiler settings, 2016-02-18)
to match VS/LLVM toolset names too.
The check added in commit v3.6.0-rc1~293^2 (Diagnose recursive
project/enable_language without crashing, 2016-03-07) broke support for
enabling `RC` explicitly along with other languages like `C`. The
reason is that we enable all listed languages at once so the internal
`enable_language(RC)` that we do while enabling `C` or `CXX` on some
platforms triggers the recursion check if `RC` is explicitly listed.
Ideally we should refactor things to only enable one language at a time,
but for now it is simplest to just exclude `RC` from the explicit list
until other languages are enabled, and then enable it.
Closes: #16330
The `main.cpp` that this test generates needs a newline so that
compilers do not warn about a missing newline. Otherwise the warning
causes RunCMake infrastructure to detect unexpected output.
The 64-bit Windows binary is built in our second batch because it is
built on the same host as the 32-bit Windows binary. When the
documentation generation was first added, it was not included in the
second batch because at the time that batch only included the Cygwin
binary. Therefore the 64-bit Windows binary has been missing the
documentation since it was first created for CMake 3.6.
Since then the Cygwin binary was dropped so the second batch only
contains the 64-bit Windows binary. Add the docs to it.
Closes: #16333