-
352f4ad9
by Jonathan Maw
at 2019-02-12T16:44:35Z
loader.py: Stage junctions into .bst instead of a tmpdir
-
62396af9
by Jonathan Maw
at 2019-02-12T16:44:35Z
loader.py: Load junction from workspace if one's open
-
f1e9cb66
by Jonathan Maw
at 2019-02-12T16:44:35Z
Remove cleanup functionality from loader
Since junction check-outs are now persistent, there is no need to clean
up temporary directories once finished.
Now, junction checkouts are stored within the top-level project dir and
will be cleaned-up when that directory is removed.
This involves changes in:
* loader.py: Remove cleanup logic and passing-around of tmpdir.
* _project.py: Remove passing around tmpdir and calling loader's
cleanup.
-
e51116d5
by Jonathan Maw
at 2019-02-12T17:59:25Z
Merge branch 'jonathan/junction-no-tmpdir' into 'master'
Stage junctions into .bst instead of a tmpdir
Closes #895
See merge request BuildStream/buildstream!1134
-
478e5c47
by Valentin David
at 2019-02-12T18:06:50Z
buildstream/_cas/cascache.py: Set 0644 rights to pulled files
This was broken by 5ef19a0b31df84caed1e41719ef7ea5c6bd8a8bc.
-
6de65306
by Valentin David
at 2019-02-12T19:13:43Z
Merge branch 'valentindavid/pull-chmod-bug' into 'master'
buildstream/_cas/cascache.py: Set 0644 rights to pulled files
See merge request BuildStream/buildstream!1144
-
9b140fa0
by James Ennis
at 2019-02-13T09:35:45Z
element.py: Lift ArtifactCache.get_artifact_fullname() to here
This commit removes the method ArtifactCache.get_artifact_fullname()
and replaces it with Element.get_artifact_name()
Given a key, we are now able to construct the full name of any of an
element's artifacts.
-
039d7c1d
by James Ennis
at 2019-02-13T09:35:45Z
element.py: Make calculate_cache_key() API private
-
7cb6be74
by James Ennis
at 2019-02-13T09:35:45Z
element.py: Return early in __init_defaults if no plugin config
-
ddf642e1
by James Ennis
at 2019-02-13T09:35:45Z
metaelement.py: Provide constructor with default keyword arguments
-
55c15f8f
by James Ennis
at 2019-02-13T09:35:45Z
_artifactelement.py: New ArtifactElement object (derived from Element)
This object should be used when we want to handle artifact refs directly
from the command line.
An ArtifactElementError has also been added to _exceptions.py
-
6951cfc8
by James Ennis
at 2019-02-13T09:35:45Z
_project.py: Add create_artifact_element() method
-
bf1933b6
by James Ennis
at 2019-02-13T09:35:45Z
_stream.py: Add the _classify_artifacts() helper
-
ea6ff6da
by James Ennis
at 2019-02-13T09:35:45Z
_stream.py: Modify behaviour of _classify_artifacts()
* There is no need for this method to use a cas object.
* Search for artifact globs in the project's element path
* An artifact key is always 64 chars long
-
fcc79917
by James Ennis
at 2019-02-13T09:35:45Z
_stream.py: Allow loading to handle artifact refs
-
77345317
by James Ennis
at 2019-02-13T09:35:45Z
_artifactcache.py: Add get_artifacts_log() method
A CasBasedDirectory object of an artifacts logs can be obtained
with ArtifactCache.get_artifacts_log(). This ultimately calls
CASCache.get_top_level_dir() to obtain a CasBasedDirectory
of an artifact's subdirectory (or subdirectories).
-
775ac472
by James Ennis
at 2019-02-13T09:35:45Z
cli.py: Move artifact ref handling logic to stream
The loading of elements and the handling of artifacts does not belong
in this module. Such logic should be invoked using the Stream API
-
f95d6ee8
by James Ennis
at 2019-02-13T09:35:45Z
cli.py: Remove _classify_artifacts() method
This method has been moved to Stream, where is it used there exclusively.
-
491937d7
by James Ennis
at 2019-02-13T09:35:45Z
cascache.py: Allow CASCache.list_refs() to handle globs
This commit ensures that CASCache.list_refs(), and
ArtifactCache.list_artifacts(), can both handle glob expressions.
-
6ae41474
by James Ennis
at 2019-02-13T09:35:45Z
_stream.py: _classify_artifacts() should be able to handle globs
_classify_artifacts() no longer filters glob expressions by first
obtaining a list of ALL refs locally cached. We now only obtain refs
specified by the glob _expression_.
Furthermore, the Project.element_path is used to start searching for
globbed elements as opposed to the Project.directory.
-
8c6baf23
by James Ennis
at 2019-02-13T10:48:21Z
Merge branch 'jennis/refactor_artifact_log' into 'master'
Refactor artifact log command
See merge request BuildStream/buildstream!1101
-
14db3287
by Jürg Billeter
at 2019-02-13T10:48:45Z
projectconfig.yaml: Consistently include directories in split rules
Most split rules already included the relevant directories themselves in
addition to the directory contents. Add the missing bin, sbin, and
libexec directories.
This is required to fix tests with the following commit that changes
list_relative_paths() to return all directories.
-
c7625cdf
by Jürg Billeter
at 2019-02-13T10:48:45Z
tests/integration/project: Add tests directory to split rule
This is required to fix tests with the following commit that changes
list_relative_paths() to return all directories.
-
925429ea
by Jürg Billeter
at 2019-02-13T10:48:45Z
utils.py: Return all directories in list_relative_paths()
Returning only empty directories leads to inconsistencies when computing
a manifest by combining results from multiple list_relative_paths()
calls as done by the compose plugin.
I.e., the same directory may be empty in one dependency and non-empty in
another dependency. The merged file list will still contain that
directory even though it's no longer empty.
This inconsistency causes problems when calculating differences between
manifests. Returning all directories fixes these inconsistencies.
This is a change in API behavior.
-
353745a4
by Jürg Billeter
at 2019-02-13T10:48:45Z
_casbaseddirectory.py: Return all directories in list_relative_paths()
This matches the change in utils.list_relative_paths().
-
ae0ee361
by Jürg Billeter
at 2019-02-13T12:42:42Z
Merge branch 'juerg/list-all-directories' into 'master'
Return all directories in list_relative_paths()
See merge request BuildStream/buildstream!1139
-
097209ab
by Jürg Billeter
at 2019-02-13T12:44:48Z
utils.py: Change _ensure_real_directory() to not resolve symlinks
Resolving symlinks during staging causes various issues:
* Split rules may not work properly as the resolved paths will differ
depending on whether another artifact with a directory symlink has
been staged in the same root directory or not, e.g., as part of
compose.
* The order of symlinks in file lists is difficult to get right to
guarantee consistent and predictable behavior as paths in a file list
might rely on symlinks in the same file list. See #647 and #817.
* Staging order differences can lead to surprising results. See #390.
* Difficult to properly support absolute symlinks. Absolute symlinks are
currently converted to relative symlinks, however, this doesn't always
work. See #606 and #830.
This will require changes in projects that rely on the current behavior.
However, the changes are expected to be small and are often a sign of
buggy element files. E.g., elements that don't fully obey `bindir` or
`sbindir` variables.
-
ff132ac9
by Jürg Billeter
at 2019-02-13T12:44:48Z
_casbaseddirectory.py: Do not resolve symlinks
This matches the change in utils._process_list().
This also removes the _Resolver class as it is now unused. We may want
to support controlled symlink resolution in the future, in which case
the _Resolver class can be resurrected from this commit.
-
3775f8b0
by Jürg Billeter
at 2019-02-13T12:44:48Z
utils.py: Do not mangle absolute symlinks
Copy symlinks as they are, absolute or relative. We no longer resolve
symlinks when copying files, which makes this safe.
-
664d22a5
by Jürg Billeter
at 2019-02-13T12:44:48Z
Bump artifact version for changes in symlink handling
-
88f1db78
by Jürg Billeter
at 2019-02-13T12:44:48Z
NEWS: Add entry for change in symlink handling