[PATCH] gnu: cross-base: Don't specify mingw --with-newlib

  • Done
  • quality assurance status badge
Details
One participant
  • Carl Dong
Owner
unassigned
Submitted by
Carl Dong
Severity
normal
C
C
Carl Dong wrote on 1 Mar 2022 17:57
(address . guix-patches@gnu.org)
20220301165744.2778077-1-contact@carldong.me
I can commit this myself if someone gives a sanity check. Won't cause rebuilds
since it's all cross-base changes.

-----

Previous to this commit, we added a --with-newlib configure flag to
cross-gcc when cross-newlib?, but cross-newlib? is true only when
target-mingw?.

It turns out that specifying --with-newlib disables the
GLIBCXX_CROSSCONFIG check, which is used to detect
_GLIBCXX_HAVE__WFOPEN, which is required in C++17 std::filesystem for
mingw-w64 systems.

Additional context: In gnu/packages/embedded.scm, --with-newlib is
specified explicitly when we're actually using newlib, which seems like
the correct way of handling it.

Situation in other distros:
- Debian's gcc-mingw-w64 doesn't specify --with-newlib
- Fedora's mingw64-gcc-c++ explicitly specifies --without-newlib

Chesterton's fence: Chatting with janneke, who originally added this
mechanism, reveals that this flag is not only no longer required, but
also that removing it doesn't break his guile-mingw builds. See IRC logs
of #guix for 2022-02-15.

* gnu/packages/cross-base.scm (cross-gcc-arguments): Don't check for and
specify --with-newlib.
(cross-libc): Check for mingw and use mingw-w64 directly.
(cross-newlib?): Remove, unexport.
(native-libc): Remove.
---
gnu/packages/cross-base.scm | 32 +++++---------------------------
1 file changed, 5 insertions(+), 27 deletions(-)

Toggle diff (66 lines)
diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 529144d127..66412b9e92 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -42,7 +42,6 @@ (define-module (gnu packages cross-base)
#:export (cross-binutils
cross-libc
cross-gcc
- cross-newlib?
cross-kernel-headers))
(define-syntax %xgcc
@@ -177,10 +176,6 @@ (define (cross-gcc-arguments target xgcc libc)
`((string-append "--with-toolexeclibdir="
(assoc-ref %outputs "lib")
"/" ,target "/lib"))
- '())
- ;; For a newlib (non-glibc) target
- ,@(if (cross-newlib? target)
- '("--with-newlib")
'()))
,(if libc
@@ -489,10 +484,11 @@ (define* (cross-libc 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 (cross-newlib? target libc)
- (native-libc target libc
- #:xgcc xgcc
- #:xbinutils xbinutils)
+ (if (target-mingw? target)
+ (let ((machine (substring target 0 (string-index target #\-))))
+ (make-mingw-w64 machine
+ #:xgcc xgcc
+ #:xbinutils xbinutils))
(package
(inherit libc)
(name (string-append "glibc-cross-" target))
@@ -553,24 +549,6 @@ (define* (cross-libc target
,@(package-inputs libc) ;FIXME: static-bash
,@(package-native-inputs libc))))))
-(define* (native-libc target
- #:optional
- (libc glibc)
- #:key
- xgcc
- xbinutils)
- (if (target-mingw? target)
- (let ((machine (substring target 0 (string-index target #\-))))
- (make-mingw-w64 machine
- #:xgcc xgcc
- #:xbinutils xbinutils))
- libc))
-
-(define* (cross-newlib? target
- #:optional
- (libc glibc))
- (not (eq? (native-libc target libc) libc)))
-
;;; Concrete cross tool chains are instantiated like this:
;;
--
2.34.1
C
C
Carl Dong wrote on 17 Mar 2022 03:16
Closing 54212
(address . control@debbugs.gnu.org)
0AED24F2-B6B5-4B16-9F7F-FCB197ED4683@carldong.me
close 54212 34e9eae68c9583acce5abc4100add3d88932a5ae
?
Your comment

This issue is archived.

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

To respond to this issue using the mumi CLI, first switch to it
mumi current 54212
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