Do not cleanup args.gn imports located in the output directory. gn cleanup should keep files that are imported by args.gn and located in the output directory. Change-Id: I98116dd3f57765a5c160d7b82bd8104a747dd469 Reviewed-on: https://gn-review.googlesource.com/c/gn/+/17360 Commit-Queue: Takuto Ikuta <tikuta@google.com> Reviewed-by: Dirk Pranke <dpranke@google.com> Reviewed-by: Takuto Ikuta <tikuta@google.com>
diff --git a/AUTHORS b/AUTHORS index f7f74c1..956f1db 100644 --- a/AUTHORS +++ b/AUTHORS
@@ -21,6 +21,7 @@ Vivaldi Technologies AS <*@vivaldi.com> Yandex LLC <*@yandex-team.ru> +Aleksei Khoroshilov <akhoroshilov@brave.com> Alexis Menard <alexis.menard@intel.com> Alfredo Mazzinghi <mzz.lrd@gmail.com> Andrew Boyarshin <andrew.boyarshin@gmail.com>
diff --git a/src/gn/command_clean.cc b/src/gn/command_clean.cc index 6dcc163..c4b80a9 100644 --- a/src/gn/command_clean.cc +++ b/src/gn/command_clean.cc
@@ -44,13 +44,20 @@ return false; } - // Erase everything but (user-created) args.gn and the build.ninja files we - // just wrote. - const base::FilePath::CharType* remaining[]{ + // Erase everything but (user-created) args.gn, its imports and the + // build.ninja files we just wrote. + std::vector<base::FilePath::StringType> remaining{ FILE_PATH_LITERAL("args.gn"), FILE_PATH_LITERAL("build.ninja"), FILE_PATH_LITERAL("build.ninja.d"), }; + for (const auto& f : + setup->build_settings().build_args().build_args_dependency_files()) { + if (IsStringInOutputDir(setup->build_settings().build_dir(), f.value())) { + remaining.push_back(UTF8ToFilePath(f.GetName()).value()); + } + } + base::FileEnumerator traversal( build_dir, false, base::FileEnumerator::FILES | base::FileEnumerator::DIRECTORIES);