I upgraded Subversion 1.8.1 to 1.8.5 on some non-critical FreeBSD servers the other day. Normally I would run this command:

portupgrade -fprv devel/subversion

I noticed www/serf also needed updating, so this time I ran a command like:

portupgrade -fprv www/serf

I got a bit surprised when portupgrade bombed out unable to compile the new www/serf port due to missing dependencies. “How strange”, I thought, as I had just witnessed devel/scons being compiled and presumably installed. No such luck.

Instead, do this:

portupgrade -Nfprv devel/scons
portupgrade -fprv www/serf

Ah, that’s much better thank you very much. I never tracked down the culprit, be it portupgrade or the ports collection. Anyway, manual handling of devel/scons saved the day.

Update 2013-12-30

It seems the new stage feature of the ports collection is causing portupgrade to assume that some of the ports have been installed when the truth is that the ports have only been installed in the stage directory. Luckily, a package would have been erected in /usr/ports/packages/All, enabling us to manually install what was supposed to be installed automatically, and the rerun portupgrade. Either the stage feature has to be globally disabled somehow, or portupgrade needs to be taught a lesson or two.