glib2 2.2.0 → 2.2.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3eb848d80c98299853e48020a8dd40d75621e5c8
4
- data.tar.gz: e3adcc8d05626b832fbdadd7ab792f4d8bdd8cd3
3
+ metadata.gz: 04730751dce8565060ffd80a06d6a0ff6a15810a
4
+ data.tar.gz: 259e897aa9cd8d7a9ed55fd4d5d46250d8fffefe
5
5
  SHA512:
6
- metadata.gz: acf367073537e5e0d7428196406187e463ef5e8f055d3313c6ecba10ed7e9995151368f5dc285b380c200df0034ea342f2a8220b881d86d194d413a5e8e9e6cc
7
- data.tar.gz: 54aebddcd2bdf934eabb00a771fd691a8f0384ff275754b38aa95c69dfeea5074688315f02c7148abc098d2de20f032f69853243d252e2adde57c2bf01b51176
6
+ metadata.gz: 012bb0c94321282d928c856e78861ba209fd043dc89aad1f91e9c452c33e26a894efba8291923dfaa78d2763f8f7e9729c8a7918bb205ea12b8805c8349ebc0b
7
+ data.tar.gz: 570415824340c5482d8ff2673f5b41c64a4dcd11f33c1e01f9ed3c497e4fda0f4e92a9a1a90ff6a9850e8dddcaf32500b1ebe6cd01454fc13cf61a6117975cab
data/Rakefile CHANGED
@@ -23,20 +23,43 @@ package = GNOME2Package.new do |_package|
23
23
  _package.dependency.gem.runtime = [["pkg-config", ">= 0"]]
24
24
  _package.dependency.gem.development = [["test-unit", ">= 2"]]
25
25
  _package.win32.packages = []
26
- _package.win32.dependencies = ["libffi", "gettext-runtime"]
26
+ _package.win32.dependencies = []
27
27
  _package.external_packages = [
28
+ {
29
+ :name => "libiconv",
30
+ :download_site => :gnu,
31
+ :label => "libiconv",
32
+ :version => "1.14",
33
+ :windows => {
34
+ :built_file => "bin/libiconv-2.dll",
35
+ },
36
+ },
37
+ {
38
+ :name => "gettext",
39
+ :download_site => :gnu,
40
+ :label => "gettext-runtime",
41
+ :version => "0.19.2",
42
+ :base_dir_in_package => "gettext-runtime",
43
+ :windows => {
44
+ :built_file => "bin/libintl-8.dll",
45
+ },
46
+ },
47
+ {
48
+ :name => "libffi",
49
+ :download_base_url => "ftp://sourceware.org/pub/libffi",
50
+ :label => "libffi",
51
+ :version => "3.1",
52
+ :windows => {
53
+ :built_file => "bin/libffi-6.dll",
54
+ },
55
+ },
28
56
  {
29
57
  :name => "glib",
30
58
  :download_site => :gnome,
31
59
  :label => "GLib",
32
- :version => "2.38.2",
60
+ :version => "2.42.0",
33
61
  :compression_method => "xz",
34
62
  :windows => {
35
- :configure_args => [
36
- "LIBFFI_CFLAGS=-I#{include_dir}",
37
- "LIBFFI_LIBS=-L#{libffi_lib_dir} -lffi",
38
- "--disable-modular-tests",
39
- ],
40
63
  :need_autoreconf => true,
41
64
  :patches => [
42
65
  "glib-2.38.2-add-missing-exeext.diff",
@@ -46,9 +69,9 @@ package = GNOME2Package.new do |_package|
46
69
  },
47
70
  {
48
71
  :name => "gmp",
49
- :download_base_url => "ftp://ftp.gmplib.org/pub/gmp-5.1.3",
72
+ :download_base_url => "ftp://ftp.gmplib.org/pub/gmp-6.0.0",
50
73
  :label => "GNU MP",
51
- :version => "5.1.3",
74
+ :version => "6.0.0",
52
75
  :compression_method => "xz",
53
76
  :windows => {
54
77
  :configure_args => [
@@ -72,7 +95,7 @@ package = GNOME2Package.new do |_package|
72
95
  :name => "gnutls",
73
96
  :download_base_url => "ftp://ftp.gnutls.org/gcrypt/gnutls/v3.2",
74
97
  :label => "GnuTLS",
75
- :version => "3.2.12",
98
+ :version => "3.2.18",
76
99
  :compression_method => "xz",
77
100
  :windows => {
78
101
  :configure_args => [
@@ -88,7 +111,7 @@ package = GNOME2Package.new do |_package|
88
111
  :name => "glib-networking",
89
112
  :download_site => :gnome,
90
113
  :label => "glib-networking",
91
- :version => "2.38.2",
114
+ :version => "2.42.0",
92
115
  :compression_method => "xz",
93
116
  :windows => {
94
117
  :configure_args => [
@@ -107,43 +130,3 @@ package = GNOME2Package.new do |_package|
107
130
  end
108
131
  end
109
132
  package.define_tasks
110
-
111
- namespace :win32 do
112
- namespace :libffi do
113
- namespace :header do
114
- desc "Move libffi headers to include/"
115
- task :fix do
116
- libffi_version = "libffi-3.0.6"
117
- mv(Dir.glob(File.join(libffi_lib_dir, libffi_version, "include", "*.h")),
118
- include_dir)
119
- rm_rf(File.join(libffi_lib_dir, libffi_version))
120
- end
121
- end
122
- end
123
-
124
- namespace :downloader do
125
- task :after => [
126
- "win32:libffi:header:fix",
127
- ]
128
- end
129
-
130
- namespace :gettext do
131
- namespace :header do
132
- desc "Copy gettext headers to include/glib-2.0/"
133
- task :fix do
134
- cp(File.join(include_dir, "libintl.h"),
135
- glib2_include_dir)
136
- end
137
- end
138
- end
139
-
140
- namespace :builder do
141
- namespace :build do
142
- namespace :glib do
143
- task :after => [
144
- "win32:gettext:header:fix",
145
- ]
146
- end
147
- end
148
- end
149
- end
data/ext/glib2/extconf.rb CHANGED
@@ -42,7 +42,7 @@ have_func("rb_errinfo", ruby_header)
42
42
  have_func("rb_sourcefile", ruby_header)
43
43
  have_func("rb_sourceline", ruby_header)
44
44
  have_func("ruby_set_current_source", ruby_header)
45
- have_func("rb_thread_blocking_region", ruby_header)
45
+ have_func("rb_thread_call_without_gvl2", ruby_header)
46
46
  have_func("ruby_native_thread_p", ruby_header)
47
47
  have_func("rb_thread_call_with_gvl", ruby_header)
48
48
  have_func("rb_str_new_cstr", ruby_header)
@@ -68,6 +68,7 @@ end
68
68
  glib_mkenums(enum_types_prefix, headers, "G_TYPE_", ["glib-object.h"])
69
69
 
70
70
  $defs << "-DRUBY_GLIB2_COMPILATION"
71
+
71
72
  create_makefile(module_name)
72
73
 
73
74
  pkg_config_dir = with_config("pkg-config-dir")
data/ext/glib2/glib2.def CHANGED
@@ -108,6 +108,8 @@ EXPORTS
108
108
  rbg_check_array_type
109
109
  rbg_check_hash_type
110
110
  rbg_scan_options
111
+ rbg_inspect
112
+ rbg_interrupt_source_new
111
113
  rbgutil_id_module_eval DATA
112
114
  rbgutil_def_setters
113
115
  rbgutil_glist2ary
data/ext/glib2/rbglib.h CHANGED
@@ -36,7 +36,7 @@ extern "C" {
36
36
 
37
37
  #define RBGLIB_MAJOR_VERSION 2
38
38
  #define RBGLIB_MINOR_VERSION 2
39
- #define RBGLIB_MICRO_VERSION 0
39
+ #define RBGLIB_MICRO_VERSION 1
40
40
 
41
41
  #ifndef RSTRING_PTR
42
42
  # define RSTRING_PTR(s) (RSTRING(s)->ptr)
@@ -1,6 +1,6 @@
1
1
  /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
2
  /*
3
- * Copyright (C) 2011 Ruby-GNOME2 Project Team
3
+ * Copyright (C) 2011-2014 Ruby-GNOME2 Project Team
4
4
  * Copyright (C) 2005 Masao Mutoh
5
5
  *
6
6
  * This library is free software; you can redistribute it and/or
@@ -21,16 +21,6 @@
21
21
 
22
22
  #include "rbgprivate.h"
23
23
 
24
- #ifndef HAVE_RB_THREAD_BLOCKING_REGION
25
- # include <version.h>
26
- # include <rubysig.h>
27
- # include <node.h>
28
- # include <time.h>
29
- # ifdef HAVE_CURR_THREAD
30
- # define rb_curr_thread curr_thread
31
- # endif
32
- #endif
33
-
34
24
  GStaticPrivate rg_polling_key = G_STATIC_PRIVATE_INIT;
35
25
 
36
26
  /*
@@ -51,13 +41,6 @@ typedef struct _callback_info_t
51
41
  /*****************************************/
52
42
  static GPollFunc default_poll_func;
53
43
 
54
- #ifdef HAVE_RB_THREAD_BLOCKING_REGION
55
-
56
- /* just for ruby-1.9.0. */
57
- #if !defined(RUBY_UBF_IO) && defined(RB_UBF_DFL)
58
- # define RUBY_UBF_IO RB_UBF_DFL
59
- #endif
60
-
61
44
  typedef struct _PollInfo
62
45
  {
63
46
  GPollFD *ufds;
@@ -87,7 +70,11 @@ rg_poll(GPollFD *ufds, guint nfsd, gint timeout)
87
70
  info.result = 0;
88
71
 
89
72
  g_static_private_set(&rg_polling_key, GINT_TO_POINTER(TRUE), NULL);
73
+ #ifdef HAVE_RB_THREAD_CALL_WITHOUT_GVL2
74
+ rb_thread_call_without_gvl2(rg_poll_in_blocking, &info, RUBY_UBF_IO, NULL);
75
+ #else
90
76
  rb_thread_blocking_region(rg_poll_in_blocking, &info, RUBY_UBF_IO, NULL);
77
+ #endif
91
78
  g_static_private_set(&rg_polling_key, GINT_TO_POINTER(FALSE), NULL);
92
79
 
93
80
  return info.result;
@@ -99,20 +86,6 @@ ruby_source_set_priority (G_GNUC_UNUSED VALUE self, G_GNUC_UNUSED VALUE priority
99
86
  return Qnil;
100
87
  }
101
88
 
102
- #else
103
- static gint
104
- rg_poll(GPollFD *ufds, guint nfsd, gint timeout)
105
- {
106
- gint result;
107
-
108
- TRAP_BEG;
109
- result = default_poll_func(ufds, nfsd, timeout);
110
- TRAP_END;
111
-
112
- return result;
113
- }
114
- #endif
115
-
116
89
  static void
117
90
  restore_poll_func(G_GNUC_UNUSED VALUE data)
118
91
  {
@@ -121,294 +94,6 @@ restore_poll_func(G_GNUC_UNUSED VALUE data)
121
94
  }
122
95
  }
123
96
 
124
- #ifndef HAVE_RB_THREAD_BLOCKING_REGION
125
- static guint ruby_source_id = 0;
126
-
127
- /* from eval.c */
128
- #define WAIT_FD (1<<0)
129
- #define WAIT_SELECT (1<<1)
130
- #define WAIT_TIME (1<<2)
131
- #define WAIT_JOIN (1<<3)
132
- #define WAIT_PID (1<<4)
133
-
134
- #define DELAY_INFTY 1E30
135
-
136
- #ifdef RUBY_RELEASE_YEAR
137
- # define CHECK_RUBY_RELEASE_DATE(year, month, day) \
138
- (RUBY_RELEASE_YEAR >= (year) && \
139
- RUBY_RELEASE_MONTH >= (month) && \
140
- RUBY_RELEASE_DAY >= (day))
141
- #else
142
- # define CHECK_RUBY_RELEASE_DATE(year, month, day) 0
143
- #endif
144
-
145
- static double
146
- timeofday(void)
147
- {
148
- struct timeval tv;
149
- #if CHECK_RUBY_RELEASE_DATE(2009, 1, 7)
150
- /* The following CLOCK_MONOTONIC change was introduced into
151
- * Ruby 1.8.6 and 1.8.7 at 2009-01-07.
152
- *
153
- * 1.8.6:
154
- * Wed Jan 7 10:06:12 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
155
- *
156
- * * eval.c (timeofday): use monotonic clock. based on a patch
157
- * from zimbatm <zimbatm@oree.ch> in [ruby-core:16627].
158
- *
159
- * 1.8.7:
160
- * Wed Jan 7 10:09:46 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
161
- *
162
- * * eval.c (timeofday): use monotonic clock. based on a patch
163
- * from zimbatm <zimbatm@oree.ch> in [ruby-core:16627].
164
- */
165
- # ifdef CLOCK_MONOTONIC
166
- struct timespec tp;
167
-
168
- if (clock_gettime(CLOCK_MONOTONIC, &tp) == 0) {
169
- return (double)tp.tv_sec + (double)tp.tv_nsec * 1e-9;
170
- }
171
- # endif
172
- #endif
173
- gettimeofday(&tv, NULL);
174
- return (double)tv.tv_sec + (double)tv.tv_usec * 1e-6;
175
- }
176
-
177
- /*****************************************/
178
- typedef struct _RGSource
179
- {
180
- GSource source;
181
-
182
- GList *poll_fds;
183
- GList *old_poll_fds;
184
- gboolean ready;
185
- } RGSource;
186
-
187
- static void
188
- source_cleanup_poll_fds(GSource *source)
189
- {
190
- RGSource *rg_source = (RGSource *)source;
191
- GList *node;
192
-
193
- for (node = rg_source->old_poll_fds; node; node = g_list_next(node)) {
194
- GPollFD *poll_fd = node->data;
195
-
196
- g_source_remove_poll(source, poll_fd);
197
- g_slice_free(GPollFD, poll_fd);
198
- }
199
- g_list_free(rg_source->old_poll_fds);
200
- rg_source->old_poll_fds = NULL;
201
- }
202
-
203
- static inline void
204
- source_prepare_add_poll_fd(GSource *source, gint fd, guchar events)
205
- {
206
- GPollFD *poll_fd;
207
- GList *node;
208
- RGSource *rg_source = (RGSource *)source;
209
-
210
- for (node = rg_source->old_poll_fds; node; node = g_list_next(node)) {
211
- poll_fd = node->data;
212
- if (poll_fd->fd == fd && poll_fd->events == events) {
213
- rg_source->old_poll_fds =
214
- g_list_remove_link(rg_source->old_poll_fds, node);
215
- rg_source->poll_fds = g_list_concat(rg_source->poll_fds, node);
216
- return;
217
- }
218
- }
219
-
220
- poll_fd = g_slice_new0(GPollFD);
221
- poll_fd->fd = fd;
222
- poll_fd->events = events;
223
-
224
- g_source_add_poll(source, poll_fd);
225
- rg_source->poll_fds = g_list_prepend(rg_source->poll_fds, poll_fd);
226
- }
227
-
228
- static inline void
229
- source_prepare_add_poll(GSource *source, rb_thread_t thread)
230
- {
231
- if (thread->wait_for == WAIT_FD) {
232
- /* The thread is blocked on thread->fd for read. */
233
- source_prepare_add_poll_fd(source, thread->fd, G_IO_IN);
234
- return;
235
- }
236
-
237
- if (thread->wait_for & WAIT_SELECT) {
238
- /* thread->fd is the maximum fd of the fds in the various sets. Need to
239
- * check the sets to see which fd's to wait for */
240
- int fd;
241
-
242
- for (fd = 0; fd < thread->fd; fd++) {
243
- gushort events = 0;
244
-
245
- if (FD_ISSET(fd, &thread->readfds))
246
- events |= G_IO_IN;
247
- if (FD_ISSET(fd, &thread->writefds))
248
- events |= G_IO_OUT;
249
- if (FD_ISSET(fd, &thread->exceptfds))
250
- events |= G_IO_PRI | G_IO_ERR | G_IO_HUP;
251
-
252
- if (events != 0)
253
- source_prepare_add_poll_fd(source, fd, events);
254
- }
255
- }
256
- }
257
-
258
- static inline gboolean
259
- source_prepare_setup_poll_fd(GSource *source, gint *timeout)
260
- {
261
- RGSource *rg_source = (RGSource *)source;
262
- rb_thread_t thread;
263
- gdouble now;
264
-
265
- g_assert(rg_source->old_poll_fds == NULL);
266
- rg_source->old_poll_fds = rg_source->poll_fds;
267
- rg_source->poll_fds = NULL;
268
-
269
- now = timeofday();
270
- thread = rb_curr_thread;
271
- do {
272
- thread = thread->next;
273
-
274
- if ((thread->wait_for == 0 && thread->status == THREAD_RUNNABLE &&
275
- thread != rb_curr_thread) ||
276
- (thread->wait_for & WAIT_JOIN &&
277
- thread->join->status == THREAD_KILLED)) {
278
- rg_source->poll_fds = g_list_concat(rg_source->poll_fds,
279
- rg_source->old_poll_fds);
280
- rg_source->old_poll_fds = NULL;
281
- return TRUE;
282
- }
283
-
284
- if (thread->wait_for & WAIT_TIME && thread->delay != DELAY_INFTY) {
285
- gint delay;
286
-
287
- delay = (thread->delay - now) * 1000;
288
- if (delay <= 0) {
289
- rg_source->poll_fds = g_list_concat(rg_source->poll_fds,
290
- rg_source->old_poll_fds);
291
- rg_source->old_poll_fds = NULL;
292
- return TRUE;
293
- }
294
- if (*timeout == -1 || delay < *timeout)
295
- *timeout = delay;
296
- }
297
-
298
- if (thread->wait_for == WAIT_FD || thread->wait_for & WAIT_SELECT)
299
- source_prepare_add_poll(source, thread);
300
- } while (thread != rb_curr_thread);
301
-
302
- source_cleanup_poll_fds(source);
303
-
304
- return FALSE;
305
- }
306
-
307
- static gboolean
308
- source_prepare(GSource *source, gint *timeout)
309
- {
310
- RGSource *rg_source = (RGSource *)source;
311
-
312
- *timeout = -1;
313
- rg_source->ready = source_prepare_setup_poll_fd(source, timeout);
314
-
315
- return rg_source->ready;
316
- }
317
-
318
- static gboolean
319
- source_check(GSource *source)
320
- {
321
- RGSource *rg_source = (RGSource *)source;
322
- GList *node;
323
-
324
- if (rg_source->ready)
325
- return TRUE;
326
-
327
- for (node = rg_source->poll_fds; node; node = g_list_next(node)) {
328
- GPollFD *poll_fd = node->data;
329
-
330
- if (poll_fd->revents)
331
- return TRUE;
332
- }
333
-
334
- return FALSE;
335
- }
336
-
337
- static gboolean
338
- source_dispatch(G_GNUC_UNUSED GSource *source,
339
- G_GNUC_UNUSED GSourceFunc callback,
340
- G_GNUC_UNUSED gpointer user_data)
341
- {
342
- TRAP_BEG;
343
- rb_thread_schedule();
344
- TRAP_END;
345
-
346
- return TRUE;
347
- }
348
-
349
- static void
350
- source_finalize(GSource *source)
351
- {
352
- RGSource *rg_source = (RGSource *)source;
353
- GList *node;
354
-
355
- for (node = rg_source->old_poll_fds; node; node = g_list_next(node)) {
356
- GPollFD *poll_fd = node->data;
357
- g_slice_free(GPollFD, poll_fd);
358
- }
359
-
360
- for (node = rg_source->poll_fds; node; node = g_list_next(node)) {
361
- GPollFD *poll_fd = node->data;
362
- g_slice_free(GPollFD, poll_fd);
363
- }
364
-
365
- g_list_free(rg_source->old_poll_fds);
366
- rg_source->old_poll_fds = NULL;
367
-
368
- g_list_free(rg_source->poll_fds);
369
- rg_source->poll_fds = NULL;
370
- }
371
-
372
- static GSourceFuncs source_funcs = {
373
- source_prepare,
374
- source_check,
375
- source_dispatch,
376
- source_finalize,
377
- NULL,
378
- NULL
379
- };
380
-
381
- static GSource *
382
- ruby_source_new(void)
383
- {
384
- GSource *source;
385
- RGSource *rg_source;
386
-
387
- source = g_source_new(&source_funcs, sizeof(RGSource));
388
- g_source_set_can_recurse(source, TRUE);
389
-
390
- rg_source = (RGSource *)source;
391
- rg_source->poll_fds = NULL;
392
- rg_source->old_poll_fds = NULL;
393
-
394
- return source;
395
- }
396
-
397
- static VALUE
398
- ruby_source_set_priority(G_GNUC_UNUSED VALUE self, VALUE priority)
399
- {
400
- GSource *ruby_source = NULL;
401
-
402
- if (ruby_source_id != 0)
403
- ruby_source = g_main_context_find_source_by_id(NULL, ruby_source_id);
404
-
405
- if (ruby_source)
406
- g_source_set_priority(ruby_source, NUM2INT(priority));
407
-
408
- return Qnil;
409
- }
410
- #endif
411
-
412
97
  static VALUE
413
98
  source_remove(G_GNUC_UNUSED VALUE self, VALUE tag)
414
99
  {
@@ -463,14 +148,6 @@ rg_initialize(VALUE self)
463
148
  context = g_main_context_new();
464
149
 
465
150
  g_main_context_set_poll_func(context, rg_poll);
466
- #ifndef HAVE_RB_THREAD_BLOCKING_REGION
467
- {
468
- GSource *source;
469
- source = ruby_source_new();
470
- g_source_attach(source, context);
471
- g_source_unref(source);
472
- }
473
- #endif
474
151
 
475
152
  G_INITIALIZE(self, context);
476
153
  return Qnil;
@@ -822,17 +499,6 @@ child_watch_add(VALUE self, VALUE pid)
822
499
  (GChildWatchFunc)child_watch_func, (gpointer)func));
823
500
  }
824
501
 
825
- #ifndef HAVE_RB_THREAD_BLOCKING_REGION
826
- static void
827
- ruby_source_remove(G_GNUC_UNUSED VALUE data)
828
- {
829
- if (ruby_source_id != 0) {
830
- g_source_remove(ruby_source_id);
831
- ruby_source_id = 0;
832
- }
833
- }
834
- #endif
835
-
836
502
  void
837
503
  Init_glib_main_context(void)
838
504
  {
@@ -896,16 +562,4 @@ Init_glib_main_context(void)
896
562
  default_poll_func = g_main_context_get_poll_func(NULL);
897
563
  g_main_context_set_poll_func(NULL, rg_poll);
898
564
  rb_set_end_proc(restore_poll_func, Qnil);
899
-
900
- #ifndef HAVE_RB_THREAD_BLOCKING_REGION
901
- {
902
- GSource *source;
903
-
904
- source = ruby_source_new();
905
- g_source_set_priority(source, G_PRIORITY_DEFAULT_IDLE);
906
- ruby_source_id = g_source_attach(source, NULL);
907
- g_source_unref(source);
908
- rb_set_end_proc(ruby_source_remove, Qnil);
909
- }
910
- #endif
911
565
  }
@@ -1,6 +1,6 @@
1
1
  /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
2
  /*
3
- * Copyright (C) 2011 Ruby-GNOME2 Project Team
3
+ * Copyright (C) 2011-2014 Ruby-GNOME2 Project Team
4
4
  * Copyright (C) 2005,2006 Masao Mutoh
5
5
  *
6
6
  * This library is free software; you can redistribute it and/or
@@ -57,10 +57,35 @@ rg_initialize(int argc, VALUE *argv, VALUE self)
57
57
  return Qnil;
58
58
  }
59
59
 
60
+ static gboolean
61
+ quit_loop(gpointer user_data)
62
+ {
63
+ GMainLoop *loop = user_data;
64
+ g_main_loop_quit(loop);
65
+ return G_SOURCE_REMOVE;
66
+ }
67
+
60
68
  static VALUE
61
69
  rg_run(VALUE self)
62
70
  {
63
- g_main_loop_run(_SELF(self));
71
+ GMainLoop *loop;
72
+ GSource *interrupt_source;
73
+
74
+ loop = _SELF(self);
75
+
76
+ interrupt_source = rbg_interrupt_source_new();
77
+ g_source_set_callback(interrupt_source,
78
+ quit_loop,
79
+ loop,
80
+ NULL);
81
+ g_source_attach(interrupt_source,
82
+ g_main_loop_get_context(loop));
83
+ g_main_loop_run(loop);
84
+ g_source_destroy(interrupt_source);
85
+ g_source_unref(interrupt_source);
86
+
87
+ rb_thread_check_ints();
88
+
64
89
  return self;
65
90
  }
66
91
 
@@ -47,7 +47,7 @@ boxed_free(boxed_holder *holder)
47
47
  if (holder->own && holder->boxed)
48
48
  g_boxed_free(holder->type, holder->boxed);
49
49
 
50
- free(holder);
50
+ xfree(holder);
51
51
  }
52
52
 
53
53
  /**********************************************************************/
@@ -71,11 +71,27 @@ rbgobj_boxed_s_allocate(VALUE klass)
71
71
  return result;
72
72
  }
73
73
 
74
- static G_GNUC_NORETURN VALUE
74
+ static VALUE
75
75
  rg_initialize(VALUE self)
76
76
  {
77
- rb_raise(rb_eTypeError, "can't initialize %s",
78
- rb_class2name(CLASS_OF(self)));
77
+ VALUE rb_class;
78
+
79
+ rb_class = CLASS_OF(self);
80
+ if (RVAL2CBOOL(rb_ivar_defined(rb_class, rb_intern("@size")))) {
81
+ const RGObjClassInfo *cinfo;
82
+ gpointer instance;
83
+ gsize instance_size;
84
+ cinfo = rbgobj_lookup_class(rb_class);
85
+ instance_size = NUM2UINT(rb_iv_get(rb_class, "@size"));
86
+ instance = alloca(instance_size);
87
+ memset(instance, 0, instance_size);
88
+ G_INITIALIZE(self, g_boxed_copy(cinfo->gtype, instance));
89
+ } else {
90
+ rb_raise(rb_eTypeError, "can't initialize %s",
91
+ rb_class2name(rb_class));
92
+ }
93
+
94
+ return Qnil;
79
95
  }
80
96
 
81
97
  static VALUE
@@ -58,7 +58,7 @@ holder_mark(gobj_holder *holder)
58
58
  }
59
59
 
60
60
  static void
61
- holder_free(gobj_holder *holder)
61
+ holder_unref(gobj_holder *holder)
62
62
  {
63
63
  if (holder->gobj) {
64
64
  if (!holder->destroyed) {
@@ -68,6 +68,12 @@ holder_free(gobj_holder *holder)
68
68
  }
69
69
  holder->gobj = NULL;
70
70
  }
71
+ }
72
+
73
+ static void
74
+ holder_free(gobj_holder *holder)
75
+ {
76
+ holder_unref(holder);
71
77
  xfree(holder);
72
78
  }
73
79
 
@@ -608,6 +614,23 @@ rg_inspect(VALUE self)
608
614
  return result;
609
615
  }
610
616
 
617
+ static VALUE
618
+ rg_unref(VALUE self)
619
+ {
620
+ gobj_holder* holder;
621
+
622
+ Data_Get_Struct(self, gobj_holder, holder);
623
+
624
+ if (holder->destroyed)
625
+ rb_raise(rb_eTypeError, "destroyed GLib::Object");
626
+ if (!holder->gobj)
627
+ rb_raise(rb_eTypeError, "uninitialize GLib::Object");
628
+
629
+ holder_unref(holder);
630
+
631
+ return self;
632
+ }
633
+
611
634
  static VALUE
612
635
  rg_type_name(VALUE self)
613
636
  {
@@ -842,6 +865,7 @@ Init_gobject_gobject(void)
842
865
 
843
866
  RG_DEF_METHOD(initialize, -1);
844
867
  rbg_define_method(RG_TARGET_NAMESPACE, "ref_count", gobj_ref_count, 0); /* for debugging */
868
+ RG_DEF_METHOD(unref, 0);
845
869
  RG_DEF_METHOD(inspect, 0);
846
870
  RG_DEF_METHOD(type_name, 0);
847
871
 
@@ -26,7 +26,9 @@
26
26
  /**********************************************************************/
27
27
  /* Type Mapping */
28
28
 
29
+ #ifndef rb_cMutex
29
30
  static VALUE rb_cMutex;
31
+ #endif
30
32
  static VALUE lookup_class_mutex;
31
33
 
32
34
  static ID id_new;
@@ -69,11 +71,7 @@ rbgobj_lookup_class(VALUE klass)
69
71
 
70
72
  if (TYPE(klass) == T_CLASS) {
71
73
  VALUE super;
72
- if (FL_TEST(klass, FL_SINGLETON)) {
73
- super = rb_class_real(klass);
74
- } else {
75
- super = rb_funcall(klass, id_superclass, 0);
76
- }
74
+ super = rb_funcall(klass, id_superclass, 0);
77
75
  return rbgobj_lookup_class(super);
78
76
  }
79
77
 
@@ -768,7 +766,9 @@ Init_gobject_gtype(void)
768
766
  init_typemap();
769
767
 
770
768
  /* type */
769
+ #ifndef rb_cMutex
771
770
  rb_cMutex = rb_const_get(rb_cObject, rb_intern("Mutex"));
771
+ #endif
772
772
  id_lock = rb_intern("lock");
773
773
  id_unlock = rb_intern("unlock");
774
774
  lookup_class_mutex = rb_funcall(rb_cMutex, id_new, 0);
@@ -56,9 +56,7 @@ typedef struct {
56
56
  GType type;
57
57
  } boxed_holder;
58
58
 
59
- #ifdef HAVE_RB_THREAD_BLOCKING_REGION
60
59
  G_GNUC_INTERNAL extern GStaticPrivate rg_polling_key;
61
- #endif
62
60
 
63
61
  extern VALUE rbgobj_cEnum;
64
62
  extern VALUE rbgobj_cFlags;
data/ext/glib2/rbgutil.c CHANGED
@@ -1,6 +1,6 @@
1
1
  /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
2
  /*
3
- * Copyright (C) 2011-2013 Ruby-GNOME2 Project Team
3
+ * Copyright (C) 2011-2014 Ruby-GNOME2 Project Team
4
4
  * Copyright (C) 2002-2004 Masao Mutoh
5
5
  *
6
6
  * This library is free software; you can redistribute it and/or
@@ -133,6 +133,44 @@ rbgutil_key_equal(VALUE rb_key, const char *key)
133
133
  }
134
134
  }
135
135
 
136
+ static gboolean
137
+ rbg_interrupt_prepare (G_GNUC_UNUSED GSource *soruce,
138
+ G_GNUC_UNUSED gint *timouet)
139
+ {
140
+ return rb_thread_interrupted(rb_thread_current());
141
+ }
142
+
143
+ static gboolean
144
+ rbg_interrupt_check (G_GNUC_UNUSED GSource *soruce)
145
+ {
146
+ return rb_thread_interrupted(rb_thread_current());
147
+ }
148
+
149
+ static gboolean
150
+ rbg_interrupt_dispatch (G_GNUC_UNUSED GSource *soruce,
151
+ GSourceFunc callback,
152
+ gpointer user_data)
153
+ {
154
+ if (callback) {
155
+ return callback(user_data);
156
+ } else {
157
+ return G_SOURCE_REMOVE;
158
+ }
159
+ }
160
+
161
+ static GSourceFuncs rbg_interrupt_funcs = {
162
+ rbg_interrupt_prepare,
163
+ rbg_interrupt_check,
164
+ rbg_interrupt_dispatch,
165
+ NULL
166
+ };
167
+
168
+ GSource *
169
+ rbg_interrupt_source_new(void)
170
+ {
171
+ return g_source_new(&rbg_interrupt_funcs, sizeof(GSource));
172
+ }
173
+
136
174
  void
137
175
  Init_gutil(void)
138
176
  {
data/ext/glib2/rbgutil.h CHANGED
@@ -1,6 +1,6 @@
1
1
  /* -*- c-file-style: "ruby"; indent-tabs-mode: nil -*- */
2
2
  /*
3
- * Copyright (C) 2011-2013 Ruby-GNOME2 Project Team
3
+ * Copyright (C) 2011-2014 Ruby-GNOME2 Project Team
4
4
  * Copyright (C) 2002,2003 Masao Mutoh
5
5
  *
6
6
  * This library is free software; you can redistribute it and/or
@@ -105,6 +105,7 @@ extern VALUE rbgutil_string_set_utf8_encoding(VALUE string);
105
105
  extern gboolean rbgutil_key_equal(VALUE rb_string, const char *key);
106
106
 
107
107
  extern const gchar *rbg_inspect(VALUE object);
108
+ extern GSource *rbg_interrupt_source_new(void);
108
109
 
109
110
  /*< protected >*/
110
111
  RUBY_GLIB2_VAR ID rbgutil_id_module_eval;
@@ -195,11 +195,9 @@ rbgutil_invoke_callback(VALUE (*func)(VALUE), VALUE arg)
195
195
  {
196
196
  #ifdef HAVE_NATIVETHREAD
197
197
  if (ruby_native_thread_p()) {
198
- # ifdef HAVE_RB_THREAD_BLOCKING_REGION
199
198
  if (!GPOINTER_TO_INT(g_static_private_get(&rg_polling_key))) {
200
199
  return rbgutil_protect(func, arg);
201
200
  }
202
- # endif
203
201
  # ifdef HAVE_RB_THREAD_CALL_WITH_GVL
204
202
  {
205
203
  CallbackRequest req;
@@ -26,6 +26,7 @@ module GNOME2
26
26
  :download_site,
27
27
  :download_base_url,
28
28
  :compression_method,
29
+ :base_dir_in_package,
29
30
  :windows,
30
31
  :native,
31
32
  :patches,
@@ -72,6 +73,10 @@ module GNOME2
72
73
  need_autoreconf
73
74
  end
74
75
 
76
+ def base_dir_in_package
77
+ super || "."
78
+ end
79
+
75
80
  def windows
76
81
  super || WindowsConfiguration.new({})
77
82
  end
@@ -99,6 +104,8 @@ module GNOME2
99
104
  base_url = "http://ftp.gnome.org/pub/gnome/sources"
100
105
  release_series = version.gsub(/\A(\d+\.\d+)(?:[^\d].*)?\z/, '\1')
101
106
  base_url << "/#{name}/#{release_series}"
107
+ when :gnu
108
+ base_url = "http://ftp.gnu.org/pub/gnu/#{name}"
102
109
  else
103
110
  base_url = nil
104
111
  end
@@ -109,6 +116,7 @@ module GNOME2
109
116
  :include_paths,
110
117
  :library_paths,
111
118
  :configure_args,
119
+ :cmake_args,
112
120
  :cc_args,
113
121
  :patches,
114
122
  :built_file,
@@ -139,6 +147,10 @@ module GNOME2
139
147
  super || []
140
148
  end
141
149
 
150
+ def cmake_args
151
+ super || []
152
+ end
153
+
142
154
  def cc_args
143
155
  super || []
144
156
  end
@@ -75,7 +75,7 @@ module GNOME2
75
75
  end
76
76
 
77
77
  def build_package_task_body(package)
78
- package_tmp_dir = @package.tmp_dir + package.name
78
+ package_tmp_dir = @package.tmp_dir + "native" + package.name
79
79
  rm_rf(package_tmp_dir)
80
80
  mkdir_p(package_tmp_dir)
81
81
 
@@ -84,7 +84,9 @@ module GNOME2
84
84
  sh("tar", "xf", tar_full_path.to_s) or exit(false)
85
85
  end
86
86
 
87
- Dir.chdir((package_tmp_dir + package.base_name).to_s) do
87
+ package_dir_path =
88
+ package_tmp_dir + package.base_name + package.base_dir_in_package
89
+ Dir.chdir(package_dir_path.to_s) do
88
90
  package.native.patches.each do |patch|
89
91
  sh("patch -p1 < #{@package.patches_dir}/#{patch}")
90
92
  end
@@ -108,6 +108,15 @@ module GNOME2
108
108
  def build_host
109
109
  super || "i686-w64-mingw32"
110
110
  end
111
+
112
+ def build_architecture
113
+ case build_host
114
+ when /\Ai\d86-/
115
+ "x86_64"
116
+ else
117
+ "x64"
118
+ end
119
+ end
111
120
  end
112
121
 
113
122
  class NativeConfiguration
@@ -93,7 +93,7 @@ class GNOME2Win32BinaryBuildTask
93
93
  end
94
94
 
95
95
  def build_package_task_body(package)
96
- package_tmp_dir = @package.tmp_dir + package.name
96
+ package_tmp_dir = @package.tmp_dir + "windows" + package.name
97
97
  rm_rf(package_tmp_dir)
98
98
  mkdir_p(package_tmp_dir)
99
99
 
@@ -102,25 +102,22 @@ class GNOME2Win32BinaryBuildTask
102
102
  sh("tar", "xf", tar_full_path.to_s)
103
103
  end
104
104
 
105
- Dir.chdir((package_tmp_dir + package.base_name).to_s) do
105
+ package_dir_path =
106
+ package_tmp_dir + package.base_name + package.base_dir_in_package
107
+ Dir.chdir(package_dir_path.to_s) do
106
108
  package.windows.patches.each do |patch|
107
109
  sh("patch -p1 < #{@package.patches_dir}/#{patch}")
108
110
  end
109
- sh("./autogen.sh") if package.windows.need_autogen?
110
- sh("autoreconf --install") if package.windows.need_autoreconf?
111
- cc_env = "CC=#{cc(package)}"
112
- sh("./configure",
113
- cc_env,
114
- "CPPFLAGS=#{cppflags(package)}",
115
- "LDFLAGS=#{ldflags(package)}",
116
- "--prefix=#{dist_dir}",
117
- "--host=#{@package.windows.build_host}",
118
- *package.windows.configure_args) or exit(false)
111
+ if File.exist?("configure")
112
+ configure(package)
113
+ else
114
+ cmake(package)
115
+ end
119
116
  common_make_args = []
120
117
  common_make_args << "MAKE=make"
121
118
  common_make_args << "GLIB_COMPILE_SCHEMAS=glib-compile-schemas"
122
119
  if package.windows.use_cc_environment_variable?
123
- common_make_args << cc_env
120
+ common_make_args << cc_env(package)
124
121
  end
125
122
  add_gobject_introspection_make_args(common_make_args)
126
123
  build_make_args = common_make_args.dup
@@ -152,6 +149,43 @@ class GNOME2Win32BinaryBuildTask
152
149
  end
153
150
  end
154
151
 
152
+ def configure(package)
153
+ sh("./autogen.sh") if package.windows.need_autogen?
154
+ sh("autoreconf --install") if package.windows.need_autoreconf?
155
+ sh("./configure",
156
+ cc_env(package),
157
+ "CPPFLAGS=#{cppflags(package)}",
158
+ "LDFLAGS=#{ldflags(package)}",
159
+ "--prefix=#{dist_dir}",
160
+ "--host=#{@package.windows.build_host}",
161
+ *package.windows.configure_args) or exit(false)
162
+ end
163
+
164
+ def cmake(package)
165
+ toolchain_cmake_path = "toolchain.cmake"
166
+ File.open(toolchain_cmake_path, "w") do |toolchain|
167
+ toolchain.puts(<<-CMAKE)
168
+ SET(CMAKE_SYSTEM_NAME Windows)
169
+ SET(MSVC_CXX_ARCHITECTURE_ID #{@package.windows.build_architecture})
170
+ SET(CMAKE_SYSTEM_PROCESSOR #{@package.windows.build_architecture})
171
+
172
+ SET(CMAKE_C_COMPILER #{@package.windows.build_host}-gcc)
173
+ SET(CMAKE_CXX_COMPILER #{@package.windows.build_host}-g++)
174
+ SET(CMAKE_RC_COMPILER #{@package.windows.build_host}-windres)
175
+
176
+ SET(CMAKE_FIND_ROOT_PATH #{cmake_root_paths.join(" ")})
177
+ CMAKE
178
+ end
179
+ sh("cmake",
180
+ ".",
181
+ "-DCMAKE_TOOLCHAIN_FILE=#{toolchain_cmake_path}",
182
+ *package.windows.cmake_args) or exit(false)
183
+ end
184
+
185
+ def cc_env(package)
186
+ "CC=#{cc(package)}"
187
+ end
188
+
155
189
  def build_packages
156
190
  packages = @package.external_packages.select do |package|
157
191
  package.windows.build?
@@ -168,28 +202,36 @@ class GNOME2Win32BinaryBuildTask
168
202
  dist_dir + "share" + "license"
169
203
  end
170
204
 
205
+ def glib2_binary_base_dir
206
+ @package.glib2_root_dir + "vendor" + "local"
207
+ end
208
+
171
209
  def glib2_include_path
172
- "#{@package.glib2_root_dir}/vendor/local/include"
210
+ "#{glib2_binary_base_dir}/include"
173
211
  end
174
212
 
175
213
  def glib2_lib_path
176
- "#{@package.glib2_root_dir}/vendor/local/lib"
214
+ "#{glib2_binary_base_dir}/lib"
177
215
  end
178
216
 
179
217
  def rcairo_win32_dir
180
218
  @package.project_root_dir.parent + "rcairo.win32"
181
219
  end
182
220
 
221
+ def rcairo_win32_binary_base_dir
222
+ rcairo_win32_dir + "vendor" + "local"
223
+ end
224
+
183
225
  def rcairo_win32_pkgconfig_path
184
- "#{rcairo_win32_dir}/vendor/local/lib/pkgconfig"
226
+ "#{rcairo_win32_binary_base_dir}/lib/pkgconfig"
185
227
  end
186
228
 
187
229
  def rcairo_win32_include_path
188
- "#{rcairo_win32_dir}/vendor/local/include"
230
+ "#{rcairo_win32_binary_base_dir}/include"
189
231
  end
190
232
 
191
233
  def rcairo_win32_lib_path
192
- "#{rcairo_win32_dir}/vendor/local/lib"
234
+ "#{rcairo_win32_binary_base_dir}/lib"
193
235
  end
194
236
 
195
237
  def cc(package)
@@ -230,6 +272,17 @@ class GNOME2Win32BinaryBuildTask
230
272
  ldflags.join(" ")
231
273
  end
232
274
 
275
+ def cmake_root_paths
276
+ paths = [
277
+ "/usr/#{@package.windows.build_host}",
278
+ rcairo_win32_binary_base_dir.to_path,
279
+ ]
280
+ @package.windows.build_dependencies.each do |package|
281
+ paths << "#{@package.project_root_dir}/#{package}/vendor/local"
282
+ end
283
+ paths
284
+ end
285
+
233
286
  def add_gobject_introspection_make_args(common_make_args)
234
287
  unless @package.windows.build_dependencies.include?("gobject-introspection")
235
288
  return
data/lib/mkmf-gnome2.rb CHANGED
@@ -16,9 +16,51 @@ require 'glib-mkenums'
16
16
 
17
17
  $CFLAGS += " #{ENV['CFLAGS']}" if ENV['CFLAGS']
18
18
 
19
+ def gcc?
20
+ CONFIG["GCC"] == "yes"
21
+ end
22
+
23
+ def disable_optimization_build_flag(flags)
24
+ if gcc?
25
+ flags.gsub(/(^|\s)?-O\d(\s|$)?/, '\\1-O0\\2')
26
+ else
27
+ flags
28
+ end
29
+ end
30
+
31
+ def enable_debug_build_flag(flags)
32
+ if gcc?
33
+ debug_option_pattern = /(^|\s)?-g\d?(\s|$)?/
34
+ if debug_option_pattern =~ flags
35
+ flags.gsub(debug_option_pattern, '\\1-g3\\2')
36
+ else
37
+ flags + " -g3"
38
+ end
39
+ else
40
+ flags
41
+ end
42
+ end
43
+
44
+ checking_for(checking_message("--enable-debug-build option")) do
45
+ enable_debug_build = enable_config("debug-build", false)
46
+ if enable_debug_build
47
+ $CFLAGS = disable_optimization_build_flag($CFLAGS)
48
+ $CFLAGS = enable_debug_build_flag($CFLAGS)
49
+
50
+ CONFIG["CXXFLAGS"] = disable_optimization_build_flag(CONFIG["CXXFLAGS"])
51
+ CONFIG["CXXFLAGS"] = enable_debug_build_flag(CONFIG["CXXFLAGS"])
52
+ end
53
+ enable_debug_build
54
+ end
55
+
19
56
  def try_compiler_option(opt, &block)
20
57
  checking_for "#{opt} option to compiler" do
21
- $CFLAGS += " #{opt}" if try_compile '', opt, &block
58
+ if try_compile '', opt + " -Werror", &block
59
+ $CFLAGS += " #{opt}"
60
+ true
61
+ else
62
+ false
63
+ end
22
64
  end
23
65
  end
24
66
 
@@ -52,6 +94,7 @@ try_compiler_option '-Wswitch-enum'
52
94
  try_compiler_option '-Wundef'
53
95
  # NOTE: Incredible amounts of false positives.
54
96
  #try_compiler_option '-Wunreachable-code'
97
+ try_compiler_option '-Wout-of-line-declaration'
55
98
  try_compiler_option '-Wunsafe-loop-optimizations'
56
99
  try_compiler_option '-Wwrite-strings'
57
100
 
@@ -457,17 +500,19 @@ def install_missing_native_package(native_package_info)
457
500
  package = native_package_info[platform]
458
501
  return false if package.nil?
459
502
 
503
+ package_name, *options = package
504
+ package_command_line = [package_name, *options].join(" ")
460
505
  need_super_user_priviledge = true
461
506
  case platform
462
507
  when :debian
463
- install_command = "apt-get install -V -y #{package}"
508
+ install_command = "apt-get install -V -y #{package_command_line}"
464
509
  when :fedora, :redhat
465
- install_command = "yum install -y #{package}"
510
+ install_command = "yum install -y #{package_command_line}"
466
511
  when :homebrew
467
512
  need_super_user_priviledge = false
468
- install_command = "brew install #{package}"
513
+ install_command = "brew install #{package_command_line}"
469
514
  when :macports
470
- install_command = "port install -y #{package}"
515
+ install_command = "port install -y #{package_command_line}"
471
516
  else
472
517
  return false
473
518
  end
@@ -477,14 +522,14 @@ def install_missing_native_package(native_package_info)
477
522
  sudo = find_executable("sudo")
478
523
  end
479
524
 
480
- installing_message = "installing '#{package}' native package... "
525
+ installing_message = "installing '#{package_name}' native package... "
481
526
  message("%s", installing_message)
482
527
  failed_to_get_super_user_priviledge = false
483
528
  if have_priviledge
484
529
  succeeded = xsystem(install_command)
485
530
  else
486
531
  if sudo
487
- prompt = "[sudo] password for %u to install <#{package}>: "
532
+ prompt = "[sudo] password for %u to install <#{package_name}>: "
488
533
  sudo_options = "-p #{Shellwords.escape(prompt)}"
489
534
  install_command = "#{sudo} #{sudo_options} #{install_command}"
490
535
  succeeded = xsystem(install_command)
@@ -508,7 +553,7 @@ def install_missing_native_package(native_package_info)
508
553
  unless succeeded
509
554
  if failed_to_get_super_user_priviledge
510
555
  error_message = <<-EOM
511
- '#{package}' native package is required.
556
+ '#{package_name}' native package is required.
512
557
  run the following command as super user to install required native package:
513
558
  \# #{install_command}
514
559
  EOM
@@ -557,4 +602,3 @@ check_ruby_func
557
602
  if /mingw/ =~ RUBY_PLATFORM
558
603
  $ruby.gsub!('\\', '/')
559
604
  end
560
-
metadata CHANGED
@@ -1,41 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glib2
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.1
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: 2014-03-09 00:00:00.000000000 Z
11
+ date: 2014-10-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pkg-config
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: test-unit
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '2'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2'
41
41
  description: Ruby/GLib2 is a Ruby binding of GLib-2.x.
@@ -47,19 +47,6 @@ extra_rdoc_files: []
47
47
  files:
48
48
  - README
49
49
  - Rakefile
50
- - extconf.rb
51
- - lib/glib-mkenums.rb
52
- - lib/glib2.rb
53
- - lib/glib2/deprecatable.rb
54
- - lib/gnome2-raketask.rb
55
- - lib/gnome2/rake/external-package.rb
56
- - lib/gnome2/rake/native-binary-build-task.rb
57
- - lib/gnome2/rake/package-task.rb
58
- - lib/gnome2/rake/package.rb
59
- - lib/gnome2/rake/source-download-task.rb
60
- - lib/gnome2/rake/win32-binary-build-task.rb
61
- - lib/gnome2/rake/win32-binary-download-task.rb
62
- - lib/mkmf-gnome2.rb
63
50
  - ext/glib2/depend
64
51
  - ext/glib2/extconf.rb
65
52
  - ext/glib2/glib2.def
@@ -128,6 +115,19 @@ files:
128
115
  - ext/glib2/rbgutil_list.h
129
116
  - ext/glib2/rbgutildeprecated.c
130
117
  - ext/glib2/rbgutildeprecated.h
118
+ - extconf.rb
119
+ - lib/glib-mkenums.rb
120
+ - lib/glib2.rb
121
+ - lib/glib2/deprecatable.rb
122
+ - lib/gnome2-raketask.rb
123
+ - lib/gnome2/rake/external-package.rb
124
+ - lib/gnome2/rake/native-binary-build-task.rb
125
+ - lib/gnome2/rake/package-task.rb
126
+ - lib/gnome2/rake/package.rb
127
+ - lib/gnome2/rake/source-download-task.rb
128
+ - lib/gnome2/rake/win32-binary-build-task.rb
129
+ - lib/gnome2/rake/win32-binary-download-task.rb
130
+ - lib/mkmf-gnome2.rb
131
131
  - sample/bookmarkfile.rb
132
132
  - sample/idle.rb
133
133
  - sample/iochannel.rb
@@ -169,17 +169,17 @@ require_paths:
169
169
  - lib
170
170
  required_ruby_version: !ruby/object:Gem::Requirement
171
171
  requirements:
172
- - - '>='
172
+ - - ">="
173
173
  - !ruby/object:Gem::Version
174
174
  version: 1.9.3
175
175
  required_rubygems_version: !ruby/object:Gem::Requirement
176
176
  requirements:
177
- - - '>='
177
+ - - ">="
178
178
  - !ruby/object:Gem::Version
179
179
  version: '0'
180
180
  requirements: []
181
181
  rubyforge_project:
182
- rubygems_version: 2.0.14
182
+ rubygems_version: 2.2.2
183
183
  signing_key:
184
184
  specification_version: 4
185
185
  summary: Ruby/GLib2 is a Ruby binding of GLib-2.x.