Browse Source
* guix/scripts/install.scm, guix/scripts/remove.scm, guix/scripts/upgrade.scm, tests/guix-package-aliases.sh: New files. * Makefile.am (MODULES, SH_TESTS): Add them. * po/guix/POTFILES.in: Add them. * guix/scripts/package.scm (guix-package): Split with... (guix-package*): ... this. New procedure. * doc/guix.texi (Invoking guix package): Document them. (Binary Installation, Application Setup, Package Management) (Packages with Multiple Outputs, Package Modules) (X.509 Certificates, Installing Debugging Files): Use 'guix install' in simple examples. * etc/completion/bash/guix (_guix_complete): Handle "install", "remove", and "upgrade".version-1.0.0

9 changed files with 358 additions and 13 deletions
@ -0,0 +1,80 @@ |
|||
;;; GNU Guix --- Functional package management for GNU |
|||
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org> |
|||
;;; |
|||
;;; This file is part of GNU Guix. |
|||
;;; |
|||
;;; GNU Guix is free software; you can redistribute it and/or modify it |
|||
;;; under the terms of the GNU General Public License as published by |
|||
;;; the Free Software Foundation; either version 3 of the License, or (at |
|||
;;; your option) any later version. |
|||
;;; |
|||
;;; GNU Guix is distributed in the hope that it will be useful, but |
|||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
;;; GNU General Public License for more details. |
|||
;;; |
|||
;;; You should have received a copy of the GNU General Public License |
|||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. |
|||
|
|||
(define-module (guix scripts install) |
|||
#:use-module (guix ui) |
|||
#:use-module (guix scripts package) |
|||
#:use-module (guix scripts build) |
|||
#:use-module (guix scripts) |
|||
#:use-module (srfi srfi-1) |
|||
#:use-module (srfi srfi-26) |
|||
#:use-module (srfi srfi-37) |
|||
#:export (guix-install)) |
|||
|
|||
(define (show-help) |
|||
(display (G_ "Usage: guix install [OPTION] PACKAGES... |
|||
Install the given PACKAGES. |
|||
This is an alias for 'guix package -i'.\n")) |
|||
(display (G_ " |
|||
-p, --profile=PROFILE use PROFILE instead of the user's default profile")) |
|||
;; '--bootstrap' not shown here. |
|||
(display (G_ " |
|||
-v, --verbosity=LEVEL use the given verbosity LEVEL")) |
|||
(newline) |
|||
(show-build-options-help) |
|||
(newline) |
|||
(show-transformation-options-help) |
|||
(newline) |
|||
(display (G_ " |
|||
-h, --help display this help and exit")) |
|||
(display (G_ " |
|||
-V, --version display version information and exit")) |
|||
(newline) |
|||
(show-bug-report-information)) |
|||
|
|||
(define %options |
|||
;; Specification of the command-line options. |
|||
(cons* (option '(#\h "help") #f #f |
|||
(lambda args |
|||
(show-help) |
|||
(exit 0))) |
|||
(option '(#\V "version") #f #f |
|||
(lambda args |
|||
(show-version-and-exit "guix install"))) |
|||
|
|||
;; Preserve some of the 'guix package' options. |
|||
(append (filter (lambda (option) |
|||
(any (cut member <> (option-names option)) |
|||
'("profile" "dry-run" "verbosity" "bootstrap"))) |
|||
%package-options) |
|||
|
|||
%transformation-options |
|||
%standard-build-options))) |
|||
|
|||
(define (guix-install . args) |
|||
(define (handle-argument arg result arg-handler) |
|||
;; Treat all non-option arguments as package specs. |
|||
(values (alist-cons 'install arg result) |
|||
arg-handler)) |
|||
|
|||
(define opts |
|||
(parse-command-line args %options |
|||
(list %package-default-options #f) |
|||
#:argument-handler handle-argument)) |
|||
|
|||
(guix-package* opts)) |
@ -0,0 +1,77 @@ |
|||
;;; GNU Guix --- Functional package management for GNU |
|||
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org> |
|||
;;; |
|||
;;; This file is part of GNU Guix. |
|||
;;; |
|||
;;; GNU Guix is free software; you can redistribute it and/or modify it |
|||
;;; under the terms of the GNU General Public License as published by |
|||
;;; the Free Software Foundation; either version 3 of the License, or (at |
|||
;;; your option) any later version. |
|||
;;; |
|||
;;; GNU Guix is distributed in the hope that it will be useful, but |
|||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
;;; GNU General Public License for more details. |
|||
;;; |
|||
;;; You should have received a copy of the GNU General Public License |
|||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. |
|||
|
|||
(define-module (guix scripts remove) |
|||
#:use-module (guix ui) |
|||
#:use-module (guix scripts package) |
|||
#:use-module (guix scripts build) |
|||
#:use-module (guix scripts) |
|||
#:use-module (srfi srfi-1) |
|||
#:use-module (srfi srfi-26) |
|||
#:use-module (srfi srfi-37) |
|||
#:export (guix-remove)) |
|||
|
|||
(define (show-help) |
|||
(display (G_ "Usage: guix remove [OPTION] PACKAGES... |
|||
Remove the given PACKAGES. |
|||
This is an alias for 'guix package -r'.\n")) |
|||
(display (G_ " |
|||
-p, --profile=PROFILE use PROFILE instead of the user's default profile")) |
|||
;; '--bootstrap' not shown here. |
|||
(display (G_ " |
|||
-v, --verbosity=LEVEL use the given verbosity LEVEL")) |
|||
(newline) |
|||
(show-build-options-help) |
|||
(newline) |
|||
(display (G_ " |
|||
-h, --help display this help and exit")) |
|||
(display (G_ " |
|||
-V, --version display version information and exit")) |
|||
(newline) |
|||
(show-bug-report-information)) |
|||
|
|||
(define %options |
|||
;; Specification of the command-line options. |
|||
(cons* (option '(#\h "help") #f #f |
|||
(lambda args |
|||
(show-help) |
|||
(exit 0))) |
|||
(option '(#\V "version") #f #f |
|||
(lambda args |
|||
(show-version-and-exit "guix remove"))) |
|||
|
|||
;; Preserve some of the 'guix package' options. |
|||
(append (filter (lambda (option) |
|||
(any (cut member <> (option-names option)) |
|||
'("profile" "dry-run" "verbosity" "bootstrap"))) |
|||
%package-options) |
|||
|
|||
%standard-build-options))) |
|||
|
|||
(define (guix-remove . args) |
|||
(define (handle-argument arg result arg-handler) |
|||
;; Treat all non-option arguments as package specs. |
|||
(values (alist-cons 'remove arg result) |
|||
arg-handler)) |
|||
|
|||
(define opts |
|||
(parse-command-line args %options |
|||
(list %package-default-options #f) |
|||
#:argument-handler handle-argument)) |
|||
|
|||
(guix-package* opts)) |
@ -0,0 +1,88 @@ |
|||
;;; GNU Guix --- Functional package management for GNU |
|||
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org> |
|||
;;; |
|||
;;; This file is part of GNU Guix. |
|||
;;; |
|||
;;; GNU Guix is free software; you can redistribute it and/or modify it |
|||
;;; under the terms of the GNU General Public License as published by |
|||
;;; the Free Software Foundation; either version 3 of the License, or (at |
|||
;;; your option) any later version. |
|||
;;; |
|||
;;; GNU Guix is distributed in the hope that it will be useful, but |
|||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
;;; GNU General Public License for more details. |
|||
;;; |
|||
;;; You should have received a copy of the GNU General Public License |
|||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. |
|||
|
|||
(define-module (guix scripts upgrade) |
|||
#:use-module (guix ui) |
|||
#:use-module (guix scripts package) |
|||
#:use-module (guix scripts build) |
|||
#:use-module (guix scripts) |
|||
#:use-module (srfi srfi-1) |
|||
#:use-module (srfi srfi-26) |
|||
#:use-module (srfi srfi-37) |
|||
#:use-module (ice-9 match) |
|||
#:export (guix-upgrade)) |
|||
|
|||
(define (show-help) |
|||
(display (G_ "Usage: guix upgrade [OPTION] [REGEXP] |
|||
Upgrade packages that match REGEXP. |
|||
This is an alias for 'guix package -u'.\n")) |
|||
(display (G_ " |
|||
-p, --profile=PROFILE use PROFILE instead of the user's default profile")) |
|||
(display (G_ " |
|||
-v, --verbosity=LEVEL use the given verbosity LEVEL")) |
|||
(newline) |
|||
(show-build-options-help) |
|||
(newline) |
|||
(show-transformation-options-help) |
|||
(newline) |
|||
(display (G_ " |
|||
-h, --help display this help and exit")) |
|||
(display (G_ " |
|||
-V, --version display version information and exit")) |
|||
(newline) |
|||
(show-bug-report-information)) |
|||
|
|||
(define %options |
|||
;; Specification of the command-line options. |
|||
(cons* (option '(#\h "help") #f #f |
|||
(lambda args |
|||
(show-help) |
|||
(exit 0))) |
|||
(option '(#\V "version") #f #f |
|||
(lambda args |
|||
(show-version-and-exit "guix upgrade"))) |
|||
|
|||
;; Preserve some of the 'guix package' options. |
|||
(append (filter (lambda (option) |
|||
(any (cut member <> (option-names option)) |
|||
'("profile" "dry-run" "verbosity"))) |
|||
%package-options) |
|||
|
|||
%transformation-options |
|||
%standard-build-options))) |
|||
|
|||
(define (guix-upgrade . args) |
|||
(define (handle-argument arg result arg-handler) |
|||
;; Accept at most one non-option argument, and treat it as an upgrade |
|||
;; regexp. |
|||
(match (assq-ref result 'upgrade) |
|||
(#f |
|||
(values (alist-cons 'upgrade arg |
|||
(alist-delete 'upgrade result)) |
|||
arg-handler)) |
|||
(_ |
|||
(leave (G_ "~A: extraneous argument~%") arg)))) |
|||
|
|||
(define opts |
|||
(parse-command-line args %options |
|||
(list `((upgrade . #f) |
|||
,@%package-default-options) |
|||
#f) |
|||
#:argument-handler handle-argument)) |
|||
|
|||
(guix-package* opts)) |
@ -0,0 +1,58 @@ |
|||
# GNU Guix --- Functional package management for GNU |
|||
# Copyright © 2019 Ludovic Courtès <ludo@gnu.org> |
|||
# |
|||
# This file is part of GNU Guix. |
|||
# |
|||
# GNU Guix is free software; you can redistribute it and/or modify it |
|||
# under the terms of the GNU General Public License as published by |
|||
# the Free Software Foundation; either version 3 of the License, or (at |
|||
# your option) any later version. |
|||
# |
|||
# GNU Guix is distributed in the hope that it will be useful, but |
|||
# WITHOUT ANY WARRANTY; without even the implied warranty of |
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|||
# GNU General Public License for more details. |
|||
# |
|||
# You should have received a copy of the GNU General Public License |
|||
# along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. |
|||
|
|||
# |
|||
# Test the `guix package' aliases. |
|||
# |
|||
|
|||
guix install --version |
|||
|
|||
readlink_base () |
|||
{ |
|||
basename `readlink "$1"` |
|||
} |
|||
|
|||
profile="t-profile-$$" |
|||
rm -f "$profile" |
|||
|
|||
trap 'rm -f "$profile" "$profile-"[0-9]*' EXIT |
|||
|
|||
guix install --bootstrap guile-bootstrap -p "$profile" |
|||
test -x "$profile/bin/guile" |
|||
|
|||
# Make sure '-r' isn't passed as-is to 'guix package'. |
|||
if guix install -r guile-bootstrap -p "$profile" --bootstrap |
|||
then false; else true; fi |
|||
test -x "$profile/bin/guile" |
|||
|
|||
guix upgrade --version |
|||
guix upgrade -n |
|||
guix upgrade gui.e -n |
|||
if guix upgrade foo bar -n; |
|||
then false; else true; fi |
|||
|
|||
guix remove --version |
|||
guix remove --bootstrap guile-bootstrap -p "$profile" |
|||
! test -x "$profile/bin/guile" |
|||
test `guix package -p "$profile" -I | wc -l` -eq 0 |
|||
|
|||
if guix remove -p "$profile" this-is-not-installed --bootstrap |
|||
then false; else true; fi |
|||
|
|||
if guix remove -i guile-bootstrap -p "$profile" --bootstrap |
|||
then false; else true; fi |
Loading…
Reference in new issue