David James wrote:
> 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"
That fix is _reeeaaaaly_ hacky :-(
Also, why is it needed at all?
The testcase completes successfully for me without this revision, plus, I
manually examined the generated .py files and found that _core was being
imported soon enough anyway without this fix.
Max.
---------------------------------------------------------------------
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:29:29 2005