summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Use the normalized name for the element_name variable. As this is usedsstriker-normalize-variable-element-nameSander Striker2020-07-111-1/+1
| | | | | | | | in the build directories as well, it helps with certain build systems that have strict naming requirements in their filesystem layout. * src/buildstream/element.py (Element.__init__): Set element-name to normal_name.
* Merge branch 'dwinship/dont-strip-bst-from-user-supplied-checkout-dir' into ↵bst-marge-bot2020-07-101-2/+2
|\ | | | | | | | | | | | | | | | | 'master' Don't strip '.bst' from user-supplied checkout dir Closes #1361 See merge request BuildStream/buildstream!1992
| * Don't strip '.bst' from user-supplied checkout dirDouglas Winship2020-07-101-2/+2
|/ | | | | | | | Allows user to supply a directory name ending in '.bst' for "bst artifact checkout", without buildstream removing '.bst' from the end. (It's only supposed to remove '.bst' if the user didn't supply a directory name, and buildstream is auto-generating a name based on the target name.)
* Merge branch 'bschubert/mypy-docs' into 'master'bst-marge-bot2020-07-091-11/+21
|\ | | | | | | | | coding_guidelines.rst: Update documentation around type annotation See merge request BuildStream/buildstream!1988
| * coding_guidelines.rst: Update documentation around type annotationbschubert/mypy-docsBenjamin Schubert2020-07-091-11/+21
|/ | | | | | | | After https://lists.apache.org/thread.html/r99119ddf038b3baa63afa3edf82ca28104f02550e6424dc5f14cb360%40%3Cdev.buildstream.apache.org%3E, we now allow mypy in any part of the codebase. - Also update previous documentation about typing public API
* Merge branch 'bschubert/tar-filter-nondev' into 'master'bst-marge-bot2020-07-092-2/+13
|\ | | | | | | | | tar.py: Don't import 'dev' nodes See merge request BuildStream/buildstream!1990
| * tar.py: Don't import 'dev' nodesbschubert/tar-filter-nondevBenjamin Schubert2020-07-082-2/+13
|/ | | | | This filters out all the 'dev' nodes when extracting tar files since they are not supported by any of our backends anyways
* Merge branch 'bschubert/simplify-stream-interactions' into 'master'bst-marge-bot2020-07-068-217/+102
|\ | | | | | | | | simplify stream interactions (Remove Notifications) See merge request BuildStream/buildstream!1985
| * scheduler.py: Remove all usage of notificationsBenjamin Schubert2020-07-063-97/+20
| | | | | | | | Call directly the relevant methods from the stream to the scheduler
| * scheduler.py: Remove notifications from scheduler to streamBenjamin Schubert2020-07-062-27/+7
| | | | | | | | | | This removes all notifications left coming from the scheduler, and replaces them by callbacks
| * _stream.py: Stop using a 'RUNNING' event to know the state of the schedulerBenjamin Schubert2020-07-062-11/+4
| | | | | | | | | | The stream is itself calling the `run` method on the scheduler, we don't need another indirection
| * _stream.py: Stop using a 'TERMINATED' event to know the state of the schedulerBenjamin Schubert2020-07-062-6/+3
| | | | | | | | | | We are calling the scheduler, and it returning correctly already tells us this.
| * _stream.py: Stop using a 'SUSPENDED' event to know the state of the schedulerBenjamin Schubert2020-07-062-7/+4
| | | | | | | | | | We are calling the scheduler, and it returning correctly already tells us this.
| * scheduler.py: Pass all 'retry' operations through the stateBenjamin Schubert2020-07-063-8/+37
| | | | | | | | | | Stop using 'Notifications' for retries, the state is the one handling the callbacks required for every change in status of elements
| * _state.py: Only use a single place of truth for the start timeBenjamin Schubert2020-07-065-19/+19
| | | | | | | | | | This moves all implementations of 'start_time' into a single place for easier handling and removing roundtrips of notifications
| * scheduler.py: Remove task-based notifications and use the stateBenjamin Schubert2020-07-062-26/+5
| | | | | | | | | | The State is the interface between both, there is no need to do multiple round-trips to handle such notifications
| * scheduler.py: Remove 'Message' notification type, use the messengerBenjamin Schubert2020-07-064-22/+9
|/ | | | | The messenger should be the one receiving messages directly, we don't need this indirection
* Merge branch 'bschubert/cleanup' into 'master'bst-marge-bot2020-07-062-3/+2
|\ | | | | | | | | app.py: Remove unnecessary operation in _message() See merge request BuildStream/buildstream!1984
| * sandbox.py: Remove unused importBenjamin Schubert2020-07-061-1/+1
| |
| * app.py: Remove unnecessary operation in _message()Benjamin Schubert2020-07-061-2/+1
|/ | | | | This copies a dictionary before it gets expanded, which is not necessary since the expansion will not keep the dictionary as is
* Merge branch 'juerg/source-push' into 'master'bst-marge-bot2020-07-0633-41/+219
|\ | | | | | | | | Add `bst source push` command See merge request BuildStream/buildstream!1977
| * tests/frontend/remote-caches.py: Split test_source_artifact_cachesjuerg/source-pushJürg Billeter2020-07-061-4/+26
| | | | | | | | | | Use `bst source push` in a new test instead of manually deleting parts of a remote cache.
| * tests/sourcecache/fetch.py: Use `bst source push` to replace hackJürg Billeter2020-07-061-12/+20
| |
| * NEWS: Add note for `bst source push`Jürg Billeter2020-07-061-0/+11
| |
| * Regenerate man pagesJürg Billeter2020-07-0625-24/+59
| |
| * Add `bst source push` commandJürg Billeter2020-07-064-0/+102
| |
| * tests/testutils/artifactshare.py: Fix sourcedirJürg Billeter2020-07-061-1/+1
|/
* Merge branch 'tristan/update-mailing-list' into 'master'bst-marge-bot2020-07-035-11/+10
|\ | | | | | | | | All: Update all references to the mailing list. See merge request BuildStream/buildstream!1980
| * All: Update all references to the mailing list.Tristan van Berkom2020-07-035-11/+10
|/ | | | | | Update any references to the mailing list to now point to: https://lists.apache.org/list.html?dev@buildstream.apache.org
* Merge branch 'juerg/push' into 'master'bst-marge-bot2020-07-022-7/+48
|\ | | | | | | | | _artifactcache.py: Skip push only if server has identical artifact See merge request BuildStream/buildstream!1976
| * tests/frontend/push.py: Add test_push_update_after_rebuildJürg Billeter2020-06-301-0/+40
| | | | | | | | | | This is a regression test to skip push only if server has identical artifact.
| * _artifactcache.py: Skip push only if server has identical artifactJürg Billeter2020-06-301-7/+8
|/ | | | | | | | | | | | The existing artifact on a server may refer to a previous build and the referenced blobs may no longer exist. As we push blobs referenced by the local artifact proto, we can skip pushing the artifact proto only if the artifact proto on the server is identical. It would be more efficient to always push the artifact proto without checking what artifact proto is currently on the server. However, we need the extra information to mark push jobs as skipped. This is clearer to users and also required by some test cases.
* Merge branch 'juerg/cas' into 'master'bst-marge-bot2020-06-302-5/+21
|\ | | | | | | | | bst-artifact-server: Fix error handling for requests forwarded to casd See merge request BuildStream/buildstream!1972
| * casserver.py: Fix error handling for requests forwarded to casdJürg Billeter2020-06-251-5/+20
| |
| * casdprocessmanager.py: Set `_bytestream` to `None` when closing channelJürg Billeter2020-06-251-0/+1
|/
* Merge branch 'tristan/junction-jungle' into 'master'bst-marge-bot2020-06-24463-550/+2719
|\ | | | | | | | | | | | | Explicit control of junction configuration overrides Closes #1326 See merge request BuildStream/buildstream!1901
| * docs: Updating documentation regarding junctions and conflicts.Tristan van Berkom2020-06-242-37/+250
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit: * Redocuments the `junction.py` element almost in it's entirity * Describes the `overrides` feature * Describes how to use `link` elements to derive junction configuration from subprojects. * Adds project.conf documentation for junction `duplicates` * Adds project.conf documentation for junction `internal`
| * tests/format/junctions.py: Adding tests for internal junctionsTristan van Berkom2020-06-2482-0/+356
| |
| * _project.py: Implement internal junctionsTristan van Berkom2020-06-242-13/+77
| | | | | | | | | | | | | | | | | | | | This commit adds support for the `internal` list of the project's `junctions` configuration section. _loader/loadcontext.py is updated with this commit to consider the internal markers and avoid raising errors for collisions with internal junctions, as well as being enhanced to list internal junctions in any conflicting junction error messages.
| * tests/format/junctions.py: Adding tests for duplicate junctionsTristan van Berkom2020-06-24180-7/+761
| |
| * _loader: Add support for duplicate junctionsTristan van Berkom2020-06-243-45/+299
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds some measure of tolerance to duplicate projects by accepting cases where multiple projects are loaded but whitelisted to be loaded as duplicates by the project.conf. This change does the following: * _project.py: Add `junction_is_duplicated()` API and parse `duplicates` The project now maintains a table of junctions which are considered "duplicated" per project, and exposes an API for the loader to query whether a given loader is explicitly listed as a duplicate (allowing multiple "duplicated" instances of that project to coexist in the same pipeline). This new API searches for the passed Loader instance by way of it's project relative search paths specified in the duplicates. Using the `Loader.get_loader()` codepath ensures that any links get resolved and that any overrides along the way will be considered correctly while attempting to match the duplicate. * _loader/loader.py: Few changes here. - Allow Loader.get_loader() to operate in a mode which does not load subprojects. - Add new function Loader.ancestors(), this is a generator which yields every ancestor loader which is capable of addressing the given loader, including ancestors for which their junction definitions to this loader have been overridden. To this end, we now record `_alternative_parents` when searching for overrides. - Now implements __str__() in order to print an identifying string for a loader in error messages * _loader/loadcontext.py: Enhanced to now ask projects whether they are marked as duplicates in order to avoid erroring out on project collisions if those are explicitly marked to not be an error. We now also split out the new function LoadContext.assert_loaders(), which is to be called once at the end of loading the whole pipeline recursively. This reduces the complexity of searching the loaded graph while loading the graph, and also reports more complete errors (all instances of a conflicting project will be reported in the error at once).
| * tests/format/junctions.py: Adding tests for the overrides featureTristan van Berkom2020-06-2399-6/+565
| | | | | | | | | | | | | | | | | | | | | | | | | | * Test various scenarios of overriding junctions, including deep paths as junctions to override, and as junctions to use to override. * Test conflicting junction configurations, ensuring that we report both provenances of where the junctions were declared. * Test circular references in element paths while declaring overrides, for instance when trying to override a subproject using a deeper definition of the same subproject.
| * junctions: Replace coalescing with explicit overridesTristan van Berkom2020-06-235-44/+156
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch removes the functionality of coalescing junction configurations on junction element names, and replaces it with an explicit format which allows junction declarations to override junctions in subprojects with junction declarations from the local project. Changes: * plugins/elements/junction.py: Load the overrides dictionary * exceptions.py: Added new CIRCULAR_REFERENCE to LoadErrorReason. * _loader/loadcontext.py: Add new register_loader() function which is called by the Loader to register all loaders with the context, delegating the task of detecting conflicting junctions to the load context. * _loader/loader.py: When loading a junction, check if there is an override from the parent project and use that instead. Register with the LoadContext, and pass the LoadContext and provenance along when creating a Project Further, we now protect against circular element path references with a new _loader_search_provenances table. * _project.py: Pass new `provenance` member through the constructor and onwards into the child loader.
| * doc/examples/junction-includes: Renamed project to avoid name conflictTristan van Berkom2020-06-191-1/+1
| |
| * tests/frontend: Renaming some projects to avoid new conflictsTristan van Berkom2020-06-192-2/+2
| |
| * tests/format/junctions.py: Major refactorTristan van Berkom2020-06-1995-454/+305
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit refactors the junctions test to use more parameterization and to remove copy_subproject(), using statically committed data as much as possible. This is because copy_subproject() causes data to be shared among tests in such a way that when such data get's modified, it easily causes unintended side effects on adjacent test cases, better to keep this data separate. Overview of changes: * Remove copy_subproject() * Split up test data into case specific directories, sometimes reusing a directory among various related tests * Use @pytest.mark.parameterize() as much as possible for better coverage and more clearly expressed test cases * Adds update_project() to modify a project.conf inline, as is done in some other tests like tests/plugins/loading.py * Removes tests related to junction name coalescing, this feature will be removed later in this branch and other tests related to junction overrides will replace these. * Removes some redundant tests * Removes a comment about how junction name coalescing can cause errors when trying to open a junction but the project.conf is missing. We continue to test missing project.conf files in a variety of scenarios, but the comment will be rendered irrelevant with the removal of junction name coalescing. * Change the git related tests to use tar instead, this serves the same purpose, but tar will remain a core plugin in BuildStream 2.
| * _loader: Fix invalid junction error to include provenanceTristan van Berkom2020-06-192-4/+10
|/ | | | | | | | | | | | When a junction element has dependencies, we were not even specifying which junction element was guilty of having dependencies and only saying that such a thing would be forbidden (wherever it might be in your project). Fix this by using the provenance of the dependency in the junction, specifying exactly where the invalid dependency exists. This required carrying the provenance onto the other Dependency() object.
* Merge branch 'bschubert/cleanups' into 'master'bst-marge-bot2020-06-182-11/+4
|\ | | | | | | | | Small cleanups See merge request BuildStream/buildstream!1966
| * conftest.py: Ensure the `basetemp` is a resolved pathbschubert/cleanupsBenjamin Schubert2020-06-171-1/+1
| | | | | | | | | | Otherwise some of BuildStream's config will fail and it is therefore impossible to just run `pytest tests/`
| * _signals.py: Remove code for python3.5 supportBenjamin Schubert2020-06-171-10/+3
|/