2015-01-09 5 views
1

Я пытаюсь выяснить, как переопределить поведение, когда 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 таким образом.

Update: Кроме того, обратите внимание, что я делаю это после того, как 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 

работал.

 Смежные вопросы

  • Нет связанных вопросов^_^