Если вы просто хотите заменить входной файл, ваш versionfile.ver должен выглядеть следующим образом
VERSION=@VERSION@
DATADIR=@DATADIR@
Теперь вы можете использовать следующую задачу для подстановки значений
bld.new_task_gen (
features = "subst",
source= "versionfile.ver",
target= "versionfile.out",
VERSION = bld.env['VERSION'],
DATADIR = bld.env['DATADIR'])
Чтобы получить доступ к версии из bld, вы должны определить ее во время настройки
conf.env['VERSION'] = '0.7.0'
Вы можете найти эту задачу waf в действии здесь Выходные файлы этих задач можно использовать в качестве входных данных для других задач.
Однако, если вы хотите передать свой исходный файл через скрипт Python или любую доступную команду, вы можете использовать следующее:
lib_typelib = bld.new_task_gen(
name = 'versionfile',
source = 'versionfile.ver',
target = 'versionfile.out',
rule='/path/to/your/python/script ${SRC} -o ${TGT}')
Здесь также имеется пример здесь , где в этом случае используется g-ir-compiler, который в вашем случае был бы скриптом python.