summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Updating all test cases for the removal of architecture conditionals and optionsremove-archesTristan Van Berkom2017-11-0337-201/+53
|
* _frontend/widget.py: Removing architecture from the reportsTristan Van Berkom2017-11-031-2/+0
|
* _frontend/main.py: Removing arch related optionsTristan Van Berkom2017-11-031-16/+8
| | | | And adding --integrate/--no-integrate option to `bst checkout`
* _pipeline.py: Removing archesTristan Van Berkom2017-11-031-12/+4
| | | | | Also now the integration option to `bst checkout` is explicit, as we dont have knowledge of arches anymore.
* _loader.py: Removing arch conditionalsTristan Van Berkom2017-11-031-52/+3
|
* project.py: Removing archesTristan Van Berkom2017-11-031-10/+0
|
* context.py: Removing archesTristan Van Berkom2017-11-031-11/+2
|
* plugins/sources/tar.py: Ignore leading ./ in tarball pathsTristan Van Berkom2017-11-031-9/+18
| | | | | | | This makes buildstream behave the same way with tarballs which were encoded with a leading `.` and those encoded without one. This fixes issue #145
* tests/sources/tar.py: Converted tar test to use the CLI and enhancedTristan Van Berkom2017-11-0314-107/+134
| | | | | | Now test to also ensure that base-dir expressions always behave the same way regardless of whether the tarball was created with a leading '.' or not.
* doc/source/pluginindex.rst: Added zip source to the plugins indexTristan Van Berkom2017-11-031-0/+1
|
* Add a new zip sourcezipMathieu Bridon2017-11-039-1/+205
| | | | This is equivalent to the tar source, but for Zip archives.
* tar: Move most of the code to a new base classMathieu Bridon2017-11-032-91/+114
| | | | | | | | | | | The new DownloadableFileSource will be used as a base for all sources which just download a file to use as source. The existing TarSource just keeps the code responsible to manage a Tar archive. This will help implemeting other types of single file downloaded sources, for example Zip archives.
* tests: Reuse utils.sha256sumMathieu Bridon2017-11-031-8/+2
| | | | | The utility function was added in 08da7cc7, but it never was removed from here.
* tests/testutils/repo/tar.py: Fixed for changed tar behaviorTristan Van Berkom2017-11-021-2/+2
| | | | | | This test was encoding tarballs with '.', so the change of ignoring '.' breaks this - now we just make the tar test scaffolding use an empty string for the base-dir.
* plugins/sources/tar.py: Ignore possible leading '.' directory.Tristan Van Berkom2017-11-021-0/+6
| | | | | | | | | | | | | | | To extract the full tarball, one should set base-dir to an empty string. By ignoring the leading '.' in any archive, we make the 'base-dir' API more predictable and reliable - the default behavior of '*' is to pickup the first directory in the tarball (usually source code tarballs are encoded with one leading directory) - in the off chance that a source tarball has a leading '.' in it; that would cause the 'base-dir' default '*' glob to extract the whole thing. It seems undesirable to behave differently depending on whether a tarball was encoded with, or without a leading '.'
* Clean old Platform.get_platform referencesTristan Maat2017-11-016-6/+6
|
* Make the platform object a singletonTristan Maat2017-11-012-4/+11
|
* _artifactcache/ostreecache.py: Allow explicit disabling of pushesuser-namespace-fallbackTristan Van Berkom2017-10-311-1/+14
| | | | | | This is used by the platform to disable pushing explicitly in the case that we're falling back to not using user namespaces, in which case we dont entirely trust the artifacts we create.
* sandbox/_sandboxbwrap.py: Dont use user namespaces if they are unavailableTristan Van Berkom2017-10-311-1/+6
| | | | Part of the fix for #92
* _platform/linux.py: Add preflight check to detect user namespacesTristan Van Berkom2017-10-311-1/+40
| | | | | | | | | | | | Here we check if `bwrap --ro-bind / / --unshare-user --uid 0 --gid 0 whoami` returns successfully and prints 'root', to check if we are indeed capable of creating user namespaces on the host. If we are unable, then we save that state in the platform allowing buildstream to behave differently, and print an informative startup warning about this. This fixes issue #92
* _scheduler/job.py: Ensure messages are logged to the correct log fileTristan Van Berkom2017-10-311-1/+4
| | | | | Dont use the plugin which the message originates from, use the plugin associated with the child task.
* doc: Explain how to configure project optionsMathieu Bridon2017-10-311-0/+5
|
* _frontend/main.py: Hold on to unconditional startup messagesTristan Van Berkom2017-10-311-0/+8
| | | | | | | | | | | We avoid printing regular start/success/status messages etc at startup time in advance of the heading, this would introduce a lot of noise while interrogating source plugins for consistency state. This patch holds on to important errors and warnings which might be raised by core components at startup time, and prints them immediately after printing the heading.
* Catch attempts to compose a listSam Thursfield2017-10-314-3/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Attempting to compose a list property would result in an unhandled exception: AttributeError: 'CommentedSeq' object has no attribute 'get' We now at least detect the situation and produce an exception that the frontend will report neatly: Error loading pipeline: element.bst [line 11 column 4]: Only values of type 'dict' can be composed. I was getting this error from an attempt to conditionally extend the sources list: sources: (?): arch == "x86_64": - url: http://example.com/x86_64 The correct way to do this is to move the conditional into the parent dict, e.g.: (?): arch == "x86_64": sources: - url: https://example.com/x86_64 It would be nice if the error message could hint at how the user can do what they want, but it doesn't seem possible in this case.
* context.py: Fixed project override validation to allow new 'strict' keywordTristan Van Berkom2017-10-301-1/+1
|
* utils.list_relative_paths: Clarify empty dirs noteAngelos Evripiotis2017-10-301-1/+2
|
* utils.list_relative_paths: avoid os.path.relpathAngelos Evripiotis2017-10-301-6/+9
| | | | | | | | | | Profiling suggested that the cumulative time spent in os.path.relpath() was the dominant cost of utils.list_relative_paths(). Try to call this only once per directory walked. In Python 3.5, we can optimise further by using os.scandir() and maintaining relative paths as we go.
* _pipeline.py: No except_ argument in source_bundleTristan Van Berkom2017-10-302-4/+2
| | | | | | | This is deadcode, except_ is already calculated before we get here. Updated some internal comments to reflect this, and updated the frontend to not pass the useless except_ parameter.
* _frontend/widget.py: Prettier formatting of messages with no associated pluginTristan Van Berkom2017-10-301-9/+11
| | | | | These come exclusively from the frontend or _pipeline.py code, we just avoid printing an element name or cache key for these messages.
* _pipeline.py: The toplevel message() function no longer takes an element.Tristan Van Berkom2017-10-301-35/+32
| | | | | | | | | | | | | | | | | | | Instead, use None as the unique ID. This will help with messaging when we allow invoking multiple targets and the element would have been ambiguous - this also consequently fixes issue #137. The reason for the hangs with #137 is because: o When you --except a base element, reverse dependencies cannot calculate a cache key o When you track, cache keys are intentionally reset at startup time, because we know they are going to change o At the end of tracking, we make one attempt to print the toplevel cache key This operation is insanely expensive, because we never cache a cache key because it logically cannot ever be resolved in this situation. This fix is basically a workaround to the above.
* tests/frontend/track.py: Added tests for recursive tracking and --exceptTristan Van Berkom2017-10-301-10/+103
|
* tests/testutils/runcli.py: get_element_state() now uses --downloadableTristan Van Berkom2017-10-291-0/+1
| | | | | | | | This wont take any additional time because if there is a remote artifact share configured in the pytest suite, it can only be a locally created one - this makes the push/pull tests work after recently making downloading of remote refs optional for the sake of issue #140.
* _frontend/main.py: Fetch remote refs in a few placesTristan Van Berkom2017-10-291-6/+9
| | | | | | | | | | | | | | o bst build o bst push o bst pull o bst show --downloadable This adds a `--downloadable` option to `bst show`, if this is specified then buildstream will spend some time trying to download the remote artifact share's refs and refresh the local downloadable state. This fixes #140
* _pipeline.py: Make fetching of remote refs optionalTristan Van Berkom2017-10-291-1/+3
| | | | Default is not to fetch them, we only need them in a few cases.
* Updated documentation about strict mode user configurationTristan Van Berkom2017-10-272-0/+50
|
* _artifactcache: Adapt to new Element api _get_strict()Tristan Van Berkom2017-10-272-4/+4
|
* element.py: Adapt to new Context api _get_strict()Tristan Van Berkom2017-10-271-3/+16
|
* context.py: Moving strict mode configuration to be project specificTristan Van Berkom2017-10-272-27/+22
|
* Issue #107: Stop attaching the child watcher multiple timesTristan Maat2017-10-262-1/+3
|
* Update documentation to refer to new home of dpkg and x86image elementsjonathan/external-pluginsJonathan Maw2017-10-262-3/+5
|
* Remove dpkg-build test from integration-testsJonathan Maw2017-10-2618-237/+0
| | | | It has been moved to an external repository.
* Remove dpkg and x86image elementsJonathan Maw2017-10-266-805/+0
|
* _pipeline.py: Improve error message when --except fails.Tristan Van Berkom2017-10-261-1/+1
| | | | This is an interim step for issue #131.
* test/format/projectoverrides.py: Test project wide element type overrides128-status-ticker-fails-to-update-periodically-on-some-buildsTristan Van Berkom2017-10-253-0/+38
| | | | | | First case simply asserts that prepending to configure-commands from the project.conf works as intended, ensuring we dont regress issue #127
* project.py: Fetch element type overrides before assertionsTristan Van Berkom2017-10-251-3/+5
| | | | | | | | | | | The element overrides are intended for later recomposition onto the element type specific yaml files, so it is incorrect to assert that array composition is complete at this stage. Instead remove the element overrides and store those seperately before making our final yaml assertions. This fixes issue #127
* _pipeline.py: Give the correct artifact pull URL in remote tickerSam Thursfield2017-10-251-1/+1
| | | | | | | | | | I was seeing messages like this: Fetching artifact list from None However, the artifact cache did have the correct pull URL set -- the issue was that I had overridden it my own config, and the string we sent to the ticker didn't take that override into account.
* Issue #124: Add test for staging to element build directory124-test-that-an-error-is-raised-when-staging-to-the-elements-build-directoryTristan Maat2017-10-234-0/+35
|
* _options/optionpool.py: Be strict with evaluation of undefined variables.Tristan Van Berkom2017-10-231-3/+7
| | | | And also ensure that expression errors are reported with provenance.
* tests/format: Test proper failure of reference to undefined optionsTristan Van Berkom2017-10-233-0/+29
| | | | | When using an undefined option in a conditional expression, buildstream should error out and print a good message about it.
* _frontend/main.py: Consistent exit code when exceptions occur.Tristan Van Berkom2017-10-231-5/+5
|