glib2 3.2.1 → 3.2.2
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 +5 -5
- data/Rakefile +17 -16
- data/ext/glib2/glib2.def +3 -0
- data/ext/glib2/rbglib-bytes.c +1 -0
- data/ext/glib2/rbglib.h +5 -1
- data/ext/glib2/rbgobj_object.c +30 -17
- data/ext/glib2/rbgobj_type.c +246 -130
- data/ext/glib2/rbgobject.h +12 -1
- data/lib/gnome2/rake/external-package.rb +32 -12
- data/lib/gnome2/rake/windows-binary-build-task.rb +53 -52
- data/lib/mkmf-gnome2.rb +0 -10
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6fbf19f5f9864d9781239ddb41fd1fcd43c59a8680e0782f2c46c385f025c093
|
4
|
+
data.tar.gz: 969f873a3454bbdb99e821c32555fd6cb89bdeaace83f85163a40dbc1c364340
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 614bd21a3057319d9ffa518e8e861cdafa1e1cbbf849d22962b3f1f2cbce0d8140e7a0f90fa685c4513978c3b0e0e072b94cf643acf99d38b866f5d8d497add9
|
7
|
+
data.tar.gz: cc89b4781a3e048a5a70ff03956bbed2d71f951ed5d17d64cd851f68f7fb06f5630314103a7c9822e9dbe70183bb55957885006b775a0cfaee03310d2868adc7
|
data/Rakefile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- ruby -*-
|
2
2
|
#
|
3
|
-
# Copyright (C) 2011-
|
3
|
+
# Copyright (C) 2011-2018 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
|
@@ -88,12 +88,13 @@ package_task = GNOME2::Rake::PackageTask.new do |package|
|
|
88
88
|
:name => "glib",
|
89
89
|
:download_site => :gnome,
|
90
90
|
:label => "GLib",
|
91
|
-
:version => "2.
|
91
|
+
:version => "2.56.0",
|
92
92
|
:compression_method => "xz",
|
93
93
|
:windows => {
|
94
94
|
:need_autoreconf => true,
|
95
95
|
:patches => [
|
96
96
|
"glib-2.54.1-add-missing-exeext.diff",
|
97
|
+
"glib-2.56.0-add-missing-weekday-full-is-locale.patch",
|
97
98
|
],
|
98
99
|
:built_file => "bin/libglib-2.0-0.dll",
|
99
100
|
},
|
@@ -126,32 +127,33 @@ package_task = GNOME2::Rake::PackageTask.new do |package|
|
|
126
127
|
:name => "libtasn1",
|
127
128
|
:download_site => :gnu,
|
128
129
|
:label => "Libtasn1",
|
129
|
-
:version => "4.
|
130
|
+
:version => "4.13",
|
130
131
|
:windows => {
|
131
132
|
:built_file => "bin/libtasn1-6.dll",
|
132
133
|
},
|
133
134
|
},
|
134
135
|
{
|
135
|
-
:name => "
|
136
|
+
:name => "libidn2",
|
136
137
|
:download_site => :gnu,
|
137
|
-
:
|
138
|
-
:
|
138
|
+
:download_name => "libidn",
|
139
|
+
:label => "Libidn2",
|
140
|
+
:version => "2.0.4",
|
139
141
|
:windows => {
|
140
|
-
:built_file => "bin/
|
142
|
+
:built_file => "bin/libidn2-0.dll",
|
141
143
|
},
|
142
144
|
},
|
143
145
|
{
|
144
|
-
:name => "p11-kit",
|
145
|
-
:
|
146
|
+
:name => "p11-glue/p11-kit",
|
147
|
+
:download_site => :github,
|
146
148
|
:label => "p11-kit",
|
147
|
-
:version => "0.23.
|
149
|
+
:version => "0.23.3",
|
148
150
|
:windows => {
|
149
151
|
:built_file => "bin/libp11-kit-0.dll",
|
150
152
|
},
|
151
153
|
},
|
152
154
|
{
|
153
155
|
:name => "gnutls",
|
154
|
-
:download_base_url => "
|
156
|
+
:download_base_url => "https://www.gnupg.org/ftp/gcrypt/gnutls/v3.4",
|
155
157
|
:label => "GnuTLS",
|
156
158
|
:version => "3.4.10",
|
157
159
|
:compression_method => "xz",
|
@@ -171,13 +173,12 @@ package_task = GNOME2::Rake::PackageTask.new do |package|
|
|
171
173
|
:name => "glib-networking",
|
172
174
|
:download_site => :gnome,
|
173
175
|
:label => "glib-networking",
|
174
|
-
:version => "2.
|
176
|
+
:version => "2.56.0",
|
175
177
|
:compression_method => "xz",
|
176
178
|
:windows => {
|
177
|
-
:
|
178
|
-
"
|
179
|
-
"
|
180
|
-
"--without-ca-certificates",
|
179
|
+
:meson_args => [
|
180
|
+
"-Dlibproxy_support=false",
|
181
|
+
"-Dgnome_proxy_support=false",
|
181
182
|
],
|
182
183
|
:built_file => "lib/gio/modules/libgiognutls.dll",
|
183
184
|
},
|
data/ext/glib2/glib2.def
CHANGED
@@ -39,6 +39,9 @@ EXPORTS
|
|
39
39
|
rbgobj_rvalue_to_gvalue
|
40
40
|
rbgobj_initialize_gvalue
|
41
41
|
rbgobj_initialize_object
|
42
|
+
rbgobj_class_info_lookup
|
43
|
+
rbgobj_class_info_lookup_by_gtype
|
44
|
+
rbgobj_class_info_define
|
42
45
|
rbgobj_lookup_class
|
43
46
|
rbgobj_lookup_class_by_gtype
|
44
47
|
rbgobj_gtype_to_ruby_class
|
data/ext/glib2/rbglib-bytes.c
CHANGED
data/ext/glib2/rbglib.h
CHANGED
@@ -36,7 +36,7 @@ extern "C" {
|
|
36
36
|
|
37
37
|
#define RBGLIB_MAJOR_VERSION 3
|
38
38
|
#define RBGLIB_MINOR_VERSION 2
|
39
|
-
#define RBGLIB_MICRO_VERSION
|
39
|
+
#define RBGLIB_MICRO_VERSION 2
|
40
40
|
|
41
41
|
#ifndef RB_ZALLOC
|
42
42
|
# ifdef ZALLOC
|
@@ -46,6 +46,10 @@ extern "C" {
|
|
46
46
|
# endif
|
47
47
|
#endif
|
48
48
|
|
49
|
+
#ifndef RB_ALLOC_N
|
50
|
+
# define RB_ALLOC_N(type, n) ALLOC_N(type, n)
|
51
|
+
#endif
|
52
|
+
|
49
53
|
/* For Ruby < 2.3 */
|
50
54
|
#ifndef RB_OBJ_FROZEN
|
51
55
|
# define RB_OBJ_FROZEN(obj) OBJ_FROZEN(obj)
|
data/ext/glib2/rbgobj_object.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2011-
|
3
|
+
* Copyright (C) 2011-2018 Ruby-GNOME2 Project Team
|
4
4
|
* Copyright (C) 2002-2004 Ruby-GNOME2 Project Team
|
5
5
|
* Copyright (C) 2002-2003 Masahiro Sakai
|
6
6
|
* Copyright (C) 1998-2000 Yukihiro Matsumoto,
|
@@ -58,8 +58,9 @@ holder_mark(gobj_holder *holder)
|
|
58
58
|
}
|
59
59
|
|
60
60
|
static void
|
61
|
-
holder_unref(
|
61
|
+
holder_unref(void *data)
|
62
62
|
{
|
63
|
+
gobj_holder *holder = data;
|
63
64
|
if (holder->gobj) {
|
64
65
|
if (!holder->destroyed) {
|
65
66
|
g_object_set_qdata(holder->gobj, RUBY_GOBJECT_OBJ_KEY, NULL);
|
@@ -71,19 +72,37 @@ holder_unref(gobj_holder *holder)
|
|
71
72
|
}
|
72
73
|
|
73
74
|
static void
|
74
|
-
holder_free(
|
75
|
+
holder_free(void *data)
|
75
76
|
{
|
77
|
+
gobj_holder *holder = data;
|
76
78
|
holder_unref(holder);
|
77
79
|
xfree(holder);
|
78
80
|
}
|
79
81
|
|
82
|
+
static const rb_data_type_t rg_glib_object_type = {
|
83
|
+
"GLib::Object",
|
84
|
+
{
|
85
|
+
holder_mark,
|
86
|
+
holder_free,
|
87
|
+
NULL,
|
88
|
+
NULL,
|
89
|
+
NULL,
|
90
|
+
},
|
91
|
+
NULL,
|
92
|
+
NULL,
|
93
|
+
RUBY_TYPED_FREE_IMMEDIATELY,
|
94
|
+
};
|
95
|
+
|
80
96
|
VALUE
|
81
97
|
rbgobj_object_alloc_func(VALUE klass)
|
82
98
|
{
|
83
99
|
gobj_holder* holder;
|
84
100
|
VALUE result;
|
85
101
|
|
86
|
-
result =
|
102
|
+
result = TypedData_Make_Struct(klass,
|
103
|
+
gobj_holder,
|
104
|
+
&rg_glib_object_type,
|
105
|
+
holder);
|
87
106
|
holder->self = result;
|
88
107
|
holder->gobj = NULL;
|
89
108
|
holder->cinfo = NULL;
|
@@ -105,7 +124,7 @@ rbgobj_gobject_initialize(VALUE obj, gpointer cobj)
|
|
105
124
|
gobj_holder* holder = g_object_get_qdata((GObject*)cobj, RUBY_GOBJECT_OBJ_KEY);
|
106
125
|
if (holder)
|
107
126
|
rb_raise(rb_eRuntimeError, "ruby wrapper for this GObject* already exists.");
|
108
|
-
|
127
|
+
TypedData_Get_Struct(obj, gobj_holder, &rg_glib_object_type, holder);
|
109
128
|
holder->cinfo = RVAL2CINFO(obj);
|
110
129
|
holder->gobj = (GObject*)cobj;
|
111
130
|
holder->destroyed = FALSE;
|
@@ -149,10 +168,7 @@ rbgobj_get_gobject(VALUE obj)
|
|
149
168
|
{
|
150
169
|
gobj_holder* holder;
|
151
170
|
|
152
|
-
|
153
|
-
rb_raise(rb_eTypeError, "not a GLib::Object");
|
154
|
-
|
155
|
-
Data_Get_Struct(obj, gobj_holder, holder);
|
171
|
+
TypedData_Get_Struct(obj, gobj_holder, &rg_glib_object_type, holder);
|
156
172
|
|
157
173
|
if (holder->destroyed)
|
158
174
|
rb_raise(rb_eTypeError, "destroyed GLib::Object");
|
@@ -566,10 +582,7 @@ rg_destroyed_p(VALUE self)
|
|
566
582
|
{
|
567
583
|
gobj_holder* holder;
|
568
584
|
|
569
|
-
|
570
|
-
rb_raise(rb_eTypeError, "not a GLib::Object");
|
571
|
-
|
572
|
-
Data_Get_Struct(self, gobj_holder, holder);
|
585
|
+
TypedData_Get_Struct(self, gobj_holder, &rg_glib_object_type, holder);
|
573
586
|
|
574
587
|
return CBOOL2RVAL(holder->destroyed);
|
575
588
|
}
|
@@ -582,7 +595,7 @@ rg_inspect(VALUE self)
|
|
582
595
|
char *s;
|
583
596
|
VALUE result;
|
584
597
|
|
585
|
-
|
598
|
+
TypedData_Get_Struct(self, gobj_holder, &rg_glib_object_type, holder);
|
586
599
|
|
587
600
|
class_name = rb_class2name(CLASS_OF(self));
|
588
601
|
if (!holder->destroyed)
|
@@ -602,7 +615,7 @@ rg_unref(VALUE self)
|
|
602
615
|
{
|
603
616
|
gobj_holder* holder;
|
604
617
|
|
605
|
-
|
618
|
+
TypedData_Get_Struct(self, gobj_holder, &rg_glib_object_type, holder);
|
606
619
|
|
607
620
|
if (holder->destroyed)
|
608
621
|
rb_raise(rb_eTypeError, "destroyed GLib::Object");
|
@@ -780,7 +793,7 @@ static VALUE
|
|
780
793
|
gobj_ref_count(VALUE self)
|
781
794
|
{
|
782
795
|
gobj_holder* holder;
|
783
|
-
|
796
|
+
TypedData_Get_Struct(self, gobj_holder, &rg_glib_object_type, holder);
|
784
797
|
return INT2NUM(holder->gobj ? holder->gobj->ref_count : 0);
|
785
798
|
}
|
786
799
|
|
@@ -788,7 +801,7 @@ static VALUE
|
|
788
801
|
rg_floating_p(VALUE self)
|
789
802
|
{
|
790
803
|
gobj_holder* holder;
|
791
|
-
|
804
|
+
TypedData_Get_Struct(self, gobj_holder, &rg_glib_object_type, holder);
|
792
805
|
if (holder->gobj) {
|
793
806
|
return CBOOL2RVAL(g_object_is_floating(holder->gobj));
|
794
807
|
} else {
|
data/ext/glib2/rbgobj_type.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2002-
|
3
|
+
* Copyright (C) 2002-2018 Ruby-GNOME2 Project Team
|
4
4
|
* Copyright (C) 2002,2003 Masahiro Sakai
|
5
5
|
*
|
6
6
|
* This library is free software; you can redistribute it and/or
|
@@ -48,133 +48,93 @@ typedef struct {
|
|
48
48
|
} RGObjClassInfoDynamic;
|
49
49
|
|
50
50
|
typedef struct {
|
51
|
-
VALUE parent;
|
52
51
|
GType gtype;
|
53
|
-
|
54
|
-
|
52
|
+
const gchar *name;
|
53
|
+
VALUE module;
|
54
|
+
VALUE parent;
|
55
|
+
} RGObjDefineClassData;
|
55
56
|
|
56
57
|
static void
|
57
|
-
cinfo_mark(
|
58
|
+
cinfo_mark(void *data)
|
58
59
|
{
|
60
|
+
RGObjClassInfo *cinfo = data;
|
59
61
|
rb_gc_mark(cinfo->klass);
|
60
62
|
}
|
61
63
|
|
62
|
-
|
63
|
-
|
64
|
+
static void
|
65
|
+
cinfo_free(void *data)
|
64
66
|
{
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
Data_Get_Struct(data, RGObjClassInfo, cinfo);
|
69
|
-
return cinfo;
|
70
|
-
}
|
71
|
-
|
72
|
-
if (TYPE(klass) == T_CLASS) {
|
73
|
-
VALUE super;
|
74
|
-
super = rb_funcall(klass, id_superclass, 0);
|
75
|
-
return rbgobj_lookup_class(super);
|
76
|
-
}
|
77
|
-
|
78
|
-
rb_raise(rb_eRuntimeError, "can't get gobject class information");
|
67
|
+
RGObjClassInfo *cinfo = data;
|
68
|
+
xfree(cinfo->name);
|
69
|
+
xfree(cinfo->data_type);
|
79
70
|
}
|
80
71
|
|
81
|
-
static
|
82
|
-
|
83
|
-
|
72
|
+
static RGObjClassInfo *
|
73
|
+
rbgobj_class_info_define_without_lock(GType gtype,
|
74
|
+
const gchar *name,
|
75
|
+
VALUE module,
|
76
|
+
VALUE parent);
|
84
77
|
|
85
|
-
static
|
86
|
-
|
78
|
+
static void
|
79
|
+
rbgobj_class_info_fill_name(RGObjClassInfo *cinfo)
|
87
80
|
{
|
88
|
-
VALUE
|
81
|
+
VALUE rb_name;
|
89
82
|
|
90
|
-
if (
|
91
|
-
return
|
83
|
+
if (cinfo->name) {
|
84
|
+
return;
|
85
|
+
}
|
92
86
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
return cInstantiatable;
|
97
|
-
case G_TYPE_BOXED:
|
98
|
-
return rb_cObject;
|
99
|
-
case G_TYPE_POINTER:
|
100
|
-
return rb_cData;
|
101
|
-
case G_TYPE_ENUM:
|
102
|
-
case G_TYPE_FLAGS:
|
103
|
-
return rb_cObject;
|
104
|
-
default:
|
105
|
-
{
|
106
|
-
GType parent_type;
|
87
|
+
if (!RB_TYPE_P(cinfo->klass, RUBY_T_CLASS)) {
|
88
|
+
return;
|
89
|
+
}
|
107
90
|
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
} else {
|
112
|
-
const RGObjClassInfo *cinfo_super;
|
113
|
-
cinfo_super =
|
114
|
-
rbgobj_lookup_class_by_gtype_without_lock(parent_type,
|
115
|
-
Qnil,
|
116
|
-
TRUE);
|
117
|
-
return cinfo_super->klass;
|
118
|
-
}
|
119
|
-
}
|
91
|
+
rb_name = rb_funcall(cinfo->klass, rb_intern("name"), 0);
|
92
|
+
if (NIL_P(rb_name)) {
|
93
|
+
return;
|
120
94
|
}
|
95
|
+
|
96
|
+
cinfo->name = RB_ALLOC_N(char, RSTRING_LEN(rb_name) + 1);
|
97
|
+
memcpy(cinfo->name, RSTRING_PTR(rb_name), RSTRING_LEN(rb_name));
|
98
|
+
cinfo->name[RSTRING_LEN(rb_name)] = '\0';
|
99
|
+
cinfo->data_type->wrap_struct_name = cinfo->name;
|
121
100
|
}
|
122
101
|
|
123
|
-
static
|
124
|
-
|
125
|
-
gboolean create_class)
|
102
|
+
static RGObjClassInfo *
|
103
|
+
rbgobj_class_info_register_without_lock(GType gtype, VALUE klass)
|
126
104
|
{
|
105
|
+
rb_data_type_t *data_type;
|
106
|
+
RGObjClassInfo *cinfo;
|
127
107
|
GType fundamental_type;
|
128
|
-
|
129
|
-
|
130
|
-
void* gclass = NULL;
|
108
|
+
RGObjClassInfoDynamic *cinfod;
|
109
|
+
void *gclass = NULL;
|
131
110
|
VALUE c;
|
132
111
|
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
112
|
+
data_type = RB_ZALLOC(rb_data_type_t);
|
113
|
+
data_type->function.dmark = cinfo_mark;
|
114
|
+
data_type->function.dfree = cinfo_free;
|
115
|
+
if (RB_TYPE_P(klass, RUBY_T_CLASS)) {
|
116
|
+
VALUE p = RCLASS_SUPER(klass);
|
117
|
+
while (p != rb_cObject) {
|
118
|
+
if (RTYPEDDATA_P(p)) {
|
119
|
+
data_type->parent = RTYPEDDATA_TYPE(p);
|
120
|
+
break;
|
121
|
+
}
|
122
|
+
p = RCLASS_SUPER(p);
|
123
|
+
}
|
124
|
+
}
|
125
|
+
data_type->flags = RUBY_TYPED_FREE_IMMEDIATELY;
|
142
126
|
|
143
|
-
c =
|
127
|
+
c = TypedData_Make_Struct(rb_cData, RGObjClassInfo, data_type, cinfo);
|
128
|
+
cinfo->klass = klass;
|
144
129
|
cinfo->gtype = gtype;
|
145
130
|
cinfo->mark = NULL;
|
146
131
|
cinfo->free = NULL;
|
147
132
|
cinfo->flags = 0;
|
133
|
+
cinfo->name = NULL;
|
134
|
+
cinfo->data_type = data_type;
|
135
|
+
rbgobj_class_info_fill_name(cinfo);
|
148
136
|
|
149
137
|
fundamental_type = G_TYPE_FUNDAMENTAL(gtype);
|
150
|
-
switch (fundamental_type){
|
151
|
-
case G_TYPE_POINTER:
|
152
|
-
case G_TYPE_BOXED:
|
153
|
-
case G_TYPE_PARAM:
|
154
|
-
case G_TYPE_OBJECT:
|
155
|
-
case G_TYPE_ENUM:
|
156
|
-
case G_TYPE_FLAGS:
|
157
|
-
if (NIL_P(parent)) parent = get_superclass(gtype);
|
158
|
-
cinfo->klass = rb_funcall(rb_cClass, id_new, 1, parent);
|
159
|
-
break;
|
160
|
-
|
161
|
-
case G_TYPE_INTERFACE:
|
162
|
-
cinfo->klass = rb_module_new();
|
163
|
-
break;
|
164
|
-
|
165
|
-
default:
|
166
|
-
if (NIL_P(parent)) parent = get_superclass(gtype);
|
167
|
-
if (NIL_P(parent)) {
|
168
|
-
fprintf(stderr,
|
169
|
-
"%s: %s's fundamental type %s isn't supported\n",
|
170
|
-
"rbgobj_lookup_class_by_gtype",
|
171
|
-
g_type_name(gtype),
|
172
|
-
g_type_name(fundamental_type));
|
173
|
-
return NULL;
|
174
|
-
}
|
175
|
-
cinfo->klass = rb_funcall(rb_cClass, id_new, 1, parent);
|
176
|
-
}
|
177
|
-
|
178
138
|
switch (fundamental_type){
|
179
139
|
case G_TYPE_BOXED:
|
180
140
|
rb_define_alloc_func(cinfo->klass, rbgobj_boxed_alloc_func);
|
@@ -217,10 +177,14 @@ rbgobj_lookup_class_by_gtype_without_lock(GType gtype, VALUE parent,
|
|
217
177
|
interfaces = g_type_interfaces(gtype, &n_interfaces);
|
218
178
|
for (i = 0; i < n_interfaces; i++){
|
219
179
|
const RGObjClassInfo *iface_cinfo;
|
220
|
-
iface_cinfo =
|
221
|
-
|
222
|
-
|
223
|
-
|
180
|
+
iface_cinfo = rbgobj_class_info_lookup_by_gtype(interfaces[i]);
|
181
|
+
if (!iface_cinfo) {
|
182
|
+
iface_cinfo =
|
183
|
+
rbgobj_class_info_define_without_lock(interfaces[i],
|
184
|
+
NULL,
|
185
|
+
rb_cObject,
|
186
|
+
Qnil);
|
187
|
+
}
|
224
188
|
rb_include_module(cinfo->klass, iface_cinfo->klass);
|
225
189
|
}
|
226
190
|
g_free(interfaces);
|
@@ -253,55 +217,198 @@ rbgobj_lookup_class_by_gtype_without_lock(GType gtype, VALUE parent,
|
|
253
217
|
}
|
254
218
|
|
255
219
|
static VALUE
|
256
|
-
|
220
|
+
get_superclass(GType gtype, VALUE module)
|
221
|
+
{
|
222
|
+
VALUE super_class;
|
223
|
+
|
224
|
+
if (rbgobj_convert_get_superclass(gtype, &super_class))
|
225
|
+
return super_class;
|
226
|
+
|
227
|
+
switch (gtype) {
|
228
|
+
case G_TYPE_PARAM:
|
229
|
+
case G_TYPE_OBJECT:
|
230
|
+
return cInstantiatable;
|
231
|
+
case G_TYPE_BOXED:
|
232
|
+
return rb_cObject;
|
233
|
+
case G_TYPE_POINTER:
|
234
|
+
return rb_cData;
|
235
|
+
case G_TYPE_ENUM:
|
236
|
+
case G_TYPE_FLAGS:
|
237
|
+
return rb_cObject;
|
238
|
+
default:
|
239
|
+
{
|
240
|
+
GType parent_type;
|
241
|
+
|
242
|
+
parent_type = g_type_parent(gtype);
|
243
|
+
if (parent_type == G_TYPE_INVALID) {
|
244
|
+
return cInstantiatable;
|
245
|
+
} else {
|
246
|
+
const RGObjClassInfo *cinfo_super;
|
247
|
+
cinfo_super = rbgobj_class_info_lookup_by_gtype(parent_type);
|
248
|
+
if (!cinfo_super) {
|
249
|
+
cinfo_super = rbgobj_class_info_define_without_lock(parent_type,
|
250
|
+
NULL,
|
251
|
+
module,
|
252
|
+
Qnil);
|
253
|
+
}
|
254
|
+
return cinfo_super->klass;
|
255
|
+
}
|
256
|
+
}
|
257
|
+
}
|
258
|
+
}
|
259
|
+
|
260
|
+
static RGObjClassInfo *
|
261
|
+
rbgobj_class_info_define_without_lock(GType gtype,
|
262
|
+
const gchar *name,
|
263
|
+
VALUE module,
|
264
|
+
VALUE parent)
|
265
|
+
{
|
266
|
+
GType fundamental_type;
|
267
|
+
VALUE klass;
|
268
|
+
|
269
|
+
fundamental_type = G_TYPE_FUNDAMENTAL(gtype);
|
270
|
+
switch (fundamental_type){
|
271
|
+
case G_TYPE_POINTER:
|
272
|
+
case G_TYPE_BOXED:
|
273
|
+
case G_TYPE_PARAM:
|
274
|
+
case G_TYPE_OBJECT:
|
275
|
+
case G_TYPE_ENUM:
|
276
|
+
case G_TYPE_FLAGS:
|
277
|
+
if (NIL_P(parent)) parent = get_superclass(gtype, module);
|
278
|
+
klass = rb_funcall(rb_cClass, id_new, 1, parent);
|
279
|
+
break;
|
280
|
+
|
281
|
+
case G_TYPE_INTERFACE:
|
282
|
+
klass = rb_module_new();
|
283
|
+
break;
|
284
|
+
|
285
|
+
default:
|
286
|
+
if (NIL_P(parent)) parent = get_superclass(gtype, module);
|
287
|
+
if (NIL_P(parent)) {
|
288
|
+
fprintf(stderr,
|
289
|
+
"rbgobj_class_info_define: "
|
290
|
+
"Unsupported fundamental type: <%s>(%s)\n",
|
291
|
+
g_type_name(fundamental_type),
|
292
|
+
g_type_name(gtype));
|
293
|
+
return NULL;
|
294
|
+
}
|
295
|
+
klass = rb_funcall(rb_cClass, id_new, 1, parent);
|
296
|
+
}
|
297
|
+
|
298
|
+
if (name) {
|
299
|
+
rb_define_const(module, name, klass);
|
300
|
+
}
|
301
|
+
return rbgobj_class_info_register_without_lock(gtype, klass);
|
302
|
+
}
|
303
|
+
|
304
|
+
static VALUE
|
305
|
+
rbgobj_class_info_define_body(VALUE data)
|
257
306
|
{
|
258
|
-
|
307
|
+
RGObjDefineClassData *cdata = (RGObjDefineClassData *)data;
|
259
308
|
const RGObjClassInfo *cinfo;
|
260
309
|
|
261
|
-
cinfo =
|
262
|
-
|
263
|
-
|
310
|
+
cinfo = rbgobj_class_info_define_without_lock(cdata->gtype,
|
311
|
+
cdata->name,
|
312
|
+
cdata->module,
|
313
|
+
cdata->parent);
|
264
314
|
return (VALUE)cinfo;
|
265
315
|
}
|
266
316
|
|
267
317
|
static VALUE
|
268
|
-
|
318
|
+
rbgobj_class_info_define_ensure(G_GNUC_UNUSED VALUE data)
|
269
319
|
{
|
270
320
|
rb_funcall(lookup_class_mutex, id_unlock, 0);
|
271
321
|
return Qundef;
|
272
322
|
}
|
273
323
|
|
324
|
+
RGObjClassInfo *
|
325
|
+
rbgobj_class_info_define(GType gtype,
|
326
|
+
const gchar *name,
|
327
|
+
VALUE module,
|
328
|
+
VALUE parent)
|
329
|
+
{
|
330
|
+
RGObjDefineClassData data;
|
331
|
+
|
332
|
+
data.gtype = gtype;
|
333
|
+
data.name = name;
|
334
|
+
data.module = module;
|
335
|
+
data.parent = parent;
|
336
|
+
|
337
|
+
rb_funcall(lookup_class_mutex, id_lock, 0);
|
338
|
+
return (RGObjClassInfo *)rb_ensure(rbgobj_class_info_define_body,
|
339
|
+
(VALUE)&data,
|
340
|
+
rbgobj_class_info_define_ensure,
|
341
|
+
(VALUE)&data);
|
342
|
+
}
|
343
|
+
|
344
|
+
/* deprecated */
|
345
|
+
const RGObjClassInfo *
|
346
|
+
rbgobj_lookup_class(VALUE klass)
|
347
|
+
{
|
348
|
+
return rbgobj_class_info_lookup(klass);
|
349
|
+
}
|
350
|
+
|
351
|
+
const RGObjClassInfo *
|
352
|
+
rbgobj_class_info_lookup(VALUE klass)
|
353
|
+
{
|
354
|
+
VALUE data = rb_hash_aref(klass_to_cinfo, klass);
|
355
|
+
if (!NIL_P(data)) {
|
356
|
+
RGObjClassInfo *cinfo;
|
357
|
+
if (RTYPEDDATA_P(data)) {
|
358
|
+
TypedData_Get_Struct(data,
|
359
|
+
RGObjClassInfo,
|
360
|
+
RTYPEDDATA_TYPE(data),
|
361
|
+
cinfo);
|
362
|
+
} else {
|
363
|
+
Data_Get_Struct(data, RGObjClassInfo, cinfo);
|
364
|
+
}
|
365
|
+
return cinfo;
|
366
|
+
}
|
367
|
+
|
368
|
+
if (TYPE(klass) == T_CLASS) {
|
369
|
+
VALUE super;
|
370
|
+
super = rb_funcall(klass, id_superclass, 0);
|
371
|
+
return rbgobj_lookup_class(super);
|
372
|
+
}
|
373
|
+
|
374
|
+
rb_raise(rb_eRuntimeError, "can't get gobject class information");
|
375
|
+
return NULL;
|
376
|
+
}
|
377
|
+
|
378
|
+
const RGObjClassInfo *
|
379
|
+
rbgobj_class_info_lookup_by_gtype(GType gtype)
|
380
|
+
{
|
381
|
+
if (gtype == G_TYPE_INVALID)
|
382
|
+
return NULL;
|
383
|
+
|
384
|
+
return g_hash_table_lookup(gtype_to_cinfo, GUINT_TO_POINTER(gtype));
|
385
|
+
}
|
386
|
+
|
387
|
+
/* deprecated */
|
274
388
|
const RGObjClassInfo *
|
275
389
|
rbgobj_lookup_class_by_gtype(GType gtype, VALUE parent)
|
276
390
|
{
|
277
391
|
return rbgobj_lookup_class_by_gtype_full(gtype, parent, TRUE);
|
278
392
|
}
|
279
393
|
|
394
|
+
/* deprecated */
|
280
395
|
const RGObjClassInfo *
|
281
396
|
rbgobj_lookup_class_by_gtype_full(GType gtype, VALUE parent,
|
282
397
|
gboolean create_class)
|
283
398
|
{
|
284
399
|
const RGObjClassInfo *info;
|
285
|
-
RGObjClassByGtypeData data;
|
286
400
|
|
287
|
-
|
288
|
-
|
401
|
+
if (gtype == G_TYPE_INVALID)
|
402
|
+
return NULL;
|
403
|
+
|
404
|
+
info = rbgobj_class_info_lookup_by_gtype(gtype);
|
405
|
+
if (info)
|
289
406
|
return info;
|
290
|
-
}
|
291
407
|
|
292
|
-
if (!create_class)
|
408
|
+
if (!create_class)
|
293
409
|
return NULL;
|
294
|
-
}
|
295
|
-
|
296
|
-
data.gtype = gtype;
|
297
|
-
data.parent = parent;
|
298
|
-
data.create_class = create_class;
|
299
410
|
|
300
|
-
|
301
|
-
return (RGObjClassInfo *)rb_ensure(rbgobj_lookup_class_by_gtype_body,
|
302
|
-
(VALUE)&data,
|
303
|
-
rbgobj_lookup_class_by_gtype_ensure,
|
304
|
-
(VALUE)&data);
|
411
|
+
return rbgobj_class_info_define(gtype, NULL, rb_cObject, parent);
|
305
412
|
}
|
306
413
|
|
307
414
|
VALUE
|
@@ -317,14 +424,22 @@ VALUE
|
|
317
424
|
rbgobj_define_class(GType gtype, const gchar *name, VALUE module,
|
318
425
|
RGMarkFunc mark, RGFreeFunc free, VALUE parent)
|
319
426
|
{
|
320
|
-
RGObjClassInfo*
|
321
|
-
|
322
|
-
|
427
|
+
RGObjClassInfo *cinfo;
|
428
|
+
|
429
|
+
if (gtype == G_TYPE_INVALID)
|
430
|
+
rb_bug("rbgobj_define_class: Invalid GType: <%s>\n", name);
|
323
431
|
|
324
|
-
cinfo = (RGObjClassInfo*)
|
432
|
+
cinfo = (RGObjClassInfo *)rbgobj_class_info_lookup_by_gtype(gtype);
|
433
|
+
if (cinfo) {
|
434
|
+
if (!rb_const_defined(module, rb_intern(name))) {
|
435
|
+
rb_define_const(module, name, cinfo->klass);
|
436
|
+
rbgobj_class_info_fill_name(cinfo);
|
437
|
+
}
|
438
|
+
} else {
|
439
|
+
cinfo = rbgobj_class_info_define(gtype, name, module, parent);
|
440
|
+
}
|
325
441
|
cinfo->mark = mark;
|
326
442
|
cinfo->free = free;
|
327
|
-
rb_define_const(module, name, cinfo->klass);
|
328
443
|
return cinfo->klass;
|
329
444
|
}
|
330
445
|
|
@@ -381,8 +496,9 @@ rbgobj_register_class(VALUE klass,
|
|
381
496
|
RGObjClassInfo* cinfo = NULL;
|
382
497
|
VALUE c = Qnil;
|
383
498
|
|
384
|
-
if (klass2gtype)
|
499
|
+
if (klass2gtype) {
|
385
500
|
c = Data_Make_Struct(rb_cData, RGObjClassInfo, cinfo_mark, NULL, cinfo);
|
501
|
+
}
|
386
502
|
if (gtype2klass && !cinfo)
|
387
503
|
cinfo = g_new(RGObjClassInfo, 1);
|
388
504
|
|
data/ext/glib2/rbgobject.h
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
|
2
2
|
/*
|
3
|
-
* Copyright (C) 2011-
|
3
|
+
* Copyright (C) 2011-2018 Ruby-GNOME2 Project Team
|
4
4
|
* Copyright (C) 2003,2006 Ruby-GNOME2 Project Team
|
5
5
|
* Copyright (C) 2002,2003 Masahiro Sakai
|
6
6
|
*
|
@@ -134,6 +134,8 @@ typedef struct {
|
|
134
134
|
RGMarkFunc mark;
|
135
135
|
RGFreeFunc free;
|
136
136
|
int flags; /* RGObjClassFlag */
|
137
|
+
gchar *name;
|
138
|
+
rb_data_type_t *data_type;
|
137
139
|
} RGObjClassInfo;
|
138
140
|
|
139
141
|
/* rbgobject.c */
|
@@ -170,8 +172,17 @@ extern gboolean rbgobj_gc_mark_instance(gpointer instance);
|
|
170
172
|
|
171
173
|
|
172
174
|
/* rbgobj_type.c */
|
175
|
+
extern const RGObjClassInfo *rbgobj_class_info_lookup(VALUE klass);
|
176
|
+
extern const RGObjClassInfo *rbgobj_class_info_lookup_by_gtype(GType gtype);
|
177
|
+
extern RGObjClassInfo *rbgobj_class_info_define(GType gtype,
|
178
|
+
const gchar *name,
|
179
|
+
VALUE module,
|
180
|
+
VALUE parent);
|
181
|
+
/* deprecated */
|
173
182
|
extern const RGObjClassInfo *rbgobj_lookup_class(VALUE klass);
|
183
|
+
/* deprecated */
|
174
184
|
extern const RGObjClassInfo *rbgobj_lookup_class_by_gtype(GType gtype, VALUE parent);
|
185
|
+
/* deprecated */
|
175
186
|
extern const RGObjClassInfo *rbgobj_lookup_class_by_gtype_full(GType gtype,
|
176
187
|
VALUE parent,
|
177
188
|
gboolean create_object);
|
@@ -1,6 +1,4 @@
|
|
1
|
-
#
|
2
|
-
#
|
3
|
-
# Copyright (C) 2013-2015 Ruby-GNOME2 Project Team
|
1
|
+
# Copyright (C) 2013-2018 Ruby-GNOME2 Project Team
|
4
2
|
#
|
5
3
|
# This library is free software; you can redistribute it and/or
|
6
4
|
# modify it under the terms of the GNU Lesser General Public
|
@@ -21,6 +19,7 @@ require "open-uri"
|
|
21
19
|
module GNOME2
|
22
20
|
module Rake
|
23
21
|
class ExternalPackage < Struct.new(:name,
|
22
|
+
:download_name,
|
24
23
|
:base_name,
|
25
24
|
:archive_base_name,
|
26
25
|
:label,
|
@@ -47,8 +46,13 @@ module GNOME2
|
|
47
46
|
resolve_value(super) || "gz"
|
48
47
|
end
|
49
48
|
|
49
|
+
def download_name
|
50
|
+
resolve_value(super) || name
|
51
|
+
end
|
52
|
+
|
50
53
|
def base_name
|
51
|
-
resolve_value(super) ||
|
54
|
+
resolve_value(super) ||
|
55
|
+
"#{name.split('/').last}-#{version.gsub(/\Av/, '')}"
|
52
56
|
end
|
53
57
|
|
54
58
|
def archive_base_name
|
@@ -113,6 +117,8 @@ module GNOME2
|
|
113
117
|
latest_version_webkitgtk
|
114
118
|
when :icu
|
115
119
|
latest_version_icu
|
120
|
+
when :github
|
121
|
+
latest_version_github
|
116
122
|
else
|
117
123
|
nil
|
118
124
|
end
|
@@ -132,20 +138,23 @@ module GNOME2
|
|
132
138
|
when :gnome
|
133
139
|
base_url = gnome_base_url
|
134
140
|
release_series = version.gsub(/\A(\d+\.\d+)(?:[^\d].*)?\z/, '\1')
|
135
|
-
base_url << "/#{
|
141
|
+
base_url << "/#{download_name}/#{release_series}"
|
136
142
|
when :freedesktop
|
137
143
|
base_url = freedesktop_base_url
|
138
|
-
base_url << "/#{
|
144
|
+
base_url << "/#{download_name}/release"
|
139
145
|
when :freedesktop_gstreamer
|
140
146
|
base_url = freedesktop_gstreamer_base_url
|
141
|
-
base_url << "/#{
|
147
|
+
base_url << "/#{download_name}"
|
142
148
|
when :gnu
|
143
149
|
base_url = gnu_base_url
|
144
|
-
base_url << "/#{
|
150
|
+
base_url << "/#{download_name}"
|
145
151
|
when :webkitgtk
|
146
152
|
base_url = webkitgtk_base_url
|
147
153
|
when :icu
|
148
154
|
base_url = "#{icu_base_url}/#{version}"
|
155
|
+
when :github
|
156
|
+
base_url = github_base_url
|
157
|
+
base_url << "/#{download_name}/releases/download/#{version}"
|
149
158
|
else
|
150
159
|
base_url = nil
|
151
160
|
end
|
@@ -176,6 +185,10 @@ module GNOME2
|
|
176
185
|
"http://download.icu-project.org/files/icu4c"
|
177
186
|
end
|
178
187
|
|
188
|
+
def github_base_url
|
189
|
+
"https://github.com"
|
190
|
+
end
|
191
|
+
|
179
192
|
def sort_versions(versions)
|
180
193
|
versions.sort_by do |version|
|
181
194
|
version.split(".").collect(&:to_i)
|
@@ -183,7 +196,7 @@ module GNOME2
|
|
183
196
|
end
|
184
197
|
|
185
198
|
def latest_version_gnome
|
186
|
-
base_url = "#{gnome_base_url}/#{
|
199
|
+
base_url = "#{gnome_base_url}/#{download_name}"
|
187
200
|
minor_versions = []
|
188
201
|
open(base_url) do |index|
|
189
202
|
index.read.scan(/<a (.+?)>/) do |content,|
|
@@ -217,7 +230,7 @@ module GNOME2
|
|
217
230
|
end
|
218
231
|
|
219
232
|
def latest_version_freedesktop
|
220
|
-
base_url = "#{freedesktop_base_url}/#{
|
233
|
+
base_url = "#{freedesktop_base_url}/#{download_name}/release"
|
221
234
|
versions = []
|
222
235
|
open(base_url) do |index|
|
223
236
|
index.read.scan(/<a (.+?)>/) do |content,|
|
@@ -233,7 +246,7 @@ module GNOME2
|
|
233
246
|
end
|
234
247
|
|
235
248
|
def latest_version_freedesktop_gstreamer
|
236
|
-
base_url = "#{freedesktop_gstreamer_base_url}/#{
|
249
|
+
base_url = "#{freedesktop_gstreamer_base_url}/#{download_name}"
|
237
250
|
versions = []
|
238
251
|
open(base_url) do |index|
|
239
252
|
index.read.scan(/<a (.+?)>/) do |content,|
|
@@ -255,7 +268,7 @@ module GNOME2
|
|
255
268
|
end
|
256
269
|
|
257
270
|
def latest_version_gnu
|
258
|
-
base_url = "#{gnu_base_url}/#{
|
271
|
+
base_url = "#{gnu_base_url}/#{download_name}"
|
259
272
|
versions = []
|
260
273
|
open(base_url) do |index|
|
261
274
|
index.read.scan(/<a (.+?)>/) do |content,|
|
@@ -301,6 +314,13 @@ module GNOME2
|
|
301
314
|
sort_versions(versions).last
|
302
315
|
end
|
303
316
|
|
317
|
+
def latest_version_github
|
318
|
+
latest_url = "#{github_base_url}/#{download_name}/releases/latest"
|
319
|
+
open(latest_url) do |latest_page|
|
320
|
+
return latest_page.base_uri.path.split("/").last
|
321
|
+
end
|
322
|
+
end
|
323
|
+
|
304
324
|
class WindowsConfiguration < Struct.new(:build,
|
305
325
|
:include_paths,
|
306
326
|
:library_paths,
|
@@ -49,32 +49,7 @@ module GNOME2
|
|
49
49
|
private
|
50
50
|
def define_build_tasks
|
51
51
|
namespace :build do
|
52
|
-
|
53
|
-
namespace :prepare do
|
54
|
-
prepare_task_names << "pkg_config"
|
55
|
-
task :pkg_config do
|
56
|
-
depended_packages = @package.windows.build_dependencies
|
57
|
-
use_packages = [@package.name] + depended_packages
|
58
|
-
pkg_config_path = use_packages.collect do |package|
|
59
|
-
"../#{package}/#{@package.windows.relative_binary_dir}/lib/pkgconfig"
|
60
|
-
end
|
61
|
-
ENV["PKG_CONFIG_PATH"] = pkg_config_path.collect do |path|
|
62
|
-
File.expand_path(path)
|
63
|
-
end.join(":")
|
64
|
-
ENV["PKG_CONFIG_LIBDIR"] = rcairo_pkgconfig_path
|
65
|
-
end
|
66
|
-
|
67
|
-
prepare_task_names << "pkg_config_for_build"
|
68
|
-
task :pkg_config_for_build do
|
69
|
-
# XXX: Is it needless?
|
70
|
-
# ENV["PKG_CONFIG_FOR_BUILD"] = "env - pkg-config"
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
full_prepare_task_names = prepare_task_names.collect do |name|
|
75
|
-
"windows:builder:build:prepare:#{name}"
|
76
|
-
end
|
77
|
-
task :prepare => full_prepare_task_names
|
52
|
+
task :prepare
|
78
53
|
|
79
54
|
build_packages.each do |package|
|
80
55
|
namespace package.name do
|
@@ -118,6 +93,7 @@ module GNOME2
|
|
118
93
|
sh("tar", "xf", tar_full_path.to_s)
|
119
94
|
end
|
120
95
|
|
96
|
+
env = build_env
|
121
97
|
package_dir_path =
|
122
98
|
package_tmp_dir + package.base_name + package.base_dir_in_package
|
123
99
|
Dir.chdir(package_dir_path.to_s) do
|
@@ -137,30 +113,29 @@ module GNOME2
|
|
137
113
|
make_n_jobs = ENV["MAKE_N_JOBS"]
|
138
114
|
build_make_args << "-j#{make_n_jobs}" if make_n_jobs
|
139
115
|
end
|
140
|
-
|
141
|
-
#
|
116
|
+
# build_make_args << "--debug"
|
117
|
+
# build_make_args << "V=1"
|
118
|
+
# build_make_args << "VERBOSE=1"
|
119
|
+
# env["GI_SCANNER_DEBUG"] = "save-temps"
|
142
120
|
if File.exist?("meson.build") and not File.exist?("Makefile.am")
|
143
121
|
source_dir = Dir.pwd
|
144
122
|
build_dir = "build"
|
145
123
|
mkdir_p(build_dir)
|
146
124
|
Dir.chdir(build_dir) do
|
147
|
-
meson(package, source_dir)
|
148
|
-
sh(make_args_to_env(build_make_args),
|
125
|
+
meson(env, package, source_dir)
|
126
|
+
sh(env.merge(make_args_to_env(build_make_args)),
|
149
127
|
"nice", "ninja") or exit(false)
|
150
|
-
sh(make_args_to_env(install_make_args),
|
128
|
+
sh(env.merge(make_args_to_env(install_make_args)),
|
151
129
|
"ninja", "install") or exit(false)
|
152
130
|
end
|
153
131
|
else
|
154
132
|
if File.exist?("Makefile.in")
|
155
|
-
configure(package)
|
133
|
+
configure(env, package)
|
156
134
|
else
|
157
|
-
cmake(package)
|
135
|
+
cmake(env, package)
|
158
136
|
end
|
159
|
-
|
160
|
-
|
161
|
-
# build_make_args << "VERBOSE=1"
|
162
|
-
sh("nice", "make", *build_make_args) or exit(false)
|
163
|
-
sh("make", "install", *install_make_args) or exit(false)
|
137
|
+
sh(env, "nice", "make", *build_make_args) or exit(false)
|
138
|
+
sh(env, "make", "install", *install_make_args) or exit(false)
|
164
139
|
end
|
165
140
|
|
166
141
|
package_license_dir = license_dir + package.name
|
@@ -182,20 +157,46 @@ module GNOME2
|
|
182
157
|
end
|
183
158
|
end
|
184
159
|
|
185
|
-
def
|
186
|
-
|
187
|
-
|
188
|
-
|
160
|
+
def build_env
|
161
|
+
path = "#{g_ir_scanner_bin_dir}:#{ENV["PATH"]}"
|
162
|
+
env = {
|
163
|
+
"GI_HOST_OS" => "nt",
|
164
|
+
"MSYSTEM" => "MINGW64",
|
165
|
+
"GREP_OPTIONS" => "--text",
|
166
|
+
"PATH" => path,
|
167
|
+
}
|
168
|
+
depended_packages = @package.windows.build_dependencies
|
169
|
+
use_packages = [@package.name] + depended_packages
|
170
|
+
pkg_config_path = use_packages.collect do |package|
|
171
|
+
"../#{package}/#{@package.windows.relative_binary_dir}/lib/pkgconfig"
|
172
|
+
end
|
173
|
+
env["PKG_CONFIG_PATH"] = pkg_config_path.collect do |path|
|
174
|
+
File.expand_path(path)
|
175
|
+
end.join(":")
|
176
|
+
env["PKG_CONFIG_LIBDIR"] = rcairo_pkgconfig_path
|
177
|
+
env
|
178
|
+
end
|
179
|
+
|
180
|
+
def configure(env, package)
|
181
|
+
sh(env, "./autogen.sh") if package.windows.need_autogen?
|
182
|
+
if package.windows.need_autoreconf?
|
183
|
+
sh(env, "autoreconf", "--install", "--force")
|
184
|
+
end
|
185
|
+
sh(env, "env")
|
186
|
+
sh(env,
|
187
|
+
"./configure",
|
189
188
|
cc_env(package),
|
190
189
|
dlltool_env,
|
191
190
|
"CPPFLAGS=#{cppflags(package)}",
|
192
191
|
"LDFLAGS=#{ldflags(package)}",
|
193
192
|
"--prefix=#{dist_dir}",
|
194
193
|
"--host=#{@package.windows.build_host}",
|
194
|
+
# "--target=#{@package.windows.build_host}",
|
195
|
+
# "--build=x86_64-pc-linux-gnu",
|
195
196
|
*package.windows.configure_args) or exit(false)
|
196
197
|
end
|
197
198
|
|
198
|
-
def meson(package, source_dir)
|
199
|
+
def meson(env, package, source_dir)
|
199
200
|
cross_file = Tempfile.new("meson-cross-file")
|
200
201
|
cross_file.puts(<<-CROSS_FILE)
|
201
202
|
[host_machine]
|
@@ -213,21 +214,22 @@ dlltool = '/usr/bin/#{dlltool}'
|
|
213
214
|
pkgconfig = '/usr/bin/pkg-config'
|
214
215
|
CROSS_FILE
|
215
216
|
cross_file.close
|
216
|
-
sh({
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
},
|
217
|
+
sh(env.merge({
|
218
|
+
"CPPFLAGS" => cppflags(package),
|
219
|
+
"LDFLAGS" => ldflags(package),
|
220
|
+
}),
|
221
221
|
"meson",
|
222
222
|
source_dir,
|
223
223
|
".",
|
224
224
|
"--prefix=#{dist_dir}",
|
225
|
+
"--libdir=lib",
|
225
226
|
"--cross-file=#{cross_file.path}",
|
226
227
|
*package.windows.meson_args) or exit(false)
|
227
228
|
end
|
228
229
|
|
229
|
-
def cmake(package)
|
230
|
-
sh(
|
230
|
+
def cmake(env, package)
|
231
|
+
sh(env,
|
232
|
+
"cmake",
|
231
233
|
".",
|
232
234
|
"-DCMAKE_INSTALL_PREFIX=#{dist_dir}",
|
233
235
|
"-DCMAKE_SYSTEM_NAME=Windows",
|
@@ -270,8 +272,7 @@ pkgconfig = '/usr/bin/pkg-config'
|
|
270
272
|
end
|
271
273
|
|
272
274
|
def rcairo_dir
|
273
|
-
|
274
|
-
@package.project_root_dir.parent + "rcairo.#{suffix}"
|
275
|
+
@package.project_root_dir.parent + "rcairo"
|
275
276
|
end
|
276
277
|
|
277
278
|
def rcairo_pkgconfig_path
|
data/lib/mkmf-gnome2.rb
CHANGED
@@ -431,17 +431,7 @@ end
|
|
431
431
|
def check_cairo(options={})
|
432
432
|
rcairo_source_dir = options[:rcairo_source_dir]
|
433
433
|
if rcairo_source_dir.nil?
|
434
|
-
suffix = nil
|
435
|
-
if windows_platform?
|
436
|
-
case RUBY_PLATFORM
|
437
|
-
when /\Ax86-mingw/
|
438
|
-
suffix = "win32"
|
439
|
-
when /\Ax64-mingw/
|
440
|
-
suffix = "win64"
|
441
|
-
end
|
442
|
-
end
|
443
434
|
rcairo_source_base_dir = "rcairo"
|
444
|
-
rcairo_source_base_dir << ".#{suffix}" if suffix
|
445
435
|
top_dir = options[:top_dir]
|
446
436
|
if top_dir
|
447
437
|
rcairo_source_dir = File.join(top_dir, "..", rcairo_source_base_dir)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glib2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.2.
|
4
|
+
version: 3.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- The Ruby-GNOME2 Project Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-04-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pkg-config
|
@@ -213,7 +213,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
213
213
|
version: '0'
|
214
214
|
requirements: []
|
215
215
|
rubyforge_project:
|
216
|
-
rubygems_version: 2.
|
216
|
+
rubygems_version: 2.7.6
|
217
217
|
signing_key:
|
218
218
|
specification_version: 4
|
219
219
|
summary: Ruby/GLib2 is a Ruby binding of GLib-2.x.
|