McGehee, Robert
2013-Apr-18 15:07 UTC
[Rd] Rebuild package on R 3.0.0 without source code?
R-developers, I have a binary R package built using R 2.14.1 that I would like to run on R 3.0.0. Unfortunately, the original source code is unavailable, so I cannot rebuild the package as R 3.0.0 requires. Is there a straight forward way of converting the package (.rdb, .rdx and .rds files) in the binary package from a 2.14.1 version to a 3.0.0 version without the source code (perhaps uncompressing/recompressing somehow)? Naturally, since the R code is visible, I know I can output all of the parsed objects in the package to a text file to make a skeleton package that can then be built/installed. Something like this: objs <- ls(envir=loadNamespace("binaryPkg"), all.names=TRUE) dump(objs, file="code.R", envir=loadNamespace("binaryPkg")) However, I'd still lose all the man pages, and since I get a couple of "deparse may be incomplete" warnings, I worry that this may be introducing additional bugs. Is there a magic solution here, or is this a fool's errand? Thanks, Robert Robert McGehee, CFA Geode Capital Management, LLC One Post Office Square, 28th Floor | Boston, MA | 02109 Direct: (617)392-8396
On Apr 18, 2013, at 10:07 AM, "McGehee, Robert" <Robert.McGehee at geodecapital.com> wrote:> R-developers, > I have a binary R package built using R 2.14.1 that I would like to run on R 3.0.0. Unfortunately, the original source code is unavailable, so I cannot rebuild the package as R 3.0.0 requires. > > Is there a straight forward way of converting the package (.rdb, .rdx and .rds files) in the binary package from a 2.14.1 version to a 3.0.0 version without the source code (perhaps uncompressing/recompressing somehow)? > > Naturally, since the R code is visible, I know I can output all of the parsed objects in the package to a text file to make a skeleton package that can then be built/installed. Something like this: > > objs <- ls(envir=loadNamespace("binaryPkg"), all.names=TRUE) > dump(objs, file="code.R", envir=loadNamespace("binaryPkg")) > > However, I'd still lose all the man pages, and since I get a couple of "deparse may be incomplete" warnings, I worry that this may be introducing additional bugs. > > Is there a magic solution here, or is this a fool's errand? > > Thanks, RobertRobert, Which package? You might find some older version of the package source code here: http://cran.us.r-project.org/src/contrib/Archive/ or have you already looked there? Regards, Marc Schwartz
On 18/04/2013 11:07 AM, McGehee, Robert wrote:> R-developers, > I have a binary R package built using R 2.14.1 that I would like to run on R 3.0.0. Unfortunately, the original source code is unavailable, so I cannot rebuild the package as R 3.0.0 requires. > > Is there a straight forward way of converting the package (.rdb, .rdx and .rds files) in the binary package from a 2.14.1 version to a 3.0.0 version without the source code (perhaps uncompressing/recompressing somehow)? > > Naturally, since the R code is visible, I know I can output all of the parsed objects in the package to a text file to make a skeleton package that can then be built/installed. Something like this: > > objs <- ls(envir=loadNamespace("binaryPkg"), all.names=TRUE) > dump(objs, file="code.R", envir=loadNamespace("binaryPkg")) > > However, I'd still lose all the man pages, and since I get a couple of "deparse may be incomplete" warnings, I worry that this may be introducing additional bugs. > > Is there a magic solution here, or is this a fool's errand?I'd guess there's no magic solution. Deparsing is not perfect, so just about any automatic solution may introduce additional bugs. Use it as a lesson: you shouldn't use closed-source software. BTW, you're probably aware of this, but others might not be: if this was a CRAN package, it quite likely does have the source for the old version still available. Take a look around the "Archive" link on the contributed packages page. CRAN is very reluctant to delete sources once it has made them public. So it's quite safe to install binaries from CRAN, just not necessarily from other sources. Duncan Murdoch
Prof Brian Ripley
2013-Apr-18 15:27 UTC
[Rd] Rebuild package on R 3.0.0 without source code?
On 18/04/2013 16:07, McGehee, Robert wrote:> R-developers, > I have a binary R package built using R 2.14.1 that I would like to run on R 3.0.0. Unfortunately, the original source code is unavailable, so I cannot rebuild the package as R 3.0.0 requires. > > Is there a straight forward way of converting the package (.rdb, .rdx and .rds files) in the binary package from a 2.14.1 version to a 3.0.0 version without the source code (perhaps uncompressing/recompressing somehow)? > > Naturally, since the R code is visible, I know I can output all of the parsed objects in the package to a text file to make a skeleton package that can then be built/installed. Something like this: > > objs <- ls(envir=loadNamespace("binaryPkg"), all.names=TRUE) > dump(objs, file="code.R", envir=loadNamespace("binaryPkg")) > > However, I'd still lose all the man pages, and since I get a couple of "deparse may be incomplete" warnings, I worry that this may be introducing additional bugs. > > Is there a magic solution here, or is this a fool's errand?No magic solution, and the following may not work, but it might. Make a simple package with the correct DESCRIPTION file. Install that somewhere new. Then use the installed DESCRIPTION file and Meta/package.rds to replace the versions you got from 2.14.1. It is possible to extract the man pages: the key step is tools:::fetchRdDB. On my system names(tools:::fetchRdDB('/Users/ripley/R/R-devel/library/MASS/help/MASS')) tools:::fetchRdDB('/Users/ripley/R/R-devel/library/MASS/help/MASS', 'rlm') work: the layout of the pages is a little odd.> > Thanks, Robert > > Robert McGehee, CFA > Geode Capital Management, LLC > One Post Office Square, 28th Floor | Boston, MA | 02109 > Direct: (617)392-8396 > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel >-- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595