# Get some variables provided by autosubmit. # TODO: What do we do to ensure that these variables are defined in the proj file? WORKDIR=%HPCROOTDIR% ICON_VERSION=%ICON_VERSION% SPACK_URL=%SPACK.URL% SPACK_BRANCH=%SPACK.BRANCH% SPACK_COMPILER=%SPACK.COMPILER% PYTHON_VERSION=%PYTHON_ENVIRONMENT.PYTHON_VERSION% MODULES="%MODULES%" if [ ! -z "${MODULES}" ]; then module load $(python -c "print(' '.join(${MODULES}))"); fi # Go to the working directory cd ${WORKDIR} . ${WORKDIR}/proj/platforms/common/spack_utils.sh load_spack "%spack.init%" "%spack.root%" "%spack.url%" "%spack.branch%" "%spack.externals%" "%spack.compiler%" "%spack.disable_local_config%" "%spack.user_cache_path%" "%spack.user_config_path%" "%spack.upstreams%" # Use spack to get a recent enough version of python3 if [ $(spack find python@${PYTHON_VERSION}: &>/dev/null ) ]; then echo "python@${PYTHON_VERSION} already installed!" else echo "Installing a version of python3" # Compile openmpi with schedulers=slurm spack install python@${PYTHON_VERSION} fi # Load the python module spack load --first python@${PYTHON_VERSION} PYTHON_ENVIRONMENT_FOLDER=%python_environment.folder_name% if [ ! -d ${PYTHON_ENVIRONMENT_FOLDER} ]; then # Create virtual environment python3 -m venv --prompt AS ${PYTHON_ENVIRONMENT_FOLDER} fi # Load environment source ${PYTHON_ENVIRONMENT_FOLDER}/bin/activate # Create a link to the binary ln -sf $(which python3) ${WORKDIR}/python3 # Install the requirements via pip # TODO: Due to a incompatibility issue between latest numba and numpy I have to add this here. Hopefully removable soon. requirements="%python_environment.requirements%" # Convert list with python format to a bash array requirements=($(echo ${requirements} | sed "s/'//g" | tr -d '[],')) #TODO: Shouldn't be necessary but it is for now to overcome an issue with a repetition of the requirements. # Use sort and uniq to get the unique elements unique_requirements=($(printf "%s\n" "${requirements[@]}" | sort -u)) # Print the unique elements echo "${unique_requirements[@]}" # Install requirements. for requirement in "${unique_requirements[@]}"; do python -m pip install ${requirement} done