diff options
| author | Alexander Karatarakis <alkarata@microsoft.com> | 2018-06-14 13:59:51 -0700 |
|---|---|---|
| committer | Alexander Karatarakis <alkarata@microsoft.com> | 2018-06-14 14:01:47 -0700 |
| commit | 7ba1c76781afd4ab4cd5afda8f21d296715f780d (patch) | |
| tree | d7a9eff086dae22ca2438ee29e9eb35daf79f5de | |
| parent | fb7b8365fe34c8037ef504339abf4db07930fdaa (diff) | |
| download | vcpkg-7ba1c76781afd4ab4cd5afda8f21d296715f780d.tar.gz vcpkg-7ba1c76781afd4ab4cd5afda8f21d296715f780d.zip | |
Add retries to post-extract rename
| -rw-r--r-- | toolsrc/src/vcpkg/commands.fetch.cpp | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/toolsrc/src/vcpkg/commands.fetch.cpp b/toolsrc/src/vcpkg/commands.fetch.cpp index 8fe4b489c..03f7a8a45 100644 --- a/toolsrc/src/vcpkg/commands.fetch.cpp +++ b/toolsrc/src/vcpkg/commands.fetch.cpp @@ -7,6 +7,7 @@ #include <vcpkg/base/util.h> #include <vcpkg/commands.h> #include <vcpkg/help.h> +# namespace vcpkg::Commands::Fetch { @@ -316,9 +317,19 @@ namespace vcpkg::Commands::Fetch #endif fs.rename(to_path_partial, to_path, ec); + + for (int i = 0; i < 5 && ec; i++) + { + i++; + using namespace std::chrono_literals; + std::this_thread::sleep_for(i * 100ms); + fs.rename(to_path_partial, to_path, ec); + } + Checks::check_exit(VCPKG_LINE_INFO, !ec, - "Failed to do post-extract rename-in-place.\nfs.rename(%s, %s, %s)", + "Failed to do post-extract rename-in-place.\n" + "fs.rename(%s, %s, %s)", to_path_partial.u8string(), to_path.u8string(), ec.message()); @@ -450,7 +461,8 @@ namespace vcpkg::Commands::Fetch fs.rename(download_path_part, download_path, ec); Checks::check_exit(VCPKG_LINE_INFO, !ec, - "Failed to do post-download rename-in-place.\nfs.rename(%s, %s, %s)", + "Failed to do post-download rename-in-place.\n" + "fs.rename(%s, %s, %s)", download_path_part, download_path.u8string(), ec.message()); @@ -463,9 +475,10 @@ namespace vcpkg::Commands::Fetch Checks::check_exit(VCPKG_LINE_INFO, !tool_data.url.empty(), "A suitable version of %s was not found (required v%s) and unable to automatically " - "download a portable one. Please install a newer version of git.", + "download a portable one. Please install a newer version of %s.", tool_name, - version_as_string); + version_as_string, + tool_name); System::println("A suitable version of %s was not found (required v%s). Downloading portable %s v%s...", tool_name, version_as_string, |
