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) | |
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 890f09a751c..a39717191dc 100644 --- a/tests/profiles.scm +++ b/tests/profiles.scm | |||
| @@ -29,6 +29,8 @@ | |||
| 29 | #:use-module ((gnu packages guile) #:prefix packages:) | 29 | #:use-module ((gnu packages guile) #:prefix packages:) |
| 30 | #:use-module (ice-9 match) | 30 | #:use-module (ice-9 match) |
| 31 | #:use-module (ice-9 regex) | 31 | #:use-module (ice-9 regex) |
| 32 | #:use-module (ice-9 popen) | ||
| 33 | #:use-module (rnrs io ports) | ||
| 32 | #:use-module (srfi srfi-11) | 34 | #:use-module (srfi srfi-11) |
| 33 | #:use-module (srfi srfi-64)) | 35 | #:use-module (srfi srfi-64)) |
| 34 | 36 | ||
| @@ -220,6 +222,30 @@ | |||
| 220 | (manifest-entry-search-paths entry) | 222 | (manifest-entry-search-paths entry) |
| 221 | (package-native-search-paths | 223 | (package-native-search-paths |
| 222 | packages:guile-2.0))))))))) | 224 | packages:guile-2.0))))))))) |
| 225 | |||
| 226 | (test-assertm "etc/profile" | ||
| 227 | ;; Make sure we get an 'etc/profile' file that at least defines $PATH. | ||
| 228 | (mlet* %store-monad | ||
| 229 | ((guile -> (package | ||
| 230 | (inherit %bootstrap-guile) | ||
| 231 | (native-search-paths | ||
| 232 | (package-native-search-paths packages:guile-2.0)))) | ||
| 233 | (entry -> (package->manifest-entry guile)) | ||
| 234 | (drv (profile-derivation (manifest (list entry)) | ||
| 235 | #:hooks '())) | ||
| 236 | (profile -> (derivation->output-path drv))) | ||
| 237 | (mbegin %store-monad | ||
| 238 | (built-derivations (list drv)) | ||
| 239 | (let* ((pipe (open-input-pipe | ||
| 240 | (string-append "source " | ||
| 241 | profile "/etc/profile; " | ||
| 242 | "unset GUIX_PROFILE; set"))) | ||
| 243 | (env (get-string-all pipe))) | ||
| 244 | (return | ||
| 245 | (and (zero? (close-pipe pipe)) | ||
| 246 | (string-contains env | ||
| 247 | (string-append "PATH=" profile "/bin")))))))) | ||
| 248 | |||
| 223 | (test-end "profiles") | 249 | (test-end "profiles") |
| 224 | 250 | ||
| 225 | 251 | ||
