Skip to content

Commit ef841dd

Browse files
committed
build: publish workspace to crates.io
We want all the crates Penumbra protocol workspace to be published to crates.io, so that external developers can depend on them in downstream projects. For now, we'll skip doing so for the binaries, but we can circle back on them. The major obstacle is that the `penumbra-sdk-proof-params` create contains binary keyfiles, which are managed in git-lfs. We cannot upload the raw keyfiles to crates.io, because that'd result in a 100MB crate. Instead, we use a custom script to revert the binary keyfiles to plaintext lfs pointers immediately prior to publishing to crates.io, which stays under the limit, and allows third-party tools to opt into downloading the key material via the `download-proving-keys` feature. The ratelimit of "15s" between crates publishing has been working reliably when publishing alpha versions (i.e. an HTTP 429 is avoided). Publishing all crates takes ~12m. This commit also condenses several "alpha" series releases, culminating in `0.82.0-alpha.13`. Most of these versions have been published to crates.io, to evaluate CI behavior on publishing crates.
1 parent cf331f9 commit ef841dd

File tree

23 files changed

+313
-172
lines changed

23 files changed

+313
-172
lines changed

Cargo.lock

Lines changed: 50 additions & 56 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 41 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -95,17 +95,22 @@ tag-name = "v{{version}}"
9595
# The message is required for an annotated tag to be created.
9696
tag-message = "Penumbra version {{version}}"
9797
pre-release-commit-message = "chore: release version {{version}}"
98-
# Don't push to crates.io; we're still using git branches for velocity.
98+
# Permit publishing to crates.io; local developers should run `cargo release --no-publish`
99+
# to prepare the git info, then pushing to remote with tag will trigger crates.io publication.
99100
publish = true
100101
# Do commit, tag, and push the version bump, triggering a new release.
101102
tag = true
102103
# Don't push, since we're still evaluating the new release workflow.
103104
push = false
105+
# Edit each crate's Cargo.toml, bumping versions for other workspace crates.
106+
dependent-version = "upgrade"
107+
# Increase default ratelimit on publishing packages
108+
rate-limit = { existing-packages = 50 }
104109

105110
[workspace.package]
106111
authors = ["Penumbra Labs <team@penumbralabs.xyz"]
107112
edition = "2021"
108-
version = "0.82.0-alpha.3"
113+
version = "0.82.0-alpha.13"
109114
repository = "https://github.com/penumbra-zone/penumbra"
110115
homepage = "https://penumbra.zone"
111116
license = "MIT OR Apache-2.0"
@@ -137,12 +142,12 @@ chacha20poly1305 = { version = "0.9.0" }
137142
chrono = { default-features = false, version = "0.4" }
138143
clap = { version = "3.2" }
139144
cnidarium = { version = "0.82.1", default-features = false}
140-
cnidarium-component = { default-features = false, version = "0.82.0-alpha.0", path = "crates/cnidarium-component" }
141-
cometindex = { version = "0.82.0-alpha.0", path = "crates/util/cometindex" }
145+
cnidarium-component = { default-features = false, version = "0.82.0-alpha.13", path = "crates/cnidarium-component" }
146+
cometindex = { version = "0.82.0-alpha.13", path = "crates/util/cometindex" }
142147
criterion = { version = "0.4" }
143148
decaf377 = { default-features = false, version = "0.10.1" }
144-
decaf377-fmd = { version = "0.82.0-alpha.0", path = "crates/crypto/decaf377-fmd" }
145-
decaf377-ka = { version = "0.82.0-alpha.0", path = "crates/crypto/decaf377-ka" }
149+
decaf377-fmd = { version = "0.82.0-alpha.13", path = "crates/crypto/decaf377-fmd" }
150+
decaf377-ka = { version = "0.82.0-alpha.13", path = "crates/crypto/decaf377-ka" }
146151
decaf377-rdsa = { version = "0.11.0" }
147152
derivative = { version = "2.2" }
148153
directories = { version = "4.0.1" }
@@ -170,35 +175,36 @@ once_cell = { version = "1.8" }
170175
parking_lot = { version = "0.12.1" }
171176
pbjson = { version = "0.7.0" }
172177
pbjson-types = { version = "0.7.0" }
173-
penumbra-sdk-app = { default-features = false, version = "0.82.0-alpha.0", path = "crates/core/app" }
174-
penumbra-sdk-asset = { default-features = false, version = "0.82.0-alpha.0", path = "crates/core/asset" }
175-
penumbra-sdk-community-pool = { default-features = false, version = "0.82.0-alpha.0", path = "crates/core/component/community-pool" }
176-
penumbra-sdk-compact-block = { default-features = false, version = "0.82.0-alpha.0", path = "crates/core/component/compact-block" }
177-
penumbra-sdk-custody = { version = "0.82.0-alpha.0", path = "crates/custody" }
178-
penumbra-sdk-auction = { default-features = false, version = "0.82.0-alpha.0", path = "crates/core/component/auction" }
179-
penumbra-sdk-dex = { default-features = false, version = "0.82.0-alpha.0", path = "crates/core/component/dex" }
180-
penumbra-sdk-distributions = { default-features = false, version = "0.82.0-alpha.0", path = "crates/core/component/distributions" }
181-
penumbra-sdk-fee = { default-features = false, version = "0.82.0-alpha.0", path = "crates/core/component/fee" }
182-
penumbra-sdk-funding = { default-features = false, version = "0.82.0-alpha.0", path = "crates/core/component/funding" }
183-
penumbra-sdk-governance = { default-features = false, version = "0.82.0-alpha.0", path = "crates/core/component/governance" }
184-
penumbra-sdk-ibc = { default-features = false, version = "0.82.0-alpha.0", path = "crates/core/component/ibc" }
185-
penumbra-sdk-keys = { default-features = false, version = "0.82.0-alpha.0", path = "crates/core/keys" }
186-
penumbra-sdk-mock-client = { version = "0.82.0-alpha.0", path = "crates/test/mock-client" }
187-
penumbra-sdk-mock-consensus = { version = "0.82.0-alpha.0", path = "crates/test/mock-consensus" }
188-
penumbra-sdk-mock-tendermint-proxy = { version = "0.82.0-alpha.0", path = "crates/test/mock-tendermint-proxy" }
189-
penumbra-sdk-num = { default-features = false, version = "0.82.0-alpha.0", path = "crates/core/num" }
190-
penumbra-sdk-proof-params = { default-features = false, version = "0.82.0-alpha.0", path = "crates/crypto/proof-params" }
191-
penumbra-sdk-proof-setup = { version = "0.82.0-alpha.0", path = "crates/crypto/proof-setup" }
192-
penumbra-sdk-proto = { default-features = false, version = "0.82.0-alpha.0", path = "crates/proto" }
193-
penumbra-sdk-sct = { default-features = false, version = "0.82.0-alpha.0", path = "crates/core/component/sct" }
194-
penumbra-sdk-shielded-pool = { default-features = false, version = "0.82.0-alpha.0", path = "crates/core/component/shielded-pool" }
195-
penumbra-sdk-stake = { default-features = false, version = "0.82.0-alpha.0", path = "crates/core/component/stake" }
196-
penumbra-sdk-tct = { default-features = false, version = "0.82.0-alpha.0", path = "crates/crypto/tct" }
197-
penumbra-sdk-test-subscriber = { version = "0.82.0-alpha.0", path = "crates/test/tracing-subscriber" }
198-
penumbra-sdk-transaction = { default-features = false, version = "0.82.0-alpha.0", path = "crates/core/transaction" }
199-
penumbra-sdk-txhash = { default-features = false, version = "0.82.0-alpha.0", path = "crates/core/txhash" }
200-
penumbra-sdk-view = { version = "0.82.0-alpha.0", path = "crates/view" }
201-
penumbra-sdk-wallet = { version = "0.82.0-alpha.0", path = "crates/wallet" }
178+
penumbra-sdk-app = { default-features = false, version = "0.82.0-alpha.13", path = "crates/core/app" }
179+
penumbra-sdk-asset = { default-features = false, version = "0.82.0-alpha.13", path = "crates/core/asset" }
180+
penumbra-sdk-community-pool = { default-features = false, version = "0.82.0-alpha.13", path = "crates/core/component/community-pool" }
181+
penumbra-sdk-compact-block = { default-features = false, version = "0.82.0-alpha.13", path = "crates/core/component/compact-block" }
182+
penumbra-sdk-custody = { version = "0.82.0-alpha.13", path = "crates/custody" }
183+
penumbra-sdk-auction = { default-features = false, version = "0.82.0-alpha.13", path = "crates/core/component/auction" }
184+
penumbra-sdk-dex = { default-features = false, version = "0.82.0-alpha.13", path = "crates/core/component/dex" }
185+
penumbra-sdk-distributions = { default-features = false, version = "0.82.0-alpha.13", path = "crates/core/component/distributions" }
186+
penumbra-sdk-fee = { default-features = false, version = "0.82.0-alpha.13", path = "crates/core/component/fee" }
187+
penumbra-sdk-funding = { default-features = false, version = "0.82.0-alpha.13", path = "crates/core/component/funding" }
188+
penumbra-sdk-governance = { default-features = false, version = "0.82.0-alpha.13", path = "crates/core/component/governance" }
189+
penumbra-sdk-ibc = { default-features = false, version = "0.82.0-alpha.13", path = "crates/core/component/ibc" }
190+
penumbra-sdk-keys = { default-features = false, version = "0.82.0-alpha.13", path = "crates/core/keys" }
191+
penumbra-sdk-mock-client = { version = "0.82.0-alpha.13", path = "crates/test/mock-client" }
192+
penumbra-sdk-mock-consensus = { version = "0.82.0-alpha.13", path = "crates/test/mock-consensus" }
193+
penumbra-sdk-mock-tendermint-proxy = { version = "0.82.0-alpha.13", path = "crates/test/mock-tendermint-proxy" }
194+
penumbra-sdk-num = { default-features = false, version = "0.82.0-alpha.13", path = "crates/core/num" }
195+
penumbra-sdk-proof-params = { default-features = false, version = "0.82.0-alpha.13", path = "crates/crypto/proof-params" }
196+
penumbra-sdk-proof-setup = { version = "0.82.0-alpha.13", path = "crates/crypto/proof-setup" }
197+
penumbra-sdk-proto = { default-features = false, version = "0.82.0-alpha.13", path = "crates/proto" }
198+
penumbra-sdk-sct = { default-features = false, version = "0.82.0-alpha.13", path = "crates/core/component/sct" }
199+
penumbra-sdk-shielded-pool = { default-features = false, version = "0.82.0-alpha.13", path = "crates/core/component/shielded-pool" }
200+
penumbra-sdk-stake = { default-features = false, version = "0.82.0-alpha.13", path = "crates/core/component/stake" }
201+
penumbra-sdk-tct = { default-features = false, version = "0.82.0-alpha.13", path = "crates/crypto/tct" }
202+
penumbra-sdk-test-subscriber = { version = "0.82.0-alpha.13", path = "crates/test/tracing-subscriber" }
203+
penumbra-sdk-tower-trace = { version = "0.82.0-alpha.13", path = "crates/util/tower-trace" }
204+
penumbra-sdk-transaction = { default-features = false, version = "0.82.0-alpha.13", path = "crates/core/transaction" }
205+
penumbra-sdk-txhash = { default-features = false, version = "0.82.0-alpha.13", path = "crates/core/txhash" }
206+
penumbra-sdk-view = { version = "0.82.0-alpha.13", path = "crates/view" }
207+
penumbra-sdk-wallet = { version = "0.82.0-alpha.13", path = "crates/wallet" }
202208
pin-project = { version = "1.0.12" }
203209
pin-project-lite = { version = "0.2.9" }
204210
poseidon377 = { version = "1.2.0" }

crates/bench/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ description = "Benchmarks for Penumbra crates"
66
version = {workspace = true}
77
license = {workspace = true}
88
edition = {workspace = true}
9+
publish = false
910

1011
[build-dependencies]
1112
regex = { version = "1", optional = true }

crates/bin/pcli/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ description = "The command-line interface for the Penumbra Zone"
77
repository = {workspace = true}
88
homepage = {workspace = true}
99
license = {workspace = true}
10-
publish = true
10+
publish = false
1111

1212
[package.metadata.dist]
1313
dist = true

crates/bin/pclientd/Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ description = "Penumbra view server daemon"
66
version = {workspace = true}
77
license = {workspace = true}
88
edition = {workspace = true}
9+
publish = false
10+
11+
[package.metadata.dist]
12+
dist = true
913

1014
[features]
1115
default = ["std", "download-proving-keys"]

crates/bin/pd/Cargo.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ description = "The node software for the Penumbra Zone"
77
repository = { workspace = true }
88
homepage = { workspace = true }
99
license = { workspace = true }
10-
publish = true
10+
publish = false
1111
rust-version = "1.75"
1212

1313
[package.metadata.dist]
@@ -61,7 +61,7 @@ once_cell = { workspace = true }
6161
pbjson-types = { workspace = true }
6262
penumbra-sdk-app = { workspace = true, default-features = true }
6363
penumbra-sdk-asset = { workspace = true, default-features = true }
64-
penumbra-sdk-auto-https = { version = "0.82.0-alpha.0", path = "../../util/auto-https" }
64+
penumbra-sdk-auto-https = { version = "0.82.0-alpha.13", path = "../../util/auto-https" }
6565
penumbra-sdk-compact-block = { workspace = true, default-features = true }
6666
penumbra-sdk-custody = { workspace = true }
6767
penumbra-sdk-auction = { workspace = true, features = ["parallel"], default-features = true }
@@ -76,8 +76,8 @@ penumbra-sdk-sct = { workspace = true, default-features = tr
7676
penumbra-sdk-shielded-pool = { workspace = true, features = ["parallel"], default-features = true }
7777
penumbra-sdk-stake = { workspace = true, features = ["parallel"], default-features = true }
7878
penumbra-sdk-tct = { workspace = true, default-features = true }
79-
penumbra-sdk-tendermint-proxy = { version = "0.82.0-alpha.0", path = "../../util/tendermint-proxy" }
80-
penumbra-sdk-tower-trace = { version = "0.82.0-alpha.0", path = "../../util/tower-trace" }
79+
penumbra-sdk-tendermint-proxy = { version = "0.82.0-alpha.13", path = "../../util/tendermint-proxy" }
80+
penumbra-sdk-tower-trace = { workspace = true }
8181
penumbra-sdk-transaction = { workspace = true, default-features = true }
8282
pin-project = { workspace = true }
8383
pin-project-lite = { workspace = true }

crates/bin/pindexer/Cargo.toml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@ edition = { workspace = true }
77
repository = { workspace = true }
88
homepage = { workspace = true }
99
license = { workspace = true }
10-
publish = true
10+
publish = false
11+
12+
[package.metadata.dist]
13+
dist = true
1114

1215
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
1316

crates/bin/pmonitor/Cargo.toml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@ edition = { workspace = true }
77
repository = { workspace = true }
88
homepage = { workspace = true }
99
license = { workspace = true }
10-
publish = true
10+
publish = false
11+
12+
[package.metadata.dist]
13+
dist = true
1114

1215
[features]
1316
integration-testnet = []
@@ -20,7 +23,7 @@ colored = "2.1.0"
2023
directories = {workspace = true}
2124
futures = {workspace = true}
2225
indicatif = {workspace = true}
23-
pcli = {version = "0.82.0-alpha.0", path = "../pcli", default-features = true}
26+
pcli = {version = "0.82.0-alpha.13", path = "../pcli", default-features = true}
2427
penumbra-sdk-app = {workspace = true}
2528
penumbra-sdk-asset = {workspace = true, default-features = false}
2629
penumbra-sdk-compact-block = {workspace = true, default-features = false}

crates/core/app-tests/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ penumbra-sdk-shielded-pool = { workspace = true, default-features = fa
8181
penumbra-sdk-stake = { workspace = true, default-features = false }
8282
penumbra-sdk-tct = { workspace = true, default-features = true }
8383
penumbra-sdk-test-subscriber = { workspace = true }
84-
penumbra-sdk-tower-trace = { path = "../../util/tower-trace" }
84+
penumbra-sdk-tower-trace = { workspace = true }
8585
penumbra-sdk-transaction = { workspace = true, features = ["parallel"], default-features = true }
8686
penumbra-sdk-txhash = { workspace = true, default-features = true }
8787
prost = { workspace = true }

crates/core/app-tests/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
//! The `penumbra-sdk-app-tests` crate stores workspace-wide test logic
2+
//! for the Penumbra app components.

crates/core/app/Cargo.toml

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,7 @@ penumbra-sdk-sct = { workspace = true, default-features = fa
7676
penumbra-sdk-shielded-pool = { workspace = true, default-features = false }
7777
penumbra-sdk-stake = { workspace = true, default-features = false }
7878
penumbra-sdk-tct = { workspace = true, default-features = true }
79-
penumbra-sdk-test-subscriber = { workspace = true }
80-
penumbra-sdk-tower-trace = { version = "0.82.0-alpha.0", path = "../../util/tower-trace" }
79+
penumbra-sdk-tower-trace = { workspace = true }
8180
penumbra-sdk-transaction = { workspace = true, features = ["parallel"], default-features = true }
8281
penumbra-sdk-txhash = { workspace = true, default-features = true }
8382
prost = { workspace = true }
@@ -105,15 +104,9 @@ tracing = { workspace = true }
105104
url = { workspace = true }
106105

107106
[dev-dependencies]
108-
axum-server = { workspace = true }
109-
camino = { workspace = true }
110107
decaf377-fmd = { workspace = true, default-features = true }
111108
ed25519-consensus = { workspace = true }
112-
penumbra-sdk-mock-client = { workspace = true }
113-
penumbra-sdk-mock-consensus = { workspace = true }
114-
penumbra-sdk-proto = { workspace = true, features = ["box-grpc"] }
115-
penumbra-sdk-test-subscriber = { workspace = true }
116-
penumbra-sdk-mock-tendermint-proxy = { workspace = true }
109+
penumbra-sdk-proto = { workspace = true, features = ["box-grpc"] }
117110
rand = { workspace = true }
118111
rand_chacha = { workspace = true }
119112
rand_core = { workspace = true }

crates/core/component/dex/Cargo.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ edition = {workspace = true}
99

1010
[[test]]
1111
name = "penumbra-sdk-dex-integration-tests"
12-
authors = {workspace = true}
13-
repository = {workspace = true}
1412
path = "tests/integration/mod.rs"
1513

1614
[features]

crates/crypto/proof-params/Cargo.toml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,14 @@
22
name = "penumbra-sdk-proof-params"
33
authors = {workspace = true}
44
repository = {workspace = true}
5-
description = "Penumbra Proof parameters"
5+
description = "Penumbra proof parameters"
66
version = {workspace = true}
77
license = {workspace = true}
88
edition = {workspace = true}
9-
exclude = ["src/gen/*.bin"]
9+
# We permit inclusion of the `*.bin` files, but including the full binary
10+
# data would be too large for crates.io, so a custom script converts them
11+
# to git-lfs pointers, which can be resolved by enabling the `download-proving-keys` feature.
12+
# exclude = ["src/gen/*.bin"]
1013

1114
[build-dependencies]
1215
regex = { version = "1", optional = true }

0 commit comments

Comments
 (0)