Description
Problem
Unless I'm mistaken, overrides works like the following:
when an override file exists, then
forc
, allcomponents
, and allplugins
should use the overridden version rather than fall back todefault
unless an individual component or plugin is explicitly set within the override.
This doesn't seem to be the case:
> cat fuel-toolchain.toml
[toolchain]
channel = "beta-3"
> forc --version
forc-tx 0.37.3
> forc-tx --version
component 'forc-tx' not found in currently active toolchain 'beta-3-aarch64-apple-darwin'
The issue #652 is related since we do want an error message here, but I think this is a bug seeing as forc --version
above didn't acknowledge the overridden version.
Edit: related PRs:
- Fix incorrect binary link target #665
- Extend finding components to plugins and executables distributed by forc #666
- Extend triple target to everything distributed by forc #667
- Fix clobbering of process vs component vs forc #668
- Update component target tarball (#654) #669
Steps
Let's start from scratch:
rm -f fuel-toolchain.toml
> fuelup show
Default host: aarch64-apple-darwin
fuelup home: /Users/alfie/.fuelup
Installed toolchains
--------------------
beta-3-aarch64-apple-darwin
latest-aarch64-apple-darwin (default)
active toolchain
----------------
latest-aarch64-apple-darwin (default)
forc : 0.62.0
- forc-client
- forc-deploy : 0.62.0
- forc-run : 0.62.0
- forc-crypto : 0.62.0
- forc-debug : 0.62.0
- forc-doc : 0.62.0
- forc-fmt : 0.62.0
- forc-lsp : 0.62.0
- forc-tx : 0.62.0
- forc-wallet : 0.8.2
fuel-core : 0.31.0
fuel-core-keygen : 0.31.0
fuels versions
--------------
forc : 0.65.1
forc-wallet : 0.65.0
> fuelup component list
latest-aarch64-apple-darwin
Installed:
forc 0.62.0 (latest: 0.63.1)
- forc-fmt
- forc-lsp
- forc-doc
- forc-deploy
- forc-run
forc-wallet 0.8.2 (latest: 0.9.0)
fuel-core 0.31.0 (latest: 0.34.0)
fuel-core-keygen 0.31.0 (latest: 0.34.0)
Installable:
Now we create the override:
> cat << EOF > fuel-toolchain.toml
[toolchain]
channel = "beta-3"
EOF
> cat fuel-toolchain.toml
[toolchain]
channel = "beta-3"
> fuelup show
Default host: aarch64-apple-darwin
fuelup home: /Users/alfie/.fuelup
Installed toolchains
--------------------
beta-3-aarch64-apple-darwin (override)
latest-aarch64-apple-darwin (default)
active toolchain
----------------
beta-3-aarch64-apple-darwin (override), path: /Users/alfie/BACKUP/work/fuellabs/worktrees/fuelup/652-warning-override/fuel-toolchain.toml
forc : 0.37.3
- forc-client
- forc-deploy : not found
- forc-run : not found
- forc-crypto : not found
- forc-debug : not found
- forc-doc : not found
- forc-fmt : not found
- forc-lsp : not found
- forc-tx : not found
- forc-wallet : 0.2.2
fuel-core : 0.17.11
fuel-core-keygen : not found
fuels versions
--------------
forc : 0.39
But when we now list the components, I'm expecting fuel-core
to be at 0.17.11
as above but instead see:
> fuelup component list
latest-aarch64-apple-darwin
Installed:
forc 0.62.0 (latest: 0.63.1)
- forc-fmt
- forc-lsp
- forc-doc
- forc-deploy
- forc-run
forc-wallet 0.8.2 (latest: 0.9.0)
fuel-core 0.31.0 (latest: 0.34.0)
fuel-core-keygen 0.31.0 (latest: 0.34.0)
Installable:
... notice how the first line above show we are still on latest-aarch64-apple-darwin
rather than beta-3
.
Possible Solution(s)
It's only after installing the beta-3
toolchain do we get the proper output:
> fuelup toolchain install beta-3-aarch64-apple-darwin
Downloading: forc forc-wallet fuel-core
...
> fuelup show
Default host: aarch64-apple-darwin
fuelup home: /Users/alfie/.fuelup
Installed toolchains
--------------------
beta-3-aarch64-apple-darwin (override)
latest-aarch64-apple-darwin (default)
active toolchain
----------------
beta-3-aarch64-apple-darwin (override), path: /Users/alfie/BACKUP/work/fuellabs-20240822/worktrees/repos/counter-contract/fuel-toolchain.toml
forc : 0.37.3
- forc-client
- forc-deploy : 0.37.3
- forc-run : 0.37.3
- forc-crypto : not found
- forc-debug : not found
- forc-doc : 0.37.3
- forc-fmt : 0.37.3
- forc-lsp : 0.37.3
- forc-tx : 0.37.3
- forc-wallet : 0.2.2
fuel-core : 0.17.11
fuel-core-keygen : Could not parse version (empty string, expected a semver version)
fuels versions
--------------
forc : 0.39
> forc-tx --version
forc-tx 0.37.3
The problem is either:
- my understanding of how overriding works is incorrect
- the overriding documentation is incorrect
- there are bugs in the current overriding logic
Issue #652 deals with a side effect of this bug, but I'm thinking it's a larger issue.
Notes
No response
Fuelup version
> fuelup --version
fuelup 0.26.0
Installed components
> fuelup check
latest - Update available (9 updates)
beta-3 - Up to date
fuelup - Up to date