5 ms·
Is something more elegant than grafts [1] on the agenda for any functional package manager? Right now, it seems like the options are: 1) Forego timely and effi
by 0xcde4c3db 10y ago
Is something more elegant than grafts [1] on the agenda for any functional package manager? Right now, it seems like the options are:
1) Forego timely and efficient security update deployment because the functional discipline demands that we rebuild the entire system if glibc is updated
2) Forego strictly functional package management and undermine the associated guarantees by deploying hacks that work around the functional model.
edited to add: does this perhaps tie into the work on reproducible builds, e.g. could that work yield tools able to prove that a given package need not actually be recompiled?
[1] https://www.gnu.org/software/guix/manual/html_node/Security-Updates.html https://www.gnu.org/software/guix/manual/html_node/Security-...
- rekado 10y agoGrafts are still functional. We're not modifying existing builds. We generate new artifacts with updated references (think copy-on-write). However, these new artifacts don't need recompilation. They are copies with their embedded references recursively replaced such that they refer to the fixed variant of a library. This mostly just works, but it can lead to problems when upstream introduces ABI changes in security fixes. This is very rare but it happened at least once (I think it was openssl) --- like any other distro that updated the library in place users experienced problems. The assumption with grafts is that this doesn't happen, which is valid in the vast majority of cases that we encountered so far. That said, in Guix we try to minimize the period during which grafts are needed by "ungrafting" as soon as a properly rebuilt artifact is available on the build farm. This doesn't help those users who build everything from source exclusively, of course. But this is where reproducible builds help. Users don't have to be building everything from source if they have the tools to gauge how much they can trust providers of binary substitutes.