nixpkgs-suyu/pkgs/applications/graphics/unigine-valley/default.nix
Kier Davis b81124b4fb
Fix hooks not being called when overriding phases in various packages
It's necessary to do this in order to fix ckb's compilation, now that
fixupPhase rejects derivation results containing references to the temporary
build directory. It seems like good practice so I've added it to the
other packages that I maintain.
2017-06-05 19:13:19 +01:00

112 lines
2.7 KiB
Nix

{ stdenv, fetchurl
# Build-time dependencies
, makeWrapper
, file
# Runtime dependencies
, fontconfig
, freetype
, libX11
, libXext
, libXinerama
, libXrandr
, libXrender
, openal}:
let
version = "1.0";
arch = if stdenv.system == "x86_64-linux" then
"x64"
else if stdenv.system == "i686-linux" then
"x86"
else
abort "Unsupported platform";
in
stdenv.mkDerivation rec {
name = "unigine-valley-${version}";
src = fetchurl {
url = "http://assets.unigine.com/d/Unigine_Valley-${version}.run";
sha256 = "5f0c8bd2431118551182babbf5f1c20fb14e7a40789697240dcaf546443660f4";
};
sourceRoot = "Unigine_Valley-${version}";
instPath = "lib/unigine/valley";
buildInputs = [file makeWrapper];
libPath = stdenv.lib.makeLibraryPath [
stdenv.cc.cc # libstdc++.so.6
fontconfig
freetype
libX11
libXext
libXinerama
libXrandr
libXrender
openal
];
unpackPhase = ''
runHook preUnpack
cp $src extractor.run
chmod +x extractor.run
./extractor.run --target $sourceRoot
runHook postUnpack
'';
patchPhase = ''
runHook prePatch
# Patch ELF files.
elfs=$(find bin -type f | xargs file | grep ELF | cut -d ':' -f 1)
for elf in $elfs; do
patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux-x86-64.so.2 $elf || true
done
runHook postPatch
'';
installPhase = ''
runHook preInstall
instdir=$out/${instPath}
# 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
runHook postInstall
'';
stripDebugList = ["${instPath}/bin"];
meta = {
description = "The Unigine Valley GPU benchmarking tool";
homepage = "http://unigine.com/products/benchmarks/valley/";
license = stdenv.lib.licenses.unfree; # see also: $out/$instPath/documentation/License.pdf
maintainers = [ stdenv.lib.maintainers.kierdavis ];
platforms = ["x86_64-linux" "i686-linux"];
};
}