summaryrefslogtreecommitdiff
path: root/guix/scripts/pack.scm
diff options
context:
space:
mode:
authorEfraim Flashner <efraim@flashner.co.il>2019-12-12 04:10:59 +0200
committerEfraim Flashner <efraim@flashner.co.il>2019-12-12 04:10:59 +0200
commitc9e676d0b141f510c19e26edb1e6fad079b9b502 (patch)
tree79abb4a4b92ecf4504a46e55ffa7971a06c8a5df /guix/scripts/pack.scm
parentd45720d8b456e82380601d77e25bd05c6e0dc36a (diff)
parentdcb7ce500bd025455982d74c3384c707f35bbb46 (diff)
Merge remote-tracking branch 'origin/master' into core-updates
Diffstat (limited to 'guix/scripts/pack.scm')
-rw-r--r--guix/scripts/pack.scm21
1 files changed, 20 insertions, 1 deletions
diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm
index 61d18e2609..bbacc93bc0 100644
--- a/guix/scripts/pack.scm
+++ b/guix/scripts/pack.scm
@@ -334,6 +334,16 @@ added to the pack."
(define environment
(singularity-environment-file profile))
+ (define symlinks*
+ ;; Singularity requires /bin (specifically /bin/sh), so ensure that
+ ;; symlink is created.
+ (if (find (match-lambda
+ (("/bin" . _) #t)
+ (_ #f))
+ symlinks)
+ symlinks
+ `(("/bin" -> "bin") ,@symlinks)))
+
(define build
(with-imported-modules (source-module-closure
'((guix build utils)
@@ -407,7 +417,7 @@ added to the pack."
"s" "777" "0" "0"
(relative-file-name (dirname source)
target)))))))
- '#$symlinks)
+ '#$symlinks*)
"-p" "/.singularity.d d 555 0 0"
@@ -1049,9 +1059,18 @@ Create a bundle of PACKAGE.\n"))
(entry-point (assoc-ref opts 'entry-point))
(profile-name (assoc-ref opts 'profile-name))
(gc-root (assoc-ref opts 'gc-root)))
+ (define (lookup-package package)
+ (manifest-lookup manifest (manifest-pattern (name package))))
+
(when (null? (manifest-entries manifest))
(warning (G_ "no packages specified; building an empty pack~%")))
+ (when (and (eq? pack-format 'squashfs)
+ (not (any lookup-package '("bash" "bash-minimal"))))
+ (warning (G_ "Singularity requires you to provide a shell~%"))
+ (display-hint (G_ "Add @code{bash} or @code{bash-minimal} \
+to your package list.")))
+
(run-with-store store
(mlet* %store-monad ((profile (profile-derivation
manifest