Package: firefox
Version: 81.0-2
Severity: wishlist

It would be useful if firefox (but not -esr) ran the upstream test suite
for SpiderMonkey (js) on buildds, ideally with failures causing FTBFS.

Otherwise, the GNOME team (which needs to repackage -esr versions of
mozjs for gjs, on a cycle that is driven by GNOME rather than Mozilla)
gets this anti-pattern:

* mozjs does low-level things that frequently introduce portability
  regressions
* upstream only tests and supports non-exotic architectures
* each new -esr release of mozjs breaks ABI, which means we have to give
  it a new SONAME, which means it has to go through NEW
* until it has left NEW, it isn't routinely built on the full zoo of
  exotic architectures
* architecture porters have no idea anything is wrong, because from their
  perspective, everything is building successfully
* this means we can only start fixing regressions when it leaves NEW, by
  which time it's holding up new versions of GNOME

In the mozjs* family of packages, we run build-time tests and consider
most failures to be fatal, because we've found that if we don't, in
practice mozjs won't actually work, causing FTBFS further down the line
in gjs or in packages that happen to use gjs.

If firefox runs the tests, the cost is that it will take longer for new
versions to become available, particularly on slow architectures. However,
firefox (non-esr) is only in unstable and deliberately kept out of testing
anyway, so that seems maybe not so bad?

We've found that it's necessary to skip a few tests where Mozilla
upstream makes assumptions that are not true in Debian. Some notable
examples:

* Mozilla specifically does not support non-SSE x86 CPUs, but Debian's
  i386 architecture baseline demands that we must, so some tests fail as
  a result of i387's excess precision and need to be skipped
* Mozilla specifically does not support ARM softfloat, but Debian armel
  does, so again we have to skip a few tests that make assertions about
  the finer points of floating-point behaviour
* Debian has some 64-bit architectures that Mozilla hasn't heard of, so
  tests that take an arbitrarily long time on 64-bit need to be skipped
  on more architectures

To support that, I've added some infrastructure in mozjs78's
debian/patches/ to be able to skip tests selectively according to facts
about dpkg-architecture - for example to be able to skip a test on all
the big-endian architectures.

The GNOME team are not Mozilla ecosystem specialists, and I definitely
don't know what I'm doing (I'm only working on mozjs because someone
has to and nobody else did), so some of our patches are definitely just
hacks - if anyone with a better grasp of the Mozilla ecosystem can replace
our hacks with something better they are more than welcome to do so!

Thanks,
    smcv

Reply via email to