summaryrefslogtreecommitdiff
path: root/guix/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'guix/scripts')
-rw-r--r--guix/scripts/environment.scm7
-rw-r--r--guix/scripts/package.scm9
-rw-r--r--guix/scripts/refresh.scm35
3 files changed, 40 insertions, 11 deletions
diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index af69e2b730..0abc509a35 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -323,6 +323,13 @@ BOOTSTRAP? specifies whether to use the bootstrap Guile to build the
profile."
(profile-derivation (packages->manifest inputs)
#:system system
+
+ ;; Packages can have conflicting inputs, or explicit
+ ;; inputs that conflict with implicit inputs (e.g., gcc,
+ ;; gzip, etc.). Thus, do not error out when we
+ ;; encounter collision.
+ #:allow-collisions? #t
+
#:hooks (if bootstrap?
'()
%default-profile-hooks)
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index a6bfb03ae4..1f835ca5a5 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -312,12 +312,16 @@ of relevance scores."
((=)
(let ((candidate-path (derivation->output-path
(package-derivation (%store) pkg))))
- (if (string=? path candidate-path)
+ ;; XXX: When there are propagated inputs, assume we need to
+ ;; upgrade the whole entry.
+ (if (and (string=? path candidate-path)
+ (null? (package-propagated-inputs pkg)))
transaction
(manifest-transaction-install-entry
(package->manifest-entry pkg output)
transaction))))))))
(#f
+ (warning (G_ "package '~a' no longer exists~%") name)
transaction)))))
@@ -786,7 +790,8 @@ processed, #f otherwise."
(('search-paths kind)
(let* ((manifests (map profile-manifest profiles))
- (entries (append-map manifest-entries manifests))
+ (entries (append-map manifest-transitive-entries
+ manifests))
(profiles (map user-friendly-profile profiles))
(settings (search-path-environment-variables entries profiles
(const #f)
diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm
index dd93e7d3e7..5add64d8e8 100644
--- a/guix/scripts/refresh.scm
+++ b/guix/scripts/refresh.scm
@@ -253,15 +253,32 @@ downloaded and authenticated; not updating~%")
WARN? is true and no updater exists for PACKAGE, print a warning."
(match (package-latest-release package updaters)
((? upstream-source? source)
- (when (version>? (upstream-source-version source)
- (package-version package))
- (let ((loc (or (package-field-location package 'version)
- (package-location package))))
- (format (current-error-port)
- (G_ "~a: ~a would be upgraded from ~a to ~a~%")
- (location->string loc)
- (package-name package) (package-version package)
- (upstream-source-version source)))))
+ (let ((loc (or (package-field-location package 'version)
+ (package-location package))))
+ (case (version-compare (upstream-source-version source)
+ (package-version package))
+ ((>)
+ (format (current-error-port)
+ (G_ "~a: ~a would be upgraded from ~a to ~a~%")
+ (location->string loc)
+ (package-name package) (package-version package)
+ (upstream-source-version source)))
+ ((=)
+ (when warn?
+ (format (current-error-port)
+ (G_ "~a: info: ~a is already the latest version of ~a~%")
+ (location->string loc)
+ (package-version package)
+ (package-name package))))
+ (else
+ (when warn?
+ (format (current-error-port)
+ (G_ "~a: warning: ~a is greater than \
+the latest known version of ~a (~a)~%")
+ (location->string loc)
+ (package-version package)
+ (package-name package)
+ (upstream-source-version source)))))))
(#f
(when warn?
(warn-no-updater package)))))