diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-10-07 00:09:37 +0200 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-10-07 00:09:37 +0200 |
commit | a85dcf4a00c1ac354eda3b84209b8fa6b2133259 (patch) | |
tree | 16bbf46e3cd5d7ea259783ee8b1ea8d5c7048e0d /pkgs/build-support | |
parent | 4b2ce84872a0903b9800d3ed23915f48ecedc565 (diff) | |
parent | 46a9e805efeee40d360605fa5987866ca45fed23 (diff) | |
download | nixlib-a85dcf4a00c1ac354eda3b84209b8fa6b2133259.tar nixlib-a85dcf4a00c1ac354eda3b84209b8fa6b2133259.tar.gz nixlib-a85dcf4a00c1ac354eda3b84209b8fa6b2133259.tar.bz2 nixlib-a85dcf4a00c1ac354eda3b84209b8fa6b2133259.tar.lz nixlib-a85dcf4a00c1ac354eda3b84209b8fa6b2133259.tar.xz nixlib-a85dcf4a00c1ac354eda3b84209b8fa6b2133259.tar.zst nixlib-a85dcf4a00c1ac354eda3b84209b8fa6b2133259.zip |
Merge remote-tracking branch 'origin/master' into staging
Conflicts: pkgs/development/libraries/libav/default.nix pkgs/shells/bash/bash-4.2-patches.nix pkgs/stdenv/generic/default.nix
Diffstat (limited to 'pkgs/build-support')
-rw-r--r-- | pkgs/build-support/fetchadc/builder.sh | 7 | ||||
-rw-r--r-- | pkgs/build-support/fetchadc/default.nix | 46 | ||||
-rw-r--r-- | pkgs/build-support/fetchurl/builder.sh | 16 | ||||
-rw-r--r-- | pkgs/build-support/replace-dependency.nix | 26 | ||||
-rw-r--r-- | pkgs/build-support/vm/default.nix | 2 | ||||
-rw-r--r-- | pkgs/build-support/vm/windows/cygwin-iso/default.nix | 2 |
6 files changed, 82 insertions, 17 deletions
diff --git a/pkgs/build-support/fetchadc/builder.sh b/pkgs/build-support/fetchadc/builder.sh new file mode 100644 index 000000000000..ceeaa9213d65 --- /dev/null +++ b/pkgs/build-support/fetchadc/builder.sh @@ -0,0 +1,7 @@ +source $stdenv/setup + +loginpage=`curl --insecure -s -L -b cookies.txt "$url"` + +[[ $loginpage =~ form[^\>]+action=\"([^\"]+)\" ]] && loginurl=${BASH_REMATCH[1]} + +curl --insecure -s --output "$out" -L -b cookies.txt --data "appleId=${adc_user}&accountPassword=${adc_pass}" "https://idmsa.apple.com/IDMSWebAuth/${loginurl}" diff --git a/pkgs/build-support/fetchadc/default.nix b/pkgs/build-support/fetchadc/default.nix new file mode 100644 index 000000000000..ac7a442de315 --- /dev/null +++ b/pkgs/build-support/fetchadc/default.nix @@ -0,0 +1,46 @@ +{ stdenv, curl, adc_user, adc_pass }: + +let + impureEnvVars = [ + # We borrow these environment variables from the caller to allow + # easy proxy configuration. This is impure, but a fixed-output + # derivation like fetchurl is allowed to do so since its result is + # by definition pure. + "http_proxy" "https_proxy" "ftp_proxy" "all_proxy" "no_proxy" + ]; +in + +{ # Path to fetch. + path + + # Hash of the downloaded file +, sha256 + +, # Additional curl options needed for the download to succeed. + curlOpts ? "" + +, # Name of the file. If empty, use the basename of `path'. + name ? "" +}: + +stdenv.mkDerivation { + url = "https://developer.apple.com/downloads/download.action?path=${path}"; + + name = if name != "" then name else baseNameOf path; + builder = ./builder.sh; + + buildInputs = [ curl ]; + + meta = { + # Password-guarded files from ADC are certainly unfree, as far as we're concerned! + license = stdenv.lib.licenses.unfree; + }; + + outputHashAlgo = "sha256"; + outputHash = sha256; + outputHashMode = "flat"; + + inherit curlOpts adc_user adc_pass; + + preferLocalBuild = true; +} diff --git a/pkgs/build-support/fetchurl/builder.sh b/pkgs/build-support/fetchurl/builder.sh index 0c6e16551b4a..66792229585a 100644 --- a/pkgs/build-support/fetchurl/builder.sh +++ b/pkgs/build-support/fetchurl/builder.sh @@ -25,10 +25,20 @@ tryDownload() { local url="$1" echo header "trying $url" + local curlexit=18; + success= - if $curl --fail "$url" --output "$downloadedFile"; then - success=1 - fi + + # 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 + success=1 + break + else + curlexit=$?; + fi + done stopNest } diff --git a/pkgs/build-support/replace-dependency.nix b/pkgs/build-support/replace-dependency.nix index 098637b4f9b9..ed65b9dad1db 100644 --- a/pkgs/build-support/replace-dependency.nix +++ b/pkgs/build-support/replace-dependency.nix @@ -49,8 +49,13 @@ let referencesOf = drv: getAttr (discard (toString drv)) references; - dependsOnOld = drv: elem oldStorepath (referencesOf drv) || - any dependsOnOld (referencesOf drv); + dependsOnOldMemo = listToAttrs (map + (drv: { name = discard (toString drv); + value = elem oldStorepath (referencesOf drv) || + any dependsOnOld (referencesOf drv); + }) (builtins.attrNames references)); + + dependsOnOld = drv: getAttr (discard (toString drv)) dependsOnOldMemo; drvName = drv: discard (substring 33 (stringLength (builtins.baseNameOf drv)) (builtins.baseNameOf drv)); @@ -65,15 +70,12 @@ let rewrittenDeps = listToAttrs [ {name = discard (toString oldDependency); value = newDependency;} ]; - rewrittenDerivations = drv: - if dependsOnOld drv - then listToAttrs [ { - name = discard (toString drv); + rewriteMemo = listToAttrs (map + (drv: { name = discard (toString drv); + value = rewriteHashes (builtins.storePath drv) + (filterAttrs (n: v: builtins.elem (builtins.storePath (discard (toString n))) (referencesOf drv)) rewriteMemo); + }) + (filter dependsOnOld (builtins.attrNames references))) // rewrittenDeps; - value = rewriteHashes drv (rewrittenDeps // (fold (drv: acc: - (rewrittenDerivations drv) // acc - ) {} (referencesOf drv))); - } ] - else {}; in assert (stringLength (drvName (toString oldDependency)) == stringLength (drvName (toString newDependency))); -getAttr (discard (toString drv)) (rewrittenDerivations drv) +getAttr (discard (toString drv)) rewriteMemo diff --git a/pkgs/build-support/vm/default.nix b/pkgs/build-support/vm/default.nix index 7a35577c69a3..72cc7f68b090 100644 --- a/pkgs/build-support/vm/default.nix +++ b/pkgs/build-support/vm/default.nix @@ -1,5 +1,5 @@ { pkgs -, kernel ? pkgs.linux_3_10 +, kernel ? pkgs.linux , img ? "bzImage" , rootModules ? [ "virtio_pci" "virtio_blk" "virtio_balloon" "ext4" "unix" "9p" "9pnet_virtio" "rtc_cmos" ] diff --git a/pkgs/build-support/vm/windows/cygwin-iso/default.nix b/pkgs/build-support/vm/windows/cygwin-iso/default.nix index d9801428a887..b560a850a306 100644 --- a/pkgs/build-support/vm/windows/cygwin-iso/default.nix +++ b/pkgs/build-support/vm/windows/cygwin-iso/default.nix @@ -40,7 +40,7 @@ let }; in map gen expr; -in import <nixpkgs/nixos/lib/make-iso9660-image.nix> { +in import ../../../../../nixos/lib/make-iso9660-image.nix { inherit stdenv perl cdrkit pathsFromGraph; contents = [ { source = "${cygwinCross}/bin/setup.exe"; |