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

Re: [PATCH] build/xen: fail to rebuild if Kconfig fails



On Thu, Feb 15, 2024 at 10:49:31AM +0100, Jan Beulich wrote:
> On 15.02.2024 10:30, Roger Pau Monne wrote:
> > --- a/xen/Makefile
> > +++ b/xen/Makefile
> > @@ -358,10 +358,10 @@ config: tools_fixdep outputmakefile FORCE
> >  else # !config-build
> >  
> >  ifeq ($(need-config),y)
> > --include include/config/auto.conf
> >  # Read in dependencies to all Kconfig* files, make sure to run syncconfig 
> > if
> >  # changes are detected.
> >  -include include/config/auto.conf.cmd
> > +include include/config/auto.conf
> 
> With the - dropped, ...
> 
> > @@ -375,6 +375,7 @@ $(KCONFIG_CONFIG): tools_fixdep
> >  # This exploits the 'multi-target pattern rule' trick.
> >  # The syncconfig should be executed only once to make all the targets.
> >  include/config/%.conf include/config/%.conf.cmd: $(KCONFIG_CONFIG)
> > +   rm -rf include/config/$*.conf
> >     $(Q)$(MAKE) $(build)=tools/kconfig syncconfig
> 
> ... is this really necessary? The error status from the sub-make is ignored
> only because of the -, isn't it?

Without the `rm` the include/config/auto.conf is not removed by
Kconfig on error, so the include will still succeed but use the stale
auto.conf file.

Keep in mind on rebuilds include/config/auto.conf is already present,
so the rule is only executed for the include/config/auto.conf.cmd
target.

> 
> I also don't really follow the need to re-order the include-s above. Their
> ordering ought to be benign, as per make's doc stating "If an included
> makefile cannot be found in any of these directories it is not an
> immediately fatal error; processing of the makefile containing the include
> continues." While the description talks about this, I'm afraid I don't
> really understand "... the .cmd target is executed before including ...":
> What .cmd target are you talking about there?

Without the reordering the include of include/config/auto.conf will
always succeed on rebuilds, because the include is done before
executing the include/config/%.conf.cmd target that does the `rm`.

With the current order the include of include/config/%.conf.cmd that
triggers the re-build of auto.conf happens after having included the
file already.

Thanks, Roger.



 


Rackspace

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