open Printf
open Config
+(* Enable debugging. *)
+let () =
+ Unix.putenv "LIBGUESTFS_DEBUG" "1";
+ Unix.putenv "LIBGUESTFS_TRACE" "1"
+
+(* Log program output. *)
+let from = "rjones@redhat.com"
+let to_ = "rjones@redhat.com"
+let logfile = log_program_output ()
+let () = eprintf "logging to %s\n%!" logfile
+
let package = "libguestfs"
(* Helper object which stores everything about a version. *)
(* Goal: website has been rsync'd. *)
and website_rsync_done version =
- let key = sprintf "libguestfs_website_rsync_done_%s" version.version in
- target (memory_exists key);
+ target (url_contains_string "http://libguestfs.org" version.version &&
+ url_exists version.url);
sh "
cd %s
- echo NOT RUNNING: . .rsync
- " libguestfs_website_cvs;
- memory_set key "1"
+ ./.rsync
+ " libguestfs_website_cvs
(* Goal: Tarball added to CVS and CVS checked in. *)
and website_cvs_checked_in version =
let key = sprintf "libguestfs_website_cvs_checked_in_%s" version.version in
target (memory_exists key);
+ onrun (fun () -> memory_set key "1");
require (tarball_created version);
require (tarball_tested version);
sh "
cd %s
cp %s/tarballs/%s %s
- echo NOT RUNNING: cvs add -kb %s
- echo NOT RUNNING: cvs ci -m \"Version %s\"
+ cvs add -kb %s
+ cvs ci -m \"Version %s\"
" libguestfs_website_cvs
buildtmp version.tarball version.urlpath
version.urlpath
sh "
tar zxf %s/tarballs/%s
cd %s
+
echo %s > localconfigure
chmod +x localconfigure
- echo %s > localenv .
+ echo %s > localenv
+
./localconfigure
make
make website
and tarball_tested version =
let key = sprintf "libguestfs_tarball_tested_%s" version.version in
target (memory_exists key);
+ onrun (fun () -> memory_set key "1");
require (tarball_created version);
sh "
tar zxf %s/tarballs/%s
cd %s
+
echo %s > localconfigure
chmod +x localconfigure
- echo %s > localenv .
+ echo %s > localenv
+
./localconfigure
make
make check-release
echo %s > localconfigure
chmod +x localconfigure
- echo %s > localenv .
+ echo %s > localenv
./localconfigure
make
(* Goal: test a commit. *)
and commit_tested branch commit =
+ onfail (
+ fun _ ->
+ let subject = sprintf "goal: %s: FAILED" goalname in
+ mailto ~from ~subject ~attach:[logfile] to_
+ );
+
let key = sprintf "libguestfs_commit_tested_%s" commit in
target (memory_exists key);
+ onrun (fun () -> memory_set key "1");
let repodir = sprintf "%s/repos/%s-%s" buildtmp package branch in
require (directory_exists repodir);
" repodir
commit
(quote (libguestfs_localconfigure `Git))
- (quote libguestfs_localenv);
-
- memory_set key "1"
+ (quote libguestfs_localenv)
(* Helper function to make a full 'info' object from a version
* number.
let () =
(* Add a periodic job to check for new git commits and test them. *)
- every 5 minutes ~name:"new libguestfs commit" (
+ every libguestfs_query_mins minutes ~name:"new libguestfs commit" (
fun () ->
git_force "https://github.com/libguestfs/libguestfs.git" "master";
);
(* Periodic job to build new tarballs. *)
- every 5 minutes ~name:"new libguestfs version" (
+ every libguestfs_query_mins minutes ~name:"new libguestfs version" (
fun () ->
git_force "https://github.com/libguestfs/libguestfs.git" "master";
let version = git_latest_version "master" in
require (website_updated version)
)
+
+(* Allow these jobs to run from the command line. *)
+let () =
+ publish "commit" (
+ function
+ | [commit] -> require (commit_tested "master" commit)
+ | [branch; commit] -> require (commit_tested branch commit)
+ | _ ->
+ failwith "use './libguestfs_upstream commit [<branch>] <commit>'"
+ );
+ publish "release" (
+ function
+ | [version] -> require (website_updated (vernames version))
+ | _ ->
+ failwith "use './libguestfs_upstream release <version>'"
+ )