pkg-config 1.0.4 → 1.0.5
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.
- data/NEWS +5 -0
- data/lib/pkg-config.rb +82 -66
- data/test/test_pkg_config.rb +1 -0
- metadata +3 -3
data/NEWS
CHANGED
data/lib/pkg-config.rb
CHANGED
@@ -24,6 +24,75 @@ require 'pathname'
|
|
24
24
|
class PackageConfig
|
25
25
|
SEPARATOR = File::PATH_SEPARATOR
|
26
26
|
|
27
|
+
class << self
|
28
|
+
@native_pkg_config = nil
|
29
|
+
def native_pkg_config
|
30
|
+
return @native_pkg_config if @native_pkg_config
|
31
|
+
pkg_config = with_config("pkg-config", ENV["PKG_CONFIG"] || "pkg-config")
|
32
|
+
pkg_config = Pathname.new(pkg_config)
|
33
|
+
unless pkg_config.absolute?
|
34
|
+
found_pkg_config = search_pkg_config_from_path(pkg_config)
|
35
|
+
pkg_config = found_pkg_config if found_pkg_config
|
36
|
+
end
|
37
|
+
unless pkg_config.absolute?
|
38
|
+
found_pkg_config = search_pkg_config_by_dln_find_exe(pkg_config)
|
39
|
+
pkg_config = found_pkg_config if found_pkg_config
|
40
|
+
end
|
41
|
+
@native_pkg_config = pkg_config
|
42
|
+
end
|
43
|
+
|
44
|
+
@custom_override_variables = nil
|
45
|
+
def custom_override_variables
|
46
|
+
@custom_override_variables ||= with_config("override-variables", "")
|
47
|
+
end
|
48
|
+
|
49
|
+
def clear_configure_args_cache
|
50
|
+
@native_pkg_config = nil
|
51
|
+
@custom_override_variables = nil
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
def search_pkg_config_from_path(pkg_config)
|
56
|
+
(ENV["PATH"] || "").split(SEPARATOR).each do |path|
|
57
|
+
try_pkg_config = Pathname(path) + pkg_config
|
58
|
+
return try_pkg_config if try_pkg_config.exist?
|
59
|
+
end
|
60
|
+
nil
|
61
|
+
end
|
62
|
+
|
63
|
+
def search_pkg_config_by_dln_find_exe(pkg_config)
|
64
|
+
begin
|
65
|
+
require "dl/import"
|
66
|
+
rescue LoadError
|
67
|
+
return nil
|
68
|
+
end
|
69
|
+
dln = Module.new
|
70
|
+
dln.module_eval do
|
71
|
+
if DL.const_defined?(:Importer)
|
72
|
+
extend DL::Importer
|
73
|
+
else
|
74
|
+
extend DL::Importable
|
75
|
+
end
|
76
|
+
begin
|
77
|
+
dlload RbConfig::CONFIG["LIBRUBY"]
|
78
|
+
rescue RuntimeError
|
79
|
+
return nil if $!.message == "unknown error"
|
80
|
+
return nil if /: image not found\z/ =~ $!.message
|
81
|
+
raise
|
82
|
+
rescue DL::DLError
|
83
|
+
return nil
|
84
|
+
end
|
85
|
+
extern "const char *dln_find_exe(const char *, const char *)"
|
86
|
+
end
|
87
|
+
path = dln.dln_find_exe(pkg_config.to_s, nil)
|
88
|
+
if path.size.zero?
|
89
|
+
nil
|
90
|
+
else
|
91
|
+
Pathname(path.to_s)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
27
96
|
attr_reader :paths
|
28
97
|
attr_accessor :msvc_syntax
|
29
98
|
def initialize(name, options={})
|
@@ -34,7 +103,7 @@ class PackageConfig
|
|
34
103
|
@paths.unshift(@options[:paths] || [])
|
35
104
|
@msvc_syntax = @options[:msvc_syntax]
|
36
105
|
@variables = @declarations = nil
|
37
|
-
override_variables =
|
106
|
+
override_variables = self.class.custom_override_variables
|
38
107
|
@override_variables = parse_override_variables(override_variables)
|
39
108
|
default_override_variables = @options[:override_variables] || {}
|
40
109
|
@override_variables = default_override_variables.merge(@override_variables)
|
@@ -187,46 +256,6 @@ class PackageConfig
|
|
187
256
|
end
|
188
257
|
end
|
189
258
|
|
190
|
-
def search_pkg_config_from_path(pkg_config)
|
191
|
-
(ENV["PATH"] || "").split(SEPARATOR).each do |path|
|
192
|
-
try_pkg_config = Pathname(path) + pkg_config
|
193
|
-
return try_pkg_config if try_pkg_config.exist?
|
194
|
-
end
|
195
|
-
nil
|
196
|
-
end
|
197
|
-
|
198
|
-
def search_pkg_config_by_dln_find_exe(pkg_config)
|
199
|
-
begin
|
200
|
-
require "dl/import"
|
201
|
-
rescue LoadError
|
202
|
-
return nil
|
203
|
-
end
|
204
|
-
dln = Module.new
|
205
|
-
dln.module_eval do
|
206
|
-
if DL.const_defined?(:Importer)
|
207
|
-
extend DL::Importer
|
208
|
-
else
|
209
|
-
extend DL::Importable
|
210
|
-
end
|
211
|
-
begin
|
212
|
-
dlload RbConfig::CONFIG["LIBRUBY"]
|
213
|
-
rescue RuntimeError
|
214
|
-
return nil if $!.message == "unknown error"
|
215
|
-
return nil if /: image not found\z/ =~ $!.message
|
216
|
-
raise
|
217
|
-
rescue DL::DLError
|
218
|
-
return nil
|
219
|
-
end
|
220
|
-
extern "const char *dln_find_exe(const char *, const char *)"
|
221
|
-
end
|
222
|
-
path = dln.dln_find_exe(pkg_config.to_s, nil)
|
223
|
-
if path.size.zero?
|
224
|
-
nil
|
225
|
-
else
|
226
|
-
Pathname(path.to_s)
|
227
|
-
end
|
228
|
-
end
|
229
|
-
|
230
259
|
def guess_default_path
|
231
260
|
default_path = ["/usr/local/lib64/pkgconfig",
|
232
261
|
"/usr/local/lib/pkgconfig",
|
@@ -239,17 +268,7 @@ class PackageConfig
|
|
239
268
|
libdir = ENV["PKG_CONFIG_LIBDIR"]
|
240
269
|
default_path = [libdir, default_path].join(SEPARATOR) if libdir
|
241
270
|
|
242
|
-
pkg_config =
|
243
|
-
pkg_config = Pathname.new(pkg_config)
|
244
|
-
unless pkg_config.absolute?
|
245
|
-
found_pkg_config = search_pkg_config_from_path(pkg_config)
|
246
|
-
pkg_config = found_pkg_config if found_pkg_config
|
247
|
-
end
|
248
|
-
unless pkg_config.absolute?
|
249
|
-
found_pkg_config = search_pkg_config_by_dln_find_exe(pkg_config)
|
250
|
-
pkg_config = found_pkg_config if found_pkg_config
|
251
|
-
end
|
252
|
-
|
271
|
+
pkg_config = self.class.native_pkg_config
|
253
272
|
return default_path unless pkg_config.absolute?
|
254
273
|
[(pkg_config.parent.parent + "lib" + "pkgconfig").to_s,
|
255
274
|
(pkg_config.parent.parent + "libdata" + "pkgconfig").to_s,
|
@@ -258,7 +277,7 @@ class PackageConfig
|
|
258
277
|
end
|
259
278
|
|
260
279
|
module PKGConfig
|
261
|
-
VERSION = "1.0.
|
280
|
+
VERSION = "1.0.5"
|
262
281
|
|
263
282
|
@@paths = []
|
264
283
|
@@override_variables = {}
|
@@ -327,15 +346,15 @@ module PKGConfig
|
|
327
346
|
end
|
328
347
|
|
329
348
|
def have_package(pkg, major = nil, minor = 0, micro = 0)
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
STDOUT.print("checking for #{pkg} version (>= #{major}.#{minor}.#{micro})... ")
|
349
|
+
message = "#{pkg}"
|
350
|
+
unless major.nil?
|
351
|
+
message << "version (>= #{major}.#{minor}.#{micro})"
|
334
352
|
end
|
335
353
|
major ||= 0
|
336
|
-
|
337
|
-
|
338
|
-
|
354
|
+
enough_version = checking_for(checking_message(message)) do
|
355
|
+
check_version?(pkg, major, minor, micro)
|
356
|
+
end
|
357
|
+
if enough_version
|
339
358
|
libraries = libs_only_l(pkg)
|
340
359
|
dldflags = libs(pkg)
|
341
360
|
dldflags = (Shellwords.shellwords(dldflags) -
|
@@ -343,15 +362,12 @@ module PKGConfig
|
|
343
362
|
dldflags = dldflags.map {|s| /\s/ =~ s ? "\"#{s}\"" : s }.join(' ')
|
344
363
|
$libs += ' ' + libraries
|
345
364
|
if /mswin32/ =~ RUBY_PLATFORM
|
346
|
-
|
365
|
+
$DLDFLAGS += ' ' + dldflags
|
347
366
|
else
|
348
|
-
|
367
|
+
$LDFLAGS += ' ' + dldflags
|
349
368
|
end
|
350
369
|
$CFLAGS += ' ' + cflags(pkg)
|
351
|
-
true
|
352
|
-
else
|
353
|
-
STDOUT.print "no\n"
|
354
|
-
false
|
355
370
|
end
|
371
|
+
enough_version
|
356
372
|
end
|
357
373
|
end
|
data/test/test_pkg_config.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pkg-config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 29
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 1.0.
|
9
|
+
- 5
|
10
|
+
version: 1.0.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Kouhei Sutou
|