发布 Bazel 2.0 构建系统

可得到 发布开放式组装工具 巴泽尔2.0, развиваемого инженерами из Google и используемого для сборки большинства внутренних проектов данной компании. Bazel обеспечивает сборку проекта, запуская необходимые компиляторы и тесты. Поддерживается сборка и тестирование кода на Java, C++, Objective-C, Python, Rust, Go и многих других языках, а также сборка мобильных приложений для Android и iOS. Код проекта 分发者 在 Apache 2.0 下获得许可。

Значительное изменение версии связано с добавлением изменений, нарушающих обратную совместимость. Начиная с Bazel 2.0 включены по умолчанию режимы «—incompatible_remap_main_repo» (ссылки по имени и через @ теперь ссылаются на один репозиторий), «—incompatible_disallow_dict_lookup»_(применение нехешируемых ключей),
«—incompatible_remove_native_maven_jar» и «—incompatible_prohibit_aapt1». Среди других изменений:

  • В команде aquery появилась экспериментальная поддержка новой редауции формата вывода «proto» (—output=proto), которая пока отключена по умолчанию (—incompatible_proto_output_v2) и обеспечивает более компактное представление данных;
  • Добавлен флаг «—incompatible_remove_enabled_toolchain_types», позволяющий удалить поле PlatformConfiguration.enabled_toolchain_types;
  • Добавлена защита от загрузки пакетов, при загрузке которых при раскрытии путей используются цикличные символические ссылки;
  • Реализована возможность использования флага «—disk_cache» с внешними кэшами gRPC;
  • В пакет для Debian и бинарный инсталлятор включена улучшенная прослойка, обрабатывающая файлы ~/.bazelversion и переменную окружения $USE_BAZEL_VERSION;
  • В рамках подготовки к переводу файлов с манифестом runfiles в категорию устаревших возможностей добавлен флаг «—experimental_skip_runfiles_manifests».

Bazel 的显着特点包括装配过程的高速、可靠性和可重复性。为了实现高构建速度,Bazel 在构建过程中积极使用缓存和并行化技术。 BUILD 文件必须完全定义所有依赖关系,在此基础上做出在更改后重建组件的决策(仅重建更改的文件)并并行化组装过程。工具还确保可重复组装,即在开发人员的机器上构建项目的结果将与在第三方系统(例如持续集成服务器)上构建的结果完全相同。

与 Make 和 Ninja 不同,Bazel 使用更高级别的方法来构建汇编规则,其中不是定义命令到正在构建的文件的绑定,而是使用更抽象的现成块,例如“在C++”、“用 C++ 构建库”或“运行 C++ 测试”,以及识别目标和构建平台。在 BUILD 文本文件中,项目组件被描述为一堆库、可执行文件和测试,而没有在单个文件和编译器调用命令级别进行详细说明。附加功能是通过连接扩展的机制来实现的。

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

来源: opennet.ru

添加评论