R package guidelines (Português)

From ArchWiki
Status de tradução: Esse artigo é uma tradução de R package guidelines. Data da última tradução: 2019-11-09. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.
Diretrizes de pacotes do Arch

32-bitCLRCMakeCrossDKMSEclipseElectronFonteFree PascalGNOMEGoHaskellJavaKDEKernelLispMesonMinGWNode.jsNonfreeOCamlPerlPHPPythonRRubyRustShellVCSWebWine

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
}