Bug 239195 - app-text/xpdf-3.02-r1 FTBFS with app-text/poppler-0.10.0
Bug#: 239195 Product:  Gentoo Linux Version: 2008.0 Platform: All
OS/Version: Linux Status: RESOLVED Severity: normal Priority: P2
Resolution: FIXED Assigned To: printing@gentoo.org Reported By: loki_val@gentoo.org
Component: Applications
URL: 
Summary: app-text/xpdf-3.02-r1 FTBFS with app-text/poppler-0.10.0
Keywords:  
Status Whiteboard: 
Opened: 2008-09-30 21:27 0000
Description:   Opened: 2008-09-30 21:27 0000
XPDFCore.cc:559: warning: deprecated conversion from string constant to 'char*'
XPDFCore.cc:570: warning: deprecated conversion from string constant to 'char*'
XPDFCore.cc:600: warning: deprecated conversion from string constant to 'char*'
XPDFCore.cc:607: warning: deprecated conversion from string constant to 'char*'
XPDFCore.cc:620: warning: deprecated conversion from string constant to 'char*'
XPDFCore.cc:620: warning: deprecated conversion from string constant to 'char*'
XPDFCore.cc:632: warning: deprecated conversion from string constant to 'char*'
XPDFCore.cc:633: warning: deprecated conversion from string constant to 'char*'
XPDFCore.cc:634: error: 'getFileSpecName' is not a member of 'LinkAction'
XPDFCore.cc:656: warning: deprecated conversion from string constant to 'char*'

------- Comment #1 From Hamlet 2008-10-01 16:48:00 0000 -------
Same here... I think (what is a FTBFS?).
Some more information:

The problem has happened after a system update: xpdf needs to be rebuilt
(together with gimp and inkscape) and when trying, some preprocessor and then
compiling fatal errors happen:

# equery list poppler
[I--] [ ~] app-text/poppler-0.9.2 (0)
[I--] [ ~] app-text/poppler-bindings-0.9.2 (0)
# equery list xpdf
[I--] [  ] app-text/xpdf-3.02-r1 (0)

# equery uses xpdf
[ Found these USE variables for app-text/xpdf-3.02-r1 ]
 U I
 - - linguas_ar    : <unknown>
 - - linguas_el    : <unknown>
 - - linguas_he    : <unknown>
 - - linguas_ja    : <unknown>
 - - linguas_ko    : <unknown>
 - - linguas_la    : <unknown>
 - - linguas_ru    : <unknown>
 - - linguas_th    : <unknown>
 - - linguas_tr    : <unknown>
 - - linguas_zh_CN : <unknown>
 - - linguas_zh_TW : <unknown>
 - - nodrm         : Disable the drm feature decoder

# equery uses poppler
[ Found these USE variables for app-text/poppler-0.9.2 ]
 U I
 - - cjk  : Adds support for Multi-byte character languages (Chinese, Japanese,
Korean)
 + + doc  : Adds extra documentation (API, Javadoc, etc)
 + + jpeg : Adds JPEG image support
 + + zlib : Adds support for zlib (de)compression

# revdep-rebuild
[...]
 * Checking dynamic linking consistency
[ 11% ]  *   broken /usr/bin/inkscape (requires libpoppler-glib.so.3
libpoppler.so.3)
 *   broken /usr/bin/inkview (requires libpoppler-glib.so.3
libpoppler.so.3)
[ 24% ]  *   broken /usr/bin/xpdf (requires libpoppler.so.3)
[ 55% ]  *   broken /usr/lib64/gimp/2.0/plug-ins/poppler (requires
libpoppler-glib.so.3
libpoppler.so.3)
[...]
g++ -march=nocona -O2 -pipe -I/usr/include/poppler -I/usr/include/poppler/goo
-I/usr/include/poppler/splash -DHAVE_DIRENT_H  -c -o ImageOutputDev.o
ImageOutputDev.cc
In file included from ImageOutputDev.cc:20:
config.h:31:1: warning: "xpdfCopyright" redefined
In file included from ImageOutputDev.cc:9:
/usr/include/poppler/poppler-config.h:52:1: warning: this is the location of
the previous definition
g++ -march=nocona -O2 -pipe -I/usr/include/poppler -I/usr/include/poppler/goo
-I/usr/include/poppler/splash -DHAVE_DIRENT_H  -c -o PDFCore.o PDFCore.cc
In file included from GlobalParams.h:16,
                 from PDFCore.cc:18:
config.h:31:1: warning: "xpdfCopyright" redefined
In file included from PDFCore.cc:9:
/usr/include/poppler/poppler-config.h:52:1: warning: this is the location of
the previous definition
g++ -march=nocona -O2 -pipe -I/usr/include/poppler -I/usr/include/poppler/goo
-I/usr/include/poppler/splash -DHAVE_DIRENT_H  -c -o XPDFApp.o XPDFApp.cc
In file included from XPDFApp.cc:20:
config.h:31:1: warning: "xpdfCopyright" redefined
In file included from XPDFApp.cc:9:
/usr/include/poppler/poppler-config.h:52:1: warning: this is the location of
the previous definition
g++ -march=nocona -O2 -pipe -I/usr/include/poppler -I/usr/include/poppler/goo
-I/usr/include/poppler/splash -DHAVE_DIRENT_H  -c -o XPDFCore.o XPDFCore.cc
In file included from GlobalParams.h:16,
                 from XPDFCore.cc:22:
config.h:31:1: warning: "xpdfCopyright" redefined
In file included from XPDFCore.cc:9:
/usr/include/poppler/poppler-config.h:52:1: warning: this is the location of
the previous definition
XPDFCore.cc: In member function 'void XPDFCore::doAction(LinkAction*)':
XPDFCore.cc:634: error: 'getFileSpecName' is not a member of 'LinkAction'
make: *** [XPDFCore.o] Error 1

------- Comment #2 From Jeffrey Gardner 2008-10-05 23:15:29 0000 -------
(In reply to comment #1)
> Same here... I think (what is a FTBFS?).

Fails To Build From Scratch?

------- Comment #3 From Andreas Proteus 2008-10-13 14:37:13 0000 -------
Same problem here.

After updating to: app-text/poppler-0.10.0
and emerge @preserved-rebuild
xpdf fails to compile with the same error as in comment #1
(on 3 different machines).

(~x86) I can supply emerge --info if required.

------- Comment #4 From Rafał Mużyło 2008-10-13 15:04:43 0000 -------
Poppler upstream has simply broken API again (as they tend to do
on such releases).
xpdf needs simply a patch for new api.

------- Comment #5 From Peter Alfredsen 2008-10-13 20:07:41 0000 -------
*** Bug 241792 has been marked as a duplicate of this bug. ***

------- Comment #6 From Martin von Gagern 2008-10-14 17:56:08 0000 -------
http://cgit.freedesktop.org/poppler/poppler/commit/?id=996d2e176057e22acbc374cff7a712ce6fd92d93
turned getFileSpecName from a static class function in Link.h into a global
function in the newly added FileSpec.h. It seems that none of the installed
headers includes this one, so an application using that function would have to
do so itself.

A likely solution would be to have configure check for FileSpec.h, and if it is
present, have XPDFCore.cc include it and use the new global function instead of
the local one. I'll try to see whether I can turn this into a patch.

------- Comment #7 From Martin von Gagern 2008-10-14 19:24:06 0000 -------
Created an attachment (id=168468) [details]
Patch replacing LinkAction::getFileSpecName with getFileSpecNameForPlatform

Been a bit rash in comment #6 because
1. there is no configure script for xpdf
2. getFileSpecNameForPlatform seems to be the closest replacement for
LinkAction::getFileSpecName, getFileSpecName looks quite different
3. even getFileSpecNameForPlatform has a different signature
4. a redefinition of xpdfCopyright in config.h also causes a compiler error

Problem 1. I'll leave to ebuild writers to resolve in whatever way they see
fit, be it checking for theinstalled poppler package or for the FileSpec.h
header file.

The attached patch attempts to solve 2. through 4. It copies some code from
http://cgit.freedesktop.org/poppler/poppler/diff/?id=49b3e4560f62a9a7db350d94d50e229f5e1208bf
but that's no guarantee for correctness, only an educated guess. So if anybody
has a PDF file referencing an external Movie, please test this code.

------- Comment #8 From Martin von Gagern 2008-10-14 19:30:19 0000 -------
Created an attachment (id=168472) [details]
Patch replacing LinkAction::getFileSpecName with getFileSpecNameForPlatform

Had a line left over from a previous attempt, sorry. That would have introduced
a minor memory leak, which this one here should avoid.

------- Comment #9 From Peter Alfredsen 2008-10-14 21:12:28 0000 -------
+  14 Oct 2008; Peter Alfredsen <loki_val@gentoo.org>
+  -files/poppler-0.5.9.patch, +files/poppler-0.10.0.patch,
+  -files/xpdf-3.01-poppler-0.5.1.patch,
+  -files/xpdf-3.01-poppler-nodrm.patch, -xpdf-3.01-r8.ebuild,
+  xpdf-3.02-r1.ebuild:
+  Fix compatibility with poppler-0.10.0, bug #239195. Thanks to Martin von
+  Gagern <Martin.vGagern@gmx.net> for providing the patch. Also clean out
+  old ebuilds and patches.
+

------- Comment #10 From Andreas Proteus 2008-10-14 22:32:47 0000 -------
Excellent work!

Thank you very much.