7 from SCons.Builder
import Builder
10 if not hasattr(os.path,
'relpath'):
12 def relpath(path, start=os.path.curdir):
13 """Return a relative version of a path"""
16 raise ValueError(
'no path specified')
18 start_list = os.path.abspath(start).split(os.path.sep)
19 path_list = os.path.abspath(path).split(os.path.sep)
22 i = len(os.path.commonprefix([start_list, path_list]))
24 rel_list = [os.path.pardir] * (len(start_list) - i) + path_list[i:]
27 return os.path.join(*rel_list)
29 os.path.relpath = relpath
32 def create_symlink(target, source, env):
33 """Create a symbolic link from source to target"""
35 source = os.path.relpath(source, os.path.dirname(target))
37 os.symlink(source, target)
40 if e.errno == errno.EEXIST:
42 os.symlink(source, target)
48 copy_file = Builder(action=
'cp -pf $SOURCE $TARGET')
49 copy_file.action.cmdstr =
'${COPYCOMSTR}'
53 if not GetOption(
'no-symlink'):
54 env[
'INSTALL'] = create_symlink
55 env[
'BUILDERS'][
'Copy'] = copy_file