[Rd] [2 of n] Revisiting and updating reproducible builds for base R in Debian
Dirk Eddelbuettel
edd @end|ng |rom deb|@n@org
Mon Aug 10 14:08:31 CEST 2026
F
On 10 August 2026 at 10:46, Simon Urbanek wrote:
| Those files are caches either in RDS for lazy-load format (or both).
|
If you look at the difference computed (using the difffoscope tool built for
this) between the binary and the reproduced binary you see more different
components being pulled out of the rds (and rdx and so on.) One is
whitespace difference (odd), one is a cache of the methods functions (leading
to different counts).
I don't understand yet how they can possibly differ. There might be different
'write' operations to the package and I may not be getting the override time
stamp in. Odd.
https://tests.reproducible-builds.org/debian/rb-pkg/unstable/amd64/diffoscope-results/r-base.html
Dirk
| 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
| >
|
--
dirk.eddelbuettel.com | @eddelbuettel | edd using debian.org
More information about the R-devel
mailing list