glib2 2.2.0 → 2.2.1

Sign up to get free protection for your applications and to get access to all the features.
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.