apache / arrow-julia

Official Julia implementation of Apache Arrow
https://arrow.apache.org/julia/
Other
284 stars 59 forks source link

Arrow.jl fails to precompile with error "Magic file identifier "TZjf" not found." #510

Closed kobusherbst closed 2 weeks ago

kobusherbst commented 4 months ago

When I try to precompile Arrow, I get the following error:

Julia V1.10.4

Platform Info: OS: macOS (arm64-apple-darwin22.4.0) CPU: 14 × Apple M3 Max WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-15.0.7 (ORCJIT, apple-m1)

Failed to precompile PIPCore [5f73200a-36c0-42cd-9607-31bc8d8705ce] to "/Users/kobush/.julia/compiled/v1.10/PIPCore/jl_l3YSez".
ERROR: LoadError: ArgumentError: Magic file identifier "TZjf" not found.
Stacktrace:
  [1] read_signature
    @ ~/.julia/packages/TimeZones/cI9dc/src/tzjfile/read.jl:15 [inlined]
  [2] read(io::IOStream)
    @ TimeZones.TZJFile ~/.julia/packages/TimeZones/cI9dc/src/tzjfile/read.jl:8
  [3] open(::typeof(TimeZones.TZJFile.read), ::String, ::Vararg{String}; kwargs::@Kwargs{})
    @ Base ./io.jl:396
  [4] open
    @ ./io.jl:393 [inlined]
  [5] (::TimeZones.var"#7#8"{TimeZones.TimeZoneCache})(name::String, path::String)
    @ TimeZones ~/.julia/packages/TimeZones/cI9dc/src/types/timezonecache.jl:29
  [6] walk_tz_dir(f::TimeZones.var"#7#8"{TimeZones.TimeZoneCache}, dir::String)
    @ TimeZones ~/.julia/packages/TimeZones/cI9dc/src/utils.jl:125
  [7] reload!
    @ ~/.julia/packages/TimeZones/cI9dc/src/types/timezonecache.jl:28 [inlined]
  [8] reload!
    @ ~/.julia/packages/TimeZones/cI9dc/src/types/timezonecache.jl:25 [inlined]
  [9] (::TimeZones.var"#9#12"{TimeZones.TimeZoneCache})()
    @ TimeZones ~/.julia/packages/TimeZones/cI9dc/src/types/timezonecache.jl:50
 [10] lock(f::TimeZones.var"#9#12"{TimeZones.TimeZoneCache}, l::ReentrantLock)
    @ Base ./lock.jl:229
 [11] get
    @ ~/.julia/packages/TimeZones/cI9dc/src/types/timezonecache.jl:47 [inlined]
 [12] Dates.TimeZone(str::String, mask::TimeZones.Class)
    @ TimeZones ~/.julia/packages/TimeZones/cI9dc/src/types/timezone.jl:42
 [13] var"@tz_str"(__source__::LineNumberNode, __module__::Module, str::Any)
    @ TimeZones ~/.julia/packages/TimeZones/cI9dc/src/types/timezone.jl:72
 [14] include(mod::Module, _path::String)
    @ Base ./Base.jl:495
 [15] include(x::String)
    @ Arrow ~/.julia/dev/Arrow/src/Arrow.jl:42
 [16] top-level scope
    @ ~/.julia/dev/Arrow/src/Arrow.jl:77
 [17] include
    @ ./Base.jl:495 [inlined]
 [18] 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
 [19] top-level scope
ericphanson commented 4 months ago

This seems like a TimeZones issue (cc @omus). What version of TimeZones are you using?

kobusherbst commented 4 months ago

TimeZones v1.17.0

kobusherbst commented 4 months ago

I could successfully precompile Arrow after regressing to TimeZones V1.16.1

kobusherbst commented 3 months ago

Will there be a release of Arrow that is compatible with the latest version of TimeZones?

ericphanson commented 3 months ago

I don't think this is an issue in Arrow.jl, if I'm following correctly, Arrow only shows up in the the stacktrace since Arrow loads TimeZones. Please file an issue on TimeZones.jl. Something must have gone wrong there.

BTW I can load both without an issue on v1.10 on macos:

(@v1.10) pkg> activate --temp
  Activating new project at `/var/folders/gj/l9rbktlj6qndlnz1nk164d280000gn/T/jl_3OBJZg`

(jl_3OBJZg) pkg> add Arrow,TimeZones
   Resolving package versions...
    Updating `/private/var/folders/gj/l9rbktlj6qndlnz1nk164d280000gn/T/jl_3OBJZg/Project.toml`
  [69666777] + Arrow v2.7.2
  [f269a46b] + TimeZones v1.17.0
    Updating `/private/var/folders/gj/l9rbktlj6qndlnz1nk164d280000gn/T/jl_3OBJZg/Manifest.toml`
  [69666777] + Arrow v2.7.2
  [31f734f8] + ArrowTypes v2.3.0
  [c3b6d118] + BitIntegers v0.3.1
  [5ba52731] + CodecLz4 v0.4.4
  [6b39b394] + CodecZstd v0.8.4
  [34da2185] + Compat v4.15.0
  [f0e56b4a] + ConcurrentUtilities v2.4.2
  [9a962f9c] + DataAPI v1.16.0
  [e2d170a0] + DataValueInterfaces v1.0.0
  [4e289a0a] + EnumX v1.0.4
  [e2ba6199] + ExprTools v0.1.10
  [842dd82b] + InlineStrings v1.4.2
  [82899510] + IteratorInterfaceExtensions v1.0.0
  [692b3bcd] + JLLWrappers v1.5.0
  [e6f89c97] + LoggingExtras v1.0.3
⌅ [78c3b35d] + Mocking v0.7.9
  [bac558e1] + OrderedCollections v1.6.3
  [2dfb63ee] + PooledArrays v1.4.3
  [21216c6a] + Preferences v1.4.3
  [6c6a2e73] + Scratch v1.2.1
  [91c51154] + SentinelArrays v1.4.5
  [dc5dba14] + TZJData v1.2.0+2024a
  [3783bdb8] + TableTraits v1.0.1
  [bd369af6] + Tables v1.12.0
  [f269a46b] + TimeZones v1.17.0
⌅ [3bb67fe8] + TranscodingStreams v0.10.10
  [5ced341a] + Lz4_jll v1.10.0+0
  [3161d3a3] + Zstd_jll v1.5.6+0
  [0dad84c5] + ArgTools v1.1.1
  [56f22d72] + Artifacts
  [ade2ca70] + Dates
  [f43a241f] + Downloads v1.6.0
  [7b1f6079] + FileWatching
  [9fa8497b] + Future
  [b27032c2] + LibCURL v0.6.4
  [8f399da3] + Libdl
  [56ddb016] + Logging
  [a63ad114] + Mmap
  [ca575930] + NetworkOptions v1.2.0
  [de0858da] + Printf
  [9a3f8284] + Random
  [ea8e919c] + SHA v0.7.0
  [9e88b42a] + Serialization
  [6462fe0b] + Sockets
  [fa267f1f] + TOML v1.0.3
  [cf7118a7] + UUIDs
  [4ec0a83e] + Unicode
  [deac9b47] + LibCURL_jll v8.4.0+0
  [29816b5a] + LibSSH2_jll v1.11.0+1
  [c8ffd9c3] + MbedTLS_jll v2.28.2+1
  [14a3606d] + MozillaCACerts_jll v2023.1.10
  [83775a58] + Zlib_jll v1.2.13+1
  [8e850ede] + nghttp2_jll v1.52.0+1
  [3f19e933] + p7zip_jll v17.4.0+2
        Info Packages marked with ⌅ have new versions available but compatibility constraints restrict them from upgrading. To see why use `status --outdated -m`

julia> using Arrow, TimeZones

(jl_3OBJZg) pkg> st
Status `/private/var/folders/gj/l9rbktlj6qndlnz1nk164d280000gn/T/jl_3OBJZg/Project.toml`
  [69666777] Arrow v2.7.2
  [f269a46b] TimeZones v1.17.0

julia> versioninfo()
Julia Version 1.10.4
Commit 48d4fd48430 (2024-06-04 10:41 UTC)
Build Info:
  Official https://julialang.org/ release
Platform Info:
  OS: macOS (arm64-apple-darwin22.4.0)
  CPU: 8 × Apple M1
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, apple-m1)
Threads: 4 default, 0 interactive, 2 GC (on 4 virtual cores)
Environment:
  JULIA_NUM_THREADS = 4
  JULIA_PKG_SERVER_REGISTRY_PREFERENCE = eager
  JULIA_DATAMAPUTILS_CACHE_SIZE_MIB = 300
kobusherbst commented 2 weeks ago

Arrow.jl is now compiling properly with julia v1.11.1, Arrow v2.7.4 and TimeZones v1.19.0 on Windows 11