[wwwsearch-commits] r44830 - wwwsearch/release_scripts

jjlee at codespeak.net jjlee at codespeak.net
Sat Jul 7 20:11:16 CEST 2007


Author: jjlee
Date: Sat Jul  7 20:11:15 2007
New Revision: 44830

Modified:
   wwwsearch/release_scripts/mrelease.py
   wwwsearch/release_scripts/release.py
Log:
* Use subprocess.call() instead of os.system()
* Exit if an external command fails
* Add --no-version-check and --no-date-check arguments for testing source release build process


Modified: wwwsearch/release_scripts/mrelease.py
==============================================================================
--- wwwsearch/release_scripts/mrelease.py	(original)
+++ wwwsearch/release_scripts/mrelease.py	Sat Jul  7 20:11:15 2007
@@ -67,7 +67,9 @@
     if tag:
         sdist.tag(src, clean=options.clean)
     if rel:
-        sdist.build(update=options.update, clean=options.clean)
+        sdist.build(update=options.update, clean=options.clean,
+                    check_versions=options.check_versions,
+                    check_dates=options.check_dates)
     if upload:
         sdist.upload_to_sourceforge()
 

Modified: wwwsearch/release_scripts/release.py
==============================================================================
--- wwwsearch/release_scripts/release.py	(original)
+++ wwwsearch/release_scripts/release.py	Sat Jul  7 20:11:15 2007
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 
-import sys, os, re, tempfile, time, stat, posixpath, shutil
+import sys, os, re, tempfile, time, stat, posixpath, shutil, subprocess
 
 import logging
 logger = logging.getLogger("wwwsearch.release")
@@ -193,13 +193,22 @@
         finally:
             chdir(cwd, self.pretend)
 
-    def build(self, update=True, clean=False):
+    def build(self, update=True, clean=False,
+              check_versions=True,
+              check_dates=True,
+              ):
         self.prepare(update, clean)
         if self.pretend:
             print "(would check versions here)"
         else:
-            bad_versions = self.check_versions()
-            bad_dates = self.check_dates()
+            if check_versions:
+                bad_versions = self.check_versions()
+            else:
+                bad_versions = []
+            if check_dates:
+                bad_dates = self.check_dates()
+            else:
+                bad_dates = []
             if bad_versions:
                 raise BuildError(
                     "version doesn't match in %s" % " ".join(bad_versions))
@@ -280,10 +289,17 @@
     def build_files(self):
         return self.build(self.files)
 
-def system(cmd, pretend=False):
+def system(cmd, pretend=False, stdout=None):
     print cmd
     if not pretend:
-        os.system(cmd)
+        args = cmd.split()
+        assert ">" not in args, "shell redirect in command: "+cmd
+        try:
+            r = subprocess.call(args, stdout=stdout)
+        except OSError, exc:
+            raise RuntimeError("%s while executing: %s" % (exc, args))
+        if r != 0:
+            raise RuntimeError("%d exit status from: %s" % (r, args))
 
 def rename(src, dest, pretend=False):
     print "renaming %s --> %s" % (src, dest)
@@ -337,7 +353,8 @@
     if defines:
         def_text = " %s " % (" ".join(["-D%s" % define for define in defines]))
     def cmd(fn):
-        return system("em.py %s%s > %s" % (filename, def_text, fn), pretend)
+        system("em.py %s%s" % (filename, def_text),
+               pretend, stdout=open(fn, "w"))
     out_fn = wrap_command(
         cmd,
         os.path.dirname(filename),
@@ -347,8 +364,11 @@
     return out_fn
 
 def lynx_dump(filename, pretend=False):
+    def cmd(fn):
+        return system("lynx -dump %s" % filename,
+                      pretend, stdout=open(fn, "w"))
     out_fn = wrap_command(
-        lambda fn: system("lynx -dump %s > %s" % (filename, fn), pretend),
+        cmd,
         os.path.dirname(filename),
         os.path.splitext(os.path.basename(filename))[0]+".txt",
         pretend=pretend,
@@ -384,6 +404,14 @@
                       action="store_false", dest="update", default=True,
                       help="Leave svn working copy unchanged "
                            " (do not update or checkout)")
+    parser.add_option("--no-version-check",
+                      action="store_false", dest="check_versions", default=True,
+                      help="Don't check the version strings that appear in "
+                           "various files for correctness.")
+    parser.add_option("--no-date-check",
+                      action="store_false", dest="check_dates", default=True,
+                      help="Don't check the date strings that appear in "
+                           "various files for correctness.")
 
     options, args = parser.parse_args()
     tag = False


More information about the wwwsearch-commits mailing list