Skip to content(if available)orjump to list(if available)

Chromium Switching from Ninja to Siso

RainyDayTmrw

Kinda impressive and terrifying that Chromium needs its own build system. Kinda strange that Bazel was right there, also from Google, and they not only choose not to use it, but also reference it in the name of the new tool.

operator-name

If Android was anything to go by, migrating build systems is a risky endeavour. Miso claims compatibility with ninja, so I’m guessing this route was deemed easier to make incremental improvements.

jinwoo68

To be fair, Bazel didn't exist when Chrome started.

dijit

Even so, a build system migration of any kind being anything other than Bazel given the design goals of Bazel and the heritage of Chrome is an implicit indictment of Bazel itself.

I say this as a fan of Bazel.

arccy

moving to bazel might be a lot more work vs a drop in replacement which is what siso looks like atm.

jefftk

Bazel didn't even exist when they moved from gyp to ninja.

intexpress

Note that Siso uses Starlark (https://chromium.googlesource.com/infra/infra/+/refs/heads/m...) which is the build language of Bazel

I wonder if the end goal is to use Bazel for Chromium and Siso is an incremental step to get there

jefftk

I think this makes Chrome build system number four: scons, gyp, ninja, siso.

txdv

Is there an explanation what siso provides that ninja does not?

out-of-ideas

> Siso is developed by the Chrome Build Infra Team at Google as a drop-in replacement for Ninja to support remote execution natively.

nikanj

It’s new

kookamamie

If Siso is a drop-in alternative to Ninja, are there builds of Siso usable for building Ninja-projects, in general?

operator-name

https://pkg.go.dev/go.chromium.org/infra/build/siso#section-...

Ninja compatible, for the flags that chromium uses. There’s some behaviour they’ve tuned for their use case.

mrlonglong

They've added a dependency on Go with the addition of siso.

tedunangst

Is this consequential for a project the size of chromium?

lordofgibbons

How so? you don't need the go build toolchain installed to use Go binaries.

throwaway81523

If I'm going to compile Chromium from source, I probably want to compile the build system from source.

ahahahahah

Why? Would you compile the compiler from source as well? From what? You need to compile the compiler's compiler from source as well, right? Where does it stop? And why is that location more valid of a decision than the one that doesn't require building the build system from source?

kazinator

Compile, using what?

phinnaeus

If you wish to bake an apple pie from scratch…

charcircuit

I wonder if AOSP will also move over to Siso. Since it is advertised as a drop in replacement it would take less resources than the Bazel migration which got canceled. The readme explicitly calls out a feature used by AOSP, so it is plausible that thought was put into it.

kosolam

Looks like the Google developer in the discussion is clueless.