Skip to content

Commit ef5e2ee

Browse files
Fix inaccurate cache key
1 parent c1b2c39 commit ef5e2ee

File tree

3 files changed

+29
-4
lines changed

3 files changed

+29
-4
lines changed

lib/ruby_wasm/build_system/product/crossruby.rb

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,16 @@ def do_install_rb(crossruby)
7272
objdir = product_build_dir crossruby
7373
system %Q(make -C "#{objdir}" #{make_args(crossruby).join(" ")} install-rb)
7474
end
75+
76+
def cache_key(digest)
77+
digest << @name
78+
# Compute hash value of files under srcdir
79+
Dir.glob("#{@srcdir}/**/*", File::FNM_DOTMATCH).each do |f|
80+
next if File.directory?(f)
81+
digest << f
82+
digest << File.read(f)
83+
end
84+
end
7585
end
7686

7787
class CrossRubyProduct < AutoconfProduct
@@ -158,6 +168,19 @@ def name
158168
@params.name
159169
end
160170

171+
def cache_key(digest)
172+
digest << @params.target
173+
digest << @params.default_exts
174+
@wasmoptflags.each{|f| digest << f }
175+
@cppflags.each{|f| digest << f }
176+
@cflags.each{|f| digest << f }
177+
@ldflags.each{|f| digest << f }
178+
@debugflags.each{|f| digest << f }
179+
@xcflags.each{|f| digest << f }
180+
@xldflags.each{|f| digest << f }
181+
@user_exts.each{|ext| ext.cache_key(digest) }
182+
end
183+
161184
def build_dir
162185
File.join(@build_dir, @params.target, name)
163186
end

lib/ruby_wasm/build_system/product/ruby_source.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,13 @@ def name
1111
@params[:name]
1212
end
1313

14-
def cache_key
14+
def cache_key(digest)
15+
digest << @params[:type]
1516
case @params[:type]
1617
when "github"
17-
@params[:rev]
18+
digest << @params[:rev]
1819
when "local"
19-
File.mtime(@params[:src]).to_i.to_s
20+
digest << File.mtime(@params[:src]).to_i.to_s
2021
else
2122
raise "unknown source type: #{@params[:type]}"
2223
end

lib/ruby_wasm/rake_task.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,8 @@ def initialize(
9292
def hexdigest
9393
require "digest"
9494
digest = Digest::SHA256.new
95-
digest << @source.cache_key
95+
@source.cache_key(digest)
96+
@crossruby.cache_key(digest)
9697
digest << @build_dir
9798
digest << @rubies_dir
9899
digest << @target

0 commit comments

Comments
 (0)