Multiarch embedded interpreters pre-BOF, Debconf 2013

Initial meeting

15:30 Tue 2013-08-13 In BOF Room2 (downhill from the bar)

Vorlon, Wookey, Doko, Nico Tyni, Helmut Grohne, Johannes Schauer, Raphael Hertzog, Colin Watson, Philip Kaluza, Dom Hargreaves

BOF Agenda

  1. Multiarch and interpreters/runtimes
    • What shall we do about chains of embedded interpreter and arch-indep, arch-dep, arch-indep modules, which need either some enhancement to the multiarch spec or changing all affected arch-dep modules to arch any.

Related matter:

  1. Should apt in Debian assume arch-all _build_-deps as MA:foreign? Or should we fix all the packages

Discussions

2 basic problems:

  1. embedded interpreter issue: :any->:all-:any

  2. fakeroot (libfakeroot (MA:same), fakeroot (arch:all, MA:foreign) Must match arch of anything run under it.

    • & nss modules (e.g. libnss-mdns) . This is same issue as fakeroot.

proposed solutions (in order of complexity)

  1. "make it all multiarch: same, arch:any" (and have multiple versions in archive)
  2. XS modules have new field "install same architecture as: libperl"
  3. Calculatin 'running arches' and recording in dpkg state

vorlon: Currently things are not actually broken, as implicit native arch of :all packages means that you won't get a broken system, you just won't be able to install more than one arch of some things (like libperl). The qeustion is how to make this desireable thing possible.

Simplest solution

Make relevant :all packages :any instead.

Extra field 'Matches-arch: foo'

colin: effect on crossbuilding ? (cannot install if a package is not yet built on one arch - e.g fakeroot)

Complex solution

Helmut's "running architectures" proposal: https://wiki.debian.org/Multiarch/InterpreterProposal

This involves some significant work in dpkg. But gets us not needing to mark all :all packages MA:foreign for free.

Other points 1

Before spending a lot of effort fixing up the spec, we should be prepared to consider whether our original model/assumptions were correct.

Other points 1

This is helmut's last example, pointing out that none of the solutions are entirely general.

Consider 2 different packages, both of which depend on the same 4 perl modules.

2 packages:

So the arches of the perl interpreters used by the scripts in B are independent, but the modules in A are not. We cannot express these different dependency requirements currently.

Splitting package B into 2 packages would be one way to deal with this (i.e so one package never depends on 2 different arches)

Some numbers for size of :any->:all->:any issue

http://subdivi.de/~helmut/multiarch_interpreter_workaround.py needs python-apt installed

max of 640 in unstable - many false positives from packages not marked MA:foreign.

Actual likely issues:

ruby 52
mono 159
python 81 (inc python3)
perl 178
java 28
node.js 10

Actions