Maverick686DefaultCompile

  • Launchpad Entry: foundations-m-686-compile

  • Created: 3 May 2010

  • Contributors:

  • Packages affected: gcc-4.x, eglibc, packages building multilibs (packaging), any other package (code generation), dpkg

Summary

The compilers on the i386 architecture default to the i486 processor, tuned for "generic" processors. Set the compiler default to i686.

Release Note

For the i386 architecture the distribution is built for i686 processors or newer. i486 and i586 based processors are not supported anymore, but the Geode-LX processor should be supported (what about support for the VIA processors?).

TODO: who can verify the statement about the Geode?

A: the Geode LX essentially is an i686, except for one missing instruction that wasn't documented back when the i686 was released anyway. However, the GAS/GCC profiles for i686 optimization (-march and -mtune) generate binaries that use this instruction. If GAS/GCC could be fixed upstream, we could support Geode out of the box with i686 generic. It should be noted that Fedora is going through the same Geode-accomodation process, because the OLPC's native distribution is based on FC/RH source packages. Working with them to fix GAS and GCC would be extremely desirable. Meanwhile, older Geodes are closer to heavily souped-up i586 that only partially implement the i686 instruction set.

Rationale

i486 and i585 based processors are not sold anymore as desktop cpu's for ages. Users can still use Ubuntu 10.04 LTS (lucid) for the extended support time to use these processors.

NOTE: this assumption is false, because Geode and VIA chipsets still sold nowadays are i586 variants that only partially implement the i686 instruction set.

Some packages in the archive don't work when built for i486 and are already built using i586 based compiler flags (known packages are: libgomp and openjdk).

Some packages can be made smaller, or don't need to be installed on the CD images (libc6-i686, libssl0.9.8). Saving about 5MB of installed size. Some packages don't need to be built anymore (i386 based kernel, libgl1-mesa-swx11-i686).

Design

The DEB_*_GNU_CPU and DEB_*_GNU_TYPE variables in dpkg are set to reflect the new cpu type, the current multiarch pathes /usr/{include,lib}/i486-linux-gnu change to /usr/{include,lib}/i686-linux-gnu. The compilers default to build code for i686.

Implementation

Packaging changes only (biarch packages installing into multiarch locations have to adjust to the new name). The multiarch name is subject to a future change (will be done as part of the multiarch work).

Test/Demo Plan

FIXME: Test on Geode-LX if wanted


CategorySpec

FoundationsTeam/Specs/Maverick686DefaultCompile (last edited 2010-08-27 08:54:27 by host-94-101-10-242)