Skip to content

Commit

Permalink
Merge pull request #5399 from stacks-network/feat/update-cargo-versions
Browse files Browse the repository at this point in the history
Add default version to `version_string` function
  • Loading branch information
wileyj authored Feb 4, 2025
2 parents 1408ef9 + c6c38ee commit 6651b31
Show file tree
Hide file tree
Showing 14 changed files with 67 additions and 27 deletions.
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion docs/release-process.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,11 @@ The timing of the next Stacking cycle can be found [here](https://stx.eco/dao/to
- Add cherry-picked commits to the `feat/X.Y.Z.A.n-pr_number` branch
- Merge `feat/X.Y.Z.A.n-pr_number` into `release/X.Y.Z.A.n`.

4. Open a PR to update the [CHANGELOG](../CHANGELOG.md) file in the `release/X.Y.Z.A.n` branch.
4. Open a PR to update the [CHANGELOG](../CHANGELOG.md) in the `release/X.Y.Z.A.n` branch.

- Create a chore branch from `release/X.Y.Z.A.n`, ex: `chore/X.Y.Z.A.n-changelog`.
- Add summaries of all Pull Requests to the `Added`, `Changed` and `Fixed` sections.
- Update the `stacks_node_version` string in [versions.toml](../versions.toml) to match this release.

- Pull requests merged into `develop` can be found [here](https://github.com/stacks-network/stacks-core/pulls?q=is%3Apr+is%3Aclosed+base%3Adevelop+sort%3Aupdated-desc).

Expand Down
8 changes: 7 additions & 1 deletion libsigner/src/libsigner.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ use blockstack_lib::version_string;
use clarity::codec::StacksMessageCodec;
use clarity::vm::types::QualifiedContractIdentifier;
use lazy_static::lazy_static;
use stacks_common::versions::STACKS_SIGNER_VERSION;

pub use crate::error::{EventError, RPCError};
pub use crate::events::{
Expand Down Expand Up @@ -80,7 +81,12 @@ pub trait SignerMessage<T: MessageSlotID>: StacksMessageCodec {
lazy_static! {
/// The version string for the signer
pub static ref VERSION_STRING: String = {
let pkg_version = option_env!("STACKS_NODE_VERSION").unwrap_or(env!("CARGO_PKG_VERSION"));
let pkg_version = option_env!("STACKS_NODE_VERSION").or(Some(STACKS_SIGNER_VERSION));
version_string("stacks-signer", pkg_version)
};
}

#[test]
fn test_version_string() {
assert!(VERSION_STRING.contains(format!("stacks-signer {}", STACKS_SIGNER_VERSION).as_str()));
}
4 changes: 4 additions & 0 deletions stacks-common/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ keywords = [ "stacks", "stx", "bitcoin", "crypto", "blockstack", "decentralized"
readme = "README.md"
resolver = "2"
edition = "2021"
build = "build.rs"

[lib]
name = "stacks_common"
Expand Down Expand Up @@ -73,6 +74,9 @@ serde = []
bech32_std = []
bech32_strict = []

[build-dependencies]
toml = "0.5.6"

[target.'cfg(all(any(target_arch = "x86_64", target_arch = "x86", target_arch = "aarch64"), not(any(target_os="windows"))))'.dependencies]
sha2 = { version = "0.10", features = ["asm"] }

Expand Down
33 changes: 33 additions & 0 deletions stacks-common/build.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
use std::path::Path;
use std::{env, fs};

use toml::Value;

fn main() {
let toml_file = "../versions.toml";
let toml_content = fs::read_to_string(toml_file).expect("Failed to read versions.toml");

let config: Value = toml::from_str(&toml_content).expect("Failed to parse TOML");

let mut rust_code = String::from("// Auto-generated code from versions.toml\n\n");

let Value::Table(table) = config else {
panic!("Invalid value type in versions.toml: {config:?}");
};
for (key, val) in table {
let Value::String(s) = val else {
panic!("Invalid value type in versions.toml: {val:?}");
};
rust_code.push_str(&format!(
"pub const {}: &str = {s:?};\n",
key.to_uppercase()
));
}

let out_dir = env::var_os("OUT_DIR").unwrap();
let dest_path = Path::new(&out_dir).join("versions.rs");
fs::write(&dest_path, rust_code).expect("Failed to write generated code");

// Tell Cargo to rerun this script if the TOML file changes
println!("cargo:rerun-if-changed={toml_file}");
}
4 changes: 4 additions & 0 deletions stacks-common/src/libcommon.rs
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,10 @@ pub mod consts {
pub const MICROSTACKS_PER_STACKS: u32 = 1_000_000;
}

pub mod versions {
include!(concat!(env!("OUT_DIR"), "/versions.rs"));
}

/// This test asserts that the constant above doesn't change.
/// This exists because the constant above is used by Epoch 2.5 instantiation code.
///
Expand Down
3 changes: 2 additions & 1 deletion stacks-signer/release-process.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,11 @@ The timing of the next Stacking cycle can be found [here](https://stx.eco/dao/to
- Add cherry-picked commits to the `feat/signer-X.Y.Z.A.n.x-pr_number` branch
- Merge `feat/signer-X.Y.Z.A.n.x-pr_number` into `release/signer-X.Y.Z.A.n.x`.

4. Open a PR to update the [CHANGELOG](./CHANGELOG.md) file in the `release/signer-X.Y.Z.A.n.x` branch.
4. Open a PR to update the [CHANGELOG](./CHANGELOG.md) in the `release/signer-X.Y.Z.A.n.x` branch.

- Create a chore branch from `release/signer-X.Y.Z.A.n.x`, ex: `chore/signer-X.Y.Z.A.n.x-changelog`.
- Add summaries of all Pull Requests to the `Added`, `Changed` and `Fixed` sections.
- Update the `stacks_signer_version` string in [versions.toml](../versions.toml) to match this release.

- Pull requests merged into `develop` can be found [here](https://github.com/stacks-network/stacks-core/pulls?q=is%3Apr+is%3Aclosed+base%3Adevelop+sort%3Aupdated-desc).

Expand Down
8 changes: 5 additions & 3 deletions stackslib/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ extern crate stacks_common;
#[macro_use]
pub extern crate clarity;

use stacks_common::versions::STACKS_NODE_VERSION;
pub use stacks_common::{address, codec, types, util};

#[macro_use]
Expand Down Expand Up @@ -79,16 +80,17 @@ const BUILD_TYPE: &str = "debug";
#[cfg(not(debug_assertions))]
const BUILD_TYPE: &str = "release";

pub fn version_string(pkg_name: &str, pkg_version: &str) -> String {
let git_branch = GIT_BRANCH.map(String::from).unwrap_or("".to_string());
pub fn version_string(pkg_name: &str, pkg_version: Option<&str>) -> String {
let pkg_version = pkg_version.unwrap_or(STACKS_NODE_VERSION);
let git_branch = GIT_BRANCH.unwrap_or("");
let git_commit = GIT_COMMIT.unwrap_or("");
let git_tree_clean = GIT_TREE_CLEAN.unwrap_or("");

format!(
"{} {} ({}:{}{}, {} build, {} [{}])",
pkg_name,
pkg_version,
&git_branch,
git_branch,
git_commit,
git_tree_clean,
BUILD_TYPE,
Expand Down
2 changes: 1 addition & 1 deletion stackslib/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,7 @@ fn main() {
"{}",
&blockstack_lib::version_string(
option_env!("CARGO_PKG_NAME").unwrap_or(&argv[0]),
option_env!("CARGO_PKG_VERSION").unwrap_or("0.0.0.0")
option_env!("STACKS_NODE_VERSION")
)
);
process::exit(0);
Expand Down
7 changes: 1 addition & 6 deletions stackslib/src/net/api/getinfo.rs
Original file line number Diff line number Diff line change
Expand Up @@ -111,12 +111,7 @@ impl RPCPeerInfoData {
coinbase_height: u64,
ibd: bool,
) -> RPCPeerInfoData {
let server_version = version_string(
"stacks-node",
option_env!("STACKS_NODE_VERSION")
.or(option_env!("CARGO_PKG_VERSION"))
.unwrap_or("0.0.0.0"),
);
let server_version = version_string("stacks-node", option_env!("STACKS_NODE_VERSION"));
let (unconfirmed_tip, unconfirmed_seq) = match chainstate.unconfirmed_state {
Some(ref unconfirmed) => {
if unconfirmed.num_mined_txs() > 0 {
Expand Down
1 change: 0 additions & 1 deletion stackslib/src/net/api/getstxtransfercost.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ use crate::net::httpcore::{
};
use crate::net::p2p::PeerNetwork;
use crate::net::{Error as NetError, HttpServerError, StacksNodeState};
use crate::version_string;

pub(crate) const SINGLESIG_TX_TRANSFER_LEN: u64 = 180;

Expand Down
9 changes: 2 additions & 7 deletions testnet/stacks-node/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -433,12 +433,7 @@ fn main() {
}

fn version() -> String {
stacks::version_string(
"stacks-node",
option_env!("STACKS_NODE_VERSION")
.or(option_env!("CARGO_PKG_VERSION"))
.unwrap_or("0.0.0.0"),
)
stacks::version_string("stacks-node", option_env!("STACKS_NODE_VERSION"))
}

fn print_help() {
Expand All @@ -456,7 +451,7 @@ SUBCOMMANDS:
mainnet\t\tStart a node that will join and stream blocks from the public mainnet.
mocknet\t\tStart a node based on a fast local setup emulating a burnchain. Ideal for smart contract development.
mocknet\t\tStart a node based on a fast local setup emulating a burnchain. Ideal for smart contract development.
helium\t\tStart a node based on a local setup relying on a local instance of bitcoind.
\t\tThe following bitcoin.conf is expected:
Expand Down
7 changes: 1 addition & 6 deletions testnet/stacks-node/src/neon_node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2211,12 +2211,7 @@ impl BlockMinerThread {
/// Only used in mock signing to generate a peer info view
fn generate_peer_info(&self) -> PeerInfo {
// Create a peer info view of the current state
let server_version = version_string(
"stacks-node",
option_env!("STACKS_NODE_VERSION")
.or(option_env!("CARGO_PKG_VERSION"))
.unwrap_or("0.0.0.0"),
);
let server_version = version_string("stacks-node", option_env!("STACKS_NODE_VERSION"));
let stacks_tip_height = self.burn_block.canonical_stacks_tip_height;
let stacks_tip = self.burn_block.canonical_stacks_tip_hash;
let stacks_tip_consensus_hash = self.burn_block.canonical_stacks_tip_consensus_hash;
Expand Down
4 changes: 4 additions & 0 deletions versions.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Update these values when a new release is created.
# `stacks-common/build.rs` will automatically update `versions.rs` with these values.
stacks_node_version = "3.1.0.0.4"
stacks_signer_version = "3.1.0.0.4.0"

0 comments on commit 6651b31

Please sign in to comment.