| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Artifact split rules are complicated to reason about. There needs to be
some way of seeing why a 'compose' artifact included a given file.
The log file now contains a long message like this, listing every
artifact, domain and file:
[--:--:--] INFO [initramfs/initramfs.bst]: Composed 2369 files
Integration
- var/cache/ldconfig/aux-cache
gnu-toolchain/binutils.bst runtime
- usr/x86_64-unknown-linux-gnu
- usr/x86_64-unknown-linux-gnu/bin/ar
- usr/x86_64-unknown-linux-gnu/bin/as
- usr/x86_64-unknown-linux-gnu/bin/ld
gnu-toolchain/make.bst (not in any domain)
- usr
- usr/lib
- usr/share
...
Note that a file can be in multiple domains.
Size of the log files is a concern and it may be that in future we
'compress' some of these entries, e.g. if all files in a given
directory come from one artifact then we just need to list the
directory, not every filename.
|
| |
|
|
| |
This is a helper to log messages into the plugin's log file.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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]
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
| |
This introduces junctions as a new kind of elements to allow
dependencies to cross project boundaries.
|
| |
|
|
| |
Loader access will be required for junctions.
|
| |
|
|
| |
With junctions, elements may be loaded from multiple projects.
|