forked from ibm-granite/granite-common
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathenv.sh
More file actions
executable file
·129 lines (108 loc) · 3.68 KB
/
env.sh
File metadata and controls
executable file
·129 lines (108 loc) · 3.68 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
#! /bin/bash
################################################################################
# Create conda environment for local development.
#
# See usage() below for the current set of arguments this script accepts.
################################################################################
# Argument processing
# Default values for parameters passed on command line
# Use environment variables if present.
# (-z predicate means "unset or empty string")
if [ -z "$PYTHON_VERSION" ]; then
PYTHON_VERSION="3.12"
fi
ENV_PATH="./env"
usage() {
echo "Usage: ./scripts/env.sh [-h] [--env_path <path>] "
echo " [--use_active_env]"
echo " [--python_version <version>]"
echo ""
echo "You can also use the following environment variables:"
echo " PYTHON_VERSION: Version of Python to install"
echo "(command-line arguments override environment variables values)"
}
die() {
echo $1
usage
exit 1
}
# Read command line arguments
# See Bash docs at http://mywiki.wooledge.org/BashFAQ/035
while :; do
case $1 in
-h|--help)
usage
exit 0
;;
--env_path)
if [ "$2" ]; then ENV_PATH=$2; shift
else die "ERROR: --env_path requires an environment name"
fi
;;
--use_active_env)
unset ENV_PATH; shift
;;
--python_version)
if [ "$2" ]; then PYTHON_VERSION=$2; shift
else die "ERROR: --python_version requires a python version"
fi
;;
?*)
die "Unknown option '$1'"
;;
*) # No more options
break
esac
shift # Move on to next argument
done
if [ -n "${ENV_PATH}" ]; then
echo "Creating environment at ${ENV_PATH} with Python '${PYTHON_VERSION}'."
else
echo "Using active environment with Python '${PYTHON_VERSION}'."
fi
############################
# HACK ALERT *** HACK ALERT
# The friendly folks at Anaconda thought it would be a good idea to make the
# "conda" command a shell function.
# See https://github.com/conda/conda/issues/7126
# The following workaround will probably be fragile.
if [ -z "$CONDA_HOME" ]
then
echo "Error: CONDA_HOME environment variable not set."
exit
fi
if [ -e "${CONDA_HOME}/etc/profile.d/conda.sh" ]
then
# shellcheck disable=SC1090
. "${CONDA_HOME}/etc/profile.d/conda.sh"
else
echo "Error: CONDA_HOME (${CONDA_HOME}) does not appear to be set up."
exit
fi
# END HACK
############################
################################################################################
# Create the environment
if [ -e "${ENV_PATH}" ]; then
# Remove the detrius of any previous runs of this script
conda env remove --prefix ${ENV_PATH}
fi
conda create -y --prefix ${ENV_PATH} python=${PYTHON_VERSION} pip
################################################################################
# All the installation steps that follow must be done from within the new
# environment.
conda activate ${ENV_PATH}
################################################################################
# Install packages with pip
# If Anaconda's version of Pip is backlevel, Pip will complain bitterly until you
# update it. Start out with a preemptive update to prevent these complaints.
pip install --upgrade pip
# Install our local copy of the source tree in editable mode.
# Also install development-only packages.
pip install --editable ".[all]"
# Also install pre-commit hooks in the local working copy
pip install pre-commit
pre-commit install
conda deactivate
echo "Anaconda environment '${ENV_PATH}' successfully created."
echo "To use, type 'conda activate ${ENV_PATH}'."