Live data from Hacker News

Ask HN: Do we need another build system?

news.ycombinator.com

21–25 of 25 posts

Re: Ask HN: Do we need another build system?

#21
post #16

Things I want to be able to do: 1. Use the same build system for C++, Python, Java, Rust, Golang, etc. Any language should easily plug in. 2. I don't want to have to know exactly which g++/javac/cargo/go commands are being run under the hood. 3. I want to build source code and I also want to "build" release packages, docker containers, compressed asset packs, etc. Anything that starts with files and is "compiled" int…

Gradle fits your description pretty closely.

Gradle misses almost all of these cases. In my experience it is a very unreliable build system that relies on magic and state in the daemon it starts. You can not trust Gradle to build something from source, edit it, and build again correctly. I have seen many time where you build, edit, build, edit, build, edit, push to upstream and it fails in CI because it fails on a clean build.

If you need to "clean" the build system it has failed.

Re: Ask HN: Do we need another build system?

#24

It doesn't matter if you need another. You will receive one, anyway. There can never be enough build systems. It's an inevitable consequence of two basic natural laws. First, every development team will eventually come to dislike some core feature of their current build system. This is true regardless of the build system. Second, developers like to scratch itches.

Third, merger/acquisitions will lead to multiple CICD pipelines that nobody will want to consolidate

Re: Ask HN: Do we need another build system?

#25

Earlier quoted context omitted.

What's the workflow for "I need to pass one argument to the linker" in the world where your build tool config doesn't even say which compiler it's invoking but your build fails with a bunch of linker errors?

In Bazel parlance you would write a "rule" or setup a "toolchain" which has the linker args passing setup in it. 99% of code does not need a specific linker arg though and optimizing the happy path for letting you do anything, rather than having a simplified flow that most users care about, makes things more confusing. If you instead had a way to say "this one specific thing I am building is special and needs `$magic…

It's fairly common for me to download some project that already uses some build automation tool I've never used before and find that it only works on the original developers' machines from a linker error message :)
Post reply on HN