Common Build Operations#

class relenv.build.common.Builder(root=None, recipies=None, build_default=<function build_default>, populate_env=<function populate_env>, force_download=False, arch='x86_64')#

Utility that handles the build process.

Parameters
  • root (str) – The root of the working directories for this build

  • recipies – The instructions for the build steps

  • build_default (types.FunctionType) – The default build function, defaults to build_default

  • populate_env (types.FunctionType) – The default function to populate the build environment, defaults to populate_env

  • force_download (bool) – If True, forces downloading the archives even if they exist, defaults to False

  • arch (str) – The architecture being built

add(name, build_func=None, wait_on=None, download=None)#

Add a step to the build process.

Parameters
  • name (str) – The name of the step

  • build_func (types.FunctionType, optional) – The function that builds this step, defaults to None

  • wait_on (list, optional) – Processes to wait on before running this step, defaults to None

  • download (dict, optional) – A dictionary of download information, defaults to None

build(steps=None, cleanup=True)#

Build!

Parameters
  • steps (list, optional) – The steps to run, defaults to None

  • cleanup (bool, optional) – Whether to clean up or not, defaults to True

check_prereqs()#

Check pre-requsists for build. This method verifies all requrements for a successful build are satisfied.

Returns

Returns a list of string describing failed checks

Return type

list

clean()#

Completely clean up the remnants of a relenv build.

cleanup()#

Clean up the build directories.

download_files(steps=None, force_download=False)#

Download all of the needed archives.

Parameters

steps (list, optional) – The steps to download archives for, defaults to None

run(name, event, build_func, download)#

Run a build step.

Parameters
  • name (str) – The name of the step to run

  • event (multiprocessing.Event) – An event to track this process’ status and alert waiting steps

  • build_func (types.FunctionType) – The function to use to build this step

  • download (Download) – The Download instance for this step

Returns

The output of the build function

set_arch(arch)#

Set the architecture for the build

Parameters

arch (str) – The arch to build

class relenv.build.common.Dirs(dirs, name, arch)#

A container for directories during build time.

Parameters
  • dirs (relenv.common.WorkDirs) – A collection of working directories

  • name (str) – The name of this collection

  • arch (str) – The architecture being worked with

to_dict()#

Get a dictionary representation of the directories in this collection.

Returns

A dictionary of all the directories

Return type

dict

class relenv.build.common.Download(name, url, signature=None, destination='', version='', md5sum=None)#

A utility that holds information about content to be downloaded.

Parameters
  • name (str) – The name of the download

  • url (str) – The url of the download

  • signature (str) – The signature of the download, defaults to None

  • destination (str) – The path to download the file to

  • version (str) – The version of the content to download

  • md5sum (str) – The md5 sum of the download

exists()#

True when the artifact already exists on disk.

Returns

True when the artifact already exists on disk

Return type

bool

fetch_file()#

Download the file.

Returns

The path to the downloaded content, and whether it was downloaded.

Return type

tuple(str, bool)

fetch_signature(version)#

Download the file signature.

Returns

The path to the downloaded signature.

Return type

str

static validate_md5sum(archive, md5sum)#

True when when the archive matches the md5 hash.

Parameters
  • archive (str) – The path to the archive to validate

  • md5sum (str) – The md5 sum to validate against

Returns

True if the sums matched, else False

Return type

bool

static validate_signature(archive, signature)#

True when the archive’s signature is valid

Parameters
  • archive (str) – The path to the archive to validate

  • signature (str) – The path to the signature to validate against

Returns

True if it validated properly, else False

Return type

bool

relenv.build.common.all_dirs(root, recurse=True)#

Get all directories under and including the given root.

Parameters
  • root (str) – The root directory to traverse

  • recurse (bool, optional) – Whether to recursively search for directories, defaults to True

Returns

A list of directories found

Return type

list

relenv.build.common.build_default(env, dirs, logfp)#

The default build function if none is given during the build process.

Parameters
  • env (dict) – The environment dictionary

  • dirs (relenv.build.common.Dirs) – The working directories

  • logfp (file) – A handle for the log file

relenv.build.common.build_openssl(env, dirs, logfp)#

Build openssl.

Parameters
  • env (dict) – The environment dictionary

  • dirs (relenv.build.common.Dirs) – The working directories

  • logfp (file) – A handle for the log file

relenv.build.common.build_sqlite(env, dirs, logfp)#

Build sqlite.

Parameters
  • env (dict) – The environment dictionary

  • dirs (relenv.build.common.Dirs) – The working directories

  • logfp (file) – A handle for the log file

relenv.build.common.create_archive(tarfp, toarchive, globs, logfp=None)#

Create an archive.

Parameters
  • tarfp (file) – A pointer to the archive to be created

  • toarchive (str) – The path to the directory to archive

  • globs (list) – A list of filtering patterns to match against files to be added

  • logfp (file) – A pointer to the log file

relenv.build.common.finalize(env, dirs, logfp)#

Run after we’ve fully built python. This method enhances the newly created python with Relenv’s runtime hacks.

Parameters
  • env (dict) – The environment dictionary

  • dirs (relenv.build.common.Dirs) – The working directories

  • logfp (file) – A handle for the log file

relenv.build.common.find_sysconfigdata(pymodules)#

Find sysconfigdata directory for python installation

Parameters

pymodules (str) – Path to python modules (e.g. lib/python3.10)

Returns

The name of the sysconig data module

Return type

str

relenv.build.common.install_sysdata(mod, destfile, buildroot, toolchain)#

Helper method used by the finalize build method to create a Relenv Python environment’s sysconfigdata.

Parameters
  • mod (types.ModuleType) – The module to operate on

  • destfile (str) – Path to the file to write the data to

  • buildroot (str) – Path to the root of the build

  • toolchain (str) – Path to the root of the toolchain

relenv.build.common.print_ui(events, processes, fails, flipstat=None)#

Prints the UI during the relenv building process.

Parameters
  • events (dict) – A dictionary of events that are updated during the build process

  • processes (dict) – A dictionary of build processes

  • fails (list) – A list of processes that have failed

  • flipstat (dict, optional) – A dictionary of process statuses, defaults to {}

relenv.build.common.verify_checksum(file, checksum)#

Verify the checksum of a files.

Parameters
  • file (str) – The path to the file to check.

  • checksum (str) – The checksum to verify against

Raises

RelenvException – If the checksum verification failed

Returns

True if it succeeded, or False if the checksum was None

Return type

bool