cairo 1.12.4 → 1.12.5

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of cairo might be problematic. Click here for more details.

Files changed (4) hide show
  1. data/NEWS +8 -0
  2. data/Rakefile +357 -31
  3. data/ext/cairo/rb_cairo.h +1 -1
  4. metadata +64 -64
data/NEWS CHANGED
@@ -1,3 +1,11 @@
1
+ Release 1.12.5 (2013-05-18) Kouhei Sutou <kou@cozmixng.org>
2
+ ===========================================================
3
+
4
+ Improvements
5
+ ------------
6
+
7
+ * Updated bundled cairo binary for Windows to 1.12.14.
8
+
1
9
  Release 1.12.4 (2013-03-11) Kouhei Sutou <kou@cozmixng.org>
2
10
  ===========================================================
3
11
 
data/Rakefile CHANGED
@@ -4,6 +4,7 @@ require 'English'
4
4
 
5
5
  require 'find'
6
6
  require 'fileutils'
7
+ require 'open-uri'
7
8
  require 'rubygems'
8
9
  require 'rubygems/package_task'
9
10
  require 'yard'
@@ -49,48 +50,373 @@ Rake::ExtensionTask.new("cairo", spec) do |ext|
49
50
  end
50
51
  end
51
52
 
52
- task 'cross' => "download_windows_binaries"
53
-
54
- def download_windows_binaries(binary_dir)
55
- base_url = "http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/"
56
- dependencies = [
57
- ["cairo", "1.10.2-2"],
58
- ["libpng", "1.4.12-1"],
59
- ["zlib", "1.2.5-2"],
60
- ["expat", "2.1.0-1"],
61
- ["fontconfig", "2.8.0-2"],
62
- ["freetype", "2.4.10-1"],
63
- ]
64
- dependencies.each do |name, version|
65
- ["", "-dev"].each do |suffix|
66
- file_name = "#{name}#{suffix}_#{version}_win32.zip"
67
- full_file_name = File.join(binary_dir, file_name)
68
- next if File.exist?(full_file_name)
69
- open("#{base_url}#{file_name}", "rb") do |input|
70
- File.open(full_file_name, "wb") do |output|
71
- output.print(input.read)
53
+ class Package < Struct.new(:name,
54
+ :label,
55
+ :version,
56
+ :compression_method,
57
+ :download_site,
58
+ :download_base_url,
59
+ :windows)
60
+ def initialize(parameters)
61
+ super()
62
+ parameters.each do |key, value|
63
+ __send__("#{key}=", value)
64
+ end
65
+ end
66
+
67
+ def label
68
+ super || name
69
+ end
70
+
71
+ def base_name
72
+ "#{name}-#{version}"
73
+ end
74
+
75
+ def compression_method
76
+ super || "xz"
77
+ end
78
+
79
+ def archive_path
80
+ "#{base_name}.tar.#{compression_method}"
81
+ end
82
+
83
+ def archive_url
84
+ "#{download_base_url}/#{archive_path}"
85
+ end
86
+
87
+ def download_base_url
88
+ super || download_site_base_url
89
+ end
90
+
91
+ def download_site_base_url
92
+ case download_site
93
+ when :cairo
94
+ base_url = "http://cairographics.org/releases"
95
+ when :gnome
96
+ base_url = "http://ftp.gnome.org/pub/gnome/sources"
97
+ release_series = version.gsub(/\A(\d+\.\d+).+\z/, '\1')
98
+ base_url << "/#{name}/#{release_series}"
99
+ else
100
+ base_url = nil
101
+ end
102
+ base_url
103
+ end
104
+
105
+ def windows
106
+ Windows.new(super || {})
107
+ end
108
+
109
+ class Windows < Struct.new(:builder,
110
+ :build_host,
111
+ :configure_args,
112
+ :built_file)
113
+ def initialize(parameters)
114
+ super()
115
+ parameters.each do |key, value|
116
+ __send__("#{key}=", value)
117
+ end
118
+ end
119
+
120
+ def build_host
121
+ "i686-w64-mingw32"
122
+ end
123
+
124
+ def configure_args
125
+ super || []
126
+ end
127
+ end
128
+ end
129
+
130
+ class WindowsTask
131
+ include Rake::DSL
132
+
133
+ def initialize(spec, base_dir=".")
134
+ @spec = spec
135
+ @base_dir = Pathname.new(base_dir).expand_path
136
+ yield(self)
137
+ end
138
+
139
+ def define
140
+ define_download_task
141
+ end
142
+
143
+ def packages=(packages)
144
+ @packages = packages.collect do |parameters|
145
+ Package.new(parameters)
146
+ end
147
+ end
148
+
149
+ private
150
+ def define_download_task
151
+ define_source_download_task
152
+ define_build_task
153
+ end
154
+
155
+ def define_source_download_task
156
+ namespace :source do
157
+ tasks = []
158
+ @packages.each do |package|
159
+ namespace package.name do
160
+ archive_path = downloaded_archive_path(package)
161
+ file archive_path.to_s do
162
+ mkdir_p(archive_path.dirname.to_s)
163
+ download(package, archive_path)
164
+ end
165
+
166
+ desc "Download #{package.name} source"
167
+ task :download => archive_path.to_s
168
+ tasks << (Rake.application.current_scope + ["download"]).join(":")
169
+ end
170
+ end
171
+ desc "Download sources"
172
+ task :download => tasks
173
+ end
174
+ end
175
+
176
+ def download(package, archive_path)
177
+ open(package.archive_url) do |downloaded_archive|
178
+ begin
179
+ archive_path.open("wb") do |archive_file|
180
+ buffer = ""
181
+ while downloaded_archive.read(4096, buffer)
182
+ archive_file.print(buffer)
183
+ end
184
+ end
185
+ rescue Exception
186
+ rm_rf(archive_path.to_s)
187
+ raise
188
+ end
189
+ end
190
+ end
191
+
192
+ def define_build_task
193
+ namespace :windows do
194
+ tasks = []
195
+ @packages.each do |package|
196
+ namespace package.name do
197
+ built_file = install_dir + package.windows.built_file
198
+ file built_file.to_s do
199
+ Rake::Task["source:#{package.name}:download"].invoke
200
+ build(package)
201
+ end
202
+
203
+ desc "Build #{package.label} package"
204
+ task :build => built_file.to_s
205
+ tasks << (Rake.application.current_scope + ["build"]).join(":")
206
+ end
207
+ end
208
+ desc "Build packages"
209
+ task :build => tasks
210
+ end
211
+ end
212
+
213
+ def build(package)
214
+ ENV["PKG_CONFIG_LIBDIR"] = "#{install_dir}/lib/pkgconfig"
215
+ ENV["PKG_CONFIG_PATH"] = [
216
+ ruby_glib2_pkg_config_path,
217
+ ].join(":")
218
+
219
+ package_build_dir = build_dir + package.name
220
+ rm_rf(package_build_dir.to_s)
221
+ mkdir_p(package_build_dir.to_s)
222
+
223
+ archive_path = downloaded_archive_path(package).expand_path
224
+
225
+ Dir.chdir(package_build_dir.to_s) do
226
+ sh("tar", "xf", archive_path.to_s)
227
+ Dir.chdir(package.base_name.to_s) do
228
+ custom_builder = package.windows.builder
229
+ if custom_builder
230
+ custom_builder.build(package, install_dir)
231
+ else
232
+ build_with_gnu_build_system(package)
72
233
  end
234
+ package_license_dir = license_dir + package.name
235
+ package_license_files = Dir.glob("{README*,AUTHORS,COPYING*}")
236
+ mkdir_p(package_license_dir.to_s)
237
+ cp(package_license_files, package_license_dir.to_s)
73
238
  end
74
- sh("unzip", "-o", full_file_name, "-d", binary_dir)
75
239
  end
76
240
  end
77
- Dir.glob("#{binary_dir}/lib/pkgconfig/*.pc") do |pc_path|
78
- pc = File.read(pc_path)
79
- pc = pc.gsub(/\Aprefix=.+$/) {"prefix=#{File.expand_path(binary_dir)}"}
80
- File.open(pc_path, "w") do |pc_file|
81
- pc_file.print(pc)
241
+
242
+ def build_with_gnu_build_system(package)
243
+ configure_args = [
244
+ "CPPFLAGS=#{cppflags(package)}",
245
+ "LDFLAGS=#{ldflags(package)}",
246
+ "--prefix=#{install_dir}",
247
+ "--host=#{package.windows.build_host}",
248
+ ]
249
+ configure_args += package.windows.configure_args
250
+ sh("./configure", *configure_args)
251
+ ENV["GREP_OPTIONS"] = "--text"
252
+ sh("nice", "make", *build_make_args(package))
253
+ sh("nice", "make", "install", *install_make_args(package))
254
+ end
255
+
256
+ def cppflags(package)
257
+ include_paths = [
258
+ install_dir + "include",
259
+ ]
260
+ flags = include_paths.collect do |path|
261
+ "-I#{path}"
82
262
  end
263
+ flags.join(" ")
264
+ end
265
+
266
+ def ldflags(package)
267
+ library_paths = [
268
+ install_dir + "lib",
269
+ ]
270
+ flags = library_paths.collect do |path|
271
+ "-L#{path}"
272
+ end
273
+ flags.join(" ")
274
+ end
275
+
276
+ def build_make_args(package)
277
+ args = []
278
+ make_n_jobs = ENV["MAKE_N_JOBS"]
279
+ args << "-j#{make_n_jobs}" if make_n_jobs
280
+ args
281
+ end
282
+
283
+ def install_make_args(package)
284
+ []
285
+ end
286
+
287
+ def tmp_dir
288
+ @base_dir + "tmp"
289
+ end
290
+
291
+ def download_dir
292
+ tmp_dir + "download"
293
+ end
294
+
295
+ def build_dir
296
+ tmp_dir + "build"
297
+ end
298
+
299
+ def install_dir
300
+ @base_dir + "vendor" + "local"
301
+ end
302
+
303
+ def license_dir
304
+ install_dir + "share" + "license"
305
+ end
306
+
307
+ def downloaded_archive_path(package)
308
+ download_dir + package.archive_path
309
+ end
310
+
311
+ def ruby_gnome2_dir
312
+ @base_dir.parent + "ruby-gnome2.win32"
313
+ end
314
+
315
+ def ruby_glib2_pkg_config_path
316
+ ruby_gnome2_dir + "glib2/vendor/local/lib/pkgconfig"
83
317
  end
84
318
  end
85
319
 
86
- task "download_windows_binaries" do
87
- require 'open-uri'
88
- unless File.exist?(binary_dir)
89
- mkdir_p(binary_dir)
90
- download_windows_binaries(binary_dir)
320
+ class ZlibBuilder
321
+ include Rake::DSL
322
+
323
+ def build(package, install_dir)
324
+ sh("make",
325
+ "PREFIX=#{package.windows.build_host}-",
326
+ "-f",
327
+ "win32/Makefile.gcc")
328
+ include_path = install_dir + "include"
329
+ library_path = install_dir + "lib"
330
+ binary_path = install_dir + "bin"
331
+ sh("make",
332
+ "INCLUDE_PATH=#{include_path}",
333
+ "LIBRARY_PATH=#{library_path}",
334
+ "BINARY_PATH=#{binary_path}",
335
+ "SHARED_MODE=1",
336
+ "-f",
337
+ "win32/Makefile.gcc",
338
+ "install")
91
339
  end
92
340
  end
93
341
 
342
+ windows_task = WindowsTask.new(spec) do |task|
343
+ task.packages = [
344
+ {
345
+ :name => "zlib",
346
+ :version => "1.2.8",
347
+ :download_base_url => "http://sourceforge.net/projects/libpng/files/zlib/1.2.8",
348
+ :compression_method => "gz",
349
+ :windows => {
350
+ :builder => ZlibBuilder.new,
351
+ :built_file => "bin/zlib1.dll",
352
+ },
353
+ },
354
+ {
355
+ :name => "libpng",
356
+ :version => "1.6.2",
357
+ :download_base_url => "http://sourceforge.net/projects/libpng/files/libpng16/1.6.2",
358
+ :windows => {
359
+ :built_file => "bin/libpng16-16.dll",
360
+ },
361
+ },
362
+ {
363
+ :name => "freetype",
364
+ :version => "2.4.12",
365
+ :download_base_url => "http://sourceforge.net/projects/freetype/files/freetype2/2.4.12",
366
+ :compression_method => "bz2",
367
+ :windows => {
368
+ :built_file => "bin/libfreetype-6.dll",
369
+ },
370
+ },
371
+ {
372
+ :name => "libxml2",
373
+ :version => "2.9.1",
374
+ :download_base_url => "ftp://xmlsoft.org/libxml2",
375
+ :compression_method => "gz",
376
+ :windows => {
377
+ :built_file => "bin/libxml2-2.dll",
378
+ :configure_args => [
379
+ "--without-python",
380
+ ],
381
+ },
382
+ },
383
+ {
384
+ :name => "fontconfig",
385
+ :version => "2.10.92",
386
+ :download_base_url => "http://www.freedesktop.org/software/fontconfig/release",
387
+ :compression_method => "bz2",
388
+ :windows => {
389
+ :built_file => "bin/libfontconfig-1.dll",
390
+ :configure_args => [
391
+ "--enable-libxml2",
392
+ "--disable-docs",
393
+ ],
394
+ },
395
+ },
396
+ {
397
+ :name => "pixman",
398
+ :version => "0.30.0",
399
+ :download_site => :cairo,
400
+ :compression_method => "gz",
401
+ :windows => {
402
+ :built_file => "bin/libpixman-1-0.dll",
403
+ },
404
+ },
405
+ {
406
+ :name => "cairo",
407
+ :version => "1.12.14",
408
+ :download_site => :cairo,
409
+ :windows => {
410
+ :built_file => "bin/libcairo-2.dll",
411
+ :configure_args => [
412
+ "--enable-gobject",
413
+ ],
414
+ },
415
+ },
416
+ ]
417
+ end
418
+ windows_task.define
419
+
94
420
  # for releasing
95
421
  task :dist do
96
422
  sh "./dist.sh", spec.version.to_s
data/ext/cairo/rb_cairo.h CHANGED
@@ -73,7 +73,7 @@ RB_CAIRO_BEGIN_DECLS
73
73
 
74
74
  #define RB_CAIRO_VERSION_MAJOR 1
75
75
  #define RB_CAIRO_VERSION_MINOR 12
76
- #define RB_CAIRO_VERSION_MICRO 4
76
+ #define RB_CAIRO_VERSION_MICRO 5
77
77
 
78
78
  RB_CAIRO_VAR VALUE rb_mCairo;
79
79
  RB_CAIRO_VAR VALUE rb_cCairo_Context;
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cairo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.12.4
4
+ version: 1.12.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-11 00:00:00.000000000 Z
12
+ date: 2013-05-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: pkg-config
@@ -108,80 +108,80 @@ files:
108
108
  - README.rdoc
109
109
  - ext/cairo/extconf.rb
110
110
  - Rakefile
111
- - lib/cairo.rb
112
- - lib/cairo/point.rb
113
- - lib/cairo/surface.rb
114
- - lib/cairo/paper.rb
111
+ - lib/cairo/color.rb
115
112
  - lib/cairo/pattern.rb
116
- - lib/cairo/constants.rb
117
- - lib/cairo/device.rb
118
113
  - lib/cairo/papers.rb
119
- - lib/cairo/color.rb
120
- - lib/cairo/context/rectangle.rb
121
- - lib/cairo/context/triangle.rb
114
+ - lib/cairo/point.rb
115
+ - lib/cairo/context.rb
116
+ - lib/cairo/device.rb
117
+ - lib/cairo/colors.rb
122
118
  - lib/cairo/context/circle.rb
123
- - lib/cairo/context/blur.rb
119
+ - lib/cairo/context/rectangle.rb
124
120
  - lib/cairo/context/color.rb
121
+ - lib/cairo/context/blur.rb
122
+ - lib/cairo/context/triangle.rb
125
123
  - lib/cairo/context/path.rb
126
- - lib/cairo/colors.rb
127
124
  - lib/cairo/path.rb
128
- - lib/cairo/context.rb
125
+ - lib/cairo/surface.rb
126
+ - lib/cairo/constants.rb
127
+ - lib/cairo/paper.rb
128
+ - lib/cairo.rb
129
+ - samples/pac-tee.rb
130
+ - samples/agg/aa_test.rb
129
131
  - samples/pac-nomralize.rb
130
- - samples/png.rb
131
132
  - samples/text2.rb
132
- - samples/agg/aa_test.rb
133
133
  - samples/scalable.rb
134
- - samples/text-on-path.rb
135
134
  - samples/blur.rb
136
- - samples/pac-tee.rb
135
+ - samples/png.rb
137
136
  - samples/pac.rb
137
+ - samples/text-on-path.rb
138
138
  - ext/cairo/cairo.def
139
139
  - ext/cairo/depend
140
- - ext/cairo/rb_cairo_surface.c
140
+ - ext/cairo/rb_cairo_io.c
141
+ - ext/cairo/rb_cairo_constants.c
142
+ - ext/cairo/rb_cairo_pattern.c
143
+ - ext/cairo/rb_cairo_exception.c
144
+ - ext/cairo/rb_cairo_font_options.c
145
+ - ext/cairo/rb_cairo_text_cluster.c
146
+ - ext/cairo/rb_cairo_text_extents.c
141
147
  - ext/cairo/rb_cairo_device.c
148
+ - ext/cairo/rb_cairo_font_face.c
149
+ - ext/cairo/rb_cairo_scaled_font.c
142
150
  - ext/cairo/rb_cairo_context.c
143
151
  - ext/cairo/rb_cairo_glyph.c
144
- - ext/cairo/rb_cairo_font_face.c
145
- - ext/cairo/rb_cairo_region.c
146
- - ext/cairo/rb_cairo_text_cluster.c
152
+ - ext/cairo/rb_cairo_surface.c
153
+ - ext/cairo/rb_cairo_font_extents.c
147
154
  - ext/cairo/rb_cairo_path.c
148
- - ext/cairo/rb_cairo_exception.c
149
- - ext/cairo/rb_cairo_pattern.c
155
+ - ext/cairo/rb_cairo_private.c
150
156
  - ext/cairo/rb_cairo_matrix.c
151
- - ext/cairo/rb_cairo_font_extents.c
152
- - ext/cairo/rb_cairo_io.c
153
- - ext/cairo/rb_cairo_scaled_font.c
154
- - ext/cairo/rb_cairo_text_extents.c
157
+ - ext/cairo/rb_cairo_region.c
155
158
  - ext/cairo/rb_cairo.c
156
- - ext/cairo/rb_cairo_private.c
157
- - ext/cairo/rb_cairo_constants.c
158
- - ext/cairo/rb_cairo_font_options.c
159
+ - ext/cairo/rb_cairo_io.h
159
160
  - ext/cairo/rb_cairo.h
160
161
  - ext/cairo/rb_cairo_private.h
161
- - ext/cairo/rb_cairo_io.h
162
- - test/cairo-test-utils.rb
163
- - test/test_constants.rb
164
- - test/test_xml_device.rb
165
- - test/test_recording_surface.rb
166
- - test/test_script_surface.rb
167
- - test/test_raster_source_pattern.rb
162
+ - test/test_surface.rb
168
163
  - test/test_scaled_font.rb
164
+ - test/test_recording_surface.rb
165
+ - test/test_text_to_glyphs_data.rb
166
+ - test/test_font_extents.rb
169
167
  - test/test_tee_surface.rb
170
168
  - test/test_text_extents.rb
171
- - test/test_exception.rb
172
- - test/test_surface.rb
169
+ - test/test_paper.rb
170
+ - test/test_context.rb
171
+ - test/cairo-test-utils.rb
172
+ - test/test_xml_device.rb
173
+ - test/test_raster_source_pattern.rb
174
+ - test/run-test.rb
175
+ - test/test_script_surface.rb
176
+ - test/test_region.rb
173
177
  - test/test_font_face.rb
174
- - test/test_font_options.rb
175
- - test/test_text_to_glyphs_data.rb
176
178
  - test/test_script_device.rb
177
179
  - test/test_xml_surface.rb
178
- - test/test_region.rb
179
- - test/test_context.rb
180
- - test/test_color.rb
181
- - test/test_paper.rb
182
- - test/run-test.rb
180
+ - test/test_exception.rb
183
181
  - test/test_text_cluster.rb
184
- - test/test_font_extents.rb
182
+ - test/test_color.rb
183
+ - test/test_font_options.rb
184
+ - test/test_constants.rb
185
185
  homepage: http://cairographics.org/rcairo
186
186
  licenses:
187
187
  - Ruby's
@@ -208,27 +208,27 @@ signing_key:
208
208
  specification_version: 3
209
209
  summary: Ruby bindings for cairo
210
210
  test_files:
211
- - test/cairo-test-utils.rb
212
- - test/test_constants.rb
213
- - test/test_xml_device.rb
214
- - test/test_recording_surface.rb
215
- - test/test_script_surface.rb
216
- - test/test_raster_source_pattern.rb
211
+ - test/test_surface.rb
217
212
  - test/test_scaled_font.rb
213
+ - test/test_recording_surface.rb
214
+ - test/test_text_to_glyphs_data.rb
215
+ - test/test_font_extents.rb
218
216
  - test/test_tee_surface.rb
219
217
  - test/test_text_extents.rb
220
- - test/test_exception.rb
221
- - test/test_surface.rb
218
+ - test/test_paper.rb
219
+ - test/test_context.rb
220
+ - test/cairo-test-utils.rb
221
+ - test/test_xml_device.rb
222
+ - test/test_raster_source_pattern.rb
223
+ - test/run-test.rb
224
+ - test/test_script_surface.rb
225
+ - test/test_region.rb
222
226
  - test/test_font_face.rb
223
- - test/test_font_options.rb
224
- - test/test_text_to_glyphs_data.rb
225
227
  - test/test_script_device.rb
226
228
  - test/test_xml_surface.rb
227
- - test/test_region.rb
228
- - test/test_context.rb
229
- - test/test_color.rb
230
- - test/test_paper.rb
231
- - test/run-test.rb
229
+ - test/test_exception.rb
232
230
  - test/test_text_cluster.rb
233
- - test/test_font_extents.rb
231
+ - test/test_color.rb
232
+ - test/test_font_options.rb
233
+ - test/test_constants.rb
234
234
  has_rdoc: