[R-sig-Fedora] Fwd: Fedora 31 System-Wide change proposal: Automatic R runtime dependencies

Elliott Sales de Andrade qu@ntum@@n@|y@t @end|ng |rom gm@||@com
Thu Jul 4 11:35:18 CEST 2019


FYI, I plan on implementing this for F31 if no issues arise.

---------- Forwarded message ---------
From: Ben Cotton <bcotton using redhat.com>
Date: Tue, 2 Jul 2019 at 10:55
Subject: Fedora 31 System-Wide change proposal: Automatic R runtime dependencies
To: <devel-announce using lists.fedoraproject.org>, Development discussions
related to Fedora <devel using lists.fedoraproject.org>


https://fedoraproject.org/wiki/Changes/Automatic_R_runtime_dependencies

== Summary ==

Packages of R libraries will produce a standard
<code>R(packageName)</code> Provides, and Requires on these standard
names will be added from library metadata. Standard provides will use
the unmodified versions from the metadata. Suggested dependencies will
not be automatically added, but can be opted in by the packager.


== Owner ==
* Name: [[User:qulogic| Elliott Sales de Andrade]]
* Email: quantum.analyst using gmail.com

== Detailed Description ==

R libraries currently provide metadata indicating runtime requirements on other
libraries in a <code>DESCRIPTION</code> file. Using RPM's file attributes and
dependency generator support, these requirements can be added to packages
automatically. These will use namespaced <code>Provides</code> of
<code>R(packageName) = packageVersion</code> where <code>packageName</code> is
the importable name of the package and <code>packageVersion</code> is the
upstream version (note: upstream versions are often sanitized for Fedora since
RPM cannot use dashes in versions.)

R library metadata includes <code>Depends</code> and <code>Imports</code> which
will be mapped to <code>Requires</code>. Metadata that specifies
<code>Enhances</code> will be mapped directly to <code>Enhances</code>.

Metadata that specifies <code>Suggests</code> will ''not'' be mapped to
anything by default. Oftentimes, suggested libraries are used to indicate
dependencies that are needed at build time only. Packagers who wish to include
any actual runtime <code>Suggests</code> may opt in to adding them using a
(TBD) flag or just continue to add <code>Suggests</code> manually.


== Benefit to Fedora ==

This change provides a standard Provided name for R packages.
This change helps users of R packages by providing the ''original''
version value (as opposed to the sanitized one for RPM.)
This change reduces the amount of work packagers need to do keeping (R
package) dependencies correct.


== Scope ==

* Proposal owners: The automated dependency generator is
[https://src.fedoraproject.org/fork/qulogic/rpms/R/blob/autodeps/f/R-deps.R
available], but will need to be updated to provide the opt-in
<code>Suggests</code>. The generator and file attributes will likely
be housed in the RPM organization, and a new package will be created
for it.  R packages will need to be rebuilt after the generator is
packaged, in order to ensure that they contain the new
<code>Provides</code>. If the mass rebuild is not sufficient, this
will be carried out in a side tag.
* Other developers: Others are welcome to rebuild their packages once
the generators are available, but it is not a requirement.
* Release engineering: [https://pagure.io/releng/issue/8501 Releng issue 8501]
* Policies and guidelines: R packaging guidelines should be updated to
mention the new generator; this can be done after the implementation
is done.
* Trademark approval: N/A (not needed for this Change)


== Upgrade/compatibility impact ==

No impact expected.


== How To Test ==

# Pick any R package in Fedora.
# Attempt to install it.
# Verify that automatic dependencies are correct, i.e., the package
installed without missing dependencies, and the dependencies that were
pulled in are the ones specified in its <code>DESCRIPTION</code> file.


== User Experience ==

Users interested in R may install packages based on upstream's
''real'' version, and missing dependency annotations will be less
likely to occur.


== Dependencies ==

Move of code to RPM organization; it would be preferred to occur as
early as possible, but is not a full blocker.

These packages will need to be rebuilt:
* COPASI
* R-abind
* R-acepack
* R-affy
* R-affydata
* R-affyio
* R-ALL
* R-AnnotationDbi
* R-ape
* R-argon2
* R-ascii
* R-askpass
* R-assertthat
* R-AUC
* R-backports
* R-base64enc
* R-Bessel
* R-BH
* R-biglm
* R-bindr
* R-bindrcpp
* R-Biobase
* R-BiocGenerics
* R-BiocParallel
* R-biomaRt
* R-Biostrings
* R-bit
* R-bit64
* R-bitops
* R-blob
* R-brew
* R-BSgenome
* R-BSgenome.Celegans.UCSC.ce2
* R-BufferedMatrix
* R-BufferedMatrixMethods
* R-Cairo
* R-callr
* R-car
* R-caTools
* R-cellranger
* R-chron
* R-cli
* R-cliapp
* R-clipr
* R-clisymbols
* R-coda
* R-colorspace
* R-combinat
* R-commonmark
* R-corpus
* R-crayon
* R-curl
* R-data.table
* R-date
* R-DBI
* R-dbplyr
* R-debugme
* R-DelayedArray
* R-deldir
* R-desc
* R-dichromat
* R-diffobj
* R-digest
* R-disposables
* R-doParallel
* R-dplyr
* R-dtplyr
* R-DynDoc
* R-ellipsis
* R-errors
* R-evaluate
* R-expm
* R-fansi
* R-farver
* R-fastmatch
* R-fibroEset
* R-filehash
* R-FMStable
* R-foghorn
* R-fontBitstreamVera
* R-fontLiberation
* R-forcats
* R-foreach
* R-formatR
* R-fortunes
* R-fs
* R-fts
* R-futile.logger
* R-futile.options
* R-future
* R-gamlss.dist
* R-gapminder
* R-gdata
* R-gdtools
* R-gee
* R-geepack
* R-generics
* R-GenomeInfoDb
* R-GenomeInfoDbData
* R-GenomicAlignments
* R-GenomicFeatures
* R-GenomicRanges
* R-getPass
* R-ggplot2
* R-ggplot2movies
* R-gh
* R-git2r
* R-globals
* R-glue
* R-gmailr
* R-gmp
* R-gplots
* R-gsl
* R-gss
* R-gtable
* R-gtools
* R-haven
* R-here
* R-hexbin
* R-hgu133acdf
* R-hgu95av2cdf
* R-hgu95av2probe
* R-highlight
* R-highr
* R-hms
* R-htmltools
* R-htmlwidgets
* R-httpuv
* R-httr
* R-hunspell
* R-igraph
* R-import
* R-ini
* R-inline
* R-IRanges
* R-IRdisplay
* R-IRkernel
* R-iterators
* R-itertools
* R-jose
* R-jpeg
* R-jqr
* R-jsonlite
* R-knitr
* R-labeling
* R-lambda.r
* R-later
* R-lazyeval
* R-lintr
* R-listenv
* R-littler
* R-lmodel2
* R-lmtest
* R-lokern
* R-lubridate
* R-maanova
* R-magrittr
* R-mapproj
* R-maps
* R-mAr
* R-markdown
* R-matrixStats
* R-measurements
* R-memoise
* R-microbenchmark
* R-mime
* R-miniUI
* R-mlbench
* R-mnormt
* R-mockery
* R-mockr
* R-msm
* R-multcomp
* R-multtest
* R-munsell
* R-mvtnorm
* R-nanotime
* R-ncdf4
* R-NISTunits
* R-nws
* R-nycflights13
* R-openssl
* R-orcutt
* R-packrat
* R-parsedate
* R-pbdRPC
* R-pbdZMQ
* R-pdftools
* R-pillar
* R-pingr
* R-pkgbuild
* R-pkgconfig
* R-pkgdown
* R-pkgload
* R-plogr
* R-pls
* R-plyr
* R-png
* R-poLCA
* R-polyclip
* R-polynom
* R-praise
* R-preprocessCore
* R-prettycode
* R-prettydoc
* R-prettyunits
* R-processx
* R-progress
* R-promises
* R-ps
* R-purrr
* R-qcc
* R-qpdf
* R-qtl
* R-quadprog
* R-quantities
* R-qvalue
* R-R6
* R-rappdirs
* R-R.cache
* R-rcmdcheck
* R-RColorBrewer
* R-Rcompression
* R-Rcpp
* R-RcppCCTZ
* R-RCurl
* R-R.devices
* R-readr
* R-readxl
* R-rematch
* R-rematch2
* R-remotes
* R-repr
* R-reprex
* R-reshape
* R-reshape2
* R-reticulate
* R-rex
* R-rgdal
* R-rgeos
* R-rhub
* R-RInside
* R-rlang
* R-rlecuyer
* R-RM2
* R-rmarkdown
* R-R.methodsS3
* R-Rmpfr
* R-ROC
* R-RODBC
* R-R.oo
* R-roxygen2
* R-rprintf
* R-rprojroot
* R-R.rsp
* R-Rsamtools
* R-rsconnect
* R-Rsolid
* R-RSQLite
* R-rstudioapi
* R-rsvg
* R-rtracklayer
* R-RUnit
* R-R.utils
* R-rversions
* R-rvest
* R-S4Vectors
* R-sandwich
* R-scales
* R-scatterplot3d
* R-sciplot
* R-selectr
* R-sessioninfo
* R-sfsmisc
* R-shiny
* R-showtext
* R-showtextdb
* R-simmer
* R-snow
* R-sodium
* R-sourcetools
* R-sp
* R-spelling
* R-statmod
* R-statnet.common
* R-stringdist
* R-stringi
* R-stringr
* R-styler
* R-SummarizedExperiment
* R-svglite
* R-sys
* R-sysfonts
* R-systemfit
* R-testit
* R-testthat
* R-tibble
* R-tidyr
* R-tidyselect
* R-tikzDevice
* R-timeDate
* R-timeSeries
* R-tinytest
* R-tinytex
* R-tkrplot
* R-tkWidgets
* R-tufte
* R-tweenr
* R-udunits2
* R-unitizer
* R-units
* R-unix
* R-usethis
* R-utf8
* R-uuid
* R-V8
* R-vctrs
* R-viridisLite
* R-waveslim
* R-wavethresh
* R-webp
* R-webutils
* R-whisker
* R-whoami
* R-widgetTools
* R-withr
* R-xfun
* R-XML
* R-xml2
* R-xopen
* R-xtable
* R-XVector
* R-yaml
* R-zeallot
* R-zoo
* libsbml
* libsedml
* libnuml
* shogun


== Contingency Plan ==

* Contingency mechanism: The side tag will not be merged, or if a side
tag is deemed unnecessary, the generator will not be installed, and
any built packages will be re-built without it.
* Contingency deadline: Beta Freeze
* Blocks release? No


== Documentation ==

See [https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/thread/VQ5F3S3BGKK3AOZDANNW7AGVCMS2CKM4/
mailing list discussion].


--
Ben Cotton
He / Him / His
Fedora Program Manager
Red Hat
TZ=America/Indiana/Indianapolis
_______________________________________________
devel mailing list -- devel using lists.fedoraproject.org
To unsubscribe send an email to devel-leave using lists.fedoraproject.org
Fedora Code of Conduct:
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org


-- 
Elliott



More information about the R-SIG-Fedora mailing list