On May 18, 2012, at 11:32 AM, Daniel Fuka wrote:

> Thanks Simon,
> 
> In this case, I am talking specifically about allowing CRAN to compile
> source into an executable to be distributed, as discussed in the
> second paragraphs "very special cases .. for example executable
> programs". So, when someone runs install.packages("mypackage"), they
> get a package that contains an executable that can be run from outside
> of R.
> 
> Can I submit a package to CRAN that will compile source into an executable?
> 

Yes - that is what the second paragraph describes (and as Brian pointed out 
there are examples on CRAN like Rserve).

Cheers,
Simon


> I hope this clears the mud on my first post.
> 
> Thanks!
> dan
> 
> On Fri, May 18, 2012 at 11:24 AM, Simon Urbanek
> <simon.urba...@r-project.org> wrote:
>> 
>> On May 18, 2012, at 11:11 AM, Daniel Fuka wrote:
>> 
>>> Sorry for this intrusion, but I am confused by two statements that
>>> appear to conflict at some level in Writing R Extensions, and wanted
>>> to make sure I understand the answer to:
>>> Can we distribute a portable executable compiled from source by CRAN in 
>>> CRAN?
>>> 
>>> The following section of Writing R Extensions appears to not be
>>> addressing this issue, as in this case we are discussing portable CRAN
>>> compiled binaries, and not binaries that are submitted to CRAN:
>>> "A source package if possible should not contain binary executable
>>> files: they are not portable, and a security risk if they are of the
>>> appropriate architecture. R CMD check will warn about them unless they
>>> are listed (one filepath per line) in a file BinaryFiles at the top
>>> level of the package. Note that CRAN will no longer accept submissions
>>> containing binary files even if they are listed."
>>> 
>>> The following section seems to indicate special cases in which
>>> packages can create binary files:
>>> "In very special cases packages may create binary files other than the
>>> shared objects/DLLs in the src directory. Such files will not be
>>> installed in multi-arch setting since R CMD INSTALL --libs-only is
>>> used to merge multiple architectures and it only copies shared
>>> objects/DLLs. If a package wants to install other binaries (for
>>> example executable programs), it should to provide an R script
>>> src/install.libs.R which will be run as part of the installation in
>>> the src build directory instead of copying the shared objects/DLLs."
>>> 
>>> Once again, sorry for my confusion on this point. I just have what I
>>> might consider a special case where it would be very handy to
>>> distribute a cran compiled executable.
>> 
>> I don't quite follow - CARN obviously distributes binaries compiled by CRAN 
>> and those are called binary packages. Can you be more specific as of what 
>> you are asking about?  The two paragraphs you are quoting are about entirely 
>> different things - the first states that you can't include binaries in 
>> *source* packages and the second describes how you can build executables 
>> beside dynamic objects in packages so that CRAN can include them in *binary* 
>> packages. It doesn't cover distribution.
>> 
>> What you refer to are rules for *source* packages which can't distribute 
>> binaries, but you can always use a binary package (which contains binaries). 
>> Note that the issue in question is not who built the binary but whether it 
>> could have been injected by 3rd party or not (hence all binaries are 
>> disallowed in source packages since there is no way to tell).
>> 
>> Cheers,
>> Simon
>> 
>> 
> 
> 

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to