summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* testing/_utils/site.py: Add BRZ_EMAIL to support Breezy 3.0juerg/fedora-32Jürg Billeter2020-08-121-1/+5
| | | | Fedora 32 has replaced Bazaar with Breezy.
* Merge branch 'juerg/fedora-30' into 'master'bst-marge-bot2020-08-121-5/+0
|\ | | | | | | | | .gitlab-ci.yml: Drop tests-fedora-30 job See merge request BuildStream/buildstream!2022
| * .gitlab-ci.yml: Drop tests-fedora-30 jobjuerg/fedora-30Jürg Billeter2020-08-121-5/+0
|/ | | | | | Fedora 30 is end of life since 2020-05-26. https://fedoraproject.org/wiki/End_of_life
* Merge branch 'tcanabrava/cache-server-test' into 'master'bst-marge-bot2020-08-1116-8/+254
|\ | | | | | | | | | | | | CI For the Cache Server Closes #1362 See merge request BuildStream/buildstream!1997
| * Use a template for docker-variablestcanabrava/cache-server-testTomaz Canabrava2020-08-111-8/+8
| |
| * Create template for remote testsWilliam Salmon2020-08-111-13/+6
| | | | | | | | | | This moves boiler plate for remote tests in to a template to make maintenance easier.
| * Test buildstream with a reference cache serverWilliam Salmon2020-08-113-1/+59
| | | | | | | | | | | | | | | | This test defines a docker compose for a buildstream cache server and uses it. This stage could be altered or duplicated to use other cache servers so we can check our continued compatibility.
| * Add tests for checking the working of a remote cacheWilliam Salmon2020-08-1112-0/+195
| | | | | | | | | | These basic tests are ment to be run with a remote cache and can be used to check bst conpatiblity with a remote cache server.
| * Artifacts configuration for test can also pushTomaz Canabrava2020-08-111-1/+1
|/
* Merge branch 'chandan/fix-artifact-checkout' into 'master'Chandan Singh2020-08-112-8/+20
|\ | | | | | | | | | | | | _frontend/cli.py: Fix `artifact checkout` with no arguments Closes #1367 See merge request BuildStream/buildstream!2017
| * _frontend/cli.py: Fix `artifact checkout` with no argumentsChandan Singh2020-08-112-8/+20
|/ | | | | | | | | | | | | | | When no arguments are passed to `artifact checkout` command, it currently crashes. We actually have a check of this, but we crash before that becasue this method tries to read the value of `target` before we've had time to check for it. That can only be done correctly after the app has been initialized. So, refactor that bit of the method to run after we've checked that we are working with a non-empty target. Also, add a regression test for it. Fixes #1367.
* Merge branch 'tristan/loader-dependency-refactor' into 'master'tristan/loader-dependency-refactorbst-marge-bot2020-08-105-234/+249
|\ | | | | | | | | _loader: Use only one Dependency() class See merge request BuildStream/buildstream!2019
| * _loader/loadelement.pyx: Removed an unused line of codeTristan van Berkom2020-08-101-1/+0
| |
| * _loader/loadelement.pyx: Dependency now implements `provenance` as a propertyTristan van Berkom2020-08-101-3/+12
| | | | | | | | | | | | Since ProvenanceInformation are created on the demand, it's better to just hold on to the originating Node and create the provenance only when needed.
| * _loader: Use only one Dependency() classTristan van Berkom2020-08-105-233/+240
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This moves the Dependency() implementation from the _loader.types module into the _loader.loadelement module, replacing the duplicate Dependency() definition there. Instead of creating _loader.loadelement.Dependency objects on the fly during the load process, we simply fill in the new LoadElement member on the original Dependency objects. This refactor should make the code easier to work with, since any originally loaded state from the YAML is preserved in the intermediate LoadElement data model and does not need to be manually handed over to a separate object. Summary of changes: * _loader/types.pyx: Removed Dependency() implementation from here, and renamed to _loader/types.py * _loader/loadelement.py: Replaced the second Dependency object implementation with the original one from _loader/types.py, adding a new LoadElement member which is resolved during the load process via the new Dependency.set_element() API * _loader/loader.py: Instead of creating a second kind of Dependency object on the fly during the load process, simply resolve the existing dependencies with Dependency.set_element() * setup.py: Fixed up cython build instructions, now that _loader/types.py no longer contains any cython code.
* Merge branch 'tristan/fix-redundant-session-headings' into 'master'bst-marge-bot2020-08-1029-158/+338
|\ | | | | | | | | | | | | Refactor session headings in the frontend Closes #1369 See merge request BuildStream/buildstream!2009
| * NEWS: Document breaking change, keys which can only be specified in project.conftristan/fix-redundant-session-headingsTristan van Berkom2020-08-101-0/+10
| |
| * doc/source/format_project.rst: Documenting keys which must be in project.confTristan van Berkom2020-08-101-3/+21
| | | | | | | | | | | | Clarify the few keys which must absolutely be declared in project.conf if declared at all, these keys cannot be declared in a separate include file.
| * _frontend/widget.py: Refactor the Widget.print_heading() functionTristan van Berkom2020-08-101-34/+87
| | | | | | | | | | | | | | | | | | | | | | | | | | This function now prints information about each loaded project in the session: * Information about each loaded project - Junction path, if any - Provenance of how the project was initially loaded, if any - Shows which projects declare the loaded project as a duplicate, if any - Shows which projects declare the loaded project as internal, if any * Plugins loaded in each project, including how they were loaded * Project option values resolved for each loaded project
| * _pluginfactory: Make list_plugins() report new display informationTristan van Berkom2020-08-106-18/+31
| | | | | | | | | | | | | | | | Now the PluginFactory.list_plugins() API also reports a human readable explanation of where the plugin was loaded from for each plugin. This is internally supported by an extension of the abstract PluginOrigin.get_plugin_paths() APIs.
| * _project.py, _loader/loadcontext.py: Added Project.loaded_projects()Tristan van Berkom2020-08-103-0/+62
| | | | | | | | | | | | | | | | | | This adds a new _ProjectInformation type to types.py which is returned by the new Project.loaded_projects() API, supported by a new internal LoaderContext.loaded_projects() function. This allows the frontend some helpful information to print about the loaded projects in the session heading.
| * _project.py: Only one set of plugin factoriesTristan van Berkom2020-08-104-35/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit makes it mandatory to specify the `plugins` configuration directly in the `project.conf`, and at the same time removes any ambiguity as to which plugins are loaded and how. It thus becomes impossible for the first pass to load the same plugins differently than in the second pass. Additionally, some additional project.conf keys are asserted to be specified in the toplevel project.conf and not included as a matter of policy and consistency. Summary of changes: * _project.py - Only one set of plugin factories, loaded only in the first pass. - Assert the following keys are only specified in project.conf and not included from other files: name, element-path, min-version, plugins - The create_element() and create_source() methods no longer need to take a `first_pass` argument * element.py: Updated to not specify `first_pass` to create_element() or create_source() * _frontend/widget.py: Print the only set of plugins which are loaded, no more ambiguity about first or second pass. * _pluginfactory/pluginoriginjunction.py: Chain load plugins from the single element/source factory, instead of accessing the Project.config member which no longer has the factories.
| * _yaml.pyx: Make shortname a mandatory argument to _yaml.load()Tristan van Berkom2020-08-1017-62/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | This ensures that important calls to this function do give some thought to providing a reasonable shortname, which will be used as a display name in errors. This continues to support `None` as a shortname, which is used in various tests which don't need to provide a reasonable user facing error. The buildstream.testing module now exports a `load_yaml` function which only takes a filename and no shortname.
| * _stream.py: Conditionally call the session startup frontend callback.Tristan van Berkom2020-08-101-12/+16
|/ | | | | | | Avoid redundantly announcing the session heading in the frontend and only selectively announce it once for the main session. Fixes #1369
* Merge branch 'chandan/contrib-runtime-deps' into 'master'bst-marge-bot2020-08-101-0/+10
|\ | | | | | | | | | | | | doc/using_the_testsuite: Link to instructions for runtime dependencies Closes #1115 See merge request BuildStream/buildstream!2016
| * doc/using_the_testsuite: Link to instructions for runtime dependenciesChandan Singh2020-08-101-0/+10
|/ | | | | | | | | Running the test suite requires one to install BuildStream's runtime dependencies as well, out of which BuildBox is the tricky one. We already have instructions on how to do that, so we just need to point to it from the hacking docs. Closes #1115.
* Merge branch 'tristan/cleanup-pickle' into 'master'bst-marge-bot2020-08-102-2/+0
|\ | | | | | | | | element/source: Remove pointless extra variable See merge request BuildStream/buildstream!2020
| * element/source: Remove pointless extra variabletristan/cleanup-pickleTristan van Berkom2020-08-102-2/+0
|/ | | | | These __meta_kind members are documented as relevant for pickling, which was removed a short while ago.
* Merge branch 'juerg/element-sources' into 'master'bst-marge-bot2020-08-0610-284/+447
|\ | | | | | | | | Extract ElementSources class See merge request BuildStream/buildstream!2007
| * Extract ElementSources classjuerg/element-sourcesJürg Billeter2020-08-066-215/+398
| | | | | | | | An ElementSources object represents the combined sources of an element.
| * element.py: Push all sourcesJürg Billeter2020-08-061-4/+5
| | | | | | | | Do not exit the loop if a source is already in the remote source cache.
| * element.py: Drop `__has_all_sources_cached` instance variableJürg Billeter2020-08-061-6/+1
| | | | | | | | | | This is already cached in each `Source` object. As this method is not called frequently, this extra caching layer is not needed.
| * element.py: Drop cache checks from `_tracking_done()`Jürg Billeter2020-08-062-10/+2
| | | | | | | | | | | | This was a workaround for inconsistent error handling in the frontend. As the error handling is now fixed, drop these cache checks after tracking.
| * source.py: Validate cache when it's used, not in `_is_cached()`Jürg Billeter2020-08-062-40/+23
| | | | | | | | | | | | | | `_is_cached()` is indirectly called by the frontend, which is not optimal for handling per-plugin errors. Instead, call `validate_cache()` right before the cache is used: in fetch jobs and when opening a workspace.
| * _frontend/widget.py: Add context to errors in `show_pipeline()`Jürg Billeter2020-08-061-15/+20
| | | | | | | | | | Provide context with the element name if an error is raised when trying to determine element state.
| * _frontend/app.py: Catch exceptions in `_print_summary()`Jürg Billeter2020-08-061-1/+5
|/ | | | | | | | `_print_summary()` is called outside a `try` block in `initialized()` to print a summary at the end of a session. Add a `try` block to properly handle plugin errors from `show_pipeline()`. This provides error handling consistency with `print_heading()`, which is called at the start of a session.
* Merge branch 'bschubert/update-to-pytest-6' into 'master'bst-marge-bot2020-08-056-34/+33
|\ | | | | | | | | | | | | requirements.txt: Update dependencies Closes #1377 See merge request BuildStream/buildstream!2010
| * requirements.txt: Update dependenciesbschubert/update-to-pytest-6Benjamin Schubert2020-08-056-34/+33
|/ | | | | | This now pulls in pytest > 6.0.1, which has a few breaking changes Fix #1377
* Merge branch 'chandan/publish-types' into 'master'bst-marge-bot2020-08-042-1/+8
|\ | | | | | | | | Publish our type annotations See merge request BuildStream/buildstream!2012
| * Publish our type annotationschandan/publish-typesChandan Singh2020-08-042-1/+8
|/ | | | | | | | | | | As defined by PEP 561 (https://www.python.org/dev/peps/pep-0561), add a `py.typed` file to the BuildStream package. This allows any downstream packages (currently plugins, maybe other use cases in future) to run type checkers against BuildStream as well. Although we don't have type hints for the private API surface, downstream packages should only be using public API anyway, so they should mostly be fine.
* Merge branch 'jjardon/doc_fuse' into 'master'bst-marge-bot2020-08-041-15/+4
|\ | | | | | | | | doc/source/main_install.rst: BuildStream doesn't directly depend on fuse / bubblewrap See merge request BuildStream/buildstream!2015
| * doc/source/main_install.rst: BuildStream doesn't directly depend on bubblewrapjjardon/doc_fuseJavier Jardón2020-08-041-14/+4
| |
| * doc/source/main_install.rst: BuildStream doesn't directly depend on fuseJavier Jardón2020-08-041-5/+4
|/
* Merge branch 'chandan/fix-utils-495' into 'master'bst-marge-bot2020-08-041-0/+15
|\ | | | | | | | | | | | | data/userconfig.yaml: Document valid symbols for format strings Closes #510 See merge request BuildStream/buildstream!2013
| * data/userconfig.yaml: Document valid symbols for format stringschandan/fix-utils-495Chandan Singh2020-08-041-0/+15
|/ | | | | | | | Document the valid symbols that can be used as part of the `message-format`. And, in case of `element-format`, redirect to `bst show --help` to avoid duplicating the help text in two places. Fixes #510.
* Merge branch 'dwinship/reintroduce-install-instructions-to-docs' into 'master'bst-marge-bot2020-08-042-0/+341
|\ | | | | | | | | Reintroduce install instructions to docs See merge request BuildStream/buildstream!1999
| * Remove install instructions to ostree and deb pluginsdwinship/reintroduce-install-instructions-to-docsJavier Jardón2020-08-031-49/+5
| | | | | | | | They are not part of core anymore
| * Reintroduce install instructions to docsDouglas Winship2020-08-032-0/+385
|/ | | | | | | | | | This is mostly a copy of the install from source instructions from https://buildstream.build/install.html. Edits have been made to focus more on Buildstream 2. Sections for tarball installation and package installation have been removed, as they cannot currently be used for BuildStream 2. Docker section has been moved to the docker-image repository. Docs have been reduced down to a single page.
* Merge branch 'tristan/increase-timeout-variables-test' into 'master'bst-marge-bot2020-08-031-1/+1
|\ | | | | | | | | tests/format/variables.py: Increase timeout See merge request BuildStream/buildstream!2008
| * tests/format/variables.py: Increase timeoutTristan van Berkom2020-08-031-1/+1
|/ | | | | | | With sometimes very slow runners, this test has been found to timeout more often after the recent refactoring. Double the timeout to avoid erronously failing CI.