Subject: Re: bug#19390: 25.0.50; `package-activate' is too slow

From: Artur Malabarba <[email-masked]>
Date: Thu, 18 Dec 2014 13:47:57 -0200

In retrospect, the cleanest way to do do all this would have been to
build this reloading into `require' and `provide' (something would
have to be done with autoloads too). Then package.el could go back to
not worrying about it, and most of this discussion would be moot.

The only problem I see with this is that we might have (much smaller)
performance issues with `package-initialize` again, since `require'
has no way of knowing whether it was invoked from inside
`package-initialize'. The issue would be smaller because handling it
inside `require' could be done more intelligently.

2014-12-18 13:39 GMT-02:00 Artur Malabarba <[email-masked]>:
> I see what you meant now. The RELOAD argument should not be passed to
> package-activate-1 when activating dependencies. That should fix the
> issue.
>
> The dependency will already have been reloaded when (if) it was upgraded.
>
> 2014-12-18 12:47 GMT-02:00 Dmitry Gutov <[email-masked]>:
>> Stefan Monnier <[email-masked]> writes:
>>
>>>> Aside from it, if we compare with the alternative implementation
>>>> suggestions, the current one reloads all dependencies, even those that
>>>> haven't been (re)installed during the current session.
>>>
>>> It sounds serious, but I don't understand what you're referring to.
>>> Can you give an example?
>>
>> It reloads all dependencies of the package that is currently being
>> installed.
>>
>> Try this:
>>
>> (advice-add 'package-activate-1 :before
>>             (lambda (pkg-desc &optional reload)
>>               (message "package-activate-1 called with %s %s"
>>                        (package-desc-name pkg-desc) reload))
>>             '((name . "Parrot arguments")))
>>
>> Then install company (if your haven't yet), and then, with Melpa in
>> package archives, install company-math. You'll see this in *Messages*:
>>
>> package-activate-1 called with company force
>> package-activate-1 called with math-symbol-lists force
>> package-activate-1 called with company-math force