diff options
author | Ludovic Courtès <ludo@gnu.org> | 2021-11-23 11:22:30 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2021-11-23 11:29:38 +0100 |
commit | b15e543d303ea58fdc0f0541c708389f9d513e3d (patch) | |
tree | 5c4bd48d67d4d3cd4806269dcabf58382f448bed /guix/svn-download.scm | |
parent | 4efc08d895274ee39e6e6e5c49121fb05a0281b6 (diff) | |
parent | daf7b5ecef8de0e536ffd8d2957f022d010767a8 (diff) |
Merge branch 'master' into core-updates-frozen
Diffstat (limited to 'guix/svn-download.scm')
-rw-r--r-- | guix/svn-download.scm | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/guix/svn-download.scm b/guix/svn-download.scm index 28ad49977b..55ce0d7351 100644 --- a/guix/svn-download.scm +++ b/guix/svn-download.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014, 2015, 2016, 2019, 2021 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in> -;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2017, 2019, 2021 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,7 +26,9 @@ #:use-module (guix packages) #:use-module (guix utils) #:use-module ((guix build svn) #:prefix build:) + #:use-module ((guix build utils) #:select (mkdir-p)) #:use-module (ice-9 match) + #:use-module (srfi srfi-1) #:export (svn-reference svn-reference? svn-reference-url @@ -41,7 +43,8 @@ svn-multi-reference-revision svn-multi-reference-locations svn-multi-reference-recursive? - svn-multi-fetch)) + svn-multi-fetch + download-multi-svn-to-store)) ;;; Commentary: ;;; @@ -166,4 +169,28 @@ reports to LOG." (add-to-store store name #t "sha256" (string-append temp "/svn"))))))) +(define* (download-multi-svn-to-store store ref + #:optional (name (basename (svn-multi-reference-url ref))) + #:key (log (current-error-port))) + "Download from REF, a <svn-multi-reference> object to STORE. Write progress +reports to LOG." + (call-with-temporary-directory + (lambda (temp) + (and (every (lambda (location) + (let ((dir (string-append temp "/" (dirname location)))) + (mkdir-p dir)) + (parameterize ((current-output-port log)) + (build:svn-fetch (string-append (svn-multi-reference-url ref) + "/" location) + (svn-multi-reference-revision ref) + (if (string-suffix? "/" location) + (string-append temp "/" location) + (string-append temp "/" (dirname location))) + #:recursive? + (svn-multi-reference-recursive? ref) + #:user-name (svn-multi-reference-user-name ref) + #:password (svn-multi-reference-password ref)))) + (svn-multi-reference-locations ref)) + (add-to-store store name #t "sha256" temp))))) + ;;; svn-download.scm ends here |