RFC: TestBot priorities
Francois Gouget
fgouget at codeweavers.com
Fri Apr 3 09:38:23 CDT 2020
On Fri, 3 Apr 2020, Zhiyi Zhang wrote:
> On 4/3/20 6:09 PM, Francois Gouget wrote:
> > On Fri, 3 Apr 2020, Zhiyi Zhang wrote:
> > [...]
> >> I think we can only enable -Werror for patches coming from the
> >> wine-devel.
> > Do you have a concrete proposal?
> We could consider switching to clean build with ccache set up.
The build and Wine VMs already use ccache.
The TestBot does not need to wipe the build tree for each patch. So only
files that have changed need to be rebuilt. But alternating between
-Werror and no -Werror requires rerunning configure which takes about 30
seconds. A test I have done shows that such a basic rebuild takes about
130 seconds, 6 seconds of which are in make (and thus parallelisable).
In comparison a basic build currently takes about 20 seconds.
> So a separate tree is not needed. That would solve the problem
> of having to wait for nightly VM updates to complete for some
> patches as well since we don't have to update those VMs then.
I don't understand.
A patch can cause the build process to run arbitrary commands. This
means the VM must be reverted to a clean state after each build and
this also wipes the ccache data.
(That's why the Build/Wine updates are special tasks)
Storing the ccache data out of the VM would not work because the VM
would have write access to that persistent data and could poison the
content of that cache.
What could work would be to use distcc[1] so the compilation is
performed outside the VM (and potentially distributed across multiple
machines). The compilation server(s) could then use ccache. That would
be safe as long as there is no security vulnerability in the
compiler(s). I would probably want to place the compilers in a chroot
sandbox or some such anyway. And we'd need to also ensure that all hosts
that perform compilations (possibly including the VM) has consistent
compiler versions.
This would actually help a lot with patch series that start by modifying
a global Wine header ;-) But that seems like way more complexity than
I want to entertain for now.
[1] https://distcc.github.io/
--
Francois Gouget <fgouget at codeweavers.com>
More information about the wine-devel
mailing list