Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2968)

Unified Diff: tools/gn/function_exec_script.cc

Issue 23606031: GN: Use build directory for CD for scripts (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: iFix docs, base build Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/gn/function_exec_script.cc
diff --git a/tools/gn/function_exec_script.cc b/tools/gn/function_exec_script.cc
index 592c8511b030b3647e2cae92ad11b8f2d1c9d555..2626f515bfbe08c4f95aaa4aa21852c31e96ab5d 100644
--- a/tools/gn/function_exec_script.cc
+++ b/tools/gn/function_exec_script.cc
@@ -242,10 +242,16 @@ const char kExecScript_Help[] =
" generation will fail if the script does not exist or returns a nonzero\n"
" exit code.\n"
"\n"
+ " The current directory when executing the script will be the root\n"
+ " build directory. If you are passing file names, you will want to use\n"
+ " the to_build_dir() function to make file names relative to this\n"
+ " path (see \"gn help to_build_dir\").\n"
+ "\n"
"Arguments:\n"
"\n"
" filename:\n"
- " File name of python script to execute, relative to the build file.\n"
+ " File name of python script to execute. Non-absolute names will\n"
+ " be treated as relative to the current build file.\n"
"\n"
" arguments:\n"
" A list of strings to be passed to the script as arguments.\n"
@@ -266,7 +272,7 @@ const char kExecScript_Help[] =
"Example:\n"
"\n"
" all_lines = exec_script(\"myscript.py\", [some_input], \"list lines\",\n"
- " [\"data_file.txt\"])\n";
+ " [ to_build_dir(\"data_file.txt\") ])\n";
Value RunExecScript(Scope* scope,
const FunctionCallNode* function,
@@ -336,12 +342,15 @@ Value RunExecScript(Scope* scope,
begin_exec = base::TimeTicks::Now();
}
+ base::FilePath startup_dir =
+ build_settings->GetFullPath(build_settings->build_dir());
+
// Execute the process.
// TODO(brettw) set the environment block.
std::string output;
std::string stderr_output; // TODO(brettw) not hooked up, see above.
int exit_code = 0;
- if (!ExecProcess(cmdline, build_settings->GetFullPath(cur_dir),
+ if (!ExecProcess(cmdline, startup_dir,
&output, &stderr_output, &exit_code)) {
*err = Err(function->function(), "Could not execute python.",
"I was trying to execute \"" + FilePathToUTF8(python_path) + "\".");
@@ -356,9 +365,8 @@ Value RunExecScript(Scope* scope,
// TODO(brettw) maybe we need stderr also for reasonable stack dumps.
if (exit_code != 0) {
- std::string msg = "Current dir: " +
- FilePathToUTF8(build_settings->GetFullPath(cur_dir)) + "\nCommand: " +
- cmdline.GetCommandLineString() +
+ std::string msg = "Current dir: " + FilePathToUTF8(startup_dir) +
+ "\nCommand: " + cmdline.GetCommandLineString() +
"\nReturned " + base::IntToString(exit_code);
if (!output.empty())
msg += " and printed out:\n\n" + output;

Powered by Google App Engine
This is Rietveld 408576698