From: "Roger Pau Monné" <roger.pau@citrix.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: Anthony Perard <anthony.perard@citrix.com>,
Andrew Cooper <andrew.cooper3@citrix.com>,
George Dunlap <george.dunlap@citrix.com>,
Julien Grall <julien@xen.org>,
Stefano Stabellini <sstabellini@kernel.org>, Wei Liu <wl@xen.org>,
xen-devel@lists.xenproject.org
Subject: Re: [PATCH] build/xen: fail to rebuild if Kconfig fails
Date: Thu, 15 Feb 2024 17:08:17 +0100 [thread overview]
Message-ID: <Zc428VMDoYnPw1zo@macbook> (raw)
In-Reply-To: <a48cbad6-701d-4077-9044-4205b932a7f3@suse.com>
On Thu, Feb 15, 2024 at 02:02:41PM +0100, Jan Beulich wrote:
> On 15.02.2024 12:04, Roger Pau Monné wrote:
> > On Thu, Feb 15, 2024 at 11:43:02AM +0100, Jan Beulich wrote:
> >> On 15.02.2024 11:28, Roger Pau Monné wrote:
> >>> 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.
> >>
> >> But the sub-make ought to return failure, which ought to then stop the
> >> build process?
> >
> > For some reason it doesn't, not at least with GNU Make 4.3.
> >
> > It stops the build if the '-' is dropped from the include of
> > include/config/auto.conf.cmd. But that will always fail as
> > include/config/auto.conf.cmd is never created.
> >
> > Maybe there's something weird with our makefile, I certainly don't
> > know that much, but as noted in the commit message,
> > include/config/auto.conf.cmd failing doesn't cause the build to
> > stop.
>
> How about the below as an alternative? I'm not overly happy with the
> double ifneq, but I also don't see a good other option.
Hm, yes, having the checks against specific paths is IMO not ideal.
> This way the missing auto.conf is detected slightly later, but this
> may well be good enough. Then again I might be overlooking yet
> something else that this breaks ...
>
> Jan
>
> --- a/xen/Makefile
> +++ b/xen/Makefile
> @@ -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)
> + $(Q)rm -f include/config/$*.conf
> $(Q)$(MAKE) $(build)=tools/kconfig syncconfig
>
> ifeq ($(CONFIG_DEBUG),y)
> --- a/xen/Rules.mk
> +++ b/xen/Rules.mk
> @@ -15,7 +15,11 @@ srcdir := $(srctree)/$(src)
> PHONY := __build
> __build:
>
> --include $(objtree)/include/config/auto.conf
> +ifneq ($(obj),tools)
> +ifneq ($(obj),tools/kconfig)
> +include $(objtree)/include/config/auto.conf
> +endif
> +endif
Trying to understand this, I assume it's to avoid an infinite
dependency loop that generating include/config/auto.conf requires some
tools that are build using xen/Rules.mk?
Thanks, Roger.
next prev parent reply other threads:[~2024-02-15 16:08 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-15 9:30 [PATCH] build/xen: fail to rebuild if Kconfig fails Roger Pau Monne
2024-02-15 9:49 ` Jan Beulich
2024-02-15 10:28 ` Roger Pau Monné
2024-02-15 10:43 ` Jan Beulich
2024-02-15 11:04 ` Roger Pau Monné
2024-02-15 12:11 ` Jan Beulich
2024-02-15 12:18 ` Jan Beulich
2024-02-15 13:02 ` Jan Beulich
2024-02-15 16:08 ` Roger Pau Monné [this message]
2024-02-15 16:22 ` Jan Beulich
2024-02-15 17:23 ` Roger Pau Monné
2024-02-16 10:04 ` Jan Beulich
2024-02-16 10:51 ` Roger Pau Monné
2024-02-19 8:36 ` Jan Beulich
2024-02-15 10:32 ` Anthony PERARD
2024-02-15 10:34 ` Jan Beulich
2024-02-15 11:46 ` Roger Pau Monné
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Zc428VMDoYnPw1zo@macbook \
--to=roger.pau@citrix.com \
--cc=andrew.cooper3@citrix.com \
--cc=anthony.perard@citrix.com \
--cc=george.dunlap@citrix.com \
--cc=jbeulich@suse.com \
--cc=julien@xen.org \
--cc=sstabellini@kernel.org \
--cc=wl@xen.org \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.