diff options
| author | Mark H Weaver <mhw@netris.org> | 2013-02-14 04:15:25 -0500 |
|---|---|---|
| committer | Mark H Weaver <mhw@netris.org> | 2013-02-16 22:17:37 -0500 |
| commit | e49951eb3e1e1a8e7bad6d7471483e70b0865352 (patch) | |
| tree | 7924fec33724f1de6a1cdd0757c7ebe38c7bee6b /scripts | |
| parent | 040860152e63bbafb2eb3e93619e18d107c96b55 (diff) | |
Replace individual scripts with master 'guix' script.
* scripts/guix.in: New script.
* Makefile.am (bin_SCRIPTS): Add 'scripts/guix'. Remove 'guix-build',
'guix-download', 'guix-import', 'guix-package', and 'guix-gc'.
(MODULES): Add 'guix/scripts/build.scm', 'guix/scripts/download.scm',
'guix/scripts/import.scm', 'guix/scripts/package.scm', and
'guix/scripts/gc.scm'.
* configure.ac (AC_CONFIG_FILES): Add 'scripts/guix'. Remove 'guix-build',
'guix-download', 'guix-import', 'guix-package', and 'guix-gc'.
* guix-build.in, guix-download.in, guix-gc.in, guix-import.in,
guix-package.in: Remove shell script boilerplate. Move to guix-COMMAND.in
to guix/scripts/COMMAND.scm. Rename module from (guix-COMMAND) to
(guix scripts COMMAND). Change "guix-COMMAND" to "guix COMMAND" in
usage help string.
* pre-inst-env.in: Add "@abs_top_builddir@/scripts" to the front of $PATH.
Export $GUIX_UNINSTALLED.
* tests/guix-build.sh, tests/guix-daemon.sh, tests/guix-download.sh,
tests/guix-gc.sh, tests/guix-package.sh: Use "guix COMMAND" instead of
"guix-COMMAND".
* doc/guix.texi: Replace all occurrences of "guix-COMMAND" with
"guix COMMAND".
* po/POTFILES.in: Update.
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/guix.in | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/scripts/guix.in b/scripts/guix.in new file mode 100644 index 00000000000..2fdde7d13a8 --- /dev/null +++ b/scripts/guix.in | |||
| @@ -0,0 +1,56 @@ | |||
| 1 | #!@GUILE@ -s | ||
| 2 | -*- scheme -*- | ||
| 3 | !# | ||
| 4 | ;;; GNU Guix --- Functional package management for GNU | ||
| 5 | ;;; Copyright © 2013 Mark H Weaver <mhw@netris.org> | ||
| 6 | ;;; | ||
| 7 | ;;; This file is part of GNU Guix. | ||
| 8 | ;;; | ||
| 9 | ;;; GNU Guix is free software; you can redistribute it and/or modify it | ||
| 10 | ;;; under the terms of the GNU General Public License as published by | ||
| 11 | ;;; the Free Software Foundation; either version 3 of the License, or (at | ||
| 12 | ;;; your option) any later version. | ||
| 13 | ;;; | ||
| 14 | ;;; GNU Guix is distributed in the hope that it will be useful, but | ||
| 15 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 16 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 17 | ;;; GNU General Public License for more details. | ||
| 18 | ;;; | ||
| 19 | ;;; You should have received a copy of the GNU General Public License | ||
| 20 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | ||
| 21 | |||
| 22 | ;; IMPORTANT: We must avoid loading any modules from Guix here, | ||
| 23 | ;; because we need to adjust the guile load paths first. | ||
| 24 | ;; It's okay to import modules from core Guile though. | ||
| 25 | (use-modules (ice-9 regex)) | ||
| 26 | |||
| 27 | (let () | ||
| 28 | (define-syntax-rule (push! elt v) (set! v (cons elt v))) | ||
| 29 | |||
| 30 | (define config-lookup | ||
| 31 | (let ((config '(("prefix" . "@prefix@") | ||
| 32 | ("datarootdir" . "@datarootdir@") | ||
| 33 | ("guilemoduledir" . "@guilemoduledir@"))) | ||
| 34 | (var-ref-regexp (make-regexp "\\$\\{([a-z]+)\\}"))) | ||
| 35 | (define (expand-var-ref match) | ||
| 36 | (lookup (match:substring match 1))) | ||
| 37 | (define (expand str) | ||
| 38 | (regexp-substitute/global #f var-ref-regexp str | ||
| 39 | 'pre expand-var-ref 'post)) | ||
| 40 | (define (lookup name) | ||
| 41 | (expand (assoc-ref config name))) | ||
| 42 | lookup)) | ||
| 43 | |||
| 44 | (define (maybe-augment-load-paths!) | ||
| 45 | (unless (getenv "GUIX_UNINSTALLED") | ||
| 46 | (let ((module-dir (config-lookup "guilemoduledir"))) | ||
| 47 | (push! module-dir %load-path) | ||
| 48 | (push! module-dir %load-compiled-path)))) | ||
| 49 | |||
| 50 | (define (run-guix-main) | ||
| 51 | (let ((guix-main (module-ref (resolve-interface '(guix ui)) | ||
| 52 | 'guix-main))) | ||
| 53 | (apply guix-main (command-line)))) | ||
| 54 | |||
| 55 | (maybe-augment-load-paths!) | ||
| 56 | (run-guix-main)) | ||
