[R-pkg-devel] is R CMD build --compact-vignettes working as expected?
Martin Maechler
m@ech|er @end|ng |rom @t@t@m@th@ethz@ch
Thu Oct 8 09:20:16 CEST 2020
>>>>> Ben Bolker
>>>>> on Wed, 7 Oct 2020 20:42:08 -0400 writes:
> On 10/7/20 8:35 PM, Duncan Murdoch wrote:
>> On 07/10/2020 8:32 p.m., Ben Bolker wrote:
>>> Thanks for the tip, I'll take a look.
>>>
>>> Given that three relatively experienced package
>>> authors all seem to have experienced similar issues, it
>>> seems that maybe this is worth figuring out/maybe I'm
>>> not just doing something boneheaded.
>>
>> Just to clarify: I've never noticed the problem you
>> mention. I just know how to debug R CMD build.
> I wasn't saying you had. My count of three was Bolker
> (me), Fox, Nash.
> cheers Ben
>>
>> Duncan
Thank you, Ben, John (2x), and Duncan.
I agree this should be investigated and fixed if/where needed.
My personal experience is that PDF compaction "has worked for
me" mostly, but not always; I think I never had looked closely
when it did not work, and yes, I know I also had used manual
compaction when I was unhappy with the automatic one.
Given that lme4 takes relatively long, and also given Duncan
Murdoch's precise instruction on how to debug,
could you try to find a as small as "possible" repr.example?
Of course it needs a vignette whose pdf is relatively large or
rather "well compactable", but otherwise could also be an
artificial package.
Martin
>>>
>>> cheers Ben
>>>
>>> On 10/7/20 8:31 PM, Duncan Murdoch wrote:
>>>> I don't know the answer to your question, but you can
>>>> debug the --compact-vignettes option as follows.
>>>>
>>>> debug(tools::compactPDF)
>>>> tools:::.build_packages(c("--compact-vignettes",
>>>> "pkgdir"))
>>>>
>>>> where "pkgdir" is the directory of the source of your
>>>> package. Add extra options to the build as separate
>>>> elements of the argument to .build(): this function is
>>>> called after args have been parsed.
>>>>
>>>> When I do that, I see that it rejects the compaction,
>>>> because none of mine benefit much from it: it wants at
>>>> least a 10% and 10K reduction. But Ben's example met
>>>> those criteria. When I trick it into accepting the
>>>> compaction, it does put the compacted PDF into the
>>>> tarball.
>>>>
>>>> Duncan Murdoch
>>>>
>>>> On 07/10/2020 6:03 p.m., John Fox wrote:
>>>>> Dear Ben,
>>>>>
>>>>> On 2020-10-07 5:26 p.m., Ben Bolker wrote:
>>>>> I hope so too. The (annoying) workaround is to
>>>>> compact the
>>>>> vignette
>>>>> yourself (using qpdf directly or using tools::compactPDF),
>>>>> then use
>>>>> no-build-vignettes. The problem there is whatever's
>>>>> supposed to
>>>>> happen
>>>>> with building vignette indices. The uuuuugly workaround,
>>>>> I guess,
>>>>> is to
>>>>> build the tarball, compact the vignettes oneself, then
>>>>> *replace*
>>>>> them in
>>>>> the tarball. (Obviously I can automate that, but it seems
>>>>> as
>>>>> though it
>>>>> would be unnecessary if I knew what was going on ...)
>>>>>
>>>>> I've used both of these workarounds and agree that it
>>>>> would be nice to avoid them. After all, what is the
>>>>> --compact-vignettes argument for?
>>>>>
>>>>> Best, John
>>>>>
>>>>>>
>>>>> cheers
>>>>> Ben
>>>>>>
>>>>>>
>>>>> On 10/7/20 4:10 PM, John Fox wrote:
>>>>>>> Dear Ben,
>>>>>>>
>>>>>>> I was hoping that someone would pick up on this
>>>>>>> problem, because I've experienced the same issue of
>>>>>>> --compact-vignettes apparently ignored, e.g., with
>>>>>>> the Rcmdr package under R 4.0.2 on both macOS and
>>>>>>> Windows.
>>>>>>>
>>>>>>> Best, John
>>>>>>>
>>>>>>> John Fox, Professor Emeritus McMaster University
>>>>>>> Hamilton, Ontario, Canada web:
>>>>>>> https://socialsciences.mcmaster.ca/jfox/
>>>>>>>
>>>>>>> On 2020-10-05 1:09 p.m., Ben Bolker wrote:
>>>>>>>> Am I confused, or doing something wrong, or
>>>>>>>> ... ?
>>>>>>>>
>>>>>>>> I have qpdf installed, and am running R CMD
>>>>>>>> build with --compact-vignettes, but the PDF in the
>>>>>>>> tarball doesn't seem to be compressed despite the
>>>>>>>> fact that the output messages say "compacting
>>>>>>>> vignettes ..."
>>>>>>>>
>>>>>>>>
>>>>>>>> $ R CMD build --compact-vignettes lme4 *
>>>>>>>> checking for file ‘lme4/DESCRIPTION’ ... OK *
>>>>>>>> preparing ‘lme4’: * checking DESCRIPTION
>>>>>>>> meta-information ... OK * cleaning src * installing
>>>>>>>> the package to process help pages * saving partial
>>>>>>>> Rd database * creating vignettes ... OK Warning:
>>>>>>>> ‘inst/doc’ files ‘lmerperf.html’,
>>>>>>>> ‘lmer.pdf’, ‘PLSvGLS.pdf’, ‘Theory.pdf’
>>>>>>>> ignored as vignettes have been rebuilt. Run R
>>>>>>>> CMD build with --no-build-vignettes to prevent
>>>>>>>> rebuilding. * compacting vignettes and other PDF
>>>>>>>> files * cleaning src * checking for LF line-endings
>>>>>>>> in source and make files and shell scripts *
>>>>>>>> checking for empty or unneeded directories *
>>>>>>>> building ‘lme4_1.1-24.tar.gz’
>>>>>>>>
>>>>>>>> The copy of lmer.pdf in the resulting tarball
>>>>>>>> is 900K or so:
>>>>>>>>
>>>>>>>> $ tar ztvf lme4_1.1-24.tar.gz
>>>>>>>> lme4/inst/doc/lmer.pdf -rw-r--r-- bolker/bolker
>>>>>>>> 907022 2020-10-05 12:59 lme4/inst/doc/lmer.pdf
>>>>>>>>
>>>>>>>> The previously built (and manually compacted)
>>>>>>>> version of lmer.pdf in the tarball is 500K:
>>>>>>>>
>>>>>>>> $ ls -l lme4/inst/doc/lmer.pdf -rw-r--r-- 1 bolker
>>>>>>>> bolker 495199 Oct 3 22:15 lme4/inst/doc/lmer.pdf
>>>>>>>>
>>>>>>>> Is 'R CMD build' confused by the presence of
>>>>>>>> a pre-built PDF in the inst/doc directory? Or am I
>>>>>>>> somehow mistaken about how this is supposed to
>>>>>>>> work?
>>>>>>>>
>>>>>>>> I would just use --no-build-vignettes and
>>>>>>>> submit the tarball with the previously
>>>>>>>> built/compressed PDF, but I'm trying to avoid a
>>>>>>>> "Package has a VignetteBuilder field but no
>>>>>>>> prebuilt vignette index" NOTE, which I assume is
>>>>>>>> missing because I built without building vignettes
>>>>>>>> ... ?
>>>>>>>>
>>>>>>>> As always, enlightenment is welcome.
>>>>>>>>
>>>>>>>> cheers Ben Bolker
>>>>>>>>
>>>>>>>> ______________________________________________
>>>>>>>> R-package-devel using r-project.org mailing list
>>>>>>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>>>>>
>>>>> ______________________________________________
>>>>> R-package-devel using r-project.org mailing list
>>>>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>>>>>
>>>>
>>
> ______________________________________________
> R-package-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel
More information about the R-package-devel
mailing list