From 56ffc2ecd2d37c29dfa56af7841fa31837702502 Mon Sep 17 00:00:00 2001 From: Nikolay Amiantov Date: Sat, 5 Dec 2015 00:31:10 +0300 Subject: [PATCH] primus: 1.0.0748176 -> 20151204, add useNvidia flag --- pkgs/tools/X11/primus/builder.sh | 12 ----------- pkgs/tools/X11/primus/default.nix | 33 +++++++++-------------------- pkgs/tools/X11/primus/lib.nix | 35 ++++++++++++++++++++++--------- pkgs/top-level/all-packages.nix | 13 ++++++------ 4 files changed, 41 insertions(+), 52 deletions(-) delete mode 100644 pkgs/tools/X11/primus/builder.sh diff --git a/pkgs/tools/X11/primus/builder.sh b/pkgs/tools/X11/primus/builder.sh deleted file mode 100644 index 3c6b6afdc09..00000000000 --- a/pkgs/tools/X11/primus/builder.sh +++ /dev/null @@ -1,12 +0,0 @@ -source $stdenv/setup - -cp -r $src src -cd src - -export LIBDIR=$out/lib -export PRIMUS_libGLa=$nvidia/lib/libGL.so -export PRIMUS_libGLd=$mesa/lib/libGL.so -export PRIMUS_LOAD_GLOBAL=$mesa/lib/libglapi.so - -make -ln -s $LIBDIR/libGL.so.1 $LIBDIR/libGL.so diff --git a/pkgs/tools/X11/primus/default.nix b/pkgs/tools/X11/primus/default.nix index 1aa7909a43d..f0a971dde18 100644 --- a/pkgs/tools/X11/primus/default.nix +++ b/pkgs/tools/X11/primus/default.nix @@ -5,31 +5,18 @@ # Other distributions do the same. { stdenv , primusLib -, writeScript +, writeScriptBin , primusLib_i686 ? null +, useNvidia ? true }: -with stdenv.lib; + let - version = "1.0.0748176"; - ldPath = makeLibraryPath ([primusLib] ++ optional (primusLib_i686 != null) primusLib_i686); - primusrun = writeScript "primusrun" -'' + 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); + +in writeScriptBin "primusrun" '' + #!${stdenv.shell} export LD_LIBRARY_PATH=${ldPath}:$LD_LIBRARY_PATH exec "$@" -''; -in -stdenv.mkDerivation { - name = "primus-${version}"; - builder = writeScript "builder" - '' - source $stdenv/setup - mkdir -p $out/bin - cp ${primusrun} $out/bin/primusrun - ''; - - meta = { - homepage = https://github.com/amonakov/primus; - description = "Faster OpenGL offloading for Bumblebee"; - maintainers = with maintainers; [ coconnor ]; - }; -} +'' diff --git a/pkgs/tools/X11/primus/lib.nix b/pkgs/tools/X11/primus/lib.nix index 96a4ac16c9b..ce805933109 100644 --- a/pkgs/tools/X11/primus/lib.nix +++ b/pkgs/tools/X11/primus/lib.nix @@ -1,20 +1,35 @@ { stdenv, fetchgit , xlibsWrapper, mesa -, nvidia +, nvidia_x11 ? null +, libX11 }: -let - version = "1.0.0748176"; -in + stdenv.mkDerivation { - name = "primus-lib-${version}"; + name = "primus-lib-20151204"; + src = fetchgit { url = git://github.com/amonakov/primus.git; - rev = "074817614c014e3a99259388cb18fd54648b659a"; - sha256 = "0mrh432md6zrm16avxyk57mgszrqpgwdjahspchvlaccqxp3x82v"; + rev = "d1afbf6fce2778c0751eddf19db9882e04f18bfd"; + sha256 = "8f095b5e2030cdb155a42a49873832843c1e4dc3087a6fb94d198de982609923"; }; - inherit nvidia mesa; + buildInputs = [ libX11 mesa ]; - buildInputs = [ xlibsWrapper mesa ]; - builder = ./builder.sh; + 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" + ]; + + installPhase = '' + ln -s $out/lib/libGL.so.1 $out/lib/libGL.so + ''; + + meta = with stdenv.lib; { + description = "Low-overhead client-side GPU offloading"; + homepage = https://github.com/amonakov/primus; + platforms = platforms.linux; + license = licenses.bsd2; + maintainers = with maintainers; [ abbradar ]; + }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ffeb3dd4dc0..b5932c0d6e7 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -13387,15 +13387,14 @@ let virtualgl = callPackage ../tools/X11/virtualgl { }; - primus = callPackage ../tools/X11/primus { - primusLib = callPackage ../tools/X11/primus/lib.nix { - nvidia = linuxPackages.nvidia_x11; - }; + primusLib = callPackage ../tools/X11/primus/lib.nix { + nvidia_x11 = linuxPackages.nvidia_x11.override { libsOnly = true; }; + }; + + primus = callPackage ../tools/X11/primus { primusLib_i686 = if system == "x86_64-linux" - then callPackage_i686 ../tools/X11/primus/lib.nix { - nvidia = pkgsi686Linux.linuxPackages.nvidia_x11.override { libsOnly = true; }; - } + then pkgsi686Linux.primusLib else null; };