diff options
author | Ludovic Courtès <ludo@gnu.org> | 2019-06-03 23:00:42 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2019-06-03 23:18:47 +0200 |
commit | 69962ab7a8e07af77a2eb466be39615d139d5cf0 (patch) | |
tree | 0170970c0fd544268dada62649ea770a4408e393 | |
parent | 1b5ee3bdaacf665ad1e7c6142122389fd7033ea2 (diff) | |
download | guix-69962ab7a8e07af77a2eb466be39615d139d5cf0.tar guix-69962ab7a8e07af77a2eb466be39615d139d5cf0.tar.gz |
deprecation: Use the 'warning' procedure for diagnostics.
Until now, (guix deprecation) had its own warning mechanism, which was
inconsistent (it did not use colors, etc.)
* guix/deprecation.scm (deprecation-warning-port): Remove
(source-properties->location-string): Remove.
(warn-about-deprecation): Use 'warning' instead of 'format'.
(define-deprecated, define-deprecated/alias): Adjust docstring.
* guix/channels.scm (build-from-source): Refer to 'guix-warning-port'
instead of 'deprecation-warning-port'.
-rw-r--r-- | guix/channels.scm | 4 | ||||
-rw-r--r-- | guix/deprecation.scm | 36 |
2 files changed, 13 insertions, 27 deletions
diff --git a/guix/channels.scm b/guix/channels.scm index e93879e1b4..e7278c6060 100644 --- a/guix/channels.scm +++ b/guix/channels.scm @@ -27,7 +27,7 @@ #:use-module (guix profiles) #:use-module (guix derivations) #:use-module (guix combinators) - #:use-module (guix deprecation) + #:use-module (guix diagnostics) #:use-module (guix store) #:use-module (guix i18n) #:use-module ((guix utils) @@ -280,7 +280,7 @@ package modules under SOURCE using CORE, an instance of Guix." ;; Disable deprecation warnings; it's OK for SCRIPT to ;; use deprecated APIs and the user doesn't have to know ;; about it. - (parameterize ((deprecation-warning-port + (parameterize ((guix-warning-port (%make-void-port "w"))) (primitive-load script)))))) ;; BUILD must be a monadic procedure of at least one argument: the diff --git a/guix/deprecation.scm b/guix/deprecation.scm index d704e7ec61..468b2e9b7b 100644 --- a/guix/deprecation.scm +++ b/guix/deprecation.scm @@ -18,40 +18,26 @@ (define-module (guix deprecation) #:use-module (guix i18n) - #:use-module (ice-9 format) + #:use-module (guix diagnostics) + #:autoload (guix utils) (source-properties->location) #:export (define-deprecated define-deprecated/alias - warn-about-deprecation - deprecation-warning-port)) + warn-about-deprecation)) ;;; Commentary: ;;; ;;; Provide a mechanism to mark bindings as deprecated. ;;; -;;; We don't reuse (guix ui) mostly to avoid pulling in too many things. -;;; ;;; Code: -(define deprecation-warning-port - ;; Port where deprecation warnings go. - (make-parameter (current-error-port))) - -(define (source-properties->location-string properties) - "Return a human-friendly, GNU-standard representation of PROPERTIES, a -source property alist." - (let ((file (assq-ref properties 'filename)) - (line (assq-ref properties 'line)) - (column (assq-ref properties 'column))) - (if (and file line column) - (format #f "~a:~a:~a" file (+ 1 line) column) - (G_ "<unknown location>")))) - (define* (warn-about-deprecation variable properties #:key replacement) - (format (deprecation-warning-port) - (G_ "~a: warning: '~a' is deprecated~@[, use '~a' instead~]~%") - (source-properties->location-string properties) - variable replacement)) + (let ((location (and properties (source-properties->location properties)))) + (if replacement + (warning location (G_ "'~a' is deprecated, use '~a' instead~%") + variable replacement) + (warning location (G_ "'~a' is deprecated~%") + variable)))) (define-syntax define-deprecated (lambda (s) @@ -60,7 +46,7 @@ source property alist." (define-deprecated foo bar 42) (define-deprecated (baz x y) qux (qux y x)) -This will write a deprecation warning to DEPRECATION-WARNING-PORT." +This will write a deprecation warning to GUIX-WARNING-PORT." (syntax-case s () ((_ (proc formals ...) replacement body ...) #'(define-deprecated proc replacement @@ -97,7 +83,7 @@ these lines: where 'nix-server?' is the deprecated name for 'store-connection?'. -This will write a deprecation warning to DEPRECATION-WARNING-PORT." +This will write a deprecation warning to GUIX-WARNING-PORT." (define-syntax deprecated (lambda (s) (warn-about-deprecation 'deprecated (syntax-source s) |