@@ -7,37 +7,34 @@ import (
77 "fmt"
88 "math/big"
99 "os"
10- "path/filepath"
1110 "strings"
1211 "time"
1312
14- "github.com/ava-labs/avalanche-cli/pkg/txutils"
15-
16- "github.com/ava-labs/avalanche-cli/pkg/binutils"
17- "github.com/ava-labs/avalanche-cli/pkg/contract"
18- "github.com/ava-labs/avalanche-cli/pkg/evm"
19- blockchainSDK "github.com/ava-labs/avalanche-cli/sdk/blockchain"
20- "github.com/ava-labs/avalanchego/config"
21- "github.com/ava-labs/avalanchego/ids"
22-
23- "github.com/ava-labs/avalanchego/vms/platformvm/txs"
24-
2513 "github.com/ava-labs/avalanche-cli/pkg/blockchain"
26-
2714 "github.com/ava-labs/avalanche-cli/pkg/cobrautils"
2815 "github.com/ava-labs/avalanche-cli/pkg/constants"
16+ "github.com/ava-labs/avalanche-cli/pkg/contract"
17+ "github.com/ava-labs/avalanche-cli/pkg/evm"
2918 "github.com/ava-labs/avalanche-cli/pkg/keychain"
19+ "github.com/ava-labs/avalanche-cli/pkg/localnet"
3020 "github.com/ava-labs/avalanche-cli/pkg/models"
3121 "github.com/ava-labs/avalanche-cli/pkg/networkoptions"
3222 "github.com/ava-labs/avalanche-cli/pkg/node"
3323 "github.com/ava-labs/avalanche-cli/pkg/prompts"
3424 "github.com/ava-labs/avalanche-cli/pkg/subnet"
25+ "github.com/ava-labs/avalanche-cli/pkg/txutils"
3526 "github.com/ava-labs/avalanche-cli/pkg/utils"
3627 "github.com/ava-labs/avalanche-cli/pkg/ux"
28+ "github.com/ava-labs/avalanche-cli/pkg/vm"
29+ blockchainSDK "github.com/ava-labs/avalanche-cli/sdk/blockchain"
3730 validatorManagerSDK "github.com/ava-labs/avalanche-cli/sdk/validatormanager"
3831 "github.com/ava-labs/avalanchego/api/info"
32+ "github.com/ava-labs/avalanchego/config"
33+ "github.com/ava-labs/avalanchego/ids"
3934 "github.com/ava-labs/avalanchego/utils/logging"
4035 "github.com/ava-labs/avalanchego/utils/units"
36+ "github.com/ava-labs/avalanchego/vms/platformvm/txs"
37+
4138 "github.com/ethereum/go-ethereum/common"
4239 "github.com/spf13/cobra"
4340)
@@ -103,7 +100,13 @@ Sovereign L1s require bootstrap validators. avalanche blockchain convert command
103100 return cmd
104101}
105102
106- func StartLocalMachine (network models.Network , blockchainName string , deployBalance , availableBalance uint64 ) error {
103+ func StartLocalMachine (
104+ network models.Network ,
105+ sidecar models.Sidecar ,
106+ blockchainName string ,
107+ deployBalance ,
108+ availableBalance uint64 ,
109+ ) error {
107110 var err error
108111 if network .Kind == models .Local {
109112 useLocalMachine = true
@@ -182,29 +185,25 @@ func StartLocalMachine(network models.Network, blockchainName string, deployBala
182185 _ = node .StopLocalNode (app )
183186 anrSettings := node.ANRSettings {}
184187 avagoVersionSettings := node.AvalancheGoVersionSettings {}
185- if avagoBinaryPath == "" {
186- useLatestAvalanchegoPreReleaseVersion := true
187- useLatestAvalanchegoReleaseVersion := false
188- if userProvidedAvagoVersion != constants .DefaultAvalancheGoVersion {
189- useLatestAvalanchegoReleaseVersion = false
190- useLatestAvalanchegoPreReleaseVersion = false
191- } else {
192- userProvidedAvagoVersion = ""
193- }
194- avaGoVersionSetting := node.AvalancheGoVersionSettings {
195- UseCustomAvalanchegoVersion : userProvidedAvagoVersion ,
196- UseLatestAvalanchegoPreReleaseVersion : useLatestAvalanchegoPreReleaseVersion ,
197- UseLatestAvalanchegoReleaseVersion : useLatestAvalanchegoReleaseVersion ,
198- }
199- avalancheGoVersion , err := node .GetAvalancheGoVersion (app , avaGoVersionSetting )
200- if err != nil {
201- return err
202- }
203- _ , avagoDir , err := binutils .SetupAvalanchego (app , avalancheGoVersion )
188+ // setup (install if needed) avalanchego binary
189+ avagoVersion := userProvidedAvagoVersion
190+ if userProvidedAvagoVersion == constants .DefaultAvalancheGoVersion && avagoBinaryPath == "" {
191+ // nothing given: get avago version from RPC compat
192+ avagoVersion , err = vm .GetLatestAvalancheGoByProtocolVersion (
193+ app ,
194+ sidecar .RPCVersion ,
195+ constants .AvalancheGoCompatibilityURL ,
196+ )
204197 if err != nil {
205- return fmt .Errorf ("failed installing Avalanche Go version %s: %w" , avalancheGoVersion , err )
198+ if err != vm .ErrNoAvagoVersion {
199+ return err
200+ }
201+ avagoVersion = constants .LatestPreReleaseVersionTag
206202 }
207- avagoBinaryPath = filepath .Join (avagoDir , "avalanchego" )
203+ }
204+ avagoBinaryPath , err := localnet .SetupAvalancheGoBinary (app , avagoVersion , avagoBinaryPath )
205+ if err != nil {
206+ return err
208207 }
209208 nodeConfig := map [string ]interface {}{}
210209 if app .AvagoNodeConfigExists (blockchainName ) {
@@ -535,7 +534,7 @@ func convertBlockchain(_ *cobra.Command, args []string) error {
535534 }
536535 }
537536 if ! generateNodeID {
538- if err = StartLocalMachine (network , blockchainName , deployBalance , availableBalance ); err != nil {
537+ if err = StartLocalMachine (network , sidecar , blockchainName , deployBalance , availableBalance ); err != nil {
539538 return err
540539 }
541540 }
0 commit comments