6 марта состоялся выпуск системы сборки Scons 4.5.0. Вслед за ним было выпущено корректирующее обновление 4.5.1.
SCons – инструмент автоматизации сборки программных проектов, автоматически анализирующий зависимости между файлами исходного кода и требования адаптации к целевой операционной системе.
Помимо исправлений ошибок и небольших улучшений к основным изменениям в версии 4.5.0 относятся:
Новые возможности
-
Добавлен новый метод
ValidateOptions()
, который будет проверять, что все опции командной строки являются параметрами SCons или добавлены с помощью методаAddOption()
в файлыSConstruct
/SConscript
. Эти параметры командной строки не должны вызываться до завершения всех вызовов методаAddOption()
. -
Добавлена экспериментальная опция
--experimental=tm_v2
, которая активирует новую реализацию распараллеливания задач от Эндрю Морроу (Andrew Morrow). Опция также может быть активирована с помощью методаSetOption()
. -
Добавлен параметр
FILE_ENCODING
, с помощью которого можно явно указать кодировку текста для файлов, записанных с помощью правил сборкиTextfile()
иSubstfile()
. Если параметр не задан, то по умолчанию указанные правила сборки записывают файлы в кодировке UTF-8.
Изменения/улучшения существующих возможностей
-
Добавлен поддержка опции
-fsanitize
для методаParseFlags()
. Её действие распространяется на переменныеCCFLAGS
иLINKFLAGS
. -
Вызовы методов
EnsureSConsVersion()
иEnsurePythonVersion()
больше не инициализируют окружение по умолчанию, т.е.DefaultEnvironment
. -
Вывод в терминал метода
Chmod()
теперь отображается в восьмеричном формате, используя синтаксис современного языка Python (0o755
вместо0755
). -
Проведена миграция реализации ведения логов для опции
--taskmastertrace
на использование встроенного модуля ведения логов языка Python. Добавлено ведение логов для новой реализации распараллеливания задач от Эндрю Морроу (Andrew Morrow). -
Добавлена предварительная поддержка языка Python 3.12.
-
Вызов команды сборки
LaTeX
теперь происходит только после выполнения вызововbiber
/bibtex
, если это необходимо. -
Конфигурация контекстных методов
CheckLib
иCheckLibWithHeader
теперь расширена добавлением двух дополнительных аргументов:append
, который управляет добавлением в конец списка (по умолчанию) или в начало списка$LIBS
обнаруженных библиотек; иunique
, который определяет добавлять ли библиотеку в список$LIBS
, если она уже представлена в нём. Это изменение привносит дополнительную возможность управления списком библиотек с помощью обычных методовAppend
,AppendUnique
,Prepend
,PrependUnique
. -
Значения переменной
CPPDEFINES
, добавленные с использованием типа данных «словарь», больше не сортируются по значению ключа. Раньше сортировка использовалась, чтобы обеспечить сохранение порядка параметров командной строки при последовательных запусках SCons, но это приводило к тому, что макросы не всегда вызывались в том порядке, в котором были переданы. Улучшения интерпретатора языка Python больше не требуют использования сортировки. Может происходить однокаратная переборка целей, которые использовали отсортированные ключи в рамках своих вызовов.
Корректирующий выпуск SCons 4.5.1 исправляет следующую ошибку:
- В определённых случаях после вызова метода
Clone()
, новое окружение разделяет переменнуюCPPDEFINES
с исходным окружениемEnvironment()
, которое было скопировано. Значения этих переменных в данных окружениях должны быть независимы.
С полным списком изменений и исправлений ошибок в версии 4.5.0 можно ознакомиться по ссылке.
Изменения версии 4.5.1 приведены здесь.
>>> Подробности