The OpenNET Project
 
Поиск (теги):    НОВОСТИ (+) КОНТЕНТ WIKI MAN'ы ФОРУМ twitter

25.03.2015 09:05  Компания Google развивает новую открытую систему сборки Bazel

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

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

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

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

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

Пример сборочного файла:



 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"],
 )



  1. Главная ссылка к новости (http://www.reddit.com/r/programming/comm...)
  2. OpenNews: Выпуск системы сборки CMake 3.1.0
  3. OpenNews: Выпуск системы сборки GNU Make 4.1
  4. OpenNews: Разработчики из компании Google открыли код системы сборки Ninja
  5. OpenNews: Для GNOME-приложений представлена новая экспериментальная система сборки BuilDj
  6. OpenNews: Выпуск сборочного инструментария qbs 1.3.0, развиваемого проектом Qt
Тип: Программы
Ключевые слова: build, bazel, (найти похожие документы)
При перепечатке указание ссылки на opennet.ru обязательно
Реклама
Обсуждение Линейный вид (Ajax) | Показать все | RSS
 
  • 1.1, _yurkis_, 11:05, 25/03/2015 [ответить] [смотреть все]
  • +3 +/
    Если там Java в жестких зависимостях то ИМХО проекты на плюсах пользовать почти не будут :(
     
     
  • 2.7, Аноним, 12:15, 25/03/2015 [^] [ответить] [смотреть все] [показать ветку]
  • +3 +/
    Да нафига им этот баян У плюсовиков теперь есть qbs ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.13, Аноним, 12:48, 25/03/2015 [^] [ответить] [смотреть все]  
  • +/
    В qbs сложно добавить поддержку компилятора, про который он не знает У меня тут... весь текст скрыт [показать]
     
     
  • 4.14, anonymous, 13:01, 25/03/2015 [^] [ответить] [смотреть все]  
  • –2 +/
    я на scons перебежал ... весь текст скрыт [показать]
     
     
  • 5.15, Аноним, 13:28, 25/03/2015 [^] [ответить] [смотреть все]  
  • –1 +/
    И как оно подойдет ли для сложного Qt го кроссплатформенного проекта, где и Анд... весь текст скрыт [показать]
     
  • 5.56, Аноним, 16:49, 25/03/2015 [^] [ответить] [смотреть все]  
  • –2 +/
    Нашел на что перебежать Головняк с питоном на половине платформ - гарантирован ... весь текст скрыт [показать]
     
  • 5.74, Филипп Филиппович, 05:29, 26/03/2015 [^] [ответить] [смотреть все]  
  • –1 +/
    Scons радует вменяемым скриптовым языком (то, что сделано в CMake, языком назвать трудно, в 21 веке такого быть не должно). Но он, как показала практика, не очень быстр для очень больших проектов. У нас есть большие проекты и на том, и на том. Увы, о scons сильно жалеем. Удивительно, но в огромных проектах на нём именно внутренняя логика сборки начинает съедать время, почти сопоставимое со сборкой. Постоянное перечитывание всего и вся до добра не доводит.

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

     
     
  • 6.84, Аноним, 17:38, 26/03/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Питон не тормозит 11111 ... весь текст скрыт [показать]
     
     
  • 7.85, Филипп Филиппович, 19:18, 26/03/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    Питон-то причём? Тут проблемы реализации.
     
  • 4.68, ваноним, 20:49, 25/03/2015 [^] [ответить] [смотреть все]  
  • –1 +/
    > У меня тут с CMake траблы

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

     
     
  • 5.71, Аноним, 22:09, 25/03/2015 [^] [ответить] [смотреть все]  
  • +/
    Компилятор, требующий танцев с бубном даже без CMake А ман ну все мы знаем, ... весь текст скрыт [показать]
     
     
  • 6.72, ваноним, 23:26, 25/03/2015 [^] [ответить] [смотреть все]  
  • +/
    > Компилятор, требующий танцев с бубном даже без CMake

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

     
     
  • 7.73, Xasd, 23:41, 25/03/2015 [^] [ответить] [смотреть все]  
  • +/
    > тогда проблема не в cmake ;)

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

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

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

     
  • 4.78, Олег, 12:14, 26/03/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    А можно подробнее про проблемы с CMake?
     
     
  • 5.86, vdb, 21:17, 26/03/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    Когда я с ним работал (версии 2.x):

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

     
  • 3.53, Аноним, 16:00, 25/03/2015 [^] [ответить] [смотреть все]  
  • –2 +/
    qbs не взлетит из-за завязки на qt Сейчас есть только cmake ... весь текст скрыт [показать]
     
     
  • 4.55, _yurkis_, 16:47, 25/03/2015 [^] [ответить] [смотреть все]  
  • +/
    Ну почему же только cmake? Для тонких ценителей и любителей в гамаках полноценно на лыжах трахаться (что не плохо вобщем-то) есть еще scons
     
     
  • 5.69, ваноним, 20:51, 25/03/2015 [^] [ответить] [смотреть все]  
  • +1 +/
    > Для тонких ценителей и любителей в гамаках  полноценно на лыжах трахаться есть еще scons

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

     
  • 3.64, D, 18:48, 25/03/2015 [^] [ответить] [смотреть все]  
  • –1 +/
    qbs уже не взлетел. и вряд ли взлетит,к сожалению.
     
  • 1.2, A.Stahl, 11:06, 25/03/2015 [ответить] [смотреть все]  
  • +3 +/
    >Код Bazel, который написан на языках Java и C++

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

     
     
  • 2.3, Аноним, 11:39, 25/03/2015 [^] [ответить] [смотреть все] [показать ветку]  
  • –7 +/
    а в чем проблема реально не понимаю работает - гугл тестил или место надо эко... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.8, Аноним, 12:19, 25/03/2015 [^] [ответить] [смотреть все]  
  • +/
    fixed а в чем проблема реально не понимаю тормозит - гугл тестил или место ... весь текст скрыт [показать]
     
  • 2.4, Andrey Mitrofanov, 11:45, 25/03/2015 [^] [ответить] [смотреть все] [показать ветку]  
  • +6 +/
    >>Код Bazel, который написан на языках Java и C++
    > Ну и нахрена было городить такую дикую смесь?

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

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

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

     
     
  • 3.52, adolfus, 15:50, 25/03/2015 [^] [ответить] [смотреть все]  
  • –5 +/
    С таким же успехом можно сказать, что наносит ответный удар по gcc msbuild --... весь текст скрыт [показать]
     
  • 3.57, Аноним, 16:50, 25/03/2015 [^] [ответить] [смотреть все]  
  • +1 +/
    С явой то в обязательных зависимостях За кадром слышен конский топот плюсовиков... весь текст скрыт [показать]
     
     
  • 4.67, Аноним, 20:19, 25/03/2015 [^] [ответить] [смотреть все]  
  • +1 +/
    Для билд фермы совсем не проблема поставить один раз рантайм А вот если вас эт... весь текст скрыт [показать]
     
     
  • 5.88, Аноним, 03:56, 27/03/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Ну да, если некто корпораха размером с гугл - они это конечно поставят Вот толь... весь текст скрыт [показать]
     
  • 4.83, Филипп Филиппович, 16:53, 26/03/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • –1 +/
    Для проектов-гигантов совершенно неважно, нужно ли JRE. Если в проекте 100 МБ исходников, а в собранном виде он занимает гигабайты, всем будет абсолютно всё равно, ставить ли CMake или что-то там с JRE. Если учесть, что под ограниченные в ресурсах платформы всё равно всё кросс-компилируют, так это вообще никого не будет волновать.

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

     
     
  • 5.89, Аноним, 03:57, 27/03/2015 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Ну вон линуксное ядро - какой проект А для сборки минимум зависимостей Была б ... весь текст скрыт [показать]
     
     
  • 6.90, Филипп Филиппович, 10:45, 27/03/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    И что? У нас тоже есть большущие проекты на CMake. Может, не ядро, но тоже очень большие. Живут неплохо. Против CMake я как будто ничего не говорил. Даже являюсь горячим сторонником его идеологии (генерация сборочных файлов). А почитать выше, так и вовсе хвалил его (хотя язык описания в CMake откровенно плох, это я Вам как человек, имеющий опыт создания парсеров, скажу).

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

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

     
  • 2.5, длолдодлолдо, 11:49, 25/03/2015 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Да пофиг, все равно через несколько лет, по традиции, закроет проект ... весь текст скрыт [показать] [показать ветку]
     
  • 2.6, Anons, 11:54, 25/03/2015 [^] [ответить] [смотреть все] [показать ветку]  
  • +8 +/
    Для Go хотя бы jvm не нужна
     
  • 2.10, sdasdfasdf, 12:33, 25/03/2015 [^] [ответить] [смотреть все] [показать ветку]  
  • –4 +/
    Да потому что с это трах на хадулях и пишут на нем только от безвыходности, по... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.58, Аноним, 16:51, 25/03/2015 [^] [ответить] [смотреть все]  
  • –1 +/
    Лучше попробуй на яве написать игру с нормальной графикой И чтоб не тормозило и... весь текст скрыт [показать]
     
  • 2.11, Аноним, 12:38, 25/03/2015 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Лучше б на go написали вместо этих двух На rust не рассчитываю, ибо NIH ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.16, Аноним, 13:34, 25/03/2015 [^] [ответить] [смотреть все]  
  • +/
    Rust еще не стабилизирован, поэтому пока никто не будет использовать его в про... весь текст скрыт [показать]
     
     
  • 4.18, Аноним, 13:38, 25/03/2015 [^] [ответить] [смотреть все]  
  • +/
    Ну с С понятно, а на rust-то почему сложно ... весь текст скрыт [показать]
     
     
  • 5.51, Аноним, 15:24, 25/03/2015 [^] [ответить] [смотреть все]  
  • +/
    Синдром утёнка же ... весь текст скрыт [показать]
     
  • 4.60, Аноним, 17:10, 25/03/2015 [^] [ответить] [смотреть все]  
  • +/
    Да ладно, не сложнее чем на плюсах с темплейтами ... весь текст скрыт [показать]
     
  • 1.9, sdasdfasdf, 12:30, 25/03/2015 [ответить] [смотреть все]  
  • +/
    И чем это лучше Gradle?
     
  • 1.17, Аноним, 13:35, 25/03/2015 [ответить] [смотреть все]  
  • +/
    Bazel Frog c Без вины виноватый ... весь текст скрыт [показать]
     
  • 1.20, Аноним, 14:04, 25/03/2015 [ответить] [смотреть все]  
  • –1 +/
    Растёт замена emerge ... весь текст скрыт [показать]
     
     
  • 2.22, Аноним, 14:22, 25/03/2015 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Берите выше это растёт новая замена средства размножения человеков Чё уж там м... весь текст скрыт [показать] [показать ветку]
     
  • 1.21, vitalif, 14:12, 25/03/2015 [ответить] [смотреть все]  
  • +4 +/
    Боже мой. В линуксе острая нехватка систем сборки?
     
     
  • 2.62, Аноним, 18:05, 25/03/2015 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    ну так, не хватает сборки от гугла ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.75, Товарищ Майор, 07:54, 26/03/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • +1 +/
    На движке гугл хром.
     
  • 2.63, Аноним, 18:46, 25/03/2015 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Нужно больше минералов, милорд ... весь текст скрыт [показать] [показать ветку]
     
  • 2.70, Аноним, 21:40, 25/03/2015 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Острая нехватка вменяемых систем сборки GNU Make 8212 штука хорошая, конеч... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.79, правдоруб, 13:28, 26/03/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    У меня есть пример достаточности:

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

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

     
     
  • 4.80, правдоруб, 15:22, 26/03/2015 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    недостаточности, конечно
     
  • 1.54, Аноним, 16:47, 25/03/2015 [ответить] [смотреть все]  
  • +/
    System Requirements Supported platforms Ubuntu Linux Mac OS X Java ... весь текст скрыт [показать]
     
     
  • 2.59, Аноним, 16:53, 25/03/2015 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Ну, чего, очередная система сборки от хипстоты для хипстоты И да, она завершает... весь текст скрыт [показать] [показать ветку]
     
  • 1.61, Аноним, 18:05, 25/03/2015 [ответить] [смотреть все]  
  • +3 +/
    makefile наше все ... весь текст скрыт [показать]
     
     
  • 2.81, правдоруб, 15:25, 26/03/2015 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    Для мелочей однозначно, для KDE/Firefox/Libreoffice/Kernel уже какая-то совсем невообразимая портянка.
     
  • 1.65, Аноним, 19:05, 25/03/2015 [ответить] [смотреть все]  
  • +/
    Исходники в гугль шлет ... весь текст скрыт [показать]
     
  • 1.66, Дмитрий, 19:22, 25/03/2015 [ответить] [смотреть все]  
  • +1 +/
    Работал в гугле. Система крутая, подтверждаю. Правда, результирующий собранный артефакт не особо закастомайзишь, но гуглю это и не надо было, там стандартизированный жесткий формат отлично принимался везде где надо.
    Особый кайф - это что сборка распараллелена на Клауда, не больше минуты на сборку гигантских проектов.
     
  • 1.76, Аноним, 08:56, 26/03/2015 [ответить] [смотреть все]     [к модератору]  
  • –2 +/
    Базельский мир Базельский комитет по банковскому надзору Базель 1 Базель 2 Базел... весь текст скрыт [показать]
     
  • 1.77, yet another anonymous, 09:49, 26/03/2015 [ответить] [смотреть все]    [к модератору]  
  • +/
    Че-то гугель заметался: то gradle в андроидную сборку притянет, то bazel 'развивает'...
     
  • 1.82, Аноним, 16:17, 26/03/2015 [ответить] [смотреть все]     [к модератору]  
  • +/
    Как он резолвит зависимости типа include в C ... весь текст скрыт [показать]
     
     
  • 2.87, yet another anonymous, 21:17, 26/03/2015 [^] [ответить] [смотреть все] [показать ветку]    [к модератору]  
  • +/
    Обычно хреновины такого рода имеют собственный препроцессор а-ля C++ (...). (поэтому использование неожиданного для таких хреновин компилятора может лажать в вычислении зависимостей).
     

    Ваш комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:
     
    Навигация
     
     Новости для экспорта XML
     В социальных сетях:  twitter  
     Сводные | за день | мини-новости
     Разделы новостей
     Что нового на OpenNet
     Поиск в новостях
     Новые комментарии
     Добавить свою новость

    Важное
    - 25.03 Релиз GNOME 3.16. Обзор новшеств (124 +50)

    Советы
    - 18.03 Подготовка качественных GIF-файлов из видео при помощи FFmpeg
    - 13.03 Обновление Debian Wheezy до Debian Jessie, не дожидаясь официального релиза
    - 12.03 Подавление шумов средствами PulseAudio
    - 23.02 Создание интерактивных графических моделей в CAS MAXIMA при использовании ОС GNU Linux
    - 05.02 Мониторинг температуры в Zabbix с использованием Digitemp

    Обсуждаемые новости
    - 23:06 Выпуск открытого медиацентра Kodi 14.2 (бывший XBMC)  (16)
    - 22:42 Космическое агентство NASA открыло код платформы для создани (20)
    - 22:35 Релиз Samba 4.2.0. Прекращение поддержки Samba 3 (80)
    - 22:31 На GitHub обрушилась необычная DDoS-атака, проведённая через (110)
    - 20:24 Второй кандидат в релизы инсталлятора Debian 8.0 (52)
    - 20:10 Новая версия легковесного Linux дистрибутива antiX 14.4 (33)
    - 20:00 Доступна финальная бета-версия Ubuntu 15.04, ознаменовавшая  (157)
    - 18:26 Проект OpenBSD выпустил NTP-сервер OpenNTPD 5.7p4 (13)


      Закладки на сайте
      Проследить за страницей
    Created 1996-2015 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    RUNNet TopList
    п╡п╣я│п╣п╩я▀п╣ п╨п╟я─я┌п╦п╫п╨п╦ я─п╟п╥п╡п╩п╣п╨п╟я┌п╣п╩я▄п╫я▀п╣ пЁп╦я└п╨п╦ п╦п╫я┌я─п╣я│п╫я▀п╣ я└п╟п╨я┌я▀ я│п╪п╣я┬п╫я▀п╣ п╡п╦п╢п╣п╬ я│п╪п╣я┬п╫я▀п╣ п╦я│я┌п╬я─п╦п╦ п╦п╥ я│п╬я├я│п╣я┌п╣п╧