[Rd] [2 of n] Revisiting and updating reproducible builds for base R in Debian
Simon Urbanek
@|mon@urb@nek @end|ng |rom R-project@org
Mon Aug 10 00:46:22 CEST 2026
Those files are caches either in RDS for lazy-load format (or both).
The metadata one contains timestamps from the DESCRIPTION:
> a=readRDS("methods/Meta/package.rds")
> str(a)
List of 8
$ DESCRIPTION: Named chr [1:15] "methods" "4.6.1" "base" "utils, stats" ...
..- attr(*, "names")= chr [1:15] "Package" "Version" "Priority" "Imports" ...
$ Built :List of 4
..$ R :Classes 'R_system_version', 'package_version', 'numeric_version' hidden list of 1
.. ..$ : int [1:3] 4 6 1
..$ Platform: chr "x86_64-apple-darwin20"
..$ Date : chr "2026-06-25 22:08:30 UTC"
..$ OStype : chr "unix"
$ Rdepends : NULL
$ Rdepends2 : NULL
$ Depends : list()
$ Suggests :List of 1
..$ codetools:List of 1
.. ..$ name: chr "codetools"
$ Imports :List of 2
..$ utils:List of 1
.. ..$ name: chr "utils"
..$ stats:List of 1
.. ..$ name: chr "stats"
$ LinkingTo : list()
- attr(*, "class")= chr "packageDescription2"
> a$DESCRIPTION["Built"]
Built "R 4.6.1; x86_64-apple-darwin20; 2026-06-25 22:08:30 UTC; unix"
so chances are that one may not be using the override (I didn't investigate further).
The tools/help/tools.rd? is the lazy-load DB for the issue you described namely the Rd2HTML example, so if that is removed, it will go away:
> e=new.env()
> lazyLoad("tools/help/tools",e)
> for(i in e[["Rd2HTML"]][[14]][[21]]) print(c(i))
[1] "\n"
[1] " "
list()
[1] " built on\n"
[1] " "
[1] "2026-06-26 at 10:09:34"
[1] ",\n"
[1] " "
list()
[1] " installed on\n"
[1] " "
[1] "2026-06-26 at 10:09:34"
[1] ", and\n"
[1] " "
list()
[1] " rendered on\n"
[1] " "
[[1]]
[1] "format(Sys.time(), \"%Y-%m-%d at %H:%M:%S\")"
attr(,"Rd_tag")
[1] "RCODE"
[1] ".\n"
[1] " "
Cheers,
Simon
> On 10 Aug 2026, at 06:28, Dirk Eddelbuettel <edd using debian.org> wrote:
>
>
> tl;dr: Some progress, but some issues remaining which may require assistance.
>
>
> Thanks again to Gabe for noticing that one-off install step in package
> 'tools' I had not been aware of. Ensuring that an override-timestamp is
> passed there too addressed this difference in subsequent builds moving us
> closer to reproducible builds.
>
> I also addressed (so far by 'brutish force') one issue with the pdf docs made
> from help pages. The help page for Rd2HTML demonstrates how a help can
> reflect Sexpr content at 'build', 'install', and 'render' time calling
> Sys.time() three times. This is obviously incompatible with reproducible 'bit
> by bit' identical builds so I (for now) commented that example out; I may try
> to see with Duncan what else we may do here.
>
> Which gets us to the current state of affairs. Package r-base-core still
> shows difference which can be seen following the most recent build this
> browseable report:
>
> https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/diffoscope-results/r-base.html
>
> There are difference in
>
> - the installed libtool script (and I may see about help from the
> reproducibe builds team)
>
> - methods/Meta/package.rds and methods/Meta/package.rdb and
> methods/Meta/package.rdx: these have me stumped, and I am not all familiar
> what goes into these files
>
> - tools/help/tools.rdb and tools/help/tools.rdx: Also unclear
>
> - usr/share/man/man1/R.1.gz and usr/share/man/man1/Rscript.1.gz: both carry
> an 'installed at' timestamp, this should be addressable (but I have yet to
> look closely).
>
> If anybody reading this far (thanks for that!) knows about the R package
> internal files, and how we might tweak the creation of these files, please do
> not hesitate to reach out. We as close as we've been on this and may get
> this over the goal line.
>
> Cheers, Dirk
>
> --
> dirk.eddelbuettel.com | @eddelbuettel | edd using debian.org
>
> ______________________________________________
> R-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
More information about the R-devel
mailing list