summary refs log tree commit diff
path: root/pkgs/os-specific/linux/fusionio
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/os-specific/linux/fusionio')
-rw-r--r--pkgs/os-specific/linux/fusionio/srcs.nix22
-rw-r--r--pkgs/os-specific/linux/fusionio/util.nix45
-rw-r--r--pkgs/os-specific/linux/fusionio/vsl-fix-file-inode.patch13
-rw-r--r--pkgs/os-specific/linux/fusionio/vsl.nix37
4 files changed, 117 insertions, 0 deletions
diff --git a/pkgs/os-specific/linux/fusionio/srcs.nix b/pkgs/os-specific/linux/fusionio/srcs.nix
new file mode 100644
index 000000000000..fb632a6e9fba
--- /dev/null
+++ b/pkgs/os-specific/linux/fusionio/srcs.nix
@@ -0,0 +1,22 @@
+{ fetchurl }:
+rec {
+  version = "3.2.10";
+
+  libvsl = fetchurl {
+    name = "fusionio-libvsl-${version}.deb";
+    url = "https://drive.google.com/uc?export=download&id=0B7U0_ZBLoB2Wc01uNk1nVURMVFk";
+    sha256 = "1i8ii9dlyskj2dvad7nfvlm1wz2s4gy5llbl29hfa13w6nhcl5wk";
+  };
+
+  util = fetchurl {
+    name = "fusionio-util-${version}.deb";
+    url = "https://drive.google.com/uc?export=download&id=0B7U0_ZBLoB2WbDVuQkwzWjZONGs";
+    sha256 = "0aw64kk5cwchjhqh5n1lpqrrh5gn4qdalnmasd25z7sijy2flxgq";
+  };
+
+  vsl = fetchurl {
+    name = "fusionio-iomemory-vsl-${version}.tar.gz";
+    url = "https://drive.google.com/uc?export=download&id=0B7U0_ZBLoB2WbXFMbExEMUFCcWM";
+    sha256 = "1zm20aa1jmmqcqkb4p9r4jsgbg371zr1abdz32rw02i9687fsgcc";
+  };
+}
diff --git a/pkgs/os-specific/linux/fusionio/util.nix b/pkgs/os-specific/linux/fusionio/util.nix
new file mode 100644
index 000000000000..16f1ef73dba5
--- /dev/null
+++ b/pkgs/os-specific/linux/fusionio/util.nix
@@ -0,0 +1,45 @@
+{ stdenv, fetchurl, dpkg, glibc, gcc, libuuid }:
+
+let
+  srcs = import ./srcs.nix { inherit fetchurl; };
+in
+stdenv.mkDerivation {
+  name = "fusionio-util-${srcs.version}";
+
+  nativeBuildInputs = [ dpkg ];
+
+  buildCommand = ''
+    dpkg-deb -R ${srcs.libvsl} $TMPDIR
+    dpkg-deb -R ${srcs.util} $TMPDIR
+
+    rm $TMPDIR/usr/bin/fio-{bugreport,sanitize}
+
+    mkdir -p $out
+    cp -r $TMPDIR/{etc,usr/{bin,lib,share}} $out
+    for BIN in $(find $out/bin -type f); do
+      echo Patching $BIN
+      patchelf --set-interpreter "${glibc}/lib/ld-linux-x86-64.so.2" --set-rpath "${glibc}/lib:${gcc.cc}/lib:${libuuid}/lib:$out/lib" $BIN
+
+      # Test our binary to see if it was correctly patched
+      set +e
+      $BIN --help >/dev/null 2>&1
+      ST="$?"
+      set -e
+      if [ "$ST" -ge "10" ]; then
+        echo "Failed testing $BIN"
+        exit 1;
+      fi
+    done
+  '';
+
+  dontStrip = true;
+
+  meta = with stdenv.lib; {
+    homepage = http://fusionio.com;
+    description = "Fusionio command line utilities.";
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+    broken = stdenv.system != "x86_64-linux";
+    maintainers = with maintainers; [ wkennington ];
+  };
+}
diff --git a/pkgs/os-specific/linux/fusionio/vsl-fix-file-inode.patch b/pkgs/os-specific/linux/fusionio/vsl-fix-file-inode.patch
new file mode 100644
index 000000000000..25887ceee0f6
--- /dev/null
+++ b/pkgs/os-specific/linux/fusionio/vsl-fix-file-inode.patch
@@ -0,0 +1,13 @@
+diff --git a/kfile.c b/kfile.c
+index 5014e77..a65d921 100644
+--- a/kfile.c
++++ b/kfile.c
+@@ -51,7 +51,7 @@ fusion_inode * noinline kfio_fs_inode(fusion_file *fp)
+ #if KFIOC_STRUCT_FILE_HAS_PATH
+     return (fusion_inode *) ((struct file *)fp)->f_path.dentry->d_inode;
+ #else
+-    return (fusion_inode *) ((struct file *)fp)->f_dentry->d_inode;
++    return (fusion_inode *) file_inode((struct file *)fp);
+ #endif
+ }
+ 
diff --git a/pkgs/os-specific/linux/fusionio/vsl.nix b/pkgs/os-specific/linux/fusionio/vsl.nix
new file mode 100644
index 000000000000..f3909950cb91
--- /dev/null
+++ b/pkgs/os-specific/linux/fusionio/vsl.nix
@@ -0,0 +1,37 @@
+{ stdenv, fetchurl, kernel }:
+
+let
+  srcs = import ./srcs.nix { inherit fetchurl; };
+in
+stdenv.mkDerivation rec {
+  name = "fusionio-iomemory-vsl-${srcs.version}";
+
+  src = srcs.vsl;
+
+  prePatch = ''
+    cd root/usr/src/iomemory-vsl-*
+  '';
+
+  patches = stdenv.lib.optional (stdenv.lib.versionAtLeast kernel.version "3.19") ./vsl-fix-file-inode.patch;
+
+  preBuild = ''
+    sed -i Makefile kfio_config.sh \
+      -e "s,\(KERNELDIR=\"\|KERNEL_SRC =\)[^\"]*,\1${kernel.dev}/lib/modules/${kernel.modDirVersion}/build,g"
+    export DKMS_KERNEL_VERSION=${kernel.modDirVersion}
+    export TARGET="x86_64_cc48"
+  '';
+
+  installPhase = ''
+    export INSTALL_ROOT=$out
+    make modules_install
+  '';
+
+  meta = with stdenv.lib; {
+    homepage = http://fusionio.com;
+    description = "kernel driver for accessing fusion-io cards";
+    license = licenses.unfree;
+    platforms = [ "x86_64-linux" ];
+    broken = stdenv.system != "x86_64-linux";
+    maintainers = with maintainers; [ wkennington ];
+  };
+}