guix package: Add 'install', 'remove', and 'upgrade' aliases.
* 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".master
parent
4c89dc354e
commit
d824cfbabe
|
@ -224,6 +224,9 @@ MODULES = \
|
||||||
guix/scripts/archive.scm \
|
guix/scripts/archive.scm \
|
||||||
guix/scripts/import.scm \
|
guix/scripts/import.scm \
|
||||||
guix/scripts/package.scm \
|
guix/scripts/package.scm \
|
||||||
|
guix/scripts/install.scm \
|
||||||
|
guix/scripts/remove.scm \
|
||||||
|
guix/scripts/upgrade.scm \
|
||||||
guix/scripts/gc.scm \
|
guix/scripts/gc.scm \
|
||||||
guix/scripts/hash.scm \
|
guix/scripts/hash.scm \
|
||||||
guix/scripts/pack.scm \
|
guix/scripts/pack.scm \
|
||||||
|
@ -425,6 +428,7 @@ SH_TESTS = \
|
||||||
tests/guix-pack-localstatedir.sh \
|
tests/guix-pack-localstatedir.sh \
|
||||||
tests/guix-pack-relocatable.sh \
|
tests/guix-pack-relocatable.sh \
|
||||||
tests/guix-package.sh \
|
tests/guix-package.sh \
|
||||||
|
tests/guix-package-aliases.sh \
|
||||||
tests/guix-package-net.sh \
|
tests/guix-package-net.sh \
|
||||||
tests/guix-system.sh \
|
tests/guix-system.sh \
|
||||||
tests/guix-archive.sh \
|
tests/guix-archive.sh \
|
||||||
|
|
|
@ -689,7 +689,7 @@ You can confirm that Guix is working by installing a sample package into
|
||||||
the root profile:
|
the root profile:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
# guix package -i hello
|
# guix install hello
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
The binary installation tarball can be (re)produced and verified simply
|
The binary installation tarball can be (re)produced and verified simply
|
||||||
|
@ -1577,7 +1577,7 @@ available with Guix and then define the @code{GUIX_LOCPATH} environment
|
||||||
variable:
|
variable:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
$ guix package -i glibc-locales
|
$ guix install glibc-locales
|
||||||
$ export GUIX_LOCPATH=$HOME/.guix-profile/lib/locale
|
$ export GUIX_LOCPATH=$HOME/.guix-profile/lib/locale
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
|
@ -1677,7 +1677,7 @@ Multiple Outputs}). For instance, the following command installs fonts
|
||||||
for Chinese languages:
|
for Chinese languages:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
guix package -i font-adobe-source-han-sans:cn
|
guix install font-adobe-source-han-sans:cn
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@cindex @code{xterm}
|
@cindex @code{xterm}
|
||||||
|
@ -2492,7 +2492,7 @@ emacs-guix, The Emacs-Guix Reference Manual}), after installing
|
||||||
with it):
|
with it):
|
||||||
|
|
||||||
@example
|
@example
|
||||||
guix package -i emacs-guix
|
guix install emacs-guix
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
|
@ -2610,6 +2610,7 @@ is:
|
||||||
@example
|
@example
|
||||||
guix package @var{options}
|
guix package @var{options}
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@cindex transactions
|
@cindex transactions
|
||||||
Primarily, @var{options} specifies the operations to be performed during
|
Primarily, @var{options} specifies the operations to be performed during
|
||||||
the transaction. Upon completion, a new profile is created, but
|
the transaction. Upon completion, a new profile is created, but
|
||||||
|
@ -2623,6 +2624,22 @@ For example, to remove @code{lua} and install @code{guile} and
|
||||||
guix package -r lua -i guile guile-cairo
|
guix package -r lua -i guile guile-cairo
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
|
@cindex aliases, for @command{guix package}
|
||||||
|
For your convenience, we also provide the following aliases:
|
||||||
|
|
||||||
|
@itemize
|
||||||
|
@item
|
||||||
|
@command{guix install} is an alias for @command{guix package -i},
|
||||||
|
@item
|
||||||
|
@command{guix remove} is an alias for @command{guix package -r},
|
||||||
|
@item
|
||||||
|
and @command{guix upgrade} is an alias for @command{guix package -u}.
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
These aliases are less expressive than @command{guix package} and provide
|
||||||
|
fewer options, so in some cases you'll probably want to use @command{guix
|
||||||
|
package} directly.
|
||||||
|
|
||||||
@command{guix package} also supports a @dfn{declarative approach}
|
@command{guix package} also supports a @dfn{declarative approach}
|
||||||
whereby the user specifies the exact set of packages to be available and
|
whereby the user specifies the exact set of packages to be available and
|
||||||
passes it @i{via} the @option{--manifest} option
|
passes it @i{via} the @option{--manifest} option
|
||||||
|
@ -3312,7 +3329,7 @@ like to discuss this project, join us on @email{guix-devel@@gnu.org}.
|
||||||
|
|
||||||
Often, packages defined in Guix have a single @dfn{output}---i.e., the
|
Often, packages defined in Guix have a single @dfn{output}---i.e., the
|
||||||
source package leads to exactly one directory in the store. When running
|
source package leads to exactly one directory in the store. When running
|
||||||
@command{guix package -i glibc}, one installs the default output of the
|
@command{guix install glibc}, one installs the default output of the
|
||||||
GNU libc package; the default output is called @code{out}, but its name
|
GNU libc package; the default output is called @code{out}, but its name
|
||||||
can be omitted as shown in this command. In this particular case, the
|
can be omitted as shown in this command. In this particular case, the
|
||||||
default output of @code{glibc} contains all the C header files, shared
|
default output of @code{glibc} contains all the C header files, shared
|
||||||
|
@ -3328,14 +3345,14 @@ separate output, called @code{doc}. To install the main GLib output,
|
||||||
which contains everything but the documentation, one would run:
|
which contains everything but the documentation, one would run:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
guix package -i glib
|
guix install glib
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
@cindex documentation
|
@cindex documentation
|
||||||
The command to install its documentation is:
|
The command to install its documentation is:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
guix package -i glib:doc
|
guix install glib:doc
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
Some packages install programs with different ``dependency footprints''.
|
Some packages install programs with different ``dependency footprints''.
|
||||||
|
@ -4986,7 +5003,7 @@ module exports a variable named @code{emacs}, which is bound to a
|
||||||
|
|
||||||
The @code{(gnu packages @dots{})} module name space is
|
The @code{(gnu packages @dots{})} module name space is
|
||||||
automatically scanned for packages by the command-line tools. For
|
automatically scanned for packages by the command-line tools. For
|
||||||
instance, when running @code{guix package -i emacs}, all the @code{(gnu
|
instance, when running @code{guix install emacs}, all the @code{(gnu
|
||||||
packages @dots{})} modules are scanned until one that exports a package
|
packages @dots{})} modules are scanned until one that exports a package
|
||||||
object whose name is @code{emacs} is found. This package search
|
object whose name is @code{emacs} is found. This package search
|
||||||
facility is implemented in the @code{(gnu packages)} module.
|
facility is implemented in the @code{(gnu packages)} module.
|
||||||
|
@ -23634,7 +23651,7 @@ pointed to by the @code{GIT_SSL_CAINFO} environment variable. Thus, you
|
||||||
would typically run something like:
|
would typically run something like:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
$ guix package -i nss-certs
|
$ guix install nss-certs
|
||||||
$ export SSL_CERT_DIR="$HOME/.guix-profile/etc/ssl/certs"
|
$ export SSL_CERT_DIR="$HOME/.guix-profile/etc/ssl/certs"
|
||||||
$ export SSL_CERT_FILE="$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt"
|
$ export SSL_CERT_FILE="$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt"
|
||||||
$ export GIT_SSL_CAINFO="$SSL_CERT_FILE"
|
$ export GIT_SSL_CAINFO="$SSL_CERT_FILE"
|
||||||
|
@ -23645,7 +23662,7 @@ variable to point to a certificate bundle, so you would have to run
|
||||||
something like this:
|
something like this:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
$ guix package -i nss-certs
|
$ guix install nss-certs
|
||||||
$ export CURL_CA_BUNDLE="$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt"
|
$ export CURL_CA_BUNDLE="$HOME/.guix-profile/etc/ssl/certs/ca-certificates.crt"
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
|
@ -25427,7 +25444,7 @@ installs the debugging information for the GNU C Library and for GNU
|
||||||
Guile:
|
Guile:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
guix package -i glibc:debug guile:debug
|
guix install glibc:debug guile:debug
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
GDB must then be told to look for debug files in the user's profile, by
|
GDB must then be told to look for debug files in the user's profile, by
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# GNU Guix --- Functional package management for GNU
|
# GNU Guix --- Functional package management for GNU
|
||||||
# Copyright © 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
|
# Copyright © 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||||
#
|
#
|
||||||
# This file is part of GNU Guix.
|
# This file is part of GNU Guix.
|
||||||
#
|
#
|
||||||
|
@ -167,6 +167,15 @@ _guix_complete ()
|
||||||
else
|
else
|
||||||
_guix_complete_available_package "$word_at_point"
|
_guix_complete_available_package "$word_at_point"
|
||||||
fi
|
fi
|
||||||
|
elif _guix_is_command "install"
|
||||||
|
then
|
||||||
|
_guix_complete_available_package "$word_at_point"
|
||||||
|
elif _guix_is_command "remove"
|
||||||
|
then
|
||||||
|
_guix_complete_installed_package "$word_at_point"
|
||||||
|
elif _guix_is_command "upgrade"
|
||||||
|
then
|
||||||
|
_guix_complete_installed_package "$word_at_point"
|
||||||
elif _guix_is_command "build"
|
elif _guix_is_command "build"
|
||||||
then
|
then
|
||||||
if _guix_is_dash_L
|
if _guix_is_dash_L
|
||||||
|
|
|
@ -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))
|
|
@ -58,7 +58,11 @@
|
||||||
delete-generations
|
delete-generations
|
||||||
delete-matching-generations
|
delete-matching-generations
|
||||||
display-search-paths
|
display-search-paths
|
||||||
guix-package))
|
guix-package
|
||||||
|
|
||||||
|
(%options . %package-options)
|
||||||
|
(%default-options . %package-default-options)
|
||||||
|
guix-package*))
|
||||||
|
|
||||||
(define %store
|
(define %store
|
||||||
(make-parameter #f))
|
(make-parameter #f))
|
||||||
|
@ -899,6 +903,11 @@ processed, #f otherwise."
|
||||||
(parse-command-line args %options (list %default-options #f)
|
(parse-command-line args %options (list %default-options #f)
|
||||||
#:argument-handler handle-argument))
|
#:argument-handler handle-argument))
|
||||||
|
|
||||||
|
(guix-package* opts))
|
||||||
|
|
||||||
|
(define (guix-package* opts)
|
||||||
|
"Run the 'guix package' command on OPTS, an alist resulting for command-line
|
||||||
|
option processing with 'parse-command-line'."
|
||||||
(with-error-handling
|
(with-error-handling
|
||||||
(or (process-query opts)
|
(or (process-query opts)
|
||||||
(parameterize ((%store (open-connection))
|
(parameterize ((%store (open-connection))
|
||||||
|
|
|
@ -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))
|
|
@ -41,6 +41,9 @@ guix/scripts/build.scm
|
||||||
guix/discovery.scm
|
guix/discovery.scm
|
||||||
guix/scripts/download.scm
|
guix/scripts/download.scm
|
||||||
guix/scripts/package.scm
|
guix/scripts/package.scm
|
||||||
|
guix/scripts/install.scm
|
||||||
|
guix/scripts/remove.scm
|
||||||
|
guix/scripts/upgrade.scm
|
||||||
guix/scripts/gc.scm
|
guix/scripts/gc.scm
|
||||||
guix/scripts/hash.scm
|
guix/scripts/hash.scm
|
||||||
guix/scripts/import.scm
|
guix/scripts/import.scm
|
||||||
|
|
|
@ -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
|
Reference in New Issue