Develop julia base/* vs usr/share/julia/src/base/*

I had cloned and built julia, and was playing around with some things in base/*, using Revise.track(Base), and seeing the changes in the REPL as I made them in the files. I restart julia and try to run things again, though nothing changes as I change the code. I realize that the functions are now defined in usr/share/julia/src/base/* by checking with @edit ....

Why does this happen, can I get back to how it was before? What is the difference between these two, seems to contain the same things?

2 Likes

Did you have julia installed by some package manager as well? IIRC the default make does not “install” julia to /usr.

Generally, changes to functionality provided by Base is only visible when you’ve tracked those changes via Revise.track, since they are usually provided by a compiled sysimage (a sort of compilation cache to speed up startup of julia). This cache is of course not updated when you just change the source files - you’ll have to build a new system image by e.g. running make in the julia source directory again or using Revise.track to include those changes.

Not /usr, but julia_cloned/usr/... (maybe that is what you meant, just want to make sure).

I do have other julia installations, though I don’t understand why they should interact.

I start this julia with julia_cloned/julia. Editing julia_cloned/base/* after running Revise.track(Base) does not seem to do anything anymore (used to work), and instead it seems that julia_cloned/usr/share/julia/src/base/* are the files I should edit.

I have tried to run make clean; make but didn’t change anything.

No, I did mean /usr! Sorry for the confusion - disregard that part then.

Hmmmm… For me at least, building from source leads to julia_cloned/usr/share/julia/base just being a symlink to julia_cloned/base (same for test and each individual stdlib). Perhaps Revise doesn’t follow the symlinks?

Those are also symlinks for me, though julia_cloned/usr/share/julia/src/base is not (notice the src), and that seems to be the base that is used for some reason.

I do not have that src subdirectory :thinking: Which version did you build from source? Have you tried after make cleanall?

Nope, running that one now. This seemed to remove the usr folder which clean didn’t. Feels like this might make the difference.

Building a recent branch from master, so should be pretty up to date
https://github.com/JuliaLang/julia/pull/45656

Didn’t help…

Will have to continue tomorrow, probably just remove and clone anew, hope that makes a difference.

I can confirm the same after building a freshly cloned julia.

julia> @edit sin(1)

leads to

"~/julia/usr/share/julia/src/base/math.jl"

and Revise tracks this version of the code, which appears to be separate from that in ~/julia/base

2 Likes

Oh yeah, forgot to get back to this. But continued to have the same problem even after cloning and rebuilding from scratch. I have just developed in that folder and then when it works I copy it over. But it is a little annoying and I really don’t understand what I did to cause this?

1 Like