diff options
author | Vladimír Čunát <vcunat@gmail.com> | 2019-02-01 09:22:29 +0100 |
---|---|---|
committer | Vladimír Čunát <vcunat@gmail.com> | 2019-02-01 09:22:29 +0100 |
commit | 5effa4e0f98b317fe4607b1a6548811017c3325d (patch) | |
tree | d62ab19ccca3b0c6409595074b637eeb3d4371dc /pkgs/build-support | |
parent | ca2edf79f75ad2a43a5af5c1283db9f0f843680a (diff) | |
parent | 8f58e00226e3192994050b12aa9ed119be0220f3 (diff) |
Merge branch 'master' into staging-next
Comments on conflicts:
- llvm: d6f401e1 vs. 469ecc70 - docs for 6 and 7 say the default is
to build all targets, so we should be fine
- some pypi hashes: they were equivalent, just base16 vs. base32
Diffstat (limited to 'pkgs/build-support')
-rw-r--r-- | pkgs/build-support/cc-wrapper/default.nix | 1 | ||||
-rw-r--r-- | pkgs/build-support/fetchbitbucket/default.nix | 10 | ||||
-rw-r--r-- | pkgs/build-support/fetchgit/default.nix | 3 | ||||
-rw-r--r-- | pkgs/build-support/fetchgithub/default.nix | 33 | ||||
-rw-r--r-- | pkgs/build-support/fetchgitlab/default.nix | 10 | ||||
-rw-r--r-- | pkgs/build-support/fetchhg/default.nix | 11 | ||||
-rw-r--r-- | pkgs/build-support/fetchipfs/default.nix | 8 | ||||
-rw-r--r-- | pkgs/build-support/fetchrepoorcz/default.nix | 10 | ||||
-rw-r--r-- | pkgs/build-support/fetchsavannah/default.nix | 10 | ||||
-rw-r--r-- | pkgs/build-support/fetchsvn/default.nix | 7 | ||||
-rw-r--r-- | pkgs/build-support/fetchurl/default.nix | 7 | ||||
-rw-r--r-- | pkgs/build-support/prefer-remote-fetch/default.nix | 19 | ||||
-rw-r--r-- | pkgs/build-support/vm/default.nix | 6 |
13 files changed, 119 insertions, 16 deletions
diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix index 47c992d1f6ba..c36181130478 100644 --- a/pkgs/build-support/cc-wrapper/default.nix +++ b/pkgs/build-support/cc-wrapper/default.nix @@ -320,5 +320,6 @@ stdenv.mkDerivation { { description = stdenv.lib.attrByPath ["meta" "description"] "System C compiler" cc_ + " (wrapper script)"; + priority = 10; }; } diff --git a/pkgs/build-support/fetchbitbucket/default.nix b/pkgs/build-support/fetchbitbucket/default.nix new file mode 100644 index 000000000000..a99f72e9eaa7 --- /dev/null +++ b/pkgs/build-support/fetchbitbucket/default.nix @@ -0,0 +1,10 @@ +{ fetchzip }: + +{ owner, repo, rev, name ? "source" +, ... # For hash agility +}@args: fetchzip ({ + inherit name; + url = "https://bitbucket.org/${owner}/${repo}/get/${rev}.tar.gz"; + meta.homepage = "https://bitbucket.org/${owner}/${repo}/"; + extraPostFetch = ''rm -f "$out"/.hg_archival.txt''; # impure file; see #12002 +} // removeAttrs args [ "owner" "repo" "rev" ]) // { inherit rev; } diff --git a/pkgs/build-support/fetchgit/default.nix b/pkgs/build-support/fetchgit/default.nix index 9fccc27ef632..256c86748d28 100644 --- a/pkgs/build-support/fetchgit/default.nix +++ b/pkgs/build-support/fetchgit/default.nix @@ -19,6 +19,7 @@ in , # Shell code executed after the file has been fetched # successfully. This can do things like check or transform the file. postFetch ? "" +, preferLocalBuild ? true }: /* NOTE: @@ -66,5 +67,5 @@ stdenvNoCC.mkDerivation { "GIT_PROXY_COMMAND" "SOCKS_SERVER" ]; - preferLocalBuild = true; + inherit preferLocalBuild; } diff --git a/pkgs/build-support/fetchgithub/default.nix b/pkgs/build-support/fetchgithub/default.nix new file mode 100644 index 000000000000..66671dd0a6ae --- /dev/null +++ b/pkgs/build-support/fetchgithub/default.nix @@ -0,0 +1,33 @@ +{ lib, fetchgit, fetchzip }: + +{ owner, repo, rev, name ? "source" +, fetchSubmodules ? false, private ? false +, githubBase ? "github.com", varPrefix ? null +, ... # For hash agility +}@args: assert private -> !fetchSubmodules; +let + baseUrl = "https://${githubBase}/${owner}/${repo}"; + passthruAttrs = removeAttrs args [ "owner" "repo" "rev" "fetchSubmodules" "private" "githubBase" "varPrefix" ]; + varBase = "NIX${if varPrefix == null then "" else "_${varPrefix}"}_GITHUB_PRIVATE_"; + # We prefer fetchzip in cases we don't need submodules as the hash + # is more stable in that case. + fetcher = if fetchSubmodules then fetchgit else fetchzip; + privateAttrs = lib.optionalAttrs private { + netrcPhase = '' + if [ -z "''$${varBase}USERNAME" -o -z "''$${varBase}PASSWORD" ]; then + echo "Error: Private fetchFromGitHub requires the nix building process (nix-daemon in multi user mode) to have the ${varBase}USERNAME and ${varBase}PASSWORD env vars set." >&2 + exit 1 + fi + cat > netrc <<EOF + machine ${githubBase} + login ''$${varBase}USERNAME + password ''$${varBase}PASSWORD + EOF + ''; + netrcImpureEnvVars = [ "${varBase}USERNAME" "${varBase}PASSWORD" ]; + }; + fetcherArgs = (if fetchSubmodules + then { inherit rev fetchSubmodules; url = "${baseUrl}.git"; } + else ({ url = "${baseUrl}/archive/${rev}.tar.gz"; } // privateAttrs) + ) // passthruAttrs // { inherit name; }; +in fetcher fetcherArgs // { meta.homepage = baseUrl; inherit rev; } diff --git a/pkgs/build-support/fetchgitlab/default.nix b/pkgs/build-support/fetchgitlab/default.nix new file mode 100644 index 000000000000..be110cf8393e --- /dev/null +++ b/pkgs/build-support/fetchgitlab/default.nix @@ -0,0 +1,10 @@ +{ fetchzip, lib }: + +# gitlab example +{ owner, repo, rev, domain ? "gitlab.com", name ? "source", group ? null +, ... # For hash agility +}@args: fetchzip ({ + inherit name; + url = "https://${domain}/api/v4/projects/${lib.optionalString (group != null) "${lib.replaceStrings ["."] ["%2E"] group}%2F"}${lib.replaceStrings ["."] ["%2E"] owner}%2F${lib.replaceStrings ["."] ["%2E"] repo}/repository/archive.tar.gz?sha=${rev}"; + meta.homepage = "https://${domain}/${lib.optionalString (group != null) "${group}/"}${owner}/${repo}/"; +} // removeAttrs args [ "domain" "owner" "group" "repo" "rev" ]) // { inherit rev; } diff --git a/pkgs/build-support/fetchhg/default.nix b/pkgs/build-support/fetchhg/default.nix index 40ead021cdbf..41eff1f9c0c5 100644 --- a/pkgs/build-support/fetchhg/default.nix +++ b/pkgs/build-support/fetchhg/default.nix @@ -1,4 +1,11 @@ -{stdenvNoCC, mercurial}: {name ? null, url, rev ? null, md5 ? null, sha256 ? null, fetchSubrepos ? false}: +{ stdenvNoCC, mercurial }: +{ name ? null +, url +, rev ? null +, md5 ? null +, sha256 ? null +, fetchSubrepos ? false +, preferLocalBuild ? true }: if md5 != null then throw "fetchhg does not support md5 anymore, please use sha256" @@ -18,5 +25,5 @@ stdenvNoCC.mkDerivation { outputHash = sha256; inherit url rev; - preferLocalBuild = true; + inherit preferLocalBuild; } diff --git a/pkgs/build-support/fetchipfs/default.nix b/pkgs/build-support/fetchipfs/default.nix index dc8949794221..7a66999ec569 100644 --- a/pkgs/build-support/fetchipfs/default.nix +++ b/pkgs/build-support/fetchipfs/default.nix @@ -14,6 +14,7 @@ , meta ? {} , port ? "8080" , postFetch ? "" +, preferLocalBuild ? true }: assert sha512 != "" -> builtins.compareVersions "1.11" builtins.nixVersion <= 0; @@ -42,11 +43,10 @@ if (!hasHash) then throw "Specify sha for fetchipfs fixed-output derivation" els postFetch ipfs url - port; + port + meta; # Doing the download on a remote machine just duplicates network # traffic, so don't do that. - preferLocalBuild = true; - - inherit meta; + inherit preferLocalBuild; } diff --git a/pkgs/build-support/fetchrepoorcz/default.nix b/pkgs/build-support/fetchrepoorcz/default.nix new file mode 100644 index 000000000000..3ac7cace0dcf --- /dev/null +++ b/pkgs/build-support/fetchrepoorcz/default.nix @@ -0,0 +1,10 @@ +{ fetchzip }: + +# gitweb example, snapshot support is optional in gitweb +{ repo, rev, name ? "source" +, ... # For hash agility +}@args: fetchzip ({ + inherit name; + url = "https://repo.or.cz/${repo}.git/snapshot/${rev}.tar.gz"; + meta.homepage = "https://repo.or.cz/${repo}.git/"; +} // removeAttrs args [ "repo" "rev" ]) // { inherit rev; } diff --git a/pkgs/build-support/fetchsavannah/default.nix b/pkgs/build-support/fetchsavannah/default.nix new file mode 100644 index 000000000000..994922a58679 --- /dev/null +++ b/pkgs/build-support/fetchsavannah/default.nix @@ -0,0 +1,10 @@ +{ fetchzip }: + +# cgit example, snapshot support is optional in cgit +{ repo, rev, name ? "source" +, ... # For hash agility +}@args: fetchzip ({ + inherit name; + url = "https://git.savannah.gnu.org/cgit/${repo}.git/snapshot/${repo}-${rev}.tar.gz"; + meta.homepage = "https://git.savannah.gnu.org/cgit/${repo}.git/"; +} // removeAttrs args [ "repo" "rev" ]) // { inherit rev; } diff --git a/pkgs/build-support/fetchsvn/default.nix b/pkgs/build-support/fetchsvn/default.nix index da57d581dadd..194ce3b39b1d 100644 --- a/pkgs/build-support/fetchsvn/default.nix +++ b/pkgs/build-support/fetchsvn/default.nix @@ -1,6 +1,7 @@ {stdenvNoCC, subversion, glibcLocales, sshSupport ? false, openssh ? null}: -{url, rev ? "HEAD", md5 ? "", sha256 ? "", - ignoreExternals ? false, ignoreKeywords ? false, name ? null}: +{url, rev ? "HEAD", md5 ? "", sha256 ? "" +, ignoreExternals ? false, ignoreKeywords ? false, name ? null +, preferLocalBuild ? true }: let repoName = with stdenvNoCC.lib; @@ -40,5 +41,5 @@ stdenvNoCC.mkDerivation { inherit url rev sshSupport openssh ignoreExternals ignoreKeywords; impureEnvVars = stdenvNoCC.lib.fetchers.proxyImpureEnvVars; - preferLocalBuild = true; + inherit preferLocalBuild; } diff --git a/pkgs/build-support/fetchurl/default.nix b/pkgs/build-support/fetchurl/default.nix index 5f0c1384c79e..3ce90cbeab3a 100644 --- a/pkgs/build-support/fetchurl/default.nix +++ b/pkgs/build-support/fetchurl/default.nix @@ -87,6 +87,9 @@ in # Passthru information, if any. , passthru ? {} + # Doing the download on a remote machine just duplicates network + # traffic, so don't do that by default +, preferLocalBuild ? true }: assert sha512 != "" -> builtins.compareVersions "1.11" builtins.nixVersion <= 0; @@ -135,9 +138,7 @@ stdenvNoCC.mkDerivation { nixpkgsVersion = lib.trivial.release; - # Doing the download on a remote machine just duplicates network - # traffic, so don't do that. - preferLocalBuild = true; + inherit preferLocalBuild; postHook = if netrcPhase == null then null else '' ${netrcPhase} diff --git a/pkgs/build-support/prefer-remote-fetch/default.nix b/pkgs/build-support/prefer-remote-fetch/default.nix new file mode 100644 index 000000000000..2e55e3707421 --- /dev/null +++ b/pkgs/build-support/prefer-remote-fetch/default.nix @@ -0,0 +1,19 @@ +# An overlay that download sources on remote builder. +# This is useful when the evaluating machine has a slow +# upload while the builder can fetch faster directly from the source. +# Usage: Put the following snippet in your usual overlay definition: +# +# self: super: +# (super.prefer-remote-fetch self super) +# Full configuration example for your own account: +# +# $ mkdir ~/.config/nixpkgs/overlays/ +# $ echo 'self: super: super.prefer-remote-fetch self super' > ~/.config/nixpkgs/overlays/prefer-remote-fetch.nix +# +self: super: { + fetchurl = args: super.fetchurl (args // { preferLocalBuild = false; }); + fetchgit = args: super.fetchgit (args // { preferLocalBuild = false; }); + fetchhg = args: super.fetchhg (args // { preferLocalBuild = false; }); + fetchsvn = args: super.fetchsvn (args // { preferLocalBuild = false; }); + fetchipfs = args: super.fetchipfs (args // { preferLocalBuild = false; }); +} diff --git a/pkgs/build-support/vm/default.nix b/pkgs/build-support/vm/default.nix index 7880d98e6b6a..6c48fb02b19f 100644 --- a/pkgs/build-support/vm/default.nix +++ b/pkgs/build-support/vm/default.nix @@ -162,7 +162,7 @@ rec { fi # Set up automatic kernel module loading. - export MODULE_DIR=${linux}/lib/modules/ + export MODULE_DIR=${kernel}/lib/modules/ ${coreutils}/bin/cat <<EOF > /run/modprobe #! /bin/sh export MODULE_DIR=$MODULE_DIR @@ -315,7 +315,7 @@ rec { name = "extract-file"; buildInputs = [ utillinux ]; buildCommand = '' - ln -s ${linux}/lib /lib + ln -s ${kernel}/lib /lib ${kmod}/bin/modprobe loop ${kmod}/bin/modprobe ext4 ${kmod}/bin/modprobe hfs @@ -340,7 +340,7 @@ rec { name = "extract-file-mtd"; buildInputs = [ utillinux mtdutils ]; buildCommand = '' - ln -s ${linux}/lib /lib + ln -s ${kernel}/lib /lib ${kmod}/bin/modprobe mtd ${kmod}/bin/modprobe mtdram total_size=131072 ${kmod}/bin/modprobe mtdchar |