;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . (define-module (test-ui) #:use-module (guix ui) #:use-module (guix profiles) #:use-module (guix store) #:use-module (guix derivations) #:use-module ((guix scripts build) #:select (%standard-build-options)) #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) #:use-module (srfi srfi-19) #:use-module (srfi srfi-64) #:use-module (ice-9 regex)) ;; Test the (guix ui) module. (define %paragraph "GNU Guile is an implementation of the Scheme programming language, with support for many SRFIs, packaged for use in a wide variety of environments. In addition to implementing the R5RS Scheme standard and a large subset of R6RS, Guile includes a module system, full access to POSIX system calls, networking support, multiple threads, dynamic linking, a foreign function call interface, and powerful string processing.") (define guile-1.8.8 (manifest-entry (name "guile") (version "1.8.8") (item "/gnu/store/...") (output "out"))) (define guile-2.0.9 (manifest-entry (name "guile") (version "2.0.9") (item "/gnu/store/...") (output "out"))) (define-syntax-rule (with-environment-variable variable value body ...) "Run BODY with VARIABLE set to VALUE." (let ((orig (getenv variable))) (dynamic-wind (lambda () (setenv variable value)) (lambda () body ...) (lambda () (if orig (setenv variable orig) (unsetenv variable)))))) (test-begin "ui") (test-equal "parse-command-line" '((argument . "bar") (argument . "foo") (cores . 10) ;takes precedence (substitutes? . #f) (keep-failed? . #t) (max-jobs . 77) (cores . 42)) (with-environment-variable "GUIX_BUILD_OPTIONS" "-c 42 -M 77" (parse-command-line '("--keep-failed" "--no-substitutes" "--cores=10" "foo" "bar") %standard-build-options 2015-09-09linux-initrd: Compress cpio archives deterministically....* gnu/build/linux-initrd.scm (write-cpio-archive): Use '--no-name'. Ludovic Courtès 2015-06-24linux-initrd: Produce cpio archives with zeroed timestamps, etc....* guix/cpio.scm (file->cpio-header*): New procedure. * gnu/build/linux-initrd.scm (write-cpio-archive): Add #:file->header argument to 'cpio:write-cpio-archive'. Ludovic Courtès 2015-06-24linux-initrd: Populate cpio archives in a deterministic order....* gnu/build/linux-initrd.scm (write-cpio-archive)[files]: Use 'sort' instead of 'reverse'. Ludovic Courtès 2015-06-24linux-initrd: Use (guix cpio) instead of GNU cpio....* gnu/build/linux-initrd.scm (write-cpio-archive): Remove 'open-pipe*' and related calls. Compute list of files in 'files' variable. Use 'cpio:write-cpio-archive'. Remove #:cpio parameter. (build-initrd): Remove #:cpio parameter. * gnu/system/linux-initrd.scm (expression->initrd): Likewise, and adjust BUILDER accordingly. Add (guix cpio) to #:modules. Ludovic Courtès 2014-09-08linux-initrd: Store Linux modules in a normal store directory....* gnu/system/linux-initrd.scm (expression->initrd): Remove #:linux and #:linux-modules parameters. Remove call to 'float-linux-module-directory'. (base-initrd): Add call to 'float-linux-module-directory'. Use it in #:linux-modules argument in the gexp. Remove #:linux and #:linux-modules arguments to 'expression->initrd'. * gnu/build/linux-initrd.scm (build-initrd): Remove #:linux-module-directory parameter. Don't create 'modules' sub-directory. * gnu/build/linux-boot.scm (boot-system): Mentin that LINUX-MODULES is a list of absolute file names. Don't prepend "/modules/" to LINUX-MODULES. * doc/guix.texi (Initial RAM Disk): Adjust accordingly. Ludovic Courtès 2014-09-08linux-initrd: Move initrd creation code to (guix build linux-initrd)....* gnu/build/linux-initrd.scm (cache-compiled-file-name, compile-to-cache, build-initrd): New procedures. * gnu/system/linux-initrd.scm (expression->initrd)[builder]: Remove code now moved above. Use 'build-initrd'. Ludovic Courtès 2014-09-08linux-initrd: Build cpio archives without '--no-absolute-filenames'....* gnu/build/linux-initrd.scm (write-cpio-archive): Remove '--no-absolute-filenames'. Ludovic Courtès 2014-09-03linux-initrd: Factorize cpio archive creation....* gnu/build/linux-initrd.scm: New file. * gnu-system.am (GNU_SYSTEM_MODULES): Add it. * gnu/system/linux-initrd.scm (expression->initrd): Use (gnu build linux-initrd) and 'write-cpio-archive' instead of the inlined code. Ludovic Courtès 2014-09-03Rename (gnu build linux-initrd) to (gnu build linux-boot)....* gnu/build/linux-initrd.scm: Rename to... * gnu/build/linux-boot.scm: ... this. * gnu-system.am (GNU_SYSTEM_MODULES): Adjust accordingly. * gnu/build/activation.scm, gnu/build/vm.scm, gnu/services/base.scm, gnu/services/dmd.scm, gnu/system.scm, gnu/system/linux-initrd.scm, gnu/system/vm.scm: Adjust accordingly. Ludovic Courtès 2014-09-03Move operating system helpers from (guix build …) to (gnu build …)....* guix/build/activation.scm, guix/b