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

Re: svn commit: r16449 - trunk/build/generator

From: David James <james82_at_gmail.com>
Date: 2005-10-04 17:24:20 CEST

On 10/4/05, djames@tigris.org <djames@tigris.org> wrote:
> Author: djames
> Date: Tue Oct 4 09:52:26 2005
> New Revision: 16449
>
> Modified:
> trunk/build/generator/gen_make.py
>
> Log:
> Ensure that all python modules import libsvn._core before importing
> any other modules, so that the initialization code is run in the correct
> order (thus preventing segfaults). We can't implement this trick in SWIG,
> so we do it by postprocessing the SWIG output files.
>
> * build/generator/gen_make.py
> (Generator.write): Update generated *.py files to import libsvn._core first.
>
>
>
> Modified: trunk/build/generator/gen_make.py
> Url: http://svn.collab.net/viewcvs/svn/trunk/build/generator/gen_make.py?rev=16449&p1=trunk/build/generator/gen_make.py&p2=trunk/build/generator/gen_make.py&r1=16448&r2=16449
> ==============================================================================
> --- trunk/build/generator/gen_make.py (original)
> +++ trunk/build/generator/gen_make.py Tue Oct 4 09:52:26 2005
> @@ -1,10 +1,10 @@
> -#
> # gen_make.py -- generate makefiles and dependencies
> #
>
> import os
> import sys
> import string
> +import re
>
> import gen_base
> import generator.util.executable
> @@ -209,7 +209,20 @@
> 'cp -pf $(abs_srcdir)/%s/*.i ' % source_dir +
> '$(abs_builddir)/%s; fi\n' % source_dir +
> '\t$(SWIG) $(SWIG_INCLUDES) %s ' % opts +
> - '-o $@ $(abs_builddir)/%s\n' % source +
> + '-o $@ $(abs_builddir)/%s\n' % source
> + )
> + if objname.lang == "python":
> + # Ensure that all python modules import libsvn._core before importing
> + # any other modules, so that the initialization code is run in the
> + # correct order. We can't implement this trick in SWIG, so we do it
> + # by postprocessing the SWIG output files.
> + pyfile = re.sub(r"(?:svn_)?(\w+)\.c$",r"\1.py", str(objname))
> + self.ofile.write(
> + '\tmv %s %s-swig ' % (pyfile, pyfile) +
> + '&& (echo import _core | cat - %s-swig > %s) ' % (pyfile, pyfile) +
> + '&& rm %s-swig\n' % (pyfile)
> + )
> + self.ofile.write(
> 'autogen-swig-%s: copy-swig-%s\n' % (short[objname.lang], objname) +
> 'copy-swig-%s: %s\n' % (objname, objname) +
> '\t@if test $(abs_srcdir) != $(abs_builddir) -a ' +

Any suggestions for how we can port this fix to Windows?

Here's a test case:
  python -c "import svn.wc"

If the above test case doesn't work for you on Unix, run the following commands:
  # Regenerate .py files from scratch. Normally, makefiles do not automatically
  # regenerate output due to changes in the makefile itself, so we have to make
  # extraclean-swig-py here to take advantage of the changes in r16449
  svn up && ./autogen.sh && make extraclean-swig-py && make install
install-swig-py

Cheers,

David

--
David James -- http://www.cs.toronto.edu/~james
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Tue Oct 4 17:26:04 2005

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.