| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Committing the results of `make -C requirements`.
|
|
|
|
|
|
|
| |
To play better with distros, we should try to keep our
loose requirements minimal bound.
This should fix #916
|
|\
| |
| |
| |
| | |
README.rst: Add table with distros with packaged buildstream
See merge request BuildStream/buildstream!1143
|
|/
|
|
| |
[ci skip]
|
|\
| |
| |
| |
| | |
contrib/bst-here: Allow users to specify image variant
See merge request BuildStream/buildstream!1153
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Now that the `buildstream/buildstream` image has 9 variants, let's make
it easier to choose the desired tag, using a command-line option.
This is otherwise possible by specifying the full image name `image:tag`
using the `-i` option. But, this will make it easier to specify just the
tag using `-j`.
The following two invocations of `bst-here` are now equivalent:
bst-here -i buildstream/buildstream:dev
bst-here -j dev
|
|/
|
|
|
|
|
|
|
| |
See https://gitlab.com/BuildStream/buildstream-docker-images/issues/26
for detailed discussion around this.
`buildstream/buildstream-fedora` is now considered deprecated. Switch to
`buildstream/buildstream` image. This image also offers more tags that
will provide users more flexibility.
|
|\
| |
| |
| |
| |
| |
| | |
userconfig: rm really-workspace-close-project-inaccessible
Closes #726 and #744
See merge request BuildStream/buildstream!1130
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove the need for the 'really-workspace-close-project-inaccessible'
config option, as well as the option itself.
As agreed on the mailing list [1], all the 'are you sure?' prompts on
workspace reset and close were removed. While that discussion was going
on, this new prompt and option was added. At the 2019 BuildStream
Gathering, it was verbally agreed between myself and Tristan VB that we
would also remove this instance.
It was also agreed that we should have a notice to let the user know
what they'd done, this was already in place if interactive. Moved it to
be unconditional so that there's no difference in non-interactive
behaviour. Made it output to stderr, as it's diagnostic meant for the
user. Made it the last thing echo'd so it's next to the prompt - it's
very relevant to what they type next. Added a test to make sure the text
makes it to stderr in the appropriate case, and not in an inappropriate
one.
This is the last instance of any prompt configuration, so BuildStream
can also forget all of that machinery.
[1] https://mail.gnome.org/archives/buildstream-list/2018-December/msg00111.html
|
|\
| |
| |
| |
| | |
Use sets when checking for existence of an element
See merge request BuildStream/buildstream!1154
|
|/ |
|
|\
| |
| |
| |
| |
| |
| | |
storage.Directory.export_to_tar: default mtime=utils._magic_timestamp
Closes #914
See merge request BuildStream/buildstream!1149
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Change the default value of mtime when doing export_to_tar() from `0` to
`_utils._magic_timestamp`. This avoids problems in other software, which
assume that an mtime of `0` means the file does not exist.
There is more than one example where files with an mtime of zero are
treated as non-existant by other software. e.g. [ninja][1] and [Template
Toolkit][2].
The OSTree project also [express an intention][3] to move from an mtime
of 0 to an mtime of 1:
> For this reason, OSTree acts as though all timestamps are set to
> time_t 0, so that comparisons will be considered up-to-date. Note that
> for a few releases, OSTree used 1 to fix warnings such as GNU Tar
> emitting "implausibly old time stamp" with 0; however, until we have a
> mechanism to transition cleanly to 1, for compatibilty OSTree is
> reverted to use zero again.
From the comments on export_to_tar(), the motivation for having an mtime
of 0 was to have reproducible results, rather than it specifically being
the value 0.
Additionally, the reproducible builds project has a [page on
archives][4]; it mentions the benefits of setting all the files to have
the same mtime, or clamping the mtime. It makes no mention of a
motivation for the mtime to be specifically 0.
Fixes #914
[1]: https://github.com/ninja-build/ninja/issues/1120
[2]: https://github.com/abw/Template2/blob/8d7d37200af436f1ad43628278d3caad257c8e27/lib/Template/Provider.pm#L635
[3]: https://ostree.readthedocs.io/en/latest/manual/repo/
[4]: https://reproducible-builds.org/docs/archives/
|
|\
| |
| |
| |
| | |
Variables: Rework how expansion strings work
See merge request BuildStream/buildstream!1152
|
|/
|
|
|
|
|
|
| |
Rather than constantly using regular expressions and retrieval from YAML
nodes, pre-parse expansion strings into a list representation cached
for reuse, and then expand them as simple string concatenation.
Signed-off-by: Daniel Silverstone <daniel.silverstone@codethink.co.uk>
|
|\
| |
| |
| |
| |
| |
| | |
contrib/bst-graph: Add script to print graph in DOT format
Closes #705
See merge request BuildStream/buildstream!1148
|
|/
|
|
|
|
|
|
|
|
| |
This script leverages the recently added format strings
(`%{build-deps}`, `%{runtime-deps}`) to `bst show` to print a graph in
DOT format. This requires users to have the `graphviz` python package
installed.
Additionally, users can also render the graph using the `--format`
option if they have the `graphviz` command line tool installed.
|
|\
| |
| |
| |
| | |
Do not resolve or mangle symlinks during staging
See merge request BuildStream/buildstream!1140
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
Copy symlinks as they are, absolute or relative. We no longer resolve
symlinks when copying files, which makes this safe.
|
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|\
| |
| |
| |
| | |
Don't keep MetaSource around in Source
See merge request BuildStream/buildstream!1150
|
|/
|
|
|
|
|
| |
We can easily rebiuld MetaSource from any source so there is no
reason to keep them around.
This will slightly improve memory usage.
|
|\
| |
| |
| |
| | |
Update cache keys to use JSON
See merge request BuildStream/buildstream!1151
|
|/
|
|
|
|
|
|
| |
This affects the cache key version (updated to 7) and introduces
a dependency on `ujson` which is BSD licenced as of the version
locked in `requirements.txt`
Signed-off-by: Daniel Silverstone <daniel.silverstone@codethink.co.uk>
|
|\
| |
| |
| |
| | |
Cleanup MetaElement local state
See merge request BuildStream/buildstream!1147
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This fix a problem with the garbage collector not being able to
clean the MetaElements that are loaded.
On small projects this is not a problem, but in bigger projects, this
can save a few hundred of MBs at runtime
The reason behind this is, whenever we have a "stack" element, which
has no stack.yaml configuration, since it doesn't need it, we would
get an exception thrown when initiating the first one, as loading the
yaml file would fail.
This would capture the frame in which this command was executed, which
references meta_elements. Therefore, as long as another exception is not
thrown, the garbage collector would not be able to clean all the
MetaElements.
|
|/ |
|
|\
| |
| |
| |
| |
| |
| | |
Optional creation of buildtrees
Closes #896
See merge request BuildStream/buildstream!1135
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Artifacts can be cached explicitly with an empty `build tree` when
built via the cli main options or user config for all or only
successful build artifacts. Default behaviour is to still create
and cache all expected buildtrees.
element.py: _cache_artifact() Check if context for cache_buildtrees
has been set to always or failure with a corresponding build
result, if not skip attempting to export the build-root. Element
types without a build-root are cached with an empty buildtree
regardless. Update _stage_sources_at() to warn the user that the
buildtree import is empty.
tests/integration: Add test to artifact.py for the optional caching
of buildtree content from bst build. Rename build-tree.py to
shellbuildtrees.py to reflect included test cases, add test for
empty buildtree warning and failure option.
NEWS: Add entry for new option.
|
| |
| |
| |
| |
| |
| | |
not _cached_sucess() could resolve to true if the element wasn't
cached at all. switch to _cached_failure() to ensure condition
reflects expected artifact state
|
|/
|
|
|
|
|
|
|
|
|
|
|
| |
_context.py: Add cache_buildtrees global user context, the default
of which is set to by default to 'always' via the addition of
cache-buildtrees to userconfig.yaml cache group. 'failure' & 'never'
can be given as valid options.
app.py & cli.py: Add --cache-buildtrees as a bst main option, which
when passed with a valid option can override the default or user
defined context for cache_buildtrees.
tests/completions/completions.py: Update for the added flag.
|
|\
| |
| |
| |
| | |
Return all directories in list_relative_paths()
See merge request BuildStream/buildstream!1139
|
| |
| |
| |
| | |
This matches the change in utils.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.
|
| |
| |
| |
| |
| | |
This is required to fix tests with the following commit that changes
list_relative_paths() to return all directories.
|
|/
|
|
|
|
|
|
|
| |
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.
|
|\
| |
| |
| |
| | |
Refactor artifact log command
See merge request BuildStream/buildstream!1101
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
_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.
|
| |
| |
| |
| |
| | |
This commit ensures that CASCache.list_refs(), and
ArtifactCache.list_artifacts(), can both handle glob expressions.
|
| |
| |
| |
| | |
This method has been moved to Stream, where is it used there exclusively.
|
| |
| |
| |
| |
| | |
The loading of elements and the handling of artifacts does not belong
in this module. Such logic should be invoked using the Stream API
|
| |
| |
| |
| |
| |
| |
| | |
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).
|
| | |
|
| |
| |
| |
| |
| |
| | |
* 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
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
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
|