Workflow¶
The workflow is almost linear: do all provisioning up front, then run the checks with minimal surprises.
Phase 1: provision and prepare¶
flowchart LR
Start([Input]) --> Setup[Prepare Workspace<br/>Resolve R Version]
Setup --> CheckR{--skip-r-install?}
CheckR -->|No| InstallR[Install R<br/>if not detected]
CheckR -->|Yes| InstallDocs
InstallR --> InstallDocs[Install Quarto,<br/>pandoc, TinyTeX<br/>if not detected]
InstallDocs --> PrepRepo{Repository<br/>Type}
PrepRepo -->|Git URL| Clone[git clone]
PrepRepo -->|Local Dir| UseLocal[Use as-is]
PrepRepo -->|.tar.gz| Extract[Extract]
Clone --> Next([To Phase 2])
UseLocal --> Next
Extract --> Next
style Start fill:#f4cccc
style Next fill:#f4cccc
style Setup fill:#fce5cd
style CheckR fill:#fce5cd
style InstallR fill:#d9ead3
style InstallDocs fill:#d9ead3
style PrepRepo fill:#fce5cd
style Clone fill:#fff2cc
style UseLocal fill:#fff2cc
style Extract fill:#fff2cc
This is implemented in src/lib.rs by orchestrating:
src/workspace.rs: workspace directoriessrc/r_version.rs: resolve R version spec to a concrete installersrc/r_install.rs: install R + tooling (or reuse existing)src/revdep.rs: prepare repository input
Phase 2: install dependencies and check¶
flowchart LR
Start([From Phase 1]) --> ResolveSys[Resolve System<br/>Requirements]
ResolveSys --> InstallSys[Install apt<br/>Packages]
InstallSys --> PreInstall[Pre-install Binaries<br/>into revdep/library/]
PreInstall --> RunCheck[xfun::rev_check#40;#41;<br/>Parallel Checks]
RunCheck --> Output1[revdep/library/]
RunCheck --> Output2[00check_diffs.md<br/>00check_diffs.html]
RunCheck --> Output3[\*.Rcheck/<br/>\*.Rcheck2//]
Output1 --> End([Complete])
Output2 --> End
Output3 --> End
style Start fill:#f4cccc
style End fill:#f4cccc
style ResolveSys fill:#fce5cd
style InstallSys fill:#d9ead3
style PreInstall fill:#fce5cd
style RunCheck fill:#c9daf8
style Output1 fill:#fff2cc
style Output2 fill:#fff2cc
style Output3 fill:#fff2cc
The two key pieces are:
src/sysreqs.rs: resolve + install Linux system requirements for all revdeps.src/revdep.rs: generate deterministic R scripts to install dependencies and runxfun::rev_check().
Workspace layout¶
By default:
- Remote repos clone next to your current directory.
- Temporary files go in
./revdeprun-work/.
With --work-dir, both clones and temporary files go under that directory.