spliced.predict package

Subpackages

Submodules

spliced.predict.abi_laboratory module

class spliced.predict.abi_laboratory.AbiLaboratoryPrediction[source]

Bases: Prediction

container = 'docker://ghcr.io/buildsi/abi-laboratory-docker'
predict(splice, predict_type=None)[source]

Run the ABI laboratory to add to the predictions

run_abi_laboratory(original_lib, replace_lib, name)[source]

Run abi-dumper + abi-compliance-checker with original and comparison library. This assumes we are in the container, and falls back to running a container.

run_containerized_abi_laboratory(original_lib, replace_lib, name)[source]

Run containerized abi laboratory with singularity

run_diff(splice)[source]

Run pairwise diffs for libs we need.

run_local_abi_laboratory(original_lib, replace_lib, name)[source]

Run containerized abi laboratory with singularity

set_cache()[source]

Set the cache directory.

splice_different_libs(splice)[source]

In the case of splicing “the same lib” into itself (a different version) we can do matching based on names.

splice_equivalent_libs(splice)[source]

In the case of splicing “the same lib” into itself (a different version) we can do matching based on names. We can use abicomat with binaries, and abidiff for just between the libs.

spliced.predict.base module

class spliced.predict.base.Prediction[source]

Bases: object

A prediction is a base for assessing a Splice and making predictions.

create_elfcall_deps_lookup(splice, libs)[source]

This is subbing in a library with a version of itself, and requires binaries

find_elfcall_deps_for(splice, lib)[source]

Given a library (that is assumed to be in metadata, from elfcall) find libraries that the linker is assumed to hit and find symbols.

predict(splice, predict_type=None)[source]
spliced.predict.base.get_prefix(lib)[source]
spliced.predict.base.match_by_prefix(meta, spliced_meta)[source]

Given an iterable of two things, match based on library prefix. E.g., basename -> split at . -> match first piece

spliced.predict.base.time_run_decorator(func)[source]

Decorator to add run seconds to result

spliced.predict.base.timed_run(*args, **kwargs)[source]

spliced.predict.libabigail module

class spliced.predict.libabigail.LibabigailPrediction[source]

Bases: Prediction

abicompat = None
abidiff = None
diff_prediction(splice)[source]

Only do pairwise diffs between libs

find_tool(name)[source]

Find a specific named tool (abidiff or abicompat)

find_tooling()[source]

Find abicompat and abidiff and add to class

full_prediction(splice)[source]

A full prediction is run with spliced splice, includes libs and binaries.

predict(splice, predict_type=None)[source]

Run libabigail to add to the predictions

run_abicompat(binary, original, lib)[source]

Run abicompat against two libraries

run_abidiff(original_lib, replace_lib)[source]

Run abi diff with an original and comparison library

debuginfo files:

By default, libabigail will look in /usr/lib/debug for separate debug files (.debug) generated by gcc. Alternate locations can be specified by using the environment variables LIBABIGAIL_DEBUGINFO_DIR{1,2} for the original and comparison libraries, respectively.

splice_different_libs(splice)[source]

In the case of splicing “the same lib” into itself (a different version) we can do matching based on names.

splice_equivalent_libs(splice)[source]

In the case of splicing “the same lib” into itself (a different version) we can do matching based on names. We can use abicomat with binaries, and abidiff for just between the libs.

spliced.predict.libabigail.add_to_path(path)[source]

spliced.predict.spack module

class spliced.predict.spack.SpackTest[source]

Bases: Prediction

If we find this is a spack package (e.g, installed in a spack root) run spack test for the splice.

predict(splice, predict_type=None)[source]

The spack predictor runs spack test for the original and splice.

spack_test(identifier)[source]

Run spack tests for original and spliced

spliced.predict.symbols module

class spliced.predict.symbols.SymbolsPrediction[source]

Bases: Prediction

diff_libs(splice)[source]

Only do A vs B comparisons between two libs.

predict(splice, predict_type=None)[source]

Run symbolator to add to the predictions

splice_different_libs(splice)[source]

This is subbing in a library with a version of itself, and requires binaries

splice_equivalent_libs(splice)[source]

This is subbing in a library with a version of itself, and requires binaries

spliced.predict.symbols.compress_symbol_set(symbols)[source]

Write symbol:prefix into set to compare to.

Module contents

spliced.predict.get_predictors(names=None)[source]

Get a lookup of predictors for an experiment to run.