boc 0.3.2-x86-mswin32 → 0.4.2-x86-mswin32
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/CHANGES.rdoc +5 -0
- data/README.rdoc +5 -5
- data/Rakefile +133 -7
- data/devel/levitate.rb +234 -340
- data/ext/boc/boc.c +6 -12
- data/jext/boc/BocService.java +111 -0
- data/lib/{boc.so → boc/boc.so} +0 -0
- data/lib/boc/version.rb +1 -1
- data/lib/boc.rb +80 -60
- data/test/basic_test.rb +58 -9
- data/test/jruby_trial.rb +20 -0
- data/test/readme_test.rb +7 -3
- metadata +6 -5
- data/MANIFEST +0 -14
data/CHANGES.rdoc
CHANGED
data/README.rdoc
CHANGED
@@ -30,7 +30,8 @@ Or from inside an unpacked .tgz download, <code>rake install</code> /
|
|
30
30
|
|
31
31
|
Binding of caller: obtain a caller's binding.
|
32
32
|
|
33
|
-
MRI 1.9.2 is required. Support for other Ruby platforms
|
33
|
+
MRI 1.9.2 or JRuby 1.6+ is required. Support for other Ruby platforms
|
34
|
+
is a goal.
|
34
35
|
|
35
36
|
== <code>Binding.of_caller</code>
|
36
37
|
|
@@ -64,15 +65,14 @@ convenience method for existing 1.8 code.
|
|
64
65
|
|
65
66
|
== Implementation
|
66
67
|
|
67
|
-
<code>Boc.enable(A, :f)</code> is
|
68
|
+
When <code>Boc.enable(A, :f)</code> is called it first makes an alias,
|
68
69
|
|
69
70
|
class A
|
70
71
|
alias_method :f__impl, :f
|
71
72
|
end
|
72
73
|
|
73
|
-
|
74
|
-
|
75
|
-
arguments to +f__impl+.
|
74
|
+
Following that, +f+ is replaced by native method whose only tasks are
|
75
|
+
to set <code>Boc.value</code> and then call +f__impl+.
|
76
76
|
|
77
77
|
== Background
|
78
78
|
|
data/Rakefile
CHANGED
@@ -1,13 +1,139 @@
|
|
1
1
|
require_relative 'devel/levitate'
|
2
|
+
require 'rbconfig'
|
2
3
|
|
3
|
-
|
4
|
-
s.developers << ["James M. Lawrence", "quixoticsycophant@gmail.com"]
|
5
|
-
s.username = "quix"
|
6
|
-
s.required_ruby_version = ">= 1.9.2"
|
7
|
-
s.development_dependencies << ["rake-compiler", "~> 0.7.6"]
|
8
|
-
|
9
|
-
s.rdoc_files = %w[
|
4
|
+
def config
|
5
|
+
@s.developers << ["James M. Lawrence", "quixoticsycophant@gmail.com"]
|
6
|
+
@s.username = "quix"
|
7
|
+
@s.required_ruby_version = ">= 1.9.2"
|
8
|
+
@s.development_dependencies << ["rake-compiler", "~> 0.7.6"]
|
9
|
+
@s.rdoc_files = %w[
|
10
10
|
lib/boc.rb
|
11
11
|
lib/boc/version.rb
|
12
12
|
]
|
13
13
|
end
|
14
|
+
|
15
|
+
def mri_ext
|
16
|
+
require 'rake/extensiontask'
|
17
|
+
|
18
|
+
Rake::ExtensionTask.new @s.gem_name, @s.gemspec do |ext|
|
19
|
+
ext.cross_compile = true
|
20
|
+
ext.cross_platform = 'i386-mswin32'
|
21
|
+
ext.lib_dir = "lib/#{@s.gem_name}"
|
22
|
+
end
|
23
|
+
|
24
|
+
# compensate for strange rake-compiler invocation
|
25
|
+
task :cross_native_gem do
|
26
|
+
Rake::Task[:gem].reenable
|
27
|
+
Rake.application.top_level_tasks.replace %w[cross native gem]
|
28
|
+
Rake.application.top_level
|
29
|
+
end
|
30
|
+
|
31
|
+
task :gem => :cross_native_gem
|
32
|
+
|
33
|
+
task :test => so_file
|
34
|
+
|
35
|
+
@s.gemspec.extensions = ["Rakefile"]
|
36
|
+
end
|
37
|
+
|
38
|
+
def jruby_ext
|
39
|
+
require "rake/javaextensiontask"
|
40
|
+
|
41
|
+
Levitate.no_warnings do
|
42
|
+
Rake::JavaExtensionTask.new @s.gem_name, @s.gemspec do |ext|
|
43
|
+
ext.ext_dir = "jext"
|
44
|
+
ext.lib_dir = "lib/#{@s.gem_name}"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
task :jar => jar_file
|
49
|
+
|
50
|
+
case RUBY_ENGINE
|
51
|
+
when "jruby"
|
52
|
+
task :test => jar_file
|
53
|
+
when "ruby"
|
54
|
+
# building/releasing from MRI
|
55
|
+
|
56
|
+
task :jruby_gem => jar_file do
|
57
|
+
# compensate for strange rake-compiler invocation
|
58
|
+
Rake::Task[:gem].reenable
|
59
|
+
Rake.application.top_level_tasks.replace %w[java gem]
|
60
|
+
Rake.application.top_level
|
61
|
+
end
|
62
|
+
|
63
|
+
task :gem => :jruby_gem
|
64
|
+
|
65
|
+
task :test_jruby do
|
66
|
+
run_jruby = ENV["RUN_JRUBY"] || "jruby"
|
67
|
+
cmd = run_jruby + " --1.9 -J-Djruby.astInspector.enabled=0 -S rake"
|
68
|
+
sh(cmd + " test")
|
69
|
+
sh(cmd + " test_deps")
|
70
|
+
end
|
71
|
+
|
72
|
+
task :prerelease => :test_jruby
|
73
|
+
|
74
|
+
CLEAN.add jar_file
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def jar_file
|
79
|
+
# the only path jruby recognizes
|
80
|
+
File.join("lib", @s.gem_name, @s.gem_name + ".jar")
|
81
|
+
end
|
82
|
+
|
83
|
+
def so_file
|
84
|
+
File.join("lib", @s.gem_name, @s.gem_name + "." + RbConfig::CONFIG["DLEXT"])
|
85
|
+
end
|
86
|
+
|
87
|
+
def native_file
|
88
|
+
case RUBY_ENGINE
|
89
|
+
when "ruby"
|
90
|
+
so_file
|
91
|
+
when "jruby"
|
92
|
+
jar_file
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def append_installer
|
97
|
+
fu = FileUtils::Verbose
|
98
|
+
|
99
|
+
source = native_file
|
100
|
+
dir = File.join RbConfig::CONFIG["sitearchdir"], @s.gem_name
|
101
|
+
dest = File.join dir, File.basename(source)
|
102
|
+
|
103
|
+
task :install => source do
|
104
|
+
fu.mkdir dir unless File.directory? dir
|
105
|
+
fu.install source, dest
|
106
|
+
end
|
107
|
+
|
108
|
+
task :uninstall do
|
109
|
+
fu.rm dest if File.file? dest
|
110
|
+
fu.rmdir dir if File.directory? dir
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
def config_extension
|
115
|
+
case RUBY_ENGINE
|
116
|
+
when "jruby"
|
117
|
+
jruby_ext
|
118
|
+
when "ruby"
|
119
|
+
mri_ext
|
120
|
+
else
|
121
|
+
raise "sorry, platform `#{RUBY_ENGINE}' not supported"
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
Levitate.new "boc" do |s|
|
126
|
+
@s = s
|
127
|
+
config
|
128
|
+
if File.directory? ".git"
|
129
|
+
mri_ext if RUBY_ENGINE == "ruby"
|
130
|
+
jruby_ext
|
131
|
+
elsif not File.file?(native_file)
|
132
|
+
config_extension
|
133
|
+
end
|
134
|
+
append_installer
|
135
|
+
task :finish_release do
|
136
|
+
sh "gem", "push", "pkg/#{@s.gem_name}-#{@s.version}-java.gem"
|
137
|
+
sh "gem", "push", "pkg/#{@s.gem_name}-#{@s.version}-x86-mswin32.gem"
|
138
|
+
end
|
139
|
+
end
|