summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2018-01-29 22:15:51 +0100
committerLudovic Courtès <ludo@gnu.org>2018-01-29 22:42:12 +0100
commiteb9521d1b4ce7fd03651fd51688acadcae2d1a33 (patch)
treefecaf4efaa0c25ac339fcc81ea427f1480727704 /examples
parente0588239d2d5d5f702696f651817170e952a1387 (diff)
downloadcuirass-eb9521d1b4ce7fd03651fd51688acadcae2d1a33.tar
cuirass-eb9521d1b4ce7fd03651fd51688acadcae2d1a33.tar.gz
examples: Add 'random-jobs'.
* examples/random-jobs.scm, examples/random.scm: New files. * Makefile.am (nobase_dist_pkgdata_DATA): Add them.
Diffstat (limited to 'examples')
-rw-r--r--examples/random-jobs.scm49
-rw-r--r--examples/random.scm29
2 files changed, 78 insertions, 0 deletions
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 <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+
+(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 <ludo@gnu.org>
+;;;
+;;; 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 <http://www.gnu.org/licenses/>.
+
+(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 . ()))))