diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-05-06 17:08:00 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-05-06 18:26:54 +0200 |
commit | d664f1b431d2a64ff58ddc4ccce40e187947b960 (patch) | |
tree | 81dbd7402d8dae149a4899b2734837cfee2eefd3 /tests | |
parent | 611adb1ee5814907694abc9afa1bad984f0cbea0 (diff) | |
download | gnu-guix-d664f1b431d2a64ff58ddc4ccce40e187947b960.tar gnu-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')
-rw-r--r-- | tests/profiles.scm | 26 |
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") |