mirror of
https://github.com/apache/arrow.git
synced 2026-10-28 16:47:19 +08:00
### Rationale for this change `gaflight_server_listen()` may use options' auth handler later. So we should refer the given options while the server is alive. If we don't refer the given options, we may touch freed auth handler later. The argument of `ArrowFlight::Criteria.new`/`ArrowFlight::Ticket.new` should be referred to protect from GC in Ruby. I could fix some problems by `GC.stress = true` but I couldn't fix some problems that are reproduced only on GitHub Actions. I omit tests for them for now. ### What changes are included in this PR? * Refer options for `gaflight_server_listen()` * Refer expression for `ArrowFlight::Criteria.new` * Refer data for `ArrowFlight::Ticket.new` * Omit Flight related tests that I can't fix... ### Are these changes tested? Yes. ### Are there any user-facing changes? Yes. * GitHub Issue: #50302 Authored-by: Sutou Kouhei <kou@clear-code.com> Signed-off-by: Sutou Kouhei <kou@clear-code.com>
103 lines
2.5 KiB
Ruby
103 lines
2.5 KiB
Ruby
# -*- 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
|
|
args = []
|
|
args << "-v" if ENV["RUNNER_DEBUG"]
|
|
ruby("test/run-test.rb", *args)
|
|
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
|