Bazel 2.0 куруу системасынын чыгарылышы

Жеткиликтүү ачык монтаждоо куралдарын чыгаруу Bazel 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».

Базелдин айырмалоочу өзгөчөлүктөрүнүн арасында чогултуу процессинин жогорку ылдамдыгы, ишенимдүүлүгү жана кайталануучулугу бар. Жогорку куруу ылдамдыгына жетүү үчүн, Базел куруу процесси үчүн кэштөө жана параллелдөө ыкмаларын активдүү колдонот. BUILD файлдары бардык көз карандылыктарды толук аныкташы керек, анын негизинде өзгөртүүлөр киргизилгенден кийин (өзгөрүлгөн файлдар гана кайра түзүлөт) компоненттерди кайра куруу боюнча чечимдер кабыл алынат жана монтаж процессин параллелдештирүүгө тийиш. Аспаптар дагы кайталануучу монтажды камсыз кылат, б.а. Долбоорду иштеп чыгуучунун машинасында куруунун натыйжасы үзгүлтүксүз интеграция серверлери сыяктуу үчүнчү тараптын системаларындагы курууга толугу менен окшош болот.

Make жана Ninjaдан айырмаланып, Базел монтаждоо эрежелерин курууда жогорку деңгээлдеги ыкманы колдонот, мында курулуп жаткан файлдарга буйруктардын байланышын аныктоонун ордуна абстракттуу даяр блоктор колдонулат, мисалы, “аткалуучу файлды түзүү C++”, “C++ тилинде китепкана куруу” же “C++ үчүн тест жүргүзүү”, ошондой эле максатты аныктоо жана платформаларды куруу. BUILD текст файлында долбоордун компоненттери жеке файлдардын деңгээлинде деталдаштырылбастан жана компиляторду чакыруу командаларынын деталдары жок китепканалар, аткарылуучу файлдар жана тесттер катары сүрөттөлөт. Кошумча функциялар кеңейтүүлөрдү туташтыруу механизми аркылуу ишке ашырылат.

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

Source: opennet.ru

Комментарий кошуу