+ obj_build_ext = dist.get_command_obj("build_ext")
+ so_path = obj_build_ext.get_outputs()[0]
+ if obj_build_ext.inplace:
+ # Python distutils get_outputs()[ returns a wrong so_path
+ # when --inplace ; see http://bugs.python.org/issue5977
+ # workaround:
+ so_path = os.path.join(os.path.dirname(filename),
+ os.path.basename(so_path))
+ if reload_support:
+ org_path = so_path
+ timestamp = os.path.getmtime(org_path)
+ global _reloads
+ last_timestamp, last_path, count = _reloads.get(org_path, (None,None,0) )
+ if last_timestamp == timestamp:
+ so_path = last_path
+ else:
+ basename = os.path.basename(org_path)
+ while count < 100:
+ count += 1
+ r_path = os.path.join(obj_build_ext.build_lib,
+ basename + '.reload%s'%count)
+ try:
+ import shutil # late import / reload_support is: debugging
+ shutil.copy2(org_path, r_path)
+ so_path = r_path
+ except IOError:
+ continue
+ break
+ else:
+ # used up all 100 slots
+ raise ImportError("reload count for %s reached maximum"%org_path)
+ _reloads[org_path]=(timestamp, so_path, count)
+ return so_path