[oi-dev] gobject-instrospection seems to be a bit broken
OpenIndiana Developer mailing list
oi-dev at openindiana.org
Fri May 16 14:00:26 UTC 2014
Hello.
I see this commit message
http://osdir.com/ml/svn-commits-list/2009-08/msg06668.html
in gobject-introspection concirning Sun cc. It seems that nobody cared
about Sun cc support in gobject-introspection enough to test it a bit.
This results that gobject-introspection can't parse cc -E output.
Try to build any tool: you'll get a lot of
usr/include/glib-2.0/gio/gresolver.h:20: syntax error, unexpected
INTEGER in '# 20' at '20'
/usr/include/glib-2.0/gio/gresolver.h:157: syntax error, unexpected
INTEGER in '# 163' at '163'
/usr/include/glib-2.0/gio/gseekable.h:22: syntax error, unexpected
INTEGER in '# 22' at '22'
/usr/include/glib-2.0/gio/gseekable.h:55: syntax error, unexpected
INTEGER in '# 57' at '57'
/usr/include/glib-2.0/gio/gsettings.h:21: syntax error, unexpected
INTEGER in '# 21' at '21'
/usr/include/glib-2.0/gio/gsettings.h:158: syntax error, unexpected
INTEGER in '# 166' at '166'
/usr/include/glib-2.0/gio/gsettings.h:174: syntax error, unexpected
INTEGER in '# 181' at '181'
/usr/include/glib-2.0/gio/gsettings.h:198: syntax error, unexpected
INTEGER in '# 204' at '204'
and similar errors.
Now let's fix this a bit (either use gcc instead of cc) or the following
patch
--- gobject-introspection-0.9.12/giscanner/scannerlexer.l.~1~
2010-10-04 19:58:05.000000000 +0400
+++ gobject-introspection-0.9.12/giscanner/scannerlexer.l
2014-05-16 17:27:32.766096864 +0400
@@ -81,6 +82,7 @@
"#pragma ".*"\n" { /* Ignore pragma. */ }
"# "[0-9]+" ".*"\n" { process_linemarks(scanner); }
+"# "[0-9]+"\n" { /*ignore cc linemark*/ }
"#" { }
"{" { return '{'; }
"<%" { return '{'; }
@@ -139,6 +141,7 @@
"__attribute" { if (!parse_ignored_macro())
REJECT; }
"__const" { return CONST; }
"__extension__" { return EXTENSION; }
+"__inline__" { return INLINE; }
"__inline" { return INLINE; }
"__nonnull" { if (!parse_ignored_macro())
REJECT; }
"__signed__" { return SIGNED; }
this patch allows g-ir-scanner to ignore
# SomeNumber
lines, generated by cc.
(cc -E generates line numbering information in form:
# 1 "file path"
# 26
# 29
# 1 "file 2 path"
...
gcc -E generates it as
# 1 "file path" ...
# 26 "file path" ...
# 29 "file path" ...
# 1 "file 2 path" ...
...)
After this fix:
we got the following error building gtk+
"Namespace conflict for 'Display'..."
Besides this we get a lot of
/usr/include/stddef.h:32: syntax error, unexpected identifier in '#ident
"%Z%%M% %I% %E% SMI"' at 'ident'
...
The same "Namespace conflict for 'Display'..." can be seen when we use
gcc to build gtk+ (and force gobject-introspection also use gcc)...
Am I doing something wrong or has nobody never seen this???
--
Best regards,
Alexander Pyhalov,
system administrator of Computer Center of Southern Federal University
More information about the oi-dev
mailing list