@@ -1028,8 +1028,8 @@ function require(into::Module, mod::Symbol)
10281028 " future warnings for $(where . name) are suppressed." )
10291029 ) _module = nothing _file = nothing _group = nothing
10301030 push! (modules_warned_for, where )
1031+ full_warning_showed[] = true
10311032 end
1032- full_warning_showed[] = true
10331033 end
10341034 end
10351035 if _track_dependencies[]
@@ -1393,6 +1393,8 @@ function create_expr_cache(pkg::PkgId, input::String, output::String, concrete_d
13931393 " Base.PkgId(Base.UUID(\" $(_pkg. uuid) \" ), $(repr (_pkg. name)) )"
13941394 end
13951395 end
1396+ repr_modules_warned_for () = string (" Base.PkgId[" , join (pkg_str .(collect (Base. modules_warned_for)), " , " ), " ]" )
1397+
13961398 for (pkg, build_id) in concrete_deps
13971399 push! (deps_strs, " $(pkg_str (pkg)) => $(repr (build_id)) " )
13981400 end
@@ -1406,10 +1408,12 @@ function create_expr_cache(pkg::PkgId, input::String, output::String, concrete_d
14061408 $trace
14071409 --eval 'eval(Meta.parse(read(stdin,String)))'` , stderr = internal_stderr, stdout = internal_stdout),
14081410 " w" , stdout )
1409- # write data over stdin to avoid the (unlikely) case of exceeding max command line size
1411+ # write data over stdin to avoid the (unlikely) case of exceeding max command line size.
1412+ # pass warning state into workers to avoid excessive warnings from nested precompilation
14101413 write (io. in, """
1411- Base.include_package_for_output($(pkg_str (pkg)) , $(repr (abspath (input))) , $(repr (depot_path)) , $(repr (dl_load_path)) ,
1412- $(repr (load_path)) , $deps , $(repr (source_path (nothing ))) )
1414+ Base.full_warning_showed[] = $(Base. full_warning_showed[]) ; (isempty($(repr_modules_warned_for ()) ) || push!(
1415+ empty!(Base.modules_warned_for), $(repr_modules_warned_for ()) ...)); Base.include_package_for_output($(pkg_str (pkg)) ,
1416+ $(repr (abspath (input))) , $(repr (depot_path)) , $(repr (dl_load_path)) , $(repr (load_path)) , $deps , $(repr (source_path (nothing ))) )
14131417 """ )
14141418 close (io. in)
14151419 return io
0 commit comments