glibc headers in a multiarch environment

Issue

Resolving conflicts between libc0.1-dev, libc0.3-dev, libc6-dev, and libc6.1-dev binary packages from different Debian architectures installed on the same MA-enabled system. For instance, allowing binary packages libc6-dev:amd64 and libc0.3-dev:hurd-i386 to be installed together on amd64, or on hurd-i386, or even on another Debian architecture...

Solution

  1. [X] DONE
    • Using glibc-2.21 source package from experimental, write a patch to move all headers in libc<soversion>-dev from /usr/include to /usr/include/$(DEB_HOST_MULTIARCH).

    • Leave /usr/include symlinks be in libc<soversion>-dev-<multilib_arch> packages, as we do not need them in MA anyway.

  2. [ ] WIP
    • Build patched glibc and install it.
    • Rebuild all archive: setup wanna-build, buildd, sbuild...
  3. [ ] WIP
    • For each maybe-failed package, rebuild with unpatched glibc.
    • If also maybe-failed, record failure here.
    • If maybe-succeeded, patch package to support /usr/include/$(DEB_HOST_MULTIARCH) instead of /usr/include.
    • Anyhow, patch each package assuming libc<soversion>-dev headers to be found in hardcoded /usr/include.

  4. [ ] Merge the MA headers patch in glibc.

N.B.: Beware of multilib-related issues, e.g. -m64, -m32, and -mx32 on amd64.

Known Problems

glibc patch

People involved