diff --git a/brilws-env b/brilws-env new file mode 100755 index 0000000000000000000000000000000000000000..44da150288a315ab44b508fc2e6577632ce4c31e --- /dev/null +++ b/brilws-env @@ -0,0 +1,75 @@ +#!/bin/bash -e +SINGULARITY_OPTS= +IGNORE_MOUNTS="" +UNPACKED_IMAGE_DEFAULT="/cvmfs/unpacked.cern.ch/gitlab-registry.cern.ch/cms-cloud/brilws-docker" +DOCKER_IMAGE_DEFAULT="docker://gitlab-registry.cern.ch/cms-cloud/brilws-docker" +SINGULARITY_OPTS_ENV="--env PYTHONPATH=/home/bril/.local/lib/python3.10/site-packages" +BRILWS_VERSION_DEFAULT="latest" +while [ "$#" != 0 ]; do + case "$1" in + -h|--help) + HELP_ARG="" + echo "Usage: $0 [-h|--help] ${HELP_ARG}[singularity-options] [--ignore-mount ] [--version|-- ]" + echo "Environment variable BRILWS_IMAGE can be set to point to either valid docker/singularity image or unpacked image path" + exit 0 + ;; + --ignore-mount) IGNORE_MOUNTS=$(echo $2 | tr ',' ' '); shift; shift ;; + --version) + BRILWS_VERSION=$2 ; shift ; shift ;; + *) + # FIXME + SINGULARITY_OPTS="${SINGULARITY_OPTS} $1" + shift + ;; + esac +done + +MOUNT_POINTS="" +if [ "X${SINGULARITY_BINDPATH}" != "X" ] ; then MOUNT_POINTS="${SINGULARITY_BINDPATH}" ; fi +if [ -d /cvmfs ] ; then + for repo in cms-bril unpacked grid ; do + ls /cvmfs/${repo}.cern.ch >/dev/null 2>&1 || true + done + MOUNT_POINTS="${MOUNT_POINTS},/cvmfs" +fi +for dir in /eos /afs /nfs /pnfs ; do + if [ -e $dir ] ; then MOUNT_POINTS="${MOUNT_POINTS},${dir}" ; fi +done + +if [ "X${BRILWS_VERSION}" = "X" ] ;then + BRILWS_VERSION=${BRILWS_VERSION_DEFAULT} +fi + +# Check if an image location has been specified manually, set default otherwise +if [ "X${BRILWS_IMAGE}" = "X" ] ;then + UNPACKED_IMAGE=${UNPACKED_IMAGE_DEFAULT}:${BRILWS_VERSION} +fi + +# Check if the image is available in unpacked form +if [ ! -d "${UNPACKED_IMAGE}" ] ; then + echo "CVMFS unpacked image '${UNPACKED_IMAGE}' not available, resorting to image from registry." + UNPACKED_IMAGE=${DOCKER_IMAGE_DEFAULT}:{BRILWS_VERSION} +fi + +if [ -e $UNPACKED_IMAGE ] ; then + VALID_MOUNT_POINTS="" + for dir in $(echo $MOUNT_POINTS | tr ',' '\n' | sort | uniq) ; do + if [ "${IGNORE_MOUNTS}" != "" ] ; then + hdir=$(echo $dir | sed 's|:.*||') + if [ $(echo " ${IGNORE_MOUNTS} " | grep " $hdir " | wc -l) -gt 0 ] ; then continue ; fi + fi + bind_dir=$(echo $dir | sed 's|.*:||') + if [ ! -e ${UNPACKED_IMAGE}/${bind_dir} ] ; then + VALID_MOUNT_POINTS="${VALID_MOUNT_POINTS},${dir}" + fi + done + export SINGULARITY_BINDPATH=$(echo ${VALID_MOUNT_POINTS} | sed 's|^,||') +fi + +SINGULARITY_OPTS="${SINGULARITY_OPTS} ${SINGULARITY_OPTS_ENV}" + +alias brilcalc="singularity -s exec ${SINGULARITY_OPTS} $UNPACKED_IMAGE brilcalc" +alias brilschema="singularity -s exec ${SINGULARITY_OPTS} $UNPACKED_IMAGE brilschema" +alias briltag="singularity -s exec ${SINGULARITY_OPTS} $UNPACKED_IMAGE briltag" + +echo "BRIL Work Suite should now be available."