★データ解析備忘録★

ゆる〜い技術メモ

【Rパッケージ】appveyor.ymlの注意点

これはなに

久しぶりにRパッケージのメンテをしていてハマったので備忘録としてメモ。タイトル通りappveyorでコードをテストするときの注意点です。

Appveyorとは

Rパッケージ等のソフトウェアのチェックをする際に使われるCI (継続的インテグレーション) ツールの一つで、有名なものとしてTravisがありますが、AppveyorはOSとしてWindowsを使うことを前提としたものです。

Unix系でもWindowsでも正しく動作することを確認するのはとても重要です。

RパッケージでAppveyorを使う

Rパッケージの開発でAppveyorを使うには、以下のコードをパケージのプロジェクト内で叩くだけでOKです。

usethis::use_appveyor()

このコードだけで、 appveor.yml が生成され、GitHubの連携ページに遷移するのでそこでサインインすれば、Githubにプッシュした瞬間にチェックが走ります。

appveyor.ymlの注意点

本題です。

基本的にはappveyor.ymlはいじる必要がないのですが、自作パッケージの依存パッケージにC++ベースのパッケージが使われている場合は要注意です。そのままAppveyorで走らせるとエラーになるかもしれません。

原因はWindowsC++関連のアレです。WindowsにはC++コンパイラが入っていないから〜....というやつです。

例えば rstan パッケージをWindowsでインストールするとき、コンパイラがないとポップアップウィンドウが出てきてRtoolsをインストールするか聞いてきます。このRtoolsがないとC++内蔵のRパッケージはうまく動きません。

appveyor.ymlに何も変更がないとこの問題が起きるので、以下を追記してやります。

environment:
  USE_RTOOLS: true

位置はビルド前ならどこでも良いのですが、僕はビルド( build_script: )直前に書きました。

参考

https://help.appveyor.com/discussions/problems/18945-failed-build-due-to-tibble-installation