You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by ch...@apache.org on 2021/01/14 23:46:52 UTC

[buildstream] branch chandan/test updated (4a86e5d -> eae7bd3)

This is an automated email from the ASF dual-hosted git repository.

chandan pushed a change to branch chandan/test
in repository https://gitbox.apache.org/repos/asf/buildstream.git.


 discard 4a86e5d  TEST
     add 3641578  buildstream/utils.py: Fix parameter types for calendar.timegm
     add 419a3af  Add initial mypy configuration and types
     add 0515227  .gitignore: Add mypy cache directory
     add 2568f6f  .gitlab-ci.yml: Run mypy for validating changes
     add 7dbcf42  Merge branch 'chandan/mypy' into 'master'
     add 0139e47  requirements: Update grpcio to 1.23.0
     add 088705c  cascache.py: Close gRPC channel in release_resources()
     add 733cbfa  casremote.py: Add close() method to close gRPC channel
     add 418c304  _basecache.py: Add release_resources() method
     add 6c1f5b9  _context.py: Release artifactcache and sourcecache resources
     add 47b4cee  _sandboxremote.py: Use context manager for gRPC channels
     add 801f26d  _sandboxremote.py: Use context manager for CASRemote instances
     add 429a9c0  tests/artifactcache: Use context manager for gRPC channels
     add 655f11f  tests/testutils/http_server.py: Close queue to stop background thread
     add d6c667a  utils.py: Add _is_single_threaded() method
     add df3000b  cascache.py: Add has_open_grpc_channels() method
     add d13336a  _basecache.py: Add has_open_grpc_channels() method
     add 7dd41ee  _context.py: Add is_fork_allowed() method
     add 5545cb4  scheduler.py: Use Context.is_fork_allowed()
     add 312f708  _stream.py: Remove disable_fork() calls
     add ab56fea  _context.py: Remove unused disable_fork() method
     add 2ce01da  casserver.py: Remove notify_fork_disabled() call
     add 0963264  cascache.py: Remove fork_disabled mechanism
     add b4823df  testing/_forked.py: Update _MAIN_PID for tests running in subprocesses
     add 3221f35  tests: Catch tests that don't shut down background threads
     add e485a06  Merge branch 'juerg/fork' into 'master'
     add 37f32b6  README.rst: Point badge to latest bst 1.x release
     add 6cfe9f3  Merge branch 'jjardon/badge' into 'master'
     add d2e8672  tests/testutils/http_server.py: Drop queue to avoid lingering thread
     add 1568268  Merge branch 'juerg/http-test-server' into 'master'
     add 1ec8fbf  utils.py: Wait for threads to exit in _is_single_threaded()
     add 05136ea  Merge branch 'juerg/await-threads' into 'master'
     add f8fe824  node.pyx: _SYNTHETIC_FILE_INDEX must not be module-private
     add a9364a4  node.pyx: Add _reset_global_state() method
     add fa974ab  tests: Add autouse fixture to reset global state in node.pyx
     add d305c5b  Merge branch 'juerg/synthetic-file-index' into 'master'
     add 15ae343  Fix typo in node attribute
     add 1edb7fc  Merge branch 'traveltissues/1118' into 'master'
     add 566a6a5  _messenger.py: Don't display subtask information before 3 seconds
     add 6b3da94  _loader.py: Cache how many Elements we load
     add e91df08  _pipeline.py: Add task progress to resolve_elements()
     add db60c52  _pipeline.py: Add task progress to check_remote()
     add 5c69b27  Merge branch 'jennis/tasks' into 'master'
     add a36ae77  .gitlab-ci.yml: Update docker images for buildbox-casd
     add 26e79bf  _protos: Update local_cas.proto
     add 43a58da  cascache.py: Remove unused CACHE_SIZE_FILE
     add 878da24  cascache.py: Add cache usage monitoring via buildbox-casd
     add 45a177a  _frontend/status.py: Readd cache usage to status bar
     add d3cb30c  Merge branch 'juerg/cache-usage' into 'master'
     add 5529b91  cli.py: Allow push to handle artifact refs
     add 1cd7a82  _project.py: Don't only load cached artifacts
     add cdb698f  cli.py: Allow pull to handle artifact refs
     add 3513a80  Merge branch 'jennis/update_push_pull' into 'master'
     add 6f81827  utils.py: Ensure dest copy directory is writable
     add 07e35b3  sources/tar.py: Ensure tar source files are readable
     add a0a8015  tests/tar: Add test for unreadable and unwritable content tar source
     add ad63e38  tests/workspaces: Test edge case when linking files to RO directory
     add 6d01f42  Merge branch 'shashwatdalal/docker-source-patch' into 'master'
     add d9e1055  _stream.py: Remove separate handling of ArtifactElements
     add f35bf51  cli.py: Clean up dependency scope handling in checkout
     add 9a2c889  cli.py: Allow checkout to handle artifact refs
     add a60de4b  buildcheckout.py: Add tests which checkout artifact deps
     add 04c0d41  Merge branch 'jennis/update_checkout' into 'master'
     add d69f232  Address no-else-raise pylint warning
     add 92fedf8  Merge branch 'jennis/pylint_no_else_raise' into 'master'
     add 0b73ddb  _basecache.py: Remove references to 'artifacts'
     add 412da40  Create BaseRemote base class
     add e28db23  Remove cache-specifc spec classes
     add e716215  _basecache.py: Refactor the BaseCache a little
     add 47a3f93  Allow splitting artifact caches
     add 1f9c48b  Update documentation to explain split caches
     add f402122  Change unfitting function name
     add 20a920f  Merge branch 'tlater/cache-endpoints' into 'master'
     add d2b901f  casserver.py: Use show_default for options
     add c7f7070  cli.py: remove superfluous kwargs for flags
     add 2869a94  Merge branch 'traveltissues/1110' into 'master'
     add e73d35b  _frontend/status.py: Fix non-formatted terminator
     add 7cc448b  Merge branch 'coldtom/fix-status-job-render' into 'master'
     add e30026c  Update all python dependencies
     add 5c6a5cc  Merge branch 'jennis/update_python_deps' into 'master'
     add d7dca0d  cascache.py: Remove unused pull() and push() methods
     add 0fac0b4  casremote.py: Limit request size for batch download and upload
     add 1fc5515  Add tests/frontend/large_directory.py
     add a200338  Merge branch 'juerg/casd' into 'master'
     add 5636535  scheduler.py: Introduce a notification queue for stream interaction
     add be757fa  scheduler.py: Move elapsed_time() to shared State()
     add 0c58302  scheduler.py: Notification for sched loop running status
     add 7c2014a  scheduler.py: Notification for sched terminated status
     add e3567e1  scheduler.py: Notifications for sched suspending
     add 1e1e7ba  scheduler.py: Notification for sched suspended status
     add aaa104b  scheduler.py: Notification for interactive failure retry
     add a97af8e  scheduler.py: Notification for Message() propagation
     add 826e12a  Merge branch 'tpollard/notificationhandler' into 'master'
     add 3695316  Fix typo in pipeline msg detail
     add 3db8f6e  Merge branch 'traveltissues/typo' into 'master'
     add bd34923  _message.py: Use bool for sandbox Message() parameter
     add 34d5013  Merge branch 'tpollard/sandboxmessage' into 'master'
     add e4d2b49  Check result is not None in tracking queue done()
     add 8261dfa  Merge branch 'traveltissues/none-childdata' into 'master'
     add 505316c  cascache.py: Fix cache usage monitor on Python older than 3.7
     add 408414e  tests/artifactcache/expiry.py: Add test for cache usage monitor
     add 3eedd7a  Merge branch 'juerg/cache-usage' into 'master'
     add 108a38e  Prepare NEWS for 1.3.1.dev1 release
     add f05be95  _context.py: Add 'dependencies' option to 'build' user config
     add 3a263bb  tests/remoteexecution/partial.py: Test building all dependencies
     add 38c6209  Merge branch 'build-all-option' into 'master'
     add e27dffd  Fail if we try to build a BST_FORMAT_VERSION we do not support anymore
     add 093d7a5  Merge branch 'jjardon/BST_FORMAT_VERSION' into 'master'
     add d619920  Use distutils plugin from bst-plugins-experimental
     add 7ec6190  Merge branch 'jjardon/distutils' into 'master'
     add 22ff4b3  cli.py: Fix typo in source checkout's doc string
     add 344c3e4  source_checkout.py: Remove commented out touch() and add comment
     add eeb0f3c  _stream.py: Add doc comment to _export_artifacts()
     add 11e9934  _stream.py: Include all args in doc comment of source_checkout()
     add 6cb668a  cli.py: Make source checkout more consistent with artifact checkout
     add c8a06a4  source_checkout.py: Add test for --tar/--directory conflict
     add b56c85b  _stream.py: Handle tar compression mode in separate function
     add 5472d41  cli.py: Add --compression option to source checkout
     add f047495  source_checkout.py: Add --compression tests for source checkout
     add 902c767  _stream.py: Inform user of source checkout location
     add 717b343  NEWS: Amend source checkout NEWS entries
     add f1b20df  Merge branch 'jennis/update_source_checkout' into 'master'
     add 291204b  NEWS: Move note about YAML cache next to note about YAML API
     add 434c266  NEWS: Try to use past tense consistently
     add c30993e  Merge branch 'chandan/fix-news' into 'master'
     add 5a778ca  cli.py: Allow checkout to handle --deps all
     add a657479  Merge branch 'jennis/add_deps_all_to_checkout' into 'master'
     add 25b3f70  _stream.py: Load the appropriate PipelineSelection in checkout
     add 9996502  Merge branch 'jennis/load_deps_consistently' into 'master'
     add 2b54ff7  CONTRIBUTING.rst: Split up CONTRIBUTING into smaller files
     add 0e9a279  using_the_testsuite.rst: Rename title to be more descriptive
     add 585875a  writing_documentation.rst: Rename title to be more descriptive
     add 10acf4d  grpc_protocol.rst: Rename title to be more descriptive
     add a49f429  coding_guidelines.rst: Fix typo in frobiliciously
     add b89d126  coding_guidelines.rst: Inline comments require 2 whitespaces
     add 766c6c8  Merge branch 'jennis/split_contributing' into 'master'
     add 8ff9262  filter.py: Allow passing integration commands
     add b2af82a  filter.py: Fail if parent element is a stack
     add 4e63710  element.py: Abstract not producing artifacts
     add e019f2f  tests/integration: Add test for filter element
     add 2c4708c  Merge branch 'coldtom/filter-element-improvements' into 'master'
     add 86e022d  using_commands.rst: Add show and list-contents
     add 4d9b595  using_commands.rst: Add internal X-references
     add 163a475  CONTRIBUTING.rst: Add UI section
     add 8418b56  Merge branch 'jennis/frontend_documentation' into 'master'
     add 6ad1761  tests/testutils/artifactshare.py: Add SIGTERM handler to subprocess
     add d06fd33  Merge branch 'juerg/artifactshare' into 'master'
     add 08de3b1  _artifactcache.py: Create ArtifactServiceStub in _configure_protocols()
     add e555cc2  _artifactcache.py: Move capabilities check to _check() and extend it
     add 9453a01  _sourcecache.py: Move capabilities check to _check() and extend it
     add b7578dd  casremote.py: Drop Status request
     add 1fad0d3  .gitlab-ci.yml: Update docker images for buildbox-casd
     add 62bda10  cascache.py: Create CAS stub for buildbox-casd channel
     add 6bac764  cascache.py: Use casd in remote_missing_blobs()
     add 1a9749c  casremote.py: Do not directly communicate with CAS server
     add fadbf67  casremote.py: Add missing copyright header
     add 78880af  _remote.py: Remove unused bytestream
     add fc0136c  Merge branch 'juerg/casd' into 'master'
     add 80fdd0a  tests: Add some missing integration marks
     add bc2acf7  Merge branch 'coldtom/mark-filter-test-integration' into 'master'
     add 3247014  cascache.py: Create `CASCache.close_channel()`
     add a8ca9fc  workspace.py: add workspace source plugin
     add e25da03  Support loading 'workspace'-kind sources
     add b9e2af2  element.py: always check sources for caching
     add b994516  Remove workspace mounting for sandboxes
     add c9d1de5  loader.py: Remove workspace handling in element collection
     add bde0c6f  import.py: assemble the element via `stage_sources`
     add 3bab0b7  tests: Remove xfails from buildbox integration tests
     add 2e87ff1  tests: Remove xfails from buildbox integration tests
     add 45fee28  Merge branch 'traveltissues/985' into 'master'
     add 873af0d  _context.py: Remove duplicated log_message_lines assign
     add 7491b7c  Merge branch 'tpollard/duplicated_messagelines' into 'master'
     add 7c98655  NEWS: Fix current snapshot version
     add e3a4e7b  NEWS: add section for unreleased items
     add 1db7753  Merge branch 'chandan/fixup-news' into 'master'
     add 23c66d2  .gitlab-ci.yml: Update docker images for buildbox-casd
     add 4c57dc0  cascache.py: Add import_directory() method
     add aec623e  _casbaseddirectory.py: Use CASCache.import_directory()
     add 7d050fa  Merge branch 'juerg/capture-tree' into 'master'
     add 9cb1ad2  Do not check for casd in bash completion
     add dbc8f59  Merge branch 'tlater/fix-casdless-completion' into 'master'
     add ba60565  cascache.py: Extract buildbox-casd termination in its own method
     add 2adad87  cascache.py: Send message in case of unclean termination of buildbox-casd
     add 9f453bb  Merge branch 'bschubert/ensure-buildbox-alive' into 'master'
     add 7deb200  .gitlab-ci.yml: Use latest fdsdk patches and bst-plugins-experimental
     add f47c0ab  Merge branch 'jjardon/overnigth_bst2' into 'master'
     add 99b0117  .gitlab-ci.yml: overnigth tests need buildbox-casd
     add 645496b  Merge branch 'jjardon/overnigth_casd' into 'master'
     add ebfa7d5  Revert ".gitlab-ci.yml: overnigth tests need buildbox-casd"
     add 764a7cf  Merge branch 'jjardon/overnigth_casd_already' into 'master'
     add 0c8861e  cascache.py: Save casd logs in a file for retrieval
     add 739cba7  cascache.py: Show path to log file when buildbox-casd doesn't exit normally
     add 56432ba  Merge branch 'bschubert/casd-logs' into 'master'
     add f85b8b6  _scheduler/jobs/job.py: sort imports
     add 2516668  Merge branch 'aevri/job_sort_imports' into 'master'
     add 2b9e6f5  cascache.py: Block SIGINT in the buildbox-casd process
     add 5615bb4  cascache.py: Block SIGINT in the CasUsageMonitor process
     add f886d33  Merge branch 'bschubert/casd-sigint' into 'master'
     add 1b0d05a  element.py: remove concept of key instability
     add 06206c3  element.py: remove call to _source_cached()
     add a57f27e  Merge branch 'traveltissues/benchmark' into 'master'
     add 526bc54  tox.ini: Add bst-plugins-experimental to docs deps
     add 390d038  Update doc commands to use 'source fetch'
     add 5b50c67  Update doc commands to use 'artifact checkout'
     add 9405b6d  doc/sessions/junctions.run: Fix typo in 'remove-dir' option
     add 226e33d  doc/bst2html.py: Error out if bst command in doc fails
     add e72a8c2  doc/Makefile: exit 1 if running bst command fails
     add d67c70c  Merge branch 'chiaratolentino/fix-docs' into 'master'
     add ce4883b  cascache.py: add a 'log_level' parameter and use it to run buildbox-casd
     add d7b78ed  Merge branch 'bschubert/propagate-log-level-to-casd' into 'master'
     add 4a2b573  cli.py: no fcntl on Windows
     add d913e5c  Merge branch 'aevri/no_win32_fcntl' into 'master'
     add 7f00500  setup.cfg: Fix xdg env vars to not affect the host
     add 97cd51d  Merge branch 'bschubert/fix-xdg-temppaths' into 'master'
     add 3d94586  Defer committing workspace files to cache
     add 31b2311  Merge branch 'traveltissues/1159' into 'master'
     add 3079bb9  tests/frontend/buildcheckout.py: Create required symlinks on the fly
     add d268ff6  Merge branch 'bschubert/fix-windows-symlink' into 'master'
     add 5ea011c  _scheduler.py: Listen for buildbox-casd failure and terminate
     add d390fd6  Merge branch 'bschubert/casd-listen-failures' into 'master'
     add 78f05bb  _artifactcache.py: Don't push artifact blobs when no files are present
     add 99e0236  Merge branch 'bschubert/fix-empty-buildtree' into 'master'
     add b5aae0b  .gitlab-ci.yml: Bump versions for overnight tests
     add 4c0bb34  Merge branch 'bschubert/fix-overnight' into 'master'
     add b592cb8  _fuse/mount.py: Monitor the fuse process while waiting for the mount
     add 372bcab  Merge branch 'bschubert/fuse-permissions' into 'master'
     add 64e2fde  tests: unmark tests passing with buildbox
     add b7ab65e  setup.cfg: make xfail marks strict by default
     add e31b22a  Merge branch 'traveltissues/strictxfail' into 'master'
     add c6b3559  tests/sourcecache/fetch.py: Extract logic to move local cas to remote
     add 16cab3a  tests/sourcecache/fetch.py: Don't hardcode the element name
     add ca3be36  tests/sourcecache/fetch.py: Extract element's creation to a function
     add d71b808  tests/sourcecache/fetch.py: Extract configuration of bst
     add 276cfa6  _sourcecache: Fallback to fetch source when remote has missing blobs
     add 28803a9  Merge branch 'bschubert/partial-source-cache' into 'master'
     add acf99b7  loader.py: Avoid loading deps of junction metaelements
     add 17144d8  testutils/context.py: Mock tasks instead of accepting Nones
     add 87110d6  Remove XXX comment about missing progress
     add bcbd180  Improve progress tests
     add 6c6c581  Merge branch 'tlater/progress-tests' into 'master'
     add ea7c7bc  win32: _platform/win32: add support for win32
     add 13d9ab5  Merge branch 'aevri/platform_win32' into 'master'
     add 66031ea  _artifactcache.py: Reset artifact_service in ArtifactRemote.close()
     add de55568  _sourcecache.py: Reset source_service in SourceRemote.close()
     add 4be5a13  _remote.py: Reset _initialized in close()
     add 9e1b956  cascache.py: Reset _casd_cas in close_channel()
     add 3578f92  cascache.py: Rename close_channel() to close_grpc_channels()
     add 8a5e9c6  _basecache.py: Add close_grpc_channels() method
     add bbc6748  scheduler.py: Call is_fork_allowed() right before spawning jobs
     add 64a5f4a  _context.py: Replace is_fork_allowed() with prepare_fork()
     add d0a06b0  _remote.py: Do not use subprocess to check remote
     add 0d0dc00  workspace.py: Do not close gRPC channels
     add 1d4703b  Merge branch 'juerg/prepare-fork' into 'master'
     add 67a1ec4  testing/.../site: windows-friendly HAVE_OLD_GIT
     add c6a7f43  Merge branch 'aevri/oldgit' into 'master'
     add 1b92d90  element.py: change 'substitute_variables' to take a 'ScalarNode' and rename
     add 0cc5380  _options/option.py: Pass the node instead of the str to 'transform'
     add b07ca0c  element.py: Remove '_subst_string'
     add f0c928e  element.py: remove 'node_subst_member' and replace with 'node_susbst_vars'
     add abc522c  element.py: Rework 'node_subst_list' to take the sequence directly
     add 1a7582c  node.pyx: Make 'strip_node_info' public
     add 0953d36  NEWS: add info about new YAML breaking changes
     add 3ab6c57  Merge branch 'bschubert/yaml-tidying' into 'master'
     add 4e197f4  NEWS: update release notes for version 1.91.1
     add f6e24e2  Merge branch 'bschubert/1.91.1' into 'master'
     add cc2ee79  workspace.py: raise AssertionError on init_workspace
     add 4fce5b1  _basecache.py: early return if remotes are setup
     add 1eedab4  Use workspace_close and workspace_open to reset workspaces
     add 84c1fbb  tests: add test for soft workspace reset
     add 9147994  Merge branch 'traveltissues/1140-softreset' into 'master'
     add 7153957  tox.ini: pin mypy 0.730
     add 67f9de2  Merge branch 'traveltissues/1172' into 'master'
     add 43288a7  Remove special loading for workspaces
     add 32c0ca3  Merge branch 'traveltissues/notes' into 'master'
     add 84e929d  .gitlab-ci.yml: Update bst-plugins-experimental version
     add 588d7b7  Merge branch 'bschubert/bump-bst-experimental-version' into 'master'
     add a05e246  element.py: remove unused variable
     add d7d4429  Merge branch 'traveltissues/fix' into 'master'
     add daf0bcf  tox.ini: pass through BST_FORCE_START_METHOD
     add 702ddda  tests/conftest: implement BST_FORCE_START_METHOD
     add 11cd082  cli: BST_FORCE_START_METHOD only sets if necessary
     add ac8ce60  .gitlab-ci.yml: disable most spawn tests
     add 56f7cf1  Merge branch 'aevri/enable_spawn_ci' into 'master'
     add 5a5cbfa  jobpickler: also pickle DigestProto
     add 28852bb  gitlab: spawn tests, enable internals, sourcecache
     add 27d3c61  Merge branch 'aevri/enable_spawn_ci_2' into 'master'
     add 9c2bbe3  cascache.py: instantiate usage monitor early
     add 735b005  Merge branch 'traveltissues/1176' into 'master'
     add f4503d1  setup.cfg: Register mark for pytest-datafiles
     add aadd675  Merge branch 'chandan/register-pytest-mark' into 'master'
     add 304449a  tests: remove mark.in_subprocess
     add d1077b6  cascache: don't need create_cas_usage_monitor now
     add 5de5a1c  cascache: don't pickle _cache_usage_monitor
     add 422718f  Merge branch 'aevri/no_mark_run_in_subprocess' into 'master'
     add 349c389  tests/sources/keytest: Ensure element state is updated as expected
     add c5c29c9  Merge branch 'chandan/fix-source-key-test' into 'master'
     add db91f5f  Prepare NEWS for 1.91.2 snapshot release
     add 44e8e25  Merge branch 'chandan/release-1.91.2' into 'master'
     add 485f553  element: remove double MetaSource import
     add 04e1c53  job pickling: plugins don't return their factories
     add a125bc0  job pickling: pickle first_pass_config factories
     add 299ed94  .gitlab-ci: test-spawn, enable tests/format/*
     add 732f474  Merge branch 'aevri/enable_spawn_ci_3' into 'master'
     add 9733bef  _frontend/status.py: Complete names when rendering dynamic queue status
     add 443b408  Merge branch 'tpollard/render_task_group' into 'master'
     add 798cac7  format_project.rst: De-obfuscate element/package differences
     add 918f07c  Merge branch 'tlater/plugin-documentation-improvement' into 'master'
     add 0c295ce  .pylintrc: Add ujson to extension-pkg-whitelist
     add bc6bffe  Merge branch 'chandan/pylint-c-extension-ujson' into 'master'
     add a274fb0  conftest: more useful multiprocessing print
     add 5f48e8a  job pickling: also pickle global state in node.pyx
     add d16c1f3  _scheduler/jobs: mv pickle details into jobpickler
     add bd5e246  testing, messenger: make dummy_context picklable
     add 0209c67  testing/runcli: node._reset_global_state on run
     add f3a3d36  gitlab-ci: tests-spawn, enable tests/elements
     add 8b5905b  Merge branch 'aevri/enable_spawn_ci_5' into 'master'
     add 252adc3  _fuse/mount: make mount() and unmount() private
     add 29099c3  Merge branch 'aevri/fuse_mount_private' into 'master'
     add dca1d0a  Remove unnecessary parameter in Source._get_unique_key
     add bffc040  source.py: Add BST_NO_PRESTAGE_KEY
     add 66461f4  workspace.py: use the extended source api
     add 8c999a3  tests: check that workspaces only call _stage once
     add e49274a  element.py: inline local function
     add b447e9f  source.py: _get_unique_key in _track
     add 253ef13  local.py: use extended API, set BST_NO_PRESTAGE_KEY
     add e0e2099  Merge branch 'traveltissues/1161' into 'master'
     add c879470  _plugincontext: stable ids for better pickling
     add f3922f4  tests/.../missing_dependencies: include git
     add 76c2bac  .gitlab-ci: tests-spawn, most non-integration ok
     add 54720db  Merge branch 'aevri/enable_spawn_ci_5a' into 'master'
     add 4a75383  Add tests that the basic functionality of buildstream works in win32
     add 5c2fe47  Merge branch 'jonathan/win32_ci' into 'master'
     add 9ae7b67  buildgrid-compose.yml: reduce log level to WARN
     add 2bb3dc1  Merge branch 'traveltissues/1184' into 'master'
     add 22483d0  _gitsourcebase.py: Return 'None' when the ref is unset
     add 66045d9  Merge branch 'bschubert/fix-git-ref' into 'master'
     add 576be1f  frontend: Remove tracking options from `bst build`
     add 230815d  NEWS: Announce removal of tracking options from `bst build`
     add 9765eba  Regenerate man pages after removal of `--track*` from `bst build`
     add 101a0d9  Merge branch 'chandan/remove-build-track' into 'master'
     add 4f45bc6  .gitlab-ci.yml: Update docker images for buildbox-casd 0.0.4
     add 1993ff0  Merge branch 'juerg/casd' into 'master'
     add cf2439d  Replace BST_NO_PRESTAGE_KEY with BST_KEY_REQUIRES_STAGE
     add 2dd9f37  NEWS: add note about BST_KEY_REQUIRES_STAGE
     add abd09a9  Merge branch 'traveltissues/changeflag' into 'master'
     add af9e54a  cascache.py: Defer attempt to connect to casd until socket file exists
     add 9f71313  Merge branch 'juerg/casd-connect' into 'master'
     add a838b42  fix broken user guide link in README.rst
     add 4c623c0  Merge branch 'link_fix' into 'master'
     add 601a06d  element.py: Avoid redundant SourceCache.contains() calls
     add 336fef9  cascache.py: Always update mtime in contains_directory()
     add 52cead2  cascache.py: Reimplement contains_directory() with FetchTree()
     add 82b4313  Merge branch 'juerg/fetch-tree' into 'master'
     add 4ec1b73  testutils/artifactshare: don't hang on error
     add d938b0c  tests/artifactshare: safer cleanup_on_sigterm use
     add 247f375  Merge branch 'aevri/testutils_artifactshare' into 'master'
     add 8fe7d26  _context.py: Improve reporting of incorrect user config
     add c70b64b  Merge branch 'bschubert/better-reporting-on-userconfig' into 'master'
     add e1abc20  Remove `commit`ting sources inside `Source()._generate_key`
     add 602cf41  Merge branch 'traveltissues/1182' into 'master'
     add 2245af2  Remove unnecessary ignore_workspaces kwarg
     add e3a8059  _stream: correct typo in error message
     add a283f02  Merge branch 'traveltissues/closeworkspaces' into 'master'
     add 5e0d8d5  app.py: Also catch SystemError with click.Abort
     add a6c9c52  Merge branch 'bschubert/fix-children-termination' into 'master'
     add 02d7348  plugins/elements/stack: Disallow sources
     add b20ea08  Merge branch 'chandan/stack-no-sources' into 'master'
     add 0e6a85d  _remote.py: Expand user in certificates paths
     add e0ec803  Merge branch 'bschubert/expand-path-configs' into 'master'
     add c76c918  Add _is_trackable() method to Source()
     add 4d3f0ca  _stream: Remove exception case for removed option
     add b327003  Merge branch 'traveltissues/1186-3' into 'master'
     add 068a51b  _sandboxbwrap.py: Create /dev/shm in the sandbox
     add 054375f  Merge branch 'coldtom/allow-dev-shm' into 'master'
     add e6c0686  Indicate that compose & stack plugins do not run commands
     add 4001b46  Merge branch 'chandan/no-command-general-elements' into 'master'
     add 278d010  scheduler.py: Prevent the asyncio loop from leaking into subprocesses
     add 3d1fb3b  scheduler.py: Remove FIXME message and add explanation instead
     add 74fa253  Merge branch 'bschubert/fix-children-termination' into 'master'
     add 1d08b51  _sandboxremote.py: Ensure working directory exists
     add d10efb6  _sandboxremote.py: Send command and action together with the other blobs
     add 9f2d611  _sandboxremote.py: Simplify exit code return
     add 6ea91a7  _sandboxremote.py: Extract _execute_action() method from _run()
     add a3a7b33  _sandboxremote.py: Fetch outputs in _execute_action()
     add afaff94  sandbox: Add abstract SandboxREAPI class
     add d7af08d  sandbox: Move _run() from SandboxRemote to SandboxREAPI
     add 611973f  sandbox: Move SandboxRemoteBatch to SandboxREAPI
     add bc9dff6  Merge branch 'juerg/sandbox-reapi' into 'master'
     add 7b6847c  tests/frontend/completions: Fix implicit string concatenation
     add 149c2c2  Merge branch 'chandan/fix-implicit-string-concat' into 'master'
     add 104cfe2  _frontend: Simplify color handling
     add d51a510  Merge branch 'chandan/fix-no-color' into 'master'
     add 7c470b4  _remote: Ensure checks done in the subclasses are propagated
     add 2e585ac  _sourcecache.py: Fix reporting of capabilities for the source cache
     add e42e482  Merge branch 'bschubert/fix-capa-check' into 'master'
     add 0f6d797  Pass color setting to Status
     add d74b8f8  Merge branch 'traveltissues/1204' into 'master'
     add 60b72f2  src/buildstream: Remove unused imports
     add 2204032  src/buildstream: Fix/silence attribute-defined-outside-init
     add 11e5099  src/buildstream: Fix pylint warning 'arguments-differ'
     add 4058174  tox.ini: Fix pylint configuration
     add baff350  Merge branch 'chandan/pylint' into 'master'
     add eae8bd1  job.py: Don't use 'terminate_wait', as it uses waitpid()
     add 928d66b  job.py: handle SIGTERM gracefully
     add d20f90b  job.py: Gracefully handle killed subprocesses
     add ecc1f60  scheduler.py: Extract timeout to kill as a global variable
     add c3eee61  Merge branch 'bschubert/graceful-children-sigterm' into 'master'
     add b6ff02a  _profile.py: Raise exception if invalid BST_PROFILE topics
     add 10a5b9f  Merge branch 'tpollard/profileerror' into 'master'
     add e7d7c1f  Add configuration to run Black
     add efbe908  .pylintrc: Disable formatting messages
     add 703cfe5  Remove pycodestyle
     add a3ee349  .gitlab-ci.yml: Check code formatting as part of CI
     add 1221771  Reformat code using Black
     add 91c6bb6  doc/source/hacking: Remove pycodestyle, add Black
     add 6130ea6  Start linting doc/source/conf.py
     add 0eac842  Merge branch 'chandan/black' into 'master'
     add d33e106  _stream: Force workspace removal
     add a686cd0  Merge branch 'traveltissues/1171' into 'master'
     add 69ba951  cascache.py: Use a shebang that won't fail on /bin/bash-less systems
     add b653029  Merge branch 'tlater/fix-test-env' into 'master'
     add 6c4363e  plugins/sources/deb: Re-enable import check for arpy
     add 516833f  Merge branch 'chandan/re-enable-import-check' into 'master'
     add 1514119  element.py: Refactor `_schedule_assemble`
     add 14146c2  element.py: Remove workspace-specific code
     add f5a23b8  Only run `element.__update_source_state` when necessary
     add 2a2c140  Create _initialize_state() to capture an _update_state() use case
     add 6a9bc8a  element.py: Only run `element.__update_cache_keys` when necessary
     add ec4dea5  element.py: Only `element.__update_artifact_state` when necessary
     add 6bcaf12  element.py: Only run `_schedule_assemble()` when necessary
     add b9ccb45  element.py: Remove `_update_state()`
     add 1edc877  element.py: Make ex-_update_state() components private
     add f9d20e4  element.py: Reduce calls to __update_cache_key_non_strict
     add d3fb0b9  element.py: Refactor __update_strict_cache_key_of_rdeps()
     add 764ab58  element.py: Refactor __update_ready_for_runtime()
     add 26670d5  Merge branch 'tlater/annihilate_update_state' into 'master'
     add 64839c9  Improve help message for workspace soft-reset
     add 497ded2  Merge branch 'traveltissues/1170' into 'master'
     add a573cce  doc/examples/flatpak-autotools: remove references to sdk.gnome.org
     add 9bf0eae  Merge branch 'abderrahim/no-sdk-gnome-org-2' into 'master'
     add 72d3f70  .gitlab-ci.yml: Track new version of freedesktop-sdk to fix overnigth test
     add 8ae2f7d  Merge branch 'jjardon/fix-overnight' into 'master'
     add cc5b8e8  Remove all `--track` options
     add 14e32a3  Schedule elements instead of "requiring" them
     add aa25f6f  Simplify queue management
     add 358727c  Remove early skipping of already-fetched sources
     add 176338b  Fix stacktraces during element loading
     add 6c904a3  Remove `Element._schedule_tracking()`
     add f3e1d23  _stream.py: Refactor `Stream._load()` a little
     add 229b9ba  Merge branch 'tlater/track-cleanup' into 'master'
     add 742e682  WIP: Use fedora31 instead older versions
     add 37d761f  Merge branch 'jjardon/fedora-31' into 'master'
     add 6217fdb  .gitlab-ci.yml: Use Debian9 instead Debian10
     add cdf15d0  Merge branch 'jjardon/debian-10' into 'master'
     add 4694dfa  cascache: extract CASDProcess in new module
     add 12de92f  CASDProcessManager: 'release_resources' convention
     add 44c9f09  Extract casd_channel logic to CASDChannel
     add 95ee348  cascache: _CASCacheUsageMonitor has channel
     add e913a8a  CASCache: comment on need for __getstate__
     add 315a3df  CASDChannel: don't need to call GetCapabilities
     add 9aa48dd  Merge branch 'aevri/casdprocessmanager' into 'master'
     add 294dac7  .gitlab-ci.yml: USe gitlab's builtin License Compliance analyzer
     add 2201f6d  Merge branch 'jjardon/license_compliance' into 'master'
     add 7039a51  .gitlab-ci.yml: Use gitlab's builtin Static Application Security Testing (SAST)
     add c6e2ea9  Merge branch 'jjardon/sast' into 'master'
     add f439c47  utils.py: Add get_umask() method
     add e7ff106  utils.py: Respect umask in save_file_atomic()
     add fb52fec  utils.py: Respect umask in _tempdir()
     add 456e942  element.py: Make build directory a proper utils._tempdir
     add 470efb7  tar.py: Make directories with incorrect permissions traversable
     add 2762c93  tar.py: Respect umask
     add 18f8e38  testing/integration.py: Respect umask for the integration cache
     add e516e1c  Merge branch 'juerg/umask' into 'master'
     add a928661  _stream.py: Remove dead code and comments about tracking
     add 9fb534c  Merge branch 'bschubert/track-cleanup' into 'master'
     add 2222d0a  .gitlab-ci.yml: define repo language as python
     add d96de06  Merge branch 'traveltissues/tmp' into 'master'
     add 393a0c6  tests: enable incremental workspace config test
     add 23c0e68  Merge branch 'traveltissues/incrementaltest' into 'master'
     add 3c093d1  compose: Allow compose elements to run integration commands
     add 4645869  Merge branch 'valentindavid/compose-integration-commands' into 'master'
     add 7a3866a  element: always prepare sandboxes
     add 267ea27  Do not load the workspace.last_successful as the workspace plugin ref
     add 41dc004  Clear last_successful for soft-reset of Workspace
     add 4fbdf61  tests: Allow strict contents in assert_contains
     add b511cfe  tests: non-incremental RE builds for workspaces
     add 990dd02  Merge branch 'traveltissues/mr3' into 'master'
     add 75a8560  tests/frontend: Refactor tests for default targets
     add 5c54a55  Merge branch 'chandan/refactor-default-target' into 'master'
     add 3a03fe6  sandbox.py: Assert that the working directory is an absolute path
     add 5dedeb8  _sandboxreapi.py: Fix Command.working_directory
     add 364a316  _sandboxreapi.py: Check that command exists
     add ba2aba8  _sandboxreapi.py: Ensure /dev, /proc and /tmp exist in sandbox
     add 85a29b4  Merge branch 'juerg/sandbox-reapi' into 'master'
     add 8d27cf5  doc: Add glossary of common terms
     add 205de65  Merge branch 'chandan/glossary' into 'master'
     add 96b3975  doc/coding_guidelines: Drop section about line lengths
     add 05aaf3e  Merge branch 'chandan/hacking/drop-line-length' into 'master'
     add 069b110  lint: Remove unnecessary list comprehensions
     add 1064374  lint: remove all unecessary elif/else after break/continue
     add e4ed02f  tests: Use pytest.raise() instead of checking for return code
     add ff6f6d0  Update all python dependencies
     add f9d0655  Merge branch 'bschubert/update-requirements' into 'master'
     add 3d05be2  update_commiters.py: Fix security vulnerabilities
     add c35a8eb  Merge branch 'tlater/fix-update-committer-security' into 'master'
     add cefbcd0  casserver.py: Add logging
     add e660e09  casserver.py: Proxy CAS requests to buildbox-casd
     add 320b3f2  Remove newly unused API surfaces in CASCache
     add 845a2fd  _*cache.py: Standardize cache basedirs
     add 476a539  Merge branch 'tlater/artifactserver-casd' into 'master'
     add f553fc8  casdprocessmanager.py: Set up socket path via a symlink
     add 27ec82e  utils.py: safe_link(): Copy if hardlink creation is not permitted
     add ae63515  testing/_utils/site.py: Add CASD_SEPARATE_USER variable
     add b10a1cf  tests/frontend/buildcheckout.py: Cannot hardlink with CASD_SEPARATE_USER
     add 485fac0  tests/frontend/pull.py: Do not use checkout --hardlinks
     add 1f124cf  tests/integration/filter.py: Do not use checkout --hardlinks
     add e090301  tests: source_determinism.py: Do not use too restrictive test umasks
     add 072e329  Merge branch 'juerg/casd-separate-user' into 'master'
     add 770bc27  .gitlab-ci.yml: List all test envs explicitely for tox
     add 1d78956  .gitlab-ci.yml: Extract docker images version in a variable
     add 45b1486  .gitlab-ci.yml: Don't overwrite sast job directly, just inject variable
     add 0189c00  Merge branch 'bschubert/ci-improvements' into 'master'
     add 6cdc8f3  testing/runcli.py: Remove unused configure parameter from run() methods
     add 44e0718  Merge branch 'juerg/runcli-unused-parameter' into 'master'
     add 4d486b6  _casbaseddirectory.py: Add _reset() method
     add 7bbcf7f  _sandboxreapi.py: Use CasBasedDirectory._reset()
     add 460268b  sandbox.py: Remove unused _set_virtual_directory() method
     add 30e4a7d  Merge branch 'juerg/cas-directory-reset' into 'master'
     add b037501  requirements: Add pexpect for running interactive tests
     add 23423f6  Add tests for interactive `bst init`
     add 6f621b6  Add tests for failed build in interactive mode
     add e5f9cc4  Merge branch 'chandan/interactive-tests' into 'master'
     add bf2ed58  MANIFEST.in: Minor fixups and improvements
     add 454ed33  Merge branch 'chandan/fix-manifest' into 'master'
     add a1bd91b  scheduler.py: Optimize scheduling by not calling it unnecessarily
     add 0e4cbd5  Merge branch 'bschubert/optimize-scheduling' into 'master'
     add 3b91d1b  job.py: Remove '_watcher' attribute, it is not needed
     add 1c08141  job.py: Only start new jobs in a `with watcher:` block
     add ffa39d2  scheduler.py: Only run thread-safe code in callbacks from watchers
     add f47bc0d  Merge branch 'bschubert/stricter-asyncio-handling' into 'master'
     add 5a67974  element: Remove unused method (__reset_cache_data)
     add 750aa60  element: remove _is_required()/__required
     add eb6c760  _workspaces: remove invalidate_key()
     add babb70f  _workspaces: remove get_key()
     add 85c393f  _basecache: remove has_open_grpc_channels()
     add e08785a  _artifactcache: remove get_artifact_logs()
     add 2c8a2dd  _artifactcache: remove _reachable_directories()
     add 8a70ab0  _artifactcache: remove _reachable_digests()
     add 681e10b  cascache: remove update_tree_mtime()
     add dbe0b4d  casserver: remove ArtifactStatus()
     add 4dc3022  casserver: remove _digest_from_*_resource_name()
     add 21ddcf2  _context: remove set_artifact_directories_optional()
     add 16d2d42  _pipeline: remove targets_include()
     add dc7a409  _pipeline: remove subtract_elements()
     add fdab453  _project: remove create_artifact_element()
     add 8c63b96  resources: remove [un]register_exclusive_interest()
     add 056b882  _profile: ignore unused args
     add 88e16b6  _remote: ignore unused args
     add 89aecef  Merge branch 'traveltissues/remove-unused-functions' into 'master'
     add f26e5f8  man/bst-workspace-reset.1: Update workspace re-open help message
     add 142ada1  Merge branch 'tlater/update-workspace-manpages' into 'master'
     add 6409727  tests/internals/cascache.py: Stop using non-posix shell features
     add c39c12e  Merge branch '1211-stop-using-non-posix-features-in-small-test-suite-tests-to-avoid-fake-test-failures' into 'master'
     add 2d00d27  _project.py: Allow junctions to use parent remote
     add 10e4aa7  Add test for junction option interaction
     add 393fd2d  Merge branch 'coldtom/fix-junction-remotes' into 'master'
     add 900b1a1  _sandboxreapi.py: Pass sandbox flags to _execute_action()
     add a57347d  Add buildbox-run sandbox
     add d9274f0  _platform: Support experimental buildbox-run sandbox on all platforms
     add dbf933b  tests/integration/sandbox.py: Do not limit shm test to bwrap sandbox
     add 1e038a9  tests/integration/script.py: Relax error message check
     add 83c4a1f  tests/integration/script.py: xfail read-only-root for buildbox-run
     add b56c7c6  tests/integration/shell.py: xfail bind mount for buildbox-run
     add de7aa5b  tests/integration/interactive_build.py: xfail logging for buildbox-run
     add 05acb43  tests/integration/manual.py: xfail logging for buildbox-run
     add f4b9a88  tests/integration/messages.py: xfail logging for buildbox-run
     add 9fe6c9e  tests/integration/workspace.py: xfail logging for buildbox-run
     add 4ad66cd  Merge branch 'juerg/buildbox-run' into 'master'
     add bb9045a  tests/sources/tar.py: Use `utils._force_rmtree` instead of chmod
     add 397a8fe  Merge branch 'tlater/tar-test-security' into 'master'
     add 6c5c271  tox.ini: Add ability to run tests in a randomized order
     add 7ca05ba  Merge branch 'bschubert/add-randomized-order-tests' into 'master'
     add 73c3ab7  tests/integration/interactive_build.py: Increase timeout
     add e6bc147  .gitlab-ci.yml: Update docker image
     add 039ddeb  .gitlab-ci.yml: Add job to test buildbox-run
     add 7aed19c  .gitlab-ci.yml: Drop buildbox job
     add e223bcd  Drop buildbox sandbox
     add ead0b11  tests: Drop buildbox xfails
     add a8fb5cd  Merge branch 'juerg/buildbox-run-bubblewrap' into 'master'
     add 9d2406e  .gitlab-ci.yml: Use latest freedesktop-sdk 19.08.5
     add 0b3612a  Merge branch 'jjardon/fdsdk-190805' into 'master'
     add 9c23ce5  job.py: Replace message queue with pipe
     add 2972ae9  Merge branch 'juerg/job-pipe' into 'master'
     add 4660a27  element.py: Remove temporary variable
     add 7da8a23  element.py: Only cache sources if some had to be fetched
     add 2fc5a5c  Merge branch 'bschubert/cleanup-element-fetch' into 'master'
     add a87ff4f  _gitsourcebase.py: Add and update some comments on _GitMirror
     add ffceb8b  _gitsourcebase.py: Manage submodules recursively
     add c97b385  _gitsourcebase.py: Rename and refactor _ignore_submodule
     add d48b380  tests/sources/git.py: Add recursive submodule test
     add 7fe2bb4  sources/git.py: Document that checkout-submodules is recursive
     add 0118773  Merge branch 'tmewett/recursive-git' into 'master'
     add b696254  utils.py: Use `onerror` in `_force_rmtree`
     add cea7e31  testing/runcli.py: Add BST_CAS_STAGING_ROOT environment variable
     add 7ffd9a7  testing/_utils/site.py: Add BUILDBOX_RUN variable
     add 0e740fa  tests: source_determinism.py: Skip flaky test with buildbox-run
     add e1eda90  tests/integration/compose.py: xfail for buildbox-run-userchroot
     add aede956  tests/integration/filter.py: xfail for buildbox-run-userchroot
     add 2a96cb2  tests/integration/script.py: xfail for buildbox-run-userchroot
     add 4fd6dc2  tests/integration/shell.py: xfail for buildbox-run-userchroot
     add 2c477a9  .gitlab-ci.yml: Add tests-buildbox-run to coverage
     add 5694ddb  .gitlab-ci.yml: Update docker image
     add 023c595  .gitlab-ci.yml: Add job to test buildbox-run-userchroot
     add 3d9ac7c  Merge branch 'juerg/buildbox-run-userchroot' into 'master'
     add afe759d  _platform/platform.py: Add powerpc64 and powerpc64le
     add d1d898b  Merge branch 'jjardon/powerpc64le' into 'master'
     add 2d63e53  setup.cfg: Set pytest default timeout
     add 8ec0183  Merge branch 'juerg/pytest-timeout' into 'master'
     add 31e577b  job.py: Do not call Process.close()
     add bb93d63  Merge branch 'juerg/job-process-close' into 'master'
     add 8a9e3cb  Drop support for `setup.py test`
     add 3930c84  Merge branch 'chandan/remote-setuppy-test' into 'master'
     add bba4361  _platform/platform.py: Add alias for sun4v
     add 0bc77c6  Merge branch 'chandan/platform-sunos' into 'master'
     add c28e83d  _platform/platform.py: Add alias for IBM AIX 7 powerpc
     add 9126e7f  Merge branch 'chandan/ibm-7-platform' into 'master'
     add e410e86  _casbaseddirectory: remove unused _copy_link_from_filesystem
     add dc984ff  sandbox: remove unused _callback
     add 98d9e06  sandbox: remove unused _issue_warning
     add 10d35a0  _sourcecache: remove unused list_sources
     add ed047c3  _sourcecache: remove unused _remove_source
     add 7636b6b  _sourcecache: remove unused _reachable_directories
     add ef76f45  _sourcecache: remove unused _update_mtime
     add a44c2eb  _state: remove unused add_maximum_progress
     add 7265eeb  Merge branch 'traveltissues/remove-unused' into 'master'
     add 2256ba6  setup.cfg: Don't collect tests from src directory
     add 08991a2  .gitlab-ci.yml: Add CI job to run tests without `--develop` flag
     add 55bf729  Merge branch 'chandan/fix-nocover-tests' into 'master'
     add 7fa5ccb  .gitlab-ci.yml: Fix command for randomized external tests
     add 0eca9e6  _scheduler/scheduler.py: Enforce SafeChildWatcher
     add 435880f  tox.ini: Add python3.8 to default environment list
     add 807f275  .gitlab-ci.yml: Add test environment for Python 3.8
     add 598ebf3  Merge branch 'chandan/python3.8' into 'master'
     add 59e8a3c  requirements: Add dependency on ruamel.yaml.clib
     add 803d800  Merge branch 'chandan/dependon-yaml.clib' into 'master'
     add 9167018  .gitlab-ci.yml: Drop unix CI job
     add c2449ad  _platform: Drop support for chroot sandbox
     add 1a2b229  sandbox: Drop chroot sandboxing backend
     add 2f5e682  tests: Drop chroot xfail/skipif
     add c8153bc  Merge branch 'juerg/drop-chroot-sandbox' into 'master'
     add 51f72e9  _platform: Don't use psutil.Process.cpu_affinity on unsupported platforms
     add 8961e27  Merge branch 'chandan/fix-cpu-count' into 'master'
     add f3f234b  Prepare NEWS for 1.91.3 development snapshot release
     add 51263e2  Merge branch 'chandan/tag-1.91.3' into 'master'
     add 78d366a  setup.py: Remove check for bubblewrap
     add 6a627ef  Merge branch 'chandan/no-warn-bwrap' into 'master'
     add bd3a77c  tests/artifactcache/config.py: Cast our tmpdir to a string
     add 2855243  Merge branch 'tlater/fix-monkeypatch-warning' into 'master'
     add 3c1936a  Make PipelineSelection a proper enum type
     add 0ae6205  _pipeline.py: Refactor if/elif/else usage
     add 5960a90  Merge branch 'tlater/pipeline-enums' into 'master'
     add 5c1a6ae  _frontend/widget.py: show_pipeline() Don't show buildable for junction
     add 928d8e6  Merge branch 'tpollard/showjunction' into 'master'
     add aed5c34  scheduler.py: Handle exceptions that are caught under the event loop
     add 35bc43c  Merge branch 'tpollard/loop_exception' into 'master'
     add 730302e  sandbox.py: Add combined_label() method to batch items
     add 0cf763a  _sandboxreapi.py: Improve batch command logging
     add d3c3833  tests/integration/workspace.py: Relax assert for buildbox-run
     add 97a86e4  Merge branch 'juerg/batch-command-logging' into 'master'
     add 959d1f2  tox.ini: Remove duplicated move of the coverage file
     add 379a09a  Remove integration tests for moved plugins
     add ff46a31  Tests: Remove bst-plugins-experimental dependency
     add 0804133  tests: Remove some ostree stuff
     add f62cb1b  tox.ini: Remove external plugins tests
     add d2cf34b  tox.ini: Move coverage handling in commands_post.
     add 2d2bd16  tox.ini: Add a external plugins environment test and run it in CI
     add 55ed6b5  Merge branch 'bschubert/standardized-tests' into 'master'
     add 0b75e62  loader.py: Optimize sorting of elements when they are multiple targets
     add d8ed228  Merge branch 'bschubert/optimize-loading-multiple-targets' into 'master'
     add afc92dc  .gitlab-ci.yml: Simplify test environment declaration
     add e3fde75  Merge branch 'chandan/gitlab-ci-toxenvs' into 'master'
     add 5a7c4c4  _frontend/app.py: Make message printing tick driven
     add 16cbb7c  userconfig.yaml: Add bool for disabling console output throttling
     add 8627439  Merge branch 'tpollard/messagerate' into 'master'
     add f2fd8c9  element.py: Remove unused __staged_sources_directory & assert
     add 28ec1c9  Merge branch 'tpollard/removeassert' into 'master'
     add c6795b4  tests/integration/project.conf: Remove unused external plugins
     add b41f5dd  Merge branch 'chandan/remove-bst-experimental-unused' into 'master'
     add a6f3f42  tox.ini: Bump version of bst-plugins-experimental to 0.14.0
     add 0d012ee  source.py: Introduce methods to query state instead of get_consistency
     add c48e89d  element.py: Rename '_source_cached' to '_has_all_sources_in_source_cache'
     add 93ebe49  element.py: Remove _get_consistency and introduce explicit methods
     add 4a47af2  source.py: Add a new 'is_resolved' to get whether a source is resolved.
     add 3be6d07  source.py: Remove the reliance on consistency to get whether a source is cached
     add 5cb2442  source.py: Remove 'get_consistency' completely
     add 6021d85  element.py: Compute whether an element is cached only on `is_cached`
     add ca133fe  element.py: Optimize _should_fetch condition
     add 5626988  types.py: Completely remove 'Consistency'
     add be1a14d  element.py: Stop asserting we are cached after fetch and mark us as such
     add 3554f36  NEWS: Add news information about Consistency breakage
     add a5b2396  Merge branch 'bschubert/optimize-consistency' into 'master'
     add 45507cc  Remove "deb" surce plugin, it has beem moved to bst-plugins-experimental
     add 9a6c7d7  Merge branch 'jjardon/move_deb_source' into 'master'
     add b4d472e  Plugins: Update entrypoint group for pip origin
     add 418ab6b  NEWS: Announce new entry point groups for plugins
     add f7f247a  doc/sample_plugin: Update name of entry point group
     add ef4041f  Merge branch 'chandan/plugin-namespace-fix' into 'master'
     add ba944bd  NEWS: Add mark for 1.93.0
     add cdb5627  Merge branch 'chandan/1.93.0' into 'master'
     add a5ee014  element.py: Optimize assemble_done()
     add 35dd0e0  Merge branch 'juerg/assemble_done' into 'master'
     add 451ba25  _frontend/cli.py: Make show() --use-buildtree respect pull semantics
     add bf5f207  Merge branch 'tpollard/shellbuildtree' into 'master'
     add 8aa7e8b  exceptions: Expose ErrorDomain, ErrorLoadReason
     add 2adcf79  testing: Add functions to generate yaml files
     add 1c3baa2  Merge branch 'coldtom/testing-api' into 'master'
     add c7346b1  _gitsourcebase.py: Refactor fetching and tracking
     add b9f61a9  _gitsourcebase.py: Fetch with depth=1 when an available tag is given
     add 2a49e08  _gitsourcebase.py: Strip git-describe tag info from cache key
     add 7c130a6  _gitsourcebase.py: Refactor latest_commit_with_tags
     add 1a057b0  Document my changes to the Git source plugin in NEWS
     add 8ff0d77  Add Git source test for depth=1 fetch with exact tag ref
     add bd2cd02  Merge branch 'tmewett/git-source' into 'master'
     add 211139d  .gitlab-ci.yml: Bump bst-plugins-experimental
     add 17a713f  Merge branch 'coldtom/fix-overnight-test' into 'master'
     add 496ff3a  .gitlab-ci.yml: build fdsdk needs cargo plugin and its dependencies
     add 47fb429  Merge branch 'jjardon/overnigth_cargo' into 'master'
     add 48ff666  .gitlab-ci.yml: Update BuildBox components to 0.0.6
     add db6207f  Merge branch 'juerg/buildbox' into 'master'
     add 01943af  tests/integration/interactive_build.py: Relax expect for buildbox-run
     add 5e16915  Merge branch 'juerg/buildbox-run-test' into 'master'
     add 020b20c  _sandboxreapi.py: Do not create directories for host-files
     add f7239fe  _sandboxbuildboxrun.py: Check buildbox-run capabilities
     add 044a9c6  _sandboxbuildboxrun.py: Support host-files
     add 4a3cba6  _sandboxbuildboxrun.py: Bind mount /dev in interactive mode
     add dba3d8b  tests/integration/shell.py: xfail update
     add 5c9da3a  Merge branch 'juerg/buildbox-run-bind-mount' into 'master'
     add d65be48  NEWS: Add note about the new buildstream.exceptions API
     add 9b9d4b1  NEWS: Add mark for 1.93.1
     add 6539d80  Merge branch 'juerg/1.93.1' into 'master'
     add a45666f  tox.ini: Update bst-plugins-experimental version to 1.93.1.1
     add b2938d9  .gitlab-ci.yml: Update bst-plugins-experimental version to 1.93.1.1
     add 546b3c1  Merge branch 'juerg/update-plugins' into 'master'
     add 8bb98fd  tests: Avoid testing file times along with umask
     add bd614b3  remote_execution: Update proto
     add 59b26c9  local_cas: Update proto
     add c4dafc8  utils.py: Add file timestamp helpers
     add 6f85763  cascache.py: Add properties to CaptureTree requests
     add 205786c  cascache.py: Parse timestamp and update mtimes in checkout
     add 78e0620  storage: Use specified mtime in import_files
     add 9cac160  storage: Support mtime property in Directory.import_files()
     add b48edd4  element.py: Do not discard explicitly set mtime of source files
     add 43b09b2  workspace.py: Import mtimes when staging
     add fb84786  tests/internals/storage_vdir_import.py: Test mtimes
     add e88e890  tests/remoteexecution: Remove xfail for non-incremental-time workspace
     add 447d56f  tests/remoteexecution/workspace.py: Improve test
     add 067ea76  Merge branch 'traveltissues/1216' into 'master'
     add d528fd8  _casbaseddirectory.py: Refactor _add_file
     add e618edf  _casbaseddirectory.py: Implement `_apply_changes`
     add 7a0d012  tests/internals/storage.py: Add merge tests
     add 6e65633  _casbaseddirectory.py: Use the new _add_entry where possible
     add 0591b0c  Merge branch 'tlater/CASdiff' into 'master'
     add 7d8a23f  sandbox: Remove unused _mounter.py
     add 9319c6f  utils.py: Drop device node support from _process_list()
     add b5477b2  cascache.py: Remove unused _get_subdir() method
     add 8799958  Merge branch 'juerg/remove-unused' into 'master'
     add 5df94c7  .gitlab-ci/buildgrid-compose.yml: Switch to buildbox-worker
     add 761b01b  Merge branch 'juerg/ci-re' into 'master'
     add 3cde9d2  _sandboxreapi.py: Optimize output_directories
     add 16b98a8  Merge branch 'juerg/sandbox-reapi-capture' into 'master'
     add 86c8294  element.py: Cache buildtrees by default for workspace builds
     add 7f30e22  tests: Remove stray workspaces.yml files
     add f886976  tests/integration/workspace.py: Fix test_workspace_commanddir
     add f04fd96  tests/integration/workspace.py: Fix test_incremental_configure...
     add d5238a8  storage: Remove unused Directory.set_deterministic_mtime()
     add 41168e4  _casbaseddirectory.py: Add assert to IndexEntry.get_directory()
     add 2ddcc45  _workspaces.py: Remove unused stage() method
     add 2d0ef3a  _workspaces.py: Increment format version, drop support for old versions
     add 7cd62cb  _workspaces.py: Drop `running_files`
     add 04c00da  _workspaces.py: Drop `prepared`
     add 1ee61a8  _workspaces: Rename `last_successful` to `last_build`
     add c45ea0d  element.py: stage_artifact(): Drop unused update_mtimes parameter
     add 386aa2e  _artifactcache.py: Remove unused diff() method
     add a9638ef  cascache.py: Remove unused diff_trees() method
     add e2a8068  utils.py: Remove unused FileListResult.combine() method
     add 42517fe  _artifact.py: Remove unused rootdir parameter from cache() method
     add bf068f8  _artifact.py: Remove unused get_metadata_dependencies() method
     add beb7835  sandbox: Remove unused _SandboxBatchCall
     add 03870cc  artifact.proto: Add sources field
     add 3669dcd  _artifact.py: Add helper methods for new sources field
     add 83c210e  element.py: Store sources vdir when caching buildtrees
     add ee456e8  _sandboxreapi.py: Support setting output_node_properties
     add 6fd63ac  element.py: Add MTime to output_node_properties for workspaced elements
     add 702fbd3  _artifact: Import workspaced artifacts with mtimes
     add ef060ad  _casbaseddirectory.py: Add _create_empty_file() method
     add 6cd3dad  _filebaseddirectory.py: Add _create_empty_file() method
     add 49c9e58  sandbox: Add _create_empty_file() method
     add 8318fef  buildelement.py: Use marker file to avoid rerunning configure
     add e85ecc8  element.py: Reimplement support for incremental workspace builds
     add ec7fb6e  tests/integration/workspace.py: Add incremental build test
     add 6cd3add  tests/integration/workspace.py: Test incremental build after failure
     add 2152945  tests/remoteexecution/workspace.py: Fix test and enable incremental
     add f126f0a  Merge branch 'juerg/incremental-workspace-build' into 'master'
     add fb91adc  _project.py: fix the case where a simple string is passed to host-files
     add 9c57c84  Merge branch 'abderrahim/simple-host-files' into 'master'
     add 25b2577  tests/integration/autotools.py: Check build log
     add f65299c  cascache.py: Don't trip up on empty digests in fetch_blobs()
     add cccf742  sandbox: Move log forwarding from SandboxREAPI to SandboxRemote
     add 802165c  _sandboxremote.py: Support stdout and stderr digests
     add d23cf67  Merge branch 'juerg/reapi-log' into 'master'
     add 701fa26  Docs: Add doc note about directories to core plugins
     add e76ee57  Merge branch 'willsalmon/directorynote' into 'master'
     add 6b77daa  Canonicalize OS name
     add df1e4e7  .gitlab-ci/buildgrid-compose.yml: Set platform properties
     add aead8c8  _sandboxreapi.py: Set OSFamily and ISA platform properties
     add cef76e3  _sandboxreapi.py: Set unixUID and unixGID platform properties
     add 0f80285  _sandboxreapi.py: Support optional network access
     add 5b2abcf  Merge branch 'juerg/reapi-platform' into 'master'
     add be27f17  _casbaseddirectory.py: Fix _exists()
     add 29feba0  _casbaseddirectory.py: Fix _create_empty_file()
     add 685ba29  _casbaseddirectory.py: Add support for directory node properties
     add e842b94  _casbaseddirectory.py: Add _set_subtree_read_only() method
     add 9892ae3  _sandboxreapi.py: Ensure mount points exist
     add 9cf7a8a  _sandboxreapi.py: Support read-only root
     add 7eceaa9  Merge branch 'juerg/reapi-readonly' into 'master'
     add 57c291b  _sandboxbuildboxrun.py: Fix signal handling
     add c4001c8  Merge branch 'juerg/buildbox-signals' into 'master'
     add 8edf482  _frontend/cli.py: Fix formatting for `bst show` help text
     add 71179f8  Merge branch 'chandan/fix-bst-show-formatting' into 'master'
     add f15d58d  _sandboxreapi.py: Sort platform properties by name
     add 49877ff  Merge branch 'juerg/reapi-platform' into 'master'
     add 77138b8  _casbaseddirectory.py: Tweak _add_file() parameters
     add 7ff1023  _casbaseddirectory.py: Mark find_root() method internal
     add dd1a455  _filebaseddirectory.py: Support follow_symlinks in descend()
     add f78e6ee  _filebaseddirectory.py: Improve _exists() method
     add 7fbfccc  storage: Add public Directory.exists() method
     add e4d49bc  utils.py: Add mode and encoding parameters to _tempnamedfile()
     add 94d6a50  storage: Add Directory.open_file() method
     add a5236ef  storage: Add generic Directory._create_empty_file() method
     add 78da6e3  Merge branch 'juerg/vdirectory' into 'master'
     add df4404b  _protos: Rebuild with latest protobuf
     add 1ce31d4  _protos: Update remote_execution.proto
     add c7e2b99  Merge branch 'juerg/reapi' into 'master'
     add 18a5495  node.pyx: Add note on node exceptions in plugins
     add 341940a  Merge branch 'tlater/node-exceptions' into 'master'
     add 605b5fb  _downloadablefilesource.py: don't download the file if etag matches
     add aec9deb  Merge branch 'abderrahim/etag' into 'master'
     add 4922c04  cascache.py: Create cas logs in the buildstream cache directory
     add ed88bf6  cascache.py: remove creation of the 'cas/objects' directory
     add 6d1c80b  Merge branch 'bschubert/stricter-cas-soc' into 'master'
     add be370e6  .gitlab-ci.yml: install requirements from git instead of pipy
     add 0b11fcb  Merge branch 'bschubert/fix-overnight' into 'master'
     add d874977  mount: don't pass nonempty option
     add ceb38d1  Merge branch 'abderrahim/fuse3' into 'master'
     add f3726a7  _sandboxbuildboxrun.py: Check for buildbox-run initialization errors
     add 340fd4e  Merge branch 'juerg/buildbox-run-error' into 'master'
     add 711eb3b  .gitlab-ci.yml: Drop tests-debian-9 job
     add 3ed61ee  .gitlab-ci.yml: Do not use Python 3.5 tox environments
     add 2c09f55  tox.ini: Drop Python 3.5 environments
     add 8b6cc68  setup.py: Require Python >= 3.6
     add 12b86f1  tests/format/junctions.py: Drop Python 3.5 compatibility
     add 868b22e  NEWS: Add note about requiring Python >= 3.6
     add 8ffc222  Merge branch 'juerg/python-3.6' into 'master'
     add b11795a  .gitlab-ci.yml: Update BuildBox components to 0.0.7
     add a002ce6  tests/integration/build-uid.py: Don't skip tests with buildbox-run
     add 60bff41  tests/integration/script.py: Drop read-only root xfail for buildbox-run
     add 0c21df1  Merge branch 'juerg/buildbox' into 'master'
     add 9d837bb  _project.py: resolve options before running the final assertions
     add 6254f9c  Merge branch 'abderrahim/options' into 'master'
     add edcd52f  .gitlab-ci.yml: Allow WSL test to fail
     add daccb77  Merge branch 'jjardon/allow_fail_wsl' into 'master'
     add 937253e  _casbaseddirectory.py: Fix encoding in open_file() for binary files
     add 90c1646  _filebaseddirectory.py: Fix encoding in open_file() for binary files
     add 8b093f9  _casbaseddirectory.py: Fix file mode in export_to_tar()
     add 208b2b4  _casbaseddirectory.py: Sort entries in export_to_tar()
     add c6b6446  _filebaseddirectory.py: Clear uid/gid/uname/gname in export_to_tar()
     add 35cccea  tests/frontend/buildcheckout.py: Check mode and uid/gid in tarball
     add 7e0d049  Merge branch 'juerg/export-to-tar' into 'master'
     add 33040c3  .gitlab-ci.yml: Don't run win32 and wsl tests in scheduled pipelines
     add 9ba60e6  Merge branch 'juerg/ci-schedules' into 'master'
     add a4738ec  _artifact.py: don't consider an artifact cached if public data is missing
     add d3e3229  cascache.py: use buildbox-casd when checking whether a file is cached
     add f42dd71  Merge branch 'abderrahim/public-data' into 'master'
     add 8c9fa61  Revert ".gitlab-ci.yml: Allow WSL test to fail"
     add 358a6dd  Merge branch 'jjardon/wsl' into 'master'
     add 9f5cc38  _signals.py: Allow SIGTERM handler to call `os.exit()`
     add 637a125  job.py: Use `_signals.terminator()` to handle `SIGTERM`
     add 18c9cdd  _sandboxbuildboxrun.py: Reduce SIGTERM timeout to 15s
     add ef26306  Merge branch 'juerg/job-sigterm' into 'master'
     add 79403f6  doc/source/main_glossary.rst: Fix docs build errors
     add 3d5c183  Merge branch 'tristan/fix-docs-build-error' into 'master'
     add 96430e2  node.pyx: MappingNode.get_int(): Support `None` as default
     add afb35bb  sandbox: Make build-uid and build-gid configuration optional
     add d75b0fc  Drop concept of partially supported sandbox configuration
     add d2a7f0a  element.py: Move sandbox configuration check to __sandbox()
     add 5b48b47  sandbox: Reinitialize class when pickle is used
     add 129b19d  _sandboxbuildboxrun.py: Detect platforms supported by buildbox-run
     add 4bdb973  Merge branch 'juerg/platform' into 'master'
     add 86f013d  Process options in includes files with the options of their junction
     add 431cd16  Merge branch 'valentindavid/include-options-from-junction' into 'master'
     add 2d66d5b  element.py: Fix strong cache key calculation in non-strict mode
     add d36340d  element.py: Tweak cache key calculation for `BST_STRICT_REBUILD`
     add 954ede7  tests/frontend/buildcheckout.py: Add non-strict test
     add 5d0049a  Merge branch 'juerg/cache-key' into 'master'
     add 061ca4c  doc/source/main_glossary.rst: rename 'Core Plugin' -> 'Core plugin'
     add 48f8fdf  doc/source/format_intro.rst: Clarifications around directives
     add 00e2ab8  doc/source/using_tutorial.rst: Renamed to "Getting started"
     add c3e4978  doc/source/using_developing.rst: Renamed to "Developing"
     add 35cca74  doc: Refactoring junction documentation
     add 5e79a84  doc/examples/junction-includes: Adding new example about includes with junctions
     add 0060e69  doc/examples/directives: Add user guide for using project options and directives
     add 9cc9ae9  doc/examples/strict-mode: Adding a user guide for using non-strict build plans
     add b2a8fc1  doc/examples/composition: Adding user guide about split-rules and compose elements
     add 6b9619b  doc/examples/filtering: Added a new user guide entry about filter elements
     add 98ca2be  doc/examples/overlaps: Added new user guide entry for overlapping files
     add 548ec0c  doc/source/conf.py: Update copyright year
     add 03b7113  doc/source/sessions-stored: Refreshing built session files
     add f093e63  Merge branch 'tristan/user-guide-refactor' into 'master'
     add 5d3c72f  tests/sources/tar.py: Fix flaky test_out_of_basedir_hardlinks
     add b2c5f01  tests/internals/cascache.py: Increase sleep duration to fix flaky test
     add 74bbafa  Merge branch 'juerg/tar-hardlinks' into 'master'
     add 90eecfa  _artifactcache.py: Fix misleading log message when pulling artifacts
     add d946255  _artifactcache.py: Handle BlobNotFound error in pull()
     add 50dc149  cascache.py: Add allow_partial parameter to fetch_blobs()
     add 3ed4200  tests/frontend/pull.py: Add test_pull_missing_blob_split_share
     add ed2e202  _cas/cascache.py: Add contains_files() method
     add 908f143  _artifact.py: Don't consider an artifact cached if logs are missing
     add 442b131  _cas/cascache.py: Drop unused contains_file()
     add cc087ae  _casbaseddirectory.py: Fix temp file permissions in open_file()
     add 70c4171  _artifact.py: Don't cache the proto of incomplete artifacts
     add f422057  tests/frontend/push.py: Add test_push_after_rebuild
     add 3d77f15  Merge branch 'juerg/artifact-blob-not-found' into 'master'
     add af057b6  pip source plugin: Add support for python 3.8
     add 034f989  Merge branch 'tristan/pip-source-3.8' into 'master'
     add 1e0339d  tox.ini: Use new ostree plugin for generating documentation.
     add b387813  doc/Makefile: Ensure we error out if bst2html.py fails.
     add fc39f81  Merge branch 'tristan/fix-doc-builds' into 'master'
     add 668c9c0  src: Removing all pre 2.x "Since" documentation annotations.
     add 1a2a790  doc/source/hacking/coding_guidelines.rst: Adjusting "Since" guidelines.
     add e93d33b  Merge branch 'tristan/remove-old-version-annotations' into 'master'
     add 0b92a1f  Fix typo namspaceing -> namespacing
     add f685c31  Merge branch 'seanborg/buildstream-seanborg/documentation-typos'
     add 31c1600  _exceptions.py: Propagate `temporary` to the base class
     add 6c6d8f8  Merge branch 'juerg/temporary-failure' into 'master'
     add 91dcc03  .gitlab-ci.yml: Update to CentOS 7.7
     add 10de418  Merge branch 'juerg/centos-7.7' into 'master'
     add d6abc06  tests: Stop using tmpdir_factory.mkdtemp("")
     add 943e255  Merge branch 'bschubert/fix-mktemp-usage' into 'master'
     add 4c4456a  filetypegenerator.py: Close socket after usage
     add 701f065  tests: Correctly handle resources when opening files in tests
     add b853d9a  Merge branch 'bschubert/no-warnings' into 'master'
     add f070f66  types.py: Add a __str__ to PipelineSelection to fix man pages
     add 63b9c7e  Merge branch 'bschubert/fix-manpages' into 'master'
     add f84defb  setup.cfg: Increase pytest default timeout
     add 0024c46  tests/testutils/constants.py: Increase pexpect timeouts
     add 350880f  tests/format/variables.py: Increase timeout for test_cyclic_variables
     add bacc060  Merge branch 'juerg/test-timeouts' into 'master'
     add 6ef6be5  Replace format-version with min-version
     add e5e776c  Remove documentation references to format_version
     add 1ef604f  doc/source/hacking/writing_plugins.rst: Remove some docs about format-version
     add d33c2d9  doc/source/format_project.rst: Documenting "min-version"
     add fe3b3f5  NEWS: Adding note about breaking change format-version -> min-version
     add 0307e55  Merge branch 'tristan/min-version' into 'master'
     add 968897f  Remove bst shell --sysroot
     add 67ea61f  _stream.py: shell(): Require sources only for build shells
     add 1f37528  Merge branch 'juerg/shell-sysroot' into 'master'
     add 8ea28d3  element.py: Create destination directory in stage_artifact()
     add f1b44c1  _casbaseddirectory.py: Remove unused _copy_link_from_filesystem()
     add a1c85b0  _casbaseddirectory.py: Validate path components
     add 5e6dc5f  _filebaseddirectory.py: Fix mode="x" in open_file()
     add ac7e20f  storage: Directory.open_file(): Allow w+ and x+ modes
     add 236382d  storage: Implement __iter__ in Directory classes
     add c20e921  storage: Add Directory.stat() method
     add f48a431  directory.py: Add isfile(), isdir() and islink() methods
     add 7948b80  storage: Add Directory.file_digest() method
     add c8bd565  storage: Add Directory.readlink() method
     add 047549f  storage: Add Directory.remove() method
     add 9ce3da0  storage: Add Directory.rename() method
     add 95d0fda  tests/internals/storage.py: Add tests for new Directory methods
     add 8db4a7d  Merge branch 'juerg/vdirectory' into 'master'
     add 37a1f33  NEWS: Update for 1.93.2
     add dd29f0d  Merge branch 'juerg/1.93.2' into 'master'
     add 5aa5c7c  node.pyx: Add '__str__' to 'Node'
     add db4f997  Merge branch 'willsalmon/more_as_str' into 'master'
     add e1f96f6  sandbox: Remove Sandbox.get_directory()
     add fc66c36  element.py: Drop BST_VIRTUAL_DIRECTORY
     add f142dce  Merge branch 'juerg/vdirectory' into 'master'
     add d828169  .gitlab-ci.yml: Update Docker images
     add 051e04a  _platform.py: Reset Sandbox._dummy_reasons in _check_sandbox()
     add eada71c  testing/_utils/site.py: Check that buildbox-run has all dependencies
     add 312afad  Switch preferred sandbox from bwrap to buildbox-run
     add f29bdbe  .gitlab-ci.yml: Drop buildbox-run job
     add 642a87d  .gitlab-ci.yml: Add bwrap job
     add 82eb1d4  Merge branch 'juerg/sandbox' into 'master'
     add d63bd7e  Plugin loading refactor, removing all versioning
     add 3b1af60  tests/plugins/deprecationwarnings.py: Moved from it's subdirectory
     add b3556a3  tests/plugins/loading.py: New test replaces removed internal test
     add a311a14  plugin.py/pluginfactory.py: Implementing BST_MIN_VERSION
     add fdaf73f  tests/plugins/loading.py: Added tests for plugin BST_MIN_VERSION guards
     add 1339b0e  tox.ini: Update reference to updated plugins with BST_MIN_VERSOIN set
     add e70d77f  Merge branch 'tristan/plugin-versions-refactor' into 'master'
     add 47e5319  NEWS: Updating news for 1.93.3 snapshot.
     add 350fa7d  Merge branch 'tristan/update-news' into 'master'
     add 1f74bd7  _stream.py: Fetch sources while launching build shells
     add 9796d1d  Merge branch 'chandan/build-shell-fetch' into 'master'
     add e3c2792  CONTRIBUTING: Remove link for obsolete issue policies
     add 557690e  Merge branch 'chandan/no-nosoftware' into 'master'
     add 9084ae1  _pluginfactory/pluginfactory.py: Add provenance to missing plugin errors
     add e13275b  tests/plugins/loading.py: Migrate tests for found/not found plugins
     add d1d002d  plugin.py: Rework how deprecation warnings are configured.
     add 2211714  Merge branch 'tristan/deprecation-warnings-refactor' into 'master'
     add 1516982  tests/plugins/pip-samples/sample-plugins: Adding a sample pip plugins package
     add 60bae6d  tox.ini: Install the sample pip plugin package when running tests
     add 53b7374  tests/plugins/loading.py: Added test for loading pip pluings
     add f17b842  _pluginfactory/pluginorigin.py: Store provenance of origins for error reporting
     add 1725965  _pluginfactory/pluginfactory.py: Implement error reporting for pip origins
     add 3f90c2f  tests/plugins/loading.py: Test failure modes when loading pip plugins
     add e4a9cc3  docs/source/format_project.rst: Enhance documentation on plugin origins.
     add a79eadb  Merge branch 'tristan/pip-plugin-versioning' into 'master'
     add 7589dca  doc/format_project: Add links related to virtual environments
     add 045a7fd  Merge branch 'chandan/venv-install-link' into 'master'
     add a6eb85d  casdprocessmanager.py: Relax timeout for establishing buildbox-casd connection
     add 7ca09c6  casdprocessmanager.py: Check if buildbox-casd process is alive while waiting for connection
     add 023e63b  Merge branch 'ctolentino/casd-timeout' into 'master'
     add 81e5ce7  _downloadablefilesource.py: Set user agent
     add 9b42678  Merge branch 'willsalmon/useragnet' into 'master'
     add 0350028  junction.py: Call node.validate_keys() in Plugin.configure()
     add ceedc48  Merge branch 'tristan/validate-junction-config' into 'master'
     add da5b798  setup.py: Also run pylint on this file
     add d454216  setup.py: Also run black
     add fd0a87b  Merge branch 'bschubert/pylint-setup-py' into 'master'
     add 6c4a7db  .gitlab-ci.yml: Move from license-management to license-scanning
     add 14dd359  Merge branch 'bschubert/fix-template-scanning' into 'master'
     add cae8cd1  downloadablefilesource.py: Make it publicly accessible
     add 4adcb05  Merge branch 'bschubert/make-downloadable-filesource-public' into 'master'
     add bc0d564  element.py: Fix documentation around `node` usage
     add 6156823  Merge branch 'bschubert/fix-node-docs' into 'master'
     add 8287c6a  Return names of grpc errors
     add c8ed8f9  Merge branch 'traveltissues/grpccodes' into 'master'
     add 2b8c2dc  pip.py: Remove the pip element, it is in experimental
     add 8797ab1  Merge branch 'bschubert/remove-pip-element' into 'master'
     add db2039f  lint: Stop using mutable objects for default arguments
     add f5e8a54  Update all packages requirements
     add b9f0126  Merge branch 'bschubert/update-requirements' into 'master'
     add d0336f7  tests/integration/manual.py: Fix assertion for CLI invocation
     add 7b53e48  Merge branch 'chandan/fix-manual-test' into 'master'
     add 4549665  testing.py: Add a new `check_cache_key_stability` helper
     add 10aeb94  Merge branch 'bschubert/cache-key-helper' into 'master'
     add e5ed02d  element.py: Always expand all variables at element creation
     add c99aa67  option.py: Remove 'transform' flag. It is not needed anymore
     add d7d18c1  Merge branch 'bschubert/resolve-variables' into 'master'
     add 812e790  buildelement: Ensure command-subdir is part of the cache key
     add cd7132a  NEWS: Add note about breaking cache key change
     add 011f591  Merge branch 'chandan/builddir-cachekey' into 'master'
     add 1ff22fb  source.py: Don't re-declare __init__ in source implementations
     add 830e214  source.py: Allow access to element's variable
     add 3408afb  Merge branch 'bschubert/allow-source-variables-access' into 'master'
     add d25e210  _sandboxbuildboxrun.py: Pass --no-logs-capture to buildbox-run
     add be45827  Merge branch 'juerg/no-logs-capture' into 'master'
     add e613450  utils.py: Improve error handling of _parse_version().
     add 39cf9be  tests/plugins/loading.py: Added tests for various malformed BST_MIN_VERSION
     add 0769103  Merge branch 'tristan/plugin-min-version-fault-tolerance' into 'master'
     add a34ff40  _frontend/cli: Support "build" value for `bst build --deps`
     add c3198f5  _frontend/cli: Support "build" and "run" values for `source fetch --deps`
     add f196019  _frontend/cli: Support "build" and "run" values for `artifact pull --deps`
     add 5018a61  _frontend/cli: Support "build" and "run" values for `artifact push --deps`
     add 3f08bb2  Regenerate man pages
     add dd2eb18  Merge branch 'chandan/cli-deps-2' into 'master'
     add be2a3e6  casdprocessmanager.py: Check that buildbox-casd process is not a zombie
     add 4819011  Merge branch 'ctolentino/check-casd-process' into 'master'
     add b8b4031  Ensure there are no duplicates in Elements.dependencies()
     add 0c9ca74  Merge branch 'chandan/duplicate-format-deps' into 'master'
     add 6157b4f  _frontend/profile: Use non-greedy search to substitute variables
     add ef00fc2  Merge branch 'chandan/fix-subst-non-greedy' into 'master'
     add a8b3222  node.pyx: Deep clone ScalarNode too
     add 7cdd7f4  Merge branch 'bschubert/ensure-composite-works-with-variables' into 'master'
     add a247912  _scheduler: Fix order of launching jobs and sending notifications.
     add f41c4dc  _scheduler/scheduler.py: Reset the schedule handler at the beginning of real_schedule()
     add 99063c7  Merge branch 'tristan/improve-frontend-crash-handling' into 'master'
     add d8dc6bc  _loader/loader.py: Reoganized public/private methods
     add 654bf55  Merge branch 'tristan/loader-api-fixup' into 'master'
     add fee2a26  _protos: Update remote_execution.proto
     add 68945db  _protos: Update local_cas.proto
     add 9826e11  Update node property support to match proto changes
     add ba31c25  .gitlab-ci.yml: Update BuildBox components to 0.0.8
     add f51653d  Merge branch 'juerg/node-properties' into 'master'
     add b8e8108  Revert "element: remove _is_required()/__required"
     add dfdd3d5  Revert "Schedule elements instead of "requiring" them"
     add 7003d5e  Revert "Simplify queue management"
     add bc862f1  tests/frontend/pull.py: Add test for dynamic build plan
     add 1a85a6d  Merge branch 'juerg/dynamic-plan' into 'master'
     add 3f41802  _pluginfactory: Delegating the work of locating plugins to the PluginOrigin
     add ec91f1f  _pluginfactory/pluginoriginjunction.py: Add support for junction plugin origin.
     add 37d680f  tests/plugins/loading.py: Adding tests for junction plugin origin
     add c5fd2a4  doc/source/format_project.rst: Documenting the junction plugin origin.
     add 27ac938  Merge branch 'tristan/junction-plugin-origin' into 'master'
     add 692df79  doc/source/format_declaring.rst: Fixing spelling mistake
     add 2b409a2  Merge branch 'tristan/junction-docs-touchup' into 'master'
     add 53beb92  Move sandbox YAML processing from Element to SandboxConfig
     add 1a94912  element.py: Expand variables in sandbox config
     add 0e6bef6  tests/integration/sandbox.py: Test variable expansion in sandbox config
     add c690319  Merge branch 'juerg/expandsandbox' into 'master'
     add 90628b1  .gitlab-ci.yml: Configure SAST analyzers
     add a7b5f2a  Merge branch 'juerg/sast' into 'master'
     add 71a3639  cascache.py: Drop unnecessary FindMissingBlobs from _send_directory()
     add 976439c  Merge branch 'juerg/cas-send-directory' into 'master'
     add f604ad9  element.py: Always expand public data's variables
     add e0716d7  Merge branch 'bschubert/resolve-public-variables' into 'master'
     add f5c9a4e  _context.py: Support parallel installations of BuildStream
     add e3de12e  tests/internals/context.py: Test correct config file is chosen.
     add 30d8cb6  doc/source/using_config.rst: Document support for version specific config files.
     add f2a5dbe  Merge branch 'tristan/version-specific-config' into 'master'
     add 49ab0bc  loader: removing the NO_PROGRESS object
     add 925a6ab  Merge branch 'tristan/remove-loader-no-progress-object' into 'master'
     add 15cd8c8  _loader/loader.py: Remove useless line of code.
     add 32a5317  Merge branch 'tristan/loader-fixes' into 'master'
     add abb500b  _loader/loader.py: Make collect_element_no_deps() public
     add f774efa  link element: Adding support for new link element
     add 35f0545  tests/format/link.py: Adding tests for the link element
     add 6ec85d2  doc: Adding new `link` plugin to the core plugin index
     add e5d0e0c  junctions: Remove all traces of the `target` option
     add e493065  NEWS: Updated for breaking change of junction target removal
     add 2beaa28  Merge branch 'tristan/link-element' into 'master'
     add 42405d8  Update target branch in FD overnights
     add 76c51c2  Merge branch 'traveltissues/update-overnight' into 'master'
     add 8ae5e11  Optimize variable flattening
     add 53b8d04  Merge branch 'valentindavid/optimize-variables' into 'master'
     add ae3a70b  tests/integration/cachedfail.py: Do not skip test with buildbox-run
     add b8fa4ae  .gitlab-ci.yml: Drop bwrap job
     add 93981f2  tests: Drop bwrap-specific tests
     add acf751b  linux.py: Drop bwrap support
     add be13a5c  darwin.py: Update error message
     add 2979229  _platform: Drop maximize_open_file_limit()
     add 316e658  Drop SandboxBwrap
     add b487a11  sandbox: Drop _use_cas_based_directory()
     add 8655375  sandbox: Drop unused _mount.py
     add 4162e8d  sandbox: Remove unused root and scratch directories
     add 3a0db49  Drop unused _fuse package
     add 632938f  linux.py: Remove unused can_crossbuild() and _uid/_gid
     add 5ec2f21  doc/source/arch_sandboxing.rst: Update for buildbox-run
     add 0b79b37  NEWS: Add note about dropping bwrap sandboxing backend
     add 07275d0  Drop sandbox selection and BST_FORCE_SANDBOX
     add cbf4904  Drop Platform subclasses and BST_FORCE_BACKEND
     add 1a40438  Merge branch 'juerg/sandbox-drop-bwrap' into 'master'
     add 09b2c85  casdprocessmanager.py: make sure --protect-session-blobs is always passed
     add feb82ab  Merge branch 'abderrahim/protect-blobs' into 'master'
     add c9a00fd  _loader/loadelement.pyx: Load full element names recursively.
     add 5cc0156  plugin.py: Load full element names recursively.
     add ba33095  _loader.py: Support full path dependencies and targets
     add 55e59d2  _pluginfactory/pluginoriginjunction.py: Call get_loader() with provenance.
     add 13f8266  _includes.py: Use rsplit to split included yaml instead of split
     add d7242d4  tests/format/junctions.py: Test loading dependencies and targets with full paths
     add 5a2a9f4  tests/plugins/loading.py: Testing junction plugins with full paths
     add 6c01402  tests/format/link.py: Testing full path link targets
     add bcb0359  tests/format/include.py: Test including of files using full paths
     add 34c5ce3  docs: Updating documentation regarding element names and addressing.
     add 1386ddf  Merge branch 'tristan/element-full-paths' into 'master'
     add 202107e  _yaml.pdx: Remove false presumption from EISDIR error message
     add dd7b31e  _includes.py: Propagate provenance through Loader.get_loader()
     add 25fda16  _loader/loader.py: Make provenance a positional argument
     add d9fc31b  Merge branch 'tristan/get-loader-provenance' into 'master'
     add a46d7d5  sandbox/_sandboxremote.py: Improved log messages
     add 57c7312  Merge branch 'scottclarke/remote-build-message' into 'master'
     add cc093b0  utils.py: Fix error handling in safe_copy()
     add 81c0fb1  utils.py: Make copystat optional in safe_copy()
     add 725435f  cascache.py: Fix file modes in checkout()
     add 6f335e2  Merge branch 'juerg/object-file-mode' into 'master'
     add c8e0aa7  .gitlab-ci.yml: Update BuildBox components to 0.0.9
     add e1ee661  Merge branch 'juerg/buildbox' into 'master'
     add af4903d  _context.py: Put the source_cache_specs close to the other cache specs
     add 2c9d87e  _project.py: reorganize __init__()
     add f1c4825  Merge branch 'tristan/reorganize-project-context-init' into 'master'
     add f72aa20  tests/frontend/workspace.py: Removing tests
     add 618173c  _frontent/cli.py: Removed message to user informing the workspace is closed.
     add d5121cc  _stream.py: Remove workspace_is_required()
     add b29172e  _project.py: Remove invoked_from_workspace_element()
     add 2eccea8  _project.py: Reorganize methods
     add eec0ce4  Merge branch 'tristan/remove-some-internal-api' into 'master'
     add 0c14551  NEWS: Preparing for 1.93.4 snapshot
     add 5daa22a  Completely abolish job pickling.
     add 3774ce4  Merge branch 'tristan/nuke-pickle-jobber' into 'master'
     add deb6562  _loader: Adding LoadContext
     add 05ecd80  Merge branch 'tristan/load-context' into 'master'
     add 76f764b  _signals.py: Remove code for python3.5 support
     add 97204c7  conftest.py: Ensure the `basetemp` is a resolved path
     add e4e3b45  Merge branch 'bschubert/cleanups' into 'master'
     add ed02757  _loader: Fix invalid junction error to include provenance
     add a4a9b5f  tests/format/junctions.py: Major refactor
     add f08f1f0  tests/frontend: Renaming some projects to avoid new conflicts
     add f6c200e  doc/examples/junction-includes: Renamed project to avoid name conflict
     add 5f75fef  junctions: Replace coalescing with explicit overrides
     add 364ea9d  tests/format/junctions.py: Adding tests for the overrides feature
     add 9da47db  _loader: Add support for duplicate junctions
     add 938ce5a  tests/format/junctions.py: Adding tests for duplicate junctions
     add 05f6958  _project.py: Implement internal junctions
     add 0384aad  tests/format/junctions.py: Adding tests for internal junctions
     add 3d5d655  docs: Updating documentation regarding junctions and conflicts.
     add 88f280d  Merge branch 'tristan/junction-jungle' into 'master'
     add 43126fd  casdprocessmanager.py: Set `_bytestream` to `None` when closing channel
     add 771c332  casserver.py: Fix error handling for requests forwarded to casd
     add 257426c  Merge branch 'juerg/cas' into 'master'
     add ea520f9  _artifactcache.py: Skip push only if server has identical artifact
     add dd16615  tests/frontend/push.py: Add test_push_update_after_rebuild
     add c310f20  Merge branch 'juerg/push' into 'master'
     add 5709bb8  All: Update all references to the mailing list.
     add 94dcc28  Merge branch 'tristan/update-mailing-list' into 'master'
     add 7c03094  tests/testutils/artifactshare.py: Fix sourcedir
     add 8745864  Add `bst source push` command
     add 9c41a3c  Regenerate man pages
     add 0355517  NEWS: Add note for `bst source push`
     add 4a23653  tests/sourcecache/fetch.py: Use `bst source push` to replace hack
     add 74c044d  tests/frontend/remote-caches.py: Split test_source_artifact_caches
     add ad6987e  Merge branch 'juerg/source-push' into 'master'
     add 7fde8dd  app.py: Remove unnecessary operation in _message()
     add 17548eb  sandbox.py: Remove unused import
     add e79f4a0  Merge branch 'bschubert/cleanup' into 'master'
     add e16433a  scheduler.py: Remove 'Message' notification type, use the messenger
     add 3cb61cf  scheduler.py: Remove task-based notifications and use the state
     add 472e3d1  _state.py: Only use a single place of truth for the start time
     add 46556cb  scheduler.py: Pass all 'retry' operations through the state
     add f701a80  _stream.py: Stop using a 'SUSPENDED' event to know the state of the scheduler
     add 7dd8800  _stream.py: Stop using a 'TERMINATED' event to know the state of the scheduler
     add 598345c  _stream.py: Stop using a 'RUNNING' event to know the state of the scheduler
     add 61dd3d6  scheduler.py: Remove notifications from scheduler to stream
     add cb2acc3  scheduler.py: Remove all usage of notifications
     add 99d827f  Merge branch 'bschubert/simplify-stream-interactions' into 'master'
     add df201d0  tar.py: Don't import 'dev' nodes
     add 4528ede  Merge branch 'bschubert/tar-filter-nondev' into 'master'
     add f446ec9  coding_guidelines.rst: Update documentation around type annotation
     add 9330cda  Merge branch 'bschubert/mypy-docs' into 'master'
     add 0301ec2  Don't strip '.bst' from user-supplied checkout dir
     add 7ff7fb5  Merge branch 'dwinship/dont-strip-bst-from-user-supplied-checkout-dir' into 'master'
     add 8367906  fix tab-completion: hardcode default min version
     add c25c819  Merge branch 'dwinship/fix-tab-completion' into 'master'
     add cd7e2d6  Update bst-plugins-experimental to 1.93.4
     add ac02b57  Merge branch 'bschubert/update-plugins' into 'master'
     add 7615cba  doc/main_glossary.rst: Fix formatting of .bst file reference
     add 0b6c833  Merge branch 'chandan/minor-formatting-fix' into 'master'
     add dc2ddc8  Update overnight tests for freedesktop-sdk
     add a13693e  Merge branch 'dwinship/overnight-freedesktop-sdk-buildstream2' into 'master'
     add 95e83d9  _project.py: Documenting why ensure_fully_loaded() is reentrant.
     add 0f61dad  _loader: Treat `link` elements like junctions
     add b3d09d6  tests/format/link.py: Added test for including files across linked junction boundaries
     add b7d6f23  Merge branch 'tristan/fix-juncle-include-link' into 'master'
     add a7be47d  _platform/platform.py: Remove outdated comment
     add bb579a1  Merge branch 'chandan/remove-outdated-comment' into 'master'
     add e59cdd2  loader.py: use the full name of the element when looking up a workspace
     add f3512c2  Merge branch 'abderrahim/loader-workspace' into 'master'
     add 852aa13  Remove Aarch64 from overnights
     add 75f3009  Merge branch 'dwinship/remove-Aarch64-from-overnights' into 'master'
     add e7d085f  .gitlab-ci.yml: Remove undefined PLUGINS_TESTS_COMMAND
     add 6e62f33  .gitlab-ci.yml: Run missing-deps as a normal user
     add 8536dea  Merge branch 'chandan/spring-clean' into 'master'
     add 38437cd  Remove the suggestion that BuildGrid can be used as an artifact server
     add bcb789d  Merge branch 'sotk/update-artifact-server-docs' into 'master'
     add 65db30a  element.py: don't use timed activity for staging every artifact
     add 64d257e  Merge branch 'abderrahim/timed' into 'master'
     add d053a61  _variables.pyx: Rewrite Variables code.
     add fcaa416  tests/format/variables.py: Added some new tests
     add bba8317  tests/frontend/overlaps.py: Test undefined variables
     add 8f8eef5  _variables.pyx, element.py: Lazy variable resolution
     add 59e6e2a  tests/format/variables.py: Adding new test for lazy variable resolution
     add f5d6bae  Merge branch 'tristan/partial-variables' into 'master'
     add b6e4207  Adding CODEOWNERS
     add d03c144  Add a remote cache to overnight builds
     add fecf353  Merge branch 'willsalmon/overnightcache' into 'master'
     add 24703a8  node.pyx: Support merging of conditional sequences
     add 03097d0  tests/format/include.py: Test preservation of conditionals at include time
     add 4098290  Merge branch 'tristan/options-order' into 'master'
     add 3e8af8a  element.py: move printing the build environment from elementjob.py
     add 69df577  Rework handling of cached failures
     add b4aaf35  element.py: allow re-scheduling failed builds
     add e906d76  tests/integration/interactive_build.py: make a new test for retrying failed builds
     add 7f0e020  Merge branch 'abderrahim/cached-failure' into 'master'
     add 8fdcef5  tests/format/variables.py: Increase timeout
     add b4a5df2  Merge branch 'tristan/increase-timeout-variables-test' into 'master'
     add e6edb86  Reintroduce install instructions to docs
     add 99d59a3  Remove install instructions to ostree and deb plugins
     add 7137362  Merge branch 'dwinship/reintroduce-install-instructions-to-docs' into 'master'
     add c7f9214  data/userconfig.yaml: Document valid symbols for format strings
     add 06f4064  Merge branch 'chandan/fix-utils-495' into 'master'
     add b691863  doc/source/main_install.rst: BuildStream doesn't directly depend on fuse
     add dc8432f  doc/source/main_install.rst: BuildStream doesn't directly depend on bubblewrap
     add 650a512  Merge branch 'jjardon/doc_fuse' into 'master'
     add b04dfb2  Publish our type annotations
     add 104c715  Merge branch 'chandan/publish-types' into 'master'
     add f45f33b  requirements.txt: Update dependencies
     add 981ad36  Merge branch 'bschubert/update-to-pytest-6' into 'master'
     add 78aa203  _frontend/app.py: Catch exceptions in `_print_summary()`
     add 7a9dd09  _frontend/widget.py: Add context to errors in `show_pipeline()`
     add 5c1468e  source.py: Validate cache when it's used, not in `_is_cached()`
     add 6a84970  element.py: Drop cache checks from `_tracking_done()`
     add 10b0f00  element.py: Drop `__has_all_sources_cached` instance variable
     add 38f7010  element.py: Push all sources
     add ff18016  Extract ElementSources class
     add 16a5a20  Merge branch 'juerg/element-sources' into 'master'
     add 1b65a23  element/source: Remove pointless extra variable
     add 4f5e799  Merge branch 'tristan/cleanup-pickle' into 'master'
     add 7dffdec  doc/using_the_testsuite: Link to instructions for runtime dependencies
     add 9351fbd  Merge branch 'chandan/contrib-runtime-deps' into 'master'
     add 89b3fa4  _stream.py: Conditionally call the session startup frontend callback.
     add 7f2bc71  _yaml.pyx: Make shortname a mandatory argument to _yaml.load()
     add 1e0aaf4  _project.py: Only one set of plugin factories
     add cbc592b  _project.py, _loader/loadcontext.py: Added Project.loaded_projects()
     add 6798ea2  _pluginfactory: Make list_plugins() report new display information
     add 89a1c1b  _frontend/widget.py: Refactor the Widget.print_heading() function
     add 83cff41  doc/source/format_project.rst: Documenting keys which must be in project.conf
     add 97eac15  NEWS: Document breaking change, keys which can only be specified in project.conf
     add e3cb8b5  Merge branch 'tristan/fix-redundant-session-headings' into 'master'
     add c38036d  _loader: Use only one Dependency() class
     add f5384af  _loader/loadelement.pyx: Dependency now implements `provenance` as a property
     add 9b67820  _loader/loadelement.pyx: Removed an unused line of code
     add 173cd6e  Merge branch 'tristan/loader-dependency-refactor' into 'master'
     add c791cd8  _frontend/cli.py: Fix `artifact checkout` with no arguments
     add 8935cbb  Merge branch 'chandan/fix-artifact-checkout' into 'master'
     add 3336442  Artifacts configuration for test can also push
     add 46e92ea  Add tests for checking the working of a remote cache
     add 63607cf  Test buildstream with a reference cache server
     add ae01de8  Create template for remote tests
     add 1c07f17  Use a template for docker-variables
     add aefc581  Merge branch 'tcanabrava/cache-server-test' into 'master'
     add 4758fdd  .gitlab-ci.yml: Drop tests-fedora-30 job
     add ca883d3  Merge branch 'juerg/fedora-30' into 'master'
     add 2f19be3  testing/_utils/site.py: Add BRZ_EMAIL to support Breezy 3.0
     add 62dbb18  tox.ini: Replace py38 with py38-nocover in default envlist
     add 30d7e9a  .gitlab-ci.yml: Replace py38 with py38-nocover in TOXENV
     add 84d03bb  Merge branch 'juerg/ci' into 'master'
     add ea631e7  .gitlab-ci.yml: Update BuildBox components to 0.0.14
     add 5dd6fa4  doc/source/main_install.rst: Update BuildBox components to 0.0.14
     add e5afbd7  .gitlab-ci.yml: Add Fedora 32
     add 85d8ee1  .gitlab-ci.yml: Drop tests-python-3.8-buster job
     add dca535f  Merge branch 'juerg/ci' into 'master'
     add 830401b  element.py: Early return in _initialize_state()
     add 898fde9  Completely remove MetaElement
     add 5510564  doc: Updating architecture overview to remove mentions of MetaElement
     add ccdac35  Merge branch 'tristan/meta-element-death' into 'master'
     add c61a044  _protos: Update generated files
     add 353a6ac  Add Remote Asset API proto
     add 1a05fa7  Add generated python protobuffer files Remote Asset API
     add b9351b8  casdprocessmanager.py: Add stubs for the Remote Asset API
     add 2587fc4  casserver.py: Add proxy for Remote Asset API
     add 70a5868  Remove unused BaseCache._spec_error
     add dd31591  Rename BaseCache to AssetCache
     add 162dd86  Rename CacheError to AssetCacheError
     add 7d85545  tests/frontend/push.py: Pull complete artifact
     add 5c1e356  _assetcache.py: Add AssetRemote for Remote Asset API
     add 91d0298  _assetcache.py: Add fetch_directory() and push_directory() methods
     add fa255ad  _artifactcache.py: Use AssetRemote
     add fce20bc  _sourcecache.py: Use AssetRemote
     add 0ef5d12  _assetcache.py: Drop index_remote_class and storage_remote_class
     add 6e412d5  casserver.py: Drop BuildStream Artifact and Source services
     add 08c0fad  _protos: Drop BuildStream Artifact and Source services
     add 17ff68f  _protos: Update local_cas.proto from buildbox-common
     add 713e48c  casremote.py: Migrate to GetInstanceNameForRemotes()
     add a637dc1  doc: Update for Remote Asset API
     add aea06a7  NEWS: Add note about the switch to the Remote Asset API
     add 10e208d  Merge branch 'juerg/remote-asset' into 'master'
     add a991708  regression-test for ".bst" artifact checkout bug
     add 6daae55  Merge branch 'dwinship/test_for_dot_bst_artifact_checkout_bug' into 'master'
     add abd8615  _frontend/cli: Add --deps `build` & `run` values for `source track --deps`
     add 4d0a4ce  Re-generate man pages
     add 5e5fa67  NEWS: Add entry for `source track --deps build|run`
     add 47ec22e  Merge branch 'chandan/cli-track-deps' into 'master'
     add c85370b  doc/source/format_declaring.rst: Documenting the ``all`` dependency type
     add 024539e  plugin.py: Fix documentation reference to MappingNode.validate_keys()
     add 4d2735c  Merge branch 'tristan/docs-fixes' into 'master'
     add cccfe96  Bump minimum version requirement for ruamel.yaml
     add 01ffd02  Merge branch 'chandan/upgrade-ruamel' into 'master'
     add 3bbb2f1  NEWS: Prepare for next development snapshot - 1.93.5
     add 51afe1c  Merge branch 'chandan/1.93.5' into 'master'
     add 9ac88d5  testing/_cachekeys.py: Fix formatting in cache key failure assertion
     add 2e61b22  tests/cachekey/cachekey.py: Use the same project name for cache key tests
     add 41a7129  buildstream/element.py: Consider "build-root" variable in the cache key unconditionally
     add 4929020  Merge branch 'tristan/build-root-cache-key' into 'master'
     add 48a4891  _messenger.py: Make `timed_suspendable` public and use it in job.py
     add 0f1b547  Merge branch 'bschubert/timed-suspendable' into 'master'
     add 2d1fd2c  _fixtures.py: Only get the normal number of threads at the start of session
     add 00c5cd0  Merge branch 'bschubert/stricter-thread-checks' into 'master'
     add 433864d  job.py: Remove ability of job classes to send custom messages
     add 41204fc  Merge branch 'bschubert/remove-custom-sched-messages' into 'master'
     add 2d60e03  _elementsources.py: Fix source names in unique key
     add faffc7e  Merge branch 'juerg/source-cache-key' into 'master'
     add 1325f90  runcli.py: Configurable index/storage artifact types
     add 93d4f01  Add bb-storage/bb-asset-hub cache test job
     add f3b8451  .gitlab-ci.yml Improve remote-test usage documentation
     add 498e051  Update overnight test cache endpoint
     add 94ee11c  Merge branch 'qinusty/bb-asset-hub-ci' into 'master'
     add 274002c  downloadablefilesource: Remove deprecated methods in python3.8
     add 718e60f  Merge branch 'bschubert/remove-urllib-warnings' into 'master'
     add df7e68a  scriptelement.py: Simplify staging in the case no layout is provided
     add ee927b2  Merge branch 'tristan/scriptelement-simplify' into 'master'
     add def801b  scriptelement.py: Remove legacy manual creation of staging directory.
     add 9c3d147  Merge branch 'tristan/scriptelement-simplify-again' into 'master'
     add db537b1  _variables.pyi: Add type annotations for _variables.pyx
     add c50e755  _loader: Add type information for the loader package's cython files
     add e5c72f4  _utils.pyi: Add type information for _utils.pyx
     add 20efef5  _types.pyi: Add type information for the cython module
     add 80b8dc5  node.pyi: Add type annotations for the node module
     add df15640  setup.cfg: Remove pytest and py from the list of non-typechecked modules
     add fd80d49  Merge branch 'bschubert/typing' into 'master'
     add b758505  Remove unused Scope argument from artifact name related APIs.
     add e039a4f  Merge branch 'tristan/artifact-dependency-names' into 'master'
     add af26980  .gitlab-ci.yml: Remove the WSL tests, we're not using this anymore.
     add 02887b9  Merge branch 'tristan/disable-wsl-ci' into 'master'
     add bda29b0  _stream.py: In source_push() don't skip fetching for cached elements
     add f9a4396  tests/sourcecache/push.py: Add test_push_missing_source_after_build()
     add dfbb417  Merge branch 'juerg/source-push-fetch' into 'master'
     add b9eb2af  _casbaseddirectory.py: Invalidate digest of parent in _reset()
     add ade3c16  _casbaseddirectory.py: Add _clear() method
     add 8d006f8  tests/sourcecache: Do not inspect uninitialized elements
     add 7175dbb  Add ElementSourcesCache
     add 7df5e40  Move handling of the source `directory` configuration to ElementSources
     add 878cedb  Merge branch 'juerg/element-source-cache' into 'master'
     add 07a91d1  plugin.py: Fixed annotations for node_get_project_path() to return a string.
     add 17ce80d  _pluginproxy.py: New file, base class for plugin proxies.
     add 85400d1  _elementproxy.py: New file, proxy for Elements
     add 97812cb  Element.dependencies() now yields ElementProxy wrappers by default.
     add 1a3e4e8  element.py: Hide dependencies which are irrelevant to the Element
     add 0028045  NEWS: Noting breaking change for Scope removal
     add 8c7fa57  Merge branch 'tristan/hidden-runtime-dependencies' into 'master'
     add 399087e  element.py: Refactor overlap warnings.
     add 27daa28  Merge branch 'tristan/overlap-whitelist-no-search' into 'master'
     add f527955  _sandboxremote.py: Include details in UNAVAILABLE error logging
     add f884b11  Merge branch 'qinusty/sandboxremote-log-UNAVAILABLE' into 'master'
     add 68e9025  element.py: Fix dependency cache key check in non-strict mode
     add d2265d2  tests/frontend/buildcheckout.py: Add non-strict cache key test
     add eca24ae  Merge branch 'juerg/cache-key' into 'master'
     add a6f490a  _state.py: Use separate task identifier
     add a1252b7  tests/frontend/push.py: Test artifact push with glob
     add 7ce327e  Merge branch 'juerg/duplicate-artifact-job' into 'master'
     add 8e23879  element.py: Separating internal/private instance members in Element.__init__()
     add 9a2b5a5  element.py: Fixup docstring for deprecated Element.search() API.
     add 7be64b7  element.py: Added missing docstring for Element.project_name
     add a0b1533  Merge branch 'tristan/element-minor-fixes' into 'master'
     add f11abfb  .gitlab-ci.yml: Workaround radon packaging issue
     add 06d4789  Merge branch 'tristan/fix-analysis' into 'master'
     add d842c28  Update buildbarn images for CI remote-cache
     add 5a18f92  Merge branch 'qinusty/update-buildbarn-images' into 'master'
     add e2fb3bd  element.py: Remove __update_strict_cache_key_of_rdeps()
     add 4aeb4a9  element.py: Remove __update_ready_for_runtime()
     add 03f592d  element.py: Calculate strict cache key before weak cache key
     add b989a35  element.py: Fix strict artifact handling in non-strict mode
     add 84c2235  testing/runcli.py: Add get_built_elements() method
     add 3cfe7a1  tests/frontend/rebuild.py: Add assertion for built elements
     add 851c83e  tests/frontend/rebuild.py: Add test_modify_and_revert
     add 260bdcb  Merge branch 'juerg/element-cache-state' into 'master'
     add 0a2b558  element.py: Cache ElementProxies
     add 9c5f0c7  .gitlab-ci.yml: Finish removing the external tests
     add aeea7e6  .gitlab-ci.yml: Fix randomized overnight tests
     add 936f4bd  .gitlab-ci.yml: Added comment explaining how we test without `usedevelop`
     add 268343e  .gitlab-ci.yml: Update references to externals
     add 1656082  Merge branch 'tristan/fix-overnight-tests' into 'master'
     add 4dcc087  compose plugin: Stage the artifacts in Element.stage()
     add eb0a8c2  filter plugin: Stage the artifacts in Element.stage()
     add 9e1e97f  tests/elements/filter/basic/element_plugins/dynamic.py: Stage in Element.stage()
     add 6a1fd09  types.py: Adding OverlapAction enumeration
     add c42ad9a  types.py: Adding CoreWarnings.UNSTAGED_FILES
     add 70b12f1  _overlapcollector.py: Adding the OverlapCollector as a separate module
     add 71f1b3c  element.py, _elementproxy.py: Use new OverlapCollector
     add be51483  tests/frontend/overlaps.py: Minor cleanup and refactoring
     add 7320a6f  tests/frontend/overlaps.py: Test CoreWarnings.UNSTAGED_FILES
     add 247aad3  _loader: Added DependencyType
     add 3131e0c  tests/format/dependencies.py: Remove tests for LoadErrorReason.DUPLICATE_DEPENDENCY
     add 37c49e3  _loader/loadelement.pyx: Merge duplicate dependencies.
     add 7912ea1  tests/format/dependencies.py: Test merging of multiple dependencies
     add af478ca  _loader/loadelement.pyx: Added `path` property
     add 42c5ee0  element.py: Adding new configure_dependencies() public API method
     add b0b62be  tests/format/dependencies.py: Adding tests for dependency `config` attributes
     add 0d724a0  doc: Documenting dependency configurations
     add 172c740  tests/frontend/overlaps.py: Test multiple calls to Element.stage_dependency_artifacts()
     add e135b78  ScriptElement: Porting to new API
     add dc3132c  NEWS: Updated for breaking changes related to ScriptElement
     add f72013b  buildelement.py: Remove legacy command steps
     add 320a51e  buildelement.py: Implement "location" dependency configuration
     add 055e531  tests/cachekey: Added new cachekey test for new BuildElement configuration
     add c8beeb4  tests/integration/manual.py: Test staging files in custom directories
     add c30a1af  NEWS: Documenting BuildElement's new dependency configuration
     add a7e2c92  Merge branch 'tristan/dependency-config' into 'master'
     add d969195  element.py: Clarify weak and strict key descriptions in __update_cache_keys()
     add ee43d10  Merge branch 'tristan/fix-cache-key-comments' into 'master'
     add 14377d4  Element: Substitute variables on dependency configurations
     add 3790e90  Sandbox: Assert absolute paths where they are set
     add be7d81b  ArtifactElement: Don't call Sandbox.set_output_directory()
     add b792b12  Sandbox: Remove Sandbox.set_output_directory()
     add ee99076  .gitlab-ci.yml: Use ported plugins and fdsdk for overnight tests
     add 34d69a5  Merge branch 'tristan/fix-overnight-tests' into 'master'
     add ea753a4  __init__.py: Added missing import of Directory, this is public API
     add b583317  source.py: Remove BST_KEY_REQUIRES_STAGE
     add fad0b9d  _elementsources.py: Raise SkipJob() when tracking is unimplemented by all sources
     add b46095d  tests/frontend/track.py: Test behavior of SKIP messages
     add 9fba7a1  Merge branch 'tristan/remove-bst-key-requires-stage' into 'master'
     add d3e07d9  filter.py: Combine integration commands in assemble()
     add 4ec05a8  tests/integration/filter.py: Add test_filter_pass_integration_uncached
     add bb31733  Merge branch 'juerg/filter-pass-integration' into 'master'
     add 344ab38  ScriptElement: Fix logging regression
     add 89a8c9d  BuildElement: Fix logging regression
     add 9861583  Merge branch 'tristan/fix-logging-regression' into 'master'
     add 7a83caa  _loader/loadelement.pyx: Support multiple filenames in a dependency
     add 14f9e47  tests/format/dependencies3/elements/supported2.bst: Adding comment
     add 295d65b  tests/format/dependencies.py: Testing shorthand dependency configurations
     add d2b0039  tests/format/dependencies.py: Test bad filename configuration
     add 4831f5b  doc: Documenting ability to specify multiple filenames in a dependency.
     add 0d35e6c  Merge branch 'tristan/dependency-multi-filename' into 'master'
     add cecf848  _artifactcache.py: link_key(): Update reference if it exists already
     add 5ad83f6  _artifact.py: Assert that proto is available after `set_cached()`
     add ba659a8  _artifact.py: Add pull() method
     add eecd703  element.py: Use Artifact.pull() method
     add c7a2ea2  Merge branch 'juerg/artifact-pull' into 'master'
     add d1885ea  element.py: Handle uncached state in _push()
     add c832176  element.py: Add skip_uncached parameter to _skip_push()
     add 498e683  _stream.py: Pull missing artifacts in push()
     add 348108d  Merge branch 'juerg/push' into 'master'
     add 751c80d  Refactor: Lazily instantiate ProvenanceInformation objects
     add ea235b9  Merge branch 'tristan/lazy-provenance' into 'master'
     add 8d9bf02  element.py: Stop computing cache keys when caching, we should have them
     add 818790d  element.py: Ensure element methods with side effects on others are not called in jobs
     add eb6546e  Merge branch 'bschubert/stricter-job-scheduler-separation' into 'master'
     add 16e2966  _loader/loader.py: Track link elements and resolve overrides
     add 4b2e56f  tests/format/junctions.py: Test that we can use a link to address which subproject to override
     add bfdf229  tests/format/junctions.py: Test that links work for override keys in nested projects
     add 3defda9  tests/format/junctions.py: Test multiple layers of link indirection in overrides
     add 88e3289  Merge branch 'tristan/fix-overriding-links' into 'master'
     add ea954ae  element.py: Remove unused import of OrderedDict()
     add 1d98d14  Merge branch 'tristan/remove-unused-import' into 'master'
     add d164ae3  src/buildstream/testing/_utils/site.py: Adding have_subsecond_mtime()
     add f2579be  tests/internals/storage_vdir_import.py: Conditionally skip
     add f9ddbaa  tests/artifactcache/expiry.py: Conditionally skip some tests
     add 3a604d7  tests/internals/utils_move_atomic.py: Conditionally skip a test
     add aee4915  tests/frontend/track.py: Conditionally skip a test
     add 8a74348  Merge branch 'tristan/conditional-subsecond-precision' into 'master'
     add 4cd14b1  scheduler.py: Invoke the ticker callback at the end of run()
     add 5a82e0d  Merge branch 'juerg/scheduler-ticker' into 'master'
     add df68855  workspace.py: Simplify test by only allowing opening a single workspace
     add 4eaf1ba  workspace.py: Remove arguments that are unused during the test
     add f1986c1  workspace.py: Remove some abstractions and write the whole test in place
     add 1263d86  workspace.py: Simplify invocation of the cli command
     add 82e0265  workspace.py: Don't use the same directory for everything
     add dda4690  Merge branch 'bschubert/simplify-workspace-test' into 'master'
     add f034b65  _frontend/cli.py: Drop support for bst shell --use-buildtree=ask
     add 30db528  _frontend/cli.py: Make bst shell --use-buildtree imply --build
     add cddfbbb  _stream.py: Use callback for shell prompt
     add 5708857  Move shell element loading logic from Cli to Stream
     add 2eab306  element.py: Add optional scope parameter to _set_required()
     add e1b40fa  _stream.py: Simplify code in shell()
     add f972a18  _frontend/cli.py: Drop support for bst shell --use-buildtree=try
     add 3661adf  Regenerate man pages
     add 06a703d  NEWS: Add note about the `bst shell --use-buildtree` change
     add 7038a50  Merge branch 'juerg/shell' into 'master'
     add 7677341  Adding _DisplayKey type
     add 553afa3  _elementsources.py: Fix copy/paste error in API doc comment
     add ff7a957  _artifactcache.py: Use Element._get_display_key()
     add 30f2260  element.py: Remove Element._get_brief_display_key()
     add 80d02e3  _messenger.py: Use kwargs in timed_activity() and simple_task()
     add f083c0e  Restore task element name / element name distinction in UI
     add 7aa3a16  tests/frontend/logging.py: Test log lines for correct element names/keys
     add a39b57a  Merge branch 'tristan/fix-logging-element-names' into 'master'
     add ceeca58  _loader/loader.py: Avoid double dictionary lookup
     add c5956f5  _loader/loader.py: Fix _load_file() for cross project link element loads.
     add b442bb5  _loader/loader.py: Fixing new pylint "no-member" error
     add cd0243f  Merge branch 'tristan/loader-fixes' into 'master'
     add 8125386  get release and snapshot badges from docs website
     add 8616fc5  Merge branch 'dwinship/get-release-and-snapshot-badges-from-docs-website' into 'master'
     add 8fdab36  testutils/platform: Refactor to be compatible with Python 3.9
     add 7fee0e6  Merge branch 'chandan/py39-platform' into 'master'
     add 6815013  _loader/loader.py: Support overriding elements
     add 4521792  tests/format/junctions.py: Testing element override scenarios
     add 6bf78c0  plugins/elements/junction.py: Documenting element overrides.
     add 5d51b8d  Merge branch 'tristan/override-elements' into 'master'
     add 1dc4879  _stream.py: Make `_enqueue_plan` a timed activity
     add 2640289  Merge branch 'bschubert/notify-prepare-plan' into 'master'
     add e0d1d28  tox.ini/.gitlab-ci.yml: Add test environment for Python 3.9
     add 0564384  NEWS/setup.py: Advertise our support for Python 3.9
     add 9f20514  Merge branch 'chandan/py39' into 'master'
     add 6561c69  src/buildstream/element.py: __use_remote_execution() reword desc
     add f6ee38f  Merge branch 'tpollard/drop_plugin_comment' into 'master'
     add 6fd3b0b  _stream.py: Only optionally try to glob for artifact names
     add 2991a5d  _stream.py: Use consistent glob handling with utils.glob()
     add 8aadb61  _stream.py: Use consistent glob handling with utils.glob()
     add 524c2c0  tests/frontend/artifact_show.py: Added tests for glob pattern matches.
     add 84e964a  tests/frontend/show.py: Added test for glob pattern matches.
     add 9eee335  Merge branch 'tristan/fix-glob-handling' into 'master'
     add e831b7d  tests/frontend/push.py: Skip expiry test without subsecond mtime
     add 8c0c1f9  Merge branch 'juerg/ci' into 'master'
     add 51fbd66  setup.py: Ensure we have a version number
     add 19a450c  Merge branch 'chandan/setup-py-version-warn' into 'master'
     add e6b7aab  tests/artifactcache/config.py: Fixed generated project to include min-version
     add 0ddf0ce  tests/sourcecache/config.py: Fixed generated project to include min-version
     add ad39875  tests/sandboxes/remote-exec-config.py: Fixed generated project to include min-version
     add 6b961f2  Merge branch 'tristan/version-error-fix' into 'master'
     add 7a9735d  utils.py: Don't block on the call's `communicate` call
     add c7fc964  _signals.py: allow calling signal handler from non-main threads
     add 11b2aa7  element.py: Stop setting a deterministic umask for staging sources
     add 0360bc1  downloadablefilesource.py: Reset the file opener between every test
     add be88eae  plugin.py: Add a helper to run blocking processes in subprocesses
     add 705d002  scheduler.py: Use threads instead of processes for jobs
     add 6cec972  utils.py: remove 'is_single_threaded' method, we use it only in tests
     add c984734  scheduler.py: Reconnect signal handlers sooner
     add 458c057  Merge branch 'bschubert/no-multiprocessing' into 'master'
     add 57beae4  job.py: Remove the ability to send child data to the parent
     add 79d1eca  job.py: Stop sending the result from a job through the pipe
     add ded144e  job.py: Stop sending errors through the child-parent pipe, and set it directly
     add 3f07e60  job.py: Simplify handling of messages through the parent-child pipe
     add 5f68adb  Merge branch 'bschubert/optimize-job' into 'master'
     add 4828aa3  _yaml.pyi: Adding declaration for _yaml.load()
     add f10feb3  node.pyi: Adding missing forward declarations
     add 3fa8d74  sandbox/_config.py, element.py: Refactor SandboxConfig
     add 548b23d  _protos: Regenerated protos for artifact proto update
     add 965da0a  _artifact.py: Store additional metadata on the artifact
     add 837acb9  _artifactcache.py: Fixed logging messages to display cache keys
     add fd298b1  element.py: Added missing api doc comment for _walk_artifact_files()
     add 85bc237  _stream.py: Add _load_artifacts() here
     add 5352d7b  _stream.py: Centralize application state cleanup
     add 5ace573  _project.py, _artifactproject.py: Adding ArtifactProject
     add f9cf2e5  _artifact.py: Added properties for cache key access
     add 83ca987  Refactor ArtifactElement instantiation
     add 69e89fa  tests/integration/artifact.py: Test preservation of environment variables
     add 7f69411  Merge branch 'tristan/refactor-artifact-elements' into 'master'
     add 60fd8c3  requirements: Update all requirements
     add 642e423  Merge branch 'bschubert/coverage' into 'master'
     add 2b9fbf3  _context.py: don't delete bst1 extract directory
     add b6ea793  Merge branch 'abderrahim/no-delete-extract' into 'master'
     add c493a99  .gitlab-ci.yml: Disable parallel testing on centos-7.7 and ubuntu-18.04
     add 47ef74f  Merge branch 'juerg/ci' into 'master'
     add c35f843  Move _reachable_refs_dir() method from cascache.py to testutils
     add b480a2a  cascache.py: Reimplement _fetch_directory() with FetchTree()
     add 0b5155e  cascache.py: Also fetch file blobs in _fetch_directory()
     add 1029ea0  cascache.py: Remove _ensure_blob() method
     add 1c8e13c  cascache.py: Remove unused parameters from add_object()
     add 604fa06  cascache.py: Add add_objects() method
     add 698330a  cascache.py: Optimize _fetch_tree() using add_objects()
     add 8c69767  cascache.py: Generalize remote_missing_blobs() into missing_blobs()
     add a501b0e  cascache.py: Add open() method
     add c836b7b  Use CASCache.open()
     add 2704394  Merge branch 'juerg/cas' into 'master'
     add f9ac481  _state.py: Rename _Task -> Task
     add cbc8e78  Refactor: Use explicit invocation for retrying jobs.
     add 4c7656f  _state.py: Full type hinting
     add ae3344b  Merge branch 'tristan/refactor-retry-task' into 'master'
     add 766330f  doc/source/format_declaring.rst: Minor corrections and added references.
     add fe6523a  doc: Documenting "artifact names".
     add 61cc93d  plugins/elements/stack.py: Require all dependencies be build & run.
     add 0b94cd1  NEWS: Document breaking change, stack element dependencies must be build + run
     add 091c9c8  tests/format/stack.py: Test stack dependency types
     add 75eb8c1  Merge branch 'tristan/stack-require-depends-all' into 'master'
     add 66120e6  _stream.py, _frontend/widget.py: Fix weird hack
     add 2e4800f  Merge branch 'tristan/fix-artifact-name-hack' into 'master'
     add e35c19d  .gitlab-ci.yml: No need special runner for cached overnigth test
     add 5987418  Merge branch 'jjardon/bst_master_fix_overnigth' into 'master'
     add 95c3330  _stream.py: Added missing machine readable error codes
     add 98c8070  testing/runcli.py: Create the directory in Cli() __init__()
     add 9a12438  testing/__init__.py: Expose the Cli() instance
     add 6ea7077  testutils/__init__.py: Expose the internal ArtifactShare object
     add 20529b0  tests/integration/shellbuildtrees.py: Use module scope fixtures and parametrize
     add ba5664f  Merge branch 'tristan/refactor-shell-builtree-tests' into 'master'
     add a15c16c  _messenger.py: Adding (almost) full pep484 type annotations.
     add dc49eb8  _messenger.py: Adding convenience methods for issuing info and warn messages
     add 23b2ff1  _stream.py: Remove private _message() function
     add 0f658ee  _pipeline.py: Remove private _message() function
     add 6a703cd  _assetcache.py: Remove private _message() function
     add 54e59c0  _cas/casdprocessmanager.py: Use Messenger convinence functions.
     add 50c0e9c  _project.py: Use Messenger convenience functions
     add 4252f55  _loader/loader.py: Use Messenger convenience functions
     add cd5a8ef  _scheduler/scheduler.py: Use Messenger convenience functions
     add 7e76770  _pluginfactory/pluginfactory.py: Use Messenger convenience functions
     add 7eb616f  sandbox/sandbox.py: Use Messenger convenience functions
     add 90112aa  sandbox/_sandboxremote.py: Use Messenger convenience functions
     add ad4cbd3  sandbox/_sandboxbuildboxrun.py: Use Messenger conveinence functions
     add 096c729  Merge branch 'tristan/messenger-convenience-functions' into 'master'
     add 5a004b8  tests/frontend/push.py: Fix fallout from recent tests
     add 6904c13  Merge branch 'tristan/fix-broken-test' into 'master'
     add 73dde7d  tests/internals/pluginloading.py: Removed test
     add 24680e5  _stream.py: Add internal _resolve_remotely_cached()
     add 1d7acf2  _stream.py: Added internal _load_elements()
     add d3b6e9d  _stream.py: Add internal _resolve_elements()
     add 8c38451  _stream.py: Added internal _track_cross_junction_filter()
     add 5bf376f  _stream.py: Don't use Pipeline.add_elements()
     add fab2c73  _pipeline.py: Remove check_remotes()
     add 8fbfc4b  _pipeline.py: Remove load() method
     add 2c1bb09  _pipeline.py: Remove resolve_elements().
     add bcb339d  _pipeline.py: Remove track_cross_junction_filter()
     add 082a5ca  _pipeline.py: Remove add_elements()
     add 5ccacfc  _pipeline.py/_stream.py: Remove Pipeline object
     add 74833a7  Merge branch 'tristan/dissolve-pipeline' into 'master'
     add 32b155c  .asf.yaml: Adding initial github configuration
     add 1d8f470  .asf.yaml: Unprotecting branches until migration is complete
     add 9fd8558  Test Actions
     add 42d13b7  Remove notes
     add 0b187c8  Move CI_IMAGE to global scope
     add 23e2af9  Add no-usedevelop job
     add be8b9e5  Add tests-plugins-master job
     add bd3a7f3  Add missing-deps test job
     add a4e0056  Move PYTEST_ARGS to top-level env
     add b7c4258  .github/workflows/ci.yml: Use fresh docker images
     add 44ff8e1  .github/workflows/ci.yml: Fix TOXENV, there is no py6-plugins env.
     add 43b9284  .github/workflows/ci.yml: Add py38 to the toxenv list
     add 944d22e  .github/workflows/ci.yml: Disable parallelism in pytest
     add 41d3fe5  .github/workflows/ci.yml: Generate test runner script
     add af87b46  .github/workflows/ci.yml: Upload an artifact from the docs job
     add bf48af7  .github/workflows/ci.yml: Ensure we rebuild the docs sessions in CI
     add 51acea3  .github/workflows/release.yml: Add release.yml workflow for uploading releases
     add e52715c  .github/workflows/merge.yml: Publish docs post merge
     add 6faceda  Fixing merge CI to update github pages
     add 33aae13  .github/workflows/merge.yml: Generate the gh-pages branch with .nojekyll
     add a74dcb4  .github/workflows/ci.yml: Checkout using tags
     add e1b96c1  _types.pyx: Fixing new error from updated sphinx
     add ee9cf3a  .asf.yaml: Enable publishing master docs to github pages
     add cd2f743  Removing all traces of gitlab metadata
     add 1000229  BuildStream.doap: Remove BuildStream.doap
     add b8736e4  CONTRIBUTING.rst: Updating some references to gitlab
     add 91c6dce  COMMITTERS.rst: s/gitlab/github
     add ccd03ee  doc/source/arch_sandboxing.rst: s/gitlab/github
     add 2440543  doc/source/additional_docker.rst: s/gitlab/github
     add 044c917  doc/source/hacking/ui.rst: s/gitlab/github
     add 24bfee7  doc/source/main_install.rst: s/gitlab/github
     add c02e5c1  docs examples: s/gitlab/github
     add 7bbed2e  .github/workflows/ci.yml: Enable CI to run on pull request events.
     add 1d669eb  .github/workflows/ci.yml: Enhance CI run conditions
     add 00a339c  .github/CODEOWNERS: Added the CODEOWNERS file
     add 9cb0e58  .asf.yaml: Testing protection of multiple branches
     add 459fcd4  .asf.yaml: Testing protected branches with dictionary
     add 7e78955  .asf.yaml: Test removing review requirement
     add cd48ee0  ci: Replace docker CLI monstrosity with Compose
     add 2327e5c  ci: Enable parallelism for tests
     new eae7bd3  fixup! ci: Replace docker CLI monstrosity with Compose

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (4a86e5d)
            \
             N -- N -- N   refs/heads/chandan/test (eae7bd3)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .asf.yaml                                          |   46 +
 .github/CODEOWNERS                                 |    6 +
 .github/compose/ci.docker-compose.yml              |   64 +
 .github/workflows/ci.yml                           |  104 +
 .github/workflows/merge.yml                        |   73 +
 .github/workflows/release.yml                      |   40 +
 .gitignore                                         |    3 +
 .gitlab-ci.yml                                     |   11 -
 .gitlab-ci/buildgrid-compose.yml                   |   72 -
 .gitlab/issue_templates/bst_bug.md                 |   38 -
 .gitlab/issue_templates/bst_task.md                |   19 -
 .../merge_request_templates/bst_merge_request.md   |   19 -
 .../merge_request_templates/stale_MR_message.md    |   11 -
 .pylintrc                                          |   24 +-
 BuildStream.doap                                   |   32 -
 COMMITTERS.rst                                     |   42 +-
 CONTRIBUTING.rst                                   | 1976 +---------
 MANIFEST.in                                        |   16 +-
 NEWS                                               |  625 +++-
 README.rst                                         |    8 +-
 contrib/update_committers.py                       |   22 +-
 doc/Makefile                                       |   21 +-
 doc/bst2html.py                                    |    7 +-
 doc/examples/autotools/project.conf                |    4 +-
 .../elements/base.bst                              |    0
 doc/examples/composition/elements/base/alpine.bst  |   31 +
 .../elements/hello.bst                             |    0
 .../elements/libhello.bst                          |    0
 doc/examples/composition/elements/runtime-only.bst |   23 +
 .../files/hello/Makefile                           |    0
 .../files/hello/hello.c                            |    0
 .../files/libhello/Makefile                        |    0
 .../files/libhello/libhello.c                      |    0
 .../files/libhello/libhello.h                      |    0
 doc/examples/composition/project.conf              |   12 +
 doc/examples/developing/project.conf               |    4 +-
 .../elements/base.bst                              |    0
 .../elements/base/alpine.bst                       |    0
 doc/examples/directives/elements/hello.bst         |   27 +
 doc/examples/directives/files/src/Makefile         |   12 +
 doc/examples/directives/files/src/hello.c          |   10 +
 doc/examples/directives/include/greeting.bst       |   16 +
 doc/examples/directives/project.conf               |   24 +
 .../elements/base.bst                              |    0
 .../elements/base/alpine.bst                       |    0
 doc/examples/filtering/elements/hello.bst          |   28 +
 .../filtering/elements/libhello-filtered.bst       |   17 +
 doc/examples/filtering/elements/libhello.bst       |   31 +
 doc/examples/filtering/files/hello/Makefile        |   16 +
 doc/examples/filtering/files/hello/hello.c         |   25 +
 doc/examples/filtering/files/libhello/Makefile     |   19 +
 .../filtering/files/libhello/default-person.txt    |    1 +
 .../files/libhello/libhello.c                      |    0
 .../files/libhello/libhello.h                      |    0
 doc/examples/filtering/project.conf                |   20 +
 doc/examples/first-project/project.conf            |    4 +-
 .../flatpak-autotools/elements/base/sdk.bst        |   12 +-
 doc/examples/flatpak-autotools/keys/flathub.gpg    |  Bin 0 -> 2844 bytes
 doc/examples/flatpak-autotools/keys/gnome-sdk.gpg  |  Bin 629 -> 0 bytes
 doc/examples/flatpak-autotools/project.conf        |    6 +-
 doc/examples/integration-commands/project.conf     |    4 +-
 doc/examples/junction-includes/elements/hello.bst  |   23 +
 .../elements/subproject-junction.bst               |   17 +
 doc/examples/junction-includes/project.conf        |   14 +
 .../subproject}/elements/base.bst                  |    0
 .../subproject}/elements/base/alpine.bst           |    0
 .../junction-includes/subproject/include/paths.bst |    7 +
 .../junction-includes/subproject/project.conf      |   18 +
 doc/examples/junctions/autotools/project.conf      |    4 +-
 doc/examples/junctions/project.conf                |    4 +-
 .../elements/base.bst                              |    0
 doc/examples/overlaps/elements/base/alpine.bst     |   31 +
 .../elements/hello.bst                             |    0
 .../elements/libhello.bst                          |    0
 doc/examples/overlaps/elements/runtime-only.bst    |   23 +
 doc/examples/overlaps/files/hello/Makefile         |   14 +
 .../files/hello/hello.c                            |    0
 doc/examples/overlaps/files/hello/hello.txt        |    1 +
 doc/examples/overlaps/files/libhello/Makefile      |   19 +
 doc/examples/overlaps/files/libhello/hello.txt     |    1 +
 .../files/libhello/libhello.c                      |    0
 .../files/libhello/libhello.h                      |    0
 doc/examples/overlaps/project.conf                 |   12 +
 doc/examples/running-commands/project.conf         |    4 +-
 .../elements/base.bst                              |    0
 .../elements/base/alpine.bst                       |    0
 .../strict-mode/elements/hello-dynamic.bst         |   22 +
 doc/examples/strict-mode/elements/hello-static.bst |   24 +
 .../elements/libhello.bst                          |    0
 .../strict-mode/files/hello/Makefile.dynamic       |   12 +
 .../strict-mode/files/hello/Makefile.static        |   12 +
 .../files/hello/hello.c                            |    0
 doc/examples/strict-mode/files/libhello/Makefile   |   21 +
 doc/examples/strict-mode/files/libhello/libhello.c |    9 +
 .../files/libhello/libhello.h                      |    0
 doc/examples/strict-mode/project.conf              |   12 +
 doc/examples/strict-mode/update.patch              |    9 +
 doc/sessions/autotools.run                         |    2 +-
 doc/sessions/composition.run                       |   20 +
 doc/sessions/developing.run                        |    2 +-
 doc/sessions/directives.run                        |   35 +
 doc/sessions/filtering.run                         |   33 +
 doc/sessions/first-project.run                     |    2 +-
 doc/sessions/flatpak-autotools.run                 |    2 +-
 doc/sessions/integration-commands.run              |    2 +-
 doc/sessions/junction-includes.run                 |   25 +
 doc/sessions/junctions.run                         |   12 +-
 doc/sessions/overlaps.run                          |   11 +
 doc/sessions/strict-mode.run                       |   60 +
 doc/source/additional_docker.rst                   |    7 +-
 doc/source/advanced-features/junction-elements.rst |   74 -
 doc/source/arch_caches.rst                         |   13 +-
 doc/source/arch_remote_execution.rst               |    2 +-
 doc/source/arch_sandboxing.rst                     |   63 +-
 doc/source/conf.py                                 |   79 +-
 doc/source/core_framework.rst                      |    2 +
 doc/source/core_plugins.rst                        |   12 +-
 doc/source/developing/strict-mode.rst              |  251 ++
 doc/source/developing/workspaces.rst               |    6 +-
 doc/source/examples/flatpak-autotools.rst          |    6 +-
 doc/source/format_declaring.rst                    |  220 +-
 doc/source/format_intro.rst                        |   45 +-
 doc/source/format_project.rst                      |  494 ++-
 doc/source/hacking/coding_guidelines.rst           |  886 +++++
 doc/source/hacking/grpc_protocols.rst              |   25 +
 doc/source/hacking/making_releases.rst             |  255 ++
 doc/source/hacking/managing_data_files.rst         |   15 +
 doc/source/hacking/measuring_performance.rst       |   95 +
 doc/source/hacking/ui.rst                          |   77 +
 doc/source/hacking/updating_python_deps.rst        |   22 +
 doc/source/hacking/using_the_testsuite.rst         |  269 ++
 doc/source/hacking/writing_documentation.rst       |  286 ++
 doc/source/hacking/writing_plugins.rst             |   52 +
 doc/source/handling-files/composition.rst          |  194 +
 doc/source/handling-files/filtering.rst            |  203 +
 doc/source/handling-files/overlaps.rst             |  145 +
 doc/source/image-sources/arch-overview.odg         |  Bin 20118 -> 20818 bytes
 doc/source/images/arch-overview.svg                | 3923 ++++++++++----------
 doc/source/index.rst                               |    2 +
 doc/source/junctions/junction-elements.rst         |   92 +
 doc/source/junctions/junction-includes.rst         |  251 ++
 doc/source/junctions/junction-workspaces.rst       |   51 +
 doc/source/main_glossary.rst                       |  152 +
 doc/source/main_install.rst                        |  330 ++
 doc/source/main_using.rst                          |    5 +-
 doc/source/sample_plugin/setup.py                  |    5 +-
 doc/source/sessions-stored/autotools-build.html    |  153 +-
 doc/source/sessions-stored/autotools-shell.html    |   22 +-
 .../sessions-stored/autotools-show-variables.html  |  102 +-
 doc/source/sessions-stored/composition-build.html  |  136 +
 .../sessions-stored/composition-list-contents.html |  304 ++
 doc/source/sessions-stored/composition-shell.html  |   22 +
 .../developing-build-after-changes-workspace.html  |   42 +-
 .../developing-build-after-changes.html            |  122 +-
 .../developing-close-workspace.html                |   14 +-
 .../developing-discard-workspace.html              |   18 +-
 .../developing-reopen-workspace.html               |   17 +-
 .../developing-reset-workspace.html                |   36 +-
 .../developing-shell-after-changes.html            |   22 +-
 .../sessions-stored/developing-soft-reset.html     |   14 +-
 .../sessions-stored/developing-workspace-list.html |    2 +-
 .../sessions-stored/developing-workspace-open.html |   29 +-
 .../sessions-stored/directives-build-excited.html  |   73 +
 .../sessions-stored/directives-build-normal.html   |   83 +
 .../sessions-stored/directives-build-somber.html   |   73 +
 .../sessions-stored/directives-shell-excited.html  |   22 +
 .../sessions-stored/directives-shell-normal.html   |   22 +
 .../sessions-stored/directives-shell-somber.html   |   22 +
 .../filtering-list-contents-libhello-filtered.html |   19 +
 .../filtering-list-contents-libhello.html          |   22 +
 .../filtering-shell-with-filter.html               |   26 +
 .../filtering-shell-without-filter.html            |   26 +
 .../sessions-stored/first-project-build.html       |   44 +-
 .../sessions-stored/first-project-checkout.html    |   26 +-
 doc/source/sessions-stored/first-project-show.html |   14 +-
 .../integration-commands-build.html                |  178 +-
 .../integration-commands-shell.html                |   24 +-
 .../junction-includes-build-funky.html             |  125 +
 .../junction-includes-build-normal.html            |  135 +
 .../junction-includes-shell-funky.html             |   23 +
 .../junction-includes-shell-normal.html            |   23 +
 doc/source/sessions-stored/junctions-build.html    |  222 +-
 doc/source/sessions-stored/junctions-shell.html    |   22 +-
 .../junctions-workspace-open-subproject.html       |   21 +
 .../sessions-stored/junctions-workspace-open.html  |   25 +-
 doc/source/sessions-stored/overlaps-build.html     |   75 +
 .../sessions-stored/running-commands-build.html    |  111 +-
 .../sessions-stored/running-commands-shell.html    |   22 +-
 .../running-commands-show-after.html               |   18 +-
 .../running-commands-show-before.html              |   18 +-
 .../strict-mode-build-dynamic-no-strict.html       |   77 +
 .../strict-mode-build-static-no-strict.html        |   75 +
 .../strict-mode-run-dynamic-no-strict.html         |   26 +
 .../strict-mode-run-static-no-strict.html          |   26 +
 .../strict-mode-show-dynamic-no-strict.html        |   17 +
 .../strict-mode-show-dynamic-strict.html           |   17 +
 .../sessions-stored/strict-mode-show-initial.html  |   18 +
 .../strict-mode-show-static-no-strict.html         |   17 +
 .../strict-mode-workspace-open.html                |   21 +
 doc/source/tutorial/autotools.rst                  |    4 +-
 doc/source/tutorial/directives.rst                 |  175 +
 doc/source/tutorial/first-project.rst              |    2 +-
 doc/source/tutorial/integration-commands.rst       |    6 +-
 doc/source/tutorial/running-commands.rst           |    2 +-
 doc/source/using_advanced_features.rst             |   13 -
 doc/source/using_commands.rst                      |   50 +
 doc/source/using_config.rst                        |   13 +
 doc/source/using_configuring_cache_server.rst      |   16 +
 doc/source/using_developing.rst                    |   11 +-
 doc/source/using_handling_files.rst                |   12 +
 doc/source/using_junctions.rst                     |   14 +
 doc/source/using_tutorial.rst                      |    5 +-
 man/bst-artifact-checkout.1                        |   13 +-
 man/bst-artifact-delete.1                          |    6 +-
 man/bst-artifact-list-contents.1                   |   15 +
 man/bst-artifact-log.1                             |   36 +-
 man/bst-artifact-pull.1                            |   10 +-
 man/bst-artifact-push.1                            |   10 +-
 man/bst-artifact-server.1                          |   13 +-
 man/bst-artifact-show.1                            |   12 +
 man/bst-artifact.1                                 |   32 +-
 man/bst-build.1                                    |   28 +-
 man/bst-help.1                                     |    2 +-
 man/bst-init.1                                     |    8 +-
 man/bst-shell.1                                    |   13 +-
 man/bst-show.1                                     |   19 +-
 man/bst-source-checkout.1                          |   18 +-
 man/bst-source-fetch.1                             |   14 +-
 man/bst-source-push.1                              |   31 +
 man/bst-source-track.1                             |    6 +-
 man/bst-source.1                                   |    8 +-
 man/bst-workspace-close.1                          |    2 +-
 man/bst-workspace-list.1                           |    2 +-
 man/bst-workspace-open.1                           |    5 +-
 man/bst-workspace-reset.1                          |    7 +-
 man/bst-workspace.1                                |    2 +-
 man/bst.1                                          |    4 +-
 pyproject.toml                                     |   17 +
 requirements/cov-requirements.in                   |    1 +
 requirements/cov-requirements.txt                  |   20 +-
 requirements/dev-requirements.in                   |    5 +-
 requirements/dev-requirements.txt                  |   42 +-
 requirements/plugin-requirements.in                |    1 -
 requirements/plugin-requirements.txt               |    1 -
 requirements/requirements.in                       |    4 +-
 requirements/requirements.txt                      |   26 +-
 setup.cfg                                          |   33 +-
 setup.py                                           |  353 +-
 src/buildstream/__init__.py                        |   10 +-
 src/buildstream/__main__.py                        |    3 +-
 src/buildstream/_artifact.py                       |  403 +-
 src/buildstream/_artifactcache.py                  |  428 ++-
 src/buildstream/_artifactelement.py                |  124 +-
 src/buildstream/_artifactproject.py                |   88 +
 src/buildstream/_assetcache.py                     |  657 ++++
 src/buildstream/_basecache.py                      |  306 --
 src/buildstream/_cachekey.py                       |    2 +-
 src/buildstream/_cas/__init__.py                   |    4 +-
 src/buildstream/_cas/cascache.py                   |  986 ++---
 src/buildstream/_cas/casdprocessmanager.py         |  350 ++
 src/buildstream/_cas/casremote.py                  |  338 +-
 src/buildstream/_cas/casserver.py                  |  723 ++--
 src/buildstream/_context.py                        |  282 +-
 src/buildstream/_elementfactory.py                 |   63 -
 src/buildstream/_elementproxy.py                   |  184 +
 src/buildstream/_elementsources.py                 |  486 +++
 src/buildstream/_elementsourcescache.py            |  330 ++
 src/buildstream/_exceptions.py                     |  156 +-
 src/buildstream/_frontend/app.py                   |  618 +--
 src/buildstream/_frontend/cli.py                   | 1250 ++++---
 src/buildstream/_frontend/complete.py              |   71 +-
 src/buildstream/_frontend/linuxapp.py              |    7 +-
 src/buildstream/_frontend/profile.py               |    5 +-
 src/buildstream/_frontend/status.py                |  219 +-
 src/buildstream/_frontend/widget.py                |  520 +--
 src/buildstream/_fuse/__init__.py                  |   20 -
 src/buildstream/_fuse/fuse.py                      | 1001 -----
 src/buildstream/_fuse/hardlinks.py                 |  220 --
 src/buildstream/_fuse/mount.py                     |  196 -
 src/buildstream/_gitsourcebase.py                  |  780 ++--
 src/buildstream/_includes.py                       |  162 +-
 src/buildstream/_loader/__init__.py                |    4 +-
 src/buildstream/_loader/_loader.pyi                |    1 +
 src/buildstream/_loader/loadcontext.py             |  270 ++
 src/buildstream/_loader/loadelement.pyi            |   15 +
 src/buildstream/_loader/loadelement.pyx            |  445 ++-
 src/buildstream/_loader/loader.py                  |  960 +++--
 src/buildstream/_loader/metaelement.py             |   61 -
 src/buildstream/_loader/metasource.py              |    6 +-
 src/buildstream/_loader/types.py                   |   44 +
 src/buildstream/_loader/types.pyx                  |  212 --
 src/buildstream/_message.py                        |   80 +-
 src/buildstream/_messenger.py                      |  448 ++-
 src/buildstream/_options/option.py                 |   24 +-
 src/buildstream/_options/optionarch.py             |   13 +-
 src/buildstream/_options/optionbool.py             |   25 +-
 src/buildstream/_options/optioneltmask.py          |    4 +-
 src/buildstream/_options/optionenum.py             |   36 +-
 src/buildstream/_options/optionflags.py            |   42 +-
 src/buildstream/_options/optionos.py               |    3 +-
 src/buildstream/_options/optionpool.py             |   66 +-
 src/buildstream/_overlapcollector.py               |  328 ++
 src/buildstream/_pipeline.py                       |  703 ++--
 src/buildstream/_platform/darwin.py                |   70 -
 src/buildstream/_platform/fallback.py              |   37 -
 src/buildstream/_platform/linux.py                 |  145 -
 src/buildstream/_platform/platform.py              |  195 +-
 src/buildstream/_plugincontext.py                  |  286 --
 src/buildstream/_pluginfactory/__init__.py         |   50 +
 src/buildstream/_pluginfactory/elementfactory.py   |   53 +
 src/buildstream/_pluginfactory/pluginfactory.py    |  387 ++
 src/buildstream/_pluginfactory/pluginorigin.py     |  186 +
 .../_pluginfactory/pluginoriginjunction.py         |   88 +
 .../_pluginfactory/pluginoriginlocal.py            |   46 +
 src/buildstream/_pluginfactory/pluginoriginpip.py  |  110 +
 src/buildstream/_pluginfactory/sourcefactory.py    |   54 +
 src/buildstream/_pluginproxy.py                    |   90 +
 src/buildstream/_profile.py                        |   66 +-
 src/buildstream/_project.py                        |  888 +++--
 src/buildstream/_projectrefs.py                    |   20 +-
 .../_protos/build/bazel/remote/asset}/__init__.py  |    0
 .../build/bazel/remote/asset/v1}/__init__.py       |    0
 .../build/bazel/remote/asset/v1/remote_asset.proto |  445 +++
 .../bazel/remote/asset/v1/remote_asset_pb2.py      |  682 ++++
 .../bazel/remote/asset/v1/remote_asset_pb2_grpc.py |  329 ++
 .../remote/execution/v2/remote_execution.proto     |  506 ++-
 .../remote/execution/v2/remote_execution_pb2.py    | 1127 ++++--
 .../execution/v2/remote_execution_pb2_grpc.py      | 1377 ++++---
 .../_protos/build/bazel/semver/semver_pb2.py       |   18 +-
 .../_protos/build/bazel/semver/semver_pb2_grpc.py  |    1 +
 .../_protos/build/buildgrid/local_cas.proto        |   88 +-
 .../_protos/build/buildgrid/local_cas_pb2.py       |  681 +++-
 .../_protos/build/buildgrid/local_cas_pb2_grpc.py  |  662 ++--
 .../_protos/buildstream/v2/artifact.proto          |   45 +-
 .../_protos/buildstream/v2/artifact_pb2.py         |  216 +-
 .../_protos/buildstream/v2/artifact_pb2_grpc.py    |   67 +-
 .../_protos/buildstream/v2/buildstream.proto       |   29 -
 .../_protos/buildstream/v2/buildstream_pb2.py      |  240 +-
 .../_protos/buildstream/v2/buildstream_pb2_grpc.py |  248 +-
 .../_protos/buildstream/v2/source.proto            |   31 -
 .../_protos/buildstream/v2/source_pb2.py           |  145 +-
 .../_protos/buildstream/v2/source_pb2_grpc.py      |   68 +-
 .../_protos/google/api/annotations_pb2.py          |   11 +-
 .../_protos/google/api/annotations_pb2_grpc.py     |    1 +
 src/buildstream/_protos/google/api/http_pb2.py     |   60 +-
 .../_protos/google/api/http_pb2_grpc.py            |    1 +
 .../_protos/google/bytestream/bytestream_pb2.py    |   53 +-
 .../google/bytestream/bytestream_pb2_grpc.py       |  338 +-
 .../_protos/google/longrunning/operations_pb2.py   |   76 +-
 .../google/longrunning/operations_pb2_grpc.py      |  315 +-
 src/buildstream/_protos/google/rpc/code_pb2.py     |   61 +-
 .../_protos/google/rpc/code_pb2_grpc.py            |    1 +
 src/buildstream/_protos/google/rpc/status_pb2.py   |   18 +-
 .../_protos/google/rpc/status_pb2_grpc.py          |    1 +
 src/buildstream/_remote.py                         |  271 ++
 src/buildstream/_scheduler/jobs/_job.pyi           |    1 +
 src/buildstream/_scheduler/jobs/_job.pyx           |   15 +
 src/buildstream/_scheduler/jobs/elementjob.py      |   27 +-
 src/buildstream/_scheduler/jobs/job.py             |  728 ++--
 src/buildstream/_scheduler/jobs/jobpickler.py      |  132 -
 .../_scheduler/queues/artifactpushqueue.py         |    9 +-
 src/buildstream/_scheduler/queues/buildqueue.py    |   33 +-
 src/buildstream/_scheduler/queues/fetchqueue.py    |   13 +-
 src/buildstream/_scheduler/queues/pullqueue.py     |    2 +-
 src/buildstream/_scheduler/queues/queue.py         |   89 +-
 .../_scheduler/queues/sourcepushqueue.py           |    2 +-
 src/buildstream/_scheduler/queues/trackqueue.py    |   14 +-
 src/buildstream/_scheduler/resources.py            |   63 +-
 src/buildstream/_scheduler/scheduler.py            |  320 +-
 src/buildstream/_signals.py                        |  111 +-
 src/buildstream/_site.py                           |   33 +-
 src/buildstream/_sourcecache.py                    |  248 +-
 src/buildstream/_sourcefactory.py                  |   64 -
 src/buildstream/_state.py                          |  404 +-
 src/buildstream/_stream.py                         | 1600 ++++----
 src/buildstream/_types.pyi                         |    1 +
 src/buildstream/_types.pyx                         |    2 +-
 src/buildstream/_utils.pyi                         |    1 +
 src/buildstream/_variables.pyi                     |    9 +
 src/buildstream/_variables.pyx                     |  838 ++++-
 src/buildstream/_version.py                        |  133 +-
 src/buildstream/_versions.py                       |   11 +-
 src/buildstream/_workspaces.py                     |  234 +-
 src/buildstream/_yaml.pyi                          |    5 +
 src/buildstream/_yaml.pyx                          |    7 +-
 src/buildstream/buildelement.py                    |  217 +-
 src/buildstream/data/projectconfig.yaml            |   11 +-
 src/buildstream/data/userconfig.yaml               |   26 +
 src/buildstream/downloadablefilesource.py          |  290 ++
 src/buildstream/element.py                         | 2956 +++++++--------
 src/buildstream/exceptions.py                      |  148 +
 src/buildstream/node.pxd                           |    4 +-
 src/buildstream/node.pyi                           |   55 +
 src/buildstream/node.pyx                           |  124 +-
 src/buildstream/plugin.py                          |  454 ++-
 src/buildstream/plugins/elements/autotools.py      |    8 +-
 src/buildstream/plugins/elements/compose.py        |   58 +-
 src/buildstream/plugins/elements/distutils.py      |   51 -
 src/buildstream/plugins/elements/distutils.yaml    |   49 -
 src/buildstream/plugins/elements/filter.py         |  120 +-
 src/buildstream/plugins/elements/filter.yaml       |    5 +
 src/buildstream/plugins/elements/import.py         |   32 +-
 src/buildstream/plugins/elements/junction.py       |  355 +-
 src/buildstream/plugins/elements/link.py           |   88 +
 src/buildstream/plugins/elements/manual.py         |    8 +-
 src/buildstream/plugins/elements/pip.py            |   51 -
 src/buildstream/plugins/elements/pip.yaml          |   36 -
 src/buildstream/plugins/elements/script.py         |   30 +-
 src/buildstream/plugins/elements/script.yaml       |   28 +-
 src/buildstream/plugins/elements/stack.py          |  112 +-
 .../plugins/sources/_downloadablefilesource.py     |  255 --
 src/buildstream/plugins/sources/bzr.py             |  128 +-
 src/buildstream/plugins/sources/deb.py             |   83 -
 src/buildstream/plugins/sources/git.py             |   19 +-
 src/buildstream/plugins/sources/local.py           |  102 +-
 src/buildstream/plugins/sources/patch.py           |   25 +-
 src/buildstream/plugins/sources/pip.py             |  127 +-
 src/buildstream/plugins/sources/remote.py          |   20 +-
 src/buildstream/plugins/sources/tar.py             |   84 +-
 src/buildstream/plugins/sources/workspace.py       |  137 +
 src/buildstream/plugins/sources/zip.py             |   20 +-
 .../repofiles/file => src/buildstream/py.typed     |    0
 src/buildstream/sandbox/_config.py                 |  132 +-
 src/buildstream/sandbox/_mount.py                  |  149 -
 src/buildstream/sandbox/_mounter.py                |  164 -
 src/buildstream/sandbox/_sandboxbuildbox.py        |  247 --
 src/buildstream/sandbox/_sandboxbuildboxrun.py     |  222 ++
 src/buildstream/sandbox/_sandboxbwrap.py           |  515 ---
 src/buildstream/sandbox/_sandboxchroot.py          |  351 --
 src/buildstream/sandbox/_sandboxdummy.py           |   11 +-
 src/buildstream/sandbox/_sandboxreapi.py           |  272 ++
 src/buildstream/sandbox/_sandboxremote.py          |  537 ++-
 src/buildstream/sandbox/sandbox.py                 |  336 +-
 src/buildstream/scriptelement.py                   |  224 +-
 src/buildstream/source.py                          |  540 ++-
 src/buildstream/storage/__init__.py                |    1 +
 src/buildstream/storage/_casbaseddirectory.py      |  566 ++-
 src/buildstream/storage/_filebaseddirectory.py     |  258 +-
 src/buildstream/storage/directory.py               |  181 +-
 src/buildstream/testing/__init__.py                |   23 +-
 src/buildstream/testing/_cachekeys.py              |  148 +
 src/buildstream/testing/_fixtures.py               |   63 +
 src/buildstream/testing/_forked.py                 |   94 -
 .../testing/_sourcetests/build_checkout.py         |   36 +-
 src/buildstream/testing/_sourcetests/conftest.py   |   17 +
 src/buildstream/testing/_sourcetests/fetch.py      |   57 +-
 src/buildstream/testing/_sourcetests/mirror.py     |  324 +-
 .../project/files/sub-project/project.conf         |    2 +-
 .../testing/_sourcetests/project/project.conf      |    1 +
 .../testing/_sourcetests/source_determinism.py     |   91 +-
 src/buildstream/testing/_sourcetests/track.py      |  247 +-
 .../testing/_sourcetests/track_cross_junction.py   |  134 +-
 src/buildstream/testing/_sourcetests/utils.py      |   15 +-
 src/buildstream/testing/_sourcetests/workspace.py  |  144 +-
 src/buildstream/testing/_update_cachekeys.py       |   81 +
 src/buildstream/testing/_utils/junction.py         |   49 +-
 src/buildstream/testing/_utils/site.py             |  104 +-
 src/buildstream/testing/_yaml.py                   |   24 +
 src/buildstream/testing/integration.py             |   44 +-
 src/buildstream/testing/repo.py                    |    7 +-
 src/buildstream/testing/runcli.py                  |  300 +-
 src/buildstream/types.py                           |  217 +-
 src/buildstream/utils.py                           |  715 ++--
 tests/artifactcache/artifactservice.py             |  111 -
 tests/artifactcache/capabilities.py                |   48 +
 tests/artifactcache/config.py                      |  234 +-
 tests/artifactcache/expiry.py                      |  396 +-
 tests/artifactcache/expiry/project.conf            |    1 +
 tests/artifactcache/junctions.py                   |  204 +-
 .../junctions/parent/base/project.conf             |    1 +
 tests/artifactcache/junctions/parent/project.conf  |    1 +
 .../only-one}/element.bst                          |    0
 tests/artifactcache/project/project.conf           |    2 +-
 tests/artifactcache/pull.py                        |   89 +-
 tests/artifactcache/push.py                        |  146 +-
 tests/cachekey/cachekey.py                         |  191 +-
 tests/cachekey/project/elements/build1.expected    |    2 +-
 tests/cachekey/project/elements/build2.expected    |    2 +-
 tests/cachekey/project/elements/build3.bst         |   13 +
 tests/cachekey/project/elements/build3.expected    |    1 +
 tests/cachekey/project/elements/compose1.expected  |    2 +-
 tests/cachekey/project/elements/compose2.expected  |    2 +-
 tests/cachekey/project/elements/compose3.expected  |    2 +-
 tests/cachekey/project/elements/compose4.expected  |    2 +-
 tests/cachekey/project/elements/compose5.expected  |    2 +-
 tests/cachekey/project/elements/import1.expected   |    2 +-
 tests/cachekey/project/elements/import2.expected   |    2 +-
 tests/cachekey/project/elements/import3.expected   |    2 +-
 tests/cachekey/project/elements/script1.expected   |    2 +-
 tests/cachekey/project/project.conf                |    1 +
 tests/cachekey/project/sources/bzr1.expected       |    2 +-
 tests/cachekey/project/sources/git1.expected       |    2 +-
 tests/cachekey/project/sources/git2.expected       |    2 +-
 tests/cachekey/project/sources/git3.expected       |    2 +-
 tests/cachekey/project/sources/local1.expected     |    2 +-
 tests/cachekey/project/sources/local2.expected     |    2 +-
 tests/cachekey/project/sources/patch1.expected     |    2 +-
 tests/cachekey/project/sources/patch2.expected     |    2 +-
 tests/cachekey/project/sources/patch3.expected     |    2 +-
 tests/cachekey/project/sources/pip1.expected       |    2 +-
 tests/cachekey/project/sources/remote1.expected    |    2 +-
 tests/cachekey/project/sources/remote2.expected    |    2 +-
 tests/cachekey/project/sources/tar1.expected       |    2 +-
 tests/cachekey/project/sources/tar2.expected       |    2 +-
 tests/cachekey/project/sources/zip1.expected       |    2 +-
 tests/cachekey/project/sources/zip2.expected       |    2 +-
 tests/cachekey/project/target.bst                  |    1 +
 tests/cachekey/project/target.expected             |    2 +-
 tests/cachekey/update.py                           |   79 -
 tests/conftest.py                                  |  134 +-
 tests/elements/filter.py                           |  318 +-
 .../filter/basic/element_plugins/dynamic.py        |   18 +-
 .../filter/basic/elements/forbidden-stack-dep.bst  |    4 +
 tests/elements/filter/basic/elements/input.bst     |    3 +
 .../filter/basic/elements/no-pass-integration.bst  |    6 +
 .../filter/basic/elements/pass-integration.bst     |    6 +
 tests/elements/filter/basic/elements/stack.bst     |    3 +
 tests/elements/filter/basic/project.conf           |    3 +-
 tests/examples/autotools.py                        |   47 +-
 tests/examples/developing.py                       |   59 +-
 tests/examples/first-project.py                    |   14 +-
 tests/examples/flatpak-autotools.py                |   43 +-
 tests/examples/integration-commands.py             |   22 +-
 tests/examples/junctions.py                        |   34 +-
 tests/examples/running-commands.py                 |   24 +-
 tests/external_plugins.py                          |   87 -
 tests/format/assertion.py                          |   51 +-
 tests/format/assertion/project.conf                |    1 +
 tests/format/dependencies.py                       |  226 +-
 .../dependencies1/elements/builddep-list.bst       |    4 +-
 .../format/dependencies1/elements/list-combine.bst |    2 +-
 .../dependencies1/elements/runtimedep-list.bst     |    4 +-
 tests/format/dependencies1/project.conf            |    1 +
 .../format/dependencies2/merge-separate-lists.bst  |    8 +
 tests/format/dependencies2/merge-single-list.bst   |    8 +
 tests/format/dependencies2/project.conf            |    1 +
 tests/format/dependencies3/all-all.bst             |   11 -
 tests/format/dependencies3/build-all.bst           |   11 -
 tests/format/dependencies3/build-build.bst         |   11 -
 tests/format/dependencies3/build-runtime.bst       |   11 -
 tests/format/dependencies3/dep.bst                 |    4 -
 tests/format/dependencies3/elements/dep.bst        |    2 +
 tests/format/dependencies3/elements/dep2.bst       |    2 +
 .../dependencies3/elements/invalid-filenames.bst   |   13 +
 .../dependencies3/elements/runtime-error.bst       |    6 +
 .../dependencies3/elements/shorthand-config.bst    |   10 +
 .../dependencies3/elements/shorthand-junction.bst  |   11 +
 .../dependencies3/elements/subproject.bst}         |    0
 tests/format/dependencies3/elements/supported1.bst |    6 +
 tests/format/dependencies3/elements/supported2.bst |   15 +
 .../format/dependencies3/elements/unsupported.bst  |    6 +
 .../dependencies3/plugins/configsupported.py       |   29 +
 .../dependencies3/plugins/configunsupported.py     |   19 +
 tests/format/dependencies3/project.conf            |   12 +-
 tests/format/dependencies3/runtime-all.bst         |   11 -
 tests/format/dependencies3/runtime-runtime.bst     |   11 -
 tests/format/dependencies3/subproject/project.conf |    2 +
 .../dependencies3/subproject/sub.txt}              |    0
 tests/format/dependencies3/subproject/target-a.bst |    4 +
 tests/format/dependencies3/subproject/target-b.bst |    4 +
 tests/format/include.py                            |  370 +-
 .../element.bst                                    |    0
 .../enable_work_around.yml                         |    5 +
 .../conditional-conflicts-complex/extra_conf.yml   |    5 +
 .../extra_conf_i586.yml                            |    4 +
 .../extra_conf_x86_64.yml                          |    4 +
 .../conditional-conflicts-complex/options.yml      |    9 +
 .../conditional-conflicts-complex/project.conf     |    7 +
 .../conditional-conflicts-complex/work_around.yml  |    3 +
 .../conditional-conflicts-element/element.bst      |    5 +
 .../extra_conf.yml                                 |    0
 .../conditional-conflicts-element/project.conf     |   11 +
 .../conditional-conflicts-element/work_around.yml  |    5 +
 .../element.bst                                    |    0
 .../extra_conf.yml                                 |    0
 .../options.yml                                    |    9 +
 .../project.conf                                   |    7 +
 .../work_around.yml                                |    5 +
 .../element.bst                                    |    0
 .../extra_conf.yml                                 |    0
 .../conditional-conflicts-project/project.conf     |   15 +
 .../conditional-conflicts-project/work_around.yml  |    5 +
 .../element.bst                                    |    0
 .../extra_conf.yml                                 |    0
 .../project.conf                                   |   23 +
 .../work_around.yml                                |    5 +
 tests/format/include/conditional/project.conf      |    1 +
 .../format/include/eventual_overrides/project.conf |    1 +
 tests/format/include/file/project.conf             |    1 +
 .../include/file_with_subproject/project.conf      |    1 +
 .../file_with_subproject/subproject/project.conf   |    1 +
 .../format/include/full_path/elements/element.bst  |    6 +
 .../format/include/full_path/elements/invalid.bst  |    4 +
 .../full_path}/elements/subproject.bst             |    0
 tests/format/include/full_path/project.conf        |    4 +
 .../subproject/elements/subsubproject-junction.bst |    0
 .../full_path/subproject}/files/hello.txt          |    0
 .../include/full_path/subproject/project.conf      |    4 +
 tests/format/include/full_path/subproject/sub.yaml |    1 +
 .../subproject/subsubproject/project.conf          |    2 +
 .../full_path/subproject/subsubproject/subsub.yaml |    1 +
 tests/format/include/inner/project.conf            |    1 +
 tests/format/include/junction/project.conf         |    1 +
 .../include/junction/subproject/project.conf       |    1 +
 .../{sub-include => junction_options}/element.bst  |    0
 tests/format/include/junction_options/project.conf |    5 +
 .../junction_options/subproject/extra_conf.yml     |    7 +
 .../junction_options/subproject/project.conf       |   12 +
 .../element.bst                                    |    0
 .../include/junction_options_deep/project.conf     |    5 +
 .../subproject-1/extra_conf.yml                    |    2 +
 .../subproject-1/project.conf                      |    2 +
 .../subproject-2/extra_conf.yml                    |    7 +
 .../subproject-2/project.conf                      |   12 +
 .../include/junction_options_element/element.bst   |    4 +
 .../include/junction_options_element/project.conf  |    2 +
 .../subproject/extra_conf.yml                      |    7 +
 .../subproject/project.conf                        |   12 +
 .../format/include/local_to_junction/project.conf  |    1 +
 .../local_to_junction/subproject/project.conf      |    1 +
 tests/format/include/options/project.conf          |    1 +
 .../format/include/overrides-junction/project.conf |    1 +
 .../overrides-junction/subproject/project.conf     |    1 +
 tests/format/include/overrides/project.conf        |    1 +
 .../include/overrides/subproject/project.conf      |    1 +
 tests/format/include/recursive/project.conf        |    1 +
 tests/format/include/string/project.conf           |    1 +
 tests/format/include/sub-include/project.conf      |    1 +
 tests/format/include_composition.py                |  101 +-
 tests/format/invalid-keys/project.conf             |    1 +
 tests/format/invalid_keys.py                       |   22 +-
 tests/format/junctions.py                          |  913 +++--
 tests/format/junctions/bar/app.bst                 |    7 -
 tests/format/junctions/bar/bar.txt                 |    1 -
 tests/format/junctions/bar/base.bst                |    4 -
 tests/format/junctions/bar/project.conf            |    1 -
 tests/format/junctions/bar/target.bst              |    5 -
 tests/format/junctions/base/project.conf           |    1 -
 .../circular-references/link-subsubsubproject.bst  |    4 +
 .../junctions/circular-references/project.conf     |    2 +
 ...ject-overriden-with-circular-reference-link.bst |    8 +
 ...ubproject-overriden-with-circular-reference.bst |    8 +
 .../junctions/circular-references/subproject.bst}  |    0
 .../circular-references/subproject/project.conf    |    2 +
 .../circular-references/subproject/sub.txt}        |    0
 .../subproject/subsubproject.bst                   |    4 +
 .../subproject/subsubproject/project.conf          |    2 +
 .../subproject/subsubproject/subsub.txt}           |    0
 .../subproject/subsubproject/subsubsubproject.bst  |    4 +
 .../subsubproject/subsubsubproject/project.conf    |    2 +
 .../subsubproject/subsubsubproject/subsubsub.txt}  |    0
 .../subsubproject/subsubsubproject/target.bst      |    4 +
 .../subproject/subsubproject/target.bst            |    4 +
 .../circular-references/subproject/target.bst      |    4 +
 ...rget-overridden-subsubproject-circular-link.bst |    4 +
 .../target-overridden-subsubproject-circular.bst   |    4 +
 .../elements/invalid-source-target.bst             |    8 -
 .../elements/nested-junction-target.bst            |    4 -
 .../config-target/elements/no-junction.bst         |    4 -
 .../config-target/elements/subsubproject.bst       |    4 -
 .../junctions/config-target/elements/target.bst    |    4 -
 tests/format/junctions/config-target/project.conf  |    3 -
 .../config-target/subproject/project.conf          |    3 -
 .../subproject/subsubproject/project.conf          |    3 -
 tests/format/junctions/conflict/bar.bst            |    4 -
 tests/format/junctions/conflict/foo.bst            |    4 -
 tests/format/junctions/conflict/project.conf       |    1 -
 tests/format/junctions/conflict/target.bst         |    6 -
 .../conflicts/include-conflict-target.bst          |    5 +
 .../junctions/conflicts/include-conflict.bst       |    7 +
 .../conflicts/nested-conflict-toplevel.bst         |    4 +
 .../junctions/conflicts/override-conflict.bst      |    8 +
 .../format/junctions/conflicts/plugin-conflict.bst |    4 +
 tests/format/junctions/conflicts/project.conf      |    2 +
 .../format/junctions/conflicts/simple-conflict.bst |    5 +
 .../subproject-override-conflicting-path.bst       |   13 +
 .../junctions/conflicts/subproject.bst}            |    0
 .../junctions/conflicts/subproject/project.conf    |    2 +
 .../junctions/conflicts/subproject/sub.txt}        |    0
 .../subproject/subsubproject-conflict-target.bst   |    4 +
 .../subproject/subsubproject-conflict.bst          |    4 +
 .../subsubproject-conflict/deepsurprise.txt}       |    0
 .../subproject/subsubproject-conflict/project.conf |    2 +
 .../subproject/subsubproject-conflict/target.bst   |    4 +
 .../conflicts/subproject/subsubproject.bst         |    4 +
 .../subproject/subsubproject/project.conf          |    2 +
 .../conflicts/subproject/subsubproject/subsub.txt} |    0
 .../subproject/subsubproject/subsubsubproject.bst  |    4 +
 .../subsubproject/subsubsubproject/project.conf    |    2 +
 .../subsubproject/subsubsubproject/subsubsub.txt}  |    0
 .../subsubproject/subsubsubproject/target.bst      |    4 +
 .../conflicts/subproject/subsubproject/target.bst  |    4 +
 .../junctions/conflicts/subproject/target.bst      |    4 +
 tests/format/junctions/conflicts/subproject2.bst   |    4 +
 .../junctions/conflicts/subproject2/inc.yaml       |    1 +
 .../conflicts/subproject2/plugins/found.py         |   19 +
 .../junctions/conflicts/subproject2/project.conf   |    8 +
 .../junctions/conflicts/subproject2/sub2.txt}      |    0
 .../junctions/conflicts/subproject2/target.bst     |    4 +
 .../duplicates-nested-full-path/project.conf       |    9 +
 .../duplicates-nested-full-path/subproject.bst}    |    0
 .../subproject/project.conf                        |    2 +
 .../subproject/subproject1.bst                     |    4 +
 .../subproject/subproject1/project.conf            |    2 +
 .../subproject/subproject1/sub.txt}                |    0
 .../subproject/subproject1/target.bst              |    4 +
 .../subproject/subproject2.bst                     |    4 +
 .../subproject/subproject2/project.conf            |    2 +
 .../subproject/subproject2/sub2.txt}               |    0
 .../subproject/subproject2/target.bst              |    4 +
 .../duplicates-nested-full-path/subproject3.bst    |    4 +
 .../subproject3/project.conf                       |    2 +
 .../subproject3/sub3.txt}                          |    0
 .../subproject3/target.bst                         |    4 +
 .../duplicates-nested-full-path/target.bst         |    6 +
 .../duplicates-nested-incomplete/project.conf      |    7 +
 .../duplicates-nested-incomplete/subproject.bst}   |    0
 .../subproject/project.conf                        |    7 +
 .../subproject/subproject1.bst                     |    4 +
 .../subproject/subproject1/project.conf            |    2 +
 .../subproject/subproject1/sub.txt}                |    0
 .../subproject/subproject1/target.bst              |    4 +
 .../subproject/subproject2.bst                     |    4 +
 .../subproject/subproject2/project.conf            |    2 +
 .../subproject/subproject2/sub2.txt}               |    0
 .../subproject/subproject2/target.bst              |    4 +
 .../duplicates-nested-incomplete/subproject3.bst   |    4 +
 .../subproject3/project.conf                       |    2 +
 .../subproject3/sub3.txt}                          |    0
 .../subproject3/target.bst                         |    4 +
 .../duplicates-nested-incomplete/target.bst        |    6 +
 .../junctions/duplicates-nested-link1/project.conf |    8 +
 .../duplicates-nested-link1/subproject.bst}        |    0
 .../subproject/project.conf                        |    7 +
 .../subproject/subproject1-link.bst                |    4 +
 .../subproject/subproject1.bst                     |    4 +
 .../subproject/subproject1/project.conf            |    2 +
 .../subproject/subproject1/sub.txt}                |    0
 .../subproject/subproject1/target.bst              |    4 +
 .../subproject/subproject2.bst                     |    4 +
 .../subproject/subproject2/project.conf            |    2 +
 .../subproject/subproject2/sub2.txt}               |    0
 .../subproject/subproject2/target.bst              |    4 +
 .../duplicates-nested-link1/subproject3.bst        |    4 +
 .../subproject3/project.conf                       |    2 +
 .../duplicates-nested-link1/subproject3/sub3.txt}  |    0
 .../duplicates-nested-link1/subproject3/target.bst |    4 +
 .../junctions/duplicates-nested-link1/target.bst   |    6 +
 .../junctions/duplicates-nested-link2/project.conf |    7 +
 .../duplicates-nested-link2/subproject.bst}        |    0
 .../subproject/project.conf                        |    8 +
 .../subproject/subproject1.bst                     |    4 +
 .../subproject/subproject1/project.conf            |    2 +
 .../subproject/subproject1/sub.txt}                |    0
 .../subproject/subproject1/target.bst              |    4 +
 .../subproject/subproject2.bst                     |    4 +
 .../subproject/subproject2/project.conf            |    2 +
 .../subproject/subproject2/sub2.txt}               |    0
 .../subproject/subproject2/target.bst              |    4 +
 .../duplicates-nested-link2/subproject2-link.bst   |    4 +
 .../duplicates-nested-link2/subproject3.bst        |    4 +
 .../subproject3/project.conf                       |    2 +
 .../duplicates-nested-link2/subproject3/sub3.txt}  |    0
 .../duplicates-nested-link2/subproject3/target.bst |    4 +
 .../junctions/duplicates-nested-link2/target.bst   |    6 +
 .../duplicates-nested-not-found/project.conf       |    8 +
 .../duplicates-nested-not-found/subproject.bst}    |    0
 .../subproject/project.conf                        |    7 +
 .../subproject/subproject1-link.bst                |    4 +
 .../subproject/subproject1.bst                     |    4 +
 .../subproject/subproject1/project.conf            |    2 +
 .../subproject/subproject1/sub.txt}                |    0
 .../subproject/subproject1/target.bst              |    4 +
 .../subproject/subproject2.bst                     |    4 +
 .../subproject/subproject2/project.conf            |    2 +
 .../subproject/subproject2/sub2.txt}               |    0
 .../subproject/subproject2/target.bst              |    4 +
 .../duplicates-nested-not-found/subproject3.bst    |    4 +
 .../subproject3/project.conf                       |    2 +
 .../subproject3/sub3.txt}                          |    0
 .../subproject3/target.bst                         |    4 +
 .../duplicates-nested-not-found/target.bst         |    6 +
 .../junctions/duplicates-nested/project.conf       |    7 +
 .../junctions/duplicates-nested/subproject.bst}    |    0
 .../duplicates-nested/subproject/project.conf      |    8 +
 .../duplicates-nested/subproject/subproject1.bst   |    4 +
 .../subproject/subproject1/project.conf            |    2 +
 .../subproject/subproject1/sub.txt}                |    0
 .../subproject/subproject1/target.bst              |    4 +
 .../duplicates-nested/subproject/subproject2.bst   |    4 +
 .../subproject/subproject2/project.conf            |    2 +
 .../subproject/subproject2/sub2.txt}               |    0
 .../subproject/subproject2/target.bst              |    4 +
 .../junctions/duplicates-nested/subproject3.bst    |    4 +
 .../duplicates-nested/subproject3/project.conf     |    2 +
 .../duplicates-nested/subproject3/sub3.txt}        |    0
 .../duplicates-nested/subproject3/target.bst       |    4 +
 .../format/junctions/duplicates-nested/target.bst  |    6 +
 .../junctions/duplicates-override-dup/project.conf |    2 +
 .../duplicates-override-dup/subproject.bst         |    8 +
 .../subproject/project.conf                        |    8 +
 .../subproject/subproject1.bst                     |    4 +
 .../subproject/subproject1/project.conf            |    2 +
 .../subproject/subproject1/sub.txt}                |    0
 .../subproject/subproject1/target.bst              |    4 +
 .../subproject/subproject2.bst                     |    4 +
 .../subproject/subproject2/project.conf            |    2 +
 .../subproject/subproject2/sub2.txt}               |    0
 .../subproject/subproject2/target.bst              |    4 +
 .../duplicates-override-dup/subproject3.bst        |    4 +
 .../subproject3/project.conf                       |    2 +
 .../duplicates-override-dup/subproject3/sub3.txt}  |    0
 .../duplicates-override-dup/subproject3/target.bst |    4 +
 .../junctions/duplicates-override-dup/target.bst   |    5 +
 .../duplicates-override-twice-link/duplicate.bst   |    4 +
 .../duplicate/duplicate.txt}                       |    0
 .../duplicate/project.conf                         |    2 +
 .../duplicate/target.bst                           |    4 +
 .../duplicates-override-twice-link/override.bst    |    4 +
 .../override/overridden-again.txt}                 |    0
 .../override/project.conf                          |    2 +
 .../override/target.bst                            |    4 +
 .../duplicates-override-twice-link/project.conf    |    7 +
 .../duplicates-override-twice-link/subproject.bst  |    8 +
 .../subproject/override.bst                        |    4 +
 .../subproject/override/overridden.txt}            |    0
 .../subproject/override/project.conf               |    2 +
 .../subproject/override/target.bst                 |    4 +
 .../subproject/project.conf                        |    7 +
 .../subproject/subsubproject.bst                   |    8 +
 .../subproject/subsubproject/project.conf          |    2 +
 .../subproject/subsubproject/subsubsubproject.bst  |    4 +
 .../subsubproject/subsubsubproject/original.txt}   |    0
 .../subsubproject/subsubsubproject/project.conf    |    2 +
 .../subsubproject/subsubsubproject/target.bst      |    4 +
 .../subproject/subsubsubproject-link.bst           |    4 +
 .../duplicates-override-twice-link/target.bst      |    5 +
 .../duplicates-simple-incomplete/project.conf      |    7 +
 .../duplicates-simple-incomplete/subproject1.bst   |    4 +
 .../subproject1/project.conf                       |    2 +
 .../subproject1/sub.txt}                           |    0
 .../subproject1/target.bst                         |    4 +
 .../duplicates-simple-incomplete/subproject2.bst   |    4 +
 .../subproject2/project.conf                       |    2 +
 .../subproject2/sub2.txt}                          |    0
 .../subproject2/target.bst                         |    4 +
 .../duplicates-simple-incomplete/target.bst        |    5 +
 .../junctions/duplicates-simple-link/project.conf  |    8 +
 .../duplicates-simple-link/subproject1.bst         |    4 +
 .../subproject1/project.conf                       |    2 +
 .../duplicates-simple-link/subproject1/sub.txt}    |    0
 .../duplicates-simple-link/subproject1/target.bst  |    4 +
 .../duplicates-simple-link/subproject2-link.bst    |    4 +
 .../duplicates-simple-link/subproject2.bst         |    4 +
 .../subproject2/project.conf                       |    2 +
 .../duplicates-simple-link/subproject2/sub2.txt}   |    0
 .../duplicates-simple-link/subproject2/target.bst  |    4 +
 .../junctions/duplicates-simple-link/target.bst    |    5 +
 .../duplicates-simple-not-found/project.conf       |    8 +
 .../duplicates-simple-not-found/subproject1.bst    |    4 +
 .../subproject1/project.conf                       |    2 +
 .../subproject1/sub.txt}                           |    0
 .../subproject1/target.bst                         |    4 +
 .../duplicates-simple-not-found/subproject2.bst    |    4 +
 .../subproject2/project.conf                       |    2 +
 .../subproject2/sub2.txt}                          |    0
 .../subproject2/target.bst                         |    4 +
 .../duplicates-simple-not-found/target.bst         |    5 +
 .../junctions/duplicates-simple/project.conf       |    8 +
 .../junctions/duplicates-simple/subproject1.bst    |    4 +
 .../duplicates-simple/subproject1/project.conf     |    2 +
 .../duplicates-simple/subproject1/sub.txt}         |    0
 .../duplicates-simple/subproject1/target.bst       |    4 +
 .../junctions/duplicates-simple/subproject2.bst    |    4 +
 .../duplicates-simple/subproject2/project.conf     |    2 +
 .../duplicates-simple/subproject2/sub2.txt}        |    0
 .../duplicates-simple/subproject2/target.bst       |    4 +
 .../format/junctions/duplicates-simple/target.bst  |    5 +
 tests/format/junctions/foo/app.bst                 |    7 -
 tests/format/junctions/foo/base.bst                |    4 -
 tests/format/junctions/foo/foo.txt                 |    1 -
 tests/format/junctions/foo/project.conf            |    1 -
 tests/format/junctions/foo/target.bst              |    5 -
 .../full-path/element-full-path-notfound.bst       |    3 +
 .../junctions/full-path/element-full-path.bst      |    3 +
 .../full-path/junction-full-path-notfound.bst      |    4 +
 .../junctions/full-path/junction-full-path.bst     |    4 +
 tests/format/junctions/full-path/project.conf      |    2 +
 .../junctions/full-path/subproject.bst}            |    0
 .../junctions/full-path/subproject/project.conf    |    2 +
 .../junctions/full-path/subproject/sub.txt}        |    0
 .../full-path/subproject/subsubproject.bst         |    4 +
 .../subproject/subsubproject/project.conf          |    2 +
 .../full-path/subproject/subsubproject/subsub.txt} |    0
 .../subproject/subsubproject/subsubsubproject.bst  |    4 +
 .../subsubproject/subsubsubproject/project.conf    |    2 +
 .../subsubproject/subsubsubproject/subsubsub.txt}  |    0
 .../subsubproject/subsubsubproject/target.bst      |    4 +
 .../full-path/subproject/subsubproject/target.bst  |    4 +
 .../junctions/full-path/subproject/target.bst      |    4 +
 .../inconsistent-names/elements/junction-A.bst     |    4 -
 .../elements/junction-B-diff-name.bst              |    4 -
 .../inconsistent-names/elements/target.bst         |    9 -
 .../inconsistent-names/junctionA/elements/app.bst  |    6 -
 .../junctionA/elements/junction-B.bst              |    4 -
 .../inconsistent-names/junctionA/elements/lib.bst  |    7 -
 .../junctionA/junctionB/elements/base.bst          |    4 -
 .../junctionA/junctionB/elements/lib2.bst          |    6 -
 .../junctionA/junctionB/project.conf               |    5 -
 .../inconsistent-names/junctionA/project.conf      |    5 -
 .../junctions/inconsistent-names/project.conf      |    5 -
 .../junctions/internal-and-conflict/project.conf   |    2 +
 .../internal-and-conflict/subproject.bst}          |    0
 .../internal-and-conflict/subproject/project.conf  |    6 +
 .../subproject/subsubproject.bst                   |    4 +
 .../subproject/subsubproject/project.conf          |    2 +
 .../subproject/subsubproject/subsub.txt}           |    0
 .../subproject/subsubproject/target.bst            |    4 +
 .../internal-and-conflict/subproject/subtarget.bst |   10 +
 .../internal-and-conflict/subsubproject-again.bst  |    4 +
 .../subsubproject-again/project.conf               |    2 +
 .../subsubproject-again/subsub-again.txt}          |    0
 .../subsubproject-again/target.bst                 |    4 +
 .../subsubproject-conflict.bst                     |    4 +
 .../subsubproject-conflict/project.conf            |    2 +
 .../subsubproject-conflict/subsub-again.txt}       |    0
 .../subsubproject-conflict/target.bst              |    4 +
 .../junctions/internal-and-conflict/target.bst     |    6 +
 .../format/junctions/internal-double/project.conf  |    2 +
 .../junctions/internal-double/subproject1.bst      |    4 +
 .../internal-double/subproject1/project.conf       |    6 +
 .../internal-double/subproject1/subsubproject.bst  |    4 +
 .../subproject1/subsubproject/project.conf         |    2 +
 .../subproject1/subsubproject/subsub1.txt}         |    0
 .../subproject1/subsubproject/target.bst           |    4 +
 .../internal-double/subproject1/subtarget.bst      |   10 +
 .../junctions/internal-double/subproject2.bst      |    4 +
 .../internal-double/subproject2/project.conf       |    6 +
 .../internal-double/subproject2/subsubproject.bst  |    4 +
 .../subproject2/subsubproject/project.conf         |    2 +
 .../subproject2/subsubproject/subsub2.txt}         |    0
 .../subproject2/subsubproject/target.bst           |    4 +
 .../internal-double/subproject2/subtarget.bst      |   10 +
 .../internal-double/subsubproject-again.bst        |    4 +
 .../subsubproject-again/project.conf               |    2 +
 .../subsubproject-again/subsub-again.txt}          |    0
 .../internal-double/subsubproject-again/target.bst |    4 +
 tests/format/junctions/internal-double/target.bst  |    6 +
 tests/format/junctions/internal-link/project.conf  |    2 +
 .../junctions/internal-link/subproject.bst}        |    0
 .../internal-link/subproject/project.conf          |    6 +
 .../subproject/subsubproject-link.bst              |    4 +
 .../internal-link/subproject/subsubproject.bst     |    4 +
 .../subproject/subsubproject/project.conf          |    2 +
 .../subproject/subsubproject/subsub.txt}           |    0
 .../subproject/subsubproject/target.bst            |    4 +
 .../internal-link/subproject/subtarget.bst         |   10 +
 .../internal-link/subsubproject-again.bst          |    4 +
 .../internal-link/subsubproject-again/project.conf |    2 +
 .../subsubproject-again/subsub-again.txt}          |    0
 .../internal-link/subsubproject-again/target.bst   |    4 +
 tests/format/junctions/internal-link/target.bst    |    5 +
 .../junctions/internal-override/project.conf       |    2 +
 .../junctions/internal-override/subproject.bst     |    8 +
 .../internal-override/subproject/project.conf      |    6 +
 .../internal-override/subproject/subsubproject.bst |    4 +
 .../subproject/subsubproject/project.conf          |    2 +
 .../subproject/subsubproject/subsub.txt}           |    0
 .../subproject/subsubproject/target.bst            |    4 +
 .../internal-override/subproject/subtarget.bst     |   10 +
 .../internal-override/subsubproject-again.bst      |    4 +
 .../subsubproject-again/project.conf               |    2 +
 .../subsubproject-again/subsub-again.txt}          |    0
 .../subsubproject-again/target.bst                 |    4 +
 .../internal-override/subsubproject-override.bst   |    4 +
 .../subsubproject-override/project.conf            |    2 +
 .../subsubproject-override/subsub-override.txt}    |    0
 .../subsubproject-override/target.bst              |    4 +
 .../format/junctions/internal-override/target.bst  |    5 +
 .../format/junctions/internal-simple/project.conf  |    2 +
 .../junctions/internal-simple/subproject.bst}      |    0
 .../internal-simple/subproject/project.conf        |    6 +
 .../internal-simple/subproject/subsubproject.bst   |    4 +
 .../subproject/subsubproject/project.conf          |    2 +
 .../subproject/subsubproject/subsub.txt}           |    0
 .../subproject/subsubproject/target.bst            |    4 +
 .../internal-simple/subproject/subtarget.bst       |   10 +
 .../internal-simple/subsubproject-again.bst        |    4 +
 .../subsubproject-again/project.conf               |    2 +
 .../subsubproject-again/subsub-again.txt}          |    0
 .../internal-simple/subsubproject-again/target.bst |    4 +
 tests/format/junctions/internal-simple/target.bst  |    5 +
 tests/format/junctions/{ => invalid}/base/base.txt |    0
 tests/format/junctions/invalid/base/project.conf   |    2 +
 .../format/junctions/{ => invalid}/base/target.bst |    0
 tests/format/junctions/invalid/missing-element.bst |    9 -
 tests/format/junctions/invalid/project.conf        |    1 +
 .../junctions/invalid/subproject-self-override.bst |   16 +
 .../junctions/invalid/target-self-override.bst     |    4 +
 .../bad-junction.bst}                              |    0
 .../junctionA/junctionB/project.conf               |    1 +
 .../missing-element/junctionA/project.conf         |    1 +
 .../format/junctions/missing-element/project.conf  |    1 +
 tests/format/junctions/nested/deeptarget.bst       |    6 +
 tests/format/junctions/nested/foo.bst              |    4 -
 tests/format/junctions/nested/project.conf         |    3 +-
 .../junctions/nested/subproject.bst}               |    0
 .../junctions/nested/subproject/project.conf       |    2 +
 .../junctions/nested/subproject/sub.txt}           |    0
 .../junctions/nested/subproject/subsubproject.bst  |    4 +
 .../nested/subproject/subsubproject/project.conf   |    2 +
 .../nested/subproject/subsubproject/subsub.txt}    |    0
 .../subproject/subsubproject/subsubsubproject.bst  |    4 +
 .../subsubproject/subsubsubproject/project.conf    |    2 +
 .../subsubproject/subsubsubproject/subsubsub.txt}  |    0
 .../subsubproject/subsubsubproject/target.bst      |    4 +
 .../nested/subproject/subsubproject/subtarget.bst  |    4 +
 .../nested/subproject/subsubproject/target.bst     |    4 +
 .../junctions/nested/subproject/subsubtarget.bst   |    4 +
 .../junctions/nested/subproject/subtarget.bst      |    4 +
 .../format/junctions/nested/subproject/target.bst  |    4 +
 tests/format/junctions/nested/target.bst           |    5 +-
 tests/format/junctions/options-base/project.conf   |    9 -
 .../format/junctions/options-default/project.conf  |    1 -
 tests/format/junctions/options-default/target.bst  |    4 -
 .../format/junctions/options-inherit/project.conf  |   10 -
 tests/format/junctions/options-inherit/target.bst  |    4 -
 .../base.bst => options/base-default.bst}          |    0
 .../options/{base.bst => base-explicit.bst}        |    0
 .../base.bst => options/base-propagate.bst}        |    0
 .../junctions/{ => options}/options-base/horsy.txt |    0
 .../junctions/{ => options}/options-base/pony.txt  |    0
 .../junctions/options/options-base/project.conf    |   10 +
 .../{ => options}/options-base/target.bst          |    0
 tests/format/junctions/options/project.conf        |    1 +
 tests/format/junctions/options/target-default.bst  |    4 +
 tests/format/junctions/options/target-explicit.bst |    4 +
 .../format/junctions/options/target-propagate.bst  |    4 +
 .../junctions/override-element/element.txt}        |    0
 .../override-element/override-subproject-dep.bst   |   11 +
 .../override-subproject-element-using-link.bst     |   12 +
 .../override-subproject-element-with-link.bst      |   12 +
 .../override-subproject-element.bst                |   11 +
 .../override-element/override-subsubproject.bst    |   12 +
 .../format/junctions/override-element/project.conf |    2 +
 .../junctions/override-element/subdep-override.bst |    4 +
 .../override-element/subdep-override.txt}          |    0
 .../subelement-alternative-link.bst                |    8 +
 .../override-element/subelement-override.bst       |   14 +
 .../override-element/subelement-override.txt}      |    0
 .../override-element/subproject-override-dep.bst   |    8 +
 .../subproject-override-element-using-link.bst     |    8 +
 .../subproject-override-element-with-link.bst      |    8 +
 .../subproject-override-element.bst                |    8 +
 .../subproject-override-subsubproject-element.bst  |    8 +
 .../override-element/subproject/project.conf       |    2 +
 .../subproject/sub-alternative.txt}                |    0
 .../junctions/override-element/subproject/sub.txt} |    0
 .../override-element/subproject/subdep.txt}        |    0
 .../override-element/subproject/subdependency.bst  |    4 +
 .../subproject/subelement-alternative.bst          |    7 +
 .../subproject/subelement-link.bst                 |    8 +
 .../override-element/subproject/subelement.bst     |    7 +
 .../subproject/subsubdep-override.bst              |    4 +
 .../subproject/subsubdep-override.txt}             |    0
 .../subproject/subsubproject-override-dep.bst      |    8 +
 .../subproject/subsubproject/project.conf          |    2 +
 .../subproject/subsubproject/subsub.txt}           |    0
 .../subproject/subsubproject/subsubdep.txt}        |    0
 .../subproject/subsubproject/subsubdependency.bst  |    4 +
 .../subproject/subsubproject/subsubelement.bst     |    7 +
 tests/format/junctions/override-twice/override.bst |    4 +
 .../override-twice/override/overridden-again.txt}  |    0
 .../junctions/override-twice/override/project.conf |    2 +
 .../junctions/override-twice/override/target.bst   |    4 +
 tests/format/junctions/override-twice/project.conf |    2 +
 .../format/junctions/override-twice/subproject.bst |    8 +
 .../override-twice/subproject/override.bst         |    4 +
 .../subproject/override/overridden.txt}            |    0
 .../subproject/override/project.conf               |    2 +
 .../override-twice/subproject/override/target.bst  |    4 +
 .../override-twice/subproject/project.conf         |    2 +
 .../override-twice/subproject/subsubproject.bst    |    8 +
 .../subproject/subsubproject/project.conf          |    2 +
 .../subproject/subsubproject/subsubsubproject.bst  |    4 +
 .../subsubproject/subsubsubproject/original.txt}   |    0
 .../subsubproject/subsubsubproject/project.conf    |    2 +
 .../subsubproject/subsubsubproject/target.bst      |    4 +
 tests/format/junctions/override-twice/target.bst   |    4 +
 .../overrides/overridden-subsubproject.bst         |   10 +
 .../overrides/overridden-subsubsubproject.bst      |   10 +
 tests/format/junctions/overrides/project.conf      |    2 +
 .../subproject-overriden-with-deep-subproject.bst  |    8 +
 ...subproject-with-deep-override-indirect-link.bst |    8 +
 .../subproject-with-deep-override-link.bst         |    8 +
 .../overrides/subproject-with-deep-override.bst    |    8 +
 .../overrides/subproject-with-overridden-link.bst  |    8 +
 .../overrides/subproject-with-override.bst         |    8 +
 .../junctions/overrides/subproject.bst}            |    0
 .../junctions/overrides/subproject/project.conf    |    2 +
 .../junctions/overrides/subproject/sub.txt}        |    0
 .../overrides/subproject/subsubproject-link.bst    |    4 +
 .../overrides/subproject/subsubproject.bst         |    4 +
 .../subproject/subsubproject/project.conf          |    2 +
 .../overrides/subproject/subsubproject/subsub.txt} |    0
 .../subsubproject/subsubsubproject-link.bst        |    4 +
 .../subproject/subsubproject/subsubsubproject.bst  |    4 +
 .../subsubproject/subsubsubproject/project.conf    |    2 +
 .../subsubproject/subsubsubproject/subsubsub.txt}  |    0
 .../subsubproject/subsubsubproject/target.bst      |    4 +
 .../overrides/subproject/subsubproject/target.bst  |    4 +
 .../subproject/subsubsubproject-indirect-link.bst  |    4 +
 .../junctions/overrides/subproject/target.bst      |    4 +
 .../format/junctions/overrides/surpriseproject.bst |    4 +
 .../surpriseproject/deepsurpriseproject.bst        |    4 +
 .../deepsurpriseproject/deepsurprise.txt}          |    0
 .../deepsurpriseproject/project.conf               |    2 +
 .../surpriseproject/deepsurpriseproject/target.bst |    4 +
 .../overrides/surpriseproject/project.conf         |    2 +
 .../overrides/surpriseproject/surprise.txt}        |    0
 .../junctions/overrides/surpriseproject/target.bst |    4 +
 .../target-overridden-subsubproject-link.bst       |    8 +
 .../overrides/target-overridden-subsubproject.bst  |   12 +
 ...t-overridden-subsubsubproject-indirect-link.bst |    7 +
 .../target-overridden-subsubsubproject-link.bst    |    7 +
 .../target-overridden-subsubsubproject.bst         |    8 +
 .../target-overridden-with-deepsubproject.bst      |    4 +
 tests/format/junctions/simple/project.conf         |    2 +
 .../junctions/simple/subproject.bst}               |    0
 .../junctions/simple/subproject/base.txt}          |    0
 .../junctions/simple/subproject/project.conf       |    2 +
 .../{base => simple/subproject}/target.bst         |    0
 tests/format/junctions/simple/target.bst           |    4 +
 tests/format/junctions/toplevel/bar.bst            |    4 -
 tests/format/junctions/toplevel/foo.bst            |    4 -
 tests/format/junctions/toplevel/project.conf       |    1 -
 tests/format/junctions/toplevel/target.bst         |    6 -
 .../junctions/{base => use-repo/baserepo}/base.txt |    0
 .../junctions/use-repo/baserepo/project.conf       |    2 +
 .../{base => use-repo/baserepo}/target.bst         |    0
 tests/format/junctions/use-repo/project.conf       |    2 +
 .../junctions/{options => use-repo}/target.bst     |    0
 tests/format/link.py                               |  168 +
 .../conditional-junctions}/elements/subproject.bst |    0
 .../elements/subsubproject-link.bst                |    8 +
 .../link/conditional-junctions/elements/target.bst |    4 +
 .../format/link/conditional-junctions/project.conf |   13 +
 .../subproject}/elements/hello.bst                 |    0
 .../elements/subsubproject-goodbye-junction.bst    |    5 +
 .../elements/subsubproject-hello-junction.bst      |    5 +
 .../conditional-junctions/subproject/project.conf  |    4 +
 .../subsubproject-goodbye/elements/target.bst      |    5 +
 .../subsubproject-goodbye/files/goodbye.txt}       |    0
 .../subproject/subsubproject-goodbye/project.conf  |    4 +
 .../subsubproject-hello/elements/target.bst}       |    0
 .../subsubproject-hello}/files/hello.txt           |    0
 .../subproject/subsubproject-hello/project.conf    |    4 +
 tests/format/link/conditional/elements/goodbye.bst |    5 +
 .../conditional}/elements/hello.bst                |    0
 .../link/conditional/elements/target-link.bst      |    8 +
 tests/format/link/conditional/elements/target.bst  |    4 +
 .../link/conditional/files/goodbye.txt}            |    0
 .../conditional}/files/hello.txt                   |    0
 tests/format/link/conditional/project.conf         |   13 +
 .../link/cross-link-junction-include/project.conf  |    4 +
 .../cross-link-junction-include/subproject.bst}    |    0
 .../subproject/project.conf                        |    2 +
 .../subproject/sub.txt}                            |    0
 .../subproject/subsubproject.bst                   |    4 +
 .../subproject/subsubproject/file.yml              |    2 +
 .../subproject/subsubproject/project.conf          |    2 +
 .../subproject/subsubproject/subsub.txt}           |    0
 .../subproject/subsubproject/subtarget.bst         |    4 +
 .../subproject/subsubproject/target.bst            |    4 +
 .../subproject/subtarget.bst                       |    4 +
 .../subproject/target.bst                          |    4 +
 .../cross-link-junction-include/subsubproject.bst  |    4 +
 .../link/cross-link-junction-include/target.bst    |    5 +
 tests/format/link/invalid/elements/base-file.bst   |    5 +
 .../invalid/elements/link-with-dependencies.bst    |    7 +
 .../link/invalid/elements/link-with-sources.bst    |    8 +
 .../invalid/elements/target-link-with-sources.bst  |    4 +
 tests/format/link/invalid/project.conf             |    4 +
 .../notfound/elements/depends-on-link-target.bst   |    4 +
 .../link/notfound/elements/link-full-path.bst      |    4 +
 .../format/link/notfound/elements/link-target.bst  |    4 +
 .../elements/linked-local-junction-target.bst      |    4 +
 .../notfound/elements/linked-local-junction.bst    |    4 +
 .../elements/linked-nested-junction-target.bst     |    4 +
 .../notfound/elements/linked-nested-junction.bst   |    4 +
 .../notfound/elements/subproject-link-notfound.bst |    4 +
 .../link/notfound/elements/subproject-link.bst     |    4 +
 .../notfound}/elements/subproject.bst              |    0
 .../elements/subsubproject-link-notfound.bst       |    4 +
 .../link/notfound/elements/subsubproject-link.bst  |    4 +
 .../link/notfound/elements/target-full-path.bst    |    4 +
 tests/format/link/notfound/project.conf            |    4 +
 .../subproject/elements/subsubproject-junction.bst |    0
 tests/format/link/notfound/subproject/project.conf |    4 +
 .../notfound/subproject/subsubproject/project.conf |    2 +
 .../simple-junctions/elements/full-path-link.bst   |    4 +
 .../simple-junctions/elements/subproject-link.bst  |    4 +
 .../simple-junctions}/elements/subproject.bst      |    0
 .../elements/subsubproject-link.bst                |    4 +
 .../simple-junctions/elements/target-full-path.bst |    4 +
 .../simple-junctions/elements/target-local.bst     |    4 +
 .../simple-junctions/elements/target-nested.bst    |    4 +
 tests/format/link/simple-junctions/project.conf    |    4 +
 .../subproject}/elements/hello.bst                 |    0
 .../subproject/elements/subsubproject-junction.bst |    0
 .../simple-junctions/subproject}/files/hello.txt   |    0
 .../link/simple-junctions/subproject/project.conf  |    4 +
 .../subproject/subsubproject/elements/hello.bst    |    0
 .../subproject/subsubproject/files/hello.txt       |    0
 .../subproject/subsubproject/project.conf          |    4 +
 tests/format/link/simple/elements/hello-link.bst   |    4 +
 .../simple}/elements/hello.bst                     |    0
 tests/format/link/simple/elements/target.bst       |    4 +
 .../subsubproject => link/simple}/files/hello.txt  |    0
 tests/format/link/simple/project.conf              |    4 +
 .../list-directive-error-element/project.conf      |    1 +
 .../list-directive-error-project/project.conf      |    1 +
 .../format/list-directive-type-error/project.conf  |    1 +
 tests/format/listdirectiveerrors.py                |   34 +-
 tests/format/option-arch-alias/project.conf        |    1 +
 tests/format/option-arch-unknown/project.conf      |    1 +
 tests/format/option-arch/project.conf              |    1 +
 tests/format/option-bool/project.conf              |    1 +
 .../option-element-mask-invalid/project.conf       |    1 +
 tests/format/option-element-mask/project.conf      |    1 +
 tests/format/option-enum-missing/project.conf      |    1 +
 tests/format/option-enum/project.conf              |    1 +
 tests/format/option-exports/project.conf           |    1 +
 tests/format/option-flags-missing/project.conf     |    1 +
 tests/format/option-flags/project.conf             |    1 +
 tests/format/option-list-directive.py              |   19 +
 tests/format/option-list-directive/project.conf    |   19 +
 tests/format/option-os/project.conf                |    1 +
 tests/format/option-overrides/project.conf         |    1 +
 tests/format/optionarch.py                         |   90 +-
 tests/format/optionbool.py                         |  123 +-
 tests/format/optioneltmask.py                      |   84 +-
 tests/format/optionenum.py                         |  130 +-
 tests/format/optionexports.py                      |   41 +-
 tests/format/optionflags.py                        |  150 +-
 tests/format/optionos.py                           |   57 +-
 tests/format/optionoverrides.py                    |   17 +-
 tests/format/options.py                            |  283 +-
 .../options/compound-and-condition/project.conf    |    1 +
 .../options/compound-or-condition/project.conf     |    1 +
 tests/format/options/deep-nesting/project.conf     |    1 +
 .../format/options/invalid-condition/project.conf  |    1 +
 .../format/options/invalid-expression/project.conf |    1 +
 .../options/invalid-name-dashes/project.conf       |    1 +
 .../invalid-name-leading-number/project.conf       |    1 +
 .../format/options/invalid-name-plus/project.conf  |    1 +
 .../options/invalid-name-spaces/project.conf       |    1 +
 tests/format/options/invalid-type/project.conf     |    1 +
 .../invalid-variable-name-plus/project.conf        |    1 +
 .../invalid-variable-name-spaces/project.conf      |    1 +
 tests/format/options/nested-condition/project.conf |    1 +
 tests/format/options/simple-condition/project.conf |    1 +
 .../format/options/undefined-variable/project.conf |    1 +
 .../prepend-configure-commands/project.conf        |    1 +
 tests/format/project.py                            |  172 +-
 tests/format/project/default/project.conf          |    1 +
 .../format/project/duplicate-plugins/project.conf  |    9 +-
 tests/format/project/element-path/project.conf     |    1 +
 tests/format/project/empty-depends/project.conf    |    1 +
 tests/format/project/emptyname/project.conf        |    1 +
 tests/format/project/invalid-yaml/project.conf     |    1 +
 tests/format/project/invalidname/project.conf      |    1 +
 tests/format/project/local-plugin/project.conf     |    3 +-
 tests/format/project/missing-element/project.conf  |    1 +
 tests/format/project/missing-junction/project.conf |    1 +
 tests/format/project/overridepath/project.conf     |    1 +
 tests/format/project/plugin-allowed/element.bst    |    1 -
 tests/format/project/plugin-allowed/plugins/foo.py |   16 -
 tests/format/project/plugin-allowed/project.conf   |    7 -
 tests/format/project/plugin-forbidden/element.bst  |    1 -
 .../forbidden-plugins/forbidden-plugin.py          |   16 -
 tests/format/project/plugin-forbidden/project.conf |    2 -
 .../plugin-no-load-ref/plugins/noloadref.py        |    7 +-
 .../errorplugin/preflighterror.py                  |   10 +-
 .../project/plugin-preflight-error/project.conf    |    3 +-
 .../project/project-from-subdir/project.conf       |    1 +
 tests/format/project/refs-options/project.conf     |    1 +
 tests/format/project/unsupported/project.conf      |    2 +-
 tests/format/projectoverrides.py                   |   17 +-
 tests/format/stack.py                              |   22 +
 tests/format/stack/elements/build-only-stack.bst   |    4 +
 tests/format/stack/elements/dependency.bst         |    2 +
 tests/format/stack/elements/runtime-only-stack.bst |    4 +
 tests/format/stack/project.conf                    |    4 +
 tests/format/substitutions.py                      |   20 +
 tests/format/userconfig.py                         |   21 +
 tests/format/variables.py                          |  295 +-
 tests/format/variables/cyclic_variables/cyclic.bst |    2 +-
 .../variables/cyclic_variables/indirect-cyclic.bst |    8 +
 .../format/variables/cyclic_variables/project.conf |    1 +
 .../variables/cyclic_variables/self-reference.bst  |    4 +
 .../variables/cyclic_variables/simple-cyclic.bst   |    5 +
 tests/format/variables/defaults/cmake.bst          |    2 -
 tests/format/variables/defaults/distutils.bst      |    2 -
 tests/format/variables/defaults/makemaker.bst      |    2 -
 tests/format/variables/defaults/modulebuild.bst    |    2 -
 tests/format/variables/defaults/project.conf       |   10 +-
 tests/format/variables/defaults/qmake.bst          |    2 -
 .../format/variables/missing_variables/manual3.bst |   10 +
 .../variables/missing_variables/project.conf       |    1 +
 tests/format/variables/overrides/cmake.bst         |    7 -
 tests/format/variables/overrides/distutils.bst     |    6 -
 tests/format/variables/overrides/makemaker.bst     |    6 -
 tests/format/variables/overrides/modulebuild.bst   |    6 -
 tests/format/variables/overrides/project.conf      |    9 +-
 tests/format/variables/overrides/qmake.bst         |    6 -
 .../partial_context}/base.bst                      |    0
 .../variables/partial_context/base/project.conf    |    3 +
 .../format/variables/partial_context/base/vars.yml |    2 +
 .../format/variables/partial_context/project.conf  |    8 +
 tests/format/variables/partial_context/test.bst    |    3 +
 tests/format/variables/protected-vars/project.conf |    1 +
 .../variables/public_data_variables/project.conf   |    5 +
 .../variables/public_data_variables/public.bst     |   11 +
 .../public_data_variables/public_unresolved.bst    |    9 +
 tests/format/variables/shared_variables/one.bst    |    6 +
 .../format/variables/shared_variables/project.conf |    2 +
 tests/format/variables/shared_variables/shared.yml |    3 +
 tests/format/variables/shared_variables/two.bst    |    6 +
 tests/frontend/__init__.py                         |    7 +-
 tests/frontend/artifact_delete.py                  |  146 +-
 tests/frontend/artifact_list_contents.py           |   79 +-
 tests/frontend/artifact_log.py                     |   41 +-
 tests/frontend/artifact_show.py                    |  149 +-
 tests/frontend/buildcheckout.py                    |  898 ++---
 tests/frontend/buildtrack.py                       |  402 --
 tests/frontend/completions.py                      |  383 +-
 .../completions/no-element-path/project.conf       |    1 +
 tests/frontend/completions/project/project.conf    |    2 +-
 .../frontend/completions/sub-folders/project.conf  |    2 +-
 tests/frontend/compose_splits.py                   |   22 +-
 tests/frontend/configurable_warnings.py            |   50 +-
 .../frontend/configuredwarning/plugins/corewarn.py |    6 +-
 .../frontend/configuredwarning/plugins/warninga.py |    3 +
 .../frontend/configuredwarning/plugins/warningb.py |    3 +
 tests/frontend/configuredwarning/project.conf      |    5 +-
 tests/frontend/consistencyerror/bug.bst            |    2 +-
 tests/frontend/consistencyerror/error.bst          |    2 +-
 .../consistencyerror/plugins/consistencybug.py     |    7 +-
 .../consistencyerror/plugins/consistencyerror.py   |   10 +-
 tests/frontend/consistencyerror/project.conf       |    5 +-
 tests/frontend/cross_junction_workspace.py         |   65 +-
 .../elements/dummy_1.bst}                          |    0
 .../elements/dummy_2.bst}                          |    0
 .../elements/dummy_3.bst}                          |    0
 .../default-target/elements/dummy_stack.bst        |    5 +
 .../sub-project/elements/dummy_subproject.bst}     |    0
 .../default-target/files/sub-project/project.conf  |    3 +
 tests/frontend/default-target/project.conf         |    3 +
 tests/frontend/default_target.py                   |  192 +
 tests/frontend/exceptions/project.conf             |    1 +
 tests/frontend/fetch.py                            |  170 +-
 tests/frontend/help.py                             |   23 +-
 tests/frontend/init.py                             |  143 +-
 tests/frontend/interactive_init.py                 |   42 +
 tests/frontend/invalid_element_path/project.conf   |    2 +-
 tests/frontend/large_directory.py                  |   79 +
 tests/frontend/logging.py                          |  190 +-
 tests/frontend/logging/elements/bar.bst            |    4 +
 tests/frontend/logging/elements/foo.bst            |    4 +
 tests/frontend/logging/elements/logtest.bst        |    5 +
 .../__init__.py => frontend/logging/files/bar}     |    0
 .../logging}/files/foo                             |    0
 tests/frontend/logging/plugins/logtest.py          |   44 +
 tests/frontend/logging/project.conf                |   10 +
 tests/frontend/main.py                             |    8 +-
 tests/frontend/mirror.py                           |  419 +--
 tests/frontend/order.py                            |   79 +-
 tests/frontend/overlaps.py                         |  194 +-
 tests/frontend/overlaps/directory-file.bst         |    9 +
 .../overlaps/directory-file/directory-file}        |    0
 .../frontend/overlaps/multistage-overlap-error.bst |   12 +
 .../overlaps/multistage-overlap-ignore.bst         |   12 +
 tests/frontend/overlaps/multistage-overlap.bst     |   12 +
 tests/frontend/overlaps/plugins/overlap.py         |   56 +
 tests/frontend/overlaps/relocated-unstaged.bst     |    9 +
 tests/frontend/overlaps/relocated.bst              |   15 +
 tests/frontend/overlaps/subdir-a.bst               |    7 +
 tests/frontend/overlaps/unstaged.bst               |    4 +
 tests/frontend/overlaps/whitelist-undefined.bst    |   13 +
 tests/frontend/overlaps/with-directory.bst         |    7 +
 .../overlaps/with-directory/directory-file/file}   |    0
 tests/frontend/progress.py                         |  111 +
 tests/frontend/project/elements/format-deps.bst    |   17 +
 .../project/elements/import-large-directory.bst    |    4 +
 tests/frontend/project/elements/random.bst         |    1 +
 .../files/files-and-links/basicfolder/basicsymlink |    1 -
 .../project/files/sub-project/files/deps.bst       |    1 +
 .../project/files/sub-project/project.conf         |    2 +-
 .../files/sub2-project/elements/import-sub.bst     |    4 +
 .../sub2-project}/files/etc-files/etc/animal.conf  |    0
 .../project/files/sub2-project/project.conf        |    4 +
 tests/frontend/project/plugins/randomelement.py    |   37 +
 tests/frontend/project/project.conf                |    2 +-
 tests/frontend/project/sources/fetch_source.py     |   33 +-
 tests/frontend/project_default/elements/target.bst |    4 -
 .../frontend/project_default/elements/target2.bst  |    4 -
 tests/frontend/project_default/project.conf        |   11 -
 tests/frontend/project_fail/project.conf           |    2 +-
 .../project_world/elements/checkout-deps.bst       |    7 -
 .../project_world/elements/compose-exclude-dev.bst |   16 -
 .../project_world/elements/compose-include-bin.bst |   16 -
 .../project_world/elements/rebuild-target.bst      |    4 -
 .../files/sub-project/elements/import-etc.bst      |    4 -
 .../project_world/files/sub-project/project.conf   |    4 -
 tests/frontend/project_world/project.conf          |    7 -
 tests/frontend/pull.py                             |  591 +--
 tests/frontend/push.py                             |  653 ++--
 tests/frontend/rebuild.py                          |   62 +-
 tests/frontend/remote-caches.py                    |   70 +-
 tests/frontend/show.py                             |  592 ++-
 .../elements/compose-all.bst                       |    0
 .../simple}/elements/import-bin.bst                |    0
 .../simple}/elements/import-dev.bst                |    0
 tests/frontend/simple/elements/subdir/target.bst   |    7 +
 .../{project_world => simple}/elements/target.bst  |    0
 .../simple}/files/bin-files/usr/bin/hello          |    0
 .../simple}/files/dev-files/usr/include/pony.h     |    0
 tests/frontend/simple/project.conf                 |    4 +
 tests/frontend/source-fetch/apples.bst             |    6 +
 tests/frontend/source-fetch/bananas.bst            |   12 +
 tests/frontend/source-fetch/files/apples           |    1 +
 tests/frontend/source-fetch/files/bananas          |    1 +
 tests/frontend/source-fetch/files/oranges          |    1 +
 tests/frontend/source-fetch/oranges.bst            |    6 +
 tests/frontend/source-track/apples.bst             |    5 +
 tests/frontend/source-track/bananas.bst            |   11 +
 tests/frontend/source-track/comments.bst           |   13 +
 tests/frontend/source-track/files/apples           |    1 +
 tests/frontend/source-track/files/bananas          |    1 +
 tests/frontend/source-track/files/oranges          |    1 +
 tests/frontend/source-track/oranges.bst            |    5 +
 tests/frontend/source_checkout.py                  |  193 +-
 .../strict-depends/elements/non-strict-depends.bst |    2 +-
 .../strict-depends/elements/strict-depends.bst     |    2 +-
 tests/frontend/strict-depends/project.conf         |    1 +
 .../track-cross-junction/subproject/project.conf   |    3 +-
 tests/frontend/track-optional-inline/project.conf  |    2 +-
 .../track-optional-project-refs/project.conf       |    1 +
 tests/frontend/track.py                            |  381 +-
 tests/frontend/version.py                          |   10 +-
 tests/frontend/workspace.py                        | 1077 +++---
 tests/frontend/workspaced-build-dep/project.conf   |    4 +-
 tests/frontend/workspaced-runtime-dep/project.conf |    4 +-
 tests/integration/artifact.py                      |  162 +-
 tests/integration/autotools.py                     |   80 +-
 tests/integration/build-uid.py                     |   63 +-
 tests/integration/cachedfail.py                    |  208 +-
 tests/integration/cmake.py                         |   68 -
 tests/integration/compose-symlinks.py              |   15 +-
 tests/integration/compose.py                       |  192 +-
 tests/integration/filter.py                        |   74 +
 tests/integration/import.py                        |   50 +-
 tests/integration/interactive_build.py             |  115 +
 tests/integration/make.py                          |   52 -
 tests/integration/manual.py                        |  236 +-
 tests/integration/messages.py                      |   52 +-
 tests/integration/pip_element.py                   |  135 -
 tests/integration/pip_source.py                    |  186 +-
 .../project/elements/cmake/cmakeconfroothello.bst  |   15 -
 .../project/elements/cmake/cmakehello.bst          |   10 -
 .../project/elements/compose/test-integration.bst  |   10 +
 .../integration/project/elements/echo-env-var.bst  |   10 +
 tests/integration/project/elements/echo-target.bst |    3 +
 .../integration/project/elements/filter/filter.bst |   16 +
 .../integration/project/elements/filter/parent.bst |   20 +
 .../project/elements/interactive/failed-build.bst  |   14 +
 .../project/elements/make/makehello.bst            |   10 -
 .../project/elements/manual/import-file.bst        |    5 +
 .../elements/manual/manual-stage-custom.bst        |   13 +
 .../elements/sandbox-bwrap/base-with-tmp.bst       |    6 -
 .../project/elements/sandbox-bwrap/break-shell.bst |    9 -
 .../elements/sandbox-bwrap/command-exit-42.bst     |    8 -
 .../sandbox-bwrap/non-executable-shell.bst         |    9 -
 .../elements/sandbox-bwrap/test-cleanup.bst        |   13 -
 .../project/elements/sandbox/build-arch.bst        |   12 +
 .../project/elements/sandbox/test-dev-shm.bst      |   15 +
 .../project/elements/script/corruption-2.bst       |    8 +-
 .../project/elements/script/corruption.bst         |   20 +-
 .../project/elements/script/marked-tmpdir.bst      |    5 +-
 .../project/elements/script/script-layout.bst      |   17 +-
 .../integration/project/elements/script/script.bst |    5 +-
 .../integration/project/elements/script/tmpdir.bst |    5 +-
 tests/integration/project/files/cmakehello.tar.gz  |  Bin 10240 -> 0 bytes
 tests/integration/project/files/makehello.tar.gz   |  Bin 432 -> 0 bytes
 .../project/files/manual-element/root/hello        |    1 +
 .../project/files/manual-element/root/subdir/hello |    1 +
 tests/integration/project/files/pip-source/app1.py |    4 +-
 tests/integration/project/files/test_shm.c         |   29 +
 .../project/files/workspace-incremental/Makefile   |    7 +
 .../project/files/workspace-incremental/source     |    1 +
 .../project/files/workspace-partial/Makefile       |   10 +
 .../project/files/workspace-partial/source1        |    1 +
 .../project/files/workspace-partial/source2        |    1 +
 tests/integration/project/project.conf             |   10 +-
 tests/integration/pullbuildtrees.py                |  129 +-
 tests/integration/sandbox-bwrap.py                 |   62 -
 tests/integration/sandbox.py                       |   53 +
 tests/integration/script.py                        |  236 +-
 tests/integration/shell.py                         |  406 +-
 tests/integration/shellbuildtrees.py               |  566 +--
 tests/integration/sockets.py                       |   17 +-
 tests/integration/source-determinism.py            |   83 +-
 tests/integration/stack.py                         |   19 +-
 tests/integration/symlinks.py                      |   53 +-
 tests/integration/workspace.py                     |  449 ++-
 tests/internals/cascache.py                        |  108 +
 tests/internals/context.py                         |  109 +-
 tests/internals/loader.py                          |   42 +-
 tests/internals/loader/onefile/project.conf        |    1 +
 tests/internals/pluginfactory.py                   |  304 --
 .../internals/pluginfactory/anotherelement/foo.py  |    9 -
 tests/internals/pluginfactory/anothersource/foo.py |    9 -
 tests/internals/pluginfactory/badsetup/foo.py      |    6 -
 .../pluginfactory/badversionelement/foo.py         |   11 -
 .../pluginfactory/badversionsource/foo.py          |   11 -
 tests/internals/pluginfactory/customelement/foo.py |    9 -
 tests/internals/pluginfactory/customsource/foo.py  |    9 -
 tests/internals/pluginfactory/notatype/foo.py      |    6 -
 tests/internals/pluginfactory/wrongtype/foo.py     |   12 -
 tests/internals/pluginloading.py                   |   62 -
 .../badversionelement/customelements/foo.py        |   19 -
 .../badversionelement/elements/simple.bst          |    4 -
 .../pluginloading/badversionelement/project.conf   |    9 -
 .../badversionsource/customsources/foo.py          |   19 -
 .../badversionsource/elements/simple.bst           |    6 -
 .../pluginloading/badversionsource/project.conf    |    9 -
 .../customelement/elements/simple.bst              |    4 -
 .../customelement/pluginelements/foo.py            |   17 -
 .../pluginloading/customelement/project.conf       |    7 -
 .../pluginloading/customsource/elements/simple.bst |    6 -
 .../customsource/pluginsources/foo.py              |   20 -
 .../pluginloading/customsource/project.conf        |    7 -
 tests/internals/storage.py                         |  307 +-
 .../__init__.py => storage/empty/.gitkeep}         |    0
 .../__init__.py => storage/merge-add/added}        |    0
 .../__init__.py => storage/merge-add/root-file}    |    0
 .../merge-add/subdirectory/subdir-file}            |    0
 .../__init__.py => storage/merge-base/root-file}   |    0
 .../merge-base/subdirectory/subdir-file}           |    0
 .../merge-buildtree/root-file}                     |    0
 .../merge-buildtree/root-file.o}                   |    0
 .../merge-buildtree/subdirectory/subdir-file}      |    0
 .../merge-buildtree/subdirectory/subdir-file.o}    |    0
 tests/internals/storage/merge-link-change/link     |    1 +
 .../merge-link-change/root-file}                   |    0
 .../storage/merge-link-change/subdirectory/link    |    1 +
 .../merge-link-change/subdirectory/subdir-file}    |    0
 tests/internals/storage/merge-link/link            |    1 +
 .../storage/merge-link/root-file}                  |    0
 .../storage/merge-link/subdirectory}/subdir-file   |    0
 .../root-file}                                     |    0
 .../root-file.o}                                   |    0
 .../subdirectory}/subdir-file                      |    0
 .../subdirectory/subdir-file.o/test}               |    0
 .../merge-override-in-subdir-with-file/root-file}  |    0
 .../root-file.o}                                   |    0
 .../subdirectory}/subdir-file                      |    0
 .../subdirectory/subdir-file.o}                    |    0
 .../storage/merge-override-subdirectory/root-file} |    0
 .../merge-override-subdirectory/root-file.o}       |    0
 .../merge-override-subdirectory/subdirectory}      |    0
 .../merge-override-with-directory/root-file}       |    0
 .../root-file.o/test}                              |    0
 .../subdirectory}/subdir-file                      |    0
 .../subdirectory/subdir-file.o}                    |    0
 .../storage/merge-override-with-file/root-file}    |    0
 .../storage/merge-override-with-file/root-file.o}  |    0
 .../subdirectory}/subdir-file                      |    0
 .../subdirectory/subdir-file.o}                    |    0
 .../root-file}                                     |    0
 .../subdirectory}                                  |    0
 .../storage/merge-properties/root-file}            |    0
 .../merge-properties/subdirectory}/subdir-file     |    0
 .../storage/merge-remove/subdirectory}/subdir-file |    0
 tests/internals/storage/merge-replace/root-file    |    1 +
 .../merge-replace/subdirectory}/subdir-file        |    0
 .../storage/merge-subdirectory-add/root-file}      |    0
 .../merge-subdirectory-add/subdirectory/added}     |    0
 .../subdirectory/subdir-file                       |    1 +
 .../storage/merge-subdirectory-link/root-file}     |    0
 .../merge-subdirectory-link/subdirectory/link      |    1 +
 .../subdirectory}/subdir-file                      |    0
 .../storage/merge-subdirectory-remove/root-file}   |    0
 .../subdirectory/.gitkeep}                         |    0
 .../storage/merge-subdirectory-replace/root-file}  |    0
 .../subdirectory/subdir-file                       |    1 +
 tests/internals/storage_vdir_import.py             |  188 +-
 tests/internals/utils_move_atomic.py               |   30 +-
 tests/internals/utils_save_atomic.py               |   48 +-
 tests/internals/yaml.py                            |  391 +-
 .../deprecationwarnings/deprecationwarnings.py     |   43 -
 .../project/elements/deprecated.bst                |    1 -
 .../project/plugins/elements/deprecated_plugin.py  |   11 -
 .../plugins/elements/deprecated_plugin.yaml        |   22 -
 .../deprecationwarnings/project/project.conf       |   15 -
 tests/plugins/loading.py                           |  709 ++++
 .../loading/elements/subproject-junction.bst}      |    0
 .../plugins/elements/deprecated/deprecated.py      |   21 +
 .../loading/plugins/elements/found/found.py        |   19 +
 .../incompatiblemajor/incompatiblemajor.py         |   10 +
 .../incompatibleminor/incompatibleminor.py         |   10 +
 .../elements/malformedminversion/badstring.py      |   11 +
 .../plugins/elements/malformedminversion/dict.py   |   11 +
 .../plugins/elements/malformedminversion/list.py   |   11 +
 .../plugins/elements/malformedminversion/number.py |   11 +
 .../plugins/elements/nominversion/nominversion.py  |   10 +
 .../loading/plugins/nosetup/nosetup.py}            |    0
 .../plugins/setupnotfunction/setupnotfunction.py   |    6 +
 .../setupreturnsbadtype/setupreturnsbadtype.py     |   15 +
 .../setupreturnsnottype/setupreturnsnottype.py     |    8 +
 .../plugins/sources/deprecated/deprecated.py       |   34 +
 .../plugins/loading/plugins/sources/found/found.py |   32 +
 .../sources/incompatiblemajor/incompatiblemajor.py |   10 +
 .../sources/incompatibleminor/incompatibleminor.py |   10 +
 .../sources/malformedminversion/badstring.py       |   11 +
 .../plugins/sources/malformedminversion/dict.py    |   11 +
 .../plugins/sources/malformedminversion/list.py    |   11 +
 .../plugins/sources/malformedminversion/number.py  |   11 +
 .../plugins/sources/nominversion/nominversion.py   |   10 +
 tests/plugins/loading/project.conf                 |    8 +
 .../subproject/elements/subsubproject-junction.bst |    0
 tests/plugins/loading/subproject/project.conf      |    8 +
 .../loading/subproject/subsubproject/project.conf  |    5 +
 tests/plugins/sample-plugins/setup.py              |   36 +
 .../sample-plugins/src/sample_plugins}/__init__.py |    0
 .../src/sample_plugins/elements}/__init__.py       |    0
 .../src/sample_plugins/elements/sample.py          |   19 +
 .../src/sample_plugins/elements/sample.yaml        |    5 +
 .../src/sample_plugins/sources}/__init__.py        |    0
 .../src/sample_plugins/sources/sample.py           |   32 +
 .../project/elements/autotools/amhello.bst         |   26 +
 .../project/elements/base.bst                      |    0
 .../project/elements/base/base-alpine.bst          |    0
 .../elements/build-shell/buildtree-fail.bst        |    0
 .../project/elements/build-shell/buildtree.bst     |    0
 .../project/elements/no-runtime-deps.bst           |    0
 .../project}/files/amhello.tar.gz                  |  Bin
 .../project/files/dev-files/usr/include/pony.h     |    0
 tests/remotecache/project/project.conf             |   25 +
 tests/remotecache/simple.py                        |   65 +
 tests/remoteexecution/buildfail.py                 |   37 +-
 tests/remoteexecution/buildtree.py                 |   37 +-
 tests/remoteexecution/junction.py                  |   71 +-
 tests/remoteexecution/partial.py                   |   59 +-
 .../project/elements/autotools/amhello.bst         |   16 +
 .../project/files/sub-project/project.conf         |    1 +
 tests/remoteexecution/project/project.conf         |    1 +
 tests/remoteexecution/simple.py                    |   43 +-
 tests/remoteexecution/workspace.py                 |  303 ++
 tests/sandboxes/fallback.py                        |   76 -
 tests/sandboxes/missing-command.py                 |   13 +-
 tests/sandboxes/missing-command/project.conf       |    1 +
 tests/sandboxes/missing-dependencies/project.conf  |    2 +-
 tests/sandboxes/missing_dependencies.py            |   95 +-
 tests/sandboxes/mounting/mount_simple.py           |   52 -
 tests/sandboxes/project/project.conf               |    1 +
 tests/sandboxes/remote-exec-config.py              |   72 +-
 tests/sandboxes/selection.py                       |   69 +-
 tests/sourcecache/cache.py                         |   86 +-
 tests/sourcecache/capabilities.py                  |   44 +
 tests/sourcecache/config.py                        |   23 +-
 tests/sourcecache/fetch.py                         |  264 +-
 .../project/plugins/elements/always_fail.py        |    2 +
 tests/sourcecache/project/project.conf             |    3 +-
 tests/sourcecache/push.py                          |  240 +-
 tests/sourcecache/source-checkout.py               |   30 +-
 tests/sourcecache/staging.py                       |   69 +-
 tests/sourcecache/workspace.py                     |   61 +-
 tests/sources/bzr.py                               |   33 +-
 tests/sources/bzr/project.conf                     |    1 +
 tests/sources/deb.py                               |  180 -
 tests/sources/deb/a_deb.deb                        |  Bin 7624 -> 0 bytes
 .../content/share/doc/lua-clod/changelog.Debian.gz |  Bin 37 -> 0 bytes
 .../content/share/lua/5.2/clod.lua                 |    1 -
 tests/sources/deb/explicit-basedir/target.bst      |    7 -
 .../usr/share/doc/lua-clod/changelog.Debian.gz     |  Bin 37 -> 0 bytes
 .../deb/fetch/content/usr/share/lua/5.2/clod.lua   |    1 -
 tests/sources/deb/fetch/target-lz.bst              |    6 -
 tests/sources/deb/fetch/target.bst                 |    6 -
 .../usr/share/doc/lua-clod/changelog.Debian.gz     |  Bin 37 -> 0 bytes
 .../no-basedir/content/usr/share/lua/5.2/clod.lua  |    1 -
 tests/sources/deb/no-basedir/target.bst            |    7 -
 tests/sources/deb/no-ref/a/b/d                     |    1 -
 tests/sources/deb/no-ref/a/c                       |    1 -
 tests/sources/deb/no-ref/target.bst                |    5 -
 tests/sources/git.py                               | 1121 +++---
 tests/sources/git/project-override/project.conf    |    1 +
 tests/sources/git/template/project.conf            |    1 +
 tests/sources/keytest.py                           |   10 +-
 tests/sources/local.py                             |  169 +-
 tests/sources/local/basic/project.conf             |    1 +
 tests/sources/local/directory/project.conf         |    1 +
 tests/sources/local/file-exists/project.conf       |    1 +
 .../local/invalid-relative-path/project.conf       |    1 +
 tests/sources/local/symlink/project.conf           |    1 +
 .../plugins/sources/always_cached.py               |   10 +-
 tests/sources/no-fetch-cached/project.conf         |    3 +-
 tests/sources/no_fetch_cached.py                   |   28 +-
 tests/sources/ostree/template/project.conf         |    2 -
 tests/sources/patch.py                             |   95 +-
 tests/sources/patch/basic/project.conf             |    1 +
 .../patch/different-strip-level/project.conf       |    1 +
 .../patch/invalid-relative-path/project.conf       |    1 +
 tests/sources/patch/multiple-patches/project.conf  |    1 +
 .../sources/patch/separate-patch-dir/project.conf  |    1 +
 tests/sources/pip.py                               |   54 +-
 tests/sources/previous_source_access.py            |   37 +-
 .../plugins/sources/foo_transform.py               |   42 +-
 tests/sources/previous_source_access/project.conf  |    3 +-
 .../project_key_test/plugins/sources/key-test.py   |   30 +-
 tests/sources/project_key_test/project.conf        |    3 +-
 tests/sources/remote.py                            |  198 +-
 tests/sources/tar.py                               |  299 +-
 tests/sources/tar/read-only/content/c.tar.gz       |  Bin 0 -> 128 bytes
 tests/sources/variables.py                         |   35 +
 .../multiple-patches => variables/folder}/file.txt |    0
 tests/sources/variables/project.conf               |    3 +
 tests/sources/variables/target.bst                 |    9 +
 tests/sources/variables/unresolveable-target.bst   |    6 +
 tests/sources/zip.py                               |  135 +-
 tests/testutils/__init__.py                        |    2 +-
 tests/testutils/artifactshare.py                   |  306 +-
 tests/testutils/constants.py                       |   15 +
 tests/testutils/context.py                         |   34 +
 tests/testutils/element_generators.py              |   24 +-
 tests/testutils/file_server.py                     |    4 +-
 tests/testutils/filetypegenerator.py               |   13 +-
 tests/testutils/ftp_server.py                      |    6 +-
 tests/testutils/http_server.py                     |   62 +-
 tests/testutils/junction.py                        |   15 +-
 tests/testutils/patch.py                           |   10 +-
 tests/testutils/platform.py                        |   18 +-
 tests/testutils/python_repo.py                     |   46 +-
 tests/testutils/repo/bzr.py                        |   32 +-
 tests/testutils/repo/git.py                        |   73 +-
 tests/testutils/repo/tar.py                        |   14 +-
 tests/testutils/repo/zip.py                        |   16 +-
 tests/testutils/setuptools.py                      |   13 +-
 tox.ini                                            |  121 +-
 1750 files changed, 52969 insertions(+), 37777 deletions(-)
 create mode 100644 .asf.yaml
 create mode 100644 .github/CODEOWNERS
 create mode 100644 .github/compose/ci.docker-compose.yml
 create mode 100644 .github/workflows/ci.yml
 create mode 100644 .github/workflows/merge.yml
 create mode 100644 .github/workflows/release.yml
 delete mode 100644 .gitlab-ci.yml
 delete mode 100644 .gitlab-ci/buildgrid-compose.yml
 delete mode 100644 .gitlab/issue_templates/bst_bug.md
 delete mode 100644 .gitlab/issue_templates/bst_task.md
 delete mode 100644 .gitlab/merge_request_templates/bst_merge_request.md
 delete mode 100644 .gitlab/merge_request_templates/stale_MR_message.md
 delete mode 100644 BuildStream.doap
 copy doc/examples/{running-commands => composition}/elements/base.bst (100%)
 create mode 100644 doc/examples/composition/elements/base/alpine.bst
 copy doc/examples/{integration-commands => composition}/elements/hello.bst (100%)
 copy doc/examples/{integration-commands => composition}/elements/libhello.bst (100%)
 create mode 100644 doc/examples/composition/elements/runtime-only.bst
 copy doc/examples/{integration-commands => composition}/files/hello/Makefile (100%)
 copy doc/examples/{integration-commands => composition}/files/hello/hello.c (100%)
 copy doc/examples/{integration-commands => composition}/files/libhello/Makefile (100%)
 copy doc/examples/{integration-commands => composition}/files/libhello/libhello.c (100%)
 copy doc/examples/{integration-commands => composition}/files/libhello/libhello.h (100%)
 create mode 100644 doc/examples/composition/project.conf
 copy doc/examples/{running-commands => directives}/elements/base.bst (100%)
 copy doc/examples/{running-commands => directives}/elements/base/alpine.bst (100%)
 create mode 100644 doc/examples/directives/elements/hello.bst
 create mode 100644 doc/examples/directives/files/src/Makefile
 create mode 100644 doc/examples/directives/files/src/hello.c
 create mode 100644 doc/examples/directives/include/greeting.bst
 create mode 100644 doc/examples/directives/project.conf
 copy doc/examples/{running-commands => filtering}/elements/base.bst (100%)
 copy doc/examples/{integration-commands => filtering}/elements/base/alpine.bst (100%)
 create mode 100644 doc/examples/filtering/elements/hello.bst
 create mode 100644 doc/examples/filtering/elements/libhello-filtered.bst
 create mode 100644 doc/examples/filtering/elements/libhello.bst
 create mode 100644 doc/examples/filtering/files/hello/Makefile
 create mode 100644 doc/examples/filtering/files/hello/hello.c
 create mode 100644 doc/examples/filtering/files/libhello/Makefile
 create mode 100644 doc/examples/filtering/files/libhello/default-person.txt
 copy doc/examples/{integration-commands => filtering}/files/libhello/libhello.c (100%)
 copy doc/examples/{integration-commands => filtering}/files/libhello/libhello.h (100%)
 create mode 100644 doc/examples/filtering/project.conf
 create mode 100644 doc/examples/flatpak-autotools/keys/flathub.gpg
 delete mode 100644 doc/examples/flatpak-autotools/keys/gnome-sdk.gpg
 create mode 100644 doc/examples/junction-includes/elements/hello.bst
 create mode 100644 doc/examples/junction-includes/elements/subproject-junction.bst
 create mode 100644 doc/examples/junction-includes/project.conf
 copy doc/examples/{running-commands => junction-includes/subproject}/elements/base.bst (100%)
 copy doc/examples/{running-commands => junction-includes/subproject}/elements/base/alpine.bst (100%)
 create mode 100644 doc/examples/junction-includes/subproject/include/paths.bst
 create mode 100644 doc/examples/junction-includes/subproject/project.conf
 copy doc/examples/{running-commands => overlaps}/elements/base.bst (100%)
 create mode 100644 doc/examples/overlaps/elements/base/alpine.bst
 copy doc/examples/{integration-commands => overlaps}/elements/hello.bst (100%)
 copy doc/examples/{integration-commands => overlaps}/elements/libhello.bst (100%)
 create mode 100644 doc/examples/overlaps/elements/runtime-only.bst
 create mode 100644 doc/examples/overlaps/files/hello/Makefile
 copy doc/examples/{integration-commands => overlaps}/files/hello/hello.c (100%)
 create mode 100644 doc/examples/overlaps/files/hello/hello.txt
 create mode 100644 doc/examples/overlaps/files/libhello/Makefile
 create mode 100644 doc/examples/overlaps/files/libhello/hello.txt
 copy doc/examples/{integration-commands => overlaps}/files/libhello/libhello.c (100%)
 copy doc/examples/{integration-commands => overlaps}/files/libhello/libhello.h (100%)
 create mode 100644 doc/examples/overlaps/project.conf
 copy doc/examples/{running-commands => strict-mode}/elements/base.bst (100%)
 copy doc/examples/{integration-commands => strict-mode}/elements/base/alpine.bst (100%)
 create mode 100644 doc/examples/strict-mode/elements/hello-dynamic.bst
 create mode 100644 doc/examples/strict-mode/elements/hello-static.bst
 copy doc/examples/{integration-commands => strict-mode}/elements/libhello.bst (100%)
 create mode 100644 doc/examples/strict-mode/files/hello/Makefile.dynamic
 create mode 100644 doc/examples/strict-mode/files/hello/Makefile.static
 copy doc/examples/{integration-commands => strict-mode}/files/hello/hello.c (100%)
 create mode 100644 doc/examples/strict-mode/files/libhello/Makefile
 create mode 100644 doc/examples/strict-mode/files/libhello/libhello.c
 copy doc/examples/{integration-commands => strict-mode}/files/libhello/libhello.h (100%)
 create mode 100644 doc/examples/strict-mode/project.conf
 create mode 100644 doc/examples/strict-mode/update.patch
 create mode 100644 doc/sessions/composition.run
 create mode 100644 doc/sessions/directives.run
 create mode 100644 doc/sessions/filtering.run
 create mode 100644 doc/sessions/junction-includes.run
 create mode 100644 doc/sessions/overlaps.run
 create mode 100644 doc/sessions/strict-mode.run
 delete mode 100644 doc/source/advanced-features/junction-elements.rst
 create mode 100644 doc/source/developing/strict-mode.rst
 create mode 100644 doc/source/hacking/coding_guidelines.rst
 create mode 100644 doc/source/hacking/grpc_protocols.rst
 create mode 100644 doc/source/hacking/making_releases.rst
 create mode 100644 doc/source/hacking/managing_data_files.rst
 create mode 100644 doc/source/hacking/measuring_performance.rst
 create mode 100644 doc/source/hacking/ui.rst
 create mode 100644 doc/source/hacking/updating_python_deps.rst
 create mode 100644 doc/source/hacking/using_the_testsuite.rst
 create mode 100644 doc/source/hacking/writing_documentation.rst
 create mode 100644 doc/source/hacking/writing_plugins.rst
 create mode 100644 doc/source/handling-files/composition.rst
 create mode 100644 doc/source/handling-files/filtering.rst
 create mode 100644 doc/source/handling-files/overlaps.rst
 create mode 100644 doc/source/junctions/junction-elements.rst
 create mode 100644 doc/source/junctions/junction-includes.rst
 create mode 100644 doc/source/junctions/junction-workspaces.rst
 create mode 100644 doc/source/main_glossary.rst
 create mode 100644 doc/source/main_install.rst
 create mode 100644 doc/source/sessions-stored/composition-build.html
 create mode 100644 doc/source/sessions-stored/composition-list-contents.html
 create mode 100644 doc/source/sessions-stored/composition-shell.html
 create mode 100644 doc/source/sessions-stored/directives-build-excited.html
 create mode 100644 doc/source/sessions-stored/directives-build-normal.html
 create mode 100644 doc/source/sessions-stored/directives-build-somber.html
 create mode 100644 doc/source/sessions-stored/directives-shell-excited.html
 create mode 100644 doc/source/sessions-stored/directives-shell-normal.html
 create mode 100644 doc/source/sessions-stored/directives-shell-somber.html
 create mode 100644 doc/source/sessions-stored/filtering-list-contents-libhello-filtered.html
 create mode 100644 doc/source/sessions-stored/filtering-list-contents-libhello.html
 create mode 100644 doc/source/sessions-stored/filtering-shell-with-filter.html
 create mode 100644 doc/source/sessions-stored/filtering-shell-without-filter.html
 create mode 100644 doc/source/sessions-stored/junction-includes-build-funky.html
 create mode 100644 doc/source/sessions-stored/junction-includes-build-normal.html
 create mode 100644 doc/source/sessions-stored/junction-includes-shell-funky.html
 create mode 100644 doc/source/sessions-stored/junction-includes-shell-normal.html
 create mode 100644 doc/source/sessions-stored/junctions-workspace-open-subproject.html
 create mode 100644 doc/source/sessions-stored/overlaps-build.html
 create mode 100644 doc/source/sessions-stored/strict-mode-build-dynamic-no-strict.html
 create mode 100644 doc/source/sessions-stored/strict-mode-build-static-no-strict.html
 create mode 100644 doc/source/sessions-stored/strict-mode-run-dynamic-no-strict.html
 create mode 100644 doc/source/sessions-stored/strict-mode-run-static-no-strict.html
 create mode 100644 doc/source/sessions-stored/strict-mode-show-dynamic-no-strict.html
 create mode 100644 doc/source/sessions-stored/strict-mode-show-dynamic-strict.html
 create mode 100644 doc/source/sessions-stored/strict-mode-show-initial.html
 create mode 100644 doc/source/sessions-stored/strict-mode-show-static-no-strict.html
 create mode 100644 doc/source/sessions-stored/strict-mode-workspace-open.html
 create mode 100644 doc/source/tutorial/directives.rst
 delete mode 100644 doc/source/using_advanced_features.rst
 create mode 100644 doc/source/using_handling_files.rst
 create mode 100644 doc/source/using_junctions.rst
 create mode 100644 man/bst-artifact-list-contents.1
 create mode 100644 man/bst-artifact-show.1
 create mode 100644 man/bst-source-push.1
 delete mode 100644 requirements/plugin-requirements.in
 delete mode 100644 requirements/plugin-requirements.txt
 create mode 100644 src/buildstream/_artifactproject.py
 create mode 100644 src/buildstream/_assetcache.py
 delete mode 100644 src/buildstream/_basecache.py
 create mode 100644 src/buildstream/_cas/casdprocessmanager.py
 delete mode 100644 src/buildstream/_elementfactory.py
 create mode 100644 src/buildstream/_elementproxy.py
 create mode 100644 src/buildstream/_elementsources.py
 create mode 100644 src/buildstream/_elementsourcescache.py
 delete mode 100644 src/buildstream/_fuse/__init__.py
 delete mode 100644 src/buildstream/_fuse/fuse.py
 delete mode 100644 src/buildstream/_fuse/hardlinks.py
 delete mode 100644 src/buildstream/_fuse/mount.py
 create mode 100644 src/buildstream/_loader/_loader.pyi
 create mode 100644 src/buildstream/_loader/loadcontext.py
 create mode 100644 src/buildstream/_loader/loadelement.pyi
 delete mode 100644 src/buildstream/_loader/metaelement.py
 create mode 100644 src/buildstream/_loader/types.py
 delete mode 100644 src/buildstream/_loader/types.pyx
 create mode 100644 src/buildstream/_overlapcollector.py
 delete mode 100644 src/buildstream/_platform/darwin.py
 delete mode 100644 src/buildstream/_platform/fallback.py
 delete mode 100644 src/buildstream/_platform/linux.py
 delete mode 100644 src/buildstream/_plugincontext.py
 create mode 100644 src/buildstream/_pluginfactory/__init__.py
 create mode 100644 src/buildstream/_pluginfactory/elementfactory.py
 create mode 100644 src/buildstream/_pluginfactory/pluginfactory.py
 create mode 100644 src/buildstream/_pluginfactory/pluginorigin.py
 create mode 100644 src/buildstream/_pluginfactory/pluginoriginjunction.py
 create mode 100644 src/buildstream/_pluginfactory/pluginoriginlocal.py
 create mode 100644 src/buildstream/_pluginfactory/pluginoriginpip.py
 create mode 100644 src/buildstream/_pluginfactory/sourcefactory.py
 create mode 100644 src/buildstream/_pluginproxy.py
 rename {tests/plugins/deprecationwarnings => src/buildstream/_protos/build/bazel/remote/asset}/__init__.py (100%)
 rename {tests/internals/pluginloading/customsource/pluginsources => src/buildstream/_protos/build/bazel/remote/asset/v1}/__init__.py (100%)
 create mode 100644 src/buildstream/_protos/build/bazel/remote/asset/v1/remote_asset.proto
 create mode 100644 src/buildstream/_protos/build/bazel/remote/asset/v1/remote_asset_pb2.py
 create mode 100644 src/buildstream/_protos/build/bazel/remote/asset/v1/remote_asset_pb2_grpc.py
 create mode 100644 src/buildstream/_remote.py
 create mode 100644 src/buildstream/_scheduler/jobs/_job.pyi
 create mode 100644 src/buildstream/_scheduler/jobs/_job.pyx
 delete mode 100644 src/buildstream/_scheduler/jobs/jobpickler.py
 delete mode 100644 src/buildstream/_sourcefactory.py
 create mode 100644 src/buildstream/_types.pyi
 create mode 100644 src/buildstream/_utils.pyi
 create mode 100644 src/buildstream/_variables.pyi
 create mode 100644 src/buildstream/_yaml.pyi
 create mode 100644 src/buildstream/downloadablefilesource.py
 create mode 100644 src/buildstream/exceptions.py
 create mode 100644 src/buildstream/node.pyi
 delete mode 100644 src/buildstream/plugins/elements/distutils.py
 delete mode 100644 src/buildstream/plugins/elements/distutils.yaml
 create mode 100644 src/buildstream/plugins/elements/link.py
 delete mode 100644 src/buildstream/plugins/elements/pip.py
 delete mode 100644 src/buildstream/plugins/elements/pip.yaml
 delete mode 100644 src/buildstream/plugins/sources/_downloadablefilesource.py
 delete mode 100644 src/buildstream/plugins/sources/deb.py
 create mode 100644 src/buildstream/plugins/sources/workspace.py
 rename tests/sources/ostree/template/repofiles/file => src/buildstream/py.typed (100%)
 delete mode 100644 src/buildstream/sandbox/_mount.py
 delete mode 100644 src/buildstream/sandbox/_mounter.py
 delete mode 100644 src/buildstream/sandbox/_sandboxbuildbox.py
 create mode 100644 src/buildstream/sandbox/_sandboxbuildboxrun.py
 delete mode 100644 src/buildstream/sandbox/_sandboxbwrap.py
 delete mode 100644 src/buildstream/sandbox/_sandboxchroot.py
 create mode 100644 src/buildstream/sandbox/_sandboxreapi.py
 create mode 100644 src/buildstream/testing/_cachekeys.py
 create mode 100644 src/buildstream/testing/_fixtures.py
 delete mode 100644 src/buildstream/testing/_forked.py
 create mode 100644 src/buildstream/testing/_sourcetests/conftest.py
 create mode 100755 src/buildstream/testing/_update_cachekeys.py
 create mode 100644 src/buildstream/testing/_yaml.py
 delete mode 100644 tests/artifactcache/artifactservice.py
 create mode 100644 tests/artifactcache/capabilities.py
 copy tests/{sourcecache/missing-certs => artifactcache/only-one}/element.bst (100%)
 create mode 100644 tests/cachekey/project/elements/build3.bst
 create mode 100644 tests/cachekey/project/elements/build3.expected
 delete mode 100755 tests/cachekey/update.py
 create mode 100644 tests/elements/filter/basic/elements/forbidden-stack-dep.bst
 create mode 100644 tests/elements/filter/basic/elements/no-pass-integration.bst
 create mode 100644 tests/elements/filter/basic/elements/pass-integration.bst
 create mode 100644 tests/elements/filter/basic/elements/stack.bst
 delete mode 100644 tests/external_plugins.py
 create mode 100644 tests/format/dependencies2/merge-separate-lists.bst
 create mode 100644 tests/format/dependencies2/merge-single-list.bst
 delete mode 100644 tests/format/dependencies3/all-all.bst
 delete mode 100644 tests/format/dependencies3/build-all.bst
 delete mode 100644 tests/format/dependencies3/build-build.bst
 delete mode 100644 tests/format/dependencies3/build-runtime.bst
 delete mode 100644 tests/format/dependencies3/dep.bst
 create mode 100644 tests/format/dependencies3/elements/dep.bst
 create mode 100644 tests/format/dependencies3/elements/dep2.bst
 create mode 100644 tests/format/dependencies3/elements/invalid-filenames.bst
 create mode 100644 tests/format/dependencies3/elements/runtime-error.bst
 create mode 100644 tests/format/dependencies3/elements/shorthand-config.bst
 create mode 100644 tests/format/dependencies3/elements/shorthand-junction.bst
 copy tests/{frontend/track-cross-junction/subproject-junction.bst => format/dependencies3/elements/subproject.bst} (100%)
 create mode 100644 tests/format/dependencies3/elements/supported1.bst
 create mode 100644 tests/format/dependencies3/elements/supported2.bst
 create mode 100644 tests/format/dependencies3/elements/unsupported.bst
 create mode 100644 tests/format/dependencies3/plugins/configsupported.py
 create mode 100644 tests/format/dependencies3/plugins/configunsupported.py
 delete mode 100644 tests/format/dependencies3/runtime-all.bst
 delete mode 100644 tests/format/dependencies3/runtime-runtime.bst
 create mode 100644 tests/format/dependencies3/subproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/dependencies3/subproject/sub.txt} (100%)
 create mode 100644 tests/format/dependencies3/subproject/target-a.bst
 create mode 100644 tests/format/dependencies3/subproject/target-b.bst
 copy tests/format/include/{sub-include => conditional-conflicts-complex}/element.bst (100%)
 create mode 100644 tests/format/include/conditional-conflicts-complex/enable_work_around.yml
 create mode 100644 tests/format/include/conditional-conflicts-complex/extra_conf.yml
 create mode 100644 tests/format/include/conditional-conflicts-complex/extra_conf_i586.yml
 create mode 100644 tests/format/include/conditional-conflicts-complex/extra_conf_x86_64.yml
 create mode 100644 tests/format/include/conditional-conflicts-complex/options.yml
 create mode 100644 tests/format/include/conditional-conflicts-complex/project.conf
 create mode 100644 tests/format/include/conditional-conflicts-complex/work_around.yml
 create mode 100644 tests/format/include/conditional-conflicts-element/element.bst
 copy tests/format/include/{conditional => conditional-conflicts-element}/extra_conf.yml (100%)
 create mode 100644 tests/format/include/conditional-conflicts-element/project.conf
 create mode 100644 tests/format/include/conditional-conflicts-element/work_around.yml
 copy tests/format/include/{sub-include => conditional-conflicts-options-included}/element.bst (100%)
 copy tests/format/include/{conditional => conditional-conflicts-options-included}/extra_conf.yml (100%)
 create mode 100644 tests/format/include/conditional-conflicts-options-included/options.yml
 create mode 100644 tests/format/include/conditional-conflicts-options-included/project.conf
 create mode 100644 tests/format/include/conditional-conflicts-options-included/work_around.yml
 copy tests/format/include/{sub-include => conditional-conflicts-project}/element.bst (100%)
 copy tests/format/include/{conditional => conditional-conflicts-project}/extra_conf.yml (100%)
 create mode 100644 tests/format/include/conditional-conflicts-project/project.conf
 create mode 100644 tests/format/include/conditional-conflicts-project/work_around.yml
 copy tests/format/include/{sub-include => conditional-conflicts-toplevel-precedence}/element.bst (100%)
 copy tests/format/include/{conditional => conditional-conflicts-toplevel-precedence}/extra_conf.yml (100%)
 create mode 100644 tests/format/include/conditional-conflicts-toplevel-precedence/project.conf
 create mode 100644 tests/format/include/conditional-conflicts-toplevel-precedence/work_around.yml
 create mode 100644 tests/format/include/full_path/elements/element.bst
 create mode 100644 tests/format/include/full_path/elements/invalid.bst
 copy tests/format/{junctions/config-target => include/full_path}/elements/subproject.bst (100%)
 create mode 100644 tests/format/include/full_path/project.conf
 copy tests/format/{junctions/config-target => include/full_path}/subproject/elements/subsubproject-junction.bst (100%)
 copy tests/format/{junctions/config-target/subproject/subsubproject => include/full_path/subproject}/files/hello.txt (100%)
 create mode 100644 tests/format/include/full_path/subproject/project.conf
 create mode 100644 tests/format/include/full_path/subproject/sub.yaml
 create mode 100644 tests/format/include/full_path/subproject/subsubproject/project.conf
 create mode 100644 tests/format/include/full_path/subproject/subsubproject/subsub.yaml
 copy tests/format/include/{sub-include => junction_options}/element.bst (100%)
 create mode 100644 tests/format/include/junction_options/project.conf
 create mode 100644 tests/format/include/junction_options/subproject/extra_conf.yml
 create mode 100644 tests/format/include/junction_options/subproject/project.conf
 copy tests/format/include/{sub-include => junction_options_deep}/element.bst (100%)
 create mode 100644 tests/format/include/junction_options_deep/project.conf
 create mode 100644 tests/format/include/junction_options_deep/subproject-1/extra_conf.yml
 create mode 100644 tests/format/include/junction_options_deep/subproject-1/project.conf
 create mode 100644 tests/format/include/junction_options_deep/subproject-2/extra_conf.yml
 create mode 100644 tests/format/include/junction_options_deep/subproject-2/project.conf
 create mode 100644 tests/format/include/junction_options_element/element.bst
 create mode 100644 tests/format/include/junction_options_element/project.conf
 create mode 100644 tests/format/include/junction_options_element/subproject/extra_conf.yml
 create mode 100644 tests/format/include/junction_options_element/subproject/project.conf
 delete mode 100644 tests/format/junctions/bar/app.bst
 delete mode 100644 tests/format/junctions/bar/bar.txt
 delete mode 100644 tests/format/junctions/bar/base.bst
 delete mode 100644 tests/format/junctions/bar/project.conf
 delete mode 100644 tests/format/junctions/bar/target.bst
 delete mode 100644 tests/format/junctions/base/project.conf
 create mode 100644 tests/format/junctions/circular-references/link-subsubsubproject.bst
 create mode 100644 tests/format/junctions/circular-references/project.conf
 create mode 100644 tests/format/junctions/circular-references/subproject-overriden-with-circular-reference-link.bst
 create mode 100644 tests/format/junctions/circular-references/subproject-overriden-with-circular-reference.bst
 copy tests/{frontend/track-cross-junction/subproject-junction.bst => format/junctions/circular-references/subproject.bst} (100%)
 create mode 100644 tests/format/junctions/circular-references/subproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/circular-references/subproject/sub.txt} (100%)
 create mode 100644 tests/format/junctions/circular-references/subproject/subsubproject.bst
 create mode 100644 tests/format/junctions/circular-references/subproject/subsubproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/circular-references/subproject/subsubproject/subsub.txt} (100%)
 create mode 100644 tests/format/junctions/circular-references/subproject/subsubproject/subsubsubproject.bst
 create mode 100644 tests/format/junctions/circular-references/subproject/subsubproject/subsubsubproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/circular-references/subproject/subsubproject/subsubsubproject/subsubsub.txt} (100%)
 create mode 100644 tests/format/junctions/circular-references/subproject/subsubproject/subsubsubproject/target.bst
 create mode 100644 tests/format/junctions/circular-references/subproject/subsubproject/target.bst
 create mode 100644 tests/format/junctions/circular-references/subproject/target.bst
 create mode 100644 tests/format/junctions/circular-references/target-overridden-subsubproject-circular-link.bst
 create mode 100644 tests/format/junctions/circular-references/target-overridden-subsubproject-circular.bst
 delete mode 100644 tests/format/junctions/config-target/elements/invalid-source-target.bst
 delete mode 100644 tests/format/junctions/config-target/elements/nested-junction-target.bst
 delete mode 100644 tests/format/junctions/config-target/elements/no-junction.bst
 delete mode 100644 tests/format/junctions/config-target/elements/subsubproject.bst
 delete mode 100644 tests/format/junctions/config-target/elements/target.bst
 delete mode 100644 tests/format/junctions/config-target/project.conf
 delete mode 100644 tests/format/junctions/config-target/subproject/project.conf
 delete mode 100644 tests/format/junctions/config-target/subproject/subsubproject/project.conf
 delete mode 100644 tests/format/junctions/conflict/bar.bst
 delete mode 100644 tests/format/junctions/conflict/foo.bst
 delete mode 100644 tests/format/junctions/conflict/project.conf
 delete mode 100644 tests/format/junctions/conflict/target.bst
 create mode 100644 tests/format/junctions/conflicts/include-conflict-target.bst
 create mode 100644 tests/format/junctions/conflicts/include-conflict.bst
 create mode 100644 tests/format/junctions/conflicts/nested-conflict-toplevel.bst
 create mode 100644 tests/format/junctions/conflicts/override-conflict.bst
 create mode 100644 tests/format/junctions/conflicts/plugin-conflict.bst
 create mode 100644 tests/format/junctions/conflicts/project.conf
 create mode 100644 tests/format/junctions/conflicts/simple-conflict.bst
 create mode 100644 tests/format/junctions/conflicts/subproject-override-conflicting-path.bst
 copy tests/{frontend/track-cross-junction/subproject-junction.bst => format/junctions/conflicts/subproject.bst} (100%)
 create mode 100644 tests/format/junctions/conflicts/subproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/conflicts/subproject/sub.txt} (100%)
 create mode 100644 tests/format/junctions/conflicts/subproject/subsubproject-conflict-target.bst
 create mode 100644 tests/format/junctions/conflicts/subproject/subsubproject-conflict.bst
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/conflicts/subproject/subsubproject-conflict/deepsurprise.txt} (100%)
 create mode 100644 tests/format/junctions/conflicts/subproject/subsubproject-conflict/project.conf
 create mode 100644 tests/format/junctions/conflicts/subproject/subsubproject-conflict/target.bst
 create mode 100644 tests/format/junctions/conflicts/subproject/subsubproject.bst
 create mode 100644 tests/format/junctions/conflicts/subproject/subsubproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/conflicts/subproject/subsubproject/subsub.txt} (100%)
 create mode 100644 tests/format/junctions/conflicts/subproject/subsubproject/subsubsubproject.bst
 create mode 100644 tests/format/junctions/conflicts/subproject/subsubproject/subsubsubproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/conflicts/subproject/subsubproject/subsubsubproject/subsubsub.txt} (100%)
 create mode 100644 tests/format/junctions/conflicts/subproject/subsubproject/subsubsubproject/target.bst
 create mode 100644 tests/format/junctions/conflicts/subproject/subsubproject/target.bst
 create mode 100644 tests/format/junctions/conflicts/subproject/target.bst
 create mode 100644 tests/format/junctions/conflicts/subproject2.bst
 create mode 100644 tests/format/junctions/conflicts/subproject2/inc.yaml
 create mode 100644 tests/format/junctions/conflicts/subproject2/plugins/found.py
 create mode 100644 tests/format/junctions/conflicts/subproject2/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/conflicts/subproject2/sub2.txt} (100%)
 create mode 100644 tests/format/junctions/conflicts/subproject2/target.bst
 create mode 100644 tests/format/junctions/duplicates-nested-full-path/project.conf
 copy tests/{frontend/track-cross-junction/subproject-junction.bst => format/junctions/duplicates-nested-full-path/subproject.bst} (100%)
 create mode 100644 tests/format/junctions/duplicates-nested-full-path/subproject/project.conf
 create mode 100644 tests/format/junctions/duplicates-nested-full-path/subproject/subproject1.bst
 create mode 100644 tests/format/junctions/duplicates-nested-full-path/subproject/subproject1/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-nested-full-path/subproject/subproject1/sub.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-nested-full-path/subproject/subproject1/target.bst
 create mode 100644 tests/format/junctions/duplicates-nested-full-path/subproject/subproject2.bst
 create mode 100644 tests/format/junctions/duplicates-nested-full-path/subproject/subproject2/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-nested-full-path/subproject/subproject2/sub2.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-nested-full-path/subproject/subproject2/target.bst
 create mode 100644 tests/format/junctions/duplicates-nested-full-path/subproject3.bst
 create mode 100644 tests/format/junctions/duplicates-nested-full-path/subproject3/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-nested-full-path/subproject3/sub3.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-nested-full-path/subproject3/target.bst
 create mode 100644 tests/format/junctions/duplicates-nested-full-path/target.bst
 create mode 100644 tests/format/junctions/duplicates-nested-incomplete/project.conf
 copy tests/{frontend/track-cross-junction/subproject-junction.bst => format/junctions/duplicates-nested-incomplete/subproject.bst} (100%)
 create mode 100644 tests/format/junctions/duplicates-nested-incomplete/subproject/project.conf
 create mode 100644 tests/format/junctions/duplicates-nested-incomplete/subproject/subproject1.bst
 create mode 100644 tests/format/junctions/duplicates-nested-incomplete/subproject/subproject1/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-nested-incomplete/subproject/subproject1/sub.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-nested-incomplete/subproject/subproject1/target.bst
 create mode 100644 tests/format/junctions/duplicates-nested-incomplete/subproject/subproject2.bst
 create mode 100644 tests/format/junctions/duplicates-nested-incomplete/subproject/subproject2/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-nested-incomplete/subproject/subproject2/sub2.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-nested-incomplete/subproject/subproject2/target.bst
 create mode 100644 tests/format/junctions/duplicates-nested-incomplete/subproject3.bst
 create mode 100644 tests/format/junctions/duplicates-nested-incomplete/subproject3/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-nested-incomplete/subproject3/sub3.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-nested-incomplete/subproject3/target.bst
 create mode 100644 tests/format/junctions/duplicates-nested-incomplete/target.bst
 create mode 100644 tests/format/junctions/duplicates-nested-link1/project.conf
 copy tests/{frontend/track-cross-junction/subproject-junction.bst => format/junctions/duplicates-nested-link1/subproject.bst} (100%)
 create mode 100644 tests/format/junctions/duplicates-nested-link1/subproject/project.conf
 create mode 100644 tests/format/junctions/duplicates-nested-link1/subproject/subproject1-link.bst
 create mode 100644 tests/format/junctions/duplicates-nested-link1/subproject/subproject1.bst
 create mode 100644 tests/format/junctions/duplicates-nested-link1/subproject/subproject1/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-nested-link1/subproject/subproject1/sub.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-nested-link1/subproject/subproject1/target.bst
 create mode 100644 tests/format/junctions/duplicates-nested-link1/subproject/subproject2.bst
 create mode 100644 tests/format/junctions/duplicates-nested-link1/subproject/subproject2/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-nested-link1/subproject/subproject2/sub2.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-nested-link1/subproject/subproject2/target.bst
 create mode 100644 tests/format/junctions/duplicates-nested-link1/subproject3.bst
 create mode 100644 tests/format/junctions/duplicates-nested-link1/subproject3/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-nested-link1/subproject3/sub3.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-nested-link1/subproject3/target.bst
 create mode 100644 tests/format/junctions/duplicates-nested-link1/target.bst
 create mode 100644 tests/format/junctions/duplicates-nested-link2/project.conf
 copy tests/{frontend/track-cross-junction/subproject-junction.bst => format/junctions/duplicates-nested-link2/subproject.bst} (100%)
 create mode 100644 tests/format/junctions/duplicates-nested-link2/subproject/project.conf
 create mode 100644 tests/format/junctions/duplicates-nested-link2/subproject/subproject1.bst
 create mode 100644 tests/format/junctions/duplicates-nested-link2/subproject/subproject1/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-nested-link2/subproject/subproject1/sub.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-nested-link2/subproject/subproject1/target.bst
 create mode 100644 tests/format/junctions/duplicates-nested-link2/subproject/subproject2.bst
 create mode 100644 tests/format/junctions/duplicates-nested-link2/subproject/subproject2/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-nested-link2/subproject/subproject2/sub2.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-nested-link2/subproject/subproject2/target.bst
 create mode 100644 tests/format/junctions/duplicates-nested-link2/subproject2-link.bst
 create mode 100644 tests/format/junctions/duplicates-nested-link2/subproject3.bst
 create mode 100644 tests/format/junctions/duplicates-nested-link2/subproject3/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-nested-link2/subproject3/sub3.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-nested-link2/subproject3/target.bst
 create mode 100644 tests/format/junctions/duplicates-nested-link2/target.bst
 create mode 100644 tests/format/junctions/duplicates-nested-not-found/project.conf
 copy tests/{frontend/track-cross-junction/subproject-junction.bst => format/junctions/duplicates-nested-not-found/subproject.bst} (100%)
 create mode 100644 tests/format/junctions/duplicates-nested-not-found/subproject/project.conf
 create mode 100644 tests/format/junctions/duplicates-nested-not-found/subproject/subproject1-link.bst
 create mode 100644 tests/format/junctions/duplicates-nested-not-found/subproject/subproject1.bst
 create mode 100644 tests/format/junctions/duplicates-nested-not-found/subproject/subproject1/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-nested-not-found/subproject/subproject1/sub.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-nested-not-found/subproject/subproject1/target.bst
 create mode 100644 tests/format/junctions/duplicates-nested-not-found/subproject/subproject2.bst
 create mode 100644 tests/format/junctions/duplicates-nested-not-found/subproject/subproject2/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-nested-not-found/subproject/subproject2/sub2.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-nested-not-found/subproject/subproject2/target.bst
 create mode 100644 tests/format/junctions/duplicates-nested-not-found/subproject3.bst
 create mode 100644 tests/format/junctions/duplicates-nested-not-found/subproject3/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-nested-not-found/subproject3/sub3.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-nested-not-found/subproject3/target.bst
 create mode 100644 tests/format/junctions/duplicates-nested-not-found/target.bst
 create mode 100644 tests/format/junctions/duplicates-nested/project.conf
 copy tests/{frontend/track-cross-junction/subproject-junction.bst => format/junctions/duplicates-nested/subproject.bst} (100%)
 create mode 100644 tests/format/junctions/duplicates-nested/subproject/project.conf
 create mode 100644 tests/format/junctions/duplicates-nested/subproject/subproject1.bst
 create mode 100644 tests/format/junctions/duplicates-nested/subproject/subproject1/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-nested/subproject/subproject1/sub.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-nested/subproject/subproject1/target.bst
 create mode 100644 tests/format/junctions/duplicates-nested/subproject/subproject2.bst
 create mode 100644 tests/format/junctions/duplicates-nested/subproject/subproject2/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-nested/subproject/subproject2/sub2.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-nested/subproject/subproject2/target.bst
 create mode 100644 tests/format/junctions/duplicates-nested/subproject3.bst
 create mode 100644 tests/format/junctions/duplicates-nested/subproject3/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-nested/subproject3/sub3.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-nested/subproject3/target.bst
 create mode 100644 tests/format/junctions/duplicates-nested/target.bst
 create mode 100644 tests/format/junctions/duplicates-override-dup/project.conf
 create mode 100644 tests/format/junctions/duplicates-override-dup/subproject.bst
 create mode 100644 tests/format/junctions/duplicates-override-dup/subproject/project.conf
 create mode 100644 tests/format/junctions/duplicates-override-dup/subproject/subproject1.bst
 create mode 100644 tests/format/junctions/duplicates-override-dup/subproject/subproject1/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-override-dup/subproject/subproject1/sub.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-override-dup/subproject/subproject1/target.bst
 create mode 100644 tests/format/junctions/duplicates-override-dup/subproject/subproject2.bst
 create mode 100644 tests/format/junctions/duplicates-override-dup/subproject/subproject2/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-override-dup/subproject/subproject2/sub2.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-override-dup/subproject/subproject2/target.bst
 create mode 100644 tests/format/junctions/duplicates-override-dup/subproject3.bst
 create mode 100644 tests/format/junctions/duplicates-override-dup/subproject3/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-override-dup/subproject3/sub3.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-override-dup/subproject3/target.bst
 create mode 100644 tests/format/junctions/duplicates-override-dup/target.bst
 create mode 100644 tests/format/junctions/duplicates-override-twice-link/duplicate.bst
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-override-twice-link/duplicate/duplicate.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-override-twice-link/duplicate/project.conf
 create mode 100644 tests/format/junctions/duplicates-override-twice-link/duplicate/target.bst
 create mode 100644 tests/format/junctions/duplicates-override-twice-link/override.bst
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-override-twice-link/override/overridden-again.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-override-twice-link/override/project.conf
 create mode 100644 tests/format/junctions/duplicates-override-twice-link/override/target.bst
 create mode 100644 tests/format/junctions/duplicates-override-twice-link/project.conf
 create mode 100644 tests/format/junctions/duplicates-override-twice-link/subproject.bst
 create mode 100644 tests/format/junctions/duplicates-override-twice-link/subproject/override.bst
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-override-twice-link/subproject/override/overridden.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-override-twice-link/subproject/override/project.conf
 create mode 100644 tests/format/junctions/duplicates-override-twice-link/subproject/override/target.bst
 create mode 100644 tests/format/junctions/duplicates-override-twice-link/subproject/project.conf
 create mode 100644 tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject.bst
 create mode 100644 tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject/project.conf
 create mode 100644 tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject/subsubsubproject.bst
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-override-twice-link/subproject/subsubproject/subsubsubproject/original.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject/subsubsubproject/project.conf
 create mode 100644 tests/format/junctions/duplicates-override-twice-link/subproject/subsubproject/subsubsubproject/target.bst
 create mode 100644 tests/format/junctions/duplicates-override-twice-link/subproject/subsubsubproject-link.bst
 create mode 100644 tests/format/junctions/duplicates-override-twice-link/target.bst
 create mode 100644 tests/format/junctions/duplicates-simple-incomplete/project.conf
 create mode 100644 tests/format/junctions/duplicates-simple-incomplete/subproject1.bst
 create mode 100644 tests/format/junctions/duplicates-simple-incomplete/subproject1/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-simple-incomplete/subproject1/sub.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-simple-incomplete/subproject1/target.bst
 create mode 100644 tests/format/junctions/duplicates-simple-incomplete/subproject2.bst
 create mode 100644 tests/format/junctions/duplicates-simple-incomplete/subproject2/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-simple-incomplete/subproject2/sub2.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-simple-incomplete/subproject2/target.bst
 create mode 100644 tests/format/junctions/duplicates-simple-incomplete/target.bst
 create mode 100644 tests/format/junctions/duplicates-simple-link/project.conf
 create mode 100644 tests/format/junctions/duplicates-simple-link/subproject1.bst
 create mode 100644 tests/format/junctions/duplicates-simple-link/subproject1/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-simple-link/subproject1/sub.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-simple-link/subproject1/target.bst
 create mode 100644 tests/format/junctions/duplicates-simple-link/subproject2-link.bst
 create mode 100644 tests/format/junctions/duplicates-simple-link/subproject2.bst
 create mode 100644 tests/format/junctions/duplicates-simple-link/subproject2/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-simple-link/subproject2/sub2.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-simple-link/subproject2/target.bst
 create mode 100644 tests/format/junctions/duplicates-simple-link/target.bst
 create mode 100644 tests/format/junctions/duplicates-simple-not-found/project.conf
 create mode 100644 tests/format/junctions/duplicates-simple-not-found/subproject1.bst
 create mode 100644 tests/format/junctions/duplicates-simple-not-found/subproject1/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-simple-not-found/subproject1/sub.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-simple-not-found/subproject1/target.bst
 create mode 100644 tests/format/junctions/duplicates-simple-not-found/subproject2.bst
 create mode 100644 tests/format/junctions/duplicates-simple-not-found/subproject2/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-simple-not-found/subproject2/sub2.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-simple-not-found/subproject2/target.bst
 create mode 100644 tests/format/junctions/duplicates-simple-not-found/target.bst
 create mode 100644 tests/format/junctions/duplicates-simple/project.conf
 create mode 100644 tests/format/junctions/duplicates-simple/subproject1.bst
 create mode 100644 tests/format/junctions/duplicates-simple/subproject1/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-simple/subproject1/sub.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-simple/subproject1/target.bst
 create mode 100644 tests/format/junctions/duplicates-simple/subproject2.bst
 create mode 100644 tests/format/junctions/duplicates-simple/subproject2/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/duplicates-simple/subproject2/sub2.txt} (100%)
 create mode 100644 tests/format/junctions/duplicates-simple/subproject2/target.bst
 create mode 100644 tests/format/junctions/duplicates-simple/target.bst
 delete mode 100644 tests/format/junctions/foo/app.bst
 delete mode 100644 tests/format/junctions/foo/base.bst
 delete mode 100644 tests/format/junctions/foo/foo.txt
 delete mode 100644 tests/format/junctions/foo/project.conf
 delete mode 100644 tests/format/junctions/foo/target.bst
 create mode 100644 tests/format/junctions/full-path/element-full-path-notfound.bst
 create mode 100644 tests/format/junctions/full-path/element-full-path.bst
 create mode 100644 tests/format/junctions/full-path/junction-full-path-notfound.bst
 create mode 100644 tests/format/junctions/full-path/junction-full-path.bst
 create mode 100644 tests/format/junctions/full-path/project.conf
 copy tests/{frontend/track-cross-junction/subproject-junction.bst => format/junctions/full-path/subproject.bst} (100%)
 create mode 100644 tests/format/junctions/full-path/subproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/full-path/subproject/sub.txt} (100%)
 create mode 100644 tests/format/junctions/full-path/subproject/subsubproject.bst
 create mode 100644 tests/format/junctions/full-path/subproject/subsubproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/full-path/subproject/subsubproject/subsub.txt} (100%)
 create mode 100644 tests/format/junctions/full-path/subproject/subsubproject/subsubsubproject.bst
 create mode 100644 tests/format/junctions/full-path/subproject/subsubproject/subsubsubproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/full-path/subproject/subsubproject/subsubsubproject/subsubsub.txt} (100%)
 create mode 100644 tests/format/junctions/full-path/subproject/subsubproject/subsubsubproject/target.bst
 create mode 100644 tests/format/junctions/full-path/subproject/subsubproject/target.bst
 create mode 100644 tests/format/junctions/full-path/subproject/target.bst
 delete mode 100644 tests/format/junctions/inconsistent-names/elements/junction-A.bst
 delete mode 100644 tests/format/junctions/inconsistent-names/elements/junction-B-diff-name.bst
 delete mode 100644 tests/format/junctions/inconsistent-names/elements/target.bst
 delete mode 100644 tests/format/junctions/inconsistent-names/junctionA/elements/app.bst
 delete mode 100644 tests/format/junctions/inconsistent-names/junctionA/elements/junction-B.bst
 delete mode 100644 tests/format/junctions/inconsistent-names/junctionA/elements/lib.bst
 delete mode 100644 tests/format/junctions/inconsistent-names/junctionA/junctionB/elements/base.bst
 delete mode 100644 tests/format/junctions/inconsistent-names/junctionA/junctionB/elements/lib2.bst
 delete mode 100644 tests/format/junctions/inconsistent-names/junctionA/junctionB/project.conf
 delete mode 100644 tests/format/junctions/inconsistent-names/junctionA/project.conf
 delete mode 100644 tests/format/junctions/inconsistent-names/project.conf
 create mode 100644 tests/format/junctions/internal-and-conflict/project.conf
 copy tests/{frontend/track-cross-junction/subproject-junction.bst => format/junctions/internal-and-conflict/subproject.bst} (100%)
 create mode 100644 tests/format/junctions/internal-and-conflict/subproject/project.conf
 create mode 100644 tests/format/junctions/internal-and-conflict/subproject/subsubproject.bst
 create mode 100644 tests/format/junctions/internal-and-conflict/subproject/subsubproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/internal-and-conflict/subproject/subsubproject/subsub.txt} (100%)
 create mode 100644 tests/format/junctions/internal-and-conflict/subproject/subsubproject/target.bst
 create mode 100644 tests/format/junctions/internal-and-conflict/subproject/subtarget.bst
 create mode 100644 tests/format/junctions/internal-and-conflict/subsubproject-again.bst
 create mode 100644 tests/format/junctions/internal-and-conflict/subsubproject-again/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/internal-and-conflict/subsubproject-again/subsub-again.txt} (100%)
 create mode 100644 tests/format/junctions/internal-and-conflict/subsubproject-again/target.bst
 create mode 100644 tests/format/junctions/internal-and-conflict/subsubproject-conflict.bst
 create mode 100644 tests/format/junctions/internal-and-conflict/subsubproject-conflict/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/internal-and-conflict/subsubproject-conflict/subsub-again.txt} (100%)
 create mode 100644 tests/format/junctions/internal-and-conflict/subsubproject-conflict/target.bst
 create mode 100644 tests/format/junctions/internal-and-conflict/target.bst
 create mode 100644 tests/format/junctions/internal-double/project.conf
 create mode 100644 tests/format/junctions/internal-double/subproject1.bst
 create mode 100644 tests/format/junctions/internal-double/subproject1/project.conf
 create mode 100644 tests/format/junctions/internal-double/subproject1/subsubproject.bst
 create mode 100644 tests/format/junctions/internal-double/subproject1/subsubproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/internal-double/subproject1/subsubproject/subsub1.txt} (100%)
 create mode 100644 tests/format/junctions/internal-double/subproject1/subsubproject/target.bst
 create mode 100644 tests/format/junctions/internal-double/subproject1/subtarget.bst
 create mode 100644 tests/format/junctions/internal-double/subproject2.bst
 create mode 100644 tests/format/junctions/internal-double/subproject2/project.conf
 create mode 100644 tests/format/junctions/internal-double/subproject2/subsubproject.bst
 create mode 100644 tests/format/junctions/internal-double/subproject2/subsubproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/internal-double/subproject2/subsubproject/subsub2.txt} (100%)
 create mode 100644 tests/format/junctions/internal-double/subproject2/subsubproject/target.bst
 create mode 100644 tests/format/junctions/internal-double/subproject2/subtarget.bst
 create mode 100644 tests/format/junctions/internal-double/subsubproject-again.bst
 create mode 100644 tests/format/junctions/internal-double/subsubproject-again/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/internal-double/subsubproject-again/subsub-again.txt} (100%)
 create mode 100644 tests/format/junctions/internal-double/subsubproject-again/target.bst
 create mode 100644 tests/format/junctions/internal-double/target.bst
 create mode 100644 tests/format/junctions/internal-link/project.conf
 copy tests/{frontend/track-cross-junction/subproject-junction.bst => format/junctions/internal-link/subproject.bst} (100%)
 create mode 100644 tests/format/junctions/internal-link/subproject/project.conf
 create mode 100644 tests/format/junctions/internal-link/subproject/subsubproject-link.bst
 create mode 100644 tests/format/junctions/internal-link/subproject/subsubproject.bst
 create mode 100644 tests/format/junctions/internal-link/subproject/subsubproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/internal-link/subproject/subsubproject/subsub.txt} (100%)
 create mode 100644 tests/format/junctions/internal-link/subproject/subsubproject/target.bst
 create mode 100644 tests/format/junctions/internal-link/subproject/subtarget.bst
 create mode 100644 tests/format/junctions/internal-link/subsubproject-again.bst
 create mode 100644 tests/format/junctions/internal-link/subsubproject-again/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/internal-link/subsubproject-again/subsub-again.txt} (100%)
 create mode 100644 tests/format/junctions/internal-link/subsubproject-again/target.bst
 create mode 100644 tests/format/junctions/internal-link/target.bst
 create mode 100644 tests/format/junctions/internal-override/project.conf
 create mode 100644 tests/format/junctions/internal-override/subproject.bst
 create mode 100644 tests/format/junctions/internal-override/subproject/project.conf
 create mode 100644 tests/format/junctions/internal-override/subproject/subsubproject.bst
 create mode 100644 tests/format/junctions/internal-override/subproject/subsubproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/internal-override/subproject/subsubproject/subsub.txt} (100%)
 create mode 100644 tests/format/junctions/internal-override/subproject/subsubproject/target.bst
 create mode 100644 tests/format/junctions/internal-override/subproject/subtarget.bst
 create mode 100644 tests/format/junctions/internal-override/subsubproject-again.bst
 create mode 100644 tests/format/junctions/internal-override/subsubproject-again/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/internal-override/subsubproject-again/subsub-again.txt} (100%)
 create mode 100644 tests/format/junctions/internal-override/subsubproject-again/target.bst
 create mode 100644 tests/format/junctions/internal-override/subsubproject-override.bst
 create mode 100644 tests/format/junctions/internal-override/subsubproject-override/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/internal-override/subsubproject-override/subsub-override.txt} (100%)
 create mode 100644 tests/format/junctions/internal-override/subsubproject-override/target.bst
 create mode 100644 tests/format/junctions/internal-override/target.bst
 create mode 100644 tests/format/junctions/internal-simple/project.conf
 copy tests/{frontend/track-cross-junction/subproject-junction.bst => format/junctions/internal-simple/subproject.bst} (100%)
 create mode 100644 tests/format/junctions/internal-simple/subproject/project.conf
 create mode 100644 tests/format/junctions/internal-simple/subproject/subsubproject.bst
 create mode 100644 tests/format/junctions/internal-simple/subproject/subsubproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/internal-simple/subproject/subsubproject/subsub.txt} (100%)
 create mode 100644 tests/format/junctions/internal-simple/subproject/subsubproject/target.bst
 create mode 100644 tests/format/junctions/internal-simple/subproject/subtarget.bst
 create mode 100644 tests/format/junctions/internal-simple/subsubproject-again.bst
 create mode 100644 tests/format/junctions/internal-simple/subsubproject-again/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/internal-simple/subsubproject-again/subsub-again.txt} (100%)
 create mode 100644 tests/format/junctions/internal-simple/subsubproject-again/target.bst
 create mode 100644 tests/format/junctions/internal-simple/target.bst
 copy tests/format/junctions/{ => invalid}/base/base.txt (100%)
 create mode 100644 tests/format/junctions/invalid/base/project.conf
 copy tests/format/junctions/{ => invalid}/base/target.bst (100%)
 delete mode 100644 tests/format/junctions/invalid/missing-element.bst
 create mode 100644 tests/format/junctions/invalid/subproject-self-override.bst
 create mode 100644 tests/format/junctions/invalid/target-self-override.bst
 rename tests/format/junctions/{invalid/missing.bst => missing-element/bad-junction.bst} (100%)
 create mode 100644 tests/format/junctions/nested/deeptarget.bst
 delete mode 100644 tests/format/junctions/nested/foo.bst
 copy tests/{frontend/track-cross-junction/subproject-junction.bst => format/junctions/nested/subproject.bst} (100%)
 create mode 100644 tests/format/junctions/nested/subproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/nested/subproject/sub.txt} (100%)
 create mode 100644 tests/format/junctions/nested/subproject/subsubproject.bst
 create mode 100644 tests/format/junctions/nested/subproject/subsubproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/nested/subproject/subsubproject/subsub.txt} (100%)
 create mode 100644 tests/format/junctions/nested/subproject/subsubproject/subsubsubproject.bst
 create mode 100644 tests/format/junctions/nested/subproject/subsubproject/subsubsubproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/nested/subproject/subsubproject/subsubsubproject/subsubsub.txt} (100%)
 create mode 100644 tests/format/junctions/nested/subproject/subsubproject/subsubsubproject/target.bst
 create mode 100644 tests/format/junctions/nested/subproject/subsubproject/subtarget.bst
 create mode 100644 tests/format/junctions/nested/subproject/subsubproject/target.bst
 create mode 100644 tests/format/junctions/nested/subproject/subsubtarget.bst
 create mode 100644 tests/format/junctions/nested/subproject/subtarget.bst
 create mode 100644 tests/format/junctions/nested/subproject/target.bst
 delete mode 100644 tests/format/junctions/options-base/project.conf
 delete mode 100644 tests/format/junctions/options-default/project.conf
 delete mode 100644 tests/format/junctions/options-default/target.bst
 delete mode 100644 tests/format/junctions/options-inherit/project.conf
 delete mode 100644 tests/format/junctions/options-inherit/target.bst
 rename tests/format/junctions/{options-default/base.bst => options/base-default.bst} (100%)
 rename tests/format/junctions/options/{base.bst => base-explicit.bst} (100%)
 rename tests/format/junctions/{options-inherit/base.bst => options/base-propagate.bst} (100%)
 rename tests/format/junctions/{ => options}/options-base/horsy.txt (100%)
 rename tests/format/junctions/{ => options}/options-base/pony.txt (100%)
 create mode 100644 tests/format/junctions/options/options-base/project.conf
 rename tests/format/junctions/{ => options}/options-base/target.bst (100%)
 create mode 100644 tests/format/junctions/options/target-default.bst
 create mode 100644 tests/format/junctions/options/target-explicit.bst
 create mode 100644 tests/format/junctions/options/target-propagate.bst
 rename tests/{sources/deb/no-basedir/content/usr/share/lua/5.1/clod.lua => format/junctions/override-element/element.txt} (100%)
 create mode 100644 tests/format/junctions/override-element/override-subproject-dep.bst
 create mode 100644 tests/format/junctions/override-element/override-subproject-element-using-link.bst
 create mode 100644 tests/format/junctions/override-element/override-subproject-element-with-link.bst
 create mode 100644 tests/format/junctions/override-element/override-subproject-element.bst
 create mode 100644 tests/format/junctions/override-element/override-subsubproject.bst
 create mode 100644 tests/format/junctions/override-element/project.conf
 create mode 100644 tests/format/junctions/override-element/subdep-override.bst
 rename tests/{sources/deb/no-basedir/content/usr/share/doc/lua-clod/copyright => format/junctions/override-element/subdep-override.txt} (100%)
 create mode 100644 tests/format/junctions/override-element/subelement-alternative-link.bst
 create mode 100644 tests/format/junctions/override-element/subelement-override.bst
 rename tests/{sources/deb/no-basedir/content/usr/share/doc/lua-clod/README => format/junctions/override-element/subelement-override.txt} (100%)
 create mode 100644 tests/format/junctions/override-element/subproject-override-dep.bst
 create mode 100644 tests/format/junctions/override-element/subproject-override-element-using-link.bst
 create mode 100644 tests/format/junctions/override-element/subproject-override-element-with-link.bst
 create mode 100644 tests/format/junctions/override-element/subproject-override-element.bst
 create mode 100644 tests/format/junctions/override-element/subproject-override-subsubproject-element.bst
 create mode 100644 tests/format/junctions/override-element/subproject/project.conf
 rename tests/{sources/deb/fetch/content/usr/share/lua/5.1/clod.lua => format/junctions/override-element/subproject/sub-alternative.txt} (100%)
 rename tests/{sources/deb/fetch/content/usr/share/doc/lua-clod/copyright => format/junctions/override-element/subproject/sub.txt} (100%)
 rename tests/{sources/deb/fetch/content/usr/share/doc/lua-clod/README => format/junctions/override-element/subproject/subdep.txt} (100%)
 create mode 100644 tests/format/junctions/override-element/subproject/subdependency.bst
 create mode 100644 tests/format/junctions/override-element/subproject/subelement-alternative.bst
 create mode 100644 tests/format/junctions/override-element/subproject/subelement-link.bst
 create mode 100644 tests/format/junctions/override-element/subproject/subelement.bst
 create mode 100644 tests/format/junctions/override-element/subproject/subsubdep-override.bst
 rename tests/{sources/deb/explicit-basedir/content/share/lua/5.1/clod.lua => format/junctions/override-element/subproject/subsubdep-override.txt} (100%)
 create mode 100644 tests/format/junctions/override-element/subproject/subsubproject-override-dep.bst
 create mode 100644 tests/format/junctions/override-element/subproject/subsubproject/project.conf
 rename tests/{sources/deb/explicit-basedir/content/share/doc/lua-clod/copyright => format/junctions/override-element/subproject/subsubproject/subsub.txt} (100%)
 rename tests/{sources/deb/explicit-basedir/content/share/doc/lua-clod/README => format/junctions/override-element/subproject/subsubproject/subsubdep.txt} (100%)
 create mode 100644 tests/format/junctions/override-element/subproject/subsubproject/subsubdependency.bst
 create mode 100644 tests/format/junctions/override-element/subproject/subsubproject/subsubelement.bst
 create mode 100644 tests/format/junctions/override-twice/override.bst
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/override-twice/override/overridden-again.txt} (100%)
 create mode 100644 tests/format/junctions/override-twice/override/project.conf
 create mode 100644 tests/format/junctions/override-twice/override/target.bst
 create mode 100644 tests/format/junctions/override-twice/project.conf
 create mode 100644 tests/format/junctions/override-twice/subproject.bst
 create mode 100644 tests/format/junctions/override-twice/subproject/override.bst
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/override-twice/subproject/override/overridden.txt} (100%)
 create mode 100644 tests/format/junctions/override-twice/subproject/override/project.conf
 create mode 100644 tests/format/junctions/override-twice/subproject/override/target.bst
 create mode 100644 tests/format/junctions/override-twice/subproject/project.conf
 create mode 100644 tests/format/junctions/override-twice/subproject/subsubproject.bst
 create mode 100644 tests/format/junctions/override-twice/subproject/subsubproject/project.conf
 create mode 100644 tests/format/junctions/override-twice/subproject/subsubproject/subsubsubproject.bst
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/override-twice/subproject/subsubproject/subsubsubproject/original.txt} (100%)
 create mode 100644 tests/format/junctions/override-twice/subproject/subsubproject/subsubsubproject/project.conf
 create mode 100644 tests/format/junctions/override-twice/subproject/subsubproject/subsubsubproject/target.bst
 create mode 100644 tests/format/junctions/override-twice/target.bst
 create mode 100644 tests/format/junctions/overrides/overridden-subsubproject.bst
 create mode 100644 tests/format/junctions/overrides/overridden-subsubsubproject.bst
 create mode 100644 tests/format/junctions/overrides/project.conf
 create mode 100644 tests/format/junctions/overrides/subproject-overriden-with-deep-subproject.bst
 create mode 100644 tests/format/junctions/overrides/subproject-with-deep-override-indirect-link.bst
 create mode 100644 tests/format/junctions/overrides/subproject-with-deep-override-link.bst
 create mode 100644 tests/format/junctions/overrides/subproject-with-deep-override.bst
 create mode 100644 tests/format/junctions/overrides/subproject-with-overridden-link.bst
 create mode 100644 tests/format/junctions/overrides/subproject-with-override.bst
 copy tests/{frontend/track-cross-junction/subproject-junction.bst => format/junctions/overrides/subproject.bst} (100%)
 create mode 100644 tests/format/junctions/overrides/subproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/overrides/subproject/sub.txt} (100%)
 create mode 100644 tests/format/junctions/overrides/subproject/subsubproject-link.bst
 create mode 100644 tests/format/junctions/overrides/subproject/subsubproject.bst
 create mode 100644 tests/format/junctions/overrides/subproject/subsubproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/overrides/subproject/subsubproject/subsub.txt} (100%)
 create mode 100644 tests/format/junctions/overrides/subproject/subsubproject/subsubsubproject-link.bst
 create mode 100644 tests/format/junctions/overrides/subproject/subsubproject/subsubsubproject.bst
 create mode 100644 tests/format/junctions/overrides/subproject/subsubproject/subsubsubproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/overrides/subproject/subsubproject/subsubsubproject/subsubsub.txt} (100%)
 create mode 100644 tests/format/junctions/overrides/subproject/subsubproject/subsubsubproject/target.bst
 create mode 100644 tests/format/junctions/overrides/subproject/subsubproject/target.bst
 create mode 100644 tests/format/junctions/overrides/subproject/subsubsubproject-indirect-link.bst
 create mode 100644 tests/format/junctions/overrides/subproject/target.bst
 create mode 100644 tests/format/junctions/overrides/surpriseproject.bst
 create mode 100644 tests/format/junctions/overrides/surpriseproject/deepsurpriseproject.bst
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/overrides/surpriseproject/deepsurpriseproject/deepsurprise.txt} (100%)
 create mode 100644 tests/format/junctions/overrides/surpriseproject/deepsurpriseproject/project.conf
 create mode 100644 tests/format/junctions/overrides/surpriseproject/deepsurpriseproject/target.bst
 create mode 100644 tests/format/junctions/overrides/surpriseproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/overrides/surpriseproject/surprise.txt} (100%)
 create mode 100644 tests/format/junctions/overrides/surpriseproject/target.bst
 create mode 100644 tests/format/junctions/overrides/target-overridden-subsubproject-link.bst
 create mode 100644 tests/format/junctions/overrides/target-overridden-subsubproject.bst
 create mode 100644 tests/format/junctions/overrides/target-overridden-subsubsubproject-indirect-link.bst
 create mode 100644 tests/format/junctions/overrides/target-overridden-subsubsubproject-link.bst
 create mode 100644 tests/format/junctions/overrides/target-overridden-subsubsubproject.bst
 create mode 100644 tests/format/junctions/overrides/target-overridden-with-deepsubproject.bst
 create mode 100644 tests/format/junctions/simple/project.conf
 copy tests/{frontend/track-cross-junction/subproject-junction.bst => format/junctions/simple/subproject.bst} (100%)
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/junctions/simple/subproject/base.txt} (100%)
 create mode 100644 tests/format/junctions/simple/subproject/project.conf
 copy tests/format/junctions/{base => simple/subproject}/target.bst (100%)
 create mode 100644 tests/format/junctions/simple/target.bst
 delete mode 100644 tests/format/junctions/toplevel/bar.bst
 delete mode 100644 tests/format/junctions/toplevel/foo.bst
 delete mode 100644 tests/format/junctions/toplevel/project.conf
 delete mode 100644 tests/format/junctions/toplevel/target.bst
 rename tests/format/junctions/{base => use-repo/baserepo}/base.txt (100%)
 create mode 100644 tests/format/junctions/use-repo/baserepo/project.conf
 rename tests/format/junctions/{base => use-repo/baserepo}/target.bst (100%)
 create mode 100644 tests/format/junctions/use-repo/project.conf
 rename tests/format/junctions/{options => use-repo}/target.bst (100%)
 create mode 100644 tests/format/link.py
 copy tests/format/{junctions/config-target => link/conditional-junctions}/elements/subproject.bst (100%)
 create mode 100644 tests/format/link/conditional-junctions/elements/subsubproject-link.bst
 create mode 100644 tests/format/link/conditional-junctions/elements/target.bst
 create mode 100644 tests/format/link/conditional-junctions/project.conf
 copy tests/format/{junctions/config-target/subproject/subsubproject => link/conditional-junctions/subproject}/elements/hello.bst (100%)
 create mode 100644 tests/format/link/conditional-junctions/subproject/elements/subsubproject-goodbye-junction.bst
 create mode 100644 tests/format/link/conditional-junctions/subproject/elements/subsubproject-hello-junction.bst
 create mode 100644 tests/format/link/conditional-junctions/subproject/project.conf
 create mode 100644 tests/format/link/conditional-junctions/subproject/subsubproject-goodbye/elements/target.bst
 copy tests/{sources/tar/out-of-basedir-hardlinks/contents/to_extract/a => format/link/conditional-junctions/subproject/subsubproject-goodbye/files/goodbye.txt} (100%)
 create mode 100644 tests/format/link/conditional-junctions/subproject/subsubproject-goodbye/project.conf
 copy tests/format/{junctions/config-target/subproject/subsubproject/elements/hello.bst => link/conditional-junctions/subproject/subsubproject-hello/elements/target.bst} (100%)
 copy tests/format/{junctions/config-target/subproject/subsubproject => link/conditional-junctions/subproject/subsubproject-hello}/files/hello.txt (100%)
 create mode 100644 tests/format/link/conditional-junctions/subproject/subsubproject-hello/project.conf
 create mode 100644 tests/format/link/conditional/elements/goodbye.bst
 copy tests/format/{junctions/config-target/subproject/subsubproject => link/conditional}/elements/hello.bst (100%)
 create mode 100644 tests/format/link/conditional/elements/target-link.bst
 create mode 100644 tests/format/link/conditional/elements/target.bst
 copy tests/{sources/tar/out-of-basedir-hardlinks/contents/to_extract/a => format/link/conditional/files/goodbye.txt} (100%)
 copy tests/format/{junctions/config-target/subproject/subsubproject => link/conditional}/files/hello.txt (100%)
 create mode 100644 tests/format/link/conditional/project.conf
 create mode 100644 tests/format/link/cross-link-junction-include/project.conf
 copy tests/{frontend/track-cross-junction/subproject-junction.bst => format/link/cross-link-junction-include/subproject.bst} (100%)
 create mode 100644 tests/format/link/cross-link-junction-include/subproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/link/cross-link-junction-include/subproject/sub.txt} (100%)
 create mode 100644 tests/format/link/cross-link-junction-include/subproject/subsubproject.bst
 create mode 100644 tests/format/link/cross-link-junction-include/subproject/subsubproject/file.yml
 create mode 100644 tests/format/link/cross-link-junction-include/subproject/subsubproject/project.conf
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => format/link/cross-link-junction-include/subproject/subsubproject/subsub.txt} (100%)
 create mode 100644 tests/format/link/cross-link-junction-include/subproject/subsubproject/subtarget.bst
 create mode 100644 tests/format/link/cross-link-junction-include/subproject/subsubproject/target.bst
 create mode 100644 tests/format/link/cross-link-junction-include/subproject/subtarget.bst
 create mode 100644 tests/format/link/cross-link-junction-include/subproject/target.bst
 create mode 100644 tests/format/link/cross-link-junction-include/subsubproject.bst
 create mode 100644 tests/format/link/cross-link-junction-include/target.bst
 create mode 100644 tests/format/link/invalid/elements/base-file.bst
 create mode 100644 tests/format/link/invalid/elements/link-with-dependencies.bst
 create mode 100644 tests/format/link/invalid/elements/link-with-sources.bst
 create mode 100644 tests/format/link/invalid/elements/target-link-with-sources.bst
 create mode 100644 tests/format/link/invalid/project.conf
 create mode 100644 tests/format/link/notfound/elements/depends-on-link-target.bst
 create mode 100644 tests/format/link/notfound/elements/link-full-path.bst
 create mode 100644 tests/format/link/notfound/elements/link-target.bst
 create mode 100644 tests/format/link/notfound/elements/linked-local-junction-target.bst
 create mode 100644 tests/format/link/notfound/elements/linked-local-junction.bst
 create mode 100644 tests/format/link/notfound/elements/linked-nested-junction-target.bst
 create mode 100644 tests/format/link/notfound/elements/linked-nested-junction.bst
 create mode 100644 tests/format/link/notfound/elements/subproject-link-notfound.bst
 create mode 100644 tests/format/link/notfound/elements/subproject-link.bst
 copy tests/format/{junctions/config-target => link/notfound}/elements/subproject.bst (100%)
 create mode 100644 tests/format/link/notfound/elements/subsubproject-link-notfound.bst
 create mode 100644 tests/format/link/notfound/elements/subsubproject-link.bst
 create mode 100644 tests/format/link/notfound/elements/target-full-path.bst
 create mode 100644 tests/format/link/notfound/project.conf
 copy tests/format/{junctions/config-target => link/notfound}/subproject/elements/subsubproject-junction.bst (100%)
 create mode 100644 tests/format/link/notfound/subproject/project.conf
 create mode 100644 tests/format/link/notfound/subproject/subsubproject/project.conf
 create mode 100644 tests/format/link/simple-junctions/elements/full-path-link.bst
 create mode 100644 tests/format/link/simple-junctions/elements/subproject-link.bst
 copy tests/format/{junctions/config-target => link/simple-junctions}/elements/subproject.bst (100%)
 create mode 100644 tests/format/link/simple-junctions/elements/subsubproject-link.bst
 create mode 100644 tests/format/link/simple-junctions/elements/target-full-path.bst
 create mode 100644 tests/format/link/simple-junctions/elements/target-local.bst
 create mode 100644 tests/format/link/simple-junctions/elements/target-nested.bst
 create mode 100644 tests/format/link/simple-junctions/project.conf
 copy tests/format/{junctions/config-target/subproject/subsubproject => link/simple-junctions/subproject}/elements/hello.bst (100%)
 copy tests/format/{junctions/config-target => link/simple-junctions}/subproject/elements/subsubproject-junction.bst (100%)
 copy tests/format/{junctions/config-target/subproject/subsubproject => link/simple-junctions/subproject}/files/hello.txt (100%)
 create mode 100644 tests/format/link/simple-junctions/subproject/project.conf
 copy tests/format/{junctions/config-target => link/simple-junctions}/subproject/subsubproject/elements/hello.bst (100%)
 copy tests/format/{junctions/config-target => link/simple-junctions}/subproject/subsubproject/files/hello.txt (100%)
 create mode 100644 tests/format/link/simple-junctions/subproject/subsubproject/project.conf
 create mode 100644 tests/format/link/simple/elements/hello-link.bst
 rename tests/format/{junctions/config-target/subproject/subsubproject => link/simple}/elements/hello.bst (100%)
 create mode 100644 tests/format/link/simple/elements/target.bst
 rename tests/format/{junctions/config-target/subproject/subsubproject => link/simple}/files/hello.txt (100%)
 create mode 100644 tests/format/link/simple/project.conf
 create mode 100644 tests/format/option-list-directive.py
 create mode 100644 tests/format/option-list-directive/project.conf
 delete mode 100644 tests/format/project/plugin-allowed/element.bst
 delete mode 100644 tests/format/project/plugin-allowed/plugins/foo.py
 delete mode 100644 tests/format/project/plugin-allowed/project.conf
 delete mode 100644 tests/format/project/plugin-forbidden/element.bst
 delete mode 100644 tests/format/project/plugin-forbidden/forbidden-plugins/forbidden-plugin.py
 delete mode 100644 tests/format/project/plugin-forbidden/project.conf
 create mode 100644 tests/format/stack.py
 create mode 100644 tests/format/stack/elements/build-only-stack.bst
 create mode 100644 tests/format/stack/elements/dependency.bst
 create mode 100644 tests/format/stack/elements/runtime-only-stack.bst
 create mode 100644 tests/format/stack/project.conf
 create mode 100644 tests/format/substitutions.py
 create mode 100644 tests/format/userconfig.py
 create mode 100644 tests/format/variables/cyclic_variables/indirect-cyclic.bst
 create mode 100644 tests/format/variables/cyclic_variables/self-reference.bst
 create mode 100644 tests/format/variables/cyclic_variables/simple-cyclic.bst
 delete mode 100644 tests/format/variables/defaults/cmake.bst
 delete mode 100644 tests/format/variables/defaults/distutils.bst
 delete mode 100644 tests/format/variables/defaults/makemaker.bst
 delete mode 100644 tests/format/variables/defaults/modulebuild.bst
 delete mode 100644 tests/format/variables/defaults/qmake.bst
 create mode 100644 tests/format/variables/missing_variables/manual3.bst
 delete mode 100644 tests/format/variables/overrides/cmake.bst
 delete mode 100644 tests/format/variables/overrides/distutils.bst
 delete mode 100644 tests/format/variables/overrides/makemaker.bst
 delete mode 100644 tests/format/variables/overrides/modulebuild.bst
 delete mode 100644 tests/format/variables/overrides/qmake.bst
 rename tests/format/{junctions/toplevel => variables/partial_context}/base.bst (100%)
 create mode 100644 tests/format/variables/partial_context/base/project.conf
 create mode 100644 tests/format/variables/partial_context/base/vars.yml
 create mode 100644 tests/format/variables/partial_context/project.conf
 create mode 100644 tests/format/variables/partial_context/test.bst
 create mode 100644 tests/format/variables/public_data_variables/project.conf
 create mode 100644 tests/format/variables/public_data_variables/public.bst
 create mode 100644 tests/format/variables/public_data_variables/public_unresolved.bst
 create mode 100644 tests/format/variables/shared_variables/one.bst
 create mode 100644 tests/format/variables/shared_variables/project.conf
 create mode 100644 tests/format/variables/shared_variables/shared.yml
 create mode 100644 tests/format/variables/shared_variables/two.bst
 delete mode 100644 tests/frontend/buildtrack.py
 copy tests/frontend/{project_world/elements/import-dev.bst => default-target/elements/dummy_1.bst} (100%)
 rename tests/frontend/{project_world/elements/import-bin.bst => default-target/elements/dummy_2.bst} (100%)
 copy tests/frontend/{project_world/elements/import-dev.bst => default-target/elements/dummy_3.bst} (100%)
 create mode 100644 tests/frontend/default-target/elements/dummy_stack.bst
 rename tests/frontend/{project_world/elements/import-dev.bst => default-target/files/sub-project/elements/dummy_subproject.bst} (100%)
 create mode 100644 tests/frontend/default-target/files/sub-project/project.conf
 create mode 100644 tests/frontend/default-target/project.conf
 create mode 100644 tests/frontend/default_target.py
 create mode 100644 tests/frontend/interactive_init.py
 create mode 100644 tests/frontend/large_directory.py
 create mode 100644 tests/frontend/logging/elements/bar.bst
 create mode 100644 tests/frontend/logging/elements/foo.bst
 create mode 100644 tests/frontend/logging/elements/logtest.bst
 rename tests/{internals/pluginloading/customelement/pluginelements/__init__.py => frontend/logging/files/bar} (100%)
 rename tests/{format/junctions/inconsistent-names => frontend/logging}/files/foo (100%)
 create mode 100644 tests/frontend/logging/plugins/logtest.py
 create mode 100644 tests/frontend/logging/project.conf
 create mode 100644 tests/frontend/overlaps/directory-file.bst
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => frontend/overlaps/directory-file/directory-file} (100%)
 create mode 100644 tests/frontend/overlaps/multistage-overlap-error.bst
 create mode 100644 tests/frontend/overlaps/multistage-overlap-ignore.bst
 create mode 100644 tests/frontend/overlaps/multistage-overlap.bst
 create mode 100644 tests/frontend/overlaps/plugins/overlap.py
 create mode 100644 tests/frontend/overlaps/relocated-unstaged.bst
 create mode 100644 tests/frontend/overlaps/relocated.bst
 create mode 100644 tests/frontend/overlaps/subdir-a.bst
 create mode 100644 tests/frontend/overlaps/unstaged.bst
 create mode 100644 tests/frontend/overlaps/whitelist-undefined.bst
 create mode 100644 tests/frontend/overlaps/with-directory.bst
 copy tests/{sources/git/template/subrepofiles/ponyfile.txt => frontend/overlaps/with-directory/directory-file/file} (100%)
 create mode 100644 tests/frontend/progress.py
 create mode 100644 tests/frontend/project/elements/format-deps.bst
 create mode 100644 tests/frontend/project/elements/import-large-directory.bst
 create mode 100644 tests/frontend/project/elements/random.bst
 delete mode 120000 tests/frontend/project/files/files-and-links/basicfolder/basicsymlink
 create mode 100644 tests/frontend/project/files/sub-project/files/deps.bst
 create mode 100644 tests/frontend/project/files/sub2-project/elements/import-sub.bst
 rename tests/frontend/{project_world/files/sub-project => project/files/sub2-project}/files/etc-files/etc/animal.conf (100%)
 create mode 100644 tests/frontend/project/files/sub2-project/project.conf
 create mode 100644 tests/frontend/project/plugins/randomelement.py
 delete mode 100644 tests/frontend/project_default/elements/target.bst
 delete mode 100644 tests/frontend/project_default/elements/target2.bst
 delete mode 100644 tests/frontend/project_default/project.conf
 delete mode 100644 tests/frontend/project_world/elements/checkout-deps.bst
 delete mode 100644 tests/frontend/project_world/elements/compose-exclude-dev.bst
 delete mode 100644 tests/frontend/project_world/elements/compose-include-bin.bst
 delete mode 100644 tests/frontend/project_world/elements/rebuild-target.bst
 delete mode 100644 tests/frontend/project_world/files/sub-project/elements/import-etc.bst
 delete mode 100644 tests/frontend/project_world/files/sub-project/project.conf
 delete mode 100644 tests/frontend/project_world/project.conf
 rename tests/frontend/{project_world => simple}/elements/compose-all.bst (100%)
 copy tests/{sourcecache/project => frontend/simple}/elements/import-bin.bst (100%)
 copy tests/{sourcecache/project => frontend/simple}/elements/import-dev.bst (100%)
 create mode 100644 tests/frontend/simple/elements/subdir/target.bst
 rename tests/frontend/{project_world => simple}/elements/target.bst (100%)
 copy tests/{sourcecache/project => frontend/simple}/files/bin-files/usr/bin/hello (100%)
 copy tests/{sourcecache/project => frontend/simple}/files/dev-files/usr/include/pony.h (100%)
 create mode 100644 tests/frontend/simple/project.conf
 create mode 100644 tests/frontend/source-fetch/apples.bst
 create mode 100644 tests/frontend/source-fetch/bananas.bst
 create mode 100644 tests/frontend/source-fetch/files/apples
 create mode 100644 tests/frontend/source-fetch/files/bananas
 create mode 100644 tests/frontend/source-fetch/files/oranges
 create mode 100644 tests/frontend/source-fetch/oranges.bst
 create mode 100644 tests/frontend/source-track/apples.bst
 create mode 100644 tests/frontend/source-track/bananas.bst
 create mode 100644 tests/frontend/source-track/comments.bst
 create mode 100644 tests/frontend/source-track/files/apples
 create mode 100644 tests/frontend/source-track/files/bananas
 create mode 100644 tests/frontend/source-track/files/oranges
 create mode 100644 tests/frontend/source-track/oranges.bst
 delete mode 100644 tests/integration/cmake.py
 create mode 100644 tests/integration/filter.py
 create mode 100644 tests/integration/interactive_build.py
 delete mode 100644 tests/integration/make.py
 delete mode 100644 tests/integration/pip_element.py
 delete mode 100644 tests/integration/project/elements/cmake/cmakeconfroothello.bst
 delete mode 100644 tests/integration/project/elements/cmake/cmakehello.bst
 create mode 100644 tests/integration/project/elements/compose/test-integration.bst
 create mode 100644 tests/integration/project/elements/echo-env-var.bst
 create mode 100644 tests/integration/project/elements/echo-target.bst
 create mode 100644 tests/integration/project/elements/filter/filter.bst
 create mode 100644 tests/integration/project/elements/filter/parent.bst
 create mode 100644 tests/integration/project/elements/interactive/failed-build.bst
 delete mode 100644 tests/integration/project/elements/make/makehello.bst
 create mode 100644 tests/integration/project/elements/manual/import-file.bst
 create mode 100644 tests/integration/project/elements/manual/manual-stage-custom.bst
 delete mode 100644 tests/integration/project/elements/sandbox-bwrap/base-with-tmp.bst
 delete mode 100644 tests/integration/project/elements/sandbox-bwrap/break-shell.bst
 delete mode 100644 tests/integration/project/elements/sandbox-bwrap/command-exit-42.bst
 delete mode 100644 tests/integration/project/elements/sandbox-bwrap/non-executable-shell.bst
 delete mode 100644 tests/integration/project/elements/sandbox-bwrap/test-cleanup.bst
 create mode 100644 tests/integration/project/elements/sandbox/build-arch.bst
 create mode 100644 tests/integration/project/elements/sandbox/test-dev-shm.bst
 delete mode 100644 tests/integration/project/files/cmakehello.tar.gz
 delete mode 100644 tests/integration/project/files/makehello.tar.gz
 create mode 100644 tests/integration/project/files/manual-element/root/hello
 create mode 100644 tests/integration/project/files/manual-element/root/subdir/hello
 create mode 100644 tests/integration/project/files/test_shm.c
 create mode 100644 tests/integration/project/files/workspace-incremental/Makefile
 create mode 100644 tests/integration/project/files/workspace-incremental/source
 create mode 100644 tests/integration/project/files/workspace-partial/Makefile
 create mode 100644 tests/integration/project/files/workspace-partial/source1
 create mode 100644 tests/integration/project/files/workspace-partial/source2
 delete mode 100644 tests/integration/sandbox-bwrap.py
 create mode 100644 tests/integration/sandbox.py
 create mode 100644 tests/internals/cascache.py
 delete mode 100644 tests/internals/pluginfactory.py
 delete mode 100644 tests/internals/pluginfactory/anotherelement/foo.py
 delete mode 100644 tests/internals/pluginfactory/anothersource/foo.py
 delete mode 100644 tests/internals/pluginfactory/badsetup/foo.py
 delete mode 100644 tests/internals/pluginfactory/badversionelement/foo.py
 delete mode 100644 tests/internals/pluginfactory/badversionsource/foo.py
 delete mode 100644 tests/internals/pluginfactory/customelement/foo.py
 delete mode 100644 tests/internals/pluginfactory/customsource/foo.py
 delete mode 100644 tests/internals/pluginfactory/notatype/foo.py
 delete mode 100644 tests/internals/pluginfactory/wrongtype/foo.py
 delete mode 100644 tests/internals/pluginloading.py
 delete mode 100644 tests/internals/pluginloading/badversionelement/customelements/foo.py
 delete mode 100644 tests/internals/pluginloading/badversionelement/elements/simple.bst
 delete mode 100644 tests/internals/pluginloading/badversionelement/project.conf
 delete mode 100644 tests/internals/pluginloading/badversionsource/customsources/foo.py
 delete mode 100644 tests/internals/pluginloading/badversionsource/elements/simple.bst
 delete mode 100644 tests/internals/pluginloading/badversionsource/project.conf
 delete mode 100644 tests/internals/pluginloading/customelement/elements/simple.bst
 delete mode 100644 tests/internals/pluginloading/customelement/pluginelements/foo.py
 delete mode 100644 tests/internals/pluginloading/customelement/project.conf
 delete mode 100644 tests/internals/pluginloading/customsource/elements/simple.bst
 delete mode 100644 tests/internals/pluginloading/customsource/pluginsources/foo.py
 delete mode 100644 tests/internals/pluginloading/customsource/project.conf
 rename tests/internals/{pluginloading/badversionsource/customsources/__init__.py => storage/empty/.gitkeep} (100%)
 rename tests/internals/{pluginloading/badversionelement/customelements/__init__.py => storage/merge-add/added} (100%)
 rename tests/internals/{pluginfactory/wrongtype/__init__.py => storage/merge-add/root-file} (100%)
 rename tests/internals/{pluginfactory/notatype/__init__.py => storage/merge-add/subdirectory/subdir-file} (100%)
 rename tests/internals/{pluginfactory/nosetup/__init__.py => storage/merge-base/root-file} (100%)
 rename tests/internals/{pluginfactory/customsource/__init__.py => storage/merge-base/subdirectory/subdir-file} (100%)
 rename tests/internals/{pluginfactory/customelement/__init__.py => storage/merge-buildtree/root-file} (100%)
 rename tests/internals/{pluginfactory/badversionsource/__init__.py => storage/merge-buildtree/root-file.o} (100%)
 rename tests/internals/{pluginfactory/badversionelement/__init__.py => storage/merge-buildtree/subdirectory/subdir-file} (100%)
 rename tests/internals/{pluginfactory/badsetup/__init__.py => storage/merge-buildtree/subdirectory/subdir-file.o} (100%)
 create mode 120000 tests/internals/storage/merge-link-change/link
 rename tests/internals/{pluginfactory/anothersource/__init__.py => storage/merge-link-change/root-file} (100%)
 create mode 120000 tests/internals/storage/merge-link-change/subdirectory/link
 rename tests/internals/{pluginfactory/anotherelement/__init__.py => storage/merge-link-change/subdirectory/subdir-file} (100%)
 create mode 120000 tests/internals/storage/merge-link/link
 rename tests/{format/project/plugin-forbidden/forbidden-plugins/__init__.py => internals/storage/merge-link/root-file} (100%)
 copy tests/{frontend/project/files/files-and-links/basicfolder => internals/storage/merge-link/subdirectory}/subdir-file (100%)
 rename tests/{format/project/plugin-forbidden/__init__.py => internals/storage/merge-override-in-subdir-with-directory/root-file} (100%)
 rename tests/{format/project/plugin-allowed/plugins/__init__.py => internals/storage/merge-override-in-subdir-with-directory/root-file.o} (100%)
 copy tests/{frontend/project/files/files-and-links/basicfolder => internals/storage/merge-override-in-subdir-with-directory/subdirectory}/subdir-file (100%)
 rename tests/{format/project/plugin-allowed/__init__.py => internals/storage/merge-override-in-subdir-with-directory/subdirectory/subdir-file.o/test} (100%)
 rename tests/{format/junctions/inconsistent-names/junctionA/junctionB/files/lib2 => internals/storage/merge-override-in-subdir-with-file/root-file} (100%)
 copy tests/{sources/bzr/basic/test => internals/storage/merge-override-in-subdir-with-file/root-file.o} (100%)
 copy tests/{frontend/project/files/files-and-links/basicfolder => internals/storage/merge-override-in-subdir-with-file/subdirectory}/subdir-file (100%)
 rename tests/{format/junctions/inconsistent-names/junctionA/junctionB/base/baseimg => internals/storage/merge-override-in-subdir-with-file/subdirectory/subdir-file.o} (100%)
 rename tests/{format/junctions/inconsistent-names/junctionA/files/lib => internals/storage/merge-override-subdirectory/root-file} (100%)
 rename tests/{format/junctions/inconsistent-names/junctionA/files/app => internals/storage/merge-override-subdirectory/root-file.o} (100%)
 rename tests/{cachekey/project/.bst/workspaces.yml => internals/storage/merge-override-subdirectory/subdirectory} (100%)
 rename tests/{artifactcache/junctions/parent/.bst/workspaces.yml => internals/storage/merge-override-with-directory/root-file} (100%)
 copy tests/{testutils/repo/__init__.py => internals/storage/merge-override-with-directory/root-file.o/test} (100%)
 copy tests/{frontend/project/files/files-and-links/basicfolder => internals/storage/merge-override-with-directory/subdirectory}/subdir-file (100%)
 copy tests/{testutils/repo/__init__.py => internals/storage/merge-override-with-directory/subdirectory/subdir-file.o} (100%)
 copy tests/{testutils/repo/__init__.py => internals/storage/merge-override-with-file/root-file} (100%)
 copy tests/{sources/bzr/basic/test => internals/storage/merge-override-with-file/root-file.o} (100%)
 copy tests/{frontend/project/files/files-and-links/basicfolder => internals/storage/merge-override-with-file/subdirectory}/subdir-file (100%)
 copy tests/{testutils/repo/__init__.py => internals/storage/merge-override-with-file/subdirectory/subdir-file.o} (100%)
 copy tests/{testutils/repo/__init__.py => internals/storage/merge-override-with-new-subdirectory/root-file} (100%)
 copy tests/{testutils/repo/__init__.py => internals/storage/merge-override-with-new-subdirectory/subdirectory} (100%)
 copy tests/{testutils/repo/__init__.py => internals/storage/merge-properties/root-file} (100%)
 mode change 100644 => 100755
 copy tests/{frontend/project/files/files-and-links/basicfolder => internals/storage/merge-properties/subdirectory}/subdir-file (100%)
 copy tests/{frontend/project/files/files-and-links/basicfolder => internals/storage/merge-remove/subdirectory}/subdir-file (100%)
 create mode 100644 tests/internals/storage/merge-replace/root-file
 copy tests/{frontend/project/files/files-and-links/basicfolder => internals/storage/merge-replace/subdirectory}/subdir-file (100%)
 copy tests/{testutils/repo/__init__.py => internals/storage/merge-subdirectory-add/root-file} (100%)
 copy tests/{testutils/repo/__init__.py => internals/storage/merge-subdirectory-add/subdirectory/added} (100%)
 create mode 100644 tests/internals/storage/merge-subdirectory-add/subdirectory/subdir-file
 copy tests/{testutils/repo/__init__.py => internals/storage/merge-subdirectory-link/root-file} (100%)
 create mode 120000 tests/internals/storage/merge-subdirectory-link/subdirectory/link
 copy tests/{frontend/project/files/files-and-links/basicfolder => internals/storage/merge-subdirectory-link/subdirectory}/subdir-file (100%)
 copy tests/{testutils/repo/__init__.py => internals/storage/merge-subdirectory-remove/root-file} (100%)
 copy tests/{testutils/repo/__init__.py => internals/storage/merge-subdirectory-remove/subdirectory/.gitkeep} (100%)
 copy tests/{testutils/repo/__init__.py => internals/storage/merge-subdirectory-replace/root-file} (100%)
 create mode 100644 tests/internals/storage/merge-subdirectory-replace/subdirectory/subdir-file
 delete mode 100644 tests/plugins/deprecationwarnings/deprecationwarnings.py
 delete mode 100644 tests/plugins/deprecationwarnings/project/elements/deprecated.bst
 delete mode 100644 tests/plugins/deprecationwarnings/project/plugins/elements/deprecated_plugin.py
 delete mode 100644 tests/plugins/deprecationwarnings/project/plugins/elements/deprecated_plugin.yaml
 delete mode 100644 tests/plugins/deprecationwarnings/project/project.conf
 create mode 100644 tests/plugins/loading.py
 rename tests/{format/junctions/config-target/elements/subproject.bst => plugins/loading/elements/subproject-junction.bst} (100%)
 create mode 100644 tests/plugins/loading/plugins/elements/deprecated/deprecated.py
 create mode 100644 tests/plugins/loading/plugins/elements/found/found.py
 create mode 100644 tests/plugins/loading/plugins/elements/incompatiblemajor/incompatiblemajor.py
 create mode 100644 tests/plugins/loading/plugins/elements/incompatibleminor/incompatibleminor.py
 create mode 100644 tests/plugins/loading/plugins/elements/malformedminversion/badstring.py
 create mode 100644 tests/plugins/loading/plugins/elements/malformedminversion/dict.py
 create mode 100644 tests/plugins/loading/plugins/elements/malformedminversion/list.py
 create mode 100644 tests/plugins/loading/plugins/elements/malformedminversion/number.py
 create mode 100644 tests/plugins/loading/plugins/elements/nominversion/nominversion.py
 rename tests/{internals/pluginfactory/nosetup/foo.py => plugins/loading/plugins/nosetup/nosetup.py} (100%)
 create mode 100644 tests/plugins/loading/plugins/setupnotfunction/setupnotfunction.py
 create mode 100644 tests/plugins/loading/plugins/setupreturnsbadtype/setupreturnsbadtype.py
 create mode 100644 tests/plugins/loading/plugins/setupreturnsnottype/setupreturnsnottype.py
 create mode 100644 tests/plugins/loading/plugins/sources/deprecated/deprecated.py
 create mode 100644 tests/plugins/loading/plugins/sources/found/found.py
 create mode 100644 tests/plugins/loading/plugins/sources/incompatiblemajor/incompatiblemajor.py
 create mode 100644 tests/plugins/loading/plugins/sources/incompatibleminor/incompatibleminor.py
 create mode 100644 tests/plugins/loading/plugins/sources/malformedminversion/badstring.py
 create mode 100644 tests/plugins/loading/plugins/sources/malformedminversion/dict.py
 create mode 100644 tests/plugins/loading/plugins/sources/malformedminversion/list.py
 create mode 100644 tests/plugins/loading/plugins/sources/malformedminversion/number.py
 create mode 100644 tests/plugins/loading/plugins/sources/nominversion/nominversion.py
 create mode 100644 tests/plugins/loading/project.conf
 rename tests/{format/junctions/config-target => plugins/loading}/subproject/elements/subsubproject-junction.bst (100%)
 create mode 100644 tests/plugins/loading/subproject/project.conf
 create mode 100644 tests/plugins/loading/subproject/subsubproject/project.conf
 create mode 100755 tests/plugins/sample-plugins/setup.py
 copy tests/{testutils/repo => plugins/sample-plugins/src/sample_plugins}/__init__.py (100%)
 copy tests/{testutils/repo => plugins/sample-plugins/src/sample_plugins/elements}/__init__.py (100%)
 create mode 100644 tests/plugins/sample-plugins/src/sample_plugins/elements/sample.py
 create mode 100644 tests/plugins/sample-plugins/src/sample_plugins/elements/sample.yaml
 copy tests/{testutils/repo => plugins/sample-plugins/src/sample_plugins/sources}/__init__.py (100%)
 create mode 100644 tests/plugins/sample-plugins/src/sample_plugins/sources/sample.py
 create mode 100644 tests/remotecache/project/elements/autotools/amhello.bst
 copy tests/{sources => remotecache}/project/elements/base.bst (100%)
 copy tests/{sources => remotecache}/project/elements/base/base-alpine.bst (100%)
 copy tests/{remoteexecution => remotecache}/project/elements/build-shell/buildtree-fail.bst (100%)
 copy tests/{remoteexecution => remotecache}/project/elements/build-shell/buildtree.bst (100%)
 copy tests/{remoteexecution => remotecache}/project/elements/no-runtime-deps.bst (100%)
 copy tests/{remoteexecution/project/files/sub-project => remotecache/project}/files/amhello.tar.gz (100%)
 copy tests/{sourcecache => remotecache}/project/files/dev-files/usr/include/pony.h (100%)
 create mode 100644 tests/remotecache/project/project.conf
 create mode 100644 tests/remotecache/simple.py
 create mode 100644 tests/remoteexecution/workspace.py
 delete mode 100644 tests/sandboxes/fallback.py
 delete mode 100644 tests/sandboxes/mounting/mount_simple.py
 create mode 100644 tests/sourcecache/capabilities.py
 delete mode 100644 tests/sources/deb.py
 delete mode 100644 tests/sources/deb/a_deb.deb
 delete mode 100644 tests/sources/deb/explicit-basedir/content/share/doc/lua-clod/changelog.Debian.gz
 delete mode 120000 tests/sources/deb/explicit-basedir/content/share/lua/5.2/clod.lua
 delete mode 100644 tests/sources/deb/explicit-basedir/target.bst
 delete mode 100644 tests/sources/deb/fetch/content/usr/share/doc/lua-clod/changelog.Debian.gz
 delete mode 120000 tests/sources/deb/fetch/content/usr/share/lua/5.2/clod.lua
 delete mode 100644 tests/sources/deb/fetch/target-lz.bst
 delete mode 100644 tests/sources/deb/fetch/target.bst
 delete mode 100644 tests/sources/deb/no-basedir/content/usr/share/doc/lua-clod/changelog.Debian.gz
 delete mode 120000 tests/sources/deb/no-basedir/content/usr/share/lua/5.2/clod.lua
 delete mode 100644 tests/sources/deb/no-basedir/target.bst
 delete mode 100644 tests/sources/deb/no-ref/a/b/d
 delete mode 100644 tests/sources/deb/no-ref/a/c
 delete mode 100644 tests/sources/deb/no-ref/target.bst
 delete mode 100644 tests/sources/ostree/template/project.conf
 create mode 100644 tests/sources/tar/read-only/content/c.tar.gz
 create mode 100644 tests/sources/variables.py
 copy tests/sources/{patch/multiple-patches => variables/folder}/file.txt (100%)
 create mode 100644 tests/sources/variables/project.conf
 create mode 100644 tests/sources/variables/target.bst
 create mode 100644 tests/sources/variables/unresolveable-target.bst
 create mode 100644 tests/testutils/constants.py


[buildstream] 01/01: fixup! ci: Replace docker CLI monstrosity with Compose

Posted by ch...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

chandan pushed a commit to branch chandan/test
in repository https://gitbox.apache.org/repos/asf/buildstream.git

commit eae7bd35be3d98ebf42e1025579ffc7029bc061d
Author: Chandan Singh <ch...@chandansingh.net>
AuthorDate: Thu Jan 14 23:46:30 2021 +0000

    fixup! ci: Replace docker CLI monstrosity with Compose
---
 .github/compose/ci.docker-compose.yml |  4 ++++
 .github/workflows/ci.yml              | 37 +----------------------------------
 2 files changed, 5 insertions(+), 36 deletions(-)

diff --git a/.github/compose/ci.docker-compose.yml b/.github/compose/ci.docker-compose.yml
index 9ef9477..8c5ef8b 100644
--- a/.github/compose/ci.docker-compose.yml
+++ b/.github/compose/ci.docker-compose.yml
@@ -35,6 +35,10 @@ services:
     <<: *tests-template
     image: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-centos:7.7.1908-${CI_IMAGE_VERSION:-latest}
 
+  fedora-missing-deps:
+    <<: *tests-template
+    image: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-fedora:minimal-${CI_IMAGE_VERSION:-latest}
+
   no-usedevelop:
     <<: *tests-template
     environment:
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 8ea51bf..f770df5 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -33,20 +33,13 @@ on:
 # - standardize WSL tasks by using GitHub-provided runners
 
 env:
-  CI_IMAGE_VERSION: master-240510553
+  CI_IMAGE_VERSION: master-241289109
 
 jobs:
   tests:
     runs-on: ubuntu-20.04
     continue-on-error: ${{ matrix.allow-failure || false }}
 
-    env:
-      CI_IMAGE_PREFIX: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite
-      CI_IMAGE_SUFFIX: master-177137613
-      TOXENV: py36,py37,py38-nocover,py36-plugins,py37-plugins,py38-plugins-nocover
-      # FIXME: De-duplicate against tox.ini
-      BST_PLUGINS_EXPERIMENTAL_VERSION: 1.93.4
-
     strategy:
       fail-fast: false
       matrix:
@@ -87,8 +80,6 @@ jobs:
 
   docs:
     runs-on: ubuntu-20.04
-    env:
-      BST_FORCE_SESSION_REBUILD: 1
     steps:
       - name: Check out repository
         uses: actions/checkout@v2
@@ -111,29 +102,3 @@ jobs:
         with:
           name: docs
           path: doc/build/html
-
-  # TODO: Consolidate with rest of the Docker Compose setup.
-  # Providing a base image with the dependencies not added in the first place
-  # should make that simpler.
-  tests-fedora-missing-deps:
-    runs-on: ubuntu-20.04
-    container: registry.gitlab.com/buildstream/buildstream-docker-images/testsuite-fedora:32-master-177137613
-    steps:
-      - name: Check out repository
-        uses: actions/checkout@v2
-        # BuildStream requires tags to be able to find its version.
-        with:
-          fetch-depth: 0
-      - name: Uninstall Bubblewrap and OSTree
-        # We remove the Bubblewrap and OSTree packages here so that we catch any
-        # codepaths that try to use them. Removing OSTree causes fuse-libs to
-        # disappear unless we mark it as user-installed.
-        run: |
-          dnf mark install fuse-libs systemd-udev
-          dnf erase -y bubblewrap ostree
-      - name: Add test user
-        run: |
-          useradd -Um buildstream
-          chown -R buildstream:buildstream .
-      - name: Run tests
-        run: su buildstream -c "tox -- $PYTEST_ARGS"