Skip to content

Commit 64af7d9

Browse files
committed
minor update
1 parent 31892ca commit 64af7d9

2 files changed

Lines changed: 46 additions & 25 deletions

File tree

crates/movy-replay/src/env.rs

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -153,16 +153,32 @@ impl<
153153
let package_names = compiled_result.package_names.clone();
154154
let compiled_result = compiled_result.movy_mock()?;
155155

156-
// Deploy onchain deps (execpt stds)
157-
for dep in abi_result.dependencies().iter() {
158-
let dep = AccountAddress::from(*dep);
159-
if self.db.get_object(&dep.into()).is_none() {
156+
// Deploy onchain deps or deps used by immediate dependencies
157+
for dep in abi_result.dependencies().iter().map(|v| v.clone()).chain(
158+
abi_result
159+
.all_modules_iter()
160+
.map(|t| {
161+
t.immediate_dependencies()
162+
.into_iter()
163+
.map(|im| (*im.address()).into())
164+
})
165+
.flatten(),
166+
) {
167+
let dep = AccountAddress::from(dep);
168+
169+
if dep != AccountAddress::ZERO && self.db.get_object(&dep.into()).is_none() {
160170
tracing::info!(
161171
"Dependency {} not found in our db for {}, trying to fetch it from onchain",
162172
dep,
163173
path.display()
164174
);
165-
self.deploy_package_at_address(dep.into(), rpc).await?;
175+
if let Err(e) = self.deploy_package_at_address(dep.into(), rpc).await {
176+
tracing::warn!(
177+
"Fail to add the object {} due to {}, this might be fine though.",
178+
dep,
179+
e
180+
);
181+
}
166182
}
167183
}
168184

@@ -317,12 +333,14 @@ impl<
317333
.ok_or_else(|| eyre!("Expected package data for {}", object.id()))?;
318334

319335
for upgrade_info in pkg.linkage_table().values() {
320-
tracing::info!(
321-
"Fetching ugprade cap {} from chain",
322-
upgrade_info.upgraded_id
323-
);
324-
self.deploy_object_id(upgrade_info.upgraded_id.into(), rpc)
325-
.await?;
336+
if self.db.get_object(&upgrade_info.upgraded_id).is_none() {
337+
tracing::info!(
338+
"Fetching ugprade cap {} from chain",
339+
upgrade_info.upgraded_id
340+
);
341+
self.deploy_object_id(upgrade_info.upgraded_id.into(), rpc)
342+
.await?;
343+
}
326344
}
327345
self.db.commit_single_object(object)?;
328346
} else {

crates/movy-sui/src/compile.rs

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,7 @@ impl Display for SuiCompiledPackage {
9191
format!("{}:{}", id.address(), id.name().as_str())
9292
})
9393
.join(", "),
94-
self.published_dependencies
95-
.iter()
96-
.map(|t| t.to_string())
97-
.join(", ")
94+
self.dependencies.iter().map(|t| t.to_string()).join(", ")
9895
))
9996
}
10097
}
@@ -110,7 +107,7 @@ impl SuiCompiledPackage {
110107
MovePackageAbi::from_sui_id_and_modules(self.package_id, self.all_modules_iter())
111108
}
112109
pub fn dependencies(&self) -> &Vec<ObjectID> {
113-
&self.published_dependencies
110+
&self.dependencies
114111
}
115112

116113
pub fn test_modules(&self) -> Vec<&CompiledModule> {
@@ -167,7 +164,7 @@ impl SuiCompiledPackage {
167164
published_dependencies: self.published_dependencies.clone(),
168165
};
169166

170-
let deps: BTreeSet<ObjectID> = self.published_dependencies.clone().into_iter().collect();
167+
let deps: BTreeSet<ObjectID> = self.dependencies.clone().into_iter().collect();
171168
for md in self.modules.iter() {
172169
let md = Self::mock_module(md);
173170
// deps.extend(
@@ -330,25 +327,31 @@ impl SuiCompiledPackage {
330327
.published
331328
.iter()
332329
.map(|v| *v.1)
330+
// .chain(modules.iter().map(|v| {
331+
// v.immediate_dependencies().into_iter().map(|t| (*t.address()).into()) // we comment this because we may add multiple addresses that belongs to the upgraded packages which share the same UpgradeCap.
332+
// }).flatten())
333+
.filter(|t| t != &ObjectID::ZERO && t != &root_address)
333334
.collect::<BTreeSet<ObjectID>>();
334335

336+
let published: Vec<ObjectID> = artifacts
337+
.dependency_ids
338+
.published
339+
.values()
340+
.cloned()
341+
.collect();
335342
debug!(
336-
"Package {} transitively depends on {}",
343+
"Package {} transitively depends on {}, the publised ids are {}",
337344
root_address,
338-
deps.iter().map(|t| t.to_string()).join(",")
345+
deps.iter().map(|t| t.to_string()).join(","),
346+
published.iter().map(|t| t.to_string()).join(",")
339347
);
340348
Ok(SuiCompiledPackage {
341349
package_id: (*root_address).into(),
342350
package_name,
343351
package_names,
344352
modules,
345353
dependencies: deps.into_iter().collect(),
346-
published_dependencies: artifacts
347-
.dependency_ids
348-
.published
349-
.values()
350-
.cloned()
351-
.collect(),
354+
published_dependencies: published,
352355
})
353356
}
354357

0 commit comments

Comments
 (0)