Checkout Tools
  • last updated 1 hour ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates
Merge the swig-py3 branch to trunk.
  1. … 61 more files in changeset.
Fix link flags and include directory in pkg-config template

* build/generator/gen_make.py

(write_pkg_config_dot_in_files): Add version variable for template.

Include version in link flag for svn lib.

* build/generator/templates/pkg-config.in.ezt:

(): Add /subversion-1 to include path

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

* Makefile.in

(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/gen_make.py

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

* build/generator/gen_win.py

(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.
Merge the 'java10-compat' branch to trunk
  1. … 6 more files in changeset.
* build/generator/gen_make.py

(Generator.write_standalone): Use the same Python executable as

used to run the script, which might not be called "python".

Tweak the makefile generator to always generate the same

dependency path for relative dependencies.

This fixes occasional parallel build failures when amalgamated SQLite

is used that were caused by two different targets (and dependency paths)

being generated for sqlite3wrapper.lo, which confused make to attempt

compiling that file twice in paralell ... with predictable results.

* build/generator/gen_make.py

(_normstr): New; like str() but sends the result through os.path.normpath.

(Generator.write): For targets, along with generating the list of object

files, also generate the same list with normalized paths.

For object file rules, normalize the name and the paths to sources

and other dependencies.

* generator/templates/build-outputs.mk.ezt:

Generate target dependencies with normalized paths, whilst leaving

the linkable objects with relative paths.

  1. … 1 more file in changeset.
r build/generator/gen_make.py

(write_pkg_config_dot_in_files): Handle Subversion's own inter-library

dependencies via pkg-config's Requires.private feature and ensure that

libraries add themselves to the linker command line.

Install pkg-config files.

* Makefile.in: Define $(pkgconfig_dir).

* build/generator/gen_make.py

(Generator.write.file_to_eztdata): Add fields for pkg-config data.

(Generator.write): Generate install rules for pkg-config files.

* build/generator/templates/build-outputs.mk.ezt:

Add pkg-config install rule templates.

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

Revert r1577252, as it only broke things further.

[Reverted in r1577258]

* build/generator/gen_make.py

(write_pkg_config_dot_in_files): Following up on r1577226, try to fix the

build on the unix buildbots.

* build/generator/gen_make.py

(Generator.write_pkg_config_dot_in_files): Stop skipping the 'intl' lib

which is now properly handled as $(SVN_INTL_LIB) in *nix builds.

Kick off work on pkg-config support (issue #738, and also #4435).

pkg-config support allows API consumers on UNIX-like systems to link

to Subversion libraries without having to manually specify the correct

set of linker flags, including the particular flags for dependencies

required by a particular build of Subversion (bdb, serf, etc.).

pkg-config uses libsvn_foo.pc files which describe the set of flags

required to link to libsvn_foo.

See http://www.freedesktop.org/wiki/Software/pkg-config/ for more information.

Make gen-make.py produce .pc.in files for all Subversion libraries,

and make the configure script produce .pc files from these .pc.in files.

Dependency declarations and linker flags are based on information

parsed from build.conf.

Dependencies of Subversion which support pkg-config can be marked

as such in build.conf, allowing pkg-config to resolve them. The

name of the dependency's pkg-config script has to be specified

without the .pc extension, e.g.:

[gnome-keyring]

type = lib

external-lib = $(SVN_GNOME_KEYRING_LIBS)

pkg-config = gnome-keyring-1

Dependencies not aware of pkg-config are added to linker flags directly.

To illustrate, the generated libsvn_client.pc file on my system contains:

[[[

prefix=/home/stsp/svn/prefix/svn-trunk

exec_prefix=${prefix}

libdir=${exec_prefix}/lib

includedir=${prefix}/include

Name: libsvn_client

Description: Subversion Client Library

Version: 1.9.0

Required: apr-1

Required.private:

Libs: -L${libdir} -lsvn_wc -lsvn_ra -lsvn_delta -lsvn_diff -lsvn_subr

Cflags: -I${includedir}

]]]

There is no support for optional dependencies between Subversion libraries

yet, however. For instance, libsvn_client might or might not be linked to

libsvn_ra_serf. Such dependencies are currently omitted. Also, I'm not

sure yet what to do in cases where a dependency might be statically or

dynamically linked, e.g. sqlite.

The .pc files are not being installed yet. I don't want to expose these

files to systems using pkg-config until all outstanding issues are resolved.

* build/generator/gen_make.py

(Generator.write): Generate .pc.in files.

(Generator.write_pkg_config_dot_in_files): New helper function.

* build/generator/templates/pkg-config.in.ezt: New file, the .pc.in template.

* build.conf: apr, apr-util, serf, gnome-keyring, and sqlite support pkg-config.

There may be others (kwallet?) but I haven't investiged more yet.

I also haven't checked yet if all versions of these dependencies support

pkg-config. The most recent versions do support it.

* configure.ac

(SVN_APR_MAJOR_VERSION): Declare. APR's major version number is needed

to select the correct pkg-config script name (e.g. apr-1 or apr-2).

Generate .pc files from pc.in files.

* subversion/libsvn_auth_gnome_keyring, subversion/libsvn_auth_kwallet,

subversion/libsvn_client, subversion/libsvn_delta, subversion/libsvn_diff,

subversion/libsvn_fs, subversion/libsvn_fs_base, subversion/libsvn_fs_fs,

subversion/libsvn_fs_util, subversion/libsvn_fs_x, subversion/libsvn_ra,

subversion/libsvn_ra_local, subversion/libsvn_ra_serf,

subversion/libsvn_ra_svn, subversion/libsvn_repos, subversion/libsvn_subr,

subversion/libsvn_wc: Ignore generated .pc and .pc.in files.

  1. … 20 more files in changeset.
Adjust gen_make.py to handle wrapped add-deps.

* build.conf: Revert temporary fix from r1514020.

* build/generator/gen_make.py

(Generator.write): Make the add_deps value in the _eztdata be a list.

* build/generator/templates/build-outputs.mk.ezt: Treat target.add_deps as a list.

  1. … 2 more files 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 'win-tests.py' capable of starting the ruby tests and prepare to

also handle the python and perl tests.

* build/generator/gen_base.py

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

of dll extensions special and no replacement default.

* build/generator/gen_make.py

(_extension_map): Add default mapping of 'so'

* build/generator/gen_win_dependencies.py

(_extension_map): Add Windows mapping of 'so'

* win-tests.py

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.
Fixed issue #4338 (Install mod_dontdothat with install-tools)

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

* build/generator/gen_base.py (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/gen_make.py (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

modules).

* build/generator/templates/build-outputs.mk.ezt

(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.
* build/generator/gen_make.py

(Generator): Add subject/date/author/to details to an email reference

for longevity.

In the build system, rename 'makefile.ezt' to build-outputs.mk.ezt' to make

it easier to find, since it is the source file for 'build-outputs.mk'.

* build/generator/gen_make.py

(Generator): Update the filename passed to ezt.Template().

* build/generator/templates/makefile.ezt

Rename to ...

* build/generator/templates/build-outputs.mk.ezt

... this, and update the self-reference in the 'do not edit' comment.

  1. … 2 more files in changeset.
When the build system writes an automatically generated file, say what

program generated it and, when applicable, from which source file, to help

us navigate around the build system. We were doing so in some but not all

cases.

* build/generator/gen_make.py

(Generator): Refer to this program in transform_libtool_scripts.sh and

autogen-standalone.mk, and to 'build-outputs.mk' in the latter.

* build/generator/swig/header_wrappers.py

(Generator): Refer to this program in the header wrapper files. (It

was already referring to the source header file.)

* tools/dev/gen-py-errors.py

(HEADER): Correct the name of this program, as written to stdout.

  1. … 2 more files in changeset.
Getting sidetracked for a bit: create placeholder and update build for

a future high-level C++ API for Subversion, based on the same principles

as JavaHL.

* configure.ac: Extend the set of maintainer-mode warning flags for C++.

* Makefile.in (CXXHL_INCLUDES, COMPILE_CXXHL_CXX): New macros.

* build.conf (libsvncxxhl): New top-level build target.

(private-includes): Add C++HL include directories.

* build/generator/gen_make.py: Generate extra install rules for C++HL.

* subversion/bindings/cxxhl: New directory.

* subversion/bindings/cxxhl/README: Describe the design and goals of C++HL.

* subversion/bindings/cxxhl/include/svn_cxxhl_types.h,

subversion/bindings/cxxhl/include/types/svn_cxxhl_tristate.h,

subversion/bindings/cxxhl/src/types/tristate.cpp: Example implementation

of the C++HL wrapper for svn_tristate_t.

  1. … 12 more files in changeset.
Followup to r1374198: Introduce a new build.conf predicate "when", which names

the post-configure substituted variable that controls the building and linking

of a module. Since the makefiles are generated before configure, "when" cannot

control the dependencies, but it can control the build/link commands.

With this change, we can now put mod_dontdothat back into the tools group.

* build.conf (mod_dav_svn, mod_authz_svn): when = INSTALL_APACHE_MODS.

(mod_dontdothat): when = INSTALL_APACHE_MODS, install = tools.

* Makefile.in (INSTALL_APACHE_MODS): Define, substituted.

* build/ac-macros/apache.m4: Define INSTALL_APACHE_MODS.

* build/generator/gen_base.py (DependencyNode): Add optional member "when".

(ObjectFile): Accept optional "when" in constructor and propagate it

to DependencyNode. Propagate Target.when everywhere when creating ObjectFile.

(Target): Initialize "when" from buil.conf options.

(FileInfo): New.

(_sorted_files): Return a list of FileInfo instead of just filenames, so that

"when" can propagate to install group dependencies.

* build/generator/gen_make.py: Propagate "when" to targets, install areas and

and dependency lists for the template processor.

* build/generator/templates/makefile.ezt (Sections 5, 7 and 10): Make the

build/link/install commands conditional on the "when" predicate.

  1. … 5 more files in changeset.
Finish issue #3308 ("Promote 'svnmucc' tool (or functionality) into a

fully supported binary"). This change was made using semi-manual

invocations of 'svn diff' and 'svn patch' from danielsh's

^/subversion/branches/svnmucc/ branch (to account for changes made to

svnmucc.c since the branch was cut).

* Makefile.in

(check, davcheck, davautocheck, svncheck, svncheck6, svnsshcheck,

bdbcheck): Remove explicit svnmucc dependency.

(INSTALL_EXTRA_TOOLS): New.

* subversion/tests/cmdline/svntest/main.py

(svnmucc_binary): Account for relocated binary.

* tools/client-side/svnmucc,

* tools/client-side/svnmucc/svnmucc.c

Moved these from here ...

* subversion/svnmucc,

* subversion/svnmucc/svnmucc.c

... to here.

* subversion/svnmucc/svnmucc.1

New.

* tools/dev/windows-build/Makefile

(package): Remove svnmucc from list of copied binaries.

* build.conf

(svnmucc): Move this section to where other first-class binaries

live, and update to track new src/binary location.

* win-tests.py

(): Don't copy the svnmucc binary.

* notes/knobs

(SVN_TRY_THIS_AT_HOME): New placeholder.

* build/generator/gen_make.py

(Generator.write): Set 'extra_install' for the 'tools' area, too.

* build/win32/vc6-build.bat.in

Also copy svnmucc.exe.

* build/win32/make_dist.py

Track new locations for svnmucc.exe and svnmucc.pdb.

  1. … 11 more files in changeset.
Create a convenience makefile target to build just the dependencies of tests.

Use-case:

% ./configure && make && (cd subversion/tests/cmdline && ./basic_tests.py)

* build/generator/gen_base.py

(GeneratorBase.__init__): Initialize TEST_HELPERS.

(TargetExe.add_dependencies): Fill TEST_HELPERS.

* build/generator/gen_make.py

(Generator.write): Pass TEST_HELPERS to ezt.

* build/generator/templates/makefile.ezt

(check-deps, test-deps): New targets, defined in terms of TEST_HELPERS.

  1. … 2 more files in changeset.
Move installation of mod_dontdothat to 'make install-tools'.

* build.conf

(mod_dontdothat): Set 'install' to 'tools'.

* build/generator/gen_make.py

(Generator.write):

Grow support for type=apache-mod within area=tools. See comments

within for a link to a dev@ post discussing this.

* build/generator/templates/makefile.ezt

(Section #7: install-tools):

Allow some tools to use the 'install-apache-mod'/'install-mods-shared'

semantics.

  1. … 2 more files in changeset.
Remove libsvn_auth_gpg_agent and move gpg-agent support into libsvn_subr.

There is no need to put gpg-agent support into a library loaded at runtime.

The svn code talks to the GPG agent via a UNIX stream socket.

There are no massive external library dependencies involved that

we need to keep at a distance, as with GNOME or KDE.

This should also fix the problem where svn fails to enable gpg-agent

support on Mac OS X because of a filename mismatch (*.so vs. *.dylib).

* subversion/include/svn_auth.h

(svn_auth_gpg_agent_version): Remove declaration. A version function

is only needed for DSOs.

(svn_auth_get_gpg_agent_simple_provider): Declare this function on Darwin.

Remove mention of libsvn_auth_gpg_agent from docstring.

* subversion/libsvn_auth_gpg_agent,

subversion/libsvn_auth_gpg_agent/version.c: Remove.

* subversion/libsvn_auth_gpg_agent/gpg_agent.c: Move to ...

* subversion/libsvn_subr/gpg_agent.c: ... here. Wrap all code into

the SVN_HAVE_GPG_AGENT define.

* subversion/libsvn_subr/auth.c

(svn_auth_get_platform_specific_provider): Directly call

svn_auth_get_gpg_agent_simple_provider() if SVN_HAVE_GPG_AGENT is defined

instead of loading gpg-agent support as a DSO.

* subversion/bindings/swig/core.i: Remove svn_auth_gpg_agent_version.

* configure.ac,

build.conf,

build/generator/gen_make.py,

build/generator/gen_win.py: Remove references to libsvn_auth_gpg_agent.

  1. … 8 more files in changeset.
Fix problems in the bindings tests that occured since the reintegration

of the gpg-agent-password-store branch.

* subversion/bindings/swig/core.i: Ignore functions related to the

platform-specific GPG-Agent auth provider.

* build/generator/gen_make.py: Treat libsvn_auth_gpg_agent the same

way as libsvn_auth_gnome_keyring and libsvn_auth_kwallet. (Not really

sure what this special-casing here does, but keeping this consistent

is probably good.)

  1. … 1 more file in changeset.
Restore special handling of libsvn_auth_gnome_keyring and libsvn_auth_kwallet

in transform_libtool_scripts.sh, which was lost in r1049944.

* build/generator/gen_make.py

(Generator.write_transform_libtool_scripts): Set paths to libsvn_auth_gnome_keyring

and libsvn_auth_kwallet libraries.

(Generator._get_all_lib_deps): Add libsvn_auth_gnome_keyring and libsvn_auth_kwallet

as dependencies of libsvn_subr.

* build/generator/gen_make.py

(Generator._get_all_lib_deps): Use a set instead of a dictionary with True

values.

Move the 'check-SWIG' Makefile check to the point that $(SWIG) is first

actually used, to avoid suprious errors otherwise. This replaces

r1054087, and is an attempt to fix issue #3850.

Suggested by: arfrever

* build/generator/templates/makefile.ezt

(Section 4.swig_c.c_file): Depend on 'check-SWIG'.

* Makefile.in

(swig-pl, swig-py, swig-rb): Don't depend on 'check-SWIG'.

* build/generator/gen_make.py

(Generator.write): Same.

  1. … 2 more files in changeset.
Fix a regression introduced in r1049944.

* build/generator/gen_make.py

(Generator.write_transform_libtool_scripts): Don't modify the first 4 lines

in libtool scripts.

[ This was reverted/redone as part of issue #3850, which see. ]

Don't error on 'none: bad command or file name' when SWIG was disabled

at configure-time.

(Yes, I'm on Debian, thanks for asking.)

* Makefile.in

(check-SWIG): New target.

(swig-py, swig-pl, swig-rb): Use new target to fail early.

* build/generator/gen_make.py

(Generator.write): Use the new target in build-outputs.mk, too.

* build/ac-macros/swig.m4

(SVN_FIND_SWIG): Don't check for 'none', just set the thing to 'none'.

As a side effect, the message to stdout is obliterated.

  1. … 2 more files in changeset.