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

Re: [Xen-devel] [PATCH] x86emul: fix test harness and fuzzer build dependencies



>>> On 20.12.18 at 15:46, <ian.jackson@xxxxxxxxxx> wrote:
> Jan Beulich writes ("[PATCH] x86emul: fix test harness and fuzzer build 
> dependencies"):
>> --- a/tools/fuzz/x86_instruction_emulator/Makefile
>> +++ b/tools/fuzz/x86_instruction_emulator/Makefile
> ...
>> +$(XEN_ROOT)/tools/include/xen/lib/x86/cpuid-autogen.h: FORCE
>> +    $(MAKE) -C $(XEN_ROOT)/tools/include build
> 
> I think this introduces a `make -j' hazard ?  The problem is that this
> branch of the Makefiles tree might enter tools/include while
> another branch is also doing so, resulting in two simultaneous
> executions in the same directory.

What is "another branch" here? So far I was under the impression
that the ability of building x86 emulator fuzzer and test harness
independently is an exception, and that all other parts of the
tools/ subtree are supposed to be built by going through the top
level. Otherwise further dependency issues might arise, due to
top level Makefile's %-tools-public-headers rule.

Hence whether there's a "make -j" hazard here depends on what
that top level rule's purpose is.

>> @@ -27,10 +28,12 @@ ifeq ($(CONFIG_X86),y)
>>      for f in $(filter-out %autogen.h,$(patsubst 
> $(XEN_ROOT)/xen/include/xen/lib/x86/%,%,Makefile $(wildcard 
> $(XEN_ROOT)/xen/include/xen/lib/x86/*.h))); do \
>>              ln -sf $(XEN_ROOT)/xen/include/xen/lib/x86/$$f xen/lib/x86/$$f; 
>> \
>>      done
>> -    $(MAKE) -C xen/lib/x86 all XEN_ROOT=$(XEN_ROOT)
>>  endif
>>      touch $@
>>  
>> +all-$(CONFIG_X86): xen/.dir
>> +    $(MAKE) -C xen/lib/x86 all XEN_ROOT=$(XEN_ROOT)
> 
> And here we have a pre-existing instance of the same bug, I think ?
> 
> With recursive make you can't just
>    $(MAKE) -C .../this
>    $(MAKE) -C .../that
> because of this race problem.  You need to sequence the subdirectories
> correctly in the parent Makefiles so that by the time `here' is
> entered, its dependency directories are already finished.

In general - yes. But with the way the tools/include/ tree gets
populated, I don't think so.

Jan



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.