guix package: Add '--do-not-upgrade' option.
* guix/scripts/package.scm (%options): Add the '--do-not-upgrade' option. (show-help): Document it. (options->installable): Add 'do-not-upgrade-regexps' variable. Use it in 'packages-to-upgrade'. * doc/guix.texi (Invoking guix package): Document the '--do-not-upgrade' option.master
parent
6915912506
commit
d5f01e48e0
|
@ -947,13 +947,23 @@ and/or output name in addition to the package name. For instance,
|
||||||
@itemx -u [@var{regexp} @dots{}]
|
@itemx -u [@var{regexp} @dots{}]
|
||||||
Upgrade all the installed packages. If one or more @var{regexp}s are
|
Upgrade all the installed packages. If one or more @var{regexp}s are
|
||||||
specified, upgrade only installed packages whose name matches a
|
specified, upgrade only installed packages whose name matches a
|
||||||
@var{regexp}.
|
@var{regexp}. Also see the @code{--do-not-upgrade} option below.
|
||||||
|
|
||||||
Note that this upgrades package to the latest version of packages found
|
Note that this upgrades package to the latest version of packages found
|
||||||
in the distribution currently installed. To update your distribution,
|
in the distribution currently installed. To update your distribution,
|
||||||
you should regularly run @command{guix pull} (@pxref{Invoking guix
|
you should regularly run @command{guix pull} (@pxref{Invoking guix
|
||||||
pull}).
|
pull}).
|
||||||
|
|
||||||
|
@item --do-not-upgrade[=@var{regexp} @dots{}]
|
||||||
|
When used together with the @code{--upgrade} option, do @emph{not}
|
||||||
|
upgrade any packages whose name matches a @var{regexp}. For example, to
|
||||||
|
upgrade all packages in the current profile except those containing the
|
||||||
|
substring ``emacs'':
|
||||||
|
|
||||||
|
@example
|
||||||
|
$ guix package --upgrade . --do-not-upgrade emacs
|
||||||
|
@end example
|
||||||
|
|
||||||
@item --roll-back
|
@item --roll-back
|
||||||
Roll back to the previous @dfn{generation} of the profile---i.e., undo
|
Roll back to the previous @dfn{generation} of the profile---i.e., undo
|
||||||
the last transaction.
|
the last transaction.
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
;;; GNU Guix --- Functional package management for GNU
|
;;; GNU Guix --- Functional package management for GNU
|
||||||
;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
|
;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
|
||||||
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
||||||
;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
|
;;; Copyright © 2013, 2015 Mark H Weaver <mhw@netris.org>
|
||||||
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
|
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
|
@ -464,6 +464,8 @@ Install, remove, or upgrade PACKAGES in a single transaction.\n"))
|
||||||
-r, --remove=PACKAGE remove PACKAGE"))
|
-r, --remove=PACKAGE remove PACKAGE"))
|
||||||
(display (_ "
|
(display (_ "
|
||||||
-u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP"))
|
-u, --upgrade[=REGEXP] upgrade all the installed packages matching REGEXP"))
|
||||||
|
(display (_ "
|
||||||
|
--do-not-upgrade[=REGEXP] do not upgrade any packages matching REGEXP"))
|
||||||
(display (_ "
|
(display (_ "
|
||||||
--roll-back roll back to the previous generation"))
|
--roll-back roll back to the previous generation"))
|
||||||
(display (_ "
|
(display (_ "
|
||||||
|
@ -543,6 +545,13 @@ Install, remove, or upgrade PACKAGES in a single transaction.\n"))
|
||||||
;; would upgrade everything.
|
;; would upgrade everything.
|
||||||
(delete '(upgrade . #f) result))
|
(delete '(upgrade . #f) result))
|
||||||
arg-handler))))
|
arg-handler))))
|
||||||
|
(option '("do-not-upgrade") #f #t
|
||||||
|
(lambda (opt name arg result arg-handler)
|
||||||
|
(let arg-handler ((arg arg) (result result))
|
||||||
|
(values (if arg
|
||||||
|
(alist-cons 'do-not-upgrade arg result)
|
||||||
|
result)
|
||||||
|
arg-handler))))
|
||||||
(option '("roll-back") #f #f
|
(option '("roll-back") #f #f
|
||||||
(lambda (opt name arg result arg-handler)
|
(lambda (opt name arg result arg-handler)
|
||||||
(values (alist-cons 'roll-back? #t result)
|
(values (alist-cons 'roll-back? #t result)
|
||||||
|
@ -621,6 +630,13 @@ return the new list of manifest entries."
|
||||||
(_ #f))
|
(_ #f))
|
||||||
opts))
|
opts))
|
||||||
|
|
||||||
|
(define do-not-upgrade-regexps
|
||||||
|
(filter-map (match-lambda
|
||||||
|
(('do-not-upgrade . regexp)
|
||||||
|
(make-regexp regexp))
|
||||||
|
(_ #f))
|
||||||
|
opts))
|
||||||
|
|
||||||
(define packages-to-upgrade
|
(define packages-to-upgrade
|
||||||
(match upgrade-regexps
|
(match upgrade-regexps
|
||||||
(()
|
(()
|
||||||
|
@ -630,6 +646,8 @@ return the new list of manifest entries."
|
||||||
(($ <manifest-entry> name version output path _)
|
(($ <manifest-entry> name version output path _)
|
||||||
(and (any (cut regexp-exec <> name)
|
(and (any (cut regexp-exec <> name)
|
||||||
upgrade-regexps)
|
upgrade-regexps)
|
||||||
|
(not (any (cut regexp-exec <> name)
|
||||||
|
do-not-upgrade-regexps))
|
||||||
(upgradeable? name version path)
|
(upgradeable? name version path)
|
||||||
(let ((output (or output "out")))
|
(let ((output (or output "out")))
|
||||||
(call-with-values
|
(call-with-values
|
||||||
|
|
Reference in New Issue