Top Level Namespace
Defined Under Namespace
Modules: DuckDB
Constant Summary collapse
- DUCKDB_REQUIRED_VERSION =
'1.4.0'- FALLBACK_PREFIXES =
%w[/opt/homebrew /opt/homebrew/opt/duckdb /opt/local].freeze
Instance Method Summary collapse
- #brew_dirs(subdir) ⇒ Object
- #brew_prefix(formula = nil) ⇒ Object
- #check_duckdb_header(header, version) ⇒ Object
- #check_duckdb_library(library, func, version) ⇒ Object
- #duckdb_library_name(library) ⇒ Object
- #homebrew_include_dirs ⇒ Object
- #homebrew_lib_dirs ⇒ Object
- #print_message(msg) ⇒ Object
- #raise_not_found_library(library, version) ⇒ Object
Instance Method Details
#brew_dirs(subdir) ⇒ Object
15 16 17 18 19 20 21 22 23 |
# File 'ext/duckdb/extconf.rb', line 15 def brew_dirs(subdir) dirs = [] dirs << "#{brew_prefix('duckdb')}/#{subdir}" if brew_prefix('duckdb') if (prefix = brew_prefix) dirs << "#{prefix}/#{subdir}" dirs << "#{prefix}/opt/duckdb/#{subdir}" end dirs end |
#brew_prefix(formula = nil) ⇒ Object
7 8 9 10 11 |
# File 'ext/duckdb/extconf.rb', line 7 def brew_prefix(formula = nil) cmd = formula ? "brew --prefix #{formula} 2>/dev/null" : 'brew --prefix 2>/dev/null' prefix = `#{cmd}`.chomp prefix.empty? ? nil : prefix end |
#check_duckdb_header(header, version) ⇒ Object
33 34 35 36 37 38 39 40 |
# File 'ext/duckdb/extconf.rb', line 33 def check_duckdb_header(header, version) found = find_header(header, *homebrew_include_dirs) return if found msg = "#{header} is not found. Install #{header} of duckdb >= #{version}." (msg) raise msg end |
#check_duckdb_library(library, func, version) ⇒ Object
42 43 44 45 46 47 48 |
# File 'ext/duckdb/extconf.rb', line 42 def check_duckdb_library(library, func, version) found = find_library(library, func, *homebrew_lib_dirs) have_func(func, 'duckdb.h') return if found raise_not_found_library(library, version) end |
#duckdb_library_name(library) ⇒ Object
57 58 59 |
# File 'ext/duckdb/extconf.rb', line 57 def duckdb_library_name(library) "lib#{library}.#{RbConfig::CONFIG['DLEXT']}" end |
#homebrew_include_dirs ⇒ Object
25 26 27 |
# File 'ext/duckdb/extconf.rb', line 25 def homebrew_include_dirs (brew_dirs('include') + FALLBACK_PREFIXES.map { |p| "#{p}/include" }).uniq end |
#homebrew_lib_dirs ⇒ Object
29 30 31 |
# File 'ext/duckdb/extconf.rb', line 29 def homebrew_lib_dirs (brew_dirs('lib') + FALLBACK_PREFIXES.map { |p| "#{p}/lib" }).uniq end |
#print_message(msg) ⇒ Object
61 62 63 64 65 66 67 68 69 |
# File 'ext/duckdb/extconf.rb', line 61 def (msg) print <<~END_OF_MESSAGE #{'*' * 80} #{msg} #{'*' * 80} END_OF_MESSAGE end |
#raise_not_found_library(library, version) ⇒ Object
50 51 52 53 54 55 |
# File 'ext/duckdb/extconf.rb', line 50 def raise_not_found_library(library, version) library_name = duckdb_library_name(library) msg = "#{library_name} is not found. Install #{library_name} of duckdb >= #{version}." (msg) raise msg end |