summary refs log tree commit diff
path: root/pkgs/applications/graphics/unigine-valley
diff options
context:
space:
mode:
authorKier Davis <kierdavis@gmail.com>2016-10-23 21:35:51 +0100
committerGraham Christensen <graham@grahamc.com>2016-10-24 19:35:06 -0400
commita057dfc57fc91c252a60ae578ed17e24e1b5512d (patch)
tree7bd64212e4fd5fb5e8f0ec5ef3c4c880adfb0154 /pkgs/applications/graphics/unigine-valley
parenta95a5e48a9bd7f182aff9482881a536071c827e8 (diff)
downloadnixlib-a057dfc57fc91c252a60ae578ed17e24e1b5512d.tar
nixlib-a057dfc57fc91c252a60ae578ed17e24e1b5512d.tar.gz
nixlib-a057dfc57fc91c252a60ae578ed17e24e1b5512d.tar.bz2
nixlib-a057dfc57fc91c252a60ae578ed17e24e1b5512d.tar.lz
nixlib-a057dfc57fc91c252a60ae578ed17e24e1b5512d.tar.xz
nixlib-a057dfc57fc91c252a60ae578ed17e24e1b5512d.tar.zst
nixlib-a057dfc57fc91c252a60ae578ed17e24e1b5512d.zip
unigine-valley: init at 1.0-1
Closes https://github.com/NixOS/nixpkgs/pull/19813
Diffstat (limited to 'pkgs/applications/graphics/unigine-valley')
-rw-r--r--pkgs/applications/graphics/unigine-valley/default.nix104
1 files changed, 104 insertions, 0 deletions
diff --git a/pkgs/applications/graphics/unigine-valley/default.nix b/pkgs/applications/graphics/unigine-valley/default.nix
new file mode 100644
index 000000000000..8fef29fa1073
--- /dev/null
+++ b/pkgs/applications/graphics/unigine-valley/default.nix
@@ -0,0 +1,104 @@
+{ stdenv, fetchurl
+
+# Build-time dependencies
+, makeWrapper
+, file
+
+# Runtime dependencies
+, fontconfig
+, freetype
+, libX11
+, libXext
+, libXinerama
+, libXrandr
+, libXrender
+, openal}:
+
+let
+  version = "1.0";
+  pkgversion = "1";
+
+  arch = if stdenv.system == "x86_64-linux" then
+    "x64"
+  else if stdenv.system == "i686-linux" then
+    "x86"
+  else
+    abort "Unsupported platform";
+
+in
+  stdenv.mkDerivation {
+    name = "unigine-valley-${version}-${pkgversion}";
+
+    src = fetchurl {
+      url = "http://assets.unigine.com/d/Unigine_Valley-${version}.run";
+      sha256 = "5f0c8bd2431118551182babbf5f1c20fb14e7a40789697240dcaf546443660f4";
+    };
+
+    sourceRoot = "Unigine_Valley-${version}";
+
+    buildInputs = [file makeWrapper];
+
+    libPath = stdenv.lib.makeLibraryPath [
+      stdenv.cc.cc  # libstdc++.so.6
+      fontconfig
+      freetype
+      libX11
+      libXext
+      libXinerama
+      libXrandr
+      libXrender
+      openal
+    ];
+
+    unpackPhase = ''
+      cp $src extractor.run
+      chmod +x extractor.run
+      ./extractor.run --target $sourceRoot
+    '';
+
+    # The executable loads libGPUMonitor_${arch}.so "manually" (i.e. not through the ELF interpreter).
+    # However, it still uses the RPATH to look for it.
+    patchPhase = ''
+      # Patch ELF files.
+      elfs=$(find bin -type f | xargs file | grep ELF | cut -d ':' -f 1)
+      for elf in $elfs; do
+        echo "Patching $elf"
+        patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux-x86-64.so.2 $elf || true
+      done
+    '';
+
+    configurePhase = "";
+    buildPhase = "";
+
+    installPhase = ''
+      instdir=$out/opt/unigine/valley
+
+      # Install executables and libraries
+      mkdir -p $instdir/bin
+      install -m 0755 bin/browser_${arch} $instdir/bin
+      install -m 0755 bin/libApp{Stereo,Surround,Wall}_${arch}.so $instdir/bin
+      install -m 0755 bin/libGPUMonitor_${arch}.so $instdir/bin
+      install -m 0755 bin/libQt{Core,Gui,Network,WebKit,Xml}Unigine_${arch}.so.4 $instdir/bin
+      install -m 0755 bin/libUnigine_${arch}.so $instdir/bin
+      install -m 0755 bin/valley_${arch} $instdir/bin
+      install -m 0755 valley $instdir
+
+      # Install other files
+      cp -R data documentation $instdir
+
+      # Install and wrap executable
+      mkdir -p $out/bin
+      install -m 0755 valley $out/bin/valley
+      wrapProgram $out/bin/valley \
+        --run "cd $instdir" \
+        --prefix LD_LIBRARY_PATH : /run/opengl-driver/lib:$instdir/bin:$libPath
+    '';
+
+    meta = {
+      description = "The Unigine Valley GPU benchmarking tool";
+      homepage = "http://unigine.com/products/benchmarks/valley/";
+      license = stdenv.lib.licenses.unfree; # see also: /nix/store/*-unigine-valley-1.0/opt/unigine/valley/documentation/License.pdf
+      maintainers = [ stdenv.lib.maintainers.kierdavis ];
+      platforms = ["x86_64-linux" "i686-linux"];
+    };
+  }