Saturday, July 31, 2021

Re: sparc64 bulk build report

On Sat, Jul 31 2021, Jonathan Gray <jsg@jsg.id.au> wrote:
> On Sat, Jul 31, 2021 at 01:03:08AM +0000, Charlene Wendling wrote:
>> On Fri, 30 Jul 2021 23:43:07 +0200
>> Matthias Kilian <kili@outback.escape.de> wrote:
>>
>> > On Fri, Jul 30, 2021 at 11:36:47PM +0200, Matthias Kilian wrote:
>> > > FWIW, I've poppler-21.07.0 in my tree, an update to 21.08.0 will
>> > > probably available in two days. I can disable poppler-qt{5,6} for
>> > > sparc64.
>> > >
>> > > > Note that the NOT_FOR_ARCHS-arm for qt5 looks suspect.
>> > >
>> > > Well, this entry is more than 5 years old. Should I remove it (there
>> > > seems to be a qt5 package available for arm)?
>> > >
>> > > > This builds on qt6, really ?
>> > >
>> > > I don't see a qt6 package for arm on the mirrors.
>> >
>> > Maybe something like this?
>>
>> Not yet, in my humble opinion.
>>
>> In fact, mips64 has the same issue, and probably other ld.bfd archs.
>> powerpc is not impacted but since bulks are so slow i have not hit
>> that yet (the bulk snapshot is from July 16).
>>
>> One major change occurred , Mesa has been updated by July 22:
>>
>> http://marc.info/?l=openbsd-cvs&m=162694920304776
>>
>> Qt5 and Qt6 have started to be broken after the July 23 bulk on
>> sparc64, July 27 for mips64.
>>
>> Taken from the mips64 bulk:
>>
>> > clang++ -Wl,-rpath,/usr/X11R6/lib -o egl main.o -L/usr/X11R6/lib -lEGL -L/usr/local/lib -L/pobj/qtbase-5.15.2/qtbase-everywhere-src-5.15.2/build-octeon/config.tests/egl
>> > /usr/X11R6/lib/libX11.so.17.1: warning: sprintf() is often misused, please use snprintf()
>> > /usr/X11R6/lib/libX11.so.17.1: warning: strcat() is almost always misused, please use strlcat()
>> > /usr/X11R6/lib/libX11.so.17.1: warning: strcpy() is almost always misused, please use strlcpy()
>> > /usr/X11R6/lib/libEGL.so.1.1: undefined reference to `_mesa_sha1_compute'
>> > /usr/X11R6/lib/libEGL.so.1.1: undefined reference to `_mesa_sha1_format'
>> > /usr/X11R6/lib/libEGL.so.1.1: undefined reference to `util_get_process_name'
>> > /usr/X11R6/lib/libEGL.so.1.1: undefined reference to `ralloc_asprintf_append'
>> > /usr/X11R6/lib/libEGL.so.1.1: undefined reference to `ralloc_free'
>> > /usr/X11R6/lib/libEGL.so.1.1: undefined reference to `ralloc_strdup'
>> > /usr/X11R6/lib/libEGL.so.1.1: undefined reference to `util_get_process_exec_path'
>> > clang++: error: linker command failed with exit code 1 (use -v to see invocation)
>>
>> Since that test fails, all the EGL stuff is not built.
>
> Does a libEGL built with the following help?
> Follows how the meson build is linked.
>
> Index: lib/mesa/mk/libEGL/Makefile
> ===================================================================
> RCS file: /cvs/xenocara/lib/mesa/mk/libEGL/Makefile,v
> retrieving revision 1.3
> diff -u -p -r1.3 Makefile
> --- lib/mesa/mk/libEGL/Makefile 22 Jul 2021 11:10:08 -0000 1.3
> +++ lib/mesa/mk/libEGL/Makefile 31 Jul 2021 02:04:01 -0000
> @@ -38,7 +38,8 @@ CPPFLAGS+= -I${MESA_SRC}/src/egl/main \
> -I${MESA_SRC}/src/gbm/backends/dri \
> -D_EGL_NATIVE_PLATFORM=_EGL_PLATFORM_X11
>
> -LDADD+= ${.CURDIR}/../libmesa_util/${__objdir}/libmesa_util.a \
> +LDADD+= -Wl,--as-needed -Wl,--allow-shlib-undefined -Wl,--start-group \
^^^^^^^^^^^^^^^^^
> + ${.CURDIR}/../libmesa_util/${__objdir}/libmesa_util.a \
> ${.CURDIR}/../libmesa_format/${__objdir}/libmesa_format.a \
> -lz -lm \
> -L${X11BASE}/lib -lX11-xcb -lX11 -lxcb -lxcb-xfixes
> @@ -55,7 +56,8 @@ LDADD+= ${.CURDIR}/../libloader_dri3_hel
> .endif
>
> LDADD+= -L${.CURDIR}/../libgbm/${__objdir} -lgbm \
> - -L${.CURDIR}/../libglapi/${__objdir} -lglapi
> + -L${.CURDIR}/../libglapi/${__objdir} -lglapi \
> + -Wl,--end-group
^^^^^^^^^^^^^^^
I think those additions make a lot of sense given the error. The other
changes are probably useful too, deviating from upstream is asking for
trouble.

I'm testing this on sparc64 but the build is indeed slow. You can find
attached the output of readelf -Wa libEGL.so, you can se that some
symbols are undefined on sparc64/ld.bfd (whereas they're local/hidden on
amd64/ld.lld).

Also attached, the output of ldd libEGL.so, since you're
introducing -Wl,--as-needed.

No comments:

Post a Comment