Pavilion Builder Objects

pavilion.pav_test module

Contains the object for tracking multi-threaded builds, along with the TestBuilder class itself.

class pavilion.builder.TestBuilder(pav_cfg: PavConfig, working_dir: Path, config: dict, script: Path, status: TestStatusFile, download_dest: Path, templates: Dict[Path, Path] | None = None, spack_config: dict | None = None, build_name=None)

Bases: object

Manages a test build and their organization.

Variables:
  • _BLOCK_SIZE (int) – Chunk size when reading and hashing files.

  • BUILD_HASH_BYTES (int) – Number of bytes in the build hash (1/2 the chars)

  • DEPRECATED (str) – The name of the build deprecation file.

  • ~.path (Path) – The intended location of this build in the build directory.

  • fail_path (Path) – Where this build will be placed if it fails.

  • name (str) – The name of this build.

BUILD_HASH_BYTES = 8
DEPRECATED = '.pav_deprecated_build'
DOWNLOAD_HASH_SIZE = 13
FINISHED_SUFFIX = '.finished'
LOG_NAME = 'pav_build_log'
TAR_SUBTYPES = ('gzip', 'x-gzip', 'x-bzip2', 'x-xz', 'x-tar', 'x-lzma')
build(test_id: str, tracker: BuildTracker, cancel_event: Event | None = None) bool

Perform the build if needed, do a soft-link copy of the build directory into our test directory, and note that we’ve used the given build.

Parameters:
  • test_id – The test id for the test initiating this build.

  • tracker – A thread-safe tracker object for keeping info on what the build is doing.

  • cancel_event – Allows builds to tell each other to die.

Returns:

True if these steps completed successfully.

property build_hash: str

Get the cached build hash, if it exists. Otherwise, create it and cache it.

copy_build(dest: Path)

Copy the build (using ‘symlink’ copying to the destination.

Parameters:

dest – Where to copy the build to.

Raises:

TestBuilderError – When copy errors happen

Returns:

True on success, False on failure

create_spack_env(build_dir)

Creates a spack.yaml file in the build dir, so that each unique build can activate it’s own spack environment.

deprecate()

Deprecate this build, so that it will be rebuilt if any other test run wants to use it.

exists()

Return True if the given build exists.

log_updated() float | None

Return the last time the build log was updated. Simply returns None if the log can’t be found or read.

name_build() str

Search for the first non-deprecated version of this build (whether or not it exists) and name the build for it.

classmethod rehash_name(name: str) str

Rehash the given build name with the given version.

rename_build()

Rechecks deprecation and updates the build name.

property suite_subdir: Path | None