[MacPorts] #59445: restore_ports.tcl script fails with the error "infinite loop" (deps cycle)

MacPorts noreply at macports.org
Wed Oct 23 01:22:07 UTC 2019


#59445: restore_ports.tcl script fails with the error "infinite loop" (deps cycle)
---------------------+--------------------
  Reporter:  JDLH    |      Owner:  (none)
      Type:  defect  |     Status:  new
  Priority:  Normal  |  Milestone:
 Component:  base    |    Version:
Resolution:          |   Keywords:
      Port:          |
---------------------+--------------------

Old description:

> I recently updated my macOS version from 10.11 El Capitan to macOS High
> Sierra 10.13.6. I am following the
> [https://trac.macports.org/wiki/Migration Migration instructions].
>
> When I ran the `restore_ports.tcl` script, it failed with the error
> message:
>
> {{{
> Error: we appear to be stuck, exiting...
> infinite loop
>     while executing
> "sort_ports $portList"
>     invoked from within
> "set operationList [sort_ports $portList]"
>     (file "./restore_ports.tcl" line 285)
> }}}
>
> I did some investigation, adding diagnostic statements to
> `restore_ports.tcl` . My conclusion is that the underlying cause of the
> problem is that: a) some of the ports in my list had a mutual dependency
> cycle, and b) the script could not come up with an installation order for
> these two ports. Thus it issued the "infinite loop" error message.
> Details below.
>
> My **workaround** was to edit my list of ports to restore. I looked at
> the ports involved in the cycle. One was clearly little used, I didn't
> even recognise it. I removed that from my list of ports. I also had
> hundreds of entries for old versions of ports which were no longer
> active; I removed all of them also. With this change, `restore_ports.tcl`
> was able to avoid the dependency cycle, and the restore is underway.
>
> This problem is similar to https://trac.macports.org/ticket/49210
> 'restore_ports.tcl script on fails on El Capitan with the error "infinite
> loop"'. That ticket did not come up with a clear solution to their
> problem, and it is closed and four years old. I think it's better to open
> a new ticket than to add this commentary on to that ticket. Hopefully
> others with this problem will find the workaround helpful, even before
> the underlying bug gets fixed.
>
> **Versions**: \\
> macOS High Sierra 10.13.6 \\
> Xcode 10.1 [but I think not involved in this bug] \\
> restore_ports.tcl: https://github.com/macports/macports-
> contrib/raw/master/restore_ports/restore_ports.tcl (I believe commit
> 75135bd from Mar 24, 2015). \\
> Port with incorrect dependency calculation: librsvg \\
> Port incorrectly listed as dependency, causing cycle: adwaita-icon-theme

New description:

 I recently updated my macOS version from 10.11 El Capitan to macOS High
 Sierra 10.13.6. I am following the [wiki:Migration Migration
 instructions].

 When I ran the `restore_ports.tcl` script, it failed with the error
 message:

 {{{
 Error: we appear to be stuck, exiting...
 infinite loop
     while executing
 "sort_ports $portList"
     invoked from within
 "set operationList [sort_ports $portList]"
     (file "./restore_ports.tcl" line 285)
 }}}

 I did some investigation, adding diagnostic statements to
 `restore_ports.tcl` . My conclusion is that the underlying cause of the
 problem is that: a) some of the ports in my list had a mutual dependency
 cycle, and b) the script could not come up with an installation order for
 these two ports. Thus it issued the "infinite loop" error message. Details
 below.

 My **workaround** was to edit my list of ports to restore. I looked at the
 ports involved in the cycle. One was clearly little used, I didn't even
 recognise it. I removed that from my list of ports. I also had hundreds of
 entries for old versions of ports which were no longer active; I removed
 all of them also. With this change, `restore_ports.tcl` was able to avoid
 the dependency cycle, and the restore is underway.

 This problem is similar to #49210 'restore_ports.tcl script on fails on El
 Capitan with the error "infinite loop"'. That ticket did not come up with
 a clear solution to their problem, and it is closed and four years old. I
 think it's better to open a new ticket than to add this commentary on to
 that ticket. Hopefully others with this problem will find the workaround
 helpful, even before the underlying bug gets fixed.

 **Versions**: \\
 macOS High Sierra 10.13.6 \\
 Xcode 10.1 [but I think not involved in this bug] \\
 restore_ports.tcl: https://github.com/macports/macports-
 contrib/raw/master/restore_ports/restore_ports.tcl (I believe commit
 75135bd from Mar 24, 2015). \\
 Port with incorrect dependency calculation: librsvg \\
 Port incorrectly listed as dependency, causing cycle: adwaita-icon-theme

--

Comment (by ryandesign):

 Dependency cycles are not allowed in MacPorts and the behavior of MacPorts
 and any associated scripts is undefined if dependency cycles exist.
 Therefore, portfile authors must ensure that dependency cycles do not
 exist.

-- 
Ticket URL: <https://trac.macports.org/ticket/59445#comment:3>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list