summaryrefslogtreecommitdiff
path: root/guix/packages.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-03-17 22:09:32 +0100
committerLudovic Courtès <ludo@gnu.org>2015-03-17 22:25:55 +0100
commitff40e9b7e55846c86f48c861816ac01bd0d7af7a (patch)
tree4e32022258c9cba5e376d1ebfa0a96befce24539 /guix/packages.scm
parent9d8100f4c7d9f44a3623419039ac985be7ba9bb3 (diff)
downloadgnu-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.scm20
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))