summary refs log tree commit diff
diff options
context:
space:
mode:
authorKier Davis <kierdavis@gmail.com>2017-02-04 20:24:48 +0000
committerNikolay Amiantov <ab@fmap.me>2017-02-07 15:20:30 +0300
commit83865b2c6cba71c15336ab9aefa3b6bed6986abe (patch)
tree118d091c54c236c8ddd218a45c409a2f56680439
parentf7b7d8e7b59f5e13338be76256e8b524eb993959 (diff)
downloadnixpkgs-83865b2c6cba71c15336ab9aefa3b6bed6986abe.tar
nixpkgs-83865b2c6cba71c15336ab9aefa3b6bed6986abe.tar.gz
nixpkgs-83865b2c6cba71c15336ab9aefa3b6bed6986abe.tar.bz2
nixpkgs-83865b2c6cba71c15336ab9aefa3b6bed6986abe.tar.lz
nixpkgs-83865b2c6cba71c15336ab9aefa3b6bed6986abe.tar.xz
nixpkgs-83865b2c6cba71c15336ab9aefa3b6bed6986abe.tar.zst
nixpkgs-83865b2c6cba71c15336ab9aefa3b6bed6986abe.zip
intel-ocl: init at r4.0-59481
-rw-r--r--pkgs/os-specific/linux/intel-ocl/default.nix61
-rw-r--r--pkgs/top-level/all-packages.nix2
2 files changed, 63 insertions, 0 deletions
diff --git a/pkgs/os-specific/linux/intel-ocl/default.nix b/pkgs/os-specific/linux/intel-ocl/default.nix
new file mode 100644
index 00000000000..688cfbb8df5
--- /dev/null
+++ b/pkgs/os-specific/linux/intel-ocl/default.nix
@@ -0,0 +1,61 @@
+{ stdenv, fetchzip, rpmextract, ncurses5, numactl, zlib }:
+
+stdenv.mkDerivation rec {
+  version = "r4.0-59481";
+  name = "intel-ocl-${version}";
+
+  src = fetchzip {
+    url = "https://software.intel.com/sites/default/files/managed/48/96/SRB4_linux64.zip";
+    sha256 = "1q69g28i6l7p13hnsk82g2qhdf2chwh4f0wvzac6xml67hna3v34";
+    stripRoot = false;
+  };
+
+  buildInputs = [ rpmextract ];
+
+  sourceRoot = ".";
+
+  libPath = stdenv.lib.makeLibraryPath [
+    stdenv.cc.cc.lib
+    ncurses5
+    numactl
+    zlib
+  ];
+
+  postUnpack = ''
+    # Extract the RPMs contained within the source ZIP.
+    rpmextract SRB4_linux64.zip/intel-opencl-${version}.x86_64.rpm
+    rpmextract SRB4_linux64.zip/intel-opencl-cpu-${version}.x86_64.rpm
+  '';
+
+  patchPhase = ''
+    # Remove libOpenCL.so, since we use ocl-icd's libOpenCL.so instead and this would cause a clash.
+    rm opt/intel/opencl/libOpenCL.so*
+
+    # Patch shared libraries.
+    for lib in opt/intel/opencl/*.so; do
+      patchelf --set-rpath "${libPath}:$out/lib/intel-ocl" $lib || true
+    done
+  '';
+
+  buildPhase = ''
+    # Create ICD file, which just contains the path of the corresponding shared library.
+    echo "$out/lib/intel-ocl/libintelocl.so" > intel.icd
+  '';
+
+  installPhase = ''
+    install -D -m 0755 opt/intel/opencl/*.so* -t $out/lib/intel-ocl
+    install -D -m 0644 opt/intel/opencl/*.{o,rtl,bin} -t $out/lib/intel-ocl
+    install -D -m 0644 opt/intel/opencl/{LICENSE,NOTICES} -t $out/share/doc/intel-ocl
+    install -D -m 0644 intel.icd -t $out/etc/OpenCL/vendors
+  '';
+
+  dontStrip = true;
+
+  meta = {
+    description = "Official OpenCL runtime for Intel CPUs";
+    homepage    = https://software.intel.com/en-us/articles/opencl-drivers;
+    license     = stdenv.lib.licenses.unfree;
+    platforms   = [ "x86_64-linux" ];
+    maintainers = [ stdenv.lib.maintainers.kierdavis ];
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index a16ecc797be..e9e20f795fc 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -11086,6 +11086,8 @@ with pkgs;
 
   intel2200BGFirmware = callPackage ../os-specific/linux/firmware/intel2200BGFirmware { };
 
+  intel-ocl = callPackage ../os-specific/linux/intel-ocl { };
+
   iomelt = callPackage ../os-specific/linux/iomelt { };
 
   iotop = callPackage ../os-specific/linux/iotop { };