aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--tools/bash/runfiles/runfiles.bash31
1 files changed, 27 insertions, 4 deletions
diff --git a/tools/bash/runfiles/runfiles.bash b/tools/bash/runfiles/runfiles.bash
index 8dd82e23b4..cba75ab619 100644
--- a/tools/bash/runfiles/runfiles.bash
+++ b/tools/bash/runfiles/runfiles.bash
@@ -18,7 +18,8 @@
# - At least one of RUNFILES_MANIFEST_FILE and RUNFILES_DIR environment
# variables must be set, to the absolute path of the runfiles manifest or the
# <rulename>.runfiles directory respectively.
-# - If RUNFILES_LIB_DEBUG=1 is set, the script will print errors to stderr.
+# - If RUNFILES_LIB_DEBUG=1 is set, the script will print diagnostic messages to
+# stderr.
#
# USAGE:
# 1. Depend on this runfiles library from your build rule:
@@ -59,17 +60,23 @@
case "$(uname -s | tr [:upper:] [:lower:])" in
msys*|mingw*|cygwin*)
# matches an absolute Windows path
- _rlocation_isabs_pattern="^[a-zA-Z]:[/\\]"
+ export _rlocation_isabs_pattern="^[a-zA-Z]:[/\\]"
;;
*)
# matches an absolute Unix path
- _rlocation_isabs_pattern="^/[^/].*"
+ export _rlocation_isabs_pattern="^/[^/].*"
;;
esac
# Prints to stdout the runtime location of a data-dependency.
function rlocation() {
+ if [[ "${RUNFILES_LIB_DEBUG:-}" == 1 ]]; then
+ echo >&2 "INFO[runfiles.bash]: rlocation($1): start"
+ fi
if [[ "$1" =~ $_rlocation_isabs_pattern ]]; then
+ if [[ "${RUNFILES_LIB_DEBUG:-}" == 1 ]]; then
+ echo >&2 "INFO[runfiles.bash]: rlocation($1): absolute path, return"
+ fi
# If the path is absolute, print it as-is.
echo $1
elif [[ "$1" == ../* || "$1" == */.. || "$1" == ./* || "$1" == */./* || "$1" == "*/." || "$1" == *//* ]]; then
@@ -85,10 +92,26 @@ function rlocation() {
return 1
else
if [[ -f "${RUNFILES_DIR:-/dev/null}/$1" ]]; then
+ if [[ "${RUNFILES_LIB_DEBUG:-}" == 1 ]]; then
+ echo >&2 "INFO[runfiles.bash]: rlocation($1): found under RUNFILES_DIR ($RUNFILES_DIR), return"
+ fi
echo "${RUNFILES_DIR}/$1"
elif [[ -f "${RUNFILES_MANIFEST_FILE:-/dev/null}" ]]; then
+ if [[ "${RUNFILES_LIB_DEBUG:-}" == 1 ]]; then
+ echo >&2 "INFO[runfiles.bash]: rlocation($1): looking in RUNFILES_MANIFEST_FILE ($RUNFILES_MANIFEST_FILE)"
+ fi
local -r result=$(grep -m1 "^$1 " "${RUNFILES_MANIFEST_FILE}" | cut -d ' ' -f 2-)
- [[ -f "${result:-/dev/null}" ]] && echo "$result" || echo ""
+ if [[ -f "${result:-/dev/null}" ]]; then
+ if [[ "${RUNFILES_LIB_DEBUG:-}" == 1 ]]; then
+ echo >&2 "INFO[runfiles.bash]: rlocation($1): found in manifest as ($result)"
+ fi
+ echo "$result"
+ else
+ if [[ "${RUNFILES_LIB_DEBUG:-}" == 1 ]]; then
+ echo >&2 "INFO[runfiles.bash]: rlocation($1): not found in manifest"
+ fi
+ echo ""
+ fi
else
if [[ "${RUNFILES_LIB_DEBUG:-}" == 1 ]]; then
echo >&2 "ERROR[runfiles.bash]: cannot look up runfile \"$1\" " \