-
Notifications
You must be signed in to change notification settings - Fork 29
Description
I can conditionally load code like this:
ExampleOne.jl
:
module ExampleOne
using Requires
function __init__()
@require JSON="682c06a0-de6a-54ab-a142-c8b1cf79cde6" begin
function hello()
println("Hello world!")
end
end
end
end
But code loaded like this is not precompiled.
If I want to be able to precompile my conditionally loaded code, I can do so like this:
ExampleTwo.jl
:
module ExampleTwo
using Requires
function __init__()
pushfirst!(Base.LOAD_PATH, @__DIR__)
@require JSON="682c06a0-de6a-54ab-a142-c8b1cf79cde6" using GlueModule
end
end
Where the contents of GlueModule.jl
are:
module GlueModule
function hello()
println("Hello world!")
end
end
With this approach, GlueModule
is precompiled. Unfortunately, I get this warning:
┌ Warning: Package ExampleTwo does not have GlueModule in its dependencies:
│ - If you have ExampleTwo checked out for development and have
│ added GlueModule as a dependency but haven't updated your primary
│ environment's manifest file, try `Pkg.resolve()`.
│ - Otherwise you may need to report an issue with ExampleTwo
└ Loading GlueModule into ExampleTwo from project dependency, future warnings for ExampleTwo are suppressed.
I understand the purpose of the "Warning: Package Foo
does not have Bar
in its dependencies" warning when Bar
is a real package with a UUID that is in the Julia General registry and can be added to a Project.toml
file. But in this case, GlueModule
isn't a real package - it's a glue module that is located in the same package repository as ExampleTwo
. GlueModule
doesn't have its own GitHub repository, doesn't have its own UUID, is not separately registered in the Julia General registry, and cannot be added to a Project.toml
file.
So is there a way to suppress the "Warning: Package ExampleTwo
does not have GlueModule
in its dependencies" warning for glue modules that are conditionally loaded by Requires.jl?