#!/usr/bin/env bash
set -euo pipefail
usage() {
cat &2
exit 2
;;
esac
done
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd -- "${SCRIPT_DIR}/.." && pwd)"
if [[ ! -f "${SCRIPT_DIR}/${ENV_FILE}" ]]; then
echo "Environment file not found: ${SCRIPT_DIR}/${ENV_FILE}" >&2
exit 1
fi
if ! command -v conda >/dev/null 2>&1; then
cat >&2 &1; then
APT_PREFIX=""
if command -v sudo >/dev/null 2>&1; then
APT_PREFIX="sudo"
fi
${APT_PREFIX} apt-get update
${APT_PREFIX} apt-get install -y libglu1-mesa
fi
pushd "${SCRIPT_DIR}" >/dev/null
if ! conda env create -n "${ENV_NAME}" -f "${ENV_FILE}"; then
conda env update -n "${ENV_NAME}" -f "${ENV_FILE}" --prune
fi
popd >/dev/null
# gmsh wheels on Linux can require libXft at runtime. Installing the conda
# package keeps the fix inside the environment and avoids an extra system
# dependency beyond libglu1-mesa.
conda install -n "${ENV_NAME}" -c conda-forge -y xorg-libxft
if [[ "${WITH_PETSC}" -eq 1 ]]; then
conda install -n "${ENV_NAME}" -c conda-forge -y petsc petsc4py mpi4py mpich
conda run -n "${ENV_NAME}" python -c "from petsc4py import PETSc; print('PETSc', PETSc.Sys.getVersion())"
fi
conda run -n "${ENV_NAME}" python "${SCRIPT_DIR}/verify_dev_env.py" \
--dist-name hydromodpy \
--expected-editable-root "${REPO_ROOT}" \
--require-docs \
--require-tests
cat