ffi-nats-core 0.2.2 → 0.3.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: '0739b94d694330a419e7c94ed995d510f2c90873'
4
- data.tar.gz: 404c5a0b2384b649053f8825eeec14ec03368e42
3
+ metadata.gz: 043c01bc38fc465f9821578a42577235e5ab4991
4
+ data.tar.gz: ed03d81c41b868b9c694800364cd2b0ceef7739c
5
5
  SHA512:
6
- metadata.gz: 1d49077b5e2bc33b4650ae9dcad9affa2ad56d3f44caaf2cda167284786c15372c1b63454b1652c02bf8e0693b9c6c194326fd70751afd62cb45a16e28c7f2e0
7
- data.tar.gz: a281d0491bbee938863efc3a4be445a07b0c12b8cb080f2b7fe4d3c5078c81e5c01a51bd90c49afb359facb1838dd22a00381fc4c5de48cfcb1f74d56072d128
6
+ metadata.gz: 136c51044e57100eabc6357e48795185058a9006ba057dde970786fb35d6aaccaff4605511cb131b8807b9b27636c0a5cddccc46bc5860cce696f69d5b0b85a0
7
+ data.tar.gz: 51460c9f09582ef1f9eae1120cee8054150d5a424e3adf91b834a16d991cf72a05787f81f89d4b71e0cc715e8603ed64c4e07490df0981c9bf18c640768e6652
data/.gitmodules ADDED
@@ -0,0 +1,3 @@
1
+ [submodule "vendor/cnats"]
2
+ path = vendor/cnats
3
+ url = git@github.com:nats-io/cnats.git
data/Rakefile CHANGED
@@ -1,10 +1,27 @@
1
1
  require "bundler/gem_tasks"
2
2
  require "rake/testtask"
3
+ import "ext/ffi/nats/core/Rakefile"
4
+
5
+ namespace :cnats do
6
+ desc "build cnats"
7
+ task :compile do
8
+ Rake::Task[:compile_cnats].invoke
9
+ end
10
+
11
+ desc "checkout cnats source"
12
+ task :checkout do
13
+ unless ::File.directory?("vendor/cnats/build")
14
+ sh "git submodule update --init"
15
+ end
16
+ end
17
+ end
18
+ Rake::Task["cnats:compile"].prerequisites.insert(0, "cnats:checkout")
3
19
 
4
20
  Rake::TestTask.new(:test) do |t|
5
21
  t.libs << "test"
6
22
  t.libs << "lib"
7
23
  t.test_files = FileList['test/**/*_test.rb']
8
24
  end
25
+ Rake::Task[:test].prerequisites << "cnats:compile"
9
26
 
10
27
  task :default => :test
@@ -0,0 +1,66 @@
1
+ require "rubygems"
2
+ require "fileutils"
3
+ require "ffi"
4
+
5
+ # Copied fom mkmf
6
+ def find_executable(bin, path = nil)
7
+ executable_file = proc do |name|
8
+ begin
9
+ stat = File.stat(name)
10
+ rescue SystemCallError
11
+ else
12
+ next name if stat.file? and stat.executable?
13
+ end
14
+ end
15
+
16
+ if File.expand_path(bin) == bin
17
+ return bin if executable_file.call(bin)
18
+ return nil
19
+ end
20
+ if path ||= ENV['PATH']
21
+ path = path.split(File::PATH_SEPARATOR)
22
+ else
23
+ path = %w[/usr/local/bin /usr/ucb /usr/bin /bin]
24
+ end
25
+ file = nil
26
+ path.each do |dir|
27
+ return file if executable_file.call(file = File.join(dir, bin))
28
+ end
29
+ nil
30
+ end
31
+
32
+ def sys(cmd)
33
+ puts " -- #{cmd}"
34
+ unless ret = system(cmd)
35
+ raise "ERROR: '#{cmd}' failed"
36
+ end
37
+ ret
38
+ end
39
+
40
+ desc "Build the cnats shared lib"
41
+ task :compile_cnats do
42
+ # Do not attempt to install if we want to use the system nats lib
43
+ next if ENV.key?("NATS_USE_SYSTEM_LIB")
44
+
45
+ if !find_executable("cmake")
46
+ abort "ERROR: CMake is required to build ffi-nats-core."
47
+ end
48
+
49
+ CWD = ::File.expand_path(::File.dirname(__FILE__))
50
+ CNATS_DIR = ::File.join(CWD, "..", "..", "..", "..", "vendor", "cnats")
51
+
52
+ ::Dir.chdir(CNATS_DIR) do
53
+ ::Dir.mkdir("build") unless ::Dir.exists?("build")
54
+
55
+ ::Dir.chdir("build") do
56
+ sys("cmake ..")
57
+ sys("make nats")
58
+ end
59
+ end
60
+
61
+ unless ::File.exist?(::File.join(CNATS_DIR, "build", "src", "libnats.#{::FFI::Platform::LIBSUFFIX}"))
62
+ abort "ERROR: Failed to build nats"
63
+ end
64
+ end
65
+
66
+ task :default => :compile_cnats
@@ -17,13 +17,14 @@ Gem::Specification.new do |spec|
17
17
  f.match(%r{^(test|spec|features)/})
18
18
  end
19
19
  spec.bindir = "exe"
20
+ spec.extensions = "ext/ffi/nats/core/Rakefile"
20
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
22
  spec.require_paths = ["lib"]
22
23
 
23
24
  spec.add_dependency "ffi"
24
25
 
25
26
  spec.add_development_dependency "bundler", "~> 1.13"
27
+ spec.add_development_dependency "minitest", "~> 5.0"
26
28
  spec.add_development_dependency "pry"
27
29
  spec.add_development_dependency "rake", "~> 10.0"
28
- spec.add_development_dependency "minitest", "~> 5.0"
29
30
  end
data/lib/ffi/nats/core.rb CHANGED
@@ -27,7 +27,8 @@ module FFI
27
27
  begin
28
28
  # bias the library discovery to a path inside the gem first, then
29
29
  # to the usual system paths
30
- inside_gem = File.join(File.dirname(__FILE__), '..', '..', '..', 'ext')
30
+ gem_base = File.join(File.dirname(__FILE__), '..', '..', '..')
31
+ inside_gem = File.join(gem_base, 'ext')
31
32
  local_path = FFI::Platform::IS_WINDOWS ? ENV['PATH'].split(';') : ENV['PATH'].split(':')
32
33
  env_path = [ ENV['NATS_LIB_PATH'] ].compact
33
34
  rbconfig_path = RbConfig::CONFIG["libdir"]
@@ -51,9 +52,18 @@ module FFI
51
52
  ENV['RUBYOPT'] = rubyopt
52
53
 
53
54
  # Search for libnats in the following order...
54
- NATS_LIB_PATHS = ([inside_gem] + env_path + local_path + [rbconfig_path] + [
55
- '/usr/local/lib', '/opt/local/lib', homebrew_path, '/usr/lib64'
56
- ]).compact.map{|path| "#{path}/libnats.#{FFI::Platform::LIBSUFFIX}"}
55
+ nats_lib_paths =
56
+ if ENV.key?("NATS_USE_SYSTEM_LIB")
57
+ [inside_gem] + env_path + local_path + [rbconfig_path] + [
58
+ '/usr/local/lib', '/opt/local/lib', homebrew_path, '/usr/lib64'
59
+ ]
60
+ else
61
+ [File.join(gem_base, "vendor/cnats/build/src")]
62
+ end
63
+
64
+ NATS_LIB_PATHS = nats_lib_paths.
65
+ compact.map{|path| "#{path}/libnats.#{FFI::Platform::LIBSUFFIX}"}
66
+
57
67
  ffi_lib(NATS_LIB_PATHS + %w{libnats})
58
68
 
59
69
  rescue LoadError => error
@@ -1,7 +1,7 @@
1
1
  module FFI
2
2
  module Nats
3
3
  module Core
4
- VERSION = "0.2.2"
4
+ VERSION = "0.3.0"
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffi-nats-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Dewitt
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-04-05 00:00:00.000000000 Z
11
+ date: 2017-04-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi
@@ -39,61 +39,64 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.13'
41
41
  - !ruby/object:Gem::Dependency
42
- name: pry
42
+ name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: '5.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: '5.0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rake
56
+ name: pry
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '10.0'
61
+ version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '10.0'
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: minitest
70
+ name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '5.0'
75
+ version: '10.0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '5.0'
82
+ version: '10.0'
83
83
  description: " core ffi bindings for ffi-nats "
84
84
  email:
85
85
  - brandonsdewitt@gmail.com
86
86
  executables: []
87
- extensions: []
87
+ extensions:
88
+ - ext/ffi/nats/core/Rakefile
88
89
  extra_rdoc_files: []
89
90
  files:
90
91
  - ".gitignore"
92
+ - ".gitmodules"
91
93
  - ".travis.yml"
92
94
  - Gemfile
93
95
  - README.md
94
96
  - Rakefile
95
97
  - bin/console
96
98
  - bin/setup
99
+ - ext/ffi/nats/core/Rakefile
97
100
  - ffi-nats-core.gemspec
98
101
  - lib/ffi/nats/core.rb
99
102
  - lib/ffi/nats/core/version.rb