资讯详情

资讯详情

Apache Arrow R 包 CRAN 提交指南:基于 cran-comments.md 的测试环境矩阵与 R CMD check 检查标准

Apache Arrow R 包 CRAN 提交指南基于 cran-comments.md 的测试环境矩阵与 R CMD check 检查标准【免费下载链接】arrowApache Arrow is a multi-language toolbox for accelerated data interchange and in-memory processing项目地址: https://gitcode.com/gh_mirrors/arrow13/arrow在 Apache Arrow 仓库的r/目录下arrow包版本见 r/DESCRIPTION 中的Version字段是 Apache Arrow 官方提供的 R 语言接口底层对接 Arrow C 库。当这个包准备发布到 CRANComprehensive R Archive Network时随源码包一并提交的 r/cran-comments.md 是一份面向 CRAN 维护者的「检查声明书」它如实交代了本轮发布前在哪些测试环境上运行过R CMD check以及检查结果的完整形态。本文围绕这份文档逐条拆解其背后的环境矩阵含义、检查标准的判定逻辑并结合仓库中的打包清单、Makefile 与 CI 配置说明如何在本仓库内复现并验证这些结论。cran-comments.md 在 CRAN 提交流程中的定位CRAN 在接收新包或更新版本时要求提交者在源码包根目录附带一份cran-comments.md用于声明测试覆盖情况与已知问题。Apache Arrow 的这份文件结构极为精简仅包含两大部分Test environments列出实际运行过R CMD check的操作系统、编译器与 R 版本组合R CMD check results汇报各环境下的检查结果ERROR / WARNING / NOTE 三类状态的汇总。这份文件不是形式上的摆设而是与 r/PACKAGING.md 中记录的完整发布清单相衔接的产出物——清单要求开发者在 CRAN 提交前完成本地devtools::check_built()、win-builder、MacBuilder、逆向依赖reverse dependency检查等一系列动作而 r/cran-comments.md 正是把这些动作的结果浓缩成两段可读性极强的摘要。测试环境矩阵逐条解读原文档声明的测试环境共五组覆盖了 LinuxDebian/Fedora/Ubuntu、Windowswin-builder与 macOS 三大平台以及从开发版到旧稳定版的多个 R 版本梯队环境声明平台 / 编译器 / R 版本覆盖意义Debian Linux, GCC, R-devel/R-patched/R-releaseDebian、GCC、R 开发版 最新稳定版补丁版 最新稳定版同一编译器下验证包对 R 主版本演进的前向兼容Fedora Linux, GCC/clang, R-develFedora、双编译器GCC 与 clang、R 开发版交叉验证不同编译器对 C17 代码的告警与语义差异Ubuntu Linux 16.04 LTS, R-release, GCCUbuntu LTS、R 最新稳定版、GCC模拟 CRAN 主流的 Linux 检查环境win-builder (R-devel and R-release)CRAN 官方 Windows 构建服务、R 开发版与稳定版覆盖 Windows 平台原生编译与运行macOS 10.14, R-oldrelmacOS、R 上一个稳定版验证向后兼容旧版本 R其中几个环境需要结合仓库实际配置做更深入的说明R-devel / R-patched / R-release / R-oldrel 的语义R-devel 是尚未发布的开发版本用于提前暴露未来 R 变更对包的影响R-patched 是当前稳定版基础上的补丁维护分支R-release 是当前最新稳定版R-oldrel 则是上一个稳定版。arrow包在 r/DESCRIPTION 中声明Depends: R ( 4.0)因此 R-oldrel代表旧版本 R的通过结果直接证明了包对最低支持版本的承诺是成立的。CI 中的镜像矩阵与之对应仓库在 dev/tasks/r/github.linux.cran.yml 中定义了以rhubDocker 镜像为基础的as-cran检查矩阵四个镜像分别注释了其等价于 CRAN 官方检查环境的类型ubuntu-gcc12对应 r-devel-linux-x86_64-debian-gcc、ubuntu-clang对应 r-devel-linux-x86_64-debian-clang、ubuntu-next对应 r-patched-linux-x86_64、ubuntu-release对应 r-release-linux-x86_64。可以看到cran-comments.md 中「Debian Linux 覆盖 R-devel/R-patched/R-release」与「Fedora 覆盖 GCC/clang」的声明正是这套 CI 矩阵与本地检查共同验证后的汇总口径。该 CI 工作流在ARROW_R_DEV: FALSE的环境变量下运行并刻意设置ARROW_SOURCE_HOME来强制使用打入 R 包tools/目录的 C 源码从而模拟 CRAN 上无外部依赖的构建场景。win-builder 的用法win-builder 是 CRAN 提供的 Windows 包检查服务提交者将构建好的源码 tarball 上传后由服务端在 R-devel 与 R-release 两个 R 版本下分别执行检查。这一步骤被明确写入 r/PACKAGING.md 的发布清单Upload the .tar.gz to win-builder (r-devel only)且必须等待 Windows 预编译二进制就绪后才能执行。macOS 10.14 R-oldrel这是文档声明中的「最老组合」用于确认包在较旧的 macOS 系统与较旧 R 版本组合下仍可安装运行避免发布后出现仅在新环境中可用的隐性兼容问题。R CMD check 结果的三级判定ERROR / WARNING / NOTE原文档对检查结果的声明是There were no ERRORs or WARNINGs. On some platforms, there is a NOTE about the installed package size.这句声明对应R CMD check的三级报告体系ERROR致命错误意味着包无法正常构建、安装或运行CRAN 会直接拒绝WARNING潜在缺陷例如未使用变量、文档与代码不一致、平台相关的不安全调用等CRAN 通常要求清零NOTE提示性信息表示非阻断性观察项但需要在cran-comments.md中主动说明原因。arrow包在本轮检查中没有任何 ERROR 与 WARNING唯一的 NOTE 是「安装后的包体积installed package size」。这个 NOTE 的产生机制与包的架构直接相关为了在 CRAN 上实现开箱即用发布流程通过 r/Makefile 中的sync-cpp目标把 Arrow C 源码整体拷贝进tools/cpp同时排除src/gandiva、src/jni、src/skyhook、submodules等非必要子模块并将.env重命名为dotenv以满足打包约束再在构建时由configure脚本触发本地编译。将整套 C 库随 R 包分发必然使安装体积显著大于纯 R 实现的包从而触发 CRAN 的体积 NOTE——这正是文档用「On some platforms」限定词的原因只有执行了完整源码编译的平台才会观测到这一项。在本仓库中复现这些检查cran-comments.md声明的结论并非手工臆断而是可以由仓库内的工具链逐条复现的。以下是核心操作路径1. 本地源码包构建与检查在r/目录下r/Makefile 提供了封装好的目标make build # 执行 doc sync-cpp然后 R CMD build . 生成 arrow_version.tar.gz make check # 构建后在 _R_CHECK_CRAN_INCOMING_REMOTE_FALSE 下执行 R CMD check --as-cran make release # 与 check 相同但不设置 NOT_CRAN 等开发环境变量更贴近 CRAN 实际环境其中make check会设置ARROW_R_DEVFALSE并关闭远程 incoming 检查产出arrow.Rcheck/目录make release则是发布前最后一轮更严格的复检。两者均以--as-cran模式运行——这是 CRAN 维护者实际使用的检查模式比普通R CMD check增加大量额外规则。2. 使用 devtools 验证 tarballPACKAGING.md 建议在构建出 tarball 后运行devtools::check_built(arrow_X.X.X.tar.gz)check_built会直接对已构建的 tarball 执行检查与 CRAN 服务器上对提交产物的检查路径一致。3. Windows 与 macOS 平台检查将arrow_X.X.X.tar.gz上传至 win-builder对应文档中的 win-builder 环境等待邮件回传 R-devel 与 R-release 两个版本的检查结果将 tarball 上传至 MacBuilder 服务验证 macOS 平台在 Ubuntu 上执行install.packages(arrow_X.X.X.tar.gz)验证二进制分发是否被正确使用见 r/PACKAGING.md。4. 内存安全专项检查rchk除标准R CMD check外仓库还通过 dev/tasks/r/github.linux.rchk.yml 定义的 CI 任务用kalibera/rchk容器对包做原生代码内存安全静态分析并在 CI 中显式 grepSuspicious call、[UP]、[PB]三类错误模式一旦出现即判定失败。该检查与 CRAN 官方对 C/C 代码的审查方向一致是「无 ERROR/WARNING」声明背后的又一重保障。5. 逆向依赖检查在提交前r/PACKAGING.md 还要求通过archery docker run r-revdepcheck运行逆向依赖检查确认仓库内依赖arrow的其他 R 包不会因本次变更而回归失败——这属于 CRAN 提交前的社区协作义务其结论不会写入cran-comments.md但同样是发布质量的必要环节。版本与环境的适用说明需要强调的是cran-comments.md中的具体环境版本如 Ubuntu 16.04 LTS、macOS 10.14反映的是该次发布时的检查快照随 Arrow 的发布节奏会持续更新r/NEWS.md 记录了每个版本的用户可见变更r/DESCRIPTION 中的Version、SystemRequirementsC17Linux 上可选的 libcurl/openssl构建期 cmake 3.16则是解读检查结果时必须结合的前提。读者若要在自己的机器上复现应优先以仓库当前r/目录的实际状态为准并在与文档声明一致或更接近当前主流的操作系统 / R 版本组合上执行R CMD check --as-cran。小结一份不足二十行的cran-comments.md背后是 Apache Arrow R 包一整套跨平台、多版本、多编译器的质量保障体系五组测试环境覆盖 Linux/Windows/macOS 与 R-devel 到 R-oldrel 的版本梯队CI 配置dev/tasks/r/github.linux.cran.yml与 rhub 镜像矩阵精确对应 CRAN 的检查环境而「无 ERROR/WARNING、仅包体积 NOTE」的声明则有 r/Makefile 的--as-cran检查、rchk 静态分析、win-builder/MacBuilder 平台验证与逆向依赖检查作为事实支撑。对于任何计划向 CRAN 提交 R 包尤其是内置 C/C 源码的包的开发者这份文档及其背后的发布清单r/PACKAGING.md都是一个可完整参照的检查范式。【免费下载链接】arrowApache Arrow is a multi-language toolbox for accelerated data interchange and in-memory processing项目地址: https://gitcode.com/gh_mirrors/arrow13/arrow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →