@@ -8,6 +8,18 @@ MINIFORGE_DIR="/opt/abacus-miniforge"
88ENV_NAME=" abacus_env"
99ENV_BIN=" $MINIFORGE_DIR /envs/$ENV_NAME /bin"
1010CHINA_MIRROR=" ${ABACUS_CHINA_MIRROR:- 0} "
11+ VERSION_SPEC=" ${ABACUS_VERSION:- } "
12+
13+ # Build the conda match-spec. Empty => latest; a bare version like "3.7.4"
14+ # is pinned with "="; anything containing an operator (>=, <, etc.) or a
15+ # comma is passed through as-is.
16+ if [ -z " $VERSION_SPEC " ]; then
17+ ABACUS_PKG=" abacus"
18+ elif echo " $VERSION_SPEC " | grep -qE ' [<>=!,* ]' ; then
19+ ABACUS_PKG=" abacus $VERSION_SPEC "
20+ else
21+ ABACUS_PKG=" abacus=$VERSION_SPEC "
22+ fi
1123
1224if [ " $CHINA_MIRROR " = " 1" ]; then
1325 MINIFORGE_URL=" https://mirrors.tuna.tsinghua.edu.cn/github-release/conda-forge/miniforge/LatestRelease/Miniforge3-Linux-x86_64.sh"
6274source " $MINIFORGE_DIR /etc/profile.d/conda.sh"
6375
6476if conda env list | awk ' NF && $1 !~ /^#/ {print $1}' | grep -qx " $ENV_NAME " ; then
65- log " Updating existing env '$ENV_NAME ' (channel: $CONDA_FORGE_CHANNEL )..."
66- conda install -n " $ENV_NAME " -y --override-channels -c " $CONDA_FORGE_CHANNEL " abacus
77+ log " Updating existing env '$ENV_NAME ' (channel: $CONDA_FORGE_CHANNEL , package: $ABACUS_PKG )..."
78+ # shellcheck disable=SC2086
79+ conda install -n " $ENV_NAME " -y --override-channels -c " $CONDA_FORGE_CHANNEL " $ABACUS_PKG
6780else
68- log " Creating env '$ENV_NAME ' (channel: $CONDA_FORGE_CHANNEL )..."
69- conda create -n " $ENV_NAME " -y --override-channels -c " $CONDA_FORGE_CHANNEL " abacus
81+ log " Creating env '$ENV_NAME ' (channel: $CONDA_FORGE_CHANNEL , package: $ABACUS_PKG )..."
82+ # shellcheck disable=SC2086
83+ conda create -n " $ENV_NAME " -y --override-channels -c " $CONDA_FORGE_CHANNEL " $ABACUS_PKG
7084fi
7185
7286log " Installing system launchers..."
0 commit comments