Re: [BuildStream] Proposed removal of `workspace reset --soft`



Hi Darius,


On Tue, 2019-11-19 at 17:19 +0000, Darius Makovsky via buildstream-list 
wrote:
[...]

Related to this is a question about the continued need for the
`prepared` attribute of workspaces: This is really only used to prevent
executing configure-commands in a sandbox and again ideally we'd hope
that in any case where we don't skip this, the key of the workspace
source has changed. It seems that it would be correct in those cases to
execute the configure-commands. In my opinion, Buildstream can't
accurately decide whether the result of executing configure-commands
will be different in any case other than the source remaining unchanged.
If the source has not changed then I don't think those jobs should be
run at all.

For autotools projects, rerunning `./configure` before `make` may
trigger a full rebuild, if I remember correctly. It's also fairly slow,
even more so if autogen/autoreconf is called as well. I.e., to support
(fast) incremental builds with such build systems, we must avoid
calling the configure commands unless they have failed before.

Autotools does support automatically rerunning `configure` as part of
`make` if needed. Whether this works properly may depend on the project
and configure flags, however, it's generally possible.
I.e., BuildStream shouldn't need to figure out whether to rerun
configure. The build system should handle this.

For cases where the build system doesn't handle this automatically or
correctly, soft workspace reset allows the user to manually trigger
this. It should normally not be necessary, however, incremental build
support has flaws or limitations in many build systems.

That said, with the separation of workspace (source) directory and
buildtree, BuildStream can also easily trigger a full rebuild. It may
make sense to change the soft reset function to trigger a full rebuild
by clearing both the reference to the last build and the prepared flag.

Cheers,
Jürg



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]