[cmake-developers] daemon-mode: Infrastructure

Brad King brad.king at kitware.com
Fri Jun 17 16:24:09 EDT 2016


On 06/13/2016 08:00 PM, Tobias Hunger wrote:
> * There will always be 1 client talking to a server.
> * Client/Server communicate using JSON messages

Yes.  IIRC it is using stdin/stdout (I haven't checked the code),
so limiting to one client is implicit.

In this case, is it actually a daemon?  It is not expected to outlive
the client that started it.  Perhaps we should consider a different name.

One possible problem with using stdin/stdout is that when CMake runs the
configuration the project code can do things like execute_process that
may share the stdout with the child process.  That may allow the child
process to print content formatted to look like the protocol and trick
the client.  Ideally all output handling would avoid printing things to
stdout in server/daemon mode, but that may take some effort to achieve.

> What do you think? Does this make sense?

It sounds fine to me.  I'll state the caveat that I've had little experience
in maintaining versioned protocols like this though.  Hopefully others can
review this too.

On 06/14/2016 04:30 AM, Tobias Hunger wrote:
> I think it would make perfect sense to ship the first cmake version with
> included daemon-mode with a big, fat warning that the interfaces are not
> finalized yet and will change in incompatible ways during the first release
> cycle (or maybe two:-).

Yes.  Should we make the option to activate it different, and include
"experimental" in its name?  I think the idea is that no clients should
be released that depend on the experimental behavior in CMake.

Thanks,
-Brad



More information about the cmake-developers mailing list