From 2cbf5bf40b55e21304d5bc16e3f25bf62b7dce9e Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 1 Jul 2026 20:14:23 +0000 Subject: [PATCH 1/2] Port block-list/pinocchio CLI to solana 3.x Follow-up to the litesvm 0.13.1 / solana 3.x migration: the CLI was still on solana-2.x crates and no longer compiled against the ported block-list-client. - cli/Cargo.toml: bump solana-* 2.2 -> 3.0 (solana-sdk, solana-client, solana-clap-v3-utils, solana-cli-config, solana-logger, solana-remote-wallet) and add solana-commitment-config 3.0; bump spl-token-client 0.13 -> 0.18.0 (the release aligned with spl-token-2022 10.x used by the ported program/ test), spl-tlv-account-resolution 0.8.1 -> 0.11.0, spl-transfer-hook-interface 0.8.2 -> 2.0.0 - cli/src/main.rs: solana-sdk 3.0 dropped the commitment_config re-export, so import CommitmentConfig from solana-commitment-config. No other API or behaviour changes. Verified with `cargo check --manifest-path cli/Cargo.toml` (zero errors). The CLI is not built by CI, so this is validated locally. --- .../block-list/pinocchio/cli/Cargo.toml | 19 ++++++++++--------- .../block-list/pinocchio/cli/src/main.rs | 2 +- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/tokens/token-extensions/transfer-hook/block-list/pinocchio/cli/Cargo.toml b/tokens/token-extensions/transfer-hook/block-list/pinocchio/cli/Cargo.toml index e29193f6..46c44717 100644 --- a/tokens/token-extensions/transfer-hook/block-list/pinocchio/cli/Cargo.toml +++ b/tokens/token-extensions/transfer-hook/block-list/pinocchio/cli/Cargo.toml @@ -6,17 +6,18 @@ edition = "2021" [dependencies] clap = { version = "3", features = ["cargo"] } futures-util = "0.3.31" -solana-clap-v3-utils = "2.2.0" -solana-cli-config = "2.2.0" -solana-client = "2.2.0" -solana-logger = "2.2.0" -solana-remote-wallet = "2.2.0" -solana-sdk = "2.2.0" -spl-token-client = { version = "0.13.0" } +solana-clap-v3-utils = "3.0.0" +solana-cli-config = "3.0.0" +solana-commitment-config = "3.0.0" +solana-client = "3.0.0" +solana-logger = "3.0.0" +solana-remote-wallet = "3.0.0" +solana-sdk = "3.0.0" +spl-token-client = { version = "0.18.0" } tokio = { version = "1", features = ["full"] } block-list-client = { workspace = true } -spl-tlv-account-resolution = "0.8.1" -spl-transfer-hook-interface = { version = "0.8.2" } +spl-tlv-account-resolution = "0.11.0" +spl-transfer-hook-interface = { version = "2.0.0" } diff --git a/tokens/token-extensions/transfer-hook/block-list/pinocchio/cli/src/main.rs b/tokens/token-extensions/transfer-hook/block-list/pinocchio/cli/src/main.rs index 27439973..c72edb00 100644 --- a/tokens/token-extensions/transfer-hook/block-list/pinocchio/cli/src/main.rs +++ b/tokens/token-extensions/transfer-hook/block-list/pinocchio/cli/src/main.rs @@ -11,9 +11,9 @@ use { keypair::signer_from_path, }, solana_client::nonblocking::rpc_client::RpcClient, + solana_commitment_config::CommitmentConfig, solana_remote_wallet::remote_wallet::RemoteWalletManager, solana_sdk::{ - commitment_config::CommitmentConfig, message::Message, pubkey::Pubkey, signature::{Signature, Signer}, From 2505367f8041a728e97aa88fdfe8339da4b5179a Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 2 Jul 2026 14:34:02 +0000 Subject: [PATCH 2/2] ci(pinocchio): build the CLI host binary when a project ships one The block-list/pinocchio project ships a `cli/` host binary that no CI workflow built, so its client-facing code could break (e.g. against a dependency bump) without CI noticing. Build any project's `cli/` explicitly in build_and_test, after the program build/tests. libudev-dev is installed because hidapi (pulled in transitively by solana-remote-wallet) needs libudev at build time and the runner image does not ship the -dev package. The step is guarded on a `cli/` directory existing, so it only runs for projects that have one (currently just block-list). --- .github/workflows/pinocchio.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.github/workflows/pinocchio.yml b/.github/workflows/pinocchio.yml index 450c8a93..5d49ca88 100644 --- a/.github/workflows/pinocchio.yml +++ b/.github/workflows/pinocchio.yml @@ -217,6 +217,21 @@ jobs: fi done + # Build the CLI host binary if the project ships one. It is a + # normal host crate (not an on-chain program), so cargo build-sbf + # and the LiteSVM tests never touch it; build it explicitly so its + # client-facing code cannot silently rot. libudev is a build-time + # dependency of hidapi, pulled in via solana-remote-wallet. + if [ -d "cli" ]; then + sudo apt-get update && sudo apt-get install -y libudev-dev + if ! cargo build --manifest-path=./cli/Cargo.toml; then + echo "::error::cli build failed for $project" + echo "$project: cli build failed with $solana_version" >> $GITHUB_WORKSPACE/failed_projects.txt + cd - > /dev/null + return 1 + fi + fi + echo "Build and tests succeeded for $project with $solana_version version." cd - > /dev/null return 0