;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
-;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
+;;; Copyright © 2018, 2019 Clément Lassieur <clement@lassieur.org>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (ice-9 match)
- #:export (hydra-jobs))
+ #:export (channel-instance->package
+ hydra-jobs))
;;; Commentary:
;;;
%guile-bootstrap-tarball
%bootstrap-tarballs))
-(define %packages-to-cross-build
- %core-packages)
+(define (packages-to-cross-build target)
+ "Return the list of packages to cross-build for TARGET."
+ ;; Don't cross-build the bootstrap tarballs for MinGW.
+ (if (string-contains target "mingw")
+ (drop-right %core-packages 6)
+ %core-packages))
(define %cross-targets
'("mips64el-linux-gnu"
"arm-linux-gnueabihf"
"aarch64-linux-gnu"
"powerpc-linux-gnu"
+ "riscv64-linux-gnu"
"i586-pc-gnu" ;aka. GNU/Hurd
"i686-w64-mingw32"
"x86_64-w64-mingw32"))
load-manifest)
manifests))))
+(define (find-current-checkout arguments)
+ "Find the first checkout of ARGUMENTS that provided the current file.
+Return #f if no such checkout is found."
+ (let ((current-root
+ (canonicalize-path
+ (string-append (dirname (current-filename)) "/.."))))
+ (find (lambda (argument)
+ (and=> (assq-ref argument 'file-name)
+ (lambda (name)
+ (string=? name current-root)))) arguments)))
+
\f
;;;
;;; Hydra entry point.
((? string? str) (call-with-input-string str read))))
(define checkout
- ;; Extract metadata about the 'guix' checkout. Its key in ARGUMENTS may
- ;; vary, so pick up the first one that's neither 'subset' nor 'systems'.
- (any (match-lambda
- ((key . value)
- (and (not (memq key '(systems subset)))
- value)))
- arguments))
+ (or (find-current-checkout arguments)
+ (assq-ref arguments 'superior-guix-checkout)))
(define commit
(assq-ref checkout 'revision))
(map (lambda (package)
(package-cross-job store (job-name package)
package target system))
- %packages-to-cross-build))
+ (packages-to-cross-build target)))
(remove (either from-32-to-64? same? pointless?)
%cross-targets)))