[Rd] R CMD build cannot create vignettes on Windows if Makefile is used

Duncan Murdoch murdoch.duncan at gmail.com
Mon Sep 13 12:34:11 CEST 2010

Hervé Pagès wrote:
> Hi Duncan,
> On 09/12/2010 05:07 AM, Duncan Murdoch wrote:
>> On 12/09/2010 12:49 AM, Hervé Pagès wrote:
>>> Hi Duncan,
>>> On 09/11/2010 03:56 AM, Duncan Murdoch wrote:
>>>> On 11/09/2010 12:52 AM, Hervé Pagès wrote:
>>>>> Hi,
>>>>> I found the following problem with recent R-devel
>>>>> (2010-08-26 r52817) on Windows (32-bit and 64-bit):
>>>>> 'R CMD build <pkg>' gets stalled during vignett
>>>>> creation for packages that have a Makefile in <pkg>/inst/doc.
>>>>> It seems that the problem is that the commands used in the
>>>>> Makefile for converting .tex to .pdf are not able to locate
>>>>> the Sweave.sty file anymore (if I drop this file to
>>>>> <pkg>/inst/doc, then the problem goes away).
>>>> This sounds like a problem that only the package maintainer could
>>>> address. Presumably it will be temporary: once they adjust to the new
>>>> organization of the share/texmf directory, things will be fine again.
>>>> The reorg is described in this NEWS item:
>>>> * Directory R_HOME/share/texmf now follows the TDS conventions, so
>>>> can be set as a texmf tree ('root directory' in MiKTeX parlance).
>>> Before this reorg, the package maintainer didn't have to care about
>>> where to find things in R_HOME/share/texmf. 'R CMD build' would just
>>> find them by setting the TEXINPUTS envir variable appropriately (and
>>> then commands in the inst/doc/Makefile file would find them too).
>>> This reorg was checked in svn as rev 52256. I see the following
>>> adjustments to TEXINPUTS:
>>> ** On Unix (src/scripts/Rcmd.in file):
>>> -## Append 'share/texmf' to TeX's input search path.
>>> -if test -z "$TEXINPUTS}"; then
>>> - TEXINPUTS=".:${R_SHARE_DIR}/texmf:"
>>> +## Append 'share/texmf/...' to TeX's input search path.
>>> +if test -z "${TEXINPUTS}"; then
>>> + TEXINPUTS=".:${R_SHARE_DIR}/texmf/tex/latex:"
>>> else
>>> - TEXINPUTS=".:${TEXINPUTS}:${R_SHARE_DIR}/texmf:"
>>> + TEXINPUTS=".:${TEXINPUTS}:${R_SHARE_DIR}/texmf/tex/latex:"
>>> fi
>>> export TEXINPUTS
>>> ** On Windows (src/gnuwin32/fixed/etc/Rcmd_environ file):
>>> +TEXINPUTS=.;${TEXINPUTS};${R_SHARE_DIR}/texmf/tex/latex;
>>> The path seems to have been adjusted correctly. So my question is:
>>> why isn't this working on Windows for packages that use a Makefile?
>> I don't know. My first assumption would that something in the Makefile
>> is wrong, but since you don't give any examples, I can't check.
> There are 8 Bioconductor packages failing to build on Windows
> because of this problem. They have a Makefile in inst/doc/ that
> calls 'pdflatex' or 'texi2dvi --pdf' on <some_vignette> to convert
> <some_vignette>.tex into <some_vignette>.pdf. They don't
> have Sweave.sty in inst/doc/ (other packages use the same kind of
> Makefile and are building ok because they have a copy of Sweave.sty
> in inst/doc/).
> For example, here is the content of adSplit/inst/doc/Makefile:
> all:	pdf clean
> pdf:	tr_2005_02.tex
> 	epstopdf splitSet.eps
> 	pdflatex tr_2005_02
> 	pdflatex tr_2005_02
> 	pdflatex tr_2005_02
> clean:
> 	rm -f *.aux *.eps *.log *.out *.tex *.toc
> 	rm -f Rplots.ps splitSet.pdf tr_2005_02-*
> The 7 other packages use similar Makefile. As I said before, they
> all used to build ok before the R_HOME/share/texmf reorg. They still
> build ok on non-Windows machines. Thanks!
> H.

On Windows using MikTeX, we put a -I option on the command line to point 
to the input directory.  If you don't want to do that, you can use "R 
CMD texify --pdf" instead of "pdflatex"; it will try to determine the 
appropriate command line based on the platform.

Duncan Murdoch

More information about the R-devel mailing list