R パッケージガイドライン

From ArchWiki
Jump to navigation Jump to search
パッケージ作成ガイドライン

CLRクロスEclipseElectronFree PascalGNOMEGoHaskellJavaKDEカーネルLispMinGWNode.jsNonfreeOCamlPerlPHPPythonRRubyRustVCSウェブWine

このドキュメントでは R パッケージの PKGBUILD を書く時の決まりとガイドラインを記載しています。ほとんどの情報はパッケージの DESCRIPTION ファイルを見ることで得ることができます。tools::CRAN_package_db() を実行することで R の中から取得できます。

パッケージの命名

パッケージは r-pkgname という名前にしてください。pkgname は DESCRIPTION ファイルの Package フィールドの値を使います。パッケージ名は小文字でなければなりません。

パッケージのバージョン

Version フィールドの値を使ってください。R ではバージョンにコロンとハイフンが使えますが、PKGBUILD では使用できません。ピリオドかアンダースコアに置き換えてください。

アーキテクチャ

PKGBUILD#arch を参照。パッケージの CRAN ウェブページで NeedsCompilation: yes となっている場合、アーキテクチャに依存します。それ以外の場合は依存しません。

依存関係

パッケージの DESCRIPTION ファイル の Depends, Imports, LinkingTo フィールドに記載されている R パッケージは depends に追加してください。

Suggests に並んでいる R パッケージは optdepends に追加してください。

一部のパッケージは外部のツールを必要とすることがあり、それらは SystemRequirements に記載されています。

パッケージによっては makedepends に gcc-fortran が必要ですが常に DESCRIPTION ファイルにそのことが記載されているとは限りません。

ソース

CRAN の全ての R パッケージは https://cran.r-project.org/src/contrib/cranname_cranversion.tar.gz から取得できます。cranname は CRAN におけるパッケージ名、cranversion は cran のバージョンに置き換えてください。

ビルドとパッケージ化

R にはパッケージのビルド機能があるため、ビルド済みのパッケージをインストール・コピーするだけです:

 build(){
     R CMD INSTALL pkg.tar.gz -l "$srcdir"
 }
 package() {
     install -dm0775 "$pkgdir"/usr/lib/R/library
     cp -a --no-preserve=ownership pkgname "$pkgdir"/usr/lib/R/library
 }

サンプル

RcppEigen

 pkgname=r-rcppeigen
 pkgver=0.3.3.4.0
 pkgrel=1
 pkgdesc="Rcpp Integration for the Eigen Templated Linear Algebra Library"
 arch=('x86_64')
 url="https://cran.r-project.org/package=RcppEigen"
 license=('GPL')
 depends=('r' 'r-rcpp')
 optdepends=('r-inline' 'r-runit' 'r-pkgkitten')
 source=("https://cran.r-project.org/src/contrib/RcppEigen_$pkgver.tar.gz")
 md5sums=('78ee1ef7c6043efa875434ae5fcea2ec')
 
 build(){
     R CMD INSTALL RcppEigen_"$pkgver".tar.gz -l "$srcdir"
 }
 package() {
     install -dm0755 "$pkgdir"/usr/lib/R/library
     cp -a --no-preserve=ownership RcppEigen "$pkgdir"/usr/lib/R/library
 }

XML

pkgver で使用できない文字が使われている R パッケージの例:

 _cranver=3.98-1.11
 pkgname=r-xml
 pkgver=${_cranver//[:-]/.}
 pkgrel=1
 pkgdesc='Tools for Parsing and Generating XML Within R and S-Plus'
 arch=('x86_64')
 url='https://cran.r-project.org/package=XML'
 license=('BSD')
 depends=('r' 'libxml2')
 optdepends=('r-bitops' 'r-rcurl')
 replaces=('r-cran-xml')
 source=("https://cran.r-project.org/src/contrib/XML_$_cranver.tar.gz")
 md5sums=('6c67f5730ada3456372520773a920b8e')
 
 build(){
     R CMD INSTALL XML_"$_cranver".tar.gz -l "$srcdir"
 }
 package() {
     install -dm0755 "$pkgdir"/usr/lib/R/library
     cp -a --no-preserve=ownership XML "$pkgdir"/usr/lib/R/library
 }