portupgrade spurious skips
Alexander Leidinger
Alexander at Leidinger.net
Fri Feb 27 04:19:48 PST 2009
Quoting Dan Nelson <dnelson at allantgroup.com> (from Thu, 26 Feb 2009
23:57:37 -0600):
> In the last episode (Feb 26), Nate Eldredge said:
>> In the past few months I've noticed a bug in portupgrade. When I update
>> my ports tree and do `portupgrade -a', often a few ports will be skipped,
>> supposedly because another port on which they depend failed to install.
>> However, the apparently failed port actually did not fail, and if I rerun
>> `portupgrade -a', some of the skipped ports will install successfully
>> without complaint. After enough iterations I can eventually get all of
>> them.
>>
>> I'd like to file a PR about this, but it's a little bit tricky coming up
>> with a test case, since the behavior depends on having outdated packages
>> installed, and on the dependencies between them. Moreover, after I run
>> `portupgrade -a' and notice the problem, the state of the installed
>> packages has changed and the same packages aren't skipped the next time.
>> So my question is whether anyone has ideas about how to construct a
>> reasonable test case that could help me make this reproducible and easier
>> to investigate. Any thoughts?
>
> "me too".. It seems to happen frequently when doing > 20 or so ports.
> Every week or so I upgrade old ports and don't have problems, but after a
> gnome or xorg update that ends up bumping the portrevision for half my
> installed ports, it always takes three or four "portupgrade -a" loops for
> everything to buid.
>
> If you've got ZFS, you can snapshot your filesystems, and if portupgrade
> fails, roll back to the snapshot and do it again to see if it happens on the
> same port a second time. Or if you know ruby, you could instrument the code
> that checks for port build errors and see if it's got a bug in it...
There's a more easy solution, pipe the output of portupgrade to a
logfile. This way you can have a look what happened with the port
which was reported as broken. Maybe there's a dependency missing, and
after updating other ports after the failure, this dependency was
satisfied so that the next run succeeds.
Bye,
Alexander.
--
A squeegee by any other name wouldn't sound as funny.
http://www.Leidinger.net Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org netchild @ FreeBSD.org : PGP ID = 72077137
More information about the freebsd-hackers
mailing list