From 12440a85559c3de5e6bced9c9377f3d5d7f5948e Mon Sep 17 00:00:00 2001 From: Taylor R Campbell Date: Wed, 13 Apr 2022 09:51:08 +0000 Subject: [PATCH] Allow empty vendor string in GNU target triplets. NetBSD and pkgsrc have been using an empty vendor string since the mid-'90s, such as x86_64--netbsd. pkgsrc has been carrying around a workaround just the guile build for a long time. (Before that, NetBSD omitted the vendor altogether, so if x86_64 existed then it might have been `x86_64-netbsd', but that caused more problems.) This change makes Guile accept an empty vendor string so workarounds are no longer necessary. * module/system/base/target.scm (validate-target): Allow empty vendor string in GNU target triplets. --- module/system/base/target.scm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/module/system/base/target.scm b/module/system/base/target.scm index 74af64b9d..87ab5b0c4 100644 --- a/module/system/base/target.scm +++ b/module/system/base/target.scm @@ -53,7 +53,14 @@ (if (or (not (string? target)) (let ((parts (string-split target #\-))) (or (< (length parts) 3) - (or-map string-null? parts)))) + (let ((cpu (list-ref parts 0)) + (os (list-ref parts 2))) + (or (string-null? cpu) + ;; vendor (parts[1]) may be empty + (string-null? os) + ;; optional components (ABI) should be nonempty if + ;; specified + (or-map string-null? (list-tail parts 3))))))) (error "invalid target" target))) (define (with-target target thunk)