-
Notifications
You must be signed in to change notification settings - Fork 28
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
endBut 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
endWhere the contents of GlueModule.jl are:
module GlueModule
function hello()
println("Hello world!")
end
endWith 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?