Bug#962518: cegui-mk2 FTBFS on mipsel/mips64el: symbol differences
Stephen Kitt
skitt at debian.org
Fri Jun 12 10:36:04 BST 2020
On Wed, 10 Jun 2020 13:53:58 +0200, Stephen Kitt <skitt at debian.org> wrote:
> On Tue, 9 Jun 2020 21:08:25 +0100, Simon McVittie <smcv at debian.org> wrote:
> > On Tue, 09 Jun 2020 at 15:21:37 -0400, Olek Wojnar wrote:
> > > On Tue, Jun 9, 2020 at 6:12 AM Adrian Bunk <[1]bunk at debian.org>
> > > wrote:
> > > > I wonder if the real fix shouldn't be for cegui-mk2 to stop
> > > > exporting a
> > > pile
> > > > of Boost symbols...
> > >
> > >
> > > I would love that. Any advice on a reasonably easy/straightforward way
> > > of doing that?
> >
> > *If* your upstream is on board with this, my understanding is that
> > the main way to do this is to build with -fvisibility=hidden,
> > and decorate each intentionally-public class/function/thing
> > with a macro that (when building with gcc or clang) expands to
> > __attribute__((__visibility__("hidden"))).
> >
> > Some upstreams will be doing something similar already, because they are
> > portable to Windows and need to decorate public symbols with
> > __declspec(dllexport) on Windows.
>
> See
> https://salsa.debian.org/debian/fcml/-/blob/master/debian/patches/visibility.patch
> for a quick-and-dirty example of both of these approaches (and
> https://salsa.debian.org/debian/fcml/-/commit/22d753b1c820ea339b6b52cbc1cdf6e05229fbf9#34a4bacbb5ecf973fa5f481819228c77da389f43
> for the resulting symbols file simplification).
I’ve looked into the cegui-mk2 situation a bit more. It turns out that the
project itself does define its exported symbols, and that can be used to
built a library with no extraneous symbols:
* add -fvisibility=hidden to the CXXFLAGS (or use the CMake hidden symbol
support, which I think is available);
* patch the headers define the various export macros, e.g. CEGUIEXPORT in
cegui/include/CEGUI/Base.h (taking care to match the EXPORTS handling, same
as the Windows code).
This greatly reduces the number of exported symbols:
debian/libcegui-mk2-0.8.7.symbols | 7477
+++++++----------------------------------------------------------------------------------
1 file changed, 577 insertions(+), 6900 deletions(-)
However it also breaks dh_dwz.
This still leaves all the bitness variation (armel/armhf/i386 etc. v.
amd64/arm64 etc., which could be better handled with arch-bits), and the
changes from GCC 9 to 10. Those are annoying enough that I suspect it’s
simply not worth dealing with a symbols file, as others have said.
However I do think that controlling the symbols’ visibility would be a good
thing, but that should be dealt with upstream.
Regards,
Stephen
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://alioth-lists.debian.net/pipermail/pkg-games-devel/attachments/20200612/3f191562/attachment.sig>
More information about the Pkg-games-devel
mailing list