setup.sh: retry + timing (#33145)

* improve

* update readme

* stdin

* better

* allow non interactive

* specify dir
This commit is contained in:
Maxime Desroches 2024-07-31 10:42:08 -07:00 committed by GitHub
parent ac130001cc
commit bf003f2972
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 104 additions and 16 deletions

View File

@ -20,7 +20,7 @@
<a href="https://comma.ai/shop">Try it on a comma 3X</a>
</h3>
Quick start: `curl -fsSL openpilot.comma.ai | bash`
Quick start: `bash <(curl -fsSL openpilot.comma.ai)`
![openpilot tests](https://github.com/commaai/openpilot/actions/workflows/selfdrive_tests.yaml/badge.svg)
[![codecov](https://codecov.io/gh/commaai/openpilot/branch/master/graph/badge.svg)](https://codecov.io/gh/commaai/openpilot)

View File

@ -181,20 +181,26 @@ function op_setup() {
op_check_python
echo "Installing dependencies..."
st="$(date +%s)"
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
op_run_command $OPENPILOT_ROOT/tools/ubuntu_setup.sh
elif [[ "$OSTYPE" == "darwin"* ]]; then
op_run_command $OPENPILOT_ROOT/tools/mac_setup.sh
fi
echo -e " ↳ [${GREEN}${NC}] Dependencies installed successfully.\n"
et="$(date +%s)"
echo -e " ↳ [${GREEN}${NC}] Dependencies installed successfully in $((et - st)) seconds.\n"
echo "Getting git submodules..."
op_run_command git submodule update --jobs 4 --init --recursive
echo -e " ↳ [${GREEN}${NC}] Submodules installed successfully.\n"
st="$(date +%s)"
op_run_command git submodule update --filter=blob:none --jobs 4 --init --recursive
et="$(date +%s)"
echo -e " ↳ [${GREEN}${NC}] Submodules installed successfully in $((et - st)) seconds.\n"
echo "Pulling git lfs files..."
st="$(date +%s)"
op_run_command git lfs pull
echo -e " ↳ [${GREEN}${NC}] Files pulled successfully.\n"
et="$(date +%s)"
echo -e " ↳ [${GREEN}${NC}] Files pulled successfully in $((et - st)) seconds.\n"
op_check
@ -360,7 +366,7 @@ function _op() {
-d | --dir ) shift 1; OPENPILOT_ROOT="$1"; shift 1 ;;
--dry ) shift 1; DRY="1" ;;
-n | --no-verify ) shift 1; NO_VERIFY="1" ;;
-v | --verbose ) shift 1; VERBOSE="1" ;;
-v | --verbose ) shift 1; VERBOSE="1" ;;
esac
# parse Commands

View File

@ -1,7 +1,10 @@
#!/usr/bin/env bash
set -e
RED='\033[0;31m'
GREEN='\033[0;32m'
BOLD='\033[1m'
NC='\033[0m'
if [ -z "$OPENPILOT_ROOT" ]; then
@ -9,11 +12,84 @@ if [ -z "$OPENPILOT_ROOT" ]; then
OPENPILOT_ROOT="$(pwd)/openpilot"
fi
function show_motd() {
cat << 'EOF'
.~ssos+.
+8888888888i,
{888888888888o.
h8888888888888k
t888888888s888k
`t88888d/ h88k
``` h88l
,88k`
.d8h`
+d8h
_+d8h`
;y8h+`
|-`
openpilot installer
EOF
}
function check_stdin() {
if [ -t 0 ]; then
INTERACTIVE=1
else
echo "Checking for valid invocation..."
echo -e " ↳ [${RED}${NC}] stdin not found! Running in non-interactive mode."
echo -e " Run ${BOLD}'bash <(curl -fsSL openpilot.comma.ai)'${NC} to run in interactive mode.\n"
fi
}
function ask_dir() {
echo -n "Enter directory in which to install openpilot (default $OPENPILOT_ROOT): "
if [[ -z $INTERACTIVE ]]; then
echo -e "\nBecause your are running in non-interactive mode, the installation"
echo -e "will default to $OPENPILOT_ROOT\n"
return 0
fi
read
if [[ ! -z "$REPLY" ]]; then
mkdir -p $REPLY
OPENPILOT_ROOT="$(realpath $REPLY/openpilot)"
fi
}
function check_dir() {
echo "Checking for installation directory..."
if [ -d "$OPENPILOT_ROOT" ]; then
echo -e " ↳ [${RED}${NC}] can't install openpilot in $OPENPILOT_ROOT !"
return 1
echo -e " ↳ [${RED}${NC}] Installation destination $OPENPILOT_ROOT already exists!"
# not a valid clone, can't continue
if [[ ! -z "$(ls -A $OPENPILOT_ROOT)" && ! -f "$OPENPILOT_ROOT/launch_openpilot.sh" ]]; then
echo -e " $OPENPILOT_ROOT already contains files but does not seems"
echo -e " to be a valid openpilot git clone. Choose another location for"
echo -e " installing openpilot!\n"
return 1
fi
# by default, don't try installing in already existing directory
if [[ -z $INTERACTIVE ]]; then
return 1
fi
read -p " Would you like to attempt installation anyway? [Y/n] " -n 1 -r
echo -e "\n"
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
return 1
fi
# already a "valid" openpilot clone, skip cloning again
if [[ ! -z "$(ls -A $OPENPILOT_ROOT)" ]]; then
SKIP_GIT_CLONE=1
fi
return 0
fi
echo -e " ↳ [${GREEN}${NC}] Successfully chosen $OPENPILOT_ROOT as installation directory\n"
@ -30,10 +106,12 @@ function check_git() {
}
function git_clone() {
st="$(date +%s)"
echo "Cloning openpilot..."
if $(git clone --filter=blob:none https://github.com/commaai/openpilot.git "$OPENPILOT_ROOT"); then
if [[ -f $OPENPILOT_ROOT/launch_openpilot.sh ]]; then
echo -e " ↳ [${GREEN}${NC}] Successfully cloned openpilot.\n"
et="$(date +%s)"
echo -e " ↳ [${GREEN}${NC}] Successfully cloned openpilot in $((et - st)) seconds.\n"
return 0
fi
fi
@ -47,13 +125,17 @@ function install_with_op() {
$OPENPILOT_ROOT/tools/op.sh install
$OPENPILOT_ROOT/tools/op.sh setup
# make op usable right now
alias op="source $OPENPILOT_ROOT/tools/op.sh \"\$@\""
echo -e "\n----------------------------------------------------------------------"
echo -e "openpilot was successfully installed into ${BOLD}$OPENPILOT_ROOT${NC}"
echo -e "Checkout the docs at https://docs.comma.ai"
echo -e "Checkout how to contribute at https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md"
}
check_dir && check_git && git_clone && install_with_op
show_motd
unset OPENPILOT_ROOT
unset RED
unset GREEN
unset NC
check_stdin
ask_dir
check_dir
check_git
[ -z $SKIP_GIT_CLONE ] && git_clone
install_with_op