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

Hervé Pagès hpages at fhcrc.org
Mon Sep 13 20:38:59 CEST 2010


On 09/13/2010 03:34 AM, Duncan Murdoch wrote:
> 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;
>>>> +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.

Yes I can use 'R CMD some_command' instead of just 'some_command' in the
Makefile so 'some_command' sees the TEXINPUTS variable and that solves
the problem. But when I call 'R CMD build', shouldn't 'make' and its
child processes ('pdflatex', 'texify', etc...) already see TEXINPUTS?
Why do I need to call the commands in the Makefile thru R CMD again
in order to see TEXINPUTS?

Thanks for suggesting workarounds but don't you think there is a real
problem?

H.

>
> Duncan Murdoch


-- 
Hervé Pagès

Program in Computational Biology
Division of Public Health Sciences
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N, M2-B876
P.O. Box 19024
Seattle, WA 98109-1024

E-mail: hpages at fhcrc.org
Phone:  (206) 667-5791
Fax:    (206) 667-1319



More information about the R-devel mailing list