about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorVladimír Čunát <vcunat@gmail.com>2014-06-10 12:42:48 +0200
committerVladimír Čunát <vcunat@gmail.com>2014-06-11 07:46:15 +0200
commite4dc3f8ae3665f005b241edee76bfbcde7c1b1c1 (patch)
tree2b482c716f3eb852b0d710a7298bd33e3fb77fea /pkgs
parentcfc457eda5e5b79efa6b33ae45edbb77d898c1f2 (diff)
downloadnixlib-e4dc3f8ae3665f005b241edee76bfbcde7c1b1c1.tar
nixlib-e4dc3f8ae3665f005b241edee76bfbcde7c1b1c1.tar.gz
nixlib-e4dc3f8ae3665f005b241edee76bfbcde7c1b1c1.tar.bz2
nixlib-e4dc3f8ae3665f005b241edee76bfbcde7c1b1c1.tar.lz
nixlib-e4dc3f8ae3665f005b241edee76bfbcde7c1b1c1.tar.xz
nixlib-e4dc3f8ae3665f005b241edee76bfbcde7c1b1c1.tar.zst
nixlib-e4dc3f8ae3665f005b241edee76bfbcde7c1b1c1.zip
mesa: fix libGL searching for libudev
Close #2784, #2731.

I don't have a clue if using our libudev is always correct on non-nixos,
or if using /run/current-system/sw/lib/libudev would be better...
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/development/libraries/mesa/default.nix8
-rw-r--r--pkgs/development/libraries/mesa/dlopen-absolute-paths.diff13
2 files changed, 19 insertions, 2 deletions
diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix
index 63212903cab3..215ee46e47c7 100644
--- a/pkgs/development/libraries/mesa/default.nix
+++ b/pkgs/development/libraries/mesa/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, pkgconfig, intltool, flex, bison, autoreconfHook
+{ stdenv, fetchurl, pkgconfig, intltool, flex, bison, autoreconfHook, substituteAll
 , python, libxml2Python, file, expat, makedepend
 , libdrm, xorg, wayland, udev, llvm, libffi
 , libvdpau, libelf
@@ -45,7 +45,11 @@ stdenv.mkDerivation {
     ./glx_ro_text_segm.patch # fix for grsecurity/PaX
    # TODO: revive ./dricore-gallium.patch when it gets ported (from Ubuntu),
    #  as it saved ~35 MB in $drivers; watch https://launchpad.net/ubuntu/+source/mesa/+changelog
-  ];
+  ] ++ optional stdenv.isLinux
+      (substituteAll {
+        src = ./dlopen-absolute-paths.diff;
+        inherit udev;
+      });
 
   # Change the search path for EGL drivers from $drivers/* to driverLink
   postPatch = ''
diff --git a/pkgs/development/libraries/mesa/dlopen-absolute-paths.diff b/pkgs/development/libraries/mesa/dlopen-absolute-paths.diff
new file mode 100644
index 000000000000..2b239e760ba3
--- /dev/null
+++ b/pkgs/development/libraries/mesa/dlopen-absolute-paths.diff
@@ -0,0 +1,13 @@
+diff --git a/src/loader/loader.c b/src/loader/loader.c
+index 666d015..4d7a9be 100644
+--- a/src/loader/loader.c
++++ b/src/loader/loader.c
+@@ -101,7 +101,7 @@ static void *
+ udev_dlopen_handle(void)
+ {
+    if (!udev_handle) {
+-      udev_handle = dlopen("libudev.so.1", RTLD_LOCAL | RTLD_LAZY);
++      udev_handle = dlopen("@udev@/lib/libudev.so.1", RTLD_LOCAL | RTLD_LAZY);
+ 
+       if (!udev_handle) {
+          /* libudev.so.1 changed the return types of the two unref functions