Skip to content
SystemRequirements mappings for R packages
Shell JavaScript
Branch: master
Clone or download
Latest commit ebe872d Aug 7, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cran Fix cairoDevice exception, must be a list Nov 22, 2016
platforms Add support for Arch Linux (#58) May 1, 2019
scripts Add support for Arch Linux (#58) May 1, 2019
sysreqs Add openmp Aug 6, 2019
.gitignore Validate JSON on Travis Apr 18, 2016
.travis.yml Validate JSON on Travis Apr 18, 2016
Gruntfile.js Validate JSON on Travis Apr 18, 2016
README.md Add use case (#60) Jun 24, 2019
package.json Validate JSON on Travis Apr 18, 2016

README.md

sysreqs

SystemRequirements for R packages

Introduction

Many R packages require system libraries or other external software to build or run. The SystemRequirements field in the package DESCRIPTION file should declare these dependencies, as free form text. This makes it difficult to automate building and checking of R packages, since we need to guess which software should be installed on the build machine.

The sysreqs project formalizes these requirements, and provides a database with API to quickly find out which Homebrew, Debian, Ubuntu, RHEL/Centos, etc packages or other software needs to be available to build and use R packages.

In this README:

Supported platforms

Distributions using deb package format:

  • Ubuntu Linux
  • Debian Linux

Distributions using rpm package format:

  • Fedora Linux (recent releases)
  • RedHat and CentOS Linux (recent releases)

Distributions using the PKGBUILD package format:

  • Arch Linux

Non-native package formats:

  • HomeBrew package manager on MacOS
  • Pacman/Rtools on Windows (forthcoming)

Database format

The sysreqs database is a JSON document store. Each document contains mappings for a single canonical system requirement. It contains both the mappings to SystemRequirements fields, and platform dependent packages or URLs.

Below an example to make this clear. Several R packages require the libxml2 library. For building these packages from source, the libxml2 development headers are needed as well. The R packages refer to libxml2 in different ways. E.g. igraph has simply libxml2 and XML has libxml2 (>= 2.6.3) in their SystemRequirements fields.

{
  "libxml2": {
    "sysreqs": "libxml2",
    "platforms": {
       "DEB": "libxml2-dev",
       "OSX/brew": null,
       "RPM": "libxml2-devel"
    }
  }
}

Some notes:

Database access

See API docs at https://sysreqs.r-hub.io/

Contributing

Your contributions are welcome! More details below.

Adding or completing entries

Please read about the data format first. Entries should be added or improved via pull requests.

  • If a package (of yours or not) has a dependency that's not listed here yet, open a pull request to add it. You don't need to have it mapped to all platforms yet. Example of such a PR.

  • You can also make a pull request to add a mapping to a platform. Example of such a PR.

Reporting your use case

If you maintain a public platform/tool using sysreqsdb, make a PR to this repo updating the section below. Please put your tool at the very end of the list.

Use cases of the database

  • R-hub

  • The codemetar package, R package for the CodeMeta project, uses the sysreqs API to parse the SystemRequirements field.

  • The containerit package uses the sysreqs API to derive system requirements of packages for automatically creating a Dockerfile based on a collection of packages.

License

MIT © The R Consortium

You can’t perform that action at this time.