Itusilẹ ti eto kikọ Bazel 2.0

Wa itusilẹ ti awọn irinṣẹ apejọ ṣiṣi Bazel 2.0, развиваемого инженерами из Google и используемого для сборки большинства внутренних проектов данной компании. Bazel обеспечивает сборку проекта, запуская необходимые компиляторы и тесты. Поддерживается сборка и тестирование кода на Java, C++, Objective-C, Python, Rust, Go и многих других языках, а также сборка мобильных приложений для Android и iOS. Код проекта pin nipasẹ iwe-aṣẹ labẹ 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».

Lara awọn ẹya iyasọtọ ti Bazel ni iyara giga, igbẹkẹle ati atunṣe ti ilana apejọ. Lati ṣaṣeyọri iyara kikọ giga, Bazel lo ni itara fun caching ati awọn ilana isọpọ fun ilana kikọ. Awọn faili BUILD gbọdọ ṣalaye ni kikun gbogbo awọn igbẹkẹle, lori ipilẹ eyiti awọn ipinnu ṣe lati tun awọn paati ṣe lẹhin awọn ayipada (awọn faili ti o yipada nikan ni a tun tun kọ) ati ṣe afiwe ilana apejọ naa. Irinṣẹ tun ṣe idaniloju apejọ atunṣe, i.e. abajade ti kikọ iṣẹ akanṣe kan lori ẹrọ olupilẹṣẹ yoo jẹ aami patapata si kikọ lori awọn ọna ṣiṣe ẹnikẹta, gẹgẹbi awọn olupin isọpọ lemọlemọfún.

Ko dabi Make ati Ninja, Bazel nlo ọna ipele ti o ga julọ si kikọ awọn ofin apejọ, ninu eyiti, dipo asọye isọdọmọ ti awọn aṣẹ si awọn faili ti a kọ, diẹ sii awọn bulọọki ti a ti ṣetan ni a lo, gẹgẹbi “kikọ faili ti o le ṣiṣẹ ni C ++”, “kikọ ile-ikawe kan ni C ++” tabi “nṣiṣẹ idanwo fun C ++”, bakanna bi idamo ibi-afẹde ati kọ awọn iru ẹrọ. Ninu faili ọrọ BUILD, awọn paati iṣẹ akanṣe jẹ apejuwe bi opo ti awọn ile-ikawe, awọn faili ṣiṣe ati awọn idanwo, laisi alaye ni ipele ti awọn faili kọọkan ati awọn aṣẹ ipe alakojọ. Awọn iṣẹ ṣiṣe afikun jẹ imuse nipasẹ ẹrọ fun sisopọ awọn amugbooro.

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

orisun: opennet.ru

Fi ọrọìwòye kun