guix: Support authentication when fetching from SVN.

* guix/svn-download.scm (<svn-reference>): Add fields for optional
credentials.
(svn-fetch): Pass credentials to build-side "svn-fetch".
* guix/build/svn.scm (svn-fetch): Pass optional credentials to svn
command.
This commit is contained in:
Ricardo Wurmus 2016-06-30 15:43:23 +02:00 committed by Ricardo Wurmus
parent 1095bd1db0
commit 140dd8f82c
No known key found for this signature in database
GPG key ID: 197A5888235FACAC
2 changed files with 21 additions and 10 deletions

View file

@ -29,15 +29,22 @@ (define-module (guix build svn)
;;; Code:
(define* (svn-fetch url revision directory
#:key (svn-command "svn"))
#:key (svn-command "svn")
(user-name #f)
(password #f))
"Fetch REVISION from URL into DIRECTORY. REVISION must be an integer, and a
valid Subversion revision. Return #t on success, #f otherwise."
(and (zero? (system* svn-command "checkout" "--non-interactive"
(and (zero? (apply system* svn-command
"checkout" "--non-interactive"
;; Trust the server certificate. This is OK as we
;; verify the checksum later. This can be removed when
;; ca-certificates package is added.
"--trust-server-cert" "-r" (number->string revision)
url directory))
`(,@(if (and user-name password)
(list (string-append "--username=" user-name)
(string-append "--password=" password))
'())
,url ,directory)))
(with-directory-excursion directory
(begin
;; The contents of '.svn' vary as a function of the current status

View file

@ -42,7 +42,9 @@ (define-record-type* <svn-reference>
svn-reference make-svn-reference
svn-reference?
(url svn-reference-url) ; string
(revision svn-reference-revision)) ; number
(revision svn-reference-revision) ; number
(user-name svn-reference-user-name (default #f))
(password svn-reference-password (default #f)))
(define (subversion-package)
"Return the default Subversion package."
@ -62,7 +64,9 @@ (define build
(svn-fetch '#$(svn-reference-url ref)
'#$(svn-reference-revision ref)
#$output
#:svn-command (string-append #+svn "/bin/svn"))))
#:svn-command (string-append #+svn "/bin/svn")
#:user-name #$(svn-reference-user-name ref)
#:password #$(svn-reference-password ref))))
(mlet %store-monad ((guile (package->derivation guile system)))
(gexp->derivation (or name "svn-checkout") build