Proposal: A. dpkg will be extended to support installing two packages with the same name, but different ABIs, as previously proposed. B. dpkg will be extended to support two packages with the same name (as above) both owning the same file. It will only remove a file from the filesystem when the last owning package is removed. C. dpkg will be extended so that if both a:ABI1 is installed and has "Multi-Arch: yes" set, and an install of a:ABI2 is attempted: 1. if a:ABI2 has "Multi-Arch: yes" set, proceed to install it as well. In case of file conflicts, use the md5sums[0] in the package to create co-ownership of identical shared files in a:AB1 and a:ABI2. If this does not resolve all conflicts, error out. 2. if a:ABI2 has "Multi-Arch: no" set, refuse to proceed. 3. if a:ABI2 does NOT have "Multi-Arch:" set at all, attempt to install as normal without co-ownership. D. dpkg will assume a means a:DEFAULT_ABI, which is the default ABI on the machine. a:* means "a of all ABIs"[1] (used in, e.g., conflicts). a:ABI of course means that particular ABI. E. Either dpkg must require a:* to all be the same version, or versions of a which change a common file must Conflicts: a:* << VERSION RATIONALE: * This will handle /usr/share/doc. We won't need any of the previously-proposed special behavior for /usr/share/doc/copyright. * This will allow most -dev packages to be multi-arched without splitting. This proposal creates no new packages. * This allows packages to be slowly migrated to Multi-Arch with minimal work. All that is needed for the common case is to add the header 'Multi-Arch: yes' to the package and make e.g., amd64 libs install into /usr/lib64. Some will need md5sums added too, but that is trivial. * Dependencies do not have to be changed for most packages. POTENTIAL PROBLEMS: * --purge and shared conffiles. I don't think conffiles should be shared, ever. Most lib* packages don't have them anyway, and the few that do are either special (libc) or can be split. This is only a small number of new packages. FOOTNOTES: 1. packages with Multi-Arch: yes must have an md5sums file. 2. No idea if this should include ABIs that are not possible to install on this machine, like m68k on amd64. That must be thought about.
Attachment:
signature.asc
Description: This is a digitally signed message part