> I'm not talking about package/distro maintainers, I'm talking about the process of compiling software in general.

No, when you're referring to what Debian package require in order to be installed, you're talking about packages. Compiling is not even involved in that process.

> Is not the whole purpose of the 'configure' script in practically every source package to check and see what software/libraries are installed on a user's machine and then send the appropriate flags to the compiler to tell it what libraries to include, when it builds the binary?

No, that's not the whole purpose of Autoconf's "configure" scripts. These scripts probe the system to see exactly how the software can be compiled, and also give the user the option to change how it is compiled. But package managers don't compile, so they don't use that. The binary is built on a generic system with specific settings, before ever reaching any user's computer. Therefore, this has nothing to do with the optional dependency of packages on systemd.

> we already have a tool that can probe to see what is installed on a users' machine

No, we don't. All Autoconf checks with its configure script is for the presence or absence of libraries, and this is 100% insubstantial to the point that one binary can only be configured to use or not use a library. If you have compiled Project: Starfighter with sound support using SDL_Mixer, SDL_Mixer is not optional anymore. To make it unnecessary, you need to recompile so that the binary doesn't link with SDL_Mixer.h, and package managers don't do this (with the exception of those such as Gentoo and Guix which do).

Let me put this as plainly as possible: at run-time, in C and C++, it is not possible to link to new libraries, or unlink from old libraries. In order to do that, you need to recompile, and not every user's system has a compiler and all needed library headers installed on it. In fact, most don't. So if systemd was turned on and off by compiler flags, within a package manager such as Debian, the entirety of systemd would be required by any package that uses any component of it, regardless of whether or not that program is capable of running without it, because the only alternative (maintaining multiple versions with different compiler flags turned on and off) is unfeasible.

This is really basic stuff. If you're going to argue these points, I would appreciate it if you actually understood the basics of software development.

Reply via email to