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
@ -60,7 +60,7 @@
|
|||||||
, kernelTests ? []
|
, kernelTests ? []
|
||||||
, nixosTests
|
, nixosTests
|
||||||
, ...
|
, ...
|
||||||
}:
|
}@args:
|
||||||
|
|
||||||
# Note: this package is used for bootstrapping fetchurl, and thus
|
# Note: this package is used for bootstrapping fetchurl, and thus
|
||||||
# cannot use fetchpatch! All mutable patches (generated by GitHub or
|
# cannot use fetchpatch! All mutable patches (generated by GitHub or
|
||||||
@ -70,6 +70,18 @@
|
|||||||
assert stdenv.isLinux;
|
assert stdenv.isLinux;
|
||||||
|
|
||||||
let
|
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.
|
# Combine the `features' attribute sets of all the kernel patches.
|
||||||
kernelFeatures = lib.foldr (x: y: (x.features or {}) // y) ({
|
kernelFeatures = lib.foldr (x: y: (x.features or {}) // y) ({
|
||||||
iwlwifi = true;
|
iwlwifi = true;
|
||||||
@ -180,13 +192,14 @@ let
|
|||||||
};
|
};
|
||||||
}; # end of configfile derivation
|
}; # end of configfile derivation
|
||||||
|
|
||||||
kernel = (callPackage ./manual-config.nix { inherit buildPackages; }) {
|
kernel = (callPackage ./manual-config.nix { inherit buildPackages; }) (basicArgs // {
|
||||||
inherit version modDirVersion src kernelPatches randstructSeed lib stdenv extraMakeFlags extraMeta configfile;
|
inherit modDirVersion kernelPatches randstructSeed lib stdenv extraMakeFlags extraMeta configfile;
|
||||||
|
pos = builtins.unsafeGetAttrPos "version" args;
|
||||||
|
|
||||||
config = { CONFIG_MODULES = "y"; CONFIG_FW_LOADER = "m"; };
|
config = { CONFIG_MODULES = "y"; CONFIG_FW_LOADER = "m"; };
|
||||||
};
|
});
|
||||||
|
|
||||||
passthru = {
|
passthru = basicArgs // {
|
||||||
features = kernelFeatures;
|
features = kernelFeatures;
|
||||||
inherit commonStructuredConfig structuredExtraConfig extraMakeFlags isZen isHardened isLibre modDirVersion;
|
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;
|
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,
|
stdenv,
|
||||||
# The kernel version
|
# The kernel version
|
||||||
version,
|
version,
|
||||||
|
# Position of the Linux build expression
|
||||||
|
pos ? null,
|
||||||
# Additional kernel make flags
|
# Additional kernel make flags
|
||||||
extraMakeFlags ? [],
|
extraMakeFlags ? [],
|
||||||
# The version of the kernel module directory
|
# The version of the kernel module directory
|
||||||
@ -333,4 +335,4 @@ stdenv.mkDerivation ((drvAttrs config stdenv.hostPlatform.linux-kernel kernelPat
|
|||||||
] ++ extraMakeFlags;
|
] ++ extraMakeFlags;
|
||||||
|
|
||||||
karch = stdenv.hostPlatform.linuxArch;
|
karch = stdenv.hostPlatform.linuxArch;
|
||||||
})
|
} // (optionalAttrs (pos != null) { inherit pos; }))
|
||||||
|
Loading…
Reference in New Issue
Block a user