[Extras-cauldron-commits] r133 - in trunk/buildme: buildlib tools

ed_ at garage.maemo.org ed_ at garage.maemo.org
Fri Jul 31 00:04:57 EEST 2009


Author: ed_
Date: 2009-07-31 00:04:46 +0300 (Fri, 31 Jul 2009)
New Revision: 133

Modified:
   trunk/buildme/buildlib/helpers.py
   trunk/buildme/tools/buildme
Log:
implemented running script after function

Modified: trunk/buildme/buildlib/helpers.py
===================================================================
--- trunk/buildme/buildlib/helpers.py	2009-06-15 19:32:39 UTC (rev 132)
+++ trunk/buildme/buildlib/helpers.py	2009-07-30 21:04:46 UTC (rev 133)
@@ -26,13 +26,17 @@
 
 __revision__ = "r"+"$Revision$".split(' ')[1]
 
+import os
 import smtplib
+import json
 
+from subprocess import Popen, PIPE
 from email.MIMEText import MIMEText
+
 from buildlib.exceptions import Error
 
 def sendemail(xfrom, xto, xsubj, text):
-    """ Sends email. Parameters are taken from msg. """
+    """Sends email. Parameters are taken from msg."""
     msg = MIMEText(text)
     msg['Subject'] = xsubj
     msg['From'] = xfrom
@@ -43,14 +47,14 @@
     soket.close()
 
 def writefile(fname, content):
-    """ Write content to the file """
+    """Write content to the file."""
 
     fptr = open(fname, "w")
     fptr.write(content)
     fptr.close()
 
 def readfile(fname):
-    """ return file content """
+    """Return file content."""
     try:
         fptr = open(fname)
     except IOError:
@@ -60,6 +64,35 @@
 
     return content
 
+def runscriptafter(sdir='/etc/buildme.d/'):
+    """Decorator. Run script after function."""
+    def decorator(func):
+        def wrapper(*args):
+            rc = func(*args)
+            script = os.path.join(sdir, func.__name__)
+            env = args[0]
+            if os.path.exists(script):
+                cmd = Popen([script, json.write(env)], stdout=PIPE,
+                                        stderr=PIPE, shell=False)
+                rcode = cmd.wait()
+                out = cmd.stdout.read()
+                err = cmd.stderr.read()
+                if rcode:
+                    if "logger" in env.params:
+                        env.params["logger"].summary('ERROR running %s: %s %s'\
+                            % (script, out, err))
+                        #print 'script:', script, 'rc:', rc, 'out:', out, 'err:', err
+            return rc
+
+        wrapper.__name__ = func.__name__
+        wrapper.__doc__ = func.__doc__
+        wrapper.__module__ = func.__module__
+        wrapper.__dict__.update(func.__dict__)
+
+        return wrapper
+
+    return decorator
+
 if __name__ == '__main__':
     raise NotImplemented
 

Modified: trunk/buildme/tools/buildme
===================================================================
--- trunk/buildme/tools/buildme	2009-06-15 19:32:39 UTC (rev 132)
+++ trunk/buildme/tools/buildme	2009-07-30 21:04:46 UTC (rev 133)
@@ -19,15 +19,15 @@
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 # 02110-1301 USA
 #
-# $Id$
+# $Id: buildme 128 2009-04-01 21:20:13Z ed_ $
 
 """
 buildme. Builds source packages for Maemo Extras-devel repo
 """
 
-__revision__ = "r"+"$Revision$".split(' ')[1]
+__revision__ = "r"+"$Revision: 128 $".split(' ')[1]
 
-import sys, os, logging, pwd, shutil
+import sys, os, logging, pwd, shutil, subprocess
 
 # add current directory to Python path in debug mode
 if os.path.basename(sys.argv[0]).endswith('debug'):
@@ -43,6 +43,7 @@
 from minideblib.DpkgVersion import DpkgVersion, BadInputError
 from minideblib.DpkgDebPackage import DpkgDebPackage
 
+from buildlib.helpers import runscriptafter
 from buildlib.fsm import FSM
 from buildlib.exceptions import Error
 from buildlib.sbdarch import SbdArch
@@ -285,6 +286,7 @@
 
     return iter_items(env, 'fname')
 
+ at runscriptafter()
 def setup_build(env):
     """ Setup build environment.
         Verify .dsc file. Setup logging 
@@ -305,9 +307,11 @@
 
     uploader = pwd.getpwuid(os.stat(fname).st_uid).pw_name
     info = "Processing package %s. Uploader: %s, builder: %s" % \
-            (os.path.splitext(os.path.basename(fname))[0].replace('_', ' '), uploader, destination.user)
+            (os.path.splitext(os.path.basename(fname))[0].replace('_', ' '),
+            uploader, destination.user)
 
-    handler = create_uploader_handler(logger, uploader, builder_email, Subject(env))
+    handler = create_uploader_handler(logger, uploader, builder_email, 
+                                        Subject(env))
     logger.info(info)
 
     try:
@@ -475,6 +479,7 @@
 
     return FSM.OK
 
+ at runscriptafter()
 def check_build(env):
     """ Check build. Clean srcs and results if needed """
 



More information about the Extras-cauldron-commits mailing list