scons: исходный каталог не копируется в каталог сборки - PullRequest
1 голос
/ 10 июня 2010

Часть моего процесса сборки заключается в создании tar-файла входного каталога, расположенного по адресу src/bundle/bundle. В src / bundle / SConscript:

Import('*')

bundleDir = Dir("bundle")
jsontar = Command("bundle.tar", bundleDir,
                  "/home/dbender/bin/mkvgconf $SOURCE $TARGET")

в моем SConstruct:

SConscript(Split('src/bundle/SConscript'),
  exports='bin_env lib_env', build_dir='tmp/bundle')

При попытке построить:

scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
/home/dbender/bin/mkvgconf tmp/bundle/bundle tmp/bundle/bundle.tar
Input directory tmp/bundle/bundle not found!
scons: *** [tmp/bundle/bundle.tar] Error 1
scons: building terminated because of errors.

Очевидно, что scons не копирует src / bundle / bundle в tmp / bundle / bundle, но я озадачен, почему.

Примечания: Использование абсолютного пути к mkvgconf - это плохая практика, но оно промежуточное, пока я не решу эту проблему.

1 Ответ

1 голос
/ 10 июня 2010

SCons ничего не знает о содержимом вашего ввода src/bundle/bundle - только программа mkvgconf знает, что делает с этим каталогом.

Одним из решений является добавление явной зависимости в SConscript:

import os
Depends('bundle.tar', Glob(str(bundleDir) + os.path.sep + '*'))

Это также означает, что при обновлении содержимого каталога bundle сценарий mkvgconf будет перезапущен.

PS. вы можете изменить имя аргумента build_dir на variant_dir, поскольку в последних выпусках SCons первое не рекомендуется в пользу последнего.

...