diff options
author | Nikolay Amiantov <ab@fmap.me> | 2018-03-17 18:47:55 +0300 |
---|---|---|
committer | Nikolay Amiantov <ab@fmap.me> | 2018-03-26 14:01:49 +0300 |
commit | 6bf1421f13d667c2997b67728cf777c6a70716a5 (patch) | |
tree | a8ad2d39efc437215fe958df70326ae263f98798 /pkgs | |
parent | 803e87aa1e5bd071713276fd13e55854f7e5e385 (diff) |
treewide: refactor to use libglvnd
* Implement libGL as a symlink package which uses libraries from libglvnd and headers from Mesa (since ones from libglvnd are outdated). * Use libGL_driver.driverLink treewide; add FHS paths where possible.
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/development/libraries/libva/1.0.0.nix | 7 | ||||
-rw-r--r-- | pkgs/development/libraries/libva/default.nix | 5 | ||||
-rw-r--r-- | pkgs/development/libraries/libvdpau/default.nix | 7 | ||||
-rw-r--r-- | pkgs/development/libraries/mesa-glu/default.nix | 7 | ||||
-rw-r--r-- | pkgs/development/libraries/mesa/default.nix | 36 | ||||
-rw-r--r-- | pkgs/development/libraries/ocl-icd/default.nix | 4 | ||||
-rw-r--r-- | pkgs/development/libraries/qt-4.x/4.8/default.nix | 1 | ||||
-rw-r--r-- | pkgs/development/libraries/vulkan-loader/default.nix | 4 | ||||
-rw-r--r-- | pkgs/development/mobile/genymotion/default.nix | 4 | ||||
-rw-r--r-- | pkgs/misc/emulators/caprice32/default.nix | 2 | ||||
-rw-r--r-- | pkgs/misc/emulators/wine/base.nix | 2 | ||||
-rw-r--r-- | pkgs/os-specific/linux/amdgpu-pro/default.nix | 4 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 53 |
13 files changed, 78 insertions, 58 deletions
diff --git a/pkgs/development/libraries/libva/1.0.0.nix b/pkgs/development/libraries/libva/1.0.0.nix index 031ac781651c0..47464d225e81f 100644 --- a/pkgs/development/libraries/libva/1.0.0.nix +++ b/pkgs/development/libraries/libva/1.0.0.nix @@ -1,5 +1,5 @@ { stdenv, lib, fetchurl, libX11, pkgconfig, libXext, libdrm, libXfixes, wayland, libffi -, mesa_noglu +, libGL, libGL_driver , minimal ? true, libva }: @@ -17,11 +17,12 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ pkgconfig ]; buildInputs = [ libdrm ] - ++ lib.optionals (!minimal) [ libva libX11 libXext libXfixes wayland libffi mesa_noglu ]; + ++ lib.optionals (!minimal) [ libva libX11 libXext libXfixes wayland libffi libGL ]; # TODO: share libs between minimal and !minimal - perhaps just symlink them configureFlags = - [ "--with-drivers-path=${mesa_noglu.driverLink}/lib/dri" ] ++ + # Add FHS paths for non-NixOS applications. + [ "--with-drivers-path=${libGL_driver.driverLink}/lib/dri:/usr/lib/dri:/usr/lib32/dri" ] ++ lib.optionals (!minimal) [ "--enable-glx" ]; installFlags = [ "dummy_drv_video_ladir=$(out)/lib/dri" ]; diff --git a/pkgs/development/libraries/libva/default.nix b/pkgs/development/libraries/libva/default.nix index 6b8c3631fb370..b1108355106ff 100644 --- a/pkgs/development/libraries/libva/default.nix +++ b/pkgs/development/libraries/libva/default.nix @@ -1,6 +1,6 @@ { stdenv, lib, fetchFromGitHub, autoreconfHook, pkgconfig , libXext, libdrm, libXfixes, wayland, libffi, libX11 -, libGL +, libGL, libGL_driver , minimal ? true, libva }: @@ -27,7 +27,8 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; configureFlags = [ - "--with-drivers-path=${libGL.driverLink}/lib/dri" + # Add FHS paths for non-NixOS applications. + "--with-drivers-path=${libGL_driver.driverLink}/lib/dri:/usr/lib/dri:/usr/lib32/dri" ] ++ lib.optionals (!minimal) [ "--enable-glx" ]; installFlags = [ diff --git a/pkgs/development/libraries/libvdpau/default.nix b/pkgs/development/libraries/libvdpau/default.nix index eebdc29419741..35c339b45d09f 100644 --- a/pkgs/development/libraries/libvdpau/default.nix +++ b/pkgs/development/libraries/libvdpau/default.nix @@ -1,7 +1,8 @@ -{ stdenv, fetchurl, pkgconfig, xorg, libGL }: +{ stdenv, fetchurl, pkgconfig, xorg, libGL_driver }: stdenv.mkDerivation rec { - name = "libvdpau-1.1.1"; + name = "libvdpau-${version}"; + version = "1.1.1"; src = fetchurl { url = "https://people.freedesktop.org/~aplattner/vdpau/${name}.tar.bz2"; @@ -16,7 +17,7 @@ stdenv.mkDerivation rec { propagatedBuildInputs = [ xorg.libX11 ]; configureFlags = stdenv.lib.optional stdenv.isLinux - "--with-module-dir=${libGL.driverLink}/lib/vdpau"; + "--with-module-dir=${libGL_driver.driverLink}/lib/vdpau"; installFlags = [ "moduledir=$(out)/lib/vdpau" ]; diff --git a/pkgs/development/libraries/mesa-glu/default.nix b/pkgs/development/libraries/mesa-glu/default.nix index 9a6441956db37..4e35d6ed24d15 100644 --- a/pkgs/development/libraries/mesa-glu/default.nix +++ b/pkgs/development/libraries/mesa-glu/default.nix @@ -1,7 +1,8 @@ -{ stdenv, fetchurl, pkgconfig, mesa_noglu }: +{ stdenv, fetchurl, pkgconfig, libGL }: stdenv.mkDerivation rec { - name = "glu-9.0.0"; + name = "glu-${version}"; + version = "9.0.0"; src = fetchurl { url = "ftp://ftp.freedesktop.org/pub/mesa/glu/${name}.tar.bz2"; @@ -12,7 +13,7 @@ stdenv.mkDerivation rec { ''; nativeBuildInputs = [ pkgconfig ]; - propagatedBuildInputs = [ mesa_noglu ]; + propagatedBuildInputs = [ libGL ]; outputs = [ "out" "dev" ]; diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix index 7aadc491bf8b1..07c966cbbfcd4 100644 --- a/pkgs/development/libraries/mesa/default.nix +++ b/pkgs/development/libraries/mesa/default.nix @@ -71,7 +71,7 @@ let branch = head (splitString "." version); in -stdenv.mkDerivation { +let self = stdenv.mkDerivation { name = "mesa-noglu-${version}"; src = fetchurl { @@ -227,6 +227,37 @@ stdenv.mkDerivation { passthru = { inherit libdrm version; inherit (libglvnd) driverLink; + + stubs = stdenv.mkDerivation { + name = "libGL-${libglvnd.version}"; + outputs = [ "out" "dev" ]; + + # Use stub libraries from libglvnd and headers from Mesa. + buildCommand = '' + ln -s ${libglvnd.out} $out + mkdir -p $dev/{,lib/pkgconfig,nix-support} + echo "$out" > $dev/nix-support/propagated-build-inputs + ln -s ${self.dev}/include $dev/include + + genPkgConfig() { + local name="$1" + local lib="$2" + + cat <<EOF >$dev/lib/pkgconfig/$name.pc + Name: $name + Description: $lib library + Version: ${self.version} + Libs: -L${libglvnd.out}/lib -l$lib + Cflags: -I${self.dev}/include + EOF + } + + genPkgConfig gl GL + genPkgConfig egl EGL + genPkgConfig glesv1_cm GLESv1_CM + genPkgConfig glesv2 GLESv2 + ''; + }; }; meta = with stdenv.lib; { @@ -236,4 +267,5 @@ stdenv.mkDerivation { platforms = platforms.linux; maintainers = with maintainers; [ eduarrrd vcunat ]; }; -} +}; +in self diff --git a/pkgs/development/libraries/ocl-icd/default.nix b/pkgs/development/libraries/ocl-icd/default.nix index afd2a7b12dfaa..ec6dc5f905280 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 }: +{stdenv, fetchurl, ruby, opencl-headers, libGL_driver }: stdenv.mkDerivation rec { name = "ocl-icd-${version}"; @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { buildInputs = [ opencl-headers ]; postPatch = '' - sed -i 's,"/etc/OpenCL/vendors","${libGL.driverLink}/etc/OpenCL/vendors",g' ocl_icd_loader.c + sed -i 's,"/etc/OpenCL/vendors","${libGL_driver.driverLink}/etc/OpenCL/vendors",g' ocl_icd_loader.c ''; meta = with stdenv.lib; { diff --git a/pkgs/development/libraries/qt-4.x/4.8/default.nix b/pkgs/development/libraries/qt-4.x/4.8/default.nix index bafe36647359f..10f892bc4d008 100644 --- a/pkgs/development/libraries/qt-4.x/4.8/default.nix +++ b/pkgs/development/libraries/qt-4.x/4.8/default.nix @@ -76,7 +76,6 @@ stdenv.mkDerivation rec { icu = icu.out; libXfixes = libXfixes.out; glibc = stdenv.cc.libc.out; - openglDriver = if libGLSupported then libGL.driverLink else "/no-such-path"; }) (fetchpatch { name = "fix-medium-font.patch"; diff --git a/pkgs/development/libraries/vulkan-loader/default.nix b/pkgs/development/libraries/vulkan-loader/default.nix index 4bc6420305174..9b73b9e1e4166 100644 --- a/pkgs/development/libraries/vulkan-loader/default.nix +++ b/pkgs/development/libraries/vulkan-loader/default.nix @@ -1,6 +1,6 @@ { stdenv, fetchgit, fetchFromGitHub, cmake, pkgconfig, git, python3, python3Packages, glslang, spirv-tools, x11, libxcb, libXrandr, - libXext, wayland, libGL, makeWrapper }: + libXext, wayland, libGL_driver, makeWrapper }: let version = "1.0.61.1"; @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { cmakeFlags = [ "-DBUILD_WSI_MIR_SUPPORT=OFF" - "-DFALLBACK_DATA_DIRS=${libGL.driverLink}/share:/usr/local/share:/usr/share" + "-DFALLBACK_DATA_DIRS=${libGL_driver.driverLink}/share:/usr/local/share:/usr/share" ]; outputs = [ "out" "dev" "demos" ]; diff --git a/pkgs/development/mobile/genymotion/default.nix b/pkgs/development/mobile/genymotion/default.nix index db3cb07765b9c..37834eff9473c 100644 --- a/pkgs/development/mobile/genymotion/default.nix +++ b/pkgs/development/mobile/genymotion/default.nix @@ -5,9 +5,9 @@ let packages = [ - stdenv.cc.cc zlib glib xorg.libX11 libxkbcommon libXmu libXi libXext + stdenv.cc.cc zlib glib xorg.libX11 libxkbcommon libXmu libXi libXext libGL ]; - libPath = "${stdenv.lib.makeLibraryPath packages}:${libGL.driverLink}/lib"; + libPath = "${stdenv.lib.makeLibraryPath packages}"; in stdenv.mkDerivation rec { name = "genymotion-${version}"; diff --git a/pkgs/misc/emulators/caprice32/default.nix b/pkgs/misc/emulators/caprice32/default.nix index 5928d53d54226..c0c3b40f6b65a 100644 --- a/pkgs/misc/emulators/caprice32/default.nix +++ b/pkgs/misc/emulators/caprice32/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchFromGitHub, libpng, pkgconfig, SDL, freetype, zlib, mesa }: +{ stdenv, fetchFromGitHub, libpng, pkgconfig, SDL, freetype, zlib }: stdenv.mkDerivation rec { diff --git a/pkgs/misc/emulators/wine/base.nix b/pkgs/misc/emulators/wine/base.nix index 9af5c889c42fb..b1a0ba5809f9e 100644 --- a/pkgs/misc/emulators/wine/base.nix +++ b/pkgs/misc/emulators/wine/base.nix @@ -53,7 +53,7 @@ stdenv.mkDerivation ((lib.optionalAttrs (! isNull buildScript) { ++ lib.optionals openclSupport [ pkgs.opencl-headers pkgs.ocl-icd ] ++ lib.optionals xmlSupport [ pkgs.libxml2 pkgs.libxslt ] ++ lib.optionals tlsSupport [ pkgs.openssl pkgs.gnutls ] - ++ lib.optionals openglSupport [ pkgs.libGLU_combined pkgs.libGL.osmesa pkgs.libdrm ] + ++ lib.optionals openglSupport [ pkgs.libGLU_combined pkgs.mesa_noglu.osmesa pkgs.libdrm ] ++ (with pkgs.xorg; [ libX11 libXi libXcursor libXrandr libXrender libXxf86vm libXcomposite libXext ]))); diff --git a/pkgs/os-specific/linux/amdgpu-pro/default.nix b/pkgs/os-specific/linux/amdgpu-pro/default.nix index a3c09c3de9940..6828fbf6b1c95 100644 --- a/pkgs/os-specific/linux/amdgpu-pro/default.nix +++ b/pkgs/os-specific/linux/amdgpu-pro/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, elfutils, libGL +{ stdenv, fetchurl, elfutils , xorg, patchelf, openssl, libdrm, libudev , libxcb, libxshmfence, epoxy, perl, zlib , fetchFromGitHub, ncurses @@ -13,8 +13,6 @@ let kernelDir = if libsOnly then null else kernel.dev; - inherit (libGL) driverLink; - bitness = if stdenv.is64bit then "64" else "32"; libArch = diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b301a8a4ff7f9..9171d03bbbb35 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -10498,60 +10498,47 @@ with pkgs; ## libGL/libGLU/Mesa stuff # Default libGL implementation, should provide headers and libGL.so/libEGL.so/... to link agains them - # Default implementation is `mesa`, but can be eventually replaced with `libglvnd`, - # or other runtime dispatcher - libGL = mesa_noglu; + libGL = libGLDarwinOr mesa_noglu.stubs; # Default libGLU - libGLU = mesa_glu; + libGLU = libGLDarwinOr mesa_glu; # Combined derivation, contains both libGL and libGLU # Please, avoid using this attribute. It was meant as transitional hack # for packages that assume that libGLU and libGL live in the same prefix. # libGLU_combined propagates both libGL and libGLU - libGLU_combined = mesa; + libGLU_combined = libGLDarwinOr (buildEnv { + name = "libGLU-combined"; + paths = [ libGL libGLU ]; + extraOutputsToInstall = [ "dev" ]; + }); # Default derivation with libGL.so.1 to link into /run/opengl-drivers (if need) - libGL_driver = mesa_drivers; + libGL_driver = libGLDarwinOr mesa_drivers; libGLSupported = lib.elem system lib.platforms.mesaPlatforms; - libGLDarwinOr = alternative: if stdenv.isDarwin - then callPackage ../development/libraries/mesa-darwin { - inherit (darwin.apple_sdk.frameworks) OpenGL; - inherit (darwin.apple_sdk.libs) Xplugin; - inherit (darwin) apple_sdk; - } - else alternative; + libGLDarwin = callPackage ../development/libraries/mesa-darwin { + inherit (darwin.apple_sdk.frameworks) OpenGL; + inherit (darwin.apple_sdk.libs) Xplugin; + inherit (darwin) apple_sdk; + }; - # FIXME: should be `libGL = libGLDarwinOr mesa_nonglu` but this change cause mass rebuild, - # until all packages will refer to libGL/GLU/GLU combined - mesa_noglu = libGLDarwinOr (callPackage ../development/libraries/mesa { + libGLDarwinOr = alternative: if stdenv.isDarwin then libGLDarwin else alternative; + + mesa_noglu = callPackage ../development/libraries/mesa { # makes it slower, but during runtime we link against just mesa_drivers # through /run/opengl-driver*, which is overriden according to config.grsecurity # grsecEnabled = true; # no more support in nixpkgs ATM - }); + }; - mesa_glu = libGLDarwinOr (callPackage ../development/libraries/mesa-glu { }); - mesa_drivers = libGLDarwinOr ( + mesa_glu = callPackage ../development/libraries/mesa-glu { }; + mesa_drivers = let mo = mesa_noglu.override { grsecEnabled = config.grsecurity or false; enableTextureFloats = true; }; - in mo.drivers - ); - - # Please, avoid using this attribute. It was meant as transitional hack - # for packages that assume that libGLU and libGL live in the same prefix. - # Otherwise it's better to use mesa_glu or mesa_noglu, depending on whether - # you need libGLU or not (_glu propagates _noglu). - mesa = libGLDarwinOr (buildEnv { - name = "mesa-${mesa_noglu.version}"; - paths = [ mesa_noglu.dev mesa_noglu.out mesa_glu mesa_glu.dev ]; - meta = { - platforms = lib.platforms.unix; - }; - }); + in mo.drivers; ## End libGL/libGLU/Mesa stuff |