prefer-remote-fetch: Fix evaluation for all fetchers and export additional attributes (#475142)
This commit is contained in:
@@ -10,24 +10,38 @@
|
||||
# $ mkdir ~/.config/nixpkgs/overlays/
|
||||
# $ echo 'self: super: super.prefer-remote-fetch self super' > ~/.config/nixpkgs/overlays/prefer-remote-fetch.nix
|
||||
#
|
||||
self: super: {
|
||||
binary-cache = args: super.binary-cache ({ preferLocalBuild = false; } // args);
|
||||
buildenv = args: super.buildenv ({ preferLocalBuild = false; } // args);
|
||||
fetchfossil = args: super.fetchfossil ({ preferLocalBuild = false; } // args);
|
||||
fetchdocker = args: super.fetchdocker ({ preferLocalBuild = false; } // args);
|
||||
fetchgit = args: super.fetchgit ({ preferLocalBuild = false; } // args);
|
||||
fetchgx = args: super.fetchgx ({ preferLocalBuild = false; } // args);
|
||||
fetchhg = args: super.fetchhg ({ preferLocalBuild = false; } // args);
|
||||
fetchipfs = args: super.fetchipfs ({ preferLocalBuild = false; } // args);
|
||||
fetchrepoproject = args: super.fetchrepoproject ({ preferLocalBuild = false; } // args);
|
||||
fetchs3 = args: super.fetchs3 ({ preferLocalBuild = false; } // args);
|
||||
fetchsvn = args: super.fetchsvn ({ preferLocalBuild = false; } // args);
|
||||
fetchurl =
|
||||
fpArgs:
|
||||
super.fetchurl (
|
||||
super.lib.extends (finalAttrs: args: { preferLocalBuild = args.preferLocalBuild or false; }) (
|
||||
super.lib.toFunction fpArgs
|
||||
)
|
||||
);
|
||||
mkNugetSource = args: super.mkNugetSource ({ preferLocalBuild = false; } // args);
|
||||
self: super:
|
||||
let
|
||||
preferLocal =
|
||||
orig:
|
||||
self.lib.extendMkDerivation {
|
||||
constructDrv = orig;
|
||||
extendDrvArgs =
|
||||
finalAttrs:
|
||||
{
|
||||
preferLocalBuild ? false,
|
||||
...
|
||||
}:
|
||||
{
|
||||
inherit preferLocalBuild;
|
||||
};
|
||||
};
|
||||
|
||||
in
|
||||
{
|
||||
binary-cache = preferLocal super.binary-cache;
|
||||
buildenv = preferLocal super.buildenv;
|
||||
fetchfossil = preferLocal super.fetchfossil;
|
||||
fetchdocker = preferLocal super.fetchdocker;
|
||||
fetchgit = (preferLocal super.fetchgit) // {
|
||||
inherit (super.fetchgit) getRevWithTag;
|
||||
};
|
||||
fetchgx = preferLocal super.fetchgx;
|
||||
fetchhg = preferLocal super.fetchhg;
|
||||
fetchipfs = preferLocal super.fetchipfs;
|
||||
fetchrepoproject = preferLocal super.fetchrepoproject;
|
||||
fetchs3 = preferLocal super.fetchs3;
|
||||
fetchsvn = preferLocal super.fetchsvn;
|
||||
fetchurl = preferLocal super.fetchurl;
|
||||
mkNugetSource = preferLocal super.mkNugetSource;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
pkgs' = pkgs.extend (self: super: super.prefer-remote-fetch self super);
|
||||
|
||||
check =
|
||||
fn: args:
|
||||
let
|
||||
drv = pkgs'.testers.invalidateFetcherByDrvHash fn args;
|
||||
in
|
||||
if drv.preferLocalBuild then throw "Fetcher must not prefer local builds" else drv;
|
||||
|
||||
in
|
||||
pkgs'.callPackage (
|
||||
{
|
||||
testers,
|
||||
fetchgit,
|
||||
fetchFromGitHub,
|
||||
fetchurl,
|
||||
fetchzip,
|
||||
...
|
||||
}:
|
||||
{
|
||||
fetchgit = check fetchgit {
|
||||
name = "simple-nix-source";
|
||||
url = "https://github.com/NixOS/nix";
|
||||
rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a";
|
||||
sha256 = "sha256-7DszvbCNTjpzGRmpIVAWXk20P0/XTrWZ79KSOGLrUWY=";
|
||||
};
|
||||
|
||||
fetchFromGitHub = check fetchFromGitHub {
|
||||
name = "simple-nix-source";
|
||||
owner = "NixOS";
|
||||
repo = "nix";
|
||||
rev = "9d9dbe6ed05854e03811c361a3380e09183f4f4a";
|
||||
hash = "sha256-7DszvbCNTjpzGRmpIVAWXk20P0/XTrWZ79KSOGLrUWY=";
|
||||
};
|
||||
|
||||
fetchurl = check fetchurl {
|
||||
url = "https://gist.github.com/glandium/01d54cefdb70561b5f6675e08f2990f2/archive/2f430f0c136a69b0886281d0c76708997d8878af.zip";
|
||||
sha256 = "sha256-J/ZWC23GmFfew/56NQvPqKzqkWgjOaPvbMicFJnuJxI=";
|
||||
};
|
||||
|
||||
fetchzip = check fetchzip {
|
||||
url = "https://gist.github.com/glandium/01d54cefdb70561b5f6675e08f2990f2/archive/2f430f0c136a69b0886281d0c76708997d8878af.zip";
|
||||
sha256 = "sha256-0ecwgL8qUavSj1+WkaxpmRBmu7cvj53V5eXQV71fddU=";
|
||||
};
|
||||
}
|
||||
) { }
|
||||
@@ -246,4 +246,8 @@ in
|
||||
build-environment-info = callPackage ./build-environment-info { };
|
||||
|
||||
rust-hooks = recurseIntoAttrs (callPackages ../build-support/rust/hooks/test { });
|
||||
|
||||
prefer-remote-fetch = recurseIntoAttrs (
|
||||
callPackages ../build-support/prefer-remote-fetch/tests.nix { }
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user