Revise.jl and PackageCompiler.jl are not compatible?

This is an extension of the original question about Revise.jl.

I found that Revise.jl doesn’t work when using PackageCompiler.jl as reported here.
While compiling packages, even Revise.jl was not included.

Anybody knows the compatibility issue between Revise.jl and PackageCompiler.jl?

EDIT: I followed this instruction with restore_default=true and more packages and functions.
Here’s the list:
:Debugger,
:OhMyREPL,
:HDF5,
:StaticArrays,
:Plots,
:LinearAlgebra,
:HDF5,
:ProgressMeter,
:Convex,
:Mosek,
:MosekTools,

Perhaps this indicates that packages depending on compiled packages by PackageCompiler.jl would not be compatible for Revise.jl well…?

Revise has special handling for updating stdlibs (which are in the sysimage). It’s unlikely that will work with other packages put into the sysimage though.

4 Likes

To make sure Revise ends up in the system image, don’t you have to include :Revise in the list passed to create_sysimage? I suspect the image is built with --startup-file=no.

You can always check whether Revise is loaded by typing Revise at the REPL and seeing whether it gives you an error.

2 Likes

Actually I didn’t fully understand your comment.

Do you mean that, in some way, there’s an option of PackageCompiler.jl which does not include startup files and this would make Revise.jl not working?

If so, do you think that manually adding using Revise will solve this problem?

I was just guessing, but a little digging turned this up: https://github.com/JuliaLang/PackageCompiler.jl/pull/264

So, nothing that you load in your startup file will be built into the sysimage it creates: you have to explicitly define the particular packages you want to include. That seems like a very sensible choice to me.

I’m not a PackageCompiler user myself, because I’ve found that it’s not very convenient for people who are constantly developing the packages they’d like to build into their sysimage. So I don’t have much experience, sorry. But I would guess it should still load your startup file, and I was just proposing you check by typing Revise at the REPL. If it isn’t there, then using Revise should fix it for any packages that you load later. (Anything loaded before Revise will not be tracked.)

Revise won’t track packages that you build into your sysimage, so do be careful about how much stuff you put in there.

2 Likes

As you told me, I tried to check whether Revise.jl is correctly imported at the beginning.
And it is.

After that, Revise.jl with PackageCompiler.jl works well, and it does not depend on whether Revise.jl is included in compiling list.

Frankly speaking, I don’t understand what was going on, but it is finally works.
Revise.jl sometimes reflect changes of codes with delay, but it may be due to my specific work flow.

I suspect that Revise.jl was not properly imported at the beginning when I asked the question.