From baf4272df2350a40bfa198f5cdb42e707e32ad71 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 30 Aug 2021 14:22:35 +0200 Subject: bootloader: Report location of the deprecated 'target' field. This is a followup to 2ca982ff41270288913ad6b7d5d9e1cad87b06d9. * gnu/bootloader.scm (warn-target-field-deprecation): New macro. ()[target]: Add 'sanitize' property. (%warn-target-field-deprecation): New procedure. (bootloader-configuration-target): Define using 'define-deprecated'. (bootloader-configuration-targets): Use '%bootloader-configuration-target' rather than the deprecated one. --- gnu/bootloader.scm | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) (limited to 'gnu') diff --git a/gnu/bootloader.scm b/gnu/bootloader.scm index 98807a4810..d1c72c0c85 100644 --- a/gnu/bootloader.scm +++ b/gnu/bootloader.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2017 David Craven ;;; Copyright © 2017, 2020 Mathieu Othacehe ;;; Copyright © 2017 Leo Famulari -;;; Copyright © 2019 Ludovic Courtès +;;; Copyright © 2019, 2021 Ludovic Courtès ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen ;;; ;;; This file is part of GNU Guix. @@ -25,7 +25,10 @@ #:use-module (guix gexp) #:use-module (guix profiles) #:use-module (guix records) - #:use-module (guix ui) + #:use-module (guix deprecation) + #:use-module ((guix ui) #:select (warn-about-load-error)) + #:use-module (guix diagnostics) + #:use-module (guix i18n) #:use-module (srfi srfi-1) #:use-module (ice-9 match) #:export (menu-entry @@ -180,6 +183,9 @@ record." ;; The 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-record-type* bootloader-configuration make-bootloader-configuration bootloader-configuration? @@ -187,7 +193,7 @@ record." (targets %bootloader-configuration-targets ;list of strings (default #f)) (target %bootloader-configuration-target ;deprecated - (default #f)) + (default #f) (sanitize warn-target-field-deprecation)) (menu-entries bootloader-configuration-menu-entries ;list of (default '())) (default-entry bootloader-configuration-default-entry ;integer @@ -207,16 +213,21 @@ record." (serial-speed bootloader-configuration-serial-speed ;integer | #f (default #f))) -;;; Deprecated. -(define (bootloader-configuration-target config) - (warning (G_ "the 'target' field is deprecated, please use 'targets' \ -instead~%")) +(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)) (define (bootloader-configuration-targets config) (or (%bootloader-configuration-targets config) ;; TODO: Remove after the deprecated 'target' field is removed. - (list (bootloader-configuration-target config)) + (list (%bootloader-configuration-target config)) ;; XXX: At least the GRUB installer (see (gnu bootloader grub)) has this ;; peculiar behavior of installing fonts and GRUB modules when DEVICE is #f, ;; hence the default value of '(#f) rather than '(). -- cgit v1.2.3