diff options
Diffstat (limited to 'maintainers/scripts/build.nix')
-rw-r--r-- | maintainers/scripts/build.nix | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/maintainers/scripts/build.nix b/maintainers/scripts/build.nix index c70993cf138..ca401700b4a 100644 --- a/maintainers/scripts/build.nix +++ b/maintainers/scripts/build.nix @@ -1,10 +1,18 @@ -{ maintainer }: +{ maintainer +, localSystem ? { system = args.system or builtins.currentSystem; } +, system ? localSystem.system +, crossSystem ? localSystem +, ... +}@args: # based on update.nix # nix-build build.nix --argstr maintainer <yourname> +# to build for aarch64-linux using boot.binfmt.emulatedSystems: +# nix-build build.nix --argstr maintainer <yourname> --argstr system aarch64-linux + let - pkgs = import ./../../default.nix {}; + pkgs = import ./../../default.nix (removeAttrs args [ "maintainer" ]); maintainer_ = pkgs.lib.maintainers.${maintainer}; packagesWith = cond: return: set: (pkgs.lib.flatten @@ -13,8 +21,12 @@ let let result = builtins.tryEval ( - if pkgs.lib.isDerivation pkg && cond name pkg - then [ (return name pkg) ] + if pkgs.lib.isDerivation pkg && cond name pkg then + # Skip packages whose closure fails on evaluation. + # This happens for pkgs like `python27Packages.djangoql` + # that have disabled Python pkgs as dependencies. + builtins.seq pkg.outPath + [ (return name pkg) ] else if pkg.recurseForDerivations or false || pkg.recurseForRelease or false then packagesWith cond return pkg else [ ] @@ -30,7 +42,7 @@ in packagesWith (name: pkg: ( - if builtins.hasAttr "maintainers" pkg.meta + if builtins.hasAttr "meta" pkg && builtins.hasAttr "maintainers" pkg.meta then ( if builtins.isList pkg.meta.maintainers then builtins.elem maintainer_ pkg.meta.maintainers |