From minshall at acm.org  Fri Jul 18 20:37:13 2014
From: minshall at acm.org (Greg Minshall)
Date: Fri, 18 Jul 2014 21:37:13 +0300
Subject: [Rd] how to list external dependencies (i.e., non-R packages)?
In-Reply-To: Your message of "Tue, 15 Jul 2014 23:25:00 -0700."
	<CABFfbXspfoXzKMVKLg9CTrWyhL49b+KY+2OoCSyFiO=+EyWDtQ@mail.gmail.com>
Message-ID: <24516.1405708633@greg-minshalls-mbp.local>

thanks for all the replies on this.

i've modified my package to include a SystemRequirements field with
(what seem to be) the appropriate entries.  (see (**) below for how one
might standardize.)
----
SystemRequirements: libImlib2, libMagickWand
----

Michael Lawrence mentioned:
> One idea is to wrap system libraries in R packages.

that's not something i would tackle.  both libraries are very large,
maybe 100-200 functions each, with lots of parameters.  and, especially
since my use, at least, uses 3 or 4 functions from each library.

a question: what happens when i submit this package to CRAN?  in
general, builds will fail, unless the build machine happens to have one
or both of the underlying libraries on it.  (and, if i made it *compile*
successfully -- fairly easy to do -- then the tests will fail or, if the
tests *don't* fail, what were they testing?? :)

cheers, Greg Minshall

-------
(**) ignore below unless you are really interested in something like
standardizing external dependencies:

if i were to do something along the lines of something suggested in 2011
----
[1] https://stat.ethz.ch/pipermail/r-devel/2011-February/059787.html
----
i'd probably start naming libraries in an R way, friendly somehow with
the ultimate source of the library.  then (obeying whatever law of
computer science it is that says all problems can be solved with an
extra level of indirection), allow a distro (if that's the term)
specific mapping file to be maintained by some R*distro person, that
would map upstream library/version-derived R way to distro
rpm/deb/whatever names/numbers.  but, that's what i'd do in some
hypothetical universe.

then, if a package developer needed an already-defined external
dependency, they would just list that in (some field in) DESCRIPTION,
with an appropriate version number.

otoh, if the package developer's dependency is *not* already defined,
the pacakge developer would need to do the R-incantation (e-mail to
[Rd], whatever) to get it defined to R, and *then* list it in
DESCRIPTION.  however, the R*distro people will then need to figure out
the mapping from that dependency to their naming/numbering scheme before
what the external dependency in *that package's* DESCRIPTION file will
help much.  (otoh, CRAN will see the dependency, and may figure out an
initial mapping, or the package developer may even submit one or more
mappings from the R-name/version to some select set of distros.)

sorry, that's fairly terse.  i'd be happy to elaborate, but i don't know
there's an audience.



[Rd] how to list external dependencies (i.e., non-R packages)?
Greg Minshall