From eb9521d1b4ce7fd03651fd51688acadcae2d1a33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Mon, 29 Jan 2018 22:15:51 +0100 Subject: examples: Add 'random-jobs'. * examples/random-jobs.scm, examples/random.scm: New files. * Makefile.am (nobase_dist_pkgdata_DATA): Add them. --- Makefile.am | 10 ++++++---- examples/random-jobs.scm | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ examples/random.scm | 29 ++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+), 4 deletions(-) create mode 100644 examples/random-jobs.scm create mode 100644 examples/random.scm diff --git a/Makefile.am b/Makefile.am index ab7a3bc..af571b3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -187,10 +187,12 @@ info_TEXINFOS = doc/cuirass.texi doc_cuirass_TEXINFOS = doc/fdl-1.3.texi # Install the examples. -nobase_dist_pkgdata_DATA = \ - examples/gnu-system.scm \ - examples/guix-jobs.scm \ - examples/hello-singleton.scm \ +nobase_dist_pkgdata_DATA = \ + examples/random.scm \ + examples/random-jobs.scm \ + examples/gnu-system.scm \ + examples/guix-jobs.scm \ + examples/hello-singleton.scm \ examples/hello-subset.scm ## -------------- ## diff --git a/examples/random-jobs.scm b/examples/random-jobs.scm new file mode 100644 index 0000000..22cfa1b --- /dev/null +++ b/examples/random-jobs.scm @@ -0,0 +1,49 @@ +;;; random.scm -- Definition of the random build jobs +;;; Copyright © 2018 Ludovic Courtès +;;; +;;; This file is part of Cuirass. +;;; +;;; Cuirass 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. +;;; +;;; Cuirass 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 Cuirass. If not, see . + + +(use-modules (guix) + (srfi srfi-1) + (srfi srfi-26)) + +(define (make-job name derivation) + (lambda () + `((#:job-name ,name) + (#:derivation . ,(derivation-file-name (force derivation))) + (#:license . ((name . "GPLv3+"))) + (#:description "dummy job") + (#:long-description "really dummy job")))) + +(define (random-derivation store) + (let ((nonce (random 1e6))) + (run-with-store store + (gexp->derivation "random" + #~(let ((seed (logxor (getpid) + (car (gettimeofday))))) + (seed->random-state seed) + (sleep (pk 'sleeping (random 10))) + #$nonce + (mkdir #$output)))))) + +(define (make-random-jobs store arguments) + (unfold (cut > <> 10) + (lambda (i) + (make-job (string-append "foo" (number->string i)) + (delay (random-derivation store)))) + 1+ + 0)) diff --git a/examples/random.scm b/examples/random.scm new file mode 100644 index 0000000..820ac8d --- /dev/null +++ b/examples/random.scm @@ -0,0 +1,29 @@ +;;; random.scm -- Job specification that creates random build jobs +;;; Copyright © 2018 Ludovic Courtès +;;; +;;; This file is part of Cuirass. +;;; +;;; Cuirass 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. +;;; +;;; Cuirass 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 Cuirass. If not, see . + +(let ((top-srcdir (canonicalize-path + (string-append (dirname (current-filename)) "/..")))) + (list + `((#:name . "random") + (#:url . ,(string-append "file://" top-srcdir)) + (#:branch . "master") + (#:no-compile? . #t) + (#:load-path . ".") + (#:proc . make-random-jobs) + (#:file . "examples/random-jobs.scm") + (#:arguments . ())))) -- cgit v1.2.3