-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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
Loading precompiled package fails if a former transitive dependency is not present #21266
Comments
Why do transitive dependencies get saved in and loaded in the top-level ji file, instead of checking via the intermediate dependencies? In the example above, if StatsBase's timestamp was checked first and it had been recompiled, rather than trying to load SpecialFunctions directly from the top-level StatsModels.ji file, this would work fine. This causes a lot of issues on PkgEval. |
Not saying it's new, but it's always failed to handle this situation correctly. People can't refactor to reduce or replace the number of dependencies they have without potentially breaking all the .ji files for packages downstream. |
How long the behavior has been wrong also doesn't answer the question of why it's doing that. The logic in loading.jl is tough to follow - why is it saving transitive dependencies into the ji file then trying to load things that no longer exist, instead of first checking its direct dependencies? |
I'm just saying that since it traces back to @vtjnash's original precompile patch, he's maybe the one who knows why it is that way. I don't know, and I agree that offhand it seems more reasonable to store immediate dependencies. But the logic of that code is hard to follow. |
If a transitive dependency was present when a module was last precompiled, but gets removed due to being no longer required, the dependent module fails to load. Example:
The text was updated successfully, but these errors were encountered: