Verëffentlechung vum Bazel 2.0 Build System

Verfügbar Verëffentlechung vun oppene Versammlungsinstrumenter Bazel 2.0, развиваемого инженерами из Google и используемого для сборки большинства внутренних проектов данной компании. Bazel обеспечивает сборку проекта, запуская необходимые компиляторы и тесты. Поддерживается сборка и тестирование кода на Java, C++, Objective-C, Python, Rust, Go и многих других языках, а также сборка мобильных приложений для Android и iOS. Код проекта verdeelt duerch lizenzéiert ënner 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».

Ënnert den ënnerschiddleche Feature vu Bazel sinn d'Héichgeschwindegkeet, Zouverlässegkeet an Widderhuelbarkeet vum Montageprozess. Fir héich Baugeschwindegkeet z'erreechen, benotzt Bazel aktiv Cache- a Paralleliséierungstechnike fir de Bauprozess. BUILD Dateien mussen all Ofhängegkeeten komplett definéieren, op Basis vun deenen Entscheedunge gemaach gi fir Komponenten opzebauen nodeems d'Ännerunge gemaach ginn (nëmme geännert Dateien ginn nei opgebaut) an de Montageprozess paralleliséieren. Tooling suergt och fir widderhuelend Montage, d.h. D'Resultat vum Bau vun engem Projet op der Maschinn vum Entwéckler wäert komplett identesch sinn mat dem Bau op Drëtt-Partei Systemer, sou wéi kontinuéierlech Integratiounsserver.

Am Géigesaz zu Make an Ninja benotzt Bazel eng Approche méi héich fir d'Versammlungsregelen ze bauen, an där, anstatt d'Bindung vun de Kommandoen un d'Dateien ze definéieren, déi gebaut ginn, méi abstrakt fäerdeg Blödsinn benotzt ginn, sou wéi "eng ausführbar Datei opbauen an C ++", "eng Bibliothéik an C ++ bauen" oder "en Test fir C ++ ausféieren", souwéi Zil z'identifizéieren a Plattformen ze bauen. An der BUILD Textdatei ginn d'Projetkomponente beschriwwen als eng Rëtsch Bibliothéiken, ausführbar Dateien an Tester, ouni Detailer um Niveau vun eenzelne Dateien a Compiler Uruff Kommandoen. Zousätzlech Funktionalitéit gëtt duerch de Mechanismus fir d'Verbindung vun Extensiounen ëmgesat.

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

Source: opennet.ru

Setzt e Commentaire