Add rules for creating python sdist for stable branches.
authorRichard W.M. Jones <rjones@redhat.com>
Tue, 12 Jul 2016 10:00:59 +0000 (11:00 +0100)
committerRichard W.M. Jones <rjones@redhat.com>
Tue, 12 Jul 2016 10:00:59 +0000 (11:00 +0100)
libguestfs.ml
libguestfs_upstream.ml

index 508cbeb..48da3ea 100644 (file)
@@ -19,8 +19,11 @@ type info = {
   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 }
@@ -49,14 +52,22 @@ let vernames version =
         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. *)
index 0d41d33..5b86e04 100644 (file)
@@ -30,16 +30,28 @@ let package = "libguestfs"
 
 (* 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. *)
@@ -209,6 +221,62 @@ and commit_tested branch commit =
 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" (