[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