覆盖SCons缓存复制功能

时间:2015-01-09 18:23:24

标签: python caching scons build-system hardlink

我正在试图弄清楚当SCons将工件从缓存目录(由CacheDir给出)复制到使用过的硬链接时如何覆盖行为。

我目前的尝试

def link_or_copy_file(class_instance, src, dst):
    # do hardlinking instead...

SCons.Defaults.DefaultEnvironment()._copy_from_cache = link_or_copy_file
SCons.Defaults.DefaultEnvironment()._copy2_from_cache = link_or_copy_file

env = Environment()

env._copy_from_cache = link_or_copy_file
env._copy2_from_cache = link_or_copy_file

env的后续使用没有影响。永远不会调用函数link_or_copy_file。有什么问题?

是否有可能以这种方式覆盖Python类成员函数。

更新:另请注意,我在调用env.Decider()后执行此操作,因为此功能可能会覆盖成员_copy_from_cache_copy2_from_cache

1 个答案:

答案 0 :(得分:0)

我们终于想通了

import SCons.Environment
SCons.Environment.Environment._copy_from_cache = link_or_copy_file
SCons.Environment.Environment._copy2_from_cache = link_or_copy_file

的工作。