On Thu, Jun 28, 2012 at 8:18 PM, Alexey Tourbin <alexey.tour...@gmail.com> wrote: > There is also a philosophical consideration which somehow accompanies > this practical consideration. There is a short story, I believe by > Borges, where a clever scientist devises a 1-1 map of reality. A 1-1 > map of reality turns out to be a very true picture of reality. What's > wrong with this approach? Well, a 1-1 map of the world turns out to be > an exact copy of the world, which is of no use in terms of being "a > map". Somehow, the reality must be "construed" and "reduced" to a > simpler (and somewhat coarser) description to become a useful model. > This is also why we don't plug ELF sections into RPM headers: we > believe that much simpler (or at least much shorter) dependencies must > be used to represent ELF binaries in terms of their > interconnectedness, and must also omit other less important details.
This philosophical argument applies to set-versions in a (not-so-)obvious manner, which I will now clarify. It goes like this: although the ultimate goal is to check that R-set of symbols is a subset of P-set of symbols, you do not necessarily have to store the full names of the symbols in order to perform a somewhat stripped-down check itself. When it only matters if R is subset of P, the names themselves become largely irrelevant, provided that you can devise a very clever substitution/encoding scheme. You can make "much simpler (or at least shorter) dependencies" by getting rid of the names in a manner which does not destroy the check. The downside is, of course, that when a dependency R subset P is broken, it is not easy to find out which P symbols were deleted or renamed (or which R symbols are missing). But this is largely a developer's, or should I say a hacker's, problem. On the other hand, from the user point of view, and also from rpm(1) perspective, this approach simply promotes synchronous or rather "transactional" upgrades. It says like, guys, I will not apply half-baked updates before you fix it all - so that apps and libraries match. Which totally makes sense! ______________________________________________________________________ RPM Package Manager http://rpm5.org Developer Communication List rpm-devel@rpm5.org