Re: svn commit: r1936422 - subversion/trunk

Timofei Zhakov <[email protected]>
Newsgroups gmane.comp.version-control.subversion.devel
Message-ID <CAPD1kXTxVJ=Phk=UvEnwEtCfwnmr5=QvLh-dUdPgNQvZwJQp3w@mail.gmail.com>
On Tue, Jul 21, 2026 at 4:33 PM <[email protected]> wrote:

> Author: jun66j5
> Date: Tue Jul 21 14:33:38 2026
> New Revision: 1936422
>
> Log:
> cmake: Follow-up to r1936349, restore the minimum version of cmake to
> `3.14`.
>
> * CMakeLists.txt
>   (cmake_minimum_required):
>     Ditto.
>   (test_prepend_builddir_to_path):
>     Add function to prepend the build directory to PATH environment.
>     If cmake version is 3.22 or later, use `ENVIRONMENT_MODIFICATION` with
>     `path_list_prepend` simply.  Otherwise, build the value and use
>     `ENVIRONMENT`.
>   (swig-perl, swig-python, swig-ruby):
>     Use `test_prepend_builddir_to_path()` instead of
> `ENVIRONMENT_MODIFICATION`
>     directly.
>
> Modified:
>    subversion/trunk/CMakeLists.txt
>
> Modified: subversion/trunk/CMakeLists.txt
>
> ==============================================================================
> --- subversion/trunk/CMakeLists.txt     Tue Jul 21 12:45:05 2026
> (r1936421)
> +++ subversion/trunk/CMakeLists.txt     Tue Jul 21 14:33:38 2026
> (r1936422)
> @@ -21,7 +21,7 @@
>
>  # CMAKE_MINIMUM_REQUIRED should be the first directive in the file:
>  # https://cmake.org/cmake/help/latest/command/cmake_minimum_required.html
> -cmake_minimum_required(VERSION 3.22)
> +cmake_minimum_required(VERSION 3.14)
>
>  # CMP0092: MSVC warning flags are not in CMAKE_<LANG>_FLAGS by default.
>  if(POLICY CMP0092)
> @@ -861,6 +861,23 @@ function(swig_target_external_runtime ta
>    target_sources(${target} INTERFACE ${swig_runtime_path})
>  endfunction()
>
> +function(test_prepend_builddir_to_path name)
> +  file(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}" dir)
> +  if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.22")
> +    set_property(TEST ${name} APPEND PROPERTY ENVIRONMENT_MODIFICATION
> +      "PATH=path_list_prepend:${dir}"
> +    )
> +  else()
> +    if(WIN32)
> +      # Replace <;> with <\;> to prevent conversion to a list
> +      string(REPLACE ";" "\\;" value "PATH=${dir};$ENV{PATH}")
> +    else()
> +      set(value "PATH=${dir}:$ENV{PATH}")
> +    endif()
> +    set_property(TEST ${name} APPEND PROPERTY ENVIRONMENT "${value}")
> +  endif()
> +endfunction()
> +
>  if(SVN_ENABLE_SWIG_PYTHON)
>    find_package(PY3C REQUIRED)
>
> @@ -920,9 +937,7 @@ if(SVN_ENABLE_SWIG_PYTHON)
>        "${CMAKE_CURRENT_BINARY_DIR}/swig-python"
>    )
>    if(WIN32 OR CYGWIN)
> -    set_property(TEST swig-python APPEND PROPERTY ENVIRONMENT_MODIFICATION
> -      "PATH=path_list_prepend:$<SHELL_PATH:${CMAKE_CURRENT_BINARY_DIR}>"
> -    )
> +    test_prepend_builddir_to_path(swig-python)
>    endif()
>  endif()
>
> @@ -1001,9 +1016,7 @@ if(SVN_ENABLE_SWIG_PERL)
>        ${CMAKE_CURRENT_SOURCE_DIR}/subversion/bindings/swig/perl/native
>    )
>    if(WIN32 OR CYGWIN)
> -    set_property(TEST swig-perl APPEND PROPERTY ENVIRONMENT_MODIFICATION
> -      "PATH=path_list_prepend:$<SHELL_PATH:${CMAKE_CURRENT_BINARY_DIR}>"
> -    )
> +    test_prepend_builddir_to_path(swig-perl)
>    endif()
>  endif()
>
> @@ -1053,9 +1066,7 @@ if(SVN_ENABLE_SWIG_RUBY)
>      "SVN_TEST_SWIG_RUBY=ctest"
>    )
>    # svnserve in the build directory is launched by the tests
> -  set_property(TEST swig-ruby APPEND PROPERTY ENVIRONMENT_MODIFICATION
> -    "PATH=path_list_prepend:$<SHELL_PATH:${CMAKE_CURRENT_BINARY_DIR}>"
> -  )
> +  test_prepend_builddir_to_path(swig-ruby)
>  endif()
>
>  ### Checks
>
>
I think here you've changed the behaviour by using the configure time
environment instead of the one when tests are run (which I
assume ENVIRONMENT_MODIFICATION does). This is not mentioned in the log
message.

Btw, did you consider simply requiring more modern cmake when swig bindings
are enabled? I remember before we bumped to 3.14 from 3.12 there was logic
to still force cmake 3.14/3.13 (I don't remember the exact version) for the
bindings. The default config should not be affected by this but the
bindings (I assume a lot of consumers don't compile them) - in this case
they will have to get a newer cmake.

-- 
Timofei Zhakov
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.