Bug 100259

Summary: [EGL] [GBM] undefined reference to `gbm_bo_create_with_modifiers'
Product: Mesa Reporter: LoneVVolf <lonewolf>
Component: EGLAssignee: mesa-dev
Status: RESOLVED NOTABUG QA Contact: mesa-dev
Severity: normal    
Priority: medium CC: EoD, humberto.i.perez.rodriguez
Version: git   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments: build recipe
log of build() phase
make install phase

Description LoneVVolf 2017-03-17 16:06:24 UTC
Created attachment 130290 [details]
build recipe

Error during make install fase when building a multilib 32-bit mesa to be used on 64-bit linux .


In function `get_back_bo':
platform_drm.c:(.text+0x1dd): undefined reference to `gbm_bo_create_with_modifiers'
Comment 1 LoneVVolf 2017-03-17 16:09:30 UTC
Created attachment 130291 [details]
log of build() phase
Comment 2 LoneVVolf 2017-03-17 16:10:12 UTC
Created attachment 130292 [details]
make install phase
Comment 3 LoneVVolf 2017-03-17 16:11:22 UTC
libtool: install: (cd /home/panoramix/Documents/WIP/pkgbuilds/lib32-mesa-git/src/mesa/src/egl; /bin/sh "/home/panoramix/Documents/WIP/pkgbuilds/lib32-mesa-git/src/mesa/libtool"  --silent --tag CC --mode=relink gcc -m32 -I../../include -I../../src/egl/main -I../../src/gbm/main -I../../src -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D_GNU_SOURCE -DUSE_SSE41 -DUSE_GCC_ATOMIC_BUILTINS -DNDEBUG -DTEXTURE_FLOAT_ENABLED -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM -DHAVE_XLOCALE_H -DHAVE_SYS_SYSCTL_H -DHAVE_STRTOF -DHAVE_MKOSTEMP -DHAVE_DLOPEN -DHAVE_DL_ITERATE_PHDR -DHAVE_POSIX_MEMALIGN -DHAVE_LIBDRM -DGLX_USE_DRM -DGLX_INDIRECT_RENDERING -DGLX_DIRECT_RENDERING -DGLX_USE_TLS -DHAVE_DRI3 -DENABLE_SHADER_CACHE -DHAVE_MINCORE -DHAVE_ST_VDPAU -DHAVE_LLVM=0x0500 -DMESA_LLVM_VERSION_PATCH=0 -fvisibility=hidden -I/usr/include/libdrm -D_EGL_NATIVE_PLATFORM=_EGL_PLATFORM_X11 -DHAVE_X11_PLATFORM -DHAVE_WAYLAND_PLATFORM -DHAVE_DRM_PLATFORM -I../../src/loader -I../../src/egl/drivers/dri2 -I../../src/gbm/backends/dri -I../../src/egl/wayland/wayland-egl -I../../src/egl/wayland/wayland-drm -I../../src/egl/wayland/wayland-drm -DDEFAULT_DRIVER_DIR=\"/usr/lib32/xorg/modules/dri\" -D_EGL_BUILT_IN_DRIVER_DRI2 -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -Wall -std=c99 -Werror=implicit-function-declaration -Werror=missing-prototypes -fno-math-errno -fno-trapping-math -no-undefined -version-number 1:0 -Wl,-Bsymbolic -Wl,--gc-sections -Wl,--no-undefined -Wl,-O1,--sort-common,--as-needed,-z,relro -o libEGL.la -rpath /usr/lib32 main/eglapi.lo main/eglarray.lo main/eglconfig.lo main/eglcontext.lo main/eglcurrent.lo main/egldisplay.lo main/egldriver.lo main/eglfallbacks.lo main/eglglobals.lo main/eglimage.lo main/egllog.lo main/eglsurface.lo main/eglsync.lo drivers/dri2/egl_dri2.lo drivers/dri2/platform_x11.lo drivers/dri2/platform_wayland.lo drivers/dri2/platform_drm.lo drivers/dri2/platform_x11_dri3.lo -ldl -lpthread -L/usr/lib32 -lX11-xcb -lX11 -lxcb -lxcb-dri2 -lxcb-xfixes ../../src/loader/libloader_dri3_helper.la -L/usr/lib32 -lwayland-client -lwayland-server -L/usr/lib32 -ldrm ../../src/egl/wayland/wayland-drm/libwayland-drm.la ../../src/gbm/libgbm.la ../../src/loader/libloader.la -ldl -L/usr/lib32 -ldrm -inst-prefix-dir /home/panoramix/Documents/WIP/pkgbuilds/lib32-mesa-git/pkg/lib32-mesa-git)
drivers/dri2/.libs/platform_drm.o: In function `get_back_bo':
platform_drm.c:(.text+0x1dd): undefined reference to `gbm_bo_create_with_modifiers'
Comment 4 bellamorte42 2017-03-17 16:18:02 UTC
Came here to file the exact same bug.
Comment 5 Emil Velikov 2017-03-17 17:23:07 UTC
I'm afraid that it's an issue in libtool, where it picks the system library during make install.

Some workarounds include:
 - [temporary] move the system libgbm
 - build in clean environment (chroot?)
 - use slibtool.
Comment 6 Christoph Haag 2017-03-17 20:19:42 UTC
My workaround was to revert https://cgit.freedesktop.org/mesa/mesa/commit/?id=191ff914a2c77d7d982048ef21422a209e1e7e06, then make install works.

Subsequent builds of git master will then link correctly to the installed library.
Comment 7 Emil Velikov 2017-03-20 16:41:39 UTC
(In reply to Christoph Haag from comment #6)
> My workaround was to revert
> https://cgit.freedesktop.org/mesa/mesa/commit/
> ?id=191ff914a2c77d7d982048ef21422a209e1e7e06, then make install works.
> 
> Subsequent builds of git master will then link correctly to the installed
> library.
Thanks for pointing this workaround - seems like my "split patches" suggestion is more useful than expected ;-)
Comment 8 Eero Tamminen 2017-03-27 13:37:30 UTC
There's same failure also with normal builds at install phase if system libdrm is too old, even if one has new enough libdrm in /usr/local/lib and PKG_CONFIG picks it up in Mesa configure phase.  I.e. bug isn't specific to multilib builds.

This should be fixed by following commit:
https://cgit.freedesktop.org/mesa/mesa/commit/?id=90633079eccdc7b883b712695c057553d484405f
Comment 9 orbea 2017-03-29 19:34:52 UTC
I am still experiencing this issue with the current mesa git master in both my multilib 64 bit system and my clean 32-bit chroot, both with Slackware installed. I also have the latest libdrm git master installed. A friend who runs gentoo also experienced this issue.

drivers/dri2/.libs/platform_drm.o: In function `get_back_bo':
platform_drm.c:(.text+0x1d4): undefined reference to `gbm_bo_create_with_modifiers'
collect2: error: ld returned 1 exit status
libtool:   error: error: relink 'libEGL.la' with the above command before installing it
make[4]: *** [Makefile:910: install-libLTLIBRARIES] Error 1
make[4]: Leaving directory '/tmp/SBo/mesa/src/egl'
make[3]: *** [Makefile:1385: install-am] Error 2
make[3]: Leaving directory '/tmp/SBo/mesa/src/egl'
make[2]: *** [Makefile:852: install-recursive] Error 1
make[2]: Leaving directory '/tmp/SBo/mesa/src'
make[1]: *** [Makefile:1009: install] Error 2
make[1]: Leaving directory '/tmp/SBo/mesa/src'
make: *** [Makefile:643: install-recursive] Error 1
Comment 10 orbea 2017-03-29 20:46:13 UTC
It turns out in my case this is an issue with using pkgconf (Which worked previously) instead of pkg-config. It builds fine with pkg-config.

I'd prefer to keep this open until the pkgconf devs have a chance to take a look, but it can be closed again if someone finds that preferable.

As for my friend, apparently he was trying to use the perl pkg-config from openbsd in gentoo (Don't ask...).
Comment 11 orbea 2017-03-29 21:40:22 UTC
It turns out this was all my fault and it was a bug in my pkgconf.SlackBuild.

I was lacking /usr/lib64 as a system libdir...

Sorry for the noise.
Comment 12 Emil Velikov 2017-03-30 14:44:05 UTC
ovariegata@yahoo.com

If you're running into issue as described - `make' succeeds, while `make install' fails then it's the libtool bug/feature mentioned. Any of the four workarounds proposed should you up and running.

Alternatively it's a different problem and as such it should be a separate bug report.
Comment 13 orbea 2017-04-02 00:43:04 UTC
Yes, it was 'make install' that failed and seems to have been a related issue as above. I was instructed to reopen this issue report in #dri-devel after asking about the build failure, but shortly after with the help of the pkgconf devs I found out it was a bug in my own pkgconf build script that managed to not cause any problems for 5 months...

I resolved it for myself here.
https://notabug.org/orbea/Slackbuilds/commit/56db318ceb1c093961cea2ba2bdd7dba17177367

As for why it why I ran into this now I'm not really sure, but I guess its not important anymore. :)
Comment 14 Emil Velikov 2017-04-03 16:39:51 UTC
Ouch that is some nasty bug in Slackware packaging.

Note you want /usr/local/ and /usr/ in the same order across --with-pkg-config-dir and --with-system-libdir.
Comment 15 EoD 2017-05-01 21:39:01 UTC
I also ended up here, because I am experiencing the very same bug with the current master in git. I also bisected the issue and found out that reverting 191ff914a2c77d7d982048ef21422a209e1e7e06 does indeed fix the issue.

I have a multilib system with i386, amd64 and x32. I also have libdrm 2.4.79.

For more details, see: https://bugs.gentoo.org/show_bug.cgi?id=616398


Is this commit going to be reverted before the release of 17.1?
Comment 16 Laurent carlier 2017-05-13 08:41:19 UTC
Still broken here with ArchLinux in a multilib chroot:

Making install in egl
make[3]: Entering directory '/build/lib32-mesa/src/mesa-17.1.0/src/egl'
make  install-am
make[4]: Entering directory '/build/lib32-mesa/src/mesa-17.1.0/src/egl'
make[5]: Entering directory '/build/lib32-mesa/src/mesa-17.1.0/src/egl'
 /usr/bin/mkdir -p '/build/lib32-mesa/src/fakeinstall/usr/include/EGL'
 /usr/bin/mkdir -p '/build/lib32-mesa/src/fakeinstall/usr/include/KHR'
 /usr/bin/mkdir -p '/build/lib32-mesa/src/fakeinstall/usr/lib32/pkgconfig'
 /usr/bin/mkdir -p '/build/lib32-mesa/src/fakeinstall/usr/lib32'
 /bin/sh ../../libtool   --mode=install /usr/bin/install -c   libEGL_mesa.la '/build/lib32-mesa/src/fakeinstall/usr/lib32'
 /usr/bin/mkdir -p '/build/lib32-mesa/src/fakeinstall/usr/share/glvnd/egl_vendor.d'
 /usr/bin/install -c -m 644 ../../include/KHR/khrplatform.h '/build/lib32-mesa/src/fakeinstall/usr/include/KHR'
 /usr/bin/install -c -m 644 ../../include/EGL/eglext.h ../../include/EGL/egl.h ../../include/EGL/eglextchromium.h ../../include/EGL/eglmesaext.h ../../include/EGL/eglplatform.h '/build/lib32-mesa/src/fakeinstall/usr/include/EGL'
 /usr/bin/install -c -m 644 main/50_mesa.json '/build/lib32-mesa/src/fakeinstall/usr/share/glvnd/egl_vendor.d'
 /usr/bin/install -c -m 644 main/egl.pc '/build/lib32-mesa/src/fakeinstall/usr/lib32/pkgconfig'
libtool: warning: relinking 'libEGL_mesa.la'
libtool: install: (cd /build/lib32-mesa/src/mesa-17.1.0/src/egl; /bin/sh "/build/lib32-mesa/src/mesa-17.1.0/libtool"  --silent --tag CC --mode=relink gcc -m32 -I../../include -I../../src/egl/main -I../../src/gbm/main -I../../src -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D_GNU_SOURCE -DUSE_SSE41 -DUSE_GCC_ATOMIC_BUILTINS -DNDEBUG -DTEXTURE_FLOAT_ENABLED -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM -DHAVE_XLOCALE_H -DHAVE_SYS_SYSCTL_H -DHAVE_STRTOF -DHAVE_MKOSTEMP -DHAVE_DLOPEN -DHAVE_DL_ITERATE_PHDR -DHAVE_POSIX_MEMALIGN -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_DRI3 -DENABLE_SHADER_CACHE -DHAVE_MINCORE -DHAVE_ST_VDPAU -DHAVE_LLVM=0x0400 -DMESA_LLVM_VERSION_PATCH=0 -fvisibility=hidden -I/usr/include/libdrm -D_EGL_NATIVE_PLATFORM=_EGL_PLATFORM_X11 -DHAVE_X11_PLATFORM -DHAVE_WAYLAND_PLATFORM -DHAVE_DRM_PLATFORM -I../../src/loader -I../../src/egl/drivers/dri2 -I../../src/gbm/backends/dri -I../../src/egl/wayland/wayland-egl -I../../src/egl/wayland/wayland-drm -I../../src/egl/wayland/wayland-drm -DDEFAULT_DRIVER_DIR=\"/usr/lib32/xorg/modules/dri\" -D_EGL_BUILT_IN_DRIVER_DRI2 -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -Wall -std=c99 -Werror=implicit-function-declaration -Werror=missing-prototypes -fno-math-errno -fno-trapping-math -no-undefined -version-number 0 -Wl,-Bsymbolic -Wl,--gc-sections -Wl,--no-undefined -Wl,-O1,--sort-common,--as-needed,-z,relro -o libEGL_mesa.la -rpath /usr/lib32 main/eglglvnd.lo main/egldispatchstubs.lo g_egldispatchstubs.lo libEGL_common.la -inst-prefix-dir /build/lib32-mesa/src/fakeinstall)
./.libs/libEGL_common.a(platform_drm.o): In function `get_back_bo':
platform_drm.c:(.text+0x1dd): undefined reference to `gbm_bo_create_with_modifiers'
collect2: error: ld returned 1 exit status
libtool:   error: error: relink 'libEGL_mesa.la' with the above command before installing it
make[5]: *** [Makefile:969: install-libLTLIBRARIES] Error 1
make[5]: Leaving directory '/build/lib32-mesa/src/mesa-17.1.0/src/egl'
make[4]: *** [Makefile:1490: install-am] Error 2
make[4]: Leaving directory '/build/lib32-mesa/src/mesa-17.1.0/src/egl'
make[3]: *** [Makefile:1484: install] Error 2
make[3]: Leaving directory '/build/lib32-mesa/src/mesa-17.1.0/src/egl'
make[2]: *** [Makefile:851: install-recursive] Error 1
make[2]: Leaving directory '/build/lib32-mesa/src/mesa-17.1.0/src'
make[1]: *** [Makefile:1008: install] Error 2
make[1]: Leaving directory '/build/lib32-mesa/src/mesa-17.1.0/src'
make: *** [Makefile:642: install-recursive] Error 1
Comment 17 Emil Velikov 2017-05-15 11:02:54 UTC
EoD, Laurent see comment 5 and comment 6. AFAICT it's not and issue on our end and there's sufficient workarounds to cater everyone's taste.
Comment 18 Laurent carlier 2017-05-16 14:57:47 UTC
@Emil , with slibtool :) ->

  CCLD     tools/aubinator
  CCLD     tools/aubinator_error_decode
  CCLD     isl/libisl.la
ar: `u' modifier ignored since `D' is the default (see `U')
  CCLD     blorp/libblorp.la
ar: `u' modifier ignored since `D' is the default (see `U')
  CXXLD    vulkan/libvulkan_intel.la
ar: `u' modifier ignored since `D' is the default (see `U')
vulkan/.libs/libvulkan_common.a(vulkan_libvulkan_common_la-anv_device.o): In function `anv_EnumeratePhysicalDevices':
anv_device.c:(.text+0x4c0): undefined reference to `drmGetDevices2'
vulkan/.libs/libvulkan_common.a(vulkan_libvulkan_common_la-anv_wsi_x11.o): In function `anv_GetPhysicalDeviceXlibPresentationSupportKHR':
anv_wsi_x11.c:(.text+0x69): undefined reference to `XGetXCBConnection'
../../src/vulkan/.libs/libvulkan_wsi.a(wsi_common_x11.o): In function `screen_get_visualtype':
wsi_common_x11.c:(.text+0xdf): undefined reference to `xcb_screen_allowed_depths_iterator'
wsi_common_x11.c:(.text+0xfb): undefined reference to `xcb_depth_visuals_iterator'
wsi_common_x11.c:(.text+0x125): undefined reference to `xcb_visualtype_next'
wsi_common_x11.c:(.text+0x139): undefined reference to `xcb_depth_next'
../../src/vulkan/.libs/libvulkan_wsi.a(wsi_common_x11.o): In function `x11_present_to_x11':
wsi_common_x11.c:(.text+0x1bf): undefined reference to `xshmfence_reset'
wsi_common_x11.c:(.text+0x22f): undefined reference to `xcb_present_pixmap'
wsi_common_x11.c:(.text+0x23e): undefined reference to `xcb_discard_reply'
wsi_common_x11.c:(.text+0x24e): undefined reference to `xcb_flush'
../../src/vulkan/.libs/libvulkan_wsi.a(wsi_common_x11.o): In function `x11_image_finish':
wsi_common_x11.c:(.text+0x2b7): undefined reference to `xcb_sync_destroy_fence'
wsi_common_x11.c:(.text+0x2c6): undefined reference to `xcb_discard_reply'
wsi_common_x11.c:(.text+0x2d1): undefined reference to `xshmfence_unmap_shm'
wsi_common_x11.c:(.text+0x2e4): undefined reference to `xcb_free_pixmap'
wsi_common_x11.c:(.text+0x2f3): undefined reference to `xcb_discard_reply'
../../src/vulkan/.libs/libvulkan_wsi.a(wsi_common_x11.o): In function `get_visualtype_for_window':
wsi_common_x11.c:(.text+0x4c0): undefined reference to `xcb_query_tree'
wsi_common_x11.c:(.text+0x4d3): undefined reference to `xcb_get_window_attributes'
wsi_common_x11.c:(.text+0x4e2): undefined reference to `xcb_query_tree_reply'
wsi_common_x11.c:(.text+0x4f0): undefined reference to `xcb_get_window_attributes_reply'
wsi_common_x11.c:(.text+0x52a): undefined reference to `xcb_get_setup'
wsi_common_x11.c:(.text+0x533): undefined reference to `xcb_setup_roots_iterator'
wsi_common_x11.c:(.text+0x54d): undefined reference to `xcb_screen_next'
../../src/vulkan/.libs/libvulkan_wsi.a(wsi_common_x11.o): In function `wsi_x11_get_connection.isra.3':
wsi_common_x11.c:(.text+0x685): undefined reference to `xcb_query_extension'
wsi_common_x11.c:(.text+0x6a3): undefined reference to `xcb_query_extension'
wsi_common_x11.c:(.text+0x6c1): undefined reference to `xcb_query_extension'
wsi_common_x11.c:(.text+0x6df): undefined reference to `xcb_query_extension'
wsi_common_x11.c:(.text+0x6f7): undefined reference to `xcb_query_extension_reply'
wsi_common_x11.c:(.text+0x70a): undefined reference to `xcb_query_extension_reply'
wsi_common_x11.c:(.text+0x71d): undefined reference to `xcb_query_extension_reply'
wsi_common_x11.c:(.text+0x730): undefined reference to `xcb_query_extension_reply'
../../src/vulkan/.libs/libvulkan_wsi.a(wsi_common_x11.o): In function `wsi_x11_check_dri3_compatible':
wsi_common_x11.c:(.text+0x894): undefined reference to `xcb_get_setup'
wsi_common_x11.c:(.text+0x8a1): undefined reference to `xcb_setup_roots_iterator'
wsi_common_x11.c:(.text+0x8b7): undefined reference to `xcb_dri3_open'
wsi_common_x11.c:(.text+0x8c6): undefined reference to `xcb_dri3_open_reply'
wsi_common_x11.c:(.text+0x8e7): undefined reference to `xcb_dri3_open_reply_fds'
wsi_common_x11.c:(.text+0x920): undefined reference to `drmGetRenderDeviceNameFromFd'
wsi_common_x11.c:(.text+0x92a): undefined reference to `drmGetRenderDeviceNameFromFd'
../../src/vulkan/.libs/libvulkan_wsi.a(wsi_common_x11.o): In function `x11_surface_get_support':
wsi_common_x11.c:(.text+0xa9f): undefined reference to `XGetXCBConnection'
../../src/vulkan/.libs/libvulkan_wsi.a(wsi_common_x11.o): In function `x11_surface_get_capabilities':
wsi_common_x11.c:(.text+0xb01): undefined reference to `xcb_get_geometry'
wsi_common_x11.c:(.text+0xb35): undefined reference to `xcb_get_geometry_reply'
wsi_common_x11.c:(.text+0xc17): undefined reference to `XGetXCBConnection'
../../src/vulkan/.libs/libvulkan_wsi.a(wsi_common_x11.o): In function `x11_swapchain_destroy':
wsi_common_x11.c:(.text+0xd52): undefined reference to `xcb_unregister_for_special_event'
wsi_common_x11.c:(.text+0xd6f): undefined reference to `xcb_present_select_input_checked'
wsi_common_x11.c:(.text+0xd7c): undefined reference to `xcb_discard_reply'
../../src/vulkan/.libs/libvulkan_wsi.a(wsi_common_x11.o): In function `x11_manage_fifo_queues':
wsi_common_x11.c:(.text+0x11cc): undefined reference to `xcb_wait_for_special_event'
../../src/vulkan/.libs/libvulkan_wsi.a(wsi_common_x11.o): In function `x11_acquire_next_image':
wsi_common_x11.c:(.text+0x1277): undefined reference to `xcb_flush'
wsi_common_x11.c:(.text+0x12a0): undefined reference to `xcb_poll_for_special_event'
wsi_common_x11.c:(.text+0x12f2): undefined reference to `xshmfence_await'
wsi_common_x11.c:(.text+0x144d): undefined reference to `xcb_wait_for_special_event'
wsi_common_x11.c:(.text+0x14b0): undefined reference to `xshmfence_await'
wsi_common_x11.c:(.text+0x1526): undefined reference to `xcb_get_file_descriptor'
wsi_common_x11.c:(.text+0x15e3): undefined reference to `xcb_flush'
wsi_common_x11.c:(.text+0x15f3): undefined reference to `xcb_poll_for_special_event'
../../src/vulkan/.libs/libvulkan_wsi.a(wsi_common_x11.o): In function `x11_surface_create_swapchain':
wsi_common_x11.c:(.text+0x16e9): undefined reference to `xcb_get_geometry'
wsi_common_x11.c:(.text+0x16f8): undefined reference to `xcb_get_geometry_reply'
wsi_common_x11.c:(.text+0x17d5): undefined reference to `xcb_generate_id'
wsi_common_x11.c:(.text+0x17f9): undefined reference to `xcb_present_select_input'
wsi_common_x11.c:(.text+0x180a): undefined reference to `xcb_present_id'
wsi_common_x11.c:(.text+0x1812): undefined reference to `xcb_register_for_special_xge'
wsi_common_x11.c:(.text+0x1821): undefined reference to `xcb_generate_id'
wsi_common_x11.c:(.text+0x1851): undefined reference to `xcb_create_gc'
wsi_common_x11.c:(.text+0x185e): undefined reference to `xcb_discard_reply'
wsi_common_x11.c:(.text+0x18f2): undefined reference to `xcb_generate_id'
wsi_common_x11.c:(.text+0x192a): undefined reference to `xcb_dri3_pixmap_from_buffer_checked'
wsi_common_x11.c:(.text+0x1939): undefined reference to `xcb_discard_reply'
wsi_common_x11.c:(.text+0x193e): undefined reference to `xshmfence_alloc_shm'
wsi_common_x11.c:(.text+0x1956): undefined reference to `xshmfence_map_shm'
wsi_common_x11.c:(.text+0x1973): undefined reference to `xcb_generate_id'
wsi_common_x11.c:(.text+0x198f): undefined reference to `xcb_dri3_fence_from_fd'
wsi_common_x11.c:(.text+0x199b): undefined reference to `xshmfence_trigger'
wsi_common_x11.c:(.text+0x1a45): undefined reference to `xcb_unregister_for_special_event'
wsi_common_x11.c:(.text+0x1a92): undefined reference to `xcb_free_pixmap'
wsi_common_x11.c:(.text+0x1aa1): undefined reference to `xcb_discard_reply'
wsi_common_x11.c:(.text+0x1b73): undefined reference to `XGetXCBConnection'
../../src/vulkan/.libs/libvulkan_wsi.a(wsi_common_x11.o): In function `wsi_get_physical_device_xcb_presentation_support':
wsi_common_x11.c:(.text+0x1f28): undefined reference to `xcb_get_setup'
wsi_common_x11.c:(.text+0x1f35): undefined reference to `xcb_setup_roots_iterator'
wsi_common_x11.c:(.text+0x1f55): undefined reference to `xcb_screen_next'
../../src/vulkan/.libs/libvulkan_wsi.a(wsi_common_wayland.o): In function `frame_handle_done':
wsi_common_wayland.c:(.text+0x1df): undefined reference to `wl_proxy_destroy'
../../src/vulkan/.libs/libvulkan_wsi.a(wsi_common_wayland.o): In function `wsi_wl_swapchain_queue_present':
wsi_common_wayland.c:(.text+0x22f): undefined reference to `wl_proxy_marshal'
wsi_common_wayland.c:(.text+0x26b): undefined reference to `wl_proxy_marshal'
wsi_common_wayland.c:(.text+0x294): undefined reference to `wl_proxy_marshal'
wsi_common_wayland.c:(.text+0x29f): undefined reference to `wl_display_flush'
wsi_common_wayland.c:(.text+0x2c9): undefined reference to `wl_display_dispatch_queue'
wsi_common_wayland.c:(.text+0x311): undefined reference to `wl_proxy_marshal'
wsi_common_wayland.c:(.text+0x32a): undefined reference to `wl_callback_interface'
wsi_common_wayland.c:(.text+0x334): undefined reference to `wl_proxy_marshal_constructor'
wsi_common_wayland.c:(.text+0x341): undefined reference to `wl_proxy_set_queue'
wsi_common_wayland.c:(.text+0x352): undefined reference to `wl_proxy_add_listener'
../../src/vulkan/.libs/libvulkan_wsi.a(wsi_common_wayland.o): In function `registry_handle_global':
wsi_common_wayland.c:(.text+0x5a2): undefined reference to `wl_proxy_marshal_constructor_versioned'
wsi_common_wayland.c:(.text+0x5c4): undefined reference to `wl_proxy_add_listener'
../../src/vulkan/.libs/libvulkan_wsi.a(wsi_common_wayland.o): In function `wsi_wl_display_destroy.isra.6':
wsi_common_wayland.c:(.text+0x5fc): undefined reference to `wl_proxy_destroy'
../../src/vulkan/.libs/libvulkan_wsi.a(wsi_common_wayland.o): In function `wsi_wl_get_display.isra.7':
wsi_common_wayland.c:(.text+0x6ea): undefined reference to `wl_registry_interface'
wsi_common_wayland.c:(.text+0x6f2): undefined reference to `wl_proxy_marshal_constructor'
wsi_common_wayland.c:(.text+0x718): undefined reference to `wl_proxy_add_listener'
wsi_common_wayland.c:(.text+0x720): undefined reference to `wl_display_roundtrip'
wsi_common_wayland.c:(.text+0x737): undefined reference to `wl_display_roundtrip'
wsi_common_wayland.c:(.text+0x74d): undefined reference to `wl_proxy_destroy'
wsi_common_wayland.c:(.text+0x78f): undefined reference to `wl_proxy_destroy'
../../src/vulkan/.libs/libvulkan_wsi.a(wsi_common_wayland.o): In function `wsi_wl_surface_create_swapchain':
wsi_common_wayland.c:(.text+0x998): undefined reference to `wl_proxy_get_version'
wsi_common_wayland.c:(.text+0xa5b): undefined reference to `wl_display_create_queue'
wsi_common_wayland.c:(.text+0xaa5): undefined reference to `wl_buffer_interface'
wsi_common_wayland.c:(.text+0xb7c): undefined reference to `wl_proxy_marshal_constructor'
wsi_common_wayland.c:(.text+0xb90): undefined reference to `wl_display_roundtrip'
wsi_common_wayland.c:(.text+0xbb8): undefined reference to `wl_proxy_set_queue'
wsi_common_wayland.c:(.text+0xbcf): undefined reference to `wl_proxy_add_listener'
../../src/vulkan/.libs/libvulkan_wsi.a(wsi_common_wayland.o): In function `wsi_wl_swapchain_acquire_next_image':
wsi_common_wayland.c:(.text+0xc6d): undefined reference to `wl_display_dispatch_queue_pending'
wsi_common_wayland.c:(.text+0xcb4): undefined reference to `wl_display_roundtrip_queue'
../../src/vulkan/.libs/libvulkan_wsi.a(wayland-drm-protocol.o):(.data.rel+0x4): undefined reference to `wl_buffer_interface'
../../src/vulkan/.libs/libvulkan_wsi.a(wayland-drm-protocol.o):(.data.rel+0x1c): undefined reference to `wl_buffer_interface'
../../src/vulkan/.libs/libvulkan_wsi.a(wayland-drm-protocol.o):(.data.rel+0x48): undefined reference to `wl_buffer_interface'
collect2: error: ld returned 1 exit status
slibtool: exec error upon slbt_exec_link_create_library(), line 1082: (see child process error messages).
slibtool: < returned to > slbt_exec_link(), line 1421.
make[4]: *** [Makefile:2425: vulkan/libvulkan_intel.la] Error 2
make[4]: Leaving directory '/build/lib32-mesa/src/mesa-17.1.0/src/intel'
make[3]: *** [Makefile:1972: all] Error 2
make[3]: Leaving directory '/build/lib32-mesa/src/mesa-17.1.0/src/intel'
make[2]: *** [Makefile:851: all-recursive] Error 1
make[2]: Leaving directory '/build/lib32-mesa/src/mesa-17.1.0/src'
make[1]: *** [Makefile:642: all] Error 2
make[1]: Leaving directory '/build/lib32-mesa/src/mesa-17.1.0/src'
make: *** [Makefile:642: all-recursive] Error 1
Comment 19 kusayu 2017-06-22 08:40:11 UTC
Arch Linux still broken.

  CXXLD    vulkan/libvulkan_intel.la
vulkan/.libs/libvulkan_common.a(vulkan_libvulkan_common_la-anv_device.o): In function `anv_EnumeratePhysicalDevices':
anv_device.c:(.text+0x45a): undefined reference to `drmGetDevices2'
collect2: error: ld returned 1 exit status
make[4]: *** [Makefile:2425: vulkan/libvulkan_intel.la] Error 1
make[4]: Leaving directory '/home/kusayu/.cache/pacaur/mesa-noglvnd/src/mesa-17.1.0/src/intel'
make[3]: *** [Makefile:1972: all] Error 2
make[3]: Leaving directory '/home/kusayu/.cache/pacaur/mesa-noglvnd/src/mesa-17.1.0/src/intel'
make[2]: *** [Makefile:851: all-recursive] Error 1
make[2]: Leaving directory '/home/kusayu/.cache/pacaur/mesa-noglvnd/src/mesa-17.1.0/src'
make[1]: *** [Makefile:642: all] Error 2
make[1]: Leaving directory '/home/kusayu/.cache/pacaur/mesa-noglvnd/src/mesa-17.1.0/src'
make: *** [Makefile:642: all-recursive] Error 1
Comment 20 Eric Engestrom 2017-06-22 16:05:40 UTC
kusayu: You're having a different issue, with different symptoms. Can you please open a new ticket?
When doing so, please indicate the libdrm version used.
Your error is weird though, as this symbol was introduced in libdrm 2.4.75, which has always been required on the 17.1 branch, so if your libdrm is too old it should fail way before that, during the configure stage.
I just tested that pkgbuild and it works for me btw, with libdrm 2.4.81.
Comment 21 Roman Gilg 2018-03-05 16:51:16 UTC
I have run into the same problem when trying to compile mesa master on KDE Neon (Ubuntu 16.04) in the gallium dri targets.

What I noticed: in the build directory at 

mesa/src/gallium/targets/dri/gallium_dri.la

the relink command can be fixed manually by simply by putting one
-L/opt/drm/lib
before
-lexpat.

Note, that I don't linked against SELinux libs. If you do this the
-L/opt/drm/lib
must probably be put before the links of these libs as well.

I also wrote a patch to work around the problem for libdrm and the dri targets similar to the one linked above:
https://lists.freedesktop.org/archives/mesa-dev/2018-March/187630.html
Comment 22 Daniel Stone 2018-03-05 17:12:14 UTC
Roman, that would only work if you have a newer version of GBM installed into /opt/drm/lib. If you're doing completely clean builds, there is no full solution: the only known workarounds are the ones Emil has posted earlier.
Comment 23 Roman Gilg 2018-03-05 17:32:23 UTC
Sorry, that's what I forgot to mention: I compile libdrm from current master with prefix /opt/drm.

In this case if

-L/opt/drm/lib

in the relink_command in mesa/src/gallium/targets/dri/gallium_dri.la

is before -lexpat, the install works. If it is behind -lexpat libtool doesn't link my compiled libdrm in /opt/drm but apparently tries to link the system ones in /usr/lib.

The problematic functionality in my case is btw not a GBM function, but some new functions in libdrm_amdgpu.so used by the AMD drivers. But the problem in principle is the same.
Comment 24 Emil Velikov 2018-03-05 17:37:26 UTC
Precisely the issue is fundamentally the same and there's three solutions.
Here's another 

$export LD_LIBRARY_PATH=/path/to/custom/build/DSOs && ./configure...

Let's not necro-bump bugs every time someone starts building stuff and doesn't know how to manage multiple copies on their system :-\ Please?
Comment 25 Roman Gilg 2018-03-05 18:43:53 UTC
I "necro-bumped" this bug because I wanted to share my findings in regards to the manual manipulation of the relink_command, what I haven't seen here before.

Maybe that's trivial to you, but implying that I'm just someone who "starts building stuff and doesn't know how to manage multiple copies on their system" is not very nice of you.

Also I thought it's a bug in Libtool, so why are missing abilities in regards to building stuff to blame now?

Fact is if you today try to build mesa AMD DRI libs on Ubuntu 16.04 together with libdrm as described in the documentation in some non-system paths your install will fail. So why this bug is labeled NOTABUG and not at least NOTOURBUG is another question.

Anyways I will not disrupt the peace of this bug report anymore. Sorry for the inconvenience.
Comment 26 Daniel Stone 2018-03-11 22:03:21 UTC
*** Bug 105441 has been marked as a duplicate of this bug. ***

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.