fetchFromGitHub: Use .tar.gz instead of .zip

Also clean up the name attribute of fetchzip derivations a bit.
This commit is contained in:
Eelco Dolstra 2014-05-09 15:50:40 +02:00
parent 0d50061b4f
commit ea36f3b868
4 changed files with 26 additions and 16 deletions

View File

@ -160,6 +160,16 @@ rec {
else else
s; s;
removeSuffix = suf: s:
let
sufLen = stringLength suf;
sLen = stringLength s;
in
if sufLen <= sLen && suf == substring (sLen - sufLen) sufLen s then
substring 0 (sLen - sufLen) s
else
s;
# Return true iff string v1 denotes a version older than v2. # Return true iff string v1 denotes a version older than v2.
versionOlder = v1: v2: builtins.compareVersions v2 v1 == 1; versionOlder = v1: v2: builtins.compareVersions v2 v1 == 1;

View File

@ -54,9 +54,6 @@ in
# first element of `urls'). # first element of `urls').
name ? "" name ? ""
, # A string to be appended to the name, if the name is derived from `url'.
nameSuffix ? ""
# Different ways of specifying the hash. # Different ways of specifying the hash.
, outputHash ? "" , outputHash ? ""
, outputHashAlgo ? "" , outputHashAlgo ? ""
@ -97,7 +94,7 @@ stdenv.mkDerivation {
name = name =
if showURLs then "urls" if showURLs then "urls"
else if name != "" then name else if name != "" then name
else baseNameOf (toString (builtins.head urls_)) + nameSuffix; else baseNameOf (toString (builtins.head urls_));
builder = ./builder.sh; builder = ./builder.sh;

View File

@ -1,19 +1,21 @@
# This function downloads and unpacks a zip file. This is primarily # This function downloads and unpacks an archive file, such as a zip
# useful for dynamically generated zip files, such as GitHub's # or tar file. This is primarily useful for dynamically generated
# /archive URLs, where the unpacked content of the zip file doesn't # archives, such as GitHub's /archive URLs, where the unpacked content
# change, but the zip file itself may (e.g. due to minor changes in # of the zip file doesn't change, but the zip file itself may
# the compression algorithm, or changes in timestamps). # (e.g. due to minor changes in the compression algorithm, or changes
# in timestamps).
{ lib, fetchurl, unzip }: { lib, fetchurl, unzip }:
{ # Optionally move the contents of the unpacked tree up one level. { # Optionally move the contents of the unpacked tree up one level.
stripRoot ? true stripRoot ? true
, url
, ... } @ args: , ... } @ args:
fetchurl (args // { fetchurl ({
# Apply a suffix to the name. Otherwise, unpackPhase will get # Remove the extension, because otherwise unpackPhase will get
# confused by the .zip extension. # confused. FIXME: fix unpackPhase.
nameSuffix = "-unpacked"; name = args.name or lib.removeSuffix ".zip" (lib.removeSuffix ".tar.gz" (baseNameOf url));
recursiveHash = true; recursiveHash = true;
@ -24,7 +26,7 @@ fetchurl (args // {
export PATH=${unzip}/bin:$PATH export PATH=${unzip}/bin:$PATH
mkdir $out mkdir $out
cd $out cd $out
renamed="$TMPDIR/''${name%-unpacked}" renamed="$TMPDIR/${baseNameOf url}"
mv "$downloadedFile" "$renamed" mv "$downloadedFile" "$renamed"
unpackFile "$renamed" unpackFile "$renamed"
'' ''
@ -39,4 +41,4 @@ fetchurl (args // {
mv $out/$fn/* "$out/" mv $out/$fn/* "$out/"
rmdir "$out/$fn" rmdir "$out/$fn"
''; '';
}) } // args)

View File

@ -341,7 +341,8 @@ let
fetchzip = import ../build-support/fetchzip { inherit lib fetchurl unzip; }; fetchzip = import ../build-support/fetchzip { inherit lib fetchurl unzip; };
fetchFromGitHub = { owner, repo, rev, sha256 }: fetchzip { fetchFromGitHub = { owner, repo, rev, sha256 }: fetchzip {
url = "https://github.com/${owner}/${repo}/archive/${rev}.zip"; name = "${repo}-${rev}-src";
url = "https://github.com/${owner}/${repo}/archive/${rev}.tar.gz";
inherit sha256; inherit sha256;
}; };