From 8b41ede55ebbc6978deb3f4fad5e18b76b372506 Mon Sep 17 00:00:00 2001 From: fanquake Date: Tue, 23 Jul 2024 12:19:54 +0100 Subject: [PATCH 1/3] guix: consolidate back to GCC 12 toolchain for all HOSTS Using GCC 11 for the macOS build hasn't been required since #21778, and at this point, given a toolchain is still needed (#30206), it makes more sense to (re-)use 12, rather than make all builders compile another GCC toolchain. --- contrib/guix/manifest.scm | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/contrib/guix/manifest.scm b/contrib/guix/manifest.scm index 44fbfa1c0b6..db8e74bb77d 100644 --- a/contrib/guix/manifest.scm +++ b/contrib/guix/manifest.scm @@ -500,6 +500,7 @@ inspecting signatures in Mach-O binaries.") gzip xz ;; Build tools + gcc-toolchain-12 cmake-minimal gnu-make libtool @@ -515,22 +516,16 @@ inspecting signatures in Mach-O binaries.") python-lief) (let ((target (getenv "HOST"))) (cond ((string-suffix? "-mingw32" target) - (list ;; Native GCC 12 toolchain - gcc-toolchain-12 - zip + (list zip (make-mingw-pthreads-cross-toolchain "x86_64-w64-mingw32") nsis-x86_64 nss-certs osslsigncode)) ((string-contains target "-linux-") - (list ;; Native GCC 12 toolchain - gcc-toolchain-12 - (list gcc-toolchain-12 "static") + (list (list gcc-toolchain-12 "static") (make-bitcoin-cross-toolchain target))) ((string-contains target "darwin") - (list ;; Native GCC 11 toolchain - gcc-toolchain-11 - clang-toolchain-18 + (list clang-toolchain-18 lld-18 (make-lld-wrapper lld-18 #:lld-as-ld? #t) python-signapple From b23690e8216f2b47e8e2c21a9ff057b25c4083ae Mon Sep 17 00:00:00 2001 From: fanquake Date: Tue, 23 Jul 2024 09:42:04 +0100 Subject: [PATCH 2/3] guix: use GCC 12.4.0 over 12.3.0 Our patch might be merged upstream soon: https://lists.gnu.org/archive/html/guix-patches/2024-06/msg01025.html. In the mean time, it's easy us for us to use the newer version of GCC. --- contrib/guix/manifest.scm | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/contrib/guix/manifest.scm b/contrib/guix/manifest.scm index db8e74bb77d..40bbaf68b55 100644 --- a/contrib/guix/manifest.scm +++ b/contrib/guix/manifest.scm @@ -25,6 +25,7 @@ (guix build-system gnu) (guix build-system python) (guix build-system trivial) + (guix download) (guix gexp) (guix git-download) ((guix licenses) #:prefix license:) @@ -91,7 +92,18 @@ chain for " target " development.")) (home-page (package-home-page xgcc)) (license (package-license xgcc))))) -(define base-gcc gcc-12) +(define base-gcc + (package + (inherit gcc-12) ;; 12.3.0 + (version "12.4.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gcc/gcc-" + version "/gcc-" version ".tar.xz")) + (sha256 + (base32 + "0xcida8l2wykvvzvpcrcn649gj0ijn64gwxbplacpg6c0hk6akvh")))))) + (define base-linux-kernel-headers linux-libre-headers-6.1) (define* (make-bitcoin-cross-toolchain target From d1592d2eee1913e734a4f92907e796eb3350c64a Mon Sep 17 00:00:00 2001 From: fanquake Date: Mon, 22 Jul 2024 17:25:22 +0100 Subject: [PATCH 3/3] guix: use gcc-12 to compile winpthreads Currently, winpthreads is compiled with GCC 11, when we want to be using GCC 12 for all compilation. --- contrib/guix/manifest.scm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/contrib/guix/manifest.scm b/contrib/guix/manifest.scm index 40bbaf68b55..732f65da30d 100644 --- a/contrib/guix/manifest.scm +++ b/contrib/guix/manifest.scm @@ -131,7 +131,10 @@ desirable for building Bitcoin Core release binaries." (define (make-mingw-pthreads-cross-toolchain target) "Create a cross-compilation toolchain package for TARGET" (let* ((xbinutils (binutils-mingw-patches (cross-binutils target))) - (pthreads-xlibc mingw-w64-x86_64-winpthreads) + (machine (substring target 0 (string-index target #\-))) + (pthreads-xlibc (make-mingw-w64 machine + #:xgcc (cross-gcc target #:xgcc (gcc-mingw-patches base-gcc)) + #:with-winpthreads? #t)) (pthreads-xgcc (cross-gcc target #:xgcc (gcc-mingw-patches mingw-w64-base-gcc) #:xbinutils xbinutils