| 
    
 [Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: Build system mess in stubdom
 On 09/07/2024 4:34 pm, Anthony PERARD wrote:
> On Tue, Jul 09, 2024 at 02:49:57PM +0100, Andrew Cooper wrote:
>> Hello,
>>
>> I'm trying to investigate why stubdom/ is fatally failing now with a
>> rebuilt ArchLinux container (GCC 14).
>>
>> It is ultimately:
>>
>>> ../../../../../newlib-1.16.0/newlib/libc/reent/signalr.c:61:14: error:
>>> implicit declaration of function ‘kill’; did you mean ‘_kill’?
>>> [-Wimplicit-function-declaration]
>>>    61 |   if ((ret = _kill (pid, sig)) == -1 && errno != 0)
>>>       |              ^~~~~
>>> make[7]: *** [Makefile:483: lib_a-signalr.o] Error 1
>> which doesn't make sense, but is a consequence of the ifdefary in
>> newlib/libc/include/_syslist.h
>>
>> However, we've got problems ahead of that.
>>
>> First of all, with:
>>
>> [user@89aef714763e build]$ ./configure --disable-xen --disable-tools
>> --disable-docs
>> <snip>
>> Will build the following stub domains:
>>   xenstore-stubdom
>>   xenstorepvh-stubdom
>> configure: creating ./config.status
>> config.status: creating ../config/Stubdom.mk
>>
>> both a top level `make` and `make stubdom` end up building all of tools,
>> contrary to comments in the makefile.
> :-(, I never noticed that but yeah, that rules is what end up building
> the tools:
>
>     install-stubdom: mini-os-dir install-tools
>
> So unless you use one of the build targets, the top makefile end-up
> wanting to also install (or dist) the tools. I don't think we can change
> that:
>     dc497635d93f ("build system: make install-stubdom depend on install-tools 
> again")
qemu-trad stubdom has been off by default for a bit.  We can probably
delete it entirely before too much longer.
>
>> `make build-stubdom` does (AFAICT) only build stubdom.
> How do you make that works with `./configure --disable-tools` ? I've got
> this:
>     $ make build-stubdom
>     <snip>
>     make -C tools/include build
>     ....tools/include/../../tools/Rules.mk:212: *** You have to run 
> ./configure before building or installing the tools.  Stop.
>     make: *** [Makefile:44: build-tools-public-headers] Error 2
Works for me^W in my random archlinux container...
>
>> However, building just the xenstore stubdoms recursively builds all of
>> tools/libs/ even though only some are needed.  This includes libxl which
>> then recurses further to get tools/libacpi, and libxenguest which
>> recurses further to get libelf from Xen.
> libxl? how? Did you run `make -C stubdom xenstore-stubdom`? Or maybe you
> used ./configure to select only "xenstore-stubdom"? In that later case
> only the build* targets will only build stubdom, the default target as
> well as dist* and install* targets will want to "install-tools" as seen
> above.
again, worked for me like that...
>
>> What I can't figure out is why xenstore ends up pulling in all of newlib.
> I think it's because of these in stubdom/Makefile:
>     xenstore: $(CROSS_ROOT) xenstore-minios-config.mk
>     $(CROSS_ROOT): cross-newlib cross-zlib cross-libpci
:(  More junk that we shouldn't be (re)building just for xenstore.
>> Semi-irrespective, there's no way we can keep on bodging newlib to
>> compile with newer compilers.  There's a whole bunch of other warnings
>> (strict-prototypes, dangling-else, maybe-uninitialized, unused-function,
>> pointer-sign, unused-variable) primed ready to cause breakage in any
>> environment which makes these error by default.
>>
>> I'm going to be making ArchLinux non-blocking because it is a rolling
>> distro, but we also can't do nothing here.
> I guess we could try to update newlib, 1.16 is from 2007 apparently, and
> there's now 4.4 from last year.
Easier said than done.  I've got as far as:
diff --git a/stubdom/configure.ac b/stubdom/configure.ac
index fc736c0387fd..944266bd6dce 100644
--- a/stubdom/configure.ac
+++ b/stubdom/configure.ac
@@ -56,7 +56,7 @@ AX_DEPENDS_PATH_PROG([vtpm], [CMAKE], [cmake])
 # Stubdom libraries version and url setup
 AX_STUBDOM_LIB([ZLIB], [zlib], [1.2.3])
 AX_STUBDOM_LIB([LIBPCI], [libpci], [2.2.9],
[https://mirrors.edge.kernel.org/pub/software/utils/pciutils])
-AX_STUBDOM_LIB([NEWLIB], [newlib], [1.16.0],
[https://sourceware.org/ftp/newlib])
+AX_STUBDOM_LIB([NEWLIB], [newlib], [4.4.0.20231231],
[https://sourceware.org/ftp/newlib])
 AX_STUBDOM_LIB([LWIP], [lwip], [1.3.0],
[https://download.savannah.gnu.org/releases/lwip])
 AX_STUBDOM_LIB([GRUB], [grub], [0.97], [https://alpha.gnu.org/gnu/grub])
 AX_STUBDOM_LIB([GMP], [libgmp], [4.3.2],
[https://gmplib.org/download/gmp/archive])
and deployed onto xenbits/extfiles, but it's stubbornly refusing to compile.
I need to finish some of the other container work more urgently for 4.19.
~Andrew
 
  | 
  
![]()  | 
            
         Lists.xenproject.org is hosted with RackSpace, monitoring our  |