mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-17 11:10:03 +00:00
maintainers: add targeted fix for missing pkgs/by-name/.../package.nix
files (#341041)
This commit is contained in:
commit
258b48db4a
|
@ -12,7 +12,27 @@
|
|||
# nix-build build.nix --argstr maintainer <yourname> --argstr system aarch64-linux
|
||||
|
||||
let
|
||||
pkgs = import ./../../default.nix (removeAttrs args [ "maintainer" ]);
|
||||
# This avoids a common situation for maintainers, where due to Git's behavior of not tracking
|
||||
# directories, they have an empty directory somewhere in `pkgs/by-name`. Because that directory
|
||||
# exists, `pkgs/top-level/by-name-overlay.nix` picks it up and attempts to read `package.nix` out
|
||||
# of it... which doesn't exist, since it's empty.
|
||||
#
|
||||
# We don't want to run the code below on every instantiation of `nixpkgs`, as the `pkgs/by-name`
|
||||
# eval machinery is quite performance sensitive. So we use the internals of the `by-name` overlay
|
||||
# to implement our own way to avoid an evaluation failure for this script.
|
||||
#
|
||||
# See <https://github.com/NixOS/nixpkgs/issues/338227> for more motivation for this code block.
|
||||
overlay = self: super: {
|
||||
_internalCallByNamePackageFile =
|
||||
file: if builtins.pathExists file then super._internalCallByNamePackageFile file else null;
|
||||
};
|
||||
|
||||
nixpkgsArgs = removeAttrs args [ "maintainer" "overlays" ] // {
|
||||
overlays = args.overlays or [] ++ [ overlay ];
|
||||
};
|
||||
|
||||
pkgs = import ./../../default.nix nixpkgsArgs;
|
||||
|
||||
maintainer_ = pkgs.lib.maintainers.${maintainer};
|
||||
packagesWith = cond: return: set:
|
||||
(pkgs.lib.flatten
|
||||
|
|
Loading…
Reference in a new issue