guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/07: svn-download: Pass parameters through environment variables.


From: guix-commits
Subject: 01/07: svn-download: Pass parameters through environment variables.
Date: Mon, 17 Oct 2022 17:18:46 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit 8599fccef84a2930280a5b2844829cfbafd593b0
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Mon Oct 17 17:34:33 2022 +0200

    svn-download: Pass parameters through environment variables.
    
    This ensures a single "svn-download" script is created in the store for
    all the origins that use 'svn-fetch'.
    
    * guix/svn-download.scm (svn-fetch)[build]: Check for environment
    variables instead of splicing REF fields.
    Pass #:script-name and #:env-vars to 'gexp->derivation'.
---
 guix/svn-download.scm | 41 +++++++++++++++++++++++++++++++++--------
 1 file changed, 33 insertions(+), 8 deletions(-)

diff --git a/guix/svn-download.scm b/guix/svn-download.scm
index 55ce0d7351..1c369e7f9a 100644
--- a/guix/svn-download.scm
+++ b/guix/svn-download.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2015, 2016, 2019, 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2014-2016, 2019, 2021-2022 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in>
 ;;; Copyright © 2017, 2019, 2021 Ricardo Wurmus <rekado@elephly.net>
 ;;;
@@ -79,17 +79,42 @@ HASH-ALGO (a symbol).  Use NAME as the file name, or a 
generic name if #f."
     (with-imported-modules '((guix build svn)
                              (guix build utils))
       #~(begin
-          (use-modules (guix build svn))
-          (svn-fetch '#$(svn-reference-url ref)
-                     '#$(svn-reference-revision ref)
+          (use-modules (guix build svn)
+                       (ice-9 match))
+
+          (svn-fetch (getenv "svn url")
+                     (string->number (getenv "svn revision"))
                      #$output
-                     #:svn-command (string-append #+svn "/bin/svn")
-                     #:recursive? #$(svn-reference-recursive? ref)
-                     #:user-name #$(svn-reference-user-name ref)
-                     #:password #$(svn-reference-password ref)))))
+                     #:svn-command #+(file-append svn "/bin/svn")
+                     #:recursive? (match (getenv "svn recursive?")
+                                    ("yes" #t)
+                                    (_ #f))
+                     #:user-name (getenv "svn user name")
+                     #:password (getenv "svn password")))))
 
   (mlet %store-monad ((guile (package->derivation guile system)))
     (gexp->derivation (or name "svn-checkout") build
+
+                      ;; Use environment variables and a fixed script name so
+                      ;; there's only one script in store for all the
+                      ;; downloads.
+                      #:script-name "svn-download"
+                      #:env-vars
+                      `(("svn url" . ,(svn-reference-url ref))
+                        ("svn revision"
+                         . ,(number->string (svn-reference-revision ref)))
+                        ,@(if (svn-reference-recursive? ref)
+                              `(("svn recursive?" . "yes"))
+                              '())
+                        ,@(if (svn-reference-user-name ref)
+                              `(("svn user name"
+                                 . ,(svn-reference-user-name ref)))
+                              '())
+                        ,@(if (svn-reference-password ref)
+                              `(("svn password"
+                                 . ,(svn-reference-password ref)))
+                              '()))
+
                       #:system system
                       #:hash-algo hash-algo
                       #:hash hash



reply via email to

[Prev in Thread] Current Thread [Next in Thread]