mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-17 19:21:04 +00:00
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. (cherry picked from commit7fa05c77b7
) (cherry picked from commit34e1748391
) (cherry picked from commitd174eca1fa
)
This commit is contained in:
parent
fe1ef01f1e
commit
27b52adcb4
|
@ -1,7 +1,6 @@
|
|||
{ 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.
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -2,6 +2,7 @@ let
|
|||
genericBuild =
|
||||
{ pkgs, lib, stdenv, fetchFromGitHub, fetchpatch
|
||||
, 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.pname == "linux" && 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,7 +1,6 @@
|
|||
{ callPackage
|
||||
, kernel ? null
|
||||
, stdenv
|
||||
, linuxKernel
|
||||
, nixosTests
|
||||
, ...
|
||||
} @ args:
|
||||
|
@ -14,9 +13,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
|
||||
|
|
Loading…
Reference in a new issue