[MacPorts] #16085: port deactivates then activates active dependency if more than one "latest" version of a port is installed

MacPorts noreply at macports.org
Sat Aug 2 23:57:36 PDT 2008


#16085: port deactivates then activates active dependency if more than one "latest"
version of a port is installed
--------------------------------------+-------------------------------------
  Reporter:  ryandesign at macports.org  |       Owner:  macports-tickets at lists.macosforge.org
      Type:  defect                   |      Status:  new                                  
  Priority:  Normal                   |   Milestone:  MacPorts base bugs                   
 Component:  base                     |     Version:  1.7.0                                
Resolution:                           |    Keywords:                                       
--------------------------------------+-------------------------------------
Changes (by ryandesign at macports.org):

  * summary:  port deactivates then activates active dependency if another
              version is installed => port deactivates then
              activates active dependency if more than one
              "latest" version of a port is installed

Comment:

 The problem can also be reproduced even if a port doesn't need upgrading,
 which at least makes it easy to reproduce and test.

 After some testing, it seems that r36762 is indeed implicated, though the
 behavior before r36762 is hardly better. Consider this set of installed
 ports:

 {{{
 $ port installed dcraw lcms tiff
 The following ports are currently installed:
   dcraw @8.86_2 (active)
   lcms @1.17_0
   lcms @1.17_0+universal (active)
   tiff @3.8.2_2+macosx
   tiff @3.8.2_2+macosx+universal (active)
 $
 }}}

 With trunk @36762:

 {{{
 $ port upgrade dcraw
 --->  Deactivating lcms @1.17_0+universal
 --->  Activating lcms @1.17_0+universal
 --->  Deactivating tiff @3.8.2_2+macosx+universal
 --->  Activating tiff @3.8.2_2+macosx+universal
 $
 }}}

 With trunk @36761:

 {{{
 $ port upgrade dcraw
 --->  Activating lcms @1.17_0+universal
 Error: Activating lcms @1.17_0 failed: Image error: lcms @1.17_0+universal
 is already active.
 $
 }}}

 The code tries to activate the "latest" installed version of a port, and
 I'm going to go out on a limb and assume that the problem occurs when you
 have more than one "latest" version installed. In my case, both installed
 lcms ports are the latest ''version'' but they have different variants.
 And the one that's active is not the first one in the list. See:

 {{{
 $ port deactivate lcms @1.17_0+universal
 --->  Deactivating lcms @1.17_0+universal
 $ port activate lcms @1.17_0
 --->  Activating lcms @1.17_0
 $ port upgrade dcraw
 --->  Deactivating tiff @3.8.2_2+macosx+universal
 --->  Activating tiff @3.8.2_2+macosx+universal
 $
 }}}

 See, now it doesn't complain about lcms anymore, because now the first
 lcms in the list was already active.

 So fix !#1 that's needed: if the active port is of the latest ''version''
 then don't deactivate and activate. Ignore the variants in this
 comparison.

 This leads to quandary !#2: if the active version is not the latest, and
 we do need to deactivate it and activate the latest version, what if
 there's more than one latest version installed (with different variants)?
 Which one do we activate? We may want to activate the one with the most
 similar variants to the currently-active one. Does the code currently do
 this? I don't know which one it picks. This may be a matter for another
 ticket, or it may in fact be too special a case to warrant spending a lot
 of time on, but I wanted to point it out.

-- 
Ticket URL: <http://trac.macports.org/ticket/16085#comment:2>
MacPorts <http://www.macports.org/>
Ports system for Mac OS


More information about the macports-tickets mailing list