diff -ur pysvn-1.7.10.orig/setup.py pysvn-1.7.10/setup.py --- pysvn-1.7.10.orig/setup.py 2010-12-30 13:26:51.000000000 +0100 +++ pysvn-1.7.10/setup.py 2015-08-14 10:29:25.562686564 +0200 @@ -19,6 +19,7 @@ import os import os.path import setuptools.command.bdist_egg +from ConfigParser import ConfigParser pysvn_version_info = {} f = open( 'Builder/version.info', 'r' ) @@ -27,13 +28,26 @@ pysvn_version_info[ key ] = value def run(self): + cfg = ConfigParser() + cfg.read('setup.cfg') + kw = {} + for key in ('include-dirs', 'library-dirs'): + if cfg.has_option('build_ext', key): + kw[key] = cfg.get('build_ext', key) + # Generate metadata first self.run_command("egg_info") os.chdir('Source') - os.system(sys.executable + ' setup.py configure') + os.system(sys.executable + ' setup.py configure --include-dirs=%(include-dirs)s --library-dirs=%(library-dirs)s' % kw) os.system('make clean') os.system('make') - os.system('make egg DISTDIR="%s"' % os.path.abspath(os.path.join('..', self.dist_dir))) + os.system('rm -rf dist; mkdir -p dist/EGG-INFO') + os.system('cp -rvf pysvn dist') + os.system('cp -rvf ../pysvn.egg-info/* dist/EGG-INFO') + os.system('find dist/pysvn -type f | sed s:dist/:: > dist/EGG-INFO/SOURCES.txt') + setuptools.command.bdist_egg.make_zipfile( + self.egg_output, 'dist', verbose=self.verbose, + dry_run=self.dry_run, mode=self.gen_header()) os.chdir('..') # Go back in parent directory # Add to 'Distribution.dist_files' so that the "upload" command works getattr( self.distribution, 'dist_files', [] ).append( diff -ur pysvn-1.7.10.orig/Source/setup_configure.py pysvn-1.7.10/Source/setup_configure.py --- pysvn-1.7.10.orig/Source/setup_configure.py 2014-11-09 11:55:47.000000000 +0100 +++ pysvn-1.7.10/Source/setup_configure.py 2015-08-17 10:41:05.781767086 +0200 @@ -54,6 +54,8 @@ class Options: all_options_info = { '--arch': (2, '<arch>'), + '--library-dirs': (1, '<dir>:<dir>:...'), + '--include-dirs': (1, '<dir>:<dir>:...'), '--apr-inc-dir': (1, '<dir>'), '--apu-inc-dir': (1, '<dir>'), '--apr-lib-dir': (1, '<dir>'), @@ -511,12 +513,16 @@ raise last_exception def find_svn_bin( self ): - return self.find_dir( + try: + return self.find_dir( 'SVN bin', '--svn-bin-dir', 'bin', self._find_paths_svn_bin, 'svnadmin%s' % (self.getProgramExt(),) ) + except SetupError: + # svnadmin is only required for test + return '' def find_svn_lib( self ): folder = self.find_dir( @@ -589,8 +595,8 @@ # override the base_dir_list from the command line kw svn_root_dir = None - if self.options.hasOption( kw ): - base_dir_list = [self.options.getOption( kw )] + if kw and self.options.hasOption( kw ): + base_dir_list = self.options.getOption( kw ) + base_dir_list elif( self.options.hasOption( '--svn-root-dir' ) and svn_root_suffix is not None ): @@ -604,7 +610,7 @@ if self.verbose: print( 'Info: Checking for %s in %s' % (name, full_check_file) ) if os.path.exists( full_check_file ): - return os.path.abspath( dirname ) + return dirname raise SetupError( 'cannot find %s %s - use %s' % (name, check_file, kw) ) @@ -629,6 +635,17 @@ def getSvnVersion( self ): return self.__svn_version_tuple + def _library_dirs( self ): + if self.options.hasOption( '--library-dirs' ): + return self.options.getOption( '--library-dirs' ).split(':') + else: + return [] + + def _include_dirs( self ): + if self.options.hasOption( '--include-dirs' ): + return self.options.getOption( '--include-dirs' ).split(':') + else: + return [] class Win32CompilerMSVC90(Compiler): def __init__( self, setup ): @@ -1093,7 +1110,7 @@ '%(PYCXX)s/Src', '/usr/share/python%s/CXX' % distutils.sysconfig.get_python_version() # typical Linux ] - self._find_paths_svn_inc = [ + self._find_paths_svn_inc = self._include_dirs() + [ '/usr/include/subversion-1', # typical Linux '/usr/local/include/subversion-1', # typical *BSD '/usr/pkg/include/subversion-1', # netbsd @@ -1103,14 +1120,14 @@ '/usr/local/bin', # typical *BSD '/usr/pkg/bin', # netbsd ] - self._find_paths_svn_lib = [ + self._find_paths_svn_lib = self._library_dirs() + [ '/usr/lib64', # typical 64bit Linux '/usr/lib', # typical Linux '/usr/local/lib64', # typical 64bit Linux '/usr/local/lib', # typical *BSD '/usr/pkg/lib', # netbsd ] - self._find_paths_apr_inc = [ + self._find_paths_apr_inc = self._include_dirs() + [ '/usr/include/apr-1', # typical Linux '/usr/local/apr/include/apr-1', # Mac OS X www.metissian.com '/usr/pkg/include/apr-1', # netbsd @@ -1120,7 +1137,7 @@ '/usr/local/include/apache2', # alternate *BSD ] self._find_paths_apr_util_inc = self._find_paths_apr_inc - self._find_paths_apr_lib = [ + self._find_paths_apr_lib = self._library_dirs() + [ '/usr/lib64', # typical 64bit Linux '/usr/lib', # typical Linux '/usr/local/lib64', # typical 64bit Linux @@ -1186,6 +1203,8 @@ if not self.setup.options.hasOption( '--norpath' ): py_ld_libs.extend( [ '-Wl,--rpath', + '-Wl,%(APR_LIB)s', + '-Wl,--rpath', '-Wl,%(SVN_LIB)s' ] ) py_ld_libs.extend( [