On 7. 8. 25 15:05, Daniel Sahlberg wrote:
Den tors 7 aug. 2025 kl 14:05 skrev Timofei Zhakov <t...@chemodax.net>:

    On Thu, Aug 7, 2025 at 2:22 PM Daniel Sahlberg
    <daniel.l.sahlb...@gmail.com> wrote:

        Den tis 5 aug. 2025 kl 19:27 skrev Graham Leggett via dev
        <dev@subversion.apache.org>:

            Hi all,

            I am keen to build subversion-trunk on Windows using cmake
            and bleeding edge dependencies (serf-trunk, apr-trunk, etc).

            Does anyone have a script / recipe to do this in a single
            step?

            I have Visual Studio 2022 on Windows 11 via ssh, so
            ideally something command line based.

            Does such a thing exist?

            Regards,
            Graham
            --


        Hi,

        I've so far only built it using vcpkg supplied dependencies,
        so sorry no. I do think it would be valuable to have such a
        script!

        I think our primary expert on Windows is Timofei, I hope he
        can chime in!

        Cheers,
        Daniel


    I was planning to respond anyway... Sorry for the delay.

    With cmake, you can build each of apr, serf, and subversion using
    just a few simple commands per project.

    Here is how they'd generally look like:

    ```
    cmake -S <source> -B <source>/out [extra opts]
    -DCMAKE_INSTALL_PREFIX <libs>
    cmake --build <source>/out
    cmake --install <source>/out
    ```

    So the complete script would contain something like:

    ```pwsh
    # checkout projects
    svn checkout
    https://svn.apache.org/repos/asf/apr/apr/branches/1.7.x apr
    svn checkout
    https://svn.apache.org/repos/asf/apr/apr-util/branches/1.7.x apr-util
    svn checkout https://svn.apache.org/repos/asf/serf/trunk serf
    svn checkout https://svn.apache.org/repos/asf/subversion/trunk svn

    # deps
    git clone https://github.com/microsoft/vcpkg
    Push-Location vcpkg
    .\bootstrap-vcpkg.bat -disableMetrics
    .\vcpkg install expat zlib sqlite3 openssl
    Pop-Location

    # compiled binaries and libraries will appear in this directory
    mkdir install
    Copy-Item -Recurse .\vcpkg\installed\x64-windows\* install

    # let's keep the source trees clean, by utilising out-of-tree build
    mkdir build

    # apr
    cmake -S apr -B build/apr -DCMAKE_INSTALL_PREFIX=install
    cmake --build .\build\apr\
    cmake --install .\build\apr\ --config Debug

    # apr-util
    cmake -S apr-util -B build/apr-util -DCMAKE_INSTALL_PREFIX=install
    cmake --build .\build\apr-util\
    cmake --install .\build\apr-util\ --config Debug

    # serf
    cmake -S serf -B build/serf -DCMAKE_INSTALL_PREFIX=install
    cmake --build .\build\serf\
    cmake --install .\build\serf\ --config Debug

    # svn
    cmake -S svn -B build/svn -DCMAKE_INSTALL_PREFIX=install
    cmake --build .\build\svn\
    cmake --install .\build\svn\ --config Debug
    ```

    #worksforme


Oh, looks great, thanks!


    It's pretty much the same commands for every project assuming
    dependecies are set up. This is why I don't think there is a need
    for a script; The steps are still simple, but someone may want to
    modify something for their needs. For example, use apr-2 instead
    of apr+apr-util, customise some projects or build configurations
    using options, or use ninja instead of vcnet.

    On the other hand, I think it might be cool to include this set of
    commands to the INSTALL guide instead.


Yes, I think INSTALL is the right place to go.

One minor nit: If we put this as an example in INSTALL, I think we should be consistent with which kind of version we use in the svn co example. Above you use the current branch of APR, the "next" branch of APR-util (don't really know the status of 1.6 vs 1.7 there) and the trunk versions of Subversion and Serf. Obviously there may be a good reason (for example Serf 1.3 doesn't have the CMake scripts - although I hope we will soon be able to release 1.5 with CMake support), then we can describe how to use another version and what is the minimum required version for each project.


Graham did say bleeding-edge and explicitly mentioned apr-trunk. What you're discussing isn't that. :) Sure subversion-trunk, apr-trunk and serf-trunk do work together, I just haven't tried using CMake for all three: APR's CMake build is explicitly Windows-only, Subversion's has a bunch of problems on, e.g., macOS -- or at least did when I tried it a couple months ago --  and only Serf's works reliably on every platform I've tried[1].


-- Brane


[1] Windows, macOS, Linux (Debian + Fedora), FreeBSD, OpenBSD, NetBSD and, dogs help us, BeOS. I really have to get that Solaris VM set up somehow.

Reply via email to