| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
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.
|
| |\
| |
| |
| |
| |
| |
| |
| |
| | |
'master'
Don't strip '.bst' from user-supplied checkout dir
Closes #1361
See merge request BuildStream/buildstream!1992
|
| |/
|
|
|
|
|
|
| |
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.)
|
| |\
| |
| |
| |
| | |
coding_guidelines.rst: Update documentation around type annotation
See merge request BuildStream/buildstream!1988
|
| |/
|
|
|
|
|
|
| |
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
|
| |\
| |
| |
| |
| | |
tar.py: Don't import 'dev' nodes
See merge request BuildStream/buildstream!1990
|
| |/
|
|
|
| |
This filters out all the 'dev' nodes when extracting tar files since
they are not supported by any of our backends anyways
|
| |\
| |
| |
| |
| | |
simplify stream interactions (Remove Notifications)
See merge request BuildStream/buildstream!1985
|
| | |
| |
| |
| | |
Call directly the relevant methods from the stream to the scheduler
|
| | |
| |
| |
| |
| | |
This removes all notifications left coming from the scheduler, and
replaces them by callbacks
|
| | |
| |
| |
| |
| | |
The stream is itself calling the `run` method on the scheduler, we don't
need another indirection
|
| | |
| |
| |
| |
| | |
We are calling the scheduler, and it returning correctly already tells
us this.
|
| | |
| |
| |
| |
| | |
We are calling the scheduler, and it returning correctly already tells
us this.
|
| | |
| |
| |
| |
| | |
Stop using 'Notifications' for retries, the state is the one handling
the callbacks required for every change in status of elements
|
| | |
| |
| |
| |
| | |
This moves all implementations of 'start_time' into a single place
for easier handling and removing roundtrips of notifications
|
| | |
| |
| |
| |
| | |
The State is the interface between both, there is no need to do multiple
round-trips to handle such notifications
|
| |/
|
|
|
| |
The messenger should be the one receiving messages directly, we don't
need this indirection
|
| |\
| |
| |
| |
| | |
app.py: Remove unnecessary operation in _message()
See merge request BuildStream/buildstream!1984
|
| | | |
|
| |/
|
|
|
| |
This copies a dictionary before it gets expanded, which is not necessary
since the expansion will not keep the dictionary as is
|
| |\
| |
| |
| |
| | |
Add `bst source push` command
See merge request BuildStream/buildstream!1977
|
| | |
| |
| |
| |
| | |
Use `bst source push` in a new test instead of manually deleting parts
of a remote cache.
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| |/ |
|
| |\
| |
| |
| |
| | |
All: Update all references to the mailing list.
See merge request BuildStream/buildstream!1980
|
| |/
|
|
|
|
| |
Update any references to the mailing list to now point to:
https://lists.apache.org/list.html?dev@buildstream.apache.org
|
| |\
| |
| |
| |
| | |
_artifactcache.py: Skip push only if server has identical artifact
See merge request BuildStream/buildstream!1976
|
| | |
| |
| |
| |
| | |
This is a regression test to skip push only if server has identical
artifact.
|
| |/
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |\
| |
| |
| |
| | |
bst-artifact-server: Fix error handling for requests forwarded to casd
See merge request BuildStream/buildstream!1972
|
| | | |
|
| |/ |
|
| |\
| |
| |
| |
| |
| |
| | |
Explicit control of junction configuration overrides
Closes #1326
See merge request BuildStream/buildstream!1901
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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`
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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).
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* 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.
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
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.
|
| |/
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |\
| |
| |
| |
| | |
Small cleanups
See merge request BuildStream/buildstream!1966
|
| | |
| |
| |
| |
| | |
Otherwise some of BuildStream's config will fail and it is therefore
impossible to just run `pytest tests/`
|
| |/ |
|