summary refs log tree commit diff
path: root/pkgs/build-support/fetchsvn
diff options
context:
space:
mode:
authorArseniy Alekseyev <rotsor@gmail.com>2017-03-13 03:02:33 +0000
committerArseniy Alekseyev <rotsor@gmail.com>2017-03-13 03:43:39 +0000
commit6a51b55af6f3b962a55402a5c3406f5dd848b044 (patch)
treea2226c0e783024bde689f742f72e6c38fa7cc90e /pkgs/build-support/fetchsvn
parent23e4e32b91f40a569ca8e0b213ab531455b5fb7e (diff)
downloadnixpkgs-6a51b55af6f3b962a55402a5c3406f5dd848b044.tar
nixpkgs-6a51b55af6f3b962a55402a5c3406f5dd848b044.tar.gz
nixpkgs-6a51b55af6f3b962a55402a5c3406f5dd848b044.tar.bz2
nixpkgs-6a51b55af6f3b962a55402a5c3406f5dd848b044.tar.lz
nixpkgs-6a51b55af6f3b962a55402a5c3406f5dd848b044.tar.xz
nixpkgs-6a51b55af6f3b962a55402a5c3406f5dd848b044.tar.zst
nixpkgs-6a51b55af6f3b962a55402a5c3406f5dd848b044.zip
fetchSvn: Add support for --ignore-keywords flag
This is a flag that disables subversion keyword substitution.
Keyword substitution inserts metadata into the files being checked
out, and is therefore somewhat at odds with build reproducibility.

In particular, it can become a problem if you're trying to switch
between svn and a git export of the same thing (keyword substitutions
are normally not exported into git).
Diffstat (limited to 'pkgs/build-support/fetchsvn')
-rw-r--r--pkgs/build-support/fetchsvn/builder.sh3
-rw-r--r--pkgs/build-support/fetchsvn/default.nix5
2 files changed, 5 insertions, 3 deletions
diff --git a/pkgs/build-support/fetchsvn/builder.sh b/pkgs/build-support/fetchsvn/builder.sh
index 3ab6e730a51..7a8a161712d 100644
--- a/pkgs/build-support/fetchsvn/builder.sh
+++ b/pkgs/build-support/fetchsvn/builder.sh
@@ -22,7 +22,8 @@ fi;
 # server's certificate.  This is perfectly safe: we don't care
 # whether the server is being spoofed --- only the cryptographic
 # hash of the output matters. Pass in extra p's to handle redirects.
-printf 'p\np\np\n' | svn export --trust-server-cert --non-interactive ${ignoreExternals:+--ignore-externals} \
+printf 'p\np\np\n' | svn export --trust-server-cert --non-interactive \
+    ${ignoreExternals:+--ignore-externals} ${ignoreKeywords:+--ignore-keywords} \
     -r "$rev" "$url" "$out"
 
 stopNest
diff --git a/pkgs/build-support/fetchsvn/default.nix b/pkgs/build-support/fetchsvn/default.nix
index 85ec52c4bde..05ed0505f81 100644
--- a/pkgs/build-support/fetchsvn/default.nix
+++ b/pkgs/build-support/fetchsvn/default.nix
@@ -1,5 +1,6 @@
 {stdenv, subversion, sshSupport ? false, openssh ? null}:
-{url, rev ? "HEAD", md5 ? "", sha256 ? "", ignoreExternals ? false, name ? null}:
+{url, rev ? "HEAD", md5 ? "", sha256 ? "",
+ ignoreExternals ? false, ignoreKeywords ? false, name ? null}:
 
 let
   repoName = with stdenv.lib;
@@ -31,7 +32,7 @@ stdenv.mkDerivation {
   outputHashMode = "recursive";
   outputHash = if sha256 == "" then md5 else sha256;
   
-  inherit url rev sshSupport openssh ignoreExternals;
+  inherit url rev sshSupport openssh ignoreExternals ignoreKeywords;
 
   impureEnvVars = stdenv.lib.fetchers.proxyImpureEnvVars;
   preferLocalBuild = true;