Clean up clean only extensions
The clean targets should clean up all extensions, including those have nothing to build for any reason, e.g., platform requirements etc.
This commit is contained in:
parent
cb576c13fb
commit
f7ffa76377
Notes:
git
2024-09-11 06:11:54 +00:00
@ -22,14 +22,19 @@ end
|
|||||||
confexts &&= File.read(confexts).scan(/^(?:ext|gem)s: (.*\.mk)/).flatten rescue nil
|
confexts &&= File.read(confexts).scan(/^(?:ext|gem)s: (.*\.mk)/).flatten rescue nil
|
||||||
confexts ||= []
|
confexts ||= []
|
||||||
macros["old_extensions"] = []
|
macros["old_extensions"] = []
|
||||||
|
distclean = []
|
||||||
|
|
||||||
contpat = /(?>(?>[^\\\n]|\\.)*\\\n)*(?>[^\\\n]|\\.)*/
|
contpat = /(?>(?>[^\\\n]|\\.)*\\\n)*(?>[^\\\n]|\\.)*/
|
||||||
Dir.glob("{ext,.bundle/gems}/*/exts.mk") do |e|
|
Dir.glob("{ext,.bundle/gems}/*/exts.mk") do |e|
|
||||||
gem = e.start_with?(".bundle/gems/")
|
gem = e.start_with?(".bundle/gems/")
|
||||||
|
dir = File.dirname(e)
|
||||||
s = File.read(e)
|
s = File.read(e)
|
||||||
s.scan(/^(extensions|SUBMAKEOPTS|EXT[A-Z]+|MFLAGS|MESSAGE_(?:BEGIN|END)|NOTE_[A-Z]+)[ \t]*=[ \t]*(#{contpat})$/o) do |n, v|
|
s.scan(/^(extensions|SUBMAKEOPTS|EXT[A-Z]+|MFLAGS|MESSAGE_(?:BEGIN|END)|NOTE_[A-Z]+)[ \t]*=[ \t]*(#{contpat})$/o) do |n, v|
|
||||||
v.gsub!(/\\\n[ \t]*/, ' ')
|
v.gsub!(/\\\n[ \t]*/, ' ')
|
||||||
next if v.empty?
|
if v.empty?
|
||||||
|
distclean << dir if n == "extensions"
|
||||||
|
next
|
||||||
|
end
|
||||||
n = "old_extensions" if n == "extensions" and !confexts.include?(e)
|
n = "old_extensions" if n == "extensions" and !confexts.include?(e)
|
||||||
v = v.split
|
v = v.split
|
||||||
m = macros[n] ||= []
|
m = macros[n] ||= []
|
||||||
@ -69,6 +74,10 @@ Dir.glob("{ext,.bundle/gems}/*/exts.mk") do |e|
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
deps.uniq!
|
deps.uniq!
|
||||||
|
macros["cleandirs"] = distclean.map {|d| "#{d}/."}
|
||||||
|
deps.map! {|d|
|
||||||
|
/\A(?:dist|real)?clean(?=:)/ =~ d ? d + " $(cleandirs:/.=/#{$&})" : d
|
||||||
|
}
|
||||||
|
|
||||||
# NOTE: Only if extensions are configured as static and dynamic heterogeneously
|
# NOTE: Only if extensions are configured as static and dynamic heterogeneously
|
||||||
# (e.g. --with-static-linked-ext=foo or ext/Setup can mix static and dynamic
|
# (e.g. --with-static-linked-ext=foo or ext/Setup can mix static and dynamic
|
||||||
@ -100,7 +109,6 @@ def self.column
|
|||||||
@erbout[/^.*\z/].scan(/\t|([^\t]+)/) {|s,| w += (s ? s.size : 8 - w % 8)}
|
@erbout[/^.*\z/].scan(/\t|([^\t]+)/) {|s,| w += (s ? s.size : 8 - w % 8)}
|
||||||
w
|
w
|
||||||
end
|
end
|
||||||
targets = %w[all static install install-so install-rb clean distclean realclean]
|
|
||||||
objext = RbConfig::CONFIG["OBJEXT"]
|
objext = RbConfig::CONFIG["OBJEXT"]
|
||||||
if gnumake
|
if gnumake
|
||||||
submake = "$(MAKE) -C $(@D)"
|
submake = "$(MAKE) -C $(@D)"
|
||||||
@ -145,23 +153,26 @@ ext/extinit.<%=objext%>:
|
|||||||
|
|
||||||
% exts = (macros["extensions"] + macros["old_extensions"])
|
% exts = (macros["extensions"] + macros["old_extensions"])
|
||||||
% exts.map! {|e|e.chomp("/.")}.sort
|
% exts.map! {|e|e.chomp("/.")}.sort
|
||||||
% targets.each do |tgt|
|
% %w[all static install install-so install-rb].each do |tgt|
|
||||||
% exts.each do |d|
|
% exts.each do |d|
|
||||||
% t = "#{d}/#{tgt}"
|
|
||||||
% if /^(dist|real)?clean$/ =~ tgt
|
|
||||||
% deps = exts.select {|e|e.start_with?("#{d}/")}.map {|e|"#{e}/#{tgt}"}
|
|
||||||
% pd = ' ' + deps.join(' ') unless deps.empty?
|
|
||||||
% else
|
|
||||||
% pext = File.dirname(d)
|
% pext = File.dirname(d)
|
||||||
% pd = " #{pext}/#{tgt}" if exts.include?(pext)
|
<%=d%>/<%=tgt%>:<% if exts.include?(pext) %> <%=pext%>/<%=tgt%><% end %>
|
||||||
|
$(Q)<%= submake %><%=mflags%> V=$(V) $(@F)
|
||||||
% end
|
% end
|
||||||
<%=t%>:<%=pd%>
|
% end
|
||||||
% if /^(dist|real)clean$/ =~ tgt
|
% distclean = exts | distclean
|
||||||
|
% %w[clean distclean realclean].each do |tgt|
|
||||||
|
% distclean.each do |d|
|
||||||
|
% deps = exts.select {|e|e.start_with?("#{d}/")}.map {|e|"#{e}/#{tgt}"}
|
||||||
|
<%=d%>/<%=tgt%>:<% unless deps.empty? %> <%=deps.join(' ')%><% end %>
|
||||||
|
% unless tgt == "clean"
|
||||||
$(ECHO) $(@F)ing $(@D)
|
$(ECHO) $(@F)ing $(@D)
|
||||||
% end
|
% end
|
||||||
|
% if exts.include?(d)
|
||||||
$(Q)<%= submake %><%=mflags%> V=$(V) $(@F)
|
$(Q)<%= submake %><%=mflags%> V=$(V) $(@F)
|
||||||
% if /^(dist|real)clean$/ =~ tgt
|
% end
|
||||||
$(Q)$(RM) <%=t[%r[\A(?:\.[^/]+/)?(?:[^/]+/){2}]]%>exts.mk
|
% unless tgt == "clean"
|
||||||
|
$(Q)$(RM) <%=d[%r[\A(?:\.[^/]+/)?(?:[^/]+/)?[^/]+]]%>/exts.mk
|
||||||
-$(Q)$(RMDIRS) $(@D)
|
-$(Q)$(RMDIRS) $(@D)
|
||||||
% end
|
% end
|
||||||
% end
|
% end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user