aboutsummaryrefslogtreecommitdiff
path: root/tests/profiles.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-05-06 17:08:00 +0200
committerLudovic Courtès <ludo@gnu.org>2015-05-06 18:26:54 +0200
commitd664f1b431d2a64ff58ddc4ccce40e187947b960 (patch)
tree81dbd7402d8dae149a4899b2734837cfee2eefd3 /tests/profiles.scm
parent611adb1ee5814907694abc9afa1bad984f0cbea0 (diff)
downloadguix-d664f1b431d2a64ff58ddc4ccce40e187947b960.tar
guix-d664f1b431d2a64ff58ddc4ccce40e187947b960.tar.gz
profiles: Generate an 'etc/profile' file.
Suggested by 宋文武 <iyzsong@gmail.com> in <http://bugs.gnu.org/20255>. * guix/build/profiles.scm (abstract-profile, write-environment-variable-definition): New procedures. (build-profile): Add #:search-paths parameter. Create OUTPUT/etc/profile. * guix/profiles.scm (profile-derivation)[builder]: Add 'search-paths' variable and pass it to 'build-profile'. Adjust #:modules argument. * tests/profiles.scm ("etc/profile"): New test. * doc/guix.texi (Invoking guix package): Mention etc/profile.
Diffstat (limited to 'tests/profiles.scm')
-rw-r--r--tests/profiles.scm26
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/profiles.scm b/tests/profiles.scm
index 890f09a751..a39717191d 100644
--- a/tests/profiles.scm
+++ b/tests/profiles.scm
@@ -29,6 +29,8 @@
#:use-module ((gnu packages guile) #:prefix packages:)
#:use-module (ice-9 match)
#:use-module (ice-9 regex)
+ #:use-module (ice-9 popen)
+ #:use-module (rnrs io ports)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-64))
@@ -220,6 +222,30 @@
(manifest-entry-search-paths entry)
(package-native-search-paths
packages:guile-2.0)))))))))
+
+(test-assertm "etc/profile"
+ ;; Make sure we get an 'etc/profile' file that at least defines $PATH.
+ (mlet* %store-monad
+ ((guile -> (package
+ (inherit %bootstrap-guile)
+ (native-search-paths
+ (package-native-search-paths packages:guile-2.0))))
+ (entry -> (package->manifest-entry guile))
+ (drv (profile-derivation (manifest (list entry))
+ #:hooks '()))
+ (profile -> (derivation->output-path drv)))
+ (mbegin %store-monad
+ (built-derivations (list drv))
+ (let* ((pipe (open-input-pipe
+ (string-append "source "
+ profile "/etc/profile; "
+ "unset GUIX_PROFILE; set")))
+ (env (get-string-all pipe)))
+ (return
+ (and (zero? (close-pipe pipe))
+ (string-contains env
+ (string-append "PATH=" profile "/bin"))))))))
+
(test-end "profiles")