On 08/06/2018 5:12 AM, Roman Flury wrote:
Dear all,

I'm working on a package which contains a static vignette. If the pkg is built 
with R version 3.3.3 everything works fine, but if built with the current 
R-devel version I get the warning:

     NB: this package now depends on R (>= 3.5.0)
     WARNING: Added dependency on R >= 3.5.0 because serialized objects in  
serialize/load version 3 cannot be read in older versions of R.  File(s) 
containing such objects:  'staticvignettepkg/build/vignette.rds'

and as described the dependency on R >= 3.5.0 is added to the DESCRIPTION file.

I found possible context for this behaviour in the R-devel NEWS 
https://cran.r-project.org/doc/manuals/r-devel/NEWS.html:

''R has new serialization format (version 3) which supports custom 
serialization of ALTREP framework objects. These objects can still be 
serialized in format 2, but less efficiently. Serialization format 3 also 
records the current native encoding of unflagged strings and converts them when 
de-serialized in R running under different native encoding. Format 3 comes with 
new serialization magic numbers (RDA3, RDB3, RDX3). Format 3 can be selected by 
version = 3 in save(), serialize() and saveRDS(), but format 2 remains the 
default for all serialization and saving of the workspace. Serialized data in 
format 3 cannot be read by versions of R prior to version 3.5.0.''

but I can not see why or how this should have an influence on a static vignette?

To illustrate and reproduce my issue I created a git repository 
https://github.com/romanflury/staticvignette with a minimal package, containing 
an arbitrary pdf document as a static vignette. The git repository includes the 
respective session infos also.

I hope to avoid this dependency, since I do not want to force users to update 
their R version.

When R builds a package with vignettes, it adds a file build/vignette.rds to the tarball that contains information about the vignettes. Since R-devel is switching the format of .rds files, this file is in the new format, which can't be read by R versions prior to 3.5.0.

Generally speaking there is no guarantee that R x.y.z can handle a package built in a later version, and this is an example of that problem: R x.y.z can't handle a package built in x.(y+2).z.

So the solution is to build your tarball in R 3.5.x or earlier, not in R-devel, or to add the dependency mentioned in the warning message.

Duncan Murdoch

______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

Reply via email to