| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
These tests are too long to understand at a glance so a summary is
needed of each.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds two separate checks to avoid pushing artifacts unnecessarily.
First, in the OSTreeCache.push() method we now first obtain the list of
remotes that contain the refs that we are about to push. We then avoid
pushing to any remote that already contains that ref.
Note that the internal ref map is read once on process startup, so
if multiple `bst` processes are pushing to a cache they might still both
push the same artifact. There is an existing issue for this:
https://gitlab.com/BuildStream/buildstream/issues/179
Secondly the Element._skip_push() method now checks if all remote
caches configured for pushing already have a given artifact, and will
skip the push job altogether if they do. The first check would already
mean that no pushes would actually happen, but without the second check
the user would still see Push jobs being created for every artifact
which would be quite misleading.
|
|
|
|
|
|
|
|
|
|
| |
This commit adds a couple of simple classes in order to reduce the
number of different dictionaries tracking the state of the remotes
within the OSTreeCache object.
It also extends the internal ref map to remember all the remotes that
store a given ref, not just the highest priority ref, and modifies the
remote_contains_key() method to expose that data.
|
| |
|
|
|
|
|
|
| |
This avoids unnecessary downloads when tracking `tar` and `zip` sources.
Fixes #62
|
|
|
|
|
| |
We don't have `Dockerfile` and `Dockerfile-build.sh` anymore in this
repository so remove them from `MANIFEST.in`.
|
| |
|
|
|
|
|
|
|
|
|
| |
Using shlex messes with the argv we want to pass to a shell, this
was not working for the newly added test which passes "${var}" strings
as arguments to the shell.
Also, removed a redundant line to explicitly build something
in the 'no_shell' test; that is taken care of by the helper.
|
|
|
|
|
|
|
|
| |
properly
When testing a recent patch, I had missed a return of the exit code
in `bst shell` resulting in the CLI exiting with `None`; this patch
makes the fixture more helpful, where previously it just printed `None`
|
| |
|
|
|
|
|
|
|
| |
Use the toplevel project configuration to decide:
o What command to run for an interactive shell
o Which environment variables to inherit from host environment
when not running an isolated shell
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This new section informs BuildStream how to launch interactive shells
for the specific project.
These new options are part of the effort to make applications work
better inside a `bst shell` environment, issue #223
Initial options include:
o Default shell command to run for an interactive shell, this is
used for interactive debugging sessions, and also if no command
was specified in `bst shell`
o List of environment variables to inherit from user environment,
this is useful to propagate some host stuff into the environment
for debugging; and only considered when it is not an "isolated"
shell.
These changes also bump the BST_FORMAT_VERSION
|
|
|
|
|
|
|
|
| |
Element._shell()
And use this place to format a custom prompt for PS1, here
we have click and we use the ANSI colors in PS1 only if colors are
enabled.
|
| |
|
|
|
|
|
|
|
| |
This ensures subprocesses are cleaned up when the bwrap parent dies.
This is available since bubblewrap 0.1.8. We skip the option if the host
bwrap does not support it.
|
|
|
|
| |
Boolean positional arguments can be confusing.
|
|
|
|
| |
Isolate sandbox processes from System V IPC.
|
|
|
|
|
| |
Set hostname to buildstream in build sandbox to reduce host
contamination.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This changes a few things:
o How the shell environment and sandbox modes are setup is
not decided by whether a `--build` sandbox was staged or not
o In interactive build debugging mode, an isolated build
sandbox is used
o The bst shell command now has the option to control it
o All invocations of bst shell now use a read-only rootfs,
avoiding FUSE layer and file descriptor limits (this can
be made optional later if needed)
This is a part of issue #223
|
|
|
|
|
|
| |
This allows D-Bus access.
Fixes #227
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This interacts badly with our builds, usually if the check does fire
it's at the point that we are trying to commit a completed build (which
may have taken a long time to complete) into the cache. Even though
there might be enough space available to store the build, the error
causes BuildStream to consider it "failed" and forces the user to start
again.
This aims to fix https://gitlab.com/BuildStream/buildstream/issues/216
although there is some evidence that it does not completely do so.
BuildStream currently has no minimum disk space check, and no way
to automatically clean up the cache. There is an open issue for this:
https://gitlab.com/BuildStream/buildstream/issues/135
|
|
|
|
|
|
| |
This is not a part of the documentation on how external plugins
are loaded and referenced; lets put it in the main general section
instead.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We have been using the Freedesktop SDK binaries to provide a base
system to run the integration tests. This works OK but it weighs in
at 985MB of content, and there is no simple way to customize it so
that we only download the bits we actually need.
This commit changes the tests to use a custom sysroot based on the
Alpine Linux distribution. The sysroot is 155MB unpacked, and packs down
to a 27MB .tar.xz.
This speeds up the integration tests significantly as we greatly reduce
the amount of network traffic required and the amount of data that gets
copied around when creating the staging area.
|
|
|
|
|
|
|
| |
This means that the integration test suite no longer requires a C++
compiler, and in practice this can allow us to avoid depending on the
GNU C/C++ compilers altogether and instead use the vastly smaller Tiny C
Compiler.
|
|
|
|
|
|
|
|
|
|
|
| |
The 'step7' tutorial was fine, but it requires a C++ compiler to build.
I have replaced it with a simpler testcase which is based on the
existing amhello testcase.
This means that the integration test suite no longer requires a C++
compiler, and in practice this can allow us to avoid depending on the
GNU C/C++ compilers altogether and instead use the vastly smaller Tiny C
Compiler.
|
|
|
|
|
| |
This attempts to document and specify our current sandboxing
functionality.
|
|
|
|
|
|
|
|
|
|
| |
At present, in case that `bst workspace open` for reasons such as
sources not being tracked or if tracking fails, BuildStream will leave
behind an empty directort corresponding to the workspace. Restructure
code so that workspace directory is only created after other checks
have passed.
Fixes #200.
|
|
|
|
|
|
|
|
| |
It previously neglected to describe how sources were composed, and we've
changed how sources are composed, recently.
In addition, it was slightly confusing to have the project conf be the
title of two different stages of composition.
|
| |
|
|
|
|
|
| |
Equivalent to the 'elements' field, but slightly different because
sources don't have accompanying yaml.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This can be set as broad as "No submodule in this element should be
checked out" and as narrow as "only this submodule should be checked
out"
Note that this will change the cache-keys of every element that uses a
git source. I could have structured the code to prevent the cache key
changing, but that adds extra complexity in the long-term.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
As shown in the snippet below, the `bst` binary is installed at
`/usr/local/bin/bst` in the current Docker image
`buildstream/buildstream-fedora`,
```
$ docker run --rm buildstream/buildstream-fedora type -a bst
bst is /usr/local/bin/bst
```
|
|
|
|
|
|
|
|
| |
Now we infer that a build shell is desired if `bst shell --build`
is specified, before there was no real build shell (only staged
sources in the build style shell).
Fixes issue #232
|
|
|
|
| |
This preserves the quoting style for string values in round trips.
|
|
|
|
|
|
|
|
|
|
| |
The ruamel parser interprets values such as 1_2_3 as numbers, ignoring
the underscores. However, for `track` we need the value as a verbatim
string. This change configures ruamel to parse all values as strings,
leaving potential conversions to node_get() with the `expected_type`
parameter.
This fixes #166 and adds tests
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes an AttributeError triggered if we try to import a plugin from
a package which is installed but does not contain that plugin.
Before:
[--:--:--] START Resolving pipeline
Traceback (most recent call last):
...
AttributeError: 'NoneType' object has no attribute 'dist'
After:
[--:--:--] START Resolving pipeline
[00:00:00] FAILURE Resolving pipeline
Error loading pipeline: Pip package buildstream-external does not contain a plugin named 'nonexistant-plugin'
|
|
|
|
|
|
|
| |
Do not make any assumptions about the working directory as that varies
across repositories.
Fixes #251
|
|
|
|
|
|
|
| |
Report error when --track-except or --track-save is specified without
--track or --track-all.
Fixes #181
|
|
|
|
| |
Fixes #182
|
| |
|
|
|
|
|
| |
All source plugins respond to the 'directory' key, so add the doc for it
to those that didn't have it.
|