[PATCH] gnu: cross-base: Standardize API to use keyword arguments.

  • Done
  • quality assurance status badge
Details
One participant
  • Maxim Cournoyer
Owner
unassigned
Submitted by
Maxim Cournoyer
Severity
normal
M
M
Maxim Cournoyer wrote on 7 Dec 2022 16:44
(address . guix-patches@gnu.org)(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
20221207154433.17992-1-maxim.cournoyer@gmail.com
This makes it possible to invoke the procedures with a single or fewer
optional arguments.

* gnu/packages/cross-base.scm (contains-keyword?): New procedure.
(cross-binutils): Dispatch to either...
(cross-binutils/deprecated): ... this renamed procedure or ...
(cross-binutils*): ... this new procedure.
(cross-kernel-headers, cross-libc/deprecated): Likewise.
---
gnu/packages/cross-base.scm | 74 +++++++++++++++++++++++++++++++------
1 file changed, 62 insertions(+), 12 deletions(-)

Toggle diff (122 lines)
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 44c1bb0ef2..add9a2f901 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -7,6 +7,7 @@
;;; Copyright © 2019, 2020, 2021 Marius Bakke <marius@gnu.org>
;;; Copyright © 2019 Carl Dong <contact@carldong.me>
;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -32,7 +33,9 @@ (define-module (gnu packages cross-base)
#:use-module (gnu packages mingw)
#:use-module (guix platform)
#:use-module (guix packages)
+ #:use-module (guix diagnostics)
#:use-module (guix download)
+ #:use-module (guix i18n)
#:use-module (guix utils)
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
@@ -74,7 +77,20 @@ (define (cross p target)
`(cons ,(string-append "--target=" target)
,flags))))))
-(define* (cross-binutils target #:optional (binutils binutils))
+(define (contains-keyword? args)
+ "Check if ARGS contains a keyword object."
+ (find keyword? args))
+
+(define* (cross-binutils . args)
+ (if (or (= (length args) 1) (contains-keyword? args))
+ (apply cross-binutils* args)
+ (apply cross-binutils/deprecated args)))
+
+(define* (cross-binutils/deprecated target #:optional (binutils binutils))
+ (warning (G_ "'cross-binutils' must be used with keyword arguments~%"))
+ (cross-binutils* target #:binutils binutils))
+
+(define* (cross-binutils* target #:key (binutils binutils))
"Return a cross-Binutils for TARGET using BINUTILS."
(let ((binutils (package
(inherit binutils)
@@ -333,11 +349,27 @@ (define* (cross-gcc target
%gcc-cross-include-paths)))
(native-search-paths '())))
-(define* (cross-kernel-headers target
- #:optional
- (linux-headers linux-libre-headers)
- (xgcc (cross-gcc target))
- (xbinutils (cross-binutils target)))
+(define* (cross-kernel-headers . args)
+ (if (or (= (length args) 1) (contains-keyword? args))
+ (apply cross-kernel-headers* args)
+ (apply cross-kernel-headers/deprecated args)))
+
+(define* (cross-kernel-headers/deprecated target
+ #:optional
+ (linux-headers linux-libre-headers)
+ (xgcc (cross-gcc target))
+ (xbinutils (cross-binutils target)))
+ (warning (G_ "'cross-kernel-headers' must be used with keyword arguments~%"))
+ (cross-kernel-headers* target
+ #:linux-headers linux-headers
+ #:xgcc xgcc
+ #:xbinutils xbinutils))
+
+(define* (cross-kernel-headers* target
+ #:key
+ (linux-headers linux-libre-headers)
+ (xgcc (cross-gcc target))
+ (xbinutils (cross-binutils target)))
"Return headers depending on TARGET."
(define xlinux-headers
@@ -491,12 +523,30 @@ (define xhurd-core-headers
((or "i586-pc-gnu" "i586-gnu") xhurd-core-headers)
(_ xlinux-headers)))
-(define* (cross-libc target
- #:optional
- (libc glibc)
- (xgcc (cross-gcc target))
- (xbinutils (cross-binutils target))
- (xheaders (cross-kernel-headers target)))
+(define* (cross-libc . args)
+ (if (or (= (length args) 1) (contains-keyword? args))
+ (apply cross-libc* args)
+ (apply cross-libc/deprecated args)))
+
+(define* (cross-libc/deprecated target
+ #:optional
+ (libc glibc)
+ (xgcc (cross-gcc target))
+ (xbinutils (cross-binutils target))
+ (xheaders (cross-kernel-headers target)))
+ (warning (G_ "'cross-libc' must be used with keyword arguments~%"))
+ (cross-libc* target
+ #:libc libc
+ #:xgcc xgcc
+ #:xbinutils xbinutils
+ #:xheaders xheaders))
+
+(define* (cross-libc* target
+ #:key
+ (libc glibc)
+ (xgcc (cross-gcc target))
+ (xbinutils (cross-binutils target))
+ (xheaders (cross-kernel-headers target)))
"Return LIBC cross-built for TARGET, a GNU triplet. Use XGCC and XBINUTILS
and the cross tool chain."
(if (target-mingw? target)

base-commit: dfc6957a5af7d179d4618eb19d4f555c519bc6f2
prerequisite-patch-id: 660177fb9eee55d11983ea9360c072730d0d21a5
prerequisite-patch-id: 776778c03bce9b7ad3ab94a120f42b764c00fcae
prerequisite-patch-id: eeb2523a77c9c422a5785549dbd29ec0220118d7
prerequisite-patch-id: fd4074fb4cf068ccac3122c19138f098a610542a
--
2.38.1
M
M
Maxim Cournoyer wrote on 14 Dec 2022 21:34
control message for bug #60056
(address . control@debbugs.gnu.org)
87edt13est.fsf@gmail.com
block 60056 by 59885
quit
M
M
Maxim Cournoyer wrote on 3 Jan 2023 22:14
Re: bug#59885: [PATCH] gnu: cross-base: Standardize API to use keyword arguments.
(address . 59885-done@debbugs.gnu.org)
87pmbv1ft3.fsf@gmail.com
Hello,

Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:

Toggle quote (9 lines)
> This makes it possible to invoke the procedures with a single or fewer
> optional arguments.
>
> * gnu/packages/cross-base.scm (contains-keyword?): New procedure.
> (cross-binutils): Dispatch to either...
> (cross-binutils/deprecated): ... this renamed procedure or ...
> (cross-binutils*): ... this new procedure.
> (cross-kernel-headers, cross-libc/deprecated): Likewise.

Applied with 2707b6ccd7.

Closing.

--
Thanks,
Maxim
Closed
?