profiles: Packages in a profile can be cross-compiled.
* guix/profiles.scm (profile-derivation): Add #:target parameter; pass it to 'gexp->derivation'. * tests/profiles.scm ("profile-derivation, cross-compilation"): New test.
This commit is contained in:
parent
48b444304e
commit
176febe377
|
@ -1,5 +1,5 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
||||
;;; Copyright © 2014, 2016 Alex Kost <alezost@gmail.com>
|
||||
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
|
||||
|
@ -933,13 +933,16 @@ files for the truetype fonts of the @var{manifest} entries."
|
|||
#:key
|
||||
(hooks %default-profile-hooks)
|
||||
(locales? #t)
|
||||
system)
|
||||
system target)
|
||||
"Return a derivation that builds a profile (aka. 'user environment') with
|
||||
the given MANIFEST. The profile includes additional derivations returned by
|
||||
the monadic procedures listed in HOOKS--such as an Info 'dir' file, etc.
|
||||
|
||||
When LOCALES? is true, the build is performed under a UTF-8 locale; this adds
|
||||
a dependency on the 'glibc-utf8-locales' package."
|
||||
a dependency on the 'glibc-utf8-locales' package.
|
||||
|
||||
When TARGET is true, it must be a GNU triplet, and the packages in MANIFEST
|
||||
are cross-built for TARGET."
|
||||
(mlet %store-monad ((system (if system
|
||||
(return system)
|
||||
(current-system)))
|
||||
|
@ -1000,6 +1003,7 @@ a dependency on the 'glibc-utf8-locales' package."
|
|||
|
||||
(gexp->derivation "profile" builder
|
||||
#:system system
|
||||
#:target target
|
||||
|
||||
;; Not worth offloading.
|
||||
#:local-build? #t
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2014 Alex Kost <alezost@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
|
@ -212,6 +212,35 @@
|
|||
#:locales? #f)))
|
||||
(return (derivation-inputs drv))))
|
||||
|
||||
(test-assertm "profile-derivation, cross-compilation"
|
||||
(mlet* %store-monad
|
||||
((manifest -> (packages->manifest (list packages:sed packages:grep)))
|
||||
(target -> "arm-linux-gnueabihf")
|
||||
(grep (package->cross-derivation packages:grep target))
|
||||
(sed (package->cross-derivation packages:sed target))
|
||||
(locales (package->derivation packages:glibc-utf8-locales))
|
||||
(drv (profile-derivation manifest
|
||||
#:hooks '()
|
||||
#:locales? #t
|
||||
#:target target)))
|
||||
(define (find-input name)
|
||||
(let ((name (string-append name ".drv")))
|
||||
(any (lambda (input)
|
||||
(let ((input (derivation-input-path input)))
|
||||
(and (string-suffix? name input) input)))
|
||||
(derivation-inputs drv))))
|
||||
|
||||
;; The inputs for grep and sed should be cross-build derivations, but that
|
||||
;; for the glibc-utf8-locales should be a native build.
|
||||
(return (and (string=? (derivation-system drv) (%current-system))
|
||||
(string=? (find-input (package-full-name packages:grep))
|
||||
(derivation-file-name grep))
|
||||
(string=? (find-input (package-full-name packages:sed))
|
||||
(derivation-file-name sed))
|
||||
(string=? (find-input
|
||||
(package-full-name packages:glibc-utf8-locales))
|
||||
(derivation-file-name locales))))))
|
||||
|
||||
(test-assert "package->manifest-entry defaults to \"out\""
|
||||
(let ((outputs (package-outputs packages:glibc)))
|
||||
(equal? (manifest-entry-output
|
||||
|
|
Loading…
Reference in New Issue