Skip to content

Instantly share code, notes, and snippets.

@staticfloat
Created August 12, 2020 19:20
Show Gist options
  • Select an option

  • Save staticfloat/57642c4c29c62ee6e3d9629b7c6b9a89 to your computer and use it in GitHub Desktop.

Select an option

Save staticfloat/57642c4c29c62ee6e3d9629b7c6b9a89 to your computer and use it in GitHub Desktop.
Julia snippet that recursively searches imported modules to find if a certain module is being imported anywhere.
modules(m::Module) = ccall(:jl_module_usings, Any, (Any,), m)
function find_mod(m::Module, name::Symbol, prefix::String="", cache::Set{Module}=Set{Module}())
if m ∈ cache
return
end
push!(cache, m)
for n in nameof.(modules(m))
@info("$(prefix)$(m): $(n)")
if n == name
@warn("Found $name at $(prefix)$(m)")
end
c = getproperty(m, n)
if isa(c, Module)
find_mod(c, name, "$(prefix)$(m).", cache)
end
end
end
julia> using FFMPEG_jll
find_mod(FFMPEG_jll, :Artifacts)
[ Info: FFMPEG_jll: Opus_jll
[ Info: FFMPEG_jll.Opus_jll: JLLWrappers
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers: Libdl
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base: Docs
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Docs: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Docs: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base: StackTraces
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.StackTraces: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.StackTraces: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base: MPFR
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.MPFR: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.MPFR: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base: Ryu
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Ryu: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Ryu: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base: GMP
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.GMP: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.GMP: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base: Enums
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Enums: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Enums: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base: FastMath
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.FastMath: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.FastMath: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base: Sort
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Sort: Order
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Sort.Base.Order: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Sort.Base.Order: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Sort: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Sort: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base: Order
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base: Math
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Math: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Math: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base: Filesystem
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Filesystem: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Filesystem: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base: CoreLogging
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.CoreLogging: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.CoreLogging: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base: Broadcast
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Broadcast: Cartesian
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Broadcast.Base.Cartesian: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Broadcast.Base.Cartesian: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Broadcast: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Broadcast: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base: PermutedDimsArrays
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.PermutedDimsArrays: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.PermutedDimsArrays: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base: IteratorsMD
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.IteratorsMD: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.IteratorsMD: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base: Cartesian
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base: Multimedia
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Multimedia: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Multimedia: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base: SimdLoop
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.SimdLoop: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.SimdLoop: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base: MultiplicativeInverses
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.MultiplicativeInverses: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.MultiplicativeInverses: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base: Rounding
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Rounding: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Rounding: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base: Checked
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Checked: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Base.Checked: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base: IR
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Core.IR: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base: Intrinsics
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base.Core.Intrinsics: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl.Base: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Libdl: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers: Artifacts
┌ Warning: Found Artifacts at FFMPEG_jll.Opus_jll.JLLWrappers
└ @ Main REPL[1]:10
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Artifacts: TOML
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Artifacts.Base.TOML: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Artifacts.Base.TOML: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Artifacts: BinaryPlatforms
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Artifacts.Base.BinaryPlatforms: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Artifacts.Base.BinaryPlatforms: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Artifacts: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers.Artifacts: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers: BinaryPlatforms
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers: Base
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers: Core
[ Info: FFMPEG_jll.Opus_jll.JLLWrappers: Core
[ Info: FFMPEG_jll.Opus_jll: Libdl
[ Info: FFMPEG_jll.Opus_jll: Artifacts
┌ Warning: Found Artifacts at FFMPEG_jll.Opus_jll
└ @ Main REPL[1]:10
[ Info: FFMPEG_jll.Opus_jll: BinaryPlatforms
[ Info: FFMPEG_jll.Opus_jll: Base
[ Info: FFMPEG_jll.Opus_jll: Core
[ Info: FFMPEG_jll.Opus_jll: Core
[ Info: FFMPEG_jll: OpenSSL_jll
[ Info: FFMPEG_jll.OpenSSL_jll: JLLWrappers
[ Info: FFMPEG_jll.OpenSSL_jll: Libdl
[ Info: FFMPEG_jll.OpenSSL_jll: Artifacts
┌ Warning: Found Artifacts at FFMPEG_jll.OpenSSL_jll
└ @ Main REPL[1]:10
[ Info: FFMPEG_jll.OpenSSL_jll: BinaryPlatforms
[ Info: FFMPEG_jll.OpenSSL_jll: Base
[ Info: FFMPEG_jll.OpenSSL_jll: Core
[ Info: FFMPEG_jll.OpenSSL_jll: Core
[ Info: FFMPEG_jll: Zlib_jll
[ Info: FFMPEG_jll.Zlib_jll: JLLWrappers
[ Info: FFMPEG_jll.Zlib_jll: Libdl
[ Info: FFMPEG_jll.Zlib_jll: Artifacts
┌ Warning: Found Artifacts at FFMPEG_jll.Zlib_jll
└ @ Main REPL[1]:10
[ Info: FFMPEG_jll.Zlib_jll: BinaryPlatforms
[ Info: FFMPEG_jll.Zlib_jll: Base
[ Info: FFMPEG_jll.Zlib_jll: Core
[ Info: FFMPEG_jll.Zlib_jll: Core
[ Info: FFMPEG_jll: Bzip2_jll
[ Info: FFMPEG_jll.Bzip2_jll: JLLWrappers
[ Info: FFMPEG_jll.Bzip2_jll: Libdl
[ Info: FFMPEG_jll.Bzip2_jll: Artifacts
┌ Warning: Found Artifacts at FFMPEG_jll.Bzip2_jll
└ @ Main REPL[1]:10
[ Info: FFMPEG_jll.Bzip2_jll: BinaryPlatforms
[ Info: FFMPEG_jll.Bzip2_jll: Base
[ Info: FFMPEG_jll.Bzip2_jll: Core
[ Info: FFMPEG_jll.Bzip2_jll: Core
[ Info: FFMPEG_jll: x265_jll
[ Info: FFMPEG_jll.x265_jll: JLLWrappers
[ Info: FFMPEG_jll.x265_jll: Libdl
[ Info: FFMPEG_jll.x265_jll: Artifacts
┌ Warning: Found Artifacts at FFMPEG_jll.x265_jll
└ @ Main REPL[1]:10
[ Info: FFMPEG_jll.x265_jll: BinaryPlatforms
[ Info: FFMPEG_jll.x265_jll: Base
[ Info: FFMPEG_jll.x265_jll: Core
[ Info: FFMPEG_jll.x265_jll: Core
[ Info: FFMPEG_jll: x264_jll
[ Info: FFMPEG_jll.x264_jll: JLLWrappers
[ Info: FFMPEG_jll.x264_jll: Libdl
[ Info: FFMPEG_jll.x264_jll: Artifacts
┌ Warning: Found Artifacts at FFMPEG_jll.x264_jll
└ @ Main REPL[1]:10
[ Info: FFMPEG_jll.x264_jll: BinaryPlatforms
[ Info: FFMPEG_jll.x264_jll: Base
[ Info: FFMPEG_jll.x264_jll: Core
[ Info: FFMPEG_jll.x264_jll: Core
[ Info: FFMPEG_jll: Ogg_jll
[ Info: FFMPEG_jll.Ogg_jll: JLLWrappers
[ Info: FFMPEG_jll.Ogg_jll: Libdl
[ Info: FFMPEG_jll.Ogg_jll: Artifacts
┌ Warning: Found Artifacts at FFMPEG_jll.Ogg_jll
└ @ Main REPL[1]:10
[ Info: FFMPEG_jll.Ogg_jll: BinaryPlatforms
[ Info: FFMPEG_jll.Ogg_jll: Base
[ Info: FFMPEG_jll.Ogg_jll: Core
[ Info: FFMPEG_jll.Ogg_jll: Core
[ Info: FFMPEG_jll: libvorbis_jll
[ Info: FFMPEG_jll.libvorbis_jll: Ogg_jll
[ Info: FFMPEG_jll.libvorbis_jll: JLLWrappers
[ Info: FFMPEG_jll.libvorbis_jll: Libdl
[ Info: FFMPEG_jll.libvorbis_jll: Artifacts
┌ Warning: Found Artifacts at FFMPEG_jll.libvorbis_jll
└ @ Main REPL[1]:10
[ Info: FFMPEG_jll.libvorbis_jll: BinaryPlatforms
[ Info: FFMPEG_jll.libvorbis_jll: Base
[ Info: FFMPEG_jll.libvorbis_jll: Core
[ Info: FFMPEG_jll.libvorbis_jll: Core
[ Info: FFMPEG_jll: LAME_jll
[ Info: FFMPEG_jll.LAME_jll: JLLWrappers
[ Info: FFMPEG_jll.LAME_jll: Libdl
[ Info: FFMPEG_jll.LAME_jll: Artifacts
┌ Warning: Found Artifacts at FFMPEG_jll.LAME_jll
└ @ Main REPL[1]:10
[ Info: FFMPEG_jll.LAME_jll: BinaryPlatforms
[ Info: FFMPEG_jll.LAME_jll: Base
[ Info: FFMPEG_jll.LAME_jll: Core
[ Info: FFMPEG_jll.LAME_jll: Core
[ Info: FFMPEG_jll: FreeType2_jll
[ Info: FFMPEG_jll.FreeType2_jll: Zlib_jll
[ Info: FFMPEG_jll.FreeType2_jll: Bzip2_jll
[ Info: FFMPEG_jll.FreeType2_jll: JLLWrappers
[ Info: FFMPEG_jll.FreeType2_jll: Libdl
[ Info: FFMPEG_jll.FreeType2_jll: Artifacts
┌ Warning: Found Artifacts at FFMPEG_jll.FreeType2_jll
└ @ Main REPL[1]:10
[ Info: FFMPEG_jll.FreeType2_jll: BinaryPlatforms
[ Info: FFMPEG_jll.FreeType2_jll: Base
[ Info: FFMPEG_jll.FreeType2_jll: Core
[ Info: FFMPEG_jll.FreeType2_jll: Core
[ Info: FFMPEG_jll: FriBidi_jll
[ Info: FFMPEG_jll.FriBidi_jll: JLLWrappers
[ Info: FFMPEG_jll.FriBidi_jll: Libdl
[ Info: FFMPEG_jll.FriBidi_jll: Artifacts
┌ Warning: Found Artifacts at FFMPEG_jll.FriBidi_jll
└ @ Main REPL[1]:10
[ Info: FFMPEG_jll.FriBidi_jll: BinaryPlatforms
[ Info: FFMPEG_jll.FriBidi_jll: Base
[ Info: FFMPEG_jll.FriBidi_jll: Core
[ Info: FFMPEG_jll.FriBidi_jll: Core
[ Info: FFMPEG_jll: libfdk_aac_jll
[ Info: FFMPEG_jll.libfdk_aac_jll: JLLWrappers
[ Info: FFMPEG_jll.libfdk_aac_jll: Libdl
[ Info: FFMPEG_jll.libfdk_aac_jll: Artifacts
┌ Warning: Found Artifacts at FFMPEG_jll.libfdk_aac_jll
└ @ Main REPL[1]:10
[ Info: FFMPEG_jll.libfdk_aac_jll: BinaryPlatforms
[ Info: FFMPEG_jll.libfdk_aac_jll: Base
[ Info: FFMPEG_jll.libfdk_aac_jll: Core
[ Info: FFMPEG_jll.libfdk_aac_jll: Core
[ Info: FFMPEG_jll: libass_jll
[ Info: FFMPEG_jll.libass_jll: Zlib_jll
[ Info: FFMPEG_jll.libass_jll: Bzip2_jll
[ Info: FFMPEG_jll.libass_jll: FriBidi_jll
[ Info: FFMPEG_jll.libass_jll: FreeType2_jll
[ Info: FFMPEG_jll.libass_jll: JLLWrappers
[ Info: FFMPEG_jll.libass_jll: Libdl
[ Info: FFMPEG_jll.libass_jll: Artifacts
┌ Warning: Found Artifacts at FFMPEG_jll.libass_jll
└ @ Main REPL[1]:10
[ Info: FFMPEG_jll.libass_jll: BinaryPlatforms
[ Info: FFMPEG_jll.libass_jll: Base
[ Info: FFMPEG_jll.libass_jll: Core
[ Info: FFMPEG_jll.libass_jll: Core
[ Info: FFMPEG_jll: JLLWrappers
[ Info: FFMPEG_jll: Libdl
[ Info: FFMPEG_jll: Artifacts
┌ Warning: Found Artifacts at FFMPEG_jll
└ @ Main REPL[1]:10
[ Info: FFMPEG_jll: BinaryPlatforms
[ Info: FFMPEG_jll: Base
[ Info: FFMPEG_jll: Core
[ Info: FFMPEG_jll: Core
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment