|
|
|
|
|
by tomberek
1849 days ago
|
|
Another way to address this concern. Nix allows you to specify what you want to do in this case. You can either: 1) Decide you want that patch to be applied to everything, resulting in recompiling the world. 2) Apply the patch for only the specific project you are working on/testing/etc. Thus only that thing is recompiled. 3) You can cheat in various ways if your project truly requires being updated by only changing the glibc and no recompilation is feasible. Some options: the way OpenGL and graphics is currently done in NixOS, nix-rewrite (https://github.com/timjrd/nixrewrite), and LD_PRELOAD. Breaking the abstraction in this way may have practical benefits, but you also lose the reproducibility and excellent bookkeeping of all the details that Nix provides. 4) specify a container/project/VM that uses your patched glibc, so only those things are rebuilt that matter in your use-case. The crux of the matter is that we need to be more precise in the names of things. Most of the time "glibc" refers to whatever is on your system on the same path. Nix has taken the other extreme where you can't just say "glibc", you really mean "this particular source, compiled with this particular set of flags and build script". If you want something more powerful\and between those extremes, there is some work currently on a system called Nomia that attempts to provide a far richer naming semantics, but it is still experimental. https://github.com/scarf-sh/nomia It would allow something like "glibc means anything ABI compatible with this particular thing, plus some other requirements...." |
|