Added hacky fetchsvn component which allows users to fetch code over svn+ssh
svn path=/nixpkgs/trunk/; revision=11455
This commit is contained in:
parent
d453801a76
commit
99d512a41f
15
pkgs/build-support/fetchsvnssh/builder.sh
Normal file
15
pkgs/build-support/fetchsvnssh/builder.sh
Normal file
@ -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
|
16
pkgs/build-support/fetchsvnssh/default.nix
Normal file
16
pkgs/build-support/fetchsvnssh/default.nix
Normal file
@ -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;
|
||||||
|
}
|
22
pkgs/build-support/fetchsvnssh/sshsubversion.exp
Executable file
22
pkgs/build-support/fetchsvnssh/sshsubversion.exp
Executable file
@ -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
|
@ -345,6 +345,11 @@ let pkgs = rec {
|
|||||||
sshSupport = true;
|
sshSupport = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
fetchsvnssh = import ../build-support/fetchsvnssh {
|
||||||
|
inherit stdenv subversion openssh expect;
|
||||||
|
sshSupport = true;
|
||||||
|
};
|
||||||
|
|
||||||
# TODO do some testing
|
# TODO do some testing
|
||||||
fetchhg = import ../build-support/fetchhg {
|
fetchhg = import ../build-support/fetchhg {
|
||||||
inherit stdenv mercurial nix;
|
inherit stdenv mercurial nix;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user