aboutsummaryrefslogtreecommitdiff
path: root/compiler_wrapper
diff options
context:
space:
mode:
authorRyan Beltran <ryanbeltran@chromium.org>2021-01-18 23:56:57 +0000
committerRyan Beltran <ryanbeltran@chromium.org>2021-01-20 22:52:53 +0000
commita58bd46ce286e2546c432c8fedd23b14a8fc651d (patch)
treefbdcc3ea84aad442e6eab1ba4fdc6f59d317db84 /compiler_wrapper
parent6f559ce22c83d2ebe12c7858c107f2151e769879 (diff)
downloadtoolchain-utils-a58bd46ce286e2546c432c8fedd23b14a8fc651d.tar.gz
compiler_wrapper: add working dir to rusage logs
Adds current working directory as a new field in rusage logs. This is useful for determining what package was being compiled. BUG=chromium:1156314 TEST=Modified and ran unit tests Change-Id: I58d7040c90fbd7d9b81532d0114862cbf4b23f88 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/2636450 Tested-by: Ryan Beltran <ryanbeltran@chromium.org> Reviewed-by: George Burgess <gbiv@chromium.org>
Diffstat (limited to 'compiler_wrapper')
-rw-r--r--compiler_wrapper/rusage_flag.go36
-rw-r--r--compiler_wrapper/rusage_flag_test.go7
2 files changed, 29 insertions, 14 deletions
diff --git a/compiler_wrapper/rusage_flag.go b/compiler_wrapper/rusage_flag.go
index 31ff0d10..c6f887d7 100644
--- a/compiler_wrapper/rusage_flag.go
+++ b/compiler_wrapper/rusage_flag.go
@@ -39,13 +39,14 @@ func lockFileExclusive(fd uintptr) error {
}
type rusageLog struct {
- ExitCode int `json:"exit_code"`
- ElapsedRealTime float64 `json:"elapsed_real_time"`
- ElapsedUserTime float64 `json:"elapsed_user_time"`
- ElapsedSysTime float64 `json:"elapsed_sys_time"`
- MaxMemUsed int64 `json:"max_mem_used"`
- Compiler string `json:"compiler"`
- CompilerArgs []string `json:"compiler_args"`
+ ExitCode int `json:"exit_code"`
+ ElapsedRealTime float64 `json:"elapsed_real_time"`
+ ElapsedUserTime float64 `json:"elapsed_user_time"`
+ ElapsedSysTime float64 `json:"elapsed_sys_time"`
+ MaxMemUsed int64 `json:"max_mem_used"`
+ Compiler string `json:"compiler"`
+ CompilerArgs []string `json:"compiler_args"`
+ WorkingDirectory string `json:"working_directory"`
}
func logRusage(env env, logFileName string, compilerCmd *command) (exitCode int, err error) {
@@ -87,14 +88,21 @@ func logRusage(env env, logFileName string, compilerCmd *command) (exitCode int,
timeUnit := float64(time.Second)
+ // We want to know what package is being compiled. The working directory gives us a good clue.
+ cwd, err := os.Getwd()
+ if err != nil {
+ return 0, wrapErrorwithSourceLocf(err, "error getting working directory for rusage log")
+ }
+
logEntry := rusageLog{
- ExitCode: exitCode,
- ElapsedRealTime: float64(elapsedRealTime) / timeUnit,
- ElapsedUserTime: float64(elapsedUserTime) / timeUnit,
- ElapsedSysTime: float64(elapsedSysTime) / timeUnit,
- MaxMemUsed: maxMemUsed,
- Compiler: absCompilerPath,
- CompilerArgs: compilerCmd.Args,
+ ExitCode: exitCode,
+ ElapsedRealTime: float64(elapsedRealTime) / timeUnit,
+ ElapsedUserTime: float64(elapsedUserTime) / timeUnit,
+ ElapsedSysTime: float64(elapsedSysTime) / timeUnit,
+ MaxMemUsed: maxMemUsed,
+ Compiler: absCompilerPath,
+ CompilerArgs: compilerCmd.Args,
+ WorkingDirectory: cwd,
}
// Note: using file mode 0666 so that a root-created log is writable by others.
diff --git a/compiler_wrapper/rusage_flag_test.go b/compiler_wrapper/rusage_flag_test.go
index 0736c757..940f4a79 100644
--- a/compiler_wrapper/rusage_flag_test.go
+++ b/compiler_wrapper/rusage_flag_test.go
@@ -105,6 +105,13 @@ func TestLogRusageFileContent(t *testing.T) {
if matched, _ := regexp.MatchString("--sysroot=.*", rlog.CompilerArgs[0]); !matched {
t.Errorf("unexpected compiler args. Got: %s", rlog.CompilerArgs)
}
+ cwd, err := os.Getwd()
+ if err != nil {
+ t.Fatalf("Failed to get current working directory: %v", err)
+ }
+ if rlog.WorkingDirectory != cwd {
+ t.Errorf("Unexpected working directory. Got: %q, Want: %q", rlog.WorkingDirectory, cwd)
+ }
})
}