2015-01-09 33 views
1

我想弄清楚如何重寫SCons從緩存目錄(由CacheDir給出)將工件複製到使用硬鏈接時的行爲。覆蓋SCons緩存複製函數

我現在嘗試

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

回答

0

我們終於想通了,

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

工作。