Skip to content

[Bioc-devel] Bioconductor time out in Windows while building vignettes

4 messages · Hervé Pagès, Nuno Agostinho

#
Hey all,

I have a Bioconductor package named psichomics <https://bioconductor.org/packages/psichomics> that is timing out according to the Bioconductor R CMD build reports for Windows (both release and devel versions). This time out occurs after ~40 minutes while trying to create the package vignettes.

In my local Windows virtual machine (running the latest Windows 10 Enterprise 20H2 <https://developer.microsoft.com/en-us/windows/downloads/virtual-machines/> in VMware Fusion 12.1.2 using R 4.1.0 and Bioconductor 3.13), it takes ~2m30 to finish building the package using the same command shown in the Bioconductor build report <http://bioconductor.org/checkResults/release/bioc-LATEST/psichomics/tokay2-buildsrc.html>:

R.exe CMD build --keep-empty-dirs --no-resave-data psichomics

How can I replicate the environment used in Bioconductor build reports to test what is going on?

My package hasn't built once for Windows since the new release of Bioconductor 3.13 and I have no idea how to solve this... Any help would be greatly appreciated. Thanks!

Best regards,

Nuno Agostinho
PhD student
Nuno Morais Lab
1 day later
#
Hi Nuno,

When I go on riesling1 and run 'R CMD build' on psichomics, the 
evaluation of the CLI_tutorial.Rmd vignette gets stuck at the call to 
plotSplicingEvent(). This call fires up the browser to display the 
alternate splicing event and the evaluation of the vignette resumes only 
after I shutdown the browser.

Note that, strangely enough, this doesn't happen all the time. After 
being able to reproduce this a couple of times, my further attempts failed!

One more thing: this call to plotSplicingEvent() doesn't actually inject 
anything in the final HTML vignette. Take a look at the vignette linked 
from the landing page of the package (first vignette listed at 
https://bioconductor.org/packages/3.13/psichomics) and you'll see that 
only the next plot (produced by plotDistribution()) shows up in the 
vignette.

That's all I was able to find out, sorry. Hopefully you'll still be able 
to somehow make some sense of this information.

Best,
H.
On 09/06/2021 07:35, Nuno Agostinho wrote:

  
    
#
Hi Herv?,

Many thanks for your help! I modified plotSplicingEvent() to run differently in non-interactive R sessions. Now, it correctly prints the output in the vignette without opening the browser! Still, I find it weird that this issue is only a problem since Bioconductor 3.13 and for Windows only...

Anyway, just updated the new version in Bioconductor, let's see if it solves the timeout issue. Thanks again!

Best,
Nuno
#
I agree that we don't have a fully satisfying explanation of what's 
going on.

I investigated a little further and found the following:

1) I can reproduce this problem on a package that contains a dummy 
vignette with the following 1-line code chunk:

     utils::browseURL("https://bioconductor.org")

Running 'R CMD build' on such package on our Windows builder (riesling1) 
reproduces the problem i.e. the evaluation of the vignette gets stuck at 
the utils::browseURL() call. This call fires up the browser to display 
Bioconductor's home page but for some reason it doesn't return. Instead 
it waits for the browser to shut down.

2) If the browser is already up and running on the machine (we have 
Google Chrome on riesling1) then 'R CMD build' works fine. In this case 
the call to utils::browseURL() opens Bioconductor's home page in a new 
tab and returns immediately after that.

3) What makes all this kind of hard to reproduce is that it doesn't 
happen in an interactive R session i.e. if I start R and call 
utils::browseURL("https://bioconductor.org") interactively, everything 
works fine. So this problem only happens on Windows, in the context of 
'R CMD build' or 'R CMD check', and if the browser is not already running.

4) Unlike on Linux or Mac where utils::browseURL() uses system() to fire 
up the browser, on Windows it uses shell.exec() to open the URL. Note 
that shell.exec() relies on the Windows File Associations to find the 
right application to open the file or URL. See ?shell.exec.

So to me, everything points at a problem with shell.exec(). It would be 
great if someone could try to reproduce this.

Finally, note that this problem seems to have been affecting psichomics 
for a while based on this archived build report from last year:

   https://bioconductor.org/checkResults/3.11/bioc-LATEST/psichomics/

Best,
H.
On 11/06/2021 07:51, Nuno Agostinho wrote: