On Wed, 2022-11-23 at 08:38 +0100, Michał Górny wrote: > Hello, everyone. > > TL;DR: I'd like to add sys-meta/{cpio,sh,tar} to install and control > (via USE flags) /bin/{cpio,sh,tar} symlinks. > > Draft PR: https://github.com/gentoo/gentoo/pull/28390 >
I generally favor using the package manager in these situations, but there's a lot of user-facing documentation (and user configurations) that will need updating. We should probably have a GLEP -- and eventually a news item -- for this. A few comments: * The new category is a bit annoying. I know the PMS says that virtuals can't install files, but having an entirely separate category for virtuals that install a symlink feels excessive. Not that I have a better idea. * The name also suggests to me that it will control sys-* implementations, but the victims so far are all app-*. Obviously, we don't want twenty *-meta categories though. * The -meta prefix is already used in a bunch of ebuilds to mean something different. The packages in sys-meta won't be "metapackages" in the same sense. * Should we replace app-arch/tar with sys-meta/tar in @system? * Having to specify the relationship twice (once in the sys-meta package and once in each implementation) is also a bit ugly, as is having to account for the symlink not being installed (yet) in each implementation's pkg_postinst. This made me wonder, could the RDEPEND/PDEPEND be reversed? In other words, could (say) GNU tar require that the symlink be present immediately, but the metapackage only require that some implementation be merged eventually? To answer my own question, the PMS says that PDEPENDs "must be installed at some point before the package manager finishes the batch of installs," which would be problematic if some later package in the batch actually needed a tar implementation available to build. We can't change the PMS, so installing a symlink in the implementation ebuilds avoids the issue, but still eventually cedes control to the sys-meta package. I guess you already thought through all of that? If so, it would be nice to have the rationale written down somewhere that we can refer back to. * Is it worth thinking about improvements to EAPI=? that could help us here? By e.g. allowing virtuals to install symlinks, or by making PDEPEND kick in sooner (after this package, but before the rest of the batch)? Despite all the skeptical-sounding feedback, I think this is a good idea, and an improvement over eselect.