From J.Gorecki at wit.edu.pl  Thu Nov 17 22:40:15 2016
From: J.Gorecki at wit.edu.pl (Jan Gorecki)
Date: Thu, 17 Nov 2016 21:40:15 +0000
Subject: [Rd] new function to tools/utils package: dependencies based on
 DESCRIPTION file
In-Reply-To: <CAOQ5NyccwgSaL9VD0aWDZovm7gq0FT2OCoQh_3RfeBBUm2kqGA@mail.gmail.com>
References: <CABE2sp6e_kyX4vhR-uLAqpwNZxDyG-FD+AMBHE0uXp=c+UPQhw@mail.gmail.com>
	<CAJuCY5zfVudo7gyCi3NY1X012WgLyL7Tbkt7QeHy6zf0ZrQ2CA@mail.gmail.com>
	<CABE2sp7SrJtPDg-yZwdBDuNmSDoXv936i2biZzxUUaVEeQLa+g@mail.gmail.com>
	<CAO1zAVY9uAi3qEFUSBVDGdn50ijuhBDmJGHRL7cRNjaU01s6kA@mail.gmail.com>
	<CAO1zAVa69_0kh1ioXuqwq=R2t=5SeOHEZn0h7UJqjcKup45=xA@mail.gmail.com>
	<CAO1zAVZ9Crr370SsRM9y17JJPsLBcV_GT7P4LT7Cv5Zh2xy48Q@mail.gmail.com>
	<CABE2sp4XfD8oSOdMdKEmxT=BFh05ZEPtKif7h+KdACLEWYuLDw@mail.gmail.com>
	<CAOQ5NyccwgSaL9VD0aWDZovm7gq0FT2OCoQh_3RfeBBUm2kqGA@mail.gmail.com>
Message-ID: <CABE2sp4RJcC-dykbv1YynrOFj=9RzUinjUj0KW0mOBrgQQhwsg@mail.gmail.com>

Hi Michael,
Are you willing to accept patch for this? I'm already using this and
few related functions for a while, it plays well. I could wrap it as
patch to utils, or tools?
Best,
Jan

On 16 June 2016 at 14:00, Michael Lawrence <lawrence.michael at gene.com> wrote:
> I agree that the utils package needs some improvements related to
> this, and hope to make them eventually. This type of feedback is very
> helpful.
>
> Thanks,
> Michael
>
>
>
> On Thu, Jun 16, 2016 at 1:42 AM, Jan G?recki <J.Gorecki at wit.edu.pl> wrote:
>> Dear Joris,
>>
>> So it does looks like the proposed function makes a lot sense then, isn't it?
>>
>> Cheers,
>> Jan
>>
>> On 16 June 2016 at 08:37, Joris Meys <jorismeys at gmail.com> wrote:
>>> Dear Jan,
>>>
>>> It is unavoidable to have OS and R dependencies for devtools. The building
>>> process for packages is both OS and R dependent, so devtools has to be too
>>> according to my understanding.
>>>
>>> Cheers
>>> Joris
>>>
>>> On 14 Jun 2016 18:56, "Jan G?recki" <J.Gorecki at wit.edu.pl> wrote:
>>>
>>> Hi Thierry,
>>>
>>> I'm perfectly aware of it. Any idea when devtools would be shipped as
>>> a base R package, or at least recommended package? To actually answer
>>> the problem described in my email.
>>> I have range of useful functions available tools/utils packages which
>>> are shipped together with R. They doesn't require any OS dependencies
>>> or R dependencies, unlike devtools which requires both. Installing
>>> unnecessary OS dependencies and R dependencies just for such a simple
>>> wrapper doesn't seem to be an elegant way to address it, therefore my
>>> proposal to include that simple function in tools, or utils package.
>>>
>>> Regards,
>>> Jan Gorecki
>>>
>>> On 14 June 2016 at 16:17, Thierry Onkelinx <thierry.onkelinx at inbo.be> wrote:
>>>> Dear Jan,
>>>>
>>>> Similar functionality is available in devtools::dev_package_deps()
>>>>
>>>> Best regards,
>>>>
>>>> ir. Thierry Onkelinx
>>>> Instituut voor natuur- en bosonderzoek / Research Institute for Nature and
>>>> Forest
>>>> team Biometrie & Kwaliteitszorg / team Biometrics & Quality Assurance
>>>> Kliniekstraat 25
>>>> 1070 Anderlecht
>>>> Belgium
>>>>
>>>> To call in the statistician after the experiment is done may be no more
>>>> than
>>>> asking him to perform a post-mortem examination: he may be able to say
>>>> what
>>>> the experiment died of. ~ Sir Ronald Aylmer Fisher
>>>> The plural of anecdote is not data. ~ Roger Brinner
>>>> The combination of some data and an aching desire for an answer does not
>>>> ensure that a reasonable answer can be extracted from a given body of
>>>> data.
>>>> ~ John Tukey
>>>>
>>>> 2016-06-14 16:54 GMT+02:00 Jan G?recki <J.Gorecki at wit.edu.pl>:
>>>>>
>>>>> Hi all,
>>>>>
>>>>> Packages tools and utils have a lot of useful stuff for R developers.
>>>>> I find one task still not as straightforward as it could. Simply to
>>>>> extract dependencies of a package from DESCRIPTION file (before it is
>>>>> even installed to library). This would be valuable in automation of CI
>>>>> setup in a more meta-data driven way.
>>>>> The simple function below, I know it is short and simple, but having
>>>>> it to be defined in each CI workflow is a pain, it could be already
>>>>> available in tools or utils namespace.
>>>>>
>>>>> package.dependencies.dcf <- function(file = "DESCRIPTION", which =
>>>>> c("Depends","Imports","LinkingTo")) {
>>>>>     stopifnot(file.exists(file), is.character(which))
>>>>>     which_all <- c("Depends", "Imports", "LinkingTo", "Suggests",
>>>>> "Enhances")
>>>>>     if (identical(which, "all"))
>>>>>         which <- which_all
>>>>>     else if (identical(which, "most"))
>>>>>         which <- c("Depends", "Imports", "LinkingTo", "Suggests")
>>>>>     stopifnot(which %in% which_all)
>>>>>     dcf <- read.dcf(file, which)
>>>>>     # parse fields
>>>>>     raw.deps <- unlist(strsplit(dcf[!is.na(dcf)], ",", fixed = TRUE))
>>>>>     # strip stated dependency version
>>>>>     deps <- trimws(sapply(strsplit(trimws(raw.deps), "(", fixed =
>>>>> TRUE), `[[`, 1L))
>>>>>     # exclude base R pkgs
>>>>>     base.pkgs <- c("R", rownames(installed.packages(priority = "base")))
>>>>>     setdiff(deps, base.pkgs)
>>>>> }
>>>>>
>>>>> This allows to easily install all package dependencies just based on
>>>>> DESCRIPTION file, so simplify that in custom CI workflows to:
>>>>>
>>>>> if (length(pkgs<-package.dependencies.dcf(which="all")))
>>>>> install.packages(pkgs)
>>>>>
>>>>> And would not require to install custom packages or shell scripts.
>>>>>
>>>>> Regards,
>>>>> Jan Gorecki
>>>>>
>>>>> ______________________________________________
>>>>> R-devel at r-project.org mailing list
>>>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>>
>>>>
>>>
>>> ______________________________________________
>>> R-devel at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel



[Rd] new function to tools/utils package: dependencies based on DESCRIPTION file
Jan Gorecki