mbox series

[0/6] tools/include: adjustments to the population of xen/

Message ID 2a9f86aa-9104-8a45-cd21-72acd693f924@suse.com (mailing list archive)
Headers show
Series tools/include: adjustments to the population of xen/ | expand

Message

Jan Beulich Sept. 10, 2020, 12:09 p.m. UTC
While looking at what it would take to move around libelf/
in the hypervisor subtree, I've run into this rule, which I
think can do with a few improvements and some simplification.

1: adjust population of acpi/
2: fix (drop) dependencies of when to populate xen/
3: adjust population of public headers into xen/
4: properly install Arm public headers
5: adjust x86-specific population of xen/
6: drop remaining -f from ln invocations

Jan

Comments

Andrew Cooper Sept. 10, 2020, 1:51 p.m. UTC | #1
On 10/09/2020 13:09, Jan Beulich wrote:
> While looking at what it would take to move around libelf/
> in the hypervisor subtree, I've run into this rule, which I
> think can do with a few improvements and some simplification.

I realise this might be a controversial move, but can we *please*
address this by removing our use of symlinking, rather than kicking the
problem down the road.

For header files in particular, there is no need to symlink at all. 
Some properly formed -I runes for the compiler will do the right thing,
and avoid all intermediate regeneration issues.

~Andrew
Jürgen Groß Sept. 10, 2020, 2 p.m. UTC | #2
On 10.09.20 15:51, Andrew Cooper wrote:
> On 10/09/2020 13:09, Jan Beulich wrote:
>> While looking at what it would take to move around libelf/
>> in the hypervisor subtree, I've run into this rule, which I
>> think can do with a few improvements and some simplification.
> 
> I realise this might be a controversial move, but can we *please*
> address this by removing our use of symlinking, rather than kicking the
> problem down the road.
> 
> For header files in particular, there is no need to symlink at all.
> Some properly formed -I runes for the compiler will do the right thing,
> and avoid all intermediate regeneration issues.

This is true only if all headers in a directory are to be shared.
Otherwise you might end up with including a file with a name collision
which happens to be in a directory you now specify via -I

I'm not opposed to your proposal, but this should be accompanied by a
clean header directory structure (all or no headers in a directory meant
to be shared).


Juergen
Jan Beulich Sept. 10, 2020, 2:06 p.m. UTC | #3
On 10.09.2020 15:51, Andrew Cooper wrote:
> On 10/09/2020 13:09, Jan Beulich wrote:
>> While looking at what it would take to move around libelf/
>> in the hypervisor subtree, I've run into this rule, which I
>> think can do with a few improvements and some simplification.
> 
> I realise this might be a controversial move, but can we *please*
> address this by removing our use of symlinking, rather than kicking the
> problem down the road.
> 
> For header files in particular, there is no need to symlink at all. 
> Some properly formed -I runes for the compiler will do the right thing,
> and avoid all intermediate regeneration issues.

With some further work to separate headers in e.g. Xen's acpi/
into ones to be exposed and ones not to be exposed, this
would likely be an option. It's not clear to me though how you
mean to deal with libelf.h and elfstructs.h. Nor is it clear
how we'd deal with x86's cpuid-autogen.h, which needs to have
distinct instances in the two subtrees.

And of course the present full exposure of asm-x86 rather wants
limiting than setting in stone by using -I to point into the
hypervisor tree.

Installing of the headers into dist/ will also need re-working
then.

Taking things together - no, I don't think I'm up to doing this,
yet I think the series presented is an improvement.

Jan
Jan Beulich Sept. 28, 2020, 8:30 a.m. UTC | #4
On 10.09.2020 14:09, Jan Beulich wrote:
> While looking at what it would take to move around libelf/
> in the hypervisor subtree, I've run into this rule, which I
> think can do with a few improvements and some simplification.
> 
> 1: adjust population of acpi/
> 2: fix (drop) dependencies of when to populate xen/
> 3: adjust population of public headers into xen/
> 4: properly install Arm public headers
> 5: adjust x86-specific population of xen/
> 6: drop remaining -f from ln invocations

While Andrew did voice some objection to symlinking in general,
in reply I've clarified I'm not up to the work involved to doing
so in cleanly enough a way. I'd therefore like to ask that either
this series be considered for putting in, or that it be made
clear how else the issues addressed here are going to be dealt
with (and by whom and when).

Thanks, Jan
Jan Beulich Oct. 1, 2020, 4:03 p.m. UTC | #5
On 10.09.2020 14:09, Jan Beulich wrote:
> While looking at what it would take to move around libelf/
> in the hypervisor subtree, I've run into this rule, which I
> think can do with a few improvements and some simplification.
> 
> 1: adjust population of acpi/
> 2: fix (drop) dependencies of when to populate xen/
> 3: adjust population of public headers into xen/
> 4: properly install Arm public headers
> 5: adjust x86-specific population of xen/
> 6: drop remaining -f from ln invocations

May I ask for an ack or otherwise here?

Thanks, Jan
Bertrand Marquis Oct. 1, 2020, 4:29 p.m. UTC | #6
Hi Jan,

> On 1 Oct 2020, at 17:03, Jan Beulich <jbeulich@suse.com> wrote:
> 
> On 10.09.2020 14:09, Jan Beulich wrote:
>> While looking at what it would take to move around libelf/
>> in the hypervisor subtree, I've run into this rule, which I
>> think can do with a few improvements and some simplification.
>> 
>> 1: adjust population of acpi/
>> 2: fix (drop) dependencies of when to populate xen/
>> 3: adjust population of public headers into xen/
>> 4: properly install Arm public headers
>> 5: adjust x86-specific population of xen/
>> 6: drop remaining -f from ln invocations
> 
> May I ask for an ack or otherwise here?

This is going the right way but with this serie (on top of current staging
status), I have a compilation error in Yocto while compiling qemu:
 In file included from /media/extend-drive/bermar01/Development/xen-dev/yocto-build/build/dom0-fvp.prj/tmp/work/armv8a-poky-linux/qemu/5.1.0-r0/recipe-sysroot/usr/include/xenguest.h:25,
|                  from /media/extend-drive/bermar01/Development/xen-dev/yocto-build/build/dom0-fvp.prj/tmp/work/armv8a-poky-linux/qemu/5.1.0-r0/qemu-5.1.0/hw/i386/xen/xen_platform.c:41:
| /media/extend-drive/bermar01/Development/xen-dev/yocto-build/build/dom0-fvp.prj/tmp/work/armv8a-poky-linux/qemu/5.1.0-r0/recipe-sysroot/usr/include/xenctrl_dom.h:19:10: fatal error: xen/libelf/libelf.h: No such file or directory
|    19 | #include <xen/libelf/libelf.h>
|       |          ^~~~~~~~~~~~~~~~~~~~~
| compilation terminated.
| /media/extend-drive/bermar01/Development/xen-dev/yocto-build/build/dom0-fvp.prj/tmp/work/armv8a-poky-linux/qemu/5.1.0-r0/qemu-5.1.0/rules.mak:69: recipe for target 'hw/i386/xen/xen_platform.o’ failed

Xen is using xenctrl_dom.h which need the libelf.h header from xen.

Regards
Bertrand
Bertrand Marquis Oct. 1, 2020, 4:43 p.m. UTC | #7
Hi,

> On 1 Oct 2020, at 17:29, Bertrand Marquis <bertrand.marquis@arm.com> wrote:
> 
> Hi Jan,
> 
>> On 1 Oct 2020, at 17:03, Jan Beulich <jbeulich@suse.com> wrote:
>> 
>> On 10.09.2020 14:09, Jan Beulich wrote:
>>> While looking at what it would take to move around libelf/
>>> in the hypervisor subtree, I've run into this rule, which I
>>> think can do with a few improvements and some simplification.
>>> 
>>> 1: adjust population of acpi/
>>> 2: fix (drop) dependencies of when to populate xen/
>>> 3: adjust population of public headers into xen/
>>> 4: properly install Arm public headers
>>> 5: adjust x86-specific population of xen/
>>> 6: drop remaining -f from ln invocations
>> 
>> May I ask for an ack or otherwise here?
> 
> This is going the right way but with this serie (on top of current staging
> status), I have a compilation error in Yocto while compiling qemu:
> In file included from /media/extend-drive/bermar01/Development/xen-dev/yocto-build/build/dom0-fvp.prj/tmp/work/armv8a-poky-linux/qemu/5.1.0-r0/recipe-sysroot/usr/include/xenguest.h:25,
> |                  from /media/extend-drive/bermar01/Development/xen-dev/yocto-build/build/dom0-fvp.prj/tmp/work/armv8a-poky-linux/qemu/5.1.0-r0/qemu-5.1.0/hw/i386/xen/xen_platform.c:41:
> | /media/extend-drive/bermar01/Development/xen-dev/yocto-build/build/dom0-fvp.prj/tmp/work/armv8a-poky-linux/qemu/5.1.0-r0/recipe-sysroot/usr/include/xenctrl_dom.h:19:10: fatal error: xen/libelf/libelf.h: No such file or directory
> |    19 | #include <xen/libelf/libelf.h>
> |       |          ^~~~~~~~~~~~~~~~~~~~~
> | compilation terminated.
> | /media/extend-drive/bermar01/Development/xen-dev/yocto-build/build/dom0-fvp.prj/tmp/work/armv8a-poky-linux/qemu/5.1.0-r0/qemu-5.1.0/rules.mak:69: recipe for target 'hw/i386/xen/xen_platform.o’ failed
> 
> Xen is using xenctrl_dom.h which need the libelf.h header from xen.

Actually this is not coming from your serie and this is actually a problem already present on master.

Regards
Bertrand
Jürgen Groß Oct. 2, 2020, 4:27 a.m. UTC | #8
On 01.10.20 18:43, Bertrand Marquis wrote:
> Hi,
> 
>> On 1 Oct 2020, at 17:29, Bertrand Marquis <bertrand.marquis@arm.com> wrote:
>>
>> Hi Jan,
>>
>>> On 1 Oct 2020, at 17:03, Jan Beulich <jbeulich@suse.com> wrote:
>>>
>>> On 10.09.2020 14:09, Jan Beulich wrote:
>>>> While looking at what it would take to move around libelf/
>>>> in the hypervisor subtree, I've run into this rule, which I
>>>> think can do with a few improvements and some simplification.
>>>>
>>>> 1: adjust population of acpi/
>>>> 2: fix (drop) dependencies of when to populate xen/
>>>> 3: adjust population of public headers into xen/
>>>> 4: properly install Arm public headers
>>>> 5: adjust x86-specific population of xen/
>>>> 6: drop remaining -f from ln invocations
>>>
>>> May I ask for an ack or otherwise here?
>>
>> This is going the right way but with this serie (on top of current staging
>> status), I have a compilation error in Yocto while compiling qemu:
>> In file included from /media/extend-drive/bermar01/Development/xen-dev/yocto-build/build/dom0-fvp.prj/tmp/work/armv8a-poky-linux/qemu/5.1.0-r0/recipe-sysroot/usr/include/xenguest.h:25,
>> |                  from /media/extend-drive/bermar01/Development/xen-dev/yocto-build/build/dom0-fvp.prj/tmp/work/armv8a-poky-linux/qemu/5.1.0-r0/qemu-5.1.0/hw/i386/xen/xen_platform.c:41:
>> | /media/extend-drive/bermar01/Development/xen-dev/yocto-build/build/dom0-fvp.prj/tmp/work/armv8a-poky-linux/qemu/5.1.0-r0/recipe-sysroot/usr/include/xenctrl_dom.h:19:10: fatal error: xen/libelf/libelf.h: No such file or directory
>> |    19 | #include <xen/libelf/libelf.h>
>> |       |          ^~~~~~~~~~~~~~~~~~~~~
>> | compilation terminated.
>> | /media/extend-drive/bermar01/Development/xen-dev/yocto-build/build/dom0-fvp.prj/tmp/work/armv8a-poky-linux/qemu/5.1.0-r0/qemu-5.1.0/rules.mak:69: recipe for target 'hw/i386/xen/xen_platform.o’ failed
>>
>> Xen is using xenctrl_dom.h which need the libelf.h header from xen.
> 
> Actually this is not coming from your serie and this is actually a problem already present on master.

... and fixed on staging.


Juergen
Bertrand Marquis Oct. 2, 2020, 9:46 a.m. UTC | #9
> On 2 Oct 2020, at 05:27, Jürgen Groß <jgross@suse.com> wrote:
> 
> On 01.10.20 18:43, Bertrand Marquis wrote:
>> Hi,
>>> On 1 Oct 2020, at 17:29, Bertrand Marquis <bertrand.marquis@arm.com> wrote:
>>> 
>>> Hi Jan,
>>> 
>>>> On 1 Oct 2020, at 17:03, Jan Beulich <jbeulich@suse.com> wrote:
>>>> 
>>>> On 10.09.2020 14:09, Jan Beulich wrote:
>>>>> While looking at what it would take to move around libelf/
>>>>> in the hypervisor subtree, I've run into this rule, which I
>>>>> think can do with a few improvements and some simplification.
>>>>> 
>>>>> 1: adjust population of acpi/
>>>>> 2: fix (drop) dependencies of when to populate xen/
>>>>> 3: adjust population of public headers into xen/
>>>>> 4: properly install Arm public headers
>>>>> 5: adjust x86-specific population of xen/
>>>>> 6: drop remaining -f from ln invocations
>>>> 
>>>> May I ask for an ack or otherwise here?
>>> 
>>> This is going the right way but with this serie (on top of current staging
>>> status), I have a compilation error in Yocto while compiling qemu:
>>> In file included from /media/extend-drive/bermar01/Development/xen-dev/yocto-build/build/dom0-fvp.prj/tmp/work/armv8a-poky-linux/qemu/5.1.0-r0/recipe-sysroot/usr/include/xenguest.h:25,
>>> |                  from /media/extend-drive/bermar01/Development/xen-dev/yocto-build/build/dom0-fvp.prj/tmp/work/armv8a-poky-linux/qemu/5.1.0-r0/qemu-5.1.0/hw/i386/xen/xen_platform.c:41:
>>> | /media/extend-drive/bermar01/Development/xen-dev/yocto-build/build/dom0-fvp.prj/tmp/work/armv8a-poky-linux/qemu/5.1.0-r0/recipe-sysroot/usr/include/xenctrl_dom.h:19:10: fatal error: xen/libelf/libelf.h: No such file or directory
>>> |    19 | #include <xen/libelf/libelf.h>
>>> |       |          ^~~~~~~~~~~~~~~~~~~~~
>>> | compilation terminated.
>>> | /media/extend-drive/bermar01/Development/xen-dev/yocto-build/build/dom0-fvp.prj/tmp/work/armv8a-poky-linux/qemu/5.1.0-r0/qemu-5.1.0/rules.mak:69: recipe for target 'hw/i386/xen/xen_platform.o’ failed
>>> 
>>> Xen is using xenctrl_dom.h which need the libelf.h header from xen.
>> Actually this is not coming from your serie and this is actually a problem already present on master.
> 
> ... and fixed on staging.

I can confirm that with tonight staging status this issue is not present anymore.

Regards
Bertrand
Bertrand Marquis Oct. 2, 2020, 10:17 a.m. UTC | #10
> On 2 Oct 2020, at 10:45, Bertrand Marquis <bertrand.marquis@arm.com> wrote:
> 
> 
> 
>> On 2 Oct 2020, at 05:27, Jürgen Groß <jgross@suse.com> wrote:
>> 
>> On 01.10.20 18:43, Bertrand Marquis wrote:
>>> Hi,
>>>> On 1 Oct 2020, at 17:29, Bertrand Marquis <bertrand.marquis@arm.com> wrote:
>>>> 
>>>> Hi Jan,
>>>> 
>>>>> On 1 Oct 2020, at 17:03, Jan Beulich <jbeulich@suse.com> wrote:
>>>>> 
>>>>> On 10.09.2020 14:09, Jan Beulich wrote:
>>>>>> While looking at what it would take to move around libelf/
>>>>>> in the hypervisor subtree, I've run into this rule, which I
>>>>>> think can do with a few improvements and some simplification.
>>>>>> 
>>>>>> 1: adjust population of acpi/
>>>>>> 2: fix (drop) dependencies of when to populate xen/
>>>>>> 3: adjust population of public headers into xen/
>>>>>> 4: properly install Arm public headers
>>>>>> 5: adjust x86-specific population of xen/
>>>>>> 6: drop remaining -f from ln invocations
>>>>> 
>>>>> May I ask for an ack or otherwise here?
>>>> 
>>>> This is going the right way but with this serie (on top of current staging
>>>> status), I have a compilation error in Yocto while compiling qemu:
>>>> In file included from /media/extend-drive/bermar01/Development/xen-dev/yocto-build/build/dom0-fvp.prj/tmp/work/armv8a-poky-linux/qemu/5.1.0-r0/recipe-sysroot/usr/include/xenguest.h:25,
>>>> |                  from /media/extend-drive/bermar01/Development/xen-dev/yocto-build/build/dom0-fvp.prj/tmp/work/armv8a-poky-linux/qemu/5.1.0-r0/qemu-5.1.0/hw/i386/xen/xen_platform.c:41:
>>>> | /media/extend-drive/bermar01/Development/xen-dev/yocto-build/build/dom0-fvp.prj/tmp/work/armv8a-poky-linux/qemu/5.1.0-r0/recipe-sysroot/usr/include/xenctrl_dom.h:19:10: fatal error: xen/libelf/libelf.h: No such file or directory
>>>> |    19 | #include <xen/libelf/libelf.h>
>>>> |       |          ^~~~~~~~~~~~~~~~~~~~~
>>>> | compilation terminated.
>>>> | /media/extend-drive/bermar01/Development/xen-dev/yocto-build/build/dom0-fvp.prj/tmp/work/armv8a-poky-linux/qemu/5.1.0-r0/qemu-5.1.0/rules.mak:69: recipe for target 'hw/i386/xen/xen_platform.o’ failed
>>>> 
>>>> Xen is using xenctrl_dom.h which need the libelf.h header from xen.
>>> Actually this is not coming from your serie and this is actually a problem already present on master.
>> 
>> ... and fixed on staging.
> 
> I can confirm that with tonight staging status this issue is not present anymore.

… and the serie is building and working properly for arm (including compiling everything
on Yocto).

So:
Tested-by: Bertrand Marquis <bertrand.marquis@arm.com>

And i think it is a good improvement.

Cheers
Bertrand
Wei Liu Oct. 2, 2020, 11:52 a.m. UTC | #11
On Thu, Oct 01, 2020 at 06:03:09PM +0200, Jan Beulich wrote:
> On 10.09.2020 14:09, Jan Beulich wrote:
> > While looking at what it would take to move around libelf/
> > in the hypervisor subtree, I've run into this rule, which I
> > think can do with a few improvements and some simplification.
> > 
> > 1: adjust population of acpi/
> > 2: fix (drop) dependencies of when to populate xen/
> > 3: adjust population of public headers into xen/
> > 4: properly install Arm public headers
> > 5: adjust x86-specific population of xen/
> > 6: drop remaining -f from ln invocations
> 
> May I ask for an ack or otherwise here?

While I think I agree with Andrew that getting rid of symlink is better,
we're nowhere near that.

This series is an improvement over the status quo, so:

Acked-by: Wei Liu <wl@xen.org>

> 
> Thanks, Jan