gobject-introspection 2.2.0-x86-mingw32 → 2.2.1-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Rakefile +7 -7
- data/ext/gobject-introspection/rb-gi-argument.c +28 -3
- data/ext/gobject-introspection/rb-gi-constructor-info.c +6 -1
- data/ext/gobject-introspection/rb-gi-function-info.c +29 -4
- data/ext/gobject-introspection/rb-gi-loader.c +19 -3
- data/ext/gobject-introspection/rb-gi-struct-info.c +28 -16
- data/lib/2.0/gobject_introspection.so +0 -0
- data/lib/gobject-introspection/callable-info.rb +16 -7
- data/lib/gobject-introspection/loader.rb +47 -19
- data/test/test-object-info.rb +1 -1
- data/test/test-signal-info.rb +2 -2
- data/test/test-struct-info.rb +1 -1
- data/vendor/local/bin/g-ir-compiler.exe +0 -0
- data/vendor/local/bin/g-ir-generate.exe +0 -0
- data/vendor/local/bin/libgirepository-1.0-1.dll +0 -0
- data/vendor/local/include/gobject-introspection-1.0/giarginfo.h +30 -0
- data/vendor/local/include/gobject-introspection-1.0/gibaseinfo.h +31 -0
- data/vendor/local/include/gobject-introspection-1.0/gicallableinfo.h +36 -0
- data/vendor/local/include/gobject-introspection-1.0/giconstantinfo.h +12 -0
- data/vendor/local/include/gobject-introspection-1.0/gienuminfo.h +26 -0
- data/vendor/local/include/gobject-introspection-1.0/gifieldinfo.h +19 -0
- data/vendor/local/include/gobject-introspection-1.0/gifunctioninfo.h +23 -0
- data/vendor/local/include/gobject-introspection-1.0/giinterfaceinfo.h +38 -0
- data/vendor/local/include/gobject-introspection-1.0/giobjectinfo.h +72 -2
- data/vendor/local/include/gobject-introspection-1.0/gipropertyinfo.h +12 -0
- data/vendor/local/include/gobject-introspection-1.0/giregisteredtypeinfo.h +11 -0
- data/vendor/local/include/gobject-introspection-1.0/girepository.h +68 -8
- data/vendor/local/include/gobject-introspection-1.0/girffi.h +25 -1
- data/vendor/local/include/gobject-introspection-1.0/gisignalinfo.h +12 -0
- data/vendor/local/include/gobject-introspection-1.0/gistructinfo.h +24 -0
- data/vendor/local/include/gobject-introspection-1.0/gitypeinfo.h +31 -0
- data/vendor/local/include/gobject-introspection-1.0/gitypelib.h +25 -0
- data/vendor/local/include/gobject-introspection-1.0/gitypes.h +84 -13
- data/vendor/local/include/gobject-introspection-1.0/giunioninfo.h +27 -0
- data/vendor/local/include/gobject-introspection-1.0/giversionmacros.h +128 -0
- data/vendor/local/include/gobject-introspection-1.0/givfuncinfo.h +17 -0
- data/vendor/local/lib/girepository-1.0/GIRepository-2.0.typelib +0 -0
- data/vendor/local/lib/girepository-1.0/GLib-2.0.typelib +0 -0
- data/vendor/local/lib/girepository-1.0/GObject-2.0.typelib +0 -0
- data/vendor/local/lib/girepository-1.0/Gio-2.0.typelib +0 -0
- data/vendor/local/lib/girepository-1.0/libxml2-2.0.typelib +0 -0
- data/vendor/local/lib/girepository-1.0/win32-1.0.typelib +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/__init__.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/__init__.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/annotationmain.py +5 -4
- data/vendor/local/lib/gobject-introspection/giscanner/annotationmain.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/annotationmain.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/annotationparser.py +1865 -913
- data/vendor/local/lib/gobject-introspection/giscanner/annotationparser.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/annotationparser.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/ast.py +49 -16
- data/vendor/local/lib/gobject-introspection/giscanner/ast.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/ast.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/cachestore.py +10 -4
- data/vendor/local/lib/gobject-introspection/giscanner/cachestore.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/cachestore.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/ccompiler.py +202 -0
- data/vendor/local/lib/gobject-introspection/giscanner/ccompiler.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/ccompiler.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/codegen.py +32 -1
- data/vendor/local/lib/gobject-introspection/giscanner/codegen.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/codegen.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/collections/__init__.py +1 -0
- data/vendor/local/lib/gobject-introspection/giscanner/collections/__init__.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/collections/__init__.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/collections/counter.py +305 -0
- data/vendor/local/lib/gobject-introspection/giscanner/collections/counter.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/collections/counter.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/collections/ordereddict.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/collections/ordereddict.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/docmain.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/docmain.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/C/callback.tmpl +4 -0
- data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/C/field.tmpl +1 -0
- data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/C/function.tmpl +8 -9
- data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/C/interface.tmpl +2 -0
- data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Gjs/callback.tmpl +27 -0
- data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Gjs/class.tmpl +17 -5
- data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Gjs/enum.tmpl +8 -0
- data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Gjs/field.tmpl +9 -0
- data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Gjs/function.tmpl +12 -13
- data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Gjs/interface.tmpl +17 -0
- data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Gjs/property.tmpl +3 -4
- data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Gjs/signal.tmpl +10 -9
- data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Gjs/vfunc.tmpl +7 -7
- data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Python/callback.tmpl +27 -0
- data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Python/class.tmpl +5 -4
- data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Python/field.tmpl +1 -0
- data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Python/function.tmpl +8 -14
- data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Python/interface.tmpl +16 -0
- data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Python/property.tmpl +2 -3
- data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Python/signal.tmpl +6 -7
- data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/Python/vfunc.tmpl +7 -13
- data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/base.tmpl +10 -19
- data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/class.tmpl +24 -3
- data/vendor/local/lib/gobject-introspection/giscanner/doctemplates/namespace.tmpl +4 -7
- data/vendor/local/lib/gobject-introspection/giscanner/docwriter.py +375 -61
- data/vendor/local/lib/gobject-introspection/giscanner/docwriter.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/docwriter.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/dumper.py +43 -75
- data/vendor/local/lib/gobject-introspection/giscanner/dumper.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/dumper.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/gdumpparser.py +1 -20
- data/vendor/local/lib/gobject-introspection/giscanner/gdumpparser.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/gdumpparser.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/girparser.py +33 -15
- data/vendor/local/lib/gobject-introspection/giscanner/girparser.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/girparser.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/girwriter.py +51 -22
- data/vendor/local/lib/gobject-introspection/giscanner/girwriter.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/girwriter.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/introspectablepass.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/introspectablepass.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/libtoolimporter.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/libtoolimporter.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/maintransformer.py +285 -254
- data/vendor/local/lib/gobject-introspection/giscanner/maintransformer.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/maintransformer.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/message.py +41 -25
- data/vendor/local/lib/gobject-introspection/giscanner/message.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/message.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/scannermain.py +67 -15
- data/vendor/local/lib/gobject-introspection/giscanner/scannermain.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/scannermain.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/sectionparser.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/sectionparser.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/shlibs.py +10 -6
- data/vendor/local/lib/gobject-introspection/giscanner/shlibs.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/shlibs.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/sourcescanner.py +14 -8
- data/vendor/local/lib/gobject-introspection/giscanner/sourcescanner.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/sourcescanner.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/testcodegen.py +16 -2
- data/vendor/local/lib/gobject-introspection/giscanner/testcodegen.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/testcodegen.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/transformer.py +150 -169
- data/vendor/local/lib/gobject-introspection/giscanner/transformer.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/transformer.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/utils.py +64 -3
- data/vendor/local/lib/gobject-introspection/giscanner/utils.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/utils.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/xmlwriter.py +5 -44
- data/vendor/local/lib/gobject-introspection/giscanner/xmlwriter.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/xmlwriter.pyo +0 -0
- data/vendor/local/lib/libgirepository-1.0.a +0 -0
- data/vendor/local/lib/libgirepository-1.0.dll.a +0 -0
- data/vendor/local/lib/libgirepository-1.0.la +1 -1
- data/vendor/local/lib/pkgconfig/gobject-introspection-1.0.pc +4 -4
- data/vendor/local/lib/pkgconfig/gobject-introspection-no-export-1.0.pc +5 -5
- data/vendor/local/share/gir-1.0/GIRepository-2.0.gir +352 -143
- data/vendor/local/share/gir-1.0/GLib-2.0.gir +6402 -3872
- data/vendor/local/share/gir-1.0/GModule-2.0.gir +42 -24
- data/vendor/local/share/gir-1.0/GObject-2.0.gir +1543 -887
- data/vendor/local/share/gir-1.0/Gio-2.0.gir +10859 -3705
- data/vendor/local/share/gobject-introspection-1.0/tests/annotation.c +10 -14
- data/vendor/local/share/gobject-introspection-1.0/tests/annotation.h +112 -9
- data/vendor/local/share/gobject-introspection-1.0/tests/drawable.c +2 -0
- data/vendor/local/share/gobject-introspection-1.0/tests/drawable.h +11 -0
- data/vendor/local/share/gobject-introspection-1.0/tests/everything.c +106 -0
- data/vendor/local/share/gobject-introspection-1.0/tests/everything.h +107 -0
- data/vendor/local/share/gobject-introspection-1.0/tests/foo.c +3 -3
- data/vendor/local/share/gobject-introspection-1.0/tests/foo.h +145 -0
- data/vendor/local/share/gobject-introspection-1.0/tests/gimarshallingtests.c +166 -10
- data/vendor/local/share/gobject-introspection-1.0/tests/gimarshallingtests.h +790 -0
- data/vendor/local/share/gobject-introspection-1.0/tests/gitestmacros.h +10 -0
- data/vendor/local/share/gobject-introspection-1.0/tests/regress.c +79 -28
- data/vendor/local/share/gobject-introspection-1.0/tests/regress.h +462 -0
- data/vendor/local/share/gobject-introspection-1.0/tests/utility.c +2 -0
- data/vendor/local/share/gobject-introspection-1.0/tests/utility.h +7 -0
- data/vendor/local/share/gobject-introspection-1.0/tests/warnlib.c +14 -0
- data/vendor/local/share/gobject-introspection-1.0/tests/warnlib.h +10 -0
- data/vendor/local/share/man/man1/g-ir-compiler.1 +1 -10
- metadata +38 -23
- data/lib/1.9/gobject_introspection.so +0 -0
- data/lib/2.1/gobject_introspection.so +0 -0
@@ -27,6 +27,7 @@ import tempfile
|
|
27
27
|
|
28
28
|
from .gdumpparser import IntrospectionBinary
|
29
29
|
from . import utils
|
30
|
+
from .ccompiler import CCompiler
|
30
31
|
|
31
32
|
# bugzilla.gnome.org/558436
|
32
33
|
# Compile a binary program which is then linked to a library
|
@@ -82,7 +83,7 @@ class DumpCompiler(object):
|
|
82
83
|
self._get_type_functions = get_type_functions
|
83
84
|
self._error_quark_functions = error_quark_functions
|
84
85
|
|
85
|
-
self._compiler_cmd = os.environ.get('CC', '
|
86
|
+
self._compiler_cmd = os.environ.get('CC', 'cc')
|
86
87
|
self._linker_cmd = os.environ.get('CC', self._compiler_cmd)
|
87
88
|
self._pkgconfig_cmd = os.environ.get('PKG_CONFIG', 'pkg-config')
|
88
89
|
self._pkgconfig_msvc_flags = ''
|
@@ -103,6 +104,7 @@ class DumpCompiler(object):
|
|
103
104
|
# We have to use the current directory to work around Unix
|
104
105
|
# sysadmins who mount /tmp noexec
|
105
106
|
tmpdir = tempfile.mkdtemp('', 'tmp-introspect', dir=os.getcwd())
|
107
|
+
os.mkdir(os.path.join(tmpdir, '.libs'))
|
106
108
|
|
107
109
|
tpl_args = {}
|
108
110
|
if self._uninst_srcdir is not None:
|
@@ -159,7 +161,7 @@ class DumpCompiler(object):
|
|
159
161
|
o_path = self._generate_tempfile(tmpdir, '.o')
|
160
162
|
|
161
163
|
if os.name == 'nt':
|
162
|
-
ext = 'exe'
|
164
|
+
ext = '.exe'
|
163
165
|
else:
|
164
166
|
ext = ''
|
165
167
|
|
@@ -214,7 +216,10 @@ class DumpCompiler(object):
|
|
214
216
|
else:
|
215
217
|
args.append("-Wno-deprecated-declarations")
|
216
218
|
pkgconfig_flags = self._run_pkgconfig('--cflags')
|
217
|
-
args.extend(pkgconfig_flags)
|
219
|
+
args.extend([utils.cflag_real_include_path(f) for f in pkgconfig_flags])
|
220
|
+
cppflags = os.environ.get('CPPFLAGS', '')
|
221
|
+
for cppflag in cppflags.split():
|
222
|
+
args.append(cppflag)
|
218
223
|
cflags = os.environ.get('CFLAGS', '')
|
219
224
|
for cflag in cflags.split():
|
220
225
|
args.append(cflag)
|
@@ -259,10 +264,13 @@ class DumpCompiler(object):
|
|
259
264
|
args.extend(['-o', output])
|
260
265
|
if libtool:
|
261
266
|
if os.name == 'nt':
|
262
|
-
args.append('-export-all-symbols')
|
267
|
+
args.append('-Wl,--export-all-symbols')
|
263
268
|
else:
|
264
269
|
args.append('-export-dynamic')
|
265
270
|
|
271
|
+
cppflags = os.environ.get('CPPFLAGS', '')
|
272
|
+
for cppflag in cppflags.split():
|
273
|
+
args.append(cppflag)
|
266
274
|
cflags = os.environ.get('CFLAGS', '')
|
267
275
|
for cflag in cflags.split():
|
268
276
|
args.append(cflag)
|
@@ -280,88 +288,48 @@ class DumpCompiler(object):
|
|
280
288
|
"Could not find object file: %s" % (source, ))
|
281
289
|
args.extend(list(sources))
|
282
290
|
|
291
|
+
cc = CCompiler()
|
292
|
+
|
283
293
|
if not self._options.external_library:
|
284
|
-
|
294
|
+
cc.get_internal_link_flags(args,
|
295
|
+
libtool,
|
296
|
+
self._options.libraries,
|
297
|
+
self._options.library_paths,
|
298
|
+
self._pkgconfig_msvc_flags,
|
299
|
+
self._options.namespace_name,
|
300
|
+
self._options.namespace_version)
|
301
|
+
args.extend(self._run_pkgconfig('--libs'))
|
302
|
+
|
285
303
|
else:
|
286
|
-
self.
|
304
|
+
args.extend(self._run_pkgconfig('--libs'))
|
305
|
+
cc.get_external_link_flags(args,
|
306
|
+
self._options.libraries,
|
307
|
+
self._pkgconfig_msvc_flags)
|
287
308
|
|
288
309
|
if not self._options.quiet:
|
289
310
|
print "g-ir-scanner: link: %s" % (
|
290
311
|
subprocess.list2cmdline(args), )
|
291
312
|
sys.stdout.flush()
|
313
|
+
msys = os.environ.get('MSYSTEM', None)
|
314
|
+
if msys:
|
315
|
+
shell = os.environ.get('SHELL', 'sh.exe')
|
316
|
+
# Create a temporary script file that
|
317
|
+
# runs the command we want
|
318
|
+
tf, tf_name = tempfile.mkstemp()
|
319
|
+
f = os.fdopen(tf, 'wb')
|
320
|
+
shellcontents = ' '.join([x.replace('\\', '/') for x in args])
|
321
|
+
fcontents = '#!/bin/sh\nunset PWD\n{}\n'.format(shellcontents)
|
322
|
+
f.write(fcontents)
|
323
|
+
f.close()
|
324
|
+
shell = utils.which(shell)
|
325
|
+
args = [shell, tf_name.replace('\\', '/')]
|
292
326
|
try:
|
293
327
|
subprocess.check_call(args)
|
294
328
|
except subprocess.CalledProcessError as e:
|
295
329
|
raise LinkerError(e)
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
# is being built in the current directory.
|
300
|
-
|
301
|
-
# Search the current directory first
|
302
|
-
# (This flag is not supported nor needed for Visual C++)
|
303
|
-
if self._pkgconfig_msvc_flags == '':
|
304
|
-
args.append('-L.')
|
305
|
-
|
306
|
-
# https://bugzilla.gnome.org/show_bug.cgi?id=625195
|
307
|
-
if not libtool:
|
308
|
-
# We don't have -Wl,-rpath for Visual C++, and that's
|
309
|
-
# going to cause a problem. Instead, link to internal
|
310
|
-
# libraries by deducing the .lib file name using
|
311
|
-
# the namespace name and version
|
312
|
-
if self._pkgconfig_msvc_flags:
|
313
|
-
if self._options.namespace_version:
|
314
|
-
args.append(str.lower(self._options.namespace_name) +
|
315
|
-
'-' +
|
316
|
-
self._options.namespace_version + '.lib')
|
317
|
-
else:
|
318
|
-
args.append(str.lower(self._options.namespace_name) + '.lib')
|
319
|
-
else:
|
320
|
-
args.append('-Wl,-rpath=.')
|
321
|
-
|
322
|
-
# Ensure libraries are always linked as we are going to use ldd to work
|
323
|
-
# out their names later
|
324
|
-
if not libtool and self._pkgconfig_msvc_flags == '':
|
325
|
-
args.append('-Wl,--no-as-needed')
|
326
|
-
|
327
|
-
for library in self._options.libraries:
|
328
|
-
# Visual C++: We have the needed .lib files now, and we need to link
|
329
|
-
# to .lib files, not the .dll as the --library option specifies the
|
330
|
-
# .dll(s) the .gir file refers to
|
331
|
-
if self._pkgconfig_msvc_flags == '':
|
332
|
-
if library.endswith(".la"): # explicitly specified libtool library
|
333
|
-
args.append(library)
|
334
|
-
else:
|
335
|
-
args.append('-l' + library)
|
336
|
-
|
337
|
-
for library_path in self._options.library_paths:
|
338
|
-
# Not used/needed on Visual C++, and -Wl,-rpath options
|
339
|
-
# will cause grief
|
340
|
-
if self._pkgconfig_msvc_flags == '':
|
341
|
-
args.append('-L' + library_path)
|
342
|
-
if os.path.isabs(library_path):
|
343
|
-
if libtool:
|
344
|
-
args.append('-rpath')
|
345
|
-
args.append(library_path)
|
346
|
-
else:
|
347
|
-
args.append('-Wl,-rpath=' + library_path)
|
348
|
-
|
349
|
-
args.extend(self._run_pkgconfig('--libs'))
|
350
|
-
|
351
|
-
def _add_link_external_args(self, args):
|
352
|
-
# An "external" link is where the library to be introspected
|
353
|
-
# is installed on the system; this case is used for the scanning
|
354
|
-
# of GLib in gobject-introspection itself.
|
355
|
-
|
356
|
-
args.extend(self._run_pkgconfig('--libs'))
|
357
|
-
for library in self._options.libraries:
|
358
|
-
# The --library option on Windows pass in the .dll file(s) the
|
359
|
-
# .gir files refer to, so don't link to them on Visual C++
|
360
|
-
if self._pkgconfig_msvc_flags == '':
|
361
|
-
if library.endswith(".la"): # explicitly specified libtool library
|
362
|
-
args.append(library)
|
363
|
-
else:
|
364
|
-
args.append('-l' + library)
|
330
|
+
finally:
|
331
|
+
if msys:
|
332
|
+
os.remove(tf_name)
|
365
333
|
|
366
334
|
|
367
335
|
def compile_introspection_binary(options, get_type_functions,
|
Binary file
|
Binary file
|
@@ -297,7 +297,7 @@ blob containing data gleaned from GObject's primitive introspection."""
|
|
297
297
|
(ns, name) = self._transformer.split_csymbol(get_type)
|
298
298
|
assert ns is self._namespace
|
299
299
|
if name in ('get_type', '_get_gtype'):
|
300
|
-
message.fatal("""The GObject name %r isn't
|
300
|
+
message.fatal("""The GObject name %r isn't compatible
|
301
301
|
with the configured identifier prefixes:
|
302
302
|
%r
|
303
303
|
The class would have no name. Most likely you want to specify a
|
@@ -326,17 +326,6 @@ different --identifier-prefix.""" % (xmlnode.attrib['name'], self._namespace.ide
|
|
326
326
|
self._introspect_signals(node, xmlnode)
|
327
327
|
self._introspect_implemented_interfaces(node, xmlnode)
|
328
328
|
self._add_record_fields(node)
|
329
|
-
|
330
|
-
if node.name == 'InitiallyUnowned':
|
331
|
-
# http://bugzilla.gnome.org/show_bug.cgi?id=569408
|
332
|
-
# GInitiallyUnowned is actually a typedef for GObject, but
|
333
|
-
# that's not reflected in the GIR, where it appears as a
|
334
|
-
# subclass (as it appears in the GType hierarchy). So
|
335
|
-
# what we do here is copy all of the GObject fields into
|
336
|
-
# GInitiallyUnowned so that struct offset computation
|
337
|
-
# works correctly.
|
338
|
-
node.fields = self._namespace.get('Object').fields
|
339
|
-
|
340
329
|
self._namespace.append(node, replace=True)
|
341
330
|
|
342
331
|
def _introspect_interface(self, xmlnode):
|
@@ -523,14 +512,6 @@ different --identifier-prefix.""" % (xmlnode.attrib['name'], self._namespace.ide
|
|
523
512
|
else:
|
524
513
|
return False
|
525
514
|
|
526
|
-
def _strip_class_suffix(self, name):
|
527
|
-
if (name.endswith('Class') or name.endswith('Iface')):
|
528
|
-
return name[:-5]
|
529
|
-
elif name.endswith('Interface'):
|
530
|
-
return name[:-9]
|
531
|
-
else:
|
532
|
-
return None
|
533
|
-
|
534
515
|
def _find_class_record(self, cls):
|
535
516
|
pair_record = None
|
536
517
|
if isinstance(cls, ast.Class):
|
Binary file
|
Binary file
|
@@ -69,9 +69,6 @@ class GIRParser(object):
|
|
69
69
|
def get_namespace(self):
|
70
70
|
return self._namespace
|
71
71
|
|
72
|
-
def get_c_prefix(self):
|
73
|
-
return self._c_prefix
|
74
|
-
|
75
72
|
# Private
|
76
73
|
|
77
74
|
def _find_first_child(self, node, name_or_names):
|
@@ -180,12 +177,24 @@ class GIRParser(object):
|
|
180
177
|
version = node.attrib.get('version')
|
181
178
|
if version:
|
182
179
|
obj.version = version
|
183
|
-
|
180
|
+
version_doc = node.find(_corens('doc-version'))
|
181
|
+
if version_doc is not None:
|
182
|
+
if version_doc.text:
|
183
|
+
obj.version_doc = version_doc.text
|
184
|
+
deprecated = node.attrib.get('deprecated-version')
|
184
185
|
if deprecated:
|
185
186
|
obj.deprecated = deprecated
|
186
|
-
|
187
|
-
if
|
188
|
-
|
187
|
+
deprecated_doc = node.find(_corens('doc-deprecated'))
|
188
|
+
if deprecated_doc is not None:
|
189
|
+
if deprecated_doc.text:
|
190
|
+
obj.deprecated_doc = deprecated_doc.text
|
191
|
+
stability = node.attrib.get('stability')
|
192
|
+
if stability:
|
193
|
+
obj.stability = stability
|
194
|
+
stability_doc = node.find(_corens('doc-stability'))
|
195
|
+
if stability_doc is not None:
|
196
|
+
if stability_doc.text:
|
197
|
+
obj.stability_doc = stability_doc.text
|
189
198
|
|
190
199
|
def _parse_object_interface(self, node):
|
191
200
|
parent = node.attrib.get('parent')
|
@@ -271,6 +280,8 @@ class GIRParser(object):
|
|
271
280
|
typeval,
|
272
281
|
node.attrib.get('direction') or ast.PARAM_DIRECTION_IN,
|
273
282
|
node.attrib.get('transfer-ownership'),
|
283
|
+
node.attrib.get('nullable') == '1',
|
284
|
+
node.attrib.get('optional') == '1',
|
274
285
|
node.attrib.get('allow-none') == '1',
|
275
286
|
node.attrib.get('scope'),
|
276
287
|
node.attrib.get('caller-allocates') == '1')
|
@@ -283,7 +294,8 @@ class GIRParser(object):
|
|
283
294
|
if not returnnode:
|
284
295
|
raise ValueError('node %r has no return-value' % (name, ))
|
285
296
|
transfer = returnnode.attrib.get('transfer-ownership')
|
286
|
-
|
297
|
+
nullable = returnnode.attrib.get('nullable') == '1'
|
298
|
+
retval = ast.Return(self._parse_type(returnnode), nullable, transfer)
|
287
299
|
self._parse_generic_attribs(returnnode, retval)
|
288
300
|
parameters = []
|
289
301
|
|
@@ -322,7 +334,7 @@ class GIRParser(object):
|
|
322
334
|
for i, paramnode in enumerate(self._find_children(parameters_node,
|
323
335
|
_corens('parameter'))):
|
324
336
|
param = parameters[i]
|
325
|
-
self.
|
337
|
+
self._parse_type_array_length(parameters, paramnode, param.type)
|
326
338
|
closure = paramnode.attrib.get('closure')
|
327
339
|
if closure:
|
328
340
|
idx = int(closure)
|
@@ -334,7 +346,7 @@ class GIRParser(object):
|
|
334
346
|
assert idx < len(parameters), "%d >= %d" % (idx, len(parameters))
|
335
347
|
param.destroy_name = parameters[idx].argname
|
336
348
|
|
337
|
-
self.
|
349
|
+
self._parse_type_array_length(parameters, returnnode, retval.type)
|
338
350
|
|
339
351
|
self._parse_generic_attribs(node, func)
|
340
352
|
|
@@ -366,6 +378,9 @@ class GIRParser(object):
|
|
366
378
|
func = self._parse_function_common(method, ast.Function, compound)
|
367
379
|
func.is_method = True
|
368
380
|
compound.methods.append(func)
|
381
|
+
for i, fieldnode in enumerate(self._find_children(node, _corens('field'))):
|
382
|
+
field = compound.fields[i]
|
383
|
+
self._parse_type_array_length(compound.fields, fieldnode, field.type)
|
369
384
|
for func in self._find_children(node, _corens('function')):
|
370
385
|
compound.static_methods.append(
|
371
386
|
self._parse_function_common(func, ast.Function, compound))
|
@@ -447,8 +462,8 @@ class GIRParser(object):
|
|
447
462
|
return self._parse_type_simple(typenode)
|
448
463
|
assert False, "Failed to parse toplevel type"
|
449
464
|
|
450
|
-
def
|
451
|
-
"""A hack necessary to handle the integer parameter indexes on
|
465
|
+
def _parse_type_array_length(self, siblings, node, typeval):
|
466
|
+
"""A hack necessary to handle the integer parameter/field indexes on
|
452
467
|
array types."""
|
453
468
|
typenode = node.find(_corens('array'))
|
454
469
|
if typenode is None:
|
@@ -456,9 +471,11 @@ class GIRParser(object):
|
|
456
471
|
lenidx = typenode.attrib.get('length')
|
457
472
|
if lenidx is not None:
|
458
473
|
idx = int(lenidx)
|
459
|
-
assert idx < len(
|
460
|
-
|
461
|
-
|
474
|
+
assert idx < len(siblings), "%r %d >= %d" % (parent, idx, len(siblings))
|
475
|
+
if isinstance(siblings[idx], ast.Field):
|
476
|
+
typeval.length_param_name = siblings[idx].name
|
477
|
+
else:
|
478
|
+
typeval.length_param_name = siblings[idx].argname
|
462
479
|
|
463
480
|
def _parse_boxed(self, node):
|
464
481
|
obj = ast.Boxed(node.attrib[_glibns('name')],
|
@@ -571,5 +588,6 @@ class GIRParser(object):
|
|
571
588
|
members.append(member)
|
572
589
|
for func_node in self._find_children(node, _corens('function')):
|
573
590
|
func = self._parse_function_common(func_node, ast.Function)
|
591
|
+
func.parent = obj
|
574
592
|
obj.static_methods.append(func)
|
575
593
|
self._namespace.append(obj)
|
Binary file
|
Binary file
|
@@ -123,20 +123,39 @@ class GIRWriter(XMLWriter):
|
|
123
123
|
attrs.append(('version', node.version))
|
124
124
|
|
125
125
|
def _write_generic(self, node):
|
126
|
-
for key, value in node.attributes:
|
126
|
+
for key, value in node.attributes.items():
|
127
127
|
self.write_tag('attribute', [('name', key), ('value', value)])
|
128
|
+
|
128
129
|
if hasattr(node, 'doc') and node.doc:
|
129
130
|
self.write_tag('doc', [('xml:space', 'preserve')],
|
130
131
|
node.doc)
|
131
132
|
|
133
|
+
if hasattr(node, 'version_doc') and node.version_doc:
|
134
|
+
self.write_tag('doc-version', [('xml:space', 'preserve')],
|
135
|
+
node.version_doc)
|
136
|
+
|
137
|
+
if hasattr(node, 'deprecated_doc') and node.deprecated_doc:
|
138
|
+
self.write_tag('doc-deprecated', [('xml:space', 'preserve')],
|
139
|
+
node.deprecated_doc)
|
140
|
+
|
141
|
+
if hasattr(node, 'stability_doc') and node.stability_doc:
|
142
|
+
self.write_tag('doc-stability', [('xml:space', 'preserve')],
|
143
|
+
node.stability_doc)
|
144
|
+
|
132
145
|
def _append_node_generic(self, node, attrs):
|
133
146
|
if node.skip or not node.introspectable:
|
134
147
|
attrs.append(('introspectable', '0'))
|
148
|
+
|
149
|
+
if node.deprecated or node.deprecated_doc:
|
150
|
+
# The deprecated attribute used to contain node.deprecated_doc as an attribute. As
|
151
|
+
# an xml attribute cannot preserve whitespace, deprecated_doc has been moved into
|
152
|
+
# it's own tag, written in _write_generic() above. We continue to write the deprecated
|
153
|
+
# attribute for backwards compatibility
|
154
|
+
attrs.append(('deprecated', '1'))
|
155
|
+
|
135
156
|
if node.deprecated:
|
136
|
-
attrs.append(('deprecated', node.deprecated))
|
137
|
-
|
138
|
-
attrs.append(('deprecated-version',
|
139
|
-
node.deprecated_version))
|
157
|
+
attrs.append(('deprecated-version', node.deprecated))
|
158
|
+
|
140
159
|
if node.stability:
|
141
160
|
attrs.append(('stability', node.stability))
|
142
161
|
|
@@ -196,9 +215,11 @@ class GIRWriter(XMLWriter):
|
|
196
215
|
attrs.append(('transfer-ownership', return_.transfer))
|
197
216
|
if return_.skip:
|
198
217
|
attrs.append(('skip', '1'))
|
218
|
+
if return_.nullable:
|
219
|
+
attrs.append(('nullable', '1'))
|
199
220
|
with self.tagcontext('return-value', attrs):
|
200
221
|
self._write_generic(return_)
|
201
|
-
self._write_type(return_.type,
|
222
|
+
self._write_type(return_.type, parent=parent)
|
202
223
|
|
203
224
|
def _write_parameters(self, callable):
|
204
225
|
if not callable.parameters and callable.instance_parameter is None:
|
@@ -220,8 +241,14 @@ class GIRWriter(XMLWriter):
|
|
220
241
|
if parameter.transfer:
|
221
242
|
attrs.append(('transfer-ownership',
|
222
243
|
parameter.transfer))
|
223
|
-
if parameter.
|
224
|
-
attrs.append(('
|
244
|
+
if parameter.nullable:
|
245
|
+
attrs.append(('nullable', '1'))
|
246
|
+
if parameter.direction != ast.PARAM_DIRECTION_OUT:
|
247
|
+
attrs.append(('allow-none', '1'))
|
248
|
+
if parameter.optional:
|
249
|
+
attrs.append(('optional', '1'))
|
250
|
+
if parameter.direction == ast.PARAM_DIRECTION_OUT:
|
251
|
+
attrs.append(('allow-none', '1'))
|
225
252
|
if parameter.scope:
|
226
253
|
attrs.append(('scope', parameter.scope))
|
227
254
|
if parameter.closure_name is not None:
|
@@ -234,7 +261,7 @@ class GIRWriter(XMLWriter):
|
|
234
261
|
attrs.append(('skip', '1'))
|
235
262
|
with self.tagcontext(nodename, attrs):
|
236
263
|
self._write_generic(parameter)
|
237
|
-
self._write_type(parameter.type,
|
264
|
+
self._write_type(parameter.type, parent=parent)
|
238
265
|
|
239
266
|
def _type_to_name(self, typeval):
|
240
267
|
if not typeval.resolved:
|
@@ -267,7 +294,7 @@ class GIRWriter(XMLWriter):
|
|
267
294
|
|
268
295
|
self.write_tag('type', attrs)
|
269
296
|
|
270
|
-
def _write_type(self, ntype, relation=None,
|
297
|
+
def _write_type(self, ntype, relation=None, parent=None):
|
271
298
|
assert isinstance(ntype, ast.Type), ntype
|
272
299
|
attrs = []
|
273
300
|
if ntype.complete_ctype:
|
@@ -275,8 +302,7 @@ class GIRWriter(XMLWriter):
|
|
275
302
|
elif ntype.ctype:
|
276
303
|
attrs.append(('c:type', ntype.ctype))
|
277
304
|
if isinstance(ntype, ast.Varargs):
|
278
|
-
|
279
|
-
pass
|
305
|
+
self.write_tag('varargs', [])
|
280
306
|
elif isinstance(ntype, ast.Array):
|
281
307
|
if ntype.array_type != ast.Array.C:
|
282
308
|
attrs.insert(0, ('name', ntype.array_type))
|
@@ -291,8 +317,12 @@ class GIRWriter(XMLWriter):
|
|
291
317
|
if ntype.size is not None:
|
292
318
|
attrs.append(('fixed-size', '%d' % (ntype.size, )))
|
293
319
|
if ntype.length_param_name is not None:
|
294
|
-
|
295
|
-
|
320
|
+
if isinstance(parent, ast.Callable):
|
321
|
+
length = parent.get_parameter_index(ntype.length_param_name)
|
322
|
+
elif isinstance(parent, ast.Compound):
|
323
|
+
length = parent.get_field_index(ntype.length_param_name)
|
324
|
+
else:
|
325
|
+
assert False, "parent not a callable or compound: %r" % parent
|
296
326
|
attrs.insert(0, ('length', '%d' % (length, )))
|
297
327
|
|
298
328
|
with self.tagcontext('array', attrs):
|
@@ -418,9 +448,8 @@ class GIRWriter(XMLWriter):
|
|
418
448
|
if isinstance(node, ast.Class):
|
419
449
|
for method in sorted(node.constructors):
|
420
450
|
self._write_constructor(method)
|
421
|
-
|
422
|
-
|
423
|
-
self._write_static_method(method)
|
451
|
+
for method in sorted(node.static_methods):
|
452
|
+
self._write_static_method(method)
|
424
453
|
for vfunc in sorted(node.virtual_methods):
|
425
454
|
self._write_vfunc(vfunc)
|
426
455
|
for method in sorted(node.methods):
|
@@ -428,7 +457,7 @@ class GIRWriter(XMLWriter):
|
|
428
457
|
for prop in sorted(node.properties):
|
429
458
|
self._write_property(prop)
|
430
459
|
for field in node.fields:
|
431
|
-
self._write_field(field)
|
460
|
+
self._write_field(field, node)
|
432
461
|
for signal in sorted(node.signals):
|
433
462
|
self._write_signal(signal)
|
434
463
|
|
@@ -501,7 +530,7 @@ class GIRWriter(XMLWriter):
|
|
501
530
|
self._write_generic(record)
|
502
531
|
if record.fields:
|
503
532
|
for field in record.fields:
|
504
|
-
self._write_field(field, is_gtype_struct)
|
533
|
+
self._write_field(field, record, is_gtype_struct)
|
505
534
|
for method in sorted(record.constructors):
|
506
535
|
self._write_constructor(method)
|
507
536
|
for method in sorted(record.methods):
|
@@ -524,7 +553,7 @@ class GIRWriter(XMLWriter):
|
|
524
553
|
self._write_generic(union)
|
525
554
|
if union.fields:
|
526
555
|
for field in union.fields:
|
527
|
-
self._write_field(field)
|
556
|
+
self._write_field(field, union)
|
528
557
|
for method in sorted(union.constructors):
|
529
558
|
self._write_constructor(method)
|
530
559
|
for method in sorted(union.methods):
|
@@ -532,7 +561,7 @@ class GIRWriter(XMLWriter):
|
|
532
561
|
for method in sorted(union.static_methods):
|
533
562
|
self._write_static_method(method)
|
534
563
|
|
535
|
-
def _write_field(self, field, is_gtype_struct=False):
|
564
|
+
def _write_field(self, field, parent, is_gtype_struct=False):
|
536
565
|
if field.anonymous_node:
|
537
566
|
if isinstance(field.anonymous_node, ast.Callback):
|
538
567
|
attrs = [('name', field.name)]
|
@@ -560,7 +589,7 @@ class GIRWriter(XMLWriter):
|
|
560
589
|
attrs.append(('private', '1'))
|
561
590
|
with self.tagcontext('field', attrs):
|
562
591
|
self._write_generic(field)
|
563
|
-
self._write_type(field.type)
|
592
|
+
self._write_type(field.type, parent=parent)
|
564
593
|
|
565
594
|
def _write_signal(self, signal):
|
566
595
|
attrs = [('name', signal.name)]
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|