refresh: Honor user-provided target version and report downgrades.
Previously, 'guix refresh guile=3.0.0' would print:
3.0.8 is already the latest version of guile
With this change, it prints:
guile would be downgraded from 3.0.8 to 3.0.0
This is a followup to 8aeccc6240
.
* guix/scripts/refresh.scm (check-for-package-update): Take an
<update-spec> instead of a <package>. Report downgrades as such when
UPDATE-SPEC specifies a target version.
(guix-refresh): Adjust caller.
This commit is contained in:
parent
a330bfdf5b
commit
11235dd85a
1 changed files with 31 additions and 15 deletions
|
@ -382,10 +382,15 @@ downloaded and authenticated; not updating~%")
|
|||
(when warn?
|
||||
(warn-no-updater package))))
|
||||
|
||||
(define* (check-for-package-update package updaters #:key warn?)
|
||||
"Check whether an update is available for PACKAGE and print a message. When
|
||||
WARN? is true and no updater exists for PACKAGE, print a warning."
|
||||
(match (package-latest-release package updaters)
|
||||
(define* (check-for-package-update update-spec updaters #:key warn?)
|
||||
"Check whether UPDATE-SPEC is feasible, and print a message.
|
||||
When WARN? is true and no updater exists for PACKAGE, print a warning."
|
||||
(define package
|
||||
(update-spec-package update-spec))
|
||||
|
||||
(match (package-latest-release package updaters
|
||||
#:version
|
||||
(update-spec-version update-spec))
|
||||
((? upstream-source? source)
|
||||
(let ((loc (or (package-field-location package 'version)
|
||||
(package-location package))))
|
||||
|
@ -403,23 +408,34 @@ WARN? is true and no updater exists for PACKAGE, print a warning."
|
|||
(package-version package)
|
||||
(package-name package))))
|
||||
(else
|
||||
(when warn?
|
||||
(warning loc
|
||||
(G_ "~a is greater than \
|
||||
(if (update-spec-version update-spec)
|
||||
(info loc
|
||||
(G_ "~a would be downgraded from ~a to ~a~%")
|
||||
(package-name package)
|
||||
(package-version package)
|
||||
(upstream-source-version source))
|
||||
(when warn?
|
||||
(warning loc
|
||||
(G_ "~a is greater than \
|
||||
the latest known version of ~a (~a)~%")
|
||||
(package-version package)
|
||||
(package-name package)
|
||||
(upstream-source-version source)))))))
|
||||
(package-version package)
|
||||
(package-name package)
|
||||
(upstream-source-version source))))))))
|
||||
(#f
|
||||
(when warn?
|
||||
;; Distinguish between "no updater" and "failing updater."
|
||||
(match (lookup-updater package updaters)
|
||||
((? upstream-updater? updater)
|
||||
(warning (package-location package)
|
||||
(G_ "'~a' updater failed to determine available \
|
||||
(if (update-spec-version update-spec)
|
||||
(warning (G_ "'~a' updater failed to find version ~a of '~a'~%")
|
||||
(upstream-updater-name updater)
|
||||
(update-spec-version update-spec)
|
||||
(package-name package))
|
||||
(warning (package-location package)
|
||||
(G_ "'~a' updater failed to determine available \
|
||||
releases for ~a~%")
|
||||
(upstream-updater-name updater)
|
||||
(package-name package)))
|
||||
(upstream-updater-name updater)
|
||||
(package-name package))))
|
||||
(#f
|
||||
(warn-no-updater package)))))))
|
||||
|
||||
|
@ -591,5 +607,5 @@ all are dependent packages: ~{~a~^ ~}~%")
|
|||
(else
|
||||
(for-each (cut check-for-package-update <> updaters
|
||||
#:warn? warn?)
|
||||
(map update-spec-package update-specs))
|
||||
update-specs)
|
||||
(return #t)))))))))
|
||||
|
|
Reference in a new issue