mozbuild.controller package

Submodules

mozbuild.controller.building module

class mozbuild.controller.building.BuildDriver(topsrcdir, settings, log_manager, topobjdir=None, mozconfig=<object object>)

Bases: mozbuild.base.MozbuildObject

Provides a high-level API for build actions.

install_tests(test_objs)

Install test files.

class mozbuild.controller.building.BuildMonitor(topsrcdir, settings, log_manager, topobjdir=None, mozconfig=<object object>)

Bases: mozbuild.base.MozbuildObject

Monitors the output of the build.

ccache_stats()
finish(record_usage=True)

Record the end of the build.

get_resource_usage()

Produce a data structure containing the low-level resource usage information.

This data structure can e.g. be serialized into JSON and saved for subsequent analysis.

If no resource usage is available, None is returned.

have_excessive_swapping()

Determine whether there was excessive swapping during the build.

Returns a tuple of (excessive, swap_in, swap_out). All values are None if no swap information is available.

have_high_finder_usage()

Determine whether there was high Finder CPU usage during the build.

Returns True if there was high Finder CPU usage, False if there wasn’t, or None if there is nothing to report.

have_resource_usage

Whether resource usage is available.

init(warnings_path)

Create a new monitor.

warnings_path is a path of a warnings database to use.

log_resource_usage(usage)

Summarize the resource usage of this build in a log message.

on_line(line)

Consume a line of output from the build system.

This will parse the line for state and determine whether more action is needed.

Returns a BuildOutputResult instance.

In this named tuple, warning will be an object describing a new parsed warning. Otherwise it will be None.

state_changed indicates whether the build system changed state with this line. If the build system changed state, the caller may want to query this instance for the current state in order to update UI, etc.

for_display is a boolean indicating whether the line is relevant to the user. This is typically used to filter whether the line should be presented to the user.

start()

Record the start of the build.

start_resource_recording()
class mozbuild.controller.building.BuildOutputResult(warning, state_changed, for_display)

Bases: tuple

for_display

Alias for field number 2

state_changed

Alias for field number 1

warning

Alias for field number 0

class mozbuild.controller.building.CCacheStats(output=None)

Bases: object

Holds statistics from ccache.

Instances can be subtracted from each other to obtain differences. print() or str() the object to show a ccache -s like output of the captured stats.

ABSOLUTE_KEYS = set([u'cache_size', u'cache_files', u'cache_max_size'])
DIRECTORY_DESCRIPTION = u'cache directory'
FORMAT_KEYS = set([u'cache_size', u'cache_max_size'])
GiB = 1073741824
KiB = 1024
MiB = 1048576
PRIMARY_CONFIG_DESCRIPTION = u'primary config'
SECONDARY_CONFIG_DESCRIPTION = u'secondary config (readonly)'
STATS_KEYS = [(u'cache_hit_direct', u'cache hit (direct)'), (u'cache_hit_preprocessed', u'cache hit (preprocessed)'), (u'cache_miss', u'cache miss'), (u'link', u'called for link'), (u'preprocessing', u'called for preprocessing'), (u'multiple', u'multiple source files'), (u'stdout', u'compiler produced stdout'), (u'no_output', u'compiler produced no output'), (u'empty_output', u'compiler produced empty output'), (u'failed', u'compile failed'), (u'error', u'ccache internal error'), (u'preprocessor_error', u'preprocessor error'), (u'cant_use_pch', u"can't use precompiled header"), (u'compiler_missing', u"couldn't find the compiler"), (u'cache_file_missing', u'cache file missing'), (u'bad_args', u'bad compiler arguments'), (u'unsupported_lang', u'unsupported source language'), (u'compiler_check_failed', u'compiler check failed'), (u'autoconf', u'autoconf compile/link'), (u'unsupported_compiler_option', u'unsupported compiler option'), (u'out_stdout', u'output to stdout'), (u'out_device', u'output to a non-regular file'), (u'no_input', u'no input file'), (u'bad_extra_file', u'error hashing extra file'), (u'cache_files', u'files in cache'), (u'cache_size', u'cache size'), (u'cache_max_size', u'max cache size')]
hit_rate_message()
hit_rates()
class mozbuild.controller.building.TierStatus(resources)

Bases: object

Represents the state and progress of tier traversal.

The build system is organized into linear phases called tiers. Each tier executes in the order it was defined, 1 at a time.

add_resource_fields_to_dict(d)
add_resources_to_dict(entry, start=None, end=None, phase=None)

Helper function to append resource information to a dict.

begin_tier(tier)

Record that execution of a tier has begun.

finish_tier(tier)

Record that execution of a tier has finished.

set_tiers(tiers)

Record the set of known tiers.

tiered_resource_usage()

Obtains an object containing resource usage for tiers.

The returned object is suitable for serialization.

mozbuild.controller.clobber module

class mozbuild.controller.clobber.Clobberer(topsrcdir, topobjdir)

Bases: object

clobber_cause()

Obtain the cause why a clobber is required.

This reads the cause from the CLOBBER file.

This returns a list of lines describing why the clobber was required. Each line is stripped of leading and trailing whitespace.

clobber_needed()

Returns a bool indicating whether a tree clobber is required.

ensure_objdir_state()

Ensure the CLOBBER file in the objdir exists.

This is called as part of the build to ensure the clobber information is configured properly for the objdir.

maybe_do_clobber(cwd, allow_auto=False, fh=<open file '<stderr>', mode 'w'>)

Perform a clobber if it is required. Maybe.

This is the API the build system invokes to determine if a clobber is needed and to automatically perform that clobber if we can.

This returns a tuple of (bool, bool, str). The elements are:

  • Whether a clobber was/is required.
  • Whether a clobber was performed.
  • The reason why the clobber failed or could not be performed. This will be None if no clobber is required or if we clobbered without error.
mozbuild.controller.clobber.main(args, env, cwd, fh=<open file '<stderr>', mode 'w'>)

Module contents