summaryrefslogtreecommitdiff
path: root/vendor/bundle/ruby/3.4.0/gems/concurrent-ruby-1.3.5/Rakefile
diff options
context:
space:
mode:
authorBenjamin Sanders <ben@Benjamins-MacBook-Pro.local>2025-10-11 10:34:24 -0400
committerBenjamin Sanders <ben@Benjamins-MacBook-Pro.local>2025-10-11 10:34:24 -0400
commit5571dc766e2143e39762ff0b47c41d1c2e154f4c (patch)
treef4f124d314a7e76c04484515aa0fd1f2e271a601 /vendor/bundle/ruby/3.4.0/gems/concurrent-ruby-1.3.5/Rakefile
parent359f3309c97fc894b63e0a295c76ab298504d635 (diff)
Vendor bundled gems for deployment
Diffstat (limited to 'vendor/bundle/ruby/3.4.0/gems/concurrent-ruby-1.3.5/Rakefile')
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/concurrent-ruby-1.3.5/Rakefile344
1 files changed, 344 insertions, 0 deletions
diff --git a/vendor/bundle/ruby/3.4.0/gems/concurrent-ruby-1.3.5/Rakefile b/vendor/bundle/ruby/3.4.0/gems/concurrent-ruby-1.3.5/Rakefile
new file mode 100644
index 0000000..3d157d4
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/concurrent-ruby-1.3.5/Rakefile
@@ -0,0 +1,344 @@
+version = File.read("#{__dir__}/lib/concurrent-ruby/concurrent/version.rb")[/'(.+)'/, 1] or raise
+edge_version = File.read("#{__dir__}/lib/concurrent-ruby-edge/concurrent/edge/version.rb")[/'(.+)'/, 1] or raise
+
+core_gemspec = Gem::Specification.load File.join(__dir__, 'concurrent-ruby.gemspec')
+ext_gemspec = Gem::Specification.load File.join(__dir__, 'concurrent-ruby-ext.gemspec')
+edge_gemspec = Gem::Specification.load File.join(__dir__, 'concurrent-ruby-edge.gemspec')
+
+require 'rake/javaextensiontask'
+
+ENV['JRUBY_HOME'] = ENV['CONCURRENT_JRUBY_HOME'] if ENV['CONCURRENT_JRUBY_HOME'] && RUBY_ENGINE != 'jruby'
+
+Rake::JavaExtensionTask.new('concurrent_ruby', core_gemspec) do |ext|
+ ext.ext_dir = 'ext/concurrent-ruby'
+ ext.lib_dir = 'lib/concurrent-ruby/concurrent'
+ ext.source_version = '8'
+ ext.target_version = '8'
+end
+
+if RUBY_ENGINE == 'ruby'
+ require 'rake/extensiontask'
+
+ Rake::ExtensionTask.new('concurrent_ruby_ext', ext_gemspec) do |ext|
+ ext.ext_dir = 'ext/concurrent-ruby-ext'
+ ext.lib_dir = 'lib/concurrent-ruby/concurrent'
+ ext.source_pattern = '*.{c,h}'
+
+ ext.cross_compile = true
+ ext.cross_platform = ['x86-mingw32', 'x64-mingw32']
+ end
+end
+
+def which?(executable)
+ !`which #{executable} 2>/dev/null`.empty?
+end
+
+require 'rake_compiler_dock'
+namespace :repackage do
+ desc '* with Windows fat distributions'
+ task :all do
+ Dir.chdir(__dir__) do
+ # store gems in vendor cache for docker
+ Bundler.with_original_env do
+ sh 'bundle package'
+ end
+
+ # build only the jar file not the whole gem for java platform, the jar is part the concurrent-ruby-x.y.z.gem
+ Rake::Task['lib/concurrent-ruby/concurrent/concurrent_ruby.jar'].invoke
+
+ # build all gem files
+ rack_compiler_dock_kwargs = {}
+ if which?('podman') and (!which?('docker') || `docker --version`.include?('podman'))
+ # podman and only podman available, so RakeCompilerDock will use podman, otherwise it uses docker
+ rack_compiler_dock_kwargs = {
+ options: ['--privileged'], # otherwise the directory in the image is empty
+ runas: false
+ }
+ end
+ %w[x86-mingw32 x64-mingw32].each do |plat|
+ RakeCompilerDock.sh(
+ "bundle install --local && bundle exec rake native:#{plat} gem --trace",
+ platform: plat,
+ **rack_compiler_dock_kwargs)
+ end
+ end
+ end
+end
+
+require 'rubygems'
+require 'rubygems/package_task'
+
+Gem::PackageTask.new(core_gemspec) {} if core_gemspec
+Gem::PackageTask.new(ext_gemspec) {} if ext_gemspec && RUBY_ENGINE != 'jruby'
+Gem::PackageTask.new(edge_gemspec) {} if edge_gemspec
+
+CLEAN.include(
+ 'lib/concurrent-ruby/concurrent/concurrent_ruby_ext.*',
+ 'lib/concurrent-ruby/concurrent/2.*',
+ 'lib/concurrent-ruby/concurrent/*.jar')
+
+begin
+ require 'rspec'
+ require 'rspec/core/rake_task'
+
+ RSpec::Core::RakeTask.new(:spec)
+
+ namespace :spec do
+ desc '* Configured for ci'
+ RSpec::Core::RakeTask.new(:ci) do |t|
+ options = %w[ --color
+ --backtrace
+ --order defined
+ --format documentation ]
+ t.rspec_opts = [*options].join(' ')
+ end
+
+ desc '* test packaged and installed gems instead of local files'
+ task :installed do
+ Bundler.with_original_env do
+ Dir.chdir(__dir__) do
+ sh "gem install pkg/concurrent-ruby-#{version}.gem"
+ sh "gem install pkg/concurrent-ruby-ext-#{version}.gem" if RUBY_ENGINE == 'ruby'
+ sh "gem install pkg/concurrent-ruby-edge-#{edge_version}.gem"
+ ENV['NO_PATH'] = 'true'
+ sh 'bundle update'
+ sh 'bundle exec rake spec:ci'
+ end
+ end
+ end
+ end
+
+ desc 'executed in CI'
+ task :ci => [:compile, 'spec:ci']
+
+ desc 'run each spec file in a separate process to help find missing requires'
+ task 'spec:isolated' do
+ glob = "#{ENV['DIR'] || 'spec'}/**/*_spec.rb"
+ from = ENV['FROM']
+ env = { 'ISOLATED' => 'true' }
+ Dir[glob].each do |spec|
+ next if from and from != spec
+ from = nil if from == spec
+
+ sh env, 'rspec', spec
+ end
+ end
+
+ task :default => [:clobber, :compile, :spec]
+rescue LoadError => e
+ puts 'RSpec is not installed, skipping test task definitions: ' + e.message
+end
+
+current_yard_version_name = version
+
+begin
+ require 'yard'
+ require 'md_ruby_eval'
+ require_relative 'support/yard_full_types'
+
+ common_yard_options = ['--no-yardopts',
+ '--no-document',
+ '--no-private',
+ '--embed-mixins',
+ '--markup', 'markdown',
+ '--title', 'Concurrent Ruby',
+ '--template', 'default',
+ '--template-path', 'yard-template',
+ '--default-return', 'undocumented']
+
+ desc 'Generate YARD Documentation (signpost, master)'
+ task :yard => ['yard:signpost', 'yard:master']
+
+ namespace :yard do
+
+ desc '* eval markdown files'
+ task :eval_md do
+ Dir.chdir File.join(__dir__, 'docs-source') do
+ sh 'bundle exec md-ruby-eval --auto'
+ end
+ end
+
+ task :update_readme do
+ Dir.chdir __dir__ do
+ content = File.read(File.join('README.md')).
+ gsub(/\[([\w ]+)\]\(http:\/\/ruby-concurrency\.github\.io\/concurrent-ruby\/master\/.*\)/) do |_|
+ case $1
+ when 'LockFreeLinkedSet'
+ "{Concurrent::Edge::#{$1} #{$1}}"
+ when '.dataflow'
+ '{Concurrent.dataflow Concurrent.dataflow}'
+ when 'thread pool'
+ '{file:thread_pools.md thread pool}'
+ else
+ "{Concurrent::#{$1} #{$1}}"
+ end
+ end
+ FileUtils.mkpath 'tmp'
+ File.write 'tmp/README.md', content
+ end
+ end
+
+ define_yard_task = -> name do
+ output_dir = "docs/#{name}"
+
+ removal_name = "remove.#{name}"
+ task removal_name do
+ Dir.chdir __dir__ do
+ FileUtils.rm_rf output_dir
+ end
+ end
+
+ desc "* of #{name} into subdir #{name}"
+ YARD::Rake::YardocTask.new(name) do |yard|
+ yard.options.push(
+ '--output-dir', output_dir,
+ '--main', 'tmp/README.md',
+ *common_yard_options)
+ yard.files = ['./lib/concurrent-ruby/**/*.rb',
+ './lib/concurrent-ruby-edge/**/*.rb',
+ './ext/concurrent_ruby_ext/**/*.c',
+ '-',
+ 'docs-source/thread_pools.md',
+ 'docs-source/promises.out.md',
+ 'docs-source/medium-example.out.rb',
+ 'LICENSE.txt',
+ 'CHANGELOG.md']
+ end
+ Rake::Task[name].prerequisites.push removal_name,
+ # 'yard:eval_md',
+ 'yard:update_readme'
+ end
+
+ define_yard_task.call current_yard_version_name
+ define_yard_task.call 'master'
+
+ desc "* signpost for versions"
+ YARD::Rake::YardocTask.new(:signpost) do |yard|
+ yard.options.push(
+ '--output-dir', 'docs',
+ '--main', 'docs-source/signpost.md',
+ *common_yard_options)
+ yard.files = ['no-lib']
+ end
+ end
+
+rescue LoadError => e
+ puts 'YARD is not installed, skipping documentation task definitions: ' + e.message
+end
+
+desc 'build, test, and publish the gem'
+task :release => ['release:checks', 'release:build', 'release:test', 'release:publish']
+
+namespace :release do
+ # Depends on environment of @pitr-ch
+
+ task :checks do
+ raise '$CONCURRENT_JRUBY_HOME must be set' unless ENV['CONCURRENT_JRUBY_HOME']
+
+ Dir.chdir(__dir__) do
+ sh 'test -z "$(git status --porcelain)"' do |ok, res|
+ unless ok
+ begin
+ status = `git status --porcelain`
+ STDOUT.puts 'There are local changes that you might want to commit.', status, 'Continue? (y/n)'
+ input = STDIN.gets.strip.downcase
+ end until %w(y n).include?(input)
+ exit 1 if input == 'n'
+ end
+ end
+ sh 'git fetch'
+ sh 'test $(git show-ref --verify --hash refs/heads/master) = ' +
+ '$(git show-ref --verify --hash refs/remotes/origin/master)' do |ok, res|
+ unless ok
+ begin
+ STDOUT.puts 'Local master branch is not pushed to origin.', 'Continue? (y/n)'
+ input = STDIN.gets.strip.downcase
+ end until %w(y n).include?(input)
+ exit 1 if input == 'n'
+ end
+ end
+ end
+ end
+
+ desc '* build all *.gem files necessary for release'
+ task :build => [:clobber, 'repackage:all']
+
+ desc '* test actual installed gems instead of cloned repository on MRI and JRuby'
+ task :test do
+ raise '$CONCURRENT_JRUBY_HOME must be set' unless ENV['CONCURRENT_JRUBY_HOME']
+
+ Dir.chdir(__dir__) do
+ puts "Testing with the installed gem"
+
+ Bundler.with_original_env do
+ sh 'ruby -v'
+ sh 'bundle install'
+ sh 'bundle exec rake spec:installed'
+
+ env = { "PATH" => "#{ENV.fetch('CONCURRENT_JRUBY_HOME')}/bin:#{ENV['PATH']}" }
+ sh env, 'ruby -v'
+ sh env, 'bundle install'
+ sh env, 'bundle exec rake spec:installed'
+ end
+
+ puts 'Windows build is untested'
+ end
+ end
+
+ desc '* do all nested steps'
+ task :publish => ['publish:ask', 'publish:tag', 'publish:rubygems', 'publish:post_steps']
+
+ namespace :publish do
+ publish_base = nil
+ publish_edge = nil
+
+ task :ask do
+ begin
+ STDOUT.puts 'Do you want to publish anything now? (y/n)'
+ input = STDIN.gets.strip.downcase
+ end until %w(y n).include?(input)
+ exit 1 if input == 'n'
+
+ begin
+ STDOUT.puts 'Do you want to publish `concurrent-ruby`? (y/n)'
+ input = STDIN.gets.strip.downcase
+ end until %w(y n).include?(input)
+ publish_base = input == 'y'
+
+ begin
+ STDOUT.puts 'Do you want to publish `concurrent-ruby-edge`? (y/n)'
+ input = STDIN.gets.strip.downcase
+ end until %w(y n).include?(input)
+ publish_edge = input == 'y'
+ end
+
+ desc '** tag HEAD with current version and push to github'
+ task :tag => :ask do
+ Dir.chdir(__dir__) do
+ sh "git tag v#{version}" if publish_base
+ sh "git push origin v#{version}" if publish_base
+ sh "git tag edge-v#{edge_version}" if publish_edge
+ sh "git push origin edge-v#{edge_version}" if publish_edge
+ end
+ end
+
+ desc '** push all *.gem files to rubygems'
+ task :rubygems => :ask do
+ Dir.chdir(__dir__) do
+ sh "gem push pkg/concurrent-ruby-#{version}.gem" if publish_base
+ sh "gem push pkg/concurrent-ruby-edge-#{edge_version}.gem" if publish_edge
+ sh "gem push pkg/concurrent-ruby-ext-#{version}.gem" if publish_base
+ sh "gem push pkg/concurrent-ruby-ext-#{version}-x64-mingw32.gem" if publish_base
+ sh "gem push pkg/concurrent-ruby-ext-#{version}-x86-mingw32.gem" if publish_base
+ end
+ end
+
+ desc '** print post release steps'
+ task :post_steps do
+ # TODO: (petr 05-Jun-2021) automate and renew the process
+ puts 'Manually: create a release on GitHub with relevant changelog part'
+ puts 'Manually: send email same as release with relevant changelog part'
+ puts 'Manually: tweet'
+ end
+ end
+end