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.wip/yesman
parent
b2250ad851
commit
419a71e1e5
@ -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 ]; |
||||
}; |
||||
} |
@ -0,0 +1,52 @@ |
||||
{ stdenv, fetchgit, kernel, spl_git, perl, autoconf, automake, libtool, zlib, libuuid, coreutils, utillinux }: |
||||
|
||||
stdenv.mkDerivation { |
||||
name = "zfs-0.6.3pre-${kernel.version}"; |
||||
|
||||
src = fetchgit { |
||||
url = git://github.com/zfsonlinux/zfs.git; |
||||
rev = "de39ec11b885f97e6256324ee89eaf75af9852f6"; |
||||
sha256 = "02hrhka9hg0vn4z20x7xzwrkr340pv9qwvwj8phjdm5ln321jh33"; |
||||
}; |
||||
|
||||
patches = [ ./mount_zfs_prefix.patch ./nix-build.patch ]; |
||||
|
||||
buildInputs = [ spl_git perl autoconf automake libtool zlib libuuid coreutils ]; |
||||
|
||||
# for zdb to get the rpath to libgcc_s, needed for pthread_cancel to work |
||||
NIX_CFLAGS_LINK = "-lgcc_s"; |
||||
|
||||
preConfigure = '' |
||||
./autogen.sh |
||||
|
||||
substituteInPlace ./module/zfs/zfs_ctldir.c --replace "umount -t zfs" "${utillinux}/bin/umount -t zfs" |
||||
substituteInPlace ./module/zfs/zfs_ctldir.c --replace "mount -t zfs" "${utillinux}/bin/mount -t zfs" |
||||
substituteInPlace ./lib/libzfs/libzfs_mount.c --replace "/bin/umount" "${utillinux}/bin/umount" |
||||
substituteInPlace ./lib/libzfs/libzfs_mount.c --replace "/bin/mount" "${utillinux}/bin/mount" |
||||
substituteInPlace ./udev/rules.d/* --replace "/lib/udev/vdev_id" "$out/lib/udev/vdev_id" |
||||
substituteInPlace ./cmd/ztest/ztest.c --replace "/usr/sbin/ztest" "$out/sbin/ztest" |
||||
substituteInPlace ./cmd/ztest/ztest.c --replace "/usr/sbin/zdb" "$out/sbin/zdb" |
||||
''; |
||||
|
||||
configureFlags = '' |
||||
--disable-systemd |
||||
--with-linux=${kernel.dev}/lib/modules/${kernel.modDirVersion}/source |
||||
--with-linux-obj=${kernel.dev}/lib/modules/${kernel.modDirVersion}/build |
||||
--with-spl=${spl_git}/libexec/spl |
||||
''; |
||||
|
||||
enableParallelBuilding = true; |
||||
|
||||
meta = { |
||||
description = "ZFS Filesystem Linux Kernel module"; |
||||
longDescription = '' |
||||
ZFS is a filesystem that combines a logical volume manager with a |
||||
Copy-On-Write filesystem with data integrity detection and repair, |
||||
snapshotting, cloning, block devices, deduplication, and more. |
||||
''; |
||||
homepage = http://zfsonlinux.org/; |
||||
license = stdenv.lib.licenses.cddl; |
||||
platforms = stdenv.lib.platforms.linux; |
||||
maintainers = with stdenv.lib.maintainers; [ wizeman ]; |
||||
}; |
||||
} |
Loading…
Reference in new issue