[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: SWIG Again

From: John Lenz <lenz_at_cs.wisc.edu>
Date: 2004-12-19 04:35:31 CET

On 12/15/04 16:52:07, John Lenz wrote:
> 4) I also haven't hack the makefiles so that the built tarball contains the
> swig generated files. Note, the three/four files that are included by
> the util files from the SWIG Lib directory are self contained. They
> contain a whole bunch of static functions (and NO references) to external
> functions. Thus, to do this step you can also include those four files
> into the subversion tarball. (License wise, this is OK since SWIG is under
> a BSD type license). If you include those 4 files (or during the build you
> could preprocess the util file and distribute the output of gcc -E), someone
> who downloads the subversion tarball would not even care what SWIG is.

I still haven't done this, but I have fixed all the building problems.

In any case, it now supports two types of building
1) SWIG is installed somewhere in the path, or --with-swig is passed
2) If the above fails (either not found, or the given SWIG is not high
enough version), it then looks for a directory named SWIG inside the build
directory. This can be either the latest SWIG CVS (I have the configure
script run ./SWIG/autogen.sh, so if this is the case automake and autoconf
need to be installed...) or it can be a released SWIG tarball. Note if you
use a SWIG tarball, then you need to rename the SWIG-1.3.24 directory to
SWIG.

Alternativly, you can run the following commands... Could even stick a warning
just like you do if apr or apr-util is missing...

cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/swig login
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/swig co SWIG
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/swig co -r rel-1-3-24 SWIG

Note: If you are using option 2), using a different build directory than
the source directory works. SWIG is correctly built inside the build
directory, but when compiling svn_client.c, it fails during linking with
libtool: link: cannot find the library `../../../../subversion/bindings/
swig/python/libsvn_swig_py/libsvn_swig_py-1.la'
It seems the util library is not getting the right path.

I am unable to test this becuase I get a whole bunch version errors. Like
when running anything (like make check-swig-pl) I get
Version mismatch in 'svn_delta': found 1.2.0-dev, expected 1.1.1
Version mismatch in 'svn_subr': found 1.2.0-dev, expected 1.1.1

Where is that coming from?

John

PS: I am backporting this to the 1.1 branch right now, perhaps then I will be
able to test it

--- subversion/build/generator/gen_base.py~fixswig
+++ subversion/build/generator/gen_base.py
@@ -497,7 +497,6 @@
     TargetLib.__init__(self, name, options, gen_obj)
     self.lang = lang
     self.desc = self.desc + ' for ' + lang_full_name[lang]
- self.include_runtime = options.get('include-runtime') == 'yes'
 
     ### hmm. this is Makefile-specific
     self.link_cmd = '$(LINK_%s_WRAPPER)' % string.upper(lang_abbrev[lang])
@@ -530,7 +529,8 @@
     cfile = SWIGObject(build_path_join(self.path, cname), self.lang)
     ofile = SWIGObject(build_path_join(self.path, oname), self.lang)
 
- # the .c file depends upon the .i file
+ # the .c file depends upon the .i file and that preinst-swig is built
+ self.gen_obj.graph.add(DT_SWIG_C, cfile, "swig-build-preinst")
     self.gen_obj.graph.add(DT_SWIG_C, cfile, ifile)
 
     # the object depends upon the .c file
@@ -539,10 +539,6 @@
     # the library depends upon the object
     self.gen_obj.graph.add(DT_LINK, self.name, ofile)
 
- # non-java modules depend on swig runtime libraries
- if self.lang != "java":
- self.gen_obj.graph.add(DT_LINK, self.name, TargetSWIGRuntime(self.lang))
-
     abbrev = lang_abbrev[self.lang]
 
     # the specified install area depends upon the library
@@ -563,11 +559,6 @@
       target = self.targets.get(target.lang, None)
       return target and [target] or [ ]
 
-class TargetSWIGRuntime(TargetLinked):
- def __init__(self, lang):
- self.name = None
- self.external_lib = "-lswig" + lang_abbrev[lang]
-
 class TargetSWIGLib(TargetLib):
   def __init__(self, name, options, gen_obj):
     TargetLib.__init__(self, name, options, gen_obj)
@@ -575,8 +566,6 @@
 
   def add_dependencies(self):
     TargetLib.add_dependencies(self)
- if self.lang != "java":
- self.gen_obj.graph.add(DT_LINK, self.name, TargetSWIGRuntime(self.lang))
 
   class Section(TargetLib.Section):
     def get_dep_targets(self, target):
--- subversion/build/generator/gen_make.py~fixswig
+++ subversion/build/generator/gen_make.py
@@ -375,7 +375,7 @@
 
     for objname, sources in swig_c_deps:
       deps = string.join(map(str, sources))
- source = build_path_join('$(abs_srcdir)', str(sources[0]))
+ source = build_path_join('$(abs_srcdir)', str(sources[1]))
       self.ofile.write('%s: %s\n\t$(RUN_SWIG_%s) %s\n'
                        % (objname, deps, string.upper(objname.lang_abbrev),
                           source))
--- subversion/build/generator/gen_win.py~fixswig
+++ subversion/build/generator/gen_win.py
@@ -292,15 +292,6 @@
       swig_options = ["-" + target.lang]
       swig_deps = []
 
- if self.swig_vernum >= 103020:
- if target.include_runtime:
- swig_options.append("-runtime")
- else:
- swig_options.append("-noruntime")
- else:
- if not target.include_runtime:
- swig_options.append("-c")
-
       if target.lang == "java":
         swig_options.append("-package org.tigris.subversion.swig")
         swig_options.append("-outdir " + self.path("subversion/bindings/swig"
--- subversion/build.conf~fixswig
+++ subversion/build.conf
@@ -333,7 +333,6 @@
 libs = libsvn_swig_py libsvn_swig_java libsvn_swig_perl
        libsvn_delta libsvn_diff libsvn_subr apr
 description = Subversion core library bindings
-include-runtime = yes
 
 # SWIG utility library for Python modules
 [libsvn_swig_py]
--- subversion/build/ac-macros/swig.m4~fixswig
+++ subversion/build/ac-macros/swig.m4
@@ -71,6 +71,15 @@
 [
   where=$1
 
+ # If you change the required swig version number, don't forget to update:
+ # subversion/bindings/swig/INSTALL
+ # subversion/bindings/swig/README
+ # packages/rpm/mandrake-9.0/subversion.spec
+ # packages/rpm/redhat-7.x/subversion.spec
+ # packages/rpm/redhat-8.x/subversion.spec
+ SWIG_MIN_VERSION=24
+ SWIG_BUILD_PREINST=0
+
   if test $where = check; then
     AC_PATH_PROG(SWIG, swig, none)
   else
@@ -80,7 +89,7 @@
       SWIG="$where/bin/swig"
     fi
     if test ! -f "$SWIG" -o ! -x "$SWIG"; then
- AC_MSG_ERROR([Could not find swig binary at $SWIG])
+ SWIG=none
     fi
   fi
 
@@ -88,45 +97,51 @@
     AC_MSG_CHECKING([swig version])
     SWIG_VERSION_RAW="`$SWIG -version 2>&1 | \
                        sed -ne 's/^.*Version \(.*\)$/\1/p'`"
- # We want the version as an integer so we can test against
- # which version we're using. SWIG doesn't provide this
- # to us so we have to come up with it on our own.
- # The major is passed straight through,
- # the minor is zero padded to two places,
- # and the patch level is zero padded to three places.
- # e.g. 1.3.21 becomes 103021
- SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | \
- sed -e 's/[[^0-9\.]].*$//' \
- -e 's/\.\([[0-9]]\)$/.0\1/' \
- -e 's/\.\([[0-9]][[0-9]]\)$/.0\1/' \
- -e 's/\.\([[0-9]]\)\./0\1/; s/\.//g;'`"
+ SWIG_VERSION="`echo \"$SWIG_VERSION_RAW\" | cut -d . -f 3`"
     AC_MSG_RESULT([$SWIG_VERSION_RAW])
- AC_SUBST(SWIG_VERSION)
- # If you change the required swig version number, don't forget to update:
- # subversion/bindings/swig/INSTALL
- # subversion/bindings/swig/README
- # packages/rpm/mandrake-9.0/subversion.spec
- # packages/rpm/redhat-7.x/subversion.spec
- # packages/rpm/redhat-8.x/subversion.spec
- if test -n "$SWIG_VERSION" && test "$SWIG_VERSION" -ge "103019"; then
+ if test -n "$SWIG_VERSION" && test "$SWIG_VERSION" -ge "$SWIG_MIN_VERSION"; then
         SWIG_SUITABLE=yes
         AC_CACHE_CHECK([for swig library directory], [ac_cv_swig_swiglib_dir],[
                         ac_cv_swig_swiglib_dir="`$SWIG -swiglib`"
                        ])
         SWIG_LIBSWIG_DIR="$ac_cv_swig_swiglib_dir"
-
- dnl Newer versions of SWIG have deprecated the -c "do not
- dnl include SWIG runtime functions (used for creating multi-module
- dnl packages)" in favor of the -noruntime flag.
- if test "$SWIG_VERSION" -ge "103020"; then
- SWIG_NORUNTIME_FLAG='-noruntime'
+ else
+ AC_MSG_WARN([SWIG version 1.3.$SWIG_MIN_VERSION or above is required.])
+ SWIG=none
+ fi
+ fi
+
+ if test "$SWIG" = "none"; then
+ AC_MSG_CHECKING([local copy of SWIG source code])
+ if test -d "$srcdir/SWIG" ; then
+ #check which version of SWIG
+ SWIG_VERSION="`sed -ne 's/ANNOUNCE: SWIG \(.*\) \*.*/\1/p' $srcdir/SWIG/ANNOUNCE | \
+ cut -d . -f 3`"
+ if test -n "$SWIG_VERSION" && test "$SWIG_VERSION" -ge "$SWIG_MIN_VERSION"; then
+ if test ! -f "$srcdir/SWIG/configure" ; then
+ $srcdir/SWIG/autogen.sh
+ fi
+ SVN_SUBDIR_CONFIG(SWIG, )
+ SWIG='$(top_builddir)/SWIG/preinst-swig'
+ SWIG_LIBSWIG_DIR='$(top_srcdir)/SWIG/Lib'
+ SWIG_BUILD_PREINST=1
+ SWIG_SUITABLE=yes
+ AC_MSG_RESULT([yes])
       else
- SWIG_NORUNTIME_FLAG='-c'
+ AC_MSG_RESULT([no])
       fi
     else
- SWIG_SUITABLE=no
- AC_MSG_WARN([swig bindings version 1.3.19 or newer needed for swig support.])
+ AC_MSG_RESULT([no])
     fi
+ fi
+
+ if test "$SWIG" = "none"; then
+ AC_MSG_ERROR([Could not find SWIG])
+ fi
+
+ AC_SUBST(SWIG_BUILD_PREINST)
+
+ if test "$SWIG_SUITABLE" = "yes" ; then
 
     if test "$PYTHON" != "none" -a "$SWIG_SUITABLE" = "yes" -a "$svn_swig_bindings_enable_python" = "yes"; then
       AC_MSG_NOTICE([Configuring python swig binding])
@@ -171,7 +186,7 @@
       dnl To relink our generated native binding libraries against
       dnl libsvn_swig_java, we must include the latter's library path.
       dnl ### Eventually reference somewhere under $(DESTDIR)?
- SWIG_JAVA_LINK="$SWIG_PY_LINK -L\$(SWIG_BUILD_DIR)/.libs"
+ SWIG_JAVA_LINK="$SWIG_PY_LINK"
       SWIG_JAVA_INCLUDES="$JNI_INCLUDES"
     fi
 
--- subversion/Makefile.in~fixswig
+++ subversion/Makefile.in
@@ -111,14 +111,13 @@
 APACHE_LIBEXECDIR = $(DESTDIR)@APACHE_LIBEXECDIR@
 
 SWIG = @SWIG@
-SWIG_VERSION = @SWIG_VERSION@
 SWIG_LIBSWIG_DIR = @SWIG_LIBSWIG_DIR@
 SWIG_INCLUDES = -I$(SWIG_SRC_DIR) \
                 -I$(abs_srcdir)/subversion/include \
                 -I$(SWIG_LIBSWIG_DIR) \
                 -DSVN_SWIG_VERSION=$(SWIG_VERSION) \
+ -DSWIG_TYPE_TABLE=subversion \
                 $(SVN_APR_INCLUDES) $(SVN_APRUTIL_INCLUDES)
-SWIG_NORUNTIME_FLAG = @SWIG_NORUNTIME_FLAG@
 SWIG_LDFLAGS = @SWIG_LDFLAGS@
 SWIG_PY_INCLUDES = @SWIG_PY_INCLUDES@ -I$(SWIG_SRC_DIR)/python/libsvn_swig_py
 SWIG_PY_COMPILE = @SWIG_PY_COMPILE@
@@ -129,6 +128,9 @@
 SWIG_JAVA_LINK = @SWIG_JAVA_LINK@
 SWIG_PL_INCLUDES = @SWIG_PL_INCLUDES@
 
+swig-build-preinst:
+ if test "@SWIG_BUILD_PREINST@" -eq "1"; then cd SWIG && make; fi
+
 JAVAHL_INCLUDES= @JNI_INCLUDES@ -I$(abs_builddir)/subversion/bindings/java/javahl/include
 
 SVN_APR_INCLUDES = @SVN_APR_INCLUDES@
@@ -170,8 +172,8 @@
 
 # these commands run SWIG to generate wrapper source files (*.c)
 ### should we protect against swig not being available?
-RUN_SWIG_PY = $(SWIG) $(SWIG_NORUNTIME_FLAG) -python $(SWIG_INCLUDES) $(SWIG_PY_INCLUDES) -o $@
-RUN_SWIG_JAVA = cd ${SWIG_BUILD_DIR}/java/org/tigris/subversion/swig && $(SWIG) $(SWIG_NORUNTIME_FLAG) -java -package 'org.tigris.subversion.swig' $(SWIG_INCLUDES) -o ${abs_builddir}/$@
+RUN_SWIG_PY = $(SWIG) -python $(SWIG_INCLUDES) $(SWIG_PY_INCLUDES) -o $@
+RUN_SWIG_JAVA = cd ${SWIG_BUILD_DIR}/java/org/tigris/subversion/swig && $(SWIG) -java -package 'org.tigris.subversion.swig' $(SWIG_INCLUDES) -o ${abs_builddir}/$@
 
 # Compilation of SWIG-generated C source code
 COMPILE_PY_WRAPPER = $(LIBTOOL) $(LTFLAGS) --mode=compile $(SWIG_PY_COMPILE) $(CPPFLAGS) $(SWIG_INCLUDES) $(SWIG_PY_INCLUDES) -prefer-pic -c -o $@
--- subversion/subversion/bindings/swig/perl/native/Makefile.PL.in~fixswig
+++ subversion/subversion/bindings/swig/perl/native/Makefile.PL.in
@@ -15,8 +15,12 @@
 my $swig_srcdir = "${svnlib_srcdir}/bindings/swig";
 my $swig_builddir = "${svnlib_builddir}/bindings/swig";
 
-my $swig_version = @SWIG_VERSION@;
 my $swig = '@SWIG@';
+$swig =~ s/\$\(top_builddir\)/$top_builddir/;
+my $swig_build_preinst = "";
+if (@SWIG_BUILD_PREINST@) {
+ $swig_build_preinst = "swig_build_preinst";
+}
 
 my @modules = qw/client delta fs ra repos wc/;
 my @ldpaths = ("$swig_builddir/perl/libsvn_swig_perl/.libs",
@@ -88,13 +92,8 @@
    my $module_c_files = join (' ',map { "svn_$_.c"} @modules);
    my $module_make_commands = join ('',map {"\t\$(MAKE) -f Makefile.$_\n"} @modules);
 
- my $flags;
- if ($swig_version >= 103020) {
- $flags = '-noruntime -noproxy';
- } else {
- $flags = '-c';
- }
-
+ my $flags = '-noproxy';
+
    my $swig_command = "$swig $flags -nopm -perl " .
                       "-I$swig_srcdir " .
                       "-I$swig_srcdir/perl/libsvn_swig_perl".
@@ -102,7 +101,7 @@
                       $apr_cflags;
 
    my $swig_modules_command = join ('',
- map {"\nsvn_$_.c : $swig_srcdir/svn_$_.i ".
+ map {"\nsvn_$_.c : $swig_build_preinst $swig_srcdir/svn_$_.i ".
                                    "$svnlib_builddir/libsvn_$_/libsvn_$_-1.la ".
                                    "ra_plugin.hi ra_reporter.hi ".
                                    "delta_editor.hi\n" .
@@ -118,6 +117,10 @@
 test :: modules
 install :: modules
 
+swig_build_preinst:
+ cd $top_builddir/SWIG && make
+ touch swig_build_preinst
+
 par :: all
 \t$perl_path -MPAR::Dist -e"blip_to_par(name=>'SVN",version=>'`$perl_path -Mblib -MSVN::Core -e 'print $SVN::Core::VERSION'`')"
 
@@ -136,7 +139,7 @@
 modules :: $module_c_files
 $module_make_commands\t\$(NOECHO) \$(TOUCH) \$\@
 
-core.c :: $swig_srcdir/core.i
+core.c :: $swig_build_preinst $swig_srcdir/core.i
 \t$swig_command -o core.c $swig_srcdir/core.i
 
 $swig_modules_command
--- subversion/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h~fixswig
+++ subversion/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.h
@@ -34,36 +34,10 @@
 #include "svn_client.h"
 #include "svn_repos.h"
 
-#if SVN_SWIG_VERSION >= 103020
-#include "python/precommon.swg"
-#ifndef SWIG_NewPointerObj
-#define SWIG_NewPointerObj SWIG_Python_NewPointerObj
-#endif
-#endif
-
 #ifdef __cplusplus
 extern "C" {
 #endif /* __cplusplus */
 
-
-/* If this file is being included outside of a wrapper file, then need to
- create stubs for some of the SWIG types. */
-
-/* if SWIGEXPORT is defined, then we're in a wrapper. otherwise, we need
- the prototypes and type definitions. */
-#ifndef SWIGEXPORT
-#define SVN_NEED_SWIG_TYPES
-#endif
-
-#ifdef SVN_NEED_SWIG_TYPES
-
-typedef struct _unnamed swig_type_info;
-PyObject *SWIG_NewPointerObj(void *, swig_type_info *, int own);
-swig_type_info *SWIG_TypeQuery(const char *name);
-int SWIG_ConvertPtr(PyObject *, void **, swig_type_info *, int flags);
-
-#endif /* SVN_NEED_SWIG_TYPES */
-
 /* Functions to manage python's global interpreter lock */
 void svn_swig_py_release_py_lock(void);
 void svn_swig_py_acquire_py_lock(void);
@@ -91,7 +65,7 @@
 PyObject *svn_swig_py_locationhash_to_dict(apr_hash_t *hash);
 
 /* convert a hash of 'const char *' -> TYPE into a Python dict */
-PyObject *svn_swig_py_convert_hash(apr_hash_t *hash, swig_type_info *type);
+PyObject *svn_swig_py_convert_hash(apr_hash_t *hash, struct swig_type_info *type);
 
 /* helper function to convert a 'char **' into a Python list of string
    objects */
--- subversion/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h~fixswig
+++ subversion/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.h
@@ -48,37 +48,6 @@
 # endif
 #endif
 
-
-/* If this file is being included outside of a wrapper file, then need to
- create stubs for some of the SWIG types. */
-
-/* if SWIGEXPORT is defined, then we're in a wrapper. otherwise, we need
- the prototypes and type definitions. */
-#ifndef SWIGEXPORT
-#define SVN_NEED_SWIG_TYPES
-#endif
-
-#ifdef SVN_NEED_SWIG_TYPES
-
-#if SVN_SWIG_VERSION >= 103020
-#include "perl5/precommon.swg"
-/* The following two aren't handled by the precommon.swg. */
-#ifndef SWIG_MakePtr
-#define SWIG_MakePtr SWIG_Perl_MakePtr
-#endif
-#ifndef SWIG_ConvertPtr
-#define SWIG_ConvertPtr SWIG_Perl_ConvertPtr
-#endif
-#endif
-
-typedef struct _unnamed swig_type_info;
-
-swig_type_info *SWIG_TypeQuery(const char *name);
-int SWIG_ConvertPtr(SV *, void **, swig_type_info *, int flags);
-void SWIG_MakePtr(SV *, void *, swig_type_info *, int flags);
-
-#endif /* SVN_NEED_SWIG_TYPES */
-
 apr_pool_t *svn_swig_pl_make_pool (SV *obj);
 
 typedef enum perl_func_invoker {
@@ -92,26 +61,26 @@
                                          const char *fmt, ...);
 
 SV *svn_swig_pl_prophash_to_hash (apr_hash_t *hash);
-SV *svn_swig_pl_convert_hash (apr_hash_t *hash, swig_type_info *tinfo);
+SV *svn_swig_pl_convert_hash (apr_hash_t *hash, struct swig_type_info *tinfo);
 
 const apr_array_header_t *svn_swig_pl_strings_to_array(SV *source,
                                                        apr_pool_t *pool);
 
 apr_hash_t *svn_swig_pl_strings_to_hash(SV *source,
                                         apr_pool_t *pool);
-apr_hash_t *svn_swig_pl_objs_to_hash(SV *source, swig_type_info *tinfo,
+apr_hash_t *svn_swig_pl_objs_to_hash(SV *source, struct swig_type_info *tinfo,
                                      apr_pool_t *pool);
 apr_hash_t *svn_swig_pl_objs_to_hash_by_name(SV *source,
                                              const char *typename,
                                              apr_pool_t *pool);
 const apr_array_header_t *svn_swig_pl_objs_to_array(SV *source,
- swig_type_info *tinfo,
+ struct swig_type_info *tinfo,
                                                     apr_pool_t *pool);
 
 SV *svn_swig_pl_array_to_list(const apr_array_header_t *array);
 SV *svn_swig_pl_ints_to_list(const apr_array_header_t *array);
 SV *svn_swig_pl_convert_array(const apr_array_header_t *array,
- swig_type_info *tinfo);
+ struct swig_type_info *tinfo);
 
 /* thunked log receiver function. */
 svn_error_t * svn_swig_pl_thunk_log_receiver(void *py_receiver,
--- subversion/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c~fixswig
+++ subversion/subversion/bindings/swig/perl/libsvn_swig_perl/swigutil_pl.c
@@ -29,6 +29,10 @@
 #include "svn_pools.h"
 #include "svn_opt.h"
 
+#include <swigrun.swg>
+#include <perl5/perlrun.swg>
+#include <runtime.swg>
+
 #include "swigutil_pl.h"
 
 /* cache SWIG_TypeQuery results in a perl hash */
--- subversion/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c~fixswig
+++ subversion/subversion/bindings/swig/python/libsvn_swig_py/swigutil_py.c
@@ -35,6 +35,10 @@
 
 #include "swigutil_py.h"
 
+#include <swigrun.swg>
+#include <python/pyrun.swg>
+#include <runtime.swg>
+
 
 
 /*** Manage the Global Interpreter Lock ***/
@@ -354,7 +358,7 @@
     return dict;
 }
 
-PyObject *svn_swig_py_convert_hash(apr_hash_t *hash, swig_type_info *type)
+PyObject *svn_swig_py_convert_hash(apr_hash_t *hash, struct swig_type_info *type)
 {
   return convert_hash(hash, convert_to_swigtype, type);
 }
@@ -1354,7 +1358,7 @@
 {
   PyObject *receiver = baton;
   PyObject *result;
- swig_type_info *tinfo = SWIG_TypeQuery("svn_log_changed_path_t *");
+ struct swig_type_info *tinfo = SWIG_TypeQuery("svn_log_changed_path_t *");
   PyObject *chpaths;
   svn_error_t *err = SVN_NO_ERROR;
  
--- subversion/subversion/bindings/swig/core.i~fixswig
+++ subversion/subversion/bindings/swig/core.i
@@ -303,6 +303,17 @@
 */
 #ifdef SWIGPERL
 
+/* Fix for SWIG 1.3.24 */
+#if SWIG_VERSION == 0x010324
+%typemap(varin) apr_pool_t * {
+ void *temp;
+ if (SWIG_ConvertPtr($input, (void **) &temp, $1_descriptor,0) < 0) {
+ croak("Type error in argument $argnum of $symname. Expected $1_mangle");
+ }
+ $1 = ($1_ltype) temp;
+}
+#endif
+
 apr_pool_t *current_pool;
 
 %{
--- subversion/packages/rpm/fedora-1/subversion.spec~fixswig
+++ subversion/packages/rpm/fedora-1/subversion.spec
@@ -1,7 +1,7 @@
 %define apache_version 2.0.48-0.1
 %define apr_version 0.9.5
 %define neon_version 0.24.7
-%define swig_version 1.3.19
+%define swig_version 1.3.24
 %define apache_dir /usr
 # If you don't have 360+ MB of free disk space or don't want to run checks then
 # set make_*_check to 0.
@@ -81,7 +81,6 @@
 %package perl
 Group: Utilities/System
 Summary: Allows Perl scripts to directly use Subversion repositories.
-Requires: swig >= %{swig_version}
 Requires: perl
 %description perl
 Provides Perl (SWIG) support for Subversion.
@@ -89,7 +88,6 @@
 %package python
 Group: Utilities/System
 Summary: Allows Python scripts to directly use Subversion repositories.
-Requires: swig >= %{swig_version}
 Requires: python >= 2
 %description python
 Provides Python (SWIG) support for Subversion.
--- subversion/packages/rpm/redhat-7.x/subversion.spec~fixswig
+++ subversion/packages/rpm/redhat-7.x/subversion.spec
@@ -1,6 +1,6 @@
 %define apache_version 2.0.48-0.1
 %define neon_version 0.24.7
-%define swig_version 1.3.19
+%define swig_version 1.3.24
 %define apache_dir /usr/local/apache2
 # If you don't have 360+ MB of free disk space or don't want to run checks then
 # set make_*_check to 0.
@@ -84,7 +84,6 @@
 %package perl
 Group: Utilities/System
 Summary: Allows Perl scripts to directly use Subversion repositories.
-Requires: swig >= %{swig_version}
 Requires: perl >= 5.8.0
 %description perl
 Provides Perl (SWIG) support for Subversion.
@@ -93,7 +92,6 @@
 %package python
 Group: Utilities/System
 Summary: Allows Python scripts to directly use Subversion repositories.
-Requires: swig >= %{swig_version}
 Requires: python2
 %description python
 Provides Pythong (SWIG) support for Subversion.
--- subversion/packages/rpm/redhat-8+/subversion.spec~fixswig
+++ subversion/packages/rpm/redhat-8+/subversion.spec
@@ -1,7 +1,7 @@
 %define apache_version 2.0.48-0.1
 %define apr_version 0.9.5
 %define neon_version 0.24.7
-%define swig_version 1.3.19
+%define swig_version 1.3.24
 %define apache_dir /usr
 # If you don't have 360+ MB of free disk space or don't want to run checks then
 # set make_*_check to 0.
@@ -81,7 +81,6 @@
 %package perl
 Group: Utilities/System
 Summary: Allows Perl scripts to directly use Subversion repositories.
-Requires: swig >= %{swig_version}
 Requires: perl
 %description perl
 Provides Perl (SWIG) support for Subversion.
@@ -89,7 +88,6 @@
 %package python
 Group: Utilities/System
 Summary: Allows Python scripts to directly use Subversion repositories.
-Requires: swig >= %{swig_version}
 Requires: python >= 2
 %description python
 Provides Python (SWIG) support for Subversion.
--- subversion/packages/rpm/wbel-3/subversion.spec~fixswig
+++ subversion/packages/rpm/wbel-3/subversion.spec
@@ -1,7 +1,7 @@
 %define apache_version 2.0.48-0.1
 %define apr_version 0.9.5
 %define neon_version 0.24.7
-%define swig_version 1.3.19
+%define swig_version 1.3.24
 %define apache_dir /usr
 # If you don't have 360+ MB of free disk space or don't want to run checks then
 # set make_*_check to 0.
@@ -81,7 +81,6 @@
 %package perl
 Group: Utilities/System
 Summary: Allows Perl scripts to directly use Subversion repositories.
-Requires: swig >= %{swig_version}
 Requires: perl
 %description perl
 Provides Perl (SWIG) support for Subversion.
@@ -89,7 +88,6 @@
 %package python
 Group: Utilities/System
 Summary: Allows Python scripts to directly use Subversion repositories.
-Requires: swig >= %{swig_version}
 Requires: python >= 2
 %description python
 Provides Python (SWIG) support for Subversion.
--- subversion/subversion/bindings/swig/INSTALL~fixswig
+++ subversion/subversion/bindings/swig/INSTALL
@@ -4,48 +4,29 @@
 
 
 Step 1: Build & install the proper version of SWIG (which is
- currently swig 1.3.19 or newer).
-
- * Go to http://www.swig.org/, download the sourceball, unpack.
-
- * In the SWIG-X.X.X directory, run ./configure.
-
- If you plan to build the python bindings, and have a system
- with more than one version of python installed, you may need
- to pass
-
- --with-python=/path/to/correct/python/binary
-
- to the configure script. You certainly don't want to use any
- version of python older than 2.0.
-
- If you plan to build the perl bindings, and have a system
- with more than one version of perl installed, you may need
- to pass
-
- --with-perl5=/path/to/correct/perl/binary
-
- to the configure script. You need Perl 5.8.0 or above.
-
- * run 'make && make runtime && make install && make install-runtime'
-
- * To verify you have the goodz installed, check that these things
- were created, assuming your $PREFIX was /usr/local/lib:
-
- - /usr/local/lib/swig1.3/*.i
- - /usr/local/lib/libswig*.so
- - /usr/local/bin/swig
+ currently swig 1.3.24 or newer).
 
- In particular, you want to make sure that libswigpy.so was
- built and installed, since the python bindings are the most-used
- ones at the moment.
+ * If your distribution has packaged SWIG 1.3.24 or greater, then you can
+ skip this step. If either your distribution does not package SWIG or
+ the version of SWIG packaged by your distribution is less that 1.3.24,
+ you will need to download a new version of SWIG.
 
+ * SWIG is a build time only tool and does not need to be installed to
+ build and install the wrappers.
+
+ * Go to http://www.swig.org/, download the sourceball.
+
+ * Inside the subversion source directory, execute
+ tar xvzf swig-1.3.24.tar.gz
+ mv SWIG-1.3.24 SWIG
 
 Step 2: Build and Install Subversion.
 
   See Subversion's own INSTALL file for details.
 
- Make sure that Subversion's ./configure script sees your installed SWIG!
+ Make sure that Subversion's ./configure script sees either your installed
+ SWIG or a SWIG directory in the subversion source directory.
+
   It tries to detect SWIG near the very end of its output.
 
   Also make sure that the configure script sees the paths to the perl and/or
@@ -92,9 +73,7 @@
 
    Perl 5.8.0 is required. You can specify the perl binary by passing
    PERL=/path/to/perl as part of the configure command in the top level
- of the Subversion source tree. Make sure that the perl version used
- is the same one that you configured SWIG to run against during the
- SWIG configure (see above).
+ of the Subversion source tree.
 
    1. Run `make swig-pl' from the top of the Subversion source tree.
 
--- subversion/subversion/bindings/swig/README~fixswig
+++ subversion/subversion/bindings/swig/README
@@ -51,7 +51,7 @@
 (4) limited symbols/functionality exported via the _util module
 
 
-NOTE: the bindings code is being developed using SWIG 1.3.19 or
+NOTE: the bindings code is being developed using SWIG 1.3.24 or
 later. Earlier versions of SWIG will simply *not* work.
 
 

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sun Dec 19 04:37:16 2004

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.