dbus/python Makefile.am, 1.7, 1.8 lvalue_cast_post_process.py, NONE,
1.1
John Palmieri
johnp at freedesktop.org
Mon Mar 21 13:13:58 PST 2005
Update of /cvs/dbus/dbus/python
In directory gabe:/tmp/cvs-serv3896/python
Modified Files:
Makefile.am
Added Files:
lvalue_cast_post_process.py
Log Message:
* python/lvalue_cast_post_process.py - added post processor to fix Pyrex
code so that it compiles with gcc4.0
* python/Makefile.am: Added lvalue_cast_post_process.py to EXTRA_DIST
run dbus_bindings.c through lvalue_cast_post_process.py and copy the
results back to dbus_binding.c
Index: Makefile.am
===================================================================
RCS file: /cvs/dbus/dbus/python/Makefile.am,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- Makefile.am 23 Jun 2004 14:59:44 -0000 1.7
+++ Makefile.am 21 Mar 2005 21:13:56 -0000 1.8
@@ -16,7 +16,8 @@
EXTRA_DIST = \
dbus_h_wrapper.h \
dbus_bindings.pyx.in \
- extract.py
+ extract.py \
+ lvalue_cast_post_process.py
CLEANFILES = \
dbus_bindings.pyx \
@@ -26,5 +27,7 @@
dbus_bindings.pyx: dbus_bindings.pyx.in extract.py
-$(PYTHON) extract.py dbus_bindings.pyx.in -I$(top_builddir) > dbus_bindings.pyx
-dbus_bindings.c: dbus_bindings.pyx
+dbus_bindings.c: dbus_bindings.pyx lvalue_cast_post_process.py
-pyrexc dbus_bindings.pyx
+ -$(PYTHON) lvalue_cast_post_process.py dbus_bindings.c
+ -mv dbus_bindings.c.gcc4fix dbus_bindings.c
--- NEW FILE: lvalue_cast_post_process.py ---
#!/bin/env python
import re
import sys
exp_pattern = re.compile('(.*)=(.*);')
lval_pyobject_pattern = re.compile('\s*\(\((PyObject[ ]?\*)\)([A-Za-z0-9_ ]+)\)')
lval_structcast_pattern = re.compile('\s*\((struct [A-Za-z0-9_]+ \*)\)([A-Za-z0-9_]+)\-\>([A-Za-z0-9_]+)')
def parse_expression(exp):
exp_match = exp_pattern.match(exp)
if exp_match:
lvalue = exp_match.group(1)
rvalue = exp_match.group(2)
lval_match = lval_pyobject_pattern.match(lvalue)
if lval_match:
cast = lval_match.group(1)
lvar = lval_match.group(2)
return "%s = (%s)(%s);" % (lvar, cast, rvalue)
else:
lval_match = lval_structcast_pattern.match(lvalue)
if lval_match:
cast = lval_match.group(1)
casted_var = lval_match.group(2)
member_var = lval_match.group(3)
result = "%s->%s = ((%s)%s);" % (
casted_var,
member_var,
cast,
rvalue)
return result
return None
def main():
if len(sys.argv) != 2:
print "USAGE: " + sys.argv[0] + " <file name>"
return(-1)
file = sys.argv[1]
f = open(file)
gcc4fix_filename = file + ".gcc4fix"
outputf = open(gcc4fix_filename, 'w')
lines = f.readlines()
f.close()
for line in lines:
c = line.count(";")
if c == 0:
outputf.write(line)
continue
exprs = line.split(';')
line = ""
last = exprs.pop()
for expr in exprs:
expr = expr + ";"
result = parse_expression(expr)
if result:
line = line + result
else:
line = line + expr
if (last.strip()!=''):
line = line + last
else:
line = line + "\n"
outputf.write(line)
outputf.close()
if __name__ == "__main__":
sys.exit(main())
More information about the dbus-commit
mailing list