The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Компания Google представила первый выпуск открытой системы сборки Bazel

09.09.2015 20:40

Анонсирован Bazel 0.1.0, первый выпуск открытого варианта сборочного инструментария, используемого для сборки большинства внутренних проектов компании Google. Выпуск 0.1.0 позиционируется как бета-версия, поддерживающая сборку серверного и клиентского ПО на языках C++, Java, Python, Rust, Objective-C и Shell. Код Bazel распространяется под лицензией Apache.

Bazel обеспечивает сборку проекта, запуская необходимые компиляторы и тесты, выполняя задачи, аналогичные таким системам, как Make, Ant, Gradle, Buck, Pants и Maven. Среди отличительных особенностей Bazel выделяются высокая скорость, надёжность и повторяемость процесса сборки. Для достижения высокой скорости сборки в Bazel активно применяются техники кэширования и распараллеливания процесса сборки. Инструментарий также гарантирует повторяемость сборки, т.е. результат сборки проекта на машине разработчика будет полностью совпадать со сборкой на сторонних системах, таких как серверы непрерывной интеграции.

Bazel изначально спроектирован для оптимальной сборки проектов Google, в том числе сборки очень больших проектов и проектов, содержащих код на нескольких языках программирования, требующих расширенного тестирования и собираемых для нескольких платформ. В отличие от Make и Ninja в Bazel применяется более высокоуровневый подход к построению правил сборки, при котором вместо определения привязки команд к собираемым файлам производится применения более абстрактных готовых блоков, таких как "сборка исполняемого файла на языке С++", "сборка библиотеки на C++" или "запуск теста для C++", а также определение целевых и сборочных платформ. Дополнительная функциональность реализуется через механизм подключения расширений.

Особенности Bazel:

  • Возможность использования для сборки кода, написанного на разных языках программирования. Из коробки поддерживается Java, Objective-C и C++, но через систему расширений возможна поддержка произвольных языков;
  • Высокоуровневый язык задания правил сборки. В текстовом файле BUILD компоненты проекта описываются как связка библиотек, исполняемых файлов и тестов, без детализации на уровне отдельных файлов и команд вызова компилятора;
  • Использование единых инструментов и сборочных файлов для разных платформ и архитектур. Например, один файл сборки без изменений может применяться как для серверной системы, так и для мобильного устройства;
  • Повторяемость сборки. В BUILD-файлах обязательно полностью определены все зависимости, на основе которых принимаются решения по пересборке компонентов после внесения изменений и распараллеливании процесса сборки. Все операции сборки являются инкрементальными и всегда приводят к идентичному результату в любых окружениях;
  • Высокая масштабируемость. В Google Bazel применяется для сборки проектов, которые могут насчитывать сотни тысяч файлов. Сборка проекта, в котором не были изменены файлы, занимает примерно 200мс. Пересборка выполняется только для файлов, которые требуют пересборки. Тесты выполняются только если текущее состояние проекта может привести к изменению результата.

Из особенностей первого выпуск отмечается формирование бинарных сборок для Linux и OS X, возможность загрузки зависимостей из Maven Central, сборка и установка программ для Android, сборка и загрузки образов Docker, возможность предварительной загрузки и кэширования внешних зависимостей и режим изолированной сборки в Linux (Sandboxing). Из планов на первый стабильный релиз Bazel 1.0, который ожидается в мае 2016 года, отмечается реализация поддержки языка Go, система распределённого кэширования, сборка из репоизиториев Github, сборка приложений для iOS, интерфейс для интеграции с IDE и поддержка платформы Windows.

  1. Главная ссылка к новости (http://google-opensource.blogs...)
  2. OpenNews: Выпуск сборочного инструментария qbs 1.4.0, развиваемого проектом Qt
  3. OpenNews: Для GNOME-приложений представлена новая экспериментальная система сборки BuilDj
  4. OpenNews: Разработчики из компании Google открыли код системы сборки Ninja
  5. OpenNews: Выпуск системы сборки GNU Make 4.1
  6. OpenNews: Выпуск системы сборки CMake 3.1.0
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/42940-build
Ключевые слова: build, bazel
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (48) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 22:09, 09/09/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Java? ждите следующих исков от Oracle на API (Java Runtime)!
     
     
  • 2.10, абвгдейка (ok), 00:20, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    американский суд уже выносил решение, что API не предмет IP :)
     
     
  • 3.13, Аноним (-), 01:18, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Это решение уже отменили. Суд будет длиться бесконееееечно.
     
  • 3.23, Аноним (-), 07:47, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    С разморозкой.
     

  • 1.3, Аноним (-), 22:25, 09/09/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Сборка проекта, в котором не были изменены файлы, занимает примерно 200мс

    200мс если железок не менее 10к будет многовато на один файл.

     
     
  • 2.45, Джо (?), 13:55, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Сборка проекта с 10к файлов будет занимать 200мс.
     

  • 1.4, Аноним (-), 22:35, 09/09/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Зачем это если есть CMake?
     
     
  • 2.15, Аноним (-), 01:33, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > Зачем это если есть CMake?

    Наверное гуглу надоело майнтайнить свою энтерпрайзятину единолично. Вот правда просчет вышел: для тех кто не гугл - среда сборки требующая ЯВЫ и нацеленная на энтерпрайзные мегабилды в инфраструктуре а-ля гугль не очень сильно требуется. Это как на карьерном самосвале за хлебушком в магазин ездить.

     
  • 2.36, freehck (ok), 12:34, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Система сборки -- это не инструментарий для сборки одного проекта.

    В задачи сборочной системы обычно входит сборка всех компонент под требуемую ось (а это развёртывание chroot-окружения, установка туда всех сборочных зависимостей пакета и т.п.), пакетирование их, построение changelog-а и его последующая рассылка. Возможно, некоторый веб-интерфейс управления этой штукой.

    Короче, Cmake и систему сборки не совсем корректно сравнивать.

     
     
  • 3.46, Mihail Zenkov (ok), 14:10, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Судя по их FAQ - такая же система сборки как и cmake, но с упором на быструю пересборку больших проектов при малых изменениях.

    Непохоже что бы она могла сама автоматом притянуть Qt нужной версии, собрать его, прилинковать к при сборке и аккуратно все в пакет завернуть.

    Пример для c++ https://github.com/bazelbuild/bazel/blob/master/examples/cpp/BUILD
    Пример для d https://github.com/bazelbuild/bazel/blob/master/examples/d/hello_world/BUILD

    Для обоих случаев имена зависимых файлов указываются явно.

     
     
  • 4.51, freehck (ok), 11:00, 11/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Судя по их FAQ - такая же система сборки как и cmake,
    > но с упором на быструю пересборку больших проектов при малых изменениях.

    Если это аналог cmake, то как они обеспечивают заявленную повторяемость сборки?

    > В  BUILD-файлах обязательно полностью определены все зависимости, на основе которых принимаются решения по пересборке компонентов после внесения изменений и распараллеливании процесса сборки. Все операции сборки являются инкрементальными и всегда приводят к идентичному результату в любых окружениях;

    Тут, кстати, действительно не очень понятно. Я возможно ошибочно предполагаю, что компонент -- это git-репозиторий. Возможно, это какие-то внутренние структуры проекта в этом репозитории.

    Если у кого время будет, посмотрите пожалуйста, отпишите, что и как.

    А то если у них действительно аналог make, рулящий зависимостями, то я в упор не понимаю, что мешает делать, как рекомендуется в man make:
    http://git.freehck.ru/cfrolov.git/blob/master/Makefile
    (см. "compile and generate dependency info")

     

  • 1.8, Аноним (-), 23:24, 09/09/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Про Apple то зачем затёрли?
     
  • 1.9, Troy (??), 00:16, 10/09/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Где JavaScript !?!?
     
     
  • 2.11, juvvidildo (?), 00:31, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    http://bazel.io/faq.html
    > Bazel tries to minimize expensive compilation steps. If you are only using interpreted languages directly, such as JavaScript or Python, Bazel will likely not interest you.
     
  • 2.16, Аноним (-), 01:35, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Где JavaScript !?!?

    А ты что, компилировать его научился? :)

     
     
  • 3.20, Аноним (-), 06:28, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • –3 +/
    уже не в состоянии внимательно прочитать даже заголовок новости? "...системы сборки..." (внимание на слово "сборки", дегенерат)
     
     
  • 4.21, Аноним (-), 07:46, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > уже не в состоянии внимательно прочитать даже заголовок новости? "...системы сборки..."
    > (внимание на слово "сборки", дегенерат)

    Вот я и спрашиваю - что вы в JS "собираете", о великий интеллектуал?

     
     
  • 5.27, Crazy Alex (ok), 09:03, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    ну, вообще для веба сейчас много чего собирают - js-модули в один файл, css, спрайты... плюс всякие уродства вроде CoffeeScript.
     
     
  • 6.52, Аноним (-), 15:02, 11/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > ну, вообще для веба сейчас много чего собирают - js-модули в один
    > файл, css, спрайты... плюс всякие уродства вроде CoffeeScript.

    Слушай, я недооценил яваскриптеров. Сначала поорать что скриптоязык, компилить не надо, epic win! Потом проcpaть в хлам все это преимущество, при этом получив два вагона проблем с оптимизацией и вообще производительностью.

    А потом эти, с их брокколи, пробуют сделать какую-нибудь онлайн игру и начинается феерическая сага о том как они пробовали что-нибудь придумать насчет garbage collector и лагов от него, как они изгалялись с типизированными массивами, как костылии с asm.js, как они ударно зарулили те проблемы ... которых для начала быть вообще было не должно, если бы это делалось в здравом уме и твердой памяти.

     
  • 5.33, Аноним (-), 11:38, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Вот список только популярных систем сборок для javascript (а есть еще всякие самописные и непопулярные)

    http://gruntjs.com
    http://coffeescript.org/documentation/docs/cake.html
    http://gulpjs.com
    https://github.com/broccolijs/broccoli

     

  • 1.12, Mihail Zenkov (ok), 00:35, 10/09/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Описание интересное, но после "System Requirements: Java JDK 7 or later" интерес мгновенно угас.
     
     
  • 2.17, Вареник (?), 01:36, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А уже есть системы сборки на х86 ассемблере?
     
     
  • 3.38, Mihail Zenkov (ok), 12:52, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > А уже есть системы сборки на х86 ассемблере?

    Возможно есть у KolibriOS или подобных.
    Для моих нужд вполне хватает make + pkg-config: есть почти во всех системах, весит - 232KB (make) + 32KB (pkgconf - тоже что и pkg-config, но не тянет glib).

     
  • 2.22, Аноним (-), 07:47, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Описание интересное, но после "System Requirements: Java JDK 7 or later" интерес
    > мгновенно угас.

    Так это гугл. Им не проблема поднять десяток серверов для такой фигни как сборка проекта.

     
     
  • 3.32, виндотролль (ok), 11:17, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Так это гугл. Им не проблема поднять десяток серверов для такой фигни
    > как сборка проекта.

    Это гугл. Им проблемно ждать 12 часов, пока соберется один проект. Потому они поднимают десяток^Wдесятки серверов и собирают вместо 12 часов 10 минут. И bazel это умеет.

     
     
  • 4.40, Mihail Zenkov (ok), 13:06, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Это гугл. Им проблемно ждать 12 часов, пока соберется один проект.

    А нечего такой bloatware писать - LFS на относительно старой машине (amd 4 x 3.3 GHz) за 35-40 минут, BLFS - 2-4 часа. Ядро собирается за 3 минуты.

    > Потому
    > они поднимают десяток^Wдесятки серверов и собирают вместо 12 часов 10 минут.
    > И bazel это умеет.

    Это как? Где эта возможность описана (я про сборку одного проекта на десятках серверов)?  

     
     
  • 5.42, виндотролль (ok), 13:28, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > А нечего такой bloatware писать - LFS на относительно старой машине (amd
    > 4 x 3.3 GHz) за 35-40 минут, BLFS - 2-4 часа.
    > Ядро собирается за 3 минуты.

    объем кода — сотни таких «ядер». Потому и долго. В гугле все всегда собирают из исходников. Бинарных репозиториев (в явном виде) у них нету. Есть кеш артефактов, такой себе волатайл репозиторий. Ну и много GWT кода, который собирается очень долго.

    > Это как? Где эта возможность описана (я про сборку одного проекта на
    > десятках серверов)?

    Эта возможность есть в их blaze (bazel опенсорсят с него). Надеюсь, что это добавят в bazel. Иначе, конечно, профита от новой системы сборки немного.

     
  • 5.43, виндотролль (ok), 13:33, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    https://news.ycombinator.com/item?id=9256844

    И еще здесь есть намек, что распределенные билды могут появиться в bazel
    https://gradle.org/gradle-team-perspective-on-bazel/

     
     
  • 6.44, Mihail Zenkov (ok), 13:53, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Там у них в faq есть ссылка на цикл статей: http://google-engtools.blogspot.com/2011/09/build-in-cloud-distributing-build

    Там подробно рассказывается как они организуют доступ серверов к исходникам и возврат сообщений сборки. Но я так и не понял - каким образом происходит запуск gcc на серверах и где происходит линковка? Как они с LTO справляются тем более не понятно.

     
     
  • 7.47, виндотролль (ok), 14:48, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    http://bazel.io/docs/cpp.html

    cc_library дает obj
    cc_executable линкует то, что накомпилил cc_library.

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

     
     
  • 8.48, Mihail Zenkov (ok), 15:15, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Непонятно как это все работает Откуда берется gcc с сервера или локальной маши... текст свёрнут, показать
     
     
  • 9.49, виндотролль (ok), 15:59, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Все окружение 8212 в облаке Сорцы 8212 тоже в облаке Даже те, которые из... текст свёрнут, показать
     

  • 1.14, Антонин (?), 01:20, 10/09/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Ура, новая система сборки.
     
     
  • 2.18, guest (??), 04:35, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да, вот хреновина.
    Прямо карусель получается. белл пришол -
    собирает, ричард пришол - собирает.
    пришол империя мелкозла - собирает.
    пришол империя добра - собирает
    Куды же жуниору податься?
    Свои идут - уря, уря.
    Вот тебе и "уря" . Дождались, мать твою...
     
  • 2.19, Тот_Самый_Анонимус (?), 06:04, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >Ура, новая система сборки.

    Ещё непроснувшийся мозг прочёл что новая система сборки урановая...

     
     
  • 3.24, Аноним (-), 07:47, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ещё непроснувшийся мозг прочёл что новая система сборки урановая...

    Она жабистая, что не сильно лучше :)

     
     
  • 4.25, Товарищ Майор (?), 07:54, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    из урана хотя бы можно делать ломы. и топить их в ртути.
     
     
  • 5.29, Аноним (-), 09:27, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    man "бронебойный подкалиберный", товарищ майор
     

  • 1.26, Ромашко (?), 08:21, 10/09/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Очередная опенсурсная поделка от Гугла, выкинутая на помойк^Wоткрытый доступ без организации открытой разработки и коммьюнити. Как обычно, на голову "лучше и удобнее" всех конкурентов, но зато написано полностью биороботами корпорации добра. Эдакий местечковый NIH.

    Следуя традициям жанра, через полгода-год никто в Гугле про этот продукт даже и не вспомнит, а "довольные" юзеры поделки дальше побегут дальше онанировать на "передовые"  технологии. Кто хоть раз юзал всякие gyp'ы или пытался скачать-собрать-пропатчить хоомв-андроиды и прочее меня поймут.

     
     
  • 2.28, Аноним (-), 09:10, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вам то что?
     
  • 2.30, виндотролль (ok), 11:14, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > через полгода-год никто в Гугле про этот продукт даже и не вспомнит

    вообще-то терабайты исходников в гугле собираются именно этой системой сборки.

     
     
  • 3.35, Виталий (??), 12:33, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    А почему тогда версия только 0.1?
     
     
  • 4.39, виндотролль (ok), 12:57, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    они опенсорсят свою систему сборки по частям
     

  • 1.31, iZEN (ok), 11:14, 10/09/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    http://bazel.io/docs/install.html
    - работает на устаревшем OpenJDK 7.
     
     
  • 2.34, Аноним (-), 12:29, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    опять ты со своим страшным bsdm
     
  • 2.37, Аноним (-), 12:37, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    iZEN
    - онанирует на устаревшую операционку.
     
  • 2.41, Аноним (-), 13:08, 10/09/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Зеня, завидуешь умственно отсталым?
     

  • 1.50, Аноним (-), 00:10, 11/09/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    В собственном велосипеде gyp обнаружили фаталный недостаток?
    Обязательно надо было новый?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру