Checkout Tools
  • last updated 7 hours ago
Constraints
Constraints: committers
 
Constraints: files
Constraints: dates

Changeset 856014 is being indexed.

Merge python-bindings-improvements to trunk, by comparing trunkURL with

branchURL.

Major changes:

* Always build SWIG headers in the build dir, unless we are still using

pristine SWIG headers from an official Subversion release (r15865).

* Enable SWIG bindings, even if we compile --without-swig. In release builds,

we can build the bindings without SWIG (r15857).

* Refactor SWIG generator to use a modular architecture, separate from the

Unix / Windows generators (r15855).

Minor changes:

* See r15879, r15870, r15868, r15867, r15857, and r15856.

Approved by: jerenkrantz

  1. … 17 more files in changeset.
Merge python-bindings-improvements to trunk, by comparing trunkURL with

branchURL.

New features:

- Automated Test Suite

* Test suite for memory pools (r15396, r15462)

* Test suite for FS library (r15590, r15632)

* In-build-directory testing (r15478)

* Nightly smoke tests (r15505)

- Automatic Memory Management

* Autogenerated proxy classes for SVN structs (r15428)

* Hand-written proxy classes for APR structs (r15484)

* Real reference counting for Pool objects (r15489, r15495, r15500)

* Treat svn_string_t objects as Python strings (r15595)

* Optional Pool Arguments (r15370, r15529)

- Better Documentation and error messages

* Enabled SWIG autodoc feature (r15490)

* Report assertion failures when variables are deleted prematurely

(r15488, r15489, r15492)

* Python argument numbers in error messages (r15460, r15493, r15525)

- Streamlined build process

* Release versions of Subversion bindings can be built without SWIG (r15620,

r15623, r15626, r15635, r15636, r15637, r15642, r15643)

* Automatic dependency checking for SWIG files (r15381, r15405, r15426,

r15429, r15430)

* Makefile rule for clean-swig-py (r15476)

- Other changes

* Compile-time type lookups for SWIG (r15396, r15407, r15408, r15409,

r15412, r15417)

* Move SWIG includes into include directory (r15407, r15408, r15413)

* Refactoring (r15411, r15425, r15453, r15521, r15522, r15527, r15559)

* SWIG bindings compile with Microsoft Visual C++ 6.0 (r15644)

* Minor bugfixes (r15409, r15494, r15496, r15497, r15498, r15499, r15501,

r15511, r15519, r15526, r15565, r15566, r15591, r15592, r15603, r15607,

r15645, r15646, r15653, r15579)

To see commit logs for this feature, examine

/branches/python-bindings-improvements, r15365:15846

Approved by: kfogel

Review by: dberlin

breser

cmpilato

brane

Testing by: Troy Straszheim <troy@resophonic.com>

Christian Boos <cboos@wanadoo.fr>

cmpilato

  1. … 53 more files in changeset.
Add '--with-ruby-test-verbose' option to configure script for changing

output level of Ruby bindings tests.

* Makefile.in

(SWIG_RB_TEST_VERBOSE): Add.

(check-swig-rb): Add '--verbose' option.

* build/ac-macros/swig.m4(SVN_FIND_SWIG):

Add '--with-ruby-test-verbose' option.

  1. … 1 more file in changeset.
Fix link command configuration for Ruby bindings.

* build/ac-macros/swig.m4

(AC_CACHE_CHECK([how to link Ruby extensions])): Use '\S+'

instead of '\w+' for detecting compiler name.

Make the errors that happen when a user executes "make swig-py", but the

Python bindings were not configured, a tiny bit less obscure.

* build/ac-macros/swig.m4

(SWIG_PY_COMPILE, SWIG_PY_LINK, SWIG_RB_COMPILE, SWIG_RB_LINK):

Set variables which define commands to "none",

rather than "", when the relevant bindings language is not configured.

Remove the configure option --enable-swig-bindings entirely. It did not

actually enable anything. All it did was to conditionally skip a few

configure tests, whilst its presence made the swig build system just that

little bit more incomprehensible.

* build/ac-macros/swig.m4

(AC_ARG_ENABLE(swig-bindings)): Delete.

(SWIG_BINDINGS_ENABLE): Delete.

(SVN_FIND_SWIG): Do not test $svn_swig_bindings_enable_foo variables.

Remove the SWIG-Java bindings.

* Makefile.in:

* build.conf:

* build/ac-macros/swig.m4:

* build/generator/gen_base.py:

* build/generator/gen_win.py:

* subversion/bindings/java/README:

* subversion/bindings/swig/INSTALL:

* subversion/bindings/swig/apr.i:

* subversion/bindings/swig/core.i:

* subversion/bindings/swig/svn_client.i:

* subversion/bindings/swig/svn_delta.i:

* subversion/bindings/swig/svn_fs.i:

* subversion/bindings/swig/svn_ra.i:

* subversion/bindings/swig/svn_repos.i:

* subversion/bindings/swig/svn_string.i:

* subversion/bindings/swig/svn_types.i:

* subversion/bindings/swig/svn_wc.i:

Remove SWIG-Java bindings. Many changes.

  1. … 16 more files in changeset.
Merge the ruby branch to trunk.

  1. … 46 more files in changeset.
* build/ac-macros/swig.m4: Tweak the APR_INT64_T_FMT regexps to take

account of Forte whitespace handling. (It prepends whitespace.)

* build/ac-macros/swig.m4: Tweak the APR_INT64_T_FMT regexps to take

account of gcc-2.95 whitespace handling.

Followup to r12717 - fix typo

Suggested by: Kouhei Sutou <kou@cozmixng.org>

* build/ac-macros/swig.m4: Fix missing parenthesis.

SWIG 1.3.24 compatibility.

Patch by: John Lenz <lenz@cs.wisc.edu>

me

* Makefile.in (SWIG_INCLUDES): Add -DSWIG_TABLE_TYPE=subversion.

* subversion/bindings/swig/core.i: Add a typemap which (I think) is

compensating for a defect in SWIG 1.3.24.

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

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

For 1.3.24+, include the SWIG runtime code inline in the libsvn_swig_py and

libsvn_swig_perl libraries.

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

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

For 1.3.24+, do not use the old 'declare SWIG runtime functions' code.

* subversion/bindings/swig/perl/native/Makefile.PL.in:

* build/generator/gen_win.py (WinGeneratorBase.get_proj_sources):

For 1.3.24+, use neither -noruntime or -c.

* build/ac-macros/swig.m4:

Accept SWIG 1.3.24+.

For 1.3.24+, use neither -noruntime or -c.

New AC_SUBSTed values LSWIGPL and LSWIGPY, defined to '-lswigpl' and

'-lswigpy' for old SWIG versions, and to empty strings for 1.3.24+.

Update versions-required message.

* build/generator/gen_base.py (TargetSWIGRuntime.__init__): Use $(LSWIGPL) and

$(LSWIGPY), instead of -lswigpl and -lswigpy.

  1. … 9 more files in changeset.
Fix breakage with APR not in /usr, introduced in r12557.

* build/ac-macros/swig.m4: Add the APR includes to CPPFLAGS whilst trying to

include <apr.h>.

Python bindings: Make svn_client_blame() usable, by thunking the callback.

ATTENTION: This breaks the Windows Python bindings build!

I have left what I believe to be the appropriate fix commented out in

svn_private_config.hw, for someone who can test it to review and uncomment.

* build/ac-macros/swig.m4: Deduce the appropriate Python/C API format character

for apr_int64_t, and define it in svn_private_config.h.

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

Include svn_private_config.h.

(svn_swig_py_client_blame_receiver_func): New function.

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

(svn_swig_py_client_blame_receiver_func): Declare new function.

* subversion/bindings/swig/svn_client.i: New typemap, using the new function.

* subversion/svn_private_config.hw: Add info to help someone fix the Windows

build.

  1. … 4 more files in changeset.
Fix the error message to tell which versions of swig are required.

* build/ac-macros/swig.m4

Only 1.3.19, 1.3.20 and 1.3.21 work.

Update our configure test and docs to show what versions of SWIG we actually

work with.

* subversion/bindings/swig/INSTALL

Update version range.

* build/ac-macros/swig.m4

Update version range for the test.

  1. … 1 more file in changeset.
Remove some confusing syntax pointed out by ghudson.

* build/ac-macros/swig.m4

test doesn't need square brackets around it.

Prefer -o over two test invocations with ||

Make configuration of SWIG location a little more user friendly.

* build/ac-macros/swig.m4

Handle the possibility that they're passing the path to the swig binary.

If the path they give is not to the binary itself or the prefix swig is

installed in immediately error out. Note that this will not cause an

error unless the users is explicitly passing the path to swig. Users

without SWIG installed can continue to build as they always have.

Explicitly link the python bindings against libpython.

* Makefile.in: New substitution variable, SWIG_PY_LIBS.

* build.conf: Add SWIG_PY_LIBS to the libsvn_swig_py link.

* build/ac-macros/swig.m4: Set and substitute SWIG_PY_LIBS.

* build/get-py-info.py: New --libs option to provide SWIG_PY_LIBS.

Teach how to escape OS X -framework options so libtool doesn't eat them.

Teach how to add extra library arguments on Cygwin, like distutils does.

  1. … 3 more files in changeset.
Revert the effects of r10233 and r10236 on unix. These changes caused

the build system to include swig runtime functions in our swig "core"

modules so we wouldn't have to depend on external swig runtime

libraries. But they also caused a few problems.

1) They caused a libtool error on linux

(http://www.contactor.se/~dast/svn/archive-2004-07/0758.shtml).

Putting the runtime into the core module meant that the other modules

would need to be linked to it to access the runtime. Libtool would do

the linking correctly during the initial build, but when it relinked

the libraries during installation it would try invoke gcc with -l_core,

which doesn't work because core modules have names like _core.so, not

lib_core.so. This is probably a bug in libtool.

2) They don't work on cygwin because they create mutual dependencies

between core modules and libsvn_swig_(perl|py|java) modules. On cygwin,

libtool can't make two shared libraries which depend on each other.

A solution to this which was never committed was to build the

libsvn_swig_* libraries as static libraries.

(http://www.contactor.se/~dast/svn/archive-2004-07/0586.shtml)

3) They don't work on darwin. Having other modules depend on the core

modules is no good on darwin because the core moules are built

as dynamically loadable libraries, not dynamically linked libraries

on that platform. On darwin, a library can be either dynamically

loadable or dynamically linked, but not both.

(http://www.contactor.se/~dast/svn/archive-2004-07/0759.shtml)

* build/ac-macros/swig.m4:

* Makefile.in

revert r10236

* build/generator/gen_base.py

(SWIGObject._init_, TargetSWIG.add_dependencies):

revert r10236

(TargetSWIGRuntime, TargetSWIG.add_dependencies):

undo effects of r10233 on unix build, restore dependency on external

swig runtime libraries

* build.conf

(swig_client, swig_delta, swig_fs, swig_ra, swig_repos, swig_wc):

undo effects of r10233 on unix build, make dependencies on

"swig_core" into "nonlib" dependencies so they only show up

on windows

  1. … 4 more files in changeset.
Get python bindings to build on unix and to not depend on an external

swig runtime library.

* build/ac-macros/swig.m4:

(SWIG_RUNTIME_FLAG):

new make variable for swig -runtime option

* Makefile.in

(RUN_SWIG_PY, RUN_SWIG_NORUN_PY, RUN_SWIG_JAVA, RUN_SWIG_NORUN_JAVA):

use separate commands for running swig with and without runtime

* build.conf

(libsvn_swig_python):

use "nonlibs" dependency on "swig_core" instead of "libs" dependency

to avoid circular dependency error in make

* build/generator/gen_base.py

(SWIGObject.__init__, TargetSWIG.add_dependencies):

add new "target" member to swig objects to expose more build

information to make backend

* build/generator/gen_make.py

(Generator.write):

use "include-runtime" values on swig targets to determine whether to

call swig with runtime or not

  1. … 4 more files in changeset.
Fix incorrect quoting in swig.m4.

* build/ac-macros/swig.m4

Use [] not "".

No longer build any bindings code by default, per agreement with sussman,

cmpilato and myself on IRC.

* Makefile.in

Remove SWIG_BUILD_RULES from local-all, SWIG_INSTALL_RULES from local-install.

* build/ac-macros/swig.m4

Remove SWIG_BUILD_RULES and SWIG_INSTALL_RULES.

* INSTALL

Update the Perl documentation, now that it isn't built by default.

  1. … 2 more files in changeset.
Add test for perl version to disable perl bindings if not 5.8.0 or newer.

Also remove some cruft from the old build setup.

* Makfile.in

Remove SWIG_PL_COMPILE and SWIG_PL_LINK which are unused.

SWIG_PL_INCLUDES doesn't need the path to libsvn_swig_perl.

* build/ac-macros/swig.m4

Remove SWIG_PL_COMPILE and SWIG_PL_LINK which are unused.

Add test for perl version newer than 5.8.0.

  1. … 1 more file in changeset.
Finish up making the Perl binding build integrated into the Subversion mainline

build process. In the process make the Perl bindings build a lot smarter about

dependcies! Also the Perl bindings will now build and install by default if

they are enabled.

* Makefile.in

Remove RUN_SWIG_PL, COMPILE_PL_WRAPPER, LINK_PL_WRAPPER, INSTALL_SWIG_PL as

they are unused now.

Add SWIG_PL_DIR to make things more readable.

Add PERL variable to acquire the PERL detected by configure.

Add SWIG_CLEAN_RULES to the local-clean target.

Add target to build the Perl Makefile from Makefile.PL

Add targets to build, check/test, install and clean the perl bindings.

* build.conf

Remove the perl bindings from build.conf so the Python generator won't

generate the wrong targets that don't work. But leave in the configuration

for libsvn_swig_perl, the support library, that the mainline build already

knew how to build properly.

* build/ac-macros/swig.m4

Enable Perl bindings to build and install by default.

Add SWIG_CLEAN_RULES and set it so clean-swig-pl can be called by the

clean target.

* subversion/bindings/swig/perl/native

Add Makefile.PL to the svn:ignore property.

* subversion/bindings/swig/perl/native/Makefile.PL.in

Add dependency on the relevent library we're binding so if the library is

changed the bindings will be rebuilt.

* subversion/bindings/swig/INSTALL

Update documentation to match the new and improved build process.

  1. … 5 more files in changeset.
* build/ac-macros/swig.m4

(SWIG_JAVA_LINK): Include the path to the directory containing

libsvn_swig_java in the preprocessor token. Avoids errors when

building the SWIG Java bindings like:

/usr/bin/ld: cannot find -lsvn_swig_java-1

Where the link command references the library, but can't find it

because it's not in the linker's library path.

* build/ac-macros/swig.m4

Removed my comment about being unable to confirm that SWIG 1.3.20

was the version where the "-c" flag became "-noruntime". SWIG's

release notes <http://www.swig.org/Release/CHANGES> verify this.

* build/ac-macros/swig.m4

Defined a SWIG_NORUNTIME_FLAG preprocessor token to gracefully

handle SWIG's deprecation of the "-c" flag, documented as "do not

include SWIG runtime functions (used for creating multi-module

packages)". In my version of SWIG (1.3.21), use of "-c" generates

this warning:

SWIG:1: Warning(120): -c command line option is deprecated.

Use -noruntime instead.

* Makefile.in

Made the SWIG_NORUNTIME_FLAG provided by configure available as a

Makefile variable, and used it in place of "-c" in RUN_SWIG_PY,

RUN_SWIG_PL, and RUN_SWIG_JAVA.

  1. … 1 more file in changeset.
Stop depending upon presence of SWIG to build JavaHL.

* Makefile.in: Directly include JNI_INCLUDES instead of referencing

SWIG_JAVA_INCLUDES.

* build/ac-macros/java.m4 (SVN_FIND_JDK): Move in the JNI_INCLUDE expansion

into here from swig.m4.

* build/ac-macros/swig.m4 (SVN_FIND_SWIG): Use the JNI_INCLUDE expansion

rather than doing it here.

  1. … 2 more files in changeset.
Allow javahl to be built by the core build system. Pass --enable-javahl to

configure. (Not clear what needs to be added for MSVC support though;

Python eagle eyes may find some better ways to optimize the gen_make code.)

* Makefile.in: Add javahl_* specific location variables; add support for C++

compilers if JavaHL is defined; add JAVAH location.

* build.conf: Add JavaHL targets.

* configure.in: Add --enable-javahl argument; if we enabled javahl, look for

a C++ compiler.

* build/ac-macros/java.m4: Clean up JDK detection to allow non-standard

(i.e. Darwin) installs; add location for JNI includes here rather than

deferring to SWIG m4 macros.

* build/ac-macros/swig.m4: Use pre-detected JNI includes dir instead of

guessing.

* build/generator/gen_base.py: Add support for C++ and Java compilation

* build/generator/gen_make.py: Write out the correct stubs if we are doing

Java compilation.

* subversion/bindings/java/javahl/src/org/tigris/subversion/javahl/SVNClient.java:

Due to the our build system, javahl *MUST* be compiled with its major

version number. This follows with the rest of the Subversion build system

and our library structure. So, this is an incompatible change with

JavaHL's previous build system, but necessary for 'nice' integration with

the core build system.

  1. … 7 more files in changeset.