Bug 73776

Summary: NameError: name 'libloader' is not defined:
Product: Mesa Reporter: Vinson Lee <vlee>
Component: Mesa coreAssignee: mesa-dev
Status: RESOLVED FIXED QA Contact:
Severity: blocker    
Priority: medium CC: emil.l.velikov, idr, krh, pedretti.fabio, robclark
Version: gitKeywords: regression
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
See Also: https://bugs.freedesktop.org/show_bug.cgi?id=73777
Whiteboard:
i915 platform: i915 features:
Attachments: handle builds whenever libdrm is not installed

Description Vinson Lee 2014-01-18 21:44:56 UTC
mesa: 66fd5057d3ee1b3a7bce484eb0856b318a8ae4a4 (master)

$ scons platform=windows toolchain=crossmingw machine=x86_64
scons: Reading SConscript files ...
Mkdir("build/windows-x86_64-debug")
Checking for X11 (x11 xext xdamage xfixes)... no
Checking for XCB (x11-xcb xcb-glx >= 1.8.1)... no
Checking for XF86VIDMODE (xxf86vm)... no
Checking for DRM (libdrm >= 2.4.24)... no
Checking for DRM_INTEL (libdrm_intel >= 2.4.30)... no
Checking for XORG (xorg-server >= 1.6.0)... no
Checking for KMS (libkms >= 2.4.24)... no
Checking for UDEV (libudev > 150)... no
Mkdir("build/linux-x86_64-debug")
Checking for X11 (x11 xext xdamage xfixes)... yes
Checking for XCB (x11-xcb xcb-glx >= 1.8.1)... yes
Checking for XF86VIDMODE (xxf86vm)... yes
Checking for DRM (libdrm >= 2.4.24)... yes
Checking for DRM_INTEL (libdrm_intel >= 2.4.30)... yes
Checking for XORG (xorg-server >= 1.6.0)... yes
Checking for KMS (libkms >= 2.4.24)... no
Checking for UDEV (libudev > 150)... yes
warning: LLVM disabled: not building llvmpipe
NameError: name 'libloader' is not defined:
  File "mesa/SConstruct", line 151:
    duplicate = 0 # http://www.scons.org/doc/0.97/HTML/scons-user/x2261.html
  File "/usr/lib/scons/SCons/Script/SConscript.py", line 609:
    return method(*args, **kw)
  File "/usr/lib/scons/SCons/Script/SConscript.py", line 546:
    return _SConscript(self.fs, *files, **subst_kw)
  File "/usr/lib/scons/SCons/Script/SConscript.py", line 260:
    exec _file_ in call_stack[-1].globals
  File "mesa/src/SConscript", line 40:
    SConscript('gallium/SConscript')
  File "/usr/lib/scons/SCons/Script/SConscript.py", line 609:
    return method(*args, **kw)
  File "/usr/lib/scons/SCons/Script/SConscript.py", line 546:
    return _SConscript(self.fs, *files, **subst_kw)
  File "/usr/lib/scons/SCons/Script/SConscript.py", line 260:
    exec _file_ in call_stack[-1].globals
  File "mesa/src/gallium/SConscript", line 104:
    'targets/egl-static/SConscript'
  File "/usr/lib/scons/SCons/Script/SConscript.py", line 609:
    return method(*args, **kw)
  File "/usr/lib/scons/SCons/Script/SConscript.py", line 546:
    return _SConscript(self.fs, *files, **subst_kw)
  File "/usr/lib/scons/SCons/Script/SConscript.py", line 260:
    exec _file_ in call_stack[-1].globals
  File "mesa/src/gallium/targets/egl-static/SConscript", line 34:
    libloader,


a9800242244098fddcd2b963d8f5ccda5dea8290 is the first bad commit
commit a9800242244098fddcd2b963d8f5ccda5dea8290
Author: Emil Velikov <emil.l.velikov@gmail.com>
Date:   Sat Jan 11 03:12:40 2014 +0000

    egl-static: use loader util lib

    v2
    * Drop the no longer used _EGL_NO_DRM from Android.mk.

    Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
    Reviewed-by: Rob Clark <robdclark@gmail.com>
    Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
    Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>

:040000 040000 dd180e65eca7266da9b8ea17515d1973bb7bb0fc ed1eafc5c7026acc4ebcfb44b0a3b8db71464b51 M      src
bisect run success
Comment 1 Emil Velikov 2014-01-19 03:32:43 UTC
Created attachment 92372 [details] [review]
handle builds whenever libdrm is not installed

As mentioned in bug 73777 I've folded all three possible fixes in a single patch, to minimise disruption, but if you prefer I can split them apart.

Patch identical to the one in bug 73777 attached.
Comment 2 Jos van Wolput 2014-01-19 07:43:19 UTC
The latest git version of mesa fails to build:
-----
make[3]: Entering directory `/home/jos/src/xorg/git/mesa/src/gallium/auxiliary/pipe-loader'
  CC       pipe_loader_drm.lo
pipe_loader_drm.c: In function 'pipe_loader_drm_probe_fd':
pipe_loader_drm.c:120:4: error: implicit declaration of function 'loader_get_pci_id_for_fd' [-Werror=implicit-function-declaration]
    if (loader_get_pci_id_for_fd(fd, &vendor_id, &chip_id)) {
    ^
pipe_loader_drm.c:132:4: error: implicit declaration of function 'loader_get_driver_for_fd' [-Werror=implicit-function-declaration]
    ddev->base.driver_name = loader_get_driver_for_fd(fd, _LOADER_GALLIUM);
    ^
pipe_loader_drm.c:132:58: error: '_LOADER_GALLIUM' undeclared (first use in this function)
    ddev->base.driver_name = loader_get_driver_for_fd(fd, _LOADER_GALLIUM);
                                                          ^
pipe_loader_drm.c:132:58: note: each undeclared identifier is reported only once for each function it appears in
cc1: some warnings being treated as errors
make[3]: *** [pipe_loader_drm.lo] Error 1
make[3]: Leaving directory `/home/jos/src/xorg/git/mesa/src/gallium/auxiliary/pipe-loader'
make[2]: *** [all-recursive] Error 1
-----
Comment 3 Fabio Pedretti 2014-01-19 12:03:32 UTC
> make[3]: Entering directory
> `/home/jos/src/xorg/git/mesa/src/gallium/auxiliary/pipe-loader'
>   CC       pipe_loader_drm.lo
> pipe_loader_drm.c: In function 'pipe_loader_drm_probe_fd':
> pipe_loader_drm.c:120:4: error: implicit declaration of function
> 'loader_get_pci_id_for_fd' [-Werror=implicit-function-declaration]
>     if (loader_get_pci_id_for_fd(fd, &vendor_id, &chip_id)) {
>     ^

Same error here on current git.
Comment 4 Emil Velikov 2014-01-19 13:40:04 UTC
Interesting... where you guys when I've asked people to test the patches :)

Jos van Wolput, Fabio Pedretti
Rather than throwing random fragments of the build log, I would appreciate if you guys give us at least the configure options that you're using.
Did you guys checked the attached patch ? Might be worth attaching the build log before/after applying it.
Comment 5 Iaroslav Andrusyak 2014-01-19 14:13:07 UTC
 ./configure --host=i586-suse-linux-gnu --build=i586-suse-linux-gnu --program-prefix= --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib --libexecdir=/usr/lib --localstatedir=/var --sharedstatedir=/usr/com --mandir=/usr/share/man --infodir=/usr/share/info --disable-dependency-tracking --prefix=/usr --with-gallium-drivers=r600,r300,swrast,nouveau,radeonsi,svga,ilo --with-dri-drivers=i965,i915,r200,radeon --disable-debug --enable-gallium-egl --enable-shared-glapi --enable-glx-tls --enable-texture-float --enable-gles1 --enable-gles2 --with-egl-platforms=x11,drm --enable-opencl --with-llvm-shared-libs --with-egl-platforms=x11,wayland,drm --enable-openvg --enable-xa --enable-vdpau --enable-xvmc --enable-gbm --enable-gallium-gbm --enable-gles1 --enable-gles2

[  413s] gmake[3]: Entering directory `/home/abuild/rpmbuild/BUILD/mesa/src/egl/main'
[  413s]   CC       eglapi.lo
[  413s]   CC       eglarray.lo
[  413s]   CC       eglconfig.lo
[  413s]   CC       eglcontext.lo
[  414s]   CC       eglcurrent.lo
[  414s]   CC       egldisplay.lo
[  414s]   CC       egldriver.lo
[  414s]   CC       eglfallbacks.lo
[  414s]   CC       eglglobals.lo
[  414s]   CC       eglimage.lo
[  414s]   CC       egllog.lo
[  414s]   CC       eglmisc.lo
[  415s]   CC       eglmode.lo
[  415s]   CC       eglscreen.lo
[  415s]   CC       eglstring.lo
[  415s]   CC       eglsurface.lo
[  415s]   CC       eglsync.lo
[  415s]   CCLD     libEGL.la
[  416s] /usr/bin/mkdir -p ../../../lib;
[  416s] ln -f .libs/libEGL.so.1.0.0 ../../../lib/libEGL.so.1
[  416s] ln -sf libEGL.so.1 ../../../lib/libEGL.so
[  416s] gmake[3]: Leaving directory `/home/abuild/rpmbuild/BUILD/mesa/src/egl/main'
[  416s] gmake[3]: Entering directory `/home/abuild/rpmbuild/BUILD/mesa/src/egl'
[  416s] gmake[3]: Nothing to be done for `all-am'.
[  416s] gmake[3]: Leaving directory `/home/abuild/rpmbuild/BUILD/mesa/src/egl'
[  416s] gmake[2]: Leaving directory `/home/abuild/rpmbuild/BUILD/mesa/src/egl'
[  416s] Making all in gallium/auxiliary
[  416s] gmake[2]: Entering directory `/home/abuild/rpmbuild/BUILD/mesa/src/gallium/auxiliary'
[  416s] Making all in pipe-loader
[  416s] gmake[3]: Entering directory `/home/abuild/rpmbuild/BUILD/mesa/src/gallium/auxiliary/pipe-loader'
[  416s]   CC       pipe_loader.lo
[  416s]   CC       pipe_loader_sw.lo
[  416s]   CC       pipe_loader_drm.lo
[  416s] pipe_loader_drm.c: In function 'pipe_loader_drm_probe_fd':
[  416s] pipe_loader_drm.c:120:4: error: implicit declaration of function 'loader_get_pci_id_for_fd' [-Werror=implicit-function-declaration]
[  416s]     if (loader_get_pci_id_for_fd(fd, &vendor_id, &chip_id)) {
[  416s]     ^
[  416s] pipe_loader_drm.c:132:4: error: implicit declaration of function 'loader_get_driver_for_fd' [-Werror=implicit-function-declaration]
[  416s]     ddev->base.driver_name = loader_get_driver_for_fd(fd, _LOADER_GALLIUM);
[  416s]     ^
[  416s] pipe_loader_drm.c:132:58: error: '_LOADER_GALLIUM' undeclared (first use in this function)
[  416s]     ddev->base.driver_name = loader_get_driver_for_fd(fd, _LOADER_GALLIUM);
[  416s]                                                           ^
[  416s] pipe_loader_drm.c:132:58: note: each undeclared identifier is reported only once for each function it appears in
[  416s] cc1: some warnings being treated as errors
[  416s] gmake[3]: *** [pipe_loader_drm.lo] Error 1
[  416s] gmake[3]: *** Waiting for unfinished jobs....
[  416s] gmake[3]: Leaving directory `/home/abuild/rpmbuild/BUILD/mesa/src/gallium/auxiliary/pipe-loader'
[  416s] gmake[2]: *** [all-recursive] Error 1
[  416s] gmake[2]: Leaving directory `/home/abuild/rpmbuild/BUILD/mesa/src/gallium/auxiliary'
[  416s] gmake[1]: *** [all-recursive] Error 1
[  416s] gmake[1]: Leaving directory `/home/abuild/rpmbuild/BUILD/mesa/src'
[  416s] make: *** [all-recursive] Error 1
[  416s] error: Bad exit status from /var/tmp/rpm-tmp.H3SoeV (%build)
Comment 6 Armin K 2014-01-19 14:16:14 UTC
I've sent a patch for this not 5 minutes ago.
Comment 7 Emil Velikov 2014-01-19 15:23:43 UTC
Just pushed a couple of fixes that should address all the reported issues.

Namely - bug 73776, bug 73777 and the pipe-loader issue reported via irc and here.

Vinson, please update the bugs when you have the chance to check the fix.
Comment 8 Vinson Lee 2014-01-19 18:57:38 UTC
commit 26d380da69d3fc3a4ced291028c105c0ac0f1a92
Author: Emil Velikov <emil.l.velikov@gmail.com>
Date:   Sun Jan 19 03:09:03 2014 +0000

    loader: ifdef libdrm specific code and include
    
    Mesa provides the flexibility of building without the
    need to have libdrm present on the system. The situation
    has regressed with the recent commit
    
    commit 8c2e7fd8460750543367053b1be9368cc38e1d6a
    Author: Emil Velikov <emil.l.velikov@gmail.com>
    Date:   Fri Jan 10 23:36:16 2014 +0000
    
        loader: introduce the loader util lib
    
    By isolating libdrm code by #ifndef __NOT_HAVE_DRM_H we
    can have libdrm-less builds on across all build systems.
    
    This patch converts Android's _EGL_NO_DRM to __NOT_HAVE_DRM_H
    to provide consistency with the other cases within mesa, allows
    compilation of libloader on libdrm-less scons and conditionally
    links against libdrm if present under automake.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=73776
    BUgzilla: https://bugs.freedesktop.org/show_bug.cgi?id=73777
    Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
    Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>

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.