Build.jl from command line vs. from

In test/runtests.jl I have

using Test
using Logging
using MyPackage

but in test/Project.toml, MyPackage is not a dependency. I understand that when I’m in the main project folder and Pkg.activate("."), then Pkg.test(), that MyPackage is available to test/runtests.jl without needing to list it in test/Project.toml, and so the tests proceed with no complaint about using MyPackage.

In deps/build.jl I have

using Pkg, PackageCompiler

pkg"activate .." #activate main project environment

# do stuff ...

# generate precompile statements from package tests
runcmd = `julia --banner=no --project=../test --startup-file=no --trace-compile=precompile_out.jl -e 'include("../test/runtests.jl")'`

# then make a custom sysimage ...

This works fine when using In fact I can comment out the line pkg"activate .." and it still works fine using

However, running

julia --project=../test --startup-file=no -e 'include("../test/runtests.jl")'

from the shell prompt in the deps folder fails of course with a LoadError that MyPackage isn’t found on the current path, since it isn’t included in the test environment.


julia build.jl


julia --project build.jl

from the shell prompt in the deps folder also gives the same error, despite the pkg"activate .." statement in build.jl.

So when running there’s some extra magic going on to make the project’s main environment available in the build script, including to a julia process run via julia’s external command mechanism, that isn’t available when I run julia build.jl from the command line in the deps folder, despite activating the project’s main environment in build.jl.

Is this documented somewhere?

What’s the best way to run julia build.jl from a shell prompt so that I can generate the custom sysimage without needing to call Add MyPackage to test/Project.toml?

(I’m using Julia 1.4.2.)