diff options
author | Ludovic Courtès <ludo@gnu.org> | 2015-03-17 22:09:32 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2015-03-17 22:25:55 +0100 |
commit | ff40e9b7e55846c86f48c861816ac01bd0d7af7a (patch) | |
tree | 4e32022258c9cba5e376d1ebfa0a96befce24539 /guix/packages.scm | |
parent | 9d8100f4c7d9f44a3623419039ac985be7ba9bb3 (diff) | |
download | gnu-guix-ff40e9b7e55846c86f48c861816ac01bd0d7af7a.tar gnu-guix-ff40e9b7e55846c86f48c861816ac01bd0d7af7a.tar.gz |
gexp: Move the package and origin compilers to (guix packages).
From now own, (guix packages) depends on (guix gexps); it was the other
way around now. This means that (guix packages) code can use gexps.
* guix/gexp.scm (origin-compiler, package-compiler): Remove.
(default-guile-derivation): New procedure.
(gexp->derivation): Use it instead of 'default-guile' +
'package->derivation'.
* guix/packages.scm (default-guile-derivation): New procedure.
(package-compiler, origin-compiler): New variables.
* doc/guix.texi (G-Expressions): Mention extensibility.
Diffstat (limited to 'guix/packages.scm')
-rw-r--r-- | guix/packages.scm | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/guix/packages.scm b/guix/packages.scm index df56286c5b..ec0e79d08b 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -22,6 +22,7 @@ #:use-module (guix records) #:use-module (guix store) #:use-module (guix monads) + #:use-module (guix gexp) #:use-module (guix base32) #:use-module (guix derivations) #:use-module (guix build-system) @@ -111,6 +112,7 @@ bag-transitive-target-inputs default-guile + default-guile-derivation set-guile-for-build package-file package->derivation @@ -341,6 +343,12 @@ derivations." (let ((distro (resolve-interface '(gnu packages commencement)))) (module-ref distro 'guile-final))) +(define* (default-guile-derivation #:optional (system (%current-system))) + "Return the derivation for SYSTEM of the default Guile package used to run +the build code of derivation." + (package->derivation (default-guile) system + #:graft? #f)) + ;; TODO: Rewrite using %STORE-MONAD and gexps. (define* (patch-and-repack store source patches #:key @@ -939,6 +947,13 @@ cross-compilation target triplet." (define package->cross-derivation (store-lift package-cross-derivation)) +(define-gexp-compiler (package-compiler (package package?) system target) + ;; Compile PACKAGE to a derivation for SYSTEM, optionally cross-compiled for + ;; TARGET. This is used when referring to a package from within a gexp. + (if target + (package->cross-derivation package target system) + (package->derivation package system))) + (define patch-and-repack* (store-lift patch-and-repack)) @@ -976,5 +991,10 @@ outside of the store) or SOURCE itself (if SOURCE is already a store item.)" (interned-file file (basename file) #:recursive? #t)))) +(define-gexp-compiler (origin-compiler (origin origin?) system target) + ;; Compile ORIGIN to a derivation for SYSTEM. This is used when referring + ;; to an origin from within a gexp. + (origin->derivation origin system)) + (define package-source-derivation (store-lower origin->derivation)) |