bootstrap-py3-venv 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. # This script is meant to be sourced by bash, not executed.
  2. # As such, don't use exit, use return.
  3. # This script is purely a python virtualenv bootstrap, not the entire development environment.
  4. # For the entire thing, you should still use make bootstrap.
  5. # Eventually, the goal would be to have an idempotent single script that does
  6. # everything make bootstrap does and more (system dependencies and so on).
  7. # This... doesn't quite work.
  8. # set -e
  9. # trap "echo 'bootstrap FAILED.' && trap - ERR && return" ERR
  10. # So just going to sprinkle returns everywhere.
  11. command -v pyenv >/dev/null || {
  12. echo "You need to install pyenv. https://develop.sentry.dev/environment/#python"
  13. return 1
  14. }
  15. command -v direnv >/dev/null || {
  16. echo "You need to install direnv. https://develop.sentry.dev/environment/#direnv"
  17. return 1
  18. }
  19. gitroot="$(git rev-parse --show-toplevel)"
  20. cd "$gitroot"
  21. export venv_name="${PWD}/.venv"
  22. if [[ -f "${venv_name}/bin/activate" ]]; then
  23. prompt_text="You have an existing virtualenv. This script will OVERWRITE it. Continue (y/N)?"
  24. echo "$prompt_text"
  25. read resp
  26. case "$resp" in
  27. y|Y ) echo "Okay, let's do this." ;;
  28. * ) echo "Aborted!"; return 1 ;;
  29. esac
  30. fi
  31. deactivate 2>/dev/null || true
  32. rm -rf "$venv_name"
  33. if ! [[ "$(python3 -V 2>&1)" = "Python $(grep "3.6" .python-version)" ]]; then
  34. abort "Your python3 version isn't as expected. Please run: make setup-pyenv"
  35. fi
  36. python3 -m pip install -U pip || { echo "bootstrap failed!"; return 1; }
  37. python3 -m venv "${venv_name}" || { echo "bootstrap failed!"; return 1; }
  38. source "${venv_name}/bin/activate" || { echo "bootstrap failed!"; return 1; }
  39. make setup-git || { echo "bootstrap failed!"; return 1; }
  40. make install-py-dev || { echo "bootstrap failed!"; return 1; }
  41. deactivate || { echo "bootstrap failed!"; return 1; }
  42. direnv allow || { echo "bootstrap failed!"; return 1; }