JuliaLang / PackageCompiler.jl

Compile your Julia Package
https://julialang.github.io/PackageCompiler.jl/dev/
MIT License
1.42k stars 188 forks source link

Dependency analyzer seems to skip packages that are `import .PKGNAME` #933

Open biona001 opened 6 months ago

biona001 commented 6 months ago

I think I am running into troubles with create_app whenever a dependency puts import .PKGNAME or using .PKGNAME statements in one of their package sub-files, for example:

This seems to cause the following warning in the final app:

┌ Warning: Error requiring `UnPack` from `JLD2`
│   exception =
│    IOError: stat("/home/users/kilian/.julia/packages/JLD2/ryhNR/ext/UnPackExt.jl"): permission denied (EACCES)
│    Stacktrace:
│      [1] uv_error
│        @ Base ./libuv.jl:100 [inlined]
│      [2] stat(path::String)
│        @ Base.Filesystem ./stat.jl:152
│      [3] isfile(path::String)
│        @ Base.Filesystem ./stat.jl:461
│      [4] macro expansion
│        @ /home/users/kilian/.julia/packages/Requires/Z8rfN/src/Requires.jl:37 [inlined]
│      [5] top-level scope
│        @ /home/users/kilian/.julia/packages/JLD2/ryhNR/src/JLD2.jl:607
│      [6] eval
│        @ Core ./boot.jl:385 [inlined]
│      [7] eval
│        @ JLD2 /home/users/kilian/.julia/packages/JLD2/ryhNR/src/JLD2.jl:1 [inlined]
│      [8] (::JLD2.var"#131#134")()
│        @ JLD2 /home/users/kilian/.julia/packages/Requires/Z8rfN/src/require.jl:101
│      [9] macro expansion
│        @ Requires ./timing.jl:395 [inlined]
│     [10] err(f::Any, listener::Module, modname::String, file::String, line::Any)
│        @ Requires /home/users/kilian/.julia/packages/Requires/Z8rfN/src/require.jl:47
│     [11] (::JLD2.var"#130#133")()
│        @ JLD2 /home/users/kilian/.julia/packages/Requires/Z8rfN/src/require.jl:100
│     [12] withpath(f::Any, path::String)
│        @ Requires /home/users/kilian/.julia/packages/Requires/Z8rfN/src/require.jl:37
│     [13] (::JLD2.var"#129#132")()
│        @ JLD2 /home/users/kilian/.julia/packages/Requires/Z8rfN/src/require.jl:99
│     [14] listenpkg(f::Any, pkg::Base.PkgId)
│        @ Requires /home/users/kilian/.julia/packages/Requires/Z8rfN/src/require.jl:20
│     [15] macro expansion
│        @ JLD2 /home/users/kilian/.julia/packages/Requires/Z8rfN/src/require.jl:98 [inlined]
│     [16] __init__()
│        @ JLD2 /home/users/kilian/.julia/packages/JLD2/ryhNR/src/JLD2.jl:606
└ @ Requires /home/users/kilian/.julia/packages/Requires/Z8rfN/src/require.jl:51
┌ Warning: Error requiring `FileIO` from `HDF5`
│   exception =
│    IOError: stat("/home/users/kilian/.julia/packages/HDF5/HtnQZ/src/fileio.jl"): permission denied (EACCES)
│    Stacktrace:
│      [1] uv_error
│        @ Base ./libuv.jl:100 [inlined]
│      [2] stat(path::String)
│        @ Base.Filesystem ./stat.jl:152
│      [3] isfile(path::String)
│        @ Base.Filesystem ./stat.jl:461
│      [4] top-level scope
│        @ /home/users/kilian/.julia/packages/Requires/Z8rfN/src/Requires.jl:37
│      [5] eval
│        @ Core ./boot.jl:385 [inlined]
│      [6] eval
│        @ HDF5 /home/users/kilian/.julia/packages/HDF5/HtnQZ/src/HDF5.jl:1 [inlined]
│      [7] (::HDF5.var"#115#121")()
│        @ HDF5 /home/users/kilian/.julia/packages/Requires/Z8rfN/src/require.jl:101
│      [8] macro expansion
│        @ Requires ./timing.jl:395 [inlined]
│      [9] err(f::Any, listener::Module, modname::String, file::String, line::Any)
│        @ Requires /home/users/kilian/.julia/packages/Requires/Z8rfN/src/require.jl:47
│     [10] (::HDF5.var"#114#120")()
│        @ HDF5 /home/users/kilian/.julia/packages/Requires/Z8rfN/src/require.jl:100
│     [11] withpath(f::Any, path::String)
│        @ Requires /home/users/kilian/.julia/packages/Requires/Z8rfN/src/require.jl:37
│     [12] (::HDF5.var"#113#119")()
│        @ HDF5 /home/users/kilian/.julia/packages/Requires/Z8rfN/src/require.jl:99
│     [13] listenpkg(f::Any, pkg::Base.PkgId)
│        @ Requires /home/users/kilian/.julia/packages/Requires/Z8rfN/src/require.jl:20
│     [14] macro expansion
│        @ HDF5 /home/users/kilian/.julia/packages/Requires/Z8rfN/src/require.jl:98 [inlined]
│     [15] __init__()
│        @ HDF5 /home/users/kilian/.julia/packages/HDF5/HtnQZ/src/HDF5.jl:119
└ @ Requires /home/users/kilian/.julia/packages/Requires/Z8rfN/src/require.jl:51

Is there any way to get around this?

biona001 commented 6 months ago

Issue resolved by creating a personal fork of those packages and commenting out all Requires.@require in them, see this post

ufechner7 commented 6 months ago

Creating a personal fork is NOT a valid solution, only a workaround.

biona001 commented 6 months ago

@ufechner7 I agree, reopening this issue.

But I don't think this is an issue with HDF5.jl or JLD2.jl, so I won't create issue there.