scons: излишне перестраивает файлы во время первой сборки только с отметкой времени - PullRequest
2 голосов
/ 27 марта 2012

Я делаю сборку только с отметкой времени для массового преобразования файлов изображений. Многие из преобразованных файлов изображений уже существуют, но я хотел бы убедиться, что все они проверяются каждый раз.

Почему SCons требует файл базы данных (.sconsign.dblite), который он использует для хеш-данных MD5, когда ему (через env.Decider("timestamp-newer")) дано указание работать только с метками времени? Для временных меток не нужно хранить базу данных между сборками, поскольку вся информация связана с самими файлами.

Если база данных dblite не существует, SCons преобразует все изображения независимо от того, предполагают ли их временные метки необходимость их перестройки или нет. Заголовок является примером сообщения, которое я получаю, когда база данных dblite не существует.

Если кто-нибудь может объяснить это, я действительно ценю это. Мне нравится функциональное программирование на Python, но сам SCons сейчас не совсем это делает для меня.

Ответы [ 4 ]

1 голос
/ 27 марта 2012

Используя "timestamp-newer", SCons фактически сохраняет информацию о временной метке. Вы можете увидеть почему здесь:

Использование меток времени для определения, изменился ли файл

Попробуйте вместо этого использовать "timestamp-match".

0 голосов
/ 21 октября 2016

Я думаю, что ваш вопрос действительно о том, почему существует .sconsign.dblite, когда вы устанавливаете решающее устройство просто для проверки отметки времени.

Одна из причин заключается в том, что он позволяет SCons отслеживать метод, используемый для создания каждого из них.цель.Если это изменится, даже если отметка времени не изменится, это должно перестроить затронутые цели.

Вы пытались создать один файл, а затем с помощью утилиты sconsign проверить содержимое файла .sconsign.dblite

0 голосов
/ 20 октября 2016

Да, я пытаюсь сделать то же самое, но я делаю массовое преобразование видеофайлов, которое занимает несколько дней, если это делается без необходимости. Я уже сделал большую часть этого.

Поэтому я хочу сказать SCons: «Для файлов, которые существуют сейчас , сохраните их существующие временные метки / MD5 и не перестраивайте, если только это не изменится в future ».

сообщу, если найду способ ...

0 голосов
/ 01 октября 2013

Я наконец получил это отсортировано. Брейди был прав насчет того, как использовать SCons, но я несколько дней назад, в конце концов, решил, что вы также можете точно контролировать, что вы хотите собрать, просто контролируя, какие команды сборки выдают в первую очередь. В моем случае я проигнорировал любые файлы изображений, для которых целевой файл уже существует, используя os.path.exists().

Звучит просто, но это концептуальная разница между SCons и make, потому что make не сохраняет свое состояние между сборками, как SCons.

...