X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=libguestfs_upstream.ml;h=685c1b59de59f31dc996716ff487b49eba4f308c;hb=5324bda8dbb31613640901bfba9b0dd339bc9616;hp=69928dacdaac5b5eb8efe1ada4630edf97186a6d;hpb=bfbf2dfa112129371886f62517fcf5f807c053fe;p=goaljobs-goals.git diff --git a/libguestfs_upstream.ml b/libguestfs_upstream.ml index 69928da..685c1b5 100644 --- a/libguestfs_upstream.ml +++ b/libguestfs_upstream.ml @@ -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_cvs_checked_in 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,30 +64,39 @@ and website_rsync_done version = sh " cd %s ./.rsync - " libguestfs_website_cvs + " websites_repo -(* Goal: Tarball added to CVS and CVS checked in. *) -and website_cvs_checked_in version = - let key = sprintf "libguestfs_website_cvs_checked_in_%s" version.version in +(* Goal: Tarball added to repository and checked in. *) +and website_checked_in version = + let key = sprintf "libguestfs_website_checked_in_%s" version.version in target (memory_exists key); onrun (fun () -> memory_set key "1"); 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 - cvs add -kb %s - cvs ci -m \"Version %s\" - " libguestfs_website_cvs + 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_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. *) and website_built version = - let index_file = sprintf "%s/index.html" libguestfs_website_cvs in + let index_file = sprintf "%s/index.html" libguestfs_website_repo in target (file_contains_string index_file version.version); require (tarball_created version); @@ -90,16 +113,24 @@ and website_built version = chmod +x localconfigure echo %s > localenv - # Copy in the builder/website templates. - cp $HOME/d/libguestfs/builder/website/*.xz builder/website/ - ./localconfigure - make - make website + make V=1 + make maintainer-upload-website WEBSITESDIR=%s " buildtmp version.tarball version.package_version (quote (libguestfs_localconfigure `Tarball)) - (quote libguestfs_localenv) + (quote (libguestfs_localenv (supermin version))) + (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,20 +151,34 @@ and tarball_tested version = echo %s > localenv ./localconfigure - make - make check-release + make V=1 + 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)) - (quote libguestfs_localenv) + (quote (libguestfs_localenv (supermin version))) (* Goal: the tarball has been created from git. *) and tarball_created version = let filename = sprintf "%s/tarballs/%s" buildtmp version.tarball in target (file_exists filename); + require (repo_up_to_date version.branch); + let repodir = sprintf "%s/repos/%s-%s" buildtmp package version.branch in - require (directory_exists repodir); + + (* Branches <= 1.32 are tagged with "1.32.11", + * branches >= 1.33 are tagged with "v1.33.11". + *) + let version_tag = + if version.minor >= 33 then "v" ^ version.version + else version.version in sh " cp -a %s libguestfs @@ -145,13 +190,25 @@ and tarball_created version = echo %s > localenv ./localconfigure - make + + # Ensure the po-docs are updated. Grrr this is ugly ... + make ||: + rm po-docs/podfiles + make -C po-docs update-po + + make V=1 make dist + + # Ensure redhat hardening flags didn't leak into the tarball. + # https://bugzilla.redhat.com/show_bug.cgi?id=1214506 + if zcat %s | grep -q redhat-hardened; then exit 1; fi + mv %s %s/tarballs/%s " repodir - version.version + version_tag (quote (libguestfs_localconfigure `Git)) - (quote libguestfs_localenv) + (quote (libguestfs_localenv (supermin version))) + version.tarball version.tarball buildtmp version.tarball (* Goal: test a commit. *) @@ -166,8 +223,9 @@ and commit_tested branch commit = target (memory_exists key); onrun (fun () -> memory_set key "1"); + require (repo_up_to_date branch); + let repodir = sprintf "%s/repos/%s-%s" buildtmp package branch in - require (directory_exists repodir); sh " cp -a %s libguestfs @@ -179,18 +237,83 @@ and commit_tested branch commit = echo %s > localenv ./localconfigure - make - make check-release + make V=1 + 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)) - (quote libguestfs_localenv) + (quote (libguestfs_localenv None)) + +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" ( fun () -> - git_force "master"; + require (repo_up_to_date "master"); let commit = git_latest_commit "master" in require (commit_tested "master" commit); ); @@ -198,7 +321,7 @@ let () = (* Periodic job to build new tarballs. *) every libguestfs_query_mins minutes ~name:"new libguestfs version" ( fun () -> - git_force "master"; + require (repo_up_to_date "master"); let version = git_latest_version "master" in require (website_updated version) )