I decided to force myself to select the correct inferior-ess-r-program with the 
(probably embarrassing) elisp below. My bash scripts are named either `R-4.x.y` 
or` my-R-4.3.2`  ... so the first function picks those from a directory.  The 
second uses that to swoop up the directory tree until it finds one, and the 
final one is the one I call interactively that offers me a 'menu' of R to use  
- there's probably a way to have it non-interactive, but I might have multiple 
R versions in the same directory!

 As an aside, my actual R-4.x.y script contains an expanded version of the bash 
script sent previously - if there's a softlink to it beginning my-R, calling it 
adds the extra 'interactive' binds. Softlinks to it called 'shiny' or 'rstudio' 
(I haven't been successful in convincing colleagues of the one true way!) do 
what you'd hope (either on the login node or submitting it) - I'll try to tidy 
that up a bit as it's proving quite useful.

  (defun gpk-rscripts (path)
    "Get a list of potential R-calling scripts in path"
    (append (file-name-all-completions "R-" path) (file-name-all-completions 
"my-R" path))
    )

  (defun gpk-findr ()
    (mapcan (lambda (path)
              (mapcar (lambda (r) (concat path r)) (gpk-rscripts path))
              )
            (list (locate-dominating-file default-directory (lambda(d) 
(gpk-rscripts d))))
            )
    )

  (defun gpk-r-set ()
    "Find R executables"
    (interactive)
    (setq inferior-ess-r-program (completing-read "R version: "  (gpk-findr)) )
    )



-----Original Message-----
From: ESS-help <ess-help-boun...@r-project.org> On Behalf Of James W. MacDonald 
via ESS-help
Sent: 19 November 2024 16:00
To: ess-help@r-project.org
Subject: Re: [ESS] Emacs/ESS using Singularity container


External Sender: Use caution.


That's very helpful! One more question if you don't mind. In Lionel Henry's 
solution, he changes ess-customize-alist to map inferior-ess-r-program to the 
shell script that starts the container. If you have individual shell scripts in 
each analysis directory, I assume you are not doing that? Or do I misunderstand 
how ess-r-customize-alist works?

defun R-docker ()
  (interactive)
  (let ((ess-r-customize-alist
         (append ess-r-customize-alist
                 '((inferior-ess-r-program . <shell script location goes 
here>))))
                 (ess-R-readline t))
                 (R)))

Thanks so much,

Jim

-----Original Message-----
From: ESS-help <ess-help-boun...@r-project.org> On Behalf Of Gavin Kelly via 
ESS-help
Sent: Tuesday, November 19, 2024 5:57 AM
To: ess-help@r-project.org
Subject: Re: [ESS] Emacs/ESS using Singularity container

I'm running ESS in similar HPC circumstances, and have adopted a similar 
solution to the one in Lionel Henry's post.  I tend to keep a shell script 
along the lines of the following in every project, and it works 'fine'. It's 
singularity, but I think apptainer is equivalent.  Just in case it helps.



```
pwd=$(realpath ${PWD})
project_root=$(realpath $(git rev-parse --show-toplevel || echo ${pwd)) 
extra=--bind 
$HOME/.Xauthority,$HOME/.Xdefaults,$HOME/.Xresources,$HOME/.emacs.d,$HOME/.ssh 
--env DISPLAY=$DISPLAY # in real life, $extra is defined in elsewhere and is 
only used in interactive sessions, not in e.g. makefiles.
cmd=R
image=bioconductor_docker_3.18-R-4.3.2.sif
singularity exec --bind ${project_root},/tmp --pwd ${pwd} --containall 
--cleanenv  --env 
SQLITE_TMPDIR=/tmp,BIOCPARALLEL_WORKER_NUMBER=2,GITHUB_PAT=${GITHUB_PAT} 
${extra} ${image} ${cmd} $@ ``` The Francis Crick Institute Limited is a 
registered charity in England and Wales no. 1140062 and a company registered in 
England and Wales no. 06885462, with its registered office at 1 Midland Road 
London NW1 1AT

______________________________________________
ESS-help@r-project.org mailing list
https://urldefense.com/v3/__https://stat.ethz.ch/mailman/listinfo/ess-help__;!!K-Hz7m0Vt54!kZsw4QAGEjvgcvGm2yIOYXWL9HXVCyZ_xygq22RiCXRtb6Q4IJz1MNikuNEZm29gn1PWPusW0iaf79DkTx1U5wmJIpk$

______________________________________________
ESS-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/ess-help
The Francis Crick Institute Limited is a registered charity in England and 
Wales no. 1140062 and a company registered in England and Wales no. 06885462, 
with its registered office at 1 Midland Road London NW1 1AT

______________________________________________
ESS-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/ess-help

Reply via email to