aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-02-09 16:39:46 +0000
committerChristopher Baines <mail@cbaines.net>2020-02-09 16:39:46 +0000
commit9c38115c3d4eb34b21a7f3f0be1cddfa62616858 (patch)
treedce0b936266cbf3dea5ac4f965e40db21fde4804
parent3ee481110ec0f821b4f0342bf8ab498b55d77e79 (diff)
downloaddata-service-9c38115c3d4eb34b21a7f3f0be1cddfa62616858.tar
data-service-9c38115c3d4eb34b21a7f3f0be1cddfa62616858.tar.gz
Refactor channel->derivation-file-name to reduce line length
-rw-r--r--guix-data-service/jobs/load-new-guix-revision.scm101
1 files changed, 52 insertions, 49 deletions
diff --git a/guix-data-service/jobs/load-new-guix-revision.scm b/guix-data-service/jobs/load-new-guix-revision.scm
index dff4f88..752e92c 100644
--- a/guix-data-service/jobs/load-new-guix-revision.scm
+++ b/guix-data-service/jobs/load-new-guix-revision.scm
@@ -719,6 +719,57 @@ WHERE job_id = $1"
'open-inferior/container
(resolve-module '(guix inferior))))
+ (define (start-inferior-and-return-derivation-file-names)
+ ;; /etc is only missing if open-inferior/container has been used
+ (when use-container?
+ (inferior-eval
+ '(begin
+ ;; Create /etc/pass, as %known-shorthand-profiles in (guix
+ ;; profiles) tries to read from this file. Because the environment
+ ;; is cleaned in build-self.scm, xdg-directory in (guix utils)
+ ;; falls back to accessing /etc/passwd.
+ (mkdir "/etc")
+ (call-with-output-file "/etc/passwd"
+ (lambda (port)
+ (display "root:x:0:0::/root:/bin/bash" port))))
+ inferior))
+
+ (let ((channel-instance
+ (first
+ (latest-channel-instances store
+ (list channel)))))
+ (inferior-eval '(use-modules (guix channels)
+ (guix profiles))
+ inferior)
+ (inferior-eval '(define channel-instance
+ (@@ (guix channels) channel-instance))
+ inferior)
+
+ (let ((file-name
+ (inferior-eval-with-store
+ inferior
+ store
+ `(lambda (store)
+ (let ((instances
+ (list
+ (channel-instance
+ (channel (name ',(channel-name channel))
+ (url ,(channel-url channel))
+ (branch ,(channel-branch channel))
+ (commit ,(channel-commit channel)))
+ ,(channel-instance-commit channel-instance)
+ ,(channel-instance-checkout channel-instance)))))
+ (run-with-store store
+ (mlet* %store-monad ((manifest (channel-instances->manifest
+ instances))
+ (derv (profile-derivation manifest)))
+ (mbegin %store-monad
+ (return (derivation-file-name derv))))))))))
+
+ (close-inferior inferior)
+
+ file-name)))
+
(let ((inferior
(if use-container?
(open-inferior/container
@@ -738,55 +789,7 @@ WHERE job_id = $1"
#t
(lambda ()
(with-throw-handler #t
- (lambda ()
- ;; /etc is only missing if open-inferior/container has been used
- (when use-container?
- (inferior-eval
- '(begin
- ;; Create /etc/pass, as %known-shorthand-profiles in (guix
- ;; profiles) tries to read from this file. Because the environment
- ;; is cleaned in build-self.scm, xdg-directory in (guix utils)
- ;; falls back to accessing /etc/passwd.
- (mkdir "/etc")
- (call-with-output-file "/etc/passwd"
- (lambda (port)
- (display "root:x:0:0::/root:/bin/bash" port))))
- inferior))
-
- (let ((channel-instance
- (first
- (latest-channel-instances store
- (list channel)))))
- (inferior-eval '(use-modules (guix channels)
- (guix profiles))
- inferior)
- (inferior-eval '(define channel-instance
- (@@ (guix channels) channel-instance))
- inferior)
-
- (let ((file-name
- (inferior-eval-with-store
- inferior
- store
- `(lambda (store)
- (let ((instances
- (list
- (channel-instance
- (channel (name ',(channel-name channel))
- (url ,(channel-url channel))
- (branch ,(channel-branch channel))
- (commit ,(channel-commit channel)))
- ,(channel-instance-commit channel-instance)
- ,(channel-instance-checkout channel-instance)))))
- (run-with-store store
- (mlet* %store-monad ((manifest (channel-instances->manifest instances))
- (derv (profile-derivation manifest)))
- (mbegin %store-monad
- (return (derivation-file-name derv))))))))))
-
- (close-inferior inferior)
-
- file-name)))
+ start-inferior-and-return-derivation-file-names
(lambda (key . parameters)
(display (backtrace) (current-error-port))
(display "\n" (current-error-port))