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

No feedback when upgrading a package fails #4087

Open
GHTaarn opened this issue Nov 17, 2024 · 3 comments
Open

No feedback when upgrading a package fails #4087

GHTaarn opened this issue Nov 17, 2024 · 3 comments

Comments

@GHTaarn
Copy link
Contributor

GHTaarn commented Nov 17, 2024

Upgrading the Revise package from 3.5.15 to the newest version with pkg"up Revise" does not have the desired effect, the package stays at version 3.5.15:

Installing Julia 1.11.1+0.x64.linux.gnu
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.11.1 (2024-10-16)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

(@v1.11) pkg> add [email protected]
  Installing known registries into `~/.julia`
       Added `General` registry to ~/.julia/registries
    Updating registry at `~/.julia/registries/General.toml`
   Resolving package versions...
   Installed OrderedCollections ─ v1.6.3
   Installed CodeTracking ─────── v1.3.6
   Installed JuliaInterpreter ─── v0.9.37
   Installed Requires ─────────── v1.3.0
   Installed LoweredCodeUtils ─── v2.4.8
   Installed Revise ───────────── v3.5.15
    Updating `~/.julia/environments/v1.11/Project.toml`
⌃ [295af30f] + Revise v3.5.15
    Updating `~/.julia/environments/v1.11/Manifest.toml`
  [da1fd8a2] + CodeTracking v1.3.6
  [aa1ae85d] + JuliaInterpreter v0.9.37
⌅ [6f1432cf] + LoweredCodeUtils v2.4.8
  [bac558e1] + OrderedCollections v1.6.3
  [ae029012] + Requires v1.3.0
⌃ [295af30f] + Revise v3.5.15
  [0dad84c5] + ArgTools v1.1.2
  [56f22d72] + Artifacts v1.11.0
  [2a0f44e3] + Base64 v1.11.0
  [ade2ca70] + Dates v1.11.0
  [8ba89e20] + Distributed v1.11.0
  [f43a241f] + Downloads v1.6.0
  [7b1f6079] + FileWatching v1.11.0
  [b77e0a4c] + InteractiveUtils v1.11.0
  [b27032c2] + LibCURL v0.6.4
  [76f85450] + LibGit2 v1.11.0
  [8f399da3] + Libdl v1.11.0
  [56ddb016] + Logging v1.11.0
  [d6f4376e] + Markdown v1.11.0
  [ca575930] + NetworkOptions v1.2.0
  [44cfe95a] + Pkg v1.11.0
  [de0858da] + Printf v1.11.0
  [3fa0cd96] + REPL v1.11.0
  [9a3f8284] + Random v1.11.0
  [ea8e919c] + SHA v0.7.0
  [9e88b42a] + Serialization v1.11.0
  [6462fe0b] + Sockets v1.11.0
  [f489334b] + StyledStrings v1.11.0
  [fa267f1f] + TOML v1.0.3
  [a4e569a6] + Tar v1.10.0
  [cf7118a7] + UUIDs v1.11.0
  [4ec0a83e] + Unicode v1.11.0
  [deac9b47] + LibCURL_jll v8.6.0+0
  [e37daf67] + LibGit2_jll v1.7.2+0
  [29816b5a] + LibSSH2_jll v1.11.0+1
  [c8ffd9c3] + MbedTLS_jll v2.28.6+0
  [14a3606d] + MozillaCACerts_jll v2023.12.12
  [83775a58] + Zlib_jll v1.2.13+1
  [8e850ede] + nghttp2_jll v1.59.0+0
  [3f19e933] + p7zip_jll v17.4.0+2
        Info Packages marked with ⌃ and ⌅ have new versions available. Those with ⌃ may be upgradable, but those with ⌅ are restricted by compatibility constraints from upgrading. To see why use `status --outdated -m`
Precompiling project...
  6 dependencies successfully precompiled in 15 seconds. 29 already precompiled.
  1 dependency had output during precompilation:
┌ LoweredCodeUtils
│  ┌ Warning: skipping callee #f#38 (called by f) due to UndefVarError(:f, LoweredCodeUtils)
│  └ @ LoweredCodeUtils ~/.julia/packages/LoweredCodeUtils/608oq/src/signatures.jl:316
└  

(@v1.11) pkg> st
Status `~/.julia/environments/v1.11/Project.toml`
⌃ [295af30f] Revise v3.5.15
Info Packages marked with ⌃ have new versions available and may be upgradable.

(@v1.11) pkg> up Revise
    Updating registry at `~/.julia/registries/General.toml`
  No Changes to `~/.julia/environments/v1.11/Project.toml`
  No Changes to `~/.julia/environments/v1.11/Manifest.toml`
        Info We haven't cleaned this depot up for a bit, running Pkg.gc()...
      Active manifest files: 1 found
      Active artifact files: 0 found
      Active scratchspaces: 0 found
     Deleted no artifacts, repos, packages or scratchspaces

(@v1.11) pkg> st
Status `~/.julia/environments/v1.11/Project.toml`
⌃ [295af30f] Revise v3.5.15
Info Packages marked with ⌃ have new versions available and may be upgradable.

(@v1.11) pkg> 

Fortunately in my case, I can just use pkg"upgrade" which does upgrade Revise to the latest version.

@serenity4
Copy link

I can reproduce, the following successfully updates Revise:

pkg> up --preserve=none Revise
pkg> up --preserve=direct Revise

but the following fails to do so:

pkg> up --preserve=all Revise
pkg> up Revise

I believe preserve=all is the default when a package is specified (so it updates only the selected package). And, to update Revise to the next version we also need to update LoweredCodeUtils, which I am guessing Pkg does not attempt due to the preserve mode.

@serenity4
Copy link

serenity4 commented Nov 26, 2024

The behavior of preserve modes is described in https://pkgdocs.julialang.org/v1/managing-packages/#updating and illustrated in #3001. I wonder why --preserve=direct was not made the default though 🤔

Or at least, when upgrading a package specifically (via up SomePkg), IMO it should try to update to the required version (latest if unspecified) without upgrading anything else. If it fails (e.g. due to compat bounds on indirect packages), it should try a slightly stricter version of --preserve=direct to only allow upgrades for dependencies that otherwise prevent SomePkg from upgrading due to compatibility requirements.

EDIT: the same issue/solution was briefly mentioned in #4009

@GHTaarn
Copy link
Contributor Author

GHTaarn commented Nov 28, 2024

Thank you for your comment, now I know what to do in future. I agree with you that I was expecting a behaviour similar to your suggestion or to --preserve=direct. An alternative could also be to just write a message similar to "Revise was not upgraded because this would require upgrading some packages that you did not specify. Please consider using the --preserve flag or resolving the dependencies explicitly"

@GHTaarn GHTaarn changed the title Upgrading a package fails No feedback when upgrading a package fails Nov 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants