Not sure about Nix, but usually versioning is done with sonames. Like libbullshit.so.1 and libbullshit.so.2, which are resolved into different versions.
And why absolute paths? This makes no sense.
Top-level
Not sure about Nix, but usually versioning is done with sonames. Like libbullshit.so.1 and libbullshit.so.2, which are resolved into different versions. And why absolute paths? This makes no sense. 2 comments
[Part 1] - usualy cflags for library are obtained through pkg-config, which includes headers search location, so headers can be located anywhere and be versioned. As long as config is versioned. Although usually includes(-dev packages, if talking in debianisms) are installed unversioned for "default" version |
@uis yes, but usually those library packages would also include:
- unversioned C headers (/usr/include/bullshit)
- unversioned static version of the same library (/usr/lib/libbullshit.a)
- a bunch of symlinks (/usr/lib/libbullshit.so -> libbullshit.so.2)
So in the end, you can't have multiple versions side-by-side, so if you want to install a package that needs a newer version of this library, you also have to upgrade its dependents you installed earlier.