"i686-w64-mingw32"
"x86_64-w64-mingw32"))
- %packages-to-cross-build))
+ (define (cross-jobs store system)
+ "Return a list of cross-compilation jobs for SYSTEM."
+ (define (from-32-to-64? target)
+ ;; Return true if SYSTEM is 32-bit and TARGET is 64-bit. This hack
+ ;; prevents known-to-fail cross-builds from i686-linux or armhf-linux to
+ ;; mips64el-linux-gnuabi64.
+ (and (or (string-prefix? "i686-" system)
+ (string-prefix? "i586-" system)
+ (string-prefix? "armhf-" system))
+ (string-contains target "64"))) ;x86_64, mips64el, aarch64, etc.
+
+ (define (same? target)
+ ;; Return true if SYSTEM and TARGET are the same thing. This is so we
+ ;; don't try to cross-compile to 'mips64el-linux-gnu' from
+ ;; 'mips64el-linux'.
+ (or (string-contains target system)
+ (and (string-prefix? "armhf" system) ;armhf-linux
+ (string-prefix? "arm" target)))) ;arm-linux-gnueabihf
+
+ (define (pointless? target)
+ ;; Return #t if it makes no sense to cross-build to TARGET from SYSTEM.
+ (match system
+ ((or "x86_64-linux" "i686-linux")
+ (if (string-contains target "mingw")
+ (not (string=? "x86_64-linux" system))
+ #f))
+ (_
+ ;; Don't try to cross-compile from non-Intel platforms: this isn't
+ ;; very useful and these are often brittle configurations.
+ #t)))
+
+ (define (either proc1 proc2 proc3)
+ (lambda (x)
+ (or (proc1 x) (proc2 x) (proc3 x))))
+
+ (append-map (lambda (target)
+ (map (lambda (package)
+ (package-cross-job store (job-name package)
+ package target system))
++ (packages-to-cross-build target)))
+ (remove (either from-32-to-64? same? pointless?)
+ %cross-targets)))
+
(define %guixsd-supported-systems
'("x86_64-linux" "i686-linux" "armhf-linux"))
%D%/packages/patches/cpufrequtils-fix-aclocal.patch \
%D%/packages/patches/crawl-upgrade-saves.patch \
%D%/packages/patches/crda-optional-gcrypt.patch \
- %D%/packages/patches/csvkit-fix-tests.patch \
%D%/packages/patches/clucene-contribs-lib.patch \
%D%/packages/patches/cube-nocheck.patch \
+ %D%/packages/patches/curl-use-ssl-cert-env.patch \
%D%/packages/patches/cursynth-wave-rand.patch \
%D%/packages/patches/cvs-CVE-2017-12836.patch \
+ %D%/packages/patches/cyrus-sasl-ac-try-run-fix.patch \
%D%/packages/patches/darkice-workaround-fpermissive-error.patch \
+ %D%/packages/patches/datefudge-gettimeofday.patch \
%D%/packages/patches/dbus-helper-search-path.patch \
%D%/packages/patches/dbus-c++-gcc-compat.patch \
%D%/packages/patches/dbus-c++-threading-mutex.patch \
%D%/packages/patches/guile-1.8-cpp-4.5.patch \
%D%/packages/patches/guile-2.2-default-utf8.patch \
%D%/packages/patches/guile-2.2-skip-oom-test.patch \
+ %D%/packages/patches/guile-3.0-crash.patch \
%D%/packages/patches/guile-default-utf8.patch \
%D%/packages/patches/guile-gdbm-ffi-support-gdbm-1.14.patch \
+ %D%/packages/patches/guile-finalization-crash.patch \
%D%/packages/patches/guile-linux-syscalls.patch \
%D%/packages/patches/guile-present-coding.patch \
%D%/packages/patches/guile-relocatable.patch \
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org>
-;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2020 Roel Janssen <roel@gnu.org>
+ ;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;;
;;; This file is part of GNU Guix.
;;;