@@ -1231,6 +1231,7 @@ function compilecache_path(pkg::PkgId, cache::TOMLCache)::String
12311231 crc = _crc32c (unsafe_string (JLOptions (). image_file), crc)
12321232 crc = _crc32c (unsafe_string (JLOptions (). julia_bin), crc)
12331233 crc = _crc32c (get_preferences_hash (pkg. uuid, cache), crc)
1234+ crc = _crc32c (isdebug (), crc)
12341235 project_precompile_slug = slug (crc, 5 )
12351236 abspath (cachepath, string (entryfile, " _" , project_precompile_slug, " .ji" ))
12361237 end
@@ -1358,6 +1359,8 @@ function parse_cache_header(f::IO)
13581359 end
13591360 totbytes -= 4 + 4 + n2 + 8
13601361 end
1362+ julia_debug = Bool (read (f, UInt8))
1363+ totbytes -= 1
13611364 prefs_hash = read (f, UInt64)
13621365 totbytes -= 8
13631366 @assert totbytes == 12 " header of cache file appears to be corrupt"
@@ -1372,7 +1375,7 @@ function parse_cache_header(f::IO)
13721375 build_id = read (f, UInt64) # build id
13731376 push! (required_modules, PkgId (uuid, sym) => build_id)
13741377 end
1375- return modules, (includes, requires), required_modules, srctextpos, prefs_hash
1378+ return modules, (includes, requires), required_modules, srctextpos, prefs_hash, julia_debug
13761379end
13771380
13781381function parse_cache_header (cachefile:: String ; srcfiles_only:: Bool = false )
@@ -1381,21 +1384,21 @@ function parse_cache_header(cachefile::String; srcfiles_only::Bool=false)
13811384 ! isvalid_cache_header (io) && throw (ArgumentError (" Invalid header in cache file $cachefile ." ))
13821385 ret = parse_cache_header (io)
13831386 srcfiles_only || return ret
1384- modules, (includes, requires), required_modules, srctextpos, prefs_hash = ret
1387+ modules, (includes, requires), required_modules, srctextpos, prefs_hash, julia_debug = ret
13851388 srcfiles = srctext_files (io, srctextpos)
13861389 delidx = Int[]
13871390 for (i, chi) in enumerate (includes)
13881391 chi. filename ∈ srcfiles || push! (delidx, i)
13891392 end
13901393 deleteat! (includes, delidx)
1391- return modules, (includes, requires), required_modules, srctextpos, prefs_hash
1394+ return modules, (includes, requires), required_modules, srctextpos, prefs_hash, julia_debug
13921395 finally
13931396 close (io)
13941397 end
13951398end
13961399
13971400function cache_dependencies (f:: IO )
1398- defs, (includes, requires), modules, srctextpos, prefs_hash = parse_cache_header (f)
1401+ defs, (includes, requires), modules, srctextpos, prefs_hash, julia_debug = parse_cache_header (f)
13991402 return modules, map (chi -> (chi. filename, chi. mtime), includes) # return just filename and mtime
14001403end
14011404
@@ -1410,7 +1413,7 @@ function cache_dependencies(cachefile::String)
14101413end
14111414
14121415function read_dependency_src (io:: IO , filename:: AbstractString )
1413- modules, (includes, requires), required_modules, srctextpos, prefs_hash = parse_cache_header (io)
1416+ modules, (includes, requires), required_modules, srctextpos, prefs_hash, julia_debug = parse_cache_header (io)
14141417 srctextpos == 0 && error (" no source-text stored in cache file" )
14151418 seek (io, srctextpos)
14161419 return _read_dependency_src (io, filename)
@@ -1496,7 +1499,7 @@ function stale_cachefile(modpath::String, cachefile::String, cache::TOMLCache)
14961499 @debug " Rejecting cache file $cachefile due to it containing an invalid cache header"
14971500 return true # invalid cache file
14981501 end
1499- modules, (includes, requires), required_modules, srctextpos, prefs_hash = parse_cache_header (io)
1502+ modules, (includes, requires), required_modules, srctextpos, prefs_hash, julia_debug = parse_cache_header (io)
15001503 id = isempty (modules) ? nothing : first (modules). first
15011504 modules = Dict {PkgId, UInt64} (modules)
15021505
@@ -1572,6 +1575,11 @@ function stale_cachefile(modpath::String, cachefile::String, cache::TOMLCache)
15721575 end
15731576
15741577 if isa (id, PkgId)
1578+ curr_debug = isdebug ()
1579+ if julia_debug != curr_debug
1580+ @debug " Rejecting cache file $cachefile because julia debug mode does not match"
1581+ return true
1582+ end
15751583 curr_prefs_hash = get_preferences_hash (id. uuid, cache)
15761584 if prefs_hash != curr_prefs_hash
15771585 @debug " Rejecting cache file $cachefile because preferences hash does not match 0x$(string (prefs_hash, base= 16 )) != 0x$(string (curr_prefs_hash, base= 16 )) "
0 commit comments