1 (* Handle Fedora builds of libguestfs. *)
12 (* Enable debugging. *)
14 Unix.putenv "LIBGUESTFS_DEBUG" "1";
15 Unix.putenv "LIBGUESTFS_TRACE" "1"
17 (* Log program output. *)
18 let from = "rjones@redhat.com"
19 let to_ = "rjones@redhat.com"
21 let package = "libguestfs"
23 (* How branches in libguestfs upstream map to branches in Fedora. *)
25 "1.20-stable", "f18"; (* F18 follows 1.20. *)
26 "1.22-stable", "f19"; (* F19 follows 1.22. *)
27 (* "1.24-stable", "f20"; *) (* F20 is being built by hand ATM. *)
28 "1.25-development", "master"; (* Rawhide follows development. *)
31 (* Goal: Latest website version has been built in every branch. *)
34 fun (wbranch, fbranch) ->
35 match website_latest_version wbranch with
38 require (fedora_built version fbranch)
41 (* Goal: Fedora has a successful build of 'version' on 'branch'. *)
42 and fedora_built version branch =
43 let specfile = fedora_specfile package branch in
45 target (file_contains_string specfile version.version &&
46 koji_build_state (fedora_verrel package branch) == `Complete);
48 require (sources_uploaded version branch);
49 require (specfile_pushed version branch);
51 koji_build ~wait:true package branch
53 and sources_uploaded version branch =
54 let repodir = fedora_repo package branch in
55 let sources = repodir // "sources" in
56 let key = sprintf "libguestfs_fedora_sources_uploaded_%s" version.version in
58 target (file_contains_string sources version.version &&
60 onrun (fun () -> memory_set key "1");
62 require (repodir_up_to_date repodir);
66 fedpkg new-sources %s/%s
67 " repodir libguestfs_website_repo version.urlpath
69 and specfile_updated version branch =
70 let repodir = fedora_repo package branch in
71 let specfile = fedora_specfile package branch in
73 target (file_contains_string specfile version.version);
75 require (repodir_up_to_date repodir);
77 (* Hairy specfile editing. *)
80 email=\"Richard W.M. Jones <rjones@redhat.com>\"
81 date=`date +\"%%a %%b %%d %%Y\"`
82 cp libguestfs.spec libguestfs.spec.old
83 sed < libguestfs.spec.old \\
84 -e \"s/^Version:.*/Version: %s/\" \\
85 -e \"s/^Release:.*/Release: 1%%{?dist}/\" \\
86 -e \"/^%%changelog/a \\
87 * $date $email - 1:%s-1\\\\n\\
88 - New upstream version %s.\\\\n\\
90 rm libguestfs.spec.old
91 " repodir version.version version.version version.version
93 and specfile_committed version branch =
94 let repodir = fedora_repo package branch in
95 let key = sprintf "libguestfs_fedora_specfile_committed_%s" version.version in
97 target (memory_exists key);
98 onrun (fun () -> memory_set key "1");
100 require (specfile_updated version branch);
107 and specfile_pushed version branch =
108 let repodir = fedora_repo package branch in
109 let key = sprintf "libguestfs_fedora_specfile_pushed_%s" version.version in
111 target (memory_exists key);
112 onrun (fun () -> memory_set key "1");
114 require (repodir_up_to_date repodir);
115 require (specfile_committed version branch);
122 and repodir_up_to_date repodir =
127 if not (git_has_local_changes repodir) then