lcolladotor / biocthis

Automate package and project setup for Bioconductor packages
https://lcolladotor.github.io/biocthis/
50 stars 17 forks source link

[BUG] Github action fails when building vignettes requering LaTeX #17

Closed yaccos closed 3 years ago

yaccos commented 3 years ago

I have created a Github action using use_bioc_github_action. This package includes Sweave vignette sources which are build to pdf files using knitr. More specifically, the discussed package is this one: https://github.com/AlmaasLab/micInt. The actions for all three platforms fails due to lack of pdf building utilities on the machines as this extract shows: E> --- re-building ‘ccrepe.Rnw’ using knitr E> Warning in has_utility("pdfcrop") : E> pdfcrop not installed or not in PATH E> Warning in has_utility("ghostscript") : not installed or not in PATH E> Warning in system2(command, args, env = env, stdout = outfile, stderr = errfile, : E> error in running command E> Warning in system2(command, args, env = env, stdout = outfile, stderr = errfile, : E> error in running command E> Error: processing vignette 'ccrepe.Rnw' failed with diagnostics: E> Running 'texi2dvi' on 'ccrepe.tex' failed. E> Messages: E> sh: 1: /usr/bin/texi2dvi: not found E> --- failed re-building ‘ccrepe.Rnw’

Hence, for the actions to run properly, pdfcrop, ghostscript, a LaTeX distribution (and other packages ?) have to be added as dependencies in the action. I know that for packages with very specific system dependencies the check-bioc.yml must be adopted in each case. However, this building vignette process is a rather general one and many packages would benefit from updating the upstream check-bioc.yml.

lcolladotor commented 3 years ago

Hi,

I think that you can resolve those dependencies with tinytex https://yihui.org/tinytex/. That is, add the following commands somewhere in the "install R dependencies" action https://github.com/AlmaasLab/micInt/blob/1fa54eca8107fd47d9f5823f0fe3280b794269a1/.github/workflows/check-bioc.yml#L158.

install.packages('tinytex')
tinytex::install_tinytex()

Many packages use HTML vignettes nowadays, so I think that it's best to add these dependencies as needed.

Best, Leo