[rust-project] Always use forward slashes in sysroot paths
Backslashes were not getting escaped in the JSON output, so go back to
using forward slashes which still work on Windows.
Change-Id: Icb395f7daa1c57b418dec791c2ab5d2259dadea9
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/17780
Reviewed-by: Takuto Ikuta <tikuta@google.com>
Commit-Queue: Tyler Mandry <tmandry@google.com>
diff --git a/src/gn/rust_project_writer.cc b/src/gn/rust_project_writer.cc
index a77c3f1..6c9aef8 100644
--- a/src/gn/rust_project_writer.cc
+++ b/src/gn/rust_project_writer.cc
@@ -258,15 +258,8 @@
if (sysroot.has_value()) {
base::FilePath rebased_out_dir =
build_settings->GetFullPath(build_settings->build_dir());
- base::FilePath sysroot_path =
- rebased_out_dir.Append(UTF8ToFilePath(sysroot.value()));
- base::FilePath sysroot_src_path = sysroot_path.AppendASCII("lib")
- .AppendASCII("rustlib")
- .AppendASCII("src")
- .AppendASCII("rust")
- .AppendASCII("library");
- std::string sysroot_dir = FilePathToUTF8(sysroot_path);
- std::string sysroot_src_dir = FilePathToUTF8(sysroot_src_path);
+ std::string sysroot_dir = FilePathToUTF8(rebased_out_dir) + sysroot.value();
+ std::string sysroot_src_dir = sysroot_dir + "/lib/rustlib/src/rust/library";
rust_project << " \"sysroot\": \"" << sysroot_dir << "\"," NEWLINE;
rust_project << " \"sysroot_src\": \"" << sysroot_src_dir << "\"," NEWLINE;
}
diff --git a/src/gn/rust_project_writer_helpers_unittest.cc b/src/gn/rust_project_writer_helpers_unittest.cc
index 7ef39e2..87ccd83 100644
--- a/src/gn/rust_project_writer_helpers_unittest.cc
+++ b/src/gn/rust_project_writer_helpers_unittest.cc
@@ -110,15 +110,9 @@
const char expected_json[] =
"{\n"
-#if defined(OS_WIN)
- " \"sysroot\": \"/root/out/Debug\\sysroot\",\n"
- " \"sysroot_src\": "
- "\"/root/out/Debug\\sysroot\\lib\\rustlib\\src\\rust\\library\",\n"
-#else
" \"sysroot\": \"/root/out/Debug/sysroot\",\n"
" \"sysroot_src\": "
"\"/root/out/Debug/sysroot/lib/rustlib/src/rust/library\",\n"
-#endif
" \"crates\": [\n"
" ]\n"
"}\n";