diff options
| author | Ludovic Courtès <ludo@gnu.org> | 2022-03-31 13:01:21 +0200 |
|---|---|---|
| committer | Ludovic Courtès <ludo@gnu.org> | 2022-04-04 22:58:04 +0200 |
| commit | c42b7baf13c7633b4512e94da7445299c57b247d (patch) | |
| tree | 461389e058b7d9499299612593533d72e647a7ea /tests/guix-shell-export-manifest.sh | |
| parent | 6fed836a6f9b8fb63ba067d0523942119687ce0b (diff) | |
shell: Add '--export-manifest'.
* guix/scripts/shell.scm (show-help, %options): Add '--export-manifest'.
(manifest-entry-version-prefix, manifest->code*)
(export-manifest): New procedures.
(guix-shell): Honor '--export-manifest'.
* tests/guix-shell-export-manifest.sh: New file.
* Makefile.am (SH_TESTS): Add it.
* doc/guix.texi (Invoking guix shell): Document '--export-manifest'.
(Invoking guix environment): Link to it.
(Invoking guix pack): Likewise.
Diffstat (limited to 'tests/guix-shell-export-manifest.sh')
| -rw-r--r-- | tests/guix-shell-export-manifest.sh | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/tests/guix-shell-export-manifest.sh b/tests/guix-shell-export-manifest.sh new file mode 100644 index 00000000000..cbb90f04bfc --- /dev/null +++ b/tests/guix-shell-export-manifest.sh | |||
| @@ -0,0 +1,84 @@ | |||
| 1 | # GNU Guix --- Functional package management for GNU | ||
| 2 | # Copyright © 2022 Ludovic Courtès <ludo@gnu.org> | ||
| 3 | # | ||
| 4 | # This file is part of GNU Guix. | ||
| 5 | # | ||
| 6 | # GNU Guix is free software; you can redistribute it and/or modify it | ||
| 7 | # under the terms of the GNU General Public License as published by | ||
| 8 | # the Free Software Foundation; either version 3 of the License, or (at | ||
| 9 | # your option) any later version. | ||
| 10 | # | ||
| 11 | # GNU Guix is distributed in the hope that it will be useful, but | ||
| 12 | # WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 14 | # GNU General Public License for more details. | ||
| 15 | # | ||
| 16 | # You should have received a copy of the GNU General Public License | ||
| 17 | # along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | ||
| 18 | |||
| 19 | # | ||
| 20 | # Test 'guix shell --export-manifest'. | ||
| 21 | # | ||
| 22 | |||
| 23 | guix shell --version | ||
| 24 | |||
| 25 | tmpdir="t-guix-manifest-$$" | ||
| 26 | trap 'rm -r "$tmpdir"' EXIT | ||
| 27 | mkdir "$tmpdir" | ||
| 28 | |||
| 29 | manifest="$tmpdir/manifest.scm" | ||
| 30 | |||
| 31 | # Basics. | ||
| 32 | guix shell --export-manifest guile-bootstrap > "$manifest" | ||
| 33 | test "$(guix build -m "$manifest")" = "$(guix build guile-bootstrap)" | ||
| 34 | |||
| 35 | guix shell -m "$manifest" --bootstrap -- \ | ||
| 36 | "$SHELL" -c 'guix package --export-manifest -p "$GUIX_ENVIRONMENT"' > \ | ||
| 37 | "$manifest.second" | ||
| 38 | for m in "$manifest" "$manifest.second" | ||
| 39 | do | ||
| 40 | grep -v '^;' < "$m" > "$m.new" # filter out comments | ||
| 41 | mv "$m.new" "$m" | ||
| 42 | done | ||
| 43 | |||
| 44 | cat "$manifest" | ||
| 45 | cat "$manifest.second" | ||
| 46 | |||
| 47 | cmp "$manifest" "$manifest.second" | ||
| 48 | |||
| 49 | # Combining manifests. | ||
| 50 | guix shell --export-manifest -m "$manifest" gash gash-utils \ | ||
| 51 | > "$manifest.second" | ||
| 52 | guix build -m "$manifest.second" -d | \ | ||
| 53 | grep "$(guix build guile-bootstrap -d)" | ||
| 54 | guix build -m "$manifest.second" -d | \ | ||
| 55 | grep "$(guix build gash -d)" | ||
| 56 | |||
| 57 | # Package transformation option. | ||
| 58 | guix shell --export-manifest guile guix --with-latest=guile-json > "$manifest" | ||
| 59 | grep 'options->transformation' "$manifest" | ||
| 60 | grep '(with-latest . "guile-json")' "$manifest" | ||
| 61 | |||
| 62 | # Development manifest. | ||
| 63 | guix shell --export-manifest -D guile git > "$manifest" | ||
| 64 | grep 'package->development-manifest' "$manifest" | ||
| 65 | grep '"guile"' "$manifest" | ||
| 66 | guix build -m "$manifest" -d | \ | ||
| 67 | grep "$(guix build -e '(@@ (gnu packages commencement) gcc-final)' -d)" | ||
| 68 | guix build -m "$manifest" -d | \ | ||
| 69 | grep "$(guix build git -d)" | ||
| 70 | |||
| 71 | # Test various combinations to make sure generated code uses interfaces | ||
| 72 | # correctly. | ||
| 73 | for options in \ | ||
| 74 | "coreutils grep sed" \ | ||
| 75 | "gsl openblas gcc-toolchain --tune" \ | ||
| 76 | "guile -m $manifest.previous" \ | ||
| 77 | "git:send-email gdb guile:debug" \ | ||
| 78 | "git -D coreutils" | ||
| 79 | do | ||
| 80 | guix shell --export-manifest $options > "$manifest" | ||
| 81 | cat "$manifest" | ||
| 82 | guix shell -m "$manifest" -n | ||
| 83 | mv "$manifest" "$manifest.previous" | ||
| 84 | done | ||
