From a3e7f18eeb8f2814451183c19334c3aa29711203 Mon Sep 17 00:00:00 2001 From: Reinis Martinsons Date: Thu, 17 Apr 2025 11:21:19 +0000 Subject: [PATCH 1/4] fix(svm): pin rust toolchain for solana Signed-off-by: Reinis Martinsons --- .github/workflows/pr.yml | 6 +++--- package.json | 7 ++++--- scripts/anchor-build.sh | 16 ++++++++++++++++ scripts/anchor-test.sh | 19 +++++++++++++++++++ 4 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 scripts/anchor-build.sh create mode 100644 scripts/anchor-test.sh diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 3b85c6d59..3b93ab3c0 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -28,11 +28,11 @@ jobs: - name: Install Cargo toolchain uses: actions-rs/toolchain@v1 with: - toolchain: nightly + toolchain: nightly-2025-04-01 profile: minimal components: rustc - name: Install packages - run: yarn install --frozen-lockfile && rustup component add --toolchain nightly-x86_64-unknown-linux-gnu rustfmt + run: yarn install --frozen-lockfile && rustup component add --toolchain nightly-2025-04-01-x86_64-unknown-linux-gnu rustfmt - name: Lint js shell: bash run: yarn lint-js @@ -69,7 +69,7 @@ jobs: - name: Install Cargo toolchain uses: actions-rs/toolchain@v1 with: - toolchain: stable + toolchain: nightly-2025-04-01 profile: minimal components: rustc - name: Cache Cargo dependencies diff --git a/package.json b/package.json index 0109d9c83..63e520d5d 100644 --- a/package.json +++ b/package.json @@ -29,17 +29,18 @@ "generate-svm-assets": "sh ./scripts/generate-svm-assets.sh && yarn generate-svm-clients", "generate-svm-clients": "yarn ts-node ./scripts/svm/utils/generate-svm-clients.ts && yarn ts-node ./scripts/svm/utils/rename-clients-imports.ts", "build-evm": "hardhat compile", - "build-svm": "echo 'Generating IDLs...' && anchor build > /dev/null 2>&1 || true && anchor run generateExternalTypes && anchor build", + "build-svm": "echo 'Generating IDLs...' && yarn anchor-build > /dev/null 2>&1 || true && anchor run generateExternalTypes && yarn anchor-build", "build-ts": "rm -rf ./dist && tsc && rsync -a --include '*/' --include '*.d.ts' --exclude '*' ./typechain ./dist/", "copy-idl": "mkdir -p dist/src/svm/assets/idl && cp src/svm/assets/idl/*.json dist/src/svm/assets/idl/", "build": "yarn build-evm && yarn build-svm && yarn generate-svm-assets && yarn build-ts && yarn copy-idl", "test-evm": "IS_TEST=true hardhat test", - "test-svm": "anchor test -- --features test", + "test-svm": "sh ./scripts/anchor-test.sh", "test": "yarn test-evm && yarn test-svm", "test:report-gas": "IS_TEST=true REPORT_GAS=true hardhat test", "generate-evm-assets": "rm -rf typechain && TYPECHAIN=ethers yarn hardhat typechain", "prepublish": "yarn build && hardhat export --export-all ./cache/massExport.json && ts-node ./scripts/processHardhatExport.ts && prettier --write ./deployments/deployments.json && yarn generate-evm-assets", - "pre-commit-hook": "sh scripts/preCommitHook.sh" + "pre-commit-hook": "sh scripts/preCommitHook.sh", + "anchor-build": "sh ./scripts/anchor-build.sh" }, "dependencies": { "@across-protocol/constants": "^3.1.46", diff --git a/scripts/anchor-build.sh b/scripts/anchor-build.sh new file mode 100644 index 000000000..73752644c --- /dev/null +++ b/scripts/anchor-build.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +echo "๐Ÿ”จ Building anchor programs (no IDL)..." +anchor build --no-idl + +echo "๐Ÿ“ฆ Generating IDLs (using nightly)..." + +for program in programs/*; do + [ -d "$program" ] || continue + + dir_name=$(basename "$program") + program_name=$(echo "$dir_name" | tr '-' '_') + + echo "โ†’ IDL for $program_name" + RUSTUP_TOOLCHAIN="nightly-2025-04-01" anchor idl build -p "$dir_name" -o "target/idl/$program_name.json" -t "target/types/$program_name.ts" +done diff --git a/scripts/anchor-test.sh b/scripts/anchor-test.sh new file mode 100644 index 000000000..a5f121bfa --- /dev/null +++ b/scripts/anchor-test.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +echo "๐Ÿ”จ Building anchor programs (with test feature, no IDL)..." +anchor build --no-idl -- --features test + +echo "๐Ÿ“ฆ Generating IDLs (using nightly)..." + +for program in programs/*; do + [ -d "$program" ] || continue + + dir_name=$(basename "$program") + program_name=$(echo "$dir_name" | tr '-' '_') + + echo "โ†’ IDL for $program_name" + RUSTUP_TOOLCHAIN="nightly-2025-04-01" anchor idl build -p "$dir_name" -o "target/idl/$program_name.json" -t "target/types/$program_name.ts" +done + +echo "๐Ÿงช Running anchor tests..." +anchor test --skip-build From 6d65bb684057f26e8d7e9c0baf1a3fc0ab19b027 Mon Sep 17 00:00:00 2001 From: Reinis Martinsons Date: Thu, 17 Apr 2025 11:23:10 +0000 Subject: [PATCH 2/4] fix: add local toolchain Signed-off-by: Reinis Martinsons --- rust-toolchain.toml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 rust-toolchain.toml diff --git a/rust-toolchain.toml b/rust-toolchain.toml new file mode 100644 index 000000000..e5cd56d0f --- /dev/null +++ b/rust-toolchain.toml @@ -0,0 +1,2 @@ +[toolchain] +channel = "nightly-2025-04-01" From 42cab65aa8dc107d9bd83fa68d4117f90d6823c3 Mon Sep 17 00:00:00 2001 From: Reinis Martinsons Date: Thu, 17 Apr 2025 11:38:41 +0000 Subject: [PATCH 3/4] fix: add rustfmt to nightly Signed-off-by: Reinis Martinsons --- .github/workflows/pr.yml | 2 +- rust-toolchain.toml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 3b93ab3c0..36a473c0c 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -30,7 +30,7 @@ jobs: with: toolchain: nightly-2025-04-01 profile: minimal - components: rustc + components: rustc, rustfmt - name: Install packages run: yarn install --frozen-lockfile && rustup component add --toolchain nightly-2025-04-01-x86_64-unknown-linux-gnu rustfmt - name: Lint js diff --git a/rust-toolchain.toml b/rust-toolchain.toml index e5cd56d0f..d228cf8d6 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,2 +1,3 @@ [toolchain] channel = "nightly-2025-04-01" +components = ["rustfmt"] From fe2b861aaff4db8803e4d9bcb013f9be7183c6c7 Mon Sep 17 00:00:00 2001 From: Reinis Martinsons Date: Thu, 17 Apr 2025 11:58:56 +0000 Subject: [PATCH 4/4] fix: pin nightly in lint scripts Signed-off-by: Reinis Martinsons --- .github/workflows/pr.yml | 2 +- package.json | 4 ++-- rust-toolchain.toml | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index 36a473c0c..3b93ab3c0 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -30,7 +30,7 @@ jobs: with: toolchain: nightly-2025-04-01 profile: minimal - components: rustc, rustfmt + components: rustc - name: Install packages run: yarn install --frozen-lockfile && rustup component add --toolchain nightly-2025-04-01-x86_64-unknown-linux-gnu rustfmt - name: Lint js diff --git a/package.json b/package.json index 63e520d5d..920b1db30 100644 --- a/package.json +++ b/package.json @@ -22,8 +22,8 @@ "lint": "yarn lint-solidity && yarn lint-js && yarn lint-rust", "lint-solidity": "yarn solhint ./contracts/**/*.sol", "lint-js": "yarn prettier --list-different **/*.js **/*.ts", - "lint-rust": "cargo +nightly fmt --all -- --check && cargo clippy", - "lint-fix": "yarn prettier --write **/*.js **/*.ts ./programs/**/*.rs ./contracts**/*.sol && cargo +nightly fmt --all && cargo clippy", + "lint-rust": "cargo +nightly-2025-04-01 fmt --all -- --check && cargo clippy", + "lint-fix": "yarn prettier --write **/*.js **/*.ts ./programs/**/*.rs ./contracts**/*.sol && cargo +nightly-2025-04-01 fmt --all && cargo clippy", "clean-fast": "for dir in node_modules cache cache-zk artifacts artifacts-zk dist typechain; do mv \"${dir}\" \"_${dir}\"; rm -rf \"_${dir}\" &; done", "clean": "rm -rf node_modules cache cache-zk artifacts artifacts-zk dist typechain", "generate-svm-assets": "sh ./scripts/generate-svm-assets.sh && yarn generate-svm-clients", diff --git a/rust-toolchain.toml b/rust-toolchain.toml index d228cf8d6..e5cd56d0f 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,2 @@ [toolchain] channel = "nightly-2025-04-01" -components = ["rustfmt"]