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

添加評論