summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* testutils/site.py: Support parsing more exotic git versionschandan/fix-git-version-macChandan Singh2019-01-291-1/+1
| | | | | | | | | | | | | | | | | | | | | | We use output of `git --version` to determine if we can run some tests that rely on features from newer git versions. Usually, we expect the output to be like: git version 2.17.2 On some platforms, like MacOS, there could be a suffix after the version string, so that it looks something like: git version 2.17.2 (Apple Git-113) This causes things to fail like so: ValueError: invalid literal for int() with base 10: '2 (Apple Git-113)\n' Fix logic around `HAVE_OLD_GIT` such that we split the output of `git --version` without limit on how many times we split. Previously we used to split only twice so the suffixes like `(Apple Git-113)` are not part of the parsed version.
* Merge branch 'aevri/are_you_sure' into 'master'Angelos Evripiotis2019-01-294-46/+5
|\ | | | | | | | | BREAK:remove unconditional 'are you sure?' prompts See merge request BuildStream/buildstream!1061
| * BREAK:remove unconditional 'are you sure?' promptsAngelos Evripiotis2019-01-294-46/+5
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a breaking change, as it affects behaviour that people might be relying on. An entry has been added to NEWS. As proposed on the mailing list, this change removes the unconditional prompts on: o: bst workspace reset o: bst workspace close --remove-dir If interactive, these commands would always interrupt you with a prompt like this: This will remove all your changes, are you sure? This seems like it may just save someone's work some time. It may also condition folks to hit 'y' quickly without thinking. This change also makes the non-interactive behaviour consistent with the interactive behaviour in the default case. There is also the case of the prompt configured by 'really-workspace-close-project-inaccessible', which may be tackled in later work. This change also removes the new config options to suppress those prompts, and their associated news entry. The relevant bit of the mailing list conversation is here: https://mail.gnome.org/archives/buildstream-list/2018-December/msg00106.html The issue to make interactive and non-interactive behaviour consistent is here: https://gitlab.com/BuildStream/buildstream/issues/744
* Merge branch 'valentindavid/make_cache_dir' into 'master'Jürg Billeter2019-01-291-0/+1
|\ | | | | | | | | | | | | Make sure testing cache directory exists Closes #873 See merge request BuildStream/buildstream!1092
| * Make sure testing cache directory existsValentin David2019-01-291-0/+1
|/ | | | Fixes #873
* Merge branch 'valentindavid/wrong_type_in_status_code' into 'master'Jürg Billeter2019-01-291-3/+3
|\ | | | | | | | | | | | | Fix type of error codes in CAS server Closes #882 See merge request BuildStream/buildstream!1099
| * Fix type of error codes in CAS serverValentin David2019-01-291-3/+3
|/ | | | Fixes #882.
* Merge branch 'valentindavid/crash_in_scheduler_857' into 'master'Jürg Billeter2019-01-281-1/+1
|\ | | | | | | | | | | | | Fix crash when spawned job completes very fast Closes #857 See merge request BuildStream/buildstream!1095
| * Fix crash when spawned job completes very fastvalentindavid/crash_in_scheduler_857Valentin David2019-01-281-1/+1
|/ | | | | | | | | | | | | | | | Job can complete before we return from `Job.span()` to `Scheduler._spawn_job()`, so that `_active_jobs` would not yet contain the job. This would print a stack on the console and try to run a second time the job which can have unexpected effects. In order to reproduce the issue, in `buildstream/_scheduler/jobs/job.py`, in `Job.spawn`, add a call to `time.sleep()` right before call to `asyncio.get_child_watcher()`. This fixes issue #857.
* Merge branch 'abderrahim/protobuf-version' into 'master'Javier Jardón2019-01-281-2/+2
|\ | | | | | | | | | | | | requirements/requirements.in: update minimum versions Closes #884 See merge request BuildStream/buildstream!1114
| * requirements/requirements.in: require Click >= 7.0abderrahim/protobuf-versionAbderrahim Kitouni2019-01-281-1/+1
| | | | | | | | This is needed since 629a6e524, and was lost in the conversion to requirements.in
| * requirements/requirements.in: require protobuf >= 3.6Abderrahim Kitouni2019-01-281-1/+1
|/ | | | This is needed since 0f2bc3754
* Merge branch 'tpollard/829' into 'master'Tom Pollard2019-01-283-30/+94
|\ | | | | | | | | | | | | Download buildtrees on demand for bst shell --use-buildtree Closes #829 See merge request BuildStream/buildstream!1050
| * Download buildtrees on demand for bst shell --use-buildtreetpollard/829Tom Pollard2019-01-283-29/+90
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Provide bst shell --use-buildtree the ability to attempt to acquire missing buildtrees, given respective option, user pull-buildtree context and remote availability. _frontend/cli.py: Refactor logic for determining --use-buildtree option with given opportunity to attempt pulling a non-local buildtree. Element loaded with artifact_config to allow remote querying. _stream.py: With given user option and element state, construct PullQueue to fetch remote buildtree. Continue or Error without buildtree if cannot be attained. tests/integration/build-tree.py: Update to support new usecases
| * _stream.py: Add use_artifact_config opt arg for load_selection()Tom Pollard2019-01-281-2/+5
|/ | | | | use_artifact_config added as an optional default arg, allowing for loading of given elements artifact remote config.
* Merge branch 'aevri/bst_track_guidance' into 'master'Angelos Evripiotis2019-01-2813-18/+18
|\ | | | | | | | | Fixup refs to 'bst track' and 'bst fetch' See merge request BuildStream/buildstream!1086
| * Fixup refs to 'bst fetch'Angelos Evripiotis2019-01-283-4/+4
| | | | | | | | | | Now that 'bst fetch' is obsolete, change guidance to refer to the replacement 'bst source fetch' instead.
| * Fixup refs to 'bst track'Angelos Evripiotis2019-01-2812-13/+13
| | | | | | | | | | Now that 'bst track' is obsolete, change guidance to refer to the replacement 'bst source track' instead.
| * news: fix 'osbolete' spellingAngelos Evripiotis2019-01-281-1/+1
|/
* Merge branch 'chandan/toxic-man' into 'master'Tristan Van Berkom2019-01-2629-145/+122
|\ | | | | | | | | | | | | Generate man pages using tox & update them Closes #880 and #881 See merge request BuildStream/buildstream!1107
| * setup.py: Do not error out when man directory is empty/missingchandan/toxic-manChandan Singh2019-01-251-2/+6
| | | | | | | | | | | | | | | | | | | | If the `man` directory is empty, then it won't be copied in the source distribution, and `list_man_pages()` will throw an exception when trying to list files in a non-existent directory. This prevents us from installing the BuildStream package when the man pages are not there. The most common use-case for this is when we want to re-generate the man pages but want to install the package before re-generating them.
| * setup.py, CONTRIBUTING.rst: Recommend using tox to generate man pagesChandan Singh2019-01-252-10/+4
| | | | | | | | | | | | Simplify our docs, by requesting users to run `tox -e man` to update man pages, instead of manually installing `click-man` and running the command manually.
| * man: Refresh man pagesChandan Singh2019-01-2526-133/+102
| | | | | | | | | | | | | | | | | | | | Notable changes: * New `source` and `artifact` command groups * Man pages corresponding to obsolete commands, that were marked as hidden in Click, have now been removed. Fixes #881.
| * tox.ini: Add environment to update man pagesChandan Singh2019-01-251-0/+10
|/ | | | | | Previously, one had to manually install `click-man` package, and remember to run the correct command. Now, we can simply run `tox -e man` to update the man pages.
* Merge branch 'tristan/cache-quota-max-only' into 'master'Tristan Van Berkom2019-01-254-24/+63
|\ | | | | | | | | | | | | _artifactcache.py: Don't require the quota to be available on disk. Closes #869 and #733 See merge request BuildStream/buildstream!1106
| * _artifactcache.py: Don't require the quota to be available on disk.tristan/cache-quota-max-onlyTristan Van Berkom2019-01-254-24/+63
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead only rely on the headroom to be enough to protect against out of space conditions. The headroom can become configurable as a separate step is required. The changes to achieve this are: * Rename ArtifactCache.has_quota_exceeded() to ArtifactCache.full(). * ArtifactCache.full() now also reports True if the available space on the artifact cache volume is smaller than the headroom. This ensures jobs get triggered to cleanup the cache when reaching the end of the disk. * When loading the artifact quota, it is now only an error if the quota exceeds the overall disk space, not if it does not fit in the available space. It is still a warning if the quota does not fit in the available space on the artifact cache volume. * Updated scheduler.py and buildqueue.py for the API rename * tests: Updated the artifactcache/expiry.py test for its expectations in this regard. Added a new test to test an error when quota was specified to exceed total disk space, and adjusted the existing tests to expect a warning when the quota does not fit in the available space. This fixes issue #733 and #869.
* Merge branch 'jennis/add_new_profile_topic' into 'master'James Ennis2019-01-253-0/+17
|\ | | | | | | | | Add new 'scheduler' and 'load-selection' profiling topics See merge request BuildStream/buildstream!1088
| * _profile.py: Update copyright statementjennis/add_new_profile_topicJames Ennis2019-01-251-0/+2
| |
| * _profile.py: Added a new profiling topic, load-selectionJames Ennis2019-01-252-0/+8
| | | | | | | | | | profile_start() and profile_end() calls have been added to Stream.load_selection()
| * _profile.py: Added a new profiling topic, schedulerJames Ennis2019-01-252-0/+7
|/ | | | | profile_start() and profile_end() calls have been incorporated into Scheduler.run()
* Merge branch 'tristan/cache-management-logging' into 'master'Tristan Van Berkom2019-01-2410-63/+260
|\ | | | | | | | | Cache management logging enhancements See merge request BuildStream/buildstream!1105
| * _artifactcache.py: Correcting API documenting comment for remove()Tristan Van Berkom2019-01-241-2/+1
| | | | | | | | | | | | This seems to have been copy/pasted from cascache, and documents the function to possibly return None if defer_prune was specified, but this function does not expose defer_prune.
| * _scheduler/jobs/cleanupjob.py: Update cache size while processingTristan Van Berkom2019-01-241-1/+14
| | | | | | | | | | | | Updates the known cache size in the main process while the cleanup process is ongoing, so that the status indicators update live while the cleanup happens.
| * _scheduler/jobs/job.py: Allow subclasses to message the frontendTristan Van Berkom2019-01-241-19/+50
| |
| * _artifactcache.py: Added client progress callback to ArtifactCache.clean()Tristan Van Berkom2019-01-241-1/+12
| |
| * _artifactcache.py: Add status messages in cache management operationsTristan Van Berkom2019-01-241-5/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | Added some useful status messages when: * Calculating a new artifact cache usage size * Starting a cleanup * Finishing a cleanup Also enhanced messaging about what was cleaned up so far when aborting a cleanup.
| * _frontend/status.py: Added Cache size usage indicator to status barTristan Van Berkom2019-01-241-7/+35
| | | | | | | | | | This also adds some comments around the main status bar heading rendering function.
| * _frontend/widget.py: Added cache usage entry in the startup headingTristan Van Berkom2019-01-241-0/+1
| |
| * _context.py: Added get_artifact_cache_usage()Tristan Van Berkom2019-01-241-1/+11
| | | | | | | | | | | | | | | | A frontend facing API for obtaining usage statistics. I would have put this on Stream instead, but the Context seems to be the de facto place for looking up the artifact cache in general so let's put it here.
| * _artifactcache.py: Added ArtifactCacheUsage()Tristan Van Berkom2019-01-241-0/+35
| | | | | | | | | | A simple object which creates a snapshot of current usage statistics for easy reporting in the frontend.
| * _artifactcache.py: Refactored to use utils._get_volume_size()Tristan Van Berkom2019-01-243-20/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This will benefit from a better UtilError being raised, and and turns the artifact cache's local function into a one liner. The loop which finds the first existing directory in the given path has been removed, being meaningless due to the call to os.makedirs() in ArtifactCache.__init__(). The local function was renamed to _get_cache_volume_size() and no longer takes any arguments, which is more suitable for the function as it serves as a testing override surface for unittest.mock(). The following test cases which use the function to override the ArtifactCache behavior have been updated to use the new overridable function name: tests/artifactcache/cache_size.py tests/artifactcache/expiry.py
| * utils.py: Add _get_volume_size()Tristan Van Berkom2019-01-241-2/+22
| | | | | | | | We can streamline this call to os.statvfs() in a few places.
| * _frontend/app.py: Initialize logging before preflighting the artifact cacheTristan Van Berkom2019-01-241-5/+7
|/ | | | The artifact cache emits messages, and we want to allow that in preflight.
* Merge branch 'tristan/cache-management' into 'master'Tristan Van Berkom2019-01-245-24/+141
|\ | | | | | | | | Cache management fixes See merge request BuildStream/buildstream!1091
| * tests/artifactcache/expiry.py: Test that expiry happens firsttristan/cache-managementTristan Van Berkom2019-01-241-0/+64
| |
| * _frontend/widget.py: Render core messages more like other messagesTristan Van Berkom2019-01-243-21/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | In order to test when core activities occur by parsing the stderr in tests, we should make the messages conform more. At the same time, this restores alignment of columns in core messages with the element processing related messages. Also, _scheduler/scheduler.py is updated to make it's activity names conform to the (current) 5 character limit for the sake of alignment. The tests/frontend/logging.py test gets it's regexes updated for the log lines it checks for in stderr.
| * _scheduler/scheduler.py: Run cache size exclusively at startupTristan Van Berkom2019-01-241-2/+59
| | | | | | | | | | | | | | | | | | | | | | | | When running any session that has Queues which require Resource.CACHE, check if our loaded estimated size exceeds the quota, and if so; lock the Resource.CACHE resource exclusively right away and run an exclusive initial cache size job. This ensures we cleanup first before doing anything which might add to the cache at startup time, if deemed needed. This is a partial fix for issue #737
| * _scheduler/resources.py: Dont error out in unregister_exclusive_interest()Tristan Van Berkom2019-01-241-1/+1
|/ | | | | | Don't require the interest to be registered, just discard any interest, this function just sets a bit in a mask, and is not intended to maintain a balance like the reserve() function is.
* Merge branch 'issue-638-validate-all-files' into 'master'Jürg Billeter2019-01-2432-45/+519
|\ | | | | | | | | Add support for default targets See merge request BuildStream/buildstream!925
| * NEWS: Add entry for default target featurePhillip Smyth2019-01-241-0/+4
| |