@@ -114,7 +114,8 @@ impl ZkSyncConfig {
114114 libraries : Libraries ,
115115 evm_version : EvmVersion ,
116116 via_ir : bool ,
117- ) -> ZkSolcSettings {
117+ offline : bool ,
118+ ) -> Result < ZkSolcSettings , SolcError > {
118119 let optimizer = Optimizer {
119120 enabled : Some ( self . optimizer ) ,
120121 mode : Some ( self . optimizer_mode ) ,
@@ -124,7 +125,7 @@ impl ZkSyncConfig {
124125 jump_table_density_threshold : None ,
125126 } ;
126127
127- let zk_settings = ZkSettings {
128+ let settings = ZkSettings {
128129 libraries,
129130 optimizer,
130131 evm_version : Some ( evm_version) ,
@@ -146,8 +147,22 @@ impl ZkSyncConfig {
146147 suppressed_errors : self . suppressed_errors . clone ( ) ,
147148 } ;
148149
150+ let zksolc_path = if let Some ( path) = config_ensure_zksolc ( self . zksolc . as_ref ( ) , offline) ? {
151+ path
152+ } else if !offline {
153+ let default_version = semver:: Version :: new ( 1 , 5 , 11 ) ;
154+ let mut zksolc = ZkSolc :: find_installed_version ( & default_version) ?;
155+ if zksolc. is_none ( ) {
156+ ZkSolc :: blocking_install ( & default_version) ?;
157+ zksolc = ZkSolc :: find_installed_version ( & default_version) ?;
158+ }
159+ zksolc. unwrap_or_else ( || panic ! ( "Could not install zksolc v{default_version}" ) )
160+ } else {
161+ "zksolc" . into ( )
162+ } ;
163+
149164 // `cli_settings` get set from `Project` values when building `ZkSolcVersionedInput`
150- ZkSolcSettings { settings : zk_settings , cli_settings : CliSettings :: default ( ) }
165+ ZkSolcSettings :: new_from_path ( settings , CliSettings :: default ( ) , zksolc_path )
151166 }
152167}
153168
@@ -163,34 +178,10 @@ pub fn config_zksolc_settings(config: &Config) -> Result<ZkSolcSettings, SolcErr
163178 Err ( e) => return Err ( SolcError :: msg ( format ! ( "Failed to parse libraries: {e}" ) ) ) ,
164179 } ;
165180
166- Ok ( config. zksync . settings ( libraries, config. evm_version , config. via_ir ) )
167- }
168-
169- /// Return the configured `zksolc` compiler
170- ///
171- /// If not `offline`, will install the default version automatically
172- /// Will fallback to `zksolc` present in the environment
173- pub fn config_zksolc_compiler ( config : & Config ) -> Result < ZkSolcCompiler , SolcError > {
174- let zksolc = if let Some ( zksolc) =
175- config_ensure_zksolc ( config. zksync . zksolc . as_ref ( ) , config. offline ) ?
176- {
177- zksolc
178- } else if !config. offline {
179- let default_version = semver:: Version :: new ( 1 , 5 , 11 ) ;
180- let mut zksolc = ZkSolc :: find_installed_version ( & default_version) ?;
181- if zksolc. is_none ( ) {
182- ZkSolc :: blocking_install ( & default_version) ?;
183- zksolc = ZkSolc :: find_installed_version ( & default_version) ?;
184- }
185- zksolc. unwrap_or_else ( || panic ! ( "Could not install zksolc v{default_version}" ) )
186- } else {
187- "zksolc" . into ( )
188- } ;
189-
190- Ok ( ZkSolcCompiler { zksolc, solc : config_solc_compiler ( config) ? } )
181+ config. zksync . settings ( libraries, config. evm_version , config. via_ir , config. offline )
191182}
192183
193- /// Create a new zkSync project
184+ /// Create a new ZKsync project
194185pub fn config_create_project (
195186 config : & Config ,
196187 cached : bool ,
@@ -217,7 +208,7 @@ pub fn config_create_project(
217208 builder = builder. sparse_output ( filter) ;
218209 }
219210
220- let zksolc_compiler = config_zksolc_compiler ( config) ?;
211+ let zksolc_compiler = ZkSolcCompiler { solc : config_solc_compiler ( config) ? } ;
221212
222213 let project = builder. build ( zksolc_compiler) ?;
223214
0 commit comments