Skip to content

Commit

Permalink
wip: use mini_portile 2.8.5.rc2 to simplify extconf
Browse files Browse the repository at this point in the history
  • Loading branch information
flavorjones committed Sep 17, 2023
1 parent a16fa1b commit ae5c139
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 33 deletions.
46 changes: 14 additions & 32 deletions ext/sqlite3/extconf.rb
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,16 @@ def sqlcipher?
def configure_system_libraries
pkg_config(libname)
append_cppflags("-DUSING_SQLCIPHER") if sqlcipher?

if find_header("sqlite3.h")
# noop
elsif sqlcipher? && find_header("sqlcipher/sqlite3.h")
append_cppflags("-DUSING_SQLCIPHER_INC_SUBDIR")
else
abort_could_not_find("sqlite3.h")
end

abort_could_not_find(libname) unless find_library(libname, "sqlite3_libversion_number", "sqlite3.h")
end

def configure_packaged_libraries
Expand All @@ -65,29 +75,9 @@ def configure_packaged_libraries
unless File.exist?(File.join(recipe.target, recipe.host, recipe.name, recipe.version))
recipe.cook
end
recipe.activate

# on macos, pkg-config will not return --cflags without this
ENV["PKG_CONFIG_ALLOW_SYSTEM_CFLAGS"] = "t"

# only needed for Ruby 3.1.3, see https://bugs.ruby-lang.org/issues/19233
RbConfig::CONFIG["PKG_CONFIG"] = config_string("PKG_CONFIG") || "pkg-config"

lib_path = File.join(recipe.path, "lib")
pcfile = File.join(lib_path, "pkgconfig", "sqlite3.pc")
abort_pkg_config("pkg_config") unless pkg_config(pcfile)

# see https://bugs.ruby-lang.org/issues/18490
ldflags = xpopen(["pkg-config", "--libs", "--static", pcfile], err: [:child, :out], &:read)
abort_pkg_config("xpopen") unless $?.success?
ldflags = ldflags.split

# see https://github.com/flavorjones/mini_portile/issues/118
"-L#{lib_path}".tap do |lib_path_flag|
ldflags.prepend(lib_path_flag) unless ldflags.include?(lib_path_flag)
end

ldflags.each { |ldflag| append_ldflags(ldflag) }
recipe.mkmf_config(pkg: libname, static: libname)
have_func("sqlite3_libversion_number", "sqlite3.h") || abort_could_not_find(libname)
end
end

Expand All @@ -98,16 +88,6 @@ def configure_extension

append_cflags("-fvisibility=hidden") # see https://github.com/rake-compiler/rake-compiler-dock/issues/87

if find_header("sqlite3.h")
# noop
elsif sqlcipher? && find_header("sqlcipher/sqlite3.h")
append_cppflags("-DUSING_SQLCIPHER_INC_SUBDIR")
else
abort_could_not_find("sqlite3.h")
end

abort_could_not_find(libname) unless find_library(libname, "sqlite3_libversion_number", "sqlite3.h")

# Functions defined in 1.9 but not 1.8
have_func('rb_proc_arity')

Expand All @@ -131,6 +111,8 @@ def configure_extension
end

def minimal_recipe
require "rubygems"
gem "mini_portile2", "2.8.5.rc2" # gemspec is not respected at install time
require "mini_portile2"

MiniPortile.new(libname, sqlite3_config[:version]).tap do |recipe|
Expand Down
2 changes: 1 addition & 1 deletion sqlite3.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ Gem::Specification.new do |s|
]
s.rdoc_options = ["--main", "README.md"]

s.add_dependency("mini_portile2", "~> 2.8.0")
s.add_dependency("mini_portile2", "2.8.5.rc2")

s.extensions << "ext/sqlite3/extconf.rb"
end

0 comments on commit ae5c139

Please sign in to comment.