Skip to content

xtask: crate publish test#9334

Merged
yihau merged 7 commits intoanza-xyz:masterfrom
yihau:crate-publish-test
Jan 10, 2026
Merged

xtask: crate publish test#9334
yihau merged 7 commits intoanza-xyz:masterfrom
yihau:crate-publish-test

Conversation

@yihau
Copy link
Copy Markdown
Member

@yihau yihau commented Dec 1, 2025

Problem

We don't have a robust verification process to confirm crates publish

Summary of Changes

Followed the idea from #6550 and introduced some new commands:

  • cargo xtask publish order --format json
output
[
  [
    {
      "name": "solana-account-decoder-client-types",
      "path": "/home/sol/agave/account-decoder-client-types",
      "dependencies": []
    },
    {
      "name": "solana-bloom",
      "path": "/home/sol/agave/bloom",
      "dependencies": []
    },
    {
      "name": "solana-curve25519",
      "path": "/home/sol/agave/curves/curve25519",
      "dependencies": []
    },
... (omit)
]
  • cargo xtask publish order --format tree
output
📦 Total packages: 118
🌳 Total levels: 21

L1: (26 package(s))
  solana-account-decoder-client-types
  solana-bloom
  solana-curve25519
  agave-io-uring
  solana-lattice-hash
  agave-logger
  solana-measure
  solana-merkle-tree
  solana-metrics
  solana-notifier
  solana-poseidon
  solana-program-binaries
  agave-random
  solana-rayon-threadlimit
  solana-remote-wallet
  agave-scheduler-bindings
  solana-svm-callback
  solana-svm-feature-set
  solana-svm-log-collector
  solana-svm-measure
  solana-svm-timings
  solana-svm-transaction
  solana-svm-type-overrides
  solana-tls-utils
  solana-transaction-context
  agave-xdp-ebpf

L2: (16 package(s))
  solana-account-decoder
    L1: ["solana-account-decoder-client-types"]
  solana-banks-interface
    L1: ["solana-transaction-context"]
  solana-bucket-map
    L1: ["agave-logger", "solana-measure"]
  solana-clap-utils
    L1: ["solana-remote-wallet"]
  solana-clap-v3-utils
    L1: ["solana-remote-wallet"]
  agave-feature-set
    L1: ["solana-svm-feature-set"]
  agave-fs
    L1: ["agave-io-uring"]
  solana-net-utils
    L1: ["agave-logger", "solana-svm-type-overrides"]
  solana-program-runtime
    L1: ["solana-svm-measure", "solana-svm-transaction", "solana-svm-timings", "solana-svm-feature-set", "solana-svm-type-overrides", "solana-svm-callback", "solana-svm-log-collector", "solana-transaction-context"]
  agave-thread-manager
    L1: ["solana-metrics"]
  solana-transaction-status-client-types
    L1: ["solana-account-decoder-client-types", "solana-transaction-context"]
  agave-transaction-view
    L1: ["solana-svm-transaction", "solana-transaction-context"]
  solana-vote
    L1: ["agave-logger", "solana-svm-transaction"]
  agave-votor-messages
    L1: ["agave-logger"]
  agave-xdp
    L1: ["agave-xdp-ebpf"]
  solana-zk-token-sdk
    L1: ["solana-curve25519"]

L3: (13 package(s))
  solana-cli-config
    L2: ["solana-clap-utils"]
  solana-compute-budget
    L2: ["solana-program-runtime"]
  solana-connection-cache
    L1: ["agave-logger", "solana-measure", "solana-metrics"]
    L2: ["solana-net-utils"]
  solana-fee
    L1: ["solana-svm-transaction"]
    L2: ["agave-feature-set"]
  agave-precompiles
    L1: ["agave-logger"]
    L2: ["agave-feature-set"]
  solana-compute-budget-program
    L2: ["solana-program-runtime"]
  solana-vote-program
    L1: ["agave-logger", "solana-transaction-context", "solana-svm-feature-set"]
    L2: ["agave-feature-set", "solana-program-runtime"]
  solana-zk-elgamal-proof-program
    L1: ["solana-svm-log-collector"]
    L2: ["agave-feature-set", "solana-program-runtime"]
  solana-zk-token-proof-program
    L1: ["solana-svm-log-collector"]
    L2: ["agave-feature-set", "solana-zk-token-sdk", "solana-program-runtime"]
  agave-reserved-account-keys
    L2: ["agave-feature-set"]
  agave-scheduling-utils
    L1: ["agave-scheduler-bindings"]
    L2: ["agave-transaction-view"]
  agave-syscalls
    L1: ["solana-svm-type-overrides", "solana-curve25519", "solana-transaction-context", "solana-svm-timings", "solana-svm-measure", "solana-svm-feature-set", "solana-poseidon", "solana-svm-callback", "solana-svm-log-collector"]
    L2: ["solana-program-runtime"]
  solana-version
    L2: ["agave-feature-set"]

L4: (6 package(s))
  solana-keygen
    L1: ["solana-remote-wallet"]
    L2: ["agave-votor-messages", "solana-clap-v3-utils"]
    L3: ["solana-version", "solana-cli-config"]
  solana-perf
    L1: ["solana-metrics", "solana-rayon-threadlimit", "agave-logger", "solana-transaction-context"]
    L2: ["solana-vote"]
    L3: ["solana-vote-program"]
  solana-bpf-loader-program
    L1: ["solana-svm-type-overrides", "solana-svm-callback", "solana-svm-feature-set", "solana-transaction-context", "solana-svm-measure", "solana-svm-log-collector"]
    L2: ["solana-program-runtime"]
    L3: ["agave-syscalls"]
  solana-system-program
    L1: ["solana-transaction-context", "solana-svm-callback", "solana-svm-feature-set", "solana-svm-type-overrides", "solana-svm-log-collector"]
    L2: ["agave-feature-set", "solana-program-runtime"]
    L3: ["solana-compute-budget"]
  solana-rpc-client-types
    L1: ["solana-account-decoder-client-types"]
    L2: ["solana-transaction-status-client-types"]
    L3: ["solana-version"]
  solana-transaction-status
    L2: ["solana-account-decoder", "solana-transaction-status-client-types"]
    L3: ["agave-reserved-account-keys"]

L5: (7 package(s))
  agave-banking-stage-ingress-types
    L4: ["solana-perf"]
  agave-geyser-plugin-interface
    L4: ["solana-transaction-status"]
  solana-loader-v4-program
    L1: ["solana-svm-log-collector", "solana-svm-measure", "solana-svm-type-overrides", "solana-transaction-context"]
    L2: ["solana-program-runtime"]
    L4: ["solana-bpf-loader-program"]
  solana-pubsub-client
    L1: ["solana-account-decoder-client-types"]
    L4: ["solana-rpc-client-types"]
  solana-rpc-client-api
    L1: ["solana-account-decoder-client-types"]
    L2: ["solana-transaction-status-client-types"]
    L4: ["solana-rpc-client-types"]
  solana-storage-proto
    L1: ["solana-transaction-context"]
    L2: ["solana-account-decoder"]
    L4: ["solana-transaction-status"]
  solana-transaction-metrics-tracker
    L4: ["solana-perf"]

L6: (7 package(s))
  solana-builtins
    L2: ["solana-program-runtime", "agave-feature-set"]
    L3: ["solana-compute-budget-program", "solana-vote-program", "solana-zk-elgamal-proof-program", "solana-zk-token-proof-program"]
    L4: ["solana-system-program", "solana-bpf-loader-program"]
    L5: ["solana-loader-v4-program"]
  solana-builtins-default-costs
    L2: ["agave-feature-set"]
    L3: ["solana-vote-program", "solana-compute-budget-program"]
    L4: ["solana-system-program", "solana-bpf-loader-program"]
    L5: ["solana-loader-v4-program"]
  solana-cli-output
    L1: ["solana-transaction-context"]
    L2: ["solana-account-decoder", "solana-clap-utils", "solana-transaction-status-client-types"]
    L3: ["solana-cli-config", "solana-vote-program", "agave-reserved-account-keys"]
    L4: ["solana-transaction-status"]
    L5: ["solana-rpc-client-api"]
  solana-rpc-client
    L1: ["solana-account-decoder-client-types"]
    L2: ["solana-account-decoder", "solana-transaction-status-client-types"]
    L3: ["solana-version"]
    L5: ["solana-rpc-client-api"]
  solana-storage-bigtable
    L1: ["solana-metrics", "solana-transaction-context"]
    L3: ["agave-reserved-account-keys"]
    L4: ["solana-transaction-status"]
    L5: ["solana-storage-proto"]
  solana-streamer
    L1: ["agave-logger", "solana-measure", "solana-metrics", "solana-tls-utils"]
    L2: ["solana-net-utils"]
    L4: ["solana-perf"]
    L5: ["solana-transaction-metrics-tracker"]
  solana-svm
    L1: ["agave-logger", "solana-svm-measure", "solana-program-binaries", "solana-svm-log-collector", "solana-svm-callback", "solana-transaction-context", "solana-svm-transaction", "solana-svm-feature-set", "solana-svm-type-overrides", "solana-svm-timings"]
    L2: ["solana-program-runtime"]
    L3: ["agave-syscalls", "solana-compute-budget-program", "solana-compute-budget"]
    L4: ["solana-bpf-loader-program", "solana-system-program"]
    L5: ["solana-loader-v4-program"]

L7: (11 package(s))
  solana-accounts-db
    L1: ["solana-measure", "solana-svm-transaction", "solana-transaction-context", "agave-logger", "solana-lattice-hash", "solana-metrics", "solana-rayon-threadlimit"]
    L2: ["agave-fs", "solana-bucket-map"]
    L3: ["solana-vote-program", "agave-reserved-account-keys", "solana-compute-budget"]
    L6: ["solana-svm"]
  solana-compute-budget-instruction
    L1: ["solana-svm-transaction"]
    L2: ["agave-feature-set"]
    L3: ["solana-compute-budget"]
    L6: ["solana-builtins-default-costs"]
  solana-faucet
    L1: ["solana-metrics", "agave-logger"]
    L2: ["solana-clap-utils", "solana-net-utils"]
    L3: ["solana-cli-config", "solana-version"]
    L6: ["solana-cli-output"]
  agave-install
    L1: ["agave-logger"]
    L2: ["solana-clap-utils"]
    L3: ["solana-version"]
    L6: ["solana-rpc-client"]
  solana-quic-client
    L1: ["solana-tls-utils", "solana-measure", "solana-metrics", "agave-logger"]
    L2: ["solana-net-utils"]
    L3: ["solana-connection-cache"]
    L4: ["solana-perf"]
    L5: ["solana-rpc-client-api"]
    L6: ["solana-streamer"]
  solana-rpc-client-nonce-utils
    L2: ["solana-account-decoder", "solana-clap-utils"]
    L5: ["solana-rpc-client-api"]
    L6: ["solana-rpc-client"]
  solana-tpu-client
    L1: ["solana-measure"]
    L2: ["solana-net-utils"]
    L3: ["solana-connection-cache"]
    L5: ["solana-pubsub-client", "solana-rpc-client-api"]
    L6: ["solana-rpc-client"]
  solana-tpu-client-next
    L1: ["solana-measure", "solana-tls-utils", "solana-metrics"]
    L2: ["solana-net-utils"]
    L3: ["solana-cli-config"]
    L5: ["solana-pubsub-client", "solana-rpc-client-api"]
    L6: ["solana-rpc-client", "solana-streamer"]
  solana-udp-client
    L2: ["solana-net-utils"]
    L3: ["solana-connection-cache"]
    L6: ["solana-streamer"]
  agave-verified-packet-receiver
    L4: ["solana-perf"]
    L6: ["solana-streamer"]
  agave-watchtower
    L1: ["agave-logger", "solana-metrics", "solana-notifier"]
    L2: ["solana-clap-utils"]
    L3: ["solana-cli-config", "solana-version"]
    L5: ["solana-rpc-client-api"]
    L6: ["solana-cli-output", "solana-rpc-client"]

L8: (3 package(s))
  solana-client
    L1: ["solana-measure"]
    L2: ["solana-transaction-status-client-types", "solana-net-utils"]
    L3: ["solana-connection-cache"]
    L5: ["solana-rpc-client-api", "solana-pubsub-client"]
    L6: ["solana-rpc-client", "solana-streamer"]
    L7: ["solana-quic-client", "solana-udp-client", "solana-rpc-client-nonce-utils", "solana-tpu-client"]
  solana-runtime-transaction
    L1: ["solana-transaction-context", "solana-svm-transaction"]
    L2: ["agave-feature-set", "agave-transaction-view"]
    L3: ["solana-compute-budget", "agave-reserved-account-keys"]
    L7: ["solana-compute-budget-instruction"]
  agave-snapshots
    L1: ["solana-lattice-hash", "solana-metrics", "agave-logger", "solana-measure"]
    L2: ["agave-fs"]
    L7: ["solana-accounts-db"]

L9: (3 package(s))
  solana-cost-model
    L1: ["solana-svm-transaction", "solana-metrics", "agave-logger"]
    L2: ["solana-vote", "agave-feature-set"]
    L3: ["solana-vote-program", "solana-compute-budget", "agave-reserved-account-keys", "solana-compute-budget-program"]
    L4: ["solana-system-program"]
    L6: ["solana-builtins-default-costs"]
    L7: ["solana-compute-budget-instruction"]
    L8: ["solana-runtime-transaction"]
  solana-entry
    L1: ["agave-logger", "solana-measure", "solana-metrics", "solana-merkle-tree"]
    L3: ["agave-reserved-account-keys"]
    L4: ["solana-perf"]
    L8: ["solana-runtime-transaction"]
  solana-unified-scheduler-logic
    L8: ["solana-runtime-transaction"]

L10: (1 package(s))
  solana-runtime
    L1: ["solana-svm-callback", "solana-svm-timings", "solana-metrics", "solana-measure", "solana-lattice-hash", "solana-transaction-context", "agave-logger", "solana-program-binaries", "solana-svm-transaction", "solana-rayon-threadlimit"]
    L2: ["agave-votor-messages", "solana-vote", "solana-transaction-status-client-types", "solana-program-runtime", "solana-bucket-map", "agave-fs", "agave-transaction-view", "agave-feature-set"]
    L3: ["solana-version", "solana-fee", "agave-reserved-account-keys", "solana-compute-budget", "agave-precompiles", "solana-vote-program", "agave-syscalls"]
    L4: ["solana-bpf-loader-program", "solana-perf", "solana-system-program"]
    L6: ["solana-builtins", "solana-svm"]
    L7: ["solana-accounts-db", "solana-compute-budget-instruction"]
    L8: ["agave-snapshots", "solana-runtime-transaction"]
    L9: ["solana-unified-scheduler-logic", "solana-cost-model"]

L11: (4 package(s))
  solana-download-utils
    L8: ["agave-snapshots"]
    L10: ["solana-runtime"]
  solana-send-transaction-service
    L1: ["solana-metrics", "solana-measure", "agave-logger"]
    L2: ["solana-net-utils"]
    L7: ["solana-tpu-client-next"]
    L8: ["solana-client"]
    L10: ["solana-runtime"]
  solana-stake-accounts
    L1: ["solana-program-binaries", "solana-remote-wallet"]
    L2: ["solana-clap-utils"]
    L3: ["solana-cli-config", "solana-version"]
    L5: ["solana-rpc-client-api"]
    L6: ["solana-rpc-client", "solana-cli-output"]
    L10: ["solana-runtime"]
  solana-tps-client
    L2: ["solana-net-utils"]
    L3: ["solana-connection-cache"]
    L4: ["solana-transaction-status"]
    L5: ["solana-rpc-client-api"]
    L6: ["solana-streamer", "solana-rpc-client"]
    L7: ["solana-tpu-client", "solana-quic-client"]
    L8: ["solana-client"]
    L10: ["solana-runtime"]

L12: (2 package(s))
  solana-banks-server
    L2: ["solana-banks-interface", "solana-net-utils", "agave-feature-set"]
    L6: ["solana-svm"]
    L8: ["solana-runtime-transaction", "solana-client"]
    L10: ["solana-runtime"]
    L11: ["solana-send-transaction-service"]
  solana-genesis-utils
    L6: ["solana-rpc-client"]
    L8: ["agave-snapshots"]
    L11: ["solana-download-utils"]

L13: (2 package(s))
  solana-banks-client
    L1: ["solana-transaction-context"]
    L2: ["solana-banks-interface"]
    L10: ["solana-runtime"]
    L12: ["solana-banks-server"]
  solana-ledger
    L1: ["agave-logger", "agave-random", "solana-svm-transaction", "solana-rayon-threadlimit", "solana-measure", "solana-metrics", "solana-transaction-context", "solana-svm-timings"]
    L2: ["solana-vote", "agave-feature-set", "solana-program-runtime", "solana-net-utils", "solana-account-decoder"]
    L3: ["agave-reserved-account-keys", "solana-vote-program"]
    L4: ["solana-transaction-status", "solana-perf", "solana-bpf-loader-program"]
    L5: ["solana-storage-proto"]
    L6: ["solana-svm", "solana-streamer", "solana-storage-bigtable"]
    L7: ["solana-accounts-db"]
    L8: ["agave-snapshots", "solana-runtime-transaction"]
    L9: ["solana-entry", "solana-cost-model"]
    L10: ["solana-runtime"]
    L12: ["solana-genesis-utils"]

L14: (4 package(s))
  solana-genesis
    L1: ["agave-logger"]
    L2: ["solana-clap-utils", "solana-vote", "agave-feature-set"]
    L3: ["solana-vote-program", "solana-version", "solana-cli-config"]
    L5: ["solana-rpc-client-api"]
    L6: ["solana-rpc-client"]
    L8: ["agave-snapshots"]
    L9: ["solana-entry"]
    L10: ["solana-runtime"]
    L12: ["solana-genesis-utils"]
    L13: ["solana-ledger"]
  solana-gossip
    L1: ["solana-rayon-threadlimit", "solana-bloom", "solana-measure", "solana-metrics", "agave-random", "agave-logger"]
    L2: ["solana-net-utils", "solana-vote", "agave-feature-set", "solana-clap-utils"]
    L3: ["solana-connection-cache", "solana-version", "solana-vote-program"]
    L4: ["solana-perf"]
    L6: ["solana-rpc-client", "solana-streamer"]
    L7: ["solana-tpu-client"]
    L8: ["solana-client"]
    L9: ["solana-entry"]
    L10: ["solana-runtime"]
    L13: ["solana-ledger"]
  solana-poh
    L1: ["solana-metrics", "agave-logger", "solana-measure"]
    L4: ["solana-perf"]
    L9: ["solana-entry"]
    L10: ["solana-runtime"]
    L13: ["solana-ledger"]
  solana-program-test
    L1: ["solana-program-binaries", "solana-svm-log-collector", "agave-logger", "solana-svm-timings", "solana-transaction-context"]
    L2: ["solana-program-runtime", "agave-feature-set", "solana-banks-interface"]
    L3: ["solana-compute-budget", "solana-vote-program"]
    L6: ["solana-svm"]
    L7: ["solana-accounts-db"]
    L10: ["solana-runtime"]
    L12: ["solana-banks-server"]
    L13: ["solana-banks-client"]

L15: (3 package(s))
  solana-rpc
    L1: ["solana-svm-log-collector", "solana-metrics", "solana-transaction-context", "solana-measure", "solana-rayon-threadlimit"]
    L2: ["agave-feature-set", "solana-account-decoder", "solana-net-utils", "solana-vote", "solana-program-runtime"]
    L3: ["solana-version", "agave-reserved-account-keys", "solana-vote-program"]
    L4: ["solana-transaction-status", "solana-perf"]
    L5: ["solana-rpc-client-api"]
    L6: ["solana-storage-bigtable", "solana-cli-output", "solana-svm"]
    L7: ["solana-tpu-client", "solana-faucet", "solana-accounts-db"]
    L8: ["agave-snapshots", "solana-runtime-transaction", "solana-client"]
    L9: ["solana-entry"]
    L10: ["solana-runtime"]
    L11: ["solana-send-transaction-service"]
    L13: ["solana-ledger"]
    L14: ["solana-gossip", "solana-poh"]
  solana-unified-scheduler-pool
    L1: ["agave-logger", "solana-svm-timings", "solana-metrics"]
    L5: ["agave-banking-stage-ingress-types"]
    L6: ["solana-svm"]
    L8: ["solana-runtime-transaction"]
    L9: ["solana-entry", "solana-cost-model", "solana-unified-scheduler-logic"]
    L10: ["solana-runtime"]
    L13: ["solana-ledger"]
    L14: ["solana-poh"]
  solana-wen-restart
    L1: ["agave-logger", "solana-svm-timings"]
    L2: ["solana-vote", "solana-net-utils"]
    L3: ["solana-vote-program"]
    L8: ["agave-snapshots"]
    L9: ["solana-entry"]
    L10: ["solana-runtime"]
    L12: ["solana-genesis-utils"]
    L13: ["solana-ledger"]
    L14: ["solana-gossip"]

L16: (2 package(s))
  solana-geyser-plugin-manager
    L4: ["solana-transaction-status"]
    L5: ["agave-geyser-plugin-interface"]
    L7: ["solana-accounts-db"]
    L9: ["solana-entry"]
    L10: ["solana-runtime"]
    L13: ["solana-ledger"]
    L15: ["solana-rpc"]
  agave-votor
    L1: ["solana-measure", "solana-bloom", "agave-logger", "solana-metrics"]
    L2: ["solana-net-utils", "solana-vote", "agave-votor-messages"]
    L3: ["solana-connection-cache", "solana-vote-program"]
    L4: ["solana-perf"]
    L6: ["solana-streamer"]
    L7: ["solana-accounts-db"]
    L8: ["solana-client"]
    L9: ["solana-entry"]
    L10: ["solana-runtime"]
    L13: ["solana-ledger"]
    L14: ["solana-gossip"]
    L15: ["solana-rpc"]

L17: (1 package(s))
  solana-turbine
    L1: ["agave-logger", "solana-metrics", "solana-tls-utils", "solana-rayon-threadlimit", "solana-measure"]
    L2: ["agave-xdp", "solana-net-utils", "agave-feature-set"]
    L4: ["solana-perf"]
    L5: ["solana-rpc-client-api"]
    L6: ["solana-streamer"]
    L7: ["solana-quic-client"]
    L9: ["solana-entry"]
    L10: ["solana-runtime"]
    L13: ["solana-ledger"]
    L14: ["solana-poh", "solana-gossip"]
    L15: ["solana-rpc"]
    L16: ["agave-votor"]

L18: (1 package(s))
  solana-core
    L1: ["solana-tls-utils", "solana-bloom", "agave-scheduler-bindings", "solana-svm-transaction", "solana-rayon-threadlimit", "solana-measure", "agave-logger", "solana-metrics", "solana-program-binaries", "solana-svm-timings"]
    L2: ["solana-vote", "solana-net-utils", "agave-feature-set", "solana-program-runtime", "agave-transaction-view"]
    L3: ["solana-compute-budget", "solana-connection-cache", "agave-scheduling-utils", "solana-vote-program", "solana-compute-budget-program", "solana-version", "agave-reserved-account-keys", "solana-fee"]
    L4: ["solana-bpf-loader-program", "solana-perf", "solana-system-program", "solana-transaction-status"]
    L5: ["solana-rpc-client-api", "agave-banking-stage-ingress-types"]
    L6: ["solana-svm", "solana-builtins-default-costs", "solana-streamer"]
    L7: ["solana-tpu-client-next", "solana-quic-client", "agave-verified-packet-receiver", "solana-tpu-client", "solana-compute-budget-instruction", "solana-accounts-db"]
    L8: ["agave-snapshots", "solana-client", "solana-runtime-transaction"]
    L9: ["solana-unified-scheduler-logic", "solana-entry", "solana-cost-model"]
    L10: ["solana-runtime"]
    L11: ["solana-send-transaction-service"]
    L12: ["solana-genesis-utils"]
    L13: ["solana-ledger"]
    L14: ["solana-poh", "solana-gossip"]
    L15: ["solana-unified-scheduler-pool", "solana-wen-restart", "solana-rpc"]
    L16: ["solana-geyser-plugin-manager", "agave-votor"]
    L17: ["solana-turbine"]

L19: (2 package(s))
  solana-local-cluster
    L1: ["agave-logger", "solana-program-binaries"]
    L2: ["solana-vote", "solana-net-utils"]
    L3: ["solana-vote-program"]
    L5: ["solana-pubsub-client", "solana-rpc-client-api"]
    L6: ["solana-rpc-client", "solana-streamer"]
    L7: ["solana-accounts-db", "solana-tpu-client", "solana-quic-client"]
    L8: ["solana-client", "agave-snapshots"]
    L9: ["solana-entry"]
    L10: ["solana-runtime"]
    L11: ["solana-download-utils"]
    L12: ["solana-genesis-utils"]
    L13: ["solana-ledger"]
    L14: ["solana-gossip"]
    L17: ["solana-turbine"]
    L18: ["solana-core"]
  solana-test-validator
    L1: ["solana-program-binaries"]
    L2: ["agave-feature-set", "solana-net-utils"]
    L3: ["solana-compute-budget"]
    L5: ["solana-rpc-client-api"]
    L6: ["solana-rpc-client", "solana-streamer", "solana-cli-output"]
    L7: ["solana-accounts-db", "solana-tpu-client"]
    L8: ["agave-snapshots"]
    L10: ["solana-runtime"]
    L12: ["solana-genesis-utils"]
    L13: ["solana-ledger"]
    L14: ["solana-program-test", "solana-gossip"]
    L15: ["solana-rpc"]
    L16: ["solana-geyser-plugin-manager"]
    L18: ["solana-core"]

L20: (3 package(s))
  solana-cli
    L1: ["agave-logger", "solana-remote-wallet"]
    L2: ["solana-clap-utils", "solana-account-decoder", "solana-program-runtime", "agave-feature-set", "solana-net-utils", "solana-transaction-status-client-types"]
    L3: ["solana-cli-config", "solana-connection-cache", "agave-syscalls", "solana-version", "solana-vote-program"]
    L4: ["solana-transaction-status"]
    L5: ["solana-pubsub-client", "solana-rpc-client-api", "solana-loader-v4-program"]
    L6: ["solana-rpc-client", "solana-cli-output"]
    L7: ["solana-quic-client", "solana-tpu-client", "solana-rpc-client-nonce-utils", "solana-faucet", "solana-udp-client"]
    L8: ["solana-client"]
    L11: ["solana-tps-client"]
    L15: ["solana-rpc"]
    L19: ["solana-test-validator"]
  solana-tokens
    L1: ["agave-logger", "solana-remote-wallet"]
    L2: ["solana-account-decoder", "solana-net-utils", "solana-clap-utils"]
    L3: ["solana-cli-config", "solana-version"]
    L4: ["solana-transaction-status"]
    L5: ["solana-rpc-client-api"]
    L6: ["solana-rpc-client", "solana-cli-output"]
    L19: ["solana-test-validator"]
  agave-validator
    L1: ["solana-rayon-threadlimit", "solana-metrics", "agave-logger"]
    L2: ["solana-clap-utils", "solana-program-runtime", "solana-account-decoder", "solana-net-utils"]
    L3: ["solana-cli-config", "solana-vote-program", "solana-version"]
    L4: ["solana-perf"]
    L5: ["agave-geyser-plugin-interface", "solana-rpc-client-api"]
    L6: ["solana-cli-output", "solana-streamer", "solana-rpc-client", "solana-storage-bigtable"]
    L7: ["solana-accounts-db", "solana-faucet", "solana-tpu-client"]
    L8: ["agave-snapshots"]
    L9: ["solana-entry"]
    L10: ["solana-runtime"]
    L11: ["solana-download-utils", "solana-send-transaction-service"]
    L12: ["solana-genesis-utils"]
    L13: ["solana-ledger"]
    L14: ["solana-poh", "solana-gossip"]
    L15: ["solana-unified-scheduler-pool", "solana-rpc"]
    L16: ["solana-geyser-plugin-manager"]
    L17: ["solana-turbine"]
    L18: ["solana-core"]
    L19: ["solana-test-validator"]

L21: (1 package(s))
  agave-cargo-registry
    L1: ["agave-logger", "solana-remote-wallet"]
    L2: ["solana-clap-utils"]
    L3: ["solana-version", "solana-cli-config"]
    L5: ["solana-rpc-client-api"]
    L6: ["solana-rpc-client", "solana-cli-output"]
    L20: ["solana-cli"]
  • cargo xtask publish test

output: (https://buildkite.com/anza/agave/builds/35883#019ad9ca-aef5-46ab-a45c-ef81af0d5195)

However, it's a 1h test. I will introduce a nightly path in a follow-up PR. This PR focuses on introducing these tools.

@yihau yihau force-pushed the crate-publish-test branch 3 times, most recently from 4743e6c to f6ecaf5 Compare December 1, 2025 13:10
@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Dec 1, 2025

Codecov Report

❌ Patch coverage is 28.96341% with 233 lines in your changes missing coverage. Please review.
✅ Project coverage is 82.5%. Comparing base (53466e5) to head (94d7742).
⚠️ Report is 6 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff            @@
##           master    #9334     +/-   ##
=========================================
- Coverage    82.6%    82.5%   -0.1%     
=========================================
  Files         847      848      +1     
  Lines      317630   317958    +328     
=========================================
+ Hits       262477   262600    +123     
- Misses      55153    55358    +205     
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@yihau yihau marked this pull request as ready for review December 1, 2025 14:17
@yihau yihau requested a review from a team December 1, 2025 14:17
@mircea-c mircea-c mentioned this pull request Dec 1, 2025
@@ -0,0 +1,482 @@
use {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This new code has no test coverage. Shipping the code together with tests makes it easier to also review the code as verifying tests allows to quickly confirm that the code does what it is supposed to do and that expectations what the code is supposed to do match tests.

@mircea-c
Copy link
Copy Markdown

@yihau yihau force-pushed the crate-publish-test branch from 3cb1995 to 6c37f25 Compare December 22, 2025 15:10
@yihau yihau force-pushed the crate-publish-test branch from 6c37f25 to ff3dd3a Compare January 5, 2026 14:56
@mircea-c
Copy link
Copy Markdown

mircea-c commented Jan 6, 2026

Ran through the tests and seems to be working correctly. It published all the crates as expected.

mircea-c
mircea-c previously approved these changes Jan 7, 2026
Copy link
Copy Markdown

@mircea-c mircea-c left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, this LGTM. I'll stamp again once conflicts are resolved.

mircea-c
mircea-c previously approved these changes Jan 7, 2026
@yihau yihau added this pull request to the merge queue Jan 10, 2026
Merged via the queue into anza-xyz:master with commit 58e8c3a Jan 10, 2026
59 checks passed
@yihau yihau deleted the crate-publish-test branch January 10, 2026 04:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants