Fix for x86_64 build fail
[platform/upstream/connectedhomeip.git] / third_party / pigweed / repo / bootstrap.sh
1 # Copyright 2020 The Pigweed Authors
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License"); you may not
4 # use this file except in compliance with the License. You may obtain a copy of
5 # the License at
6 #
7 #     https://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12 # License for the specific language governing permissions and limitations under
13 # the License.
14
15 # This script must be tested on bash, zsh, and dash.
16
17 _bootstrap_abspath () {
18   python -c "import os.path; print(os.path.abspath('$@'))"
19 }
20
21 # Users are not expected to set PW_CHECKOUT_ROOT, it's only used because it
22 # seems to be impossible to reliably determine the path to a sourced file in
23 # dash when sourced from a dash script instead of a dash interactive prompt.
24 # To reinforce that users should not be using PW_CHECKOUT_ROOT, it is cleared
25 # here after it is used, and other pw tools will complain if they see that
26 # variable set.
27 # TODO(mohrr) find out a way to do this without PW_CHECKOUT_ROOT.
28 if test -n "$PW_CHECKOUT_ROOT"; then
29   _BOOTSTRAP_PATH="$(_bootstrap_abspath "$PW_CHECKOUT_ROOT/bootstrap.sh")"
30   # Downstream projects need to set PW_CHECKOUT_ROOT to point to Pigweed if
31   # they're using Pigweed's CI/CQ system.
32   unset PW_CHECKOUT_ROOT
33 # Shell: bash.
34 elif test -n "$BASH"; then
35   _BOOTSTRAP_PATH="$(_bootstrap_abspath "$BASH_SOURCE")"
36 # Shell: zsh.
37 elif test -n "$ZSH_NAME"; then
38   _BOOTSTRAP_PATH="$(_bootstrap_abspath "${(%):-%N}")"
39 # Shell: dash.
40 elif test ${0##*/} = dash; then
41   _BOOTSTRAP_PATH="$(_bootstrap_abspath \
42     "$(lsof -p $$ -Fn0 | tail -1 | sed 's#^[^/]*##;')")"
43 # If everything else fails, try $0. It could work.
44 else
45   _BOOTSTRAP_PATH="$(_bootstrap_abspath "$0")"
46 fi
47
48 # Check if this file is being executed or sourced.
49 _pw_sourced=0
50 if [ -n "$SWARMING_BOT_ID" ]; then
51   # If set we're running on swarming and don't need this check.
52   _pw_sourced=1
53 elif [ -n "$ZSH_EVAL_CONTEXT" ]; then
54   case $ZSH_EVAL_CONTEXT in *:file) _pw_sourced=1;; esac
55 elif [ -n "$KSH_VERSION" ]; then
56   [ "$(cd $(dirname -- $0) && pwd -P)/$(basename -- $0)" != \
57     "$(cd $(dirname -- ${.sh.file}) && pwd -P)/$(basename -- ${.sh.file})" ] \
58     && _pw_sourced=1
59 elif [ -n "$BASH_VERSION" ]; then
60   (return 0 2>/dev/null) && _pw_sourced=1
61 else  # All other shells: examine $0 for known shell binary filenames
62   # Detects `sh` and `dash`; add additional shell filenames as needed.
63   case ${0##*/} in sh|dash) _pw_sourced=1;; esac
64 fi
65
66 # Downstream projects need to set something other than PW_ROOT here, like
67 # YOUR_PROJECT_ROOT. Please also set PW_ROOT before invoking pw_bootstrap or
68 # pw_activate.
69 PW_ROOT="$(dirname "$_BOOTSTRAP_PATH")"
70 export PW_ROOT
71
72 # Please also set PW_PROJECT_ROOT to YOUR_PROJECT_ROOT.
73 PW_PROJECT_ROOT="$PW_ROOT"
74 export PW_PROJECT_ROOT
75
76 . "$PW_ROOT/pw_env_setup/util.sh"
77
78 pw_deactivate
79 pw_eval_sourced "$_pw_sourced"
80 pw_check_root "$PW_ROOT"
81 _PW_ACTUAL_ENVIRONMENT_ROOT="$(pw_get_env_root)"
82 export _PW_ACTUAL_ENVIRONMENT_ROOT
83 SETUP_SH="$_PW_ACTUAL_ENVIRONMENT_ROOT/activate.sh"
84
85 # Downstream projects may wish to set PW_BANNER_FUNC to a function that prints
86 # an ASCII art banner here.
87
88 # Run full bootstrap when invoked as bootstrap, or env file is missing/empty.
89 if [ "$(basename "$_BOOTSTRAP_PATH")" = "bootstrap.sh" ] || \
90   [ ! -f "$SETUP_SH" ] || \
91   [ ! -s "$SETUP_SH" ]; then
92   pw_bootstrap --shell-file "$SETUP_SH" --install-dir "$_PW_ACTUAL_ENVIRONMENT_ROOT" --use-pigweed-defaults --json-file "$_PW_ACTUAL_ENVIRONMENT_ROOT/actions.json" --virtualenv-gn-out-dir "$PW_ROOT/out" --virtualenv-gn-target "$PW_ROOT#:target_support_packages.install"
93   pw_finalize bootstrap "$SETUP_SH"
94 else
95   pw_activate
96   pw_finalize activate "$SETUP_SH"
97 fi
98
99 unset _pw_sourced
100 unset _BOOTSTRAP_PATH
101 unset SETUP_SH
102 unset _bootstrap_abspath
103
104 pw_cleanup