rust: Fix compile error if build dir and DL_DIR on separate filesystems
authorJeffery To <redacted>
Thu, 26 Oct 2023 07:48:28 +0000 (15:48 +0800)
committerRosen Penev <redacted>
Mon, 30 Oct 2023 20:29:33 +0000 (13:29 -0700)
commitf9f1e0220f872263d8f12c38df9984a40625430f
treeee2337a2ca1ac1da1cd8c6affcb4fdc00e8bcd0f
parentbd21652b79175de0ec017761ff1e259a562104e9
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 <redacted>
lang/rust/patches/0002-rustc-bootstrap-cache.patch
git clone https://git.99rst.org/PROJECT