diff options
author | Sander van der Burg <s.vanderburg@tudelft.nl> | 2008-04-02 13:28:55 +0000 |
---|---|---|
committer | Sander van der Burg <s.vanderburg@tudelft.nl> | 2008-04-02 13:28:55 +0000 |
commit | 99d512a41fb76a5daeda6c7bc5b69d1519f756d3 (patch) | |
tree | 9be3e674354e85acde0cef5b813c81fc7603ba5b /pkgs/build-support | |
parent | d453801a760c7f67470971185405eb3c725b89b4 (diff) | |
download | nixlib-99d512a41fb76a5daeda6c7bc5b69d1519f756d3.tar nixlib-99d512a41fb76a5daeda6c7bc5b69d1519f756d3.tar.gz nixlib-99d512a41fb76a5daeda6c7bc5b69d1519f756d3.tar.bz2 nixlib-99d512a41fb76a5daeda6c7bc5b69d1519f756d3.tar.lz nixlib-99d512a41fb76a5daeda6c7bc5b69d1519f756d3.tar.xz nixlib-99d512a41fb76a5daeda6c7bc5b69d1519f756d3.tar.zst nixlib-99d512a41fb76a5daeda6c7bc5b69d1519f756d3.zip |
Added hacky fetchsvn component which allows users to fetch code over svn+ssh
svn path=/nixpkgs/trunk/; revision=11455
Diffstat (limited to 'pkgs/build-support')
-rw-r--r-- | pkgs/build-support/fetchsvnssh/builder.sh | 15 | ||||
-rw-r--r-- | pkgs/build-support/fetchsvnssh/default.nix | 16 | ||||
-rwxr-xr-x | pkgs/build-support/fetchsvnssh/sshsubversion.exp | 22 |
3 files changed, 53 insertions, 0 deletions
diff --git a/pkgs/build-support/fetchsvnssh/builder.sh b/pkgs/build-support/fetchsvnssh/builder.sh new file mode 100644 index 000000000000..d9c6dc7da31a --- /dev/null +++ b/pkgs/build-support/fetchsvnssh/builder.sh @@ -0,0 +1,15 @@ +source $stdenv/setup + +header "exporting $url (r$rev) into $out" + +if test "$sshSupport"; then + export SVN_SSH="$openssh/bin/ssh" +fi + +# Pipe the "p" character into Subversion to force it to accept the +# 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. +expect -f $sshSubversion "$username" "$password" "$rev" "$url" $out + +stopNest diff --git a/pkgs/build-support/fetchsvnssh/default.nix b/pkgs/build-support/fetchsvnssh/default.nix new file mode 100644 index 000000000000..6c6c03d68732 --- /dev/null +++ b/pkgs/build-support/fetchsvnssh/default.nix @@ -0,0 +1,16 @@ +{stdenv, subversion, sshSupport ? false, openssh ? null, expect}: +{username, password, url, rev ? "HEAD", md5 ? "", sha256 ? ""}: + +stdenv.mkDerivation { + name = "svn-export-ssh"; + builder = ./builder.sh; + buildInputs = [subversion expect]; + + outputHashAlgo = if sha256 == "" then "md5" else "sha256"; + outputHashMode = "recursive"; + outputHash = if sha256 == "" then md5 else sha256; + + sshSubversion = ./sshsubversion.exp; + + inherit username password url rev sshSupport openssh; +} diff --git a/pkgs/build-support/fetchsvnssh/sshsubversion.exp b/pkgs/build-support/fetchsvnssh/sshsubversion.exp new file mode 100755 index 000000000000..c00f39714e5b --- /dev/null +++ b/pkgs/build-support/fetchsvnssh/sshsubversion.exp @@ -0,0 +1,22 @@ +#!/nix/var/nix/profiles/default/bin/expect -f + +# Set variables +set username [lindex $argv 0] +set password [lindex $argv 1] +set rev [lindex $argv 2] +set url [lindex $argv 3] +set out [lindex $argv 4] +set timeout -1 + +spawn svn export -r$rev svn+ssh://$username@$url $out +match_max 100000 + +expect "*continue connecting*" { send -- "yes\r"; expect "*?assword:*"; send -- "$password\r" } \ + "*?assword:*" { send -- "$password\r" } + +expect "*?assword:*" +send -- "$password\r" + +# Send blank line +send -- "\r" +expect eof |