~ruther/guix-local

5cbb559046671c824b090f9540bdf29e26c7c6d9 — Ludovic Courtès 13 years ago 5cc3061
distro: Add a package to build a tarball of the bootstrap binaries.

* distro/packages/base.scm (tarball-package): New procedure.
  (%bootstrap-binaries-tarball): New variable.
  (%guile-bootstrap-tarball): Define in terms of `tarball-package'.
1 files changed, 32 insertions(+), 22 deletions(-)

M distro/packages/base.scm
M distro/packages/base.scm => distro/packages/base.scm +32 -22
@@ 2163,32 2163,42 @@ store.")
           #t))))
    (inputs `(("guile" ,%guile-static)))))

(define %guile-bootstrap-tarball
  ;; A tarball with the statically-linked, relocatable Guile.
  (package (inherit %guile-static)
    (name "guile-bootstrap-tarball")
(define (tarball-package pkg)
  "Return a package containing a tarball of PKG."
  (package (inherit pkg)
    (location (source-properties->location (current-source-location)))
    (name (string-append (package-name pkg) "-tarball"))
    (build-system trivial-build-system)
    (inputs `(("tar" ,tar)
              ("xz" ,xz)
              ("guile" ,%guile-static-stripped)))
              ("input" ,pkg)))
    (arguments
     (lambda (system)
       `(#:modules ((guix build utils))
                   #:builder
                   (begin
                     (use-modules (guix build utils))
                     (let ((out   (assoc-ref %outputs "out"))
                           (guile (assoc-ref %build-inputs "guile"))
                           (tar   (assoc-ref %build-inputs "tar"))
                           (xz    (assoc-ref %build-inputs "xz")))
             (mkdir out)
             (set-path-environment-variable "PATH" '("bin") (list tar xz))
             (with-directory-excursion guile
               (zero? (system* "tar" "cJvf"
                               (string-append out "/guile-bootstrap-"
                                              ,(package-version %guile-static)
                                              "-" ,system
                                              ".tar.xz")
                               "."))))))))))
       (let ((name    (package-name pkg))
             (version (package-version pkg)))
         `(#:modules ((guix build utils))
           #:builder
           (begin
             (use-modules (guix build utils))
             (let ((out   (assoc-ref %outputs "out"))
                   (input (assoc-ref %build-inputs "input"))
                   (tar   (assoc-ref %build-inputs "tar"))
                   (xz    (assoc-ref %build-inputs "xz")))
               (mkdir out)
               (set-path-environment-variable "PATH" '("bin") (list tar xz))
               (with-directory-excursion input
                 (zero? (system* "tar" "cJvf"
                                 (string-append out "/"
                                                ,name "-" ,version
                                                "-" ,system ".tar.xz")
                                 ".")))))))))))

(define %bootstrap-binaries-tarball
  ;; A tarball with the statically-linked bootstrap binaries.
  (tarball-package %static-binaries))

(define %guile-bootstrap-tarball
  ;; A tarball with the statically-linked, relocatable Guile.
  (tarball-package %guile-static-stripped))

;;; base.scm ends here