Checkout Tools
  • last updated 4 hours ago
Constraints: committers
Constraints: files
Constraints: dates
Restrict SWIG version for Python bindings

* (copy-swig-py:):

Make symbolic links to C extension modules in build/test directory

(for check-swig-py with SWIG 3.0.9 and SWIG 4.0 or later)

* build/ac-macros/swig.m4:

Add SWIG version check for Python 2 and Python 3 to check its version

is suitable for Python bindings, and to set up appropriate SWIG option.

Review by: hartmannathan

* subversion/bindings/swig/INSTALL


- Add description that SWIG installation is optional.

- Update suitable SWIG version information per language bindings.


(USING SWIG BINDINGS, Python): Update URLs for ViewVC and Trac.

  1. … 2 more files in changeset.
Merge the swig-py3 branch to trunk.
  1. … 61 more files in changeset.
Add logging to the svnserveautocheck configuration.

* (check-clean): Clean up the svnserveautocheck and davautocheck

configuration/log directories.

* subversion/tests/cmdline/

(query): New function, copied unchanged from

(SVNSERVE_ROOT): Temporary directory for and svnserve.log.

- Run sevnserve with logging enabled;

- Offer to browse the log file before ending the script.

  1. … 1 more file in changeset.
Install the SVN++ library. Headers are missing for now.

* (svnxx_libdir, INSTALL_SVNXX_LIB): New.

* build.conf (test-svnxx): Change the tests install group.

  1. … 1 more file in changeset.
Make sure we don't require any part of Boost unless explicitly requested by

enabling the C++ bindings.


(--enable-svnxx): New option to compile C++ bindings.

(--enable-svnxx-tests): New option to compile C++ bindings tests.

(SVN_HAVE_CXX_BOOST): Remove substitution variable.

(SVN_BUILD_SVNXX, SVN_BUILD_SVNXX_TESTS): New substitution variables.

* build.conf

(libsvnxx): Only build when SVN_BUILD_SVNXX is enabled.

(svnxx-tests): Only build when SVN_BUILD_SVNXX_TESTS is enabled.




  1. … 2 more files in changeset.
* (check-svnxx): New target for running SVN++ tests.

Switch all SVN++ tests to Boost.Test.

* build/ac-macros/ax_boost_unit_test_framework.m4: New; imported from the Autoconf Archive.

* LICENSE: Add entry for ax_boost_unit_test_framework.m4.

* aclocal.m4: Include ax_boost_unit_test_framework.m4.



(BOOST_TEST_LDFLAGS): Rename from BOOST_LDFLAGS, redefine.

(COMPILE_SVNXX): Rename from COMPILE_SVNXX_CXX, redefine.


(LINK_SVNXX_TEST): Rename from LINK_CXX_BOOST, redefine.

* build.conf

(libsvnxx, svnxx-tests): Update compile and link commands.

* Update SVN++ bits.

* subversion/bindings/cxx/src/aprwrap/array.hpp:

Add comments to mark obsolete constructs that should change to C++11 idiom.

* subversion/bindings/cxx/src/aprwrap/hash.hpp: Likewise.

* subversion/bindings/cxx/tests/cxxhl-tests.cpp.

* subversion/bindings/cxx/tests/test_aprwrap.cpp: Removed.

* subversion/bindings/cxx/tests/svnxx-tests.cpp,

* subversion/bindings/cxx/tests/fixture_initialize_apr.hpp,

* subversion/bindings/cxx/tests/test_aprwrap_array_helpers.hpp: New.

* subversion/bindings/cxx/tests/test_aprwrap_arrays.cpp,

* subversion/bindings/cxx/tests/test_aprwrap_const_arrays.cpp,

* subversion/bindings/cxx/tests/test_aprwrap_hashes.cpp,

* subversion/bindings/cxx/tests/test_aprwrap_pools.cpp: New; extracted from the

removed test_aprwrap.cpp and reworked for Boost.Test.

* subversion/bindings/cxx/tests/test_exceptions.cpp: Renamed from test_exception.cpp

and reworked for Boost.Test.

  1. … 18 more files in changeset.
Add optional dependency on the Boost C++ libraries for the SVN++ test suite.

* build/ac-macros/ax_boost_base.m4: New; imported from The Autoconf Archive.

* LICENSE, NOTICE: Document the license for ax_boost_base.m4.

* aclocal.m4: Inlcude build/ac-macros/ax_boost_base.m4

* build.conf

(options.private-includes): Add headers from subversion/bindings/cxx/tests.

(svnxx-tests): Declare test target for SVN++.

* Check for Boost availability.



(COMPILE_SVNXX_CXX_BOOST, LINK_CXX_BOOST): New compile and link commands.

  1. … 6 more files in changeset.
Rename the C++HL library to SVN++, renaming files, namespaces and directories.


(SVNXX_INCLUDES): Renamed and changed from CXXHL_INCLUDES.

(COMPILE_SVNXX_CXX): Renamed and changed from COMPILE_CXXHL_CXX.

* build.conf

(options.private-includes): Update C++ bindings' header paths.

(libsvnxx): Rename and update target from libsvncxxhl.

* build/generator/

(Generator.write): Use 'svnxx-' instead of 'cxxhl-' for extra-install check.

* build/generator/

(WinGeneratorBase.get_win_includes): Check for 'svnxx', not 'cxxhl'.

* subversion/bindings/cxx/: Renamed from .../bindings/cxxhl/.

* subversion/bindings/cxx/include/svnxx/: Renamed from .../include/svncxxhl/.

* subversion/bindings/cxx/include/svnxx.hpp: Renamed from .../include/svncxxhl.hpp.

* subversion/bindings/cxx/**: Rename namespaces, include paths and guards.

  1. … 20 more files in changeset.
Remove optional dependency on Googletest and Googlemock.

* INSTALL: don't mention googlemock.




* build.conf

(cxxhl-tests): Temporarily disabled due to dependencies.

(libgooglemock): Removed.

* Remove references to Googlemock.

* Likewise.

* Likewise.

* doc/programmer/gtest-guide.txt: Removed.

  1. … 6 more files in changeset.
Add a test to check if our client works with GitHub's SVN bridge.

Because testing this involves connecting to a remote server, which our

test suite did not do up to now, the new test is skipped unless such

remote connections are explicitly allowed in the test run.

* (check): Add new option ALLOW_REMOTE_HTTP_CONNECTION.

* build/ Update docstring.

(create_parser): Add option --allow-remote-http-connection.

(TestHarness._init_py_tests): Propagate the option to test fixtures.

* subversion/tests/cmdline/

(connect_to_github_server): New test case.

* subversion/tests/cmdline/svntest/

(is_remote_http_connection_allowed): New predicate function.

(_create_parser): Add option --allow-remote-http-connection.

(TestSpawningThread.run_one): Propagate the option to subprocesses.

  1. … 3 more files in changeset.
Make only libsvn_subr directly depend on some macOS frameworks.

The comment in build/ac-macros/macosx.m4, which said that libtool 1.5.x

doesn't track transitive dependencies for macOS frameworks, has not been

true since libtlool-1.5.24.

Consequently, take the daring step of updating the requred libtool

version to 2.0, which is (*gasp!*) only 11 years old.



* build.conf

(macos-plist, macos-keychain): New external libraries.

(libsvn_subr): Links with macos-plist and macos-keychain.

* build/ac-macros/macosx.m4

(SVN_LIB_MACOS_PLIST): Remove obsolete comment.

Do not update LIBS, define SVN_MACOS_PLIST_LIBS instead.


* build/


Remove the special version check for libtool on Solaris.

  1. … 3 more files in changeset.
Merge the 'java10-compat' branch to trunk
  1. … 6 more files in changeset.
* Ensure that libsvn_swig_perl is built before Makefile.PL is

generated. Fixes the Perl bindings build in parallel mode (make -jN).

When the problem happened, the Perl bindings .so modules would lack a

dependency on and the dynamic linker could not load them.

Make's existing --bin option usable from 'make check'.

Using this speeds up test runs on OpenBSD a lot because running every

'svn', 'svnadmin' etc. command through a libtool shell script is,

well.... slooooow

* Support SVN_BIN_DIR parameter for 'make check'.

* build/ Documention --bin option.

  1. … 1 more file in changeset.
Add SWIG_FEATURES variable (and lang-specific variants) to tune how swig bindings are generated.

SWIG_FEATURES is used for general swig options, like -Wall, while

SWIG_(PL|PY|RB)_FEATURES allows tuning language specific settings.

This replaces the incorrect usage of CPPFLAGS as the mechanism for controlling

swig's behavior, thus avoiding the need to filter unknown flags before passing

them on to swig (c.f., r1722164).




* build.conf

(swig-*-opts): Replace SWIG_CPPFLAGS with SWIG_FEATURES and add relevant


  1. … 2 more files in changeset.
Make it possible to run tests with FSFS directory deltification disabled.

* Add FSFS_DIR_DELTIFICATION option for 'make check'.

* build/

(usage): Document --fsfs-dir-deltification option.

(TestHarness, create_parser): Add --fsfs-dir-deltification option.

* subversion/tests/cmdline/svntest/

(_post_create_repos): Set the enable-dir-deltification parameter

in fsfs.conf if the --fsfs-dir-deltification option was provided.

(TestSpawningThread, _create_parser): Add --fsfs-dir-deltification.

* Add --fsfs-dir-deltification option.

  1. … 3 more files in changeset.

(INSTALL_EXTRA_TOOLS.fsfs-stats): Quote the positional parameters in the

generated 'fsfs-stats' wrapper.


Followup to r1802032, which was a followup to r1618848.

Suggested by: jamessan

Build against the system utf8proc library by default instead of the

internal copy of the utf8proc code. Add --with-utf8proc=PREFIX|internal

to allow the user to specify either where to find utf8proc or that the

internal copy be used. The Windows build will continue to use the

internal utf8proc code.

* build/ac-macros/utf8proc.m4: New.

* aclocal.m4: Include utf8proc.m4.




* build.conf

(libsvn_subr): Add utf8proc to link.

(utf8proc): New.

* subversion/libsvn_subr/utf8proc/utf8proc.h: Rename to ...

* subversion/libsvn_subr/utf8proc/utf8proc_internal.h: ... this.

* subversion/libsvn_subr/utf8proc/utf8proc.c: Include svn_private_config.h

and utf8proc_internal.h, protect with SVN_INTERNAL_UTF8PROC.

* subversion/libsvn_subr/utf8proc.c: Include system utf8proc.h or internal


* subversion/svn_private_config.hw: Define SVN_INTERNAL_UTF8PROC to

enable internal copy of utf8proc.

* subversion/tests/libsvn_subr/utf-test.c

(test_utf_fuzzy_escape): Allow for small output difference between

utf8proc 1.x and 2.x.

  1. … 10 more files in changeset.
Build against the system LZ4 library by default instead of the

internal copy of the LZ4 code. Add --with-lz4=PREFIX|internal

to allow the user to specify either where to find LZ4 or that

the internal copy be used. The Windows build will continue to

use the internal LZ4 code.

* build/ac-macros/lz4.m4: New.

* aclocal.m4: Include lz4.m4.

* Call SVN_LZ4.



* build.conf

(libsvn_subr): Add lz4 to link.

(lz4): New.

* subversion/libsvn_subr/lz4/lz4.h: Rename to ...

* subversion/libsvn_subr/lz4/lz4internal.h: ... this, include

svn_private_config.h, protect with SVN_INTERNAL_LZ4.

* subversion/libsvn_subr/lz4/lz4.c: Include svn_private_config.h and

lz4internal.h, protect with SVN_INTERNAL_LZ4.

* subversion/libsvn_subr/compress.c: Include system lz4.h or lz4internal.h.

* subversion/svn_private_config.hw: Define SVN_INTERNAL_LZ4 to

enable internal copy of LZ4.

  1. … 9 more files in changeset.
Disable static builds of the apache and auth provider modules as

these are only ever used via dlopen() and so only shared modules

are required. As well as removing redundant compilation this

also solves the problem that KDE5, as used by the kwallet auth

provider, does not support compilation without -fPIC.

* build/generator/

(TargetSharedOnlyLib, TargetSharedOnlyCxxLib): New target types to

provide explicit compile/link commands for shared-only builds.

* build.conf

(libsvn_auth_gnome_keyring): Change to shared-only-lib.

(libsvn_auth_kwallet): Change to shared-only-cxx-lib.





shared_only_LDFLAGS): New.

(libsvn_auth_gnome_keyring_LDFLAGS, libsvn_auth_kwallet_LDFLAGS): Remove.


(shared_only_LDFLAGS): New.

(libsvn_auth_gnome_keyring_LDFLAGS, libsvn_auth_kwallet_LDFLAGS): Remove.

  1. … 3 more files in changeset.
Install 'fsfs-stats' as a wrapper to 'svnfsfs', to which it was renamed in


Followup to r1594860, r1618848.


(INSTALL_EXTRA_TOOLS): Create fsfs-stats as a wrapper of 'svnfsfs stats'.

Allow testing different fsfs compression levels in the test suite: --fsfs-compression=N



(check): Handle FSFS_COMPRESSION and pass it to the test suite.


(): Handle the new --fsfs-compression option.

(_usage_exit): Adjust usage text.

* build/

(): Update usage comment.

(_init_py_tests): Propagate the new fsfs_compression_level option.

(create_parser): Parse --fsfs-compression.

* subversion/tests/cmdline/svntest/

(parse_options): Check new option value for sanity.

(_create_parser): Update to handle --fsfs-compression.

(run_one): Propagate --fsfs-compression option.

(_post_create_repos): Tweak this function to rewrite the compression

level in the fsfs.conf file. Merge this with the the already existing

logic that configures [memcached-servers]. Adjust the slightly outdated

docstring for this function.

  1. … 3 more files in changeset.
Make download Googlemock and Googletest from GitHub.

Also rename gmock->googlemock throughout the code

(except for a few places in

* .: Ignore directory 'googlemock' instaed of 'gmock-fused'.

* Renamed gmock to googlemock.

(GMOCK_VERSION): Bump to 1.7.0

(GMOCK, GMOCK_URL): Update to the new location on GitHub.


(get_googlemock): Updated to download both Googlemock and Googletest sources.

* Renamed gmock to googlemock.

(SVN_USE_GOOGLEMOCK): Fixed one instance that was mistyped.

* build.conf: Renamed gmock to googlemock.

(cxxhl-tests): Updated target definition.

(libgooglemock): Updated source path and sources list.

* Renamed gmock to googlemock.

(GOOGLEMOCK_INCLUDES): Changed, these are now only the include paths that

are needed by tests that use Googlemock, not the Googlemock library itself.

(GOOGLEMOCK_LIB_INCLUDES): New, these are the include paths for the library.

(COMPILE_GOOGLEMOCK_CXX): Use the correct include paths.

  1. … 4 more files in changeset.
Add --enable-apache-whitelist configure option. Subversion's configure

script blacklists some old, buggy, Apache versions and refuses to build

while some distributions ship these old versions with patches to fix

the bugs. Whitelisting an Apache version will override the blacklist

and allow Subversion to build.

Subversion has regression tests for the buggy Apache behaviour and

whitelisting will change the expected behaviour for these tests from

XFAIL to PASS. As an example: using --enable-apache-whitelist=2.4.6

on an up-to-date CentOS 7 will allow Subversion to build and the

regression tests will PASS.

* Add --enable-apache-whitelist.

* build/ac-macros/apache.m4

(SVN_FIND_APACHE): Check whitelist, tweak help text for




(check): Pass --httpd-whitelist.

* build/

(TestHarness.__init__, TestHarness._run_py_test, main): Add httpd_whitelist.

* subversion/tests/cmdline/svntest/

(is_mod_dav_url_quoting_broken): Check whitelist.

(TestSpawningThread.run_one): Handle --httpd-whitelist.

(_create_parser): Add --httpd-whitelist.

  1. … 4 more files in changeset.
Have 'make clean' cover more of the temporary test data.


(check-clean): Clean up repos in the fsx tests folder as well.

* subversion/tests/libsvn_fs/fs-test.c









freeze_and_commit): Make sure all test repo names are prefixed by


  1. … 1 more file in changeset.
Add a --global-scheduler option to the Unix run_tests harness.

The idea is to run not parallelize within the individual Python test

scripts alone but instead to have one global scheduler for all tests.

That significantly improves scalability with large numbers of HW threads:

MacBook (4C/8T): 140s -> 110s

Workstation (12C/24T): 100s -> 40s

Note that the consolue output is different in global scheduler mode

and the log files then no longer contain start time stamps.

Because the C tests use their own scheduler, partially to enforce

specific restrictions on parallel execution, schedule whole C test

apps instead of individual C tests.

* build/

(): Update usage docstring and add missing imports.

(TestHarness._init_py_tests): Remember the command line for Python tests

as well because the global scheduler doesn't

load those tests but runs them externally.



TestHarness.TestSpawningThread): New classes for the global scheduler


(TestHarness._run_global_sheduler): Main routine for the new scheduler.

(TestHarness._run_local_schedulers): Encapsulates the traditional behavior.

( Run the tests with the selected scheduler.

(create_parser): Add '-g' / '--global-scheduler' option.


(check): Add GLOBAL_SCHEDULER option.

  1. … 1 more file in changeset.
Adapt Ruby tests to work with test-unit gem.

Ruby 2.2 bundles the test-unit gem instead of using the older "test-unit

API provided by minitest". This also fixes testing when the test-unit

gem happens to be installed along with older Ruby versions.


(check-swig-rb): Detect whether test-unit supports the --collector

argument and, if so, use the dir collector.

* subversion/bindings/swig/ruby/test/my-assertions.rb:

(_my_assert_block): Remove unnecessary assert_block.

* subversion/bindings/swig/ruby/test/test_wc.rb:

(test_context_create): Remove useless assertion on result of

Svn::Wc::Create, especially since it varies based on Ruby version.

Patch by: James McCoy <jamessan{_AT_}>

  1. … 2 more files in changeset.
Correctly propagate the log level through the multiple layers of test

suite infrastructure and make sure the default log level is the same

on all platforms and across all types of tests.

* build/

(create_parser): Make the --verbose option behave exactly as in the

Python test drivers: i.e., set the log level to DEBUG.

(TestHarness._init_c_tests): Pass --verbose to the C tests if the

log level is DEBUG or less (that is, more verbose).

(TestHarness._init_py_tests): Never send the --verbose option to the

Python test driver; always use --set-log-level.

* subversion/tests/cmdline/svntest/

(TestSpawningThread.run_one): Likewise, tell the testcase subprocess

what the actual log level is instead of passing -v (--verbose).


(check): Do not make tests logs verbose by default.


Make the -v/--verbose option set the log level to DEBUG.

(_usage_exit): Deprecate the -q/--quiet option as it is now a no-op.

  1. … 3 more files in changeset.
Require Python ≥2.7 for Subversion 1.9, part 1: documentation and dependency

version checks.


(I.C. Dependencies in Detail):

Document that Python 2.7 is required.

Add statement about Python 3.x.

* subversion/tests/cmdline/README,

* subversion/bindings/swig/INSTALL:

Document that Python 2.7 is required.


* build/,


* (check),

* subversion/tests/cmdline/svntest/

Update comments, version number checks, and error messages.

  1. … 7 more files in changeset.