Package: zbar
Version: 0.10+doc-2
Severity: minor
Tags: patch
User: [email protected]
Usertags: origin-ubuntu ubuntu-patch maverick

        Hi there

 zbar was failing to build on all arches in Ubuntu, partly due to symbol
 files issues.  While looking into it, I noticed that the symbols were
 duplicated across arches and hard to maintain and patch.

 I've factored the symbol files together, and used the demangled C++
 names for the symbols.  I think this is much more maintainable.

 It seemed it used to be required to have symbol files for 32-bits arnd
 64-bits arches; in which case you could use something like:
  (arch=alpha amd64 ia64)#include "libfoo.symbols.64"

 I'm attaching the resulting symbol file which I've also updated to
 match Ubuntu symbols.  I suspect this wont work out of the box in
 Debian, but this should be a good base to build nicer symbol files on.
 What I fear will break:
 - usage of different qt4-x11 version seems to cause some symbols to
   appear/disappear on some arches; this is a big issue for backports or
   source compatibility across distros
 - usage of slightly different compilers (e.g. libstdc++) might result
   in different symbols for the zbar classes; probably not a high risk;
   should really be fixed in dpkg-dev

 I suppose more work would be needed to avoid exposing the Qt ABI in the
 libs and to mark some symbols as optional depending on the compiler
 version.  This can be done with c++|regexp syntax, for instance marking
 all Qt symbols as optional.  I'm not sure how to properly deal with
 this with libtool and C++ upstream though.

   Thanks!

PS: attaching the debian/libzbarqt0.symbols file which should replace
all the debian/libzbarqt0.symbols* files you currently have.
-- 
Loïc Minier
libzbarqt.so.0 libzbarqt0 #MINVER#
 (c++)"QList<QEvent*>::append(QEvent* const&)@Base" 0.10+doc-1
 (c++)"QList<QEvent*>::~QList()@Base" 0.10
 (c++)"QMutexLocker::~QMutexLocker()@Base" 0.10
 (c++)"QString::~QString()@Base" 0.10
 (c++)"non-virtual thunk to 
zbar::QZBarThread::image_callback(zbar::Image&)@Base" 0.10
 (c++)"non-virtual thunk to zbar::QZBarThread::~QZBarThread()@Base" 0.10
 (c++)"non-virtual thunk to zbar::QZBarThread::~QZBarThread()@Base" 0.10
 (c++)"non-virtual thunk to zbar::QZBar::~QZBar()@Base" 0.10
 (c++)"non-virtual thunk to zbar::QZBar::~QZBar()@Base" 0.10
 (c++)"non-virtual thunk to zbar::QZBar::paintEngine() co...@base" 0.10
 (c++)"typeinfo for zbar::busyer...@base" 0.10
 (c++)"typeinfo for zbar::closeder...@base" 0.10
 (c++)"typeinfo for zbar::except...@base" 0.10
 (c++)"typeinfo for zbar::formater...@base" 0.10
 (c++)"typeinfo for zbar::Image::hand...@base" 0.10
 (c++)"typeinfo for zbar::internaler...@base" 0.10
 (c++)"typeinfo for zbar::invalider...@base" 0.10
 (c++)"typeinfo for zbar::lockinger...@base" 0.10
 (c++)"typeinfo for zbar::qz...@base" 0.10
 (c++)"typeinfo for zbar::qzbarthr...@base" 0.10
 (c++)"typeinfo for zbar::QZBarThread::scanimageev...@base" 0.10
 (c++)"typeinfo for zbar::QZBarThread::videodeviceev...@base" 0.10
 (c++)"typeinfo for zbar::QZBarThread::videoenabledev...@base" 0.10
 (c++)"typeinfo for zbar::systemer...@base" 0.10
 (c++)"typeinfo for zbar::unsupporteder...@base" 0.10
 (c++)"typeinfo for zbar::xdisplayer...@base" 0.10
 (c++)"typeinfo for zbar::xprotoer...@base" 0.10
 (c++)"typeinfo name for zbar::busyer...@base" 0.10
 (c++)"typeinfo name for zbar::closeder...@base" 0.10
 (c++)"typeinfo name for zbar::except...@base" 0.10
 (c++)"typeinfo name for zbar::formater...@base" 0.10
 (c++)"typeinfo name for zbar::Image::hand...@base" 0.10
 (c++)"typeinfo name for zbar::internaler...@base" 0.10
 (c++)"typeinfo name for zbar::invalider...@base" 0.10
 (c++)"typeinfo name for zbar::lockinger...@base" 0.10
 (c++)"typeinfo name for zbar::qz...@base" 0.10
 (c++)"typeinfo name for zbar::qzbarthr...@base" 0.10
 (c++)"typeinfo name for zbar::QZBarThread::scanimageev...@base" 0.10
 (c++)"typeinfo name for zbar::QZBarThread::videodeviceev...@base" 0.10
 (c++)"typeinfo name for zbar::QZBarThread::videoenabledev...@base" 0.10
 (c++)"typeinfo name for zbar::systemer...@base" 0.10
 (c++)"typeinfo name for zbar::unsupporteder...@base" 0.10
 (c++)"typeinfo name for zbar::xdisplayer...@base" 0.10
 (c++)"typeinfo name for zbar::xprotoer...@base" 0.10
 (c++)"vtable for zbar::busyer...@base" 0.10
 (c++)"vtable for zbar::closeder...@base" 0.10
 (c++)"vtable for zbar::except...@base" 0.10
 (c++)"vtable for zbar::formater...@base" 0.10
 (c++)"vtable for zbar::Image::hand...@base" 0.10
 (c++)"vtable for zbar::internaler...@base" 0.10
 (c++)"vtable for zbar::invalider...@base" 0.10
 (c++)"vtable for zbar::lockinger...@base" 0.10
 (c++)"vtable for zbar::qz...@base" 0.10
 (c++)"vtable for zbar::qzbarthr...@base" 0.10
 (c++)"vtable for zbar::QZBarThread::scanimageev...@base" 0.10
 (c++)"vtable for zbar::QZBarThread::videodeviceev...@base" 0.10
 (c++)"vtable for zbar::QZBarThread::videoenabledev...@base" 0.10
 (c++)"vtable for zbar::systemer...@base" 0.10
 (c++)"vtable for zbar::unsupporteder...@base" 0.10
 (c++)"vtable for zbar::xdisplayer...@base" 0.10
 (c++)"vtable for zbar::xprotoer...@base" 0.10
 (c++)"zbar::BusyError::~BusyError()@Base" 0.10
 (c++)"zbar::BusyError::~BusyError()@Base" 0.10
 (c++)"zbar::ClosedError::~ClosedError()@Base" 0.10
 (c++)"zbar::ClosedError::~ClosedError()@Base" 0.10
 (c++)"zbar::Exception::~Exception()@Base" 0.10
 (c++)"zbar::Exception::~Exception()@Base" 0.10
 (c++)"zbar::Exception::what() co...@base" 0.10
 (c++)"zbar::FormatError::~FormatError()@Base" 0.10
 (c++)"zbar::FormatError::~FormatError()@Base" 0.10
 (c++)"zbar::FormatError::what() co...@base" 0.10
 (c++)"zbar::Image::_cleanup(zbar::zbar_image_s*)@Base" 0.10
 (c++)"zbar::Image::Handler::_cb(zbar::zbar_image_s*, void const*)@Base" 0.10
 (c++)"zbar::Image::Handler::~Handler()@Base" 0.10
 (c++)"zbar::Image::Handler::~Handler()@Base" 0.10
 (c++)"zbar::Image::SymbolIterator::~SymbolIterator()@Base" 0.10
 (c++)"zbar::InternalError::~InternalError()@Base" 0.10
 (c++)"zbar::InternalError::~InternalError()@Base" 0.10
 (c++)"zbar::InvalidError::~InvalidError()@Base" 0.10
 (c++)"zbar::InvalidError::~InvalidError()@Base" 0.10
 (c++)"zbar::LockingError::~LockingError()@Base" 0.10
 (c++)"zbar::LockingError::~LockingError()@Base" 0.10
 (c++)"zbar::QZBar::attach()@Base" 0.10
 (c++)"zbar::QZBar::changeEvent(QEvent*)@Base" 0.10
 (c++)"zbar::QZBar::decoded(int, QString const&)@Base" 0.10
 (c++)"zbar::QZBar::decodedText(QString const&)@Base" 0.10
 (c++)"zbar::QZBar::dragEnterEvent(QDragEnterEvent*)@Base" 0.10
 (c++)"zbar::QZBar::dropEvent(QDropEvent*)@Base" 0.10
 (c++)"zbar::QZBar::heightForWidth(int) co...@base" 0.10
 (c++)"zbar::QZBar::isVideoEnabled() co...@base" 0.10
 (c++)"zbar::QZBar::isVideoOpened() co...@base" 0.10
 (c++)"zbar::QZBar::metaObject() co...@base" 0.10
 (c++)"zbar::QZBar::paintEngine() co...@base" 0.10
 (c++)"zbar::QZBar::paintEvent(QPaintEvent*)@Base" 0.10
 (c++)"zbar::QZBar::qt_metacall(QMetaObject::Call, int, void**)@Base" 0.10
 (c++)"zbar::QZBar::qt_metacast(char const*)@Base" 0.10
 (c++)"zbar::QZBar::~QZBar()@Base" 0.10
 (c++)"zbar::QZBar::~QZBar()@Base" 0.10
 (c++)"zbar::QZBar::~QZBar()@Base" 0.10
 (c++)"zbar::QZBar::QZBar(QWidget*)@Base" 0.10
 (c++)"zbar::QZBar::QZBar(QWidget*)@Base" 0.10
 (c++)"zbar::QZBar::resizeEvent(QResizeEvent*)@Base" 0.10
 (c++)"zbar::QZBar::scanImage(QImage const&)@Base" 0.10
 (c++)"zbar::QZBar::setVideoDevice(QString const&)@Base" 0.10
 (c++)"zbar::QZBar::setVideoEnabled(bool)@Base" 0.10
 (c++)"zbar::QZBar::showEvent(QShowEvent*)@Base" 0.10
 (c++)"zbar::QZBar::sizeChange()@Base" 0.10
 (c++)"zbar::QZBar::sizeHint() co...@base" 0.10
 (c++)"zbar::QZBar::staticmetaobj...@base" 0.10
 (c++)"zbar::QZBarThread::clear()@Base" 0.10
 (c++)"zbar::QZBarThread::decoded(int, QString const&)@Base" 0.10
 (c++)"zbar::QZBarThread::decodedText(QString const&)@Base" 0.10
 (c++)"zbar::QZBarThread::enableVideo(bool)@Base" 0.10
 (c++)"zbar::QZBarThread::event(QEvent*)@Base" 0.10
 (c++)"zbar::QZBarThread::image_callback(zbar::Image&)@Base" 0.10
 (c++)"zbar::QZBarThread::metaObject() co...@base" 0.10
 (c++)"zbar::QZBarThread::openVideo(QString const&)@Base" 0.10
 (c++)"zbar::QZBarThread::processImage(zbar::Image&)@Base" 0.10
 (c++)"zbar::QZBarThread::qt_metacall(QMetaObject::Call, int, void**)@Base" 0.10
 (c++)"zbar::QZBarThread::qt_metacast(char const*)@Base" 0.10
 (c++)"zbar::QZBarThread::~QZBarThread()@Base" 0.10
 (c++)"zbar::QZBarThread::~QZBarThread()@Base" 0.10
 (c++)"zbar::QZBarThread::QZBarThread()@Base" 0.10
 (c++)"zbar::QZBarThread::QZBarThread()@Base" 0.10
 (c++)"zbar::QZBarThread::run()@Base" 0.10
 (c++)"zbar::QZBarThread::ScanImageEvent::~ScanImageEvent()@Base" 0.10
 (c++)"zbar::QZBarThread::ScanImageEvent::~ScanImageEvent()@Base" 0.10
 
(c++)"zbar::QZBarThread::scanImageEvent(zbar::QZBarThread::ScanImageEvent*)@Base"
 0.10
 (c++)"zbar::QZBarThread::staticmetaobj...@base" 0.10
 (c++)"zbar::QZBarThread::update()@Base" 0.10
 (c++)"zbar::QZBarThread::VideoDeviceEvent::~VideoDeviceEvent()@Base" 0.10
 (c++)"zbar::QZBarThread::VideoDeviceEvent::~VideoDeviceEvent()@Base" 0.10
 
(c++)"zbar::QZBarThread::videoDeviceEvent(zbar::QZBarThread::VideoDeviceEvent*)@Base"
 0.10
 (c++)"zbar::QZBarThread::VideoEnabledEvent::~VideoEnabledEvent()@Base" 0.10
 (c++)"zbar::QZBarThread::VideoEnabledEvent::~VideoEnabledEvent()@Base" 0.10
 
(c++)"zbar::QZBarThread::videoEnabledEvent(zbar::QZBarThread::VideoEnabledEvent*)@Base"
 0.10
 (c++)"zbar::QZBarThread::videoOpened(bool)@Base" 0.10
 (c++)"zbar::QZBar::videoDevice() co...@base" 0.10
 (c++)"zbar::QZBar::videoOpened(bool)@Base" 0.10
 (c++)"zbar::SymbolSet::~SymbolSet()@Base" 0.10
 (c++)"zbar::Symbol::~Symbol()@Base" 0.10
 (c++)"zbar::SystemError::~SystemError()@Base" 0.10
 (c++)"zbar::SystemError::~SystemError()@Base" 0.10
 (c++)"zbar::UnsupportedError::~UnsupportedError()@Base" 0.10
 (c++)"zbar::UnsupportedError::~UnsupportedError()@Base" 0.10
 (c++)"zbar::XDisplayError::~XDisplayError()@Base" 0.10
 (c++)"zbar::XDisplayError::~XDisplayError()@Base" 0.10
 (c++)"zbar::XProtoError::~XProtoError()@Base" 0.10
 (c++)"zbar::XProtoError::~XProtoError()@Base" 0.10

Reply via email to