diff mbox series

xen/build: Fix MAP rule when called in isolation

Message ID 20220421160039.24564-1-andrew.cooper3@citrix.com (mailing list archive)
State New, archived
Headers show
Series xen/build: Fix MAP rule when called in isolation | expand

Commit Message

Andrew Cooper April 21, 2022, 4 p.m. UTC
Now that `make MAP` might rebuild $(TARGET), it needs removing from
no-dot-config-targets.

Otherwise the build eventually fails with:

    CPP     arch/x86/asm-macros.i
  arch/x86/asm-macros.c:1:10: fatal error: asm/asm-defns.h: No such file or
  directory
      1 | #include <asm/asm-defns.h>
        |          ^~~~~~~~~~~~~~~~~

Fixes: e1e72198213b ("xen/build: Fix dependency for the MAP rule")
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Anthony PERARD <anthony.perard@citrix.com>

Backporting notes.  The original, e1e72198213b, wants backporting as far as we
can go.  This patch is only relevant from 6c122d3984a5e onwards, so 4.14,
which is why my main developing/testing on 4.13 didn't spot it.

no-dot-config-targets seems like a very easy way to create breakage...
---
 xen/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Jan Beulich April 21, 2022, 4:09 p.m. UTC | #1
On 21.04.2022 18:00, Andrew Cooper wrote:
> Now that `make MAP` might rebuild $(TARGET), it needs removing from
> no-dot-config-targets.

Which raises the question whether the MAP target originally was
meant to be used only on an already built tree, which would
explain the missing dependency that you added in the earlier
commit.

> Otherwise the build eventually fails with:
> 
>     CPP     arch/x86/asm-macros.i
>   arch/x86/asm-macros.c:1:10: fatal error: asm/asm-defns.h: No such file or
>   directory
>       1 | #include <asm/asm-defns.h>
>         |          ^~~~~~~~~~~~~~~~~

Why would this be? asm/ isn't a symlink anymore, so should always
exist. I would have expected an error about .config or
autoconf.h not existing, ...

> Fixes: e1e72198213b ("xen/build: Fix dependency for the MAP rule")
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Jan Beulich <JBeulich@suse.com>
> CC: Anthony PERARD <anthony.perard@citrix.com>
> 
> Backporting notes.  The original, e1e72198213b, wants backporting as far as we
> can go.  This patch is only relevant from 6c122d3984a5e onwards, so 4.14,
> which is why my main developing/testing on 4.13 didn't spot it.

... and the commit you reference seems to support that expectation.

Jan
Andrew Cooper April 21, 2022, 4:42 p.m. UTC | #2
On 21/04/2022 17:09, Jan Beulich wrote:
> On 21.04.2022 18:00, Andrew Cooper wrote:
>> Now that `make MAP` might rebuild $(TARGET), it needs removing from
>> no-dot-config-targets.
> Which raises the question whether the MAP target originally was
> meant to be used only on an already built tree, which would
> explain the missing dependency that you added in the earlier
> commit.

I can't comment on the previous expectation, but the fact you couldn't
previously do `make -j4 build MAP` was simply broken.

There are also several other breakages in Xen's build system which it
turns out is forcing all downstreams to bodge around in ways that range
from gross to dangerous, and which need fixing for everyone's benefit. 
(Emails will be appearing for those shortly)

The current debug target (just runs objdump -d) is similar to MAP,
except I don't find it a credible target to use and was planning to
delete it.

>> Otherwise the build eventually fails with:
>>
>>     CPP     arch/x86/asm-macros.i
>>   arch/x86/asm-macros.c:1:10: fatal error: asm/asm-defns.h: No such file or
>>   directory
>>       1 | #include <asm/asm-defns.h>
>>         |          ^~~~~~~~~~~~~~~~~
> Why would this be? asm/ isn't a symlink anymore, so should always
> exist. I would have expected an error about .config or
> autoconf.h not existing, ...
>
>> Fixes: e1e72198213b ("xen/build: Fix dependency for the MAP rule")
>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>> ---
>> CC: Jan Beulich <JBeulich@suse.com>
>> CC: Anthony PERARD <anthony.perard@citrix.com>
>>
>> Backporting notes.  The original, e1e72198213b, wants backporting as far as we
>> can go.  This patch is only relevant from 6c122d3984a5e onwards, so 4.14,
>> which is why my main developing/testing on 4.13 didn't spot it.
> ... and the commit you reference seems to support that expectation.

I haven't spent very long investigating exactly how it breaks.  I don't
think it's important, because the purpose of no-dot-config-targets is to
skip large swathes of the logic.

~Andrew
Jan Beulich April 22, 2022, 7:04 a.m. UTC | #3
On 21.04.2022 18:42, Andrew Cooper wrote:
> On 21/04/2022 17:09, Jan Beulich wrote:
>> On 21.04.2022 18:00, Andrew Cooper wrote:
>>> Now that `make MAP` might rebuild $(TARGET), it needs removing from
>>> no-dot-config-targets.
>> Which raises the question whether the MAP target originally was
>> meant to be used only on an already built tree, which would
>> explain the missing dependency that you added in the earlier
>> commit.
> 
> I can't comment on the previous expectation, but the fact you couldn't
> previously do `make -j4 build MAP` was simply broken.
> 
> There are also several other breakages in Xen's build system which it
> turns out is forcing all downstreams to bodge around in ways that range
> from gross to dangerous, and which need fixing for everyone's benefit. 
> (Emails will be appearing for those shortly)

Right - at least tests and cloc look to have a similar issue.

> The current debug target (just runs objdump -d) is similar to MAP,
> except I don't find it a credible target to use and was planning to
> delete it.

Well, yes. I wasn't even aware of this mis-named goal.

>>> Otherwise the build eventually fails with:
>>>
>>>     CPP     arch/x86/asm-macros.i
>>>   arch/x86/asm-macros.c:1:10: fatal error: asm/asm-defns.h: No such file or
>>>   directory
>>>       1 | #include <asm/asm-defns.h>
>>>         |          ^~~~~~~~~~~~~~~~~
>> Why would this be? asm/ isn't a symlink anymore, so should always
>> exist. I would have expected an error about .config or
>> autoconf.h not existing, ...
>>
>>> Fixes: e1e72198213b ("xen/build: Fix dependency for the MAP rule")
>>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
>>> ---
>>> CC: Jan Beulich <JBeulich@suse.com>
>>> CC: Anthony PERARD <anthony.perard@citrix.com>
>>>
>>> Backporting notes.  The original, e1e72198213b, wants backporting as far as we
>>> can go.  This patch is only relevant from 6c122d3984a5e onwards, so 4.14,
>>> which is why my main developing/testing on 4.13 didn't spot it.
>> ... and the commit you reference seems to support that expectation.
> 
> I haven't spent very long investigating exactly how it breaks.  I don't
> think it's important, because the purpose of no-dot-config-targets is to
> skip large swathes of the logic.

I find it generally helpful to understand breakage when it looks odd how
exactly things break, but anyway
Acked-by: Jan Beulich <jbeulich@suse.com>

Jan
diff mbox series

Patch

diff --git a/xen/Makefile b/xen/Makefile
index 3a4e3bdd0f95..ec34524ed21d 100644
--- a/xen/Makefile
+++ b/xen/Makefile
@@ -215,7 +215,7 @@  export XEN_ROOT := $(abs_srctree)/..
 clean-targets := %clean
 no-dot-config-targets := $(clean-targets) \
                          uninstall debug cloc \
-                         cscope TAGS tags MAP gtags \
+                         cscope TAGS tags gtags \
                          xenversion
 
 config-build    := n