| # Copyright 2012 The ChromiumOS Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """This module contains constants used by cbuildbot and related code.""" |
| |
| import os |
| from pathlib import Path |
| |
| |
| THIS_FILE = Path(__file__).resolve() |
| |
| |
| def _FindSourceRoot() -> Path: |
| """Try and find the root check out of the chromiumos tree""" |
| source_root = path = THIS_FILE.parent.parent.parent |
| root = Path("/") |
| while True: |
| if (path / ".repo").is_dir(): |
| return path |
| if path == root: |
| break |
| # CitC is one level above the real source root. |
| if (path.parent / ".citc").is_dir(): |
| return path |
| path = path.parent |
| return source_root |
| |
| |
| SOURCE_ROOT = _FindSourceRoot() |
| CHROOT_SOURCE_ROOT = Path("/mnt/host/source") |
| CHROOT_OUT_ROOT = Path("/mnt/host/out") |
| CHROOT_CACHE_ROOT = Path("/var/cache/chromeos-cache") |
| CHROOT_EDB_CACHE_ROOT = Path("/var/cache/edb") |
| DEPOT_TOOLS_SUBPATH = Path("src/chromium/depot_tools") |
| |
| CROSUTILS_DIR = SOURCE_ROOT / "src/scripts" |
| CHROMITE_DIR = THIS_FILE.parent.parent |
| CHROMITE_SHELL_DIR = CHROMITE_DIR / "shell" |
| BRANCHED_CHROMITE_DIR = SOURCE_ROOT / "chromite" |
| IS_BRANCHED_CHROMITE = CHROMITE_DIR == BRANCHED_CHROMITE_DIR |
| DEPOT_TOOLS_DIR = SOURCE_ROOT / DEPOT_TOOLS_SUBPATH |
| CHROMITE_BIN_SUBDIR = Path("chromite/bin") |
| CHROMITE_BIN_DIR = CHROMITE_DIR / "bin" |
| CHROMITE_SCRIPTS_DIR = CHROMITE_DIR / "scripts" |
| PATH_TO_CBUILDBOT = os.path.join(CHROMITE_BIN_SUBDIR, "cbuildbot") |
| DEFAULT_CHROOT_DIR = "chroot" |
| DEFAULT_CHROOT_PATH = os.path.join(SOURCE_ROOT, DEFAULT_CHROOT_DIR) |
| DEFAULT_OUT_DIR = Path("out") |
| DEFAULT_OUT_PATH = SOURCE_ROOT / DEFAULT_OUT_DIR |
| DEFAULT_BUILD_ROOT = SOURCE_ROOT / "src" / "build" |
| BAZEL_WORKSPACE_ROOT = SOURCE_ROOT / "src" |
| |
| STATEFUL_DIR = "/mnt/stateful_partition" |
| |
| # User ID and group ID for "portage". |
| PORTAGE_UID = 250 |
| PORTAGE_GID = 250 |
| |
| # These constants are defined and used in the die_hook that logs failed |
| # packages: 'cros_log_failed_packages' in profiles/base/profile.bashrc in |
| # chromiumos-overlay. The status file is generated in CROS_METRICS_DIR, and |
| # only if that environment variable is defined. |
| CROS_METRICS_DIR_ENVVAR = "CROS_METRICS_DIR" |
| DIE_HOOK_STATUS_FILE_NAME = "FAILED_PACKAGES" |
| METRICS_FILE = "METRICS_FILE" |
| |
| CHROMEOS_CONFIG_FILE = os.path.join(CHROMITE_DIR, "config", "config_dump.json") |
| WATERFALL_CONFIG_FILE = os.path.join( |
| CHROMITE_DIR, "config", "waterfall_layout_dump.txt" |
| ) |
| LUCI_SCHEDULER_CONFIG_FILE = os.path.join( |
| CHROMITE_DIR, "config", "luci-scheduler.cfg" |
| ) |
| |
| GE_BUILD_CONFIG_FILE = os.path.join( |
| CHROMITE_DIR, "config", "ge_build_config.json" |
| ) |
| |
| # SDK overlay tarballs created during SDK builder runs. The paths are relative |
| # to the build root's chroot, which guarantees that they are reachable from it |
| # and get cleaned up when it is removed. |
| SDK_TOOLCHAINS_OUTPUT = "tmp/toolchain-pkgs" |
| SDK_OVERLAYS_OUTPUT = "tmp/sdk-overlays" |
| # The filename of the SDK tarball created during SDK builder runs. |
| SDK_TARBALL_NAME = "built-sdk.tar.xz" |
| |
| AUTOTEST_BUILD_PATH = "usr/local/build/autotest" |
| UNITTEST_PKG_PATH = "tmp/test-packages" |
| |
| # Path to the lsb-release file on the device. |
| LSB_RELEASE_PATH = "/etc/lsb-release" |
| |
| # Buildbucket build status |
| BUILDBUCKET_BUILDER_STATUS_CANCELED = "CANCELED" |
| BUILDBUCKET_BUILDER_STATUS_FAILURE = "FAILURE" |
| BUILDBUCKET_BUILDER_STATUS_INFRA_FAILURE = "INFRA_FAILURE" |
| BUILDBUCKET_BUILDER_STATUS_SCHEDULED = "SCHEDULED" |
| BUILDBUCKET_BUILDER_STATUS_STARTED = "STARTED" |
| BUILDBUCKET_BUILDER_STATUS_SUCCESS = "SUCCESS" |
| |
| BUILDBUCKET_BUILDER_STATUSES = ( |
| BUILDBUCKET_BUILDER_STATUS_FAILURE, |
| BUILDBUCKET_BUILDER_STATUS_INFRA_FAILURE, |
| BUILDBUCKET_BUILDER_STATUS_SCHEDULED, |
| BUILDBUCKET_BUILDER_STATUS_STARTED, |
| BUILDBUCKET_BUILDER_STATUS_SUCCESS, |
| ) |
| |
| # Builder status strings |
| BUILDER_STATUS_FAILED = "fail" |
| BUILDER_STATUS_PASSED = "pass" |
| BUILDER_STATUS_INFLIGHT = "inflight" |
| BUILDER_STATUS_MISSING = "missing" |
| BUILDER_STATUS_ABORTED = "aborted" |
| # The following statuses are currently only used for build stages. |
| BUILDER_STATUS_PLANNED = "planned" |
| BUILDER_STATUS_WAITING = "waiting" |
| BUILDER_STATUS_SKIPPED = "skipped" |
| BUILDER_STATUS_FORGIVEN = "forgiven" |
| BUILDER_COMPLETED_STATUSES = ( |
| BUILDER_STATUS_PASSED, |
| BUILDER_STATUS_FAILED, |
| BUILDER_STATUS_ABORTED, |
| BUILDER_STATUS_SKIPPED, |
| BUILDER_STATUS_FORGIVEN, |
| ) |
| BUILDER_ALL_STATUSES = ( |
| BUILDER_STATUS_FAILED, |
| BUILDER_STATUS_PASSED, |
| BUILDER_STATUS_INFLIGHT, |
| BUILDER_STATUS_MISSING, |
| BUILDER_STATUS_ABORTED, |
| BUILDER_STATUS_WAITING, |
| BUILDER_STATUS_PLANNED, |
| BUILDER_STATUS_SKIPPED, |
| BUILDER_STATUS_FORGIVEN, |
| ) |
| BUILDER_NON_FAILURE_STATUSES = ( |
| BUILDER_STATUS_PLANNED, |
| BUILDER_STATUS_PASSED, |
| BUILDER_STATUS_SKIPPED, |
| # Quick fix for Buildbucket race problems. |
| BUILDER_STATUS_INFLIGHT, |
| BUILDER_STATUS_FORGIVEN, |
| ) |
| |
| # Exception categories, as recorded in cidb |
| EXCEPTION_CATEGORY_UNKNOWN = "unknown" |
| EXCEPTION_CATEGORY_BUILD = "build" |
| EXCEPTION_CATEGORY_TEST = "test" |
| EXCEPTION_CATEGORY_INFRA = "infra" |
| EXCEPTION_CATEGORY_LAB = "lab" |
| |
| EXCEPTION_CATEGORY_ALL_CATEGORIES = ( |
| EXCEPTION_CATEGORY_UNKNOWN, |
| EXCEPTION_CATEGORY_BUILD, |
| EXCEPTION_CATEGORY_TEST, |
| EXCEPTION_CATEGORY_INFRA, |
| EXCEPTION_CATEGORY_LAB, |
| ) |
| |
| # Monarch metric names |
| MON_LAST_SLAVE = "chromeos/cbuildbot/last_completed_slave" |
| MON_BUILD_COMP_COUNT = "chromeos/cbuildbot/build/completed_count" |
| MON_BUILD_DURATION = "chromeos/cbuildbot/build/durations" |
| MON_STAGE_COMP_COUNT = "chromeos/cbuildbot/stage/completed_count" |
| MON_STAGE_DURATION = "chromeos/cbuildbot/stage/durations" |
| MON_STAGE_INSTANCE_DURATION = "chromeos/cbuildbot/stage/instance_durations" |
| MON_STAGE_FAILURE_COUNT = "chromeos/cbuildbot/stage/failure_count" |
| MON_REPO_SYNC_COUNT = "chromeos/cbuildbot/repo/sync_count" |
| MON_REPO_SYNC_RETRY_COUNT = "chromeos/cbuildbot/repo/sync_retry_count" |
| MON_REPO_SELFUPDATE_FAILURE_COUNT = ( |
| "chromeos/cbuildbot/repo/selfupdate_failure_count" |
| ) |
| MON_REPO_INIT_RETRY_COUNT = "chromeos/cbuildbot/repo/init_retry_count" |
| MON_REPO_MANIFEST_FAILURE_COUNT = ( |
| "chromeos/cbuildbot/repo/manifest_failure_count" |
| ) |
| |
| # Stage Categorization for failed stages metric. |
| UNCATEGORIZED_STAGE = "Uncategorized" |
| CI_INFRA_STAGE = "CI-Infra" |
| PRODUCT_OS_STAGE = "Product-OS" |
| PRODUCT_ANDROID_STAGE = "Product-Android" |
| PRODUCT_CHROME_STAGE = "Product-Chrome" |
| |
| |
| # Re-execution API constants. |
| # Used by --resume and --bootstrap to decipher which options they |
| # can pass to the target cbuildbot (since it may not have that |
| # option). |
| # Format is Major.Minor. Minor is used for tracking new options added |
| # that aren't critical to the older version if it's not ran. |
| # Major is used for tracking heavy API breakage- for example, no longer |
| # supporting the --resume option. |
| REEXEC_API_MAJOR = 0 |
| REEXEC_API_MINOR = 12 |
| REEXEC_API_VERSION = "%i.%i" % (REEXEC_API_MAJOR, REEXEC_API_MINOR) |
| |
| # Support --master-build-id |
| REEXEC_API_MASTER_BUILD_ID = 3 |
| # Support --git-cache-dir |
| REEXEC_API_GIT_CACHE_DIR = 4 |
| # Support --goma_dir |
| REEXEC_API_GOMA = 5 |
| # Support --ts-mon-task-num |
| REEXEC_API_TSMON_TASK_NUM = 6 |
| # Support --sanity-check-build |
| REEXEC_API_SANITY_CHECK_BUILD = 7 |
| # Support --previous-build-state |
| REEXEC_API_PREVIOUS_BUILD_STATE = 8 |
| # Support --workspace |
| REEXEC_API_WORKSPACE = 9 |
| # Support --master-buildbucket-id |
| REEXEC_API_MASTER_BUILDBUCKET_ID = 10 |
| # Support --chromeos_goma_dir |
| REEXEC_API_CHROMEOS_GOMA_DIR = 11 |
| # Support --chrome-preload-dir |
| REEXEC_API_CHROME_PRELOAD_DIR = 12 |
| |
| GOB_HOST = "%s.googlesource.com" |
| |
| EXTERNAL_GOB_INSTANCE = "chromium" |
| EXTERNAL_GERRIT_INSTANCE = "chromium-review" |
| EXTERNAL_GOB_HOST = GOB_HOST % EXTERNAL_GOB_INSTANCE |
| EXTERNAL_GERRIT_HOST = GOB_HOST % EXTERNAL_GERRIT_INSTANCE |
| EXTERNAL_GOB_URL = "https://%s" % EXTERNAL_GOB_HOST |
| EXTERNAL_GERRIT_URL = "https://%s" % EXTERNAL_GERRIT_HOST |
| |
| INTERNAL_GOB_INSTANCE = "chrome-internal" |
| INTERNAL_GERRIT_INSTANCE = "chrome-internal-review" |
| INTERNAL_GOB_HOST = GOB_HOST % INTERNAL_GOB_INSTANCE |
| INTERNAL_GERRIT_HOST = GOB_HOST % INTERNAL_GERRIT_INSTANCE |
| INTERNAL_GOB_URL = "https://%s" % INTERNAL_GOB_HOST |
| INTERNAL_GERRIT_URL = "https://%s" % INTERNAL_GERRIT_HOST |
| |
| # URL template to Android symbols, used by factory builders which still run |
| # cbuildbot as of time of writing.. |
| # TODO(b/230013833): Remove once cbuildbot is gone. |
| ANDROID_SYMBOLS_URL_TEMPLATE = ( |
| "gs://chromeos-arc-images/builds" |
| "/%(branch)s-linux-%(target)s_%(arch)s-%(variant)s/%(version)s" |
| "/%(target)s_%(arch)s-symbols-%(version)s.zip" |
| ) |
| ANDROID_SYMBOLS_FILE = "android-symbols.zip" |
| |
| GOB_COOKIE_PATH = Path("~/.git-credential-cache/cookie").expanduser() |
| GITCOOKIES_PATH = Path("~/.gitcookies").expanduser() |
| |
| # Timestamps in the JSON from GoB's web interface is of the form 'Tue |
| # Dec 02 17:48:06 2014' and is assumed to be in UTC. |
| GOB_COMMIT_TIME_FORMAT = "%a %b %d %H:%M:%S %Y" |
| |
| CHROMITE_PROJECT = "chromiumos/chromite" |
| CHROMITE_URL = "%s/%s" % (EXTERNAL_GOB_URL, CHROMITE_PROJECT) |
| CHROMIUM_SRC_PROJECT = "chromium/src" |
| CHROMIUM_GOB_URL = "%s/%s.git" % (EXTERNAL_GOB_URL, CHROMIUM_SRC_PROJECT) |
| |
| DEFAULT_MANIFEST = "default.xml" |
| OFFICIAL_MANIFEST = "official.xml" |
| LKGM_MANIFEST = "LKGM/lkgm.xml" |
| |
| SHARED_CACHE_ENVVAR = "CROS_CACHEDIR" |
| PARALLEL_EMERGE_STATUS_FILE_ENVVAR = "PARALLEL_EMERGE_STATUS_FILE" |
| |
| PATCH_BRANCH = "patch_branch" |
| STABLE_EBUILD_BRANCH = "stabilizing_branch" |
| MERGE_BRANCH = "merge_branch" |
| |
| # These branches are deleted at the beginning of every buildbot run. |
| CREATED_BRANCHES = [PATCH_BRANCH, STABLE_EBUILD_BRANCH, MERGE_BRANCH] |
| |
| # SDK target. |
| TARGET_SDK = "virtual/target-sdk" |
| TARGET_SDK_BROOT = "virtual/target-sdk-broot" |
| # Default OS target packages. |
| TARGET_OS_PKG = "virtual/target-os" |
| TARGET_OS_DEV_PKG = "virtual/target-os-dev" |
| TARGET_OS_TEST_PKG = "virtual/target-os-test" |
| TARGET_OS_FACTORY_PKG = "virtual/target-os-factory" |
| TARGET_OS_FACTORY_SHIM_PKG = "virtual/target-os-factory-shim" |
| # All virtuals used for a full build of a board. |
| ALL_TARGET_PACKAGES = ( |
| TARGET_OS_PKG, |
| TARGET_OS_DEV_PKG, |
| TARGET_OS_TEST_PKG, |
| TARGET_OS_FACTORY_PKG, |
| TARGET_OS_FACTORY_SHIM_PKG, |
| ) |
| |
| # Paths excluded when packaging SDK artifacts. These are relative to the target |
| # build root where SDK packages are being installed (e.g. /build/amd64-host). |
| SDK_PACKAGE_EXCLUDED_PATHS = ( |
| "usr/lib/debug", |
| "usr/lib64/debug", |
| AUTOTEST_BUILD_PATH, |
| "packages", |
| "tmp", |
| ) |
| |
| # Portage category and package name for Chrome. |
| CHROME_CN = "chromeos-base" |
| CHROME_PN = "chromeos-chrome" |
| CHROME_CP = f"{CHROME_CN}/{CHROME_PN}" |
| |
| # Portage category and package name for LaCrOS. |
| LACROS_CN = "chromeos-base" |
| LACROS_PN = "chromeos-lacros" |
| LACROS_CP = f"{LACROS_CN}/{LACROS_PN}" |
| |
| # Other packages to uprev while uprevving Chrome. |
| OTHER_CHROME_PACKAGES = ( |
| "chromeos-base/chromium-source", |
| "chromeos-base/chrome-icu", |
| ) |
| |
| # Chrome + OTHER_CHROME_PACKAGES. |
| ALL_CHROME_PACKAGES = (CHROME_CP,) + OTHER_CHROME_PACKAGES |
| |
| # Chrome use flags |
| USE_CHROME_INTERNAL = "chrome_internal" |
| USE_AFDO_USE = "afdo_use" |
| |
| |
| # Builds and validates _alpha ebuilds. These builds sync to the latest |
| # revsion of the Chromium src tree and build with that checkout. |
| CHROME_REV_TOT = "tot" |
| |
| # Builds and validates chrome at a given revision through cbuildbot |
| # --chrome_version |
| CHROME_REV_SPEC = "spec" |
| |
| # Builds and validates the latest Chromium release as defined by |
| # ~/trunk/releases in the Chrome src tree. These ebuilds are suffixed with rc. |
| CHROME_REV_LATEST = "latest_release" |
| |
| # Builds and validates the latest Chromium release for a specific Chromium |
| # branch that we want to watch. These ebuilds are suffixed with rc. |
| CHROME_REV_STICKY = "stable_release" |
| |
| # Builds and validates Chromium for a pre-populated directory. |
| # Also uses _alpha, since portage doesn't have anything lower. |
| CHROME_REV_LOCAL = "local" |
| VALID_CHROME_REVISIONS = [ |
| CHROME_REV_TOT, |
| CHROME_REV_LATEST, |
| CHROME_REV_STICKY, |
| CHROME_REV_LOCAL, |
| CHROME_REV_SPEC, |
| ] |
| |
| |
| # Build types supported. |
| |
| # These builds serve as PFQ builders. This is being deprecated. |
| PFQ_TYPE = "pfq" |
| |
| # Builds from source and non-incremental. This builds fully wipe their |
| # chroot before the start of every build and no not use a BINHOST. |
| FULL_TYPE = "full" |
| |
| # Full but with versioned logic. |
| CANARY_TYPE = "canary" |
| |
| # How long we should wait for the signing fleet to sign payloads. |
| PAYLOAD_SIGNING_TIMEOUT = 10800 |
| |
| # Generic type of tryjob only build configs. |
| TRYJOB_TYPE = "tryjob" |
| |
| # Special build type for Chroot builders. These builds focus on building |
| # toolchains and validate that they work. |
| CHROOT_BUILDER_TYPE = "chroot" |
| CHROOT_BUILDER_BOARD = "amd64-host" |
| |
| # Use for builds that don't requite a type. |
| GENERIC_TYPE = "generic" |
| |
| VALID_BUILD_TYPES = ( |
| FULL_TYPE, |
| CANARY_TYPE, |
| CHROOT_BUILDER_TYPE, |
| CHROOT_BUILDER_BOARD, |
| PFQ_TYPE, |
| TRYJOB_TYPE, |
| GENERIC_TYPE, |
| ) |
| |
| PUBLIC_OVERLAYS_DIR = "src/overlays" |
| PUBLIC_OVERLAYS_PATH = SOURCE_ROOT / PUBLIC_OVERLAYS_DIR |
| PRIVATE_OVERLAYS_DIR = "src/private-overlays" |
| PRIVATE_OVERLAYS_PATH = SOURCE_ROOT / PRIVATE_OVERLAYS_DIR |
| CHROMIUMOS_OVERLAY_DIR = "src/third_party/chromiumos-overlay" |
| CHROMEOS_OVERLAY_DIR = "src/private-overlays/chromeos-overlay/" |
| PORTAGE_STABLE_OVERLAY_DIR = "src/third_party/portage-stable" |
| ECLASS_OVERLAY_DIR = "src/third_party/eclass-overlay" |
| TOOLCHAINS_OVERLAY_DIR = "src/third_party/toolchains-overlay" |
| CHROMEOS_PARTNER_OVERLAY_DIR = "src/private-overlays/chromeos-partner-overlay/" |
| PUBLIC_BINHOST_CONF_DIR = os.path.join( |
| CHROMIUMOS_OVERLAY_DIR, "chromeos/binhost" |
| ) |
| PRIVATE_BINHOST_CONF_DIR = os.path.join( |
| CHROMEOS_PARTNER_OVERLAY_DIR, "chromeos/binhost" |
| ) |
| HOST_PREBUILT_CONF_FILE = "src/overlays/overlay-amd64-host/prebuilt.conf" |
| HOST_PREBUILT_CONF_FILE_FULL_PATH = SOURCE_ROOT / HOST_PREBUILT_CONF_FILE |
| MAKE_CONF_AMD64_HOST_FILE = os.path.join( |
| CHROMIUMOS_OVERLAY_DIR, "chromeos/config/make.conf.amd64-host" |
| ) |
| MAKE_CONF_AMD64_HOST_FILE_FULL_PATH = SOURCE_ROOT / MAKE_CONF_AMD64_HOST_FILE |
| |
| VERSION_FILE = os.path.join( |
| CHROMIUMOS_OVERLAY_DIR, "chromeos/config/chromeos_version.sh" |
| ) |
| SDK_VERSION_FILE = os.path.join( |
| PUBLIC_BINHOST_CONF_DIR, "host/sdk_version.conf" |
| ) |
| SDK_VERSION_FILE_FULL_PATH = SOURCE_ROOT / SDK_VERSION_FILE |
| SDK_GS_BUCKET = "chromiumos-sdk" |
| |
| PUBLIC = "public" |
| PRIVATE = "private" |
| |
| BOTH_OVERLAYS = "both" |
| PUBLIC_OVERLAYS = PUBLIC |
| PRIVATE_OVERLAYS = PRIVATE |
| VALID_OVERLAYS = [BOTH_OVERLAYS, PUBLIC_OVERLAYS, PRIVATE_OVERLAYS, None] |
| |
| # Common default logging settings for use with the logging module. |
| LOGGER_FMT = "%(asctime)s: %(levelname)s: %(message)s" |
| LOGGER_DATE_FMT = "%Y-%m-%d" |
| LOGGER_TIME_FMT = "%H:%M:%S" |
| LOGGER_DATETIME_FMT = f"{LOGGER_DATE_FMT} {LOGGER_TIME_FMT}" |
| |
| # Used by remote patch serialization/deserialzation. |
| INTERNAL_PATCH_TAG = "i" |
| EXTERNAL_PATCH_TAG = "e" |
| PATCH_TAGS = (INTERNAL_PATCH_TAG, EXTERNAL_PATCH_TAG) |
| |
| # Environment variables that should be exposed to all children processes |
| # invoked via cros_build_lib.run. |
| ENV_PASSTHRU = ( |
| "CROS_SUDO_KEEP_ALIVE", |
| SHARED_CACHE_ENVVAR, |
| PARALLEL_EMERGE_STATUS_FILE_ENVVAR, |
| # If the user doesn't want bytecode written, don't. |
| "PYTHONDONTWRITEBYTECODE", |
| # Maintaining a duplicate here to avoid performance penalty associated with |
| # importing `chromite.utils.telemetry.trace` package. |
| "traceparent", |
| ) |
| |
| # List of variables to proxy into the chroot from the host, and to |
| # have sudo export if existent. |
| CHROOT_ENVIRONMENT_ALLOWLIST = ( |
| "BAZEL_USE_REMOTE_CACHING", |
| "CHROMEOS_OFFICIAL", |
| "CHROMEOS_VERSION_AUSERVER", |
| "CHROMEOS_VERSION_DEVSERVER", |
| "CHROMEOS_VERSION_TRACK", |
| "CROS_CLEAN_OUTDATED_PKGS", |
| "CROS_WORKON_SRCROOT", |
| "GCE_METADATA_HOST", |
| "GIT_AUTHOR_EMAIL", |
| "GIT_AUTHOR_NAME", |
| "GIT_COMMITTER_EMAIL", |
| "GIT_COMMITTER_NAME", |
| "GIT_PROXY_COMMAND", |
| "GIT_SSH", |
| "NOCOLOR", |
| "PORTAGE_USERNAME", |
| "PYTHONDONTWRITEBYTECODE", |
| "RSYNC_PROXY", |
| "SSH_AGENT_PID", |
| "SSH_AUTH_SOCK", |
| "TMUX", |
| "USE", |
| "USE_PINNED_CHROMITE", |
| "all_proxy", |
| "ftp_proxy", |
| "http_proxy", |
| "https_proxy", |
| "no_proxy", |
| ) |
| |
| # Paths for Chrome LKGM which are relative to the Chromium base url. |
| CHROME_LKGM_FILE = "CHROMEOS_LKGM" |
| PATH_TO_CHROME_LKGM = "chromeos/%s" % CHROME_LKGM_FILE |
| # Path for the Chrome LKGM's closest OWNERS file. |
| PATH_TO_CHROME_CHROMEOS_OWNERS = "chromeos/OWNERS" |
| |
| # Cache constants. |
| COMMON_CACHE = "common" |
| |
| |
| # Artifact constants. |
| def _SlashToUnderscore(string: str) -> str: |
| return string.replace("/", "_") |
| |
| |
| # GCE tar ball constants. |
| def ImageBinToGceTar(image_bin: str) -> str: |
| assert image_bin.endswith(".bin"), ( |
| 'Filename %s does not end with ".bin"' % image_bin |
| ) |
| return "%s_gce.tar.gz" % os.path.splitext(image_bin)[0] |
| |
| |
| RELEASE_BUCKET = "gs://chromeos-releases" |
| TRASH_BUCKET = "gs://chromeos-throw-away-bucket" |
| CHROME_SYSROOT_TAR = "sysroot_%s.tar.xz" % _SlashToUnderscore(CHROME_CP) |
| CHROME_ENV_TAR = "environment_%s.tar.xz" % _SlashToUnderscore(CHROME_CP) |
| CHROME_ENV_FILE = "environment" |
| BASE_IMAGE_NAME = "chromiumos_base_image" |
| BASE_IMAGE_TAR = "%s.tar.xz" % BASE_IMAGE_NAME |
| BASE_IMAGE_BIN = "%s.bin" % BASE_IMAGE_NAME |
| BASE_IMAGE_GCE_TAR = ImageBinToGceTar(BASE_IMAGE_BIN) |
| IMAGE_SCRIPTS_NAME = "image_scripts" |
| IMAGE_SCRIPTS_TAR = "%s.tar.xz" % IMAGE_SCRIPTS_NAME |
| TARGET_SYSROOT_TAR = "sysroot_%s.tar.xz" % _SlashToUnderscore(TARGET_OS_PKG) |
| VM_IMAGE_NAME = "chromiumos_qemu_image" |
| VM_IMAGE_BIN = "%s.bin" % VM_IMAGE_NAME |
| BASE_GUEST_VM_DIR = "guest-vm-base" |
| TEST_GUEST_VM_DIR = "guest-vm-test" |
| BASE_GUEST_VM_TAR = "%s.tar.xz" % BASE_GUEST_VM_DIR |
| TEST_GUEST_VM_TAR = "%s.tar.xz" % TEST_GUEST_VM_DIR |
| |
| KERNEL_IMAGE_NAME = "vmlinuz" |
| KERNEL_IMAGE_BIN = "%s.bin" % KERNEL_IMAGE_NAME |
| KERNEL_IMAGE_TAR = "%s.tar.xz" % KERNEL_IMAGE_NAME |
| KERNEL_SYMBOL_NAME = "vmlinux.debug" |
| |
| TEST_IMAGE_NAME = "chromiumos_test_image" |
| TEST_IMAGE_TAR = "%s.tar.xz" % TEST_IMAGE_NAME |
| TEST_IMAGE_BIN = "%s.bin" % TEST_IMAGE_NAME |
| TEST_IMAGE_GCE_TAR = ImageBinToGceTar(TEST_IMAGE_BIN) |
| TEST_KEY_PRIVATE = "id_rsa" |
| |
| BREAKPAD_DEBUG_SYMBOLS_NAME = "debug_breakpad" |
| BREAKPAD_DEBUG_SYMBOLS_TAR = "%s.tar.xz" % BREAKPAD_DEBUG_SYMBOLS_NAME |
| |
| # Code coverage related constants |
| CODE_COVERAGE_EXCLUDE_DIRS = ("src/platform/ec/",) |
| CODE_COVERAGE_LLVM_JSON_SYMBOLS_NAME = "code_coverage" |
| CODE_COVERAGE_LLVM_JSON_SYMBOLS_TAR = ( |
| "%s.tar.xz" % CODE_COVERAGE_LLVM_JSON_SYMBOLS_NAME |
| ) |
| CODE_COVERAGE_GOLANG_NAME = "code_coverage_go" |
| CODE_COVERAGE_GOLANG_TAR = "%s.tar.xz" % CODE_COVERAGE_GOLANG_NAME |
| CODE_COVERAGE_LLVM_FILE_NAME = "coverage.json" |
| ZERO_COVERAGE_FILE_EXTENSIONS_TO_PROCESS = { |
| "RUST": [".rs"], |
| "CPP": [".cc", ".c", ".cpp"], |
| } |
| ZERO_COVERAGE_EXCLUDE_LINE_PREFIXES = { |
| "CPP": ( |
| "/*", |
| "#include", |
| "//", |
| "* ", |
| "*/", |
| "\n", |
| "}\n", |
| "};\n", |
| "**/\n", |
| ), |
| "RUST": ( |
| "/*", |
| "//", |
| "* ", |
| "*/", |
| "fn ", |
| "\n", |
| "}\n", |
| "#", |
| "use", |
| "pub mod", |
| "impl ", |
| ), |
| } |
| ZERO_COVERAGE_EXCLUDE_FILES_SUFFIXES = ( |
| # Exclude unit test code from zero coverage |
| "test.c", |
| "test.cc", |
| "tests.c", |
| "tests.cc", |
| "test.cpp", |
| "tests.cpp", |
| "fuzzer.c", |
| "fuzzer.cc", |
| "fuzzer.cpp", |
| ) |
| |
| DEBUG_SYMBOLS_NAME = "debug" |
| DEBUG_SYMBOLS_TAR = "%s.tgz" % DEBUG_SYMBOLS_NAME |
| |
| DEV_IMAGE_NAME = "chromiumos_image" |
| DEV_IMAGE_BIN = "%s.bin" % DEV_IMAGE_NAME |
| |
| RECOVERY_IMAGE_NAME = "recovery_image" |
| RECOVERY_IMAGE_BIN = "%s.bin" % RECOVERY_IMAGE_NAME |
| RECOVERY_IMAGE_TAR = "%s.tar.xz" % RECOVERY_IMAGE_NAME |
| |
| FACTORY_IMAGE_NAME = "factory_install_shim" |
| FACTORY_IMAGE_BIN = f"{FACTORY_IMAGE_NAME}.bin" |
| |
| FLEXOR_KERNEL_IMAGE_NAME = "flexor_vmlinuz" |
| FLEXOR_KERNEL_IMAGE_TAR = f"{FLEXOR_KERNEL_IMAGE_NAME}.tar.zst" |
| |
| # Image type constants. |
| IMAGE_TYPE_BASE = "base" |
| IMAGE_TYPE_DEV = "dev" |
| IMAGE_TYPE_TEST = "test" |
| IMAGE_TYPE_RECOVERY = "recovery" |
| # This is the image type used by legacy CBB configs. |
| IMAGE_TYPE_FACTORY = "factory" |
| # This is the image type for the factory image type in `cros build-image`. |
| IMAGE_TYPE_FACTORY_SHIM = "factory_install" |
| IMAGE_TYPE_FIRMWARE = "firmware" |
| # Firmware for cros hps device src/platform/hps-firmware2. |
| IMAGE_TYPE_HPS_FIRMWARE = "hps_firmware" |
| # USB PD accessory microcontroller firmware (e.g. power brick, display dongle). |
| IMAGE_TYPE_ACCESSORY_USBPD = "accessory_usbpd" |
| # Standalone accessory microcontroller firmware (e.g. wireless keyboard). |
| IMAGE_TYPE_ACCESSORY_RWSIG = "accessory_rwsig" |
| # GSC Firmware. |
| IMAGE_TYPE_GSC_FIRMWARE = "gsc_firmware" |
| # Netboot kernel. |
| IMAGE_TYPE_NETBOOT = "netboot" |
| # Flexor. |
| IMAGE_TYPE_FLEXOR_KERNEL = "flexor" |
| |
| IMAGE_TYPE_TO_NAME = { |
| IMAGE_TYPE_BASE: BASE_IMAGE_BIN, |
| IMAGE_TYPE_DEV: DEV_IMAGE_BIN, |
| IMAGE_TYPE_RECOVERY: RECOVERY_IMAGE_BIN, |
| IMAGE_TYPE_TEST: TEST_IMAGE_BIN, |
| IMAGE_TYPE_FACTORY_SHIM: FACTORY_IMAGE_BIN, |
| IMAGE_TYPE_FLEXOR_KERNEL: FLEXOR_KERNEL_IMAGE_NAME, |
| } |
| IMAGE_NAME_TO_TYPE = dict((v, k) for k, v in IMAGE_TYPE_TO_NAME.items()) |
| |
| BUILD_REPORT_JSON = "build_report.json" |
| METADATA_JSON = "metadata.json" |
| PARTIAL_METADATA_JSON = "partial-metadata.json" |
| METADATA_TAGS = "tags" |
| |
| FIRMWARE_ARCHIVE_NAME = "firmware_from_source.tar.bz2" |
| FPMCU_UNITTESTS_ARCHIVE_NAME = "fpmcu_unittests.tar.bz2" |
| |
| # Global configuration constants. |
| SYNC_RETRIES = 4 |
| SLEEP_TIMEOUT = 30 |
| |
| # Email alias to add as reviewer in Gerrit, which GWSQ will then automatically |
| # assign to the current gardener. |
| CHROME_GARDENER_REVIEW_EMAIL = "chrome-os-gardeners-reviews@google.com" |
| |
| # Email validation regex. Not quite fully compliant with RFC 2822, but good |
| # approximation. |
| EMAIL_REGEX = r"[A-Za-z0-9._%~+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}" |
| |
| # Blocklist of files not allowed to be uploaded into the Partner Project Google |
| # Storage Buckets: |
| # debug.tgz contains debug symbols. |
| # manifest.xml exposes all of our repo names. |
| # vm_test_results can contain symbolicated crash dumps. |
| EXTRA_BUCKETS_FILES_BLOCKLIST = [ |
| "debug.tgz", |
| "manifest.xml", |
| "vm_test_results_*", |
| ] |
| |
| # Milo URL |
| CHROMEOS_MILO_HOST = "https://ci.chromium.org/b/" |
| |
| # TODO(nxia): consolidate all run.metadata key constants, |
| # add a unit test to avoid duplicated keys in run_metadata |
| |
| # Builder_run metadata keys |
| METADATA_SCHEDULED_IMPORTANT_SLAVES = "scheduled_important_slaves" |
| METADATA_SCHEDULED_EXPERIMENTAL_SLAVES = "scheduled_experimental_slaves" |
| METADATA_UNSCHEDULED_SLAVES = "unscheduled_slaves" |
| # List of builders marked as experimental through the tree status, not all the |
| # experimental builders for a run. |
| METADATA_EXPERIMENTAL_BUILDERS = "experimental_builders" |
| |
| # Partition labels. |
| PART_STATE = "STATE" |
| PART_ROOT_A = "ROOT-A" |
| PART_ROOT_B = "ROOT-B" |
| PART_KERN_A = "KERN-A" |
| PART_KERN_B = "KERN-B" |
| PART_MINIOS_A = "MINIOS-A" |
| PART_MINIOS_B = "MINIOS-B" |
| |
| # Crossystem related constants. |
| MINIOS_PRIORITY = "minios_priority" |
| |
| # Quick provision payloads. These file names should never be changed, otherwise |
| # very bad things can happen :). The reason is we have already uploaded these |
| # files with these names for all boards. So if the name changes, all scripts |
| # that have been using this need to handle both cases to be backward compatible. |
| QUICK_PROVISION_PAYLOAD_KERNEL = "full_dev_part_KERN.bin.gz" |
| QUICK_PROVISION_PAYLOAD_ROOTFS = "full_dev_part_ROOT.bin.gz" |
| QUICK_PROVISION_PAYLOAD_MINIOS = "full_dev_part_MINIOS.bin.gz" |
| QUICK_PROVISION_PAYLOAD_STATEFUL = "stateful.tgz" |
| |
| # Payloads used for provision/flash. |
| # For bandwidth-constrained networks, use these payloads. |
| FULL_PAYLOAD_KERN = "full_KERN.bin.zst" |
| FULL_PAYLOAD_ROOT = "full_ROOT.bin.zst" |
| FULL_PAYLOAD_MINIOS = "full_MINIOS.bin.zst" |
| STATEFUL_PAYLOAD = "stateful.zst" |
| |
| # Mock build and stage IDs. |
| MOCK_STAGE_ID = 313377 |
| MOCK_BUILD_ID = 31337 |
| |
| # Dev key related names. |
| VBOOT_DEVKEYS_DIR = os.path.join("/usr/share/vboot/devkeys") |
| KERNEL_PUBLIC_SUBKEY = "kernel_subkey.vbpubk" |
| KERNEL_DATA_PRIVATE_KEY = "kernel_data_key.vbprivk" |
| KERNEL_KEYBLOCK = "kernel.keyblock" |
| RECOVERY_PUBLIC_KEY = "recovery_key.vbpubk" |
| RECOVERY_DATA_PRIVATE_KEY = "recovery_kernel_data_key.vbprivk" |
| RECOVERY_KEYBLOCK = "recovery_kernel.keyblock" |
| MINIOS_DATA_PRIVATE_KEY = "minios_kernel_data_key.vbprivk" |
| MINIOS_KEYBLOCK = "minios_kernel.keyblock" |
| |
| # Portage log paths. |
| PORTAGE_LOG_DIR = Path("/var/log/portage") |
| PORTAGE_DEPGRAPH_COUNTERS_LOG = PORTAGE_LOG_DIR / "depgraph_counters.log" |