linux: make sure that src
/version
actually refer to the declaring file
With this change it's ensured that `builtins.unsafeGetAttrPos` actually points to `<nixpkgs/pkgs/os-specific/linux/kernel/linux-x.y.nix>` when retrieving the position of `src` or `version` of `linuxPackages.kernel`. This is relevant to make sure that ofborg pinging maintainers on kernel updates actually works[1]. While the underlying issue should be fixed in ofborg or Nix itself, this is IMHO a pragmatic change to ensure that all kernel maintainers are automatically notified on updates. [1] https://github.com/NixOS/nixpkgs/pull/143113#issuecomment-953319957
This commit is contained in:
parent
850251213a
commit
63185299f4
2 changed files with 21 additions and 6 deletions
|
@ -60,7 +60,7 @@
|
|||
, kernelTests ? []
|
||||
, nixosTests
|
||||
, ...
|
||||
}:
|
||||
}@args:
|
||||
|
||||
# Note: this package is used for bootstrapping fetchurl, and thus
|
||||
# cannot use fetchpatch! All mutable patches (generated by GitHub or
|
||||
|
@ -70,6 +70,18 @@
|
|||
assert stdenv.isLinux;
|
||||
|
||||
let
|
||||
# Dirty hack to make sure that `version` & `src` have
|
||||
# `<nixpkgs/pkgs/os-specific/linux/kernel/linux-x.y.nix>` as position
|
||||
# when using `builtins.unsafeGetAttrPos`.
|
||||
#
|
||||
# This is to make sure that ofborg actually detects changes in the kernel derivation
|
||||
# and pings all maintainers.
|
||||
#
|
||||
# For further context, see https://github.com/NixOS/nixpkgs/pull/143113#issuecomment-953319957
|
||||
basicArgs = builtins.removeAttrs
|
||||
args
|
||||
(lib.filter (x: ! (builtins.elem x [ "version" "src" ])) (lib.attrNames args));
|
||||
|
||||
# Combine the `features' attribute sets of all the kernel patches.
|
||||
kernelFeatures = lib.foldr (x: y: (x.features or {}) // y) ({
|
||||
iwlwifi = true;
|
||||
|
@ -180,13 +192,14 @@ let
|
|||
};
|
||||
}; # end of configfile derivation
|
||||
|
||||
kernel = (callPackage ./manual-config.nix { inherit buildPackages; }) {
|
||||
inherit version modDirVersion src kernelPatches randstructSeed lib stdenv extraMakeFlags extraMeta configfile;
|
||||
kernel = (callPackage ./manual-config.nix { inherit buildPackages; }) (basicArgs // {
|
||||
inherit modDirVersion kernelPatches randstructSeed lib stdenv extraMakeFlags extraMeta configfile;
|
||||
pos = builtins.unsafeGetAttrPos "version" args;
|
||||
|
||||
config = { CONFIG_MODULES = "y"; CONFIG_FW_LOADER = "m"; };
|
||||
};
|
||||
});
|
||||
|
||||
passthru = {
|
||||
passthru = basicArgs // {
|
||||
features = kernelFeatures;
|
||||
inherit commonStructuredConfig structuredExtraConfig extraMakeFlags isZen isHardened isLibre modDirVersion;
|
||||
isXen = lib.warn "The isXen attribute is deprecated. All Nixpkgs kernels that support it now have Xen enabled." true;
|
||||
|
|
|
@ -19,6 +19,8 @@ in {
|
|||
stdenv,
|
||||
# The kernel version
|
||||
version,
|
||||
# Position of the Linux build expression
|
||||
pos ? null,
|
||||
# Additional kernel make flags
|
||||
extraMakeFlags ? [],
|
||||
# The version of the kernel module directory
|
||||
|
@ -333,4 +335,4 @@ stdenv.mkDerivation ((drvAttrs config stdenv.hostPlatform.linux-kernel kernelPat
|
|||
] ++ extraMakeFlags;
|
||||
|
||||
karch = stdenv.hostPlatform.linuxArch;
|
||||
})
|
||||
} // (optionalAttrs (pos != null) { inherit pos; }))
|
||||
|
|
Loading…
Reference in a new issue