summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2026-05-11 13:57:59 -0700
committerTakashi Kokubun <takashikkbn@gmail.com>2026-05-11 13:57:59 -0700
commite52562edc0c26a905bec575215f6ac4e7fcdd59f (patch)
treecc36e64f09197a47682c1fffb1342f1132fad46c
parent8539f0b386e2e42f8fe5ac12a2fd9e84872d8c7c (diff)
merge revision(s) c4b3630f5ec500b0d8699cffe214ada3161d0de8: [Backport #22003]
[Bug #22003] Refactor template/configure-ext.mk.tmpl - Select extension library directories by globbing extconf.rb. - Exclude extensions for test before uniquifing bundled gems. - Use `Dir.glob` base option to remove prefixed srcdir.
-rw-r--r--template/configure-ext.mk.tmpl24
1 files changed, 14 insertions, 10 deletions
diff --git a/template/configure-ext.mk.tmpl b/template/configure-ext.mk.tmpl
index cabdb652fd..fff75b1f2e 100644
--- a/template/configure-ext.mk.tmpl
+++ b/template/configure-ext.mk.tmpl
@@ -14,13 +14,20 @@ opt = OptionParser.new do |o|
o.order!(ARGV)
end
srcdir ||= File.dirname(File.dirname(__FILE__))
-exts = {}
-[
- ["exts", "ext", "--extstatic $(EXTSTATIC)"],
- ["gems", ".bundle/gems", "--no-extstatic"],
-].each do |t, d, o|
- exts[t] = [o, Dir.glob("#{srcdir}/#{d}/*/").map {|n| n[(srcdir.size+1)..-2]}]
-end
+exts = {
+ exts: [
+ "--extstatic $(EXTSTATIC)",
+ Dir.glob("ext/**/extconf.rb", base: srcdir).map do |d|
+ d[%r[\Aext/[^/]+]]
+ end.uniq
+ ],
+ gems: [
+ "--no-extstatic",
+ Dir.glob(".bundle/gems/**/extconf.rb", base: srcdir).grep_v(/test/) do |d|
+ d[%r[\A\.bundle/gems/[^/]+]]
+ end.uniq
+ ],
+}
%>
MINIRUBY = <%=miniruby%>
SCRIPT_ARGS = <%=script_args.gsub("#", "\\#").gsub(/\A|[\s"']\K--jobserver-auth=[^\s'"]*/, "")%>
@@ -33,9 +40,6 @@ gems:
% exts.each do |t, (o, dirs)|
% dirs.each do |d|
-% extconf = Dir.glob("#{srcdir}/#{d}/**/extconf.rb")
-% next if extconf.empty?
-% next if extconf.any?{|f| f.include?(".bundle/gems") && f.include?("test") }
<%=t%>: <%=d%>/exts.mk
<%=d%>/exts.mk: FORCE
$(Q)$(MINIRUBY) $(srcdir)/ext/extmk.rb --make='$(MAKE)' \