Source¶
-
class
Consistency
¶ Bases:
object
-
INCONSISTENT
= 0¶ Inconsistent
Inconsistent sources have no explicit reference set. They cannot produce a cache key, be fetched or staged. They can only be tracked.
-
RESOLVED
= 1¶ Resolved
Resolved sources have a reference and can produce a cache key and be fetched, however they cannot be staged.
-
CACHED
= 2¶ Cached
Cached sources have a reference which is present in the local source cache. Only cached sources can be staged.
-
-
exception
SourceError
(message, *, reason=None)¶ Bases:
buildstream._exceptions.BstError
This exception should be raised by
Source
implementations to report errors to the user.Parameters: - message (str) – The error message to report to the user
- reason (str) – An optional machine readable reason string, used for test cases
-
class
Source
¶ Bases:
buildstream.plugin.Plugin
Base Source class.
All Sources derive from this class, this interface defines how the core will be interacting with Sources.
-
COMMON_CONFIG_KEYS
= ['kind', 'directory']¶ Common source config keys
Source config keys that must not be accessed in configure(), and should be checked for using node_validate().
-
get_mirror_directory
()¶ Fetches the directory where this source should store things
Returns: The directory belonging to this source Return type: (str)
-
translate_url
(url)¶ Translates the given url which may be specified with an alias into a fully qualified url.
Parameters: url (str) – A url, which may be using an alias Returns: The fully qualified url, with aliases resolved Return type: str
-
get_project_directory
()¶ Fetch the project base directory
This is useful for sources which need to load resources stored somewhere inside the project.
Returns: The project base directory Return type: str
-
tempdir
()¶ Context manager for working in a temporary directory
Yields: (str) – A path to a temporary directory This should be used by source plugins directly instead of the tempfile module. This one will automatically cleanup in case of termination by catching the signal before os._exit(). It will also use the ‘mirror directory’ as expected for a source.
-
get_consistency
()¶ Report whether the source has a resolved reference
Returns: The source consistency Return type: ( Consistency
)
-
get_ref
()¶ Fetch the internal ref, however it is represented
Returns: The internal source reference Return type: (simple object) Note
The reference is the user provided (or track resolved) value the plugin uses to represent a specific input, like a commit in a VCS or a tarball’s checksum. Usually the reference is a string, but the plugin may choose to represent it with a tuple or such.
-
set_ref
(ref, node)¶ Applies the internal ref, however it is represented
Parameters: - ref (simple object) – The internal source reference to set
- node (dict) – The same dictionary which was previously passed
to
configure()
See
get_ref()
for a discussion on the ref parameter.
-
track
()¶ Resolve a new ref from the plugin’s track option
Returns: A new internal source reference, or None Return type: (simple object) If the backend in question supports resolving references from a symbolic tracking branch or tag, then this should be implemented to perform this task on behalf of
build-stream track
commands.This usually requires fetching new content from a remote origin to see if a new ref has appeared for your branch or tag. If the backend store allows one to query for a new ref from a symbolic tracking data without downloading then that is desirable.
See
get_ref()
for a discussion on the ref parameter.
-
fetch
()¶ Fetch remote sources and mirror them locally, ensuring at least that the specific reference is cached locally.
Raises: SourceError
Implementors should raise
SourceError
if the there is some network error or if the source reference could not be matched.
-
stage
(directory)¶ Stage the sources to a directory
Parameters: directory (str) – Path to stage the source Raises: SourceError
Implementors should assume that directory already exists and stage already cached sources to the passed directory.
Implementors should raise
SourceError
when encountering some system error.
-
init_workspace
(directory)¶ Initialises a new workspace
Parameters: directory (str) – Path of the workspace to init Raises: SourceError
Default implementation is to call
stage()
.Implementors overriding this method should assume that directory already exists.
Implementors should raise
SourceError
when encountering some system error.
-