gobject-introspection 3.1.8-x64-mingw32 → 3.1.9-x64-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 +2 -2
- data/ext/gobject-introspection/rb-gi-argument.c +49 -9
- data/ext/gobject-introspection/rb-gi-loader.c +74 -1
- data/lib/2.2/gobject_introspection.so +0 -0
- data/lib/2.3/gobject_introspection.so +0 -0
- data/lib/2.4/gobject_introspection.so +0 -0
- data/test/run-test.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/g-ir-inspect.exe +0 -0
- data/vendor/local/bin/libgirepository-1.0-1.dll +0 -0
- data/vendor/local/lib/girepository-1.0/GLib-2.0.typelib +0 -0
- data/vendor/local/lib/girepository-1.0/GModule-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/cairo-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.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/annotationmain.pyo +0 -0
- 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.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/ast.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/cachestore.py +8 -14
- 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 +48 -51
- 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.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/codegen.pyo +0 -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.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/docwriter.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/docwriter.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/dumper.py +39 -66
- 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.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/gdumpparser.pyo +0 -0
- 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.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.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/maintransformer.pyo +0 -0
- 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/msvccompiler.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/msvccompiler.pyo +0 -0
- 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.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/shlibs.pyo +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/sourcescanner.py +3 -1
- 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.pyc +0 -0
- data/vendor/local/lib/gobject-introspection/giscanner/testcodegen.pyo +0 -0
- 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 +3 -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.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/pkgconfig/gobject-introspection-1.0.pc +1 -1
- data/vendor/local/lib/pkgconfig/gobject-introspection-no-export-1.0.pc +1 -1
- data/vendor/local/share/gir-1.0/GLib-2.0.gir +684 -515
- data/vendor/local/share/gir-1.0/GModule-2.0.gir +0 -25
- data/vendor/local/share/gir-1.0/GObject-2.0.gir +160 -3
- data/vendor/local/share/gir-1.0/Gio-2.0.gir +198 -83
- data/vendor/local/share/gir-1.0/cairo-1.0.gir +622 -21
- data/vendor/local/share/gir-1.0/gir-1.2.rnc +479 -0
- data/vendor/local/share/gobject-introspection-1.0/tests/annotation.c +2 -1
- data/vendor/local/share/gobject-introspection-1.0/tests/annotation.h +1 -1
- data/vendor/local/share/gobject-introspection-1.0/tests/regress.c +50 -1
- data/vendor/local/share/gobject-introspection-1.0/tests/regress.h +7 -0
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e900bc9af72ffc8fb39fb252715a502400672583
|
4
|
+
data.tar.gz: 57f7bd65f9885eb58ebd361eceda774ba42b0004
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20fe4f713663294f06cdf54d5295bd5e5396b8060d727f18175697f01a75816af104f0078710e996f71d829ea31e4ff5b157da1b996f02a836923c1845e12700
|
7
|
+
data.tar.gz: 2b3b9b8901fd8f9cc31b26ba9fc97ff047211f7fcc35941eabc53f44a378494c633db24be008fda6759502d7f6f7c33a5b1eb3349898bbbae643e39df64dab36
|
data/Rakefile
CHANGED
@@ -32,7 +32,7 @@ package_task = GNOME2::Rake::PackageTask.new do |package|
|
|
32
32
|
:name => "glib",
|
33
33
|
:download_site => :gnome,
|
34
34
|
:label => "GLib",
|
35
|
-
:version => "2.
|
35
|
+
:version => "2.54.1",
|
36
36
|
:compression_method => "xz",
|
37
37
|
:windows => {
|
38
38
|
:build => false,
|
@@ -47,7 +47,7 @@ package_task = GNOME2::Rake::PackageTask.new do |package|
|
|
47
47
|
:name => "gobject-introspection",
|
48
48
|
:download_site => :gnome,
|
49
49
|
:label => "gobject-introspection",
|
50
|
-
:version => "1.
|
50
|
+
:version => "1.54.1",
|
51
51
|
:compression_method => "xz",
|
52
52
|
:windows => {
|
53
53
|
:configure_args => [
|
@@ -61,13 +61,14 @@ array_c_to_ruby_sized_interface(gconstpointer *elements,
|
|
61
61
|
g_base_info_unref(interface_info);
|
62
62
|
g_base_info_unref(element_type_info);
|
63
63
|
} else {
|
64
|
-
|
64
|
+
/* TODO: Should we check caller_allocates? */
|
65
|
+
gsize struct_size = g_struct_info_get_size(interface_info);
|
66
|
+
for (i = 0; i < n_elements; i++) {
|
67
|
+
gpointer element = ((gchar *)elements) + struct_size * i;
|
68
|
+
rb_ary_push(rb_array, BOXED2RVAL(element, gtype));
|
69
|
+
}
|
65
70
|
g_base_info_unref(interface_info);
|
66
71
|
g_base_info_unref(element_type_info);
|
67
|
-
rb_raise(rb_eNotImpError,
|
68
|
-
"TODO: GIArgument(array)[c][interface(%s)](%s) -> Ruby",
|
69
|
-
interface_name,
|
70
|
-
g_type_name(gtype));
|
71
72
|
}
|
72
73
|
break;
|
73
74
|
case GI_INFO_TYPE_BOXED:
|
@@ -131,12 +132,20 @@ array_c_to_ruby_sized(gconstpointer *elements,
|
|
131
132
|
|
132
133
|
switch (element_type_tag) {
|
133
134
|
case GI_TYPE_TAG_VOID:
|
134
|
-
case GI_TYPE_TAG_BOOLEAN:
|
135
135
|
g_base_info_unref(element_type_info);
|
136
136
|
rb_raise(rb_eNotImpError,
|
137
137
|
"TODO: GIArgument(array)[c][%s] -> Ruby",
|
138
138
|
g_type_tag_to_string(element_type_tag));
|
139
139
|
break;
|
140
|
+
case GI_TYPE_TAG_BOOLEAN:
|
141
|
+
g_base_info_unref(element_type_info);
|
142
|
+
{
|
143
|
+
const gboolean *booleans = (const gboolean *)elements;
|
144
|
+
for (i = 0; i < n_elements; i++) {
|
145
|
+
rb_ary_push(rb_array, CBOOL2RVAL(booleans[i]));
|
146
|
+
}
|
147
|
+
}
|
148
|
+
break;
|
140
149
|
case GI_TYPE_TAG_INT8:
|
141
150
|
g_base_info_unref(element_type_info);
|
142
151
|
{
|
@@ -1146,8 +1155,15 @@ rb_gi_argument_to_ruby_ghash(GIArgument *argument, GITypeInfo *type_info)
|
|
1146
1155
|
g_base_info_unref(value_type_info);
|
1147
1156
|
rb_argument =
|
1148
1157
|
rb_gi_argument_to_ruby_ghash_utf8_utf8(argument->v_pointer);
|
1149
|
-
|
1158
|
+
} else {
|
1159
|
+
g_base_info_unref(key_type_info);
|
1160
|
+
g_base_info_unref(value_type_info);
|
1161
|
+
rb_raise(rb_eNotImpError,
|
1162
|
+
"TODO: GIArgument(GHash)[%s][%s] -> Ruby",
|
1163
|
+
g_type_tag_to_string(key_type_tag),
|
1164
|
+
g_type_tag_to_string(value_type_tag));
|
1150
1165
|
}
|
1166
|
+
break;
|
1151
1167
|
case GI_TYPE_TAG_FILENAME:
|
1152
1168
|
case GI_TYPE_TAG_ARRAY:
|
1153
1169
|
case GI_TYPE_TAG_INTERFACE:
|
@@ -3330,6 +3346,22 @@ set_in_array_length_argument(GIArgument *argument,
|
|
3330
3346
|
}
|
3331
3347
|
}
|
3332
3348
|
|
3349
|
+
static void
|
3350
|
+
set_in_array_boolean_arguments_from_ruby(GIArgument *array_argument,
|
3351
|
+
VALUE rb_boolean_array)
|
3352
|
+
{
|
3353
|
+
gboolean *booleans;
|
3354
|
+
gint i, n_args;
|
3355
|
+
|
3356
|
+
n_args = RARRAY_LEN(rb_boolean_array);
|
3357
|
+
booleans = ALLOC_N(gboolean, n_args);
|
3358
|
+
for (i = 0; i < n_args; i++) {
|
3359
|
+
booleans[i] = RVAL2CBOOL(RARRAY_PTR(rb_boolean_array)[i]);
|
3360
|
+
}
|
3361
|
+
|
3362
|
+
array_argument->v_pointer = booleans;
|
3363
|
+
}
|
3364
|
+
|
3333
3365
|
static void
|
3334
3366
|
set_in_array_int8_arguments_from_ruby(GIArgument *array_argument,
|
3335
3367
|
VALUE rb_number_array)
|
@@ -3644,11 +3676,16 @@ in_array_c_argument_from_ruby(GIArgument *array_argument,
|
|
3644
3676
|
element_type_tag = g_type_info_get_tag(element_type_info);
|
3645
3677
|
switch (element_type_tag) {
|
3646
3678
|
case GI_TYPE_TAG_VOID:
|
3647
|
-
case GI_TYPE_TAG_BOOLEAN:
|
3648
3679
|
rb_raise(rb_eNotImpError,
|
3649
3680
|
"TODO: Ruby -> GIArgument(array)[%s]",
|
3650
3681
|
g_type_tag_to_string(element_type_tag));
|
3651
3682
|
break;
|
3683
|
+
case GI_TYPE_TAG_BOOLEAN:
|
3684
|
+
rb_argument = rbg_to_array(rb_argument);
|
3685
|
+
set_in_array_boolean_arguments_from_ruby(array_argument, rb_argument);
|
3686
|
+
set_in_array_length_argument(length_argument, length_type_info,
|
3687
|
+
RARRAY_LEN(rb_argument));
|
3688
|
+
break;
|
3652
3689
|
case GI_TYPE_TAG_INT8:
|
3653
3690
|
if (RB_TYPE_P(rb_argument, RUBY_T_STRING)) {
|
3654
3691
|
array_argument->v_pointer = RSTRING_PTR(rb_argument);
|
@@ -3953,11 +3990,13 @@ rb_gi_value_argument_free_array_c(VALUE rb_argument,
|
|
3953
3990
|
element_type_tag = g_type_info_get_tag(element_type_info);
|
3954
3991
|
switch (element_type_tag) {
|
3955
3992
|
case GI_TYPE_TAG_VOID:
|
3956
|
-
case GI_TYPE_TAG_BOOLEAN:
|
3957
3993
|
rb_raise(rb_eNotImpError,
|
3958
3994
|
"TODO: free GIArgument(array)[%s]",
|
3959
3995
|
g_type_tag_to_string(element_type_tag));
|
3960
3996
|
break;
|
3997
|
+
case GI_TYPE_TAG_BOOLEAN:
|
3998
|
+
xfree(argument->v_pointer);
|
3999
|
+
break;
|
3961
4000
|
case GI_TYPE_TAG_INT8:
|
3962
4001
|
case GI_TYPE_TAG_UINT8:
|
3963
4002
|
if (RB_TYPE_P(rb_argument, RUBY_T_STRING)) {
|
@@ -3985,6 +4024,7 @@ rb_gi_value_argument_free_array_c(VALUE rb_argument,
|
|
3985
4024
|
rb_raise(rb_eNotImpError,
|
3986
4025
|
"TODO: free GIArgument(array)[%s]",
|
3987
4026
|
g_type_tag_to_string(element_type_tag));
|
4027
|
+
break;
|
3988
4028
|
case GI_TYPE_TAG_INTERFACE:
|
3989
4029
|
xfree(argument->v_pointer);
|
3990
4030
|
break;
|
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2012-
|
3
|
+
* Copyright (C) 2012-2017 Ruby-GNOME2 Project Team
|
4
4
|
*
|
5
5
|
* This library is free software; you can redistribute it and/or
|
6
6
|
* modify it under the terms of the GNU Lesser General Public
|
@@ -23,6 +23,7 @@
|
|
23
23
|
#define RG_TARGET_NAMESPACE rb_cGILoader
|
24
24
|
|
25
25
|
static const gchar *boxed_class_converters_name = "@@boxed_class_converters";
|
26
|
+
static const gchar *object_class_converters_name = "@@object_class_converters";
|
26
27
|
|
27
28
|
static VALUE
|
28
29
|
rg_s_define_class(int argc, VALUE *argv, G_GNUC_UNUSED VALUE klass)
|
@@ -194,6 +195,76 @@ rg_s_register_boxed_class_converter(VALUE klass, VALUE rb_gtype)
|
|
194
195
|
return Qnil;
|
195
196
|
}
|
196
197
|
|
198
|
+
typedef struct {
|
199
|
+
GType type;
|
200
|
+
VALUE rb_converters;
|
201
|
+
VALUE rb_converter;
|
202
|
+
} ObjectInstance2RObjData;
|
203
|
+
|
204
|
+
static void
|
205
|
+
object_class_converter_free(gpointer user_data)
|
206
|
+
{
|
207
|
+
ObjectInstance2RObjData *data = user_data;
|
208
|
+
rb_ary_delete(data->rb_converters, data->rb_converter);
|
209
|
+
g_free(data);
|
210
|
+
}
|
211
|
+
|
212
|
+
static VALUE
|
213
|
+
object_instance2robj(gpointer instance, gpointer user_data)
|
214
|
+
{
|
215
|
+
ObjectInstance2RObjData *data = user_data;
|
216
|
+
VALUE existing_rb_instance;
|
217
|
+
VALUE default_rb_instance;
|
218
|
+
VALUE klass;
|
219
|
+
ID id_call;
|
220
|
+
VALUE converted_rb_instance;
|
221
|
+
ID id_unref;
|
222
|
+
|
223
|
+
existing_rb_instance = rbgobj_get_ruby_object_from_gobject(instance, FALSE);
|
224
|
+
if (!NIL_P(existing_rb_instance))
|
225
|
+
return existing_rb_instance;
|
226
|
+
|
227
|
+
default_rb_instance = rbgobj_get_ruby_object_from_gobject(instance, TRUE);
|
228
|
+
CONST_ID(id_call, "call");
|
229
|
+
klass = rb_funcall(data->rb_converter, id_call, 1, default_rb_instance);
|
230
|
+
if (klass == rb_class_of(default_rb_instance))
|
231
|
+
return default_rb_instance;
|
232
|
+
|
233
|
+
converted_rb_instance = rbgobj_object_alloc_func(klass);
|
234
|
+
g_object_ref(instance);
|
235
|
+
CONST_ID(id_unref, "unref");
|
236
|
+
rb_funcall(default_rb_instance, id_unref, 0);
|
237
|
+
rbgobj_gobject_initialize(converted_rb_instance, instance);
|
238
|
+
return converted_rb_instance;
|
239
|
+
}
|
240
|
+
|
241
|
+
static VALUE
|
242
|
+
rg_s_register_object_class_converter(VALUE klass, VALUE rb_gtype)
|
243
|
+
{
|
244
|
+
RGConvertTable table;
|
245
|
+
ObjectInstance2RObjData *data;
|
246
|
+
ID id_to_i;
|
247
|
+
VALUE object_class_converters;
|
248
|
+
|
249
|
+
memset(&table, 0, sizeof(RGConvertTable));
|
250
|
+
CONST_ID(id_to_i, "to_i");
|
251
|
+
table.type = NUM2ULONG(rb_funcall(rb_gtype, id_to_i, 0));
|
252
|
+
table.klass = Qnil;
|
253
|
+
table.instance2robj = object_instance2robj;
|
254
|
+
|
255
|
+
data = g_new(ObjectInstance2RObjData, 1);
|
256
|
+
data->type = table.type;
|
257
|
+
data->rb_converter = rb_block_proc();
|
258
|
+
object_class_converters = rb_cv_get(klass, object_class_converters_name);
|
259
|
+
rb_ary_push(object_class_converters, data->rb_converter);
|
260
|
+
table.user_data = data;
|
261
|
+
table.notify = object_class_converter_free;
|
262
|
+
|
263
|
+
rbgobj_convert_define(&table);
|
264
|
+
|
265
|
+
return Qnil;
|
266
|
+
}
|
267
|
+
|
197
268
|
static VALUE
|
198
269
|
rg_s_register_constant_rename_map(G_GNUC_UNUSED VALUE klass,
|
199
270
|
VALUE rb_original,
|
@@ -260,12 +331,14 @@ rb_gi_loader_init(VALUE rb_mGI)
|
|
260
331
|
RG_TARGET_NAMESPACE = rb_define_class_under(rb_mGI, "Loader", rb_cObject);
|
261
332
|
|
262
333
|
rb_cv_set(RG_TARGET_NAMESPACE, boxed_class_converters_name, rb_ary_new());
|
334
|
+
rb_cv_set(RG_TARGET_NAMESPACE, object_class_converters_name, rb_ary_new());
|
263
335
|
|
264
336
|
RG_DEF_SMETHOD(define_class, -1);
|
265
337
|
RG_DEF_SMETHOD(define_interface, 3);
|
266
338
|
RG_DEF_SMETHOD(define_struct, -1);
|
267
339
|
RG_DEF_SMETHOD(define_error, -1);
|
268
340
|
RG_DEF_SMETHOD(register_boxed_class_converter, 1);
|
341
|
+
RG_DEF_SMETHOD(register_object_class_converter, 1);
|
269
342
|
RG_DEF_SMETHOD(register_constant_rename_map, 2);
|
270
343
|
RG_DEF_SMETHOD(start_callback_dispatch_thread, 0);
|
271
344
|
RG_DEF_SMETHOD(reference_gobject, -1);
|
Binary file
|
Binary file
|
Binary file
|
data/test/run-test.rb
CHANGED
@@ -27,7 +27,7 @@ modules = [
|
|
27
27
|
[gobject_introspection_base, "gobject-introspection"]
|
28
28
|
]
|
29
29
|
modules.each do |target, module_name|
|
30
|
-
if system("which make > /dev/null")
|
30
|
+
if File.exist?("#{target}/Makefile") and system("which make > /dev/null")
|
31
31
|
`make -C #{target.dump} > /dev/null` or exit(false)
|
32
32
|
end
|
33
33
|
$LOAD_PATH.unshift(File.join(target, "ext", module_name))
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -76,7 +76,7 @@ class CacheStore(object):
|
|
76
76
|
try:
|
77
77
|
with open(version, 'r') as version_file:
|
78
78
|
cache_hash = version_file.read()
|
79
|
-
except IOError as e:
|
79
|
+
except (IOError, OSError) as e:
|
80
80
|
# File does not exist
|
81
81
|
if e.errno == errno.ENOENT:
|
82
82
|
cache_hash = 0
|
@@ -96,7 +96,7 @@ class CacheStore(object):
|
|
96
96
|
# On Unix, this would just be os.rename() but Windows
|
97
97
|
# doesn't allow that.
|
98
98
|
shutil.move(tmp_filename, version)
|
99
|
-
except IOError as e:
|
99
|
+
except (IOError, OSError) as e:
|
100
100
|
# Permission denied
|
101
101
|
if e.errno == errno.EACCES:
|
102
102
|
return
|
@@ -121,15 +121,9 @@ class CacheStore(object):
|
|
121
121
|
def _remove_filename(self, filename):
|
122
122
|
try:
|
123
123
|
os.unlink(filename)
|
124
|
-
except IOError as e:
|
125
|
-
#
|
126
|
-
if e.errno
|
127
|
-
return
|
128
|
-
else:
|
129
|
-
raise
|
130
|
-
except OSError as e:
|
131
|
-
# File does not exist
|
132
|
-
if e.errno == errno.ENOENT:
|
124
|
+
except (IOError, OSError) as e:
|
125
|
+
# Ignore "permission denied", "file does not exist"
|
126
|
+
if e.errno in (errno.EACCES, errno.ENOENT):
|
133
127
|
return
|
134
128
|
else:
|
135
129
|
raise
|
@@ -152,7 +146,7 @@ class CacheStore(object):
|
|
152
146
|
try:
|
153
147
|
with os.fdopen(tmp_fd, 'wb') as tmp_file:
|
154
148
|
pickle.dump(data, tmp_file)
|
155
|
-
except IOError as e:
|
149
|
+
except (IOError, OSError) as e:
|
156
150
|
# No space left on device
|
157
151
|
if e.errno == errno.ENOSPC:
|
158
152
|
self._remove_filename(tmp_filename)
|
@@ -162,7 +156,7 @@ class CacheStore(object):
|
|
162
156
|
|
163
157
|
try:
|
164
158
|
shutil.move(tmp_filename, store_filename)
|
165
|
-
except IOError as e:
|
159
|
+
except (IOError, OSError) as e:
|
166
160
|
# Permission denied
|
167
161
|
if e.errno == errno.EACCES:
|
168
162
|
self._remove_filename(tmp_filename)
|
@@ -175,7 +169,7 @@ class CacheStore(object):
|
|
175
169
|
return
|
176
170
|
try:
|
177
171
|
fd = open(store_filename, 'rb')
|
178
|
-
except IOError as e:
|
172
|
+
except (IOError, OSError) as e:
|
179
173
|
if e.errno == errno.ENOENT:
|
180
174
|
return None
|
181
175
|
else:
|
Binary file
|
Binary file
|
@@ -113,22 +113,18 @@ class CCompiler(object):
|
|
113
113
|
# An "internal" link is where the library to be introspected
|
114
114
|
# is being built in the current directory.
|
115
115
|
|
116
|
-
|
117
|
-
|
118
|
-
if self.check_is_msvc():
|
119
|
-
for library in libraries + extra_libraries:
|
120
|
-
# MSVC Builds don't use libtool, so no .la libraries,
|
121
|
-
# so just add the library directly.
|
122
|
-
self.compiler.add_library(library)
|
123
|
-
for libpath in libpaths:
|
124
|
-
self.compiler.add_library_dir(libpath)
|
125
|
-
else:
|
126
|
-
# Search the current directory first
|
127
|
-
# (This flag is not supported nor needed for Visual C++)
|
128
|
-
self.compiler.add_library_dir('.')
|
129
|
-
if os.name != 'nt':
|
130
|
-
self.compiler.add_runtime_library_dir('.')
|
116
|
+
runtime_path_envvar = []
|
117
|
+
runtime_paths = []
|
131
118
|
|
119
|
+
if self.check_is_msvc():
|
120
|
+
runtime_path_envvar = ['LIB', 'PATH']
|
121
|
+
else:
|
122
|
+
runtime_path_envvar = ['LD_LIBRARY_PATH']
|
123
|
+
# Search the current directory first
|
124
|
+
# (This flag is not supported nor needed for Visual C++)
|
125
|
+
args.append('-L.')
|
126
|
+
|
127
|
+
if not libtool:
|
132
128
|
# https://bugzilla.gnome.org/show_bug.cgi?id=625195
|
133
129
|
args.append('-Wl,-rpath,.')
|
134
130
|
|
@@ -137,37 +133,51 @@ class CCompiler(object):
|
|
137
133
|
if sys.platform != 'darwin':
|
138
134
|
args.append('-Wl,--no-as-needed')
|
139
135
|
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
args.append(
|
145
|
-
|
146
|
-
args.append('-Wl,-rpath,' + library_path)
|
147
|
-
|
148
|
-
else:
|
149
|
-
# libtool case: assemble linker command arguments, like we did before
|
150
|
-
args.append('-L.')
|
151
|
-
for library in libraries:
|
136
|
+
for library in libraries + extra_libraries:
|
137
|
+
if self.check_is_msvc():
|
138
|
+
# Note that Visual Studio builds do not use libtool!
|
139
|
+
if library != 'm':
|
140
|
+
args.append(library + '.lib')
|
141
|
+
else:
|
152
142
|
if library.endswith(".la"): # explicitly specified libtool library
|
153
143
|
args.append(library)
|
154
144
|
else:
|
155
145
|
args.append('-l' + library)
|
156
146
|
|
157
|
-
|
147
|
+
for library_path in libpaths:
|
148
|
+
# The dumper program needs to look for dynamic libraries
|
149
|
+
# in the library paths first
|
150
|
+
if self.check_is_msvc():
|
151
|
+
library_path = library_path.replace('/', '\\')
|
152
|
+
args.append('-libpath:' + library_path)
|
153
|
+
else:
|
158
154
|
args.append('-L' + library_path)
|
159
155
|
if os.path.isabs(library_path):
|
160
|
-
|
161
|
-
|
156
|
+
if libtool:
|
157
|
+
args.append('-rpath')
|
158
|
+
args.append(library_path)
|
159
|
+
else:
|
160
|
+
args.append('-Wl,-rpath,' + library_path)
|
161
|
+
|
162
|
+
runtime_paths.append(library_path)
|
162
163
|
|
163
|
-
|
164
|
+
for envvar in runtime_path_envvar:
|
165
|
+
if envvar in os.environ:
|
166
|
+
os.environ[envvar] = \
|
167
|
+
os.pathsep.join(runtime_paths + [os.environ[envvar]])
|
168
|
+
else:
|
169
|
+
os.environ[envvar] = os.pathsep.join(runtime_paths)
|
170
|
+
|
171
|
+
def get_external_link_flags(self, args, libraries):
|
164
172
|
# An "external" link is where the library to be introspected
|
165
173
|
# is installed on the system; this case is used for the scanning
|
166
174
|
# of GLib in gobject-introspection itself.
|
167
175
|
|
168
176
|
for library in libraries:
|
169
|
-
if
|
170
|
-
|
177
|
+
if self.check_is_msvc():
|
178
|
+
# Visual Studio: don't attempt to link to m.lib
|
179
|
+
if library != 'm':
|
180
|
+
args.append(library + ".lib")
|
171
181
|
else:
|
172
182
|
if library.endswith(".la"): # explicitly specified libtool library
|
173
183
|
args.append(library)
|
@@ -238,24 +248,7 @@ class CCompiler(object):
|
|
238
248
|
macros=macros,
|
239
249
|
include_dirs=includes,
|
240
250
|
extra_postargs=extra_postargs,
|
241
|
-
output_dir=
|
242
|
-
source_str.rfind(os.sep)]))
|
243
|
-
|
244
|
-
def link(self, output, objects, lib_args):
|
245
|
-
# Note: This is used for non-libtool builds only!
|
246
|
-
extra_preargs = []
|
247
|
-
extra_postargs = []
|
248
|
-
library_dirs = []
|
249
|
-
libraries = []
|
250
|
-
|
251
|
-
for arg in lib_args:
|
252
|
-
extra_postargs.append(arg)
|
253
|
-
|
254
|
-
self.compiler.link(target_desc=self.compiler.EXECUTABLE,
|
255
|
-
objects=objects,
|
256
|
-
output_filename=output,
|
257
|
-
extra_preargs=extra_preargs,
|
258
|
-
extra_postargs=extra_postargs)
|
251
|
+
output_dir=os.path.abspath(os.sep))
|
259
252
|
|
260
253
|
def resolve_windows_libs(self, libraries, options):
|
261
254
|
args = []
|
@@ -279,6 +272,10 @@ class CCompiler(object):
|
|
279
272
|
args.append('dumpbin.exe')
|
280
273
|
args.append('-symbols')
|
281
274
|
|
275
|
+
# Work around the attempt to resolve m.lib on Python 2.x
|
276
|
+
if sys.version_info.major < 3:
|
277
|
+
libraries[:] = [lib for lib in libraries if lib != 'm']
|
278
|
+
|
282
279
|
# When we are not using Visual C++ (i.e. we are using GCC)...
|
283
280
|
else:
|
284
281
|
libtool = utils.get_libtool_command(options)
|