Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Singularity container fails #2

Open
richelbilderbeek opened this issue Jan 19, 2022 · 6 comments
Open

Singularity container fails #2

richelbilderbeek opened this issue Jan 19, 2022 · 6 comments

Comments

@richelbilderbeek
Copy link
Contributor

richelbilderbeek commented Jan 19, 2022

Copied from this error log:

********************************
Run 'ormr::ormr_report'
********************************
Create the environment, will check if it already exists

# >>>>>>>>>>>>>>>>>>>>>> ERROR REPORT <<<<<<<<<<<<<<<<<<<<<<

    Traceback (most recent call last):
      File "/miniconda/lib/python3.9/site-packages/conda/exceptions.py", line 1080, in __call__
        return func(*args, **kwargs)
      File "/miniconda/lib/python3.9/site-packages/conda/cli/main.py", line 84, in _main
        exit_code = do_call(args, p)
      File "/miniconda/lib/python3.9/site-packages/conda/cli/conda_argparse.py", line 83, in do_call
        return getattr(module, func_name)(args, parser)
      File "/miniconda/lib/python3.9/site-packages/conda/cli/main_run.py", line 25, in execute
        script_caller, command_args = wrap_subprocess_call(on_win, context.root_prefix, prefix,
      File "/miniconda/lib/python3.9/site-packages/conda/utils.py", line 403, in wrap_subprocess_call
        with Utf8NamedTemporaryFile(mode='w', prefix=tmp_prefix, delete=False) as fh:
      File "/miniconda/lib/python3.9/site-packages/conda/auxlib/compat.py", line 88, in Utf8NamedTemporaryFile
        return NamedTemporaryFile(
      File "/miniconda/lib/python3.9/tempfile.py", line 541, in NamedTemporaryFile
        (fd, name) = _mkstemp_inner(dir, prefix, suffix, flags, output_type)
      File "/miniconda/lib/python3.9/tempfile.py", line 251, in _mkstemp_inner
        fd = _os.open(file, flags, 0o600)
    OSError: [Errno 30] Read-only file system: '/opt/ormr/.tmp76bmdb24'

`$ /miniconda/bin/conda run --prefix /opt/ormr --no-capture-output python -c import os; print(os.environ['PATH'])`

The error occurs in the test section of the Singularity script, when running ormr::ormr_report(ormr_folder_name = "/opt/ormr", verbose = TRUE). What happens is that ormr_report tries to install conda again, instead of detecting it.

@richelbilderbeek
Copy link
Contributor Author

richelbilderbeek commented Jan 19, 2022

Error originates in create_conda_env, as the next message is never shown:

Screenshot from 2022-01-19 12-55-23

@richelbilderbeek
Copy link
Contributor Author

From here:

#!/bin/bash

# See also https://www.rocker-project.org/use/singularity/

# Main parameters for the script with default values
PORT=${PORT:-8787}
USER=$(whoami)
PASSWORD=${PASSWORD:-notsafe}
TMPDIR=${TMPDIR:-tmp}
CONTAINER="rstudio_latest.sif"  # path to singularity container (will be automatically downloaded)

# Set-up temporary paths
RSTUDIO_TMP="${TMPDIR}/$(echo -n $CONDA_PREFIX | md5sum | awk '{print $1}')"
mkdir -p $RSTUDIO_TMP/{run,var-lib-rstudio-server,local-share-rstudio}

R_BIN=$CONDA_PREFIX/bin/R
PY_BIN=$CONDA_PREFIX/bin/python

if [ ! -f $CONTAINER ]; then
	singularity build --fakeroot $CONTAINER Singularity
fi

if [ -z "$CONDA_PREFIX" ]; then
  echo "Activate a conda env or specify \$CONDA_PREFIX"
  exit 1
fi

echo "Starting rstudio service on port $PORT ..."
singularity exec \
	--bind $RSTUDIO_TMP/run:/run \
	--bind $RSTUDIO_TMP/var-lib-rstudio-server:/var/lib/rstudio-server \
	--bind /sys/fs/cgroup/:/sys/fs/cgroup/:ro \
	--bind database.conf:/etc/rstudio/database.conf \
	--bind rsession.conf:/etc/rstudio/rsession.conf \
	--bind $RSTUDIO_TMP/local-share-rstudio:/home/rstudio/.local/share/rstudio \
	--bind ${CONDA_PREFIX}:${CONDA_PREFIX} \
	--bind $HOME/.config/rstudio:/home/rstudio/.config/rstudio \
        `# add additional bind mount required for your use-case` \
	--bind /data:/data \
	--env CONDA_PREFIX=$CONDA_PREFIX \
	--env RSTUDIO_WHICH_R=$R_BIN \
	--env RETICULATE_PYTHON=$PY_BIN \
	--env PASSWORD=$PASSWORD \
	--env PORT=$PORT \
	--env USER=$USER \
	rstudio_latest.sif \
	/init.sh

@richelbilderbeek
Copy link
Contributor Author

So it is reticulate::use_condaenv that causes the crash:

Screenshot from 2022-02-01 09-22-40

@richelbilderbeek
Copy link
Contributor Author

Already at https://github.com/richelbilderbeek/reticulate_on_singularity this has been failing.

Here is the most relevant part of the Singularity script:

    # Install reticulate
    Rscript -e 'install.packages("reticulate")'

    # Create the Conda environment at a system folder
    Rscript -e 'reticulate::conda_create(envname = "/opt/ormr")'
    Rscript -e 'reticulate::use_condaenv(condaenv = "/opt/ormr")'

Error from here:

****************************
Run 'reticulate::use_condaenv'
****************************

# >>>>>>>>>>>>>>>>>>>>>> ERROR REPORT <<<<<<<<<<<<<<<<<<<<<<

    Traceback (most recent call last):
      File "/miniconda/lib/python3.9/site-packages/conda/exceptions.py", line 1080, in __call__
        return func(*args, **kwargs)
      File "/miniconda/lib/python3.9/site-packages/conda/cli/main.py", line 84, in _main
        exit_code = do_call(args, p)
      File "/miniconda/lib/python3.9/site-packages/conda/cli/conda_argparse.py", line 83, in do_call
        return getattr(module, func_name)(args, parser)
      File "/miniconda/lib/python3.9/site-packages/conda/cli/main_run.py", line 25, in execute
        script_caller, command_args = wrap_subprocess_call(on_win, context.root_prefix, prefix,
      File "/miniconda/lib/python3.9/site-packages/conda/utils.py", line 403, in wrap_subprocess_call
        with Utf8NamedTemporaryFile(mode='w', prefix=tmp_prefix, delete=False) as fh:
      File "/miniconda/lib/python3.9/site-packages/conda/auxlib/compat.py", line 88, in Utf8NamedTemporaryFile
        return NamedTemporaryFile(
      File "/miniconda/lib/python3.9/tempfile.py", line 541, in NamedTemporaryFile
        (fd, name) = _mkstemp_inner(dir, prefix, suffix, flags, output_type)
      File "/miniconda/lib/python3.9/tempfile.py", line 251, in _mkstemp_inner
        fd = _os.open(file, flags, 0o600)
    OSError: [Errno 30] Read-only file system: '/opt/ormr/.tmppbootsp1'

`$ /miniconda/bin/conda run --prefix /opt/ormr --no-capture-output python -c import os; print(os.environ['PATH'])`

  environment variables:
                 CIO_TEST=<not set>
               CONDA_ROOT=/miniconda
           CURL_CA_BUNDLE=<not set>
        GITHUB_EVENT_PATH=/github/workflow/event.json
              GITHUB_PATH=/__w/_temp/_runner_file_commands/add_path_df883f6b-edaa-4c5d-980d-a08c
                          62a26ace
                   GOPATH=/go
          LD_LIBRARY_PATH=/usr/lib/R/lib:/usr/lib/x86_64-linux-gnu:/usr/lib/jvm/default-
                          java/lib/server:/.singularity.d/libs
                     PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
       REQUESTS_CA_BUNDLE=<not set>
            SSL_CERT_FILE=<not set>
             SUDO_COMMAND=/usr/local/bin/singularity --quiet build ormr.sif Singularity
                 SUDO_GID=0
                 SUDO_UID=0
                SUDO_USER=root
                USER_PATH=/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/us
                          r/bin:/sbin:/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/loc
                          al/sbin

     active environment : None
       user config file : /root/.condarc
 populated config files : 
          conda version : 4.11.0
    conda-build version : not installed
         python version : 3.9.5.final.0
       virtual packages : __linux=5.11.0=0
                          __glibc=2.33=0
                          __unix=0=0
                          __archspec=1=x86_64
       base environment : /miniconda  (read only)
      conda av data dir : /miniconda/etc/conda
  conda av metadata url : None
           channel URLs : https://repo.anaconda.com/pkgs/main/linux-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/linux-64
                          https://repo.anaconda.com/pkgs/r/noarch
          package cache : /miniconda/pkgs
                          /root/.conda/pkgs
       envs directories : /root/.conda/envs
                          /miniconda/envs
               platform : linux-64
             user-agent : conda/4.11.0 requests/2.27.1 CPython/3.9.5 Linux/5.11.0-1027-azure debian/ glibc/2.33
                UID:GID : 0:0
             netrc file : None
           offline mode : False


An unexpected error has occurred. Conda has prepared the above report.

Error in Sys.setenv(PATH = new_path) : wrong length for argument
Calls: <Anonymous> ... use_python -> python_config -> python_munge_path -> Sys.setenv
In addition: Warning message:
In system2(conda, c("run", in_env, run_args, shQuote(cmd), args),  :
  running command ''/miniconda/bin/conda' run --prefix '/opt/ormr' --no-capture-output 'python' -c "import os; print(os.environ['PATH'])"' had status 1
Execution halted

@richelbilderbeek
Copy link
Contributor Author

This Issue depends on richelbilderbeek/reticulate_on_singularity#1

@richelbilderbeek
Copy link
Contributor Author

List of places where similar problems are posted:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant