Re: libdbus-c++ missing symbols

2020-04-09 Thread Stefan Sperling
On Thu, Apr 09, 2020 at 02:15:50PM +0200, Jeremie Courreges-Anglas wrote:
> 
> This shows up in powerpc and sparc64 since a long time
> 
>   http://build-failures.rhaalovely.net/sparc64/2020-04-07/x11/libdbus-c++.log
> 
> ld.bfd checks that symbols in libdbus-c++-1.so are resolvable, but
> ld.lld doesn't.  On amd64:
> 
> --8<--
> russell ~$ nm -g /usr/local/lib/libdbus-c++-1.so.0.0 | c++filt | grep -E 
> 'DBus::operator(<<|>>)'
>  U DBus::operator<<(DBus::MessageIter&, DBus::Variant const&)
>  U DBus::operator>>(DBus::MessageIter&, DBus::Variant&)
> -->8--
> 
> Upstream has a fix, though it looks like only the chromium developers
> understand what is going on in this C++ maze. (:
> 
>   
> https://github.com/andreas-volz/dbus-cplusplus/commit/a0b9ef3b469ca23c6a3229d8abb967cbbddcee38
> 
> With this fix, the symbols are present in libdbus-c++.so and
> build succeeds on sparc64.
> 
> --8<--
> /usr/local/lib/libdbus-c++-1.so.0.0 --> 
> ../fake-amd64/usr/local/lib/libdbus-c++-1.so.0.0
> Dynamic export changes:
> added:
>   DBus::operator<<(DBus::MessageIter&, DBus::Variant const&)
>   DBus::operator>>(DBus::MessageIter&, DBus::Variant&)
> 
> External reference changes:
> removed:
>   DBus::operator<<(DBus::MessageIter&, DBus::Variant const&)
>   DBus::operator>>(DBus::MessageIter&, DBus::Variant&)
> 
> PLT added:
>   DBus::operator<<(DBus::MessageIter&, DBus::Variant const&)
>   DBus::operator>>(DBus::MessageIter&, DBus::Variant&)
> 
> -->8--
> 
> Shared lib bump needed for libdbus-c++-1.so only.  ok?

ok stsp@ 

Thanks for taking care of this!



libdbus-c++ missing symbols

2020-04-09 Thread Jeremie Courreges-Anglas


This shows up in powerpc and sparc64 since a long time

  http://build-failures.rhaalovely.net/sparc64/2020-04-07/x11/libdbus-c++.log

ld.bfd checks that symbols in libdbus-c++-1.so are resolvable, but
ld.lld doesn't.  On amd64:

--8<--
russell ~$ nm -g /usr/local/lib/libdbus-c++-1.so.0.0 | c++filt | grep -E 
'DBus::operator(<<|>>)'
 U DBus::operator<<(DBus::MessageIter&, DBus::Variant const&)
 U DBus::operator>>(DBus::MessageIter&, DBus::Variant&)
-->8--

Upstream has a fix, though it looks like only the chromium developers
understand what is going on in this C++ maze. (:

  
https://github.com/andreas-volz/dbus-cplusplus/commit/a0b9ef3b469ca23c6a3229d8abb967cbbddcee38

With this fix, the symbols are present in libdbus-c++.so and
build succeeds on sparc64.

--8<--
/usr/local/lib/libdbus-c++-1.so.0.0 --> 
../fake-amd64/usr/local/lib/libdbus-c++-1.so.0.0
Dynamic export changes:
added:
DBus::operator<<(DBus::MessageIter&, DBus::Variant const&)
DBus::operator>>(DBus::MessageIter&, DBus::Variant&)

External reference changes:
removed:
DBus::operator<<(DBus::MessageIter&, DBus::Variant const&)
DBus::operator>>(DBus::MessageIter&, DBus::Variant&)

PLT added:
DBus::operator<<(DBus::MessageIter&, DBus::Variant const&)
DBus::operator>>(DBus::MessageIter&, DBus::Variant&)

-->8--

Shared lib bump needed for libdbus-c++-1.so only.  ok?


Index: Makefile
===
RCS file: /cvs/ports/x11/libdbus-c++/Makefile,v
retrieving revision 1.3
diff -u -p -r1.3 Makefile
--- Makefile12 Jul 2019 20:51:15 -  1.3
+++ Makefile9 Apr 2020 09:59:32 -
@@ -2,9 +2,13 @@
 
 COMMENT =  C++ API for dbus
 DISTNAME = libdbus-c++-0.9.0
-SHARED_LIBS =  dbus-c++-1  0.0 \
+REVISION = 0
+
+SHARED_LIBS =  dbus-c++-1  0.1 \
dbus-c++-glib-1 0.0
+
 CATEGORIES =   x11 devel
+
 HOMEPAGE = http://dbus-cplusplus.sourceforge.net/
 
 # LGPLv2.1+
Index: patches/patch-include_dbus-c++_types_h
===
RCS file: /cvs/ports/x11/libdbus-c++/patches/patch-include_dbus-c++_types_h,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 patch-include_dbus-c++_types_h
--- patches/patch-include_dbus-c++_types_h  13 Mar 2019 10:52:51 -  
1.1.1.1
+++ patches/patch-include_dbus-c++_types_h  9 Apr 2020 09:59:32 -
@@ -1,21 +1,57 @@
 $OpenBSD: patch-include_dbus-c++_types_h,v 1.1.1.1 2019/03/13 10:52:51 stsp 
Exp $
+
 Fix build failure due to symbols not being declared in the DBus namespace.
+https://github.com/andreas-volz/dbus-cplusplus/commit/a0b9ef3b469ca23c6a3229d8abb967cbbddcee38
+
 Index: include/dbus-c++/types.h
 --- include/dbus-c++/types.h.orig
 +++ include/dbus-c++/types.h
-@@ -316,8 +316,6 @@ struct type< Struct
+-  operator T() const
+-  {
+-T cast;
+-MessageIter ri = _msg.reader();
+-ri >> cast;
+-return cast;
+-  }
++  operator T() const;
+ 
+ private:
+ 
+@@ -316,7 +310,7 @@ struct type< Struct> (DBus::MessageIt
+@@ -551,6 +545,8 @@ inline DBus::MessageIter  >> (DBus::MessageIt
+   return ++iter;
+ }
+ 
++extern DXXAPI DBus::MessageIter  >> (DBus::MessageIter , 
DBus::Variant );
++
+ template
+ inline DBus::MessageIter  >> (DBus::MessageIter , 
std::vector& val)
+ {
+@@ -644,7 +640,16 @@ inline DBus::MessageIter  >> (DBus::MessageIt
+   return ++iter;
  }
  
- extern DXXAPI DBus::MessageIter  >> (DBus::MessageIter , 
DBus::Variant );
+-extern DXXAPI DBus::MessageIter  >> (DBus::MessageIter , 
DBus::Variant );
++template 
++inline DBus::Variant::operator T() const
++{
++  T cast;
++  DBus::MessageIter ri = _msg.reader();
++  ri >> cast;
++  return cast;
++}
 +
 +} /* namespace DBus */
  
Index: patches/patch-src_types_cpp
===
RCS file: patches/patch-src_types_cpp
diff -N patches/patch-src_types_cpp
--- /dev/null   1 Jan 1970 00:00:00 -
+++ patches/patch-src_types_cpp 9 Apr 2020 09:59:32 -
@@ -0,0 +1,22 @@
+$OpenBSD$
+
+Fix build failure due to symbols not being declared in the DBus namespace.
+https://github.com/andreas-volz/dbus-cplusplus/commit/a0b9ef3b469ca23c6a3229d8abb967cbbddcee38
+
+Index: src/types.cpp
+--- src/types.cpp.orig
 src/types.cpp
+@@ -34,7 +34,7 @@
+ #include "message_p.h"
+ #include "internalerror.h"
+ 
+-using namespace DBus;
++namespace DBus {
+ 
+ Variant::Variant()
+   : _msg(CallMessage()) // dummy message used as temporary storage for 
variant data
+@@ -104,3 +104,4 @@ MessageIter  >> (MessageIter , Variant &
+   return ++iter;
+ }
+ 
++} /* namespace DBus */


-- 
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE