From f4f16128f29ec96b98bc192b571c09effae7df76 Mon Sep 17 00:00:00 2001 From: Mario Rugiero Date: Wed, 8 May 2024 16:28:39 -0300 Subject: [PATCH 1/5] deps: use `uv` if present `uv` is a compatible `pip` replacement made in Rust, which runs significantly faster. It saves about 70 seconds on my M3 when installing deps. --- Makefile | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index a1d80ebadc..61d1bc1b7d 100644 --- a/Makefile +++ b/Makefile @@ -12,6 +12,14 @@ ifndef PROPTEST_CASES export PROPTEST_CASES endif +ifeq (, $(shell which uv)) + PIP_CMD=python -m pip + VENV_CMD=python -m venv +else + PIP_CMD=uv pip + VENV_CMD=uv venv +endif + .PHONY: build-cairo-1-compiler build-cairo-1-compiler-macos build-cairo-2-compiler build-cairo-2-compiler-macos \ deps deps-macos cargo-deps build run check test clippy coverage benchmark flamegraph\ compare_benchmarks_deps compare_benchmarks docs clean \ @@ -210,23 +218,23 @@ cairo1-run-deps: deps: create-proof-programs-symlinks cargo-deps build-cairo-1-compiler build-cairo-2-compiler cairo1-run-deps pyenv install -s pypy3.9-7.3.9 - PYENV_VERSION=pypy3.9-7.3.9 python -m venv cairo-vm-pypy-env + PYENV_VERSION=pypy3.9-7.3.9 $(VENV_CMD) cairo-vm-pypy-env . cairo-vm-pypy-env/bin/activate ; \ - pip install -r requirements.txt ; \ + $(PIP_CMD) install -r requirements.txt ; \ pyenv install -s 3.9.15 - PYENV_VERSION=3.9.15 python -m venv cairo-vm-env + PYENV_VERSION=3.9.15 $(VENV_CMD) cairo-vm-env . cairo-vm-env/bin/activate ; \ - pip install -r requirements.txt ; \ + $(PIP_CMD) install -r requirements.txt ; \ deps-macos: create-proof-programs-symlinks cargo-deps build-cairo-1-compiler-macos build-cairo-2-compiler-macos cairo1-run-deps arch -x86_64 pyenv install -s pypy3.9-7.3.9 - PYENV_VERSION=pypy3.9-7.3.9 python -m venv cairo-vm-pypy-env + PYENV_VERSION=pypy3.9-7.3.9 $(VENV_CMD) cairo-vm-pypy-env . cairo-vm-pypy-env/bin/activate ; \ - CFLAGS=-I/opt/homebrew/opt/gmp/include LDFLAGS=-L/opt/homebrew/opt/gmp/lib pip install -r requirements.txt ; \ + CFLAGS=-I/opt/homebrew/opt/gmp/include LDFLAGS=-L/opt/homebrew/opt/gmp/lib $(PIP_CMD) install -r requirements.txt ; \ pyenv install -s 3.9.15 - PYENV_VERSION=3.9.15 python -m venv cairo-vm-env + PYENV_VERSION=3.9.15 $(VENV_CMD) cairo-vm-env . cairo-vm-env/bin/activate ; \ - CFLAGS=-I/opt/homebrew/opt/gmp/include LDFLAGS=-L/opt/homebrew/opt/gmp/lib pip install -r requirements.txt ; \ + CFLAGS=-I/opt/homebrew/opt/gmp/include LDFLAGS=-L/opt/homebrew/opt/gmp/lib $(PIP_CMD) install -r requirements.txt ; \ $(RELBIN): cargo build --release @@ -366,7 +374,7 @@ clean: fuzzer-deps: build cargo +nightly install cargo-fuzz . cairo-vm-env/bin/activate; \ - pip install atheris==2.2.2 maturin==1.2.3; \ + $(PIP_CMD) install atheris==2.2.2 maturin==1.2.3; \ cd fuzzer/; \ maturin develop From b25d2bce7df1cd50ea8d181c320b5a0d86821ae9 Mon Sep 17 00:00:00 2001 From: Mario Rugiero Date: Wed, 8 May 2024 16:58:34 -0300 Subject: [PATCH 2/5] deps: add uv dep --- Makefile | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 61d1bc1b7d..0f7a535001 100644 --- a/Makefile +++ b/Makefile @@ -204,6 +204,9 @@ build-cairo-2-compiler: && mv cairo/ cairo2/; \ fi +uv-program: + curl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/uv/releases/download/0.1.41/uv-installer.sh | sh + cargo-deps: cargo install --version 0.3.1 iai-callgrind-runner cargo install --version 1.1.0 cargo-criterion @@ -216,7 +219,7 @@ cargo-deps: cairo1-run-deps: cd cairo1-run; make deps -deps: create-proof-programs-symlinks cargo-deps build-cairo-1-compiler build-cairo-2-compiler cairo1-run-deps +deps: uv-program create-proof-programs-symlinks cargo-deps build-cairo-1-compiler build-cairo-2-compiler cairo1-run-deps pyenv install -s pypy3.9-7.3.9 PYENV_VERSION=pypy3.9-7.3.9 $(VENV_CMD) cairo-vm-pypy-env . cairo-vm-pypy-env/bin/activate ; \ @@ -226,7 +229,7 @@ deps: create-proof-programs-symlinks cargo-deps build-cairo-1-compiler build-cai . cairo-vm-env/bin/activate ; \ $(PIP_CMD) install -r requirements.txt ; \ -deps-macos: create-proof-programs-symlinks cargo-deps build-cairo-1-compiler-macos build-cairo-2-compiler-macos cairo1-run-deps +deps-macos: uv-program create-proof-programs-symlinks cargo-deps build-cairo-1-compiler-macos build-cairo-2-compiler-macos cairo1-run-deps arch -x86_64 pyenv install -s pypy3.9-7.3.9 PYENV_VERSION=pypy3.9-7.3.9 $(VENV_CMD) cairo-vm-pypy-env . cairo-vm-pypy-env/bin/activate ; \ From 980f85f53678c374d309310a74428c7fe80855a0 Mon Sep 17 00:00:00 2001 From: Mario Rugiero Date: Wed, 8 May 2024 17:17:01 -0300 Subject: [PATCH 3/5] Add cargo path --- Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile b/Makefile index 0f7a535001..e66d769fa4 100644 --- a/Makefile +++ b/Makefile @@ -7,6 +7,8 @@ STARKNET_SIERRA_COMPILE_CAIRO_1:=cairo1/bin/starknet-sierra-compile STARKNET_COMPILE_CAIRO_2:=cairo2/bin/starknet-compile STARKNET_SIERRA_COMPILE_CAIRO_2:=cairo2/bin/starknet-sierra-compile +export PATH:=$(PATH):$(HOME)/.cargo/bin + ifndef PROPTEST_CASES PROPTEST_CASES:=10 export PROPTEST_CASES From c914b643e873c2e57050a57b29cc64568ee3378e Mon Sep 17 00:00:00 2001 From: Mario Rugiero Date: Wed, 8 May 2024 17:21:47 -0300 Subject: [PATCH 4/5] Install uv in scripts --- Makefile | 4 ++-- install-scripts/install-debian.sh | 1 + install-scripts/install-macos.sh | 1 + install-scripts/install-ubuntu.sh | 1 + 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index e66d769fa4..dea5c4c094 100644 --- a/Makefile +++ b/Makefile @@ -221,7 +221,7 @@ cargo-deps: cairo1-run-deps: cd cairo1-run; make deps -deps: uv-program create-proof-programs-symlinks cargo-deps build-cairo-1-compiler build-cairo-2-compiler cairo1-run-deps +deps: create-proof-programs-symlinks cargo-deps build-cairo-1-compiler build-cairo-2-compiler cairo1-run-deps pyenv install -s pypy3.9-7.3.9 PYENV_VERSION=pypy3.9-7.3.9 $(VENV_CMD) cairo-vm-pypy-env . cairo-vm-pypy-env/bin/activate ; \ @@ -231,7 +231,7 @@ deps: uv-program create-proof-programs-symlinks cargo-deps build-cairo-1-compile . cairo-vm-env/bin/activate ; \ $(PIP_CMD) install -r requirements.txt ; \ -deps-macos: uv-program create-proof-programs-symlinks cargo-deps build-cairo-1-compiler-macos build-cairo-2-compiler-macos cairo1-run-deps +deps-macos: create-proof-programs-symlinks cargo-deps build-cairo-1-compiler-macos build-cairo-2-compiler-macos cairo1-run-deps arch -x86_64 pyenv install -s pypy3.9-7.3.9 PYENV_VERSION=pypy3.9-7.3.9 $(VENV_CMD) cairo-vm-pypy-env . cairo-vm-pypy-env/bin/activate ; \ diff --git a/install-scripts/install-debian.sh b/install-scripts/install-debian.sh index 9d42d88fb1..d07c369f94 100755 --- a/install-scripts/install-debian.sh +++ b/install-scripts/install-debian.sh @@ -30,6 +30,7 @@ eval "$(pyenv init -)" # Make sure pyenv has been installed correctly pyenv -v +make uv-program make deps pyenv local 3.9.15 diff --git a/install-scripts/install-macos.sh b/install-scripts/install-macos.sh index c42d7c7307..ddc84d9f95 100755 --- a/install-scripts/install-macos.sh +++ b/install-scripts/install-macos.sh @@ -14,6 +14,7 @@ brew install pyenv gmp # Make sure pyenv has been installed correctly pyenv -v +make uv-program make deps-macos pyenv local 3.9.15 diff --git a/install-scripts/install-ubuntu.sh b/install-scripts/install-ubuntu.sh index 9db1fe2b53..6e0c966b73 100755 --- a/install-scripts/install-ubuntu.sh +++ b/install-scripts/install-ubuntu.sh @@ -27,6 +27,7 @@ eval "$(pyenv init -)" # Make sure pyenv has been installed correctly pyenv -v +make uv-program make deps pyenv local 3.9.15 From 3a9112376ce1f80956bdf579ed64cae85f4fbe19 Mon Sep 17 00:00:00 2001 From: Mario Rugiero Date: Wed, 8 May 2024 17:23:39 -0300 Subject: [PATCH 5/5] Don't touch the system packages --- install-scripts/install-debian.sh | 4 ---- install-scripts/install-macos.sh | 4 ---- install-scripts/install-ubuntu.sh | 4 ---- 3 files changed, 12 deletions(-) diff --git a/install-scripts/install-debian.sh b/install-scripts/install-debian.sh index d07c369f94..9e0a96f982 100755 --- a/install-scripts/install-debian.sh +++ b/install-scripts/install-debian.sh @@ -33,9 +33,5 @@ pyenv -v make uv-program make deps -pyenv local 3.9.15 - -pip install -r requirements.txt - echo "-- You need to follow these instructions to finish installing pyenv: --" pyenv init || true diff --git a/install-scripts/install-macos.sh b/install-scripts/install-macos.sh index ddc84d9f95..89d9c01faf 100755 --- a/install-scripts/install-macos.sh +++ b/install-scripts/install-macos.sh @@ -17,9 +17,5 @@ pyenv -v make uv-program make deps-macos -pyenv local 3.9.15 - -pip install -r requirements.txt - echo "-- You need to follow these instructions to finish installing pyenv: --" pyenv init || true diff --git a/install-scripts/install-ubuntu.sh b/install-scripts/install-ubuntu.sh index 6e0c966b73..9436a8af11 100755 --- a/install-scripts/install-ubuntu.sh +++ b/install-scripts/install-ubuntu.sh @@ -30,9 +30,5 @@ pyenv -v make uv-program make deps -pyenv local 3.9.15 - -pip install -r requirements.txt - echo "-- You need to follow these instructions to finish installing pyenv: --" pyenv init || true