(* 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. *)
sh "
cd %s
./.rsync
- " libguestfs_website_repo
+ " websites_repo
(* Goal: Tarball added to repository and checked in. *)
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. *)
./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.
./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))
./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))
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" (