[cmake-developers] ExternalProject and git clone

David Cole dlrdave at aol.com
Tue Sep 10 12:13:51 EDT 2013


Comments:


(1) Obviously, remove the "FIXME" and actually add the documentation 
before merging this into CMake 'next'...


(2) This won't work:
+string(REGEX MATCH \"^\${abs_binary_dir}\" source_in_binary_dir 
\"\${abs_source_dir}\")

If there are REGEX characters in the directory name.

We have a similar test in 
CMake/Tests/CMakeTests/CheckSourceTreeTest.cmake.in, but it uses 
STREQUAL, string lengths and SUBSTRING to test if it's an in-source 
build. Something similar to that would work reliably even when REGEX 
characters are in the directory name.


(3) Here:
+  if(NOT IS_DIRECTORY \"${source_dir}\")

Do you mean to test for the ".git" directory?


(4) The second time the "Repository URL is different" code is hit, 
there will already be an "origin.old" remote. Does that mean the call 
will fail with an error? Could you construct a unique name each time 
through instead to avoid the error?


Looks reasonable (just at first glance) beyond those comments. But I 
did not run any tests using it...

I'll let Brad and Rob make the call about whether a patch with the 
above comments incorporated should be merged to 'next' as is, or 
whether it should be optionally enabled by a flag as well. I already 
said I think we should preserve existing behavior, and only explicitly 
do this new behavior if it's requested by a new parameter. I'm 
conservative that way, and would prefer not to have existing folks who 
are happy with the behavior become upset when they suddenly get a new 
error just because they updated to a new version of CMake.

Anybody else have an opinion on this? Should it be discussed on the 
users mailing list as well?


HTH,
David




More information about the cmake-developers mailing list