linuxPackages.nvidia_x11: refactor, build more from source

* Use libglvnd;
* Compile nvidia-settings, nvidia-persistenced from source;
* Generalize builder.
This commit is contained in:
Nikolay Amiantov
2017-02-08 16:57:46 +03:00
parent 750e7ba0d9
commit 2fd2fcf54d
17 changed files with 306 additions and 576 deletions
+3 -1
View File
@@ -5,6 +5,8 @@
# Other distributions do the same.
{ stdenv
, stdenv_i686
, lib
, bumblebee
, primusLib
, writeScriptBin
, primusLib_i686 ? null
@@ -18,7 +20,7 @@ let
primus = if useNvidia then primusLib_ else primusLib_.override { nvidia_x11 = null; };
primus_i686 = if useNvidia then primusLib_i686_ else primusLib_i686_.override { nvidia_x11 = null; };
ldPath = stdenv.lib.makeLibraryPath ([primus] ++ stdenv.lib.optional (primusLib_i686 != null) primus_i686);
ldPath = lib.makeLibraryPath ([ primus primus.glvnd ] ++ lib.optionals (primusLib_i686 != null) [ primus_i686 primus_i686.glvnd ]);
in writeScriptBin "primusrun" ''
#!${stdenv.shell}
+15 -7
View File
@@ -1,10 +1,16 @@
{ stdenv, fetchFromGitHub
, xlibsWrapper, mesa
, libX11, mesa_noglu
, nvidia_x11 ? null
, libX11
, libglvnd
}:
stdenv.mkDerivation {
let
aPackage =
if nvidia_x11 == null then mesa_noglu
else if nvidia_x11.useGLVND then libglvnd
else nvidia_x11;
in stdenv.mkDerivation {
name = "primus-lib-2015-04-28";
src = fetchFromGitHub {
@@ -14,18 +20,20 @@ stdenv.mkDerivation {
sha256 = "118jm57ccawskb8vjq3a9dpa2gh72nxzvx2zk7zknpy0arrdznj1";
};
buildInputs = [ libX11 mesa ];
buildInputs = [ libX11 mesa_noglu ];
makeFlags = [ "LIBDIR=$(out)/lib"
"PRIMUS_libGLa=${if nvidia_x11 == null then mesa else nvidia_x11}/lib/libGL.so"
"PRIMUS_libGLd=${mesa}/lib/libGL.so"
"PRIMUS_LOAD_GLOBAL=${mesa}/lib/libglapi.so"
"PRIMUS_libGLa=${aPackage}/lib/libGL.so"
"PRIMUS_libGLd=${mesa_noglu}/lib/libGL.so"
"PRIMUS_LOAD_GLOBAL=${mesa_noglu}/lib/libglapi.so"
];
installPhase = ''
ln -s $out/lib/libGL.so.1 $out/lib/libGL.so
'';
passthru.glvnd = if nvidia_x11 != null && nvidia_x11.useGLVND then nvidia_x11 else null;
meta = with stdenv.lib; {
description = "Low-overhead client-side GPU offloading";
homepage = "https://github.com/amonakov/primus";