mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-16 23:03:40 +01:00
Merge pull request #17757 from copumpkin/fetchurl-user-agent
fetchurl: add user agent
This commit is contained in:
commit
363363298c
2 changed files with 17 additions and 13 deletions
|
@ -2,20 +2,24 @@ source $stdenv/setup
|
|||
|
||||
source $mirrorsFile
|
||||
|
||||
curlVersion=$(curl -V | head -1 | cut -d' ' -f2)
|
||||
|
||||
# Curl flags to handle redirects, not use EPSV, handle cookies for
|
||||
# servers to need them during redirects, and work on SSL without a
|
||||
# certificate (this isn't a security problem because we check the
|
||||
# cryptographic hash of the output anyway).
|
||||
curl="curl \
|
||||
--location --max-redirs 20 \
|
||||
--retry 3 \
|
||||
--disable-epsv \
|
||||
--cookie-jar cookies \
|
||||
--insecure \
|
||||
$curlOpts \
|
||||
$NIX_CURL_FLAGS"
|
||||
|
||||
curl=(
|
||||
curl
|
||||
--location
|
||||
--max-redirs 20
|
||||
--retry 3
|
||||
--disable-epsv
|
||||
--cookie-jar cookies
|
||||
--insecure
|
||||
--user-agent "curl/$curlVersion Nixpkgs/$nixpkgsVersion"
|
||||
$curlOpts
|
||||
$NIX_CURL_FLAGS
|
||||
)
|
||||
|
||||
downloadedFile="$out"
|
||||
if [ -n "$downloadToTemp" ]; then downloadedFile="$TMPDIR/file"; fi
|
||||
|
@ -32,7 +36,7 @@ tryDownload() {
|
|||
# if we get error code 18, resume partial download
|
||||
while [ $curlexit -eq 18 ]; do
|
||||
# keep this inside an if statement, since on failure it doesn't abort the script
|
||||
if $curl -C - --fail "$url" --output "$downloadedFile"; then
|
||||
if "${curl[@]}" -C - --fail "$url" --output "$downloadedFile"; then
|
||||
success=1
|
||||
break
|
||||
else
|
||||
|
@ -61,7 +65,7 @@ tryHashedMirrors() {
|
|||
|
||||
for mirror in $hashedMirrors; do
|
||||
url="$mirror/$outputHashAlgo/$outputHash"
|
||||
if $curl --retry 0 --connect-timeout "${NIX_CONNECT_TIMEOUT:-15}" \
|
||||
if "${curl[@]}" --retry 0 --connect-timeout "${NIX_CONNECT_TIMEOUT:-15}" \
|
||||
--fail --silent --show-error --head "$url" \
|
||||
--write-out "%{http_code}" --output /dev/null > code 2> log; then
|
||||
tryDownload "$url"
|
||||
|
|
|
@ -92,7 +92,6 @@ in
|
|||
assert sha512 != "" -> builtins.compareVersions "1.11" builtins.nixVersion <= 0;
|
||||
|
||||
let
|
||||
|
||||
urls_ =
|
||||
if urls != [] && url == "" then
|
||||
(if lib.isList urls then urls
|
||||
|
@ -107,7 +106,6 @@ let
|
|||
else if sha256 != "" then { outputHashAlgo = "sha256"; outputHash = sha256; }
|
||||
else if sha1 != "" then { outputHashAlgo = "sha1"; outputHash = sha1; }
|
||||
else throw "fetchurl requires a hash for fixed-output derivation: ${lib.concatStringsSep ", " urls_}";
|
||||
|
||||
in
|
||||
|
||||
stdenvNoCC.mkDerivation {
|
||||
|
@ -135,6 +133,8 @@ stdenvNoCC.mkDerivation {
|
|||
|
||||
impureEnvVars = impureEnvVars ++ netrcImpureEnvVars;
|
||||
|
||||
nixpkgsVersion = lib.trivial.release;
|
||||
|
||||
# Doing the download on a remote machine just duplicates network
|
||||
# traffic, so don't do that.
|
||||
preferLocalBuild = true;
|
||||
|
|
Loading…
Reference in a new issue