summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* _context.py: don't delete bst1 extract directoryabderrahim/no-delete-extractAbderrahim Kitouni2020-11-051-4/+3
|
* Merge branch 'chandan/py39' into 'master'bst-marge-bot2020-11-044-22/+29
|\ | | | | | | | | Add test environment for Python 3.9 See merge request BuildStream/buildstream!2098
| * NEWS/setup.py: Advertise our support for Python 3.9Chandan Singh2020-11-042-0/+3
| |
| * tox.ini/.gitlab-ci.yml: Add test environment for Python 3.9Chandan Singh2020-11-042-22/+26
|/
* Merge branch 'bschubert/notify-prepare-plan' into 'master'bst-marge-bot2020-11-042-2/+10
|\ | | | | | | | | _stream.py: Make `_enqueue_plan` a timed activity See merge request BuildStream/buildstream!1840
| * _stream.py: Make `_enqueue_plan` a timed activitybschubert/notify-prepare-planBenjamin Schubert2020-11-042-2/+10
|/ | | | | | This enqueue_plan can take a long time, as it triggers a verification of the 'cached' state for sources in some cases, which can take a long time.
* Merge branch 'tristan/override-elements' into 'master'bst-marge-bot2020-11-0437-46/+456
|\ | | | | | | | | Support overrides semantic for elements See merge request BuildStream/buildstream!2094
| * plugins/elements/junction.py: Documenting element overrides.tristan/override-elementsTristan van Berkom2020-11-041-2/+76
| |
| * tests/format/junctions.py: Testing element override scenariosTristan van Berkom2020-11-0434-5/+221
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Test that we can override an element in a subproject with a local element, the local element has a dependency on another element in the subproject through the same junction. * Test that we can override the dependency in the subproject, proving that reverse dependencies in that subproject are built against the overridden element. * Test that we can override a subproject element using a local link to another element in the same subproject. * Test that we can declare an override of a subproject element using a link in that subproject, and it will be effective even if that link is not traversed by the actual dependency chain. * Check that the same element being overridden multiple times in a subproject is overridden by the highest level project which should have the highest priority in the overrides.
| * _loader/loader.py: Support overriding elementsTristan van Berkom2020-11-042-39/+159
|/ | | | | | | | | | | Using the same semantic used to override junctions in subprojects, allow overriding of elements. As discussed in this proposal: https://lists.apache.org/thread.html/r34c8e94f024aae3d5afd260554dac594e82751ca60dea28880f520d5%40%3Cdev.buildstream.apache.org%3E Notably, this also adds the "fully loaded" flag to LoadElement, and separates the logic around loading a single file with redirections for overrides and links in consideration into a single function.
* Merge branch 'chandan/py39-platform' into 'master'bst-marge-bot2020-10-291-6/+12
|\ | | | | | | | | testutils/platform: Refactor to be compatible with Python 3.9 See merge request BuildStream/buildstream!2092
| * testutils/platform: Refactor to be compatible with Python 3.9chandan/py39-platformChandan Singh2020-10-291-6/+12
|/ | | | | | | | | | | Starting from Python 3.9, it seems like the `_replace()` method no longer works on `platform.uname_result` objects, that are returned by `platform.uname()`. This causes some of our tests to fail on Python 3.9. See https://bugs.python.org/issue42163 for upstream issue. Fix it by slightly changing the way we override the values of the `platform.uname()` function, such that it works on both Python 3.9 and 3.8 (and below).
* Merge branch 'dwinship/get-release-and-snapshot-badges-from-docs-website' ↵bst-marge-bot2020-10-291-2/+2
|\ | | | | | | | | | | | | into 'master' Get release and snapshot badge images from docs website See merge request BuildStream/buildstream!2086
| * get release and snapshot badges from docs websitedwinship/get-release-and-snapshot-badges-from-docs-websiteDouglas Winship2020-10-281-2/+2
|/ | | | | | get release badge image and snapshot badge image from: docs.buildstream.build/master/_static/release.svg, and docs.buildstream.build/master/_static/snapshot.svg
* Merge branch 'tristan/loader-fixes' into 'master'bst-marge-bot2020-10-271-4/+8
|\ | | | | | | | | Corner case fixes for the loader code See merge request BuildStream/buildstream!2093
| * _loader/loader.py: Fixing new pylint "no-member" errortristan/loader-fixesTristan van Berkom2020-10-271-1/+1
| | | | | | | | | | These appear to be popping up randomly, as we squash them in our game of whackamole...
| * _loader/loader.py: Fix _load_file() for cross project link element loads.Tristan van Berkom2020-10-271-1/+5
| | | | | | | | | | | | | | When loading a link in _load_file(), we should redirect the entire call to the appropriate loader, the code in place instead was treating the loaded element as if it were loaded locally, and attempting to load it's dependencies redundantly.
| * _loader/loader.py: Avoid double dictionary lookupTristan van Berkom2020-10-271-2/+2
|/ | | | Use try / except KeyError instead.
* Merge branch 'tristan/fix-logging-element-names' into 'master'bst-marge-bot2020-10-2720-107/+315
|\ | | | | | | | | | | | | Restore task element name / element name distinction in UI Closes #1393 See merge request BuildStream/buildstream!2070
| * tests/frontend/logging.py: Test log lines for correct element names/keysTristan van Berkom2020-10-278-4/+174
| | | | | | | | | | | | | | | | | | | | | | | | When printing log lines to the master log, we ensure that log lines are printed with the element name and cache key which are related to the task from which the messages are being issued. When printing log lines to task specific log lines, we prefer to print the element names and cache keys which pertain to the element from which the log line was actually issued. This new tests asserts this behavior.
| * Restore task element name / element name distinction in UITristan van Berkom2020-10-278-40/+78
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This behavior has regressed a while back when introducing the messenger object in 0026e379 from merge request !1500. Main behavior change: - Messages in the master log always appear with the task element's element name and cache key, even if the element or plugin issuing the log line is not the primary task element. - Messages logged in the task specific log, retain the context of the element names and cache keys which are issuing the log lines. Changes include: * _message.py: Added the task element name & key members * _messenger.py: Log the element key as well if it is provided * _widget.py: Prefer the task name & key when logging, we fallback to the element name & key in case messages are being logged outside of any ongoing task (main process/context) * job.py: Unconditionally stamp messages with the task name & key Also removed some unused parameters here, clearing up an XXX comment * plugin.py: Add new `_message_kwargs` instance property, it is the responsibility of the core base class to maintain the base keyword arguments which are to be used as kwargs for Message() instances created on behalf of the issuing plugin. Use this method to construct messages in Plugin.__message() and to pass kwargs along to Messenger.timed_activity(). * element.py: Update the `_message_kwargs` when the cache key is updated * tests/frontend/logging.py: Fix test to expect the cache key in the logline * tests/frontend/artifact_log.py: Fix test to expect the cache key in the logline Fixes #1393
| * _messenger.py: Use kwargs in timed_activity() and simple_task()Tristan van Berkom2020-10-271-20/+19
| | | | | | | | | | This allows more flexible usage of the APIs, to allow passing all of the Message() constructor arguments through kwargs.
| * element.py: Remove Element._get_brief_display_key()Tristan van Berkom2020-10-271-14/+2
| | | | | | | | | | Now that we have _DisplayKey(), no need for this extra accessor, it's not helping anything to have it anymore.
| * _artifactcache.py: Use Element._get_display_key()Tristan van Berkom2020-10-271-9/+5
| | | | | | | | | | Instead of using Element._get_brief_display_key(), no need for that second accessor.
| * _elementsources.py: Fix copy/paste error in API doc commentTristan van Berkom2020-10-271-1/+1
| |
| * Adding _DisplayKey typeTristan van Berkom2020-10-276-22/+39
|/ | | | | | | | | | | | | | | | | | | Instead of passing around untyped tuples for cache keys, lets have a clearly typed object for this. This makes for more readable code, and additionally corrects the data model statement of intent that some cache keys should be displayed as "dim", instead informing the frontend about whether the cache key is "strict" or not, allowing the frontend to decide how to display a strict or non-strict key. This patch does the following: * types.py: Add _DisplayKey * element.py: Return a _DisplayKey from Element._get_display_key() * Other sources: Updated to use the display key object
* Merge branch 'juerg/shell' into 'master'bst-marge-bot2020-10-2734-277/+129
|\ | | | | | | | | Simplify `bst shell` implementation See merge request BuildStream/buildstream!2084
| * NEWS: Add note about the `bst shell --use-buildtree` changejuerg/shellJürg Billeter2020-10-271-0/+7
| |
| * Regenerate man pagesJürg Billeter2020-10-2725-27/+27
| |
| * _frontend/cli.py: Drop support for bst shell --use-buildtree=tryJürg Billeter2020-10-276-107/+29
| | | | | | | | | | `--use-buildtree` is now a boolean option for `bst shell`. If no buildtree is available, an error is raised.
| * _stream.py: Simplify code in shell()Jürg Billeter2020-10-272-102/+38
| | | | | | | | | | | | Use single scheduler run for pulling dependencies and buildtree. Deduplicate cache checks and corresponding warning/error messages with and without pulling enabled.
| * element.py: Add optional scope parameter to _set_required()Jürg Billeter2020-10-271-5/+8
| |
| * Move shell element loading logic from Cli to StreamJürg Billeter2020-10-273-69/+73
| |
| * _stream.py: Use callback for shell promptJürg Billeter2020-10-273-14/+15
| |
| * _frontend/cli.py: Make bst shell --use-buildtree imply --buildJürg Billeter2020-10-271-0/+4
| |
| * _frontend/cli.py: Drop support for bst shell --use-buildtree=askJürg Billeter2020-10-271-27/+2
|/
* Merge branch 'bschubert/simplify-workspace-test' into 'master'bst-marge-bot2020-10-261-105/+25
|\ | | | | | | | | Simplify source workspace tests See merge request BuildStream/buildstream!2085
| * workspace.py: Don't use the same directory for everythingbschubert/simplify-workspace-testBenjamin Schubert2020-10-261-6/+3
| |
| * workspace.py: Simplify invocation of the cli commandBenjamin Schubert2020-10-261-5/+1
| |
| * workspace.py: Remove some abstractions and write the whole test in placeBenjamin Schubert2020-10-261-46/+31
| | | | | | | | | | | | This is to remove some hoops that are currently used, that do not fit well with most of the style in the code. It also removes indirections and make the test easier to understand
| * workspace.py: Remove arguments that are unused during the testBenjamin Schubert2020-10-261-31/+15
| |
| * workspace.py: Simplify test by only allowing opening a single workspaceBenjamin Schubert2020-10-261-52/+10
|/ | | | | This test seems to be copy pasted from our tests around workspaces and doesn't need to be so complicated
* Merge branch 'juerg/scheduler-ticker' into 'master'Jürg Billeter2020-10-261-0/+3
|\ | | | | | | | | scheduler.py: Invoke the ticker callback at the end of run() See merge request BuildStream/buildstream!2088
| * scheduler.py: Invoke the ticker callback at the end of run()juerg/scheduler-tickerJürg Billeter2020-10-261-0/+3
|/ | | | This allows the frontend to render pending messages.
* Merge branch 'tristan/conditional-subsecond-precision' into 'master'Tristan Van Berkom2020-10-265-0/+97
|\ | | | | | | | | Conditionally skip tests which require subsecond precision mtimes See merge request BuildStream/buildstream!2091
| * tests/frontend/track.py: Conditionally skip a testtristan/conditional-subsecond-precisionTristan van Berkom2020-10-251-0/+6
| | | | | | | | | | | | Skip a test which relies on mtimes differing within a short timespan, this will fail if it happens fast enough (which it should) on systems which do not support subsecond precision mtimes.
| * tests/internals/utils_move_atomic.py: Conditionally skip a testTristan van Berkom2020-10-251-0/+7
| | | | | | | | | | Skip the mtime related test if the underlying filesystem does not support subsecond precision mtime.
| * tests/artifactcache/expiry.py: Conditionally skip some testsTristan van Berkom2020-10-251-0/+45
| | | | | | | | | | Skip some of the artifact expiry tests in the case we don't have subsecond mtime precision.
| * tests/internals/storage_vdir_import.py: Conditionally skipTristan van Berkom2020-10-251-0/+7
| | | | | | | | Conditionally skip tests which require subsecond mtime precision.
| * src/buildstream/testing/_utils/site.py: Adding have_subsecond_mtime()Tristan van Berkom2020-10-251-0/+32
|/ | | | | | | A utility for tests to check if subsecond precision mtime is supported at a given filesystem path (it will depend on underlying filesystem, so we cannot have a simple HAVE_SUBSECOND_MTIME variable to check, because we don't know where tests will operate at this stage).