summary refs log tree commit diff
path: root/pkgs/os-specific/linux/spl
diff options
context:
space:
mode:
authorRicardo M. Correia <rcorreia@wizy.org>2014-03-22 18:27:23 +0100
committerRicardo M. Correia <rcorreia@wizy.org>2014-04-23 01:42:52 +0200
commit419a71e1e533fcc380f27d902194c8878882fa20 (patch)
tree779583cae914ab5de73ca5ff6b78d873d2c1e8ed /pkgs/os-specific/linux/spl
parentb2250ad851e2e7afa5049870b7955448a57c25dc (diff)
downloadnixlib-419a71e1e533fcc380f27d902194c8878882fa20.tar
nixlib-419a71e1e533fcc380f27d902194c8878882fa20.tar.gz
nixlib-419a71e1e533fcc380f27d902194c8878882fa20.tar.bz2
nixlib-419a71e1e533fcc380f27d902194c8878882fa20.tar.lz
nixlib-419a71e1e533fcc380f27d902194c8878882fa20.tar.xz
nixlib-419a71e1e533fcc380f27d902194c8878882fa20.tar.zst
nixlib-419a71e1e533fcc380f27d902194c8878882fa20.zip
spl, zfs: Add git versions, based on recent commits
Upstream has not been tagging new versions for a long time, but we need
compatibility with newer kernels. The 0.6.2 versions already have a bunch of
backported compatibility patches, but 3.14 kernels need even more.

Also, the git versions have fixed a bunch of crashes and other bugs, so perhaps
we should just bite the bullet and just use recent git versions (as sometimes
upstream recommends, when people run into bugs).

This adds a new "boot.zfs.useGit" boolean option, so that a user can
easily opt into using the git versions.
Diffstat (limited to 'pkgs/os-specific/linux/spl')
-rw-r--r--pkgs/os-specific/linux/spl/git.nix46
1 files changed, 46 insertions, 0 deletions
diff --git a/pkgs/os-specific/linux/spl/git.nix b/pkgs/os-specific/linux/spl/git.nix
new file mode 100644
index 000000000000..ba7ccc7348ee
--- /dev/null
+++ b/pkgs/os-specific/linux/spl/git.nix
@@ -0,0 +1,46 @@
+{ stdenv, fetchgit, kernel, perl, autoconf, automake, libtool, coreutils, gawk }:
+
+stdenv.mkDerivation {
+  name = "spl-0.6.3pre-${kernel.version}";
+  src = fetchgit {
+    url = git://github.com/zfsonlinux/spl.git;
+    rev = "89aa97059d7ddad668a5118aef7914743162a5e8";
+    sha256 = "1x4pba26zbyly8xd9q8s4av9v88ck0n9szxx72wzcn0s25rsyanx";
+  };
+
+  patches = [ ./install_prefix.patch ];
+
+  buildInputs = [ perl autoconf automake libtool ];
+
+  preConfigure = ''
+    ./autogen.sh
+
+    substituteInPlace ./module/spl/spl-generic.c --replace /usr/bin/hostid hostid
+    substituteInPlace ./module/spl/spl-module.c  --replace /bin/mknod mknod
+
+    substituteInPlace ./module/spl/spl-generic.c --replace "PATH=/sbin:/usr/sbin:/bin:/usr/bin" "PATH=${coreutils}:${gawk}:/bin"
+    substituteInPlace ./module/splat/splat-vnode.c --replace "PATH=/sbin:/usr/sbin:/bin:/usr/bin" "PATH=${coreutils}:/bin"
+    substituteInPlace ./module/splat/splat-linux.c --replace "PATH=/sbin:/usr/sbin:/bin:/usr/bin" "PATH=${coreutils}:/bin"
+  '';
+
+  configureFlags = ''
+     --with-linux=${kernel.dev}/lib/modules/${kernel.modDirVersion}/source
+     --with-linux-obj=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build
+  '';
+
+  enableParallelBuilding = true;
+
+  meta = {
+    description = "Kernel module driver for solaris porting layer (needed by in-kernel zfs)";
+
+    longDescription = ''
+      This kernel module is a porting layer for ZFS to work inside the linux
+      kernel.
+    '';
+
+    homepage = http://zfsonlinux.org/;
+    platforms = stdenv.lib.platforms.linux;
+    license = stdenv.lib.licenses.gpl2Plus;
+    maintainers = with stdenv.lib.maintainers; [ wizeman ];
+  };
+}