diff --git a/pkgs/os-specific/linux/spl/default.nix b/pkgs/os-specific/linux/spl/default.nix index 8f4a7491427f..618b59b32aa5 100644 --- a/pkgs/os-specific/linux/spl/default.nix +++ b/pkgs/os-specific/linux/spl/default.nix @@ -1,7 +1,6 @@ -{ stdenv, fetchFromGitHub, kernel, perl, autoconf, automake, libtool, coreutils, gawk }: +{ callPackage, fetchFromGitHub, ... } @ args: -stdenv.mkDerivation rec { - name = "spl-${version}-${kernel.version}"; +callPackage ./generic.nix (args // rec { version = "0.6.3-1.2"; src = fetchFromGitHub { @@ -12,38 +11,4 @@ stdenv.mkDerivation rec { }; patches = [ ./install_prefix.patch ./const.patch ./time.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; [ jcumming wizeman ]; - }; -} +}) diff --git a/pkgs/os-specific/linux/spl/generic.nix b/pkgs/os-specific/linux/spl/generic.nix new file mode 100644 index 000000000000..0e78e67274ab --- /dev/null +++ b/pkgs/os-specific/linux/spl/generic.nix @@ -0,0 +1,60 @@ +{ stdenv, autoconf, automake, libtool, coreutils, gawk +, configFile ? "all" + +# Kernel dependencies +, kernel ? null + +# Version specific parameters +, version, src, patches +, ... +}: + +with stdenv.lib; +let + needsKernelSource = any (n: n == configFile) [ "kernel" "all" ]; +in + +assert any (n: n == configFile) [ "kernel" "user" "all" ]; +assert needsKernelSource -> kernel != null; + +stdenv.mkDerivation rec { + name = "spl-${configFile}-${version}${optionalString needsKernelSource "-${kernel.version}"}"; + + inherit version src patches; + + buildInputs = [ 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-config=${configFile}" + ] ++ optionals needsKernelSource [ + "--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 = platforms.linux; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ jcumming wizeman wkennington ]; + }; +} diff --git a/pkgs/os-specific/linux/spl/git.nix b/pkgs/os-specific/linux/spl/git.nix index 772cad567c90..fc204bc02321 100644 --- a/pkgs/os-specific/linux/spl/git.nix +++ b/pkgs/os-specific/linux/spl/git.nix @@ -1,7 +1,7 @@ -{ stdenv, fetchgit, kernel, perl, autoconf, automake, libtool, coreutils, gawk }: +{ callPackage, fetchgit, ... } @ args: -stdenv.mkDerivation { - name = "spl-0.6.4-${kernel.version}"; +callPackage ./generic.nix (args // rec { + version = "086476f"; src = fetchgit { url = git://github.com/zfsonlinux/spl.git; @@ -10,38 +10,4 @@ stdenv.mkDerivation { }; patches = [ ./const.patch ./install_prefix-git.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 ]; - }; -} +}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2e447162a883..3bfad98f2fe8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -8774,8 +8774,14 @@ let seturgent = callPackage ../os-specific/linux/seturgent { }; - spl = callPackage ../os-specific/linux/spl { }; - spl_git = callPackage ../os-specific/linux/spl/git.nix { }; + spl = callPackage ../os-specific/linux/spl { + configFile = "kernel"; + inherit kernel; + }; + spl_git = callPackage ../os-specific/linux/spl/git.nix { + configFile = "kernel"; + inherit kernel; + }; sysdig = callPackage ../os-specific/linux/sysdig {}; @@ -9013,6 +9019,13 @@ let statifier = builderDefsPackage (import ../os-specific/linux/statifier) { }; + spl = callPackage ../os-specific/linux/spl { + configFile = "user"; + }; + spl_git = callPackage ../os-specific/linux/spl/git.nix { + configFile = "user"; + }; + sysdig = callPackage ../os-specific/linux/sysdig { kernel = null; }; # pkgs.sysdig is a client, for a driver look at linuxPackagesFor