URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 101844
[ Назад ]

Исходное сообщение
"Компания Google развивает новую открытую систему сборки Bazel"

Отправлено opennews , 25-Мрт-15 11:05 
Компания Google открыла код сборочного инструментария Bazel (http://bazel.io/), основанного на наработках, используемых для сборки большинства внутренних проектов компании. Bazel обеспечивает сборку проекта, запуская необходимые компиляторы и тесты, выполняя задачи, аналогичные таким системам, как Make, Ant, Gradle, Buck, Pants и Maven. Bazel позволяет собирать проекты на любых языках программирования и отличается сочетанием высокой скорости, надёжности  и повторяемости процесса сборки. Код Bazel распространяется (https://github.com/google/bazel) под лицензией Apache.

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


Для достижения высокой скорости сборки в Bazel активно применяются техники кэширования и распараллеливания процесса сборки. Инструментарий также гарантирует повторяемость сборки, т.е. результат сборки проекта на машине разработчика будет полностью совпадать со сборкой на сторонних системах, таких как серверы непрерывной интеграции. Bazel отлично подходит для сборки очень больших проектов или проектов, содержащих код на нескольких языках программирования, требующих расширенного тестирования или собираемых для нескольких платформ.

Особенности (http://bazel.io/docs/FAQ.html) Bazel:

-  Возможность использования для сборки кода, написанного на разных языках программирования. Из коробки поддерживается Java, Objective-C и C++, но через систему расширений возможна поддержка произвольных языков;

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

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

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

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

Пример (https://github.com/google/bazel/tree/f01b229f426e7466b1be3c4...) сборочного файла:


<font color="#461b7e">

   package(default_visibility = ["//visibility:public"])
   cc_library(
      name = "hello-lib",
      srcs = ["hello-lib.cc"],
      hdrs = ["hello-lib.h"],
   )
   cc_binary(
      name = "hello-world",
      srcs = ["hello-world.cc"],
      deps = [":hello-lib"],
   )
   cc_test(
      name = "hello-success_test",
      srcs = ["hello-world.cc"],
      deps = [":hello-lib"],
   )

</font>


URL: http://www.reddit.com/r/programming/comments/30508z/google_o.../
Новость: http://www.opennet.ru/opennews/art.shtml?num=41908


Содержание

Сообщения в этом обсуждении
"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено _yurkis_ , 25-Мрт-15 11:05 
Если там Java в жестких зависимостях то ИМХО проекты на плюсах пользовать почти не будут :(

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 12:15 
Да нафига им этот баян? У плюсовиков теперь есть qbs.

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 12:48 
В qbs сложно добавить поддержку компилятора, про который он не знает? У меня тут с CMake траблы, ищу куда перекатиться.

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено anonymous , 25-Мрт-15 13:01 
я на scons перебежал

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 13:28 
И как оно? подойдет ли для сложного Qt'го кроссплатформенного проекта, где и Андроид, и Шиндовс, и чего только не надо собирать.

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 16:49 
> я на scons перебежал

Нашел на что перебежать. Головняк с питоном на половине платформ - гарантирован. Впрочем, питон головняк сам по себе из-за кучи несовместимостей.


"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Филипп Филиппович , 26-Мрт-15 05:29 
Scons радует вменяемым скриптовым языком (то, что сделано в CMake, языком назвать трудно, в 21 веке такого быть не должно). Но он, как показала практика, не очень быстр для очень больших проектов. У нас есть большие проекты и на том, и на том. Увы, о scons сильно жалеем. Удивительно, но в огромных проектах на нём именно внутренняя логика сборки начинает съедать время, почти сопоставимое со сборкой. Постоянное перечитывание всего и вся до добра не доводит.

Если проект небольшой или средний -- смело вперёд на scons. Если там многие десятки сложных зависимостей и добрая сотня мегабайт исходных текстов, не советую, всё проклянёте.


"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 26-Мрт-15 17:38 
> Удивительно, но в огромных проектах на нём именно внутренняя логика сборки
> начинает съедать время,

"Питон не тормозит!!!11111"


"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Филипп Филиппович , 26-Мрт-15 19:18 
Питон-то причём? Тут проблемы реализации.

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено ваноним , 25-Мрт-15 20:49 
> У меня тут с CMake траблы

а что за траблы? ман курить не пробовали? :)


"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 22:09 
> а что за траблы? ман курить не пробовали? :)

Компилятор, требующий танцев с бубном даже без CMake. А ман... ну все мы знаем, какой у CMake хороший ман.



"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено ваноним , 25-Мрт-15 23:26 
> Компилятор, требующий танцев с бубном даже без CMake

тогда проблема не в cmake ;)


"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Xasd , 25-Мрт-15 23:41 
> тогда проблема не в cmake ;)

ды проблема-то может быть хоть где угодно...

...однако хороший сборочный инструмент возьмёт эту проблему на себя и решит её :-)

(а иначе зачем тогда вообще нужен сборочный инструментарий, если он не решает проблемы?)


"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Олег , 26-Мрт-15 12:14 
А можно подробнее про проблемы с CMake?

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено vdb , 26-Мрт-15 21:17 
Когда я с ним работал (версии 2.x):

1. Уродский синтаксис языка. Отсутствие функций и выражений.
2. Отсутствие внятной документации.
3. Невозможность использовать в одном проекте несколько компиляторов одного и того же языка.


"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 16:00 
qbs не взлетит из-за завязки на qt. Сейчас есть только cmake.

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено _yurkis_ , 25-Мрт-15 16:47 
Ну почему же только cmake? Для тонких ценителей и любителей в гамаках полноценно на лыжах трахаться (что не плохо вобщем-то) есть еще scons

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено ваноним , 25-Мрт-15 20:51 
> Для тонких ценителей и любителей в гамаках  полноценно на лыжах трахаться есть еще scons

а для любителей потрахаться по-настоящему есть bjam.


"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено D , 25-Мрт-15 18:48 
qbs уже не взлетел. и вряд ли взлетит,к сожалению.

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено A.Stahl , 25-Мрт-15 11:06 
>Код Bazel, который написан на языках Java и C++

Ну и нахрена было городить такую дикую смесь? Ну спасибо что хоть Go не обмазали...


"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 11:39 
а в чем проблема? реально не понимаю. работает - гугл тестил.
или место надо экономить? вроде нет

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 12:19 
fixed: "а в чем проблема? реально не понимаю. тормозит - гугл тестил.
или место надо экономить? вроде нет"
Эклипсерам должно понравиться.

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Andrey Mitrofanov , 25-Мрт-15 11:45 
>>Код Bazel, который написан на языках Java и C++
> Ну и нахрена было городить такую дикую смесь?

Корпорация добра наносит ответный удар по мс-бильду. Сокрушительный удар.

> Ну спасибо что хоть Go не обмазали...

"Мы ж не звери."


"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено adolfus , 25-Мрт-15 15:50 
> Корпорация добра наносит ответный удар по мс-бильду. Сокрушительный удар.

С таким же успехом можно сказать, что "наносит ответный удар по gcc". msbuild -- всего лишь эквивалент gcc для вантуза от MS. Он представляет собой набор компайлеров, компоновщик, несколько утилит и пару скриптов, устанавливающих переменные среды. Да, конечно же и хидеры


"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 16:50 
>> Ну спасибо что хоть Go не обмазали...
> "Мы ж не звери."

С явой то в обязательных зависимостях? За кадром слышен конский топот плюсовиков, побежавших ставить себе 100 метров рантайма ради кaлa^W среды сборки.


"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 20:19 
Для билд фермы совсем не проблема поставить один раз рантайм.
А вот если вас это значимый блоккер, то сабж не под ваши нужды - только и всего.

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 27-Мрт-15 03:56 
> Для билд фермы совсем не проблема поставить один раз рантайм.

Ну да, если некто корпораха размером с гугл - они это конечно поставят. Вот только 99.9% разработчиков такой инфраструктурой не обладают :)

> А вот если вас это значимый блоккер, то сабж не под ваши
> нужды - только и всего.

Ну понятно - фиговина будет обладать популярностью сравнимой с IBMовскими майнфреймами, по поводу чего через 5-10 лет гугл пульнет очередной анонс про шатдаун проекта :)


"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Филипп Филиппович , 26-Мрт-15 16:53 
Для проектов-гигантов совершенно неважно, нужно ли JRE. Если в проекте 100 МБ исходников, а в собранном виде он занимает гигабайты, всем будет абсолютно всё равно, ставить ли CMake или что-то там с JRE. Если учесть, что под ограниченные в ресурсах платформы всё равно всё кросс-компилируют, так это вообще никого не будет волновать.

Просто понятно, что маленькие проектики -- не целевая аудитория этой штуки.


"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 27-Мрт-15 03:57 
> Просто понятно, что маленькие проектики -- не целевая аудитория этой штуки.

Ну вон линуксное ядро - какой проект? А для сборки минимум зависимостей. Была б ему нужна ява для сборки - у него програмеров было бы в разы меньше. Потому что половине бы проблевалсь еще до того как смогли это скомпилить.


"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Филипп Филиппович , 27-Мрт-15 10:45 
И что? У нас тоже есть большущие проекты на CMake. Может, не ядро, но тоже очень большие. Живут неплохо. Против CMake я как будто ничего не говорил. Даже являюсь горячим сторонником его идеологии (генерация сборочных файлов). А почитать выше, так и вовсе хвалил его (хотя язык описания в CMake откровенно плох, это я Вам как человек, имеющий опыт создания парсеров, скажу).

Потом, Вы искренне полагаете, что человеку, неспособному даже JRE поставить, есть что делать в ядре?

С ядром причина другая, его теоретически можно под хитрое что-то и не кросс-компилировать, а собрать ПРЯМО на железке. Если такая возможность хотя бы раз в сто лет, одному экзотическому пользователю на миллион, нужна, о JRE речи уже нет. Но есть масса проектов, больших и серьёзных, для которых вопрос о сборке на кофеварке или роутере не встанет никогда. Для них наличие JRE в зависимостях ни горячо, ни холодно.


"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено длолдодлолдо , 25-Мрт-15 11:49 
Да пофиг, все равно через несколько лет, по традиции, закроет проект

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Anons , 25-Мрт-15 11:54 
Для Go хотя бы jvm не нужна

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено sdasdfasdf , 25-Мрт-15 12:33 
Да потому что с++ это трах на хадулях и пишут на нем только от безвыходности, попробуй налобать на нем что нибудь подобное gradle и развивать его и расширять с такой же скоростью, а не раз в 100500 лет по одной плюшке.

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 16:51 
> и развивать его и расширять с такой же скоростью, а не
> раз в 100500 лет по одной плюшке.

Лучше попробуй на яве написать игру с нормальной графикой. И чтоб не тормозило и не клинило на полчаса пока GC мусор собирает. И чтоб 100 метров рантайма бонусом качать не надо.


"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 12:38 
Лучше б на go написали вместо этих двух. На rust не рассчитываю, ибо NIH.

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 13:34 
Rust еще не стабилизирован, поэтому (пока) никто не будет использовать его в продакшне.

А еще на нем писать в 2 раза сложнее чем на С++. И дело тут даже не в слишком умных указателях, а в страшной стандартной библиотеке, страшной документации, отсутствии тулинга и очень неторопливом компиляторе.


"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 13:38 
> И дело тут даже не в слишком умных указателях, а в страшной стандартной библиотеке, страшной документации, отсутствии тулинга и очень неторопливом компиляторе.

Ну с С++ понятно, а на rust-то почему сложно?


"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 15:24 
Синдром утёнка же.

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 17:10 
> А еще на нем писать в 2 раза сложнее чем на С++.

Да ладно, не сложнее чем на плюсах с темплейтами.


"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено sdasdfasdf , 25-Мрт-15 12:30 
И чем это лучше Gradle?

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 13:35 
Bazel Frog (c) Без вины виноватый

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 14:04 
Растёт замена emerge.

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 14:22 
Берите выше: это растёт новая замена средства размножения человеков.
Чё уж там мелочиться?

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено vitalif , 25-Мрт-15 14:12 
Боже мой. В линуксе острая нехватка систем сборки?

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 18:05 
ну так, не хватает сборки от гугла ))

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Товарищ Майор , 26-Мрт-15 07:54 
На движке гугл хром.

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 18:46 
> Боже мой. В линуксе острая нехватка систем сборки?

Нужно больше минералов, милорд!


"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 21:40 
Острая нехватка *вменяемых* систем сборки. GNU Make — штука хорошая, конечно, но явно не достаточная.

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено правдоруб , 26-Мрт-15 13:28 
У меня есть пример достаточности:

simplelp генерирует несколько файлов, причём новое содержимое файлов сравнивается со старым и запись происходит только при несовпадении. Make делает лишнюю работу даже без "-j".

Какие системы сборки тут могут помочь?


"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено правдоруб , 26-Мрт-15 15:22 
недостаточности, конечно

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 16:47 
System Requirements
  Supported platforms:
    Ubuntu Linux
    Mac OS X

  Java:
    Java JDK 8 or later

Основной язык программирования:
Java 94.9%


"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 16:53 
Ну, чего, очередная система сборки от хипстоты для хипстоты. И да, она завершает сборку за 200 миллисекунд. При условии что вы развернете парк серверов как у гугли ;]

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 18:05 
makefile наше все!

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено правдоруб , 26-Мрт-15 15:25 
Для мелочей однозначно, для KDE/Firefox/Libreoffice/Kernel уже какая-то совсем невообразимая портянка.

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 25-Мрт-15 19:05 
Исходники в гугль шлет?

"Компания Google развивает новую открытую систему сборки Bazel"
Отправлено Дмитрий , 25-Мрт-15 19:22 
Работал в гугле. Система крутая, подтверждаю. Правда, результирующий собранный артефакт не особо закастомайзишь, но гуглю это и не надо было, там стандартизированный жесткий формат отлично принимался везде где надо.
Особый кайф - это что сборка распараллелена на Клауда, не больше минуты на сборку гигантских проектов.

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 26-Мрт-15 08:56 
Базельский мир
Базельский комитет по банковскому надзору
Базель 1
Базель 2
Базель 3
Игра в БИСЕР - Базельский игрок - :) ага, теперь Google скрывать нечего...

И что он вам откомпилирует по Базелю :) ?


"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено yet another anonymous , 26-Мрт-15 09:49 
Че-то гугель заметался: то gradle в андроидную сборку притянет, то bazel 'развивает'...

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено Аноним , 26-Мрт-15 16:17 
Как он резолвит зависимости типа include в C++?

"Компания Google развивает новую открытую систему сборки Baze..."
Отправлено yet another anonymous , 26-Мрт-15 21:17 
Обычно хреновины такого рода имеют собственный препроцессор а-ля C++ (...). (поэтому использование неожиданного для таких хреновин компилятора может лажать в вычислении зависимостей).