Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 13 Jul 2007 11:51:24 GMT
From:      Sven Gaerner <sgaerner@gmx.net>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   ports/114551: poppler-qt4 is unusable
Message-ID:  <200707131151.l6DBpOAk085259@www.freebsd.org>
Resent-Message-ID: <200707131200.l6DC09Ir050040@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>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@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:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200707131151.l6DBpOAk085259>