To identify regressions and existing exceptions in Sentry, we tag them
with their mach release (the current base revision).
To ensure that Sentry knows the correct order of revisions, we need to
tell it about each one that lands in mozilla-central.
Differential Revision: https://phabricator.services.mozilla.com/D109681
Some tasks need to use the 'by-variant' key here, so anything that requires a 'tier' needs
to come after we split the variants.
The full taskgraph is identical before / after this patch.
Differential Revision: https://phabricator.services.mozilla.com/D109544
We are deprecating the 'fission-run-on-projects' and 'fission-tier' keys in
favour of more familiar 'by-variant' keys. While the diff here might look
confusing, it's designed to produce an identical taskgraph as before. So
shouldn't cause any changes in CI.
Differential Revision: https://phabricator.services.mozilla.com/D109147
This commit adds a simple pageload test, a warm pageload of https://www.google.com.
Low-level perfstats are collected.
All platforms were included. Not running as a cron job.
The motivation is that we can now collect low-level perfStats timings and determine how useful they will be for performance work.
Differential Revision: https://phabricator.services.mozilla.com/D109072
Schedule live desktop page load for all recorded sites. Also provide fission variants for all browsertime desktop tests running on webrender platforms and moved sheriffed live page load tests into a separate job.
Differential Revision: https://phabricator.services.mozilla.com/D108959
While this will add many new tasks to the taskgraph, it makes no changes to
what actually runs in CI (via the target task graph).
Differential Revision: https://phabricator.services.mozilla.com/D108783
These tasks all vary in their 'fission-run-on-projects'. So while this looks
like more complexity in isolation, it will greatly simplify the configs (and
the diff) later on in the stack.
Differential Revision: https://phabricator.services.mozilla.com/D108681
pip-tools 6.0.0 breaks due to a missing importlib-metadata in <py38, plus it removes --index and --no-index from pip-compile. Let's pin our pip-tools version to avoid future bustage like this.
Differential Revision: https://phabricator.services.mozilla.com/D108485
This moves the startup tests to Tier 1 (required, because they will block a Tier 1 task), and adds them as a dependency for Balrog submission on both Nightly and Release branches.
Differential Revision: https://phabricator.services.mozilla.com/D107834
This patch enables the following tasks on mozilla-central:
> test-macosx1014-64-qr/debug-mochitest-plain-fis-e10s
> test-macosx1014-64-shippable-qr/opt-mochitest-plain-fis-e10s
> test-windows10-64-qr/debug-mochitest-plain-fis-e10s
And the following tasks on autoland:
> test-linux1804-64-qr/opt-mochitest-plain-fis-e10s
> test-macosx1014-64-qr/debug-mochitest-plain-fis-e10s
> test-macosx1014-64-qr/opt-mochitest-plain-fis-e10s
> test-windows10-64-qr/debug-mochitest-plain-fis-e10s
> test-windows10-64-qr/opt-mochitest-plain-fis-e10s
Depends on D108251
Differential Revision: https://phabricator.services.mozilla.com/D108252
This changes the taskgraph slightly for
'test-macosx1014-64-devedition-qr/opt-test-verify-fis-e10s' by removing
'integration' from its 'run-on-projects' key.
The reason is that the 'test-verify' tasks has 'built-projects-only: true'.
This key ensures that the task can only ever run when the build is already
running (so it doesn't cause builds to get pulled in).
Turns out the 'built-projects-only' feature was erroneously ignoring
'fission-run-on-projects', so this small change in behaviour is actually
desired.
Differential Revision: https://phabricator.services.mozilla.com/D108075
This means that any task that doesn't set 'fission-run-on-projects' has it
default to []. Instead I'd like tasks that omit this key to default to using
'run-on-projects' (which means we can solve this bug piece by piece rather than
try to land it all at once).
The full taskgraph of this revision is identical to the previous revision.
Differential Revision: https://phabricator.services.mozilla.com/D107963
We're retiring the worker pool these tasks currently use. Use the new 1804 pool.
Failing jobs on linux 1804 match what's failing on OS X.
Differential Revision: https://phabricator.services.mozilla.com/D108109
We don't need to run fission tests on both -qr and non-qr platforms with opt.
Remove the non-qr versions as we prefer running with webrender.
This patch removes the following tasks on mozilla-central:
-test-linux1804-64-shippable/opt-mochitest-plain-fis-e10s
-test-windows10-64-shippable/opt-mochitest-plain-fis-e10s
Depends on D108028
Differential Revision: https://phabricator.services.mozilla.com/D108029
Only mochitest-plain and mochitest-media were inheriting this (the rest didn't
have fission in their variants or had an override for this key). Since
mochitest-plain is about to diverge later on this stack, moving it into the job
definition makes it easier to read.
Differential Revision: https://phabricator.services.mozilla.com/D108028
This commit enables the following tasks on mozilla-central:
> test-linux1804-64-shippable-qr/opt-crashtest-fis-e10s
> test-windows10-64-qr/debug-crashtest-fis-e10s
> test-windows10-64-shippable-qr/opt-crashtest-fis-e10s
And the following tasks on autoland:
> test-linux1804-64-qr/opt-crashtest-fis-e10s
> test-windows10-64-qr/debug-crashtest-fis-e10s
> test-windows10-64-qr/opt-crashtest-fis-e10s
Differential Revision: https://phabricator.services.mozilla.com/D107701
This implements a --diff flag on the suite of |mach taskgraph| commands. E.g:
./mach taskgraph target -p project=autoland -J --diff
The above will update to the base revision of your stack (e.g the public
revision), generate the taskgraph, update to the current revision, generate the
taskgraph again, then display a diff of the two.
You can also specify a specifier to arg, e.g:
./mach taskgraph target -J --diff .~1
This will diff against the parent revision in mercurial (use 'HEAD~1' for git).
Differential Revision: https://phabricator.services.mozilla.com/D107274
This will allow us to more easily generate and format the taskgraph multiple
times from the same session (e.g, needed for diffing multiple graphs).
Differential Revision: https://phabricator.services.mozilla.com/D107273
When "build targets" are used, the sccache server isn't
being used/integrated properly with make.
By moving rusttests to a separate build "application",
`client.mk` is invoked normally, and sccache is happy.
* Move rusttests to a new build "application".
* Move and denormalize rusttests mozconfigs. The new rusttests
mozconfigs should expand to be mostly identical to their old
versions, except with `MOZ_AUTOMATION_*=0` and
`--enable-application=tools/rusttests`.
They will differ a bit from their old variants because some
of them originally didn't source from their
respective `$app_mozconfigs/common`.
* Modify `baseconfig.mk` to change tiers if running rusttests.
* Adjust CI config to use new "rusttests" build application.
Differential Revision: https://phabricator.services.mozilla.com/D106294
Remove duplicate OSX 10.14/10.15 jobs and run on 10.15. Also setup for proper taskgrpah configs for easier migration of unittest suites via test-sets.yml
Differential Revision: https://phabricator.services.mozilla.com/D107467
Switching linux64-ccov builds to clang from gcc in bug 1499663 uncovered some performance problems that lead to test timeouts. These are addressed in clang 12. In order to ease the starring burden on sheriffs, let's give those builds a sneak preview of clang 12 even though general builds are not yet switching over.
Differential Revision: https://phabricator.services.mozilla.com/D107104
This check was likely added to try and limit the types of tasks that can be
created with fission. However it doesn't make sense to be filtering tasks based
on the project during the transforms stage. Tasks filtered out here don't exist
at all, so it's not possible to even schedule them on try with --full. This
type of filtering should be left to the target tasks stage of generation.
As a side effect, this patch enables the following tasks on autoland:
> test-linux1804-64-qr/debug-mochitest-webgpu-fis-e10s
> test-linux1804-64-qr/opt-web-platform-tests-print-reftest-fis-e10s
> test-linux1804-64-qr/opt-web-platform-tests-reftest-fis-e10s-1
> test-linux1804-64-qr/opt-web-platform-tests-reftest-fis-e10s-2
> test-linux1804-64-qr/opt-web-platform-tests-reftest-fis-e10s-3
> test-linux1804-64-qr/opt-web-platform-tests-reftest-fis-e10s-4
> test-linux1804-64-qr/opt-web-platform-tests-reftest-fis-e10s-5
> test-linux1804-64-qr/opt-web-platform-tests-reftest-fis-e10s-6
> test-linux1804-64/opt-marionette-fis-e10s
> test-linux1804-64/opt-marionette-headless-fis-e10s
> test-windows10-64-qr/opt-web-platform-tests-print-reftest-fis-e10s
> test-windows10-64-qr/opt-web-platform-tests-reftest-fis-e10s-1
> test-windows10-64-qr/opt-web-platform-tests-reftest-fis-e10s-2
> test-windows10-64-qr/opt-web-platform-tests-reftest-fis-e10s-3
> test-windows10-64-qr/opt-web-platform-tests-reftest-fis-e10s-4
> test-windows10-64/opt-marionette-fis-e10s
And the following tasks on central:
> test-linux1804-64-qr/debug-mochitest-webgpu-fis-e10s
> test-linux1804-64/debug-mochitest-webgpu-fis-e10s
While this change would ideally happen in a separate commit, fission team
indicated it was desirable to enable these tasks anyway, so I decided not
to spend effort disabling them here, only to enable them again later.
Depends on D107113
Differential Revision: https://phabricator.services.mozilla.com/D107114
This task gets enabled as a side effect of the last patch in this stack. This
patch preserves the status quo.
Depends on D107112
Differential Revision: https://phabricator.services.mozilla.com/D107113
These -profiling tasks are not currently running on fission. But the last patch in this stack
enables them as a side effect. This patch preserves the status quo.
Depends on D107107
Differential Revision: https://phabricator.services.mozilla.com/D107112
All the other browsertime tasks ignore non-shippable platforms except for this
one. It was causing problems for a later patch in this stack.
Differential Revision: https://phabricator.services.mozilla.com/D107107
Just adding the toolchain tasks for now. They are not yet used by anything, but bug 1693288 might be interested eventually.
As with earlier releases, clang-tidy and mingw builds are not included here, they'll be separate patches.
Differential Revision: https://phabricator.services.mozilla.com/D106554
Bug 1694775 had to get a fixup to install the rename utility, that is
not in the base Debian image for buster, while it was there for jessie.
However, we only use rename for a hack when cross-building geckodriver
for Windows, and we don't need to.
Differential Revision: https://phabricator.services.mozilla.com/D106875
As of that bug, the default docker image for toolchain builds is
deb10-toolchain-build, so setting the docker image in the task is
redundant.
Differential Revision: https://phabricator.services.mozilla.com/D106874
This adds a `mach wpt-fission-regressions` command that uses the wpt
expectation data to look for tests which have a worse result in
fission. With the `--all-json=<path>` argument it will output a JSON
file containing details of all the regressions. With the
`--untriaged=<path>` argument it will output a file containing a list
of failures that have not yet been triaged.
It also adds a try job to produce those files as artifacts whenever
wpt metadata is changed.
The actual implementation is based on reading the wpt expectation data
with sample run_info values corresponding to the configurations in
which we have fission enabled, but with the "fission" property set to
False (to get a baseline result) and True (to get a with-fission
result) and then comparing the resulting expectations.
The implemenation is pretty suboptimal performance wise since we end
up reading the metadata once per configuration i.e. 6 times, and this
is slow. It could be optimised by using the conditional metadata
backend, reading it once, and then evaluating per
configuration. However that would require a little more work and the
presumption is that this will be shortlived until fission becomes the
default configuration.
Differential Revision: https://phabricator.services.mozilla.com/D106954
This patch switches us from using the Firefox window reorder to the ffmpeg recorder because of some issues that give bad visual metrics values.
Differential Revision: https://phabricator.services.mozilla.com/D106785
Because we use sysroots, this makes no difference to the shipped builds.
This would normally allow to remove the debian8-amd64-build docker image,
but we need to keep it for the valgrind jobs for now.
Differential Revision: https://phabricator.services.mozilla.com/D106404
The mozjs_sys crate is actually responsible for all the problems
encountered with the js crate we just removed, but the sm-mozjs-crate
task that builds and runs tests for it doesn't fail because... there is
actually no test to build and run, so all it builds is a static library,
which doesn't expose all the problems that exist.
The content of this crate in mozilla-central is also outdated compared
to servo upstream.
Differential Revision: https://phabricator.services.mozilla.com/D106390
The sm-rust-bindings task that builds and runs tests for it actually only
doesn't fail by three(!) distinct happenstances of chance:
- It somehow doesn't hit a race condition that can happen, but that
attempting to change the build process for jsglue.cpp did,
- The second call to `cargo test` without `--feature debugmozjs` only
works because nothing was cleaned up from the first and the second
build uses artifacts from the first that are otherwise not there if
only running the second.
- The addition of rust code to spidermonkey (the jsrust crate in
js/src/rust) somehow didsn't cause problems in the current
configuration, but in other configurations (which fixing the second
thing above unveils) the build fails because of the multiple
definition of rust_eh_personality between the jsrust staticlib and the
rust stdlib that rustc links to test programs.
On top of all the above, the content of the crate in mozilla-central
has not received updates from upstream servo in years, and doesn't
reflect what servo actually uses.
Differential Revision: https://phabricator.services.mozilla.com/D106389
Now that all builds use sysroots, we:
- don't need to install -dev packages,
- don't need multi-arch packages,
- don't need workarounds for partial multi-arch awareness,
- however need a few packages that were installed as indirect
dependencies.
While here, we haven't really needed autoconf2.13 since bug 1663863
(except for one job, which switched in bug 1694784)
Differential Revision: https://phabricator.services.mozilla.com/D106357
Initially, they were using a debian7-amd64-build image, when linux64 were
the only 3-step PGO builds. There wasn't really a profound reason not to
use another image. Then later bug 632954 and bug 1561147 added android
and linux32, using desktop1604-test images, the test image back then,
with no rationale given as to why using different image than builds, but
there's also no reason not to use the test images.
As we're going to remove things from the build images that will probably
prevent the profiling step to run, we might as well use the test image
(now ubuntu1804-test) everywhere.
Differential Revision: https://phabricator.services.mozilla.com/D106356
We don't need the valgrind package for the valgrind.h header anymore,
because it's in the sysroot, and we only needed the package in the build
docker image because of the header. We still do need it in the valgrind
build image, because we run valgrind in the builds using that image.
The valgrind build image Dockerfile doesn't need an update because
valgrind will be pulled through the install of valgrind-dbg that already
happens there.
Differential Revision: https://phabricator.services.mozilla.com/D106355
Now that all builds are using a sysroot, they don't need a specifically
different docker image to cross-build from x86-64.
This also means we don't need to build 32-bits specific packages
anymore, so we don't need the docker image to build them either
(although in theory, we might need it if we even need to build packages
for the sysroot later on, but we'll be able to dig this out if we
actually come to that).
Subsequently, this means we don't need the debian8-i386-raw image either.
Differential Revision: https://phabricator.services.mozilla.com/D106354
While here, remove the -dev packages we have in the toolchain sysroot
and thus don't need in the docker image anymore.
Two exceptions: gcc and binutils need to stay on the older docker image,
at least for now.
Differential Revision: https://phabricator.services.mozilla.com/D106325
While not strictly necessary for CI on the longer term (because builds
will also run on a newer docker image soon), for transition purposes, we
need the toolchain to keep running on old systems.
However, eventually, we'll want libdmg-hfsplus to be a local-toolchain,
so it would need to use a sysroot in the long run anyways.
Differential Revision: https://phabricator.services.mozilla.com/D106323
This will make the diffs both easier to review, and smaller; the latter
should avoid bumping into arc's hardcoded 4MB size limit for diffs.
Differential Revision: https://phabricator.services.mozilla.com/D106774
This patch decreases the test timeout for some Talos tests which are hitting task timeouts. It also increases the task timeout for one of the tests.
Differential Revision: https://phabricator.services.mozilla.com/D106638
Use python3 in more places so we don't have to explicitly install
the python 2.x package.
The newer version of curl in 20.04 will hopefully fix the intermittent
http2 framing errors we've been seeing recently.
Differential Revision: https://phabricator.services.mozilla.com/D106259
ubuntu focal comes with mercurial 5.3.1 which is new enough for us right
now, so install it directly from the distro instead of fetching the
older 4.8.1 from tooltool.
Differential Revision: https://phabricator.services.mozilla.com/D106258
It was added back when we were using Debian 7-based images, and we
were using a more recent version of Gtk than available in Debian 7 in
the normal Firefox build. We've since upgraded to Debian 8 and removed
the difference.
Differential Revision: https://phabricator.services.mozilla.com/D106055
We don't hook it yet because `mach bootstrap` aborts early on arm64 right
now. And mach static analysis commands don't have enough information to
get the native toolchain.
Differential Revision: https://phabricator.services.mozilla.com/D105595
This will allow to upgrade the underlying docker image independently.
The resulting binary has been verified to be identical bit for bit.
Differential Revision: https://phabricator.services.mozilla.com/D105714
This patch enables browsertime pageload tests on windows and also modifies some crons to run the pageload tests through browsertime rather than raptor.
Differential Revision: https://phabricator.services.mozilla.com/D105352
Let's start with this one, since it's not shipped. This allows to remove
the corresponding docker image that was only used for this job.
Differential Revision: https://phabricator.services.mozilla.com/D105597
We introduced MOZ_LOW_PARALLELISM_BUILD as a workaround when we migrated to gcp for some gcc builds. Since we switched to clang 11 for some of them, it can be removed.
Differential Revision: https://phabricator.services.mozilla.com/D105598
As far as I can tell, we don't use zstandard from python2. As the last
version supporting python2 is 0.14.1, drop installing the python2
version.
Differential Revision: https://phabricator.services.mozilla.com/D105075
This enables us to get a wheel for python cryptography instead of
building it ourselves, which breaks because we don't have a rust
compiler.
Differential Revision: https://phabricator.services.mozilla.com/D105060
Because of conflicts between gcov_flush from gcc and the one from llvm, we renamed llvm one into ___custom_llvm_gcov_flush.
Since we switched to clang for linux ccov builds, this workaround is now useless.
Differential Revision: https://phabricator.services.mozilla.com/D104990
Because of conflicts between gcov_flush from gcc and the one from llvm, we renamed llvm one into ___custom_llvm_gcov_flush.
Since we switched to clang for linux ccov builds, this workaround is now useless.
Differential Revision: https://phabricator.services.mozilla.com/D104990
In the case of toolchain tasks, the tooltool download script already
extracted the SDK in $MOZ_FETCHES_DIR, so no adjustment was required.
Only a Firefox mozconfig needs adaptation.
Differential Revision: https://phabricator.services.mozilla.com/D104646
This adds a linter for Fluent files based upon the existing test for bad
strings in browser_misused_characters_in_strings.js. It also adds a check
for identifiers that only permits lowercase letters, numbers and the
hyphen character (in ascii). Since a large number of existing identifiers
use uppercase letters, an exclusions file is used to disable the identifier
check on a file by file basis.
Differential Revision: https://phabricator.services.mozilla.com/D104414
And remove the now unused toolchain-aarch64-build docker image.
While here, switch all compiler-rt toolchain tasks to a buster-based
docker image.
Differential Revision: https://phabricator.services.mozilla.com/D104122
With the same -dev packages as per taskcluster/docker/debian-build/Dockerfile
plus valgrind, for the one .h file it contains that we use.
This will later allow local builds to bootstrap them, and CI builds
to avoid relying on docker images for old Debian releases.
Differential Revision: https://phabricator.services.mozilla.com/D104119
The 'Bugzilla' task which e.g. creates the mapping of files to Bugzilla
components only runs on mozilla-central since bug 1608421. This means its
failures don't justify a backout and the task should be tier 2 for which
developers get needinfoed and fix the issue in a follow-up. If there is no
action, the changes can still be backed out.
Differential Revision: https://phabricator.services.mozilla.com/D104425
We don't run JS shell tests on 32-bit x86 anywhere (as tier 1) now that the Win32
jobs are tier 2. The Win32 jobs were also really slow. This has resulted in regressions
not being caught in CI (see bug 1335652 for example).
This patch adds a plaindebug job for Linux32. It catches the current jit-test
bustage from bug 1335652 on a Try push.
The patch fixes autospider.py to ensure use_minidump is always false for
cross-compiled 32-bit builds on Linux64.
Differential Revision: https://phabricator.services.mozilla.com/D104068
- Switch to use llvm-ar and llvm-ranlib
- Use CMAKE_*_COMPILER_TARGET for --target
- Use CMAKE_OSX_SYSROOT for -isysroot
- Limit the compiler wrapper to adding -mcpu=apple-a12 on arm64
- Remove -DLLVM_DEFAULT_TARGET_TRIPLE and add -DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON
- Group all the flags that are OSX-only
Differential Revision: https://phabricator.services.mozilla.com/D104011
Starting with Firefox 84 when macOS switched to run its tests with WebRender
(bug 1673071), the wdspec and wpt crashtests also ran in the DevEdition
configuration because there were rules ".*-qr/.*: ['release']".
Differential Revision: https://phabricator.services.mozilla.com/D103283
This patch adds a new "--ci" argument for the
"mach puppeteer-test" command. As such it can
also be used locally to simulate a test job in CI.
Differential Revision: https://phabricator.services.mozilla.com/D101780