@@ -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,65 +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- verify_cairo1_compiler_deps ( git_tag_override) ;
139-
140- let cairo1_compiler_path = local_cairo1_compiler_repo_path ( ) ;
141-
142- // Command args common to both compilation phases.
143- let mut base_compile_args = vec ! [
144- "run" . into( ) ,
145- format!( "--manifest-path={}/Cargo.toml" , cairo1_compiler_path. to_string_lossy( ) ) ,
146- "--bin" . into( ) ,
147- ] ;
148- // Add additional cargo arg if provided. Should be first arg (base command is `cargo`).
149- if let Some ( nightly_version) = cargo_nightly_arg {
150- base_compile_args. insert ( 0 , format ! ( "+nightly-{nightly_version}" ) ) ;
151- }
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) ) ;
152138
153- let sierra_output = starknet_compile ( path, & base_compile_args ) ;
139+ let sierra_output = starknet_compile ( path, & version ) ;
154140
155141 let mut temp_file = NamedTempFile :: new ( ) . unwrap ( ) ;
156142 temp_file. write_all ( & sierra_output) . unwrap ( ) ;
157143 let temp_path_str = temp_file. into_temp_path ( ) ;
158144
159145 // Sierra -> CASM.
160146 let casm_output =
161- starknet_sierra_compile ( temp_path_str. to_str ( ) . unwrap ( ) . to_string ( ) , & base_compile_args ) ;
147+ starknet_sierra_compile ( temp_path_str. to_str ( ) . unwrap ( ) . to_string ( ) , & version ) ;
162148
163149 CompilationArtifacts :: Cairo1 { casm : casm_output, sierra : sierra_output }
164150}
165151
166- /// Compiles Cairo1 Contract into their Sierra version using the compiler version set in the
167- /// Cargo.toml
168- pub fn starknet_compile ( path : String , base_compile_args : & [ String ] ) -> Vec < u8 > {
169- // Cairo -> Sierra.
170- let mut starknet_compile_commmand = Command :: new ( "cargo" ) ;
171- starknet_compile_commmand. args ( base_compile_args. to_owned ( ) ) ;
172- starknet_compile_commmand. args ( [
173- "starknet-compile" ,
174- "--" ,
175- "--single-file" ,
176- & path,
177- "--allowed-libfuncs-list-name" ,
178- "all" ,
179- ] ) ;
152+ /// Compiles 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" ] ) ;
180157 let sierra_output = run_and_verify_output ( & mut starknet_compile_commmand) ;
181158
182159 sierra_output. stdout
183160}
184161
185- /// Compiles Sierra code into CASM.
186- fn starknet_sierra_compile ( path : String , base_compile_args : & [ String ] ) -> Vec < u8 > {
187- let mut sierra_compile_command = Command :: new ( "cargo" ) ;
188- sierra_compile_command. args ( base_compile_args) ;
189- sierra_compile_command. args ( [
190- "starknet-sierra-compile" ,
191- & path,
192- "--allowed-libfuncs-list-name" ,
193- "all" ,
194- ] ) ;
162+ /// Compiles 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" ] ) ;
195167 let casm_output = run_and_verify_output ( & mut sierra_compile_command) ;
196168 casm_output. stdout
197169}
@@ -244,36 +216,3 @@ fn get_tag_and_repo_file_path(git_tag_override: Option<String>) -> (String, Path
244216
245217 ( tag, cairo_repo_path)
246218}
247-
248- pub fn prepare_group_tag_compiler_deps ( tag_and_toolchain : & TagAndToolchain ) {
249- let ( optional_tag, optional_toolchain) = tag_and_toolchain;
250-
251- // Checkout the required version in the compiler repo.
252- let ( tag, cairo_repo_path) = get_tag_and_repo_file_path ( optional_tag. clone ( ) ) ;
253- run_and_verify_output ( Command :: new ( "git" ) . args ( [
254- "-C" ,
255- cairo_repo_path. to_str ( ) . unwrap ( ) ,
256- "checkout" ,
257- & tag,
258- ] ) ) ;
259-
260- // Install the toolchain, if specified.
261- if let Some ( toolchain) = optional_toolchain {
262- run_and_verify_output (
263- Command :: new ( "rustup" ) . args ( [ "install" , & format ! ( "nightly-{toolchain}" ) ] ) ,
264- ) ;
265- }
266- }
267-
268- fn verify_cairo1_compiler_deps ( git_tag_override : Option < String > ) {
269- let ( tag, cairo_repo_path) = get_tag_and_repo_file_path ( git_tag_override) ;
270-
271- // Verify that the checked out tag is as expected.
272- run_and_verify_output ( Command :: new ( "git" ) . args ( [
273- "-C" ,
274- cairo_repo_path. to_str ( ) . unwrap ( ) ,
275- "rev-parse" ,
276- "--verify" ,
277- & tag,
278- ] ) ) ;
279- }
0 commit comments