summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* stack.py: Stop creating empty bst directorychandan/fix-assemble-stackChandan Singh2019-04-221-9/+1
| | | | | | | | | | | It seems like this hack was added as a workaround for OSTree's limitations to commit an empty directory, originally in https://gitlab.com/BuildStream/buildstream/commit/91940a6cba193ac0e20c01008335617847be27a5. Since we do not have this limitation anymore, stop creating this empty directory. Fixes #998.
* Merge branch 'bochecha/fix-docs-master' into 'master'bst-marge-bot2019-04-222-2/+2
|\ | | | | | | | | Fix building the docs See merge request BuildStream/buildstream!1303
| * doc/source/format_declaring.rst: Fix the YAML blockMathieu Bridon2019-04-221-1/+1
| | | | | | | | String starting with a "%" character need to be quoted.
| * doc: Fix the build with Sphinx 2.0Mathieu Bridon2019-04-221-1/+1
|/ | | | | | | | | | | | Sphinx 1.7, released in February 2018 moved the sphinx.apidoc module to sphinx.ext.apidoc, with an alias and a deprecation warning in place so users know to port their code. The compatibility alias was removed in Sphinx 2.0, so we need to move to the new module name. Fortunately, since the new module name is more than a year old, this shouldn't break anything for anybody.
* Merge branch 'chandan/pseudo-junction' into 'master'bst-marge-bot2019-04-1817-3/+181
|\ | | | | | | | | Add support for defining target for junction elements See merge request BuildStream/buildstream!1293
| * NEWS: Add entry about junction targetsChandan Singh2019-04-181-0/+3
| |
| * Add tests for specifying targets of junction elementsChandan Singh2019-04-1813-0/+103
| |
| * Add support for defining target for junction elementsChandan Singh2019-04-183-3/+75
|/ | | | | | | | | | | Add support for specifying target of a junction element to be a sub-sub-project as a configuration option. When such a target is defined, the junction element is not allowed to have any sources. This was discussed in the following mailing list thread: https://mail.gnome.org/archives/buildstream-list/2019-April/msg00025.html Since this adds new configuration, also bump `BST_FORMAT_VERSION`.
* Merge branch 'phil/fixup-templated-test-collection' into 'master'bst-marge-bot2019-04-181-1/+23
|\ | | | | | | | | | | | | Ensure templated source tests aren't collected unconditionally Closes #995 See merge request BuildStream/buildstream!1297
| * testing: Ensure templated tests hook aren't collected undesirablyPhil Dawson2019-04-181-1/+23
|/ | | | | | | | Ensure that when specifying either a subset of tests to run, the templated source tests are not automatically collected, regardless of whether or not they are desired. Fixes #995
* Merge branch 'tpollard/955' into 'master'bst-marge-bot2019-04-172-295/+142
|\ | | | | | | | | | | | | Follow-up from "Artifact 'abstraction' class" Closes #955 See merge request BuildStream/buildstream!1271
| * element.py: Discard __artifact/__strict_artifact in update_state()Tom Pollard2019-04-172-10/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | When we determine that current cache keys are to be discarded, we should also discard the associated members for correctness. This should act as a safeguard against accessing Artifact instances that have discarded cache keys. A side effect of this is the querying of element buildtree state from cli methods on elements that don't have a cached artifact would lead to the artifact member methods not being reachable. Ensuring the element is cached before trying to call said accessor methods resolves this.
| * _artifact.py: Move element metadata caching to Artifact ClassTom Pollard2019-04-172-173/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | As the artifact object now stores keys, it allows for the simplification of metadata methods. Transitioning the metadata members to Artifact also means the private accessor methods can be removed from Element which reduces the overhead of syncing private variables across the two classes via parameters. With the key and metadata handling now being internalised within Artifact, a temporary Artifact for the last_successful incremental build is created for correctness. This should help guarantee that an Artifact object is never used to access different artifacts.
| * element.py: Remove redundant fully private __cached_success()Tom Pollard2019-04-171-8/+5
| | | | | | | | | | | | This was being accessed via a local private method that wasn't augmenting the output as such it can be moved to match _cached_failure.
| * element.py: Remove redundant fully private __get_build_result()Tom Pollard2019-04-171-9/+5
| | | | | | | | | | This was being accessed via a local private method that wasn't augmenting the output as such it can be moved.
| * element.py: Instantiate the Artifact objects within update_state()Tom Pollard2019-04-172-109/+83
| | | | | | | | | | | | | | | | | | | | | | The Artifact instance within Element is now initialised when the relevant keys are available, with the weak & strong keys being in the constructor. It also introduces the notion of a strict_artifact, which is used to make a distinction of the Artifact keys and cached state dependant on the context defined strictness. The keys are updated when a relevant key change occurs. As the keys are now internalised within Artifact, the majority of key determinsim and parameterisation in public Artifact method calls are now redundant.
| * element.py: Assert cached in __load_public_data()Tom Pollard2019-04-172-3/+1
| | | | | | | | | | | | This moves the cached assertion to happen before calling the Artifact method, which removes the need to loopback for the same purpose.
| * _artifact.py: Use _get_subdirectory() in non meta* methodsTom Pollard2019-04-171-8/+8
|/ | | | | | Switch to using the private _get_subdirectory() in places where we are interacting directly with a subdirectory of the artifact.
* Merge branch 'phil/rename-plugintestutils' into 'master'bst-marge-bot2019-04-17159-159/+153
|\ | | | | | | | | Rename 'plugintestutils' package to 'testing' See merge request BuildStream/buildstream!1291
| * plugintestutils: Rename 'plugintestutils' package to 'testing'phil/rename-plugintestutilsPhil Dawson2019-04-16159-159/+153
|/ | | | | | | | | - Rename plugintestutils to testing. - Don't run the tests from bst-plugins-template. This imports buildstream.plugintestutils so will have to be disabled to get through CI. This can be re nabled once bst-plugins-template has been patched.
* Merge branch 'phil/fix-empty-external-tests' into 'master'bst-marge-bot2019-04-161-1/+2
|\ | | | | | | | | Fix empty external tests See merge request BuildStream/buildstream!1295
| * tox.ini Allow movement of coverage files to fail for external testsPhil Dawson2019-04-161-1/+2
|/ | | | | | | If the list of external plugin tests is empty, tox -e pyXX-external will fail attempting to move a coverage file which doesn't exist. Allow the offending mv command to fail.
* Merge branch 'tristan/fix-non-strict-push' into 'master'bst-marge-bot2019-04-152-0/+69
|\ | | | | | | | | | | | | Fix non strict push Closes #990 See merge request BuildStream/buildstream!1290
| * tests/frontend/push.py: Test pushing artifacts in non-strict modeTristan Van Berkom2019-04-151-0/+55
| | | | | | | | This is a regression test for issue #990
| * _stream.py: Mark all elements as pulled in Stream.push()Tristan Van Berkom2019-04-151-0/+14
|/ | | | | | | | | Marking all elements as pulled in Stream.push() ensures that cache keys are resolved before pushing elements, otherwise state is left unresolved in non-strict mode while elements are awaiting to download an artifact by it's strict cache key. Fixes #990
* Merge branch 'phil/expose-templated-tests' into 'master'bst-marge-bot2019-04-1574-183/+415
|\ | | | | | | | | Expose templated source tests See merge request BuildStream/buildstream!1261
| * tox.ini: Add tox env as a wrapper for running individual templated testsphil/expose-templated-testsPhil Dawson2019-04-121-0/+20
| |
| * docs: Add generated docs for buildstream.plugintestutilsPhil Dawson2019-04-122-0/+5
| |
| * Make templated source tests available in buildstream.plugintestutilsPhil Dawson2019-04-1243-43/+60
| |
| * plugintestutils._utils: Copy subset of tests.testutils.sitePhil Dawson2019-04-122-1/+47
| | | | | | | | | | | | A subset of the functionality provided by this module is not available from buildstream._site but is necessary for the templated source plugin tests.
| * plugintestutils: Add copy of testutils.junction.pyPhil Dawson2019-04-126-4/+88
| | | | | | | | | | Copy tests.testutils.junction into plugintestutils._utils. This is needed for use by the templated source tests.
| * testutils: move repo.py into buildstream.plugintestutilsPhil Dawson2019-04-1238-167/+227
|/ | | | | | | | This needs to be exposed as part of the plugin author facing API so that plugin authors can define custom repo types which will can be passed to the set of tests which iterate over multiple source types. Part of the work towards #944
* Merge branch 'jjardon/bst-plugins-experimental' into 'master'bst-marge-bot2019-04-121-1/+1
|\ | | | | | | | | .gitlab-ci.yml: master (bst2) should use the new bst-plugins-experimental repo instead bst-external See merge request BuildStream/buildstream!1275
| * .gitlab-ci.yml: bst2 should use the new bst-plugins-experimental repo ↵jjardon/bst-plugins-experimentalJavier Jardón2019-04-121-1/+1
|/ | | | instead bst-external
* Merge branch 'juerg/partial-cas' into 'master'bst-marge-bot2019-04-129-54/+240
|\ | | | | | | | | Do not fetch file blobs for build-only dependencies with remote execution See merge request BuildStream/buildstream!1278
| * cascache.py: Simplify handling of Digest objectsJürg Billeter2019-04-121-17/+7
| | | | | | | | | | Avoid unnecessary copies and use CopyFrom() instead of copying fields one by one where copies are necessary.
| * tests/remoteexecution/partial.py: Add test for partial CASJürg Billeter2019-04-122-0/+52
| |
| * _sandboxremote.py: Fetch only needed directoriesJürg Billeter2019-04-121-3/+21
| |
| * element.py: Set sandbox build directoryJürg Billeter2019-04-121-0/+9
| | | | | | | | | | | | Let the sandbox know whether the buildtree will be required. This allows the remote execution sandbox to skip buildtree download when it's not needed.
| * element.py: Set SandboxRemote.output_files_requiredJürg Billeter2019-04-121-1/+4
| | | | | | | | This enables conditional output file fetching with remote execution.
| * sandbox.py: Add _set_build_directory() methodJürg Billeter2019-04-121-0/+16
| | | | | | | | | | This will enable SandboxRemote to download the file blobs of the build directory only when needed.
| * _sandboxremote.py: Make output file fetching conditionalJürg Billeter2019-04-121-7/+23
| | | | | | | | | | Output files need to be downloaded only if they are required in the local cache or if artifact push remotes need them.
| * _artifactcache.py: Add find_missing_blobs() methodJürg Billeter2019-04-121-0/+27
| |
| * cascache.py: Add remote_missing_blobs() methodJürg Billeter2019-04-121-1/+13
| | | | | | | | Extracted from remote_missing_blobs_for_directory().
| * cascache.py: Do not fetch files in _fetch_tree()Jürg Billeter2019-04-121-5/+0
| | | | | | | | Download them separately as they are not always required.
| * _sandboxremote.py: Fetch output file blobs after pull_tree()Jürg Billeter2019-04-121-1/+9
| | | | | | | | | | This allows skipping file download in pull_tree()/_fetch_tree() and is preparation for conditional output file fetching.
| * cascache.py: Make _required_blobs() publicJürg Billeter2019-04-121-27/+32
| |
| * element.py: Do not pull file contents if not requiredJürg Billeter2019-04-121-0/+5
| |
| * _stream.py: Suport partial CAS for build sessions with remote executionJürg Billeter2019-04-121-0/+7
| |
| * _artifact.py: Use Element._artifact_files_required() in cached()Jürg Billeter2019-04-121-1/+1
| | | | | | | | | | Ensure required artifact files are available for elements that need them even if the context does not require artifact files for all elements.