@@ -10,8 +10,6 @@ use apollo_infra_utils::path::{project_path, resolve_project_relative_path};
1010use tempfile:: NamedTempFile ;
1111use tracing:: info;
1212
13- use crate :: contracts:: TagAndToolchain ;
14-
1513static CAIRO0_PIP_REQUIREMENTS_FILE : LazyLock < PathBuf > =
1614 LazyLock :: new ( || resolve_project_relative_path ( "scripts/requirements.txt" ) . unwrap ( ) ) ;
1715const CAIRO1_REPO_RELATIVE_PATH_OVERRIDE_ENV_VAR : & str = "CAIRO1_REPO_RELATIVE_PATH" ;
@@ -89,8 +87,7 @@ fn cairo1_package_exists(version: &String) -> bool {
8987
9088/// Verifies that the Cairo1 package (of the given version) is available.
9189/// Attempts to download it if not.
92- #[ allow( dead_code) ]
93- async fn verify_cairo1_package ( version : & String ) {
90+ pub async fn verify_cairo1_package ( version : & String ) {
9491 if !cairo1_package_exists ( version) {
9592 download_cairo_package ( version) . await ;
9693 }
@@ -133,68 +130,40 @@ pub fn cairo0_compile(
133130pub fn cairo1_compile (
134131 path : String ,
135132 git_tag_override : Option < String > ,
136- cargo_nightly_arg : Option < String > ,
133+ _cargo_nightly_arg : Option < String > ,
137134) -> CompilationArtifacts {
138- let mut base_compile_args = vec ! [ ] ;
139- verify_cairo1_compiler_deps ( git_tag_override) ;
140-
141- let cairo1_compiler_path = local_cairo1_compiler_repo_path ( ) ;
142-
143- // Command args common to both compilation phases.
144- base_compile_args. extend ( vec ! [
145- "run" . into( ) ,
146- format!( "--manifest-path={}/Cargo.toml" , cairo1_compiler_path. to_string_lossy( ) ) ,
147- "--bin" . into( ) ,
148- ] ) ;
149- // Add additional cargo arg if provided. Should be first arg (base command is `cargo`).
150- if let Some ( nightly_version) = cargo_nightly_arg {
151- base_compile_args. insert ( 0 , format ! ( "+nightly-{nightly_version}" ) ) ;
152- }
135+ let ( tag, _cairo_repo_path) = get_tag_and_repo_file_path ( git_tag_override) ;
136+ let version = tag. strip_prefix ( "v" ) . unwrap ( ) . to_string ( ) ;
137+ assert ! ( cairo1_package_exists( & version) ) ;
153138
154- let sierra_output = starknet_compile ( path, & mut base_compile_args ) ;
139+ let sierra_output = starknet_compile ( path, & version ) ;
155140
156141 let mut temp_file = NamedTempFile :: new ( ) . unwrap ( ) ;
157142 temp_file. write_all ( & sierra_output) . unwrap ( ) ;
158143 let temp_path_str = temp_file. into_temp_path ( ) ;
159144
160145 // Sierra -> CASM.
161- let casm_output = starknet_sierra_compile (
162- temp_path_str. to_str ( ) . unwrap ( ) . to_string ( ) ,
163- & mut base_compile_args,
164- ) ;
146+ let casm_output =
147+ starknet_sierra_compile ( temp_path_str. to_str ( ) . unwrap ( ) . to_string ( ) , & version) ;
165148
166149 CompilationArtifacts :: Cairo1 { casm : casm_output, sierra : sierra_output }
167150}
168151
169- /// Compile Cairo1 Contract into their Sierra version using the compiler version set in the
170- /// Cargo.toml
171- pub fn starknet_compile ( path : String , base_compile_args : & mut [ String ] ) -> Vec < u8 > {
172- // Cairo -> Sierra.
173- let mut starknet_compile_commmand = Command :: new ( "cargo" ) ;
174- starknet_compile_commmand. args ( base_compile_args. to_owned ( ) ) ;
175- starknet_compile_commmand. args ( [
176- "starknet-compile" ,
177- "--" ,
178- "--single-file" ,
179- & path,
180- "--allowed-libfuncs-list-name" ,
181- "all" ,
182- ] ) ;
152+ /// Compile Cairo1 Contract into their Sierra version using the given compiler version.
153+ /// Assumes the relevant compiler version is already downloaded.
154+ pub fn starknet_compile ( path : String , version : & String ) -> Vec < u8 > {
155+ let mut starknet_compile_commmand = Command :: new ( starknet_compile_binary_path ( version) ) ;
156+ starknet_compile_commmand. args ( [ "--single-file" , & path, "--allowed-libfuncs-list-name" , "all" ] ) ;
183157 let sierra_output = run_and_verify_output ( & mut starknet_compile_commmand) ;
184158
185159 sierra_output. stdout
186160}
187161
188- /// Compile Sierra code into CASM.
189- fn starknet_sierra_compile ( path : String , base_compile_args : & mut Vec < String > ) -> Vec < u8 > {
190- let mut sierra_compile_command = Command :: new ( "cargo" ) ;
191- sierra_compile_command. args ( base_compile_args) ;
192- sierra_compile_command. args ( [
193- "starknet-sierra-compile" ,
194- & path,
195- "--allowed-libfuncs-list-name" ,
196- "all" ,
197- ] ) ;
162+ /// Compile Sierra code into CASM using the given compiler version.
163+ /// Assumes the relevant compiler version is already downloaded.
164+ fn starknet_sierra_compile ( path : String , version : & String ) -> Vec < u8 > {
165+ let mut sierra_compile_command = Command :: new ( starknet_sierra_compile_binary_path ( version) ) ;
166+ sierra_compile_command. args ( [ & path, "--allowed-libfuncs-list-name" , "all" ] ) ;
198167 let casm_output = run_and_verify_output ( & mut sierra_compile_command) ;
199168 casm_output. stdout
200169}
@@ -247,36 +216,3 @@ fn get_tag_and_repo_file_path(git_tag_override: Option<String>) -> (String, Path
247216
248217 ( tag, cairo_repo_path)
249218}
250-
251- pub fn prepare_group_tag_compiler_deps ( tag_and_toolchain : & TagAndToolchain ) {
252- let ( optional_tag, optional_toolchain) = tag_and_toolchain;
253-
254- // Checkout the required version in the compiler repo.
255- let ( tag, cairo_repo_path) = get_tag_and_repo_file_path ( optional_tag. clone ( ) ) ;
256- run_and_verify_output ( Command :: new ( "git" ) . args ( [
257- "-C" ,
258- cairo_repo_path. to_str ( ) . unwrap ( ) ,
259- "checkout" ,
260- & tag,
261- ] ) ) ;
262-
263- // Install the toolchain, if specified.
264- if let Some ( toolchain) = optional_toolchain {
265- run_and_verify_output (
266- Command :: new ( "rustup" ) . args ( [ "install" , & format ! ( "nightly-{toolchain}" ) ] ) ,
267- ) ;
268- }
269- }
270-
271- fn verify_cairo1_compiler_deps ( git_tag_override : Option < String > ) {
272- let ( tag, cairo_repo_path) = get_tag_and_repo_file_path ( git_tag_override) ;
273-
274- // Verify that the checked out tag is as expected.
275- run_and_verify_output ( Command :: new ( "git" ) . args ( [
276- "-C" ,
277- cairo_repo_path. to_str ( ) . unwrap ( ) ,
278- "rev-parse" ,
279- "--verify" ,
280- & tag,
281- ] ) ) ;
282- }
0 commit comments