File: __init__.py

package info (click to toggle)
firefox 147.0.3-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 4,683,320 kB
  • sloc: cpp: 7,607,359; javascript: 6,533,295; ansic: 3,775,223; python: 1,415,500; xml: 634,561; asm: 438,949; java: 186,241; sh: 62,752; makefile: 18,079; objc: 13,092; perl: 12,808; yacc: 4,583; cs: 3,846; pascal: 3,448; lex: 1,720; ruby: 1,003; php: 436; lisp: 258; awk: 247; sql: 66; sed: 54; csh: 10; exp: 6
file content (90 lines) | stat: -rw-r--r-- 2,676 bytes parent folder | download | duplicates (14)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# 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 argparse
import os
import re
import shlex

from taskgraph.decision import PER_PROJECT_PARAMETERS
from taskgraph.parameters import extend_parameters_schema
from taskgraph.util.vcs import get_repository
from voluptuous import Any, Optional, Required


TRY_SYNTAX_RE = re.compile(r"\btry:\s*(.*)\s*$", re.M)

def parse_try_syntax(message):
    parser = argparse.ArgumentParser()
    parser.add_argument("--nspr-patch", action="store_true")
    parser.add_argument("-b", "--build", default="do")
    parser.add_argument("-p", "--platform", default="all")
    parser.add_argument("-u", "--unittests", default="none")
    parser.add_argument("-t", "--tools", default="none")
    parser.add_argument("-e", "--extra-builds")
    match = TRY_SYNTAX_RE.search(message)
    if not match:
        return
    args = shlex.split(match.group(1))
    opts = parser.parse_args(args)
    builds = [t for t in opts.build if t in ["d", "o"]]
    # If the given value is nonsense default to debug and opt builds.
    if not builds:
        builds = ["d", "o"]

    platforms = opts.platform.split(",")

    unittests = opts.unittests.split(",")
    if "gtests" in unittests:
        unittests.append("gtest")

    tools = opts.tools.split(",")
    return {
        "nspr_patch": opts.nspr_patch,
        "builds": builds,
        "platforms": platforms,
        "unittests": unittests,
        "tools": tools,
        "extra": opts.extra_builds == "all",
    }


def decision_parameters(graph_config, parameters):
    repo_path = os.getcwd()
    repo = get_repository(repo_path)
    try:
        commit_message = repo.get_commit_message()
    except UnicodeDecodeError:
        commit_message = ""
    parameters["try_options"] = {}
    if parameters["project"] != "nss-try":
        return
    args = parse_try_syntax(commit_message)
    if args:
       parameters["try_options"] = args


def default_parameters(repo_root):
    return {
        "try_options": {},
    }


def register(graph_config):
    schema = {
        Optional("try_options"): {
            Optional("nspr_patch"): bool,
            Optional("builds"): [Any("d", "o")],
            Optional("platforms"): [str],
            Optional("unittests"): [str],
            Optional("tools"): [str],
            Optional("extra"): bool,
        },
    }
    extend_parameters_schema(schema, default_parameters)

    from . import target_tasks

    PER_PROJECT_PARAMETERS["nss-try"] = {"target_tasks_method": "nss_try_tasks"}