On Monday 14 March 2011 17:14:25 Willie Wong wrote:
Hi list, sorry for the nondescript title. Let me described what
happened.
I ran `emerge --update --deep world' over the weekend which updated
app-text/poppler:
Sat Mar 12 22:00:46 2011 app-text/poppler-0.16.3
Today I found out that a whole bunch of packages got broken, and so I
ran `revdep-rebuild -p'. To my surprise, revdep-rebuild wants to
downgrade to app-text/poppler-0.14.5. That's odd, I thought.
So I ran `emerge --pretend --oneshot --verbose --tree' against the
list of packages produced by revdep-rebuild, and it displays near the
bottom that poppler-0.14.5 is a dependency of luatex-0.65 which is a
dependency of texlive-core-2010-r1. Okay. So I thought that one of
those two packages have an explicit dependency on a lower version of
poppler. And I thought I want to file a bug about that.
Digging into the ebuilds for luatex and texlive, I can't find any
reason why they would require poppler-0.14.5, and not 0.16.3. So after
puzzling about it for 20 minutes, I did the stupid thing, and tried
`emerge --oneshot --pretend luatex texlive-core'
and lo-and-behold, the poppler dependency does not appear!
Then combing through the list of packages one-by-one, I finally found
(on the second-to-last package that I tried) that the culprit is
in fact python-poppler.
Now, two questions:
(a) Should this be considered a bug in portage? The presented
information from `emerge --pretend --tree' is misleading to which
package is actually causing the downgrade request.
I don't think this is a bug in any meaningful sense of the word. It's a side-
effect of having a large dependency graph:
Many packages depend on poppler, so the dev has several choices:
a. print the first one found. Due to the way such things (searching data trees
in memory) work, this will usually be a different one each time the command is
run
b. print the last one found. This is a) upside-down with the same problem
c. Print a random one found. Well, it is an option, but doh ;-)
d. Print the whole damn lot. This has the especially nasty side effect of
producing vast amounts of output with even vaster amounts of bug reports and,
believe it or not, vaster numbers of pissed off users
e. Determine (later) the actual version that will be installed then go back to
the data tree, modify it in place, then print the output.
e) sounds wonderful. I suggest you try implement it. You will rapidly discover
why it is seldom implemented.
Conclusion: This shit is hard. It's a marvellous way to make the most people
the most unhappy in the shortest possible time.
(b) Is there a way to have found that python-poppler was the culprit
without running `emerge --pretend' on each of the list of 16 packages?
Perhaps emerge -e -t -p luatex texlive-core ?
p.s. What I wrote looks tongue-in-cheek. It isn't really. I have very similar
issues with code I admin and maintain, with similar results. I too decided to
take the lazy route out and try be right most of the time and screw it when it
isn't perfect.
--
alan dot mckinnon at gmail dot com