ports/114551: poppler-qt4 is unusable
Sven Gaerner
sgaerner at gmx.net
Fri Jul 13 12:00:10 UTC 2007
>Number: 114551
>Category: ports
>Synopsis: poppler-qt4 is unusable
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Fri Jul 13 12:00:09 GMT 2007
>Closed-Date:
>Last-Modified:
>Originator: Sven Gaerner
>Release: 6.2
>Organization:
>Environment:
FreeBSD insomnia.hactar.home 6.2-RELEASE-p5 FreeBSD 6.2-RELEASE-p5 #1: Sat Jun 9 00:09:47 CEST 2007 root at insomnia.hactar.home:/usr/obj/usr/src/sys/INSOMNIA i386
>Description:
poppler-qt4 is unusable because linking against libpoppler-qt4.so results in a link error.
/usr/local/lib/libpoppler-qt4.so: undefined reference to `ArthurOutputDev::startDoc(XRef*)'
/usr/local/lib/libpoppler-qt4.so: undefined reference to `ArthurOutputDev::~ArthurOutputDev()'
/usr/local/lib/libpoppler-qt4.so: undefined reference to `ArthurOutputDev::ArthurOutputDev(QPainter*)'
This error is caused by a poppler configuration.
The above mentioned Arthur rendering backend is only build if QT4 support is requested. But unfortunately the implementation is located within the poppler/ subdirectory and is linked into libpoppler.so. This is no problem if the whole library is build but the poppler-qt4 port just builds the QT4 support forgetting to link the Arthur backend object into the library. That means the resulting libpoppler-qt4.so references the Arthur backend which is not available.
>How-To-Repeat:
Link against libpoppler-qt4 and reference some class.
For example:
#include <poppler-qt4.h>
int main(int argc, char **argv) {
Poppler::Document *doc = NULL;
doc = Poppler::Document::load("/path/to/pdf_file.pdf");
delete doc;
return 0;
}
And the QMake file:
TARGET = poppler-test
TEMPLATE = app
QT += core gui xml
INCLUDEPATH += /usr/local/include/poppler/qt4
LIBS += -lpoppler-qt4
CONFIG(debug, debug|release) {
TARGET = pdfviewd
}
else {
TARGET = pdfview
}
MOC_DIR = .moc
OBJECTS_DIR = .obj
SOURCES += poppler-test.cc
Set environment variable QMAKESPEC to freebsd-g++
>Fix:
Build the Arthur backend located in the poppler/ subdirectory and link it into the libpoppler-qt4.so.
I think this is more a workaround than a solution. It would be better if the poppler developers would link the Arthur backend into the libpoppler-qt4.so library.
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list