Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix different .cachepath initialization points for precompile load #45149

Merged
merged 1 commit into from
May 7, 2022

Commits on May 2, 2022

  1. Fix different .cachepath initialization points for precompile load

    For quite some time I've been observing Revise randomly not pick
    up changes to my packages. Usually I just write that off to Revise
    getting into a bad state and restarting Julia fixes it. Today, I
    got very annoyed by this again and decided to finally track it down.
    What turns out to happen here is the packages in question are those
    which:
    
    A. Are being precompiled on load
    B. Use Requires
    C. Have an `@require`'d-dependency already loaded
    D. The change to be revised is made in a file not loaded via
       Requires.jl.
    
    In this case the `__init__` of the package triggers Requires,
    which in turn calls back to Revise, which tries to start watching
    the package. However, on the `compilecache` path (but not on the
    path where we just find a pre-existing cache file), we used to
    not set the .cachepath property of `pkgorigins` until after
    the `__init__` callbacks run, causing Revise not to be able
    to see those files. Infuriatingly, restarting julia fixes this
    because it just loads the .ji file that was just compiled.
    
    Fix this by unifying the point at which the .cachepath is set,
    always setting it just prior to the module initialization callback.
    Keno committed May 2, 2022
    Configuration menu
    Copy the full SHA
    b5bd2fb View commit details
    Browse the repository at this point in the history