Bug 1888648 - Stop the are-we-esmified-yet cron job. r=yulia,taskgraph-reviewers

Differential Revision: https://phabricator.services.mozilla.com/D206104
This commit is contained in:
Tooru Fujisawa 2024-03-29 16:08:28 +00:00
parent 201e072579
commit c49fb8c2a1
5 changed files with 0 additions and 256 deletions

View File

@ -357,16 +357,6 @@ jobs:
mozilla-central: [{hour: 11, minute: 0}, {hour: 23, minute: 0}]
default: []
- name: are-we-esmified-yet
job:
type: decision-task
treeherder-symbol: are-we-esmified-yet
target-tasks-method: are-we-esmified-yet
run-on-projects:
- mozilla-central
when:
- {hour: 0, minute: 00}
- name: eslint-build
job:
type: decision-task

View File

@ -1,42 +0,0 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
---
loader: gecko_taskgraph.loader.transform:loader
kind-dependencies:
- toolchain
- fetch
transforms:
- gecko_taskgraph.transforms.job:transforms
- gecko_taskgraph.transforms.task:transforms
jobs:
check:
description: Extracts statistics on remaining JSMs in the codebase
run-on-projects: []
attributes:
cron: true
index:
product: firefox
job-name: are-we-esmified-yet
treeherder:
platform: lint/opt
kind: other
symbol: js(esm)
tier: 2
worker-type: t-linux-xlarge-source
worker:
docker-image: {in-tree: "lint"}
max-run-time: 3600
artifacts:
- type: file
name: public/are-we-esmified-yet.json
path: /builds/worker/artifacts/are-we-esmified-yet.json
run:
using: run-task
command: >-
mkdir -p /builds/worker/artifacts &&
cd ${GECKO_PATH} &&
python3 ./taskcluster/scripts/misc/are-we-esmified-yet.py > /builds/worker/artifacts/are-we-esmified-yet.json

View File

@ -791,10 +791,6 @@ fxrecord
Visual metrics computation of desktop Firefox startup. The performance team
monitors this task to watch for regressions in Firefox startup performance.
are-we-esmified-yet
---------------------
Collects data about the transition to ECMAScript Modules from JSMs.
attribution
-----------
Injects attribution information into en-US installers.

View File

@ -1574,16 +1574,6 @@ def target_tasks_l10n_cross_channel(full_task_graph, parameters, graph_config):
return [l for l, t in full_task_graph.tasks.items() if filter(t)]
@_target_task("are-we-esmified-yet")
def target_tasks_are_we_esmified_yet(full_task_graph, parameters, graph_config):
"""
select the task to track the progress of the esmification project
"""
return [
l for l, t in full_task_graph.tasks.items() if t.kind == "are-we-esmified-yet"
]
@_target_task("eslint-build")
def target_tasks_eslint_build(full_task_graph, parameters, graph_config):
"""Select the task to run additional ESLint rules which require a build."""

View File

@ -1,190 +0,0 @@
#!/usr/bin/env python3
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import json
import pathlib
import re
import subprocess
import sys
TBPL_FAILURE = 2
excluded_files = [
# Testcase for loader.
"js/xpconnect/tests/chrome/file_expandosharing.jsm",
"js/xpconnect/tests/unit/environment_script.js",
"js/xpconnect/tests/unit/bogus_element_type.jsm",
"js/xpconnect/tests/unit/bogus_exports_type.jsm",
"js/xpconnect/tests/unit/envChain.jsm",
"js/xpconnect/tests/unit/envChain_subscript.jsm",
"js/xpconnect/tests/unit/environment_checkscript.jsm",
"js/xpconnect/tests/unit/environment_loadscript.jsm",
"js/xpconnect/tests/unit/import_stack.jsm",
"js/xpconnect/tests/unit/importer.jsm",
"js/xpconnect/tests/unit/jsm_loaded-1.jsm",
"js/xpconnect/tests/unit/jsm_loaded-2.jsm",
"js/xpconnect/tests/unit/jsm_loaded-3.jsm",
"js/xpconnect/tests/unit/not-esmified-not-exported.jsm",
"js/xpconnect/tests/unit/recursive_importA.jsm",
"js/xpconnect/tests/unit/recursive_importB.jsm",
"js/xpconnect/tests/unit/syntax_error.jsm",
"js/xpconnect/tests/unit/TestBlob.jsm",
"js/xpconnect/tests/unit/TestFile.jsm",
"js/xpconnect/tests/unit/uninitialized_lexical.jsm",
"dom/url/tests/file_url.jsm",
"dom/url/tests/file_worker_url.jsm",
"dom/url/tests/test_bug883784.jsm",
"dom/workers/test/WorkerTest.jsm",
"dom/encoding/test/file_stringencoding.jsm",
"remote/shared/messagehandler/test/browser/resources/modules/root/invalid.jsm",
"toolkit/actors/TestProcessActorChild.jsm",
"toolkit/actors/TestProcessActorParent.jsm",
"toolkit/actors/TestWindowChild.jsm",
"toolkit/actors/TestWindowParent.jsm",
# Testcase for build system.
"python/mozbuild/mozbuild/test/backend/data/build/bar.jsm",
"python/mozbuild/mozbuild/test/backend/data/build/baz.jsm",
"python/mozbuild/mozbuild/test/backend/data/build/foo.jsm",
"python/mozbuild/mozbuild/test/backend/data/build/qux.jsm",
# EXPORTED_SYMBOLS inside testcase.
"tools/lint/eslint/eslint-plugin-mozilla/tests/mark-exported-symbols-as-used.js",
]
if pathlib.Path(".hg").exists():
mode = "hg"
elif pathlib.Path(".git").exists():
mode = "git"
else:
print(
"Error: This script needs to be run inside mozilla-central checkout "
"of either mercurial or git.",
file=sys.stderr,
)
sys.exit(TBPL_FAILURE)
def new_files_struct():
return {
"jsm": [],
"esm": [],
"subdir": {},
}
def put_file(files, kind, path):
"""Put a path into files tree structure."""
if str(path) in excluded_files:
return
name = path.name
current_files = files
for part in path.parent.parts:
if part not in current_files["subdir"]:
current_files["subdir"][part] = new_files_struct()
current_files = current_files["subdir"][part]
current_files[kind].append(name)
def run(cmd):
"""Run command and return output as lines, excluding empty line."""
lines = subprocess.run(cmd, stdout=subprocess.PIPE).stdout.decode()
return filter(lambda x: x != "", lines.split("\n"))
def collect_jsm(files):
"""Collect JSM files."""
kind = "jsm"
# jsm files
if mode == "hg":
cmd = ["hg", "files", "set:glob:**/*.jsm"]
else:
cmd = ["git", "ls-files", "*.jsm"]
for line in run(cmd):
put_file(files, kind, pathlib.Path(line))
# js files with EXPORTED_SYMBOLS
if mode == "hg":
cmd = ["hg", "files", r"set:grep('EXPORTED_SYMBOLS = \[') and glob:**/*.js"]
for line in run(cmd):
put_file(files, kind, pathlib.Path(line))
else:
handled = {}
cmd = ["git", "grep", r"EXPORTED_SYMBOLS = \[", "*.js"]
for line in run(cmd):
m = re.search("^([^:]+):", line)
if not m:
continue
path = m.group(1)
if path in handled:
continue
handled[path] = True
put_file(files, kind, pathlib.Path(path))
def collect_esm(files):
"""Collect system ESM files."""
kind = "esm"
# sys.mjs files
if mode == "hg":
cmd = ["hg", "files", "set:glob:**/*.sys.mjs"]
else:
cmd = ["git", "ls-files", "*.sys.mjs"]
for line in run(cmd):
put_file(files, kind, pathlib.Path(line))
def to_stat(files):
"""Convert files tree into status tree."""
jsm = len(files["jsm"])
esm = len(files["esm"])
subdir = {}
for key, sub_files in files["subdir"].items():
sub_stat = to_stat(sub_files)
subdir[key] = sub_stat
jsm += sub_stat["jsm"]
esm += sub_stat["esm"]
stat = {
"jsm": jsm,
"esm": esm,
}
if len(subdir):
stat["subdir"] = subdir
return stat
if mode == "hg":
cmd = ["hg", "parent", "--template", "{node}"]
commit_hash = list(run(cmd))[0]
cmd = ["hg", "parent", "--template", "{date|shortdate}"]
date = list(run(cmd))[0]
else:
cmd = ["git", "log", "-1", "--pretty=%H"]
git_hash = list(run(cmd))[0]
cmd = ["git", "cinnabar", "git2hg", git_hash]
commit_hash = list(run(cmd))[0]
cmd = ["git", "log", "-1", "--pretty=%cs"]
date = list(run(cmd))[0]
files = new_files_struct()
collect_jsm(files)
collect_esm(files)
stat = to_stat(files)
stat["hash"] = commit_hash
stat["date"] = date
print(json.dumps(stat, indent=2))