Merge #26877: fetchFromGitHub: fix fetchSubmodules

... when revision is not hexadecimal. (omitting the last commit in PR)
This commit is contained in:
Vladimír Čunát 2017-07-05 09:48:12 +02:00
commit 7205dfadec
No known key found for this signature in database
GPG key ID: E747DF1F9575A3AA
8 changed files with 29 additions and 25 deletions

View file

@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
inherit name;
srcs = [ src robtkSrc ];
sourceRoot = "sisco.lv2-${src.rev}-src";
sourceRoot = src.name;
buildInputs = [ pkgconfig lv2 pango cairo libjack2 mesa ];

View file

@ -1,21 +1,9 @@
{stdenv, git, cacert}: let
urlToName = url: rev: let
inherit (stdenv.lib) removeSuffix splitString last;
base = last (splitString ":" (baseNameOf (removeSuffix "/" url)));
{stdenv, git, cacert, gitRepoToName}:
matched = builtins.match "(.*).git" base;
short = builtins.substring 0 7 rev;
appendShort = if (builtins.match "[a-f0-9]*" rev) != null
then "-${short}"
else "";
in "${if matched == null then base else builtins.head matched}${appendShort}";
in
{ url, rev ? "HEAD", md5 ? "", sha256 ? "", leaveDotGit ? deepClone
, fetchSubmodules ? true, deepClone ? false
, branchName ? null
, name ? urlToName url rev
, name ? gitRepoToName url rev
, # Shell code executed after the file has been fetched
# successfully. This can do things like check or transform the file.
postFetch ? ""

View file

@ -0,0 +1,14 @@
{ lib }:
urlOrRepo: rev: let
inherit (lib) removeSuffix splitString last;
base = last (splitString ":" (baseNameOf (removeSuffix "/" urlOrRepo)));
matched = builtins.match "(.*).git" base;
short = builtins.substring 0 7 rev;
appendShort = if (builtins.match "[a-f0-9]*" rev) != null
then "-${short}"
else "";
in "${if matched == null then base else builtins.head matched}${appendShort}"

View file

@ -282,8 +282,8 @@ _clone_user_rev() {
if test -z "$(echo "$rev" | tr -d 0123456789abcdef)"; then
clone "$dir" "$url" "$rev" "" 1>&2
else
echo 1>&2 "Bad commit hash or bad reference."
exit 1
# if revision is not hexadecimal it might be a tag
clone "$dir" "$url" "" "refs/tags/$rev" 1>&2
fi;;
esac

View file

@ -59,7 +59,7 @@ let
srcs = [ rubySrc rubygemsSrc ];
sourceRoot =
if useRailsExpress then
"ruby-${tag}-src"
rubySrc.name
else
unpackdir rubySrc;

View file

@ -10,7 +10,7 @@ let
sha256 = "1vmbrw686f41n6xfjphfshn96vl07ynvnsyjdw9yfn9bfnldcjcq";
};
srcRoot = "pfixtools-${pfixtoolsSrc.rev}-src";
srcRoot = pfixtoolsSrc.name;
libCommonSrc = fetchFromGitHub {
owner = "Fruneau";

View file

@ -8,7 +8,7 @@ let
sha256 = "1cxxzhm36civ6vjdgrk7mfmlzkih44kdii6l2xgy4r434s8rzcpn";
};
srcRoot = "eMail-${eMailSrc.rev}-src";
srcRoot = eMailSrc.name;
dlibSrc = fetchFromGitHub {
owner = "deanproxy";

View file

@ -185,8 +185,10 @@ with pkgs;
fetchzip = callPackage ../build-support/fetchzip { };
gitRepoToName = callPackage ../build-support/fetchgit/gitrepotoname.nix { };
fetchFromGitHub = {
owner, repo, rev, name ? "${repo}-${rev}-src",
owner, repo, rev, name ? gitRepoToName repo rev,
fetchSubmodules ? false, private ? false,
githubBase ? "github.com", varPrefix ? null,
... # For hash agility
@ -223,7 +225,7 @@ with pkgs;
} // passthruAttrs) // { inherit rev; };
fetchFromBitbucket = {
owner, repo, rev, name ? "${repo}-${rev}-src",
owner, repo, rev, name ? gitRepoToName repo rev,
... # For hash agility
}@args: fetchzip ({
inherit name;
@ -234,7 +236,7 @@ with pkgs;
# cgit example, snapshot support is optional in cgit
fetchFromSavannah = {
repo, rev, name ? "${repo}-${rev}-src",
repo, rev, name ? gitRepoToName repo rev,
... # For hash agility
}@args: fetchzip ({
inherit name;
@ -244,7 +246,7 @@ with pkgs;
# gitlab example
fetchFromGitLab = {
owner, repo, rev, name ? "${repo}-${rev}-src",
owner, repo, rev, name ? gitRepoToName repo rev,
... # For hash agility
}@args: fetchzip ({
inherit name;
@ -254,7 +256,7 @@ with pkgs;
# gitweb example, snapshot support is optional in gitweb
fetchFromRepoOrCz = {
repo, rev, name ? "${repo}-${rev}-src",
repo, rev, name ? gitRepoToName repo rev,
... # For hash agility
}@args: fetchzip ({
inherit name;