summaryrefslogtreecommitdiffstats
path: root/src/arrow/ruby/red-arrow/Rakefile
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/arrow/ruby/red-arrow/Rakefile100
1 files changed, 100 insertions, 0 deletions
diff --git a/src/arrow/ruby/red-arrow/Rakefile b/src/arrow/ruby/red-arrow/Rakefile
new file mode 100644
index 000000000..dd2c310b6
--- /dev/null
+++ b/src/arrow/ruby/red-arrow/Rakefile
@@ -0,0 +1,100 @@
+# -*- ruby -*-
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+require "bundler/gem_helper"
+require "rake/clean"
+require "yard"
+
+base_dir = File.join(__dir__)
+
+helper = Bundler::GemHelper.new(base_dir)
+helper.install
+spec = helper.gemspec
+
+release_task = Rake::Task["release"]
+release_task.prerequisites.replace(["build", "release:rubygem_push"])
+
+def run_extconf(build_dir, extension_dir, *arguments)
+ cd(build_dir) do
+ ruby(File.join(extension_dir, "extconf.rb"),
+ *arguments)
+ end
+end
+
+spec.extensions.each do |extension|
+ extension_dir = File.join(base_dir, File.dirname(extension))
+ build_dir = ENV["BUILD_DIR"]
+ if build_dir
+ build_dir = File.join(build_dir, "red-arrow")
+ directory build_dir
+ else
+ build_dir = extension_dir
+ end
+ CLOBBER << File.join(build_dir, "Makefile")
+ CLOBBER << File.join(build_dir, "mkmf.log")
+
+ makefile = File.join(build_dir, "Makefile")
+ file makefile => build_dir do
+ run_extconf(build_dir, extension_dir)
+ end
+
+ desc "Configure"
+ task :configure => build_dir do
+ run_extconf(build_dir, extension_dir)
+ end
+
+ desc "Compile"
+ task :compile => makefile do
+ cd(build_dir) do
+ sh("make")
+ end
+ end
+
+ task :clean do
+ cd(build_dir) do
+ sh("make", "clean") if File.exist?("Makefile")
+ end
+ end
+end
+
+desc "Run tests"
+task :test do
+ cd(base_dir) do
+ ruby("test/run-test.rb")
+ end
+end
+
+task default: :test
+
+desc "Run benchmarks"
+task :benchmark do
+ benchmarks = if ENV["BENCHMARKS"]
+ ENV["BENCHMARKS"].split
+ else
+ FileList["benchmark/{,*/**/}*.yml"]
+ end
+ cd(base_dir) do
+ benchmarks.each do |benchmark|
+ sh("benchmark-driver", benchmark)
+ end
+ end
+end
+
+YARD::Rake::YardocTask.new do |task|
+end