~ruther/guix-local

10618627bfe210f4ec84ab3018f12840704a11e0 — Ludovic Courtès 9 years ago 9d1e56b
mapped-devices: raid-device-mapping: Avoid non-top-level 'use-modules'.

Fixes <http://bugs.gnu.org/24135>.
Reported by myglc2 <myglc2@gmail.com>.

* gnu/system/mapped-devices.scm (open-raid-device): Avoid non-top-level
'use-modules' form.
1 files changed, 20 insertions(+), 17 deletions(-)

M gnu/system/mapped-devices.scm
M gnu/system/mapped-devices.scm => gnu/system/mapped-devices.scm +20 -17
@@ 131,23 131,26 @@
(define (open-raid-device sources target)
  "Return a gexp that assembles SOURCES (a list of devices) to the RAID device
TARGET (e.g., \"/dev/md0\"), using 'mdadm'."
  #~(begin
      (use-modules (srfi srfi-1) (ice-9 format))

      (let ((sources '#$sources))
        (let loop ((attempts 0))
          (unless (every file-exists? sources)
            (when (> attempts 20)
              (error "RAID devices did not show up; bailing out"
                     sources))

            (format #t "waiting for RAID source devices~{ ~a~}...~%"
                    sources)
            (sleep 1)
            (loop (+ 1 attempts))))

        (zero? (system* (string-append #$mdadm "/sbin/mdadm")
                        "--assemble" #$target sources)))))
  #~(let ((sources '#$sources)

          ;; XXX: We're not at the top level here.  We could use a
          ;; non-top-level 'use-modules' form but that doesn't work when the
          ;; code is eval'd, like the Shepherd does.
          (every   (@ (srfi srfi-1) every))
          (format  (@ (ice-9 format) format)))
      (let loop ((attempts 0))
        (unless (every file-exists? sources)
          (when (> attempts 20)
            (error "RAID devices did not show up; bailing out"
                   sources))

          (format #t "waiting for RAID source devices~{ ~a~}...~%"
                  sources)
          (sleep 1)
          (loop (+ 1 attempts))))

      (zero? (system* (string-append #$mdadm "/sbin/mdadm")
                      "--assemble" #$target sources))))

(define (close-raid-device sources target)
  "Return a gexp that stops the RAID device TARGET."