Revision control
Copy as Markdown
Other Tools
# 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
import logging
import os
import sys
from importlib import import_module
from mozilla_taskgraph import register as register_mozilla_taskgraph
from taskgraph import generator
from gecko_taskgraph import GECKO
from gecko_taskgraph.optimize.schema import set_optimization_schema # noqa: F401
from comm_taskgraph.optimize import thunderbird_optimizations
logger = logging.getLogger(__name__)
COMM = os.path.join(GECKO, "comm")
COMM_SCRIPTS = os.path.join(COMM, "taskcluster", "scripts")
def extend_sys_path(topsrcdir):
from mach.requirements import MachEnvRequirements
requirements = MachEnvRequirements.from_requirements_definition(
topsrcdir,
True, # is_thunderbird
False,
os.path.join(topsrcdir, "comm/python/sites/tb_common.txt"),
)
extend_path = [
os.path.normcase(os.path.join(topsrcdir, pth.path))
for pth in requirements.pth_requirements
]
sys.path.extend(extend_path)
def register(graph_config):
"""
Import all modules that are siblings of this one, triggering decorators in
the process.
"""
extend_sys_path(GECKO)
from gecko_taskgraph.util import dependencies # noqa: F401 trigger group_by registration
from comm_taskgraph.parameters import register_parameters
from comm_taskgraph.util import taskgraph_attributes # noqa: F401 patch gecko_taskgraph
# TODO switch to using gecko_taskgraph verifications
from comm_taskgraph.util.verify import verifications
logger.info("{} path registered".format(__name__))
register_parameters()
register_mozilla_taskgraph(graph_config)
# Don't use the upstream verifications, and replace them with our own.
generator.verifications = verifications
set_optimization_schema(thunderbird_optimizations)
_import_modules(
[
"documentation",
"util.docker",
"actions",
"target_tasks",
"transforms.job.toolchain",
]
)
def _import_modules(modules):
for module in modules:
import_module(".{}".format(module), package=__name__)