taskcluster-taskgraph 6.3.0__tar.gz → 7.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {taskcluster-taskgraph-6.3.0/src/taskcluster_taskgraph.egg-info → taskcluster-taskgraph-7.0.0}/PKG-INFO +1 -2
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/README.rst +1 -1
- taskcluster-taskgraph-7.0.0/pyproject.toml +61 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/requirements/base.txt +0 -14
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/requirements/dev.txt +0 -8
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/requirements/test.in +1 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/requirements/test.txt +15 -1
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/setup.py +0 -1
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0/src/taskcluster_taskgraph.egg-info}/PKG-INFO +1 -2
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskcluster_taskgraph.egg-info/SOURCES.txt +8 -9
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/__init__.py +1 -1
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/config.py +5 -6
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/create.py +1 -1
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/decision.py +7 -7
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/docker.py +7 -4
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/generator.py +4 -4
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/loader/default.py +2 -2
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/main.py +28 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/run-task/run-task +6 -3
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/target_tasks.py +4 -4
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/base.py +1 -1
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/code_review.py +5 -5
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/fetch.py +30 -30
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/from_deps.py +1 -1
- {taskcluster-taskgraph-6.3.0/src/taskgraph/transforms/job → taskcluster-taskgraph-7.0.0/src/taskgraph/transforms/run}/__init__.py +103 -100
- {taskcluster-taskgraph-6.3.0/src/taskgraph/transforms/job → taskcluster-taskgraph-7.0.0/src/taskgraph/transforms/run}/common.py +17 -23
- {taskcluster-taskgraph-6.3.0/src/taskgraph/transforms/job → taskcluster-taskgraph-7.0.0/src/taskgraph/transforms/run}/index_search.py +4 -4
- {taskcluster-taskgraph-6.3.0/src/taskgraph/transforms/job → taskcluster-taskgraph-7.0.0/src/taskgraph/transforms/run}/run_task.py +18 -18
- {taskcluster-taskgraph-6.3.0/src/taskgraph/transforms/job → taskcluster-taskgraph-7.0.0/src/taskgraph/transforms/run}/toolchain.py +19 -19
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/task.py +23 -17
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/task_context.py +5 -5
- taskcluster-taskgraph-7.0.0/src/taskgraph/util/__init__.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/docker.py +1 -1
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/hash.py +5 -1
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/parameterization.py +6 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/schema.py +3 -3
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/taskcluster.py +1 -1
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/treeherder.py +9 -6
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/vcs.py +0 -34
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_generator.py +6 -6
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_main.py +9 -8
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_morph.py +1 -3
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_transforms_notify.py +2 -5
- taskcluster-taskgraph-6.3.0/test/test_transforms_job.py → taskcluster-taskgraph-7.0.0/test/test_transforms_run.py +11 -11
- taskcluster-taskgraph-6.3.0/test/test_transforms_job_run_task.py → taskcluster-taskgraph-7.0.0/test/test_transforms_run_run_task.py +5 -5
- taskcluster-taskgraph-6.3.0/test/test_transforms_job_toolchain.py → taskcluster-taskgraph-7.0.0/test/test_transforms_run_toolchain.py +16 -16
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_util_docker.py +1 -1
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_util_parameterization.py +9 -1
- taskcluster-taskgraph-6.3.0/pyproject.toml +0 -31
- taskcluster-taskgraph-6.3.0/src/taskgraph/transforms/__init__.py +0 -3
- taskcluster-taskgraph-6.3.0/src/taskgraph/util/decision.py +0 -79
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/LICENSE +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/MANIFEST.in +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/requirements/base.in +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/requirements/dev.in +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/setup.cfg +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskcluster_taskgraph.egg-info/dependency_links.txt +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskcluster_taskgraph.egg-info/entry_points.txt +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskcluster_taskgraph.egg-info/requires.txt +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskcluster_taskgraph.egg-info/top_level.txt +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/actions/__init__.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/actions/add_new_jobs.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/actions/cancel.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/actions/cancel_all.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/actions/rebuild_cached_tasks.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/actions/registry.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/actions/retrigger.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/actions/util.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/files_changed.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/filter_tasks.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/graph.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/loader/__init__.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/loader/transform.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/morph.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/optimize/__init__.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/optimize/base.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/optimize/strategies.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/parameters.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/run-task/fetch-content +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/run-task/hgrc +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/run-task/robustcheckout.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/task.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/taskgraph.py +0 -0
- {taskcluster-taskgraph-6.3.0/src/taskgraph/util → taskcluster-taskgraph-7.0.0/src/taskgraph/transforms}/__init__.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/cached_tasks.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/chunking.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/docker_image.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/notify.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/archive.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/attributes.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/cached_tasks.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/dependencies.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/keyed_by.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/memoize.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/path.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/python_path.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/readonlydict.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/shell.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/taskgraph.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/templates.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/time.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/verify.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/workertypes.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/yaml.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_actions_rebuild_cached_tasks.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_actions_registry.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_create.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_decision.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_files_changed.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_graph.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_optimize.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_optimize_strategies.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_parameters.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_scripts_fetch_content.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_scripts_run_task.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_target_tasks.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_taskgraph.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_transform_chunking.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_transform_docker_image.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_transform_task_context.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_transforms_base.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_transforms_fetch.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_transforms_from_deps.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_transforms_task.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_util_attributes.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_util_dependencies.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_util_memoize.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_util_path.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_util_python_path.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_util_readonlydict.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_util_schema.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_util_taskcluster.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_util_templates.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_util_time.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_util_treeherder.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_util_vcs.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_util_verify.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_util_workertypes.py +0 -0
- {taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/test/test_util_yaml.py +0 -0
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: taskcluster-taskgraph
|
|
3
|
-
Version:
|
|
3
|
+
Version: 7.0.0
|
|
4
4
|
Summary: Build taskcluster taskgraphs
|
|
5
5
|
Home-page: https://github.com/taskcluster/taskgraph
|
|
6
6
|
Classifier: Development Status :: 5 - Production/Stable
|
|
7
7
|
Classifier: Environment :: Console
|
|
8
8
|
Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
|
|
9
|
-
Classifier: Programming Language :: Python :: 3.7
|
|
10
9
|
Classifier: Programming Language :: Python :: 3.8
|
|
11
10
|
Classifier: Programming Language :: Python :: 3.9
|
|
12
11
|
Classifier: Programming Language :: Python :: 3.10
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
[tool.black]
|
|
2
|
+
line-length = 88
|
|
3
|
+
extend-exclude = """(\
|
|
4
|
+
taskcluster/scripts/external_tools)\
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
[tool.pytest.ini_options]
|
|
8
|
+
xfail_strict = true
|
|
9
|
+
|
|
10
|
+
[tool.coverage.run]
|
|
11
|
+
parallel = true
|
|
12
|
+
branch = true
|
|
13
|
+
source = ["src/taskgraph/", "taskgraph", "src/taskgraph/run-task/"]
|
|
14
|
+
|
|
15
|
+
[tool.ruff]
|
|
16
|
+
select = [
|
|
17
|
+
"E", "W", # pycodestyle
|
|
18
|
+
"F", # pyflakes
|
|
19
|
+
"I", # isort
|
|
20
|
+
"PLC", "PLE", # pylint
|
|
21
|
+
"UP", # pyupgrade
|
|
22
|
+
]
|
|
23
|
+
ignore = [
|
|
24
|
+
"E402",
|
|
25
|
+
"E501", # let black handle line-length
|
|
26
|
+
"E741",
|
|
27
|
+
]
|
|
28
|
+
target-version = "py38"
|
|
29
|
+
|
|
30
|
+
[tool.ruff.isort]
|
|
31
|
+
known-first-party = ["taskgraph"]
|
|
32
|
+
|
|
33
|
+
[tool.pyright]
|
|
34
|
+
include = ["src"]
|
|
35
|
+
exclude = [ # TODO fix errors in these files
|
|
36
|
+
"src/taskgraph/decision.py",
|
|
37
|
+
"src/taskgraph/docker.py",
|
|
38
|
+
"src/taskgraph/files_changed.py",
|
|
39
|
+
"src/taskgraph/generator.py",
|
|
40
|
+
"src/taskgraph/graph.py",
|
|
41
|
+
"src/taskgraph/main.py",
|
|
42
|
+
"src/taskgraph/morph.py",
|
|
43
|
+
"src/taskgraph/parameters.py",
|
|
44
|
+
"src/taskgraph/taskgraph.py",
|
|
45
|
+
"src/taskgraph/actions/cancel.py",
|
|
46
|
+
"src/taskgraph/actions/cancel_all.py",
|
|
47
|
+
"src/taskgraph/actions/rebuild_cached_tasks.py",
|
|
48
|
+
"src/taskgraph/actions/util.py",
|
|
49
|
+
"src/taskgraph/optimize/base.py",
|
|
50
|
+
"src/taskgraph/run-task/robustcheckout.py",
|
|
51
|
+
"src/taskgraph/transforms/fetch.py",
|
|
52
|
+
"src/taskgraph/transforms/task.py",
|
|
53
|
+
"src/taskgraph/transforms/run/run_task.py",
|
|
54
|
+
"src/taskgraph/util/cached_tasks.py",
|
|
55
|
+
"src/taskgraph/util/decision.py",
|
|
56
|
+
"src/taskgraph/util/python_path.py",
|
|
57
|
+
"src/taskgraph/util/schema.py",
|
|
58
|
+
"src/taskgraph/util/taskcluster.py",
|
|
59
|
+
"src/taskgraph/util/vcs.py",
|
|
60
|
+
"src/taskgraph/util/workertypes.py",
|
|
61
|
+
]
|
|
@@ -118,10 +118,6 @@ idna==3.4 \
|
|
|
118
118
|
--hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \
|
|
119
119
|
--hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2
|
|
120
120
|
# via requests
|
|
121
|
-
importlib-metadata==6.6.0 \
|
|
122
|
-
--hash=sha256:43dd286a2cd8995d5eaef7fee2066340423b818ed3fd70adf0bad5f1fac53fed \
|
|
123
|
-
--hash=sha256:92501cdf9cc66ebd3e612f1b4f0c0765dfa42f0fa38ffb319b6bd84dd675d705
|
|
124
|
-
# via click
|
|
125
121
|
jinja2==3.1.2 \
|
|
126
122
|
--hash=sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852 \
|
|
127
123
|
--hash=sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61
|
|
@@ -271,12 +267,6 @@ text-unidecode==1.3 \
|
|
|
271
267
|
--hash=sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8 \
|
|
272
268
|
--hash=sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93
|
|
273
269
|
# via python-slugify
|
|
274
|
-
typing-extensions==4.6.3 \
|
|
275
|
-
--hash=sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26 \
|
|
276
|
-
--hash=sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5
|
|
277
|
-
# via
|
|
278
|
-
# arrow
|
|
279
|
-
# importlib-metadata
|
|
280
270
|
urllib3==2.0.3 \
|
|
281
271
|
--hash=sha256:48e7fafa40319d358848e1bc6809b208340fafe2096f1725d05d67443d0483d1 \
|
|
282
272
|
--hash=sha256:bee28b5e56addb8226c96f7f13ac28cb4c301dd5ea8a6ca179c0b9835e032825
|
|
@@ -285,7 +275,3 @@ voluptuous==0.13.1 \
|
|
|
285
275
|
--hash=sha256:4b838b185f5951f2d6e8752b68fcf18bd7a9c26ded8f143f92d6d28f3921a3e6 \
|
|
286
276
|
--hash=sha256:e8d31c20601d6773cb14d4c0f42aee29c6821bbd1018039aac7ac5605b489723
|
|
287
277
|
# via -r requirements/base.in
|
|
288
|
-
zipp==3.15.0 \
|
|
289
|
-
--hash=sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b \
|
|
290
|
-
--hash=sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556
|
|
291
|
-
# via importlib-metadata
|
|
@@ -14,17 +14,9 @@ identify==2.5.24 \
|
|
|
14
14
|
--hash=sha256:0aac67d5b4812498056d28a9a512a483f5085cc28640b02b258a59dac34301d4 \
|
|
15
15
|
--hash=sha256:986dbfb38b1140e763e413e6feb44cd731faf72d1909543178aa79b0e258265d
|
|
16
16
|
# via pre-commit
|
|
17
|
-
nodeenv==1.8.0 \
|
|
18
|
-
--hash=sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2 \
|
|
19
|
-
--hash=sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec
|
|
20
|
-
# via pre-commit
|
|
21
17
|
pre-commit==2.21.0 \
|
|
22
18
|
--hash=sha256:31ef31af7e474a8d8995027fefdfcf509b5c913ff31f2015b4ec4beb26a6f658 \
|
|
23
19
|
--hash=sha256:e2f91727039fc39a92f58a588a25b87f936de6567eed4f0e673e0507edc75bad
|
|
24
20
|
# via -r requirements/dev.in
|
|
25
21
|
|
|
26
22
|
# The following packages are considered to be unsafe in a requirements file:
|
|
27
|
-
setuptools==67.8.0 \
|
|
28
|
-
--hash=sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f \
|
|
29
|
-
--hash=sha256:62642358adc77ffa87233bc4d2354c4b2682d214048f500964dbe760ccedf102
|
|
30
|
-
# via nodeenv
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# SHA1:
|
|
1
|
+
# SHA1:e6344ef3b0b270eae651e48034a25b9d9e8faa4a
|
|
2
2
|
#
|
|
3
3
|
# This file is autogenerated by pip-compile-multi
|
|
4
4
|
# To update, run:
|
|
@@ -98,6 +98,10 @@ mock==5.0.2 \
|
|
|
98
98
|
--hash=sha256:06f18d7d65b44428202b145a9a36e99c2ee00d1eb992df0caf881d4664377891 \
|
|
99
99
|
--hash=sha256:0e0bc5ba78b8db3667ad636d964eb963dc97a59f04c6f6214c5f0e4a8f726c56
|
|
100
100
|
# via -r requirements/test.in
|
|
101
|
+
nodeenv==1.8.0 \
|
|
102
|
+
--hash=sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2 \
|
|
103
|
+
--hash=sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec
|
|
104
|
+
# via pyright
|
|
101
105
|
packaging==23.1 \
|
|
102
106
|
--hash=sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61 \
|
|
103
107
|
--hash=sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f
|
|
@@ -121,6 +125,10 @@ pyproject-api==1.5.1 \
|
|
|
121
125
|
--hash=sha256:435f46547a9ff22cf4208ee274fca3e2869aeb062a4834adfc99a4dd64af3cf9 \
|
|
122
126
|
--hash=sha256:4698a3777c2e0f6b624f8a4599131e2a25376d90fe8d146d7ac74c67c6f97c43
|
|
123
127
|
# via tox
|
|
128
|
+
pyright==1.1.337 \
|
|
129
|
+
--hash=sha256:81d81f839d1750385390c4c4a7b84b062ece2f9a078f87055d4d2a5914ef2a08 \
|
|
130
|
+
--hash=sha256:8cbd4ef71797258f816a8393a758c9c91213479f472082d0e3a735ef7ab5f65a
|
|
131
|
+
# via -r requirements/test.in
|
|
124
132
|
pytest==7.3.1 \
|
|
125
133
|
--hash=sha256:3799fa815351fea3a5e96ac7e503a96fa51cc9942c3753cda7651b93c1cfa362 \
|
|
126
134
|
--hash=sha256:434afafd78b1d78ed0addf160ad2b77a30d35d4bdf8af234fe621919d9ed15e3
|
|
@@ -154,3 +162,9 @@ virtualenv==20.23.0 \
|
|
|
154
162
|
--hash=sha256:6abec7670e5802a528357fdc75b26b9f57d5d92f29c5462ba0fbe45feacc685e \
|
|
155
163
|
--hash=sha256:a85caa554ced0c0afbd0d638e7e2d7b5f92d23478d05d17a76daeac8f279f924
|
|
156
164
|
# via tox
|
|
165
|
+
|
|
166
|
+
# The following packages are considered to be unsafe in a requirements file:
|
|
167
|
+
setuptools==68.0.0 \
|
|
168
|
+
--hash=sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f \
|
|
169
|
+
--hash=sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235
|
|
170
|
+
# via nodeenv
|
|
@@ -28,7 +28,6 @@ setup(
|
|
|
28
28
|
"Development Status :: 5 - Production/Stable",
|
|
29
29
|
"Environment :: Console",
|
|
30
30
|
"License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)",
|
|
31
|
-
"Programming Language :: Python :: 3.7",
|
|
32
31
|
"Programming Language :: Python :: 3.8",
|
|
33
32
|
"Programming Language :: Python :: 3.9",
|
|
34
33
|
"Programming Language :: Python :: 3.10",
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: taskcluster-taskgraph
|
|
3
|
-
Version:
|
|
3
|
+
Version: 7.0.0
|
|
4
4
|
Summary: Build taskcluster taskgraphs
|
|
5
5
|
Home-page: https://github.com/taskcluster/taskgraph
|
|
6
6
|
Classifier: Development Status :: 5 - Production/Stable
|
|
7
7
|
Classifier: Environment :: Console
|
|
8
8
|
Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
|
|
9
|
-
Classifier: Programming Language :: Python :: 3.7
|
|
10
9
|
Classifier: Programming Language :: Python :: 3.8
|
|
11
10
|
Classifier: Programming Language :: Python :: 3.9
|
|
12
11
|
Classifier: Programming Language :: Python :: 3.10
|
|
@@ -59,16 +59,15 @@ src/taskgraph/transforms/from_deps.py
|
|
|
59
59
|
src/taskgraph/transforms/notify.py
|
|
60
60
|
src/taskgraph/transforms/task.py
|
|
61
61
|
src/taskgraph/transforms/task_context.py
|
|
62
|
-
src/taskgraph/transforms/
|
|
63
|
-
src/taskgraph/transforms/
|
|
64
|
-
src/taskgraph/transforms/
|
|
65
|
-
src/taskgraph/transforms/
|
|
66
|
-
src/taskgraph/transforms/
|
|
62
|
+
src/taskgraph/transforms/run/__init__.py
|
|
63
|
+
src/taskgraph/transforms/run/common.py
|
|
64
|
+
src/taskgraph/transforms/run/index_search.py
|
|
65
|
+
src/taskgraph/transforms/run/run_task.py
|
|
66
|
+
src/taskgraph/transforms/run/toolchain.py
|
|
67
67
|
src/taskgraph/util/__init__.py
|
|
68
68
|
src/taskgraph/util/archive.py
|
|
69
69
|
src/taskgraph/util/attributes.py
|
|
70
70
|
src/taskgraph/util/cached_tasks.py
|
|
71
|
-
src/taskgraph/util/decision.py
|
|
72
71
|
src/taskgraph/util/dependencies.py
|
|
73
72
|
src/taskgraph/util/docker.py
|
|
74
73
|
src/taskgraph/util/hash.py
|
|
@@ -111,10 +110,10 @@ test/test_transform_task_context.py
|
|
|
111
110
|
test/test_transforms_base.py
|
|
112
111
|
test/test_transforms_fetch.py
|
|
113
112
|
test/test_transforms_from_deps.py
|
|
114
|
-
test/test_transforms_job.py
|
|
115
|
-
test/test_transforms_job_run_task.py
|
|
116
|
-
test/test_transforms_job_toolchain.py
|
|
117
113
|
test/test_transforms_notify.py
|
|
114
|
+
test/test_transforms_run.py
|
|
115
|
+
test/test_transforms_run_run_task.py
|
|
116
|
+
test/test_transforms_run_toolchain.py
|
|
118
117
|
test/test_transforms_task.py
|
|
119
118
|
test/test_util_attributes.py
|
|
120
119
|
test/test_util_dependencies.py
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
4
4
|
|
|
5
|
-
__version__ = "
|
|
5
|
+
__version__ = "7.0.0"
|
|
6
6
|
|
|
7
7
|
# Maximum number of dependencies a single task can have
|
|
8
8
|
# https://docs.taskcluster.net/reference/platform/taskcluster-queue/references/api#createTask
|
|
@@ -102,28 +102,27 @@ class GraphConfig:
|
|
|
102
102
|
Add the project's taskgraph directory to the python path, and register
|
|
103
103
|
any extensions present.
|
|
104
104
|
"""
|
|
105
|
-
modify_path = os.path.dirname(self.root_dir)
|
|
106
105
|
if GraphConfig._PATH_MODIFIED:
|
|
107
|
-
if GraphConfig._PATH_MODIFIED ==
|
|
106
|
+
if GraphConfig._PATH_MODIFIED == self.root_dir:
|
|
108
107
|
# Already modified path with the same root_dir.
|
|
109
108
|
# We currently need to do this to enable actions to call
|
|
110
109
|
# taskgraph_decision, e.g. relpro.
|
|
111
110
|
return
|
|
112
111
|
raise Exception("Can't register multiple directories on python path.")
|
|
113
|
-
GraphConfig._PATH_MODIFIED =
|
|
114
|
-
sys.path.insert(0,
|
|
112
|
+
GraphConfig._PATH_MODIFIED = self.root_dir
|
|
113
|
+
sys.path.insert(0, self.root_dir)
|
|
115
114
|
register_path = self["taskgraph"].get("register")
|
|
116
115
|
if register_path:
|
|
117
116
|
find_object(register_path)(self)
|
|
118
117
|
|
|
119
118
|
@property
|
|
120
119
|
def vcs_root(self):
|
|
121
|
-
if path.split(self.root_dir)[-
|
|
120
|
+
if path.split(self.root_dir)[-1:] != ["taskcluster"]:
|
|
122
121
|
raise Exception(
|
|
123
122
|
"Not guessing path to vcs root. "
|
|
124
123
|
"Graph config in non-standard location."
|
|
125
124
|
)
|
|
126
|
-
return os.path.dirname(
|
|
125
|
+
return os.path.dirname(self.root_dir)
|
|
127
126
|
|
|
128
127
|
@property
|
|
129
128
|
def taskcluster_yml(self):
|
|
@@ -104,7 +104,7 @@ def create_tasks(graph_config, taskgraph, label_to_taskid, params, decision_task
|
|
|
104
104
|
|
|
105
105
|
def create_task(session, task_id, label, task_def):
|
|
106
106
|
# create the task using 'http://taskcluster/queue', which is proxied to the queue service
|
|
107
|
-
# with credentials appropriate to this
|
|
107
|
+
# with credentials appropriate to this task.
|
|
108
108
|
|
|
109
109
|
# Resolve timestamps
|
|
110
110
|
now = current_json_time(datetime_format=True)
|
|
@@ -46,21 +46,21 @@ try_task_config_schema_v2 = Schema(
|
|
|
46
46
|
)
|
|
47
47
|
|
|
48
48
|
|
|
49
|
-
def
|
|
50
|
-
|
|
49
|
+
def full_task_graph_to_runnable_tasks(full_task_json):
|
|
50
|
+
runnable_tasks = {}
|
|
51
51
|
for label, node in full_task_json.items():
|
|
52
52
|
if not ("extra" in node["task"] and "treeherder" in node["task"]["extra"]):
|
|
53
53
|
continue
|
|
54
54
|
|
|
55
55
|
th = node["task"]["extra"]["treeherder"]
|
|
56
|
-
|
|
56
|
+
runnable_tasks[label] = {"symbol": th["symbol"]}
|
|
57
57
|
|
|
58
58
|
for i in ("groupName", "groupSymbol", "collection"):
|
|
59
59
|
if i in th:
|
|
60
|
-
|
|
60
|
+
runnable_tasks[label][i] = th[i]
|
|
61
61
|
if th.get("machine", {}).get("platform"):
|
|
62
|
-
|
|
63
|
-
return
|
|
62
|
+
runnable_tasks[label]["platform"] = th["machine"]["platform"]
|
|
63
|
+
return runnable_tasks
|
|
64
64
|
|
|
65
65
|
|
|
66
66
|
def taskgraph_decision(options, parameters=None):
|
|
@@ -104,7 +104,7 @@ def taskgraph_decision(options, parameters=None):
|
|
|
104
104
|
|
|
105
105
|
# write out the public/runnable-jobs.json file
|
|
106
106
|
write_artifact(
|
|
107
|
-
"runnable-jobs.json",
|
|
107
|
+
"runnable-jobs.json", full_task_graph_to_runnable_tasks(full_task_json)
|
|
108
108
|
)
|
|
109
109
|
|
|
110
110
|
# this is just a test to check whether the from_json() function is working
|
|
@@ -34,7 +34,7 @@ def get_image_digest(image_name):
|
|
|
34
34
|
|
|
35
35
|
def load_image_by_name(image_name, tag=None):
|
|
36
36
|
from taskgraph.generator import load_tasks_for_kind
|
|
37
|
-
from taskgraph.optimize import IndexSearch
|
|
37
|
+
from taskgraph.optimize.strategies import IndexSearch
|
|
38
38
|
from taskgraph.parameters import Parameters
|
|
39
39
|
|
|
40
40
|
params = Parameters(
|
|
@@ -43,8 +43,9 @@ def load_image_by_name(image_name, tag=None):
|
|
|
43
43
|
)
|
|
44
44
|
tasks = load_tasks_for_kind(params, "docker-image")
|
|
45
45
|
task = tasks[f"build-docker-image-{image_name}"]
|
|
46
|
+
deadline = None
|
|
46
47
|
task_id = IndexSearch().should_replace_task(
|
|
47
|
-
task, {}, task.optimization.get("index-search", [])
|
|
48
|
+
task, {}, deadline, task.optimization.get("index-search", [])
|
|
48
49
|
)
|
|
49
50
|
|
|
50
51
|
if task_id in (True, False):
|
|
@@ -52,8 +53,10 @@ def load_image_by_name(image_name, tag=None):
|
|
|
52
53
|
"Could not find artifacts for a docker image "
|
|
53
54
|
"named `{image_name}`. Local commits and other changes "
|
|
54
55
|
"in your checkout may cause this error. Try "
|
|
55
|
-
"updating to a fresh checkout of
|
|
56
|
-
"to download image.".format(
|
|
56
|
+
"updating to a fresh checkout of {project} "
|
|
57
|
+
"to download image.".format(
|
|
58
|
+
image_name=image_name, project=params["project"]
|
|
59
|
+
)
|
|
57
60
|
)
|
|
58
61
|
return False
|
|
59
62
|
|
|
@@ -91,7 +91,7 @@ class Kind:
|
|
|
91
91
|
|
|
92
92
|
@classmethod
|
|
93
93
|
def load(cls, root_dir, graph_config, kind_name):
|
|
94
|
-
path = os.path.join(root_dir, kind_name)
|
|
94
|
+
path = os.path.join(root_dir, "kinds", kind_name)
|
|
95
95
|
kind_yml = os.path.join(path, "kind.yml")
|
|
96
96
|
if not os.path.exists(kind_yml):
|
|
97
97
|
raise KindNotFound(kind_yml)
|
|
@@ -125,13 +125,13 @@ class TaskGraphGenerator:
|
|
|
125
125
|
write_artifacts=False,
|
|
126
126
|
):
|
|
127
127
|
"""
|
|
128
|
-
@param root_dir: root directory
|
|
128
|
+
@param root_dir: root directory containing the Taskgraph config.yml file
|
|
129
129
|
@param parameters: parameters for this task-graph generation, or callable
|
|
130
130
|
taking a `GraphConfig` and returning parameters
|
|
131
131
|
@type parameters: Union[Parameters, Callable[[GraphConfig], Parameters]]
|
|
132
132
|
"""
|
|
133
133
|
if root_dir is None:
|
|
134
|
-
root_dir = "taskcluster
|
|
134
|
+
root_dir = "taskcluster"
|
|
135
135
|
self.root_dir = root_dir
|
|
136
136
|
self._parameters = parameters
|
|
137
137
|
self._decision_task_id = decision_task_id
|
|
@@ -243,7 +243,7 @@ class TaskGraphGenerator:
|
|
|
243
243
|
yield kind
|
|
244
244
|
queue.extend(kind.config.get("kind-dependencies", []))
|
|
245
245
|
else:
|
|
246
|
-
for kind_name in os.listdir(self.root_dir):
|
|
246
|
+
for kind_name in os.listdir(os.path.join(self.root_dir, "kinds")):
|
|
247
247
|
try:
|
|
248
248
|
yield Kind.load(self.root_dir, graph_config, kind_name)
|
|
249
249
|
except KindNotFound:
|
|
@@ -11,7 +11,7 @@ logger = logging.getLogger(__name__)
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
DEFAULT_TRANSFORMS = [
|
|
14
|
-
"taskgraph.transforms.
|
|
14
|
+
"taskgraph.transforms.run:transforms",
|
|
15
15
|
"taskgraph.transforms.task:transforms",
|
|
16
16
|
]
|
|
17
17
|
|
|
@@ -20,7 +20,7 @@ def loader(kind, path, config, params, loaded_tasks):
|
|
|
20
20
|
"""
|
|
21
21
|
This default loader builds on the `transform` loader by providing sensible
|
|
22
22
|
default transforms that the majority of simple tasks will need.
|
|
23
|
-
Specifically, `
|
|
23
|
+
Specifically, `run` and `task` transforms will be appended to the end of the
|
|
24
24
|
list of transforms in the kind being loaded.
|
|
25
25
|
"""
|
|
26
26
|
transform_refs = config.setdefault("transforms", [])
|
|
@@ -18,6 +18,7 @@ from concurrent.futures import ProcessPoolExecutor, as_completed
|
|
|
18
18
|
from pathlib import Path
|
|
19
19
|
from textwrap import dedent
|
|
20
20
|
from typing import Any, List
|
|
21
|
+
from urllib.parse import urlparse
|
|
21
22
|
|
|
22
23
|
import appdirs
|
|
23
24
|
import yaml
|
|
@@ -463,6 +464,8 @@ def show_taskgraph(options):
|
|
|
463
464
|
f"--label={options['graph_attr']}@{cur_rev}",
|
|
464
465
|
]
|
|
465
466
|
|
|
467
|
+
non_fatal_failures = []
|
|
468
|
+
|
|
466
469
|
for spec in parameters:
|
|
467
470
|
base_path = os.path.join(
|
|
468
471
|
diffdir, f"{options['graph_attr']}_{base_rev_file}"
|
|
@@ -475,7 +478,20 @@ def show_taskgraph(options):
|
|
|
475
478
|
base_path += f"_{params_name}"
|
|
476
479
|
cur_path += f"_{params_name}"
|
|
477
480
|
|
|
481
|
+
# If the base or cur files are missing it means that generation
|
|
482
|
+
# failed. If one of them failed but not the other, the failure is
|
|
483
|
+
# likely due to the patch making changes to taskgraph in modules
|
|
484
|
+
# that don't get reloaded (safe to ignore). If both generations
|
|
485
|
+
# failed, there's likely a real issue.
|
|
486
|
+
base_missing = not os.path.isfile(base_path)
|
|
487
|
+
cur_missing = not os.path.isfile(cur_path)
|
|
488
|
+
if base_missing != cur_missing: # != is equivalent to XOR for booleans
|
|
489
|
+
non_fatal_failures.append(os.path.basename(base_path))
|
|
490
|
+
continue
|
|
491
|
+
|
|
478
492
|
try:
|
|
493
|
+
# If the output file(s) are missing, this command will raise
|
|
494
|
+
# CalledProcessError with a returncode > 1.
|
|
479
495
|
proc = subprocess.run(
|
|
480
496
|
diffcmd + [base_path, cur_path],
|
|
481
497
|
capture_output=True,
|
|
@@ -500,6 +516,16 @@ def show_taskgraph(options):
|
|
|
500
516
|
params_spec=spec if len(parameters) > 1 else None,
|
|
501
517
|
)
|
|
502
518
|
|
|
519
|
+
if non_fatal_failures:
|
|
520
|
+
failstr = "\n ".join(sorted(non_fatal_failures))
|
|
521
|
+
print(
|
|
522
|
+
"WARNING: Diff skipped for the following generation{s} "
|
|
523
|
+
"due to failures:\n {failstr}".format(
|
|
524
|
+
s="s" if len(non_fatal_failures) > 1 else "", failstr=failstr
|
|
525
|
+
),
|
|
526
|
+
file=sys.stderr,
|
|
527
|
+
)
|
|
528
|
+
|
|
503
529
|
if options["format"] != "json":
|
|
504
530
|
print(
|
|
505
531
|
"If you were expecting differences in task bodies "
|
|
@@ -835,6 +861,8 @@ def init_taskgraph(options):
|
|
|
835
861
|
)
|
|
836
862
|
return 1
|
|
837
863
|
|
|
864
|
+
context["repo_name"] = urlparse(repo_url).path.rsplit("/", 1)[-1]
|
|
865
|
+
|
|
838
866
|
# Generate the project.
|
|
839
867
|
cookiecutter(
|
|
840
868
|
options["template"],
|
|
@@ -624,6 +624,11 @@ def git_checkout(
|
|
|
624
624
|
"Must specify both ssh_key_file and ssh_known_hosts_file, if either are specified",
|
|
625
625
|
)
|
|
626
626
|
|
|
627
|
+
# Bypass Git's "safe directory" feature as the destination could be
|
|
628
|
+
# coming from a cache and therefore cloned by a different user.
|
|
629
|
+
args = ["git", "config", "--global", "--add", "safe.directory", Path(destination_path).as_posix()]
|
|
630
|
+
retry_required_command(b"vcs", args, extra_env=env)
|
|
631
|
+
|
|
627
632
|
if not os.path.exists(destination_path):
|
|
628
633
|
# Repository doesn't already exist, needs to be cloned
|
|
629
634
|
args = [
|
|
@@ -782,9 +787,7 @@ def hg_checkout(
|
|
|
782
787
|
branch: Optional[str],
|
|
783
788
|
revision: Optional[str],
|
|
784
789
|
):
|
|
785
|
-
if IS_MACOSX:
|
|
786
|
-
hg_bin = "/tools/python27-mercurial/bin/hg"
|
|
787
|
-
elif IS_POSIX:
|
|
790
|
+
if IS_MACOSX or IS_POSIX:
|
|
788
791
|
hg_bin = "hg"
|
|
789
792
|
elif IS_WINDOWS:
|
|
790
793
|
# This is where OCC installs it in the AMIs.
|
|
@@ -14,7 +14,7 @@ _target_task_methods = {}
|
|
|
14
14
|
_GIT_REFS_HEADS_PREFIX = "refs/heads/"
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
def
|
|
17
|
+
def register_target_task(name):
|
|
18
18
|
def wrap(func):
|
|
19
19
|
_target_task_methods[name] = func
|
|
20
20
|
return func
|
|
@@ -81,7 +81,7 @@ def standard_filter(task, parameters):
|
|
|
81
81
|
)
|
|
82
82
|
|
|
83
83
|
|
|
84
|
-
@
|
|
84
|
+
@register_target_task("default")
|
|
85
85
|
def target_tasks_default(full_task_graph, parameters, graph_config):
|
|
86
86
|
"""Target the tasks which have indicated they should be run on this project
|
|
87
87
|
via the `run_on_projects` attributes."""
|
|
@@ -90,7 +90,7 @@ def target_tasks_default(full_task_graph, parameters, graph_config):
|
|
|
90
90
|
]
|
|
91
91
|
|
|
92
92
|
|
|
93
|
-
@
|
|
93
|
+
@register_target_task("codereview")
|
|
94
94
|
def target_tasks_codereview(full_task_graph, parameters, graph_config):
|
|
95
95
|
"""Target the tasks which have indicated they should be run on this project
|
|
96
96
|
via the `run_on_projects` attributes."""
|
|
@@ -101,7 +101,7 @@ def target_tasks_codereview(full_task_graph, parameters, graph_config):
|
|
|
101
101
|
]
|
|
102
102
|
|
|
103
103
|
|
|
104
|
-
@
|
|
104
|
+
@register_target_task("nothing")
|
|
105
105
|
def target_tasks_nothing(full_task_graph, parameters, graph_config):
|
|
106
106
|
"""Select nothing, for DONTBUILD pushes"""
|
|
107
107
|
return []
|
{taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/base.py
RENAMED
|
@@ -147,7 +147,7 @@ class ValidateSchema:
|
|
|
147
147
|
kind=config.kind, name=task["name"]
|
|
148
148
|
)
|
|
149
149
|
elif "label" in task:
|
|
150
|
-
error = "In
|
|
150
|
+
error = "In task {label!r}:".format(label=task["label"])
|
|
151
151
|
elif "primary-dependency" in task:
|
|
152
152
|
error = "In {kind} kind task for {dependency!r}:".format(
|
|
153
153
|
kind=config.kind, dependency=task["primary-dependency"].label
|
{taskcluster-taskgraph-6.3.0 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/code_review.py
RENAMED
|
@@ -12,12 +12,12 @@ transforms = TransformSequence()
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
@transforms.add
|
|
15
|
-
def add_dependencies(config,
|
|
16
|
-
for
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
def add_dependencies(config, tasks):
|
|
16
|
+
for task in tasks:
|
|
17
|
+
task.setdefault("soft-dependencies", [])
|
|
18
|
+
task["soft-dependencies"] += [
|
|
19
19
|
dep_task.label
|
|
20
20
|
for dep_task in config.kind_dependencies_tasks.values()
|
|
21
21
|
if dep_task.attributes.get("code-review") is True
|
|
22
22
|
]
|
|
23
|
-
yield
|
|
23
|
+
yield task
|