Izdaja gradbenega sistema Bazel 2.0

Na voljo sprostitev odprtih montažnih orodij Bazel 2.0, развиваемого инженерами из Google и используемого для сборки большинства внутренних проектов данной компании. Bazel обеспечивает сборку проекта, запуская необходимые компиляторы и тесты. Поддерживается сборка и тестирование кода на Java, C++, Objective-C, Python, Rust, Go и многих других языках, а также сборка мобильных приложений для Android и iOS. Код проекта distributer licenciran pod 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».

Med značilnostmi Bazela so visoka hitrost, zanesljivost in ponovljivost postopka montaže. Da bi dosegel visoko hitrost gradnje, Bazel aktivno uporablja tehnike predpomnjenja in paralelizacije za proces gradnje. Datoteke BUILD morajo v celoti definirati vse odvisnosti, na podlagi katerih se sprejemajo odločitve o ponovni izdelavi komponent po opravljenih spremembah (na novo se izdelajo le spremenjene datoteke) in vzporedni proces sestavljanja. Orodje zagotavlja tudi ponovljivo montažo, tj. rezultat gradnje projekta na stroju razvijalca bo popolnoma enak gradnji na sistemih tretjih oseb, kot so strežniki za neprekinjeno integracijo.

Za razliko od Make in Ninja Bazel uporablja pristop na višji ravni za gradnjo pravil sestavljanja, v katerem se namesto definiranja vezave ukazov na datoteke, ki se gradijo, uporabljajo bolj abstraktni že pripravljeni bloki, kot je »gradnja izvršljive datoteke v C++«, »izdelava knjižnice v C++« ali »izvajanje preizkusa za C++«, kot tudi prepoznavanje ciljnih in gradbenih platform. V besedilni datoteki BUILD so komponente projekta opisane kot kup knjižnic, izvedljivih datotek in testov, brez podrobnosti na ravni posameznih datotek in ukazov klica prevajalnika. Dodatne funkcionalnosti se izvajajo preko mehanizma za povezovanje razširitev.

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

Vir: opennet.ru

Dodaj komentar