Нашри системаи сохтани 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

Илова Эзоҳ