~ruther/guix-local

7c4142628a397f7863f346635591dbe92b667b45 — Josselin Poiret 4 years ago 346d2f6
gnu: system: Improve location of some configuration warnings.

* gnu/bootloader.scm (%warn-target-field-deprecation): Remove it.
* gnu/bootloader.scm (warn-target-field-deprecation): Use
define-with-syntax-properties.
* gnu/system.scm (ensure-setuid-program-list): Ditto.  Also rename the
'location' variable to 'properties'.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2 files changed, 13 insertions(+), 14 deletions(-)

M gnu/bootloader.scm
M gnu/system.scm
M gnu/bootloader.scm => gnu/bootloader.scm +7 -9
@@ 183,8 183,13 @@ record."
;; The <bootloader-configuration> record contains bootloader independant
;; configuration used to fill bootloader configuration file.

(define-syntax-rule (warn-target-field-deprecation value)
  (%warn-target-field-deprecation value (current-source-location)))
(define-with-syntax-properties (warn-target-field-deprecation
                                (value properties))
  (when value
    (warning (source-properties->location properties)
             (G_ "the 'target' field is deprecated, please use 'targets' \
instead~%")))
  value)

(define-record-type* <bootloader-configuration>
  bootloader-configuration make-bootloader-configuration


@@ 213,13 218,6 @@ record."
  (serial-speed       bootloader-configuration-serial-speed ;integer | #f
                      (default #f)))

(define (%warn-target-field-deprecation value location)
  (when value
    (warning (source-properties->location location)
             (G_ "the 'target' field is deprecated, please use 'targets' \
instead~%")))
  value)

(define-deprecated (bootloader-configuration-target config)
  bootloader-configuration-targets
  (%bootloader-configuration-target config))

M gnu/system.scm => gnu/system.scm +6 -5
@@ 1073,16 1073,17 @@ use 'plain-file' instead~%")
    ;; TODO: Remove when glibc@2.23 is long gone.
    ("GUIX_LOCPATH" . "/run/current-system/locale")))

(define-syntax-rule (ensure-setuid-program-list lst)
  "Ensure LST is a list of <setuid-program> records and warn otherwise."
  (%ensure-setuid-program-list lst (current-source-location)))
;; Ensure LST is a list of <setuid-program> records and warn otherwise.
(define-with-syntax-properties (ensure-setuid-program-list (lst properties))
  (%ensure-setuid-program-list lst properties))

(define (%ensure-setuid-program-list lst location)
;; We want to be able to use defines, so define a procedure.
(define (%ensure-setuid-program-list lst properties)
  (define warned? #f)

  (define (warn-once)
    (unless warned?
      (warning (source-properties->location location)
      (warning (source-properties->location properties)
               (G_ "representing setuid programs with file-like objects is \
deprecated; use 'setuid-program' instead~%"))
      (set! warned? #t)))