-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathsetup_executorch_lab_2.sh
More file actions
executable file
·137 lines (113 loc) · 3.48 KB
/
setup_executorch_lab_2.sh
File metadata and controls
executable file
·137 lines (113 loc) · 3.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#!/usr/bin/env bash
set -euo pipefail
PYTHON_VERSION="3.11.14"
NPU_VENV_NAME="NPU_lab_venv"
REPO_URL="https://github.com/pytorch/executorch.git"
REPO_DIR="NPU_Lab_ExecuTorch/executorch"
echo "Working directory: $(pwd)"
echo "NPU venv path: ./${NPU_VENV_NAME}"
echo "Repo path: ./${REPO_DIR}"
echo
OS="$(uname -s)"
echo "Detected OS: ${OS}"
echo
if [ "${OS}" != "Linux" ]; then
echo "ERROR: This script supports Linux only."
exit 1
fi
install_deps_linux_apt() {
echo "1) Installing build dependencies (Linux/apt)..."
sudo apt update
sudo apt install -y \
make build-essential \
libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev \
curl wget git \
libncurses5-dev libncursesw5-dev \
xz-utils tk-dev \
libxml2-dev libxmlsec1-dev \
libffi-dev liblzma-dev \
libgdbm-dev libgdbm-compat-dev \
uuid-dev libnss3-dev
}
install_pyenv_linux_if_missing() {
if [ ! -d "${HOME}/.pyenv" ]; then
echo
echo "2) Installing pyenv (Linux)..."
curl -fsSL https://pyenv.run | bash
else
echo
echo "2) pyenv already installed - skipping install."
fi
}
install_deps_linux_apt
install_pyenv_linux_if_missing
export PYENV_ROOT="${HOME}/.pyenv"
export PATH="${PYENV_ROOT}/bin:${PATH}"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
if ! command -v pyenv >/dev/null 2>&1; then
echo "ERROR: pyenv not found in PATH after install."
exit 1
fi
echo
echo "pyenv: $(pyenv --version)"
echo
echo "3) Installing Python ${PYTHON_VERSION} (pyenv)..."
pyenv install -v -s "${PYTHON_VERSION}"
pyenv rehash
PYENV_PYTHON="${PYENV_ROOT}/versions/${PYTHON_VERSION}/bin/python"
if [ ! -x "${PYENV_PYTHON}" ]; then
echo "ERROR: Expected interpreter not found at ${PYENV_PYTHON}"
exit 1
fi
echo "Using interpreter: ${PYENV_PYTHON}"
echo "Interpreter version: $(${PYENV_PYTHON} --version)"
create_venv_and_kernel() {
local venv_name="$1"
local kernel_name="$2"
local display_name="$3"
local venv_path="./${venv_name}"
local venv_python="${venv_path}/bin/python"
echo
echo "4) Ensuring virtualenv exists at ${venv_path}..."
if [ -d "${venv_path}" ]; then
echo " Virtualenv already exists - skipping creation."
else
echo " Creating virtualenv using ${PYENV_PYTHON}..."
"${PYENV_PYTHON}" -m venv "${venv_path}"
echo " Created venv: ${venv_path}"
fi
echo " Venv interpreter: $(${venv_python} --version)"
echo " Installing / upgrading pip + ipykernel in ${venv_name}..."
"${venv_python}" -m pip install -U pip setuptools wheel
"${venv_python}" -m pip install -U ipykernel jupyter huggingface_hub
echo " Registering Jupyter kernel: ${display_name} (${kernel_name})"
"${venv_python}" -m ipykernel install --user \
--name "${kernel_name}" \
--display-name "${display_name}"
}
create_venv_and_kernel "${NPU_VENV_NAME}" "npu_lab_venv" "Python (${NPU_VENV_NAME})"
if [ -d "${REPO_DIR}" ]; then
echo
echo "5) Repo ${REPO_DIR} already exists - skipping clone."
else
echo
echo "5) Cloning ExecuTorch into ./${REPO_DIR} ..."
git clone "${REPO_URL}" "${REPO_DIR}"
fi
echo
echo "Setup complete."
echo
echo "Next steps:"
echo " cd ${REPO_DIR}"
echo " source ../${NPU_VENV_NAME}/bin/activate"
echo
echo "Jupyter kernels installed:"
echo " - Python (${NPU_VENV_NAME}) [kernel: npu_lab_venv]"
echo
echo "To make pyenv available in new shells, add to ~/.bashrc or ~/.profile:"
echo ' export PYENV_ROOT="$HOME/.pyenv"'
echo ' export PATH="$PYENV_ROOT/bin:$PATH"'
echo ' eval "$(pyenv init --path)"'
echo ' eval "$(pyenv init -)"'