[R-pkg-devel] is R CMD build --compact-vignettes working as expected?

Henrik Singmann @|ngm@nn @end|ng |rom gm@||@com
Thu Oct 8 17:53:38 CEST 2020


Hi both,

I am not sure if this might be the issue here, but I think on both
Linux and Windows I need to use the both option without quotation
marks: --compact-vignettes=both

Best,
Henrik


Am Do., 8. Okt. 2020 um 17:21 Uhr schrieb Ben Bolker <bbolker using gmail.com>:
>
>    Huh, weird. "both" worked for me.
>
>    My debugging process involved instrumenting the compression function
> to report what it was doing (see below), rebuilding R, and running the
> build and check --as-cran processes again. (If the package you're
> experiencing problems with is public, feel free to point me to it and
> I'll try to take a look.)
>
>    cheers
>     Ben
>
> Index: src/library/tools/R/admin.R
> ===================================================================
> --- src/library/tools/R/admin.R (revision 79311)
> +++ src/library/tools/R/admin.R (working copy)
> @@ -1088,6 +1088,7 @@
>           }
>           if(!res && file.exists(tf)) {
>               old <- file.size(p); new <-  file.size(tf)
> +            cat(sprintf("compression: old=%f, new=%f, new/old=%f,
> old-new=%f",old, new, new/old,old-new),"\n")
>               if(new/old < 0.9 && new < old - 1e4) {
>                   file.copy(tf, p, overwrite = TRUE)
>                   ans[p, ] <- c(old, new)
>
>
> On 10/8/20 11:10 AM, John Fox wrote:
> > Dear Ben,
> >
> > Actually, what I used was --compact-vignettes="both", with qpdf and gs
> > installed on my Windows and Mac machines, and that apparently didn't
> > work for me.
> >
> > Best,
> >   John
> >
> > On 2020-10-07 10:06 p.m., Ben Bolker wrote:
> >>    OK, I think I see the problem. tl;dr use --compact-vignettes="both"
> >> when building the vignettes.
> >>
> >>    --compact-vignettes  by default only tries qpdf.
> >>
> >>    when the R CMD check --as-cran is run, it tries both qpdf and gs.
> >> Since gs (apparently, in this case) compresses more aggressively than
> >> qpdf, it succeeds in compressing further, and the check complains.
> >>
> >>  From R CMD build --help:
> >>
> >>   --compact-vignettes=  try to compact PDF files under inst/doc:
> >>                          "no" (default), "qpdf", "gs", "gs+qpdf", "both"
> >>    --compact-vignettes   same as --compact-vignettes=qpdf
> >>
> >>
> >>    I don't know if this is worth documenting somewhere, or modifying
> >> the behaviour to make "both" the default for --compact-vignettes ?
> >>
> >>
> >> 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.
> >>>
> >>> Duncan
> >>>
> >>>>
> >>>>     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



-- 
Dr. Henrik Singmann
Lecturer, Experimental Psychology
University College London (UCL), UK
http://singmann.org



More information about the R-package-devel mailing list