GNU bug report logs - #78417
[PATCH 0/2] MinGW: Use winpthreads by default.

Previous Next

Package: guix-patches;

Reported by: Janneke Nieuwenhuizen <janneke <at> gnu.org>

Date: Wed, 14 May 2025 06:42:01 UTC

Severity: normal

Tags: patch

Done: Janneke Nieuwenhuizen <janneke <at> gnu.org>

To reply to this bug, email your comments to 78417 AT debbugs.gnu.org.
There is no need to reopen the bug first.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to andreas <at> enge.fr, janneke <at> gnu.org, ludo <at> gnu.org, z572 <at> z572.online, guix-patches <at> gnu.org:
bug#78417; Package guix-patches. (Wed, 14 May 2025 06:42:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Janneke Nieuwenhuizen <janneke <at> gnu.org>:
New bug report received and forwarded. Copy sent to andreas <at> enge.fr, janneke <at> gnu.org, ludo <at> gnu.org, z572 <at> z572.online, guix-patches <at> gnu.org. (Wed, 14 May 2025 06:42:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Janneke Nieuwenhuizen <janneke <at> gnu.org>
To: guix-patches <at> gnu.org
Cc: Carl Dong <contact <at> carldong.me>
Subject: [PATCH 0/2] MinGW: Use winpthreads by default.
Date: Wed, 14 May 2025 08:41:19 +0200
Using a version of mingw-64 with winpthreads, packages that support posix
threads, such as Guile, can be (cross-)built for MinGW with thread support.

Also, since gcc-13, a MinGW (cross-)compiler provides g++ with std::mutex when
built with a version of mingw-w64 that has winpthreads enabled.

Now that we are using gcc-14 for cross-builds, switching to MingGW packages
and a MinGW cross-build toolchain that uses winpthreads is probably helpful.

Greetings,
Janneke

Janneke Nieuwenhuizen (2):
  gnu: mingw-w64-i686, mingw-w64-x86_64: Use winpthreads.
  gnu: cross-base: mingw: Use winpthreads by default.

 gnu/packages/cross-base.scm | 16 ++++++++++------
 gnu/packages/mingw.scm      |  8 +++++---
 2 files changed, 15 insertions(+), 9 deletions(-)


base-commit: 5f5d84beccc180f1b51474c0e47eb6e0d0c9175f
-- 
2.49.0





Information forwarded to guix-patches <at> gnu.org:
bug#78417; Package guix-patches. (Wed, 14 May 2025 06:46:02 GMT) Full text and rfc822 format available.

Message #8 received at 78417 <at> debbugs.gnu.org (full text, mbox):

From: Janneke Nieuwenhuizen <janneke <at> gnu.org>
To: 78417 <at> debbugs.gnu.org
Cc: Carl Dong <contact <at> carldong.me>
Subject: [PATCH 1/2] gnu: mingw-w64-i686, mingw-w64-x86_64: Use winpthreads.
Date: Wed, 14 May 2025 08:45:21 +0200
* gnu/packages/mingw.scm (mingw-w64-i686, mingw-w64-x86_64): Enable
winpthreads by default.
(mingw-w64-i686-sans-winpthreads, mingw-w64-x86_64-sans-winpthreads): New
variables providing variants without winpthreads.

Change-Id: Iaf34d9cc812543762cfd626693ea715880341c13
---
 gnu/packages/mingw.scm | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/mingw.scm b/gnu/packages/mingw.scm
index ea579d4043..ed7b87e3b1 100644
--- a/gnu/packages/mingw.scm
+++ b/gnu/packages/mingw.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016 Jan Nieuwenhuizen <janneke <at> gnu.org>
+;;; Copyright © 2016, 2025 Janneke Nieuwenhuizen <janneke <at> gnu.org>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me <at> tobias.gr>
 ;;; Copyright © 2019 Carl Dong <contact <at> carldong.me>
 ;;; Copyright © 2021 Léo Le Bouter <lle-bout <at> zaclys.net>
@@ -132,10 +132,10 @@ (define* (make-mingw-w64/implementation machine
 (define make-mingw-w64
   (memoize make-mingw-w64/implementation))
 
-(define-public mingw-w64-i686
+(define-public mingw-w64-i686-sans-winpthreads
   (make-mingw-w64 "i686"))
 
-(define-public mingw-w64-x86_64
+(define-public mingw-w64-x86_64-sans-winpthreads
   (make-mingw-w64 "x86_64"))
 
 (define-public mingw-w64-i686-winpthreads
@@ -146,6 +146,8 @@ (define-public mingw-w64-x86_64-winpthreads
   (make-mingw-w64 "x86_64"
                   #:with-winpthreads? #t))
 
+(define-public mingw-w64-i686 mingw-w64-i686-winpthreads)
+(define-public mingw-w64-x86_64 mingw-w64-x86_64-winpthreads)
 (define-public mingw-w64 mingw-w64-i686)
 
 (define-public mingw-w64-tools
-- 
2.49.0





Information forwarded to andreas <at> enge.fr, janneke <at> gnu.org, ludo <at> gnu.org, z572 <at> z572.online, guix-patches <at> gnu.org:
bug#78417; Package guix-patches. (Wed, 14 May 2025 06:47:01 GMT) Full text and rfc822 format available.

Message #11 received at 78417 <at> debbugs.gnu.org (full text, mbox):

From: Janneke Nieuwenhuizen <janneke <at> gnu.org>
To: 78417 <at> debbugs.gnu.org
Cc: Carl Dong <contact <at> carldong.me>
Subject: [PATCH 2/2] gnu: cross-base: mingw: Use winpthreads by default.
Date: Wed, 14 May 2025 08:45:22 +0200
Using a version of mingw-64 with winpthreads, packages that support posix
threads, such as Guile, can be (cross-)built for MinGW with thread support.

Also, since gcc-13, a MinGW (cross-)compiler provides g++ with std::mutex when
built with a version of mingw-w64 that has winpthreads enabled.

* gnu/packages/cross-base.scm (cross-gcc-toolchain/implementation):
Add #:with-winpthreads? parameter, defaulting to #t.  Pass it...
(cross-libc*): ...to new #:with-winpthreads? parameter here, defaulting to #t.
Pass it to make-mingw-w64 for winpthread support.

Change-Id: Iaf34d9cc812543762cfd626693ea715880341c13
---
 gnu/packages/cross-base.scm | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm
index 5df06418e3..97afa240e3 100644
--- a/gnu/packages/cross-base.scm
+++ b/gnu/packages/cross-base.scm
@@ -1,7 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2013-2018, 2020, 2023-2024 Ludovic Courtès <ludo <at> gnu.org>
 ;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw <at> netris.org>
-;;; Copyright © 2016, 2019, 2023, 2024 Janneke Nieuwenhuizen <janneke <at> gnu.org>
+;;; Copyright © 2016, 2019, 2023-2025 Janneke Nieuwenhuizen <janneke <at> gnu.org>
 ;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837 <at> gmail.com>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me <at> tobias.gr>
 ;;; Copyright © 2019, 2020, 2021 Marius Bakke <marius <at> gnu.org>
@@ -673,7 +673,8 @@ (define* (cross-libc* target
                       (libc (libc-for-target target))
                       (xgcc (cross-gcc target))
                       (xbinutils (cross-binutils target))
-                      (xheaders (cross-kernel-headers target)))
+                      (xheaders (cross-kernel-headers target))
+                      (with-winpthreads? #t))
   "Return LIBC cross-built for TARGET, a GNU triplet. Use XGCC and XBINUTILS
 and the cross tool chain.  If TARGET doesn't have a standard C library #f is
 returned."
@@ -682,7 +683,8 @@ (define* (cross-libc* target
     (let ((machine (substring target 0 (string-index target #\-))))
       (make-mingw-w64 machine
                       #:xgcc xgcc
-                      #:xbinutils xbinutils)))
+                      #:xbinutils xbinutils
+                      #:with-winpthreads? #t)))
    ((or (? target-linux?) (? target-hurd?))
     (package
       (inherit libc)
@@ -787,10 +789,12 @@ (define* (cross-gcc-toolchain/implementation target
                                              #:key
                                              (base-gcc %xgcc)
                                              (xbinutils (cross-binutils target))
+                                             (with-winpthreads? #t)
                                              (libc (cross-libc
-                                                     target
-                                                     #:xgcc (cross-gcc target #:xgcc base-gcc)
-                                                     #:xbinutils xbinutils))
+                                                    target
+                                                    #:xgcc (cross-gcc target #:xgcc base-gcc)
+                                                    #:xbinutils xbinutils
+                                                    #:with-winpthreads? with-winpthreads?))
                                              (xgcc (cross-gcc target
                                                               #:xgcc base-gcc
                                                               #:libc libc
-- 
2.49.0





Reply sent to Janneke Nieuwenhuizen <janneke <at> gnu.org>:
You have taken responsibility. (Fri, 23 May 2025 07:41:02 GMT) Full text and rfc822 format available.

Notification sent to Janneke Nieuwenhuizen <janneke <at> gnu.org>:
bug acknowledged by developer. (Fri, 23 May 2025 07:41:02 GMT) Full text and rfc822 format available.

Message #16 received at 78417-done <at> debbugs.gnu.org (full text, mbox):

From: Janneke Nieuwenhuizen <janneke <at> gnu.org>
To: 78417-done <at> debbugs.gnu.org
Subject: Re: [PATCH 0/2] MinGW: Use winpthreads by default.
Date: Fri, 23 May 2025 09:40:18 +0200
Janneke Nieuwenhuizen writes:

> Now that we are using gcc-14 for cross-builds, switching to MingGW packages
> and a MinGW cross-build toolchain that uses winpthreads is probably helpful.

Pushed to master as 99ba2814d13331231f2b79603c91987d5976de3e

Greetings,
Janneke

-- 
Janneke Nieuwenhuizen <janneke <at> gnu.org>  | GNU LilyPond https://LilyPond.org
Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com




This bug report was last modified 15 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.