rust: fix building on macOS (
issue6801)
The VFS change is copied over from Cargo, and likely to apply to other
platforms as well.
The dirstate change is essentially a replay of
440972d2175d, which was
reverted in
e98fd81bb151, part of !383, to silence some clippy
warnings.
--- a/rust/hg-core/src/dirstate_tree/on_disk.rs Wed Mar 08 00:46:53 2023 +0100
+++ b/rust/hg-core/src/dirstate_tree/on_disk.rs Tue Mar 07 13:39:31 2023 +0100
@@ -415,9 +415,9 @@
fn synthesize_unix_mode(&self) -> u32 {
let file_type = if self.flags().contains(Flags::MODE_IS_SYMLINK) {
- libc::S_IFLNK
+ libc::S_IFLNK as u32
} else {
- libc::S_IFREG
+ libc::S_IFREG as u32
};
let permissions = if self.flags().contains(Flags::MODE_EXEC_PERM) {
0o755
--- a/rust/hg-core/src/vfs.rs Wed Mar 08 00:46:53 2023 +0100
+++ b/rust/hg-core/src/vfs.rs Tue Mar 07 13:39:31 2023 +0100
@@ -193,3 +193,13 @@
r == 0 && buf.f_type as u32 == libc::NFS_SUPER_MAGIC as u32
}
}
+
+/// Similar to what Cargo does; although detecting NFS (or non-local
+/// file systems) _should_ be possible on other operating systems,
+/// we'll just assume that mmap() works there, for now; after all,
+/// _some_ functionality is better than a compile error, i.e. none at
+/// all
+#[cfg(not(target_os = "linux"))]
+pub(crate) fn is_on_nfs_mount(_path: impl AsRef<Path>) -> bool {
+ false
+}