Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
nmattia committed Sep 27, 2024
1 parent 90ba58c commit 151184a
Show file tree
Hide file tree
Showing 7 changed files with 49 additions and 91 deletions.
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
/bazel/fuzz_testing.bzl @dfinity/idx @dfinity/product-security
/third_party/ @dfinity/idx
/WORKSPACE.bazel @dfinity/idx
/mainnet-canisters.bzl @dfinity/idx @dfinity/nns-team
/mainnet-canisters.json @dfinity/idx @dfinity/nns-team
/BUILD.bazel @dfinity/idx
.bazelrc @dfinity/idx
.bazelversion @dfinity/idx
Expand Down
2 changes: 1 addition & 1 deletion BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ exports_files([
"clippy.toml",
"rustfmt.toml",
"WORKSPACE.bazel",
"mainnet-canisters.bzl",
"mainnet-canisters.json",
])

# bazel/workspace_status.sh will write the current timestamp to this file on every run to provade an input that always changes for some targets.
Expand Down
11 changes: 2 additions & 9 deletions WORKSPACE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,6 @@ oci_register_toolchains(name = "oci")
load("@rules_oci//oci:pull.bzl", "oci_pull")
load("//third_party/lmdb:repository.bzl", "lmdb_repository")

###

load("//bazel:mainnet-canisters.bzl", "canisters")

canisters(
Expand Down Expand Up @@ -136,13 +134,8 @@ canisters(
},
)

load("@canisters//:defs.bzl", "deps")

deps()

#load("mainnet-canisters.bzl", "mainnet_ck_canisters", "mainnet_core_nns_canisters", "mainnet_sns_canisters")

###
load("@canisters//:defs.bzl", "canister_deps")
canister_deps()

# file server used in tests
oci_pull(
Expand Down
30 changes: 18 additions & 12 deletions bazel/mainnet-canisters.bzl
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
"""Mainnet canister definitions.
This creates a repository which exports 'canister_deps'. This macro can be
called to create one repository for each canister in the mainnet canister list.
"""

def _canisters_impl(repository_ctx):
reponames = dict(repository_ctx.attr.reponames)
filenames = dict(repository_ctx.attr.filenames)
Expand All @@ -8,27 +14,27 @@ def _canisters_impl(repository_ctx):
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_file")
def deps():
def canister_deps():
'''

for canisterkey in canister_keys:
canisterinfo = cans.pop(canisterkey, None)
for canister_key in canister_keys:
canisterinfo = cans.pop(canister_key, None)

git_commit_id = canisterinfo.get("rev", None)
if git_commit_id == None:
fail("bar")
fail("no rev for canister: "+canister_key)

sha256 = canisterinfo.get("sha256", None)
if sha256 == None:
fail("bar")
fail("no sha256 for canister: "+canister_key)

filename = filenames.pop(canisterkey, None)
filename = filenames.pop(canister_key, None)
if filename == None:
fail("FOO")
fail("no filename for canister: "+canister_key)

reponame = reponames.pop(canisterkey, None)
reponame = reponames.pop(canister_key, None)
if reponame == None:
fail("FOO")
fail("no reponame for canister: "+canister_key)

content += '''
Expand All @@ -42,13 +48,13 @@ def deps():
'''.format(git_commit_id = git_commit_id, filename = filename, sha256 = sha256, reponame = reponame)

if len(cans.keys()) != 0:
fail("foo" + ", ".join(cans.keys()))
fail("unused canisters: " + ", ".join(cans.keys()))

if len(reponames.keys()) != 0:
fail("foo" + ", ".join(reponames.keys()))
fail("unused reponames: " + ", ".join(reponames.keys()))

if len(filenames.keys()) != 0:
fail("foo" + ", ".join(filenames.keys()))
fail("unused filenames: " + ", ".join(filenames.keys()))

repository_ctx.file("BUILD.bazel", content = "\n", executable = False)
repository_ctx.file(
Expand Down
23 changes: 1 addition & 22 deletions mainnet-canisters.json
Original file line number Diff line number Diff line change
@@ -1,22 +1 @@
{
"governance": { "rev": "87343a880050ca72b1361138535211f5770dd52e", "sha256": "8665830c50c9a0dddd996008e537d060a380ac7b6c22237679bd0cecc4ee1044"},
"ledger": { "rev": "b0ade55f7e8999e2842fe3f49df163ba224b71a2", "sha256": "d0ec2cdeee48e2dbee07c59dfdc3928413de86930242fef0704ab7c1be6c7664"},
"archive": { "rev": "b43280208c32633a29657a1051660324e88a373d", "sha256": "db0f094005a0e84e243f8f300236be879dcefa412c2fd36d675390caa689d88d"},
"index": { "rev": "b43280208c32633a29657a1051660324e88a373d", "sha256": "62bbbada301838ad0f6e371415be990ce70e36c6f11267d4ba9fac8ff09aa32d"},
"root": { "rev": "a0207146be211cdff83321c99e9e70baa62733c7", "sha256": "c280a25dc565f8a42429cb5b969906c4c5a789381e98f6e11c247c91c4dfaac5"},
"registry": { "rev": "87343a880050ca72b1361138535211f5770dd52e", "sha256": "57c72469f01fd6ea8b5c5a962a1fed9b4ad550bbebdae38c29d5ad330c25c724"},
"lifeline": { "rev": "a0207146be211cdff83321c99e9e70baa62733c7", "sha256": "76978515223287ece643bc7ca087eb310412b737e2382a73b8ae55fcb458da5b"},
"genesis-token": { "rev": "cf237434877b39d0a94fb5ef84b13ea576a225ac", "sha256": "31d91cbdfa6e1aae4cc4fee4f611e25f33922bd3d336f4cdc97d511e03b264a7"},
"cycles-minting": { "rev": "77f48ae63af09b6538b1bf33d3accc3bc74d14f8", "sha256": "3260e795bd3e446a189539ce89d44cb29f7d196b92cdd2e2c75571c062ef1e50"},
"sns-wasm": { "rev": "87343a880050ca72b1361138535211f5770dd52e", "sha256": "6dd00ebe425ba360be161c880ce3a3b3cda5a3738d6b323a9fd0366debf590ce"},
"swap": { "rev": "87343a880050ca72b1361138535211f5770dd52e", "sha256": "4ea01d425cd9c6c0a2c4988af03710d7c2377527eb0375067c69a9baff9963f2"},
"sns_root": { "rev": "87343a880050ca72b1361138535211f5770dd52e", "sha256": "d52d44b6df33de56c5d02ecc8b26fbf7452df8e426d77ecc9f2e3c98a8a70316"},
"sns_governance": { "rev": "87343a880050ca72b1361138535211f5770dd52e", "sha256": "66156ae6686ac88836c51dc0dc970800bb83c607e83d2448c90336aa0f1ed589"},
"sns_index": { "rev": "3d0b3f10417fc6708e8b5d844a0bac5e86f3e17d", "sha256": "08ae5042c8e413716d04a08db886b8c6b01bb610b8197cdbe052c59538b924f0"},
"sns_ledger": { "rev": "3d0b3f10417fc6708e8b5d844a0bac5e86f3e17d", "sha256": "e8942f56f9439b89b13bd8037f357126e24f1e7932cf03018243347505959fd4"},
"sns_archive": { "rev": "3d0b3f10417fc6708e8b5d844a0bac5e86f3e17d", "sha256": "5c595c2adc7f6d9971298fee2fa666929711e73341192ab70804c783a0eee03f"},
"ck_btc_index": { "rev": "a3831c87440df4821b435050c8a8fcb3745d86f6", "sha256": "cac207cf438df8c9fba46d4445c097f05fd8228a1eeacfe0536b7e9ddefc5f1c"},
"ck_btc_ledger": { "rev": "a3831c87440df4821b435050c8a8fcb3745d86f6", "sha256": "4264ce2952c4e9ff802d81a11519d5e3ffdaed4215d5831a6634e59efd72f7d8"},
"ck_eth_index": { "rev": "a3831c87440df4821b435050c8a8fcb3745d86f6", "sha256": "8104acad6105abb069b2dbc8289692bd63c2d110127f8e91f99db51465962606"},
"ck_eth_ledger": { "rev": "a3831c87440df4821b435050c8a8fcb3745d86f6", "sha256": "e5c8a297d1c0c6d2ab2253c0280aaefd6e23fe3a8a994fc64706a1f3c3116062"}
}
{"archive":{"rev":"b43280208c32633a29657a1051660324e88a373d","sha256":"db0f094005a0e84e243f8f300236be879dcefa412c2fd36d675390caa689d88d"},"ck_btc_index":{"rev":"a3831c87440df4821b435050c8a8fcb3745d86f6","sha256":"cac207cf438df8c9fba46d4445c097f05fd8228a1eeacfe0536b7e9ddefc5f1c"},"ck_btc_ledger":{"rev":"a3831c87440df4821b435050c8a8fcb3745d86f6","sha256":"4264ce2952c4e9ff802d81a11519d5e3ffdaed4215d5831a6634e59efd72f7d8"},"ck_eth_index":{"rev":"a3831c87440df4821b435050c8a8fcb3745d86f6","sha256":"8104acad6105abb069b2dbc8289692bd63c2d110127f8e91f99db51465962606"},"ck_eth_ledger":{"rev":"a3831c87440df4821b435050c8a8fcb3745d86f6","sha256":"e5c8a297d1c0c6d2ab2253c0280aaefd6e23fe3a8a994fc64706a1f3c3116062"},"cycles-minting":{"rev":"77f48ae63af09b6538b1bf33d3accc3bc74d14f8","sha256":"3260e795bd3e446a189539ce89d44cb29f7d196b92cdd2e2c75571c062ef1e50"},"genesis-token":{"rev":"cf237434877b39d0a94fb5ef84b13ea576a225ac","sha256":"31d91cbdfa6e1aae4cc4fee4f611e25f33922bd3d336f4cdc97d511e03b264a7"},"governance":{"rev":"87343a880050ca72b1361138535211f5770dd52e","sha256":"8665830c50c9a0dddd996008e537d060a380ac7b6c22237679bd0cecc4ee1044"},"index":{"rev":"b43280208c32633a29657a1051660324e88a373d","sha256":"62bbbada301838ad0f6e371415be990ce70e36c6f11267d4ba9fac8ff09aa32d"},"ledger":{"rev":"b0ade55f7e8999e2842fe3f49df163ba224b71a2","sha256":"d0ec2cdeee48e2dbee07c59dfdc3928413de86930242fef0704ab7c1be6c7664"},"lifeline":{"rev":"a0207146be211cdff83321c99e9e70baa62733c7","sha256":"76978515223287ece643bc7ca087eb310412b737e2382a73b8ae55fcb458da5b"},"registry":{"rev":"87343a880050ca72b1361138535211f5770dd52e","sha256":"57c72469f01fd6ea8b5c5a962a1fed9b4ad550bbebdae38c29d5ad330c25c724"},"root":{"rev":"a0207146be211cdff83321c99e9e70baa62733c7","sha256":"c280a25dc565f8a42429cb5b969906c4c5a789381e98f6e11c247c91c4dfaac5"},"sns-wasm":{"rev":"87343a880050ca72b1361138535211f5770dd52e","sha256":"6dd00ebe425ba360be161c880ce3a3b3cda5a3738d6b323a9fd0366debf590ce"},"sns_archive":{"rev":"3d0b3f10417fc6708e8b5d844a0bac5e86f3e17d","sha256":"5c595c2adc7f6d9971298fee2fa666929711e73341192ab70804c783a0eee03f"},"sns_governance":{"rev":"87343a880050ca72b1361138535211f5770dd52e","sha256":"66156ae6686ac88836c51dc0dc970800bb83c607e83d2448c90336aa0f1ed589"},"sns_index":{"rev":"3d0b3f10417fc6708e8b5d844a0bac5e86f3e17d","sha256":"08ae5042c8e413716d04a08db886b8c6b01bb610b8197cdbe052c59538b924f0"},"sns_ledger":{"rev":"3d0b3f10417fc6708e8b5d844a0bac5e86f3e17d","sha256":"e8942f56f9439b89b13bd8037f357126e24f1e7932cf03018243347505959fd4"},"sns_root":{"rev":"87343a880050ca72b1361138535211f5770dd52e","sha256":"d52d44b6df33de56c5d02ecc8b26fbf7452df8e426d77ecc9f2e3c98a8a70316"},"swap":{"rev":"87343a880050ca72b1361138535211f5770dd52e","sha256":"4ea01d425cd9c6c0a2c4988af03710d7c2377527eb0375067c69a9baff9963f2"}}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ DEPENDENCIES = [
"@crate_index//:ic-wasm__ic-wasm",
"@crate_index//:rgb",
"@crate_index//:serde",
"@crate_index//:serde_json",
"@crate_index//:tempfile",
"@crate_index//:tokio",
]
Expand All @@ -28,10 +29,10 @@ rust_binary(
srcs = [
"src/main.rs",
],
args = ["$(location //:mainnet-canisters.bzl) $(location @crate_index//:ic-wasm__ic-wasm)"],
args = ["$(location //:mainnet-canisters.json) $(location @crate_index//:ic-wasm__ic-wasm)"],
data = [
":tools",
"//:mainnet-canisters.bzl",
"//:mainnet-canisters.json",
],
deps = DEPENDENCIES,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use ic_nns_constants::{
};
use std::env;
use std::fs::File;
use std::io::{BufRead, BufReader, Write};
use std::io::BufReader;
use std::path::{Path, PathBuf};

pub const NNS_CANISTER_NAME_TO_ID: [(&str, CanisterId); 8] = [
Expand Down Expand Up @@ -173,7 +173,7 @@ struct CanisterUpdate {
}

fn update_mainnet_canisters_bzl_file(
workspace_file_path: &Path,
canisters_json: &Path,
updates: Vec<CanisterUpdate>,
) -> Result<()> {
if updates.is_empty() {
Expand All @@ -182,53 +182,32 @@ fn update_mainnet_canisters_bzl_file(
}

// Read the existing content of the file
let file = File::open(workspace_file_path)?;
let file = File::open(canisters_json)?;
let reader = BufReader::new(file);
let orig: serde_json::Value =
serde_json::from_reader(reader).expect("Could not read canister data");

let mut new_content = Vec::new();

let max_canister_name_len = updates
.iter()
.map(|update| update.canister_name.len())
.max()
.unwrap();

for line in reader.lines() {
let mut line = line?;

for update in &updates {
if line.contains(&format!(r#" "{name}": "#, name = update.canister_name)) {
// If the canister_name matches, we store the context of what we'll update in the following lines
let new_line = format!(
r#" "{name}": ("{git_hash}", "{sha256}"),"#,
name = update.canister_name,
git_hash = update.new_git_hash,
sha256 = update.new_sha256
);
if line != new_line {
println!(
"{name:>max_canister_name_len$} | updated",
name = update.canister_name
);
} else {
println!(
"{name:>max_canister_name_len$} | nothing to update",
name = update.canister_name
);
}
line = new_line;
break;
}
}

new_content.push(line);
// The map containing canister data
let mut m = match orig {
serde_json::Value::Object(m) => m.clone(),
_ => panic!("Expected canister data to be a JSON map"),
};

// For each update, insert the new canister values into the map. Note that this
// does not remove e.g. outdated canisters.
for canister in &updates {
let rev = serde_json::Value::String(canister.new_git_hash.clone());
let sha256 = serde_json::Value::String(canister.new_sha256.clone());
let mut entry = serde_json::Map::new();
let _ = entry.insert("rev".to_string(), rev);
let _ = entry.insert("sha256".to_string(), sha256);
let entry = serde_json::Value::Object(entry);
let _prev = m.insert(canister.canister_name.clone(), entry);
}

// Write the new content back to the file
let mut file = File::create(workspace_file_path)?;
for line in &new_content {
writeln!(file, "{}", line)?;
}
let file = File::create(canisters_json)?;
serde_json::to_writer(file, &m).unwrap();

Ok(())
}

0 comments on commit 151184a

Please sign in to comment.