diff options
author | 2024-05-21 23:57:11 +0000 | |
---|---|---|
committer | 2024-06-06 00:18:29 +0000 | |
commit | 0edf1d38e2ff306ec469432a7ff019055ed124f0 (patch) | |
tree | d517a305ef363247e7bf05ab68dc21549b6bb6d1 /bin | |
parent | 6c9fa022046e198ce5c2be963383b93f8a0cf3a2 (diff) |
Add run_tool_with_logging as a standalone scripts
As part of the build team's effort to cleanup envseup.sh.
Remove the run_tool_with_logging rundtion from envsetup.sh and add it
as a standalone script under build/soong/bin
Test: atest run_tool_with_logging
Test: manually do source envsetup.sh and run adb devices -l and check
the event log is sent to clearcut, tested with both bash and zsh
Bug: 342066042
Change-Id: I2fbc69a064832af61d75d14b0e33a62cb56186df
Diffstat (limited to 'bin')
-rw-r--r-- | bin/Android.bp | 26 | ||||
-rwxr-xr-x | bin/run_tool_with_logging | 55 |
2 files changed, 81 insertions, 0 deletions
diff --git a/bin/Android.bp b/bin/Android.bp new file mode 100644 index 000000000..4d6d91102 --- /dev/null +++ b/bin/Android.bp @@ -0,0 +1,26 @@ +// Copyright 2024 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package { + default_applicable_licenses: ["Android-Apache-2.0"], + default_team: "trendy_team_build", +} + +filegroup { + name: "run_tool_with_logging_script", + visibility: [ + "//build/soong/tests:__subpackages__", + ], + srcs: ["run_tool_with_logging"], +} diff --git a/bin/run_tool_with_logging b/bin/run_tool_with_logging new file mode 100755 index 000000000..2b2c8d81c --- /dev/null +++ b/bin/run_tool_with_logging @@ -0,0 +1,55 @@ +#!/bin/bash + +# Copyright (C) 2024 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Run commands in a subshell for us to handle forced terminations with a trap +# handler. +( +tool_tag="$1" +shift +tool_binary="$1" +shift + +# If the logger is not configured, run the original command and return. +if [[ -z "${ANDROID_TOOL_LOGGER}" ]]; then + "${tool_binary}" "${@}" + exit $? +fi + +# Otherwise, run the original command and call the logger when done. +start_time=$(date +%s.%N) +logger=${ANDROID_TOOL_LOGGER} + +# Install a trap to call the logger even when the process terminates abnormally. +# The logger is run in the background and its output suppressed to avoid +# interference with the user flow. +trap ' +exit_code=$?; +# Remove the trap to prevent duplicate log. +trap - EXIT; +"${logger}" \ + --tool_tag="${tool_tag}" \ + --start_timestamp="${start_time}" \ + --end_timestamp="$(date +%s.%N)" \ + --tool_args="$*" \ + --exit_code="${exit_code}" \ + ${ANDROID_TOOL_LOGGER_EXTRA_ARGS} \ + > /dev/null 2>&1 & +exit ${exit_code} +' SIGINT SIGTERM SIGQUIT EXIT + +# Run the original command. +"${tool_binary}" "${@}" +) |