cb-ffi-proj4 0.0.3 → 0.0.6
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/Rakefile +14 -5
- data/VERSION +1 -1
- data/lib/ffi-proj4.rb +34 -13
- data/test/test_helper.rb +1 -1
- metadata +30 -41
data/Rakefile
CHANGED
@@ -2,9 +2,17 @@
|
|
2
2
|
# -*- ruby -*-
|
3
3
|
|
4
4
|
require 'rubygems'
|
5
|
-
require '
|
5
|
+
require 'rubygems/package_task'
|
6
6
|
require 'rake/testtask'
|
7
|
-
require '
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
if RUBY_VERSION >= '1.9'
|
10
|
+
begin
|
11
|
+
gem 'psych'
|
12
|
+
rescue Exception => e
|
13
|
+
# it's okay, fall back on the bundled psych
|
14
|
+
end
|
15
|
+
end
|
8
16
|
|
9
17
|
$:.push 'lib'
|
10
18
|
|
@@ -19,6 +27,7 @@ begin
|
|
19
27
|
gem.email = "dark.panda@gmail.com"
|
20
28
|
gem.homepage = "http://github.com/dark-panda/ffi-proj4"
|
21
29
|
gem.authors = [ "J Smith" ]
|
30
|
+
gem.add_dependency "ffi", "~> 1.0.0"
|
22
31
|
end
|
23
32
|
Jeweler::GemcutterTasks.new
|
24
33
|
rescue LoadError
|
@@ -27,15 +36,15 @@ end
|
|
27
36
|
|
28
37
|
desc 'Test GEOS interface'
|
29
38
|
Rake::TestTask.new(:test) do |t|
|
30
|
-
t.
|
39
|
+
t.test_files = FileList['test/**/*_tests.rb']
|
31
40
|
t.verbose = !!ENV['VERBOSE_TESTS']
|
32
41
|
end
|
33
42
|
|
34
43
|
desc 'Build docs'
|
35
44
|
Rake::RDocTask.new do |t|
|
36
|
-
require 'rdoc
|
45
|
+
require 'rdoc'
|
37
46
|
t.title ="ffi-proj4 #{version}"
|
38
47
|
t.main = 'README.rdoc'
|
39
48
|
t.rdoc_dir = 'doc'
|
40
|
-
t.rdoc_files.include('
|
49
|
+
t.rdoc_files.include('MIT-LICENSE', 'lib/**/*.rb')
|
41
50
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.6
|
data/lib/ffi-proj4.rb
CHANGED
@@ -3,6 +3,9 @@ require 'rubygems'
|
|
3
3
|
require 'ffi'
|
4
4
|
require 'rbconfig'
|
5
5
|
|
6
|
+
#ENV['PROJ_LIB'] = File.join(File.dirname(__FILE__), %w{ .. data }) unless ENV['PROJ_LIB']
|
7
|
+
#p ENV['PROJ_LIB']
|
8
|
+
|
6
9
|
module Proj4
|
7
10
|
PROJ4_BASE = File.join(File.dirname(__FILE__), 'ffi-proj4')
|
8
11
|
|
@@ -17,7 +20,7 @@ module Proj4
|
|
17
20
|
|
18
21
|
module FFIProj4
|
19
22
|
def self.proj4_library_path
|
20
|
-
return @
|
23
|
+
return @proj4_library_path if @proj4_library_path
|
21
24
|
|
22
25
|
paths = if ENV['PROJ4_LIBRARY_PATH']
|
23
26
|
[ ENV['PROJ4_LIBRARY_PATH'] ]
|
@@ -25,23 +28,26 @@ module Proj4
|
|
25
28
|
[ '/usr/local/{lib64,lib}', '/opt/local/{lib64,lib}', '/usr/{lib64,lib}' ]
|
26
29
|
end
|
27
30
|
|
28
|
-
lib = if
|
29
|
-
Config::CONFIG['arch'],
|
30
|
-
Config::CONFIG['host_os']
|
31
|
-
].detect { |c| c =~ /darwin/ }
|
31
|
+
lib = if FFI::Platform::IS_MAC
|
32
32
|
'libproj.dylib'
|
33
|
+
elsif FFI::Platform::IS_WINDOWS
|
34
|
+
# For MinGW and the official binaries
|
35
|
+
'{libproj-?,proj}.dll'
|
33
36
|
else
|
34
37
|
'libproj.so'
|
35
38
|
end
|
36
39
|
|
40
|
+
paths = if ENV['PROJ4_LIBRARY_PATH']
|
41
|
+
[ ENV['PROJ4_LIBRARY_PATH'] ]
|
42
|
+
elsif FFI::Platform::IS_WINDOWS
|
43
|
+
ENV['PATH'].split(File::PATH_SEPARATOR)
|
44
|
+
else
|
45
|
+
[ '/usr/local/{lib64,lib}', '/opt/local/{lib64,lib}', '/usr/{lib64,lib}' ]
|
46
|
+
end
|
47
|
+
|
37
48
|
@proj4_library_path = Dir.glob(paths.collect { |path|
|
38
|
-
|
49
|
+
File.expand_path(File.join(path, lib))
|
39
50
|
}).first
|
40
|
-
|
41
|
-
if Config::CONFIG['host_os'] =~ /win32/
|
42
|
-
@proj4_library_path = "#{ENV['PROJ4_LIBRARY_PATH'] + '\\' if ENV['PROJ4_LIBRARY_PATH']}proj.dll"
|
43
|
-
end
|
44
|
-
@proj4_library_path
|
45
51
|
end
|
46
52
|
|
47
53
|
extend ::FFI::Library
|
@@ -115,6 +121,10 @@ module Proj4
|
|
115
121
|
|
116
122
|
:pj_datum_transform => [
|
117
123
|
:int, :pointer, :pointer, :long, :int, :pointer, :pointer, :pointer
|
124
|
+
],
|
125
|
+
|
126
|
+
:setenv => [
|
127
|
+
:int, :string, :string, :int
|
118
128
|
]
|
119
129
|
}
|
120
130
|
|
@@ -131,9 +141,20 @@ module Proj4
|
|
131
141
|
end
|
132
142
|
|
133
143
|
class << self
|
144
|
+
attr_reader :proj_lib
|
145
|
+
|
134
146
|
def version
|
135
147
|
FFIProj4.pj_get_release
|
136
148
|
end
|
149
|
+
|
150
|
+
def proj_lib=(lib)
|
151
|
+
@proj_lib = lib
|
152
|
+
# if RUBY_PLATFORM == 'java'
|
153
|
+
# FFIProj4.setenv('PROJ_LIB', lib, 1)
|
154
|
+
# else
|
155
|
+
ENV['PROJ_LIB'] = lib
|
156
|
+
# end
|
157
|
+
end
|
137
158
|
end
|
138
159
|
|
139
160
|
module Constants
|
@@ -146,7 +167,7 @@ module Proj4
|
|
146
167
|
DEG_TO_RAD = 0.0174532925199432958
|
147
168
|
end
|
148
169
|
|
149
|
-
ENV['PROJ_LIB'] = File.join(File.dirname(PROJ4_BASE), %w{ data }) unless ENV['PROJ_LIB']
|
150
|
-
|
151
170
|
include Constants
|
171
|
+
|
172
|
+
self.proj_lib = ENV['PROJ_LIB'] || File.join(File.dirname(__FILE__), %w{ .. data })
|
152
173
|
end
|
data/test/test_helper.rb
CHANGED
@@ -14,7 +14,7 @@ puts "PROJ version #{Proj4.version}"
|
|
14
14
|
if defined?(Proj4::FFIProj4)
|
15
15
|
puts "Using #{Array(Proj4::FFIProj4.proj4_library_path).join(', ')}"
|
16
16
|
end
|
17
|
-
puts "Using PROJ_LIB #{
|
17
|
+
puts "Using PROJ_LIB #{Proj4.proj_lib}"
|
18
18
|
|
19
19
|
module TestHelper
|
20
20
|
TOLERANCE = 0.00000001
|
metadata
CHANGED
@@ -1,33 +1,33 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: cb-ffi-proj4
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 3
|
10
|
-
version: 0.0.3
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- J Smith
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
12
|
+
date: 2011-12-27 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: ffi
|
16
|
+
requirement: &70314475501680 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.0.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70314475501680
|
22
25
|
description: An ffi wrapper for the PROJ.4 Cartographic Projections library.
|
23
26
|
email: dark.panda@gmail.com
|
24
27
|
executables: []
|
25
|
-
|
26
28
|
extensions: []
|
27
|
-
|
28
29
|
extra_rdoc_files: []
|
29
|
-
|
30
|
-
files:
|
30
|
+
files:
|
31
31
|
- MIT-LICENSE
|
32
32
|
- Rakefile
|
33
33
|
- VERSION
|
@@ -62,39 +62,28 @@ files:
|
|
62
62
|
- test/projection_tests.rb
|
63
63
|
- test/test_helper.rb
|
64
64
|
- test/transformation_tests.rb
|
65
|
-
has_rdoc: true
|
66
65
|
homepage: http://github.com/dark-panda/ffi-proj4
|
67
66
|
licenses: []
|
68
|
-
|
69
67
|
post_install_message:
|
70
68
|
rdoc_options: []
|
71
|
-
|
72
|
-
require_paths:
|
69
|
+
require_paths:
|
73
70
|
- lib
|
74
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
71
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
75
72
|
none: false
|
76
|
-
requirements:
|
77
|
-
- -
|
78
|
-
- !ruby/object:Gem::Version
|
79
|
-
|
80
|
-
|
81
|
-
- 0
|
82
|
-
version: "0"
|
83
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
84
78
|
none: false
|
85
|
-
requirements:
|
86
|
-
- -
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
|
89
|
-
segments:
|
90
|
-
- 0
|
91
|
-
version: "0"
|
79
|
+
requirements:
|
80
|
+
- - ! '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
92
83
|
requirements: []
|
93
|
-
|
94
84
|
rubyforge_project:
|
95
|
-
rubygems_version: 1.
|
85
|
+
rubygems_version: 1.8.10
|
96
86
|
signing_key:
|
97
87
|
specification_version: 3
|
98
88
|
summary: An ffi wrapper for the PROJ.4 Cartographic Projections library.
|
99
89
|
test_files: []
|
100
|
-
|