Bug 104836

Summary: Missing library link breaks mesa on Debian/ia64
Product: Mesa Reporter: Jason Duerstock <jason.duerstock>
Component: OtherAssignee: mesa-dev
Status: RESOLVED WORKSFORME QA Contact: mesa-dev
Severity: normal    
Priority: medium CC: glaubitz, jason.duerstock, mattst88
Version: git   
Hardware: Other   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:

Description Jason Duerstock 2018-01-29 13:15:47 UTC
On Debian/ia64, mesa fails to build from source due to the following error:

make[5]: Entering directory '/<<PKGBUILDDIR>>/build/src/gallium/targets/va'
/bin/bash ../../../../libtool  --tag=CC   --mode=compile gcc -DPACKAGE_NAME=\"Mesa\" -DPACKAGE_TARNAME=\"mesa\" -DPACKAGE_VERSION=\"18.0.0-rc2\" -DPACKAGE_STRING=\"Mesa\ 18.0.0-rc2\" -DPACKAGE_BUGREPORT=\"https://bugs.freedesktop.org/enter_bug.cgi\?product=Mesa\" -DPACKAGE_URL=\"\" -DPACKAGE=\"mesa\" -DVERSION=\"18.0.0-rc2\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE___BUILTIN_BSWAP32=1 -DHAVE___BUILTIN_BSWAP64=1 -DHAVE___BUILTIN_CLZ=1 -DHAVE___BUILTIN_CLZLL=1 -DHAVE___BUILTIN_CTZ=1 -DHAVE___BUILTIN_EXPECT=1 -DHAVE___BUILTIN_FFS=1 -DHAVE___BUILTIN_FFSLL=1 -DHAVE___BUILTIN_POPCOUNT=1 -DHAVE___BUILTIN_POPCOUNTLL=1 -DHAVE___BUILTIN_UNREACHABLE=1 -DHAVE_FUNC_ATTRIBUTE_CONST=1 -DHAVE_FUNC_ATTRIBUTE_FLATTEN=1 -DHAVE_FUNC_ATTRIBUTE_FORMAT=1 -DHAVE_FUNC_ATTRIBUTE_MALLOC=1 -DHAVE_FUNC_ATTRIBUTE_PACKED=1 -DHAVE_FUNC_ATTRIBUTE_PURE=1 -DHAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL=1 -DHAVE_FUNC_ATTRIBUTE_UNUSED=1 -DHAVE_FUNC_ATTRIBUTE_VISIBILITY=1 -DHAVE_FUNC_ATTRIBUTE_WARN_UNUSED_RESULT=1 -DHAVE_FUNC_ATTRIBUTE_WEAK=1 -DHAVE_FUNC_ATTRIBUTE_ALIAS=1 -DHAVE_FUNC_ATTRIBUTE_NORETURN=1 -DMAJOR_IN_SYSMACROS=1 -DHAVE_DLADDR=1 -DHAVE_CLOCK_GETTIME=1 -DHAVE_PTHREAD_PRIO_INHERIT=1 -DHAVE_PTHREAD=1 -DHAVE_LIBUNWIND=1 -I. -I../../../../../src/gallium/targets/va  -DGALLIUM_NOUVEAU -DGALLIUM_R600  -Wdate-time -D_FORTIFY_SOURCE=2 -I../../../../../src -I../../../../../include -I../../../../../src/loader -I../../../../../src/gallium/include -I../../../../../src/gallium/auxiliary -I../../../../../src/gallium/drivers -I../../../../../src/gallium/winsys -I../../../../src/util/ -I../../../../src/gallium/drivers/ -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D_GNU_SOURCE -DUSE_GCC_ATOMIC_BUILTINS -DNDEBUG -DTEXTURE_FLOAT_ENABLED -DHAVE_SYS_SYSCTL_H -DHAVE_STRTOF -DHAVE_MKOSTEMP -DHAVE_TIMESPEC_GET -DHAVE_STRTOD_L -DHAVE_DL_ITERATE_PHDR -DHAVE_POSIX_MEMALIGN -DHAVE_ZLIB -DHAVE_LINUX_FUTEX_H -DHAVE_GALLIUM_EXTRA_HUD=1 -DHAVE_LIBSENSORS=1 -DUSE_LIBGLVND=1 -DHAVE_LIBDRM -DGLX_USE_DRM -DGLX_INDIRECT_RENDERING -DGLX_DIRECT_RENDERING -DGLX_USE_TLS -DHAVE_X11_PLATFORM -DHAVE_SURFACELESS_PLATFORM -DHAVE_WAYLAND_PLATFORM -DWL_HIDE_DEPRECATED -DHAVE_DRM_PLATFORM -DHAVE_DRI3 -DENABLE_SHADER_CACHE -DHAVE_MINCORE -DHAVE_ST_VDPAU -pthread -I/usr/include/libdrm -fvisibility=hidden -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -Wformat -Werror=format-security -Wall -Wall -Werror=implicit-function-declaration -Werror=missing-prototypes -Wmissing-prototypes -fno-math-errno -fno-trapping-math -std=c99  -c -o gallium_drv_video_la-target.lo `test -f 'target.c' || echo '../../../../../src/gallium/targets/va/'`target.c
libtool: compile:  gcc -DPACKAGE_NAME=\"Mesa\" -DPACKAGE_TARNAME=\"mesa\" -DPACKAGE_VERSION=\"18.0.0-rc2\" "-DPACKAGE_STRING=\"Mesa 18.0.0-rc2\"" "-DPACKAGE_BUGREPORT=\"https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa\"" -DPACKAGE_URL=\"\" -DPACKAGE=\"mesa\" -DVERSION=\"18.0.0-rc2\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE___BUILTIN_BSWAP32=1 -DHAVE___BUILTIN_BSWAP64=1 -DHAVE___BUILTIN_CLZ=1 -DHAVE___BUILTIN_CLZLL=1 -DHAVE___BUILTIN_CTZ=1 -DHAVE___BUILTIN_EXPECT=1 -DHAVE___BUILTIN_FFS=1 -DHAVE___BUILTIN_FFSLL=1 -DHAVE___BUILTIN_POPCOUNT=1 -DHAVE___BUILTIN_POPCOUNTLL=1 -DHAVE___BUILTIN_UNREACHABLE=1 -DHAVE_FUNC_ATTRIBUTE_CONST=1 -DHAVE_FUNC_ATTRIBUTE_FLATTEN=1 -DHAVE_FUNC_ATTRIBUTE_FORMAT=1 -DHAVE_FUNC_ATTRIBUTE_MALLOC=1 -DHAVE_FUNC_ATTRIBUTE_PACKED=1 -DHAVE_FUNC_ATTRIBUTE_PURE=1 -DHAVE_FUNC_ATTRIBUTE_RETURNS_NONNULL=1 -DHAVE_FUNC_ATTRIBUTE_UNUSED=1 -DHAVE_FUNC_ATTRIBUTE_VISIBILITY=1 -DHAVE_FUNC_ATTRIBUTE_WARN_UNUSED_RESULT=1 -DHAVE_FUNC_ATTRIBUTE_WEAK=1 -DHAVE_FUNC_ATTRIBUTE_ALIAS=1 -DHAVE_FUNC_ATTRIBUTE_NORETURN=1 -DMAJOR_IN_SYSMACROS=1 -DHAVE_DLADDR=1 -DHAVE_CLOCK_GETTIME=1 -DHAVE_PTHREAD_PRIO_INHERIT=1 -DHAVE_PTHREAD=1 -DHAVE_LIBUNWIND=1 -I. -I../../../../../src/gallium/targets/va -DGALLIUM_NOUVEAU -DGALLIUM_R600 -Wdate-time -D_FORTIFY_SOURCE=2 -I../../../../../src -I../../../../../include -I../../../../../src/loader -I../../../../../src/gallium/include -I../../../../../src/gallium/auxiliary -I../../../../../src/gallium/drivers -I../../../../../src/gallium/winsys -I../../../../src/util/ -I../../../../src/gallium/drivers/ -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D_GNU_SOURCE -DUSE_GCC_ATOMIC_BUILTINS -DNDEBUG -DTEXTURE_FLOAT_ENABLED -DHAVE_SYS_SYSCTL_H -DHAVE_STRTOF -DHAVE_MKOSTEMP -DHAVE_TIMESPEC_GET -DHAVE_STRTOD_L -DHAVE_DL_ITERATE_PHDR -DHAVE_POSIX_MEMALIGN -DHAVE_ZLIB -DHAVE_LINUX_FUTEX_H -DHAVE_GALLIUM_EXTRA_HUD=1 -DHAVE_LIBSENSORS=1 -DUSE_LIBGLVND=1 -DHAVE_LIBDRM -DGLX_USE_DRM -DGLX_INDIRECT_RENDERING -DGLX_DIRECT_RENDERING -DGLX_USE_TLS -DHAVE_X11_PLATFORM -DHAVE_SURFACELESS_PLATFORM -DHAVE_WAYLAND_PLATFORM -DWL_HIDE_DEPRECATED -DHAVE_DRM_PLATFORM -DHAVE_DRI3 -DENABLE_SHADER_CACHE -DHAVE_MINCORE -DHAVE_ST_VDPAU -pthread -I/usr/include/libdrm -fvisibility=hidden -g -O2 "-fdebug-prefix-map=/<<PKGBUILDDIR>>=." -Wformat -Werror=format-security -Wall -Wall -Werror=implicit-function-declaration -Werror=missing-prototypes -Wmissing-prototypes -fno-math-errno -fno-trapping-math -std=c99 -c ../../../../../src/gallium/targets/va/target.c  -fPIC -DPIC -o .libs/gallium_drv_video_la-target.o
/bin/bash ../../../../libtool  --tag=CXX   --mode=link g++  -g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -Wformat -Werror=format-security -Wall -Wall -fno-math-errno -fno-trapping-math  -shared -module -no-undefined -avoid-version -Wl,--gc-sections -Wl,--no-undefined -Wl,--version-script=../../../../../src/gallium/targets/va/va.sym   -o gallium_drv_video.la -rpath /usr/lib/ia64-linux-gnu/dri gallium_drv_video_la-target.lo ../../../../src/gallium/state_trackers/va/libvatracker.la ../../../../src/gallium/auxiliary/libgalliumvlwinsys.la ../../../../src/gallium/auxiliary/libgalliumvl.la ../../../../src/gallium/auxiliary/libgallium.la ../../../../src/util/libmesautil.la -ldrm -lm -lunwind -lsensors  -lpthread -pthread -ldl -ldrm -lX11-xcb -lX11 -lxcb -lxcb-dri2 -lX11-xcb -lX11 -lxcb -lxcb-dri3 -lxcb-xfixes -lxcb-present -lxcb-sync -lxshmfence ../../../../src/gallium/auxiliary/pipe-loader/libpipe_loader_static.la ../../../../src/gallium/winsys/sw/null/libws_null.la ../../../../src/gallium/winsys/sw/wrapper/libwsw.la ../../../../src/gallium/winsys/sw/dri/libswdri.la ../../../../src/gallium/winsys/sw/kms-dri/libswkmsdri.la -ldrm ../../../../src/gallium/winsys/nouveau/drm/libnouveaudrm.la ../../../../src/gallium/drivers/nouveau/libnouveau.la -ldrm -ldrm_nouveau -ldrm ../../../../src/gallium/drivers/r600/libr600.la -ldrm -ldrm_radeon -ldrm    ../../../../src/gallium/winsys/radeon/drm/libradeonwinsys.la    
libtool: link: g++  -fPIC -DPIC -shared -nostdlib /usr/lib/gcc/ia64-linux-gnu/7/../../../ia64-linux-gnu/crti.o /usr/lib/gcc/ia64-linux-gnu/7/crtbeginS.o  .libs/gallium_drv_video_la-target.o  -Wl,--whole-archive ../../../../src/gallium/state_trackers/va/.libs/libvatracker.a ../../../../src/gallium/auxiliary/.libs/libgalliumvlwinsys.a ../../../../src/gallium/auxiliary/.libs/libgalliumvl.a ../../../../src/gallium/auxiliary/.libs/libgallium.a ../../../../src/util/.libs/libmesautil.a ../../../../src/gallium/auxiliary/pipe-loader/.libs/libpipe_loader_static.a ../../../../src/gallium/winsys/sw/null/.libs/libws_null.a ../../../../src/gallium/winsys/sw/wrapper/.libs/libwsw.a ../../../../src/gallium/winsys/sw/dri/.libs/libswdri.a ../../../../src/gallium/winsys/sw/kms-dri/.libs/libswkmsdri.a ../../../../src/gallium/winsys/nouveau/drm/.libs/libnouveaudrm.a ../../../../src/gallium/drivers/nouveau/.libs/libnouveau.a ../../../../src/gallium/drivers/r600/.libs/libr600.a ../../../../src/gallium/winsys/radeon/drm/.libs/libradeonwinsys.a -Wl,--no-whole-archive  -lz -lsensors -lpthread -ldl -lxcb-dri2 -lX11-xcb -lX11 -lxcb -lxcb-dri3 -lxcb-xfixes -lxcb-present -lxcb-sync -lxshmfence -lexpat -ldrm_nouveau -ldrm_radeon -ldrm -L/usr/lib/gcc/ia64-linux-gnu/7 -L/usr/lib/gcc/ia64-linux-gnu/7/../../../ia64-linux-gnu -L/usr/lib/gcc/ia64-linux-gnu/7/../../.. -L/lib/ia64-linux-gnu -L/usr/lib/ia64-linux-gnu -lstdc++ -lm -lc -lgcc_s -lunwind /usr/lib/gcc/ia64-linux-gnu/7/crtendS.o /usr/lib/gcc/ia64-linux-gnu/7/../../../ia64-linux-gnu/crtn.o  -g -O2 -Wl,--gc-sections -Wl,--no-undefined -Wl,--version-script=../../../../../src/gallium/targets/va/va.sym -pthread   -pthread -Wl,-soname -Wl,gallium_drv_video.so -o .libs/gallium_drv_video.so
/usr/bin/ld: Warning: gc-sections option ignored
../../../../src/gallium/auxiliary/.libs/libgallium.a(tgsi_to_nir.o): In function `nir_build_imm':
./build/src/gallium/auxiliary/../../../../src/compiler/nir/nir_builder.h:196: undefined reference to `nir_load_const_instr_create'
../../../../src/gallium/auxiliary/.libs/libgallium.a(tgsi_to_nir.o): In function `nir_builder_instr_insert':
./build/src/gallium/auxiliary/../../../../src/compiler/nir/nir_builder.h:65: undefined reference to `nir_instr_insert'
../../../../src/gallium/auxiliary/.libs/libgallium.a(tgsi_to_nir.o): In function `nir_imov_alu':
./build/src/gallium/auxiliary/../../../../src/compiler/nir/nir_builder.h:405: undefined reference to `nir_alu_instr_create'
./build/src/gallium/auxiliary/../../../../src/compiler/nir/nir_builder.h:406: undefined reference to `nir_ssa_dest_init'
../../../../src/gallium/auxiliary/.libs/libgallium.a(tgsi_to_nir.o): In function `nir_builder_instr_insert':
./build/src/gallium/auxiliary/../../../../src/compiler/nir/nir_builder.h:65: undefined reference to `nir_instr_insert'
../../../../src/gallium/auxiliary/.libs/libgallium.a(tgsi_to_nir.o): In function `ttn_move_dest_masked':
./build/src/gallium/auxiliary/../../../../src/gallium/auxiliary/nir/tgsi_to_nir.c:853: undefined reference to `nir_alu_instr_create'
...
../../../../src/gallium/auxiliary/.libs/libgallium.a(tgsi_to_nir.o):(.sdata+0x28): more undefined references to `nir_op_infos' follow
collect2: error: ld returned 1 exit status
Makefile:814: recipe for target 'gallium_drv_video.la' failed
make[5]: *** [gallium_drv_video.la] Error 1
make[5]: Leaving directory '/<<PKGBUILDDIR>>/build/src/gallium/targets/va'
Makefile:611: recipe for target 'all-recursive' failed
make[4]: *** [all-recursive] Error 1
make[4]: Leaving directory '/<<PKGBUILDDIR>>/build/src/gallium'

The ./configure settings used are:

	cd build && ../configure --build=ia64-linux-gnu --prefix=/usr --includedir=\${prefix}/include --mandir=\${prefix}/share/man --infodir=\${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=\${prefix}/lib/ia64-linux-gnu --libexecdir=\${prefix}/lib/ia64-linux-gnu --disable-maintainer-mode --disable-dependency-tracking --enable-dri "--with-dri-drivers= nouveau r200 radeon swrast" --with-dri-driverdir=/usr/lib/ia64-linux-gnu/dri --with-dri-searchpath=/usr/lib/ia64-linux-gnu/dri:\\\$\${ORIGIN}/dri:/usr/lib/dri --with-vulkan-drivers= --enable-libglvnd --enable-osmesa --enable-glx-tls --enable-shared-glapi --enable-texture-float --disable-xvmc --disable-omx-bellagio --enable-driglx-direct --enable-gbm --enable-dri3 "--with-platforms=x11,surfaceless wayland drm" --disable-gallium-llvm --enable-vdpau --enable-va --enable-gallium-extra-hud --enable-lmsensors "--with-gallium-drivers= nouveau virgl r600 r300" --disable-gles1 --enable-gles2 "CFLAGS=-g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -Wformat -Werror=format-security -Wall" "CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2" "CXXFLAGS=-g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -Wformat -Werror=format-security -Wall" "FCFLAGS=-g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=." "FFLAGS=-g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=." "GCJFLAGS=-g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=." LDFLAGS= "OBJCFLAGS=-g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -Wformat -Werror=format-security" "OBJCXXFLAGS=-g -O2 -fdebug-prefix-map=/<<PKGBUILDDIR>>=. -Wformat -Werror=format-security"
configure: WARNING: unrecognized options: --disable-maintainer-mode

I used the following patch to fix this, but I am unsure of its overall correctness:

--- src/gallium/drivers/radeonsi/Automake.inc
+++ src/gallium/drivers/radeonsi/Automake.inc
@@ -1,3 +1,6 @@
+TARGET_COMPILER_LIB_DEPS = \
+       $(top_builddir)/src/compiler/nir/libnir.la
+
 if HAVE_GALLIUM_RADEONSI

 TARGET_DRIVERS += radeonsi
@@ -8,9 +11,6 @@
        $(LIBDRM_LIBS) \
        $(AMDGPU_LIBS)

-TARGET_COMPILER_LIB_DEPS = \
-       $(top_builddir)/src/compiler/nir/libnir.la
-
 TARGET_RADEON_WINSYS = \
        $(top_builddir)/src/gallium/winsys/radeon/drm/libradeonwinsys.la \
        $(top_builddir)/src/gallium/winsys/amdgpu/drm/libamdgpuwinsys.la
Comment 1 Jason Duerstock 2018-01-29 13:17:18 UTC
I forgot to add that the same failure will show up under amd64 if the ld --gc-sections is disabled.
Comment 2 Emil Velikov 2018-01-30 11:19:15 UTC
Seems like there are a few places in the builds that was missing dependencies. Perhaps because the garbage collectors works fine on most platforms ;-)

Will have some patches later on today.
Comment 3 Emil Velikov 2018-01-31 16:29:08 UTC
Having played with this at bit - it's a massive yak exercise.
It's not a new bug by any means, so I'll lower it, slightly, on my priority list.

Will CC you on the series when it's finished.
Comment 4 Jason Duerstock 2018-05-03 11:30:11 UTC
Any updates on this?  Is there a reason my proposed patch can't be accepted?
Comment 5 Matt Turner 2019-08-15 21:55:10 UTC
Automake is gone now. Does this still seem to be a problem with Meson?

I haven't seen anything like this on Gentoo, FWIW, but we might not allow the right driver builds on ia64 to cause the problem.
Comment 6 John Paul Adrian Glaubitz 2019-08-15 21:57:44 UTC
(In reply to Matt Turner from comment #5)
> Automake is gone now. Does this still seem to be a problem with Meson?
> 
> I haven't seen anything like this on Gentoo, FWIW, but we might not allow
> the right driver builds on ia64 to cause the problem.

Seems to build fine on Debian for version 19.1.4, see full build log at:

> https://buildd.debian.org/status/fetch.php?pkg=mesa&arch=ia64&ver=19.1.4-1&stamp=1565251671&raw=0
Comment 7 Matt Turner 2019-08-15 22:09:52 UTC
Okay, thank you. Feel free to reopen if necessary.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.