Faʻasaʻolotoina o le Bazel 2.0 build system

Avanoa fa'amatu'u o mea faigaluega fa'apotopotoga tatala Bazel 2.0, развиваемого инженерами из Google и используемого для сборки большинства внутренних проектов данной компании. Bazel обеспечивает сборку проекта, запуская необходимые компиляторы и тесты. Поддерживается сборка и тестирование кода на Java, C++, Objective-C, Python, Rust, Go и многих других языках, а также сборка мобильных приложений для Android и iOS. Код проекта tufatufaina e laiseneina i lalo ole 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».

Faatasi ai ma uiga iloga o Bazel o le maualuga o le saoasaoa, faʻamaoni ma le toe faʻaaogaina o le faʻapotopotoga. Ina ia ausia le saoasaoa o le fausiaina, e faʻaaogaina e Bazel le faʻaogaina ma le faʻaogaina o metotia mo le faʻagasologa o le fausiaina. E tatau ona fa'amalamalama atoatoa faila fa'alagolago uma, e fa'atatau i fa'ai'uga e toe fau vaega pe a mae'a suiga (na'o faila faila e toe fausia) ma fa'atusa le fa'agasologa o le fa'apotopotoga. Tooling fa'amautinoaina fo'i le toe fa'apotopotoina, i.e. o le taunuuga o le fausiaina o se poloketi i luga o le masini a le tagata atiaʻe o le a tutusa lelei ma le fausiaina i luga o faiga faʻavae lona tolu, e pei o faʻaumau tuʻufaʻatasiga faifai pea.

E le pei o Make ma Ninja, e faʻaaogaina e Bazel se auala maualuga i le fausiaina o tulafono faʻapotopotoga, lea, nai lo le faʻamalamalamaina o le fusia o poloaiga i faila o loʻo fausia, o loʻo faʻaaogaina poloka e sili atu ona faʻaogaina, e pei o le "fausiaina o se faila faila i totonu. C++", "fausiaina o se faletusi i le C++" poʻo le "faʻataʻitaʻiina o se suʻega mo C++", faʻapea foʻi ma le faʻailoaina o sini ma fausia faʻavae. I le faila faila a le BUILD, o vaega o le poloketi o loʻo faʻamatalaina o se vaega o faletusi, faila faila ma suʻega, e aunoa ma le faʻamalamalamaina i le tulaga o faila taʻitasi ma faʻatonuga valaau. O galuega fa'aopoopo e fa'atinoina e ala i le masini mo fa'aopoopoga fa'aopoopo.

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

puna: opennet.ru

Faaopoopo i ai se faamatalaga