运行时EGL错误:“无法打开Swrast”(Nix)

时间:2017-09-14 00:22:12

标签: egl nix

1上下文

我有一个通过nix构建的私有仓库(如果重要的话,repo是一个Haskell + Stack项目)。特别是,这个repo有一些低级别的图形依赖,包括(在顶层):

buildInputs = with pkgs; [ mesa
                           xorg.pixman
                           wayland-protocols
                           wayland
                           xorg.libX11
                           dbus
                           weston
                          ];

我正在构建此repo的系统是Arch Linux机器(在程序包管理器外部安装了nix)。

2问题

该程序编译良好,但是当我启动它时,我得到了灵魂破坏的运行时错误:

Loading module '/nix/store/98ipsxd20n5nw71q1kjpb5kyr55ysx7y-weston-2.0.0/lib/libweston-2/x11-backend.so'
Loading module '/nix/store/98ipsxd20n5nw71q1kjpb5kyr55ysx7y-weston-2.0.0/lib/libweston-2/gl-renderer.so'
EGL client extensions: EGL_EXT_client_extensions EGL_EXT_platform_base
               EGL_KHR_client_get_all_proc_addresses EGL_KHR_debug
               EGL_EXT_platform_wayland EGL_EXT_platform_x11
               EGL_MESA_platform_gbm
libEGL warning: DRI2: failed to authenticate
libEGL warning: DRI2: failed to open swrast (search paths /run/opengl-driver/lib/dri)
failed to initialize display
EGL error state: EGL_NOT_INITIALIZED (0x3001)
Socket: wayland-0

program-name: user error (Failed compiling shader Shader {shaderID = 0})

3 Inelegant Solution

问题在于它在/run/opengl-driver/lib/dri中搜索,这是一条NixOS特定路径。事实上 - 当我在我的二级NixOS系统上构建和启动这个程序时,它编译并运行得很好。

在非NixOS系统上修复此问题的可怕黑客就是运行:

sudo ln -s /nix/store/*-mesa-noglu-*-drivers /run/opengl-driver

问题:这个问题是否有更优雅的Nixish解决方案?

1 个答案:

答案 0 :(得分:1)

很抱歉,但在撰写本文时,这是一个未解决的问题。

https://github.com/NixOS/nixpkgs/issues/9415