Browse Source

pull: Acquire a lock for the target profile.

This is a followup to b1fb663404.

* guix/scripts/pull.scm (guix-pull): Wrap 'run-with-store' call in
'with-file-lock/no-wait'.
wip-system-bootstrap
Ludovic Courtès 2 years ago
parent
commit
6fbd8fde2f
No known key found for this signature in database GPG Key ID: 90B11993D9AEBB5
  1. 1
      .dir-locals.el
  2. 19
      guix/scripts/pull.scm

1
.dir-locals.el

@ -35,6 +35,7 @@
(eval . (put 'modify-services 'scheme-indent-function 1))
(eval . (put 'with-directory-excursion 'scheme-indent-function 1))
(eval . (put 'with-file-lock 'scheme-indent-function 1))
(eval . (put 'with-file-lock/no-wait 'scheme-indent-function 1))
(eval . (put 'package 'scheme-indent-function 0))
(eval . (put 'origin 'scheme-indent-function 0))

19
guix/scripts/pull.scm

@ -36,6 +36,8 @@
#:autoload (guix inferior) (open-inferior)
#:use-module (guix scripts build)
#:autoload (guix build utils) (which)
#:use-module ((guix build syscalls)
#:select (with-file-lock/no-wait))
#:use-module (guix git)
#:use-module (git)
#:use-module (gnu packages)
@ -815,11 +817,16 @@ Use '~/.config/guix/channels.scm' instead."))
(if (assoc-ref opts 'bootstrap?)
%bootstrap-guile
(canonical-package guile-2.2)))))
(run-with-store store
(build-and-install instances profile
#:dry-run?
(assoc-ref opts 'dry-run?)
#:use-substitutes?
(assoc-ref opts 'substitutes?))))))))))))))
(with-file-lock/no-wait (string-append profile ".lock")
(lambda (key . args)
(leave (G_ "profile ~a is locked by another process~%")
profile))
(run-with-store store
(build-and-install instances profile
#:dry-run?
(assoc-ref opts 'dry-run?)
#:use-substitutes?
(assoc-ref opts 'substitutes?)))))))))))))))
;;; pull.scm ends here
Loading…
Cancel
Save