From 2b52f2b762fc664c04b691ca3f355477f4f65414 Mon Sep 17 00:00:00 2001 From: Atemu Date: Sun, 2 May 2021 13:55:33 +0200 Subject: [PATCH 1/5] nixosTests.kernel-generic: simplify --- nixos/tests/kernel-generic.nix | 36 ++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/nixos/tests/kernel-generic.nix b/nixos/tests/kernel-generic.nix index 5993d0e6ab78..04e3cae117af 100644 --- a/nixos/tests/kernel-generic.nix +++ b/nixos/tests/kernel-generic.nix @@ -6,8 +6,8 @@ with pkgs.lib; let - makeKernelTest = version: linuxPackages: (import ./make-test-python.nix ({ pkgs, ... }: { - name = "kernel-${version}"; + makeKernelTest = linuxPackages: (import ./make-test-python.nix ({ pkgs, ... }: { + name = "kernel-${linuxPackages.kernel.version}"; meta = with pkgs.lib.maintainers; { maintainers = [ nequissimus ]; }; @@ -23,20 +23,22 @@ let assert "${linuxPackages.kernel.modDirVersion}" in machine.succeed("uname -a") ''; }) args); -in -with pkgs; { - linux_4_4 = makeKernelTest "4.4" linuxPackages_4_4; - linux_4_9 = makeKernelTest "4.9" linuxPackages_4_9; - linux_4_14 = makeKernelTest "4.14" linuxPackages_4_14; - linux_4_19 = makeKernelTest "4.19" linuxPackages_4_19; - linux_5_4 = makeKernelTest "5.4" linuxPackages_5_4; - linux_5_10 = makeKernelTest "5.10" linuxPackages_5_10; - linux_5_13 = makeKernelTest "5.13" linuxPackages_5_13; + kernels = { + inherit (pkgs) + linuxPackages_4_4 + linuxPackages_4_9 + linuxPackages_4_14 + linuxPackages_4_19 + linuxPackages_5_4 + linuxPackages_5_10 + linuxPackages_5_13 - linux_hardened_4_14 = makeKernelTest "4.14" linuxPackages_4_14_hardened; - linux_hardened_4_19 = makeKernelTest "4.19" linuxPackages_4_19_hardened; - linux_hardened_5_4 = makeKernelTest "5.4" linuxPackages_5_4_hardened; - linux_hardened_5_10 = makeKernelTest "5.10" linuxPackages_5_10_hardened; + linuxPackages_4_14_hardened + linuxPackages_4_19_hardened + linuxPackages_5_4_hardened + linuxPackages_5_10_hardened - linux_testing = makeKernelTest "testing" linuxPackages_testing; -} + linuxPackages_testing; + }; + +in mapAttrs (_: kernel: makeKernelTest kernel) kernels From 457653d99c31bc8e558bcbd38c7d23ed9fa8fb97 Mon Sep 17 00:00:00 2001 From: Atemu Date: Sun, 2 May 2021 15:39:39 +0200 Subject: [PATCH 2/5] nixosTests.kernel-generic: expose test-making functions Changed the name to be clearer, 'makeKernelTest' could imply that it wants a kernel pkg as its arg while it actually needs a set of linuxPackages. --- nixos/tests/kernel-generic.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/nixos/tests/kernel-generic.nix b/nixos/tests/kernel-generic.nix index 04e3cae117af..09ca43eac813 100644 --- a/nixos/tests/kernel-generic.nix +++ b/nixos/tests/kernel-generic.nix @@ -6,7 +6,7 @@ with pkgs.lib; let - makeKernelTest = linuxPackages: (import ./make-test-python.nix ({ pkgs, ... }: { + testsForLinuxPackages = linuxPackages: (import ./make-test-python.nix ({ pkgs, ... }: { name = "kernel-${linuxPackages.kernel.version}"; meta = with pkgs.lib.maintainers; { maintainers = [ nequissimus ]; @@ -41,4 +41,8 @@ let linuxPackages_testing; }; -in mapAttrs (_: kernel: makeKernelTest kernel) kernels +in mapAttrs (_: lP: testsForLinuxPackages lP) kernels // { + inherit testsForLinuxPackages; + + testsForKernel = kernel: testsForLinuxPackages (pkgs.linuxPackagesFor kernel); +} From a3f6ff6d48c42397fa716a8357c7b8be704fd61f Mon Sep 17 00:00:00 2001 From: Atemu Date: Sun, 2 May 2021 16:28:25 +0200 Subject: [PATCH 3/5] nixosTests.kernel-generic: add myself as maintainer --- nixos/tests/kernel-generic.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nixos/tests/kernel-generic.nix b/nixos/tests/kernel-generic.nix index 09ca43eac813..391a93e36981 100644 --- a/nixos/tests/kernel-generic.nix +++ b/nixos/tests/kernel-generic.nix @@ -9,7 +9,7 @@ let testsForLinuxPackages = linuxPackages: (import ./make-test-python.nix ({ pkgs, ... }: { name = "kernel-${linuxPackages.kernel.version}"; meta = with pkgs.lib.maintainers; { - maintainers = [ nequissimus ]; + maintainers = [ nequissimus atemu ]; }; machine = { ... }: From 0a43b6d5e9cbc1414eb32be7c2ade406cf2bc8f4 Mon Sep 17 00:00:00 2001 From: Atemu Date: Sun, 2 May 2021 15:46:34 +0200 Subject: [PATCH 4/5] kernel/generic: add kernelTests automatically Unfortunately, there seems to be no way of referencing an overridable version of the package you're in, so it had to be stubed to work at all. This isn't important for our current, very basic kernel nixosTests but might become important when we add more sophisticated ones. --- pkgs/os-specific/linux/kernel/generic.nix | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/generic.nix b/pkgs/os-specific/linux/kernel/generic.nix index 7f4f0f2d6bb6..7f2a97d868ed 100644 --- a/pkgs/os-specific/linux/kernel/generic.nix +++ b/pkgs/os-specific/linux/kernel/generic.nix @@ -58,6 +58,7 @@ , preferBuiltin ? stdenv.hostPlatform.linux-kernel.preferBuiltin or false , kernelArch ? stdenv.hostPlatform.linuxArch , kernelTests ? [] +, nixosTests , ... }: @@ -192,7 +193,16 @@ let kernelOlder = lib.versionOlder version; kernelAtLeast = lib.versionAtLeast version; passthru = kernel.passthru // (removeAttrs passthru [ "passthru" ]); - tests = kernelTests; + tests = let + overridableKernel = finalKernel // { + override = args: + lib.warn ( + "override is stubbed for NixOS kernel tests, not applying changes these arguments: " + + toString (lib.attrNames (if lib.isAttrs args then args else args {})) + ) overridableKernel; + }; + in [ (nixosTests.kernel-generic.testsForKernel overridableKernel) ] ++ kernelTests; }; -in lib.extendDerivation true passthru kernel + finalKernel = lib.extendDerivation true passthru kernel; +in finalKernel From d4afb739713c2a15068be0c6d9b72dbde0678d26 Mon Sep 17 00:00:00 2001 From: Atemu Date: Sun, 2 May 2021 15:49:32 +0200 Subject: [PATCH 5/5] kernels: remove manually declared kernelTests It is not necessary to declare these manually anymore --- pkgs/os-specific/linux/kernel/linux-4.14.nix | 2 -- pkgs/os-specific/linux/kernel/linux-4.19.nix | 2 -- pkgs/os-specific/linux/kernel/linux-4.4.nix | 2 -- pkgs/os-specific/linux/kernel/linux-4.9.nix | 2 -- pkgs/os-specific/linux/kernel/linux-5.10.nix | 2 -- pkgs/os-specific/linux/kernel/linux-5.13.nix | 2 -- pkgs/os-specific/linux/kernel/linux-5.4.nix | 2 -- pkgs/os-specific/linux/kernel/linux-testing.nix | 2 -- 8 files changed, 16 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/linux-4.14.nix b/pkgs/os-specific/linux/kernel/linux-4.14.nix index ce0bb98ad6ff..e1bde0657718 100644 --- a/pkgs/os-specific/linux/kernel/linux-4.14.nix +++ b/pkgs/os-specific/linux/kernel/linux-4.14.nix @@ -15,6 +15,4 @@ buildLinux (args // rec { url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz"; sha256 = "0wdk93qv91pa6bd3ff1gv7manhkzh190c5blcpl14cbh9m2ms8vz"; }; - - kernelTests = args.kernelTests or [ nixosTests.kernel-generic.linux_4_14 ]; } // (args.argsOverride or {})) diff --git a/pkgs/os-specific/linux/kernel/linux-4.19.nix b/pkgs/os-specific/linux/kernel/linux-4.19.nix index 3d1beb7bd6df..39a1806ba072 100644 --- a/pkgs/os-specific/linux/kernel/linux-4.19.nix +++ b/pkgs/os-specific/linux/kernel/linux-4.19.nix @@ -15,6 +15,4 @@ buildLinux (args // rec { url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz"; sha256 = "09ya7n0il8fipp8ksb8cyl894ihny2r75g70vbhclbv20q2pv0pj"; }; - - kernelTests = args.kernelTests or [ nixosTests.kernel-generic.linux_4_19 ]; } // (args.argsOverride or {})) diff --git a/pkgs/os-specific/linux/kernel/linux-4.4.nix b/pkgs/os-specific/linux/kernel/linux-4.4.nix index 146ff42c060e..f1f26e601d33 100644 --- a/pkgs/os-specific/linux/kernel/linux-4.4.nix +++ b/pkgs/os-specific/linux/kernel/linux-4.4.nix @@ -9,6 +9,4 @@ buildLinux (args // rec { url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz"; sha256 = "12grr2vc2mcvy7k8w1apqs9mhfg0lvz6mrpksym234m4n5yy48ng"; }; - - kernelTests = args.kernelTests or [ nixosTests.kernel-generic.linux_4_4 ]; } // (args.argsOverride or {})) diff --git a/pkgs/os-specific/linux/kernel/linux-4.9.nix b/pkgs/os-specific/linux/kernel/linux-4.9.nix index bbc5a58ec0cc..daafa08def49 100644 --- a/pkgs/os-specific/linux/kernel/linux-4.9.nix +++ b/pkgs/os-specific/linux/kernel/linux-4.9.nix @@ -9,6 +9,4 @@ buildLinux (args // rec { url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz"; sha256 = "0am9qg9j18j4fc5zi6bk1g0mi8dp31pl62wlihxhhkc5yspzrna3"; }; - - kernelTests = args.kernelTests or [ nixosTests.kernel-generic.linux_4_9 ]; } // (args.argsOverride or {})) diff --git a/pkgs/os-specific/linux/kernel/linux-5.10.nix b/pkgs/os-specific/linux/kernel/linux-5.10.nix index 8e3108a9d24b..ef6ad320896b 100644 --- a/pkgs/os-specific/linux/kernel/linux-5.10.nix +++ b/pkgs/os-specific/linux/kernel/linux-5.10.nix @@ -15,6 +15,4 @@ buildLinux (args // rec { url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz"; sha256 = "0b8lwfjlyd6j0csk71v07bxb5lrrzp545g1wv6kdk0kzq6maxfq0"; }; - - kernelTests = args.kernelTests or [ nixosTests.kernel-generic.linux_5_10 ]; } // (args.argsOverride or {})) diff --git a/pkgs/os-specific/linux/kernel/linux-5.13.nix b/pkgs/os-specific/linux/kernel/linux-5.13.nix index 87be091cd4b7..c31fd591a875 100644 --- a/pkgs/os-specific/linux/kernel/linux-5.13.nix +++ b/pkgs/os-specific/linux/kernel/linux-5.13.nix @@ -15,6 +15,4 @@ buildLinux (args // rec { url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz"; sha256 = "0za59652wrh4mlhd9w3dx4y1nnk8nrj9hb56pssgdckdvp7rp4l0"; }; - - kernelTests = args.kernelTests or [ nixosTests.kernel-generic.linux_5_13 ]; } // (args.argsOverride or { })) diff --git a/pkgs/os-specific/linux/kernel/linux-5.4.nix b/pkgs/os-specific/linux/kernel/linux-5.4.nix index 1433c5925a92..9b6da27876ba 100644 --- a/pkgs/os-specific/linux/kernel/linux-5.4.nix +++ b/pkgs/os-specific/linux/kernel/linux-5.4.nix @@ -15,6 +15,4 @@ buildLinux (args // rec { url = "mirror://kernel/linux/kernel/v5.x/linux-${version}.tar.xz"; sha256 = "0zx3hj8fc0qpdmkn56cna5438wjxmj42a69msbkxlg4mnz6d0w84"; }; - - kernelTests = args.kernelTests or [ nixosTests.kernel-generic.linux_5_4 ]; } // (args.argsOverride or {})) diff --git a/pkgs/os-specific/linux/kernel/linux-testing.nix b/pkgs/os-specific/linux/kernel/linux-testing.nix index 4e2ef7b4652e..2caea08416ea 100644 --- a/pkgs/os-specific/linux/kernel/linux-testing.nix +++ b/pkgs/os-specific/linux/kernel/linux-testing.nix @@ -14,8 +14,6 @@ buildLinux (args // rec { sha256 = "sha256-PunFd6tOsmrsPItp2QX4TEVxHnvvi1BMSwWio/DTlMU="; }; - kernelTests = args.kernelTests or [ nixosTests.kernel-generic.linux_testing ]; - # Should the testing kernels ever be built on Hydra? extraMeta.hydraPlatforms = [];