On 2024/09/24 7:07, Timofei Zhakov wrote:
> On Mon, Sep 23, 2024 at 9:25 AM Jun Omae <jun6...@gmail.com> wrote:
>>
>> On 2024/09/22 22:55, Timofei Zhakov wrote:
>>> On Sun, Sep 22, 2024 at 2:02 AM Jun Omae <jun6...@gmail.com> wrote:
>>>>
>>>> On 2024/09/21 5:50, Timofei Zhakov wrote:
>>>>> On Fri, Sep 20, 2024 at 11:30 AM Jun Omae <jun6...@gmail.com> wrote:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> On 2024/09/16 21:41, rin...@apache.org wrote:
>>>>>>> Author: rinrab
>>>>>>> Date: Mon Sep 16 12:41:13 2024
>>>>>>> New Revision: 1920717
>>>>>>>
>>>>>>> URL: http://svn.apache.org/viewvc?rev=1920717&view=rev
>>>>>>> Log:
>>>>>>> Merge the `cmake` branch to trunk.
>>>>>>
>>>>>> I encounter the following error on all of cmdline.* tests with Visual 
>>>>>> Studio
>>>>>> as cmake generator.
>>>>>>
>>>>>> [[[
>>>>> [...]
>>>>>> ]]]
>>>>>>
>>>>>> The exception is raised when launching <build-dir>/svnadmin.exe because 
>>>>>> the
>>>>>> file is actually located in <build-dir>/Release/svnadmin.exe. It is not 
>>>>>> raised
>>>>>> when cmake with Ninja is used because <build-dir>/svnadmin.exe is 
>>>>>> located.
>>>>>>
>>>>>> I think we could use $<TARGET_FILE_DIR:target> instead of
>>>>>> ${CMAKE_CURRENT_BINARY_DIR} as a workaround.
>>>>>>
>>>>>> [[[
>>>>>> Index: CMakeLists.txt
>>>>>> ===================================================================
>>>>>> --- CMakeLists.txt      (revision 1920797)
>>>>>> +++ CMakeLists.txt      (working copy)
>>>>>> @@ -671,13 +671,13 @@
>>>>>>            "cmdline.${py_test_name}"
>>>>>>          COMMAND
>>>>>>            "${Python3_EXECUTABLE}" 
>>>>>> "${CMAKE_CURRENT_SOURCE_DIR}/build/run_tests.py"
>>>>>> -          --bin ${CMAKE_CURRENT_BINARY_DIR}
>>>>>> -          --tools-bin ${CMAKE_CURRENT_BINARY_DIR}
>>>>>> +          --bin $<TARGET_FILE_DIR:svnadmin>
>>>>>> +          --tools-bin $<TARGET_FILE_DIR:entries-dump>
>>>>>>            --verbose
>>>>>>            --log-to-stdout
>>>>>>            --set-log-level=WARNING
>>>>>>            ${CMAKE_CURRENT_SOURCE_DIR}
>>>>>> -          ${CMAKE_CURRENT_BINARY_DIR}
>>>>>> +          $<TARGET_FILE_DIR:svnadmin>
>>>>>>            ${py_test_path}
>>>>>>        )
>>>>>>      endif()
>>>>>> ]]]
>>>>>
>>>>> Oh, I didn't notice this problem, because I am using a single config
>>>>> generator. I think the suggested code is great for resolving the
>>>>> issue, because I think there is no generator expression to get the
>>>>> target dir in the current config without a specific target. However, I
>>>>> think it's better to use svn's target dir since it's the main
>>>>> executable and maybe the same for tools (?). It actually should be the
>>>>> same for all targets, so it doesn't meter.
>>>>>
>>>>> Also, I think we should add some multi-config generator tests to the
>>>>> GitHub Actions workflow, to prevent similar problems in future.
>>>>>
>>>>
>>>> I use "svnadmin" for target directory because we use "svnadmin" to create a
>>>> test repository before using "svn" to check out the repository. Well, using
>>>> "svn" is okay to me.
>>>
>>> Okay.
>>>
>>>> Revised the proposed patch, in addition, added use of VS2022 to the matrix:
>>>> cmake-test-build-dir.v2.patch.txt (attached).
>>>
>>> Would this be better to separate this patch by two different commits,
>>> with tests and GitHub actions?
>>
>> Yeah. Separated the commit to two commits:
>>
>>  - 
>> https://github.com/apache/subversion/commit/5dff28422740659ea9031d7287ce33785cd08a4b
>>  - 
>> https://github.com/apache/subversion/commit/c456dfd0311201baab3f3eaf94573ed8b1ba408a
> 
> Great!
> 
>>>> However, the same issue occurs on ra-test. I think the issue should be 
>>>> occurred
>>>> also when Ninja is used with build directory being outside of source tree 
>>>> (e.g.
>>>> %TMP%\svn-out). Because "../../svnserve/svnserve.exe" and "svnserve.exe" 
>>>> are
>>>> searched.
>>>>
>>>> [[[
>>>> 40: Test command: D:\a\subversion\subversion\out\Release\ra-test.exe 
>>>> "--srcdir" "D:/a/subversion/subversion/subversion/tests/libsvn_ra"
>>>> 40: Working Directory: D:/a/subversion/subversion/out
>>>> 40: Test timeout computed to be: 10000000
>>>> 40: PASS:  ra-test 1: test svn_ra_get_location_segments
>>>> 40: PASS:  ra-test 2: test ra_svn tunnel callback check
>>>> 40: svn_tests: E170013: Unable to connect to a repository at URL 
>>>> 'svn+test://localhost/test-repo-tunnel'
>>>> 40: svn_tests: E200006: Could not find svnserve. Checked paths:
>>>> 40:   D:\a\subversion\svnserve\svnserve.exe
>>>> 40:   D:\a\subversion\subversion\out\svnserve.exe
>>>> 40: FAIL:  ra-test 3: test ra_svn tunnel creation callbacks
>>>> 40: PASS:  ra-test 4: lock multiple paths
>>>> 40: PASS:  ra-test 5: test ra_get_dir2
>>>> ...
>>>> ]]]
>>>
>>> I think changing the working directory of where the tests are running
>>> to the build directory in the current config.
>>>
>>> See 'svn-cmake-ctest-working-directory.patch.txt' in the attachments.
>>
>> Thanks for the patch. However, after the patch, tests with both ninja and
>> vs2022 failed. See 
>> https://github.com/jun66j5/subversion/actions/runs/10987698238
>>
>> I don't think `--srcdir` option should be changed. Reverting the changes
>> for the option, jobs except ubuntu successed.
>>
>>  - 
>> https://github.com/apache/subversion/compare/trunk...jun66j5:subversion:cmake-pytests-build-dir
>>  - https://github.com/jun66j5/subversion/actions/runs/10988627279
> 
> Oups, I see. It is a copy-paste mistake, because this code has been
> duplicated from targets.cmake to target.cmake.ezt, and this variable
> got expanded.
> 
> Attached a new version of the patch as
> 'svn-cmake-ctest-working-directory-v2.patch.txt' with reverted
> --srcdir change. Log message:
> 
> [[[
> cmake: Fix C-Tests failing in multi-config generators.
> 
> * build/generator/templates/targets.cmake.ezt
>   (tests): Use `$<TARGET_FILE_DIR:...>` generator expression instead of using
>    `CMAKE_CURRENT_BINARY_DIR` variable for determining the path to a directory
>    with built Subversion binaries
> ]]]
> 
> Succeeded GitHub Actions (except tests, failing on Linux):
> https://github.com/rinrab/subversion/actions/runs/10993560311
> 
> Comparison of all these commits after doing some Git-magic:
> https://github.com/apache/subversion/compare/trunk...rinrab:subversion:cmake-test-build-dir
> 
> Finally, I think we can start committing those changes into trunk.
> What do you think?
> 
> Thanks!

Agreed. Committed my proposed patches in r1920902 and r1920903.
Please commit your svn-cmake-ctest-working-directory-v2.patch.txt.

BTW, I noticed that another minor issue when using Ninja and make
generator. Running ctest, "cmdline/svn-test-work" directory is created
in top directory of source tree, not build directory. When using VS2022,
"cmdline/svn-test-work" directory is created in build directory.

-- 
Jun Omae <jun6...@gmail.com> (大前 潤)

Reply via email to