summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2014-04-05 22:40:16 +0200
committerLudovic Courtès <ludo@gnu.org>2014-04-05 22:40:16 +0200
commit731b996255fb699cd91699f6cd22de41ebafcdcd (patch)
tree749b63309998feb1bf27033fe1dd28ff2ed35e15
parent512314d738754eeb513a0d1b8074f635ab4f2f06 (diff)
hydra: Add 'qemu-image' job.
* build-aux/hydra/demo-os.scm: New file. * Makefile.am (EXTRA_DIST): Add it. * build-aux/hydra/gnu-system.scm (qemu-jobs): New procedure. (hydra-jobs): Use it. * guix/scripts/system.scm (read-operating-system): Export.
-rw-r--r--Makefile.am1
-rw-r--r--build-aux/hydra/demo-os.scm62
-rw-r--r--build-aux/hydra/gnu-system.scm37
-rw-r--r--guix/scripts/system.scm3
4 files changed, 100 insertions, 3 deletions
diff --git a/Makefile.am b/Makefile.am
index 2ccf80252e..7ec77c7ab8 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -186,6 +186,7 @@ EXTRA_DIST = \
TODO \
.dir-locals.el \
build-aux/hydra/gnu-system.scm \
+ build-aux/hydra/demo-os.scm \
build-aux/hydra/guix.scm \
build-aux/check-available-binaries.scm \
build-aux/download.scm \
diff --git a/build-aux/hydra/demo-os.scm b/build-aux/hydra/demo-os.scm
new file mode 100644
index 0000000000..eaf79584b6
--- /dev/null
+++ b/build-aux/hydra/demo-os.scm
@@ -0,0 +1,62 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+
+;;;
+;;; This file defines an operating system configuration for the demo virtual
+;;; machine images that we build.
+;;;
+
+(use-modules (gnu packages emacs)
+ (gnu packages xorg)
+ (gnu packages base)
+ (gnu packages admin)
+ (gnu packages guile)
+ (gnu packages bash)
+ (gnu packages linux)
+ (gnu packages less)
+ (gnu packages tor)
+
+ (gnu system shadow) ; 'user-account'
+ (gnu services base)
+ (gnu services networking)
+ (gnu services xorg))
+
+(operating-system
+ (host-name "gnu")
+ (timezone "Europe/Paris")
+ (locale "en_US.UTF-8")
+ (users (list (user-account
+ (name "guest")
+ (uid 1000) (gid 100)
+ (comment "Guest of GNU")
+ (home-directory "/home/guest"))))
+ (services (cons* (slim-service #:auto-login? #f
+ #:default-user "root")
+
+ ;; QEMU networking settings.
+ (static-networking-service "eth0" "10.0.2.10"
+ #:name-servers '("10.0.2.3")
+ #:gateway "10.0.2.2")
+
+ %base-services))
+ (packages (list bash coreutils findutils grep sed
+ procps psmisc less
+ guile-2.0 dmd util-linux inetutils
+ xterm emacs
+ tor)))
diff --git a/build-aux/hydra/gnu-system.scm b/build-aux/hydra/gnu-system.scm
index 083ff2a7cd..6aa491a274 100644
--- a/build-aux/hydra/gnu-system.scm
+++ b/build-aux/hydra/gnu-system.scm
@@ -36,10 +36,14 @@
dir)
(set! %load-path (cons dir %load-path))))))
-(use-modules (guix store)
+(use-modules (guix config)
+ (guix store)
(guix packages)
(guix derivations)
+ (guix monads)
+ ((guix licenses) #:select (gpl3+))
((guix utils) #:select (%current-system))
+ ((guix scripts system) #:select (read-operating-system))
(gnu packages)
(gnu packages gcc)
(gnu packages base)
@@ -49,6 +53,8 @@
(gnu packages compression)
(gnu packages multiprecision)
(gnu packages make-bootstrap)
+ (gnu system)
+ (gnu system vm)
(srfi srfi-1)
(srfi srfi-26)
(ice-9 match))
@@ -108,6 +114,32 @@ SYSTEM."
'("mips64el-linux-gnu"
"mips64el-linux-gnuabi64"))
+(define (qemu-jobs store system)
+ "Return a list of jobs that build QEMU images for SYSTEM."
+ (define (->alist drv)
+ `((derivation . ,drv)
+ (description . "Stand-alone QEMU image of the GNU system")
+ (long-description . "This is a demo stand-alone QEMU image of the GNU
+system.")
+ (license . ,gpl3+)
+ (home-page . ,%guix-home-page-url)
+ (maintainers . ("bug-guix@gnu.org"))))
+
+ (define (->job name drv)
+ (let ((name (symbol-append name (string->symbol ".")
+ (string->symbol system))))
+ `(,name . ,(->alist drv))))
+
+ (if (string=? system "x86_64-linux")
+ (let* ((dir (dirname (assoc-ref (current-source-location) 'filename)))
+ (file (string-append dir "/demo-os.scm"))
+ (os (read-operating-system file)))
+ (if (operating-system? os)
+ (list (->job 'qemu-image
+ (run-with-store store (system-qemu-image os))))
+ '()))
+ '()))
+
(define (hydra-jobs store arguments)
"Return Hydra jobs."
(define systems
@@ -156,7 +188,8 @@ SYSTEM."
(cons (package-job store (job-name package)
package system)
result)))
- (cross-jobs system)))
+ (append (qemu-jobs store system)
+ (cross-jobs system))))
((core)
;; Build core packages only.
(append (map (lambda (package)
diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm
index 7799ccbc47..823713eada 100644
--- a/guix/scripts/system.scm
+++ b/guix/scripts/system.scm
@@ -28,7 +28,8 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-37)
#:use-module (ice-9 match)
- #:export (guix-system))
+ #:export (guix-system
+ read-operating-system))
(define %user-module
;; Module in which the machine description file is loaded.