JuliaIO / TranscodingStreams.jl

Simple, consistent interfaces for any codec.
https://juliaio.github.io/TranscodingStreams.jl/
Other
85 stars 28 forks source link

Precompiling TestExt errors with `test_roundtrip_seekstart` not defined #223

Closed Datseris closed 2 months ago

Datseris commented 3 months ago
[ Info: Precompiling TestExt [29286dec-c893-52d1-88fe-e07e79eb4405]
ERROR: LoadError: UndefVarError: `test_roundtrip_seekstart` not defined
Stacktrace:
 [1] getproperty(x::Module, f::Symbol)
   @ Base .\Base.jl:31
 [2] top-level scope
   @ C:\Users\datse\.julia\packages\TranscodingStreams\F7ot4\ext\TestExt.jl:65
 [3] include
   @ Base .\Base.jl:495 [inlined]
 [4] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::String)
   @ Base .\loading.jl:2216
 [5] top-level scope
   @ stdin:3
in expression starting at C:\Users\datse\.julia\packages\TranscodingStreams\F7ot4\ext\TestExt.jl:1
in expression starting at stdin:3

in Windows 10, for version

  [3bb67fe8] TranscodingStreams v0.10.9

This causes precompilation problems for many other package extensions , such as precompiling CairoMakie or DynamicalSystems (for reasons unknown to me).

nhz2 commented 3 months ago

I can't reproduce this issue. What version of Julia and other packages are you using?

Datseris commented 3 months ago

I have

pkg> st -m CairoMakie
  [13f3f980] CairoMakie v0.12.2

julia> VERSION
v"1.10.0"

although I am not sure which "other" packages would be relevant here. Most of the packages in my project that have extensions were complaining, so I think it is more of an extension problem than a package problem. If you can't reproduce, it may be a fleeting problem. If I can reproduce consistently, I'll attach a manifest file here.

thchr commented 3 months ago

I'm seeing this as well today (local package, unfortunately).

Error log ```jl julia> using BandGraphs [ Info: Precompiling BandGraphs [5731fe25-75d8-4202-b898-007566f4347a] ERROR: LoadError: UndefVarError: `test_roundtrip_seekstart` not defined Stacktrace: [1] getproperty(x::Module, f::Symbol) @ Base ./Base.jl:31 [2] top-level scope @ ~/.julia/packages/TranscodingStreams/F7ot4/ext/TestExt.jl:65 [3] include @ ./Base.jl:495 [inlined] [4] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::String) @ Base ./loading.jl:2222 [5] top-level scope @ stdin:3 in expression starting at /home/tchr/.julia/packages/TranscodingStreams/F7ot4/ext/TestExt.jl:1 in expression starting at stdin:3 ┌ Error: Error during loading of extension TestExt of TranscodingStreams, use `Base.retry_load_extensions()` to retry. │ exception = │ 1-element ExceptionStack: │ Failed to precompile TestExt [29286dec-c893-52d1-88fe-e07e79eb4405] to "/home/tchr/.julia/compiled/v1.10/TestExt/jl_yjZzhg". │ Stacktrace: │ [1] error(s::String) │ @ Base ./error.jl:35 │ [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, keep_loaded_modules::Bool) │ @ Base ./loading.jl:2468 │ [3] compilecache │ @ ./loading.jl:2340 [inlined] │ [4] (::Base.var"#968#969"{Base.PkgId})() │ @ Base ./loading.jl:1974 │ [5] mkpidlock(f::Base.var"#968#969"{Base.PkgId}, at::String, pid::Int32; kwopts::@Kwargs{stale_age::Int64, wait::Bool}) │ @ FileWatching.Pidfile ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/FileWatching/src/pidfile.jl:93 │ [6] #mkpidlock#6 │ @ ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/FileWatching/src/pidfile.jl:88 [inlined] │ [7] trymkpidlock(::Function, ::Vararg{Any}; kwargs::@Kwargs{stale_age::Int64}) │ @ FileWatching.Pidfile ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/FileWatching/src/pidfile.jl:111 │ [8] #invokelatest#2 │ @ ./essentials.jl:894 [inlined] │ [9] invokelatest │ @ ./essentials.jl:889 [inlined] │ [10] maybe_cachefile_lock(f::Base.var"#968#969"{Base.PkgId}, pkg::Base.PkgId, srcpath::String; stale_age::Int64) │ @ Base ./loading.jl:2983 │ [11] maybe_cachefile_lock │ @ ./loading.jl:2980 [inlined] │ [12] _require(pkg::Base.PkgId, env::Nothing) │ @ Base ./loading.jl:1970 │ [13] __require_prelocked(uuidkey::Base.PkgId, env::Nothing) │ @ Base ./loading.jl:1812 │ [14] #invoke_in_world#3 │ @ ./essentials.jl:926 [inlined] │ [15] invoke_in_world │ @ ./essentials.jl:923 [inlined] │ [16] _require_prelocked │ @ ./loading.jl:1803 [inlined] │ [17] _require_prelocked │ @ ./loading.jl:1802 [inlined] │ [18] run_extension_callbacks(extid::Base.ExtensionId) │ @ Base ./loading.jl:1295 │ [19] run_extension_callbacks(pkgid::Base.PkgId) │ @ Base ./loading.jl:1330 │ [20] run_package_callbacks(modkey::Base.PkgId) │ @ Base ./loading.jl:1164 │ [21] _tryrequire_from_serialized(modkey::Base.PkgId, path::String, ocachepath::String, sourcepath::String, depmods::Vector{Any}) │ @ Base ./loading.jl:1487 │ [22] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String, build_id::UInt128) │ @ Base ./loading.jl:1574 │ [23] _require(pkg::Base.PkgId, env::String) │ @ Base ./loading.jl:1938 │ [24] __require_prelocked(uuidkey::Base.PkgId, env::String) │ @ Base ./loading.jl:1812 │ [25] #invoke_in_world#3 │ @ ./essentials.jl:926 [inlined] │ [26] invoke_in_world │ @ ./essentials.jl:923 [inlined] │ [27] _require_prelocked(uuidkey::Base.PkgId, env::String) │ @ Base ./loading.jl:1803 │ [28] macro expansion │ @ ./loading.jl:1790 [inlined] │ [29] macro expansion │ @ ./lock.jl:267 [inlined] │ [30] __require(into::Module, mod::Symbol) │ @ Base ./loading.jl:1753 │ [31] #invoke_in_world#3 │ @ ./essentials.jl:926 [inlined] │ [32] invoke_in_world │ @ ./essentials.jl:923 [inlined] │ [33] require(into::Module, mod::Symbol) │ @ Base ./loading.jl:1746 │ [34] include(mod::Module, _path::String) │ @ Base ./Base.jl:495 │ [35] include(x::String) │ @ MathOptInterface ~/.julia/packages/MathOptInterface/2CULs/src/MathOptInterface.jl:7 │ [36] top-level scope │ @ ~/.julia/packages/MathOptInterface/2CULs/src/MathOptInterface.jl:338 │ [37] include │ @ ./Base.jl:495 [inlined] │ [38] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::String) │ @ Base ./loading.jl:2222 │ [39] top-level scope │ @ stdin:3 │ [40] eval │ @ ./boot.jl:385 [inlined] │ [41] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String) │ @ Base ./loading.jl:2076 │ [42] include_string │ @ ./loading.jl:2086 [inlined] │ [43] exec_options(opts::Base.JLOptions) │ @ Base ./client.jl:316 │ [44] _start() │ @ Base ./client.jl:552 └ @ Base loading.jl:1301 ^C ERROR: InterruptException: Stacktrace: [1] try_yieldto(undo::typeof(Base.ensure_rescheduled)) @ Base ./task.jl:931 [2] wait() @ Base ./task.jl:995 [3] wait(c::Base.GenericCondition{Base.Threads.SpinLock}; first::Bool) @ Base ./condition.jl:130 [4] wait @ ./condition.jl:125 [inlined] [5] wait(x::Base.Process) @ Base ./process.jl:661 [6] success(x::Base.Process) @ Base ./process.jl:523 [7] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, keep_loaded_modules::Bool) @ Base ./loading.jl:2376 [8] compilecache @ ./loading.jl:2340 [inlined] [9] (::Base.var"#968#969"{Base.PkgId})() @ Base ./loading.jl:1974 [10] mkpidlock(f::Base.var"#968#969"{Base.PkgId}, at::String, pid::Int32; kwopts::@Kwargs{stale_age::Int64, wait::Bool}) @ FileWatching.Pidfile ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/FileWatching/src/pidfile.jl:93 [11] #mkpidlock#6 @ ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/FileWatching/src/pidfile.jl:88 [inlined] [12] trymkpidlock(::Function, ::Vararg{Any}; kwargs::@Kwargs{stale_age::Int64}) @ FileWatching.Pidfile ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/FileWatching/src/pidfile.jl:111 [13] #invokelatest#2 @ ./essentials.jl:894 [inlined] [14] invokelatest @ ./essentials.jl:889 [inlined] [15] maybe_cachefile_lock(f::Base.var"#968#969"{Base.PkgId}, pkg::Base.PkgId, srcpath::String; stale_age::Int64) @ Base ./loading.jl:2983 [16] maybe_cachefile_lock @ ./loading.jl:2980 [inlined] [17] _require(pkg::Base.PkgId, env::String) @ Base ./loading.jl:1970 [18] __require_prelocked(uuidkey::Base.PkgId, env::String) @ Base ./loading.jl:1812 [19] #invoke_in_world#3 @ ./essentials.jl:926 [inlined] [20] invoke_in_world @ ./essentials.jl:923 [inlined] [21] _require_prelocked(uuidkey::Base.PkgId, env::String) @ Base ./loading.jl:1803 [22] macro expansion @ ./loading.jl:1790 [inlined] [23] macro expansion @ ./lock.jl:267 [inlined] [24] __require(into::Module, mod::Symbol) @ Base ./loading.jl:1753 [25] #invoke_in_world#3 @ ./essentials.jl:926 [inlined] [26] invoke_in_world @ ./essentials.jl:923 [inlined] [27] require(into::Module, mod::Symbol) @ Base ./loading.jl:1746 julia> ERROR: LoadError: UndefVarError: `test_roundtrip_seekstart` not defined Stacktrace: [1] getproperty(x::Module, f::Symbol) @ Base ./Base.jl:31 [2] top-level scope @ ~/.julia/packages/TranscodingStreams/F7ot4/ext/TestExt.jl:65 [3] include @ ./Base.jl:495 [inlined] [4] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::String) @ Base ./loading.jl:2222 [5] top-level scope @ stdin:3 in expression starting at /home/tchr/.julia/packages/TranscodingStreams/F7ot4/ext/TestExt.jl:1 in expression starting at stdin:3 ┌ Error: Error during loading of extension TestExt of TranscodingStreams, use `Base.retry_load_extensions()` to retry. │ exception = │ 1-element ExceptionStack: │ Failed to precompile TestExt [29286dec-c893-52d1-88fe-e07e79eb4405] to "/home/tchr/.julia/compiled/v1.10/TestExt/jl_K5XmL3". │ Stacktrace: │ [1] error(s::String) │ @ Base ./error.jl:35 │ [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, keep_loaded_modules::Bool) │ @ Base ./loading.jl:2468 │ [3] compilecache │ @ ./loading.jl:2340 [inlined] │ [4] (::Base.var"#968#969"{Base.PkgId})() │ @ Base ./loading.jl:1974 │ [5] mkpidlock(f::Base.var"#968#969"{Base.PkgId}, at::String, pid::Int32; kwopts::@Kwargs{stale_age::Int64, wait::Bool}) │ @ FileWatching.Pidfile ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/FileWatching/src/pidfile.jl:93 │ [6] #mkpidlock#6 │ @ ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/FileWatching/src/pidfile.jl:88 [inlined] │ [7] trymkpidlock(::Function, ::Vararg{Any}; kwargs::@Kwargs{stale_age::Int64}) │ @ FileWatching.Pidfile ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/FileWatching/src/pidfile.jl:111 │ [8] #invokelatest#2 │ @ ./essentials.jl:894 [inlined] │ [9] invokelatest │ @ ./essentials.jl:889 [inlined] │ [10] maybe_cachefile_lock(f::Base.var"#968#969"{Base.PkgId}, pkg::Base.PkgId, srcpath::String; stale_age::Int64) │ @ Base ./loading.jl:2983 │ [11] maybe_cachefile_lock │ @ ./loading.jl:2980 [inlined] │ [12] _require(pkg::Base.PkgId, env::Nothing) │ @ Base ./loading.jl:1970 │ [13] __require_prelocked(uuidkey::Base.PkgId, env::Nothing) │ @ Base ./loading.jl:1812 │ [14] #invoke_in_world#3 │ @ ./essentials.jl:926 [inlined] │ [15] invoke_in_world │ @ ./essentials.jl:923 [inlined] │ [16] _require_prelocked │ @ ./loading.jl:1803 [inlined] │ [17] _require_prelocked │ @ ./loading.jl:1802 [inlined] │ [18] run_extension_callbacks(extid::Base.ExtensionId) │ @ Base ./loading.jl:1295 │ [19] run_extension_callbacks(pkgid::Base.PkgId) │ @ Base ./loading.jl:1330 │ [20] run_package_callbacks(modkey::Base.PkgId) │ @ Base ./loading.jl:1164 │ [21] _tryrequire_from_serialized(modkey::Base.PkgId, build_id::UInt128) │ @ Base ./loading.jl:1451 │ [22] _tryrequire_from_serialized(pkg::Base.PkgId, path::String, ocachepath::String) │ @ Base ./loading.jl:1524 │ [23] _require(pkg::Base.PkgId, env::String) │ @ Base ./loading.jl:1990 │ [24] __require_prelocked(uuidkey::Base.PkgId, env::String) │ @ Base ./loading.jl:1812 │ [25] #invoke_in_world#3 │ @ ./essentials.jl:926 [inlined] │ [26] invoke_in_world │ @ ./essentials.jl:923 [inlined] │ [27] _require_prelocked(uuidkey::Base.PkgId, env::String) │ @ Base ./loading.jl:1803 │ [28] macro expansion │ @ ./loading.jl:1790 [inlined] │ [29] macro expansion │ @ ./lock.jl:267 [inlined] │ [30] __require(into::Module, mod::Symbol) │ @ Base ./loading.jl:1753 │ [31] #invoke_in_world#3 │ @ ./essentials.jl:926 [inlined] │ [32] invoke_in_world │ @ ./essentials.jl:923 [inlined] │ [33] require(into::Module, mod::Symbol) │ @ Base ./loading.jl:1746 │ [34] include │ @ ./Base.jl:495 [inlined] │ [35] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::String) │ @ Base ./loading.jl:2222 │ [36] top-level scope │ @ stdin:3 │ [37] eval │ @ ./boot.jl:385 [inlined] │ [38] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String) │ @ Base ./loading.jl:2076 │ [39] include_string │ @ ./loading.jl:2086 [inlined] │ [40] exec_options(opts::Base.JLOptions) │ @ Base ./client.jl:316 │ [41] _start() │ @ Base ./client.jl:552 └ @ Base loading.jl:1301 ERROR: LoadError: UndefVarError: `test_roundtrip_seekstart` not defined Stacktrace: [1] getproperty(x::Module, f::Symbol) @ Base ./Base.jl:31 [2] top-level scope @ ~/.julia/packages/TranscodingStreams/F7ot4/ext/TestExt.jl:65 [3] include @ ./Base.jl:495 [inlined] [4] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::String) @ Base ./loading.jl:2222 [5] top-level scope @ stdin:3 in expression starting at /home/tchr/.julia/packages/TranscodingStreams/F7ot4/ext/TestExt.jl:1 in expression starting at stdin:3 ┌ Error: Error during loading of extension TestExt of TranscodingStreams, use `Base.retry_load_extensions()` to retry. │ exception = │ 1-element ExceptionStack: │ Failed to precompile TestExt [29286dec-c893-52d1-88fe-e07e79eb4405] to "/home/tchr/.julia/compiled/v1.10/TestExt/jl_f2URzl". │ Stacktrace: │ [1] error(s::String) │ @ Base ./error.jl:35 │ [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, keep_loaded_modules::Bool) │ @ Base ./loading.jl:2468 │ [3] compilecache │ @ ./loading.jl:2340 [inlined] │ [4] (::Base.var"#968#969"{Base.PkgId})() │ @ Base ./loading.jl:1974 │ [5] mkpidlock(f::Base.var"#968#969"{Base.PkgId}, at::String, pid::Int32; kwopts::@Kwargs{stale_age::Int64, wait::Bool}) │ @ FileWatching.Pidfile ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/FileWatching/src/pidfile.jl:93 │ [6] #mkpidlock#6 │ @ ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/FileWatching/src/pidfile.jl:88 [inlined] │ [7] trymkpidlock(::Function, ::Vararg{Any}; kwargs::@Kwargs{stale_age::Int64}) │ @ FileWatching.Pidfile ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/FileWatching/src/pidfile.jl:111 │ [8] #invokelatest#2 │ @ ./essentials.jl:894 [inlined] │ [9] invokelatest │ @ ./essentials.jl:889 [inlined] │ [10] maybe_cachefile_lock(f::Base.var"#968#969"{Base.PkgId}, pkg::Base.PkgId, srcpath::String; stale_age::Int64) │ @ Base ./loading.jl:2983 │ [11] maybe_cachefile_lock │ @ ./loading.jl:2980 [inlined] │ [12] _require(pkg::Base.PkgId, env::Nothing) │ @ Base ./loading.jl:1970 │ [13] __require_prelocked(uuidkey::Base.PkgId, env::Nothing) │ @ Base ./loading.jl:1812 │ [14] #invoke_in_world#3 │ @ ./essentials.jl:926 [inlined] │ [15] invoke_in_world │ @ ./essentials.jl:923 [inlined] │ [16] _require_prelocked │ @ ./loading.jl:1803 [inlined] │ [17] _require_prelocked │ @ ./loading.jl:1802 [inlined] │ [18] run_extension_callbacks(extid::Base.ExtensionId) │ @ Base ./loading.jl:1295 │ [19] run_extension_callbacks(pkgid::Base.PkgId) │ @ Base ./loading.jl:1330 │ [20] run_package_callbacks(modkey::Base.PkgId) │ @ Base ./loading.jl:1164 │ [21] _tryrequire_from_serialized(modkey::Base.PkgId, build_id::UInt128) │ @ Base ./loading.jl:1451 │ [22] _tryrequire_from_serialized(pkg::Base.PkgId, path::String, ocachepath::String) │ @ Base ./loading.jl:1524 │ [23] _require(pkg::Base.PkgId, env::String) │ @ Base ./loading.jl:1990 │ [24] __require_prelocked(uuidkey::Base.PkgId, env::String) │ @ Base ./loading.jl:1812 │ [25] #invoke_in_world#3 │ @ ./essentials.jl:926 [inlined] │ [26] invoke_in_world │ @ ./essentials.jl:923 [inlined] │ [27] _require_prelocked(uuidkey::Base.PkgId, env::String) │ @ Base ./loading.jl:1803 │ [28] macro expansion │ @ ./loading.jl:1790 [inlined] │ [29] macro expansion │ @ ./lock.jl:267 [inlined] │ [30] __require(into::Module, mod::Symbol) │ @ Base ./loading.jl:1753 │ [31] #invoke_in_world#3 │ @ ./essentials.jl:926 [inlined] │ [32] invoke_in_world │ @ ./essentials.jl:923 [inlined] │ [33] require(into::Module, mod::Symbol) │ @ Base ./loading.jl:1746 │ [34] include │ @ ./Base.jl:495 [inlined] │ [35] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::String) │ @ Base ./loading.jl:2222 │ [36] top-level scope │ @ stdin:3 │ [37] eval │ @ ./boot.jl:385 [inlined] │ [38] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String) │ @ Base ./loading.jl:2076 │ [39] include_string │ @ ./loading.jl:2086 [inlined] │ [40] exec_options(opts::Base.JLOptions) │ @ Base ./client.jl:316 │ [41] _start() │ @ Base ./client.jl:552 └ @ Base loading.jl:1301 ERROR: LoadError: UndefVarError: `test_roundtrip_seekstart` not defined Stacktrace: [1] getproperty(x::Module, f::Symbol) @ Base ./Base.jl:31 [2] top-level scope @ ~/.julia/packages/TranscodingStreams/F7ot4/ext/TestExt.jl:65 [3] include @ ./Base.jl:495 [inlined] [4] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::String) @ Base ./loading.jl:2222 [5] top-level scope @ stdin:3 in expression starting at /home/tchr/.julia/packages/TranscodingStreams/F7ot4/ext/TestExt.jl:1 in expression starting at stdin:3 ┌ Error: Error during loading of extension TestExt of TranscodingStreams, use `Base.retry_load_extensions()` to retry. │ exception = │ 1-element ExceptionStack: │ Failed to precompile TestExt [29286dec-c893-52d1-88fe-e07e79eb4405] to "/home/tchr/.julia/compiled/v1.10/TestExt/jl_KtSqZp". │ Stacktrace: │ [1] error(s::String) │ @ Base ./error.jl:35 │ [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, keep_loaded_modules::Bool) │ @ Base ./loading.jl:2468 │ [3] compilecache │ @ ./loading.jl:2340 [inlined] │ [4] (::Base.var"#968#969"{Base.PkgId})() │ @ Base ./loading.jl:1974 │ [5] mkpidlock(f::Base.var"#968#969"{Base.PkgId}, at::String, pid::Int32; kwopts::@Kwargs{stale_age::Int64, wait::Bool}) │ @ FileWatching.Pidfile ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/FileWatching/src/pidfile.jl:93 │ [6] #mkpidlock#6 │ @ ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/FileWatching/src/pidfile.jl:88 [inlined] │ [7] trymkpidlock(::Function, ::Vararg{Any}; kwargs::@Kwargs{stale_age::Int64}) │ @ FileWatching.Pidfile ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/FileWatching/src/pidfile.jl:111 │ [8] #invokelatest#2 │ @ ./essentials.jl:894 [inlined] │ [9] invokelatest │ @ ./essentials.jl:889 [inlined] │ [10] maybe_cachefile_lock(f::Base.var"#968#969"{Base.PkgId}, pkg::Base.PkgId, srcpath::String; stale_age::Int64) │ @ Base ./loading.jl:2983 │ [11] maybe_cachefile_lock │ @ ./loading.jl:2980 [inlined] │ [12] _require(pkg::Base.PkgId, env::Nothing) │ @ Base ./loading.jl:1970 │ [13] __require_prelocked(uuidkey::Base.PkgId, env::Nothing) │ @ Base ./loading.jl:1812 │ [14] #invoke_in_world#3 │ @ ./essentials.jl:926 [inlined] │ [15] invoke_in_world │ @ ./essentials.jl:923 [inlined] │ [16] _require_prelocked │ @ ./loading.jl:1803 [inlined] │ [17] _require_prelocked │ @ ./loading.jl:1802 [inlined] │ [18] run_extension_callbacks(extid::Base.ExtensionId) │ @ Base ./loading.jl:1295 │ [19] run_extension_callbacks(pkgid::Base.PkgId) │ @ Base ./loading.jl:1330 │ [20] run_package_callbacks(modkey::Base.PkgId) │ @ Base ./loading.jl:1164 │ [21] _tryrequire_from_serialized(modkey::Base.PkgId, build_id::UInt128) │ @ Base ./loading.jl:1451 │ [22] _tryrequire_from_serialized(pkg::Base.PkgId, path::String, ocachepath::String) │ @ Base ./loading.jl:1524 │ [23] _require(pkg::Base.PkgId, env::String) │ @ Base ./loading.jl:1990 │ [24] __require_prelocked(uuidkey::Base.PkgId, env::String) │ @ Base ./loading.jl:1812 │ [25] #invoke_in_world#3 │ @ ./essentials.jl:926 [inlined] │ [26] invoke_in_world │ @ ./essentials.jl:923 [inlined] │ [27] _require_prelocked(uuidkey::Base.PkgId, env::String) │ @ Base ./loading.jl:1803 │ [28] macro expansion │ @ ./loading.jl:1790 [inlined] │ [29] macro expansion │ @ ./lock.jl:267 [inlined] │ [30] __require(into::Module, mod::Symbol) │ @ Base ./loading.jl:1753 │ [31] #invoke_in_world#3 │ @ ./essentials.jl:926 [inlined] │ [32] invoke_in_world │ @ ./essentials.jl:923 [inlined] │ [33] require(into::Module, mod::Symbol) │ @ Base ./loading.jl:1746 │ [34] include(mod::Module, _path::String) │ @ Base ./Base.jl:495 │ [35] include(x::String) │ @ BandGraphs /mnt/c/Users/tchr/Dropbox (MIT)/Projects/photonic-topo-sym/julia/Crystalline/BandGraphs/src/BandGraphs.jl:1 │ [36] top-level scope │ @ /mnt/c/Users/tchr/Dropbox (MIT)/Projects/photonic-topo-sym/julia/Crystalline/BandGraphs/src/BandGraphs.jl:112 │ [37] include │ @ ./Base.jl:495 [inlined] │ [38] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::Nothing) │ @ Base ./loading.jl:2222 │ [39] top-level scope │ @ stdin:3 │ [40] eval │ @ ./boot.jl:385 [inlined] │ [41] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String) │ @ Base ./loading.jl:2076 │ [42] include_string │ @ ./loading.jl:2086 [inlined] │ [43] exec_options(opts::Base.JLOptions) │ @ Base ./client.jl:316 │ [44] _start() │ @ Base ./client.jl:552 └ @ Base loading.jl:1301 ERROR: LoadError: UndefVarError: `test_roundtrip_seekstart` not defined Stacktrace: [1] getproperty(x::Module, f::Symbol) @ Base ./Base.jl:31 [2] top-level scope @ ~/.julia/packages/TranscodingStreams/F7ot4/ext/TestExt.jl:65 [3] include @ ./Base.jl:495 [inlined] [4] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::String) @ Base ./loading.jl:2222 [5] top-level scope @ stdin:3 in expression starting at /home/tchr/.julia/packages/TranscodingStreams/F7ot4/ext/TestExt.jl:1 in expression starting at stdin:3 ┌ Error: Error during loading of extension TestExt of TranscodingStreams, use `Base.retry_load_extensions()` to retry. │ exception = │ 1-element ExceptionStack: │ Failed to precompile TestExt [29286dec-c893-52d1-88fe-e07e79eb4405] to "/home/tchr/.julia/compiled/v1.10/TestExt/jl_S9lNKP". │ Stacktrace: │ [1] error(s::String) │ @ Base ./error.jl:35 │ [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, keep_loaded_modules::Bool) │ @ Base ./loading.jl:2468 │ [3] compilecache │ @ ./loading.jl:2340 [inlined] │ [4] (::Base.var"#968#969"{Base.PkgId})() │ @ Base ./loading.jl:1974 │ [5] mkpidlock(f::Base.var"#968#969"{Base.PkgId}, at::String, pid::Int32; kwopts::@Kwargs{stale_age::Int64, wait::Bool}) │ @ FileWatching.Pidfile ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/FileWatching/src/pidfile.jl:93 │ [6] #mkpidlock#6 │ @ ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/FileWatching/src/pidfile.jl:88 [inlined] │ [7] trymkpidlock(::Function, ::Vararg{Any}; kwargs::@Kwargs{stale_age::Int64}) │ @ FileWatching.Pidfile ~/.julia/juliaup/julia-1.10.3+0.x64.linux.gnu/share/julia/stdlib/v1.10/FileWatching/src/pidfile.jl:111 │ [8] #invokelatest#2 │ @ ./essentials.jl:894 [inlined] │ [9] invokelatest │ @ ./essentials.jl:889 [inlined] │ [10] maybe_cachefile_lock(f::Base.var"#968#969"{Base.PkgId}, pkg::Base.PkgId, srcpath::String; stale_age::Int64) │ @ Base ./loading.jl:2983 │ [11] maybe_cachefile_lock │ @ ./loading.jl:2980 [inlined] │ [12] _require(pkg::Base.PkgId, env::Nothing) │ @ Base ./loading.jl:1970 │ [13] __require_prelocked(uuidkey::Base.PkgId, env::Nothing) │ @ Base ./loading.jl:1812 │ [14] #invoke_in_world#3 │ @ ./essentials.jl:926 [inlined] │ [15] invoke_in_world │ @ ./essentials.jl:923 [inlined] │ [16] _require_prelocked │ @ ./loading.jl:1803 [inlined] │ [17] _require_prelocked │ @ ./loading.jl:1802 [inlined] │ [18] run_extension_callbacks(extid::Base.ExtensionId) │ @ Base ./loading.jl:1295 │ [19] run_extension_callbacks(pkgid::Base.PkgId) │ @ Base ./loading.jl:1330 │ [20] run_package_callbacks(modkey::Base.PkgId) │ @ Base ./loading.jl:1164 │ [21] _tryrequire_from_serialized(modkey::Base.PkgId, path::String, ocachepath::String, sourcepath::String, depmods::Vector{Any}) │ @ Base ./loading.jl:1487 │ [22] _require_search_from_serialized(pkg::Base.PkgId, sourcepath::String, build_id::UInt128) │ @ Base ./loading.jl:1574 │ [23] _require(pkg::Base.PkgId, env::String) │ @ Base ./loading.jl:1938 │ [24] __require_prelocked(uuidkey::Base.PkgId, env::String) │ @ Base ./loading.jl:1812 │ [25] #invoke_in_world#3 │ @ ./essentials.jl:926 [inlined] │ [26] invoke_in_world │ @ ./essentials.jl:923 [inlined] │ [27] _require_prelocked(uuidkey::Base.PkgId, env::String) │ @ Base ./loading.jl:1803 │ [28] macro expansion │ @ ./loading.jl:1790 [inlined] │ [29] macro expansion │ @ ./lock.jl:267 [inlined] │ [30] __require(into::Module, mod::Symbol) │ @ Base ./loading.jl:1753 │ [31] #invoke_in_world#3 │ @ ./essentials.jl:926 [inlined] │ [32] invoke_in_world │ @ ./essentials.jl:923 [inlined] │ [33] require(into::Module, mod::Symbol) │ @ Base ./loading.jl:1746 │ [34] include │ @ ./Base.jl:495 [inlined] │ [35] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::String) │ @ Base ./loading.jl:2222 │ [36] top-level scope │ @ stdin:3 │ [37] eval │ @ ./boot.jl:385 [inlined] │ [38] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String) │ @ Base ./loading.jl:2076 │ [39] include_string │ @ ./loading.jl:2086 [inlined] │ [40] exec_options(opts::Base.JLOptions) │ @ Base ./client.jl:316 │ [41] _start() │ @ Base ./client.jl:552 └ @ Base loading.jl:1301 ```
thchr commented 3 months ago

More broadly: what is the design motivation for having the testing utilities included as part of an extension here?

If I understand correctly, this means that any downstream package that depends on TranscodingStreams and also happens to test anything also compiles the testing utilities for this package? That seems undesirable.

(Okay, I see there's earlier discussions of the motivation for this in #133 and #152)

nhz2 commented 3 months ago

Yes, I think it would be better to have the testing utilities in a separate package instead of an extension. The main reason for using extensions is backward compatibility because these utilities used to be part of the main package in v0.9

nhz2 commented 3 months ago

I still haven't figured out how to reproduce the error you are seeing. Does this only happen when you first try and update from TranscodingStreams@0.10.8 to TranscodingStreams@0.10.9, and then doesn't happen again after you restart julia?

nhz2 commented 2 months ago

I figured out how to reproduce the error using stacked environments.

JULIA_DEPOT_PATH=/tmp/julia-depot julia -e '
    using Pkg
    pkg"add TranscodingStreams@0.10.8"; using TranscodingStreams
    pkg"activate @stacked"; pkg"add TranscodingStreams@0.10.9 Test Random"; using Test, Random
'
┌ Warning: The Pkg REPL mode is intended for interactive use only, and should not be used from scripts. It is recommended to use the functional API instead.
└ @ Pkg.REPLMode ~/.julia/juliaup/julia-1.10.4+0.x64.linux.gnu/share/julia/stdlib/v1.10/Pkg/src/REPLMode/REPLMode.jl:382
    Updating registry at `/tmp/julia-depot/registries/General.toml`
   Resolving package versions...
  No Changes to `/tmp/julia-depot/environments/v1.10/Project.toml`
  No Changes to `/tmp/julia-depot/environments/v1.10/Manifest.toml`
  Activating project at `/tmp/julia-depot/environments/stacked`
   Resolving package versions...
  No Changes to `/tmp/julia-depot/environments/stacked/Project.toml`
  No Changes to `/tmp/julia-depot/environments/stacked/Manifest.toml`
ERROR: LoadError: UndefVarError: `test_roundtrip_seekstart` not defined
Stacktrace:
 [1] getproperty(x::Module, f::Symbol)
   @ Base ./Base.jl:31
 [2] top-level scope
   @ /tmp/julia-depot/packages/TranscodingStreams/F7ot4/ext/TestExt.jl:65
 [3] include
   @ ./Base.jl:495 [inlined]
 [4] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::Nothing)
   @ Base ./loading.jl:2222
 [5] top-level scope
   @ stdin:3
in expression starting at /tmp/julia-depot/packages/TranscodingStreams/F7ot4/ext/TestExt.jl:1
in expression starting at stdin:3
┌ Error: Error during loading of extension TestExt of TranscodingStreams, use `Base.retry_load_extensions()` to retry.
│   exception =
│    1-element ExceptionStack:
│    Failed to precompile TestExt [29286dec-c893-52d1-88fe-e07e79eb4405] to "/tmp/julia-depot/compiled/v1.10/TestExt/jl_NlfmxW".
│    Stacktrace:
│      [1] error(s::String)
│        @ Base ./error.jl:35
│      [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, keep_loaded_modules::Bool)
│        @ Base ./loading.jl:2468
│      [3] compilecache
│        @ ./loading.jl:2340 [inlined]
│      [4] (::Base.var"#968#969"{Base.PkgId})()
│        @ Base ./loading.jl:1974
│      [5] mkpidlock(f::Base.var"#968#969"{Base.PkgId}, at::String, pid::Int32; kwopts::@Kwargs{stale_age::Int64, wait::Bool})
│        @ FileWatching.Pidfile ~/.julia/juliaup/julia-1.10.4+0.x64.linux.gnu/share/julia/stdlib/v1.10/FileWatching/src/pidfile.jl:93
│      [6] #mkpidlock#6
│        @ ~/.julia/juliaup/julia-1.10.4+0.x64.linux.gnu/share/julia/stdlib/v1.10/FileWatching/src/pidfile.jl:88 [inlined]
│      [7] trymkpidlock(::Function, ::Vararg{Any}; kwargs::@Kwargs{stale_age::Int64})
│        @ FileWatching.Pidfile ~/.julia/juliaup/julia-1.10.4+0.x64.linux.gnu/share/julia/stdlib/v1.10/FileWatching/src/pidfile.jl:111
│      [8] #invokelatest#2
│        @ ./essentials.jl:894 [inlined]
│      [9] invokelatest
│        @ ./essentials.jl:889 [inlined]
│     [10] maybe_cachefile_lock(f::Base.var"#968#969"{Base.PkgId}, pkg::Base.PkgId, srcpath::String; stale_age::Int64)
│        @ Base ./loading.jl:2983
│     [11] maybe_cachefile_lock
│        @ ./loading.jl:2980 [inlined]
│     [12] _require(pkg::Base.PkgId, env::Nothing)
│        @ Base ./loading.jl:1970
│     [13] __require_prelocked(uuidkey::Base.PkgId, env::Nothing)
│        @ Base ./loading.jl:1812
│     [14] #invoke_in_world#3
│        @ ./essentials.jl:926 [inlined]
│     [15] invoke_in_world
│        @ ./essentials.jl:923 [inlined]
│     [16] _require_prelocked
│        @ ./loading.jl:1803 [inlined]
│     [17] _require_prelocked
│        @ ./loading.jl:1802 [inlined]
│     [18] run_extension_callbacks(extid::Base.ExtensionId)
│        @ Base ./loading.jl:1295
│     [19] run_extension_callbacks(pkgid::Base.PkgId)
│        @ Base ./loading.jl:1330
│     [20] run_package_callbacks(modkey::Base.PkgId)
│        @ Base ./loading.jl:1164
│     [21] __require_prelocked(uuidkey::Base.PkgId, env::String)
│        @ Base ./loading.jl:1819
│     [22] #invoke_in_world#3
│        @ ./essentials.jl:926 [inlined]
│     [23] invoke_in_world
│        @ ./essentials.jl:923 [inlined]
│     [24] _require_prelocked(uuidkey::Base.PkgId, env::String)
│        @ Base ./loading.jl:1803
│     [25] macro expansion
│        @ ./loading.jl:1790 [inlined]
│     [26] macro expansion
│        @ ./lock.jl:267 [inlined]
│     [27] __require(into::Module, mod::Symbol)
│        @ Base ./loading.jl:1753
│     [28] #invoke_in_world#3
│        @ ./essentials.jl:926 [inlined]
│     [29] invoke_in_world
│        @ ./essentials.jl:923 [inlined]
│     [30] require(into::Module, mod::Symbol)
│        @ Base ./loading.jl:1746
│     [31] eval
│        @ ./boot.jl:385 [inlined]
│     [32] exec_options(opts::Base.JLOptions)
│        @ Base ./client.jl:291
│     [33] _start()
│        @ Base ./client.jl:552
└ @ Base loading.jl:1301
nhz2 commented 2 months ago

Maybe a related issue: https://discourse.julialang.org/t/compat-bound-violations-with-stacked-environements/116492

nhz2 commented 2 months ago

You can fix this error by updating all of the environments in the stack to make sure the packages are compatible, or by not using environment stacks.