From fe12c3458c1b1df56227800f27db777936a90971 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 24 Aug 2013 17:17:06 +0200 Subject: build-system/gnu: Add `dist-package'. * guix/build/gnu-dist.scm: New file. * Makefile.am (MODULES): Add it. * guix/build-system/gnu.scm (%default-modules): New variable. (gnu-build): Use it. (dist-package): New procedure. --- guix/build-system/gnu.scm | 46 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 41 insertions(+), 5 deletions(-) (limited to 'guix/build-system') diff --git a/guix/build-system/gnu.scm b/guix/build-system/gnu.scm index c12a871fd8..03d56edadf 100644 --- a/guix/build-system/gnu.scm +++ b/guix/build-system/gnu.scm @@ -32,7 +32,8 @@ (define-module (guix build-system gnu) package-with-explicit-inputs package-with-extra-configure-variable static-libgcc-package - static-package)) + static-package + dist-package)) ;; Commentary: ;; @@ -41,6 +42,11 @@ (define-module (guix build-system gnu) ;; ;; Code: +(define %default-modules + ;; Build-side modules imported and used by default. + '((guix build gnu-build-system) + (guix build utils))) + (define* (package-with-explicit-inputs p inputs #:optional (loc (current-source-location)) @@ -152,6 +158,38 @@ (define* (static-package p #:optional (loc (current-source-location)) ''("--strip-all") flags))))))) +(define* (dist-package p source) + "Return a package that runs takes source files from the SOURCE directory, +runs `make distcheck' and whose result is one or more source tarballs." + (let ((s source)) + (package (inherit p) + (name (string-append (package-name p) "-dist")) + (source s) + (arguments + ;; Use the right phases and modules. + (let* ((args (default-keyword-arguments (package-arguments p) + `(#:phases #f + #:modules ,%default-modules + #:imported-modules ,%default-modules)))) + (substitute-keyword-arguments args + ((#:modules modules) + `((guix build gnu-dist) + ,@modules)) + ((#:imported-modules modules) + `((guix build gnu-dist) + ,@modules)) + ((#:phases _) + '%dist-phases)))) + (native-inputs + ;; Add autotools & co. as inputs. + (let ((ref (lambda (module var) + (module-ref (resolve-interface module) var)))) + `(("autoconf" ,(ref '(gnu packages autotools) 'autoconf)) + ("automake" ,(ref '(gnu packages autotools) 'automake)) + ("libtool" ,(ref '(gnu packages autotools) 'libtool) "bin") + ("gettext" ,(ref '(gnu packages gettext) 'gettext)) + ("texinfo" ,(ref '(gnu packages texinfo) 'texinfo)))))))) + (define %store ;; Store passed to STANDARD-INPUTS. @@ -227,10 +265,8 @@ (define* (gnu-build store name source inputs (phases '%standard-phases) (system (%current-system)) (implicit-inputs? #t) ; useful when bootstrapping - (imported-modules '((guix build gnu-build-system) - (guix build utils))) - (modules '((guix build gnu-build-system) - (guix build utils)))) + (imported-modules %default-modules) + (modules %default-modules)) "Return a derivation called NAME that builds from tarball SOURCE, with input derivation INPUTS, using the usual procedure of the GNU Build System. The builder is run with GUILE, or with the distro's final Guile -- cgit v1.2.3