[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
?
Your comment

This issue is archived.

To comment on this conversation send an email to 59885@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 59885
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch