R package guidelines (Português)
32-bit – CLR – CMake – Cross – DKMS – Eclipse – Electron – Fonte – Free Pascal – GNOME – Go – Haskell – Java – KDE – Kernel – Lisp – Meson – MinGW – Node.js – Nonfree – OCaml – Perl – PHP – Python – R – Ruby – Rust – Shell – VCS – Web – Wine
Este documento abrange padrões e diretrizes para escrever PKGBUILDs para pacotes R. A maioria das informações pode ser obtida consultando o arquivo DESCRIPTION
do pacote. Você pode obter a maior parte de dentro do R executando tools::CRAN_package_db()
.
Nomenclatura de pacote
Pacotes devem ser nomeados r-pkgname
, sendo pkgname retirado do campo Package
do arquivo DESCRIPTION
. O nome do pacote deve estar em letras minúsculas.
Versão de pacote
Pegue no campo Version
. R permite que os pacotes tenham dois pontos e hífenes em sua versão, isso não é permitido em PKGBUILDs. Converta estes para um período ou sublinhado.
Arch
Veja PKGBUILD (Português)#arch. Se a página web do CRAN do pacote tiver NeedsCompilation: yes
, é provável que seja específico da arquitetura. Caso contrário, é provável que não.
Dependências
Os pacotes R listados nos campos Depends
, Imports
ou LinkingTo
no arquivo DESCRIPTION
de um pacote devem ser listados em depends.
Os pacotes R listados em Suggests
devem ser listados como optdepends.
Alguns pacotes requerem ferramentas externas, estas estão listadas em SystemRequirements
.
O gcc-fortran é necessário como makedepends para alguns pacotes, mas nem sempre é listado no arquivo DESCRIPTION
.
Fonte
Todos os pacotes R disponíveis no CRAN estão disponíveis no site https://cran.r-project.org/src/contrib/cranname_cranversion.tar.gz
, sendo cranname o nome do pacote no CRAN e cranversion a versão cran.
Compilação e empacotamento
R tem suporte embutido para compilar pacotes, nós só precisamos instalar e copiar o pacote compilado depois:
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 }
Exemplos
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
Um exemplo em que o pacote R possui caracteres não permitidos no pkgver:
_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 }