-
6fcfa452
by Jonathan Maw
at 2018-12-03T13:21:05Z
_yamlcache.py: Use a project's junction name if present
This is required because if there are projects with the same name
loaded, that have elements in the same path, with the same contents,
they are considered the same, despite actually belonging to different
Projects.
This fixes buildstream issue #795
-
d0f9c724
by James Ennis
at 2018-12-03T13:21:05Z
tests/loader/junctions.py: Test that we can build a junction that is referred differently, twice.
Test required to close #795 - We should be able to build a project which refers
to the same junction twice, but with two different filenames.
-
f7581026
by Jürg Billeter
at 2018-12-03T16:27:03Z
Merge branch 'jonathan/fix-identical-element' into 'master'
_yamlcache.py: Use a project's junction name if present
Closes #795
See merge request BuildStream/buildstream!980
-
98c15463
by Tristan Van Berkom
at 2018-12-05T07:04:56Z
_scheduler/queues: Don't call update state outside of error handling harness
Commit 3fa79d8da, part of an initiative for caching of the failed builds,
introduced a call to Element._update_state() after a job completes and before
entering the error handling harness intended for handling plugin raised errors.
Element._update_state() can result in triggering plugin code to
run, so this is incorrect, and causes raised errors to crash BuildStream
if they happen here.
After analyzing the code, it appears that this additional call to
Element._update_state() is unneeded, and was only added because the
state needs to be updated for a failure as well as a success.
Instead, we now have the BuildQueue call Element._assemble_done()
unconditionally, regardless of whether the build was successful
or not, which has the same effect and also reads better.
In addition, added a FIXME comment that we are still conditionally
updating the artifact cache size from BuildQueue.done() only
if the build is successful, which is incorrect because failed builds
also increase the local artifact cache size - to fix this we need
to communicate the added artifact size through Element._assemble()
regardless of whether the build succeeded or failed.
-
5d77b871
by Tristan Van Berkom
at 2018-12-05T07:37:54Z
Merge branch 'tristan/refactor-queues-update-state' into 'master'
_scheduler/queues/queue.py: Don't call update state outside of error handling harness
See merge request BuildStream/buildstream!988
-
82513109
by Valentin David
at 2018-12-05T09:47:52Z
git source plugin: Track git tags and save them to reproduce a minimum shallow repository
Instead of tag information being fetched which can change with time,
they are tracked and saved in the projects.refs/.bst. Then we re-tag
automatically the closest tag so that `git describe` works and is
reproducible.
This new feature is opt-in with the new `track-tags` configuration,
and must be used to fix modules which are broken by our new policy
of omitting the `.git/` repository when staging git sources.
This fixes issue #487
-
ec7b62c3
by Valentin David
at 2018-12-05T09:50:15Z
NEWS: Add news about broken 'git describe' by default.
-
761e7570
by Tristan Van Berkom
at 2018-12-05T10:23:49Z
Merge branch 'valentindavid/git_describe_tracking' into 'master'
Track of git tags and save them to reproduce minimum shallow repository
Closes #487
See merge request BuildStream/buildstream!906
-
08958c5d
by Jonathan Maw
at 2018-12-05T11:02:27Z
utils.py: Add a helper for searching upwards for files
i.e. with a given directory and filename, check parent directories until
either a directory with the filename is found, or you reach the root of
the filesystem.
This is a part of #222
-
b770320b
by Jonathan Maw
at 2018-12-05T11:11:37Z
_workspaces.py: Add WorkspaceProject and WorkspaceProjectCache objects
WorkspaceProject contains all the information needed to refer back to a
project from its workspace (currently this is the project path and the
element used to create this workspace)
This is stored within a WorkspaceProjectCache object, which keeps
WorkspaceProjects around so they don't need to be loaded from disk
repeatedly.
Workspaces has been extended to contain the WorkspaceProjectCache, and
will use it when opening and closing workspaces.
Context has been extended to contain a WorkspaceProjectCache, as there
are times when we want to use it before a Workspaces can be initialised
(looking up a WorkspaceProject to find the directory that the project is
in)
This is a part of #222
-
4cb9c3fe
by Jonathan Maw
at 2018-12-05T11:14:14Z
_project.py: Rename _ensure_project_dir to _find_project_dir
This is a part of #222
-
2427598c
by Jonathan Maw
at 2018-12-05T11:14:14Z
cli.py: Use utils' search upwards helper when searching for project.conf
This is a part of #222
-
ab46196c
by Jonathan Maw
at 2018-12-05T11:14:14Z
_project.py: Find project from workspace if outside of a project
Searching for the workspace file is preferred to searching for the
project file for the moment, because it avoids the circumstance of
the workspaces being inside a directory where a higher-level
ctory
may have project.conf (but may not be a buildstream project).
This is a part of #222
-
246f439c
by Jonathan Maw
at 2018-12-05T11:14:15Z
_stream.py: Opened workspaces store the project that opened them
This is a part of #222
-
f99667e1
by Jonathan Maw
at 2018-12-05T13:56:29Z
_stream.py: Re-create the .bstproject when resetting the workspace
This is a part of #222
-
42e026ca
by Jonathan Maw
at 2018-12-05T13:56:29Z
_workspaces.py: Do not include .bstproject.yaml in the cache key
This is a part of #222
-
f1583610
by Jonathan Maw
at 2018-12-05T13:56:29Z
cli: Interactively warn if the user is trying to close the workspace they're using to load the project
This involves changes in:
* _stream.py:
* Add the helper Stream.workspace_is_required()
* userconfig.yaml:
* Add a default value for prompt.really-workspace-close-project-inaccessible
* _context.py:
* Load the prompt 'really-workspace-close-project-inaccessible' from
user config.
* cli.py:
* If buildstream is invoked interactively, prompt the user to confirm
that they want to close the workspace they're using to load this
project.
This is a part of #222
-
b77bb195
by Jonathan Maw
at 2018-12-05T13:56:29Z
tests: Test bst commands from an external workspace
This is a part of #222
-
95005071
by Jonathan Maw
at 2018-12-05T13:56:29Z
NEWS: Add an entry for being able to run commands from a workspace
This is a part of #222
-
ff0d91a0
by Jonathan Maw
at 2018-12-05T17:19:40Z
_stream.py: Fix ugly error when opening a workspace using a relative path
-
c3eb6006
by Jonathan Maw
at 2018-12-05T17:19:40Z
Make specifying elements optional in bst commands
Known issues:
* `bst shell` works, but `bst shell COMMANDS...` doesn't, because click
has no way of separating optional args from variable-length args.
* `bst checkout`'s usage string marks LOCATION as an optional argument.
Because click gets confused if there's an optional argument before a
mandatory argument, I had to mark LOCATION as optional internally.
* `bst workspace open` makes no sense with element being optional, so
I skipped it.
* `bst workspace close` will probably need to be revisited when multiple
projects can own one workspace.
* `bst workspace reset` will happily delete the directory you're
currently in, requiring you to `cd $PWD` to see the contents of your
directory.
I could exclude the top-level directory of the workspace being
deleted, but it is entirely valid to run workspace commands from deeper
in the workspace.
* `bst source-bundle` does not work if a workspace is open at all, and
according to #672 is scoped for deprecation, so I have left it alone.
This is a part of #222
-
13d45678
by Jonathan Maw
at 2018-12-05T17:19:40Z
tests: Add tests for guessing element names
This is a part of #222
-
5c1fa518
by Jonathan Maw
at 2018-12-05T17:19:40Z
Add NEWS for guessing the element in commands
This is a part of #222
-
a309664a
by Jonathan Maw
at 2018-12-05T17:19:40Z
doc: Point out that element is optional when commands are run from the workspace
This is a part of #222