-
-
Notifications
You must be signed in to change notification settings - Fork 46
/
Copy pathfix.sh
executable file
·137 lines (118 loc) · 8.01 KB
/
fix.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#!/bin/bash
set -x -e
# Remove Int32 alias because it misses c:type, it not like anyone actually cares about it.
xmlstarlet ed -P -L \
-d '///_:alias[@name="Int32"]' \
freetype2-2.0.gir
# gir uses error domain to find quark function corresponding to given error enum,
# but in this case it happens to be named differently, i.e., as g_option_error_quark.
xmlstarlet ed -P -L \
-u '//*[@glib:error-domain="g-option-context-error-quark"]/@glib:error-domain' -v g-option-error-quark \
-u '//*[@name="UriError"]/@glib:error-domain' -v g-uri-error-quark \
GLib-2.0.gir
# GtkEntry icon signals incorrect assume GdkEventButton when other variants may be passed
xmlstarlet ed -P -L \
-u '//_:class[@name="Entry"]/glib:signal[@name="icon-press"]//_:parameter[@name="event"]/_:type[@name="Gdk.EventButton"]/@name' -v "Gdk.Event" \
-u '//_:class[@name="Entry"]/glib:signal[@name="icon-release"]//_:parameter[@name="event"]/_:type[@name="Gdk.EventButton"]/@name' -v "Gdk.Event" \
Gtk-3.0.gir
# GtkIconSize usage
xmlstarlet ed -P -L \
-u '//_:type[@c:type="GtkIconSize"]/@name' -v "IconSize" \
-u '//_:type[@c:type="GtkIconSize*"]/@name' -v "IconSize" \
Gtk-3.0.gir
# incorrect GIR due to gobject-introspection GitLab issue #189
xmlstarlet ed -P -L \
-u '//_:class[@name="IconTheme"]/_:method//_:parameter[@name="icon_names"]/_:array/@c:type' -v "const gchar**" \
-u '//_:class[@name="IconTheme"]/_:method[@name="get_search_path"]//_:parameter[@name="path"]/_:array/@c:type' -v "gchar***" \
-u '//_:class[@name="IconTheme"]/_:method[@name="set_search_path"]//_:parameter[@name="path"]/_:array/@c:type' -v "const gchar**" \
Gtk-3.0.gir
# incorrect GIR due to gobject-introspection GitLab issue #189
xmlstarlet ed -P -L \
-u '//_:record[@name="KeyFile"]/_:method[@name="set_boolean_list"]//_:parameter[@name="list"]/_:array/@c:type' -v "gboolean*" \
-u '//_:record[@name="KeyFile"]/_:method[@name="set_double_list"]//_:parameter[@name="list"]/_:array/@c:type' -v "gdouble*" \
-u '//_:record[@name="KeyFile"]/_:method[@name="set_integer_list"]//_:parameter[@name="list"]/_:array/@c:type' -v "gint*" \
-u '//_:record[@name="KeyFile"]/_:method[@name="set_locale_string_list"]//_:parameter[@name="list"]/_:array/@c:type' -v "const gchar* const*" \
-u '//_:record[@name="KeyFile"]/_:method[@name="set_string_list"]//_:parameter[@name="list"]/_:array/@c:type' -v "const gchar* const*" \
GLib-2.0.gir
# incorrect GIR due to gobject-introspection GitLab issue #189
xmlstarlet ed -P -L \
-u '//_:class[@name="Object"]/_:method[@name="getv"]//_:parameter[@name="names"]/_:array/@c:type' -v "const gchar**" \
-u '//_:class[@name="Object"]/_:method[@name="getv"]//_:parameter[@name="values"]/_:array/@c:type' -v "GValue*" \
-u '//_:class[@name="Object"]/_:method[@name="setv"]//_:parameter[@name="names"]/_:array/@c:type' -v "const gchar**" \
-u '//_:class[@name="Object"]/_:method[@name="setv"]//_:parameter[@name="values"]/_:array/@c:type' -v "const GValue*" \
-u '//_:class[@name="Object"]/_:constructor[@name="new_with_properties"]//_:parameter[@name="names"]/_:array/@c:type' -v "const char**" \
-u '//_:class[@name="Object"]/_:constructor[@name="new_with_properties"]//_:parameter[@name="values"]/_:array/@c:type' -v "const GValue*" \
GObject-2.0.gir
# incorrectly marked as transfer-none GitLab issue #197
xmlstarlet ed -P -L \
-u '//_:class[@name="Binding"]/_:method[@name="unbind"]//_:instance-parameter[@name="binding"]/@transfer-ownership' -v "full" \
GObject-2.0.gir
# fix wrong "full" transfer ownership
xmlstarlet ed -P -L \
-u '//_:method[@c:identifier="gdk_frame_clock_get_current_timings"]/_:return-value/@transfer-ownership' -v "none" \
-u '//_:method[@c:identifier="gdk_frame_clock_get_timings"]/_:return-value/@transfer-ownership' -v "none" \
Gdk-3.0.gir
# replace "gint" response_id parameters with "ResponseType"
xmlstarlet ed -P -L \
-u '//_:parameter[@name="response_id"]/_:type[@name="gint"]/@c:type' -v "GtkResponseType" \
-u '//_:parameter[@name="response_id"]/_:type[@name="gint"]/@name' -v "ResponseType" \
Gtk-3.0.gir Gtk-4.0.gir
# fix wrong "full" transfer ownership
xmlstarlet ed -P -L \
-u '//_:constructor[@c:identifier="gtk_shortcut_label_new"]/_:return-value/@transfer-ownership' -v "none" \
Gtk-3.0.gir Gtk-4.0.gir
# add out annotation for functions returning GValue
xmlstarlet ed -P -L \
-a '//_:method[@c:identifier="gtk_style_context_get_style_property"]//_:parameter[@name="value" and not(@direction)]' -type attr -n "direction" -v "out" \
-a '//_:method[@c:identifier="gtk_style_context_get_style_property"]//_:parameter[@name="value" and not(@caller-allocates)]' -type attr -n "caller-allocates" -v "1" \
-a '//_:method[@c:identifier="gtk_cell_area_cell_get_property"]//_:parameter[@name="value" and not(@direction)]' -type attr -n "direction" -v "out" \
-a '//_:method[@c:identifier="gtk_cell_area_cell_get_property"]//_:parameter[@name="value" and not(@caller-allocates)]' -type attr -n "caller-allocates" -v "1" \
-a '//_:method[@c:identifier="gtk_container_child_get_property"]//_:parameter[@name="value" and not(@direction)]' -type attr -n "direction" -v "out" \
-a '//_:method[@c:identifier="gtk_container_child_get_property"]//_:parameter[@name="value" and not(@caller-allocates)]' -type attr -n "caller-allocates" -v "1" \
-a '//_:method[@c:identifier="gtk_widget_style_get_property"]//_:parameter[@name="value" and not(@direction)]' -type attr -n "direction" -v "out" \
-a '//_:method[@c:identifier="gtk_widget_style_get_property"]//_:parameter[@name="value" and not(@caller-allocates)]' -type attr -n "caller-allocates" -v "1" \
Gtk-3.0.gir
xmlstarlet tr JavaScriptCore-4.0.xsl JavaScriptCore-4.0.gir | xmlstarlet fo > JavaScriptCore-4.0.gir.tmp
mv JavaScriptCore-4.0.gir.tmp JavaScriptCore-4.0.gir
# fill in types from JavaScriptCore
xmlstarlet ed -P -L \
-i '///_:type[not(@name) and @c:type="JSGlobalContextRef"]' -t 'attr' -n 'name' -v "JavaScriptCore.GlobalContextRef" \
-i '///_:type[not(@name) and @c:type="JSValueRef"]' -t 'attr' -n 'name' -v "JavaScriptCore.ValueRef" \
WebKit2WebExtension-4.0.gir WebKit2-4.0.gir
xmlstarlet ed -P -L \
-u '//_:constant[@name="DOM_NODE_FILTER_SHOW_ALL"]/_:type/@name' -v "guint" \
-u '//_:constant[@name="DOM_NODE_FILTER_SHOW_ALL"]/_:type/@c:type' -v "guint" \
WebKit2WebExtension-4.0.gir
# fix cyclic dependency on gtk 4.0
xmlstarlet ed -P -L \
-u '//_:callback[@name="ParseErrorFunc"]/_:parameters/_:parameter[@name="section"]/_:type[@c:type="const GtkCssSection*"]/@c:type' -v "gconstpointer" \
-a '//_:callback[@name="ParseErrorFunc"]/_:parameters/_:parameter[@name="section"]/_:type[not(@name) and @c:type="gconstpointer"]' -type attr -n "name" -v "gconstpointer" \
Gsk-4.0.gir
# remove freetype and graphite methods; GitHub issue #2557
xmlstarlet ed -P -L \
-d '///_:function[@c:identifier="hb_graphite2_face_get_gr_face"]' \
-d '///_:function[@c:identifier="hb_graphite2_font_get_gr_font"]' \
-d '///_:function[@c:identifier="hb_ft_face_create"]' \
-d '///_:function[@c:identifier="hb_ft_face_create_cached"]' \
-d '///_:function[@c:identifier="hb_ft_face_create_referenced"]' \
-d '///_:function[@c:identifier="hb_ft_font_create"]' \
-d '///_:function[@c:identifier="hb_ft_font_create_cached"]' \
-d '///_:function[@c:identifier="hb_ft_font_create_referenced"]' \
-d '///_:function[@c:identifier="hb_ft_font_get_face"]' \
-d '///_:function[@c:identifier="hb_ft_font_lock_face"]' \
HarfBuzz-0.0.gir
# fix harfbuzz types on Pango
xmlstarlet ed -P -L \
-i '///_:type[not(@name) and @c:type="hb_font_t*"]' -t 'attr' -n 'name' -v "gconstpointer" \
-u '//_:type[@c:type="hb_font_t*"]/@c:type' -v "gconstpointer" \
-i '///_:array[not(@name) and @c:type="hb_feature_t*"]' -t 'attr' -n 'name' -v "gconstpointer" \
-r '///_:array[@c:type="hb_feature_t*"]' -v "type" \
-d '//_:type[@c:type="hb_feature_t*"]/*' \
-d '//_:type[@c:type="hb_feature_t*"]/@length' \
-d '//_:type[@c:type="hb_feature_t*"]/@zero-terminated' \
-u '//_:type[@c:type="hb_feature_t*"]/@c:type' -v "gconstpointer" \
Pango-1.0.gir
# Remove unstable method from focal release
xmlstarlet ed -P -L \
-d '///_:method[@c:identifier="atk_plug_set_child"]' \
Atk-1.0.gir