Checkout Tools
  • last updated 3 hours ago
Constraints: committers
Constraints: files
Constraints: dates
Merge the swig-py3 branch to trunk.
  1. … 61 more files in changeset.
* build/generator/

(TargetExe.add_dependencies): Add 'svnmover' as another special case,

so 'make davautocheck' will work correctly without 'make svnmover'

or 'make tools' having been run before it.

Found by: danielsh

Merge the 'java10-compat' branch to trunk
  1. … 6 more files in changeset.
* build/generator/

(TargetJavaClasses.add_dependencies): Reverse check for valid filename to

fail early and avoid an extra level of indentation. No functional change. Correct the symbolic error name generation logic under Python 3.

When Python 2's filter() returns an empty list, Python 3's returns an object,

which in boolean context counts as true, and generated:

WARNING: errno intersects APR error codes; runtime computation of symbolic

error names for the following numeric codes might be wrong: <filter object

at 0x7f77c5045c50>

So we need to force the generator.

Windows wasn't affected because overrides the

method and returns a set() object.

* build/generator/

(GeneratorBase.errno_filter): Force the generator.

Followup to r1804618, provide a dummy error to avoid a zero-sized array.

* build/generator/

(GeneratorBase.write_errno_table): Provide a dummy error.

Omit the list of system error code names from release builds, this

removes one cause of tarballs not being reproducible.

* build/generator/

(GeneratorBase.write_errno_table): Omit system error code names

in release mode.

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.
build system: Improve svn_error_symbolic_name()'s data gatherer.

* build/generator/


Improve the "conflicting mappings" check.

Clarify the warning message.

Found by: subhadarsan das <>

(he ran into the unclear error message)

In the Windows build mark the DLLs of libsvn_ra, libsvn_fs_base, libsvn_fs_fs,

libsvn_fx as to be delayloaded.

Without this patch these DLLs and their dependencies are always loaded from

code that references them. After this patch the code is dynamically loaded

when first necessary. (In all supported compilers this is implemented as

a per DLL load via the import table, so there is no per function call

performance penalty)

The non-shared-library build is unaffected.

* build.conf




libsvn_ra): Mark as delayload.

* build/generator/

(TargetLib): Load property.

* build/generator/

(write): Calculate dependency dlls to be delayloaded.

* build/generator/

(create_dll_target): Copy property to right target.

* build/generator/templates/vcnet_vcxproj.ezt

Extend linker arguments.

  1. … 4 more files in changeset.
Fix a compiler warning.

* build/generator/

(GeneratorBase.write_config_keys): Mark variables as static.

--config-option: Warn when the FILE:SECTION:OPTION combination may be invalid.

Currently there are false negatives: if each component is individually known,

then there won't be a warning, even if the tuple as a whole is invalid.

The implementation is as follows: first, parse svn_config.h to generate a list

of valid file/section/option names:

* subversion/libsvn_subr/

Not a versioned file, but will be generated by

* build/generator/

(collections): Import.

(GeneratorBase.FileSectionOptionEnum): New class.

(GeneratorBase._client_configuration_defines): New method.

(GeneratorBase.write_config_keys): New method.


Exempt from dependency scanning.

* build/generator/templates/



(main): Generate

Second, have the --config-option parser warn to stderr about unknown values:

* subversion/include/private/svn_cmdline_private.h

(svn_cmdline__parse_config_option): Add PREFIX argument, document new


* subversion/libsvn_subr/cmdline.c

( Include.

(most_similar, string_in_array, validate_config_option): New functions.

(svn_cmdline__parse_config_option): Validate the config option's coordinates

and warn if they may be invalid.

* subversion/svn/similarity.c

(svn_cl__similarity_check): Cross-reference most_similar().

No functional change.

Third, add a unit test:

* subversion/tests/cmdline/

(getopt_config_option): New test.

Finally, update callers for the trivial signature change:

* subversion/svn/svn.c (sub_main),

* subversion/svnbench/svnbench.c (sub_main),

* subversion/svnmucc/svnmucc.c (sub_main),

* subversion/svnrdump/svnrdump.c (sub_main):

Pass new PREFIX argument.

* subversion/svnsync/svnsync.c

(sub_main): Ditto, in two places.

  1. … 11 more files in changeset. Support Python 3. All Python versions previously supported

remain supported.

Review by: rhuijben, brane

* build/generator/


Convert str to bytes. Document argument type.

* build/

(traceback): Import.

(svn_extractor, sqlite_extractor):

Rewrite 'except' statements in a syntax compatible with both Python 2.5

and Python 3. No functional change.



* build/

(Processor.process_file): Use dict.items() instead of dict.iteritems().

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


Convert comment to ASCII.

  1. … 4 more files in changeset.
Fix swig bindings with out of tree builds when in release mode.

When ./ is run with --release then we run SWIG to generate

the C files then rather than at build time. We do this when building

tarballs. Currently those source files are flagged in our build as

generated so they are expected to be under the build directory. When

in source mode flag them as not generated so we look for them in the

source directory.

* build/

(SWIGObject.__init__): Add a flag to specify if we're in release mode and to

set the source_generated flag appropriately.

(TargetSWIG.add_dependencies): Pass the release mode flag when creating a


Re-implement the forced usage of shared libraries for our test suite using a

proper build.conf flag. The updated implementation resolves a few cases where

we linked some applications (E.g. op-depth-test) against both the shared and

the static version of the same library, because direct and indirect

dependencies were handled using different code paths.

This last problem caused test failures on the Windows shared library buildbot,

because svn_error_clear() unhooked a different function for its

maintainer-abort on error leaks, than the other library inserted.

* build.conf

(msvc-force-static): Document.










wc-test): Mark these tests as msvc-force-static they use functions that

aren't published from the libraries that define them.



wc-incomplete-tester): Mark these wc.db test helpers as msvc-force-static.

* build/generator/

(DependencyGraph.remove): New function.

(TargetExe): Read new value from build.conf.

(disable_shared): Don't touch msvc_export.

* build/generator/

(get_install_targets): Handle the magic of forcing static library usage here,

with the code that creates shared libraries.

(create_dll_target): Remove magic name logic.

  1. … 2 more files in changeset.
* build/generator/

(GeneratorBase.__init__): Use ConfigParser.readfp() since .read() will mask

ENOENT errors.

Suggested by: Masaru Tsuchiyama


Follow-up to r1505121:

* build/generator/

(write_errno_table): Restore a non-obsolete part of a comment.

Revert the last few remaining pieces of r850307 (aka r10233), which made the

swig bindings on Windows link the 'core' library as central component from

every other swig library.

In the few months after this commit (read: somewhere in 2004) most of this

change was tweaked and partially reverted, but some magic was left.

Since this didn't work out as planned (as looked at 9 years later), hacks

were applied to work around all this. E.g some bindings forced a shared

library and then used explicit dll exporting/importing on Windows to get

things working.

This patch makes the bindings all use a proper shared library on Windows,

with the function exporting handled via the standard header file system we

use in other places.

* build.conf

(swig_core): Remove keyword that hasn't been used for at least 8 years.



libsvn_swig_ruby): Add svn-exports.

* build/generator/

(TargetLib.disable_shared): New function.

(TargetSWIG.__init__): Remove include_runtime initialization.

(TargetSWIGLib.disable_shared): New function.

* build/generator/

(get_install_targets): Call disable_shared instead of doing half its work locally.

(get_def_file): Remove disable_shared check.

(get_linked_win_depends): Remove disable_shared check.

* subversion/bindings/swig/core.i

(const void *value): Update caller.

(SWIGPERL init): Remove circular dependency hack.

* subversion/bindings/swig/include/svn_types.swg




PY_AS_VOID): Update caller.

* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c

(svn_swig_pl_bind_current_pool_fns): Remove


* subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h

(svn_swig_pl_bind_current_pool_fns): Remove


* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c


svn_swig_py_get_parent_pool): Update caller.

(svn_swig_NewPointerObj): Rename to ...

(svn_swig_py_new_pointer_obj): ... this.

(svn_swig_NewPointerObjString): Rename to ...

(svn_swig_NewPointerObjString): ... this. Update caller.

(svn_swig_ConvertPtr): Rename to ...

(svn_swig_py_convert_ptr): ... this.

(svn_swig_ConvertPtrString): Update caller.

(svn_swig_MustGetPtr): Rename to ...

(svn_swig_py_must_get_ptr): ... this.

(make_ob_pool): Update caller.

(convert_to_swigtype): Update caller.


(svn_swig_py_struct_ptr_hash_from_dict): Update caller.

(svn_swig_py_unwrap_struct_ptr): Update caller.

(svn_swig_py_convert_txdelta_op_c_array): Update caller.

(swig_py_ra_reporter2): Make static.

(svn_swig_py_get_ra_reporter2): New function.

* subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h

(SVN_SWIG_SWIGUTIL_EXPORT): Remove definition and all usages.

(svn_swig_NewPointerObj): Rename to ...

(svn_swig_py_new_pointer_obj): ... this.

(svn_swig_ConvertPtr): Rename to ...

(svn_swig_py_convert_ptr): ... this.

(svn_swig_MustGetPtr): Rename to ...

(svn_swig_py_must_get_ptr): ... this.

(svn_swig_py_get_ra_reporter2): New function.

* subversion/bindings/swig/ruby/libsvn_swig_ruby/swigutil_rb.h

(SVN_RB_SWIG_SWIGUTIL_EXPORT): Remove definition and all usages.

* subversion/bindings/swig/svn_ra.i

(const svn_ra_reporter2_t *reporter, void *report_baton): Update caller.


('perl'): Copy libsvn_swig_perl to $PATH instead of _Core.

  1. … 11 more files in changeset.
Following up on r1505481, reinstate the dynamic generation of the ruby shared

library linkage. And resolve the extension table problems that were hidden

for me by this problem. This should fix building swig ruby on !Windows.

* build/generator/

(add_dependencies): Use the retrieved extension instead of accidentally

hardcoding .so.

* build/generator/

(_extension_map): Create a .so for a .so project.

  1. … 1 more file in changeset.
Make it possible to run the Swig Ruby testsuite on Windows.

Somehow my Ruby expects its DLLs to be named .so on Windows, so apply a

similar handling as in the Python build: compile to the expected extension.

Make '' capable of starting the ruby tests and prepare to

also handle the python and perl tests.

* build/generator/

(add_dependencies): Reorganize if to make python and perl handling

of dll extensions special and no replacement default.

* build/generator/

(_extension_map): Add default mapping of 'so'

* build/generator/

(_extension_map): Add Windows mapping of 'so'


Add --swig=language argument. Implement ruby version and

store win32 buildbot code as todo for implementing for python

and perl. (Hopefully the implementation will be smarter than

this buildbot hack)

  1. … 3 more files in changeset.
Only write subversion/libsvn_subr/, when its content has changed

instead of on every invocation of

Visual Studio's dependency checker recompiles files that include this

.inc file (read: libsvn_subr). Which then results in relinking libsvn_subr

and everything that uses it after every invocation.

* build/generator/

(write_file_if_changed): Move helper function from to here.

(write_errno_table): To allow using it from this function.

* build/generator/

(write_file_if_changed): Remove function here.

  1. … 1 more file in changeset.
* build/generator/

(write_errno_table): Remove obsolete part of comment. On Windows we always

required python and on other platforms we require python for generating the

sql headers since 1.7.

Reintegrate the gtest_addition branch to trunk and convert the result to

use Googlemock and begin writing a Googlemock/Googletest-based test suite

for C++HL.

* .: Ignore gmock-fused instead of gtest.

* INSTALL: Note optional dependency on Googlemock.

* Rename all getst to gmock and implement Googlemock downloader.

* build.conf (cxxhl-tests): Depend on libgmock and make conditional.

(libgmock): New target.

* Check for Googlemock.

(GMOCK_SRCDIR, SVN_USE_GMOCK): New substituted variables.


Expand configure variables.


New generic compilation rules.

(COMPILE_CXXHL_CXX): Rewrite in terms of LT_COMPILE_CXX.


* Add placeholder for --disable-gmock option.

* build/generator/ (TargetLinked): Make .cc a source file extension.

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

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

subversion/bindings/cxxhl/tests/test_aprwrap.cpp: New test suite files.

* subversion/bindings/cxxhl/tests/test_exception.cpp: Temporarily disable.

* tools/dist/

Mergeinfo was updated as a side effect of the merge.

  1. … 12 more files in changeset.
windows build: Silence a false positive warning.

Tested by: jcorvel

* build/generator/

(GeneratorBase.write_errno_table): Make this an instance method, rather than

a static one. Use self.errno_filter.

(GeneratorBase.errno_filter): Provide default implementation.

* build/generator/

(WinGeneratorBase.errno_filter): Override the default implementation.

  1. … 1 more file in changeset.
Factor out a helper function. No functional change.

* build/generator/

(GeneratorBase.write_errno_table.write_struct): New helper function.

* build/generator/

(TargetLinked): Remove some redundant and wrong code.

(_collect_paths): Document what happens if the pattern is not found.

Unbreak the build.

* build/generator/

(write_errno_table): Change an assertion that doesn't hold on the buildbot to

an informative message.

Support symbolic names for APR error codes, too.

* build/generator/

(GeneratorBase.write_errno_codes): Parse aprerr.txt into

* subversion/libsvn_subr/error.c

(svn_error_symbolic_name): Use svn__apr_errno (from

* tools/dev/

(get_errors): Add a cross-reference comment.

  1. … 2 more files in changeset.
Note a limitation of a maintainer-mode feature.

* build/generator/

(GeneratorBase.write_errno_table): Add comment pointing out a limitation.

Fixed issue #4338 (Install mod_dontdothat with install-tools)

* build.conf (mod_dontdothat): Set install=tools instead of install=apache-mod.

* build/generator/ (FileInfo): Changed constructor to optionally

store the whole target object, not just its filename and conditional

symbol name.

(_sorted_files): Updated all calls to FileInfo constructor.

* build/generator/ (Generator.write): When generating install

targets, special-cased the installation mode based on the target type

instead of just on the installation area (currently only for Apache


* build/generator/templates/

(Section 7: Install-Group install targets): Spent a few hours untangling

the unholy mess that is the EZT syntax in order to emit correct commands

to allow mod_dontdothat be installed into the $(APACHE_LIBEXECDIR) as

a dependency of the install-tools target.

  1. … 3 more files in changeset.