Skip to content

Commit ac139a6

Browse files
authored
Merge pull request #25 from xavierabellan/master
Replace miniconda by miniforge to avoid licensing issues, Fix previously undetected leakage of ~/.conda/environments.txt
2 parents a334d26 + bef91bf commit ac139a6

File tree

5 files changed

+34
-33
lines changed

5 files changed

+34
-33
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ on the sqfs image itself. This behavior can be disabled by setting `CW_NO_FIX_PE
136136
**BASH MAGIC**
137137

138138
```
139-
/usr/bin/singularity --silent exec -B $DIR/../$SQFS_IMAGE:$INSTALLATION_PATH:image-src=/ $DIR/../$CONTAINER_IMAGE bash -c "eval \"\$(/CSC_CONTAINER/miniconda/bin/conda shell.bash hook )\" && conda activate env1 &>/dev/null && exec -a $_O_SOURCE $DIR/python $( test $# -eq 0 || printf " %q" "$@" )"
139+
/usr/bin/singularity --silent exec -B $DIR/../$SQFS_IMAGE:$INSTALLATION_PATH:image-src=/ $DIR/../$CONTAINER_IMAGE bash -c "eval \"\$(/CSC_CONTAINER/miniforge/bin/conda shell.bash hook )\" && conda activate env1 &>/dev/null && exec -a $_O_SOURCE $DIR/python $( test $# -eq 0 || printf " %q" "$@" )"
140140
```
141141

142142
- `exec -a` is there to enable creating virtual environments as otherwise the venv symlink -> tykky wrapper -> executable in container chain is broken and python does not consider itself to be a venv.

create_inst.sh

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,10 @@ SINGULARITY_BIND="$SINGULARITY_BIND,/tmp"
4040
# By default we want to disable the user condarc as that
4141
# might interfere with the installation
4242
if [[ ! ${CW_ENABLE_CONDARC+defined} ]]; then
43-
echo "pkgs_dirs:
44-
- $CW_INSTALLATION_PATH/miniconda/pkgs
45-
" > $PWD/_inst_dir/condarc_override
46-
SINGULARITY_BIND="$SINGULARITY_BIND,$PWD/_inst_dir/condarc_override:$(readlink -f $HOME/.condarc)"
43+
export CONDA_PKGS_DIRS=$CW_INSTALLATION_PATH/miniforge/pkgs
4744
fi
45+
mkdir -p $CW_BUILD_TMPDIR/.conda_override
46+
SINGULARITY_BIND="$SINGULARITY_BIND,$CW_BUILD_TMPDIR/.conda_override:$(readlink -f $HOME/.conda)"
4847
export SINGULARITY_BIND
4948
echo "export install_root=$CW_INSTALLATION_PATH" >> _extra_envs.sh
5049
echo "export install_root=$CW_INSTALLATION_PATH" >> _vars.sh

templates/conda.sh

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,25 @@ set -e
33

44

55
cd $CW_BUILD_TMPDIR
6-
echo "export env_root=$CW_INSTALLATION_PATH/miniconda/envs/$CW_ENV_NAME/" >> _extra_envs.sh
7-
echo "export env_root=$CW_INSTALLATION_PATH/miniconda/envs/$CW_ENV_NAME/" >> _vars.sh
8-
export env_root=$CW_INSTALLATION_PATH/miniconda/envs/$CW_ENV_NAME/
6+
echo "export env_root=$CW_INSTALLATION_PATH/miniforge/envs/$CW_ENV_NAME/" >> _extra_envs.sh
7+
echo "export env_root=$CW_INSTALLATION_PATH/miniforge/envs/$CW_ENV_NAME/" >> _vars.sh
8+
export env_root=$CW_INSTALLATION_PATH/miniforge/envs/$CW_ENV_NAME/
99

1010
cd $CW_INSTALLATION_PATH
1111

12+
[ "$CW_CONDA_VERSION" = "latest" ] && CW_CONDA_VERSION=$(curl -s https://api.github.com/repos/conda-forge/miniforge/releases/latest | grep "tag_name" | cut -d: -f2 | tr -d \" | tr -d , | tr -d " ")
1213

13-
print_info "Using miniconda version Miniconda3-$CW_CONDA_VERSION-$CW_CONDA_ARCH" 1
14-
print_info "Downloading miniconda " 2
15-
curl https://repo.anaconda.com/miniconda/Miniconda3-$CW_CONDA_VERSION-$CW_CONDA_ARCH.sh --output Miniconda_inst.sh &>/dev/null
16-
print_info "Installing miniconda " 1
17-
bash Miniconda_inst.sh -b -p $CW_INSTALLATION_PATH/miniconda > $CW_BUILD_TMPDIR/_inst_miniconda.log &
14+
print_info "Using miniforge version Miniforge3-$CW_CONDA_VERSION-$CW_CONDA_ARCH" 1
15+
print_info "Downloading miniforge " 2
16+
curl -sL https://github.com/conda-forge/miniforge/releases/download/$CW_CONDA_VERSION/Miniforge3-$CW_CONDA_VERSION-$CW_CONDA_ARCH.sh --output Miniforge_inst.sh &>/dev/null
17+
print_info "Installing miniforge " 1
18+
bash Miniforge_inst.sh -b -p $CW_INSTALLATION_PATH/miniforge > $CW_BUILD_TMPDIR/_inst_miniforge.log &
1819
inst_pid=$!
19-
follow_log $inst_pid $CW_BUILD_TMPDIR/_inst_miniconda.log 20
20-
rm Miniconda_inst.sh
21-
eval "$($CW_INSTALLATION_PATH/miniconda/bin/conda shell.bash hook)"
20+
21+
follow_log $inst_pid $CW_BUILD_TMPDIR/_inst_miniforge.log 20
22+
rm Miniforge_inst.sh
23+
eval "$($CW_INSTALLATION_PATH/miniforge/bin/conda shell.bash hook)"
24+
2225
cd $CW_WORKDIR
2326
source $CW_INSTALLATION_PATH/_pre_install.sh
2427
if [[ ! -z "$(echo "$CW_ENV_FILE" | grep ".*\.yaml\|.*\.yml")" ]];then
@@ -32,7 +35,6 @@ print_info "Creating env, full log in $CW_BUILD_TMPDIR/build.log" 1
3235

3336
if [[ ${CW_MAMBA} == "yes" ]] ;then
3437
print_info "Using mamba to install packages" 1
35-
conda install -y mamba -n base -c conda-forge
3638
mamba $_EC create --name $CW_ENV_NAME $_FF $( basename $CW_ENV_FILE ) &>> $CW_BUILD_TMPDIR/build.log &
3739
else
3840
conda $_EC create --name $CW_ENV_NAME $_FF $( basename $CW_ENV_FILE ) &>> $CW_BUILD_TMPDIR/build.log &
@@ -48,16 +50,16 @@ fi
4850
cd $CW_WORKDIR
4951
print_info "Running user supplied commands" 1
5052
source $CW_INSTALLATION_PATH/_post_install.sh
51-
if [[ -d $CW_INSTALLATION_PATH/miniconda/envs/$CW_ENV_NAME/bin/ ]];then
52-
echo 'echo "' > $CW_INSTALLATION_PATH/miniconda/envs/$CW_ENV_NAME/bin/list-packages
53-
conda list >> $CW_INSTALLATION_PATH/miniconda/envs/$CW_ENV_NAME/bin/list-packages
54-
echo '"' >> $CW_INSTALLATION_PATH/miniconda/envs/$CW_ENV_NAME/bin/list-packages
55-
chmod +x $CW_INSTALLATION_PATH/miniconda/envs/$CW_ENV_NAME/bin/list-packages
53+
if [[ -d $CW_INSTALLATION_PATH/miniforge/envs/$CW_ENV_NAME/bin/ ]];then
54+
echo 'echo "' > $CW_INSTALLATION_PATH/miniforge/envs/$CW_ENV_NAME/bin/list-packages
55+
conda list >> $CW_INSTALLATION_PATH/miniforge/envs/$CW_ENV_NAME/bin/list-packages
56+
echo '"' >> $CW_INSTALLATION_PATH/miniforge/envs/$CW_ENV_NAME/bin/list-packages
57+
chmod +x $CW_INSTALLATION_PATH/miniforge/envs/$CW_ENV_NAME/bin/list-packages
5658
else
5759
print_warn "Created env is empty"
5860
fi
5961

6062

6163
# Set here as they are dynamic
6264
# Could also set them in construct.py...
63-
echo "CW_WRAPPER_PATHS+=( \"$CW_INSTALLATION_PATH/miniconda/envs/$CW_ENV_NAME/bin/\" )" >> $CW_BUILD_TMPDIR/_vars.sh
65+
echo "CW_WRAPPER_PATHS+=( \"$CW_INSTALLATION_PATH/miniforge/envs/$CW_ENV_NAME/bin/\" )" >> $CW_BUILD_TMPDIR/_vars.sh

templates/conda_modify.sh

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
#!/bin/bash
22
cd $CW_BUILD_TMPDIR
3-
echo "export env_root=$CW_INSTALLATION_PATH/miniconda/envs/$CW_ENV_NAME/" >> _extra_envs.sh
4-
echo "export env_root=$CW_INSTALLATION_PATH/miniconda/envs/$CW_ENV_NAME/" >> _vars.sh
3+
echo "export env_root=$CW_INSTALLATION_PATH/miniforge/envs/$CW_ENV_NAME/" >> _extra_envs.sh
4+
echo "export env_root=$CW_INSTALLATION_PATH/miniforge/envs/$CW_ENV_NAME/" >> _vars.sh
55
cd $CW_INSTALLATION_PATH
6-
export env_root=$CW_INSTALLATION_PATH/miniconda/envs/$CW_ENV_NAME/
7-
eval "$($CW_INSTALLATION_PATH/miniconda/bin/conda shell.bash hook)"
6+
export env_root=$CW_INSTALLATION_PATH/miniforge/envs/$CW_ENV_NAME/
7+
eval "$($CW_INSTALLATION_PATH/miniforge/bin/conda shell.bash hook)"
88
cd $CW_WORKDIR
99
source $CW_INSTALLATION_PATH/_pre_install.sh
1010
conda activate $CW_ENV_NAME
@@ -17,9 +17,9 @@ if [[ ${CW_REQUIREMENTS_FILE+defined} ]];then
1717
fi
1818
cd $CW_WORKDIR
1919
source $CW_INSTALLATION_PATH/_post_install.sh
20-
echo 'echo "' > $CW_INSTALLATION_PATH/miniconda/envs/$CW_ENV_NAME/bin/list-packages
21-
conda list >> $CW_INSTALLATION_PATH/miniconda/envs/$CW_ENV_NAME/bin/list-packages
22-
echo '"' >> $CW_INSTALLATION_PATH/miniconda/envs/$CW_ENV_NAME/bin/list-packages
23-
chmod +x $CW_INSTALLATION_PATH/miniconda/envs/$CW_ENV_NAME/bin/list-packages
20+
echo 'echo "' > $CW_INSTALLATION_PATH/miniforge/envs/$CW_ENV_NAME/bin/list-packages
21+
conda list >> $CW_INSTALLATION_PATH/miniforge/envs/$CW_ENV_NAME/bin/list-packages
22+
echo '"' >> $CW_INSTALLATION_PATH/miniforge/envs/$CW_ENV_NAME/bin/list-packages
23+
chmod +x $CW_INSTALLATION_PATH/miniforge/envs/$CW_ENV_NAME/bin/list-packages
2424

25-
echo "CW_WRAPPER_PATHS+=( \"$CW_INSTALLATION_PATH/miniconda/envs/$CW_ENV_NAME/bin/\" )" >> $CW_BUILD_TMPDIR/_vars.sh
25+
echo "CW_WRAPPER_PATHS+=( \"$CW_INSTALLATION_PATH/miniforge/envs/$CW_ENV_NAME/bin/\" )" >> $CW_BUILD_TMPDIR/_vars.sh

tests/tests.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ t_run "conda-containerize new conda_base.yml --prefix A_DIR_NO_EXE | grep ERROR"
6565

6666
mkdir CONDA_INSTALL_DIR
6767

68-
t_run "conda-containerize new conda_broken.yaml --prefix CONDA_INSTALL_DIR | tee conda_inst.out | grep 'ResolvePackageNotFound'" "Conda errors are propagated to the user"
68+
t_run "conda-containerize new conda_broken.yaml --prefix CONDA_INSTALL_DIR | tee conda_inst.out | grep 'ResolvePackageNotFound\|PackagesNotFoundError'" "Conda errors are propagated to the user"
6969
t_run "grep ERROR conda_inst.out" "Failed run contains error"
7070
t_run "grep INFO conda_inst.out" "Info is present"
7171
t_run "test -z \"\$(grep ' DEBUG ' conda_inst.out )\" " "Default no debug message"

0 commit comments

Comments
 (0)