Set up all GEMS before mruby core tasks definition

Until now, GEMs dependent on GEMs described in the build configuration file were loaded and set up after mruby core tasks were defined.
This caused an issue where, if C++ exceptions were enabled later by a dependent GEM, the necessary tasks for mruby core were not defined.

fixed https://github.com/mruby/mruby/issues/6615
This commit is contained in:
dearblue
2025-09-11 22:53:03 +09:00
parent c6f340f981
commit 004fe0b142
3 changed files with 21 additions and 3 deletions
+16 -1
View File
@@ -401,7 +401,16 @@ module MRuby
end
end
def generate_gem_table build
def setup(build)
gemset = nil
begin
gemset_prev = gemset
self.each(&:setup)
gemset = self.setup_dependencies(build).keys.sort
end until gemset == gemset_prev
end
def setup_dependencies(build)
gem_table = each_with_object({}) { |spec, h| h[spec.name] = spec }
default_gems = {}
@@ -424,6 +433,12 @@ module MRuby
end
end
gem_table
end
def generate_gem_table(build)
gem_table = setup_dependencies(build)
each do |g|
g.dependencies.each do |dep|
name = dep[:gem]