@@ -427,13 +427,15 @@ def finalize_options(self):
427427 self .pre_hooks = []
428428 self .post_hooks = []
429429 self .pkg_names = []
430+ self .pkg_paths = []
430431
431432 if self .distribution .has_scons_scripts ():
432433 for i in self .distribution .scons_data :
433434 self .sconscripts .append (i .scons_path )
434435 self .pre_hooks .append (i .pre_hook )
435436 self .post_hooks .append (i .post_hook )
436437 self .pkg_names .append (i .parent_name )
438+ self .pkg_paths .append (i .pkg_path )
437439 # This crap is needed to get the build_clib
438440 # directory
439441 build_clib_cmd = get_cmd ("build_clib" ).get_finalized_command ("build_clib" )
@@ -467,7 +469,7 @@ def finalize_options(self):
467469 if self .package_list :
468470 self .package_list = parse_package_list (self .package_list )
469471
470- def _call_scons (self , scons_exec , sconscript , pkg_name , bootstrapping ):
472+ def _call_scons (self , scons_exec , sconscript , pkg_name , pkg_path , bootstrapping ):
471473 # XXX: when a scons script is missing, scons only prints warnings, and
472474 # does not return a failure (status is 0). We have to detect this from
473475 # distutils (this cannot work for recursive scons builds...)
@@ -483,6 +485,7 @@ def _call_scons(self, scons_exec, sconscript, pkg_name, bootstrapping):
483485 cmd .append ("inplace=1" )
484486 cmd .append ('scons_tool_path="%s"' % self .scons_tool_path )
485487 cmd .append ('src_dir="%s"' % pdirname (sconscript ))
488+ cmd .append ('pkg_path="%s"' % pkg_path )
486489 cmd .append ('pkg_name="%s"' % pkg_name )
487490 cmd .append ('log_level=%s' % self .log_level )
488491 #cmd.append('distutils_libdir=%s' % protect_path(pjoin(self.build_lib,
@@ -553,11 +556,13 @@ def run(self):
553556 pre_hooks = [self .pre_hooks [i ] for i in id ]
554557 post_hooks = [self .post_hooks [i ] for i in id ]
555558 pkg_names = [self .pkg_names [i ] for i in id ]
559+ pkg_paths = [self .pkg_names [i ] for i in id ]
556560 else :
557561 sconscripts = self .sconscripts
558562 pre_hooks = self .pre_hooks
559563 post_hooks = self .post_hooks
560564 pkg_names = self .pkg_names
565+ pkg_paths = self .pkg_paths
561566
562567 if is_bootstrapping ():
563568 bootstrapping = 1
@@ -567,14 +572,14 @@ def run(self):
567572 scons_exec = get_python_exec_invoc ()
568573 scons_exec += ' ' + protect_path (pjoin (get_scons_local_path (), 'scons.py' ))
569574
570- for sconscript , pre_hook , post_hook , pkg_name in zip (sconscripts ,
575+ for sconscript , pre_hook , post_hook , pkg_name , pkg_path in zip (sconscripts ,
571576 pre_hooks , post_hooks ,
572- pkg_names ):
577+ pkg_names , pkg_paths ):
573578 if pre_hook :
574579 pre_hook ()
575580
576581 if sconscript :
577- self ._call_scons (scons_exec , sconscript , pkg_name , bootstrapping )
582+ self ._call_scons (scons_exec , sconscript , pkg_name , pkg_path , bootstrapping )
578583
579584 if post_hook :
580585 post_hook (** {'pkg_name' : pkg_name , 'scons_cmd' : self })
0 commit comments