[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 04/07: Allow empty vendor string in GNU target triplets.
From: |
Ludovic Courtès |
Subject: |
[Guile-commits] 04/07: Allow empty vendor string in GNU target triplets. |
Date: |
Thu, 16 Jun 2022 04:06:51 -0400 (EDT) |
civodul pushed a commit to branch main
in repository guile.
commit e4e8afd6c8eeb9be1564e1be8e33362e7e987a3c
Author: Taylor R Campbell <campbell+guile@mumble.net>
AuthorDate: Wed Apr 13 09:51:08 2022 +0000
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.
* test-suite/tests/cross-compilation.test ("cross-compilation"): Add
tests for "x86_64--netbsd".
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
---
module/system/base/target.scm | 9 ++++++++-
test-suite/tests/cross-compilation.test | 4 +++-
2 files changed, 11 insertions(+), 2 deletions(-)
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)
diff --git a/test-suite/tests/cross-compilation.test
b/test-suite/tests/cross-compilation.test
index 120317b42..e520e02f4 100644
--- a/test-suite/tests/cross-compilation.test
+++ b/test-suite/tests/cross-compilation.test
@@ -1,6 +1,6 @@
;;;; Cross compilation -*- mode: scheme; coding: utf-8; -*-
;;;;
-;;;; Copyright (C) 2010-2014, 2020 Free Software Foundation, Inc.
+;;;; Copyright (C) 2010-2014, 2020, 2022 Free Software Foundation, Inc.
;;;;
;;;; This library is free software; you can redistribute it and/or
;;;; modify it under the terms of the GNU Lesser General Public
@@ -67,11 +67,13 @@
(test-triplet "i586" "pc" "gnu0.3")
(test-triplet "x86_64" "unknown" "linux-gnu")
(test-triplet "x86_64" "unknown" "kfreebsd-gnu")
+ (test-triplet "x86_64" "" "netbsd") ;NetBSD/pkgsrc with empty vendor
(test-target "i586-pc-gnu0.3" (endianness little) 4)
(test-target "x86_64-pc-linux-gnu" (endianness little) 8)
(test-target "powerpc-unknown-linux-gnu" (endianness big) 4)
(test-target "sparc64-unknown-freebsd8.2" (endianness big) 8)
+ (test-target "x86_64--netbsd" (endianness little) 8)
(test-target "mips64el-unknown-linux-gnu" ; n32 or o32 ABI
(endianness little) 4)
- [Guile-commits] branch main updated (cc4559768 -> 7e048c6c5), Ludovic Courtès, 2022/06/16
- [Guile-commits] 01/07: 'connect' handles EAGAIN like EINPROGRESS., Ludovic Courtès, 2022/06/16
- [Guile-commits] 02/07: 'module-define!' honors the 'module' parameter., Ludovic Courtès, 2022/06/16
- [Guile-commits] 05/07: Allow null bytes in UNIX sockets., Ludovic Courtès, 2022/06/16
- [Guile-commits] 06/07: Add missing #:modules argument for coverage-data->lcov., Ludovic Courtès, 2022/06/16
- [Guile-commits] 07/07: Update NEWS., Ludovic Courtès, 2022/06/16
- [Guile-commits] 03/07: Allow (library ...) form in cond-expand inside R7RS define-library., Ludovic Courtès, 2022/06/16
- [Guile-commits] 04/07: Allow empty vendor string in GNU target triplets.,
Ludovic Courtès <=