3 ms·
Implied in this: The expectation to copy binaries between machines and having them work. Less of an issue if you compile from source.
by blueflow 3y ago
Implied in this: The expectation to copy binaries between machines and having them work.
Less of an issue if you compile from source.
- K0balt 3y agoWhich assumes all software you are using is open source, which would be great….
- ptspts 3y agoCompiling from source is easier said than done for many big open source projects. In practice, they compile only with specific versions of GCC, CMake and libc.
- blueflow 3y agoRobustness of the build process should be part of the quality assessment.
- arp242 3y agoYou don't always have 6 different projects to choose from because there just aren't that many projects that solve $problem according to your specific $requirements. And it's also just a hassle even with good build systems, and I say this as someone who has a bunch of custom build scripts to compile stuff from source.
- gjvc 3y agoquite often, this is a major indicator of how quality is valued in an organisation. Whether we are talking about open-source or not, there has to be a commitment to excellence at all levels of the product, as would be expected in any other real-world manufacturing.
- redeeman 3y agocan you provide a few examples? this is something I dont see at all
- dikei 3y ago> In practice, they compile only with specific versions of GCC, CMake and libc That's pretty easy nowadays thanks to container. You don't have to muck around with environment variables to get the build system to detect your custom toolchain anymore.
- londons_explore 3y agoMy Chromium compile and test is still running... 2 days later...
- redeeman 3y agochromium is also an abomination, its pretty much the single biggest thing one could possibly build. the sheer level of insanity in that codebase boggles the mind, >1GB highly compressed source is just not legitimate
- mpweiher 3y agoYou haven't seen Office...
- redeeman 3y agoi have a hard time imaginging it taking longer to compile than chrome, but yeah, I havent. but like... there are two great pacific garbage patches, i guess its possible there are two software garbage patches bigger than the combined output software output of many countries.
- 5e92cb50239222b 3y agoHaving never built it myself, I wonder why the hell is it so slow to compile? I've built Firefox many times, including multi-stage builds with PGO, and it takes maybe 30 minutes tops on my 2015 era desktop. Is it because they use a lot of vendored code?
- londons_explore 3y agoMy build directory is nearly 100G, with over 1 million files... I think it's just a huge old codebase with thousands of third party libraries which all need to be built too. And, being mostly C++, there is heavy use of templates which makes compilation very slow and the resulting binaries large.
- londons_explore 3y ago
- Zetobal 3y agoReminds me of installing gentoo...
- defrost 3y agoWatching text scroll by for hours made me the Linux expert I am.
- yodsanklai 3y agoI've never put much thought into this but given a "linux x86" binary package, on what range of machines is it supposed to work? for instance, what's x86 mean exactly? I suppose all x86 processors have slightly different sets of instruction. Also, different linux kernels may have different sets of syscalls?
- dezgeg 3y agoAt least for 32-bit x86 I've run into such problems. The Intel Quark platform has such an old CPU core in it that normal Ubuntu binaries wouldn't work on it (even at the the platform was relevant), as it lacks conditional move instructions unlike any other non-museum piece x86. Also Glibc drops support for old kernel versions time to time, so even statically linked stuff isn't safe when compiling modern stuff against really old kernels.
- dikei 3y agoLinux Kernel userland ABI/API is very stable, and backward compatible: you can take a binary compile for Linux 1.0 and run it today. The same applies for CPU instruction, backward compatibility means stuff targeting i686 instruction sets will run on today CPU. However, if you need more modern stuffs, then obviously you need a higher minimum version. For example, some software require SSE; or docker will only run on a modern Linux kernel.
- PlutoIsAPlanet 3y agoThe interface between the Kernel and Userland is stable. The interface between Userland-Userland is not, very much not, a binary compiled a decade ago, unless its statically compiled or has no dependencies, will very likely not run, and is why things such as Flatpak and Docker partially exist in the first place.
- dikei 3y agoTrue, I was only talking about Kernel-Userland. It's also why closed-source software often include every dependencies in their installation package. And even that is sometimes not enough, like when the host's glibc is too old.
- regularfry 3y agoI regularly run into projects that won't compile on the machine I want to run them on because it doesn't have enough RAM. It's not a panacea, by any means.