Skip some libguestfs slow tests.
[goaljobs-goals.git] / libguestfs_upstream.ml
index 0d41d33..685c1b5 100644 (file)
@@ -30,16 +30,30 @@ 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);
+  if version.is_stable then
+    require (tarball_signed 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. *)
@@ -50,7 +64,7 @@ and website_rsync_done version =
   sh "
     cd %s
     ./.rsync
-  " libguestfs_website_repo
+  " websites_repo
 
 (* Goal: Tarball added to repository and checked in. *)
 and website_checked_in version =
@@ -60,16 +74,24 @@ and website_checked_in version =
 
   require (tarball_created version);
   require (tarball_tested version);
+  if version.is_stable then
+    require (tarball_signed version);
 
   sh "
     cd %s
     cp %s/tarballs/%s %s
+    if %b; then cp %s/tarballs/%s.sig %s.sig; fi
     git add %s
+    cd %s
     git add *.txt *.html
+    cd %s
     git commit -m \"Version %s\"
-  " libguestfs_website_repo
+  " libguestfs_download_repo
     buildtmp version.tarball version.urlpath
+    version.is_stable buildtmp version.tarball version.urlpath
     version.urlpath
+    libguestfs_website_repo
+    websites_repo
     version.version
 
 (* Goal: website (local copy) has been built. *)
@@ -93,12 +115,22 @@ and website_built version =
 
     ./localconfigure
     make V=1
-    make maintainer-upload-website WEBSITEDIR=%s
+    make maintainer-upload-website WEBSITESDIR=%s
   " buildtmp version.tarball
     version.package_version
     (quote (libguestfs_localconfigure `Tarball))
     (quote (libguestfs_localenv (supermin version)))
-    (quote libguestfs_website_repo)
+    (quote websites_repo)
+
+(* Goal: for stable versions, the tarball must be signed. *)
+and tarball_signed version =
+  let tar_file = sprintf "%s/tarballs/%s" buildtmp version.tarball in
+  let sig_file = tar_file ^ ".sig" in
+  target (file_exists sig_file);
+
+  require (tarball_created version);
+
+  sh "sign-tarball %s" tar_file
 
 (* Goal: the tarball has passed the required set of tests before
  * a release is allowed.
@@ -120,7 +152,13 @@ and tarball_tested version =
 
     ./localconfigure
     make V=1
-    make check-release
+    if ! make check-release; then
+      for f in `find -name test-suite.log | xargs grep -l ^FAIL:`; do
+        echo \"*** $f ***\"
+        cat $f
+      done
+      exit 1
+    fi
   " buildtmp version.tarball
     version.package_version
     (quote (libguestfs_localconfigure `Tarball))
@@ -200,7 +238,13 @@ and commit_tested branch commit =
 
     ./localconfigure
     make V=1
-    make check-release
+    if ! make check-release; then
+      for f in `find -name test-suite.log | xargs grep -l ^FAIL:`; do
+        echo \"*** $f ***\"
+        cat $f
+      done
+      exit 1
+    fi
   " repodir
     commit
     (quote (libguestfs_localconfigure `Git))
@@ -209,6 +253,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_download_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" (