land: Some cosmetic fixes.
authorJelmer Vernooij <jelmer@samba.org>
Sun, 3 Oct 2010 00:16:11 +0000 (02:16 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Sun, 3 Oct 2010 03:25:18 +0000 (05:25 +0200)
script/land-remote.py
script/land.py

index 4c65a917a972d167b7dcede2d3c3d55ccd88067f..8f87b87f684f8ad0b38e5068668772bfdb86361a 100755 (executable)
@@ -4,9 +4,12 @@
 # Published under the GPL, v3 or later
 
 import optparse
+import os
 import subprocess
 import sys
 
+samba_master = os.getenv('SAMBA_MASTER', 'git://git.samba.org/samba.git')
+
 parser = optparse.OptionParser("autoland-remote [options] [trees...]")
 parser.add_option("--remote-repo", help="Location of remote repository (default: temporary repository)", type=str, default=None)
 parser.add_option("--host", help="Host to land on (SSH connection string)", type=str, default="sn-devel-104.sn.samba.org")
@@ -14,6 +17,10 @@ parser.add_option("--foreground", help="Don't daemonize", action="store_true", d
 parser.add_option("--email", help="Email address to send build/test output to", type=str, default=None, metavar="EMAIL")
 parser.add_option("--always-email", help="always send email, even on success", action="store_true")
 parser.add_option("--rebase-master", help="rebase on master before testing", default=False, action='store_true')
+parser.add_option("--push-master", help="push to samba.org master on success",
+                  default=False, action='store_true')
+parser.add_option("--pushto", help="push to a git url on success",
+                  default=None, type='str')
 parser.add_option("--rebase", help="rebase on the given tree before testing", default=None, type='str')
 parser.add_option("--passcmd", help="command to run on success", default=None)
 parser.add_option("--tail", help="show output while running", default=False, action="store_true")
@@ -31,6 +38,10 @@ if not opts.foreground and not opts.email:
     print "Not running in foreground and --email not specified."
     sys.exit(1)
 
+if not opts.foreground and opts.push_master:
+    print "Unable to push to master when not running in foreground."
+    sys.exit(1)
+
 if not opts.remote_repo:
     print "%s$ mktemp -d" % opts.host
     f = subprocess.Popen(["ssh", opts.host, "mktemp", "-d"], stdout=subprocess.PIPE)
@@ -40,7 +51,7 @@ if not opts.remote_repo:
     remote_repo = stdout.rstrip()
     print "Remote tempdir: %s" % remote_repo
     # Bootstrap, git.samba.org is close to sn-devel
-    remote_args = ["git", "clone", "git://git.samba.org/samba.git", remote_repo]
+    remote_args = ["git", "clone", samba_master, remote_repo]
     #remote_args = ["git", "init", remote_repo]
     print "%s$ %s" % (opts.host, " ".join(remote_args))
     subprocess.check_call(["ssh", opts.host] + remote_args)
@@ -77,6 +88,10 @@ if opts.rebase:
     remote_args.append("--rebase=%s" % opts.rebase)
 if opts.passcmd:
     remote_args.append("--passcmd=%s" % opts.passcmd)
+if opts.pushto:
+    remote_args.append("--pushto=%s" % opts.pushto)
+if opts.push_master:
+    remote_args.append("--push-master")
 
 remote_args += extra_args
 print "%s$ %s" % (opts.host, " ".join(remote_args))
index d645cb55975f77ab97e56b9031e3430e0823181f..95da14ee2d92d3ec2bfdebf00aa2ee1e96d345a2 100755 (executable)
@@ -448,13 +448,16 @@ def daemonize(logfile):
 
 def rebase_tree(url):
     print("Rebasing on %s" % url)
-    run_cmd(["git", "remote", "add", "-t", "master", "master", url], show=True, dir=test_master)
+    run_cmd(["git", "remote", "add", "-t", "master", "master", url], show=True,
+            dir=test_master)
     run_cmd(["git", "fetch", "master"], show=True, dir=test_master)
     if options.fix_whitespace:
-        run_cmd(["git", "rebase", "--whitespace=fix", "master/master"], show=True, dir=test_master)
+        run_cmd(["git", "rebase", "--whitespace=fix", "master/master"],
+                show=True, dir=test_master)
     else:
         run_cmd(["git", "rebase", "master/master"], show=True, dir=test_master)
-    diff = run_cmd(["git", "--no-pager", "diff", "HEAD", "master/master"], dir=test_master, output=True)
+    diff = run_cmd(["git", "--no-pager", "diff", "HEAD", "master/master"],
+        dir=test_master, output=True)
     if diff == '':
         print("No differences between HEAD and master/master - exiting")
         sys.exit(0)
@@ -462,46 +465,51 @@ def rebase_tree(url):
 def push_to(url):
     print("Pushing to %s" % url)
     if options.mark:
-        run_cmd("EDITOR=script/commit_mark.sh git commit --amend -c HEAD", dir=test_master, shell=True)
-        # the notes method doesn't work yet, as metze hasn't allowed refs/notes/* in master
-        # run_cmd("EDITOR=script/commit_mark.sh git notes edit HEAD", dir=test_master)
-    run_cmd(["git", "remote", "add", "-t", "master", "pushto", url], show=True, dir=test_master)
-    run_cmd(["git", "push", "pushto", "+HEAD:master"], show=True, dir=test_master)
+        run_cmd("EDITOR=script/commit_mark.sh git commit --amend -c HEAD",
+            dir=test_master, shell=True)
+        # the notes method doesn't work yet, as metze hasn't allowed
+        # refs/notes/* in master
+        # run_cmd("EDITOR=script/commit_mark.sh git notes edit HEAD",
+        #     dir=test_master)
+    run_cmd(["git", "remote", "add", "-t", "master", "pushto", url], show=True,
+        dir=test_master)
+    run_cmd(["git", "push", "pushto", "+HEAD:master"], show=True,
+        dir=test_master)
 
 def_testbase = os.getenv("AUTOBUILD_TESTBASE", "/memdisk/%s" % os.getenv('USER'))
 
 parser = OptionParser()
-parser.add_option("", "--repository", help="repository to run tests for", default=None, type=str)
-parser.add_option("", "--revision", help="revision to compile if not HEAD", default=None, type=str)
-parser.add_option("", "--tail", help="show output while running", default=False, action="store_true")
-parser.add_option("", "--keeplogs", help="keep logs", default=False, action="store_true")
-parser.add_option("", "--nocleanup", help="don't remove test tree", default=False, action="store_true")
-parser.add_option("", "--testbase", help="base directory to run tests in (default %s)" % def_testbase,
+parser.add_option("--repository", help="repository to run tests for", default=None, type=str)
+parser.add_option("--revision", help="revision to compile if not HEAD", default=None, type=str)
+parser.add_option("--tail", help="show output while running", default=False, action="store_true")
+parser.add_option("--keeplogs", help="keep logs", default=False, action="store_true")
+parser.add_option("--nocleanup", help="don't remove test tree", default=False, action="store_true")
+parser.add_option("--testbase", help="base directory to run tests in (default %s)" % def_testbase,
                   default=def_testbase)
-parser.add_option("", "--passcmd", help="command to run on success", default=None)
-parser.add_option("", "--verbose", help="show all commands as they are run",
+parser.add_option("--passcmd", help="command to run on success", default=None)
+parser.add_option("--verbose", help="show all commands as they are run",
                   default=False, action="store_true")
-parser.add_option("", "--rebase", help="rebase on the given tree before testing",
+parser.add_option("--rebase", help="rebase on the given tree before testing",
                   default=None, type='str')
-parser.add_option("", "--rebase-master", help="rebase on %s before testing" % samba_master,
+parser.add_option("--rebase-master", help="rebase on %s before testing" % samba_master,
                   default=False, action='store_true')
-parser.add_option("", "--pushto", help="push to a git url on success",
+parser.add_option("--pushto", help="push to a git url on success",
                   default=None, type='str')
-parser.add_option("", "--push-master", help="push to %s on success" % samba_master_ssh,
+parser.add_option("--push-master", help="push to %s on success" % samba_master_ssh,
                   default=False, action='store_true')
-parser.add_option("", "--mark", help="add a Tested-By signoff before pushing",
+parser.add_option("--mark", help="add a Tested-By signoff before pushing",
                   default=False, action="store_true")
-parser.add_option("", "--fix-whitespace", help="fix whitespace on rebase",
+parser.add_option("--fix-whitespace", help="fix whitespace on rebase",
                   default=False, action="store_true")
-parser.add_option("", "--retry", help="automatically retry if master changes",
+parser.add_option("--retry", help="automatically retry if master changes",
                   default=False, action="store_true")
-parser.add_option("", "--email", help="send email to the given address on failure",
+parser.add_option("--email", help="send email to the given address on failure",
                   type='str', default=None)
-parser.add_option("", "--always-email", help="always send email, even on success",
+parser.add_option("--always-email", help="always send email, even on success",
                   action="store_true")
-parser.add_option("", "--daemon", help="daemonize after initial setup",
+parser.add_option("--daemon", help="daemonize after initial setup",
                   action="store_true")
-parser.add_option("", "--fail-slowly", help="continue running tests even after one has already failed",
+parser.add_option("--fail-slowly", help="continue running tests even after one has already failed",
                   action="store_true")
 
 
@@ -537,7 +545,8 @@ The top commit for the tree that was built was:
        get_top_commit_msg(test_master))
 
     msg = MIMEMultipart()
-    msg['Subject'] = 'autobuild failure for task %s during %s' % (failed_task, failed_stage)
+    msg['Subject'] = 'autobuild failure for task %s during %s' % (
+        failed_task, failed_stage)
     msg['From'] = 'autobuild@samba.org'
     msg['To'] = options.email
 
@@ -682,7 +691,8 @@ else:
     blist.tarlogs("logs.tar.gz")
 
     if options.email is not None:
-        email_failure(blist, status, failed_task, failed_stage, failed_tag, errstr)
+        email_failure(blist, status, failed_task, failed_stage, failed_tag,
+            errstr)
 
     cleanup()
     print(errstr)