rust: Fix compile error if build dir and DL_DIR on separate filesystems
authorJeffery To <jeffery.to@gmail.com>
Thu, 26 Oct 2023 07:48:28 +0000 (15:48 +0800)
committerJeffery To <jeffery.to@gmail.com>
Tue, 31 Oct 2023 04:16:04 +0000 (12:16 +0800)
commitca8eb766aa836b88b5220a094b6462f0b27b776b
tree8cf3a863c2014c22169a41708e4d8cd465a26fec
parente85363a5a5a9451f960712570ff6c0aaa112d20f
rust: Fix compile error if build dir and DL_DIR on separate filesystems

The rust bootstrap downloads files into a "tmp" directory then moves the
files into the "cache" directory using std::fs::rename. There are no
issues in the original/unpatched case as "tmp" and "cache" are
subdirectories in the build directory ($(HOST_BUILD_DIR)/build) and so
are nearly guaranteed to be on the same filesystem.

35768bf31e5867046874dc6fd0374ff8fe575da2 changed where files are
saved/cached (in $(DL_DIR)/rustc). If HOST_BUILD_DIR and DL_DIR are on
separate filesystems, then using std::fs::rename to move the files will
fail.[1]

This updates 0002-rustc-bootstrap-cache.patch to account for this case,
i.e. if std::fs::rename fails, fall back to copying the file then
removing the original.

[1]: https://github.com/openwrt/packages/pull/22457

Fixes: 35768bf31e58 ("rust: Cache bootstrap downloads to $(DL_DIR)/rustc")
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
(cherry picked from commit f9f1e0220f872263d8f12c38df9984a40625430f)
lang/rust/patches/0002-rustc-bootstrap-cache.patch