Skip to content

Commit 562ae6d

Browse files
committed
Builds two gems from one repo. Specs and docs need updated.
1 parent 67d6631 commit 562ae6d

16 files changed

+106
-60
lines changed

Gemfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
source 'https://rubygems.org'
22

3-
gemspec
3+
gemspec name: 'concurrent-ruby'
44

55
group :development do
66
gem 'rake', '~> 10.3.2'

Rakefile

Lines changed: 35 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,7 @@
1-
require 'bundler/gem_tasks'
2-
require 'rake/extensiontask'
3-
require 'rake/javaextensiontask'
4-
5-
GEMSPEC = Gem::Specification.load('concurrent-ruby.gemspec')
1+
CORE_GEMSPEC = Gem::Specification.load('concurrent-ruby.gemspec')
2+
EXT_GEMSPEC = Gem::Specification.load('concurrent-ruby-ext.gemspec')
63
EXTENSION_NAME = 'concurrent_ruby_ext'
74

8-
Bundler::GemHelper.install_tasks
9-
105
$:.push File.join(File.dirname(__FILE__), 'lib')
116
require 'extension_helper'
127

@@ -23,20 +18,22 @@ Dir.glob('tasks/**/*.rake').each do |rakefile|
2318
safe_load rakefile
2419
end
2520

26-
desc 'Run benchmarks'
21+
#desc 'Run benchmarks'
2722
task :bench do
2823
exec 'ruby -Ilib -Iext examples/bench_atomic.rb'
2924
end
3025

3126
if defined?(JRUBY_VERSION)
27+
require 'rake/javaextensiontask'
3228

33-
Rake::JavaExtensionTask.new(EXTENSION_NAME, GEMSPEC) do |ext|
29+
Rake::JavaExtensionTask.new(EXTENSION_NAME, CORE_GEMSPEC) do |ext|
3430
ext.ext_dir = 'ext'
3531
end
3632

3733
elsif Concurrent.allow_c_extensions?
34+
require 'rake/extensiontask'
3835

39-
Rake::ExtensionTask.new(EXTENSION_NAME, GEMSPEC) do |ext|
36+
Rake::ExtensionTask.new(EXTENSION_NAME, EXT_GEMSPEC) do |ext|
4037
ext.ext_dir = "ext/#{EXTENSION_NAME}"
4138
ext.cross_compile = true
4239
ext.cross_platform = ['x86-mingw32', 'x64-mingw32']
@@ -61,7 +58,6 @@ elsif Concurrent.allow_c_extensions?
6158
else
6259
task :clean
6360
task :compile
64-
task "compile:#{EXTENSION_NAME}"
6561
end
6662

6763
Rake::Task[:clean].enhance do
@@ -71,6 +67,7 @@ Rake::Task[:clean].enhance do
7167
rm_rf 'lib/2.0'
7268
rm_f Dir.glob('./lib/*.jar')
7369
rm_f Dir.glob('./**/*.bundle')
70+
mkdir_p 'pkg'
7471
end
7572

7673
begin
@@ -85,3 +82,30 @@ begin
8582
rescue LoadError
8683
puts 'Error loading Rspec rake tasks, probably building the gem...'
8784
end
85+
86+
namespace :build do
87+
88+
build_deps = [:clean]
89+
build_deps << :compile if defined?(JRUBY_VERSION)
90+
91+
desc 'Build the concurrent-ruby gem'
92+
task :core => build_deps do
93+
sh "gem build #{CORE_GEMSPEC.name}.gemspec"
94+
sh 'mv *.gem pkg/'
95+
Rake::Task[:clean].execute
96+
end
97+
98+
if Concurrent.allow_c_extensions?
99+
desc 'Build the concurrent-ruby-ext gem'
100+
task :ext => [:clean, :compile] do
101+
sh "gem build #{EXT_GEMSPEC.name}.gemspec"
102+
sh 'mv *.gem pkg/'
103+
Rake::Task[:clean].execute
104+
end
105+
else
106+
task :ext
107+
end
108+
end
109+
110+
desc 'Build all gems for this platform'
111+
task :build => ['build:core', 'build:ext']

concurrent-ruby-ext.gemspec

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
Gem::Specification.new do |s|
2+
s.name = 'concurrent-ruby-ext'
3+
s.version = '0.1.0.pre1'
4+
s.platform = Gem::Platform::RUBY
5+
s.author = "Jerry D'Antonio"
6+
s.email = '[email protected]'
7+
s.homepage = 'http://www.concurrent-ruby.com'
8+
s.summary = 'C extensions to optimize concurrent-ruby under MRI.'
9+
s.license = 'MIT'
10+
s.date = Time.now.strftime('%Y-%m-%d')
11+
12+
s.description = <<-EOF
13+
Modern concurrency tools including agents, futures, promises, thread pools, actors, supervisors, and more.
14+
Inspired by Erlang, Clojure, Go, JavaScript, actors, and classic concurrency patterns.
15+
EOF
16+
17+
s.files = Dir['ext/**/*.{h,c,cpp}']
18+
s.files += [
19+
'lib/concurrent/atomic_reference/concurrent_update_error.rb',
20+
'lib/concurrent/atomic_reference/direct_update.rb',
21+
'lib/concurrent/atomic_reference/numeric_cas_wrapper.rb',
22+
]
23+
s.extra_rdoc_files = Dir['README*', 'LICENSE*', 'CHANGELOG*']
24+
s.require_paths = ['lib']
25+
s.extensions = 'ext/concurrent_ruby_ext/extconf.rb'
26+
27+
s.required_ruby_version = '>= 1.9.3'
28+
29+
s.add_runtime_dependency 'concurrent-ruby', '~> 0.8.0.pre1'
30+
end

concurrent-ruby.gemspec

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,9 @@ Gem::Specification.new do |s|
2525
if defined?(JRUBY_VERSION)
2626
s.files += Dir['lib/concurrent_ruby_ext.jar']
2727
s.platform = 'java'
28-
elsif ! ENV['BUILD_PURE_RUBY']
29-
s.extensions = 'ext/concurrent_ruby_ext/extconf.rb'
30-
s.files += Dir['ext/**/*.{h,c,cpp}']
28+
else
29+
s.add_runtime_dependency 'ref', '~> 1.0', '>= 1.0.5'
3130
end
3231

3332
s.required_ruby_version = '>= 1.9.3'
34-
35-
unless defined?(JRUBY_VERSION)
36-
s.add_dependency 'ref', '~> 1.0.5'
37-
end
3833
end

examples/atomic_example.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
require 'concurrent'
1+
require 'concurrent/atomic'
22

33
my_atomic = Concurrent::Atomic.new(0)
44
my_atomic.update {|v| v + 1}

examples/bench_atomic.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
require 'benchmark'
22
require 'rbconfig'
33
require 'thread'
4-
require 'concurrent'
4+
require 'concurrent/atomic'
5+
56
Thread.abort_on_exception = true
67

78
$go = false # for synchronizing parallel threads

examples/bench_atomic_1.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@
66
require 'thread'
77
require 'benchmark'
88

9-
require 'concurrent'
9+
begin
10+
require 'concurrent-ext'
11+
rescue LoadError
12+
require 'concurrent'
13+
end
1014

1115
Thread.abort_on_exception = true
1216

examples/benchmark_atomic_boolean.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
$:.push File.join(File.dirname(__FILE__), '../lib')
44

5-
require 'concurrent'
5+
require 'concurrent/atomics'
66
require 'benchmark'
77
require 'rbconfig'
88

examples/benchmark_atomic_fixnum.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
$:.push File.join(File.dirname(__FILE__), '../lib')
44

5-
require 'concurrent'
5+
require 'concurrent/atomics'
66
require 'benchmark'
77
require 'rbconfig'
88

lib/concurrent/atomic.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
end
1313
#####################################################################
1414

15+
require_relative '../extension_helper'
1516
require 'concurrent/atomic_reference/concurrent_update_error'
1617
require 'concurrent/atomic_reference/mutex_atomic'
1718

@@ -77,7 +78,7 @@ class Concurrent::Atomic < Concurrent::JavaAtomic
7778
class Concurrent::Atomic < Concurrent::RbxAtomic
7879
end
7980

80-
elsif Concurrent.allow_c_native_class?('CAtomic')
81+
elsif defined?(CAtomic)
8182

8283
# @!macro atomic_reference
8384
class Concurrent::Atomic < Concurrent::CAtomic

0 commit comments

Comments
 (0)