Are we using SimpleReferenceObject correctly?
Henrik /KaarPoSoft
henrik at kaarposoft.dk
Sun Jan 27 13:55:35 PST 2013
Dear all,
As described in the mailing-list-thread
Issues building LibreOffice 4.0.0.1
http://lists.freedesktop.org/archives/libreoffice/2013-January/044838.html
I am trying to build and package LibreOffice 4.0.0.* for KaarPux
http://kaarpux.kaarposoft.dk/
I am starting a new mailing-list thread here to try to address
one issue at a time.
With LibreOffice 4.0.0.2, Stephans patch
http://cgit.freedesktop.org/libreoffice/core/commit/?id=d71e8fb17bd008751909ef2fabc6ff4f1e2db187
no other pathes and the configuration attached as "config.txt"
building is now stuck at
[build LNK] Library/libmysqllo.so
with
undefined reference to 'typeinfo for salhelper::SimpleReferenceObject'
See attached "libmysqllo_lnk_error.txt"
googel'ing the error message tends to indicate a problem with virtual
functions.
salhelper/inc/salhelper/simplereferenceobject.hxx has
class SALHELPER_DLLPUBLIC SimpleReferenceObject
{
[...]
protected:
virtual ~SimpleReferenceObject() SAL_THROW(());
[...]
};
I am no C++ expert, but as far as I can tell, this makes
SimpleReferenceObject an abstract class, and subclasses
should declare and implement ~SimpleReferenceObject.
A simple grep shows that we have ORowSetValueDecorator defined in
places like
connectivity/inc/connectivity/inc/FValue.hxx
And as far as I can see, ORowSetValueDecorator does NOT
declare ~ORowSetValueDecorator
Grepping for other uses of SimpleReferenceObject turns up many
references, and I picked one at random:
xmloff/inc/xmloff/formlayerimport.hxx
Here we have
class XMLOFF_DLLPUBLIC OFormLayerXMLImport
:public ::salhelper::SimpleReferenceObject
{
OFormLayerXMLImport_Impl* m_pImpl;
public:
OFormLayerXMLImport(SvXMLImport& _rImporter);
~OFormLayerXMLImport();
So, the subclass here DOES implement
~SimpleReferenceObject
as
~OFormLayerXMLImport()
As I am certainly no C++ expert, please allow me to ask this
question to the list:
Are we using SimpleReferenceObject correctly?
In particular, maybe we should define
~SimpleReferenceObject
in all subclasses ?
Thanks in advance for any input on this.
/Henrik
-------------- next part --------------
- echo: "autogen"
- sh: >
./autogen.sh
# TRY TO KEEP THE OPTIONS IN THE SAME SEQUENCE AS ./configure --help
--prefix="${KX_PREFIX}"
# For debuging: build packages in sequential order
--with-parallelism=1
# When (re-)building sequential build can be achived with:
# make PARALLELISM=1
# Disable LibreOffice includes self-packaging code
--disable-epm
# This option disables installing the office development kit
--disable-odk
# TODO: Consider --enable-mathmldtd Enable bundling of (modified) MathML 1.01 DTD.
# Allows the built-in evolution 2 addressbook connectivity build to be enabled.
--enable-evolution2
# Include debugging symbols in output.
# WARNING - a complete build needs 8 Gb of space and takes much longer (enables -g compiler flag).
# --enable-symbols
# Enable link-time optimization. Suitable for product builds. Building takes longer but libraries are optimized for speed
--enable-lto
# the crashdump feature.
--enable-crashdump
# Determines whether to use Gtk+ 3.0 vclplug on platforms where Gtk+ 3.0 is available.
--enable-gtk3
# Determines whether to build the OpenGL 3D slide transitions component.
--enable-opengl
# Determines whether to enable presentation mode screensaver control under GNOME via DBUS.
--enable-dbus
# Do not use the deprecated gnome-vfs, but use gvfs from gio instead
--disable-gnome-vfs
--enable-gio
# Determines whether to enable Telepathy for collaboration
--enable-telepathy
# TODO: --enable-gstreamer Enable building with the new gstreamer 1.0 avmedia backend
# TODO: ?disable-gstreamer-0-10 Disable building the gstreamer avmedia backend
# Increase build verbosity
--enable-verbose
# TODO: --enable-extra-gallery Add extra gallery content.
# TODO: --enable-extra-template Add extra template content.
# TODO: --enable-extra-sample Add extra sample content.
# TODO: --enable-extra-font Add extra font content.
# Disable the build of the PostgreSQL-SDBC driver.
--disable-postgresql-sdbc
# Specify path to tarfiles manually.
--with-external-tar="${KX_BASE}/../downloads/${KX_LIBREOFFICE}"
# TODO: --without-fonts
# LibreOffice includes some third-party fonts to provide a reliable basis for help content, templates, samples, etc.
# When these fonts are already known to be available on the system then you should use this option.
# Removes Postscript Printer definition files
# Already included with CUPS
--without-ppds
# TODO: --without-afms
# Removes bitmap font files from LibreOffice installation set,
# for people building for specific distributions where AFM files or TrueType Fonts are known to be available.
--with-system-cairo
# Removes myspell dictionaries from LibreOffice
--without-myspell-dicts
# External directories
--with-external-dict-dir=/opt/share/hunspell
--with-external-hyph-dir=/opt/share/hyphen
--with-external-thes-dir=/opt/share/thesaurus
# Use installed system libraries and headers
# TODO: use system rhino
# However, LibreOffice uses an old rhino1_5R5
# and patches heavily: libreoffice-4.0.0.1/rhino/rhino1_5R5*.patch
# --with-system-rhino
# --with-rhino-jar=/opt/share/java/js.jar
--without-junit
--without-java
-------------- next part --------------
[build LNK] Library/libmysqllo.so
S=/home/kaarpux/linux/build/opt/libreoffice-4.0.0.2 && O=$S/solver/unxlngx6.pro && W=$S/workdir/unxlngx6.pro && mkdir -p $W/LinkTarget/Library/ && g++ -shared -Wl,-z,noexecstack -flto -Wl,-z,origin '-Wl,-rpath,$ORIGIN:$ORIGIN/../ure-link/lib' -Wl,-rpath-link,$O/lib -Wl,-z,defs -fuse-linker-plugin -O2 -Wl,-rpath-link,/lib:/usr/lib -Wl,-z,combreloc -L$S/solenv/unxlngx6/lib -L$O/lib -L$S/solenv/unxlngx6/lib -L//lib -Wl,--hash-style=gnu -Wl,--dynamic-list-cpp-new -Wl,--dynamic-list-cpp-typeinfo -Wl,-Bsymbolic-functions -Wl,-O1 -Wl,-S $W/CxxObject/connectivity/source/drivers/mysql/YDriver.o $W/CxxObject/connectivity/source/drivers/mysql/YTables.o $W/CxxObject/connectivity/source/drivers/mysql/YTable.o $W/CxxObject/connectivity/source/drivers/mysql/YViews.o $W/CxxObject/connectivity/source/drivers/mysql/YCatalog.o $W/CxxObject/connectivity/source/drivers/mysql/YColumns.o $W/CxxObject/connectivity/source/drivers/mysql/YUser.o $W/CxxObject/connectivity/source/drivers/mysql/YUsers.o $W/CxxObject/connectivity/source/drivers/mysql/Yservices.o -Wl,--start-group -Wl,--end-group -Wl,--no-as-needed -luno_cppu -luno_cppuhelpergcc3 -luno_sal -ldbtoolslo -lcomphelpgcc3 -o $W/LinkTarget/Library/libmysqllo.so
/tmp/ccNHldod.ltrans2.ltrans.o:(.data.rel.ro._ZTIN12connectivity21ORowSetValueDecoratorE[_ZTIN12connectivity21ORowSetValueDecoratorE]+0x10): undefined reference to `typeinfo for salhelper::SimpleReferenceObject'
collect2: error: ld returned 1 exit status
make[2]: *** [/home/kaarpux/linux/build/opt/libreoffice-4.0.0.2/workdir/unxlngx6.pro/LinkTarget/Library/libmysqllo.so] Error 1
More information about the LibreOffice
mailing list