Live data from Hacker News

Chromium Switching from Ninja to Siso

groups.google.com

61–70 of 73 posts

Re: Chromium Switching from Ninja to Siso

#61
post #31
post #28

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

gyp to gn gyp could produce ninja files. gn is short for generate ninja. Now gn produces files compatible with siso

Producing ninja files was an intermediate phase in the transition to gn. For most of its lifetime it was producing makefile.

Re: Chromium Switching from Ninja to Siso

#62
post #43

Earlier quoted context omitted.

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?

It stops at GNU Mes and hex0. Bootstrapping everything is exactly how it's done correctly--and how it's actually done in practice in Guix. I mean sure if you have a business to run you outsource this part to someone else--but you seem to think it's not done at all. Supply chain attacks have been happening pretty much non-stop the past years. Think it's a good idea to use binary artifacts you don't know how they were…

>Because you only have to review a 250 Byte binary

It's dishonest to not mention the millions upon millions of lines of source code you also have to verify to know that dependencies are safe to use. Compiling from source doesn't prevent supply chain attacks from happening.

In my opinion there is more risk in getting a safe Siso binary in going through this whole complicated build everything from scratch process vs Google providing a trusted binary to use since you have to trust more parties to not have been compromised.

Re: Chromium Switching from Ninja to Siso

#63
post #9

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.

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

Blaze (and gtest) did exist then, but it was integrated with Omega scheduler.

Re: Chromium Switching from Ninja to Siso

#64
post #42
post #40

Earlier quoted context omitted.

You mean it’s consistent on the machine code level and this allows patching and debugging more easily? Trying to understand..

The main thing is it gives the capability to adjust almost every detail, and they have a tendency to become important in embedded applications. To give one extreme example, an embedded intel board had a hardware errata which basically meant a very common sequence of instructions was unreliable, and the workaround involved patching the compiler to avoid emitting it, but then basically everything needed building with t…

gentoo is aces at crossdev - that's what gentoo calls it. https://wiki.gentoo.org/wiki/Cross_build_environment I believe this is the guide page i use, as it's purple in websearch results.

I've used it a fair amount, to build x86 on x86_64, to build arm 32 on x86_64, etc. It will also let you build x86_64 on x86_64 but for a different CPU type, so i can build packages/binaries for older systems on a newer system (like, a system with no avx-whatever can be build on a current-gen machine where the compilation goes way faster but builds binaries for the older system.)

Re: Chromium Switching from Ninja to Siso

#65
post #45

Earlier quoted context omitted.

>Kinda impressive and terrifying that Chromium needs its own build system. This is one area where I think it makes some sense to build your own. Most projects only use a fraction of the capability of a typical build system. The last time I did this I managed the whole thing in just 300 lines of code.

I stronly disagree. While you use a fraction of the features you often mistake it works for it is right and to something subtle is wrong. You end up either not working or dedicating a lot of effort fixing weird corner cases that you didn't think of

>You end up either not working or dedicating a lot of effort fixing weird corner cases that you didn't think of

That's not my experience at all. Part of my job is to think about weird corner cases, I'm not sure why a build script should be any worse than what I normally deal with.

Re: Chromium Switching from Ninja to Siso

#66
post #42

Earlier quoted context omitted.

The main thing is it gives the capability to adjust almost every detail, and they have a tendency to become important in embedded applications. To give one extreme example, an embedded intel board had a hardware errata which basically meant a very common sequence of instructions was unreliable, and the workaround involved patching the compiler to avoid emitting it, but then basically everything needed building with t…

gentoo is aces at crossdev - that's what gentoo calls it. https://wiki.gentoo.org/wiki/Cross_build_environment I believe this is the guide page i use, as it's purple in websearch results. I've used it a fair amount, to build x86 on x86_64, to build arm 32 on x86_64, etc. It will also let you build x86_64 on x86_64 but for a different CPU type, so i can build packages/binaries for older systems on a newer system (like…

Ah, cool. It's been a long time since I used it in anger, and it was not so hot then (yocto was I think the first system out of 3-4 I tried that actually gave me a functioning cross-toolchain, and gentoo's crossdev was one of those. This is like a decade ago though).

Re: Chromium Switching from Ninja to Siso

#67
post #45

Earlier quoted context omitted.

I stronly disagree. While you use a fraction of the features you often mistake it works for it is right and to something subtle is wrong. You end up either not working or dedicating a lot of effort fixing weird corner cases that you didn't think of

>You end up either not working or dedicating a lot of effort fixing weird corner cases that you didn't think of That's not my experience at all. Part of my job is to think about weird corner cases, I'm not sure why a build script should be any worse than what I normally deal with.

It isn't worse than other corner cases - but for almost everyone it isn't what their boss wants them to spend all their time on. Even if working for your own fun you probably want to do something else.

Re: Chromium Switching from Ninja to Siso

#68
They want to "improve their build processes", huh? Yeah, there are some problems, like ginormous build times, for which there are some very well-known and pedestrian solutions ("physical code design"). But these aren't impressive enough to get promoted.

Just Google things.

Re: Chromium Switching from Ninja to Siso

#70

Earlier quoted context omitted.

For example, many Linux distributions want to compile everything in their main repositories from source, all the way down. There are comments as such in response to the mailing list announcements. Your average Linux distribution probably had Go available, but it previously wasn't on the critical path of anything.

I can’t imagine that Go is missing on any distribution that ships Chromium anyway. This new dependency should not really be an issue.

The saving grace is that most Linux distros' default browser is Firefox.
Post reply on HN