| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
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 section informs BuildStream how to launch interactive shells
for the specific project.
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.
|
|
|
|
|
|
|
|
| |
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 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.
|
|
|
|
| |
Fixes #250
|
|
|
|
|
|
|
|
| |
It is possible that Queue.process_ready() skips jobs without starting a
job. Pull the skipped jobs forward through the queues and process them
instead of prematurely terminating the loop due to lack of active jobs.
Fixes #236
|
|
|
|
|
| |
The working directory of the runner is /builds/BuildStream/buildstream,
not /builds/BuildStream.
|
| |
|
|
|
|
|
| |
This will checkout a branch from the cache, and switch its parent branch
to the url and ref that the source came from
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The os.path.realpath() function is expensive and we call it many times,
to the point that os.path.realpath() calls make up around 40% of the
total time spent in Element.stage_artifact().
The cleanest way to fix this is with a `functools.lru_cache()` wrapper
that caches recently used values. None of the code in question can be
removed (as the tests added in the previous commit will demonstrate).
I tested this by running `bst shell base/base-system.bst true` in
the GNOME modulesets project.
o Without this patch there are 240,019 calls os.path.realpath()
o With this patch there are 10,379 calls to os.path.realpath()
o If we increase the cache size to 128 items, there are 10,359 calls
to os.path.realpath().
o If we reduce the cache size to 32 items, there are 10,426 calls.
o In all cases the number of *unique* calls is 10,327.
This fixes issue #174.
|
| |
|
|
|
|
|
|
|
| |
Reword 'Flags type options' slightly for more clarity.
We use 'option type' to refer to these thingies elsewhere, adjust
'arch' to be the same way.
|
|
|
|
|
| |
This reduces the number of unconditional imports, mainly to speed up
bash completion.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This makes it possible to depend on a project which is in a subdirectory
of a Git repository.
The error message given when the expected project.conf file is not found
has also been improved. Previously the error would look like this:
Error loading pipeline: Could not find file at
/home/sam/.cache/buildstream/build/freedesktop-sdk-junction-rvmn17s2/project.conf
This is giving the path of an internal temporary directory where the foreign
project's source is checked out. The new error gives more information:
Error loading pipeline: Could not find the project.conf file for junction
element at freedesktop-sdk-junction.bst [line 1 column 0]. Expecting a
project at path '.' within git source at freedesktop-sdk-junction.bst [line
4 column 2]
|