From e680c5be803d2157b7d25646b8623f3d8bde7723 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Wed, 12 Dec 2018 16:20:06 +0100 Subject: [PATCH 1/3] =?UTF-8?q?Taskcluster:=20align=20Linux=20WPT=20task?= =?UTF-8?q?=20with=20what=E2=80=99s=20now=20on=20Buildbot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- etc/taskcluster/decision_task.py | 65 +++++++++++++++------------ etc/taskcluster/docker/run.dockerfile | 1 + 2 files changed, 37 insertions(+), 29 deletions(-) diff --git a/etc/taskcluster/decision_task.py b/etc/taskcluster/decision_task.py index 04d08b197df..70036107a9f 100644 --- a/etc/taskcluster/decision_task.py +++ b/etc/taskcluster/decision_task.py @@ -13,7 +13,8 @@ def main(task_for): # FIXME https://github.com/servo/servo/issues/22325 implement these: macos_wpt = magicleap_dev = linux_arm32_dev = linux_arm64_dev = \ android_arm32_dev_from_macos = lambda: None - # FIXME still buggy: + + # Implemented but disabled for now: linux_wpt = lambda: None # Shadows the existing top-level function all_tests = [ @@ -293,19 +294,21 @@ def windows_release(): def linux_wpt(): - release_build_task = linux_release_build() + release_build_task = linux_release_build(with_debug_assertions=True) total_chunks = 2 for i in range(total_chunks): this_chunk = i + 1 wpt_chunk(release_build_task, total_chunks, this_chunk) -def linux_release_build(): +def linux_release_build(with_debug_assertions=False): + a = with_debug_assertions return ( - linux_build_task("Release build") - .with_treeherder("Linux x64", "Release") + linux_build_task("Release build" + ", with debug assertions" if a else "") + .with_treeherder("Linux x64", "Release" + "+A" if a else "") + .with_env(BUILD_FLAGS="--with-debug-assertions" if a else "") .with_script(""" - ./mach build --release --with-debug-assertions -p servo + ./mach build --release $BUILD_FLAGS -p servo ./etc/ci/lockfile_changed.sh tar -czf /target.tar.gz \ target/release/servo \ @@ -313,7 +316,9 @@ def linux_release_build(): target/release/build/osmesa-src-*/out/lib/gallium """) .with_artifacts("/target.tar.gz") - .find_or_create("build.linux_x64_release." + CONFIG.git_sha) + .find_or_create( + "build.linux_x64_release%s.%s" % ("_assertions" if a else "", CONFIG.git_sha) + ) ) @@ -328,43 +333,45 @@ def wpt_chunk(release_build_task, total_chunks, this_chunk): .with_index_and_artifacts_expire_in(log_artifacts_expire_in) .with_max_run_time_minutes(60) .with_env(TOTAL_CHUNKS=total_chunks, THIS_CHUNK=this_chunk) - .with_script(""" - ./mach test-wpt \ - --release \ - --processes 24 \ - --total-chunks "$TOTAL_CHUNKS" \ - --this-chunk "$THIS_CHUNK" \ - --log-raw test-wpt.log \ - --log-errorsummary wpt-errorsummary.log \ - --always-succeed - ./mach filter-intermittents\ - wpt-errorsummary.log \ - --log-intermittents intermittents.log \ - --log-filteredsummary filtered-wpt-errorsummary.log \ - --tracker-api default - """) - # FIXME: --reporter-api default - # IndexError: list index out of range - # File "/repo/python/servo/testing_commands.py", line 533, in filter_intermittents - # pull_request = int(last_merge.split(' ')[4][1:]) ) if this_chunk == 1: task.name += " + extra" task.extra["treeherder"]["symbol"] += "+" task.with_script(""" - ./mach test-wpt-failure - ./mach test-wpt --release --binary-arg=--multiprocess --processes 24 \ + time ./mach test-wpt-failure + time ./mach test-wpt --release --binary-arg=--multiprocess --processes 24 \ --log-raw test-wpt-mp.log \ --log-errorsummary wpt-mp-errorsummary.log \ eventsource + time ./mach test-wpt --release --product=servodriver --headless \ + tests/wpt/mozilla/tests/mozilla/DOMParser.html \ + tests/wpt/mozilla/tests/css/per_glyph_font_fallback_a.html \ + tests/wpt/mozilla/tests/css/img_simple.html \ + tests/wpt/mozilla/tests/mozilla/secure.https.html """) + task.with_script(""" + ./mach test-wpt \ + --release \ + --processes 24 \ + --total-chunks "$TOTAL_CHUNKS" \ + --this-chunk "$THIS_CHUNK" \ + --log-raw test-wpt.log \ + --log-errorsummary wpt-errorsummary.log \ + --always-succeed + ./mach filter-intermittents\ + wpt-errorsummary.log \ + --log-intermittents intermittents.log \ + --log-filteredsummary filtered-wpt-errorsummary.log \ + --tracker-api default \ + --reporter-api default + """) task.with_artifacts(*[ "/repo/" + word for script in task.scripts for word in script.split() if word.endswith(".log") ]) - task.create() + return task.create() def daily_tasks_setup(): diff --git a/etc/taskcluster/docker/run.dockerfile b/etc/taskcluster/docker/run.dockerfile index 12275024c32..67e048f8e49 100644 --- a/etc/taskcluster/docker/run.dockerfile +++ b/etc/taskcluster/docker/run.dockerfile @@ -7,3 +7,4 @@ RUN apt-get install -qy --no-install-recommends \ libdbus-1-3 \ libgstreamer-plugins-bad1.0-0 \ gstreamer1.0-plugins-good + From 9ab2606a54ad7dce5bba31990af2fd238dc2960d Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Wed, 12 Dec 2018 19:25:49 +0100 Subject: [PATCH 2/3] Fix `./mach filter_intermittents` in shallow git clones. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `git log --merges` only shows commits with at least two parents. Presumably, this only works when the parent commits are in the local repository. In a shallow clone (`--depth 1`), on the HEAD commit is fetched. This commit removes the `--merges` filter. This shouldn’t affect the behavior, since CI always runs with a merge commit as HEAD. --- python/servo/testing_commands.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/servo/testing_commands.py b/python/servo/testing_commands.py index 90bded199a6..c1f2ef0c65a 100644 --- a/python/servo/testing_commands.py +++ b/python/servo/testing_commands.py @@ -543,7 +543,7 @@ class MachCommands(CommandBase): reported = set() proc = subprocess.Popen( - ["git", "log", "--merges", "--oneline", "-1"], + ["git", "log", "--oneline", "-1"], stdout=subprocess.PIPE) (last_merge, _) = proc.communicate() From e60e534d23209c944b48596d437a9a9c09f20542 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Tue, 11 Dec 2018 19:11:03 +0100 Subject: [PATCH 3/3] Move linux WPT from Buildbot to Taskcluster --- etc/ci/buildbot_steps.yml | 36 ++------------------------------ etc/taskcluster/decision_task.py | 3 --- 2 files changed, 2 insertions(+), 37 deletions(-) diff --git a/etc/ci/buildbot_steps.yml b/etc/ci/buildbot_steps.yml index 113bd05b693..19cf92fabf0 100644 --- a/etc/ci/buildbot_steps.yml +++ b/etc/ci/buildbot_steps.yml @@ -96,40 +96,6 @@ mac-rel-intermittent: - env PKG_CONFIG_PATH=/usr/local/opt/zlib/lib/pkgconfig ./mach build --release - ./etc/ci/check_intermittents.sh --log-raw intermittents.log -linux-rel-wpt: - env: - CCACHE: sccache - RUSTC_WRAPPER: sccache - CC: gcc-5 - CXX: g++-5 - commands: - - ./mach clean-nightlies --keep 3 --force - - ./mach clean-cargo-cache --keep 3 --force - - ./etc/ci/clean_build_artifacts.sh - - ./mach build --release --with-debug-assertions -p servo - - ./mach test-wpt-failure - - ./mach test-wpt --release --processes 24 --total-chunks 2 --this-chunk 1 --log-raw test-wpt.log --log-errorsummary wpt-errorsummary.log --always-succeed - - ./mach filter-intermittents wpt-errorsummary.log --log-intermittents intermittents.log --log-filteredsummary filtered-wpt-errorsummary.log --tracker-api default --reporter-api default - - ./mach test-wpt --release --binary-arg=--multiprocess --processes 24 --log-raw test-wpt-mp.log --log-errorsummary wpt-mp-errorsummary.log eventsource - - ./mach test-wpt --release --product=servodriver --headless tests/wpt/mozilla/tests/mozilla/DOMParser.html tests/wpt/mozilla/tests/css/per_glyph_font_fallback_a.html tests/wpt/mozilla/tests/css/img_simple.html tests/wpt/mozilla/tests/mozilla/secure.https.html - - ./etc/ci/clean_build_artifacts.sh - -linux-rel-css: - env: - CCACHE: sccache - RUSTC_WRAPPER: sccache - CC: gcc-5 - CXX: g++-5 - commands: - - ./mach clean-nightlies --keep 3 --force - - ./mach clean-cargo-cache --keep 3 --force - - ./etc/ci/clean_build_artifacts.sh - - ./mach build --release --with-debug-assertions -p servo - - ./mach test-wpt --release --processes 24 --total-chunks 2 --this-chunk 2 --log-raw test-wpt.log --log-errorsummary wpt-errorsummary.log --always-succeed - - ./mach filter-intermittents wpt-errorsummary.log --log-intermittents intermittents.log --log-filteredsummary filtered-wpt-errorsummary.log --tracker-api default --reporter-api default - - bash ./etc/ci/lockfile_changed.sh - - ./etc/ci/clean_build_artifacts.sh - linux-nightly: env: CC: gcc-5 @@ -277,3 +243,5 @@ mac-dev-unit: [] windows-msvc-dev: [] android: [] android-x86: [] +linux-rel-wpt: [] +linux-rel-css: [] diff --git a/etc/taskcluster/decision_task.py b/etc/taskcluster/decision_task.py index 70036107a9f..d27a7111fc9 100644 --- a/etc/taskcluster/decision_task.py +++ b/etc/taskcluster/decision_task.py @@ -14,9 +14,6 @@ def main(task_for): macos_wpt = magicleap_dev = linux_arm32_dev = linux_arm64_dev = \ android_arm32_dev_from_macos = lambda: None - # Implemented but disabled for now: - linux_wpt = lambda: None # Shadows the existing top-level function - all_tests = [ linux_tidy_unit_docs, windows_unit,