[R] Building Packages.

Ben Bolker bbo|ker @end|ng |rom gm@||@com
Thu Mar 21 17:09:14 CET 2024


   I think this might be a good conversation for someone to have with 
the Posit folks

   * is there a more transparent way to do what they want?
     * either, long-term, by having utils::install_packages() add a 
'hook' feature as mentioned by someone
     * using a similar method to bspm::enable(), which calls trace() to 
add an external hook

   * is there a good place for them to put the documentation of what 
they're doing?

   * can they fix things that are broken (e.g.? handling of paths), and 
allow optional arguments to override behaviours that are different from 
utils::install.packages (e.g. add a possibility to say force=TRUE to 
override the "don't reinstall if already installed")

   ?

   cheers
    Ben

On 2024-03-21 11:51 a.m., Duncan Murdoch wrote:
> I posted a description of their changes this morning.
> 
> Duncan Murdoch
> 
> On 21/03/2024 11:37 a.m., avi.e.gross using gmail.com wrote:
>> With all this discussion, I shudder to ask this. I may have missed the
>> answers but the discussion seems to have been about identifying and 
>> solving
>> the problem rapidly rather than what maybe is best going forward if all
>> parties agree.
>>
>> What was the motivation for what RSTUDIO did for their version and the
>> decision to replace what came with utils unless someone very explicitly
>> over-rode them by asking for the original? Is their version better in 
>> other
>> ways? Is there a possibility the two implementations may someday merge 
>> into
>> something that meets several sets of needs or are they incompatible?
>>
>> Is there agreement that what broke with the substitution is a valid 
>> use or
>> is it something that just happens to work on the utils version if not
>> patched?
>>
>>
>>
>> -----Original Message-----
>> From: R-help <r-help-bounces using r-project.org> On Behalf Of Duncan Murdoch
>> Sent: Thursday, March 21, 2024 5:53 AM
>> To: peter dalgaard <pdalgd using gmail.com>
>> Cc: Jorgen Harmse <JHarmse using roku.com>; r-help using r-project.org; Martin 
>> Maechler
>> <maechler using stat.math.ethz.ch>
>> Subject: Re: [R] Building Packages.
>>
>> Yes, you're right.  The version found in the search list entry for
>> "package:utils" is the RStudio one; the ones found with two or three
>> colons are the original.
>>
>> Duncan Murdoch
>>
>> On 21/03/2024 5:48 a.m., peter dalgaard wrote:
>>> Um, what's with the triple colon? At least on my install, double 
>>> seems to
>> suffice:
>>>
>>>> identical(utils:::install.packages, utils::install.packages)
>>> [1] TRUE
>>>> install.packages
>>> function (...)
>>> .rs.callAs(name, hook, original, ...)
>>> <environment: 0x7f79e0019860>
>>>
>>> -pd
>>>
>>>> On 21 Mar 2024, at 09:58 , Duncan Murdoch <murdoch.duncan using gmail.com>
>> wrote:
>>>>
>>>> The good news for Jorgen (who may not be reading this thread any 
>>>> more) is
>> that one can still be sure of getting the original install.packages() by
>> using
>>>>
>>>>      utils:::install.packages( ... )
>>>>
>>>> with *three* colons, to get the internal (namespace) version of the
>> function.
>>>>
>>>> Duncan Murdoch
>>>>
>>>>
>>>> On 21/03/2024 4:31 a.m., Martin Maechler wrote:
>>>>>>>>>> "Duncan Murdoch on Wed, 20 Mar 2024 13:20:12 -0400 writes:
>>>>>       > On 20/03/2024 1:07 p.m., Duncan Murdoch wrote:
>>>>>       >> On 20/03/2024 12:37 p.m., Ben Bolker wrote:
>>>>>       >>> Ivan, can you give more detail on this? I've heard this
>>>>>       >>> issue mentioned, but when I open RStudio and run
>>>>>       >>> find("install.packages") it returns
>>>>>       >>> "utils::install.packages", and running dump() from
>>>>>       >>> within RStudio console and from an external "R
>>>>>       >>> --vanilla" gives identical results.
>>>>>       >>>
>>>>>       >>> I thought at one point this might only refer to the GUI
>>>>>       >>> package-installation interface, but you seem to be
>>>>>       >>> saying it's the install.packages() function as well.
>>>>>       >>>
>>>>>       >>> Running an up-to-date RStudio on Linux, FWIW -- maybe
>>>>>       >>> weirdness only happens on other OSs?
>>>>>       >>
>>>>>       >> On MacOS, I see this:
>>>>>       >>
>>>>>       >> > install.packages function (...)  .rs.callAs(name, hook,
>>>>>       >> original, ...)  <environment: 0x7fa7c72a6268>
>>>>>       >>
>>>>>       >> I get the same results as you from find().  I'm not sure
>>>>>       >> what RStudio is doing to give a different value for the
>>>>>       >> function than what find() sees.
>>>>>       > Turns out that RStudio replaces the install.packages
>>>>>       > object in the utils package.
>>>>>       > Duncan Murdoch
>>>>> Yes, and this has been the case for several years now, and I
>>>>> have mentioned this several times, too  (though some of it
>>>>> possibly not in a public R-* mailing list).
>>>>> And yes, that they modify the package environment
>>>>>     as.environment("package:utils")
>>>>> but leave the
>>>>>     namespace  asNamespace("utils")
>>>>> unchanged, makes it harder to see what's
>>>>> going on (but also has less severe consequences; if they kept to
>>>>> the otherwise universal *rule* that the namespace and package must 
>>>>> have
>> the same objects
>>>>> apart from those only in the namespace,
>>>>> people would not even have access to R's true install.packages()
>>>>> but only see the RStudio fake^Hsubstitute..
>>>>> We are still not happy with their decision. Also
>>>>> help(install.packages) goes to R's documentation of R's
>>>>> install.packages, so there's even more misleading of useRs.
>>>>> Martin
>>>>>
>>>>
>>>> ______________________________________________
>>>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>>>> and provide commented, minimal, self-contained, reproducible code.
>>>
>>
>> ______________________________________________
>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide 
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>> ______________________________________________
>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide 
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
> 
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide 
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list