Gentoo Archives: gentoo-user

From: Alexander <alejck@×××××.com>
To: gentoo-user@l.g.o
Subject: Re: [gentoo-user] Re: app-text/poppler-utils install fails
Date: Tue, 24 Nov 2009 04:08:15
Message-Id: 2e177a690911231833i5c6c4405pfa2c4d869ac9ad80@mail.gmail.com
In Reply to: [gentoo-user] Re: app-text/poppler-utils install fails by walt
1 On Mon, Nov 23, 2009 at 6:33 PM, walt <w41ter@×××××.com> wrote:
2
3 > On 11/23/2009 08:02 AM, Alexander wrote:
4 >
5 >> Hi,
6 >>
7 >> I'm trying to upgrade app-text/poppler-utils (as part of a bigger
8 >> system upgrade), but it fails...
9 >>
10 >
11 > libtool: link: x86_64-pc-linux-gnu-g++ -Wall -Wno-write-strings -O2
12 >> -march=nocona -pipe -Wl,-O1 -o pdfinfo pdfinfo.o printencodings.o
13 >> parseargs.o -lpoppler /usr/lib64/libfontconfig.so
14 >> /usr/lib64/libfreetype.so /usr/lib64/libexpat.so -lopenjpeg -lz
15 >> ImageOutputDev.o: In function `ImageOutputDev::drawImage(GfxState*,
16 >> Object*, Stream*, int, int, GfxImageColorMap*, int*, int)':
17 >> ImageOutputDev.cc:(.text+0x2f4): undefined reference to
18 >> `ImageStream::close()'
19 >>
20 >
21 > Just finding the real error in all that junk is the first challenge
22 > in debugging :o) I just noticed that the word 'error' doesn't even
23 > appear in the libtool 'error' message. Hrmphh! Yet another black
24 > mark on libtool's report card.
25 >
26 > Notice the double colons in "ImageStream::close()". That's a dead
27 > giveaway that this is c++ code. Remember that, because you will see
28 > this kind of c++ problem fairly often.
29 >
30 > The usual suspect is that you are now using a different (newer?) gcc
31 > to build poppler-utils than you were using when you compiled the
32 > c++ library that's causing this problem. (Usually, but not always.)
33 >
34 > So, which c++ library is causing the problem?
35 >
36 > A quick and dirty check:
37 > $grep -r ImageStream /usr/include/*
38 > /usr/include/ImageMagick/magick/image.h: DisassociateImageStream(Image *),
39 > /usr/include/ImageMagick/magick/methods.h:#define DisassociateImageStream
40 > PrependMagickMethod(DisassociateImageStream)
41 > /usr/include/poppler/Gfx.h: Stream *buildImageStream();
42 > /usr/include/poppler/Stream.h:// ImageStream
43 > /usr/include/poppler/Stream.h:class ImageStream { <-------- Eureka!
44 >
45 >
46 > $equery b Stream.h
47 > [ Searching for file(s) Stream.h in *... ]
48 > dev-libs/poppler-0.10.7 (/usr/include/poppler/Stream.h)
49 >
50 > So, the guilty party is poppler? Looks like it.
51 >
52 > The cheap and dirty remedy is to re-emerge poppler, but just for my
53 > own education (and yours, I hope) I'm slogging ahead:
54 >
55 > I reinstalled dev-libs/poppler, and now installing app-text/poppler-utils
56 works.
57
58
59 > The ImageStream 'class' should define a 'method' named close(). (This
60 > is the usual and customary object-oriented paradigm.) Take a look at
61 > Stream.h, and look for these lines:
62 >
63 > // Close the stream previously reset
64 > void close();
65 >
66 > Do you see them? If not, re-emerge poppler and look again. I'd like
67 > to know if I'm on the right track.
68 >
69 > I checked this, and I could not find this line. Then I reinstalled it, and
70 now it's there.
71
72 Thanks for the very informative reply! -- next time I'll know to try this
73 approach too.
74
75 Best,
76
77 Alexander