gobject-introspection r964 - in trunk: . giscanner tools
- From: johan svn gnome org
- To: svn-commits-list gnome org
- Subject: gobject-introspection r964 - in trunk: . giscanner tools
- Date: Tue, 25 Nov 2008 13:01:59 +0000 (UTC)
Author: johan
Date: Tue Nov 25 13:01:58 2008
New Revision: 964
URL: http://svn.gnome.org/viewvc/gobject-introspection?rev=964&view=rev
Log:
2008-11-25 Johan Dahlin <jdahlin async com br>
* giscanner/glibtransformer.py:
* tools/g-ir-scanner:
Execute the dumper program through libtool if it's installed,
so we avoid loading the installed version.
Modified:
trunk/ChangeLog
trunk/giscanner/glibtransformer.py
trunk/tools/g-ir-scanner
Modified: trunk/giscanner/glibtransformer.py
==============================================================================
--- trunk/giscanner/glibtransformer.py (original)
+++ trunk/giscanner/glibtransformer.py Tue Nov 25 13:01:58 2008
@@ -82,8 +82,10 @@
class GLibTransformer(object):
- def __init__(self, transformer, noclosure=False):
+ def __init__(self, transformer, noclosure=False, nolibtool=False):
self._transformer = transformer
+ self._noclosure = noclosure
+ self._nolibtool = nolibtool
self._transformer.set_container_types(['GList*', 'GSList*'],
['GHashTable*'])
self._namespace_name = None
@@ -95,7 +97,6 @@
self._failed_types = {}
self._boxed_types = {}
self._private_internal_types = {}
- self._noclosure = noclosure
self._validating = False
# Public API
@@ -213,6 +214,19 @@
except KeyError, e:
return Unresolved(gtype_name)
+ def _use_libtool_infection(self):
+ libtool_infection = not self._nolibtool
+ if not libtool_infection:
+ return False
+
+ try:
+ subprocess.check_call(['libtool', '--version'])
+ except subprocess.CalledProcessError, e:
+ # If libtool's not installed, assume we don't need it
+ return False
+
+ return True
+
def _execute_binary(self):
in_path = os.path.join(self._binary.tmpdir, 'types.txt')
f = open(in_path, 'w')
@@ -222,9 +236,12 @@
f.close()
out_path = os.path.join(self._binary.tmpdir, 'dump.xml')
- introspect_arg = '--introspect-dump=%s,%s' % (in_path, out_path)
- args = self._binary.args
- args.append(introspect_arg)
+ args = []
+ if self._use_libtool_infection():
+ args.extend(['libtool', '--mode=execute'])
+ args.extend(self._binary.args)
+ args.append('--introspect-dump=%s,%s' % (in_path, out_path))
+
# Invoke the binary, having written our get_type functions to types.txt
subprocess.check_call(args, stdout=sys.stdout, stderr=sys.stderr)
self._read_introspect_dump(out_path)
Modified: trunk/tools/g-ir-scanner
==============================================================================
--- trunk/tools/g-ir-scanner (original)
+++ trunk/tools/g-ir-scanner Tue Nov 25 13:01:58 2008
@@ -304,7 +304,9 @@
# Transform the C AST nodes into higher level
# GLib/GObject nodes
- glibtransformer = GLibTransformer(transformer, noclosure=options.noclosure)
+ glibtransformer = GLibTransformer(transformer,
+ noclosure=options.noclosure,
+ nolibtool=options.nolibtool)
glibtransformer.set_introspection_binary(binary)
namespace = glibtransformer.parse()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]