branch : string; (* 'master' or 'stable-1.xx' *)
package_version : string; (* package-version *)
tarball : string; (* package-version.tar.gz *)
+ python_tarball : string; (* guestfs-version.tar.gz *)
urlpath : string; (* download/1.X-(stable|development)/tarball *)
+ python_urlpath : string; (* download/python/python_tarball *)
url : string; (* full download URL of tarball *)
+ python_url : string; (* python sdist *)
}
let compare_versions { major = major1; minor = minor1; release = release1 }
else
sprintf "download/%d.%d-development/%s" major minor tarball in
let url = "http://libguestfs.org/" ^ urlpath in
+ let python_tarball =
+ sprintf "guestfs-%d.%d.%d.tar.gz" major minor release in
+ let python_urlpath = sprintf "download/python/" ^ python_tarball in
+ let python_url = "http://libguestfs.org/" ^ python_urlpath in
+
{ version = version;
major = major; minor = minor; release = release;
is_stable = is_stable;
branch = branch;
package_version = package_version;
tarball = tarball;
+ python_tarball = python_tarball;
urlpath = urlpath;
- url = url }
+ python_urlpath = python_urlpath;
+ url = url;
+ python_url = python_url }
)
(* For libguestfs <= 1.24, we need an old supermin 4 binary. *)
(* Goal: the website has been updated to 'version'. *)
let rec goal website_updated version =
- target (url_exists version.url);
+ target (url_exists version.url &&
+ (if version.is_stable then
+ url_exists version.python_url
+ else true)
+ );
require (tarball_created version);
require (tarball_tested version);
+ (* Python sdists only generated for stable releases. *)
+ if version.is_stable then (
+ require (python_tarball_created version);
+ require (python_tarball_tested version)
+ );
+
(* We only update the website for the development releases. *)
if not version.is_stable then
require (website_built version);
require (website_checked_in version);
+ if version.is_stable then
+ require (python_website_checked_in version);
require (website_rsync_done version)
(* Goal: website has been rsync'd. *)
and repo_up_to_date branch =
git_force branch
+(* Goals for Python sdists. *)
+and python_website_checked_in version =
+ let key = sprintf "libguestfs_python_website_checked_in_%s" version.version in
+ target (memory_exists key);
+ onrun (fun () -> memory_set key "1");
+
+ require (python_tarball_created version);
+ require (python_tarball_tested version);
+
+ sh "
+ cd %s
+ cp %s/tarballs/%s %s
+ git add %s
+ git commit -m \"Python sdist version %s\"
+ " libguestfs_website_repo
+ buildtmp version.python_tarball version.python_urlpath
+ version.python_urlpath
+ version.version
+
+and python_tarball_tested version =
+ let key = sprintf "libguestfs_python_tarball_tested_%s" version.version in
+ target (memory_exists key);
+ onrun (fun () -> memory_set key "1");
+
+ require (python_tarball_created version);
+
+ sh "
+ virtualenv venv
+ source ./venv/bin/activate
+ pip install %s/tarballs/%s
+ " buildtmp version.python_tarball
+
+and python_tarball_created version =
+ let filename = sprintf "%s/tarballs/%s" buildtmp version.python_tarball in
+ target (file_exists filename);
+
+ require (tarball_created version);
+
+ sh "
+ tar zxf %s/tarballs/%s
+ cd %s
+
+ echo %s > localconfigure
+ chmod +x localconfigure
+ echo %s > localenv
+
+ ./localconfigure
+ make V=1
+ make -C python sdist
+ cp python/dist/%s %s
+ " buildtmp version.tarball
+ version.package_version
+ (quote (libguestfs_localconfigure `Tarball))
+ (quote (libguestfs_localenv (supermin version)))
+ version.python_tarball filename
+
let () =
(* Add a periodic job to check for new git commits and test them. *)
every libguestfs_query_mins minutes ~name:"new libguestfs commit" (