Skip to content

Commit 5fa94eb

Browse files
adobrzhanskyrafie
andauthored
Pyenv installation script (#108)
* pyenv installation script Co-authored-by: rafie <[email protected]>
1 parent 3d44a08 commit 5fa94eb

File tree

1 file changed

+103
-0
lines changed

1 file changed

+103
-0
lines changed

bin/getpyenv

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
#!/usr/bin/env bash
2+
3+
PROGNAME="${BASH_SOURCE[0]}"
4+
HERE="$(cd "$(dirname "$PROGNAME")" &>/dev/null && pwd)"
5+
READIES=$(cd $HERE/.. && pwd)
6+
. $READIES/shibumi/defs
7+
8+
if [[ $1 == --help || $1 == help || $HELP == 1 ]]; then
9+
cat <<-'END'
10+
Install pyenv.
11+
12+
[ARGVARS...] getpyenv [--help|help]
13+
14+
Argument variables:
15+
THIN=1 Do not install packages to build Python
16+
FORCE=1 Repeat installation
17+
18+
NOP=1 Do not execute, just print commands
19+
V|VERBOSE=1 Print commands
20+
HELP=1 Print help
21+
22+
PYTHON=ver Python version to be installed
23+
VENV=dir Install a virtualenv in `dir`
24+
25+
Notes:
26+
This installs a profile.d script. Invoke `bash -l` to activate.
27+
28+
END
29+
exit 0
30+
fi
31+
32+
OP=""
33+
[[ $NOP == 1 ]] && OP=echo
34+
35+
echo "# Installing pyenv ..."
36+
37+
if [[ $FORCE == 1 ]]; then
38+
rm -f $HOME/.pyenv $profile_d/pyenv.sh
39+
fi
40+
41+
profile_d=`get_profile_d`
42+
if [[ -f $profile_d/pyenv.sh && $FORCE != 1 ]]; then
43+
echo "# Already installed."
44+
else
45+
if [[ $THIN != 1 ]]; then
46+
if is_command apt-get; then
47+
xinstall git make build-essential libssl-dev zlib1g-dev \
48+
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
49+
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
50+
elif is_command dnf; then
51+
xinstall make gcc zlib-devel bzip2 bzip2-devel readline-devel \
52+
sqlite sqlite-devel openssl-devel tk-devel libffi-devel xz-devel
53+
elif is_command yum; then
54+
xinstall gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite \
55+
sqlite-devel openssl-devel tk-devel libffi-devel xz-devel
56+
elif is_command zypper; then
57+
xinstall gcc automake bzip2 libbz2-devel xz xz-devel openssl-devel ncurses-devel \
58+
readline-devel zlib-devel tk-devel libffi-devel sqlite3-devel make
59+
elif is_command apk; then
60+
xinstall git bash build-base libffi-dev openssl-dev bzip2-dev zlib-dev \
61+
xz-dev readline-dev sqlite-dev tk-dev linux-headers
62+
elif is_command pacman; then
63+
xinstall base-devel openssl zlib xz tk
64+
elif is_command brew; then
65+
xinstall openssl readline sqlite3 xz zlib tcl-tk
66+
fi
67+
fi
68+
69+
if [[ ! -r $HOME/.pyenv ]]; then
70+
runn git clone https://github.com/pyenv/pyenv.git ~/.pyenv
71+
fi
72+
73+
tmp_profiled=$(mktemp -d)
74+
cat <<-'END' > $tmp_profiled/pyenv.sh
75+
export PYENV_ROOT=$HOME/.pyenv
76+
export PATH="$PYENV_ROOT/bin:$PATH"
77+
78+
if command -v pyenv >/dev/null 2>&1; then
79+
eval "$(pyenv init -)"
80+
fi
81+
END
82+
add_to_profile_d $tmp_profiled/pyenv.sh
83+
rm -fr $tmp_profiled/pyenv.sh
84+
echo "# Done."
85+
fi
86+
87+
if [[ -n $PYTHON ]]; then
88+
echo "# Installing python $PYTHON ..."
89+
$OP . $profile_d/pyenv.sh
90+
runn pyenv install -f $PYTHON
91+
fi
92+
93+
if [[ -n $VENV ]]; then
94+
if [[ -e $VENV ]]; then
95+
eprint "Directory $VENV exists, virtualenv not installed."
96+
exit 1
97+
fi
98+
echo "# Installing virtualenv ..."
99+
$OP export PYENV_VERSION="$PYTHON"
100+
runn python3 -m pip install virtualenv
101+
runn python3 -m virtualenv $VENV
102+
echo "# virtualenv installed in $VENV"
103+
fi

0 commit comments

Comments
 (0)