[maemo-commits] [maemo-commits] r8242 - in projects/haf/trunk/python-dbus: . dbus

From: osantana at stage.maemo.org osantana at stage.maemo.org
Date: Tue Nov 21 20:23:03 EET 2006
Author: osantana
Date: 2006-11-21 20:22:58 +0200 (Tue, 21 Nov 2006)
New Revision: 8242

Modified:
   projects/haf/trunk/python-dbus/dbus/extract.py
   projects/haf/trunk/python-dbus/setup.py
Log:
- fixed build scripts to compile in scratchbox


Modified: projects/haf/trunk/python-dbus/dbus/extract.py
===================================================================
--- projects/haf/trunk/python-dbus/dbus/extract.py	2006-11-21 17:03:05 UTC (rev 8241)
+++ projects/haf/trunk/python-dbus/dbus/extract.py	2006-11-21 18:22:58 UTC (rev 8242)
@@ -138,31 +138,31 @@
     return functions
 
 class Writer:
-    def __init__(self, filename, enums, typedefs, functions):
+    def __init__(self, filename, enums, typedefs, functions, output):
         if not (enums or typedefs or functions):
             return
-        print 'cdef extern from "%s":' % filename
+	self.output = output
+        self.output.write('cdef extern from "%s":\n' % filename)
 
         self.output_enums(enums)
         self.output_typedefs(typedefs)
         self.output_functions(functions)        
         
-        print '    pass'
-        print
+        self.output.write('    pass\n\n')
         
     def output_enums(self, enums):
         for enum in enums:
-            print '    ctypedef enum %s:' % enum[0]
+            self.output.write('    ctypedef enum %s:\n' % enum[0])
             if enum[1] == 0:
                 for item in enum[2]:
-                    print '        %s' % item
+                    self.output.write('        %s\n' % item)
             else:
                 i = 0
                 for item in enum[2]:
-                    print '        %s' % item                    
-#                    print '        %s = 1 << %d' % (item, i)
+                    self.output.write('        %s\n' % item)
                     i += 1
-            print
+            self.output.write('\n')
+
     def output_typedefs(self, typedefs):
         for typedef in typedefs:
             if typedef.find('va_list') != -1:
@@ -172,9 +172,9 @@
             if parts[0] == 'struct':
                 if parts[-2] == parts[-1]:
                     parts = parts[:-1]
-                print '    ctypedef %s' % ' '.join(parts)
+                self.output.write('    ctypedef %s\n' % ' '.join(parts))
             else:
-                print '    ctypedef %s' % typedef
+                self.output.write('    ctypedef %s\n' % typedef)
 
     def output_functions(self, functions):
         for func, ret, args in functions:
@@ -188,36 +188,28 @@
                 continue
             if str.strip() == 'void':
                 continue
-            print '    %-20s %s (%s)' % (ret, func, str)
+            self.output.write('    %-20s %s (%s)\n' % (ret, func, str))
 
-def do_buffer(name, buffer):
+def do_buffer(name, buffer, output):
     functions = find_functions(buffer)
     typedefs = find_typedefs(buffer)
     enums = find_enums(buffer)
 
-    Writer(name, enums, typedefs, functions)
+    Writer(name, enums, typedefs, functions, output)
     
-def do_header(filename, name=None):
-    if name == None:
-        name = filename
-        
+def do_header(name, output):
     buffer = ""
-    for line in open(filename).readlines():
+    for line in open(name).readlines():
         if line[0] == '#':
             continue
         buffer += line
 
-    print '# -- %s -- ' % filename
-    do_buffer(name, buffer)
+    output.write('# -- %s --\n' % filename)
+    do_buffer(name, buffer, output)
     
 def main(filename, flags, output=None):
-    old_stdout = None
-    if output is not None:
-        old_stdout = sys.stdout
-        sys.stdout = output
-
     if filename.endswith('.h'):
-        do_header(filename)
+        do_header(filename, output)
         return
 
     cppflags = ' '.join(flags)
@@ -228,18 +220,13 @@
 
         if match:
             filename = match.group(1)
-            print >>sys.stderr, "matched %s" % (filename)
             command = "echo '%s'|cpp %s" % (line, cppflags)
-            output = commands.getoutput(command)
-            print >>sys.stderr, "output %s" % (output)
-            do_buffer(filename, output)
+            buffer = commands.getoutput(command)
+            do_buffer(filename, buffer, output)
         else:
-            print line[:-1]
+            output.write("%s\n" % (line.rstrip()))
     fd.close()
 
-    if old_stdout is not None:
-         sys.stdout = old_stdout
-
 if __name__ == '__main__':
     main(sys.argv[1], sys.argv[2:])
 

Modified: projects/haf/trunk/python-dbus/setup.py
===================================================================
--- projects/haf/trunk/python-dbus/setup.py	2006-11-21 17:03:05 UTC (rev 8241)
+++ projects/haf/trunk/python-dbus/setup.py	2006-11-21 18:22:58 UTC (rev 8242)
@@ -1,5 +1,6 @@
 import os
 import sys
+from subprocess import *
 
 sys.path.append("dbus")
 
@@ -24,79 +25,80 @@
         remove("dbus/dbus_bindings.pxd")
         remove("dbus/dbus_bindings.c")
         remove("dbus/dbus_glib_bindings.c")
+        remove("test/dbus_python_check.pyo")
         remove("ChangeLog")
 
-includedirs_flag = ['-I.']
-dbus_includes = ['.']
-dbus_glib_includes = ['.']
 
-pipe = os.popen3("pkg-config --cflags dbus-1")
-output = pipe[1].read().strip()
-error = pipe[2].read().strip()
-for p in pipe:
-    p.close()
-if error:
-    print "ERROR: running pkg-config (%s)" % (error)
-    raise SystemExit
-includedirs_flag.extend(output.split())
-dbus_includes.extend([ x.replace("-I", "") for x in output.split() ])
+def run(cmd):
+    try:
+        p = Popen(' '.join(cmd), shell=True,
+                stdin=PIPE, stdout=PIPE, stderr=PIPE,
+                close_fds=True
+            )
+    except Exception, e:
+        print >>sys.stderr, "ERROR: running %s (%s)" % (' '.join(cmd), e)
+        raise SystemExit
 
-pipe = os.popen3("pkg-config --cflags dbus-glib-1")
-output = pipe[1].read().strip()
-error = pipe[2].read().strip()
-for p in pipe:
-    p.close()
-if error:
-    print "ERROR: running pkg-config (%s)" % (error)
-    raise SystemExit
-includedirs_flag.extend(output.split())
-dbus_glib_includes.extend([ x.replace("-I", "") for x in output.split() ])
+    return p.stdout.read().strip(), p.stderr.read().strip()
 
-#create ChangeLog only if this is a git repo
-if os.path.exists(".git"):
-    pipe = os.popen3("git-log --stat")
-    output = pipe[1].read().strip()
-    error = pipe[2].read().strip()
 
-    for p in pipe:
-        p.close()
+def check_package(names, parms):
+    cmd = [ "pkg-config" ]
+    if isinstance(parms, list):
+        cmd += parms
+    else:
+        cmd.append(parms)
 
+    if isinstance(names, list):
+        cmd += names
+    else:
+        cmd.append(names)
+
+    output, error = run(cmd)
+
     if error:
-        print "ERROR: running git-log (%s)" % (error)
+        print >>sys.stderr, "ERROR: checking %s:\n%s" % (names, error)
         raise SystemExit
 
-    file = open("ChangeLog", "w")
-    file.writelines(output)
-    file.close()
+    return output
 
+
+includedirs_flag = ['-I.', '-Idbus/']
+dbus_includes = ['.']
+dbus_glib_includes = ['.']
 dbus_libs = []
 dbus_glib_libs = []
 
-pipe = os.popen3("pkg-config --libs-only-L dbus-1")
-output = pipe[1].read().strip()
-error = pipe[2].read().strip()
-for p in pipe:
-    p.close()
-if error:
-    print "ERROR: running pkg-config (%s)" % (error)
-    raise SystemExit
-dbus_libs.extend([ x.replace("-L", "") for x in output.split() ])
+output = check_package("dbus-1", "--cflags").split()
+dbus_includes.extend([ x.replace("-I", "") for x in output ])
+includedirs_flag.extend(output)
 
-pipe = os.popen3("pkg-config --libs-only-L dbus-glib-1")
-output = pipe[1].read().strip()
-error = pipe[2].read().strip()
-for p in pipe:
-    p.close()
-if error:
-    print "ERROR: running pkg-config (%s)" % (error)
-    raise SystemExit
-dbus_glib_libs.extend([ x.replace("-L", "") for x in output.split() ])
+output = check_package("dbus-1", "--libs-only-L").split()
+dbus_libs.extend([ x.replace("-L", "") for x in output ])
 
+output = check_package("dbus-glib-1", "--cflags").split()
+dbus_glib_includes.extend([ x.replace("-I", "") for x in output ])
+includedirs_flag.extend(output)
+
+output = check_package("dbus-glib-1", "--libs-only-L").split()
+dbus_glib_libs.extend([ x.replace("-L", "") for x in output ])
+
 output = open("dbus/dbus_bindings.pxd", 'w')
-includedirs_flag.append('-Idbus/')
 extract.main("dbus/dbus_bindings.pxd.in", includedirs_flag, output)
 output.close()
 
+#create ChangeLog only if this is a git repo
+if os.path.exists(".git"):
+    output, error = run(["git-log", "--stat"])
+
+    if error:
+        print "ERROR: running git-log (%s)" % (error)
+        raise SystemExit
+
+    file = open("ChangeLog", "w")
+    file.writelines(output)
+    file.close()
+
 long_desc = '''D-BUS is a message bus system, a simple way for applications to
 talk to one another.
 


More information about the maemo-commits mailing list