463378f7cc
There are some SVN repositories out there which don't have revision information tied to externals. By using ignoreExternals, fetchsvn won't fetch these externals anymore, so the fetch won't fail with a checksum mismatch, should there be some changes in some of those external repositories. Signed-off-by: aszlig <aszlig@redmoonstudios.org>
41 lines
1.3 KiB
Nix
41 lines
1.3 KiB
Nix
{stdenv, subversion, sshSupport ? false, openssh ? null}:
|
|
{url, rev ? "HEAD", md5 ? "", sha256 ? "", ignoreExternals ? false}:
|
|
|
|
let
|
|
repoName = with stdenv.lib;
|
|
let
|
|
fst = head;
|
|
snd = l: head (tail l);
|
|
trd = l: head (tail (tail l));
|
|
path_ = reverseList (splitString "/" url);
|
|
path = if head path_ == "" then tail path_ else path_;
|
|
in
|
|
# ../repo/trunk -> repo
|
|
if fst path == "trunk" then snd path
|
|
# ../repo/branches/branch -> repo-branch
|
|
else if snd path == "branches" then "${trd path}-${fst path}"
|
|
# ../repo/tags/tag -> repo-tag
|
|
else if snd path == "tags" then "${trd path}-${fst path}"
|
|
# ../repo (no trunk) -> repo
|
|
else fst path;
|
|
in
|
|
|
|
stdenv.mkDerivation {
|
|
name = "${repoName}-r${toString rev}";
|
|
builder = ./builder.sh;
|
|
buildInputs = [subversion];
|
|
|
|
outputHashAlgo = if sha256 == "" then "md5" else "sha256";
|
|
outputHashMode = "recursive";
|
|
outputHash = if sha256 == "" then md5 else sha256;
|
|
|
|
inherit url rev sshSupport openssh ignoreExternals;
|
|
|
|
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"
|
|
];
|
|
}
|