Subject: Re: bug#29244: guix update -u always wants to update: python-wrapper & python-ipython

From: [email-masked] (Ludovic Courtès)
Date: Mon, 20 Nov 2017 22:50:07 +0100

Hello,

Benjamin Andresen <[email-masked]> skribis:

> this is with an empty user account that has no packages installed before this:
>> guixsd% guix package -u
>> The following packages will be upgraded:
>> python-wrapper 3.5.3 → 3.5.3 /gnu/store/xnb9bn2vgr3ch8zznsv23w65bb5psshh-python-wrapper-3.5.3
>> python-ipython 5.3.0 → 5.3.0 /gnu/store/7lg8s2kc6k8fxbdx80ykz39kz2lwj08g-python-ipython-5.3.0
>>
>> nothing to be done
>
> The problem exists with both installed and with them individually.

This is because ‘transaction-upgrade-entry’ in (guix profiles)
conservatively assumes that any package with propagated inputs, like
‘python-wrapper’, always has to be upgraded:

       (case (version-compare candidate-version version)
         ((>)
          (manifest-transaction-install-entry
           (package->manifest-entry pkg output)
           transaction))
         ((<)
          transaction)
         ((=)
          (let ((candidate-path (derivation->output-path
                                 (package-derivation (%store) pkg))))
            ;; XXX: When there are propagated inputs, assume we need to
            ;; upgrade the whole entry.
            (if (and (string=? path candidate-path)
                     (null? (package-propagated-inputs pkg)))
                transaction
                (manifest-transaction-install-entry
                 (package->manifest-entry pkg output)
                 transaction)))))

I think we can refine this code.

Thanks for your report,
Ludo’.