Я пытаюсь заставить SCons проверить git repo, что мне нужно (и, надеюсь, сохранить этот репо в актуальном состоянии). Проблема в том, что я должен сказать, какие файлы содержит репозиторий git для его использования в сборке, и если я это сделаю, SCons создаст репо, прежде чем он попытается клонировать его.Скажите SCons не авто-создавать каталоги?
Например, сказать, что я хочу, чтобы клонировать GStreamer, и использовать create-uninstalled-setup.sh
скрипт (это не то, что я на самом деле делает, но это гораздо проще/быстрее скрипт, который Экспонаты та же проблема):
Command(['gstreamer/.git', 'gstreamer/scripts/create-uninstalled-setup.sh'],
None, 'git clone git://anongit.freedesktop.org/git/gstreamer/gstreamer')
Command('~/gst/git', 'gstreamer/scripts/create-uninstalled-setup.sh',
'gstreamer/scripts/create-uninstalled-setup.sh')
Но это не удается, потому что SCons создает GStreamer/скрипты, прежде чем он пытается клонировать GStreamer:
$ SCons
Scons: Чтение SConscript файлов ...
SCons: сделано чтение SCons cript файлы.
SCons: Строительные цели ...
мерзавец клон мерзавец: //anongit.freedesktop.org/git/gstreamer/gstreamer
фатальные: путь назначения «GStreamer» уже существует и не пустой каталог.
scons: *** [gstreamer/.git] Ошибка 128
сб: здание завершено из-за ошибок.
$ Ls GStreamer/
скрипты
Если я скажу первую команду, что она создает папку "GStreamer", он создает цикл зависимости:
Command(['gstreamer', 'gstreamer/scripts/create-uninstalled-setup.sh'],
None, 'git clone git://anongit.freedesktop.org/git/gstreamer/gstreamer')
Command('~/gst/git', 'gstreamer/scripts/create-uninstalled-setup.sh',
'gstreamer/scripts/create-uninstalled-setup.sh')
$ SCons
SCons : Чтение файлов SConscript ...
scons: сделано чтение файлов SConscript.
scons: Цели здания ...
scons: сделано цели здания.SCons: *** Найдено цикл зависимостей (ы):
GStreamer/скрипты -> GStreamer/скрипты/create-uninstalled-setup.sh -> GStreamer/скрипты
GStreamer/скрипты/создать-деинсталлировать-установки .sh -> GStreamer/скрипты -> GStreamer/скрипты> /create-uninstalled-setup.shФайл "/usr/lib/scons/SCons/Taskmaster.py", строка 1019, в субботнике
Если я не сообщаю первой команде, что она создает «create-uninstalled-setup.sh», она запутывается, потому что ее не существует:
Command(['gstreamer'],
None, 'git clone git://anongit.freedesktop.org/git/gstreamer/gstreamer')
Command('~/gst/git', 'gstreamer/scripts/create-uninstalled-setup.sh',
'gstreamer/scripts/create-uninstalled-setup.sh')
$ SCons
SCons: Чтение SConscript файлов ...
Scons: сделано чтение SConscript файлов.
scons: Building objects ...
scons: *** [~/gst/git] Источник `gstreamer/scripts/create-uninstalled-setup.sh 'не найден, нужен целевой ~ ~/gst/git' ,
подсвечники: здание завершено из-за ошибок.
В качестве обходного пути, я могу rm -rf
папку, прежде чем я клон, но это явно не идеал:
Command(['gstreamer/.git', 'gstreamer/scripts/create-uninstalled-setup.sh'], None,
'rm -rf gstreamer && git clone git://anongit.freedesktop.org/git/gstreamer/gstreamer')
Command('~/gst/git', 'gstreamer/scripts/create-uninstalled-setup.sh',
'gstreamer/scripts/create-uninstalled-setup.sh')
Есть ли лучший способ обработки этого?