On Wednesday 2021-04-21 09:10, John Paul Adrian Glaubitz wrote:
On 4/21/21 8:45 AM, Roger Oberholtzer wrote:
What is a 32-bit x86_64 package? Surely it can only be one or the other. Unless the 64-bit package was compiled on a 32-bit platform. But is that relevant? It is the actual content that we are interested in (64 or 32 bit).
A 32-bit x86_64 package is a package for the x86_64 distribution architecture that contains 32-bit binaries intended for co-installation on 64-bit system.
This is necessary because openSUSE does not allow co-installation of i586 packages on a 64-bit system unlike Debian or Ubuntu [1]
We allow it by way of rpm allowing it, but tools (and users) surrounding rpm do not necessarily expect to see a package present in multiple versions, let alone multiple architectures (which, for the remainder, is just treated as a version). However, let it be said that openSUSE _does_ use multiversioning, e.g. for kernel-*. Users expect `rpm -U` to upgrade a package, but that becomes a little ambiguous if there are multiple versions. There is a whole range of different ways users might interpret/intent "upgrade": 1. the way rpm does it: install argv[1] and delete all other versions across archs 2. the same but limit to current arch 3. install argv[1] and delete the oldest one copy, across, or limited to, one arch (something we want for kernels and currently do through extra scripts instead) 4. install argv[1] and delete the one most recent copy only, keeping whatever older versions there is/are. Across, or limited to, one arch. So there are at least 6 options, and with xxx-<specifier>.<arch>, we target option 2 (with a hack of the package name, yeah...)