Skip to content

Commit 2e946c6

Browse files
committed
[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.
1 parent d077df2 commit 2e946c6

1 file changed

Lines changed: 14 additions & 10 deletions

File tree

template/configure-ext.mk.tmpl

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,20 @@ opt = OptionParser.new do |o|
1414
o.order!(ARGV)
1515
end
1616
srcdir ||= File.dirname(File.dirname(__FILE__))
17-
exts = {}
18-
[
19-
["exts", "ext", "--extstatic $(EXTSTATIC)"],
20-
["gems", ".bundle/gems", "--no-extstatic"],
21-
].each do |t, d, o|
22-
exts[t] = [o, Dir.glob("#{srcdir}/#{d}/*/").map {|n| n[(srcdir.size+1)..-2]}]
23-
end
17+
exts = {
18+
exts: [
19+
"--extstatic $(EXTSTATIC)",
20+
Dir.glob("ext/**/extconf.rb", base: srcdir).map do |d|
21+
d[%r[\Aext/[^/]+]]
22+
end.uniq
23+
],
24+
gems: [
25+
"--no-extstatic",
26+
Dir.glob(".bundle/gems/**/extconf.rb", base: srcdir).grep_v(/test/) do |d|
27+
d[%r[\A\.bundle/gems/[^/]+]]
28+
end.uniq
29+
],
30+
}
2431
%>
2532
MINIRUBY = <%=miniruby%>
2633
SCRIPT_ARGS = <%=script_args.gsub("#", "\\#").gsub(/\A|[\s"']\K--jobserver-auth=[^\s'"]*/, "")%>
@@ -33,9 +40,6 @@ gems:
3340

3441
% exts.each do |t, (o, dirs)|
3542
% dirs.each do |d|
36-
% extconf = Dir.glob("#{srcdir}/#{d}/**/extconf.rb")
37-
% next if extconf.empty?
38-
% next if extconf.any?{|f| f.include?(".bundle/gems") && f.include?("test") }
3943
<%=t%>: <%=d%>/exts.mk
4044
<%=d%>/exts.mk: FORCE
4145
$(Q)$(MINIRUBY) $(srcdir)/ext/extmk.rb --make='$(MAKE)' \

0 commit comments

Comments
 (0)