From 1860e506e7f2fd66982929cfb75ec83b0a586acb Mon Sep 17 00:00:00 2001 From: Ambroz Bizjak Date: Wed, 22 May 2019 18:30:05 +0200 Subject: libglvnd, ocl-icd, vulkan-loader: Add driver library paths to RUNPATH. Previously we were relying on LD_LIBRARY_PATH to discover driver libraries (libGL, ligGLX, libEGL, OpenCL and Vulkan). This has the problem that setuid programs (in particular VirtualBox) ignore LD_LIBRARY_PATH. Fix it by setting RUNPATH in various dispatch libraries. This is not needed for libvdpau because it is already configured to look for libraries in the driver paths. Fixes https://github.com/NixOS/nixpkgs/issues/22760. --- pkgs/development/libraries/ocl-icd/default.nix | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'pkgs/development/libraries/ocl-icd') diff --git a/pkgs/development/libraries/ocl-icd/default.nix b/pkgs/development/libraries/ocl-icd/default.nix index ec6dc5f9052..abdc7502052 100644 --- a/pkgs/development/libraries/ocl-icd/default.nix +++ b/pkgs/development/libraries/ocl-icd/default.nix @@ -1,4 +1,4 @@ -{stdenv, fetchurl, ruby, opencl-headers, libGL_driver }: +{stdenv, fetchurl, ruby, opencl-headers, addOpenGLRunpath }: stdenv.mkDerivation rec { name = "ocl-icd-${version}"; @@ -9,12 +9,18 @@ stdenv.mkDerivation rec { sha256 = "0f14gpa13sdm0kzqv5yycp4pschbmi6n5fj7wl4ilspzsrqcgqr2"; }; - nativeBuildInputs = [ ruby ]; + nativeBuildInputs = [ ruby addOpenGLRunpath ]; buildInputs = [ opencl-headers ]; postPatch = '' - sed -i 's,"/etc/OpenCL/vendors","${libGL_driver.driverLink}/etc/OpenCL/vendors",g' ocl_icd_loader.c + sed -i 's,"/etc/OpenCL/vendors","${addOpenGLRunpath.driverLink}/etc/OpenCL/vendors",g' ocl_icd_loader.c + ''; + + # Set RUNPATH so that driver libraries in /run/opengl-driver(-32)/lib can be found. + # See the explanation in addOpenGLRunpath. + postFixup = '' + addOpenGLRunpath $out/lib/libOpenCL.so ''; meta = with stdenv.lib; { -- cgit 1.4.1