Skip to content

Commit 636b792

Browse files
authored
Copy receiver binary over correctly (#1278)
Copy receiver binary over correctly Co-authored-by: gyuheon.oh <[email protected]>
1 parent 9ded162 commit 636b792

File tree

1 file changed

+52
-1
lines changed

1 file changed

+52
-1
lines changed

builder/src/crashtracker.rs

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,58 @@ impl CrashTracker {
4141
config
4242
};
4343

44-
let _dst = config.build();
44+
let dst = config.build();
45+
46+
// Copy the built binary to the target bin directory
47+
let binary_name = "libdatadog-crashtracking-receiver";
48+
let target_binary = PathBuf::from(self.target_dir.as_ref())
49+
.join("bin")
50+
.join(binary_name);
51+
52+
// The CMake install location depends on whether target_dir is absolute or relative
53+
let cmake_installed_binary = if PathBuf::from(self.target_dir.as_ref()).is_absolute() {
54+
// For absolute paths, CMake installs directly to target_dir/bin
55+
PathBuf::from(self.target_dir.as_ref())
56+
.join("bin")
57+
.join(binary_name)
58+
} else {
59+
// For relative paths, CMake installs to build/target_dir/bin
60+
dst.join("build")
61+
.join(self.target_dir.as_ref())
62+
.join("bin")
63+
.join(binary_name)
64+
};
65+
66+
// Check if source and target are the same path
67+
if cmake_installed_binary == target_binary {
68+
let metadata = fs::metadata(&cmake_installed_binary)?;
69+
anyhow::ensure!(
70+
metadata.len() > 0,
71+
"CMake built {} but it's empty",
72+
binary_name
73+
);
74+
return Ok(());
75+
}
76+
77+
if cmake_installed_binary.exists() {
78+
let metadata = fs::metadata(&cmake_installed_binary)?;
79+
anyhow::ensure!(
80+
metadata.len() > 0,
81+
"CMake built {} but it's empty",
82+
binary_name
83+
);
84+
85+
fs::copy(&cmake_installed_binary, &target_binary)?;
86+
87+
let target_metadata = fs::metadata(&target_binary)?;
88+
anyhow::ensure!(target_metadata.len() > 0, "Copied {} is empty", binary_name);
89+
} else {
90+
anyhow::bail!(
91+
"CMake did not produce {} at {}",
92+
binary_name,
93+
cmake_installed_binary.display()
94+
);
95+
}
4596
}
4697

4798
Ok(())

0 commit comments

Comments
 (0)