1{
2 lib,
3 stdenv,
4 fetchurl,
5 autoPatchelfHook,
6 addDriverRunpath,
7 makeWrapper,
8 ocl-icd,
9 vulkan-loader,
10}:
11
12let
13 inherit (stdenv.hostPlatform.uname) processor;
14 version = "5.5.1";
15 sources = {
16 "x86_64-linux" = {
17 url = "https://cdn.geekbench.com/Geekbench-${version}-Linux.tar.gz";
18 hash = "sha256-MgN+VcPcjzYP4Wt/uxiNMTh+p1mA5I2M8CgzDjI5xAQ=";
19 };
20 "aarch64-linux" = {
21 url = "https://cdn.geekbench.com/Geekbench-${version}-LinuxARMPreview.tar.gz";
22 hash = "sha256-nrPKnsMqvw6+HGQAKxkQi/6lPEEca1VrDCaJUUuMvW8=";
23 };
24 };
25in
26stdenv.mkDerivation {
27 inherit version;
28 pname = "geekbench";
29
30 src = fetchurl (
31 sources.${stdenv.system} or (throw "unsupported system ${stdenv.hostPlatform.system}")
32 );
33
34 dontConfigure = true;
35 dontBuild = true;
36
37 nativeBuildInputs = [
38 autoPatchelfHook
39 makeWrapper
40 ];
41
42 buildInputs = [ (lib.getLib stdenv.cc.cc) ];
43
44 installPhase = ''
45 runHook preInstall
46
47 mkdir -p $out/bin
48 cp -r geekbench.plar geekbench5 geekbench_${processor} $out/bin
49
50 for f in geekbench5 geekbench_${processor} ; do
51 wrapProgram $out/bin/$f \
52 --prefix LD_LIBRARY_PATH : "${
53 lib.makeLibraryPath [
54 addDriverRunpath.driverLink
55 ocl-icd
56 vulkan-loader
57 ]
58 }"
59 done
60
61 runHook postInstall
62 '';
63
64 meta = with lib; {
65 description = "Cross-platform benchmark";
66 homepage = "https://geekbench.com/";
67 sourceProvenance = with sourceTypes; [ binaryNativeCode ];
68 license = licenses.unfree;
69 maintainers = [ maintainers.michalrus ];
70 platforms = builtins.attrNames sources;
71 mainProgram = "geekbench5";
72 };
73}