glib2 3.0.8 → 3.0.9

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.
@@ -6,174 +6,177 @@ require 'open-uri'
6
6
  require 'rubygems'
7
7
  require 'mechanize'
8
8
 
9
- class GNOME2WindowsBinaryDownloadTask
10
- include Rake::DSL
11
-
12
- URL_BASE = "http://ftp.gnome.org/pub/gnome/binaries"
13
- def initialize(package)
14
- @package = package
15
- define
16
- end
9
+ module GNOME2
10
+ module Rake
11
+ class WindowsBinaryDownloadTask
12
+ include ::Rake::DSL
13
+
14
+ URL_BASE = "http://ftp.gnome.org/pub/gnome/binaries"
15
+ def initialize(package)
16
+ @package = package
17
+ end
17
18
 
18
- private
19
- def define
20
- namespace :windows do
21
- namespace :downloader do
22
- task :before
23
-
24
- download_tasks = []
25
- namespace :download do
26
- directory dist_dir.to_s
27
- task :prepare => [dist_dir.to_s]
28
-
29
- packages.each do |package|
30
- desc "download #{package}"
31
- task package => [:prepare] do
32
- download_package(package)
19
+ def define
20
+ namespace :windows do
21
+ namespace :downloader do
22
+ task :before
23
+
24
+ download_tasks = []
25
+ namespace :download do
26
+ directory dist_dir.to_s
27
+ task :prepare => [dist_dir.to_s]
28
+
29
+ packages.each do |package|
30
+ desc "download #{package}"
31
+ task package => [:prepare] do
32
+ download_package(package)
33
+ end
34
+ download_tasks << package
35
+ end
36
+
37
+ dependencies.each do |dependency|
38
+ name, version = dependency
39
+ desc "download #{name}"
40
+ task name => [:prepare] do
41
+ download_dependency(dependency)
42
+ end
43
+ download_tasks << name
44
+ end
33
45
  end
34
- download_tasks << package
35
- end
36
46
 
37
- dependencies.each do |dependency|
38
- name, version = dependency
39
- desc "download #{name}"
40
- task name => [:prepare] do
41
- download_dependency(dependency)
47
+ download_tasks = download_tasks.collect do |task|
48
+ "windows:downloader:download:#{task}"
42
49
  end
43
- download_tasks << name
44
- end
45
- end
50
+ desc "download Windows binaries into #{dist_dir}"
51
+ task :download => download_tasks
46
52
 
47
- download_tasks = download_tasks.collect do |task|
48
- "windows:downloader:download:#{task}"
53
+ task :after
54
+ end
55
+ desc "download Windows binaries"
56
+ task :download => ["windows:downloader:before",
57
+ "windows:downloader:download",
58
+ "windows:downloader:after"]
49
59
  end
50
- desc "download Windows binaries into #{dist_dir}"
51
- task :download => download_tasks
60
+ end
52
61
 
53
- task :after
62
+ private
63
+ def dist_dir
64
+ @package.windows.absolute_binary_dir
54
65
  end
55
- desc "download Windows binaries"
56
- task :download => ["windows:downloader:before",
57
- "windows:downloader:download",
58
- "windows:downloader:after"]
59
- end
60
- end
61
66
 
62
- def dist_dir
63
- @package.windows.absolute_binary_dir
64
- end
67
+ def packages
68
+ @package.windows.packages
69
+ end
65
70
 
66
- def packages
67
- @package.windows.packages
68
- end
71
+ def dependencies
72
+ @package.windows.dependencies
73
+ end
69
74
 
70
- def dependencies
71
- @package.windows.dependencies
72
- end
75
+ def build_architecture_suffix
76
+ @package.windows.build_architecture_suffix
77
+ end
73
78
 
74
- def build_architecture_suffix
75
- @package.windows.build_architecture_suffix
76
- end
79
+ def download_package(package)
80
+ suffix = build_architecture_suffix
81
+ version_page_url = "#{URL_BASE}/#{suffix}/#{package}"
82
+ version_page = agent.get(version_page_url)
83
+ latest_version_link = version_page.links.sort_by do |link|
84
+ if /\A(\d+\.\d+)\/\z/ =~ link.href
85
+ $1.split(/\./).collect {|component| component.to_i}
86
+ else
87
+ [-1]
88
+ end
89
+ end.last
90
+
91
+ escaped_package = Regexp.escape(package)
92
+ latest_version_page = latest_version_link.click
93
+ latest_version = latest_version_page.links.collect do |link|
94
+ case link.href
95
+ when /#{escaped_package}_([\d\.\-]+)_#{suffix}\.zip\z/,
96
+ /#{escaped_package}-([\d\.\-]+)-#{suffix}\.zip\z/, # old
97
+ /#{escaped_package}-([\d\.\-]+)\.zip\z/ # old
98
+ version = $1
99
+ normalized_version = version.split(/[\.\-]/).collect do |component|
100
+ component.to_i
101
+ end
102
+ [normalized_version, version]
103
+ else
104
+ [[-1], nil]
105
+ end
106
+ end.sort_by do |normalized_version, version|
107
+ normalized_version
108
+ end.last[1]
77
109
 
78
- def download_package(package)
79
- suffix = build_architecture_suffix
80
- version_page_url = "#{URL_BASE}/#{suffix}/#{package}"
81
- version_page = agent.get(version_page_url)
82
- latest_version_link = version_page.links.sort_by do |link|
83
- if /\A(\d+\.\d+)\/\z/ =~ link.href
84
- $1.split(/\./).collect {|component| component.to_i}
85
- else
86
- [-1]
87
- end
88
- end.last
89
-
90
- escaped_package = Regexp.escape(package)
91
- latest_version_page = latest_version_link.click
92
- latest_version = latest_version_page.links.collect do |link|
93
- case link.href
94
- when /#{escaped_package}_([\d\.\-]+)_#{suffix}\.zip\z/,
95
- /#{escaped_package}-([\d\.\-]+)-#{suffix}\.zip\z/, # old
96
- /#{escaped_package}-([\d\.\-]+)\.zip\z/ # old
97
- version = $1
98
- normalized_version = version.split(/[\.\-]/).collect do |component|
99
- component.to_i
110
+ if latest_version.nil?
111
+ raise "can't find package: <#{package}>:<#{version_page_url}>"
112
+ end
113
+ escaped_latest_version = Regexp.escape(latest_version)
114
+ latest_version_page.links.each do |link|
115
+ case link.href
116
+ when /#{escaped_package}(?:-dev)?_#{escaped_latest_version}_#{suffix}\.zip\z/,
117
+ /#{escaped_package}(?:-dev)?-#{escaped_latest_version}-#{suffix}\.zip\z/, # old
118
+ /#{escaped_package}(?:-dev)?-#{escaped_latest_version}\.zip\z/ # old
119
+ click_zip_link(link)
120
+ end
100
121
  end
101
- [normalized_version, version]
102
- else
103
- [[-1], nil]
104
122
  end
105
- end.sort_by do |normalized_version, version|
106
- normalized_version
107
- end.last[1]
108
123
 
109
- if latest_version.nil?
110
- raise "can't find package: <#{package}>:<#{version_page_url}>"
111
- end
112
- escaped_latest_version = Regexp.escape(latest_version)
113
- latest_version_page.links.each do |link|
114
- case link.href
115
- when /#{escaped_package}(?:-dev)?_#{escaped_latest_version}_#{suffix}\.zip\z/,
116
- /#{escaped_package}(?:-dev)?-#{escaped_latest_version}-#{suffix}\.zip\z/, # old
117
- /#{escaped_package}(?:-dev)?-#{escaped_latest_version}\.zip\z/ # old
118
- click_zip_link(link)
124
+ def download_dependency(dependency)
125
+ suffix = build_architecture_suffix
126
+ dependency_version = "any"
127
+ dependency_version_re = /[\d\.\-]+/
128
+ if dependency.is_a?(Array)
129
+ dependency, dependency_version = dependency
130
+ dependency_version_re = /#{Regexp.escape(dependency_version)}/
131
+ end
132
+ escaped_dependency = Regexp.escape(dependency)
133
+ dependencies_url = "#{URL_BASE}/dependencies"
134
+ dependencies_page = agent.get(dependencies_url)
135
+ latest_version = dependencies_page.links.collect do |link|
136
+ case link.href
137
+ when /\A#{escaped_dependency}_(#{dependency_version_re})_#{suffix}\.zip\z/
138
+ version = $1
139
+ [version.split(/[\.\-]/).collect {|component| component.to_i}, version]
140
+ else
141
+ [[-1], nil]
142
+ end
143
+ end.sort_by do |normalized_version, version|
144
+ normalized_version
145
+ end.last[1]
146
+
147
+ if latest_version.nil?
148
+ message = "can't find dependency package: " +
149
+ "<#{dependency}>(#{dependency_version}):<#{dependencies_url}>"
150
+ raise message
151
+ end
152
+ escaped_latest_version = Regexp.escape(latest_version)
153
+ dependencies_page.links.each do |link|
154
+ case link.href
155
+ when /\A#{escaped_dependency}(?:-dev)?_#{escaped_latest_version}_#{suffix}\.zip\z/
156
+ click_zip_link(link)
157
+ end
158
+ end
119
159
  end
120
- end
121
- end
122
160
 
123
- def download_dependency(dependency)
124
- suffix = build_architecture_suffix
125
- dependency_version = "any"
126
- dependency_version_re = /[\d\.\-]+/
127
- if dependency.is_a?(Array)
128
- dependency, dependency_version = dependency
129
- dependency_version_re = /#{Regexp.escape(dependency_version)}/
130
- end
131
- escaped_dependency = Regexp.escape(dependency)
132
- dependencies_url = "#{URL_BASE}/dependencies"
133
- dependencies_page = agent.get(dependencies_url)
134
- latest_version = dependencies_page.links.collect do |link|
135
- case link.href
136
- when /\A#{escaped_dependency}_(#{dependency_version_re})_#{suffix}\.zip\z/
137
- version = $1
138
- [version.split(/[\.\-]/).collect {|component| component.to_i}, version]
139
- else
140
- [[-1], nil]
161
+ private
162
+ def agent
163
+ @agent ||= Mechanize.new
141
164
  end
142
- end.sort_by do |normalized_version, version|
143
- normalized_version
144
- end.last[1]
145
-
146
- if latest_version.nil?
147
- message = "can't find dependency package: " +
148
- "<#{dependency}>(#{dependency_version}):<#{dependencies_url}>"
149
- raise message
150
- end
151
- escaped_latest_version = Regexp.escape(latest_version)
152
- dependencies_page.links.each do |link|
153
- case link.href
154
- when /\A#{escaped_dependency}(?:-dev)?_#{escaped_latest_version}_#{suffix}\.zip\z/
155
- click_zip_link(link)
156
- end
157
- end
158
- end
159
-
160
- private
161
- def agent
162
- @agent ||= Mechanize.new
163
- end
164
165
 
165
- def click_zip_link(link)
166
- zip = link.click
167
- Dir.chdir(dist_dir) do
168
- open(zip.filename, "wb") do |file|
169
- file.print(zip.body)
170
- end
171
- system("unzip", "-o", zip.filename)
172
- Dir.glob("lib/pkgconfig/*.pc") do |pc_path|
173
- pc = File.read(pc_path)
174
- pc = pc.gsub(/\Aprefix=.+$/) {"prefix=#{dist_dir}"}
175
- File.open(pc_path, "w") do |pc_file|
176
- pc_file.print(pc)
166
+ def click_zip_link(link)
167
+ zip = link.click
168
+ Dir.chdir(dist_dir) do
169
+ open(zip.filename, "wb") do |file|
170
+ file.print(zip.body)
171
+ end
172
+ system("unzip", "-o", zip.filename)
173
+ Dir.glob("lib/pkgconfig/*.pc") do |pc_path|
174
+ pc = File.read(pc_path)
175
+ pc = pc.gsub(/\Aprefix=.+$/) {"prefix=#{dist_dir}"}
176
+ File.open(pc_path, "w") do |pc_file|
177
+ pc_file.print(pc)
178
+ end
179
+ end
177
180
  end
178
181
  end
179
182
  end
@@ -151,8 +151,16 @@ def find_gem_spec(package)
151
151
  end
152
152
  end
153
153
 
154
+ def setup_homebrew_libffi
155
+ return unless package_platform == :homebrew
156
+
157
+ PKGConfig.add_path("/usr/local/opt/libffi/lib/pkgconfig")
158
+ end
159
+
154
160
  #add_depend_package("glib2", "ext/glib2", "/...../ruby-gnome2")
155
161
  def add_depend_package(target_name, target_srcdir, top_srcdir, options={})
162
+ setup_homebrew_libffi if target_name == "gobject-introspection"
163
+
156
164
  gem_spec = find_gem_spec(target_name)
157
165
  if gem_spec
158
166
  target_source_dir = File.join(gem_spec.full_gem_path, "ext/#{target_name}")
@@ -410,34 +418,6 @@ def make_version_header(app_name, pkgname, dir = "src")
410
418
  out.close
411
419
  end
412
420
 
413
- def check_ruby_func
414
- #Other options
415
- ruby_header = "ruby.h"
416
- have_func("rb_define_alloc_func", ruby_header) # for ruby-1.8
417
- have_func("rb_block_proc", ruby_header) # for ruby-1.8
418
-
419
- STDOUT.print("checking for new allocation framework... ") # for ruby-1.7
420
- if Object.respond_to? :allocate
421
- STDOUT.print "yes\n"
422
- $defs << "-DHAVE_OBJECT_ALLOCATE"
423
- else
424
- STDOUT.print "no\n"
425
- end
426
-
427
- STDOUT.print("checking for attribute assignment... ") # for ruby-1.7
428
- STDOUT.flush
429
- if defined? try_compile and try_compile <<SRC
430
- #include "ruby.h"
431
- #include "node.h"
432
- int node_attrasgn = (int)NODE_ATTRASGN;
433
- SRC
434
- STDOUT.print "yes\n"
435
- $defs << "-DHAVE_NODE_ATTRASGN"
436
- else
437
- STDOUT.print "no\n"
438
- end
439
- end
440
-
441
421
  def add_obj(name)
442
422
  ensure_objs
443
423
  $objs << name unless $objs.index(name)
@@ -617,6 +597,9 @@ def required_pkg_config_package(package_info, native_package_info=nil)
617
597
  else
618
598
  required_package_info = [package_info]
619
599
  end
600
+ if required_package_info.include?("gobject-introspection-1.0")
601
+ setup_homebrew_libffi
602
+ end
620
603
  return true if PKGConfig.have_package(*required_package_info)
621
604
 
622
605
  native_package_info ||= {}
@@ -635,8 +618,6 @@ end
635
618
  add_include_path.call("sitearchdir")
636
619
  add_include_path.call("vendorarchdir")
637
620
 
638
- check_ruby_func
639
-
640
621
  if /mingw/ =~ RUBY_PLATFORM
641
622
  $ruby.gsub!('\\', '/')
642
623
  end
@@ -16,82 +16,173 @@
16
16
 
17
17
  class TestGLibBinding < Test::Unit::TestCase
18
18
  include GLibTestUtils
19
+ sub_test_case "bind_property" do
20
+ class DataObjectDefault < GLib::Object
21
+ type_register
19
22
 
20
- class DataObject < GLib::Object
21
- type_register
22
-
23
- install_property(GLib::Param::Int.new("source", # name
24
- "Source", # nick
25
- "The source data", # blurb
26
- 0, # min
27
- 100, # max
28
- 0, # default
29
- GLib::Param::READABLE |
30
- GLib::Param::WRITABLE))
31
- install_property(GLib::Param::Int.new("target", # name
32
- "Target", # nick
33
- "The target data", # blurb
34
- 0, # min
35
- 100, # max
36
- 0, # default
37
- GLib::Param::READABLE |
38
- GLib::Param::WRITABLE))
39
-
40
- attr_reader :source, :target
41
- def initialize
42
- @source = 0
43
- @target = 0
44
- super
45
- end
46
-
47
- def source=(value)
48
- @source = value
49
- notify("source")
50
- end
51
-
52
- def target=(value)
53
- @target = value
54
- notify("target")
23
+ install_property(GLib::Param::Int.new("source", # name
24
+ "Source", # nick
25
+ "The source data", # blurb
26
+ 0, # min
27
+ 100, # max
28
+ 0, # default
29
+ GLib::Param::READABLE |
30
+ GLib::Param::WRITABLE))
31
+ install_property(GLib::Param::Int.new("target", # name
32
+ "Target", # nick
33
+ "The target data", # blurb
34
+ 0, # min
35
+ 100, # max
36
+ 0, # default
37
+ GLib::Param::READABLE |
38
+ GLib::Param::WRITABLE))
39
+
40
+ attr_reader :source, :target
41
+ def initialize
42
+ @source = 0
43
+ @target = 0
44
+ super
45
+ end
46
+
47
+ def source=(value)
48
+ @source = value
49
+ notify("source")
50
+ end
51
+
52
+ def target=(value)
53
+ @target = value
54
+ notify("target")
55
+ end
55
56
  end
56
- end
57
57
 
58
- setup do
59
- only_glib_version(2, 26, 0)
60
- end
58
+ setup do
59
+ only_glib_version(2, 26, 0)
60
+ end
61
61
 
62
- setup do
63
- @source = DataObject.new
64
- @target = DataObject.new
65
- @binding = @source.bind_property("source", @target, "target", :default)
66
- end
62
+ setup do
63
+ @source = DataObjectDefault.new
64
+ @target = DataObjectDefault.new
65
+ @binding = @source.bind_property("source", @target, "target", :default)
66
+ end
67
67
 
68
- test "#source" do
69
- assert_equal(@source, @binding.source)
70
- end
68
+ test "#source" do
69
+ assert_equal(@source, @binding.source)
70
+ end
71
71
 
72
- test "#source_property" do
73
- assert_equal("source", @binding.source_property)
74
- end
72
+ test "#source_property" do
73
+ assert_equal("source", @binding.source_property)
74
+ end
75
75
 
76
- test "#target" do
77
- assert_equal(@target, @binding.target)
78
- end
76
+ test "#target" do
77
+ assert_equal(@target, @binding.target)
78
+ end
79
79
 
80
- test "#target_property" do
81
- assert_equal("target", @binding.target_property)
82
- end
80
+ test "#target_property" do
81
+ assert_equal("target", @binding.target_property)
82
+ end
83
83
 
84
- test "#flags" do
85
- assert_equal(GLib::BindingFlags::DEFAULT, @binding.flags)
84
+ test "#flags" do
85
+ assert_equal(GLib::BindingFlags::DEFAULT, @binding.flags)
86
+ end
87
+
88
+ test "#unbind" do
89
+ only_glib_version(2, 38, 0)
90
+ assert_equal(0, @target.target)
91
+ @source.source = 10
92
+ assert_equal(10, @target.target)
93
+ @binding.unbind
94
+ @source.source = 20
95
+ assert_equal(10, @target.target)
96
+ end
86
97
  end
98
+ sub_test_case "bind_property_full" do
99
+ class DataObjectBidir < GLib::Object
100
+ type_register
101
+
102
+ install_property(GLib::Param::Int.new("source", # name
103
+ "Source", # nick
104
+ "The source data", # blurb
105
+ 0, # min
106
+ 100, # max
107
+ 0, # default
108
+ GLib::Param::READABLE |
109
+ GLib::Param::WRITABLE))
110
+ install_property(GLib::Param::String.new("target", # name
111
+ "Target", # nick
112
+ "The target data", # blurb
113
+ "", # default
114
+ GLib::Param::READABLE |
115
+ GLib::Param::WRITABLE))
116
+
117
+ attr_reader :source, :target
118
+ def initialize
119
+ @source = 0
120
+ @target = "nan"
121
+ super
122
+ end
87
123
 
88
- test "#unbind" do
89
- only_glib_version(2, 38, 0)
90
- assert_equal(0, @target.target)
91
- @source.source = 10
92
- assert_equal(10, @target.target)
93
- @binding.unbind
94
- @source.source = 20
95
- assert_equal(10, @target.target)
124
+ def source=(value)
125
+ @source = value
126
+ notify("source")
127
+ end
128
+
129
+ def target=(value)
130
+ @target = value
131
+ notify("target")
132
+ end
133
+ end
134
+
135
+ setup do
136
+ only_glib_version(2, 26, 0)
137
+ end
138
+
139
+ setup do
140
+ @source = DataObjectBidir.new
141
+ @target = DataObjectBidir.new
142
+ transform_to_callback = proc do |source_value|
143
+ source_value.to_s
144
+ end
145
+
146
+ transform_from_callback = proc do |target_value|
147
+ target_value.to_i
148
+ end
149
+
150
+ @binding = @source.bind_property("source", @target, "target",
151
+ :bidirectional,
152
+ :transform_to => transform_to_callback,
153
+ :transform_from => transform_from_callback)
154
+ end
155
+
156
+ test "#source" do
157
+ assert_equal(@source, @binding.source)
158
+ end
159
+
160
+ test "#source_property" do
161
+ assert_equal("source", @binding.source_property)
162
+ end
163
+
164
+ test "#target" do
165
+ assert_equal(@target, @binding.target)
166
+ end
167
+
168
+ test "#target_property" do
169
+ assert_equal("target", @binding.target_property)
170
+ end
171
+
172
+ test "#flags" do
173
+ assert_equal(GLib::BindingFlags::BIDIRECTIONAL, @binding.flags)
174
+ end
175
+
176
+ test "#unbind" do
177
+ only_glib_version(2, 38, 0)
178
+ assert_equal("nan", @target.target)
179
+ @source.source = 10
180
+ assert_equal("10", @target.target)
181
+ @target.target = "30"
182
+ assert_equal(30, @source.source)
183
+ @binding.unbind
184
+ @source.source = 20
185
+ assert_equal("30", @target.target)
186
+ end
96
187
  end
97
188
  end