Commit 7fa05c77 authored by Andrew Marshall's avatar Andrew Marshall
Browse files

zfs: dynamically determine latestCompatibleLinuxPackages

This removes the need to micromanage this value, instead we simply find
the correct one based on the existing kernelCompatible attr (though that
is now a function). This not only simplifies ZFS upgrades, but also
whenever Kernel versions are removed due to EOL.
parent 222e62af
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
{ callPackage
, kernel ? null
, stdenv
, linuxKernel
, lib
, nixosTests
, ...
@@ -15,9 +14,7 @@ callPackage ./generic.nix args {
  # this attribute is the correct one for this package.
  kernelModuleAttribute = "zfs_2_1";
  # check the release notes for compatible kernels
  kernelCompatible = kernel.kernelOlder "6.8";

  latestCompatibleLinuxPackages = linuxKernel.packages.linux_6_6;
  kernelCompatible = kernel: kernel.kernelOlder "6.8";

  # This is a fixed version to the 2.1.x series, move only
  # if the 2.1.x series moves.
+1 −4
Original line number Diff line number Diff line
@@ -2,7 +2,6 @@
, kernel ? null
, stdenv
, lib
, linuxKernel
, nixosTests
, ...
} @ args:
@@ -15,9 +14,7 @@ callPackage ./generic.nix args {
  # this attribute is the correct one for this package.
  kernelModuleAttribute = "zfs_2_2";
  # check the release notes for compatible kernels
  kernelCompatible = kernel.kernelOlder "6.10";

  latestCompatibleLinuxPackages = linuxKernel.packages.linux_6_6;
  kernelCompatible = kernel: kernel.kernelOlder "6.10";

  # this package should point to the latest release.
  version = "2.2.5";
+9 −3
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@ let
  genericBuild =
  { pkgs, lib, stdenv, fetchFromGitHub
  , autoreconfHook269, util-linux, nukeReferences, coreutils
  , linuxKernel
  , perl
  , configFile ? "all"

@@ -27,7 +28,6 @@ let
  , kernelModuleAttribute
  , extraPatches ? []
  , rev ? "zfs-${version}"
  , latestCompatibleLinuxPackages
  , kernelCompatible ? null
  , maintainers ? (with lib.maintainers; [ amarshall ])
  , tests
@@ -198,7 +198,13 @@ let
    outputs = [ "out" ] ++ optionals buildUser [ "dev" ];

    passthru = {
      inherit enableMail latestCompatibleLinuxPackages kernelModuleAttribute;
      inherit enableMail kernelModuleAttribute;
      latestCompatibleLinuxPackages = lib.pipe linuxKernel.packages [
        builtins.attrValues
        (builtins.filter (kPkgs: (builtins.tryEval kPkgs).success && kPkgs ? kernel && kPkgs.kernel.passthru.isVanilla && kernelCompatible kPkgs.kernel))
        (builtins.sort (a: b: (lib.versionOlder a.kernel.version b.kernel.version)))
        lib.last
      ];
      # The corresponding userspace tools to this instantiation
      # of the ZFS package set.
      userspaceTools = genericBuild (outerArgs // {
@@ -235,7 +241,7 @@ let
      mainProgram = "zfs";
      # If your Linux kernel version is not yet supported by zfs, try zfs_unstable.
      # On NixOS set the option `boot.zfs.package = pkgs.zfs_unstable`.
      broken = buildKernel && (kernelCompatible != null) && !kernelCompatible;
      broken = buildKernel && (kernelCompatible != null) && !(kernelCompatible kernel);
    };
  };
in
+1 −4
Original line number Diff line number Diff line
{ callPackage
, kernel ? null
, stdenv
, linuxKernel
, nixosTests
, fetchpatch
, ...
@@ -15,9 +14,7 @@ callPackage ./generic.nix args {
  # this attribute is the correct one for this package.
  kernelModuleAttribute = "zfs_unstable";
  # check the release notes for compatible kernels
  kernelCompatible = kernel.kernelOlder "6.11";

  latestCompatibleLinuxPackages = linuxKernel.packages.linux_6_10;
  kernelCompatible = kernel: kernel.kernelOlder "6.11";

  # this package should point to a version / git revision compatible with the latest kernel release
  # IMPORTANT: Always use a tagged release candidate or commits from the