rust: reproducibility issue fix with v1.78 A few crates are using the updated version of the 'cc' crate and this is causing the generated object file names containing a unique hashmap id. The hashmap addition to generated files is reverted here. Below are the links for detailed bug description & discusssion with upstream rust. https://github.com/rust-lang/cc-rs/issues/1117 Upstream-Status: Inappropriate [https://github.com/rust-lang/cc-rs/issues/1117] Signed-off-by: Harish Sadineni --- a/vendor/cc-1.0.83/src/lib.rs +++ b/vendor/cc-1.0.83/src/lib.rs @@ -54,12 +54,11 @@ #![deny(missing_docs)] use std::borrow::Cow; -use std::collections::{hash_map, HashMap}; +use std::collections::HashMap; use std::env; use std::ffi::{OsStr, OsString}; use std::fmt::{self, Display, Formatter}; use std::fs::{self, File}; -use std::hash::Hasher; use std::io::{self, BufRead, BufReader, Read, Write}; use std::path::{Component, Path, PathBuf}; use std::process::{Child, Command, Stdio}; @@ -1108,25 +1107,7 @@ let mut objects = Vec::new(); for file in self.files.iter() { - let obj = if file.has_root() || file.components().any(|x| x == Component::ParentDir) { - // If `file` is an absolute path or might not be usable directly as a suffix due to - // using "..", use the `basename` prefixed with the `dirname`'s hash to ensure name - // uniqueness. - let basename = file - .file_name() - .ok_or_else(|| Error::new(ErrorKind::InvalidArgument, "file_name() failure"))? - .to_string_lossy(); - let dirname = file - .parent() - .ok_or_else(|| Error::new(ErrorKind::InvalidArgument, "parent() failure"))? - .to_string_lossy(); - let mut hasher = hash_map::DefaultHasher::new(); - hasher.write(dirname.to_string().as_bytes()); - dst.join(format!("{:016x}-{}", hasher.finish(), basename)) - .with_extension("o") - } else { - dst.join(file).with_extension("o") - }; + let obj = dst.join(file).with_extension("o"); let obj = if !obj.starts_with(&dst) { dst.join(obj.file_name().ok_or_else(|| { Error::new(ErrorKind::IOError, "Getting object file details failed.") --- a/vendor/cc-1.0.83/.cargo-checksum.json +++ b/vendor/cc-1.0.83/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"Cargo.lock":"f36b5fb99e6a2272cb5ad088fb7e21baa135c5335f9babfd3d6e79cd915d5082","Cargo.toml":"2be00f2836c949a6ff7120610ee0191a6d12d50f141aafd6622d4c2e932f0d71","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"fe18a56553aa54cbef39b659e98340ddf4dbb18f156e7b34a8be25d97e4d123f","src/bin/gcc-shim.rs":"36dc4e447428e73c548cc7106ca1e8f282c098463b014e13a729a44445de4880","src/com.rs":"cf188faf2651f613ee5c38fd6af29188ff4b0c3036b615874bce0e3b6e61a96f","src/lib.rs":"cdf0c6dc4e12ad313fb93ab42f994e26c7e5aaeb07ca61620032d8f4014dacd0","src/os_pipe.rs":"5b950b491b93226885c34a9070387c081f50029fdf19770bb983bca2a64aa705","src/os_pipe/unix.rs":"64a765352b3e94c4590d11f99824dc60a887fe5bc61eba81398aab1180908f55","src/os_pipe/windows.rs":"fa35d5b6adb83a8442ec06b08f3d30631ac7b8513f3cf8b3986d27b7ee58cf93","src/registry.rs":"d888d22abd8a32a61562529274b2d5d2f9e5a3bfa754589d6beb04b740144771","src/setup_config.rs":"5fee84b80d089ae4a92f10080b072ea2bb32c2edbcdc759cb9072e380404fc46","src/vs_instances.rs":"2d3f8278a803b0e7052f4eeb1979b29f963dd0143f4458e2cb5f33c4e5f0963b","src/winapi.rs":"132a7c23d57911db0bef03446cd106e7f75818096132522219d72b9d2a8f247f","src/windows_registry.rs":"c58ae361caf3b6f13dff515e25b3a7e5cf443bb9470d2d347784b5872c3de06d","src/windows_sys.rs":"ff7cdf4450db85c8704dfd3aa765dd62da24f0650825457094405af82958f688","tests/cc_env.rs":"e02b3b0824ad039b47e4462c5ef6dbe6c824c28e7953af94a0f28f7b5158042e","tests/cflags.rs":"57f06eb5ce1557e5b4a032d0c4673e18fbe6f8d26c1deb153126e368b96b41b3","tests/cxxflags.rs":"c2c6c6d8a0d7146616fa1caed26876ee7bc9fcfffd525eb4743593cade5f3371","tests/support/mod.rs":"a3c8d116973bb16066bf6ec4de5143183f97de7aad085d85f8118a2eaac3e1e0","tests/test.rs":"bab74eb7e7a383cb5da4143e74c26ddfa3e7162b5f46c1d46a722250e925444d"},"package":"f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"} \ No newline at end of file +{"files":{"Cargo.lock":"f36b5fb99e6a2272cb5ad088fb7e21baa135c5335f9babfd3d6e79cd915d5082","Cargo.toml":"2be00f2836c949a6ff7120610ee0191a6d12d50f141aafd6622d4c2e932f0d71","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"fe18a56553aa54cbef39b659e98340ddf4dbb18f156e7b34a8be25d97e4d123f","src/bin/gcc-shim.rs":"36dc4e447428e73c548cc7106ca1e8f282c098463b014e13a729a44445de4880","src/com.rs":"cf188faf2651f613ee5c38fd6af29188ff4b0c3036b615874bce0e3b6e61a96f","src/lib.rs":"c5a1ae53355aae6da9179faa7c46277fc86d9ca46e37a0eb296cd92eb3f0ca72","src/os_pipe.rs":"5b950b491b93226885c34a9070387c081f50029fdf19770bb983bca2a64aa705","src/os_pipe/unix.rs":"64a765352b3e94c4590d11f99824dc60a887fe5bc61eba81398aab1180908f55","src/os_pipe/windows.rs":"fa35d5b6adb83a8442ec06b08f3d30631ac7b8513f3cf8b3986d27b7ee58cf93","src/registry.rs":"d888d22abd8a32a61562529274b2d5d2f9e5a3bfa754589d6beb04b740144771","src/setup_config.rs":"5fee84b80d089ae4a92f10080b072ea2bb32c2edbcdc759cb9072e380404fc46","src/vs_instances.rs":"2d3f8278a803b0e7052f4eeb1979b29f963dd0143f4458e2cb5f33c4e5f0963b","src/winapi.rs":"132a7c23d57911db0bef03446cd106e7f75818096132522219d72b9d2a8f247f","src/windows_registry.rs":"c58ae361caf3b6f13dff515e25b3a7e5cf443bb9470d2d347784b5872c3de06d","src/windows_sys.rs":"ff7cdf4450db85c8704dfd3aa765dd62da24f0650825457094405af82958f688","tests/cc_env.rs":"e02b3b0824ad039b47e4462c5ef6dbe6c824c28e7953af94a0f28f7b5158042e","tests/cflags.rs":"57f06eb5ce1557e5b4a032d0c4673e18fbe6f8d26c1deb153126e368b96b41b3","tests/cxxflags.rs":"c2c6c6d8a0d7146616fa1caed26876ee7bc9fcfffd525eb4743593cade5f3371","tests/support/mod.rs":"a3c8d116973bb16066bf6ec4de5143183f97de7aad085d85f8118a2eaac3e1e0","tests/test.rs":"bab74eb7e7a383cb5da4143e74c26ddfa3e7162b5f46c1d46a722250e925444d"},"package":"f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"} --- a/vendor/cc/src/command_helpers.rs +++ b/vendor/cc/src/command_helpers.rs @@ -1,11 +1,9 @@ //! Miscellaneous helpers for running commands use std::{ - collections::hash_map, ffi::OsString, fmt::Display, fs, - hash::Hasher, io::{self, Read, Write}, path::Path, process::{Child, ChildStderr, Command, Stdio}, @@ -254,32 +254,7 @@ pub(crate) fn objects_from_files(files: &[Arc], dst: &Path) -> Result, Error> { let mut objects = Vec::with_capacity(files.len()); for file in files { - let basename = file - .file_name() - .ok_or_else(|| { - Error::new( - ErrorKind::InvalidArgument, - "No file_name for object file path!", - ) - })? - .to_string_lossy(); - let dirname = file - .parent() - .ok_or_else(|| { - Error::new( - ErrorKind::InvalidArgument, - "No parent for object file path!", - ) - })? - .to_string_lossy(); - - // Hash the dirname. This should prevent conflicts if we have multiple - // object files with the same filename in different subfolders. - let mut hasher = hash_map::DefaultHasher::new(); - hasher.write(dirname.to_string().as_bytes()); - let obj = dst - .join(format!("{:016x}-{}", hasher.finish(), basename)) - .with_extension("o"); + let obj = dst.join(file).with_extension("o"); match obj.parent() { Some(s) => fs::create_dir_all(s)?, --- a/vendor/cc/.cargo-checksum.json +++ b/vendor/cc/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"Cargo.toml":"ad60f12609a272a3d052258f9521807fd627181125e84dd988ddb2b2e7dfedf6","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"f1ddbede208a5b78333a25dac0a7598e678e9b601a7d99a791069bddaf180dfe","src/command_helpers.rs":"3ef95bdcd79a43406fdab275d8a8f45ba787876399b54df34068955ec0109e69","src/lib.rs":"71e55cf18e32dab3b9feae2add4ff57932a10084cc5aad4680c12eb3a91ed124","src/parallel/async_executor.rs":"4ce24435fff6b6555b43fee042c16bd65d4150d0346567f246b9190d85b45983","src/parallel/job_token.rs":"0676c3177b5be9d7ede483bf4bd45c5ca0f5511073e4d1c9f181a0bc83db05dc","src/parallel/mod.rs":"aaffed5ad3dc0d28641533ab0d6f522bf34a059d4b1a239dc4d217cb5d58e232","src/parallel/stderr.rs":"a2d18ba3f2e04deb9047ece9ab7ca5452d9a76b515afbe20a76307e31597f34b","src/tool.rs":"172cfcbecd7c6a363ea841a48a10a75b0a01e83b83c0691107c601598b68dedf","src/windows/com.rs":"be1564756c9f3ef1398eafeed7b54ba610caba28e8f6258d28a997737ebf9535","src/windows/find_tools.rs":"f6f391294511c376c3ce10ac2fd29967fe6f21d256d9575d8733c1c7cb1befde","src/windows/mod.rs":"42f1ad7fee35a17686b003e6aa520d3d1940d47d2f531d626e9ae0c48ba49005","src/windows/registry.rs":"c521b72c825e8095843e73482ffa810ed066ad8bb9f86e6db0c5c143c171aba1","src/windows/setup_config.rs":"754439cbab492afd44c9755abcbec1a41c9b2c358131cee2df13c0e996dbbec8","src/windows/vs_instances.rs":"76e3cee74b5fd38ddaf533bba11fe401667c50dda5f9d064099840893eaa7587","src/windows/winapi.rs":"250d51c1826d1a2329e9889dd9f058cfce253dbf2a678b076147c6cdb5db046c","src/windows/windows_sys.rs":"f6b90b87f23e446284bde86749b53858c0d37b8a43515ed8d0e90b1ac8cf7771"},"package":"8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5"} \ No newline at end of file +{"files":{"Cargo.toml":"ad60f12609a272a3d052258f9521807fd627181125e84dd988ddb2b2e7dfedf6","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"f1ddbede208a5b78333a25dac0a7598e678e9b601a7d99a791069bddaf180dfe","src/command_helpers.rs":"0977a08e49a78e4065858e650a7e92151806e247b542b87cbbeee96a9177153c","src/lib.rs":"71e55cf18e32dab3b9feae2add4ff57932a10084cc5aad4680c12eb3a91ed124","src/parallel/async_executor.rs":"4ce24435fff6b6555b43fee042c16bd65d4150d0346567f246b9190d85b45983","src/parallel/job_token.rs":"0676c3177b5be9d7ede483bf4bd45c5ca0f5511073e4d1c9f181a0bc83db05dc","src/parallel/mod.rs":"aaffed5ad3dc0d28641533ab0d6f522bf34a059d4b1a239dc4d217cb5d58e232","src/parallel/stderr.rs":"a2d18ba3f2e04deb9047ece9ab7ca5452d9a76b515afbe20a76307e31597f34b","src/tool.rs":"172cfcbecd7c6a363ea841a48a10a75b0a01e83b83c0691107c601598b68dedf","src/windows/com.rs":"be1564756c9f3ef1398eafeed7b54ba610caba28e8f6258d28a997737ebf9535","src/windows/find_tools.rs":"f6f391294511c376c3ce10ac2fd29967fe6f21d256d9575d8733c1c7cb1befde","src/windows/mod.rs":"42f1ad7fee35a17686b003e6aa520d3d1940d47d2f531d626e9ae0c48ba49005","src/windows/registry.rs":"c521b72c825e8095843e73482ffa810ed066ad8bb9f86e6db0c5c143c171aba1","src/windows/setup_config.rs":"754439cbab492afd44c9755abcbec1a41c9b2c358131cee2df13c0e996dbbec8","src/windows/vs_instances.rs":"76e3cee74b5fd38ddaf533bba11fe401667c50dda5f9d064099840893eaa7587","src/windows/winapi.rs":"250d51c1826d1a2329e9889dd9f058cfce253dbf2a678b076147c6cdb5db046c","src/windows/windows_sys.rs":"f6b90b87f23e446284bde86749b53858c0d37b8a43515ed8d0e90b1ac8cf7771"},"package":"8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5"}