[R-pkg-devel] Linker / System Requirement

Kevin Ushey kev|nu@hey @end|ng |rom gm@||@com
Tue May 7 20:21:59 CEST 2024


Hi Josiah,

Indeed, the right thing to do is to declare the library in the
SystemRequirements file. However, other than some specific documented
usages which affect how R builds the package (e.g. C++ standards and
GNU make), I believe the field is meant more just to inform users of
the external dependencies required, so they could install those
themselves before attempting to install the package. The R extensions
manual has:

https://cran.r-project.org/doc/manuals/R-exts.html#The-DESCRIPTION-file
> Dependencies external to the R system should be listed in the ‘SystemRequirements’ field, possibly amplified in a separate README file. This includes specifying a non-default C++ standard and the need for GNU make.

Also note that, for any external dependency required by the package,
you should also check its existence in the package configure script.

https://cran.r-project.org/doc/manuals/R-exts.html#Configure-and-cleanup
> Use this to detect if any nonstandard libraries are present such that corresponding code in the package can be disabled at install time rather than giving error messages when the package is compiled or used.

The curl package (and its dependency on libcurl) is the first thing
that comes to mind and could be a useful reference.

https://github.com/jeroen/curl/blob/master/DESCRIPTION#L21
https://github.com/jeroen/curl/blob/master/configure

Best,
Kevin

On Tue, May 7, 2024 at 6:56 AM Josiah Parry <josiah.parry using gmail.com> wrote:
>
> In my Makevars file (linked below) I link to ssl by adding `-lssl` to
> `PKG_LIBS`. Since I do this, does libssl need to be added to the System
> Requirements field?
>
> Makevars:
> https://github.com/R-ArcGIS/arcgisgeocode/blob/8194a478a616f7ddc3a25bcb024c0534007bcd51/src/Makevars#L4
>
> If so, is there a place that contains the standardized descriptions for
> some of these more common system requirements? I suspect that means my
> SystemRequirements would look a bit like:
>
>
> SystemRequirements: Cargo (Rust's package manager), rustc, libssl
>
> Is that correct?
>
> Thanks all! I'm a bit out of my depth here!
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-package-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel



More information about the R-package-devel mailing list