Доступен выпуск открытого сборочного инструментария Bazel 2.0, развиваемого инженерами из Google и используемого для сборки большинства внутренних проектов данной компании. Bazel обеспечивает сборку проекта, запуская необходимые компиляторы и тесты. Поддерживается сборка и тестирование кода на Java, C++, Objective-C, Python, Rust, Go и многих других языках, а также сборка мобильных приложений для Android и iOS. Код проекта распространяется под лицензией Apache 2.0...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=52090
> Сборочная система изначально спроектирована для оптимальной сборки проектов Google, в том числе сборки очень больших проектов и проектов, содержащих код на нескольких языках программирования, требующих расширенного тестирования и собираемых для нескольких платформ.изначально спроектирована для проектов Google.
в конечном итоге только для них и используется :-) .
Еще Дропбокс использует https://github.com/dropbox/dbx_build_tools например
Монорепо - это костыль для тех, кто путает VCS с пакетным менеджером.
Наблюдается тенденция замешивать в "систему сборки" не только систему сбора информации о сборочной машине и целевой системе, но и собственный пакетный менеджер и примотанный синей изолентой VCS.А что, пипл горячо одобряет.
Надо еще свою операционку, чтоли, тащить. Гугл вот например может попробовать андроид всучивать внагрузку.
Так а зачем прикручивать еще и пакетный менеджер, когда можно обойтись одной сущностью?
Потому что на проекте бывает больше одного разработчика иногда.
И что? Разработчикам монорепо начинает доставлять неприятности только когда разрастается до совсем уж космических размеров (или когда работодателя душит жаба купить для них современные машины). Или на оффтопике из-за убогой работы кэша ФС, но на оффтопике и других страданий полно. А при адекватном размере монорепы она наоборот, упрощает жизнь
нет. Basel широко применяется, при сборке суровых энтерпрайзных проектов под андроид без него вообще никуда. Но конечно, это специфический инструмент, в небольших опенсорсных проектах он не нужен.
Внутри Гугла она называется Blaze
Blazer вишневый
только для нас и только у нас, это что бы за забор не смотрели, а только у нас сидели
> в конечном итоге только для них и используется :-) .Потому что гугломонстр как он есть. Я насчитал там как минимум яву, питон, с++, шелл, файлы для самого себя, и наверняка еще что-то пропустил. В общем обычная гугловская сборочница - надо скачать половину интернета и забить половину диска. Чтобы скомпилить уже наконец вон тот чертов хелловорлд.
А как на практике соотносится> вместо определения привязки команд к собираемым файлам производится применение более абстрактных готовых блоков, таких как "сборка исполняемого файла на языке С++", "сборка библиотеки на C++"
и
> ... в том числе ... проектов, содержащих код на нескольких языках программирования
?
В контексте
> один файл сборки без изменений может применяться как для серверной системы, так и для мобильного устройства
подозревается беспощадный ad-hoc, засунутый под заваренный капот системы.
Это как сборка для сборки для сборки. Там пишется такой обвес что он сам по себе как целая программа только кофе не готовит.
Добро похаловать в реальность, так делают почти все: от заурядного autotools, до всяких CMake, meson и т.д.
Бывает все-таки попроще. Но реальный мир такой реальный.
А сам андроид в нем собрать можно?
В нем собирается все, даже небо, даже Аллах!
Это тебе так кажется.
Я хоть и не мусульманин, однако могу сказать
- у тебя программа
"выполнила недопустимую ошибку и будет закрыта".
теперь да.
Работал в двух разных компаниях с Bazel -- проект собирался час-полтора (со всеми включенными кешами!). Мне почему-то кажется, что если бы люди делали раздельные репы и версионирование депенденсей, то (контринтуитивно) было бы проще и быстрее.Но самая главная проблема -- monorepo (на самом деле monobuilder) очень враждебен к любому third-party. Либо вы пишите всё сами in-house (как гугля), либо сидите на древней версии какого-либо third-party (и самого базеля). У нас дошло до того, что нужно хитро качать и устанавливать редактор кода, который бы смог работать этими старыми версиями. А реюзать код (и протобуферы!) из монорепы в других проектах почти невозможно (протобуферы не компилятся отдельно).