<div dir="ltr"><div><div><div><div><div>Hey Markus,<br><br></div>it<br>1. determines a list of directories to place a symlink in by inspecting the source tree for directories that contain a CMakeLists.txt file.<br></div>2. it checks whether that directory is located inside a build tree that is a subdirectory of the build tree<br></div>3. It creates a symlink in all those directories.<br><br></div>I previously globbed for "*" instead of ".*CMakeLists.txt" to get a list of directories, but that include the false positives mentioned in the commit message.<br><br></div>Dominic<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Apr 1, 2015 at 5:48 PM, Markus Blatt <span dir="ltr"><<a href="mailto:markus@dr-blatt.de" target="_blank">markus@dr-blatt.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Dominic,<br>
<br>
I must admit that I do not understand what the patch does. But it<br>
smells a bit fishy (maybe that is because I am not totally aware what<br>
the symlink stuff did before, though).<br>
<br>
Could you explain what the resulting code now does?<br>
<br>
More comments below:<br>
<div><div class="h5"><br>
On Wed, Apr 01, 2015 at 03:22:47PM +0200, Dominic Kempf wrote:<br>
> New commit, appeared at Wed Apr  1 15:22:47 2015 +0200<br>
> as part of the following ref changes:<br>
><br>
>     branch refs/heads/master    updated from 68e8bde -> 0154ec0<br>
><br>
> Browsable version: <a href="http://cgit.dune-project.org/repositories/dune-common/commit/?id=3824de87c29973dbf4cc19e5f85fb37100a4fe65" target="_blank">http://cgit.dune-project.org/repositories/dune-common/commit/?id=3824de87c29973dbf4cc19e5f85fb37100a4fe65</a><br>
><br>
> ======================================================================<br>
><br>
> commit 3824de87c29973dbf4cc19e5f85fb37100a4fe65<br>
> Author: Dominic Kempf <<a href="mailto:dominic.r.kempf@gmail.com">dominic.r.kempf@gmail.com</a>><br>
> Date:   Wed Apr 1 15:12:42 2015 +0200<br>
><br>
>     Fix dune_symlink_to_source_tree for cmake 3.1<br>
><br>
>     CMake 3.1 issued a lot of warnings because it tried to symlink:<br>
>     - git specific subdirs that are not present in the build tree<br>
>     - build directories that are a subdir of the source instead of a sibling<br>
><br>
>     The change<br>
>     - adds a symlink iff a CMakeLists file was found in the source dir.<br>
>     - excludes such build directory.<br>
><br>
>  cmake/modules/DuneSymlinkOrCopy.cmake | 8 +++++---<br>
>  1 file changed, 5 insertions(+), 3 deletions(-)<br>
><br>
><br>
><br>
> diff --git a/cmake/modules/DuneSymlinkOrCopy.cmake b/cmake/modules/DuneSymlinkOrCopy.cmake<br>
> index 99595c8..fee4046 100644<br>
> --- a/cmake/modules/DuneSymlinkOrCopy.cmake<br>
> +++ b/cmake/modules/DuneSymlinkOrCopy.cmake<br>
> @@ -72,12 +72,14 @@ macro(dune_symlink_to_source_tree)<br>
>      endif()<br>
>    else()<br>
>      # get a list of all files in the current source directory and below.<br>
> -    file(GLOB_RECURSE files RELATIVE ${CMAKE_SOURCE_DIR} "*")<br>
> +    file(GLOB_RECURSE files RELATIVE ${CMAKE_SOURCE_DIR} ".*CMakeLists.txt")<br>
<br>
</div></div>This is how this looks to me: Previously all file below<br>
${CMAKE_SOURCE_DIR} were in the files variable. Now it is only the<br>
CMakeLists.txt. Does really make sense?<br>
<span class=""><br>
><br>
>      # iterate over all files, extract the directory name and write a symlink in the corresponding build directory<br>
> -    foreach(f ${files})<br>
> +    foreach(f ${files} "./")<br>
>        get_filename_component(dir ${f} DIRECTORY)<br>
> -      execute_process(COMMAND ${CMAKE_COMMAND} "-E" "create_symlink" "${CMAKE_SOURCE_DIR}/${dir}" "${CMAKE_BINARY_DIR}/${dir}/src_dir")<br>
> +      if(NOT dir MATCHES "${CMAKE_BINARY_DIR}/*")<br>
> +        execute_process(COMMAND ${CMAKE_COMMAND} "-E" "create_symlink" "${CMAKE_SOURCE_DIR}/${dir}" "${CMAKE_BINARY_DIR}/${dir}/src_dir")<br>
> +      endif(NOT dir MATCHES "${CMAKE_BINARY_DIR}/*")<br>
<br>
</span>Ok, you skip the binary. That makes sense. But you now link the<br>
currect CMAKE_SOURCE_DIR and the CMakeLists.txt files below it.<br>
<br>
>      endforeach()<br>
>    endif()<br>
>  endmacro(dune_symlink_to_source_tree)<br>
<br>
BTW: Sorry for the noise if I am just to dense to get it.<br>
<span class="HOEnZb"><font color="#888888"><br>
Markus<br>
<br>
--<br>
Do you need more support with DUNE or HPC in general?<br>
<br>
Dr. Markus Blatt - HPC-Simulation-Software & Services <a href="http://www.dr-blatt.de" target="_blank">http://www.dr-blatt.de</a><br>
Hans-Bunte-Str. 8-10, 69123 Heidelberg, Germany<br>
Tel.: <a href="tel:%2B49%20%280%29%20160%2097590858" value="+4916097590858">+49 (0) 160 97590858</a><br>
</font></span><br>_______________________________________________<br>
Dune-devel mailing list<br>
<a href="mailto:Dune-devel@dune-project.org">Dune-devel@dune-project.org</a><br>
<a href="http://lists.dune-project.org/mailman/listinfo/dune-devel" target="_blank">http://lists.dune-project.org/mailman/listinfo/dune-devel</a><br>
<br></blockquote></div><br></div>