4 ms·
Building software is often a massive pain in the ass. I don't think that's essential but it usually seems to be true. Occasionally a program is wholly in some i
by JonChesterfield 4y ago
Building software is often a massive pain in the ass. I don't think that's essential but it usually seems to be true. Occasionally a program is wholly in some interpreted language in which case it might run or you might have the same experience with dependencies.
I believe guix and nix have largely solved that by writing build scripts for everything they're willing to bring into scope. Debian seems to be a mix of patching upstream source and build script changes.
A few projects compile to C and ship that one program.c file - sqlite comes to mind - but editing that one source file may not be easy if it was built by a build system that did lots of surprising things.
I'm mostly interested in llvm and we try to make it easy to build on a variety of systems, so it could totally be worse, but it's not easy either. And that's partly by DIY'ing a bunch of stuff that could be library dependencies.
I've no idea what to do about this. It feels like a lot of engineering effort is lost to chasing build weirdness. Open to suggestions!
p.s. I blame cmake for a lot of build complexity in the C++ world, and npm for whatever the hell is going on over in JavaScript. Random node projects from GitHub never run for me.
- Gigachad 4y agoThe root of most of these issues is the fact C/C++ has no package manager and central repo. If you want to build a fully Rust program, its trivial. As soon as it requires something C based you now have to track down the things it needs. And the build tools don't even know what is required. They just attempt to build and spit out some unintelligible error you have to search to find the stack overflow post telling you what package is needed and the 10 different names it has on different OSs. Thankfully the problem is getting better. Most languages now have a central package repo as well as killing off dynamic linking so the distro maintainers don't attempt packaging libraries.
- jimjimjim 4y agoc and c++ have been around since before there was a central anything. Who should be the central for c?
- noobermin 4y agoHow does that explain their issue with npm projects?
- JonChesterfield 4y agoI don't see it. Say there's a magic central repo where all 'good' C++ goes. Each project still has it's own build system, which interacts with unexpected environments by falling over. Exactly like we have today.