MacPorts Infinite loop

Ryan Schmidt ryandesign at macports.org
Thu Nov 29 15:30:43 PST 2012


Hi Jonathon, sorry you've had trouble. I'm Cc'ing the macports-users mailing list on this reply so that others can benefit from and participate in the discussion. You should subscribe to the list and be sure to include the list address on your replies as well (by using Reply All).

https://lists.macosforge.org/mailman/listinfo/macports-users


On Nov 29, 2012, at 11:28, Jonathon Nooner wrote:

> Ryan Schmidt,
> 
> I've recently tried to use macports to install qt and PyQt.   In both instances I run into an issue where I trigger an infinite loop in the macports process.  Left to it's own devices it will continuously generate an error.  Am I misusing or abusing your software somehow?

The short answer is that you should uninstall the serf port and install the serf0 port instead:

sudo port -f uninstall serf
sudo port install serf0

More detailed explanation below.


> Some information about my computer:
> 
> I use Mac 10.6.8 (Snow Leopard)
> 
> As a developer, do you know what's triggering this?
> 
> Thank you for your time,
> 
> Sincerely,
> 
> Jonathon Nooner
> 
> 
> 
> An example of the error message:
> -------------------------------------
> >  sudo port install qt4-mac
> 
> Password:
> --->  Computing dependencies for qt4-mac
> --->  Cleaning qt4-mac
> --->  Scanning binaries for linking errors: 100.0%
> --->  Found 6 broken file(s), matching files to ports
> Warning: No port serf found in the index; can't rebuild
> --->  Found 0 broken port(s), determining rebuild order
> --->  Rebuilding in order
> --->  Scanning binaries for linking errors: 100.0%
> --->  Found 6 broken file(s), matching files to ports
> Warning: No port serf found in the index; can't rebuild
> --->  Found 0 broken port(s), determining rebuild order
> --->  Rebuilding in order
> --->  Scanning binaries for linking errors: 100.0%
> --->  Found 6 broken file(s), matching files to ports
> Warning: No port serf found in the index; can't rebuild
> --->  Found 0 broken port(s), determining rebuild order
> --->  Rebuilding in order
> --->  Scanning binaries for linking errors: 100.0%
> --->  Found 6 broken file(s), matching files to ports
> Warning: No port serf found in the index; can't rebuild
> --->  Found 0 broken port(s), determining rebuild order
> --->  Rebuilding in order
> --->  Scanning binaries for linking errors: 100.0%
> --->  Found 6 broken file(s), matching files to ports
> Warning: No port serf found in the index; can't rebuild
> --->  Found 0 broken port(s), determining rebuild order
> --->  Rebuilding in order
> --->  Scanning binaries for linking errors: 100.0%
> --->  Found 6 broken file(s), matching files to ports
> Warning: No port serf found in the index; can't rebuild
> --->  Found 0 broken port(s), determining rebuild order
> --->  Rebuilding in order
> --->  Scanning binaries for linking errors: 100.0%
> --->  Found 6 broken file(s), matching files to ports
> Warning: No port serf found in the index; can't rebuild
> --->  Found 0 broken port(s), determining rebuild order
> --->  Rebuilding in order
> --->  Scanning binaries for linking errors: 100.0%
> --->  Found 6 broken file(s), matching files to ports
> Warning: No port serf found in the index; can't rebuild
> --->  Found 0 broken port(s), determining rebuild order
> --->  Rebuilding in order
> --->  Scanning binaries for linking errors: 100.0%
> --->  Found 6 broken file(s), matching files to ports
> Warning: No port serf found in the index; can't rebuild
> --->  Found 0 broken port(s), determining rebuild order
> --->  Rebuilding in order
> --->  Scanning binaries for linking errors: 100.0%
> --->  Found 6 broken file(s), matching files to ports
> Warning: No port serf found in the index; can't rebuild
> --->  Found 0 broken port(s), determining rebuild order
> --->  Rebuilding in order
> --->  Scanning binaries for linking errors: 100.0%
> --->  Found 6 broken file(s), matching files to ports
> Warning: No port serf found in the index; can't rebuild
> --->  Found 0 broken port(s), determining rebuild order
> --->  Rebuilding in order
> --->  Scanning binaries for linking errors: 100.0%
> --->  Found 6 broken file(s), matching files to ports
> -----------------


What happened is that in r80770 (on 2011-07-17) the serf0 port was created to replace the serf port, and in r95471 (on 2012-07-13) the serf port was deleted. Had you upgraded your ports between those dates MacPorts should have handled the transition for you. We usually only keep such upgrade paths around for about a year. You should selfupdate and upgrade outdated ports at least that often.

The above output shows the MacPorts' rev-upgrade feature getting stuck. It has determined that some files installed by the serf port are linked with libraries that don't exist anymore (this is what rev-upgrade means when it says a port is "broken"), and that serf should therefore be rebuilt. But because the serf port itself no longer exists, it can't be rebuilt, and the loop repeats. We should probably fix rev-upgrade somehow to handle this situation, since it is not uncommon for us to delete ports, which some users might still have installed. Just having rev-upgrade exit when it wants to rebuild a port that doesn't exist would be fine. It could also perhaps print a message telling the user they might want to uninstall the port.





More information about the macports-users mailing list