You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2013/07/22 00:25:10 UTC
svn commit: r1505481 - in /subversion/trunk: build/generator/gen_base.py
build/generator/gen_make.py build/generator/gen_win_dependencies.py
win-tests.py
Author: rhuijben
Date: Sun Jul 21 22:25:10 2013
New Revision: 1505481
URL: http://svn.apache.org/r1505481
Log:
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)
Modified:
subversion/trunk/build/generator/gen_base.py
subversion/trunk/build/generator/gen_make.py
subversion/trunk/build/generator/gen_win_dependencies.py
subversion/trunk/win-tests.py
Modified: subversion/trunk/build/generator/gen_base.py
URL: http://svn.apache.org/viewvc/subversion/trunk/build/generator/gen_base.py?rev=1505481&r1=1505480&r2=1505481&view=diff
==============================================================================
--- subversion/trunk/build/generator/gen_base.py (original)
+++ subversion/trunk/build/generator/gen_base.py Sun Jul 21 22:25:10 2013
@@ -674,13 +674,16 @@ class TargetSWIG(TargetLib):
module_name = iname[:4] != 'svn_' and iname[:-2] or iname[4:-2]
lib_extension = self.gen_obj._extension_map['lib', 'target']
- if self.lang == "ruby":
- lib_filename = module_name + lib_extension
+ if self.lang == "python":
+ lib_extension = self.gen_obj._extension_map['pyd', 'target']
+ lib_filename = '_' + module_name + lib_extension
+ elif self.lang == "ruby":
+ lib_extension = self.gen_obj._extension_map['so', 'target']
+ lib_filename = module_name + '.so'
elif self.lang == "perl":
lib_filename = '_' + module_name.capitalize() + lib_extension
else:
- lib_extension = self.gen_obj._extension_map['pyd', 'target']
- lib_filename = '_' + module_name + lib_extension
+ lib_filename = module_name + lib_extension
self.name = self.lang + '_' + module_name
self.path = build_path_join(self.path, self.lang)
Modified: subversion/trunk/build/generator/gen_make.py
URL: http://svn.apache.org/viewvc/subversion/trunk/build/generator/gen_make.py?rev=1505481&r1=1505480&r2=1505481&view=diff
==============================================================================
--- subversion/trunk/build/generator/gen_make.py (original)
+++ subversion/trunk/build/generator/gen_make.py Sun Jul 21 22:25:10 2013
@@ -62,6 +62,8 @@ class Generator(gen_base.GeneratorBase):
('lib', 'object'): '.lo',
('pyd', 'target'): '.la',
('pyd', 'object'): '.lo',
+ ('so', 'target'): '.la',
+ ('so', 'object'): '.lo',
}
def __init__(self, fname, verfname, options=None):
Modified: subversion/trunk/build/generator/gen_win_dependencies.py
URL: http://svn.apache.org/viewvc/subversion/trunk/build/generator/gen_win_dependencies.py?rev=1505481&r1=1505480&r2=1505481&view=diff
==============================================================================
--- subversion/trunk/build/generator/gen_win_dependencies.py (original)
+++ subversion/trunk/build/generator/gen_win_dependencies.py Sun Jul 21 22:25:10 2013
@@ -101,6 +101,8 @@ class GenDependenciesBase(gen_base.Gener
('lib', 'object'): '.obj',
('pyd', 'target'): '.pyd',
('pyd', 'object'): '.obj',
+ ('so', 'target'): '.pyd',
+ ('so', 'object'): '.obj',
}
_libraries = {} # Dict of SVNCommonLibrary instances of found libraries
@@ -901,10 +903,10 @@ class GenDependenciesBase(gen_base.Gener
if not self.swig_path:
swig_exe = 'swig.exe'
else:
- swig_exe = os.path.abspath(os.path.join(self.swig_path, 'swig'))
+ swig_exe = os.path.abspath(os.path.join(self.swig_path, 'swig.exe'))
if self.swig_path is not None:
- self.swig_exe = os.path.abspath(os.path.join(self.swig_path, 'swig'))
+ self.swig_exe = os.path.abspath(os.path.join(self.swig_path, 'swig.exe'))
else:
self.swig_exe = 'swig'
Modified: subversion/trunk/win-tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/win-tests.py?rev=1505481&r1=1505480&r2=1505481&view=diff
==============================================================================
--- subversion/trunk/win-tests.py (original)
+++ subversion/trunk/win-tests.py Sun Jul 21 22:25:10 2013
@@ -84,6 +84,8 @@ def _usage_exit():
print(" --disable-bulk-updates : Disable bulk updates on HTTP server")
print(" --ssl-cert : Path to SSL server certificate to trust.")
print(" --javahl : Run the javahl tests instead of the normal tests")
+ print(" --swig=language : Run the swig perl/python/ruby tests instead of")
+ print(" the normal tests")
print(" --list : print test doc strings only")
print(" --milestone-filter=RE : RE is a regular expression pattern that (when")
print(" used with --list) limits the tests listed to")
@@ -130,7 +132,7 @@ opts, args = my_getopt(sys.argv[1:], 'hr
'httpd-dir=', 'httpd-port=', 'httpd-daemon',
'httpd-server', 'http-short-circuit', 'httpd-no-log',
'disable-http-v2', 'disable-bulk-updates', 'help',
- 'fsfs-packing', 'fsfs-sharding=', 'javahl',
+ 'fsfs-packing', 'fsfs-sharding=', 'javahl', 'swig=',
'list', 'enable-sasl', 'bin=', 'parallel',
'config-file=', 'server-minor-version=', 'log-level=',
'log-to-stdout', 'mode-filter=', 'milestone-filter=',
@@ -156,6 +158,7 @@ http_bulk_updates = True
list_tests = None
milestone_filter = None
test_javahl = None
+test_swig = None
enable_sasl = None
svn_bin = None
parallel = None
@@ -216,6 +219,11 @@ for opt, val in opts:
fsfs_packing = 1
elif opt == '--javahl':
test_javahl = 1
+ elif opt == '--swig':
+ if val not in ['ruby']:
+ sys.stderr.write('Running \'%s\' swig tests not supported (yet).\n'
+ % (val,))
+ test_swig = val
elif opt == '--list':
list_tests = 1
elif opt == '--milestone-filter':
@@ -746,7 +754,7 @@ else:
print('Testing %s configuration on %s' % (objdir, repo_loc))
sys.path.insert(0, os.path.join(abs_srcdir, 'build'))
-if not test_javahl:
+if not test_javahl and not test_swig:
import run_tests
if log_to_stdout:
log_file = None
@@ -774,7 +782,7 @@ if not test_javahl:
raise
else:
os.chdir(old_cwd)
-else:
+elif test_javahl:
failed = False
args = (
'java.exe',
@@ -812,6 +820,88 @@ else:
if (r != 0):
print('[Test runner reported failure]')
failed = True
+elif test_swig == 'perl':
+ print('Running Swig Perl tests not supported yet')
+
+ # TODO: Implement something like
+
+ # mkdir "%TESTDIR%\swig\pl-release\SVN"
+ # mkdir "%TESTDIR%\swig\pl-release\auto\SVN"
+ # xcopy subversion\bindings\swig\perl\native\*.pm "%TESTDIR%\swig\pl-release\SVN" > nul:
+ # pushd release\subversion\bindings\swig\perl\native
+ # for %%i in (*.dll) do (
+ # set name=%%i
+ # mkdir "%TESTDIR%\swig\pl-release\auto\SVN\!name:~0,-4!"
+ # xcopy "!name:~0,-4!.*" "%TESTDIR%\swig\pl-release\auto\SVN\!name:~0,-4!" > nul:
+ # xcopy /y "_Core.dll" "%TESTDIR%\swig\pl-release\auto\SVN\!name:~0,-4!" > nul:
+ # )
+ # popd
+ #
+ # SET PERL5LIB=%PERL5LIB%;%TESTDIR%\swig\pl-release;
+ # pushd subversion\bindings\swig\perl\native
+ # perl -MExtUtils::Command::MM -e test_harness() t\*.t
+ # IF ERRORLEVEL 1 (
+ # echo [Perl reported error %ERRORLEVEL%]
+ # SET result=1
+ # )
+ # popd
+
+ failed = False
+elif test_swig == 'python':
+ print('Running Swig Python tests not supported yet')
+
+ # TODO: Implement something like
+
+ # IF EXIST "%TESTDIR%\swig" rmdir /s /q "%TESTDIR%\swig"
+ # mkdir "%TESTDIR%\swig\py-release\libsvn"
+ # mkdir "%TESTDIR%\swig\py-release\svn"
+ #
+ # xcopy "release\subversion\bindings\swig\python\*.pyd" "%TESTDIR%\swig\py-release\libsvn\*.pyd" > nul:
+ # xcopy "release\subversion\bindings\swig\python\libsvn_swig_py\*.dll" "%TESTDIR%\swig\py-release\libsvn\*.dll" > nul:
+ # xcopy "subversion\bindings\swig\python\*.py" "%TESTDIR%\swig\py-release\libsvn\*.py" > nul:
+ # xcopy "subversion\bindings\swig\python\svn\*.py" "%TESTDIR%\swig\py-release\svn\*.py" > nul:
+ #
+ # SET PYTHONPATH=%TESTDIR%\swig\py-release
+ #
+ # python subversion\bindings\swig\python\tests\run_all.py
+ # IF ERRORLEVEL 1 (
+ # echo [Python reported error %ERRORLEVEL%]
+ # SET result=1
+ # )
+
+ failed = False
+elif test_swig == 'ruby':
+ failed = False
+
+ if 'ruby' not in gen_obj._libraries:
+ print('Ruby not found. Skipping Ruby tests')
+ else:
+ print('Running Swig Ruby Tests')
+ ruby_lib = gen_obj._libraries['ruby']
+
+ ruby_exe = 'ruby.exe'
+ ruby_subdir = os.path.join('subversion', 'bindings', 'swig', 'ruby')
+ ruby_args = [
+ '-I', os.path.join(abs_srcdir, ruby_subdir),
+ os.path.join(abs_srcdir, ruby_subdir, 'test', 'run-test.rb'),
+ '--verbose'
+ ]
+
+ old_cwd = os.getcwd()
+ try:
+ os.chdir(ruby_subdir)
+
+ os.environ["BUILD_TYPE"] = objdir
+ r = subprocess.call([ruby_exe] + ruby_args)
+ finally:
+ os.chdir(old_cwd)
+
+ sys.stdout.flush()
+ sys.stderr.flush()
+ if (r != 0):
+ print()
+ print('[Test runner reported failure]')
+ failed = True
# Stop service daemon, if any
if daemon: