Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Basic protocol work #2

Closed
wants to merge 886 commits into from
Closed

Conversation

hunger
Copy link

@hunger hunger commented Feb 7, 2016

Hi Steveire,

this patch adds an interface for protocol versions and implements a version 0_1 with the current implementations.

It also adds cookie support, enforces "type" to be in all messages and implements a unified way to report errors.

Next steps (if you agree that this patch makes sense):

  • Allow for multiple different protocols to be instanciated (with a handshake to choose one of the protocols)
  • Add a way to report progress
  • Make more of cmMetaDataServer private

State of the patch:
I did smoke-testing only, but I did not do too complex changes, so I am mildly positive that I did not break too much.

Best Regards,
Tobias

PS: First pull-request on github ever:-) I hope I handled this properly.

@steveire
Copy link
Owner

steveire commented Feb 9, 2016

Hi Tobias,

Thanks for this!

I'll write a review on the cmake mailing list for visibility.

Steve.

kwrobot and others added 8 commits August 9, 2016 00:01
17bbf6a CPackWIX: Implement new CPACK_WIX_SKIP_PROGRAM_FOLDER feature
955c2a6 Ninja: Use full path for all source files
5f3c8f6 GetPrerequisites: Always filter objdump output as text
551b4c9 Revert the use of string(APPEND) in .cmake.in files
3a7be4f prefer list(APPEND) over string(APPEND) where appropriate
This adds the LESS_EQUAL, GREATER_EQUAL, and associated STR and VERSION
equivalents to use the combined <= and >= functionality.
…indows

The implementation of `install(EXPORT)` generates files into a staging
directory for later installation.  We use the full install destination
in the path to the staging directory to avoid collisions.  In order to
avoid exceeding maximum path lengths (especially on Windows) we compute
a hash of the install destination when it is too long.  Fix this logic
to account for the length of the file name(s) when deciding whether to
switch to the hashed name.

Reported-by: Alan W. Irwin <irwin@beluga.phys.uvic.ca>
The Numerical Algorithms Group (NAG) Fortran compiler documents -PIC for
position-independent code and does not have a separate option for PIE.
We added `-PIC` for PIC in commit v2.8.11~174^2 (NAG: Use -PIC for
Fortran position-independent code, 2013-02-18).  Follow up for PIE.

Closes: #16236
bradking and others added 10 commits August 31, 2016 09:09
This will serve to make sure cmake actually compiles and links against
libuv.
b82d027 Utilities/Release: Drop Linux 32-bit binary
39ac889 cmake: Add trivial usage of libuv
7cf369f Do not build libuv on HP-UX
075cae5 Do not build libuv on SPARC
9a53af4 Do not build libuv on Cygwin
219f741 Do not build libuv on Mac OS X 10.4 and lower
8a5beef Add option to build CMake against a system libuv
e56aa46 FindLibUV: Add module to find libuv package
551d5ae libuv: Fix unused variable warning in uv_loop_close
f4f8074 libuv: Avoid including macOS CoreServices header globally
a63aaae libuv: Always include our own header first
9130b53 libuv: Conditionally declare Windows APIs for VS 2008 and below
b52afa4 libuv: Fix anonymous union syntax
05dbc20 libuv: Fix Windows API function typedef syntax
7513937 libuv: Install LICENSE file with CMake documentation
95dcc4e libuv: Disable warnings to avoid changing 3rd party code
13b7e75 libuv: Build the library within CMake
...
1dda2ec Improve error message on unexpected end of file
bf09271 FindMatlab: adding handling of component "MAT"
d6f9620 Fortran: Use -isysroot and -mmacosx-version-min= on macOS if available
ed1758f FindOpenSSL: Fix detection of OpenSSL 1.1 Win32/64
df32e56 Xcode: Add targets marked as EXCLUDE_FROM_ALL to project (#16101)
hunger and others added 16 commits August 31, 2016 21:10
Ignore *.user* files from QtCreator and *.pyc files.
Introduce cmake::ReportCapabilitiesJson which returns a the Json object
that is serialized in cmake::ReportCapabilities.

This allows to re-use the information in cmake-server.
So far the server-mode can be activated and tested, but does not
provide any benefits yet. All this does so far is:
 * Adds "cmake -E server"
 * Handles initial handshake for client and server to agree on
   protocol version used
 * Does some basic Request/Response handling
 * Adds a test infrastructure for all of this

This code is taking a lot from Stephen Kellys cmake-server work
available here:
https://github.com/steveire/CMake/tree/cmake-server
Update Server test to alternate between using \r\n and \n when
sending data to the server.
Allow for experimental cmProtocolVersions, which will only ever get
listed if the server was started with the (undocumented)
"--experimental" flag.
Wire up cmake::SetProgressUpdate to the progress reporting of the
cmake metadata server.
Pass messages sent from cmake via Error(...) or Message(...) on
to clients.
Use it to split pipe and stdin/out handling out of cmServer itself.
Add "globalSettings" command that returns:
* Return capability information
* Return currently used generator/extra generator
* Return a range of flags for debug/trace/etc.
"setGlobalSettings" can be used to change settings reported by
"globalSettings" command.
Add a command to trigger cmake to configure a project.

TODO: This needs tests!
Add "codemodel" command to report information relevant to feed a code
model.

TODO:
 * Unit tests
@hunger
Copy link
Author

hunger commented Jun 24, 2020

This is no longer relevant.

@hunger hunger closed this Jun 24, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet