I recently installed Julia 1.12.6 on Ubuntu 22.04.5. I then I tried to install FundamentalsNumericalComputation and had some issues. The issues were related to the packages BoundaryValueDiffEqFIRK (v1.13.0), BoundaryValueDiffEqMIRK (v1.13.0), BoundaryValueDiffEq (v5.21.0), DifferentialEquations (v7.17) and obviously FundamentalsNumericalComputation. None of these packages pre-compiled. There seems to be package conflicts.
I’m a bit stuck. I’ve tried creating an environment for an older Julia version and installing FundamentalsNumericalComputation there because I know it worked in older versions. The only problem with this is, for example, if I install Julia 1.10.9, I don’t know which version of FundamentalsNumericalComputation is compatible.
My main issue is installing FundamentalsNumericalComputation (v0.4.5) in Julia 1.12.6 and how to resolve the source of the conflicts. I honestly don’t know what to do. Can anyone suggest a fix?
I can confirm that after installing the LTS (1.10) via juliaup add lst, then setting juliaup default lts, then starting Julia, then switching to an empty dedicated environment by activate ., and then adding only the given package by add FundamentalsNumericalComputation, I also get an error: some complaints about failed compilation of
While addressing this particular issues is something with which perhaps @tobydriscoll could help, I take this as an opportunity to ask a more general but tightly related question:
Given a package that has not been updated for a few months, during which time a new version or even several versions may have been released, how do we reproduce the exact environment in which the package reportedly worked fine? The file Project.toml only contains compat entries for the packages, but for Julia itself, it only contains julia = "1.0", which seems not enough.
Here we could perhaps read the package release date (late 2024) and then look up the release date of the Julia version (perhaps LTS) released just before that… Is there any more systematic approach?
Tried to install it, got the same outcome as described, and the immediate cause appears to be BoundaryValueDiffEqCore.__initial_guess_on_mesh lacking a keyword tune_parameters when called by BoundaryValueDiffEqFIRK. It was patched here:
Basically the [compat] bounds of FIRK and MIRK weren’t initially updated when that method call was updated everywhere, so it was still possible to accidentally coexist with the old Core without the keyword.
Updating the environment failed, so the rest of FundamentalsNumericalComputation.jl is preventing that patch. That’s not what you want anyway to reproduce the software in a textbook. Unfortunately, the repo did not provide validated [compat] upper bounds or an exact manifest for reproducing the textbook’s environment; it’s structured like a package dependency for flexible updates and patches, which evidently discontinued and gathered version bugs. You could try to add the direct dependencies by exact major and minor versions (allowing most recent patch) listed in the project before adding the parent package. The Julia version at the time of the latest release was 1.10.6, though in principle you can get away with adding 1.10 for the latest patch.
If you do find a working environment and verify it works throughout the textbook, you could offer a stricter project and/or a manifest in an issue or pull request to the repo. It may not go anywhere, but at least people could try it for themselves.