Retire a package from Fedora i686 (not x86_64)
Kevin Kofler
kevin.kofler at chello.at
Mon Nov 9 14:00:13 UTC 2015
Kalev Lember wrote:
> I wonder if it might be a good time to bump the i686 minimal
> requirements for F24 to include sse2. Not for performance reasons, but
> for compatibility: almost all developers are on x86_64 these days and
> i686 is pretty much just limping along. If we include sse2 on i686, that
> removes another difference between x86_64 and i686 and makes things
> easier for us as a downstream.
I don't think this difference is a real issue.
> Apparently quite a few upstreams these days consider sse2 as a minimal
> requirement and it seems more and more that Fedora packagers need to
> work this around if we don't follow the lead.
This is more of a problem.
This is only a minor annoyance where a portable fallback exists (we can just
ship the portable C/C++ version in /usr/lib and the SSE2 version in
/usr/lib/sse2, as we are doing with Qt 5 QtDeclarative). The real problem is
software which has no portable fallback at all, such as Chromium/QtWebEngine
or Darktable. This completely screws not only non-SSE2 x86, but also all
secondary architectures, and in some cases such as Darktable, even the
primary architecture ARM. It is unfortunate that the number of such non-
portable software seems increasing lately. Portability to any and all CPU
architectures used to be a big selling point for Free Software. These days,
more and more projects seem happy to sacrifice this on the altar of
performance. :-(
I think dropping support for non-SSE2 in all of Fedora would send entirely
the wrong message to those upstreams and only contribute to the surge of
non-portable software.
That said, we need a formal policy to deal with such software, which IMHO
should be treated just like an ExcludeArch, except that you should not
actually ExcludeArch the package as long as it supports SOME CPUs of that
architecture. It should still be put on the relevant ExcludeArch tracker
though, and if a fix/workaround exists, applying it should be required.
> I don't think this is worth doing for performance reasons. I don't think
> a few percentage of possible gain in micro benchmarks is worth it, but
> if it saves some hundreds of hours of developer time for people who are
> working on Fedora and don't have to work around missing sse2, I'd say
> it's very well worth the cost of losing ancient CPU support.
That would unfortunately decrease the usefulness of the i686 distribution a
lot. Given that we want to push users of 64-bit-capable machines to the
x86_64 version, it would leave basically only one generation of x86 machines
for the i686 distribution: the Pentium 4 Northwood generation, including one
or two generation(s) of AMD CPUs from the same time. Add to that some newish
low-end Atoms where they removed x86_64 support "to save power" (actually to
introduce an artificial market segmentation), no idea how popular those are.
Everything else that has SSE2 also has 64-bit.
Unfortunately, that prerogative ("all 64-bit-capable machines should use 64-
bit binaries") is not universally shared by upstreams. For example, Qt sees
the primary target of their 32-binaries as being modern machines that would
also support x86_64, but where the user elected to use 32-bit for whatever
reason, not old 32-bit-only machines as we see it. That is the primary
reason for the different stance on non-SSE2 support. (That said, Qt, outside
of QtWebEngine, does not actually REQUIRE SSE2. They just enable its use by
default.) My argument that the default option ought to be the safe, portable
one (non-SSE2) was rejected on the grounds of performance on what they think
are the vast majority of machines using 32-bit Qt (whereas I argued that it
was only really one generation, but as I wrote above, they have a completely
different conception of the purpose of 32-bit binaries).
Kevin Kofler
More information about the devel
mailing list